@libp2p/kad-dht 14.1.2 → 14.1.3-4a85eb033

Sign up to get free protection for your applications and to get access to all the features.
Files changed (48) hide show
  1. package/dist/index.min.js +3 -3
  2. package/dist/src/content-fetching/index.d.ts +1 -0
  3. package/dist/src/content-fetching/index.d.ts.map +1 -1
  4. package/dist/src/content-fetching/index.js +1 -1
  5. package/dist/src/content-fetching/index.js.map +1 -1
  6. package/dist/src/kad-dht.d.ts.map +1 -1
  7. package/dist/src/kad-dht.js +4 -2
  8. package/dist/src/kad-dht.js.map +1 -1
  9. package/dist/src/peer-routing/index.d.ts +9 -5
  10. package/dist/src/peer-routing/index.d.ts.map +1 -1
  11. package/dist/src/peer-routing/index.js +25 -7
  12. package/dist/src/peer-routing/index.js.map +1 -1
  13. package/dist/src/providers.d.ts.map +1 -1
  14. package/dist/src/providers.js +5 -3
  15. package/dist/src/providers.js.map +1 -1
  16. package/dist/src/reprovider.js +1 -1
  17. package/dist/src/reprovider.js.map +1 -1
  18. package/dist/src/rpc/handlers/add-provider.d.ts +5 -1
  19. package/dist/src/rpc/handlers/add-provider.d.ts.map +1 -1
  20. package/dist/src/rpc/handlers/add-provider.js +14 -5
  21. package/dist/src/rpc/handlers/add-provider.js.map +1 -1
  22. package/dist/src/rpc/handlers/get-providers.d.ts +3 -2
  23. package/dist/src/rpc/handlers/get-providers.d.ts.map +1 -1
  24. package/dist/src/rpc/handlers/get-providers.js +16 -28
  25. package/dist/src/rpc/handlers/get-providers.js.map +1 -1
  26. package/dist/src/rpc/handlers/get-value.d.ts +1 -0
  27. package/dist/src/rpc/handlers/get-value.d.ts.map +1 -1
  28. package/dist/src/rpc/handlers/get-value.js +1 -1
  29. package/dist/src/rpc/handlers/get-value.js.map +1 -1
  30. package/dist/src/rpc/handlers/put-value.d.ts +1 -0
  31. package/dist/src/rpc/handlers/put-value.d.ts.map +1 -1
  32. package/dist/src/rpc/handlers/put-value.js +1 -1
  33. package/dist/src/rpc/handlers/put-value.js.map +1 -1
  34. package/dist/src/rpc/index.d.ts +1 -0
  35. package/dist/src/rpc/index.d.ts.map +1 -1
  36. package/dist/src/rpc/index.js.map +1 -1
  37. package/package.json +12 -12
  38. package/src/content-fetching/index.ts +2 -1
  39. package/src/kad-dht.ts +4 -2
  40. package/src/peer-routing/index.ts +38 -10
  41. package/src/providers.ts +5 -3
  42. package/src/reprovider.ts +1 -1
  43. package/src/rpc/handlers/add-provider.ts +18 -7
  44. package/src/rpc/handlers/get-providers.ts +18 -32
  45. package/src/rpc/handlers/get-value.ts +2 -1
  46. package/src/rpc/handlers/put-value.ts +2 -1
  47. package/src/rpc/index.ts +1 -0
  48. package/dist/typedoc-urls.json +0 -59
package/dist/index.min.js CHANGED
@@ -1,16 +1,16 @@
1
1
  (function (root, factory) {(typeof module === 'object' && module.exports) ? module.exports = factory() : root.Libp2PKadDht = factory()}(typeof self !== 'undefined' ? self : this, function () {
2
- "use strict";var Libp2PKadDht=(()=>{var B4=Object.create;var Gn=Object.defineProperty;var I4=Object.getOwnPropertyDescriptor;var k4=Object.getOwnPropertyNames;var T4=Object.getPrototypeOf,R4=Object.prototype.hasOwnProperty;var ws=(r,e)=>()=>(e||r((e={exports:{}}).exports,e),e.exports),ke=(r,e)=>{for(var t in e)Gn(r,t,{get:e[t],enumerable:!0})},F2=(r,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of k4(e))!R4.call(r,i)&&i!==t&&Gn(r,i,{get:()=>e[i],enumerable:!(n=I4(e,i))||n.enumerable});return r};var bs=(r,e,t)=>(t=r!=null?B4(T4(r)):{},F2(e||!r||!r.__esModule?Gn(t,"default",{value:r,enumerable:!0}):t,r)),P4=r=>F2(Gn({},"__esModule",{value:!0}),r);var Q2=ws((Fc,vs)=>{"use strict";var _4=Object.prototype.hasOwnProperty,Te="~";function on(){}Object.create&&(on.prototype=Object.create(null),new on().__proto__||(Te=!1));function C4(r,e,t){this.fn=r,this.context=e,this.once=t||!1}function W2(r,e,t,n,i){if(typeof t!="function")throw new TypeError("The listener must be a function");var s=new C4(t,n||r,i),o=Te?Te+e:e;return r._events[o]?r._events[o].fn?r._events[o]=[r._events[o],s]:r._events[o].push(s):(r._events[o]=s,r._eventsCount++),r}function Qn(r,e){--r._eventsCount===0?r._events=new on:delete r._events[e]}function ve(){this._events=new on,this._eventsCount=0}ve.prototype.eventNames=function(){var e=[],t,n;if(this._eventsCount===0)return e;for(n in t=this._events)_4.call(t,n)&&e.push(Te?n.slice(1):n);return Object.getOwnPropertySymbols?e.concat(Object.getOwnPropertySymbols(t)):e};ve.prototype.listeners=function(e){var t=Te?Te+e:e,n=this._events[t];if(!n)return[];if(n.fn)return[n.fn];for(var i=0,s=n.length,o=new Array(s);i<s;i++)o[i]=n[i].fn;return o};ve.prototype.listenerCount=function(e){var t=Te?Te+e:e,n=this._events[t];return n?n.fn?1:n.length:0};ve.prototype.emit=function(e,t,n,i,s,o){var a=Te?Te+e:e;if(!this._events[a])return!1;var c=this._events[a],l=arguments.length,u,f;if(c.fn){switch(c.once&&this.removeListener(e,c.fn,void 0,!0),l){case 1:return c.fn.call(c.context),!0;case 2:return c.fn.call(c.context,t),!0;case 3:return c.fn.call(c.context,t,n),!0;case 4:return c.fn.call(c.context,t,n,i),!0;case 5:return c.fn.call(c.context,t,n,i,s),!0;case 6:return c.fn.call(c.context,t,n,i,s,o),!0}for(f=1,u=new Array(l-1);f<l;f++)u[f-1]=arguments[f];c.fn.apply(c.context,u)}else{var h=c.length,p;for(f=0;f<h;f++)switch(c[f].once&&this.removeListener(e,c[f].fn,void 0,!0),l){case 1:c[f].fn.call(c[f].context);break;case 2:c[f].fn.call(c[f].context,t);break;case 3:c[f].fn.call(c[f].context,t,n);break;case 4:c[f].fn.call(c[f].context,t,n,i);break;default:if(!u)for(p=1,u=new Array(l-1);p<l;p++)u[p-1]=arguments[p];c[f].fn.apply(c[f].context,u)}}return!0};ve.prototype.on=function(e,t,n){return W2(this,e,t,n,!1)};ve.prototype.once=function(e,t,n){return W2(this,e,t,n,!0)};ve.prototype.removeListener=function(e,t,n,i){var s=Te?Te+e:e;if(!this._events[s])return this;if(!t)return Qn(this,s),this;var o=this._events[s];if(o.fn)o.fn===t&&(!i||o.once)&&(!n||o.context===n)&&Qn(this,s);else{for(var a=0,c=[],l=o.length;a<l;a++)(o[a].fn!==t||i&&!o[a].once||n&&o[a].context!==n)&&c.push(o[a]);c.length?this._events[s]=c.length===1?c[0]:c:Qn(this,s)}return this};ve.prototype.removeAllListeners=function(e){var t;return e?(t=Te?Te+e:e,this._events[t]&&Qn(this,t)):(this._events=new on,this._eventsCount=0),this};ve.prototype.off=ve.prototype.removeListener;ve.prototype.addListener=ve.prototype.on;ve.prefixed=Te;ve.EventEmitter=ve;typeof vs<"u"&&(vs.exports=ve)});var E3=ws(Kr=>{"use strict";var m8="[object ArrayBuffer]",Et=class r{static isArrayBuffer(e){return Object.prototype.toString.call(e)===m8}static toArrayBuffer(e){return this.isArrayBuffer(e)?e:e.byteLength===e.buffer.byteLength||e.byteOffset===0&&e.byteLength===e.buffer.byteLength?e.buffer:this.toUint8Array(e.buffer).slice(e.byteOffset,e.byteOffset+e.byteLength).buffer}static toUint8Array(e){return this.toView(e,Uint8Array)}static toView(e,t){if(e.constructor===t)return e;if(this.isArrayBuffer(e))return new t(e);if(this.isArrayBufferView(e))return new t(e.buffer,e.byteOffset,e.byteLength);throw new TypeError("The provided value is not of type '(ArrayBuffer or ArrayBufferView)'")}static isBufferSource(e){return this.isArrayBufferView(e)||this.isArrayBuffer(e)}static isArrayBufferView(e){return ArrayBuffer.isView(e)||e&&this.isArrayBuffer(e.buffer)}static isEqual(e,t){let n=r.toUint8Array(e),i=r.toUint8Array(t);if(n.length!==i.byteLength)return!1;for(let s=0;s<n.length;s++)if(n[s]!==i[s])return!1;return!0}static concat(...e){let t;Array.isArray(e[0])&&!(e[1]instanceof Function)||Array.isArray(e[0])&&e[1]instanceof Function?t=e[0]:e[e.length-1]instanceof Function?t=e.slice(0,e.length-1):t=e;let n=0;for(let o of t)n+=o.byteLength;let i=new Uint8Array(n),s=0;for(let o of t){let a=this.toUint8Array(o);i.set(a,s),s+=a.length}return e[e.length-1]instanceof Function?this.toView(i,e[e.length-1]):i.buffer}},Wo="string",y8=/^[0-9a-f]+$/i,w8=/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/,b8=/^[a-zA-Z0-9-_]+$/,E1=class{static fromString(e){let t=unescape(encodeURIComponent(e)),n=new Uint8Array(t.length);for(let i=0;i<t.length;i++)n[i]=t.charCodeAt(i);return n.buffer}static toString(e){let t=Et.toUint8Array(e),n="";for(let s=0;s<t.length;s++)n+=String.fromCharCode(t[s]);return decodeURIComponent(escape(n))}},$e=class{static toString(e,t=!1){let n=Et.toArrayBuffer(e),i=new DataView(n),s="";for(let o=0;o<n.byteLength;o+=2){let a=i.getUint16(o,t);s+=String.fromCharCode(a)}return s}static fromString(e,t=!1){let n=new ArrayBuffer(e.length*2),i=new DataView(n);for(let s=0;s<e.length;s++)i.setUint16(s*2,e.charCodeAt(s),t);return n}},A1=class r{static isHex(e){return typeof e===Wo&&y8.test(e)}static isBase64(e){return typeof e===Wo&&w8.test(e)}static isBase64Url(e){return typeof e===Wo&&b8.test(e)}static ToString(e,t="utf8"){let n=Et.toUint8Array(e);switch(t.toLowerCase()){case"utf8":return this.ToUtf8String(n);case"binary":return this.ToBinary(n);case"hex":return this.ToHex(n);case"base64":return this.ToBase64(n);case"base64url":return this.ToBase64Url(n);case"utf16le":return $e.toString(n,!0);case"utf16":case"utf16be":return $e.toString(n);default:throw new Error(`Unknown type of encoding '${t}'`)}}static FromString(e,t="utf8"){if(!e)return new ArrayBuffer(0);switch(t.toLowerCase()){case"utf8":return this.FromUtf8String(e);case"binary":return this.FromBinary(e);case"hex":return this.FromHex(e);case"base64":return this.FromBase64(e);case"base64url":return this.FromBase64Url(e);case"utf16le":return $e.fromString(e,!0);case"utf16":case"utf16be":return $e.fromString(e);default:throw new Error(`Unknown type of encoding '${t}'`)}}static ToBase64(e){let t=Et.toUint8Array(e);if(typeof btoa<"u"){let n=this.ToString(t,"binary");return btoa(n)}else return Buffer.from(t).toString("base64")}static FromBase64(e){let t=this.formatString(e);if(!t)return new ArrayBuffer(0);if(!r.isBase64(t))throw new TypeError("Argument 'base64Text' is not Base64 encoded");return typeof atob<"u"?this.FromBinary(atob(t)):new Uint8Array(Buffer.from(t,"base64")).buffer}static FromBase64Url(e){let t=this.formatString(e);if(!t)return new ArrayBuffer(0);if(!r.isBase64Url(t))throw new TypeError("Argument 'base64url' is not Base64Url encoded");return this.FromBase64(this.Base64Padding(t.replace(/\-/g,"+").replace(/\_/g,"/")))}static ToBase64Url(e){return this.ToBase64(e).replace(/\+/g,"-").replace(/\//g,"_").replace(/\=/g,"")}static FromUtf8String(e,t=r.DEFAULT_UTF8_ENCODING){switch(t){case"ascii":return this.FromBinary(e);case"utf8":return E1.fromString(e);case"utf16":case"utf16be":return $e.fromString(e);case"utf16le":case"usc2":return $e.fromString(e,!0);default:throw new Error(`Unknown type of encoding '${t}'`)}}static ToUtf8String(e,t=r.DEFAULT_UTF8_ENCODING){switch(t){case"ascii":return this.ToBinary(e);case"utf8":return E1.toString(e);case"utf16":case"utf16be":return $e.toString(e);case"utf16le":case"usc2":return $e.toString(e,!0);default:throw new Error(`Unknown type of encoding '${t}'`)}}static FromBinary(e){let t=e.length,n=new Uint8Array(t);for(let i=0;i<t;i++)n[i]=e.charCodeAt(i);return n.buffer}static ToBinary(e){let t=Et.toUint8Array(e),n="";for(let i=0;i<t.length;i++)n+=String.fromCharCode(t[i]);return n}static ToHex(e){let t=Et.toUint8Array(e),n="",i=t.length;for(let s=0;s<i;s++){let o=t[s];o<16&&(n+="0"),n+=o.toString(16)}return n}static FromHex(e){let t=this.formatString(e);if(!t)return new ArrayBuffer(0);if(!r.isHex(t))throw new TypeError("Argument 'hexString' is not HEX encoded");t.length%2&&(t=`0${t}`);let n=new Uint8Array(t.length/2);for(let i=0;i<t.length;i=i+2){let s=t.slice(i,i+2);n[i/2]=parseInt(s,16)}return n.buffer}static ToUtf16String(e,t=!1){return $e.toString(e,t)}static FromUtf16String(e,t=!1){return $e.fromString(e,t)}static Base64Padding(e){let t=4-e.length%4;if(t<4)for(let n=0;n<t;n++)e+="=";return e}static formatString(e){return e?.replace(/[\n\r\t ]/g,"")||""}};A1.DEFAULT_UTF8_ENCODING="utf8";function x8(r,...e){let t=arguments[0];for(let n=1;n<arguments.length;n++){let i=arguments[n];for(let s in i)t[s]=i[s]}return t}function v8(...r){let e=r.map(i=>i.byteLength).reduce((i,s)=>i+s),t=new Uint8Array(e),n=0;return r.map(i=>new Uint8Array(i)).forEach(i=>{for(let s of i)t[n++]=s}),t.buffer}function E8(r,e){if(!(r&&e)||r.byteLength!==e.byteLength)return!1;let t=new Uint8Array(r),n=new Uint8Array(e);for(let i=0;i<r.byteLength;i++)if(t[i]!==n[i])return!1;return!0}Kr.BufferSourceConverter=Et;Kr.Convert=A1;Kr.assign=x8;Kr.combine=v8;Kr.isEqual=E8});var Da=ws(Mn=>{(function(){var r,e,t,n,i,s,o,a;a=function(c){var l,u,f,h;return l=(c&255<<24)>>>24,u=(c&255<<16)>>>16,f=(c&65280)>>>8,h=c&255,[l,u,f,h].join(".")},o=function(c){var l,u,f,h,p,y;for(l=[],f=h=0;h<=3&&c.length!==0;f=++h){if(f>0){if(c[0]!==".")throw new Error("Invalid IP");c=c.substring(1)}y=e(c),p=y[0],u=y[1],c=c.substring(u),l.push(p)}if(c.length!==0)throw new Error("Invalid IP");switch(l.length){case 1:if(l[0]>4294967295)throw new Error("Invalid IP");return l[0]>>>0;case 2:if(l[0]>255||l[1]>16777215)throw new Error("Invalid IP");return(l[0]<<24|l[1])>>>0;case 3:if(l[0]>255||l[1]>255||l[2]>65535)throw new Error("Invalid IP");return(l[0]<<24|l[1]<<16|l[2])>>>0;case 4:if(l[0]>255||l[1]>255||l[2]>255||l[3]>255)throw new Error("Invalid IP");return(l[0]<<24|l[1]<<16|l[2]<<8|l[3])>>>0;default:throw new Error("Invalid IP")}},t=function(c){return c.charCodeAt(0)},n=t("0"),s=t("a"),i=t("A"),e=function(c){var l,u,f,h,p;for(h=0,l=10,u="9",f=0,c.length>1&&c[f]==="0"&&(c[f+1]==="x"||c[f+1]==="X"?(f+=2,l=16):"0"<=c[f+1]&&c[f+1]<="9"&&(f++,l=8,u="7")),p=f;f<c.length;){if("0"<=c[f]&&c[f]<=u)h=h*l+(t(c[f])-n)>>>0;else if(l===16)if("a"<=c[f]&&c[f]<="f")h=h*l+(10+t(c[f])-s)>>>0;else if("A"<=c[f]&&c[f]<="F")h=h*l+(10+t(c[f])-i)>>>0;else break;else break;if(h>4294967295)throw new Error("too large");f++}if(f===p)throw new Error("empty octet");return[h,f]},r=function(){function c(l,u){var f,h,p,y;if(typeof l!="string")throw new Error("Missing `net' parameter");if(u||(y=l.split("/",2),l=y[0],u=y[1]),u||(u=32),typeof u=="string"&&u.indexOf(".")>-1){try{this.maskLong=o(u)}catch(w){throw f=w,new Error("Invalid mask: "+u)}for(h=p=32;p>=0;h=--p)if(this.maskLong===4294967295<<32-h>>>0){this.bitmask=h;break}}else if(u||u===0)this.bitmask=parseInt(u,10),this.maskLong=0,this.bitmask>0&&(this.maskLong=4294967295<<32-this.bitmask>>>0);else throw new Error("Invalid mask: empty");try{this.netLong=(o(l)&this.maskLong)>>>0}catch(w){throw f=w,new Error("Invalid net address: "+l)}if(!(this.bitmask<=32))throw new Error("Invalid mask for ip4: "+u);this.size=Math.pow(2,32-this.bitmask),this.base=a(this.netLong),this.mask=a(this.maskLong),this.hostmask=a(~this.maskLong),this.first=this.bitmask<=30?a(this.netLong+1):this.base,this.last=this.bitmask<=30?a(this.netLong+this.size-2):a(this.netLong+this.size-1),this.broadcast=this.bitmask<=30?a(this.netLong+this.size-1):void 0}return c.prototype.contains=function(l){return typeof l=="string"&&(l.indexOf("/")>0||l.split(".").length!==4)&&(l=new c(l)),l instanceof c?this.contains(l.base)&&this.contains(l.broadcast||l.last):(o(l)&this.maskLong)>>>0===(this.netLong&this.maskLong)>>>0},c.prototype.next=function(l){return l==null&&(l=1),new c(a(this.netLong+this.size*l),this.mask)},c.prototype.forEach=function(l){var u,f,h;for(h=o(this.first),f=o(this.last),u=0;h<=f;)l(a(h),h,u),u++,h++},c.prototype.toString=function(){return this.base+"/"+this.bitmask},c}(),Mn.ip2long=o,Mn.long2ip=a,Mn.Netmask=r}).call(Mn)});var ic={};ke(ic,{EventTypes:()=>Kn,MessageType:()=>O,Record:()=>ue,kadDHT:()=>nc,passthroughMapper:()=>Fa,removePrivateAddressesMapper:()=>Bi,removePublicAddressesMapper:()=>Va});var H2=Symbol.for("@libp2p/content-routing");var q2=Symbol.for("@libp2p/peer-discovery");var xs=Symbol.for("@libp2p/peer-id");var K2=Symbol.for("@libp2p/peer-routing");var $2="keep-alive";var ft=class extends Error{static name="AbortError";constructor(e="The operation was aborted"){super(e),this.name="AbortError"}};var $=class extends Error{static name="InvalidParametersError";constructor(e="Invalid parameters"){super(e),this.name="InvalidParametersError"}},ht=class extends Error{static name="InvalidPublicKeyError";constructor(e="Invalid public key"){super(e),this.name="InvalidPublicKeyError"}};var ze=class extends Error{static name="NotFoundError";constructor(e="Not found"){super(e),this.name="NotFoundError"}};var jn=class extends Error{static name="InvalidMultihashError";constructor(e="Invalid Multihash"){super(e),this.name="InvalidMultihashError"}};var Ne=class extends Error{static name="InvalidMessageError";constructor(e="Invalid message"){super(e),this.name="InvalidMessageError"}};var Jt=class extends Error{static name="UnsupportedKeyTypeError";constructor(e="Unsupported key type"){super(e),this.name="UnsupportedKeyTypeError"}};var te=(r,...e)=>{try{[...e]}catch{}};var Le=class extends EventTarget{#e=new Map;constructor(){super(),te(1/0,this)}listenerCount(e){let t=this.#e.get(e);return t==null?0:t.length}addEventListener(e,t,n){super.addEventListener(e,t,n);let i=this.#e.get(e);i==null&&(i=[],this.#e.set(e,i)),i.push({callback:t,once:(n!==!0&&n!==!1&&n?.once)??!1})}removeEventListener(e,t,n){super.removeEventListener(e.toString(),t??null,n);let i=this.#e.get(e);i!=null&&(i=i.filter(({callback:s})=>s!==t),this.#e.set(e,i))}dispatchEvent(e){let t=super.dispatchEvent(e),n=this.#e.get(e.type);return n==null||(n=n.filter(({once:i})=>!i),this.#e.set(e.type,n)),t}safeDispatchEvent(e,t={}){return this.dispatchEvent(new CustomEvent(e,t))}};function z2(r){return r!=null&&typeof r.start=="function"&&typeof r.stop=="function"}async function nn(...r){let e=[];for(let t of r)z2(t)&&e.push(t);await Promise.all(e.map(async t=>{t.beforeStart!=null&&await t.beforeStart()})),await Promise.all(e.map(async t=>{await t.start()})),await Promise.all(e.map(async t=>{t.afterStart!=null&&await t.afterStart()}))}async function Wn(...r){let e=[];for(let t of r)z2(t)&&e.push(t);await Promise.all(e.map(async t=>{t.beforeStop!=null&&await t.beforeStop()})),await Promise.all(e.map(async t=>{await t.stop()})),await Promise.all(e.map(async t=>{t.afterStop!=null&&await t.afterStop()}))}var G2=Symbol.for("@libp2p/service-capabilities"),j2=Symbol.for("@libp2p/service-dependencies");function N4(r){return r[Symbol.asyncIterator]!=null}function L4(r){if(N4(r))return(async()=>{for await(let e of r);})();for(let e of r);}var sn=L4;var Es=bs(Q2(),1);var an=class extends Error{constructor(e){super(e),this.name="TimeoutError"}},As=class extends Error{constructor(e){super(),this.name="AbortError",this.message=e}},Z2=r=>globalThis.DOMException===void 0?new As(r):new DOMException(r),Y2=r=>{let e=r.reason===void 0?Z2("This operation was aborted."):r.reason;return e instanceof Error?e:Z2(e)};function er(r,e){let{milliseconds:t,fallback:n,message:i,customTimers:s={setTimeout,clearTimeout}}=e,o,c=new Promise((l,u)=>{if(typeof t!="number"||Math.sign(t)!==1)throw new TypeError(`Expected \`milliseconds\` to be a positive number, got \`${t}\``);if(e.signal){let{signal:h}=e;h.aborted&&u(Y2(h));let p=()=>{u(Y2(h))};h.addEventListener("abort",p,{once:!0}),r.finally(()=>{h.removeEventListener("abort",p)})}if(t===Number.POSITIVE_INFINITY){r.then(l,u);return}let f=new an;o=s.setTimeout.call(void 0,()=>{if(n){try{l(n())}catch(h){u(h)}return}typeof r.cancel=="function"&&r.cancel(),i===!1?l():i instanceof Error?u(i):(f.message=i??`Promise timed out after ${t} milliseconds`,u(f))},t),(async()=>{try{l(await r)}catch(h){u(h)}})()}).finally(()=>{c.clear()});return c.clear=()=>{s.clearTimeout.call(void 0,o),o=void 0},c}function Ss(r,e,t){let n=0,i=r.length;for(;i>0;){let s=Math.trunc(i/2),o=n+s;t(r[o],e)<=0?(n=++o,i-=s+1):i=s}return n}var cn=class{#e=[];enqueue(e,t){t={priority:0,...t};let n={priority:t.priority,run:e};if(this.size&&this.#e[this.size-1].priority>=t.priority){this.#e.push(n);return}let i=Ss(this.#e,n,(s,o)=>o.priority-s.priority);this.#e.splice(i,0,n)}dequeue(){return this.#e.shift()?.run}filter(e){return this.#e.filter(t=>t.priority===e.priority).map(t=>t.run)}get size(){return this.#e.length}};var br=class extends Es.default{#e;#r;#s=0;#a;#c;#p=0;#n;#l;#t;#g;#i=0;#u;#o;#m;timeout;constructor(e){if(super(),e={carryoverConcurrencyCount:!1,intervalCap:Number.POSITIVE_INFINITY,interval:0,concurrency:Number.POSITIVE_INFINITY,autoStart:!0,queueClass:cn,...e},!(typeof e.intervalCap=="number"&&e.intervalCap>=1))throw new TypeError(`Expected \`intervalCap\` to be a number from 1 and up, got \`${e.intervalCap?.toString()??""}\` (${typeof e.intervalCap})`);if(e.interval===void 0||!(Number.isFinite(e.interval)&&e.interval>=0))throw new TypeError(`Expected \`interval\` to be a finite number >= 0, got \`${e.interval?.toString()??""}\` (${typeof e.interval})`);this.#e=e.carryoverConcurrencyCount,this.#r=e.intervalCap===Number.POSITIVE_INFINITY||e.interval===0,this.#a=e.intervalCap,this.#c=e.interval,this.#t=new e.queueClass,this.#g=e.queueClass,this.concurrency=e.concurrency,this.timeout=e.timeout,this.#m=e.throwOnTimeout===!0,this.#o=e.autoStart===!1}get#b(){return this.#r||this.#s<this.#a}get#x(){return this.#i<this.#u}#v(){this.#i--,this.#f(),this.emit("next")}#E(){this.#w(),this.#y(),this.#l=void 0}get#A(){let e=Date.now();if(this.#n===void 0){let t=this.#p-e;if(t<0)this.#s=this.#e?this.#i:0;else return this.#l===void 0&&(this.#l=setTimeout(()=>{this.#E()},t)),!0}return!1}#f(){if(this.#t.size===0)return this.#n&&clearInterval(this.#n),this.#n=void 0,this.emit("empty"),this.#i===0&&this.emit("idle"),!1;if(!this.#o){let e=!this.#A;if(this.#b&&this.#x){let t=this.#t.dequeue();return t?(this.emit("active"),t(),e&&this.#y(),!0):!1}}return!1}#y(){this.#r||this.#n!==void 0||(this.#n=setInterval(()=>{this.#w()},this.#c),this.#p=Date.now()+this.#c)}#w(){this.#s===0&&this.#i===0&&this.#n&&(clearInterval(this.#n),this.#n=void 0),this.#s=this.#e?this.#i:0,this.#h()}#h(){for(;this.#f(););}get concurrency(){return this.#u}set concurrency(e){if(!(typeof e=="number"&&e>=1))throw new TypeError(`Expected \`concurrency\` to be a number from 1 and up, got \`${e}\` (${typeof e})`);this.#u=e,this.#h()}async#S(e){return new Promise((t,n)=>{e.addEventListener("abort",()=>{n(e.reason)},{once:!0})})}async add(e,t={}){return t={timeout:this.timeout,throwOnTimeout:this.#m,...t},new Promise((n,i)=>{this.#t.enqueue(async()=>{this.#i++,this.#s++;try{t.signal?.throwIfAborted();let s=e({signal:t.signal});t.timeout&&(s=er(Promise.resolve(s),{milliseconds:t.timeout})),t.signal&&(s=Promise.race([s,this.#S(t.signal)]));let o=await s;n(o),this.emit("completed",o)}catch(s){if(s instanceof an&&!t.throwOnTimeout){n();return}i(s),this.emit("error",s)}finally{this.#v()}},t),this.emit("add"),this.#f()})}async addAll(e,t){return Promise.all(e.map(async n=>this.add(n,t)))}start(){return this.#o?(this.#o=!1,this.#h(),this):this}pause(){this.#o=!0}clear(){this.#t=new this.#g}async onEmpty(){this.#t.size!==0&&await this.#d("empty")}async onSizeLessThan(e){this.#t.size<e||await this.#d("next",()=>this.#t.size<e)}async onIdle(){this.#i===0&&this.#t.size===0||await this.#d("idle")}async#d(e,t){return new Promise(n=>{let i=()=>{t&&!t()||(this.off(e,i),n())};this.on(e,i)})}get size(){return this.#t.size}sizeBy(e){return this.#t.filter(e).length}get pending(){return this.#i}get isPaused(){return this.#o}};var Lt={},xr=r=>{r.addEventListener("message",e=>{xr.dispatchEvent("message",r,e)}),r.port!=null&&r.port.addEventListener("message",e=>{xr.dispatchEvent("message",r,e)})};xr.addEventListener=(r,e)=>{Lt[r]==null&&(Lt[r]=[]),Lt[r].push(e)};xr.removeEventListener=(r,e)=>{Lt[r]!=null&&(Lt[r]=Lt[r].filter(t=>t===e))};xr.dispatchEvent=function(r,e,t){Lt[r]!=null&&Lt[r].forEach(n=>n(e,t))};var Bs=xr;var Is="lock:worker:request-read",ks="lock:worker:release-read",Ts="lock:master:grant-read",Rs="lock:worker:request-write",Ps="lock:worker:release-write",Ns="lock:master:grant-write";var X2=(r=21)=>Math.random().toString().substring(2);var J2=(r,e,t,n,i)=>(s,o)=>{if(o.data.type!==t)return;let a={type:o.data.type,name:o.data.name,identifier:o.data.identifier};r.dispatchEvent(new MessageEvent(e,{data:{name:a.name,handler:async()=>{s.postMessage({type:i,name:a.name,identifier:a.identifier}),await new Promise(c=>{let l=u=>{if(u?.data==null)return;let f={type:u.data.type,name:u.data.name,identifier:u.data.identifier};f.type===n&&f.identifier===a.identifier&&(s.removeEventListener("message",l),c())};s.addEventListener("message",l)})}}}))},e0=(r,e,t,n)=>async()=>{let i=X2();return globalThis.postMessage({type:e,identifier:i,name:r}),new Promise(s=>{let o=a=>{if(a?.data==null)return;let c={type:a.data.type,identifier:a.data.identifier};c.type===t&&c.identifier===i&&(globalThis.removeEventListener("message",o),s(()=>{globalThis.postMessage({type:n,identifier:i,name:r})}))};globalThis.addEventListener("message",o)})},U4={singleProcess:!1},t0=r=>{if(r=Object.assign({},U4,r),!!globalThis.document||r.singleProcess){let t=new EventTarget;return Bs.addEventListener("message",J2(t,"requestReadLock",Is,ks,Ts)),Bs.addEventListener("message",J2(t,"requestWriteLock",Rs,Ps,Ns)),t}return{isWorker:!0,readLock:t=>e0(t,Is,Ts,ks),writeLock:t=>e0(t,Rs,Ns,Ps)}};var tr={},_t;async function Ls(r,e){let t,n=new Promise(i=>{t=i});return r.add(async()=>er((async()=>{await new Promise(i=>{t(()=>{i()})})})(),{milliseconds:e.timeout})),n}var D4=(r,e)=>{if(_t.isWorker===!0)return{readLock:_t.readLock(r,e),writeLock:_t.writeLock(r,e)};let t=new br({concurrency:1}),n;return{async readLock(){if(n!=null)return Ls(n,e);n=new br({concurrency:e.concurrency,autoStart:!1});let i=n,s=Ls(n,e);return t.add(async()=>{i.start(),await i.onIdle().then(()=>{n===i&&(n=null)})}),s},async writeLock(){return n=null,Ls(t,e)}}},O4={name:"lock",concurrency:1/0,timeout:846e5,singleProcess:!1};function _s(r){let e=Object.assign({},O4,r);return _t==null&&(_t=t0(e),_t.isWorker!==!0&&(_t.addEventListener("requestReadLock",t=>{tr[t.data.name]!=null&&tr[t.data.name].readLock().then(async n=>t.data.handler().finally(()=>{n()}))}),_t.addEventListener("requestWriteLock",async t=>{tr[t.data.name]!=null&&tr[t.data.name].writeLock().then(async n=>t.data.handler().finally(()=>{n()}))}))),tr[e.name]==null&&(tr[e.name]=D4(e.name,e)),tr[e.name]}function se(){let r={};return r.promise=new Promise((e,t)=>{r.resolve=e,r.reject=t}),r}var vr=1e3,Cs=60*vr,Zn=60*Cs,r0=36*Zn,n0="/ipfs/kad/1.0.0",i0=48*Zn;var s0=24*Zn,o0=10,a0=16384,c0=Zn,ll=10*vr;var Yn=20,Er=3,l0=5*Cs,u0=vr,f0=5*vr,h0=5*Cs,d0=30*vr,p0=180*vr,Us=`${$2}-kad-dht`;function _e(r=0){return new Uint8Array(r)}function ge(r=0){return new Uint8Array(r)}var M4=Math.pow(2,7),V4=Math.pow(2,14),F4=Math.pow(2,21),Ds=Math.pow(2,28),Os=Math.pow(2,35),Ms=Math.pow(2,42),Vs=Math.pow(2,49),z=128,Ee=127;function oe(r){if(r<M4)return 1;if(r<V4)return 2;if(r<F4)return 3;if(r<Ds)return 4;if(r<Os)return 5;if(r<Ms)return 6;if(r<Vs)return 7;if(Number.MAX_SAFE_INTEGER!=null&&r>Number.MAX_SAFE_INTEGER)throw new RangeError("Could not encode varint");return 8}function Fs(r,e,t=0){switch(oe(r)){case 8:e[t++]=r&255|z,r/=128;case 7:e[t++]=r&255|z,r/=128;case 6:e[t++]=r&255|z,r/=128;case 5:e[t++]=r&255|z,r/=128;case 4:e[t++]=r&255|z,r>>>=7;case 3:e[t++]=r&255|z,r>>>=7;case 2:e[t++]=r&255|z,r>>>=7;case 1:{e[t++]=r&255,r>>>=7;break}default:throw new Error("unreachable")}return e}function H4(r,e,t=0){switch(oe(r)){case 8:e.set(t++,r&255|z),r/=128;case 7:e.set(t++,r&255|z),r/=128;case 6:e.set(t++,r&255|z),r/=128;case 5:e.set(t++,r&255|z),r/=128;case 4:e.set(t++,r&255|z),r>>>=7;case 3:e.set(t++,r&255|z),r>>>=7;case 2:e.set(t++,r&255|z),r>>>=7;case 1:{e.set(t++,r&255),r>>>=7;break}default:throw new Error("unreachable")}return e}function Hs(r,e){let t=r[e],n=0;if(n+=t&Ee,t<z||(t=r[e+1],n+=(t&Ee)<<7,t<z)||(t=r[e+2],n+=(t&Ee)<<14,t<z)||(t=r[e+3],n+=(t&Ee)<<21,t<z)||(t=r[e+4],n+=(t&Ee)*Ds,t<z)||(t=r[e+5],n+=(t&Ee)*Os,t<z)||(t=r[e+6],n+=(t&Ee)*Ms,t<z)||(t=r[e+7],n+=(t&Ee)*Vs,t<z))return n;throw new RangeError("Could not decode varint")}function q4(r,e){let t=r.get(e),n=0;if(n+=t&Ee,t<z||(t=r.get(e+1),n+=(t&Ee)<<7,t<z)||(t=r.get(e+2),n+=(t&Ee)<<14,t<z)||(t=r.get(e+3),n+=(t&Ee)<<21,t<z)||(t=r.get(e+4),n+=(t&Ee)*Ds,t<z)||(t=r.get(e+5),n+=(t&Ee)*Os,t<z)||(t=r.get(e+6),n+=(t&Ee)*Ms,t<z)||(t=r.get(e+7),n+=(t&Ee)*Vs,t<z))return n;throw new RangeError("Could not decode varint")}function qe(r,e,t=0){return e==null&&(e=ge(oe(r))),e instanceof Uint8Array?Fs(r,e,t):H4(r,e,t)}function Me(r,e=0){return r instanceof Uint8Array?Hs(r,e):q4(r,e)}var qs=new Float32Array([-0]),Ct=new Uint8Array(qs.buffer);function g0(r,e,t){qs[0]=r,e[t]=Ct[0],e[t+1]=Ct[1],e[t+2]=Ct[2],e[t+3]=Ct[3]}function m0(r,e){return Ct[0]=r[e],Ct[1]=r[e+1],Ct[2]=r[e+2],Ct[3]=r[e+3],qs[0]}var Ks=new Float64Array([-0]),Ae=new Uint8Array(Ks.buffer);function y0(r,e,t){Ks[0]=r,e[t]=Ae[0],e[t+1]=Ae[1],e[t+2]=Ae[2],e[t+3]=Ae[3],e[t+4]=Ae[4],e[t+5]=Ae[5],e[t+6]=Ae[6],e[t+7]=Ae[7]}function w0(r,e){return Ae[0]=r[e],Ae[1]=r[e+1],Ae[2]=r[e+2],Ae[3]=r[e+3],Ae[4]=r[e+4],Ae[5]=r[e+5],Ae[6]=r[e+6],Ae[7]=r[e+7],Ks[0]}var K4=BigInt(Number.MAX_SAFE_INTEGER),$4=BigInt(Number.MIN_SAFE_INTEGER),Ve=class r{lo;hi;constructor(e,t){this.lo=e|0,this.hi=t|0}toNumber(e=!1){if(!e&&this.hi>>>31>0){let t=~this.lo+1>>>0,n=~this.hi>>>0;return t===0&&(n=n+1>>>0),-(t+n*4294967296)}return this.lo+this.hi*4294967296}toBigInt(e=!1){if(e)return BigInt(this.lo>>>0)+(BigInt(this.hi>>>0)<<32n);if(this.hi>>>31){let t=~this.lo+1>>>0,n=~this.hi>>>0;return t===0&&(n=n+1>>>0),-(BigInt(t)+(BigInt(n)<<32n))}return BigInt(this.lo>>>0)+(BigInt(this.hi>>>0)<<32n)}toString(e=!1){return this.toBigInt(e).toString()}zzEncode(){let e=this.hi>>31;return this.hi=((this.hi<<1|this.lo>>>31)^e)>>>0,this.lo=(this.lo<<1^e)>>>0,this}zzDecode(){let e=-(this.lo&1);return this.lo=((this.lo>>>1|this.hi<<31)^e)>>>0,this.hi=(this.hi>>>1^e)>>>0,this}length(){let e=this.lo,t=(this.lo>>>28|this.hi<<4)>>>0,n=this.hi>>>24;return n===0?t===0?e<16384?e<128?1:2:e<2097152?3:4:t<16384?t<128?5:6:t<2097152?7:8:n<128?9:10}static fromBigInt(e){if(e===0n)return nr;if(e<K4&&e>$4)return this.fromNumber(Number(e));let t=e<0n;t&&(e=-e);let n=e>>32n,i=e-(n<<32n);return t&&(n=~n|0n,i=~i|0n,++i>b0&&(i=0n,++n>b0&&(n=0n))),new r(Number(i),Number(n))}static fromNumber(e){if(e===0)return nr;let t=e<0;t&&(e=-e);let n=e>>>0,i=(e-n)/4294967296>>>0;return t&&(i=~i>>>0,n=~n>>>0,++n>4294967295&&(n=0,++i>4294967295&&(i=0))),new r(n,i)}static from(e){return typeof e=="number"?r.fromNumber(e):typeof e=="bigint"?r.fromBigInt(e):typeof e=="string"?r.fromBigInt(BigInt(e)):e.low!=null||e.high!=null?new r(e.low>>>0,e.high>>>0):nr}},nr=new Ve(0,0);nr.toBigInt=function(){return 0n};nr.zzEncode=nr.zzDecode=function(){return this};nr.length=function(){return 1};var b0=4294967296n;function x0(r){let e=0,t=0;for(let n=0;n<r.length;++n)t=r.charCodeAt(n),t<128?e+=1:t<2048?e+=2:(t&64512)===55296&&(r.charCodeAt(n+1)&64512)===56320?(++n,e+=4):e+=3;return e}function v0(r,e,t){if(t-e<1)return"";let i,s=[],o=0,a;for(;e<t;)a=r[e++],a<128?s[o++]=a:a>191&&a<224?s[o++]=(a&31)<<6|r[e++]&63:a>239&&a<365?(a=((a&7)<<18|(r[e++]&63)<<12|(r[e++]&63)<<6|r[e++]&63)-65536,s[o++]=55296+(a>>10),s[o++]=56320+(a&1023)):s[o++]=(a&15)<<12|(r[e++]&63)<<6|r[e++]&63,o>8191&&((i??(i=[])).push(String.fromCharCode.apply(String,s)),o=0);return i!=null?(o>0&&i.push(String.fromCharCode.apply(String,s.slice(0,o))),i.join("")):String.fromCharCode.apply(String,s.slice(0,o))}function $s(r,e,t){let n=t,i,s;for(let o=0;o<r.length;++o)i=r.charCodeAt(o),i<128?e[t++]=i:i<2048?(e[t++]=i>>6|192,e[t++]=i&63|128):(i&64512)===55296&&((s=r.charCodeAt(o+1))&64512)===56320?(i=65536+((i&1023)<<10)+(s&1023),++o,e[t++]=i>>18|240,e[t++]=i>>12&63|128,e[t++]=i>>6&63|128,e[t++]=i&63|128):(e[t++]=i>>12|224,e[t++]=i>>6&63|128,e[t++]=i&63|128);return t-n}function Ge(r,e){return RangeError(`index out of range: ${r.pos} + ${e??1} > ${r.len}`)}function Xn(r,e){return(r[e-4]|r[e-3]<<8|r[e-2]<<16|r[e-1]<<24)>>>0}var zs=class{buf;pos;len;_slice=Uint8Array.prototype.subarray;constructor(e){this.buf=e,this.pos=0,this.len=e.length}uint32(){let e=4294967295;if(e=(this.buf[this.pos]&127)>>>0,this.buf[this.pos++]<128||(e=(e|(this.buf[this.pos]&127)<<7)>>>0,this.buf[this.pos++]<128)||(e=(e|(this.buf[this.pos]&127)<<14)>>>0,this.buf[this.pos++]<128)||(e=(e|(this.buf[this.pos]&127)<<21)>>>0,this.buf[this.pos++]<128)||(e=(e|(this.buf[this.pos]&15)<<28)>>>0,this.buf[this.pos++]<128))return e;if((this.pos+=5)>this.len)throw this.pos=this.len,Ge(this,10);return e}int32(){return this.uint32()|0}sint32(){let e=this.uint32();return e>>>1^-(e&1)|0}bool(){return this.uint32()!==0}fixed32(){if(this.pos+4>this.len)throw Ge(this,4);return Xn(this.buf,this.pos+=4)}sfixed32(){if(this.pos+4>this.len)throw Ge(this,4);return Xn(this.buf,this.pos+=4)|0}float(){if(this.pos+4>this.len)throw Ge(this,4);let e=m0(this.buf,this.pos);return this.pos+=4,e}double(){if(this.pos+8>this.len)throw Ge(this,4);let e=w0(this.buf,this.pos);return this.pos+=8,e}bytes(){let e=this.uint32(),t=this.pos,n=this.pos+e;if(n>this.len)throw Ge(this,e);return this.pos+=e,t===n?new Uint8Array(0):this.buf.subarray(t,n)}string(){let e=this.bytes();return v0(e,0,e.length)}skip(e){if(typeof e=="number"){if(this.pos+e>this.len)throw Ge(this,e);this.pos+=e}else do if(this.pos>=this.len)throw Ge(this);while(this.buf[this.pos++]&128);return this}skipType(e){switch(e){case 0:this.skip();break;case 1:this.skip(8);break;case 2:this.skip(this.uint32());break;case 3:for(;(e=this.uint32()&7)!==4;)this.skipType(e);break;case 5:this.skip(4);break;default:throw Error(`invalid wire type ${e} at offset ${this.pos}`)}return this}readLongVarint(){let e=new Ve(0,0),t=0;if(this.len-this.pos>4){for(;t<4;++t)if(e.lo=(e.lo|(this.buf[this.pos]&127)<<t*7)>>>0,this.buf[this.pos++]<128)return e;if(e.lo=(e.lo|(this.buf[this.pos]&127)<<28)>>>0,e.hi=(e.hi|(this.buf[this.pos]&127)>>4)>>>0,this.buf[this.pos++]<128)return e;t=0}else{for(;t<3;++t){if(this.pos>=this.len)throw Ge(this);if(e.lo=(e.lo|(this.buf[this.pos]&127)<<t*7)>>>0,this.buf[this.pos++]<128)return e}return e.lo=(e.lo|(this.buf[this.pos++]&127)<<t*7)>>>0,e}if(this.len-this.pos>4){for(;t<5;++t)if(e.hi=(e.hi|(this.buf[this.pos]&127)<<t*7+3)>>>0,this.buf[this.pos++]<128)return e}else for(;t<5;++t){if(this.pos>=this.len)throw Ge(this);if(e.hi=(e.hi|(this.buf[this.pos]&127)<<t*7+3)>>>0,this.buf[this.pos++]<128)return e}throw Error("invalid varint encoding")}readFixed64(){if(this.pos+8>this.len)throw Ge(this,8);let e=Xn(this.buf,this.pos+=4),t=Xn(this.buf,this.pos+=4);return new Ve(e,t)}int64(){return this.readLongVarint().toBigInt()}int64Number(){return this.readLongVarint().toNumber()}int64String(){return this.readLongVarint().toString()}uint64(){return this.readLongVarint().toBigInt(!0)}uint64Number(){let e=Hs(this.buf,this.pos);return this.pos+=oe(e),e}uint64String(){return this.readLongVarint().toString(!0)}sint64(){return this.readLongVarint().zzDecode().toBigInt()}sint64Number(){return this.readLongVarint().zzDecode().toNumber()}sint64String(){return this.readLongVarint().zzDecode().toString()}fixed64(){return this.readFixed64().toBigInt()}fixed64Number(){return this.readFixed64().toNumber()}fixed64String(){return this.readFixed64().toString()}sfixed64(){return this.readFixed64().toBigInt()}sfixed64Number(){return this.readFixed64().toNumber()}sfixed64String(){return this.readFixed64().toString()}};function Gs(r){return new zs(r instanceof Uint8Array?r:r.subarray())}function tt(r,e,t){let n=Gs(r);return e.decode(n,void 0,t)}var Ys={};ke(Ys,{base10:()=>Z4});var vl=new Uint8Array(0);function A0(r,e){if(r===e)return!0;if(r.byteLength!==e.byteLength)return!1;for(let t=0;t<r.byteLength;t++)if(r[t]!==e[t])return!1;return!0}function dt(r){if(r instanceof Uint8Array&&r.constructor.name==="Uint8Array")return r;if(r instanceof ArrayBuffer)return new Uint8Array(r);if(ArrayBuffer.isView(r))return new Uint8Array(r.buffer,r.byteOffset,r.byteLength);throw new Error("Unknown type, must be binary type")}function S0(r){return new TextEncoder().encode(r)}function B0(r){return new TextDecoder().decode(r)}function z4(r,e){if(r.length>=255)throw new TypeError("Alphabet too long");for(var t=new Uint8Array(256),n=0;n<t.length;n++)t[n]=255;for(var i=0;i<r.length;i++){var s=r.charAt(i),o=s.charCodeAt(0);if(t[o]!==255)throw new TypeError(s+" is ambiguous");t[o]=i}var a=r.length,c=r.charAt(0),l=Math.log(a)/Math.log(256),u=Math.log(256)/Math.log(a);function f(y){if(y instanceof Uint8Array||(ArrayBuffer.isView(y)?y=new Uint8Array(y.buffer,y.byteOffset,y.byteLength):Array.isArray(y)&&(y=Uint8Array.from(y))),!(y instanceof Uint8Array))throw new TypeError("Expected Uint8Array");if(y.length===0)return"";for(var w=0,d=0,x=0,E=y.length;x!==E&&y[x]===0;)x++,w++;for(var g=(E-x)*u+1>>>0,A=new Uint8Array(g);x!==E;){for(var R=y[x],T=0,I=g-1;(R!==0||T<d)&&I!==-1;I--,T++)R+=256*A[I]>>>0,A[I]=R%a>>>0,R=R/a>>>0;if(R!==0)throw new Error("Non-zero carry");d=T,x++}for(var k=g-d;k!==g&&A[k]===0;)k++;for(var L=c.repeat(w);k<g;++k)L+=r.charAt(A[k]);return L}function h(y){if(typeof y!="string")throw new TypeError("Expected String");if(y.length===0)return new Uint8Array;var w=0;if(y[w]!==" "){for(var d=0,x=0;y[w]===c;)d++,w++;for(var E=(y.length-w)*l+1>>>0,g=new Uint8Array(E);y[w];){var A=t[y.charCodeAt(w)];if(A===255)return;for(var R=0,T=E-1;(A!==0||R<x)&&T!==-1;T--,R++)A+=a*g[T]>>>0,g[T]=A%256>>>0,A=A/256>>>0;if(A!==0)throw new Error("Non-zero carry");x=R,w++}if(y[w]!==" "){for(var I=E-x;I!==E&&g[I]===0;)I++;for(var k=new Uint8Array(d+(E-I)),L=d;I!==E;)k[L++]=g[I++];return k}}}function p(y){var w=h(y);if(w)return w;throw new Error(`Non-${e} character`)}return{encode:f,decodeUnsafe:h,decode:p}}var G4=z4,j4=G4,k0=j4;var js=class{name;prefix;baseEncode;constructor(e,t,n){this.name=e,this.prefix=t,this.baseEncode=n}encode(e){if(e instanceof Uint8Array)return`${this.prefix}${this.baseEncode(e)}`;throw Error("Unknown type, must be binary type")}},Ws=class{name;prefix;baseDecode;prefixCodePoint;constructor(e,t,n){this.name=e,this.prefix=t;let i=t.codePointAt(0);if(i===void 0)throw new Error("Invalid prefix character");this.prefixCodePoint=i,this.baseDecode=n}decode(e){if(typeof e=="string"){if(e.codePointAt(0)!==this.prefixCodePoint)throw Error(`Unable to decode multibase string ${JSON.stringify(e)}, ${this.name} decoder only supports inputs prefixed with ${this.prefix}`);return this.baseDecode(e.slice(this.prefix.length))}else throw Error("Can only multibase decode strings")}or(e){return T0(this,e)}},Qs=class{decoders;constructor(e){this.decoders=e}or(e){return T0(this,e)}decode(e){let t=e[0],n=this.decoders[t];if(n!=null)return n.decode(e);throw RangeError(`Unable to decode multibase string ${JSON.stringify(e)}, only inputs prefixed with ${Object.keys(this.decoders)} are supported`)}};function T0(r,e){return new Qs({...r.decoders??{[r.prefix]:r},...e.decoders??{[e.prefix]:e}})}var Zs=class{name;prefix;baseEncode;baseDecode;encoder;decoder;constructor(e,t,n,i){this.name=e,this.prefix=t,this.baseEncode=n,this.baseDecode=i,this.encoder=new js(e,t,n),this.decoder=new Ws(e,t,i)}encode(e){return this.encoder.encode(e)}decode(e){return this.decoder.decode(e)}};function Ar({name:r,prefix:e,encode:t,decode:n}){return new Zs(r,e,t,n)}function Ut({name:r,prefix:e,alphabet:t}){let{encode:n,decode:i}=k0(t,r);return Ar({prefix:e,name:r,encode:n,decode:s=>dt(i(s))})}function W4(r,e,t,n){let i={};for(let u=0;u<e.length;++u)i[e[u]]=u;let s=r.length;for(;r[s-1]==="=";)--s;let o=new Uint8Array(s*t/8|0),a=0,c=0,l=0;for(let u=0;u<s;++u){let f=i[r[u]];if(f===void 0)throw new SyntaxError(`Non-${n} character`);c=c<<t|f,a+=t,a>=8&&(a-=8,o[l++]=255&c>>a)}if(a>=t||255&c<<8-a)throw new SyntaxError("Unexpected end of data");return o}function Q4(r,e,t){let n=e[e.length-1]==="=",i=(1<<t)-1,s="",o=0,a=0;for(let c=0;c<r.length;++c)for(a=a<<8|r[c],o+=8;o>t;)o-=t,s+=e[i&a>>o];if(o!==0&&(s+=e[i&a<<t-o]),n)for(;s.length*t&7;)s+="=";return s}function ne({name:r,prefix:e,bitsPerChar:t,alphabet:n}){return Ar({prefix:e,name:r,encode(i){return Q4(i,n,t)},decode(i){return W4(i,n,t,r)}})}var Z4=Ut({prefix:"9",name:"base10",alphabet:"0123456789"});var Xs={};ke(Xs,{base16:()=>Y4,base16upper:()=>X4});var Y4=ne({prefix:"f",name:"base16",alphabet:"0123456789abcdef",bitsPerChar:4}),X4=ne({prefix:"F",name:"base16upper",alphabet:"0123456789ABCDEF",bitsPerChar:4});var Js={};ke(Js,{base2:()=>J4});var J4=ne({prefix:"0",name:"base2",alphabet:"01",bitsPerChar:1});var eo={};ke(eo,{base256emoji:()=>i5});var R0=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}"),e5=R0.reduce((r,e,t)=>(r[t]=e,r),[]),t5=R0.reduce((r,e,t)=>{let n=e.codePointAt(0);if(n==null)throw new Error(`Invalid character: ${e}`);return r[n]=t,r},[]);function r5(r){return r.reduce((e,t)=>(e+=e5[t],e),"")}function n5(r){let e=[];for(let t of r){let n=t.codePointAt(0);if(n==null)throw new Error(`Invalid character: ${t}`);let i=t5[n];if(i==null)throw new Error(`Non-base256emoji character: ${t}`);e.push(i)}return new Uint8Array(e)}var i5=Ar({prefix:"\u{1F680}",name:"base256emoji",encode:r5,decode:n5});var to={};ke(to,{base32:()=>pt,base32hex:()=>c5,base32hexpad:()=>u5,base32hexpadupper:()=>f5,base32hexupper:()=>l5,base32pad:()=>o5,base32padupper:()=>a5,base32upper:()=>s5,base32z:()=>h5});var pt=ne({prefix:"b",name:"base32",alphabet:"abcdefghijklmnopqrstuvwxyz234567",bitsPerChar:5}),s5=ne({prefix:"B",name:"base32upper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567",bitsPerChar:5}),o5=ne({prefix:"c",name:"base32pad",alphabet:"abcdefghijklmnopqrstuvwxyz234567=",bitsPerChar:5}),a5=ne({prefix:"C",name:"base32padupper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=",bitsPerChar:5}),c5=ne({prefix:"v",name:"base32hex",alphabet:"0123456789abcdefghijklmnopqrstuv",bitsPerChar:5}),l5=ne({prefix:"V",name:"base32hexupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV",bitsPerChar:5}),u5=ne({prefix:"t",name:"base32hexpad",alphabet:"0123456789abcdefghijklmnopqrstuv=",bitsPerChar:5}),f5=ne({prefix:"T",name:"base32hexpadupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV=",bitsPerChar:5}),h5=ne({prefix:"h",name:"base32z",alphabet:"ybndrfg8ejkmcpqxot1uwisza345h769",bitsPerChar:5});var ro={};ke(ro,{base36:()=>ln,base36upper:()=>d5});var ln=Ut({prefix:"k",name:"base36",alphabet:"0123456789abcdefghijklmnopqrstuvwxyz"}),d5=Ut({prefix:"K",name:"base36upper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"});var no={};ke(no,{base58btc:()=>Y,base58flickr:()=>p5});var Y=Ut({name:"base58btc",prefix:"z",alphabet:"123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"}),p5=Ut({name:"base58flickr",prefix:"Z",alphabet:"123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ"});var io={};ke(io,{base64:()=>g5,base64pad:()=>m5,base64url:()=>y5,base64urlpad:()=>w5});var g5=ne({prefix:"m",name:"base64",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",bitsPerChar:6}),m5=ne({prefix:"M",name:"base64pad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",bitsPerChar:6}),y5=ne({prefix:"u",name:"base64url",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_",bitsPerChar:6}),w5=ne({prefix:"U",name:"base64urlpad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_=",bitsPerChar:6});var so={};ke(so,{base8:()=>b5});var b5=ne({prefix:"7",name:"base8",alphabet:"01234567",bitsPerChar:3});var oo={};ke(oo,{identity:()=>x5});var x5=Ar({prefix:"\0",name:"identity",encode:r=>B0(r),decode:r=>S0(r)});var Ol=new TextEncoder,Ml=new TextDecoder;var P0=85;var co={};ke(co,{identity:()=>gt});var E5=C0,L0=128,A5=127,S5=~A5,B5=Math.pow(2,31);function C0(r,e,t){e=e||[],t=t||0;for(var n=t;r>=B5;)e[t++]=r&255|L0,r/=128;for(;r&S5;)e[t++]=r&255|L0,r>>>=7;return e[t]=r|0,C0.bytes=t-n+1,e}var I5=ao,k5=128,_0=127;function ao(r,n){var t=0,n=n||0,i=0,s=n,o,a=r.length;do{if(s>=a)throw ao.bytes=0,new RangeError("Could not decode varint");o=r[s++],t+=i<28?(o&_0)<<i:(o&_0)*Math.pow(2,i),i+=7}while(o>=k5);return ao.bytes=s-n,t}var T5=Math.pow(2,7),R5=Math.pow(2,14),P5=Math.pow(2,21),N5=Math.pow(2,28),L5=Math.pow(2,35),_5=Math.pow(2,42),C5=Math.pow(2,49),U5=Math.pow(2,56),D5=Math.pow(2,63),O5=function(r){return r<T5?1:r<R5?2:r<P5?3:r<N5?4:r<L5?5:r<_5?6:r<C5?7:r<U5?8:r<D5?9:10},M5={encode:E5,decode:I5,encodingLength:O5},V5=M5,un=V5;function fn(r,e=0){return[un.decode(r,e),un.decode.bytes]}function Sr(r,e,t=0){return un.encode(r,e,t),e}function Br(r){return un.encodingLength(r)}function je(r,e){let t=e.byteLength,n=Br(r),i=n+Br(t),s=new Uint8Array(i+t);return Sr(r,s,0),Sr(t,s,n),s.set(e,i),new Ir(r,t,e,s)}function me(r){let e=dt(r),[t,n]=fn(e),[i,s]=fn(e.subarray(n)),o=e.subarray(n+s);if(o.byteLength!==i)throw new Error("Incorrect length");return new Ir(t,i,o,e)}function U0(r,e){if(r===e)return!0;{let t=e;return r.code===t.code&&r.size===t.size&&t.bytes instanceof Uint8Array&&A0(r.bytes,t.bytes)}}var Ir=class{code;size;digest;bytes;constructor(e,t,n,i){this.code=e,this.size=t,this.digest=n,this.bytes=i}};var D0=0,F5="identity",O0=dt;function H5(r){return je(D0,O0(r))}var gt={code:D0,name:F5,encode:O0,digest:H5};var fo={};ke(fo,{sha256:()=>mt,sha512:()=>q5});function uo({name:r,code:e,encode:t}){return new lo(r,e,t)}var lo=class{name;code;encode;constructor(e,t,n){this.name=e,this.code=t,this.encode=n}digest(e){if(e instanceof Uint8Array){let t=this.encode(e);return t instanceof Uint8Array?je(this.code,t):t.then(n=>je(this.code,n))}else throw Error("Unknown type, must be binary type")}};function V0(r){return async e=>new Uint8Array(await crypto.subtle.digest(r,e))}var mt=uo({name:"sha2-256",code:18,encode:V0("SHA-256")}),q5=uo({name:"sha2-512",code:19,encode:V0("SHA-512")});function F0(r,e){let{bytes:t,version:n}=r;switch(n){case 0:return $5(t,ho(r),e??Y.encoder);default:return z5(t,ho(r),e??pt.encoder)}}var H0=new WeakMap;function ho(r){let e=H0.get(r);if(e==null){let t=new Map;return H0.set(r,t),t}return e}var re=class r{code;version;multihash;bytes;"/";constructor(e,t,n,i){this.code=t,this.version=e,this.multihash=n,this.bytes=i,this["/"]=i}get asCID(){return this}get byteOffset(){return this.bytes.byteOffset}get byteLength(){return this.bytes.byteLength}toV0(){switch(this.version){case 0:return this;case 1:{let{code:e,multihash:t}=this;if(e!==hn)throw new Error("Cannot convert a non dag-pb CID to CIDv0");if(t.code!==G5)throw new Error("Cannot convert non sha2-256 multihash CID to CIDv0");return r.createV0(t)}default:throw Error(`Can not convert CID version ${this.version} to version 0. This is a bug please report`)}}toV1(){switch(this.version){case 0:{let{code:e,digest:t}=this.multihash,n=je(e,t);return r.createV1(this.code,n)}case 1:return this;default:throw Error(`Can not convert CID version ${this.version} to version 1. This is a bug please report`)}}equals(e){return r.equals(this,e)}static equals(e,t){let n=t;return n!=null&&e.code===n.code&&e.version===n.version&&U0(e.multihash,n.multihash)}toString(e){return F0(this,e)}toJSON(){return{"/":F0(this)}}link(){return this}[Symbol.toStringTag]="CID";[Symbol.for("nodejs.util.inspect.custom")](){return`CID(${this.toString()})`}static asCID(e){if(e==null)return null;let t=e;if(t instanceof r)return t;if(t["/"]!=null&&t["/"]===t.bytes||t.asCID===t){let{version:n,code:i,multihash:s,bytes:o}=t;return new r(n,i,s,o??q0(n,i,s.bytes))}else if(t[j5]===!0){let{version:n,multihash:i,code:s}=t,o=me(i);return r.create(n,s,o)}else return null}static create(e,t,n){if(typeof t!="number")throw new Error("String codecs are no longer supported");if(!(n.bytes instanceof Uint8Array))throw new Error("Invalid digest");switch(e){case 0:{if(t!==hn)throw new Error(`Version 0 CID must use dag-pb (code: ${hn}) block encoding`);return new r(e,t,n,n.bytes)}case 1:{let i=q0(e,t,n.bytes);return new r(e,t,n,i)}default:throw new Error("Invalid version")}}static createV0(e){return r.create(0,hn,e)}static createV1(e,t){return r.create(1,e,t)}static decode(e){let[t,n]=r.decodeFirst(e);if(n.length!==0)throw new Error("Incorrect length");return t}static decodeFirst(e){let t=r.inspectBytes(e),n=t.size-t.multihashSize,i=dt(e.subarray(n,n+t.multihashSize));if(i.byteLength!==t.multihashSize)throw new Error("Incorrect length");let s=i.subarray(t.multihashSize-t.digestSize),o=new Ir(t.multihashCode,t.digestSize,s,i);return[t.version===0?r.createV0(o):r.createV1(t.codec,o),e.subarray(t.size)]}static inspectBytes(e){let t=0,n=()=>{let[f,h]=fn(e.subarray(t));return t+=h,f},i=n(),s=hn;if(i===18?(i=0,t=0):s=n(),i!==0&&i!==1)throw new RangeError(`Invalid CID version ${i}`);let o=t,a=n(),c=n(),l=t+c,u=l-o;return{version:i,codec:s,multihashCode:a,digestSize:c,multihashSize:u,size:l}}static parse(e,t){let[n,i]=K5(e,t),s=r.decode(i);if(s.version===0&&e[0]!=="Q")throw Error("Version 0 CID string must not include multibase prefix");return ho(s).set(n,e),s}};function K5(r,e){switch(r[0]){case"Q":{let t=e??Y;return[Y.prefix,t.decode(`${Y.prefix}${r}`)]}case Y.prefix:{let t=e??Y;return[Y.prefix,t.decode(r)]}case pt.prefix:{let t=e??pt;return[pt.prefix,t.decode(r)]}case ln.prefix:{let t=e??ln;return[ln.prefix,t.decode(r)]}default:{if(e==null)throw Error("To parse non base32, base36 or base58btc encoded CID multibase decoder must be provided");return[r[0],e.decode(r)]}}}function $5(r,e,t){let{prefix:n}=t;if(n!==Y.prefix)throw Error(`Cannot string encode V0 in ${t.name} encoding`);let i=e.get(n);if(i==null){let s=t.encode(r).slice(1);return e.set(n,s),s}else return i}function z5(r,e,t){let{prefix:n}=t,i=e.get(n);if(i==null){let s=t.encode(r);return e.set(n,s),s}else return i}var hn=112,G5=18;function q0(r,e,t){let n=Br(r),i=n+Br(e),s=new Uint8Array(i+t.byteLength);return Sr(r,s,0),Sr(e,s,n),s.set(t,i),s}var j5=Symbol.for("@ipld/js-cid/CID");var dn={...oo,...Js,...so,...Ys,...Xs,...to,...ro,...no,...io,...eo},o9={...fo,...co};function $0(r,e,t,n){return{name:r,prefix:e,encoder:{name:r,prefix:e,encode:t},decoder:{decode:n}}}var K0=$0("utf8","u",r=>"u"+new TextDecoder("utf8").decode(r),r=>new TextEncoder().encode(r.substring(1))),po=$0("ascii","a",r=>{let e="a";for(let t=0;t<r.length;t++)e+=String.fromCharCode(r[t]);return e},r=>{r=r.substring(1);let e=ge(r.length);for(let t=0;t<r.length;t++)e[t]=r.charCodeAt(t);return e}),W5={utf8:K0,"utf-8":K0,hex:dn.base16,latin1:po,ascii:po,binary:po,...dn},e1=W5;function Q(r,e="utf8"){let t=e1[e];if(t==null)throw new Error(`Unsupported encoding "${e}"`);return t.decoder.decode(`${t.prefix}${r}`)}function go(r){let e=r??8192,t=e>>>1,n,i=e;return function(o){if(o<1||o>t)return ge(o);i+o>e&&(n=ge(e),i=0);let a=n.subarray(i,i+=o);return i&7&&(i=(i|7)+1),a}}var ir=class{fn;len;next;val;constructor(e,t,n){this.fn=e,this.len=t,this.next=void 0,this.val=n}};function mo(){}var wo=class{head;tail;len;next;constructor(e){this.head=e.head,this.tail=e.tail,this.len=e.len,this.next=e.states}},Q5=go();function Z5(r){return globalThis.Buffer!=null?ge(r):Q5(r)}var gn=class{len;head;tail;states;constructor(){this.len=0,this.head=new ir(mo,0,0),this.tail=this.head,this.states=null}_push(e,t,n){return this.tail=this.tail.next=new ir(e,t,n),this.len+=t,this}uint32(e){return this.len+=(this.tail=this.tail.next=new bo((e=e>>>0)<128?1:e<16384?2:e<2097152?3:e<268435456?4:5,e)).len,this}int32(e){return e<0?this._push(t1,10,Ve.fromNumber(e)):this.uint32(e)}sint32(e){return this.uint32((e<<1^e>>31)>>>0)}uint64(e){let t=Ve.fromBigInt(e);return this._push(t1,t.length(),t)}uint64Number(e){return this._push(Fs,oe(e),e)}uint64String(e){return this.uint64(BigInt(e))}int64(e){return this.uint64(e)}int64Number(e){return this.uint64Number(e)}int64String(e){return this.uint64String(e)}sint64(e){let t=Ve.fromBigInt(e).zzEncode();return this._push(t1,t.length(),t)}sint64Number(e){let t=Ve.fromNumber(e).zzEncode();return this._push(t1,t.length(),t)}sint64String(e){return this.sint64(BigInt(e))}bool(e){return this._push(yo,1,e?1:0)}fixed32(e){return this._push(pn,4,e>>>0)}sfixed32(e){return this.fixed32(e)}fixed64(e){let t=Ve.fromBigInt(e);return this._push(pn,4,t.lo)._push(pn,4,t.hi)}fixed64Number(e){let t=Ve.fromNumber(e);return this._push(pn,4,t.lo)._push(pn,4,t.hi)}fixed64String(e){return this.fixed64(BigInt(e))}sfixed64(e){return this.fixed64(e)}sfixed64Number(e){return this.fixed64Number(e)}sfixed64String(e){return this.fixed64String(e)}float(e){return this._push(g0,4,e)}double(e){return this._push(y0,8,e)}bytes(e){let t=e.length>>>0;return t===0?this._push(yo,1,0):this.uint32(t)._push(X5,t,e)}string(e){let t=x0(e);return t!==0?this.uint32(t)._push($s,t,e):this._push(yo,1,0)}fork(){return this.states=new wo(this),this.head=this.tail=new ir(mo,0,0),this.len=0,this}reset(){return this.states!=null?(this.head=this.states.head,this.tail=this.states.tail,this.len=this.states.len,this.states=this.states.next):(this.head=this.tail=new ir(mo,0,0),this.len=0),this}ldelim(){let e=this.head,t=this.tail,n=this.len;return this.reset().uint32(n),n!==0&&(this.tail.next=e.next,this.tail=t,this.len+=n),this}finish(){let e=this.head.next,t=Z5(this.len),n=0;for(;e!=null;)e.fn(e.val,t,n),n+=e.len,e=e.next;return t}};function yo(r,e,t){e[t]=r&255}function Y5(r,e,t){for(;r>127;)e[t++]=r&127|128,r>>>=7;e[t]=r}var bo=class extends ir{next;constructor(e,t){super(Y5,e,t),this.next=void 0}};function t1(r,e,t){for(;r.hi!==0;)e[t++]=r.lo&127|128,r.lo=(r.lo>>>7|r.hi<<25)>>>0,r.hi>>>=7;for(;r.lo>127;)e[t++]=r.lo&127|128,r.lo=r.lo>>>7;e[t++]=r.lo}function pn(r,e,t){e[t]=r&255,e[t+1]=r>>>8&255,e[t+2]=r>>>16&255,e[t+3]=r>>>24}function X5(r,e,t){e.set(r,t)}globalThis.Buffer!=null&&(gn.prototype.bytes=function(r){let e=r.length>>>0;return this.uint32(e),e>0&&this._push(J5,e,r),this},gn.prototype.string=function(r){let e=globalThis.Buffer.byteLength(r);return this.uint32(e),e>0&&this._push(e6,e,r),this});function J5(r,e,t){e.set(r,t)}function e6(r,e,t){r.length<40?$s(r,e,t):e.utf8Write!=null?e.utf8Write(r,t):e.set(Q(r),t)}function xo(){return new gn}function rt(r,e){let t=xo();return e.encode(r,t,{lengthDelimited:!1}),t.finish()}var kr;(function(r){r[r.VARINT=0]="VARINT",r[r.BIT64=1]="BIT64",r[r.LENGTH_DELIMITED=2]="LENGTH_DELIMITED",r[r.START_GROUP=3]="START_GROUP",r[r.END_GROUP=4]="END_GROUP",r[r.BIT32=5]="BIT32"})(kr||(kr={}));function r1(r,e,t,n){return{name:r,type:e,encode:t,decode:n}}function Tr(r){function e(i){if(r[i.toString()]==null)throw new Error("Invalid enum value");return r[i]}let t=function(s,o){let a=e(s);o.int32(a)},n=function(s){let o=s.int32();return e(o)};return r1("enum",kr.VARINT,t,n)}function nt(r,e){return r1("message",kr.LENGTH_DELIMITED,r,e)}var Rr=class extends Error{code="ERR_MAX_LENGTH";name="MaxLengthError"};var mn;(function(r){let e;r.codec=()=>(e==null&&(e=nt((t,n,i={})=>{i.lengthDelimited!==!1&&n.fork(),t.key!=null&&t.key.byteLength>0&&(n.uint32(10),n.bytes(t.key)),t.value!=null&&t.value.byteLength>0&&(n.uint32(18),n.bytes(t.value)),t.timeReceived!=null&&t.timeReceived!==""&&(n.uint32(42),n.string(t.timeReceived)),i.lengthDelimited!==!1&&n.ldelim()},(t,n,i={})=>{let s={key:_e(0),value:_e(0),timeReceived:""},o=n==null?t.len:t.pos+n;for(;t.pos<o;){let a=t.uint32();switch(a>>>3){case 1:{s.key=t.bytes();break}case 2:{s.value=t.bytes();break}case 5:{s.timeReceived=t.string();break}default:{t.skipType(a&7);break}}}return s})),e),r.encode=t=>rt(t,r.codec()),r.decode=(t,n)=>tt(t,r.codec(),n)})(mn||(mn={}));function z0(r){let e=r.getUTCFullYear(),t=String(r.getUTCMonth()+1).padStart(2,"0"),n=String(r.getUTCDate()).padStart(2,"0"),i=String(r.getUTCHours()).padStart(2,"0"),s=String(r.getUTCMinutes()).padStart(2,"0"),o=String(r.getUTCSeconds()).padStart(2,"0"),a=r.getUTCMilliseconds(),c=String(a*1e3*1e3).padStart(9,"0");return`${e}-${t}-${n}T${i}:${s}:${o}.${c}Z`}function G0(r){let e=new RegExp("(\\d{4})-(\\d{2})-(\\d{2})T(\\d{2}):(\\d{2}):(\\d{2})\\.(\\d+)Z"),t=String(r).trim().match(e);if(t==null)throw new Error("Invalid format");let n=parseInt(t[1],10),i=parseInt(t[2],10)-1,s=parseInt(t[3],10),o=parseInt(t[4],10),a=parseInt(t[5],10),c=parseInt(t[6],10),l=parseInt(t[7].slice(0,-6),10);return new Date(Date.UTC(n,i,s,o,a,c,l))}var ue=class r{key;value;timeReceived;constructor(e,t,n){if(!(e instanceof Uint8Array))throw new Error("key must be a Uint8Array");if(!(t instanceof Uint8Array))throw new Error("value must be a Uint8Array");this.key=e,this.value=t,this.timeReceived=n}serialize(){return mn.encode(this.prepareSerialize())}prepareSerialize(){return{key:this.key,value:this.value,timeReceived:z0(this.timeReceived)}}static deserialize(e){let t=mn.decode(e);return new r(t.key,t.value,new Date(t.timeReceived))}static fromDeserialized(e){let t=G0(e.timeReceived);if(e.key==null)throw new Error("key missing from deserialized object");if(e.value==null)throw new Error("value missing from deserialized object");return new r(e.key,e.value,t)}};function r6(r){let[e,t]=r[Symbol.asyncIterator]!=null?[r[Symbol.asyncIterator](),Symbol.asyncIterator]:[r[Symbol.iterator](),Symbol.iterator],n=[];return{peek:()=>e.next(),push:i=>{n.push(i)},next:()=>n.length>0?{done:!1,value:n.shift()}:e.next(),[t](){return this}}}var j0=r6;function n6(r){return r[Symbol.asyncIterator]!=null}function i6(r,e){let t=0;if(n6(r))return async function*(){for await(let c of r)yield e(c,t++)}();let n=j0(r),{value:i,done:s}=n.next();if(s===!0)return function*(){}();let o=e(i,t++);if(typeof o.then=="function")return async function*(){yield await o;for await(let c of n)yield e(c,t++)}();let a=e;return function*(){yield o;for(let c of n)yield a(c,t++)}()}var Pr=i6;var n1=globalThis.CustomEvent??Event;async function*sr(r,e={}){let t=e.concurrency??1/0;t<1&&(t=1/0);let n=e.ordered==null?!1:e.ordered,i=new EventTarget,s=[],o=se(),a=se(),c=!1,l,u=!1;i.addEventListener("task-complete",()=>{a.resolve()}),Promise.resolve().then(async()=>{try{for await(let y of r){if(s.length===t&&(o=se(),await o.promise),u)break;let w={done:!1};s.push(w),y().then(d=>{w.done=!0,w.ok=!0,w.value=d,i.dispatchEvent(new n1("task-complete"))},d=>{w.done=!0,w.err=d,i.dispatchEvent(new n1("task-complete"))})}c=!0,i.dispatchEvent(new n1("task-complete"))}catch(y){l=y,i.dispatchEvent(new n1("task-complete"))}});function f(){return n?s[0]?.done:!!s.find(y=>y.done)}function*h(){for(;s.length>0&&s[0].done;){let y=s[0];if(s.shift(),y.ok)yield y.value;else throw u=!0,o.resolve(),y.err;o.resolve()}}function*p(){for(;f();)for(let y=0;y<s.length;y++)if(s[y].done){let w=s[y];if(s.splice(y,1),y--,w.ok)yield w.value;else throw u=!0,o.resolve(),w.err;o.resolve()}}for(;;){if(f()||(a=se(),await a.promise),l!=null)throw l;if(n?yield*h():yield*p(),c&&s.length===0)break}}var i1=class{buffer;mask;top;btm;next;constructor(e){if(!(e>0)||e-1&e)throw new Error("Max size for a FixedFIFO should be a power of two");this.buffer=new Array(e),this.mask=e-1,this.top=0,this.btm=0,this.next=null}push(e){return this.buffer[this.top]!==void 0?!1:(this.buffer[this.top]=e,this.top=this.top+1&this.mask,!0)}shift(){let e=this.buffer[this.btm];if(e!==void 0)return this.buffer[this.btm]=void 0,this.btm=this.btm+1&this.mask,e}isEmpty(){return this.buffer[this.btm]===void 0}},Nr=class{size;hwm;head;tail;constructor(e={}){this.hwm=e.splitLimit??16,this.head=new i1(this.hwm),this.tail=this.head,this.size=0}calculateSize(e){return e?.byteLength!=null?e.byteLength:1}push(e){if(e?.value!=null&&(this.size+=this.calculateSize(e.value)),!this.head.push(e)){let t=this.head;this.head=t.next=new i1(2*this.head.buffer.length),this.head.push(e)}}shift(){let e=this.tail.shift();if(e===void 0&&this.tail.next!=null){let t=this.tail.next;this.tail.next=null,this.tail=t,e=this.tail.shift()}return e?.value!=null&&(this.size-=this.calculateSize(e.value)),e}isEmpty(){return this.head.isEmpty()}};var vo=class extends Error{type;code;constructor(e,t){super(e??"The operation was aborted"),this.type="aborted",this.code=t??"ABORT_ERR"}};function Lr(r={}){return s6(t=>{let n=t.shift();if(n==null)return{done:!0};if(n.error!=null)throw n.error;return{done:n.done===!0,value:n.value}},r)}function s6(r,e){e=e??{};let t=e.onEnd,n=new Nr,i,s,o,a=se(),c=async()=>{try{return n.isEmpty()?o?{done:!0}:await new Promise((d,x)=>{s=E=>{s=null,n.push(E);try{d(r(n))}catch(g){x(g)}return i}}):r(n)}finally{n.isEmpty()&&queueMicrotask(()=>{a.resolve(),a=se()})}},l=d=>s!=null?s(d):(n.push(d),i),u=d=>(n=new Nr,s!=null?s({error:d}):(n.push({error:d}),i)),f=d=>{if(o)return i;if(e?.objectMode!==!0&&d?.byteLength==null)throw new Error("objectMode was not true but tried to push non-Uint8Array value");return l({done:!1,value:d})},h=d=>o?i:(o=!0,d!=null?u(d):l({done:!0})),p=()=>(n=new Nr,h(),{done:!0}),y=d=>(h(d),{done:!0});if(i={[Symbol.asyncIterator](){return this},next:c,return:p,throw:y,push:f,end:h,get readableLength(){return n.size},onEmpty:async d=>{let x=d?.signal;if(x?.throwIfAborted(),n.isEmpty())return;let E,g;x!=null&&(E=new Promise((A,R)=>{g=()=>{R(new vo)},x.addEventListener("abort",g)}));try{await Promise.race([a.promise,E])}finally{g!=null&&x!=null&&x?.removeEventListener("abort",g)}}},t==null)return i;let w=i;return i={[Symbol.asyncIterator](){return this},next(){return w.next()},throw(d){return w.throw(d),t!=null&&(t(d),t=void 0),{done:!0}},return(){return w.return(),t!=null&&(t(),t=void 0),{done:!0}},push:f,end(d){return w.end(d),t!=null&&(t(d),t=void 0),i},get readableLength(){return w.readableLength},onEmpty:d=>w.onEmpty(d)},i}function o6(r){return r[Symbol.asyncIterator]!=null}function a6(...r){let e=[];for(let t of r)o6(t)||e.push(t);return e.length===r.length?function*(){for(let t of e)yield*t}():async function*(){let t=Lr({objectMode:!0});Promise.resolve().then(async()=>{try{await Promise.all(r.map(async n=>{for await(let i of n)t.push(i)})),t.end()}catch(n){t.end(n)}}),yield*t}()}var s1=a6;function Dt(r,...e){if(r==null)throw new Error("Empty pipeline");if(Eo(r)){let n=r;r=()=>n.source}else if(Q0(r)||W0(r)){let n=r;r=()=>n}let t=[r,...e];if(t.length>1&&Eo(t[t.length-1])&&(t[t.length-1]=t[t.length-1].sink),t.length>2)for(let n=1;n<t.length-1;n++)Eo(t[n])&&(t[n]=l6(t[n]));return c6(...t)}var c6=(...r)=>{let e;for(;r.length>0;)e=r.shift()(e);return e},W0=r=>r?.[Symbol.asyncIterator]!=null,Q0=r=>r?.[Symbol.iterator]!=null,Eo=r=>r==null?!1:r.sink!=null&&r.source!=null,l6=r=>e=>{let t=r.sink(e);if(t?.then!=null){let n=Lr({objectMode:!0});t.then(()=>{n.end()},o=>{n.end(o)});let i,s=r.source;if(W0(s))i=async function*(){yield*s,n.end()};else if(Q0(s))i=function*(){yield*s,n.end()};else throw new Error("Unknown duplex source type - must be Iterable or AsyncIterable");return s1(n,i())}return r.source};function X(r,e){if(r===e)return!0;if(r.byteLength!==e.byteLength)return!1;for(let t=0;t<r.byteLength;t++)if(r[t]!==e[t])return!1;return!0}var Ot=class extends Error{constructor(e="Query error"){super(e),this.name="QueryError"}},o1=class extends Error{constructor(e="Query aborted"){super(e),this.name="QueryAbortedError"}},a1=class extends Error{constructor(e="Invalid record"){super(e),this.name="InvalidRecordError"}},c1=class extends Error{constructor(e="No selector function configured for prefix"){super(e),this.name="MissingSelectorError"}};var Z0;(function(r){let e;r.codec=()=>(e==null&&(e=nt((t,n,i={})=>{i.lengthDelimited!==!1&&n.fork(),t.key!=null&&(n.uint32(10),n.bytes(t.key)),t.value!=null&&(n.uint32(18),n.bytes(t.value)),t.author!=null&&(n.uint32(26),n.bytes(t.author)),t.signature!=null&&(n.uint32(34),n.bytes(t.signature)),t.timeReceived!=null&&(n.uint32(42),n.string(t.timeReceived)),i.lengthDelimited!==!1&&n.ldelim()},(t,n,i={})=>{let s={},o=n==null?t.len:t.pos+n;for(;t.pos<o;){let a=t.uint32();switch(a>>>3){case 1:{s.key=t.bytes();break}case 2:{s.value=t.bytes();break}case 3:{s.author=t.bytes();break}case 4:{s.signature=t.bytes();break}case 5:{s.timeReceived=t.string();break}default:{t.skipType(a&7);break}}}return s})),e),r.encode=t=>rt(t,r.codec()),r.decode=(t,n)=>tt(t,r.codec(),n)})(Z0||(Z0={}));var O;(function(r){r.PUT_VALUE="PUT_VALUE",r.GET_VALUE="GET_VALUE",r.ADD_PROVIDER="ADD_PROVIDER",r.GET_PROVIDERS="GET_PROVIDERS",r.FIND_NODE="FIND_NODE",r.PING="PING"})(O||(O={}));var l1;(function(r){r[r.PUT_VALUE=0]="PUT_VALUE",r[r.GET_VALUE=1]="GET_VALUE",r[r.ADD_PROVIDER=2]="ADD_PROVIDER",r[r.GET_PROVIDERS=3]="GET_PROVIDERS",r[r.FIND_NODE=4]="FIND_NODE",r[r.PING=5]="PING"})(l1||(l1={}));(function(r){r.codec=()=>Tr(l1)})(O||(O={}));var Cr;(function(r){r.NOT_CONNECTED="NOT_CONNECTED",r.CONNECTED="CONNECTED",r.CAN_CONNECT="CAN_CONNECT",r.CANNOT_CONNECT="CANNOT_CONNECT"})(Cr||(Cr={}));var Ao;(function(r){r[r.NOT_CONNECTED=0]="NOT_CONNECTED",r[r.CONNECTED=1]="CONNECTED",r[r.CAN_CONNECT=2]="CAN_CONNECT",r[r.CANNOT_CONNECT=3]="CANNOT_CONNECT"})(Ao||(Ao={}));(function(r){r.codec=()=>Tr(Ao)})(Cr||(Cr={}));var _r;(function(r){let e;r.codec=()=>(e==null&&(e=nt((t,n,i={})=>{if(i.lengthDelimited!==!1&&n.fork(),t.id!=null&&t.id.byteLength>0&&(n.uint32(10),n.bytes(t.id)),t.multiaddrs!=null)for(let s of t.multiaddrs)n.uint32(18),n.bytes(s);t.connection!=null&&(n.uint32(24),Cr.codec().encode(t.connection,n)),i.lengthDelimited!==!1&&n.ldelim()},(t,n,i={})=>{let s={id:_e(0),multiaddrs:[]},o=n==null?t.len:t.pos+n;for(;t.pos<o;){let a=t.uint32();switch(a>>>3){case 1:{s.id=t.bytes();break}case 2:{if(i.limits?.multiaddrs!=null&&s.multiaddrs.length===i.limits.multiaddrs)throw new Rr('Decode error - map field "multiaddrs" had too many elements');s.multiaddrs.push(t.bytes());break}case 3:{s.connection=Cr.codec().decode(t);break}default:{t.skipType(a&7);break}}}return s})),e),r.encode=t=>rt(t,r.codec()),r.decode=(t,n)=>tt(t,r.codec(),n)})(_r||(_r={}));var yt;(function(r){let e;r.codec=()=>(e==null&&(e=nt((t,n,i={})=>{if(i.lengthDelimited!==!1&&n.fork(),t.type!=null&&l1[t.type]!==0&&(n.uint32(8),O.codec().encode(t.type,n)),t.clusterLevel!=null&&(n.uint32(80),n.int32(t.clusterLevel)),t.key!=null&&(n.uint32(18),n.bytes(t.key)),t.record!=null&&(n.uint32(26),n.bytes(t.record)),t.closer!=null)for(let s of t.closer)n.uint32(66),_r.codec().encode(s,n);if(t.providers!=null)for(let s of t.providers)n.uint32(74),_r.codec().encode(s,n);i.lengthDelimited!==!1&&n.ldelim()},(t,n,i={})=>{let s={type:O.PUT_VALUE,closer:[],providers:[]},o=n==null?t.len:t.pos+n;for(;t.pos<o;){let a=t.uint32();switch(a>>>3){case 1:{s.type=O.codec().decode(t);break}case 10:{s.clusterLevel=t.int32();break}case 2:{s.key=t.bytes();break}case 3:{s.record=t.bytes();break}case 8:{if(i.limits?.closer!=null&&s.closer.length===i.limits.closer)throw new Rr('Decode error - map field "closer" had too many elements');s.closer.push(_r.codec().decode(t,t.uint32(),{limits:i.limits?.closer$}));break}case 9:{if(i.limits?.providers!=null&&s.providers.length===i.limits.providers)throw new Rr('Decode error - map field "providers" had too many elements');s.providers.push(_r.codec().decode(t,t.uint32(),{limits:i.limits?.providers$}));break}default:{t.skipType(a&7);break}}}return s})),e),r.encode=t=>rt(t,r.codec()),r.decode=(t,n)=>tt(t,r.codec(),n)})(yt||(yt={}));function So(r,e={}){let t={...r,name:"SEND_QUERY",type:0,messageName:r.type,messageType:r.type};return e.onProgress?.(new CustomEvent("kad-dht:query:send-query",{detail:t})),t}function yn(r,e={}){let t={...r,name:"PEER_RESPONSE",type:1,messageName:r.messageType,closer:r.closer??[],providers:r.providers??[]};return e.onProgress?.(new CustomEvent("kad-dht:query:peer-response",{detail:t})),t}function u1(r,e={}){let t={...r,name:"FINAL_PEER",type:2};return e.onProgress?.(new CustomEvent("kad-dht:query:final-peer",{detail:t})),t}function Fe(r,e={}){let t={...r,name:"QUERY_ERROR",type:3};return e.onProgress?.(new CustomEvent("kad-dht:query:query-error",{detail:t})),t}function Bo(r,e={}){let t={...r,name:"PROVIDER",type:4};return e.onProgress?.(new CustomEvent("kad-dht:query:provider",{detail:t})),t}function wn(r,e={}){let t={...r,name:"VALUE",type:5};return e.onProgress?.(new CustomEvent("kad-dht:query:value",{detail:t})),t}function Io(r,e={}){let t={...r,name:"DIAL_PEER",type:7};return e.onProgress?.(new CustomEvent("kad-dht:query:dial-peer",{detail:t})),t}function D(r,e="utf8"){let t=e1[e];if(t==null)throw new Error(`Unsupported encoding "${e}"`);return t.encoder.encode(r).substring(1)}function Y0(r,e,t){if(t.length===0)throw new $("No records given");let i=D(e).split("/");if(i.length<3)throw new $("Record key does not have a selector function");let s=r[i[1].toString()];if(s==null)throw new c1(`No selector function configured for key type "${i[1]}"`);return t.length===1?0:s(e,t)}function u6(r,e){return 0}var X0={pk:u6};function J0(r){if(!Number.isSafeInteger(r)||r<0)throw new Error(`positive integer expected, not ${r}`)}function f6(r){return r instanceof Uint8Array||r!=null&&typeof r=="object"&&r.constructor.name==="Uint8Array"}function Ur(r,...e){if(!f6(r))throw new Error("Uint8Array expected");if(e.length>0&&!e.includes(r.length))throw new Error(`Uint8Array expected of length ${e}, not of length=${r.length}`)}function e3(r){if(typeof r!="function"||typeof r.create!="function")throw new Error("Hash should be wrapped by utils.wrapConstructor");J0(r.outputLen),J0(r.blockLen)}function Dr(r,e=!0){if(r.destroyed)throw new Error("Hash instance has been destroyed");if(e&&r.finished)throw new Error("Hash#digest() has already been called")}function t3(r,e){Ur(r);let t=e.outputLen;if(r.length<t)throw new Error(`digestInto() expects output buffer of length at least ${t}`)}var or=typeof globalThis=="object"&&"crypto"in globalThis?globalThis.crypto:void 0;var f1=r=>new DataView(r.buffer,r.byteOffset,r.byteLength),We=(r,e)=>r<<32-e|r>>>e;var yu=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68;function r3(r){if(typeof r!="string")throw new Error(`utf8ToBytes expected string, got ${typeof r}`);return new Uint8Array(new TextEncoder().encode(r))}function bn(r){return typeof r=="string"&&(r=r3(r)),Ur(r),r}function ko(...r){let e=0;for(let n=0;n<r.length;n++){let i=r[n];Ur(i),e+=i.length}let t=new Uint8Array(e);for(let n=0,i=0;n<r.length;n++){let s=r[n];t.set(s,i),i+=s.length}return t}var Or=class{clone(){return this._cloneInto()}},wu={}.toString;function h1(r){let e=n=>r().update(bn(n)).digest(),t=r();return e.outputLen=t.outputLen,e.blockLen=t.blockLen,e.create=()=>r(),e}function Mr(r=32){if(or&&typeof or.getRandomValues=="function")return or.getRandomValues(new Uint8Array(r));if(or&&typeof or.randomBytes=="function")return or.randomBytes(r);throw new Error("crypto.getRandomValues must be defined")}function h6(r,e,t,n){if(typeof r.setBigUint64=="function")return r.setBigUint64(e,t,n);let i=BigInt(32),s=BigInt(4294967295),o=Number(t>>i&s),a=Number(t&s),c=n?4:0,l=n?0:4;r.setUint32(e+c,o,n),r.setUint32(e+l,a,n)}var n3=(r,e,t)=>r&e^~r&t,i3=(r,e,t)=>r&e^r&t^e&t,Vr=class extends Or{constructor(e,t,n,i){super(),this.blockLen=e,this.outputLen=t,this.padOffset=n,this.isLE=i,this.finished=!1,this.length=0,this.pos=0,this.destroyed=!1,this.buffer=new Uint8Array(e),this.view=f1(this.buffer)}update(e){Dr(this);let{view:t,buffer:n,blockLen:i}=this;e=bn(e);let s=e.length;for(let o=0;o<s;){let a=Math.min(i-this.pos,s-o);if(a===i){let c=f1(e);for(;i<=s-o;o+=i)this.process(c,o);continue}n.set(e.subarray(o,o+a),this.pos),this.pos+=a,o+=a,this.pos===i&&(this.process(t,0),this.pos=0)}return this.length+=e.length,this.roundClean(),this}digestInto(e){Dr(this),t3(e,this),this.finished=!0;let{buffer:t,view:n,blockLen:i,isLE:s}=this,{pos:o}=this;t[o++]=128,this.buffer.subarray(o).fill(0),this.padOffset>i-o&&(this.process(n,0),o=0);for(let f=o;f<i;f++)t[f]=0;h6(n,i-8,BigInt(this.length*8),s),this.process(n,0);let a=f1(e),c=this.outputLen;if(c%4)throw new Error("_sha2: outputLen should be aligned to 32bit");let l=c/4,u=this.get();if(l>u.length)throw new Error("_sha2: outputLen bigger than state");for(let f=0;f<l;f++)a.setUint32(4*f,u[f],s)}digest(){let{buffer:e,outputLen:t}=this;this.digestInto(e);let n=e.slice(0,t);return this.destroy(),n}_cloneInto(e){e||(e=new this.constructor),e.set(...this.get());let{blockLen:t,buffer:n,length:i,finished:s,destroyed:o,pos:a}=this;return e.length=i,e.pos=a,e.finished=s,e.destroyed=o,i%t&&e.buffer.set(n),e}};var d1=BigInt(4294967295),To=BigInt(32);function s3(r,e=!1){return e?{h:Number(r&d1),l:Number(r>>To&d1)}:{h:Number(r>>To&d1)|0,l:Number(r&d1)|0}}function d6(r,e=!1){let t=new Uint32Array(r.length),n=new Uint32Array(r.length);for(let i=0;i<r.length;i++){let{h:s,l:o}=s3(r[i],e);[t[i],n[i]]=[s,o]}return[t,n]}var p6=(r,e)=>BigInt(r>>>0)<<To|BigInt(e>>>0),g6=(r,e,t)=>r>>>t,m6=(r,e,t)=>r<<32-t|e>>>t,y6=(r,e,t)=>r>>>t|e<<32-t,w6=(r,e,t)=>r<<32-t|e>>>t,b6=(r,e,t)=>r<<64-t|e>>>t-32,x6=(r,e,t)=>r>>>t-32|e<<64-t,v6=(r,e)=>e,E6=(r,e)=>r,A6=(r,e,t)=>r<<t|e>>>32-t,S6=(r,e,t)=>e<<t|r>>>32-t,B6=(r,e,t)=>e<<t-32|r>>>64-t,I6=(r,e,t)=>r<<t-32|e>>>64-t;function k6(r,e,t,n){let i=(e>>>0)+(n>>>0);return{h:r+t+(i/2**32|0)|0,l:i|0}}var T6=(r,e,t)=>(r>>>0)+(e>>>0)+(t>>>0),R6=(r,e,t,n)=>e+t+n+(r/2**32|0)|0,P6=(r,e,t,n)=>(r>>>0)+(e>>>0)+(t>>>0)+(n>>>0),N6=(r,e,t,n,i)=>e+t+n+i+(r/2**32|0)|0,L6=(r,e,t,n,i)=>(r>>>0)+(e>>>0)+(t>>>0)+(n>>>0)+(i>>>0),_6=(r,e,t,n,i,s)=>e+t+n+i+s+(r/2**32|0)|0;var C6={fromBig:s3,split:d6,toBig:p6,shrSH:g6,shrSL:m6,rotrSH:y6,rotrSL:w6,rotrBH:b6,rotrBL:x6,rotr32H:v6,rotr32L:E6,rotlSH:A6,rotlSL:S6,rotlBH:B6,rotlBL:I6,add:k6,add3L:T6,add3H:R6,add4L:P6,add4H:N6,add5H:_6,add5L:L6},U=C6;var[U6,D6]=U.split(["0x428a2f98d728ae22","0x7137449123ef65cd","0xb5c0fbcfec4d3b2f","0xe9b5dba58189dbbc","0x3956c25bf348b538","0x59f111f1b605d019","0x923f82a4af194f9b","0xab1c5ed5da6d8118","0xd807aa98a3030242","0x12835b0145706fbe","0x243185be4ee4b28c","0x550c7dc3d5ffb4e2","0x72be5d74f27b896f","0x80deb1fe3b1696b1","0x9bdc06a725c71235","0xc19bf174cf692694","0xe49b69c19ef14ad2","0xefbe4786384f25e3","0x0fc19dc68b8cd5b5","0x240ca1cc77ac9c65","0x2de92c6f592b0275","0x4a7484aa6ea6e483","0x5cb0a9dcbd41fbd4","0x76f988da831153b5","0x983e5152ee66dfab","0xa831c66d2db43210","0xb00327c898fb213f","0xbf597fc7beef0ee4","0xc6e00bf33da88fc2","0xd5a79147930aa725","0x06ca6351e003826f","0x142929670a0e6e70","0x27b70a8546d22ffc","0x2e1b21385c26c926","0x4d2c6dfc5ac42aed","0x53380d139d95b3df","0x650a73548baf63de","0x766a0abb3c77b2a8","0x81c2c92e47edaee6","0x92722c851482353b","0xa2bfe8a14cf10364","0xa81a664bbc423001","0xc24b8b70d0f89791","0xc76c51a30654be30","0xd192e819d6ef5218","0xd69906245565a910","0xf40e35855771202a","0x106aa07032bbd1b8","0x19a4c116b8d2d0c8","0x1e376c085141ab53","0x2748774cdf8eeb99","0x34b0bcb5e19b48a8","0x391c0cb3c5c95a63","0x4ed8aa4ae3418acb","0x5b9cca4f7763e373","0x682e6ff3d6b2b8a3","0x748f82ee5defb2fc","0x78a5636f43172f60","0x84c87814a1f0ab72","0x8cc702081a6439ec","0x90befffa23631e28","0xa4506cebde82bde9","0xbef9a3f7b2c67915","0xc67178f2e372532b","0xca273eceea26619c","0xd186b8c721c0c207","0xeada7dd6cde0eb1e","0xf57d4f7fee6ed178","0x06f067aa72176fba","0x0a637dc5a2c898a6","0x113f9804bef90dae","0x1b710b35131c471b","0x28db77f523047d84","0x32caab7b40c72493","0x3c9ebe0a15c9bebc","0x431d67c49c100d4c","0x4cc5d4becb3e42b6","0x597f299cfc657e2a","0x5fcb6fab3ad6faec","0x6c44198c4a475817"].map(r=>BigInt(r))),Mt=new Uint32Array(80),Vt=new Uint32Array(80),Ro=class extends Vr{constructor(){super(128,64,16,!1),this.Ah=1779033703,this.Al=-205731576,this.Bh=-1150833019,this.Bl=-2067093701,this.Ch=1013904242,this.Cl=-23791573,this.Dh=-1521486534,this.Dl=1595750129,this.Eh=1359893119,this.El=-1377402159,this.Fh=-1694144372,this.Fl=725511199,this.Gh=528734635,this.Gl=-79577749,this.Hh=1541459225,this.Hl=327033209}get(){let{Ah:e,Al:t,Bh:n,Bl:i,Ch:s,Cl:o,Dh:a,Dl:c,Eh:l,El:u,Fh:f,Fl:h,Gh:p,Gl:y,Hh:w,Hl:d}=this;return[e,t,n,i,s,o,a,c,l,u,f,h,p,y,w,d]}set(e,t,n,i,s,o,a,c,l,u,f,h,p,y,w,d){this.Ah=e|0,this.Al=t|0,this.Bh=n|0,this.Bl=i|0,this.Ch=s|0,this.Cl=o|0,this.Dh=a|0,this.Dl=c|0,this.Eh=l|0,this.El=u|0,this.Fh=f|0,this.Fl=h|0,this.Gh=p|0,this.Gl=y|0,this.Hh=w|0,this.Hl=d|0}process(e,t){for(let g=0;g<16;g++,t+=4)Mt[g]=e.getUint32(t),Vt[g]=e.getUint32(t+=4);for(let g=16;g<80;g++){let A=Mt[g-15]|0,R=Vt[g-15]|0,T=U.rotrSH(A,R,1)^U.rotrSH(A,R,8)^U.shrSH(A,R,7),I=U.rotrSL(A,R,1)^U.rotrSL(A,R,8)^U.shrSL(A,R,7),k=Mt[g-2]|0,L=Vt[g-2]|0,ae=U.rotrSH(k,L,19)^U.rotrBH(k,L,61)^U.shrSH(k,L,6),K=U.rotrSL(k,L,19)^U.rotrBL(k,L,61)^U.shrSL(k,L,6),M=U.add4L(I,K,Vt[g-7],Vt[g-16]),ce=U.add4H(M,T,ae,Mt[g-7],Mt[g-16]);Mt[g]=ce|0,Vt[g]=M|0}let{Ah:n,Al:i,Bh:s,Bl:o,Ch:a,Cl:c,Dh:l,Dl:u,Eh:f,El:h,Fh:p,Fl:y,Gh:w,Gl:d,Hh:x,Hl:E}=this;for(let g=0;g<80;g++){let A=U.rotrSH(f,h,14)^U.rotrSH(f,h,18)^U.rotrBH(f,h,41),R=U.rotrSL(f,h,14)^U.rotrSL(f,h,18)^U.rotrBL(f,h,41),T=f&p^~f&w,I=h&y^~h&d,k=U.add5L(E,R,I,D6[g],Vt[g]),L=U.add5H(k,x,A,T,U6[g],Mt[g]),ae=k|0,K=U.rotrSH(n,i,28)^U.rotrBH(n,i,34)^U.rotrBH(n,i,39),M=U.rotrSL(n,i,28)^U.rotrBL(n,i,34)^U.rotrBL(n,i,39),ce=n&s^n&a^s&a,S=i&o^i&c^o&c;x=w|0,E=d|0,w=p|0,d=y|0,p=f|0,y=h|0,{h:f,l:h}=U.add(l|0,u|0,L|0,ae|0),l=a|0,u=c|0,a=s|0,c=o|0,s=n|0,o=i|0;let P=U.add3L(ae,M,S);n=U.add3H(P,L,K,ce),i=P|0}({h:n,l:i}=U.add(this.Ah|0,this.Al|0,n|0,i|0)),{h:s,l:o}=U.add(this.Bh|0,this.Bl|0,s|0,o|0),{h:a,l:c}=U.add(this.Ch|0,this.Cl|0,a|0,c|0),{h:l,l:u}=U.add(this.Dh|0,this.Dl|0,l|0,u|0),{h:f,l:h}=U.add(this.Eh|0,this.El|0,f|0,h|0),{h:p,l:y}=U.add(this.Fh|0,this.Fl|0,p|0,y|0),{h:w,l:d}=U.add(this.Gh|0,this.Gl|0,w|0,d|0),{h:x,l:E}=U.add(this.Hh|0,this.Hl|0,x|0,E|0),this.set(n,i,s,o,a,c,l,u,f,h,p,y,w,d,x,E)}roundClean(){Mt.fill(0),Vt.fill(0)}destroy(){this.buffer.fill(0),this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)}};var o3=h1(()=>new Ro);var g1={};ke(g1,{aInRange:()=>Ce,abool:()=>Qe,abytes:()=>Fr,bitGet:()=>q6,bitLen:()=>Co,bitMask:()=>vn,bitSet:()=>K6,bytesToHex:()=>bt,bytesToNumberBE:()=>xt,bytesToNumberLE:()=>Ht,concatBytes:()=>vt,createHmacDrbg:()=>Uo,ensureBytes:()=>ie,equalBytes:()=>F6,hexToBytes:()=>cr,hexToNumber:()=>_o,inRange:()=>xn,isBytes:()=>Ft,memoized:()=>ur,notImplemented:()=>z6,numberToBytesBE:()=>qt,numberToBytesLE:()=>lr,numberToHexUnpadded:()=>ar,numberToVarBytesBE:()=>V6,utf8ToBytes:()=>H6,validateObject:()=>it});var Lo=BigInt(0),p1=BigInt(1),O6=BigInt(2);function Ft(r){return r instanceof Uint8Array||r!=null&&typeof r=="object"&&r.constructor.name==="Uint8Array"}function Fr(r){if(!Ft(r))throw new Error("Uint8Array expected")}function Qe(r,e){if(typeof e!="boolean")throw new Error(`${r} must be valid boolean, got "${e}".`)}var M6=Array.from({length:256},(r,e)=>e.toString(16).padStart(2,"0"));function bt(r){Fr(r);let e="";for(let t=0;t<r.length;t++)e+=M6[r[t]];return e}function ar(r){let e=r.toString(16);return e.length&1?`0${e}`:e}function _o(r){if(typeof r!="string")throw new Error("hex string expected, got "+typeof r);return BigInt(r===""?"0":`0x${r}`)}var wt={_0:48,_9:57,_A:65,_F:70,_a:97,_f:102};function a3(r){if(r>=wt._0&&r<=wt._9)return r-wt._0;if(r>=wt._A&&r<=wt._F)return r-(wt._A-10);if(r>=wt._a&&r<=wt._f)return r-(wt._a-10)}function cr(r){if(typeof r!="string")throw new Error("hex string expected, got "+typeof r);let e=r.length,t=e/2;if(e%2)throw new Error("padded hex string expected, got unpadded hex of length "+e);let n=new Uint8Array(t);for(let i=0,s=0;i<t;i++,s+=2){let o=a3(r.charCodeAt(s)),a=a3(r.charCodeAt(s+1));if(o===void 0||a===void 0){let c=r[s]+r[s+1];throw new Error('hex string expected, got non-hex character "'+c+'" at index '+s)}n[i]=o*16+a}return n}function xt(r){return _o(bt(r))}function Ht(r){return Fr(r),_o(bt(Uint8Array.from(r).reverse()))}function qt(r,e){return cr(r.toString(16).padStart(e*2,"0"))}function lr(r,e){return qt(r,e).reverse()}function V6(r){return cr(ar(r))}function ie(r,e,t){let n;if(typeof e=="string")try{n=cr(e)}catch(s){throw new Error(`${r} must be valid hex string, got "${e}". Cause: ${s}`)}else if(Ft(e))n=Uint8Array.from(e);else throw new Error(`${r} must be hex string or Uint8Array`);let i=n.length;if(typeof t=="number"&&i!==t)throw new Error(`${r} expected ${t} bytes, got ${i}`);return n}function vt(...r){let e=0;for(let n=0;n<r.length;n++){let i=r[n];Fr(i),e+=i.length}let t=new Uint8Array(e);for(let n=0,i=0;n<r.length;n++){let s=r[n];t.set(s,i),i+=s.length}return t}function F6(r,e){if(r.length!==e.length)return!1;let t=0;for(let n=0;n<r.length;n++)t|=r[n]^e[n];return t===0}function H6(r){if(typeof r!="string")throw new Error(`utf8ToBytes expected string, got ${typeof r}`);return new Uint8Array(new TextEncoder().encode(r))}var Po=r=>typeof r=="bigint"&&Lo<=r;function xn(r,e,t){return Po(r)&&Po(e)&&Po(t)&&e<=r&&r<t}function Ce(r,e,t,n){if(!xn(e,t,n))throw new Error(`expected valid ${r}: ${t} <= n < ${n}, got ${typeof e} ${e}`)}function Co(r){let e;for(e=0;r>Lo;r>>=p1,e+=1);return e}function q6(r,e){return r>>BigInt(e)&p1}function K6(r,e,t){return r|(t?p1:Lo)<<BigInt(e)}var vn=r=>(O6<<BigInt(r-1))-p1,No=r=>new Uint8Array(r),c3=r=>Uint8Array.from(r);function Uo(r,e,t){if(typeof r!="number"||r<2)throw new Error("hashLen must be a number");if(typeof e!="number"||e<2)throw new Error("qByteLen must be a number");if(typeof t!="function")throw new Error("hmacFn must be a function");let n=No(r),i=No(r),s=0,o=()=>{n.fill(1),i.fill(0),s=0},a=(...f)=>t(i,n,...f),c=(f=No())=>{i=a(c3([0]),f),n=a(),f.length!==0&&(i=a(c3([1]),f),n=a())},l=()=>{if(s++>=1e3)throw new Error("drbg: tried 1000 values");let f=0,h=[];for(;f<e;){n=a();let p=n.slice();h.push(p),f+=n.length}return vt(...h)};return(f,h)=>{o(),c(f);let p;for(;!(p=h(l()));)c();return o(),p}}var $6={bigint:r=>typeof r=="bigint",function:r=>typeof r=="function",boolean:r=>typeof r=="boolean",string:r=>typeof r=="string",stringOrUint8Array:r=>typeof r=="string"||Ft(r),isSafeInteger:r=>Number.isSafeInteger(r),array:r=>Array.isArray(r),field:(r,e)=>e.Fp.isValid(r),hash:r=>typeof r=="function"&&Number.isSafeInteger(r.outputLen)};function it(r,e,t={}){let n=(i,s,o)=>{let a=$6[s];if(typeof a!="function")throw new Error(`Invalid validator "${s}", expected function`);let c=r[i];if(!(o&&c===void 0)&&!a(c,r))throw new Error(`Invalid param ${String(i)}=${c} (${typeof c}), expected ${s}`)};for(let[i,s]of Object.entries(e))n(i,s,!1);for(let[i,s]of Object.entries(t))n(i,s,!0);return r}var z6=()=>{throw new Error("not implemented")};function ur(r){let e=new WeakMap;return(t,...n)=>{let i=e.get(t);if(i!==void 0)return i;let s=r(t,...n);return e.set(t,s),s}}var fe=BigInt(0),J=BigInt(1),fr=BigInt(2),G6=BigInt(3),Do=BigInt(4),l3=BigInt(5),u3=BigInt(8),j6=BigInt(9),W6=BigInt(16);function W(r,e){let t=r%e;return t>=fe?t:e+t}function Q6(r,e,t){if(t<=fe||e<fe)throw new Error("Expected power/modulo > 0");if(t===J)return fe;let n=J;for(;e>fe;)e&J&&(n=n*r%t),r=r*r%t,e>>=J;return n}function ee(r,e,t){let n=r;for(;e-- >fe;)n*=n,n%=t;return n}function m1(r,e){if(r===fe||e<=fe)throw new Error(`invert: expected positive integers, got n=${r} mod=${e}`);let t=W(r,e),n=e,i=fe,s=J,o=J,a=fe;for(;t!==fe;){let l=n/t,u=n%t,f=i-o*l,h=s-a*l;n=t,t=u,i=o,s=a,o=f,a=h}if(n!==J)throw new Error("invert: does not exist");return W(i,e)}function Z6(r){let e=(r-J)/fr,t,n,i;for(t=r-J,n=0;t%fr===fe;t/=fr,n++);for(i=fr;i<r&&Q6(i,e,r)!==r-J;i++);if(n===1){let o=(r+J)/Do;return function(c,l){let u=c.pow(l,o);if(!c.eql(c.sqr(u),l))throw new Error("Cannot find square root");return u}}let s=(t+J)/fr;return function(a,c){if(a.pow(c,e)===a.neg(a.ONE))throw new Error("Cannot find square root");let l=n,u=a.pow(a.mul(a.ONE,i),t),f=a.pow(c,s),h=a.pow(c,t);for(;!a.eql(h,a.ONE);){if(a.eql(h,a.ZERO))return a.ZERO;let p=1;for(let w=a.sqr(h);p<l&&!a.eql(w,a.ONE);p++)w=a.sqr(w);let y=a.pow(u,J<<BigInt(l-p-1));u=a.sqr(y),f=a.mul(f,y),h=a.mul(h,u),l=p}return f}}function Y6(r){if(r%Do===G6){let e=(r+J)/Do;return function(n,i){let s=n.pow(i,e);if(!n.eql(n.sqr(s),i))throw new Error("Cannot find square root");return s}}if(r%u3===l3){let e=(r-l3)/u3;return function(n,i){let s=n.mul(i,fr),o=n.pow(s,e),a=n.mul(i,o),c=n.mul(n.mul(a,fr),o),l=n.mul(a,n.sub(c,n.ONE));if(!n.eql(n.sqr(l),i))throw new Error("Cannot find square root");return l}}return r%W6,Z6(r)}var f3=(r,e)=>(W(r,e)&J)===J,X6=["create","isValid","is0","neg","inv","sqrt","sqr","eql","add","sub","mul","pow","div","addN","subN","mulN","sqrN"];function Oo(r){let e={ORDER:"bigint",MASK:"bigint",BYTES:"isSafeInteger",BITS:"isSafeInteger"},t=X6.reduce((n,i)=>(n[i]="function",n),e);return it(r,t)}function J6(r,e,t){if(t<fe)throw new Error("Expected power > 0");if(t===fe)return r.ONE;if(t===J)return e;let n=r.ONE,i=e;for(;t>fe;)t&J&&(n=r.mul(n,i)),i=r.sqr(i),t>>=J;return n}function e8(r,e){let t=new Array(e.length),n=e.reduce((s,o,a)=>r.is0(o)?s:(t[a]=s,r.mul(s,o)),r.ONE),i=r.inv(n);return e.reduceRight((s,o,a)=>r.is0(o)?s:(t[a]=r.mul(s,t[a]),r.mul(s,o)),i),t}function Mo(r,e){let t=e!==void 0?e:r.toString(2).length,n=Math.ceil(t/8);return{nBitLength:t,nByteLength:n}}function Kt(r,e,t=!1,n={}){if(r<=fe)throw new Error(`Expected Field ORDER > 0, got ${r}`);let{nBitLength:i,nByteLength:s}=Mo(r,e);if(s>2048)throw new Error("Field lengths over 2048 bytes are not supported");let o=Y6(r),a=Object.freeze({ORDER:r,BITS:i,BYTES:s,MASK:vn(i),ZERO:fe,ONE:J,create:c=>W(c,r),isValid:c=>{if(typeof c!="bigint")throw new Error(`Invalid field element: expected bigint, got ${typeof c}`);return fe<=c&&c<r},is0:c=>c===fe,isOdd:c=>(c&J)===J,neg:c=>W(-c,r),eql:(c,l)=>c===l,sqr:c=>W(c*c,r),add:(c,l)=>W(c+l,r),sub:(c,l)=>W(c-l,r),mul:(c,l)=>W(c*l,r),pow:(c,l)=>J6(a,c,l),div:(c,l)=>W(c*m1(l,r),r),sqrN:c=>c*c,addN:(c,l)=>c+l,subN:(c,l)=>c-l,mulN:(c,l)=>c*l,inv:c=>m1(c,r),sqrt:n.sqrt||(c=>o(a,c)),invertBatch:c=>e8(a,c),cmov:(c,l,u)=>u?l:c,toBytes:c=>t?lr(c,s):qt(c,s),fromBytes:c=>{if(c.length!==s)throw new Error(`Fp.fromBytes: expected ${s}, got ${c.length}`);return t?Ht(c):xt(c)}});return Object.freeze(a)}function h3(r){if(typeof r!="bigint")throw new Error("field order must be bigint");let e=r.toString(2).length;return Math.ceil(e/8)}function Vo(r){let e=h3(r);return e+Math.ceil(e/2)}function d3(r,e,t=!1){let n=r.length,i=h3(e),s=Vo(e);if(n<16||n<s||n>1024)throw new Error(`expected ${s}-1024 bytes of input, got ${n}`);let o=t?xt(r):Ht(r),a=W(o,e-J)+J;return t?lr(a,i):qt(a,i)}var r8=BigInt(0),Fo=BigInt(1),Ho=new WeakMap,p3=new WeakMap;function y1(r,e){let t=(s,o)=>{let a=o.negate();return s?a:o},n=s=>{if(!Number.isSafeInteger(s)||s<=0||s>e)throw new Error(`Wrong window size=${s}, should be [1..${e}]`)},i=s=>{n(s);let o=Math.ceil(e/s)+1,a=2**(s-1);return{windows:o,windowSize:a}};return{constTimeNegate:t,unsafeLadder(s,o){let a=r.ZERO,c=s;for(;o>r8;)o&Fo&&(a=a.add(c)),c=c.double(),o>>=Fo;return a},precomputeWindow(s,o){let{windows:a,windowSize:c}=i(o),l=[],u=s,f=u;for(let h=0;h<a;h++){f=u,l.push(f);for(let p=1;p<c;p++)f=f.add(u),l.push(f);u=f.double()}return l},wNAF(s,o,a){let{windows:c,windowSize:l}=i(s),u=r.ZERO,f=r.BASE,h=BigInt(2**s-1),p=2**s,y=BigInt(s);for(let w=0;w<c;w++){let d=w*l,x=Number(a&h);a>>=y,x>l&&(x-=p,a+=Fo);let E=d,g=d+Math.abs(x)-1,A=w%2!==0,R=x<0;x===0?f=f.add(t(A,o[E])):u=u.add(t(R,o[g]))}return{p:u,f}},wNAFCached(s,o,a){let c=p3.get(s)||1,l=Ho.get(s);return l||(l=this.precomputeWindow(s,c),c!==1&&Ho.set(s,a(l))),this.wNAF(c,l,o)},setWindowSize(s,o){n(o),p3.set(s,o),Ho.delete(s)}}}function w1(r,e,t,n){if(!Array.isArray(t)||!Array.isArray(n)||n.length!==t.length)throw new Error("arrays of points and scalars must have equal length");n.forEach((u,f)=>{if(!e.isValid(u))throw new Error(`wrong scalar at index ${f}`)}),t.forEach((u,f)=>{if(!(u instanceof r))throw new Error(`wrong point at index ${f}`)});let i=Co(BigInt(t.length)),s=i>12?i-3:i>4?i-2:i?2:1,o=(1<<s)-1,a=new Array(o+1).fill(r.ZERO),c=Math.floor((e.BITS-1)/s)*s,l=r.ZERO;for(let u=c;u>=0;u-=s){a.fill(r.ZERO);for(let h=0;h<n.length;h++){let p=n[h],y=Number(p>>BigInt(u)&BigInt(o));a[y]=a[y].add(t[h])}let f=r.ZERO;for(let h=a.length-1,p=r.ZERO;h>0;h--)p=p.add(a[h]),f=f.add(p);if(l=l.add(f),u!==0)for(let h=0;h<s;h++)l=l.double()}return l}function En(r){return Oo(r.Fp),it(r,{n:"bigint",h:"bigint",Gx:"field",Gy:"field"},{nBitLength:"isSafeInteger",nByteLength:"isSafeInteger"}),Object.freeze({...Mo(r.n,r.nBitLength),...r,p:r.Fp.ORDER})}var Ze=BigInt(0),Ue=BigInt(1),b1=BigInt(2),n8=BigInt(8),i8={zip215:!0};function s8(r){let e=En(r);return it(r,{hash:"function",a:"bigint",d:"bigint",randomBytes:"function"},{adjustScalarBytes:"function",domain:"function",uvRatio:"function",mapToCurve:"function"}),Object.freeze({...e})}function g3(r){let e=s8(r),{Fp:t,n,prehash:i,hash:s,randomBytes:o,nByteLength:a,h:c}=e,l=b1<<BigInt(a*8)-Ue,u=t.create,f=Kt(e.n,e.nBitLength),h=e.uvRatio||((b,m)=>{try{return{isValid:!0,value:t.sqrt(b*t.inv(m))}}catch{return{isValid:!1,value:Ze}}}),p=e.adjustScalarBytes||(b=>b),y=e.domain||((b,m,v)=>{if(Qe("phflag",v),m.length||v)throw new Error("Contexts/pre-hash are not supported");return b});function w(b,m){Ce("coordinate "+b,m,Ze,l)}function d(b){if(!(b instanceof g))throw new Error("ExtendedPoint expected")}let x=ur((b,m)=>{let{ex:v,ey:N,ez:_}=b,C=b.is0();m==null&&(m=C?n8:t.inv(_));let V=u(v*m),q=u(N*m),F=u(_*m);if(C)return{x:Ze,y:Ue};if(F!==Ue)throw new Error("invZ was invalid");return{x:V,y:q}}),E=ur(b=>{let{a:m,d:v}=e;if(b.is0())throw new Error("bad point: ZERO");let{ex:N,ey:_,ez:C,et:V}=b,q=u(N*N),F=u(_*_),j=u(C*C),Z=u(j*j),de=u(q*m),pe=u(j*u(de+F)),we=u(Z+u(v*u(q*F)));if(pe!==we)throw new Error("bad point: equation left != right (1)");let Ie=u(N*_),le=u(C*V);if(Ie!==le)throw new Error("bad point: equation left != right (2)");return!0});class g{constructor(m,v,N,_){this.ex=m,this.ey=v,this.ez=N,this.et=_,w("x",m),w("y",v),w("z",N),w("t",_),Object.freeze(this)}get x(){return this.toAffine().x}get y(){return this.toAffine().y}static fromAffine(m){if(m instanceof g)throw new Error("extended point not allowed");let{x:v,y:N}=m||{};return w("x",v),w("y",N),new g(v,N,Ue,u(v*N))}static normalizeZ(m){let v=t.invertBatch(m.map(N=>N.ez));return m.map((N,_)=>N.toAffine(v[_])).map(g.fromAffine)}static msm(m,v){return w1(g,f,m,v)}_setWindowSize(m){T.setWindowSize(this,m)}assertValidity(){E(this)}equals(m){d(m);let{ex:v,ey:N,ez:_}=this,{ex:C,ey:V,ez:q}=m,F=u(v*q),j=u(C*_),Z=u(N*q),de=u(V*_);return F===j&&Z===de}is0(){return this.equals(g.ZERO)}negate(){return new g(u(-this.ex),this.ey,this.ez,u(-this.et))}double(){let{a:m}=e,{ex:v,ey:N,ez:_}=this,C=u(v*v),V=u(N*N),q=u(b1*u(_*_)),F=u(m*C),j=v+N,Z=u(u(j*j)-C-V),de=F+V,pe=de-q,we=F-V,Ie=u(Z*pe),le=u(de*we),Pe=u(Z*we),ut=u(pe*de);return new g(Ie,le,ut,Pe)}add(m){d(m);let{a:v,d:N}=e,{ex:_,ey:C,ez:V,et:q}=this,{ex:F,ey:j,ez:Z,et:de}=m;if(v===BigInt(-1)){let _2=u((C-_)*(j+F)),C2=u((C+_)*(j-F)),ys=u(C2-_2);if(ys===Ze)return this.double();let U2=u(V*b1*de),D2=u(q*b1*Z),O2=D2+U2,M2=C2+_2,V2=D2-U2,v4=u(O2*ys),E4=u(M2*V2),A4=u(O2*V2),S4=u(ys*M2);return new g(v4,E4,S4,A4)}let pe=u(_*F),we=u(C*j),Ie=u(q*N*de),le=u(V*Z),Pe=u((_+C)*(F+j)-pe-we),ut=le-Ie,tn=le+Ie,rn=u(we-v*pe),y4=u(Pe*ut),w4=u(tn*rn),b4=u(Pe*rn),x4=u(ut*tn);return new g(y4,w4,x4,b4)}subtract(m){return this.add(m.negate())}wNAF(m){return T.wNAFCached(this,m,g.normalizeZ)}multiply(m){let v=m;Ce("scalar",v,Ue,n);let{p:N,f:_}=this.wNAF(v);return g.normalizeZ([N,_])[0]}multiplyUnsafe(m){let v=m;return Ce("scalar",v,Ze,n),v===Ze?R:this.equals(R)||v===Ue?this:this.equals(A)?this.wNAF(v).p:T.unsafeLadder(this,v)}isSmallOrder(){return this.multiplyUnsafe(c).is0()}isTorsionFree(){return T.unsafeLadder(this,n).is0()}toAffine(m){return x(this,m)}clearCofactor(){let{h:m}=e;return m===Ue?this:this.multiplyUnsafe(m)}static fromHex(m,v=!1){let{d:N,a:_}=e,C=t.BYTES;m=ie("pointHex",m,C),Qe("zip215",v);let V=m.slice(),q=m[C-1];V[C-1]=q&-129;let F=Ht(V),j=v?l:t.ORDER;Ce("pointHex.y",F,Ze,j);let Z=u(F*F),de=u(Z-Ue),pe=u(N*Z-_),{isValid:we,value:Ie}=h(de,pe);if(!we)throw new Error("Point.fromHex: invalid y coordinate");let le=(Ie&Ue)===Ue,Pe=(q&128)!==0;if(!v&&Ie===Ze&&Pe)throw new Error("Point.fromHex: x=0 and x_0=1");return Pe!==le&&(Ie=u(-Ie)),g.fromAffine({x:Ie,y:F})}static fromPrivateKey(m){return L(m).point}toRawBytes(){let{x:m,y:v}=this.toAffine(),N=lr(v,t.BYTES);return N[N.length-1]|=m&Ue?128:0,N}toHex(){return bt(this.toRawBytes())}}g.BASE=new g(e.Gx,e.Gy,Ue,u(e.Gx*e.Gy)),g.ZERO=new g(Ze,Ue,Ue,Ze);let{BASE:A,ZERO:R}=g,T=y1(g,a*8);function I(b){return W(b,n)}function k(b){return I(Ht(b))}function L(b){let m=a;b=ie("private key",b,m);let v=ie("hashed private key",s(b),2*m),N=p(v.slice(0,m)),_=v.slice(m,2*m),C=k(N),V=A.multiply(C),q=V.toRawBytes();return{head:N,prefix:_,scalar:C,point:V,pointBytes:q}}function ae(b){return L(b).pointBytes}function K(b=new Uint8Array,...m){let v=vt(...m);return k(s(y(v,ie("context",b),!!i)))}function M(b,m,v={}){b=ie("message",b),i&&(b=i(b));let{prefix:N,scalar:_,pointBytes:C}=L(m),V=K(v.context,N,b),q=A.multiply(V).toRawBytes(),F=K(v.context,q,C,b),j=I(V+F*_);Ce("signature.s",j,Ze,n);let Z=vt(q,lr(j,t.BYTES));return ie("result",Z,a*2)}let ce=i8;function S(b,m,v,N=ce){let{context:_,zip215:C}=N,V=t.BYTES;b=ie("signature",b,2*V),m=ie("message",m),C!==void 0&&Qe("zip215",C),i&&(m=i(m));let q=Ht(b.slice(V,2*V)),F,j,Z;try{F=g.fromHex(v,C),j=g.fromHex(b.slice(0,V),C),Z=A.multiplyUnsafe(q)}catch{return!1}if(!C&&F.isSmallOrder())return!1;let de=K(_,j.toRawBytes(),F.toRawBytes(),m);return j.add(F.multiplyUnsafe(de)).subtract(Z).clearCofactor().equals(g.ZERO)}return A._setWindowSize(8),{CURVE:e,getPublicKey:ae,sign:M,verify:S,ExtendedPoint:g,utils:{getExtendedPublicKey:L,randomPrivateKey:()=>o(t.BYTES),precompute(b=8,m=g.BASE){return m._setWindowSize(b),m.multiply(BigInt(3)),m}}}}var qo=BigInt("57896044618658097711785492504343953926634992332820282019728792003956564819949"),m3=BigInt("19681161376707505956807079304988542015446066515923890162744021073123829784752"),Hu=BigInt(0),o8=BigInt(1),y3=BigInt(2),qu=BigInt(3),a8=BigInt(5),c8=BigInt(8);function l8(r){let e=BigInt(10),t=BigInt(20),n=BigInt(40),i=BigInt(80),s=qo,a=r*r%s*r%s,c=ee(a,y3,s)*a%s,l=ee(c,o8,s)*r%s,u=ee(l,a8,s)*l%s,f=ee(u,e,s)*u%s,h=ee(f,t,s)*f%s,p=ee(h,n,s)*h%s,y=ee(p,i,s)*p%s,w=ee(y,i,s)*p%s,d=ee(w,e,s)*u%s;return{pow_p_5_8:ee(d,y3,s)*r%s,b2:a}}function u8(r){return r[0]&=248,r[31]&=127,r[31]|=64,r}function f8(r,e){let t=qo,n=W(e*e*e,t),i=W(n*n*e,t),s=l8(r*i).pow_p_5_8,o=W(r*n*s,t),a=W(e*o*o,t),c=o,l=W(o*m3,t),u=a===r,f=a===W(-r,t),h=a===W(-r*m3,t);return u&&(o=c),(f||h)&&(o=l),f3(o,t)&&(o=W(-o,t)),{isValid:u||f,value:o}}var h8=Kt(qo,void 0,!0),d8={a:BigInt(-1),d:BigInt("37095705934669439343138083508754565189542113879843219016388785533085940283555"),Fp:h8,n:BigInt("7237005577332262213973186563042994240857116359379907606001950938285454250989"),h:c8,Gx:BigInt("15112221349535400772501151409588531511454012693041857206046113283949847762202"),Gy:BigInt("46316835694926478169428394003475163141307993866256225615783033603165251855960"),hash:o3,randomBytes:Mr,adjustScalarBytes:u8,uvRatio:f8},w3=g3(d8);var x1=32;function b3(r,e,t){return w3.verify(e,t instanceof Uint8Array?t:t.subarray(),r)}var v1=class{type="Ed25519";raw;constructor(e){this.raw=Ko(e,x1)}toMultihash(){return gt.digest(Hr(this))}toCID(){return re.createV1(114,this.toMultihash())}toString(){return Y.encode(this.toMultihash().bytes).substring(1)}equals(e){return e==null||!(e.raw instanceof Uint8Array)?!1:X(this.raw,e.raw)}verify(e,t){return b3(this.raw,t,e)}};function $o(r){return r=Ko(r,x1),new v1(r)}function Ko(r,e){if(r=Uint8Array.from(r??[]),r.length!==e)throw new $(`Key must be a Uint8Array of length ${e}, got ${r.length}`);return r}var he;(function(r){r.RSA="RSA",r.Ed25519="Ed25519",r.secp256k1="secp256k1"})(he||(he={}));var zo;(function(r){r[r.RSA=0]="RSA",r[r.Ed25519=1]="Ed25519",r[r.secp256k1=2]="secp256k1"})(zo||(zo={}));(function(r){r.codec=()=>Tr(zo)})(he||(he={}));var st;(function(r){let e;r.codec=()=>(e==null&&(e=nt((t,n,i={})=>{i.lengthDelimited!==!1&&n.fork(),t.Type!=null&&(n.uint32(8),he.codec().encode(t.Type,n)),t.Data!=null&&(n.uint32(18),n.bytes(t.Data)),i.lengthDelimited!==!1&&n.ldelim()},(t,n,i={})=>{let s={},o=n==null?t.len:t.pos+n;for(;t.pos<o;){let a=t.uint32();switch(a>>>3){case 1:{s.Type=he.codec().decode(t);break}case 2:{s.Data=t.bytes();break}default:{t.skipType(a&7);break}}}return s})),e),r.encode=t=>rt(t,r.codec()),r.decode=(t,n)=>tt(t,r.codec(),n)})(st||(st={}));var Go;(function(r){let e;r.codec=()=>(e==null&&(e=nt((t,n,i={})=>{i.lengthDelimited!==!1&&n.fork(),t.Type!=null&&(n.uint32(8),he.codec().encode(t.Type,n)),t.Data!=null&&(n.uint32(18),n.bytes(t.Data)),i.lengthDelimited!==!1&&n.ldelim()},(t,n,i={})=>{let s={},o=n==null?t.len:t.pos+n;for(;t.pos<o;){let a=t.uint32();switch(a>>>3){case 1:{s.Type=he.codec().decode(t);break}case 2:{s.Data=t.bytes();break}default:{t.skipType(a&7);break}}}return s})),e),r.encode=t=>rt(t,r.codec()),r.decode=(t,n)=>tt(t,r.codec(),n)})(Go||(Go={}));var Ln={};ke(Ln,{MAX_RSA_KEY_SIZE:()=>di,generateRSAKeyPair:()=>ya,jwkToJWKKeyPair:()=>wa,jwkToPkcs1:()=>P8,jwkToPkix:()=>t2,jwkToRSAPrivateKey:()=>ma,pkcs1ToJwk:()=>da,pkcs1ToRSAPrivateKey:()=>ga,pkixToJwk:()=>pa,pkixToRSAPublicKey:()=>r2});var g8=new Uint32Array([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]),$t=new Uint32Array([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),zt=new Uint32Array(64),jo=class extends Vr{constructor(){super(64,32,8,!1),this.A=$t[0]|0,this.B=$t[1]|0,this.C=$t[2]|0,this.D=$t[3]|0,this.E=$t[4]|0,this.F=$t[5]|0,this.G=$t[6]|0,this.H=$t[7]|0}get(){let{A:e,B:t,C:n,D:i,E:s,F:o,G:a,H:c}=this;return[e,t,n,i,s,o,a,c]}set(e,t,n,i,s,o,a,c){this.A=e|0,this.B=t|0,this.C=n|0,this.D=i|0,this.E=s|0,this.F=o|0,this.G=a|0,this.H=c|0}process(e,t){for(let f=0;f<16;f++,t+=4)zt[f]=e.getUint32(t,!1);for(let f=16;f<64;f++){let h=zt[f-15],p=zt[f-2],y=We(h,7)^We(h,18)^h>>>3,w=We(p,17)^We(p,19)^p>>>10;zt[f]=w+zt[f-7]+y+zt[f-16]|0}let{A:n,B:i,C:s,D:o,E:a,F:c,G:l,H:u}=this;for(let f=0;f<64;f++){let h=We(a,6)^We(a,11)^We(a,25),p=u+h+n3(a,c,l)+g8[f]+zt[f]|0,w=(We(n,2)^We(n,13)^We(n,22))+i3(n,i,s)|0;u=l,l=c,c=a,a=o+p|0,o=s,s=i,i=n,n=p+w|0}n=n+this.A|0,i=i+this.B|0,s=s+this.C|0,o=o+this.D|0,a=a+this.E|0,c=c+this.F|0,l=l+this.G|0,u=u+this.H|0,this.set(n,i,s,o,a,c,l,u)}roundClean(){zt.fill(0)}destroy(){this.set(0,0,0,0,0,0,0,0),this.buffer.fill(0)}};var qr=h1(()=>new jo);var H=bs(E3());function hr(r,e){let t=0;if(r.length===1)return r[0];for(let n=r.length-1;n>=0;n--)t+=r[r.length-1-n]*Math.pow(2,e*n);return t}function Gt(r,e,t=-1){let n=t,i=r,s=0,o=Math.pow(2,e);for(let a=1;a<8;a++){if(r<o){let c;if(n<0)c=new ArrayBuffer(a),s=a;else{if(n<a)return new ArrayBuffer(0);c=new ArrayBuffer(n),s=n}let l=new Uint8Array(c);for(let u=a-1;u>=0;u--){let f=Math.pow(2,u*e);l[s-u-1]=Math.floor(i/f),i-=l[s-u-1]*f}return c}o*=Math.pow(2,e)}return new ArrayBuffer(0)}function S1(...r){let e=0,t=0;for(let s of r)e+=s.length;let n=new ArrayBuffer(e),i=new Uint8Array(n);for(let s of r)i.set(s,t),t+=s.length;return i}function Qo(){let r=new Uint8Array(this.valueHex);if(this.valueHex.byteLength>=2){let a=r[0]===255&&r[1]&128,c=r[0]===0&&(r[1]&128)===0;(a||c)&&this.warnings.push("Needlessly long format")}let e=new ArrayBuffer(this.valueHex.byteLength),t=new Uint8Array(e);for(let a=0;a<this.valueHex.byteLength;a++)t[a]=0;t[0]=r[0]&128;let n=hr(t,8),i=new ArrayBuffer(this.valueHex.byteLength),s=new Uint8Array(i);for(let a=0;a<this.valueHex.byteLength;a++)s[a]=r[a];return s[0]&=127,hr(s,8)-n}function A3(r){let e=r<0?r*-1:r,t=128;for(let n=1;n<8;n++){if(e<=t){if(r<0){let o=t-e,a=Gt(o,8,n),c=new Uint8Array(a);return c[0]|=128,a}let i=Gt(e,8,n),s=new Uint8Array(i);if(s[0]&128){let o=i.slice(0),a=new Uint8Array(o);i=new ArrayBuffer(i.byteLength+1),s=new Uint8Array(i);for(let c=0;c<o.byteLength;c++)s[c+1]=a[c];s[0]=0}return i}t*=Math.pow(2,8)}return new ArrayBuffer(0)}function S3(r,e){if(r.byteLength!==e.byteLength)return!1;let t=new Uint8Array(r),n=new Uint8Array(e);for(let i=0;i<t.length;i++)if(t[i]!==n[i])return!1;return!0}function De(r,e){let t=r.toString(10);if(e<t.length)return"";let n=e-t.length,i=new Array(n);for(let o=0;o<n;o++)i[o]="0";return i.join("").concat(t)}var hf=Math.log(2);function B1(){if(typeof BigInt>"u")throw new Error("BigInt is not defined. Your environment doesn't implement BigInt.")}function Zo(r){let e=0,t=0;for(let i=0;i<r.length;i++){let s=r[i];e+=s.byteLength}let n=new Uint8Array(e);for(let i=0;i<r.length;i++){let s=r[i];n.set(new Uint8Array(s),t),t+=s.byteLength}return n.buffer}function It(r,e,t,n){return e instanceof Uint8Array?e.byteLength?t<0?(r.error="Wrong parameter: inputOffset less than zero",!1):n<0?(r.error="Wrong parameter: inputLength less than zero",!1):e.byteLength-t-n<0?(r.error="End of input reached before message was fully decoded (inconsistent offset and length values)",!1):!0:(r.error="Wrong parameter: inputBuffer has zero length",!1):(r.error="Wrong parameter: inputBuffer must be 'Uint8Array'",!1)}var Sn=class{constructor(){this.items=[]}write(e){this.items.push(e)}final(){return Zo(this.items)}},An=[new Uint8Array([1])],B3="0123456789";var jr="",Ye=new ArrayBuffer(0),Yo=new Uint8Array(0),Bn="EndOfContent",k3="OCTET STRING",T3="BIT STRING";function kt(r){var e;return e=class extends r{constructor(...n){var i;super(...n);let s=n[0]||{};this.isHexOnly=(i=s.isHexOnly)!==null&&i!==void 0?i:!1,this.valueHexView=s.valueHex?H.BufferSourceConverter.toUint8Array(s.valueHex):Yo}get valueHex(){return this.valueHexView.slice().buffer}set valueHex(n){this.valueHexView=new Uint8Array(n)}fromBER(n,i,s){let o=n instanceof ArrayBuffer?new Uint8Array(n):n;if(!It(this,o,i,s))return-1;let a=i+s;return this.valueHexView=o.subarray(i,a),this.valueHexView.length?(this.blockLength=s,a):(this.warnings.push("Zero buffer length"),i)}toBER(n=!1){return this.isHexOnly?n?new ArrayBuffer(this.valueHexView.byteLength):this.valueHexView.byteLength===this.valueHexView.buffer.byteLength?this.valueHexView.buffer:this.valueHexView.slice().buffer:(this.error="Flag 'isHexOnly' is not set, abort",Ye)}toJSON(){return{...super.toJSON(),isHexOnly:this.isHexOnly,valueHex:H.Convert.ToHex(this.valueHexView)}}},e.NAME="hexBlock",e}var At=class{constructor({blockLength:e=0,error:t=jr,warnings:n=[],valueBeforeDecode:i=Yo}={}){this.blockLength=e,this.error=t,this.warnings=n,this.valueBeforeDecodeView=H.BufferSourceConverter.toUint8Array(i)}static blockName(){return this.NAME}get valueBeforeDecode(){return this.valueBeforeDecodeView.slice().buffer}set valueBeforeDecode(e){this.valueBeforeDecodeView=new Uint8Array(e)}toJSON(){return{blockName:this.constructor.NAME,blockLength:this.blockLength,error:this.error,warnings:this.warnings,valueBeforeDecode:H.Convert.ToHex(this.valueBeforeDecodeView)}}};At.NAME="baseBlock";var Se=class extends At{fromBER(e,t,n){throw TypeError("User need to make a specific function in a class which extends 'ValueBlock'")}toBER(e,t){throw TypeError("User need to make a specific function in a class which extends 'ValueBlock'")}};Se.NAME="valueBlock";var I1=class extends kt(At){constructor({idBlock:e={}}={}){var t,n,i,s;super(),e?(this.isHexOnly=(t=e.isHexOnly)!==null&&t!==void 0?t:!1,this.valueHexView=e.valueHex?H.BufferSourceConverter.toUint8Array(e.valueHex):Yo,this.tagClass=(n=e.tagClass)!==null&&n!==void 0?n:-1,this.tagNumber=(i=e.tagNumber)!==null&&i!==void 0?i:-1,this.isConstructed=(s=e.isConstructed)!==null&&s!==void 0?s:!1):(this.tagClass=-1,this.tagNumber=-1,this.isConstructed=!1)}toBER(e=!1){let t=0;switch(this.tagClass){case 1:t|=0;break;case 2:t|=64;break;case 3:t|=128;break;case 4:t|=192;break;default:return this.error="Unknown tag class",Ye}if(this.isConstructed&&(t|=32),this.tagNumber<31&&!this.isHexOnly){let i=new Uint8Array(1);if(!e){let s=this.tagNumber;s&=31,t|=s,i[0]=t}return i.buffer}if(!this.isHexOnly){let i=Gt(this.tagNumber,7),s=new Uint8Array(i),o=i.byteLength,a=new Uint8Array(o+1);if(a[0]=t|31,!e){for(let c=0;c<o-1;c++)a[c+1]=s[c]|128;a[o]=s[o-1]}return a.buffer}let n=new Uint8Array(this.valueHexView.byteLength+1);if(n[0]=t|31,!e){let i=this.valueHexView;for(let s=0;s<i.length-1;s++)n[s+1]=i[s]|128;n[this.valueHexView.byteLength]=i[i.length-1]}return n.buffer}fromBER(e,t,n){let i=H.BufferSourceConverter.toUint8Array(e);if(!It(this,i,t,n))return-1;let s=i.subarray(t,t+n);if(s.length===0)return this.error="Zero buffer length",-1;switch(s[0]&192){case 0:this.tagClass=1;break;case 64:this.tagClass=2;break;case 128:this.tagClass=3;break;case 192:this.tagClass=4;break;default:return this.error="Unknown tag class",-1}this.isConstructed=(s[0]&32)===32,this.isHexOnly=!1;let a=s[0]&31;if(a!==31)this.tagNumber=a,this.blockLength=1;else{let c=1,l=this.valueHexView=new Uint8Array(255),u=255;for(;s[c]&128;){if(l[c-1]=s[c]&127,c++,c>=s.length)return this.error="End of input reached before message was fully decoded",-1;if(c===u){u+=255;let h=new Uint8Array(u);for(let p=0;p<l.length;p++)h[p]=l[p];l=this.valueHexView=new Uint8Array(u)}}this.blockLength=c+1,l[c-1]=s[c]&127;let f=new Uint8Array(c);for(let h=0;h<c;h++)f[h]=l[h];l=this.valueHexView=new Uint8Array(c),l.set(f),this.blockLength<=9?this.tagNumber=hr(l,7):(this.isHexOnly=!0,this.warnings.push("Tag too long, represented as hex-coded"))}if(this.tagClass===1&&this.isConstructed)switch(this.tagNumber){case 1:case 2:case 5:case 6:case 9:case 13:case 14:case 23:case 24:case 31:case 32:case 33:case 34:return this.error="Constructed encoding used for primitive type",-1}return t+this.blockLength}toJSON(){return{...super.toJSON(),tagClass:this.tagClass,tagNumber:this.tagNumber,isConstructed:this.isConstructed}}};I1.NAME="identificationBlock";var k1=class extends At{constructor({lenBlock:e={}}={}){var t,n,i;super(),this.isIndefiniteForm=(t=e.isIndefiniteForm)!==null&&t!==void 0?t:!1,this.longFormUsed=(n=e.longFormUsed)!==null&&n!==void 0?n:!1,this.length=(i=e.length)!==null&&i!==void 0?i:0}fromBER(e,t,n){let i=H.BufferSourceConverter.toUint8Array(e);if(!It(this,i,t,n))return-1;let s=i.subarray(t,t+n);if(s.length===0)return this.error="Zero buffer length",-1;if(s[0]===255)return this.error="Length block 0xFF is reserved by standard",-1;if(this.isIndefiniteForm=s[0]===128,this.isIndefiniteForm)return this.blockLength=1,t+this.blockLength;if(this.longFormUsed=!!(s[0]&128),this.longFormUsed===!1)return this.length=s[0],this.blockLength=1,t+this.blockLength;let o=s[0]&127;if(o>8)return this.error="Too big integer",-1;if(o+1>s.length)return this.error="End of input reached before message was fully decoded",-1;let a=t+1,c=i.subarray(a,a+o);return c[o-1]===0&&this.warnings.push("Needlessly long encoded length"),this.length=hr(c,8),this.longFormUsed&&this.length<=127&&this.warnings.push("Unnecessary usage of long length form"),this.blockLength=o+1,t+this.blockLength}toBER(e=!1){let t,n;if(this.length>127&&(this.longFormUsed=!0),this.isIndefiniteForm)return t=new ArrayBuffer(1),e===!1&&(n=new Uint8Array(t),n[0]=128),t;if(this.longFormUsed){let i=Gt(this.length,8);if(i.byteLength>127)return this.error="Too big length",Ye;if(t=new ArrayBuffer(i.byteLength+1),e)return t;let s=new Uint8Array(i);n=new Uint8Array(t),n[0]=i.byteLength|128;for(let o=0;o<i.byteLength;o++)n[o+1]=s[o];return t}return t=new ArrayBuffer(1),e===!1&&(n=new Uint8Array(t),n[0]=this.length),t}toJSON(){return{...super.toJSON(),isIndefiniteForm:this.isIndefiniteForm,longFormUsed:this.longFormUsed,length:this.length}}};k1.NAME="lengthBlock";var B={},be=class extends At{constructor({name:e=jr,optional:t=!1,primitiveSchema:n,...i}={},s){super(i),this.name=e,this.optional=t,n&&(this.primitiveSchema=n),this.idBlock=new I1(i),this.lenBlock=new k1(i),this.valueBlock=s?new s(i):new Se(i)}fromBER(e,t,n){let i=this.valueBlock.fromBER(e,t,this.lenBlock.isIndefiniteForm?n:this.lenBlock.length);return i===-1?(this.error=this.valueBlock.error,i):(this.idBlock.error.length||(this.blockLength+=this.idBlock.blockLength),this.lenBlock.error.length||(this.blockLength+=this.lenBlock.blockLength),this.valueBlock.error.length||(this.blockLength+=this.valueBlock.blockLength),i)}toBER(e,t){let n=t||new Sn;t||R3(this);let i=this.idBlock.toBER(e);if(n.write(i),this.lenBlock.isIndefiniteForm)n.write(new Uint8Array([128]).buffer),this.valueBlock.toBER(e,n),n.write(new ArrayBuffer(2));else{let s=this.valueBlock.toBER(e);this.lenBlock.length=s.byteLength;let o=this.lenBlock.toBER(e);n.write(o),n.write(s)}return t?Ye:n.final()}toJSON(){let e={...super.toJSON(),idBlock:this.idBlock.toJSON(),lenBlock:this.lenBlock.toJSON(),valueBlock:this.valueBlock.toJSON(),name:this.name,optional:this.optional};return this.primitiveSchema&&(e.primitiveSchema=this.primitiveSchema.toJSON()),e}toString(e="ascii"){return e==="ascii"?this.onAsciiEncoding():H.Convert.ToHex(this.toBER())}onAsciiEncoding(){return`${this.constructor.NAME} : ${H.Convert.ToHex(this.valueBlock.valueBeforeDecodeView)}`}isEqual(e){if(this===e)return!0;if(!(e instanceof this.constructor))return!1;let t=this.toBER(),n=e.toBER();return S3(t,n)}};be.NAME="BaseBlock";function R3(r){if(r instanceof B.Constructed)for(let e of r.valueBlock.value)R3(e)&&(r.lenBlock.isIndefiniteForm=!0);return!!r.lenBlock.isIndefiniteForm}var T1=class extends be{constructor({value:e=jr,...t}={},n){super(t,n),e&&this.fromString(e)}getValue(){return this.valueBlock.value}setValue(e){this.valueBlock.value=e}fromBER(e,t,n){let i=this.valueBlock.fromBER(e,t,this.lenBlock.isIndefiniteForm?n:this.lenBlock.length);return i===-1?(this.error=this.valueBlock.error,i):(this.fromBuffer(this.valueBlock.valueHexView),this.idBlock.error.length||(this.blockLength+=this.idBlock.blockLength),this.lenBlock.error.length||(this.blockLength+=this.lenBlock.blockLength),this.valueBlock.error.length||(this.blockLength+=this.valueBlock.blockLength),i)}onAsciiEncoding(){return`${this.constructor.NAME} : '${this.valueBlock.value}'`}};T1.NAME="BaseStringBlock";var R1=class extends kt(Se){constructor({isHexOnly:e=!0,...t}={}){super(t),this.isHexOnly=e}};R1.NAME="PrimitiveValueBlock";var P3,P1=class extends be{constructor(e={}){super(e,R1),this.idBlock.isConstructed=!1}};P3=P1;B.Primitive=P3;P1.NAME="PRIMITIVE";function S8(r,e){if(r instanceof e)return r;let t=new e;return t.idBlock=r.idBlock,t.lenBlock=r.lenBlock,t.warnings=r.warnings,t.valueBeforeDecodeView=r.valueBeforeDecodeView,t}function ui(r,e=0,t=r.length){let n=e,i=new be({},Se),s=new At;if(!It(s,r,e,t))return i.error=s.error,{offset:-1,result:i};if(!r.subarray(e,e+t).length)return i.error="Zero buffer length",{offset:-1,result:i};let a=i.idBlock.fromBER(r,e,t);if(i.idBlock.warnings.length&&i.warnings.concat(i.idBlock.warnings),a===-1)return i.error=i.idBlock.error,{offset:-1,result:i};if(e=a,t-=i.idBlock.blockLength,a=i.lenBlock.fromBER(r,e,t),i.lenBlock.warnings.length&&i.warnings.concat(i.lenBlock.warnings),a===-1)return i.error=i.lenBlock.error,{offset:-1,result:i};if(e=a,t-=i.lenBlock.blockLength,!i.idBlock.isConstructed&&i.lenBlock.isIndefiniteForm)return i.error="Indefinite length form used for primitive encoding form",{offset:-1,result:i};let c=be;switch(i.idBlock.tagClass){case 1:if(i.idBlock.tagNumber>=37&&i.idBlock.isHexOnly===!1)return i.error="UNIVERSAL 37 and upper tags are reserved by ASN.1 standard",{offset:-1,result:i};switch(i.idBlock.tagNumber){case 0:if(i.idBlock.isConstructed&&i.lenBlock.length>0)return i.error="Type [UNIVERSAL 0] is reserved",{offset:-1,result:i};c=B.EndOfContent;break;case 1:c=B.Boolean;break;case 2:c=B.Integer;break;case 3:c=B.BitString;break;case 4:c=B.OctetString;break;case 5:c=B.Null;break;case 6:c=B.ObjectIdentifier;break;case 10:c=B.Enumerated;break;case 12:c=B.Utf8String;break;case 13:c=B.RelativeObjectIdentifier;break;case 14:c=B.TIME;break;case 15:return i.error="[UNIVERSAL 15] is reserved by ASN.1 standard",{offset:-1,result:i};case 16:c=B.Sequence;break;case 17:c=B.Set;break;case 18:c=B.NumericString;break;case 19:c=B.PrintableString;break;case 20:c=B.TeletexString;break;case 21:c=B.VideotexString;break;case 22:c=B.IA5String;break;case 23:c=B.UTCTime;break;case 24:c=B.GeneralizedTime;break;case 25:c=B.GraphicString;break;case 26:c=B.VisibleString;break;case 27:c=B.GeneralString;break;case 28:c=B.UniversalString;break;case 29:c=B.CharacterString;break;case 30:c=B.BmpString;break;case 31:c=B.DATE;break;case 32:c=B.TimeOfDay;break;case 33:c=B.DateTime;break;case 34:c=B.Duration;break;default:{let l=i.idBlock.isConstructed?new B.Constructed:new B.Primitive;l.idBlock=i.idBlock,l.lenBlock=i.lenBlock,l.warnings=i.warnings,i=l}}break;case 2:case 3:case 4:default:c=i.idBlock.isConstructed?B.Constructed:B.Primitive}return i=S8(i,c),a=i.fromBER(r,e,i.lenBlock.isIndefiniteForm?t:i.lenBlock.length),i.valueBeforeDecodeView=r.subarray(n,n+i.blockLength),{offset:a,result:i}}function Xo(r){if(!r.byteLength){let e=new be({},Se);return e.error="Input buffer has zero length",{offset:-1,result:e}}return ui(H.BufferSourceConverter.toUint8Array(r).slice(),0,r.byteLength)}function B8(r,e){return r?1:e}var ot=class extends Se{constructor({value:e=[],isIndefiniteForm:t=!1,...n}={}){super(n),this.value=e,this.isIndefiniteForm=t}fromBER(e,t,n){let i=H.BufferSourceConverter.toUint8Array(e);if(!It(this,i,t,n))return-1;if(this.valueBeforeDecodeView=i.subarray(t,t+n),this.valueBeforeDecodeView.length===0)return this.warnings.push("Zero buffer length"),t;let s=t;for(;B8(this.isIndefiniteForm,n)>0;){let o=ui(i,s,n);if(o.offset===-1)return this.error=o.result.error,this.warnings.concat(o.result.warnings),-1;if(s=o.offset,this.blockLength+=o.result.blockLength,n-=o.result.blockLength,this.value.push(o.result),this.isIndefiniteForm&&o.result.constructor.NAME===Bn)break}return this.isIndefiniteForm&&(this.value[this.value.length-1].constructor.NAME===Bn?this.value.pop():this.warnings.push("No EndOfContent block encoded")),s}toBER(e,t){let n=t||new Sn;for(let i=0;i<this.value.length;i++)this.value[i].toBER(e,n);return t?Ye:n.final()}toJSON(){let e={...super.toJSON(),isIndefiniteForm:this.isIndefiniteForm,value:[]};for(let t of this.value)e.value.push(t.toJSON());return e}};ot.NAME="ConstructedValueBlock";var N3,jt=class extends be{constructor(e={}){super(e,ot),this.idBlock.isConstructed=!0}fromBER(e,t,n){this.valueBlock.isIndefiniteForm=this.lenBlock.isIndefiniteForm;let i=this.valueBlock.fromBER(e,t,this.lenBlock.isIndefiniteForm?n:this.lenBlock.length);return i===-1?(this.error=this.valueBlock.error,i):(this.idBlock.error.length||(this.blockLength+=this.idBlock.blockLength),this.lenBlock.error.length||(this.blockLength+=this.lenBlock.blockLength),this.valueBlock.error.length||(this.blockLength+=this.valueBlock.blockLength),i)}onAsciiEncoding(){let e=[];for(let n of this.valueBlock.value)e.push(n.toString("ascii").split(`
2
+ "use strict";var Libp2PKadDht=(()=>{var B4=Object.create;var Gn=Object.defineProperty;var k4=Object.getOwnPropertyDescriptor;var T4=Object.getOwnPropertyNames;var R4=Object.getPrototypeOf,P4=Object.prototype.hasOwnProperty;var ws=(r,e)=>()=>(e||r((e={exports:{}}).exports,e),e.exports),Te=(r,e)=>{for(var t in e)Gn(r,t,{get:e[t],enumerable:!0})},F2=(r,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of T4(e))!P4.call(r,i)&&i!==t&&Gn(r,i,{get:()=>e[i],enumerable:!(n=k4(e,i))||n.enumerable});return r};var bs=(r,e,t)=>(t=r!=null?B4(R4(r)):{},F2(e||!r||!r.__esModule?Gn(t,"default",{value:r,enumerable:!0}):t,r)),L4=r=>F2(Gn({},"__esModule",{value:!0}),r);var Q2=ws((Kc,vs)=>{"use strict";var C4=Object.prototype.hasOwnProperty,Re="~";function on(){}Object.create&&(on.prototype=Object.create(null),new on().__proto__||(Re=!1));function U4(r,e,t){this.fn=r,this.context=e,this.once=t||!1}function W2(r,e,t,n,i){if(typeof t!="function")throw new TypeError("The listener must be a function");var s=new U4(t,n||r,i),o=Re?Re+e:e;return r._events[o]?r._events[o].fn?r._events[o]=[r._events[o],s]:r._events[o].push(s):(r._events[o]=s,r._eventsCount++),r}function Qn(r,e){--r._eventsCount===0?r._events=new on:delete r._events[e]}function Ee(){this._events=new on,this._eventsCount=0}Ee.prototype.eventNames=function(){var e=[],t,n;if(this._eventsCount===0)return e;for(n in t=this._events)C4.call(t,n)&&e.push(Re?n.slice(1):n);return Object.getOwnPropertySymbols?e.concat(Object.getOwnPropertySymbols(t)):e};Ee.prototype.listeners=function(e){var t=Re?Re+e:e,n=this._events[t];if(!n)return[];if(n.fn)return[n.fn];for(var i=0,s=n.length,o=new Array(s);i<s;i++)o[i]=n[i].fn;return o};Ee.prototype.listenerCount=function(e){var t=Re?Re+e:e,n=this._events[t];return n?n.fn?1:n.length:0};Ee.prototype.emit=function(e,t,n,i,s,o){var a=Re?Re+e:e;if(!this._events[a])return!1;var c=this._events[a],l=arguments.length,u,f;if(c.fn){switch(c.once&&this.removeListener(e,c.fn,void 0,!0),l){case 1:return c.fn.call(c.context),!0;case 2:return c.fn.call(c.context,t),!0;case 3:return c.fn.call(c.context,t,n),!0;case 4:return c.fn.call(c.context,t,n,i),!0;case 5:return c.fn.call(c.context,t,n,i,s),!0;case 6:return c.fn.call(c.context,t,n,i,s,o),!0}for(f=1,u=new Array(l-1);f<l;f++)u[f-1]=arguments[f];c.fn.apply(c.context,u)}else{var h=c.length,p;for(f=0;f<h;f++)switch(c[f].once&&this.removeListener(e,c[f].fn,void 0,!0),l){case 1:c[f].fn.call(c[f].context);break;case 2:c[f].fn.call(c[f].context,t);break;case 3:c[f].fn.call(c[f].context,t,n);break;case 4:c[f].fn.call(c[f].context,t,n,i);break;default:if(!u)for(p=1,u=new Array(l-1);p<l;p++)u[p-1]=arguments[p];c[f].fn.apply(c[f].context,u)}}return!0};Ee.prototype.on=function(e,t,n){return W2(this,e,t,n,!1)};Ee.prototype.once=function(e,t,n){return W2(this,e,t,n,!0)};Ee.prototype.removeListener=function(e,t,n,i){var s=Re?Re+e:e;if(!this._events[s])return this;if(!t)return Qn(this,s),this;var o=this._events[s];if(o.fn)o.fn===t&&(!i||o.once)&&(!n||o.context===n)&&Qn(this,s);else{for(var a=0,c=[],l=o.length;a<l;a++)(o[a].fn!==t||i&&!o[a].once||n&&o[a].context!==n)&&c.push(o[a]);c.length?this._events[s]=c.length===1?c[0]:c:Qn(this,s)}return this};Ee.prototype.removeAllListeners=function(e){var t;return e?(t=Re?Re+e:e,this._events[t]&&Qn(this,t)):(this._events=new on,this._eventsCount=0),this};Ee.prototype.off=Ee.prototype.removeListener;Ee.prototype.addListener=Ee.prototype.on;Ee.prefixed=Re;Ee.EventEmitter=Ee;typeof vs<"u"&&(vs.exports=Ee)});var E3=ws($r=>{"use strict";var y8="[object ArrayBuffer]",Et=class r{static isArrayBuffer(e){return Object.prototype.toString.call(e)===y8}static toArrayBuffer(e){return this.isArrayBuffer(e)?e:e.byteLength===e.buffer.byteLength||e.byteOffset===0&&e.byteLength===e.buffer.byteLength?e.buffer:this.toUint8Array(e.buffer).slice(e.byteOffset,e.byteOffset+e.byteLength).buffer}static toUint8Array(e){return this.toView(e,Uint8Array)}static toView(e,t){if(e.constructor===t)return e;if(this.isArrayBuffer(e))return new t(e);if(this.isArrayBufferView(e))return new t(e.buffer,e.byteOffset,e.byteLength);throw new TypeError("The provided value is not of type '(ArrayBuffer or ArrayBufferView)'")}static isBufferSource(e){return this.isArrayBufferView(e)||this.isArrayBuffer(e)}static isArrayBufferView(e){return ArrayBuffer.isView(e)||e&&this.isArrayBuffer(e.buffer)}static isEqual(e,t){let n=r.toUint8Array(e),i=r.toUint8Array(t);if(n.length!==i.byteLength)return!1;for(let s=0;s<n.length;s++)if(n[s]!==i[s])return!1;return!0}static concat(...e){let t;Array.isArray(e[0])&&!(e[1]instanceof Function)||Array.isArray(e[0])&&e[1]instanceof Function?t=e[0]:e[e.length-1]instanceof Function?t=e.slice(0,e.length-1):t=e;let n=0;for(let o of t)n+=o.byteLength;let i=new Uint8Array(n),s=0;for(let o of t){let a=this.toUint8Array(o);i.set(a,s),s+=a.length}return e[e.length-1]instanceof Function?this.toView(i,e[e.length-1]):i.buffer}},Wo="string",w8=/^[0-9a-f\s]+$/i,b8=/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/,x8=/^[a-zA-Z0-9-_]+$/,E1=class{static fromString(e){let t=unescape(encodeURIComponent(e)),n=new Uint8Array(t.length);for(let i=0;i<t.length;i++)n[i]=t.charCodeAt(i);return n.buffer}static toString(e){let t=Et.toUint8Array(e),n="";for(let s=0;s<t.length;s++)n+=String.fromCharCode(t[s]);return decodeURIComponent(escape(n))}},Ge=class{static toString(e,t=!1){let n=Et.toArrayBuffer(e),i=new DataView(n),s="";for(let o=0;o<n.byteLength;o+=2){let a=i.getUint16(o,t);s+=String.fromCharCode(a)}return s}static fromString(e,t=!1){let n=new ArrayBuffer(e.length*2),i=new DataView(n);for(let s=0;s<e.length;s++)i.setUint16(s*2,e.charCodeAt(s),t);return n}},A1=class r{static isHex(e){return typeof e===Wo&&w8.test(e)}static isBase64(e){return typeof e===Wo&&b8.test(e)}static isBase64Url(e){return typeof e===Wo&&x8.test(e)}static ToString(e,t="utf8"){let n=Et.toUint8Array(e);switch(t.toLowerCase()){case"utf8":return this.ToUtf8String(n);case"binary":return this.ToBinary(n);case"hex":return this.ToHex(n);case"base64":return this.ToBase64(n);case"base64url":return this.ToBase64Url(n);case"utf16le":return Ge.toString(n,!0);case"utf16":case"utf16be":return Ge.toString(n);default:throw new Error(`Unknown type of encoding '${t}'`)}}static FromString(e,t="utf8"){if(!e)return new ArrayBuffer(0);switch(t.toLowerCase()){case"utf8":return this.FromUtf8String(e);case"binary":return this.FromBinary(e);case"hex":return this.FromHex(e);case"base64":return this.FromBase64(e);case"base64url":return this.FromBase64Url(e);case"utf16le":return Ge.fromString(e,!0);case"utf16":case"utf16be":return Ge.fromString(e);default:throw new Error(`Unknown type of encoding '${t}'`)}}static ToBase64(e){let t=Et.toUint8Array(e);if(typeof btoa<"u"){let n=this.ToString(t,"binary");return btoa(n)}else return Buffer.from(t).toString("base64")}static FromBase64(e){let t=this.formatString(e);if(!t)return new ArrayBuffer(0);if(!r.isBase64(t))throw new TypeError("Argument 'base64Text' is not Base64 encoded");return typeof atob<"u"?this.FromBinary(atob(t)):new Uint8Array(Buffer.from(t,"base64")).buffer}static FromBase64Url(e){let t=this.formatString(e);if(!t)return new ArrayBuffer(0);if(!r.isBase64Url(t))throw new TypeError("Argument 'base64url' is not Base64Url encoded");return this.FromBase64(this.Base64Padding(t.replace(/\-/g,"+").replace(/\_/g,"/")))}static ToBase64Url(e){return this.ToBase64(e).replace(/\+/g,"-").replace(/\//g,"_").replace(/\=/g,"")}static FromUtf8String(e,t=r.DEFAULT_UTF8_ENCODING){switch(t){case"ascii":return this.FromBinary(e);case"utf8":return E1.fromString(e);case"utf16":case"utf16be":return Ge.fromString(e);case"utf16le":case"usc2":return Ge.fromString(e,!0);default:throw new Error(`Unknown type of encoding '${t}'`)}}static ToUtf8String(e,t=r.DEFAULT_UTF8_ENCODING){switch(t){case"ascii":return this.ToBinary(e);case"utf8":return E1.toString(e);case"utf16":case"utf16be":return Ge.toString(e);case"utf16le":case"usc2":return Ge.toString(e,!0);default:throw new Error(`Unknown type of encoding '${t}'`)}}static FromBinary(e){let t=e.length,n=new Uint8Array(t);for(let i=0;i<t;i++)n[i]=e.charCodeAt(i);return n.buffer}static ToBinary(e){let t=Et.toUint8Array(e),n="";for(let i=0;i<t.length;i++)n+=String.fromCharCode(t[i]);return n}static ToHex(e){let t=Et.toUint8Array(e),n="",i=t.length;for(let s=0;s<i;s++){let o=t[s];o<16&&(n+="0"),n+=o.toString(16)}return n}static FromHex(e){let t=this.formatString(e);if(!t)return new ArrayBuffer(0);if(!r.isHex(t))throw new TypeError("Argument 'hexString' is not HEX encoded");t.length%2&&(t=`0${t}`);let n=new Uint8Array(t.length/2);for(let i=0;i<t.length;i=i+2){let s=t.slice(i,i+2);n[i/2]=parseInt(s,16)}return n.buffer}static ToUtf16String(e,t=!1){return Ge.toString(e,t)}static FromUtf16String(e,t=!1){return Ge.fromString(e,t)}static Base64Padding(e){let t=4-e.length%4;if(t<4)for(let n=0;n<t;n++)e+="=";return e}static formatString(e){return e?.replace(/[\n\r\t ]/g,"")||""}};A1.DEFAULT_UTF8_ENCODING="utf8";function v8(r,...e){let t=arguments[0];for(let n=1;n<arguments.length;n++){let i=arguments[n];for(let s in i)t[s]=i[s]}return t}function E8(...r){let e=r.map(i=>i.byteLength).reduce((i,s)=>i+s),t=new Uint8Array(e),n=0;return r.map(i=>new Uint8Array(i)).forEach(i=>{for(let s of i)t[n++]=s}),t.buffer}function A8(r,e){if(!(r&&e)||r.byteLength!==e.byteLength)return!1;let t=new Uint8Array(r),n=new Uint8Array(e);for(let i=0;i<r.byteLength;i++)if(t[i]!==n[i])return!1;return!0}$r.BufferSourceConverter=Et;$r.Convert=A1;$r.assign=v8;$r.combine=E8;$r.isEqual=A8});var Da=ws(Mn=>{(function(){var r,e,t,n,i,s,o,a;a=function(c){var l,u,f,h;return l=(c&255<<24)>>>24,u=(c&255<<16)>>>16,f=(c&65280)>>>8,h=c&255,[l,u,f,h].join(".")},o=function(c){var l,u,f,h,p,y;for(l=[],f=h=0;h<=3&&c.length!==0;f=++h){if(f>0){if(c[0]!==".")throw new Error("Invalid IP");c=c.substring(1)}y=e(c),p=y[0],u=y[1],c=c.substring(u),l.push(p)}if(c.length!==0)throw new Error("Invalid IP");switch(l.length){case 1:if(l[0]>4294967295)throw new Error("Invalid IP");return l[0]>>>0;case 2:if(l[0]>255||l[1]>16777215)throw new Error("Invalid IP");return(l[0]<<24|l[1])>>>0;case 3:if(l[0]>255||l[1]>255||l[2]>65535)throw new Error("Invalid IP");return(l[0]<<24|l[1]<<16|l[2])>>>0;case 4:if(l[0]>255||l[1]>255||l[2]>255||l[3]>255)throw new Error("Invalid IP");return(l[0]<<24|l[1]<<16|l[2]<<8|l[3])>>>0;default:throw new Error("Invalid IP")}},t=function(c){return c.charCodeAt(0)},n=t("0"),s=t("a"),i=t("A"),e=function(c){var l,u,f,h,p;for(h=0,l=10,u="9",f=0,c.length>1&&c[f]==="0"&&(c[f+1]==="x"||c[f+1]==="X"?(f+=2,l=16):"0"<=c[f+1]&&c[f+1]<="9"&&(f++,l=8,u="7")),p=f;f<c.length;){if("0"<=c[f]&&c[f]<=u)h=h*l+(t(c[f])-n)>>>0;else if(l===16)if("a"<=c[f]&&c[f]<="f")h=h*l+(10+t(c[f])-s)>>>0;else if("A"<=c[f]&&c[f]<="F")h=h*l+(10+t(c[f])-i)>>>0;else break;else break;if(h>4294967295)throw new Error("too large");f++}if(f===p)throw new Error("empty octet");return[h,f]},r=function(){function c(l,u){var f,h,p,y;if(typeof l!="string")throw new Error("Missing `net' parameter");if(u||(y=l.split("/",2),l=y[0],u=y[1]),u||(u=32),typeof u=="string"&&u.indexOf(".")>-1){try{this.maskLong=o(u)}catch(w){throw f=w,new Error("Invalid mask: "+u)}for(h=p=32;p>=0;h=--p)if(this.maskLong===4294967295<<32-h>>>0){this.bitmask=h;break}}else if(u||u===0)this.bitmask=parseInt(u,10),this.maskLong=0,this.bitmask>0&&(this.maskLong=4294967295<<32-this.bitmask>>>0);else throw new Error("Invalid mask: empty");try{this.netLong=(o(l)&this.maskLong)>>>0}catch(w){throw f=w,new Error("Invalid net address: "+l)}if(!(this.bitmask<=32))throw new Error("Invalid mask for ip4: "+u);this.size=Math.pow(2,32-this.bitmask),this.base=a(this.netLong),this.mask=a(this.maskLong),this.hostmask=a(~this.maskLong),this.first=this.bitmask<=30?a(this.netLong+1):this.base,this.last=this.bitmask<=30?a(this.netLong+this.size-2):a(this.netLong+this.size-1),this.broadcast=this.bitmask<=30?a(this.netLong+this.size-1):void 0}return c.prototype.contains=function(l){return typeof l=="string"&&(l.indexOf("/")>0||l.split(".").length!==4)&&(l=new c(l)),l instanceof c?this.contains(l.base)&&this.contains(l.broadcast||l.last):(o(l)&this.maskLong)>>>0===(this.netLong&this.maskLong)>>>0},c.prototype.next=function(l){return l==null&&(l=1),new c(a(this.netLong+this.size*l),this.mask)},c.prototype.forEach=function(l){var u,f,h;for(h=o(this.first),f=o(this.last),u=0;h<=f;)l(a(h),h,u),u++,h++},c.prototype.toString=function(){return this.base+"/"+this.bitmask},c}(),Mn.ip2long=o,Mn.long2ip=a,Mn.Netmask=r}).call(Mn)});var ac={};Te(ac,{EventTypes:()=>Kn,MessageType:()=>O,Record:()=>fe,kadDHT:()=>oc,passthroughMapper:()=>Fa,removePrivateAddressesMapper:()=>Ii,removePublicAddressesMapper:()=>Va});var H2=Symbol.for("@libp2p/content-routing");var q2=Symbol.for("@libp2p/peer-discovery");var xs=Symbol.for("@libp2p/peer-id");var K2=Symbol.for("@libp2p/peer-routing");var $2="keep-alive";var ft=class extends Error{static name="AbortError";constructor(e="The operation was aborted"){super(e),this.name="AbortError"}};var $=class extends Error{static name="InvalidParametersError";constructor(e="Invalid parameters"){super(e),this.name="InvalidParametersError"}},ht=class extends Error{static name="InvalidPublicKeyError";constructor(e="Invalid public key"){super(e),this.name="InvalidPublicKeyError"}};var je=class extends Error{static name="NotFoundError";constructor(e="Not found"){super(e),this.name="NotFoundError"}};var jn=class extends Error{static name="InvalidMultihashError";constructor(e="Invalid Multihash"){super(e),this.name="InvalidMultihashError"}};var Ne=class extends Error{static name="InvalidMessageError";constructor(e="Invalid message"){super(e),this.name="InvalidMessageError"}};var tr=class extends Error{static name="UnsupportedKeyTypeError";constructor(e="Unsupported key type"){super(e),this.name="UnsupportedKeyTypeError"}};var te=(r,...e)=>{try{[...e]}catch{}};var _e=class extends EventTarget{#e=new Map;constructor(){super(),te(1/0,this)}listenerCount(e){let t=this.#e.get(e);return t==null?0:t.length}addEventListener(e,t,n){super.addEventListener(e,t,n);let i=this.#e.get(e);i==null&&(i=[],this.#e.set(e,i)),i.push({callback:t,once:(n!==!0&&n!==!1&&n?.once)??!1})}removeEventListener(e,t,n){super.removeEventListener(e.toString(),t??null,n);let i=this.#e.get(e);i!=null&&(i=i.filter(({callback:s})=>s!==t),this.#e.set(e,i))}dispatchEvent(e){let t=super.dispatchEvent(e),n=this.#e.get(e.type);return n==null||(n=n.filter(({once:i})=>!i),this.#e.set(e.type,n)),t}safeDispatchEvent(e,t={}){return this.dispatchEvent(new CustomEvent(e,t))}};function z2(r){return r!=null&&typeof r.start=="function"&&typeof r.stop=="function"}async function nn(...r){let e=[];for(let t of r)z2(t)&&e.push(t);await Promise.all(e.map(async t=>{t.beforeStart!=null&&await t.beforeStart()})),await Promise.all(e.map(async t=>{await t.start()})),await Promise.all(e.map(async t=>{t.afterStart!=null&&await t.afterStart()}))}async function Wn(...r){let e=[];for(let t of r)z2(t)&&e.push(t);await Promise.all(e.map(async t=>{t.beforeStop!=null&&await t.beforeStop()})),await Promise.all(e.map(async t=>{await t.stop()})),await Promise.all(e.map(async t=>{t.afterStop!=null&&await t.afterStop()}))}var G2=Symbol.for("@libp2p/service-capabilities"),j2=Symbol.for("@libp2p/service-dependencies");function N4(r){return r[Symbol.asyncIterator]!=null}function _4(r){if(N4(r))return(async()=>{for await(let e of r);})();for(let e of r);}var sn=_4;var Es=bs(Q2(),1);var an=class extends Error{constructor(e){super(e),this.name="TimeoutError"}},As=class extends Error{constructor(e){super(),this.name="AbortError",this.message=e}},Z2=r=>globalThis.DOMException===void 0?new As(r):new DOMException(r),Y2=r=>{let e=r.reason===void 0?Z2("This operation was aborted."):r.reason;return e instanceof Error?e:Z2(e)};function rr(r,e){let{milliseconds:t,fallback:n,message:i,customTimers:s={setTimeout,clearTimeout}}=e,o,c=new Promise((l,u)=>{if(typeof t!="number"||Math.sign(t)!==1)throw new TypeError(`Expected \`milliseconds\` to be a positive number, got \`${t}\``);if(e.signal){let{signal:h}=e;h.aborted&&u(Y2(h));let p=()=>{u(Y2(h))};h.addEventListener("abort",p,{once:!0}),r.finally(()=>{h.removeEventListener("abort",p)})}if(t===Number.POSITIVE_INFINITY){r.then(l,u);return}let f=new an;o=s.setTimeout.call(void 0,()=>{if(n){try{l(n())}catch(h){u(h)}return}typeof r.cancel=="function"&&r.cancel(),i===!1?l():i instanceof Error?u(i):(f.message=i??`Promise timed out after ${t} milliseconds`,u(f))},t),(async()=>{try{l(await r)}catch(h){u(h)}})()}).finally(()=>{c.clear()});return c.clear=()=>{s.clearTimeout.call(void 0,o),o=void 0},c}function Ss(r,e,t){let n=0,i=r.length;for(;i>0;){let s=Math.trunc(i/2),o=n+s;t(r[o],e)<=0?(n=++o,i-=s+1):i=s}return n}var cn=class{#e=[];enqueue(e,t){t={priority:0,...t};let n={priority:t.priority,run:e};if(this.size&&this.#e[this.size-1].priority>=t.priority){this.#e.push(n);return}let i=Ss(this.#e,n,(s,o)=>o.priority-s.priority);this.#e.splice(i,0,n)}dequeue(){return this.#e.shift()?.run}filter(e){return this.#e.filter(t=>t.priority===e.priority).map(t=>t.run)}get size(){return this.#e.length}};var vr=class extends Es.default{#e;#r;#s=0;#a;#c;#p=0;#n;#l;#t;#m;#i=0;#u;#o;#g;timeout;constructor(e){if(super(),e={carryoverConcurrencyCount:!1,intervalCap:Number.POSITIVE_INFINITY,interval:0,concurrency:Number.POSITIVE_INFINITY,autoStart:!0,queueClass:cn,...e},!(typeof e.intervalCap=="number"&&e.intervalCap>=1))throw new TypeError(`Expected \`intervalCap\` to be a number from 1 and up, got \`${e.intervalCap?.toString()??""}\` (${typeof e.intervalCap})`);if(e.interval===void 0||!(Number.isFinite(e.interval)&&e.interval>=0))throw new TypeError(`Expected \`interval\` to be a finite number >= 0, got \`${e.interval?.toString()??""}\` (${typeof e.interval})`);this.#e=e.carryoverConcurrencyCount,this.#r=e.intervalCap===Number.POSITIVE_INFINITY||e.interval===0,this.#a=e.intervalCap,this.#c=e.interval,this.#t=new e.queueClass,this.#m=e.queueClass,this.concurrency=e.concurrency,this.timeout=e.timeout,this.#g=e.throwOnTimeout===!0,this.#o=e.autoStart===!1}get#b(){return this.#r||this.#s<this.#a}get#x(){return this.#i<this.#u}#v(){this.#i--,this.#f(),this.emit("next")}#E(){this.#w(),this.#y(),this.#l=void 0}get#A(){let e=Date.now();if(this.#n===void 0){let t=this.#p-e;if(t<0)this.#s=this.#e?this.#i:0;else return this.#l===void 0&&(this.#l=setTimeout(()=>{this.#E()},t)),!0}return!1}#f(){if(this.#t.size===0)return this.#n&&clearInterval(this.#n),this.#n=void 0,this.emit("empty"),this.#i===0&&this.emit("idle"),!1;if(!this.#o){let e=!this.#A;if(this.#b&&this.#x){let t=this.#t.dequeue();return t?(this.emit("active"),t(),e&&this.#y(),!0):!1}}return!1}#y(){this.#r||this.#n!==void 0||(this.#n=setInterval(()=>{this.#w()},this.#c),this.#p=Date.now()+this.#c)}#w(){this.#s===0&&this.#i===0&&this.#n&&(clearInterval(this.#n),this.#n=void 0),this.#s=this.#e?this.#i:0,this.#h()}#h(){for(;this.#f(););}get concurrency(){return this.#u}set concurrency(e){if(!(typeof e=="number"&&e>=1))throw new TypeError(`Expected \`concurrency\` to be a number from 1 and up, got \`${e}\` (${typeof e})`);this.#u=e,this.#h()}async#S(e){return new Promise((t,n)=>{e.addEventListener("abort",()=>{n(e.reason)},{once:!0})})}async add(e,t={}){return t={timeout:this.timeout,throwOnTimeout:this.#g,...t},new Promise((n,i)=>{this.#t.enqueue(async()=>{this.#i++,this.#s++;try{t.signal?.throwIfAborted();let s=e({signal:t.signal});t.timeout&&(s=rr(Promise.resolve(s),{milliseconds:t.timeout})),t.signal&&(s=Promise.race([s,this.#S(t.signal)]));let o=await s;n(o),this.emit("completed",o)}catch(s){if(s instanceof an&&!t.throwOnTimeout){n();return}i(s),this.emit("error",s)}finally{this.#v()}},t),this.emit("add"),this.#f()})}async addAll(e,t){return Promise.all(e.map(async n=>this.add(n,t)))}start(){return this.#o?(this.#o=!1,this.#h(),this):this}pause(){this.#o=!0}clear(){this.#t=new this.#m}async onEmpty(){this.#t.size!==0&&await this.#d("empty")}async onSizeLessThan(e){this.#t.size<e||await this.#d("next",()=>this.#t.size<e)}async onIdle(){this.#i===0&&this.#t.size===0||await this.#d("idle")}async#d(e,t){return new Promise(n=>{let i=()=>{t&&!t()||(this.off(e,i),n())};this.on(e,i)})}get size(){return this.#t.size}sizeBy(e){return this.#t.filter(e).length}get pending(){return this.#i}get isPaused(){return this.#o}};var Nt={},Er=r=>{r.addEventListener("message",e=>{Er.dispatchEvent("message",r,e)}),r.port!=null&&r.port.addEventListener("message",e=>{Er.dispatchEvent("message",r,e)})};Er.addEventListener=(r,e)=>{Nt[r]==null&&(Nt[r]=[]),Nt[r].push(e)};Er.removeEventListener=(r,e)=>{Nt[r]!=null&&(Nt[r]=Nt[r].filter(t=>t===e))};Er.dispatchEvent=function(r,e,t){Nt[r]!=null&&Nt[r].forEach(n=>n(e,t))};var Is=Er;var Bs="lock:worker:request-read",ks="lock:worker:release-read",Ts="lock:master:grant-read",Rs="lock:worker:request-write",Ps="lock:worker:release-write",Ls="lock:master:grant-write";var X2=(r=21)=>Math.random().toString().substring(2);var J2=(r,e,t,n,i)=>(s,o)=>{if(o.data.type!==t)return;let a={type:o.data.type,name:o.data.name,identifier:o.data.identifier};r.dispatchEvent(new MessageEvent(e,{data:{name:a.name,handler:async()=>{s.postMessage({type:i,name:a.name,identifier:a.identifier}),await new Promise(c=>{let l=u=>{if(u?.data==null)return;let f={type:u.data.type,name:u.data.name,identifier:u.data.identifier};f.type===n&&f.identifier===a.identifier&&(s.removeEventListener("message",l),c())};s.addEventListener("message",l)})}}}))},e0=(r,e,t,n)=>async()=>{let i=X2();return globalThis.postMessage({type:e,identifier:i,name:r}),new Promise(s=>{let o=a=>{if(a?.data==null)return;let c={type:a.data.type,identifier:a.data.identifier};c.type===t&&c.identifier===i&&(globalThis.removeEventListener("message",o),s(()=>{globalThis.postMessage({type:n,identifier:i,name:r})}))};globalThis.addEventListener("message",o)})},D4={singleProcess:!1},t0=r=>{if(r=Object.assign({},D4,r),!!globalThis.document||r.singleProcess){let t=new EventTarget;return Is.addEventListener("message",J2(t,"requestReadLock",Bs,ks,Ts)),Is.addEventListener("message",J2(t,"requestWriteLock",Rs,Ps,Ls)),t}return{isWorker:!0,readLock:t=>e0(t,Bs,Ts,ks),writeLock:t=>e0(t,Rs,Ls,Ps)}};var nr={},_t;async function Ns(r,e){let t,n=new Promise(i=>{t=i});return r.add(async()=>rr((async()=>{await new Promise(i=>{t(()=>{i()})})})(),{milliseconds:e.timeout})),n}var O4=(r,e)=>{if(_t.isWorker===!0)return{readLock:_t.readLock(r,e),writeLock:_t.writeLock(r,e)};let t=new vr({concurrency:1}),n;return{async readLock(){if(n!=null)return Ns(n,e);n=new vr({concurrency:e.concurrency,autoStart:!1});let i=n,s=Ns(n,e);return t.add(async()=>{i.start(),await i.onIdle().then(()=>{n===i&&(n=null)})}),s},async writeLock(){return n=null,Ns(t,e)}}},M4={name:"lock",concurrency:1/0,timeout:846e5,singleProcess:!1};function _s(r){let e=Object.assign({},M4,r);return _t==null&&(_t=t0(e),_t.isWorker!==!0&&(_t.addEventListener("requestReadLock",t=>{nr[t.data.name]!=null&&nr[t.data.name].readLock().then(async n=>t.data.handler().finally(()=>{n()}))}),_t.addEventListener("requestWriteLock",async t=>{nr[t.data.name]!=null&&nr[t.data.name].writeLock().then(async n=>t.data.handler().finally(()=>{n()}))}))),nr[e.name]==null&&(nr[e.name]=O4(e.name,e)),nr[e.name]}function se(){let r={};return r.promise=new Promise((e,t)=>{r.resolve=e,r.reject=t}),r}var Ar=1e3,Cs=60*Ar,Zn=60*Cs,r0=36*Zn,n0="/ipfs/kad/1.0.0",i0=48*Zn;var s0=24*Zn,o0=10,a0=16384,c0=Zn,hl=10*Ar;var Yn=20,Sr=3,l0=5*Cs,u0=Ar,f0=5*Ar,h0=5*Cs,d0=30*Ar,p0=180*Ar,Us=`${$2}-kad-dht`;function Ce(r=0){return new Uint8Array(r)}function ge(r=0){return new Uint8Array(r)}var V4=Math.pow(2,7),F4=Math.pow(2,14),H4=Math.pow(2,21),Ds=Math.pow(2,28),Os=Math.pow(2,35),Ms=Math.pow(2,42),Vs=Math.pow(2,49),z=128,Ae=127;function oe(r){if(r<V4)return 1;if(r<F4)return 2;if(r<H4)return 3;if(r<Ds)return 4;if(r<Os)return 5;if(r<Ms)return 6;if(r<Vs)return 7;if(Number.MAX_SAFE_INTEGER!=null&&r>Number.MAX_SAFE_INTEGER)throw new RangeError("Could not encode varint");return 8}function Fs(r,e,t=0){switch(oe(r)){case 8:e[t++]=r&255|z,r/=128;case 7:e[t++]=r&255|z,r/=128;case 6:e[t++]=r&255|z,r/=128;case 5:e[t++]=r&255|z,r/=128;case 4:e[t++]=r&255|z,r>>>=7;case 3:e[t++]=r&255|z,r>>>=7;case 2:e[t++]=r&255|z,r>>>=7;case 1:{e[t++]=r&255,r>>>=7;break}default:throw new Error("unreachable")}return e}function q4(r,e,t=0){switch(oe(r)){case 8:e.set(t++,r&255|z),r/=128;case 7:e.set(t++,r&255|z),r/=128;case 6:e.set(t++,r&255|z),r/=128;case 5:e.set(t++,r&255|z),r/=128;case 4:e.set(t++,r&255|z),r>>>=7;case 3:e.set(t++,r&255|z),r>>>=7;case 2:e.set(t++,r&255|z),r>>>=7;case 1:{e.set(t++,r&255),r>>>=7;break}default:throw new Error("unreachable")}return e}function Hs(r,e){let t=r[e],n=0;if(n+=t&Ae,t<z||(t=r[e+1],n+=(t&Ae)<<7,t<z)||(t=r[e+2],n+=(t&Ae)<<14,t<z)||(t=r[e+3],n+=(t&Ae)<<21,t<z)||(t=r[e+4],n+=(t&Ae)*Ds,t<z)||(t=r[e+5],n+=(t&Ae)*Os,t<z)||(t=r[e+6],n+=(t&Ae)*Ms,t<z)||(t=r[e+7],n+=(t&Ae)*Vs,t<z))return n;throw new RangeError("Could not decode varint")}function K4(r,e){let t=r.get(e),n=0;if(n+=t&Ae,t<z||(t=r.get(e+1),n+=(t&Ae)<<7,t<z)||(t=r.get(e+2),n+=(t&Ae)<<14,t<z)||(t=r.get(e+3),n+=(t&Ae)<<21,t<z)||(t=r.get(e+4),n+=(t&Ae)*Ds,t<z)||(t=r.get(e+5),n+=(t&Ae)*Os,t<z)||(t=r.get(e+6),n+=(t&Ae)*Ms,t<z)||(t=r.get(e+7),n+=(t&Ae)*Vs,t<z))return n;throw new RangeError("Could not decode varint")}function ze(r,e,t=0){return e==null&&(e=ge(oe(r))),e instanceof Uint8Array?Fs(r,e,t):q4(r,e,t)}function Ve(r,e=0){return r instanceof Uint8Array?Hs(r,e):K4(r,e)}var qs=new Float32Array([-0]),Ct=new Uint8Array(qs.buffer);function m0(r,e,t){qs[0]=r,e[t]=Ct[0],e[t+1]=Ct[1],e[t+2]=Ct[2],e[t+3]=Ct[3]}function g0(r,e){return Ct[0]=r[e],Ct[1]=r[e+1],Ct[2]=r[e+2],Ct[3]=r[e+3],qs[0]}var Ks=new Float64Array([-0]),Se=new Uint8Array(Ks.buffer);function y0(r,e,t){Ks[0]=r,e[t]=Se[0],e[t+1]=Se[1],e[t+2]=Se[2],e[t+3]=Se[3],e[t+4]=Se[4],e[t+5]=Se[5],e[t+6]=Se[6],e[t+7]=Se[7]}function w0(r,e){return Se[0]=r[e],Se[1]=r[e+1],Se[2]=r[e+2],Se[3]=r[e+3],Se[4]=r[e+4],Se[5]=r[e+5],Se[6]=r[e+6],Se[7]=r[e+7],Ks[0]}var $4=BigInt(Number.MAX_SAFE_INTEGER),z4=BigInt(Number.MIN_SAFE_INTEGER),Fe=class r{lo;hi;constructor(e,t){this.lo=e|0,this.hi=t|0}toNumber(e=!1){if(!e&&this.hi>>>31>0){let t=~this.lo+1>>>0,n=~this.hi>>>0;return t===0&&(n=n+1>>>0),-(t+n*4294967296)}return this.lo+this.hi*4294967296}toBigInt(e=!1){if(e)return BigInt(this.lo>>>0)+(BigInt(this.hi>>>0)<<32n);if(this.hi>>>31){let t=~this.lo+1>>>0,n=~this.hi>>>0;return t===0&&(n=n+1>>>0),-(BigInt(t)+(BigInt(n)<<32n))}return BigInt(this.lo>>>0)+(BigInt(this.hi>>>0)<<32n)}toString(e=!1){return this.toBigInt(e).toString()}zzEncode(){let e=this.hi>>31;return this.hi=((this.hi<<1|this.lo>>>31)^e)>>>0,this.lo=(this.lo<<1^e)>>>0,this}zzDecode(){let e=-(this.lo&1);return this.lo=((this.lo>>>1|this.hi<<31)^e)>>>0,this.hi=(this.hi>>>1^e)>>>0,this}length(){let e=this.lo,t=(this.lo>>>28|this.hi<<4)>>>0,n=this.hi>>>24;return n===0?t===0?e<16384?e<128?1:2:e<2097152?3:4:t<16384?t<128?5:6:t<2097152?7:8:n<128?9:10}static fromBigInt(e){if(e===0n)return sr;if(e<$4&&e>z4)return this.fromNumber(Number(e));let t=e<0n;t&&(e=-e);let n=e>>32n,i=e-(n<<32n);return t&&(n=~n|0n,i=~i|0n,++i>b0&&(i=0n,++n>b0&&(n=0n))),new r(Number(i),Number(n))}static fromNumber(e){if(e===0)return sr;let t=e<0;t&&(e=-e);let n=e>>>0,i=(e-n)/4294967296>>>0;return t&&(i=~i>>>0,n=~n>>>0,++n>4294967295&&(n=0,++i>4294967295&&(i=0))),new r(n,i)}static from(e){return typeof e=="number"?r.fromNumber(e):typeof e=="bigint"?r.fromBigInt(e):typeof e=="string"?r.fromBigInt(BigInt(e)):e.low!=null||e.high!=null?new r(e.low>>>0,e.high>>>0):sr}},sr=new Fe(0,0);sr.toBigInt=function(){return 0n};sr.zzEncode=sr.zzDecode=function(){return this};sr.length=function(){return 1};var b0=4294967296n;function x0(r){let e=0,t=0;for(let n=0;n<r.length;++n)t=r.charCodeAt(n),t<128?e+=1:t<2048?e+=2:(t&64512)===55296&&(r.charCodeAt(n+1)&64512)===56320?(++n,e+=4):e+=3;return e}function v0(r,e,t){if(t-e<1)return"";let i,s=[],o=0,a;for(;e<t;)a=r[e++],a<128?s[o++]=a:a>191&&a<224?s[o++]=(a&31)<<6|r[e++]&63:a>239&&a<365?(a=((a&7)<<18|(r[e++]&63)<<12|(r[e++]&63)<<6|r[e++]&63)-65536,s[o++]=55296+(a>>10),s[o++]=56320+(a&1023)):s[o++]=(a&15)<<12|(r[e++]&63)<<6|r[e++]&63,o>8191&&((i??(i=[])).push(String.fromCharCode.apply(String,s)),o=0);return i!=null?(o>0&&i.push(String.fromCharCode.apply(String,s.slice(0,o))),i.join("")):String.fromCharCode.apply(String,s.slice(0,o))}function $s(r,e,t){let n=t,i,s;for(let o=0;o<r.length;++o)i=r.charCodeAt(o),i<128?e[t++]=i:i<2048?(e[t++]=i>>6|192,e[t++]=i&63|128):(i&64512)===55296&&((s=r.charCodeAt(o+1))&64512)===56320?(i=65536+((i&1023)<<10)+(s&1023),++o,e[t++]=i>>18|240,e[t++]=i>>12&63|128,e[t++]=i>>6&63|128,e[t++]=i&63|128):(e[t++]=i>>12|224,e[t++]=i>>6&63|128,e[t++]=i&63|128);return t-n}function We(r,e){return RangeError(`index out of range: ${r.pos} + ${e??1} > ${r.len}`)}function Xn(r,e){return(r[e-4]|r[e-3]<<8|r[e-2]<<16|r[e-1]<<24)>>>0}var zs=class{buf;pos;len;_slice=Uint8Array.prototype.subarray;constructor(e){this.buf=e,this.pos=0,this.len=e.length}uint32(){let e=4294967295;if(e=(this.buf[this.pos]&127)>>>0,this.buf[this.pos++]<128||(e=(e|(this.buf[this.pos]&127)<<7)>>>0,this.buf[this.pos++]<128)||(e=(e|(this.buf[this.pos]&127)<<14)>>>0,this.buf[this.pos++]<128)||(e=(e|(this.buf[this.pos]&127)<<21)>>>0,this.buf[this.pos++]<128)||(e=(e|(this.buf[this.pos]&15)<<28)>>>0,this.buf[this.pos++]<128))return e;if((this.pos+=5)>this.len)throw this.pos=this.len,We(this,10);return e}int32(){return this.uint32()|0}sint32(){let e=this.uint32();return e>>>1^-(e&1)|0}bool(){return this.uint32()!==0}fixed32(){if(this.pos+4>this.len)throw We(this,4);return Xn(this.buf,this.pos+=4)}sfixed32(){if(this.pos+4>this.len)throw We(this,4);return Xn(this.buf,this.pos+=4)|0}float(){if(this.pos+4>this.len)throw We(this,4);let e=g0(this.buf,this.pos);return this.pos+=4,e}double(){if(this.pos+8>this.len)throw We(this,4);let e=w0(this.buf,this.pos);return this.pos+=8,e}bytes(){let e=this.uint32(),t=this.pos,n=this.pos+e;if(n>this.len)throw We(this,e);return this.pos+=e,t===n?new Uint8Array(0):this.buf.subarray(t,n)}string(){let e=this.bytes();return v0(e,0,e.length)}skip(e){if(typeof e=="number"){if(this.pos+e>this.len)throw We(this,e);this.pos+=e}else do if(this.pos>=this.len)throw We(this);while(this.buf[this.pos++]&128);return this}skipType(e){switch(e){case 0:this.skip();break;case 1:this.skip(8);break;case 2:this.skip(this.uint32());break;case 3:for(;(e=this.uint32()&7)!==4;)this.skipType(e);break;case 5:this.skip(4);break;default:throw Error(`invalid wire type ${e} at offset ${this.pos}`)}return this}readLongVarint(){let e=new Fe(0,0),t=0;if(this.len-this.pos>4){for(;t<4;++t)if(e.lo=(e.lo|(this.buf[this.pos]&127)<<t*7)>>>0,this.buf[this.pos++]<128)return e;if(e.lo=(e.lo|(this.buf[this.pos]&127)<<28)>>>0,e.hi=(e.hi|(this.buf[this.pos]&127)>>4)>>>0,this.buf[this.pos++]<128)return e;t=0}else{for(;t<3;++t){if(this.pos>=this.len)throw We(this);if(e.lo=(e.lo|(this.buf[this.pos]&127)<<t*7)>>>0,this.buf[this.pos++]<128)return e}return e.lo=(e.lo|(this.buf[this.pos++]&127)<<t*7)>>>0,e}if(this.len-this.pos>4){for(;t<5;++t)if(e.hi=(e.hi|(this.buf[this.pos]&127)<<t*7+3)>>>0,this.buf[this.pos++]<128)return e}else for(;t<5;++t){if(this.pos>=this.len)throw We(this);if(e.hi=(e.hi|(this.buf[this.pos]&127)<<t*7+3)>>>0,this.buf[this.pos++]<128)return e}throw Error("invalid varint encoding")}readFixed64(){if(this.pos+8>this.len)throw We(this,8);let e=Xn(this.buf,this.pos+=4),t=Xn(this.buf,this.pos+=4);return new Fe(e,t)}int64(){return this.readLongVarint().toBigInt()}int64Number(){return this.readLongVarint().toNumber()}int64String(){return this.readLongVarint().toString()}uint64(){return this.readLongVarint().toBigInt(!0)}uint64Number(){let e=Hs(this.buf,this.pos);return this.pos+=oe(e),e}uint64String(){return this.readLongVarint().toString(!0)}sint64(){return this.readLongVarint().zzDecode().toBigInt()}sint64Number(){return this.readLongVarint().zzDecode().toNumber()}sint64String(){return this.readLongVarint().zzDecode().toString()}fixed64(){return this.readFixed64().toBigInt()}fixed64Number(){return this.readFixed64().toNumber()}fixed64String(){return this.readFixed64().toString()}sfixed64(){return this.readFixed64().toBigInt()}sfixed64Number(){return this.readFixed64().toNumber()}sfixed64String(){return this.readFixed64().toString()}};function Gs(r){return new zs(r instanceof Uint8Array?r:r.subarray())}function tt(r,e,t){let n=Gs(r);return e.decode(n,void 0,t)}var Ys={};Te(Ys,{base10:()=>Y4});var Sl=new Uint8Array(0);function A0(r,e){if(r===e)return!0;if(r.byteLength!==e.byteLength)return!1;for(let t=0;t<r.byteLength;t++)if(r[t]!==e[t])return!1;return!0}function dt(r){if(r instanceof Uint8Array&&r.constructor.name==="Uint8Array")return r;if(r instanceof ArrayBuffer)return new Uint8Array(r);if(ArrayBuffer.isView(r))return new Uint8Array(r.buffer,r.byteOffset,r.byteLength);throw new Error("Unknown type, must be binary type")}function S0(r){return new TextEncoder().encode(r)}function I0(r){return new TextDecoder().decode(r)}function G4(r,e){if(r.length>=255)throw new TypeError("Alphabet too long");for(var t=new Uint8Array(256),n=0;n<t.length;n++)t[n]=255;for(var i=0;i<r.length;i++){var s=r.charAt(i),o=s.charCodeAt(0);if(t[o]!==255)throw new TypeError(s+" is ambiguous");t[o]=i}var a=r.length,c=r.charAt(0),l=Math.log(a)/Math.log(256),u=Math.log(256)/Math.log(a);function f(y){if(y instanceof Uint8Array||(ArrayBuffer.isView(y)?y=new Uint8Array(y.buffer,y.byteOffset,y.byteLength):Array.isArray(y)&&(y=Uint8Array.from(y))),!(y instanceof Uint8Array))throw new TypeError("Expected Uint8Array");if(y.length===0)return"";for(var w=0,d=0,x=0,E=y.length;x!==E&&y[x]===0;)x++,w++;for(var m=(E-x)*u+1>>>0,A=new Uint8Array(m);x!==E;){for(var R=y[x],T=0,B=m-1;(R!==0||T<d)&&B!==-1;B--,T++)R+=256*A[B]>>>0,A[B]=R%a>>>0,R=R/a>>>0;if(R!==0)throw new Error("Non-zero carry");d=T,x++}for(var k=m-d;k!==m&&A[k]===0;)k++;for(var N=c.repeat(w);k<m;++k)N+=r.charAt(A[k]);return N}function h(y){if(typeof y!="string")throw new TypeError("Expected String");if(y.length===0)return new Uint8Array;var w=0;if(y[w]!==" "){for(var d=0,x=0;y[w]===c;)d++,w++;for(var E=(y.length-w)*l+1>>>0,m=new Uint8Array(E);y[w];){var A=t[y.charCodeAt(w)];if(A===255)return;for(var R=0,T=E-1;(A!==0||R<x)&&T!==-1;T--,R++)A+=a*m[T]>>>0,m[T]=A%256>>>0,A=A/256>>>0;if(A!==0)throw new Error("Non-zero carry");x=R,w++}if(y[w]!==" "){for(var B=E-x;B!==E&&m[B]===0;)B++;for(var k=new Uint8Array(d+(E-B)),N=d;B!==E;)k[N++]=m[B++];return k}}}function p(y){var w=h(y);if(w)return w;throw new Error(`Non-${e} character`)}return{encode:f,decodeUnsafe:h,decode:p}}var j4=G4,W4=j4,k0=W4;var js=class{name;prefix;baseEncode;constructor(e,t,n){this.name=e,this.prefix=t,this.baseEncode=n}encode(e){if(e instanceof Uint8Array)return`${this.prefix}${this.baseEncode(e)}`;throw Error("Unknown type, must be binary type")}},Ws=class{name;prefix;baseDecode;prefixCodePoint;constructor(e,t,n){this.name=e,this.prefix=t;let i=t.codePointAt(0);if(i===void 0)throw new Error("Invalid prefix character");this.prefixCodePoint=i,this.baseDecode=n}decode(e){if(typeof e=="string"){if(e.codePointAt(0)!==this.prefixCodePoint)throw Error(`Unable to decode multibase string ${JSON.stringify(e)}, ${this.name} decoder only supports inputs prefixed with ${this.prefix}`);return this.baseDecode(e.slice(this.prefix.length))}else throw Error("Can only multibase decode strings")}or(e){return T0(this,e)}},Qs=class{decoders;constructor(e){this.decoders=e}or(e){return T0(this,e)}decode(e){let t=e[0],n=this.decoders[t];if(n!=null)return n.decode(e);throw RangeError(`Unable to decode multibase string ${JSON.stringify(e)}, only inputs prefixed with ${Object.keys(this.decoders)} are supported`)}};function T0(r,e){return new Qs({...r.decoders??{[r.prefix]:r},...e.decoders??{[e.prefix]:e}})}var Zs=class{name;prefix;baseEncode;baseDecode;encoder;decoder;constructor(e,t,n,i){this.name=e,this.prefix=t,this.baseEncode=n,this.baseDecode=i,this.encoder=new js(e,t,n),this.decoder=new Ws(e,t,i)}encode(e){return this.encoder.encode(e)}decode(e){return this.decoder.decode(e)}};function Ir({name:r,prefix:e,encode:t,decode:n}){return new Zs(r,e,t,n)}function Ut({name:r,prefix:e,alphabet:t}){let{encode:n,decode:i}=k0(t,r);return Ir({prefix:e,name:r,encode:n,decode:s=>dt(i(s))})}function Q4(r,e,t,n){let i={};for(let u=0;u<e.length;++u)i[e[u]]=u;let s=r.length;for(;r[s-1]==="=";)--s;let o=new Uint8Array(s*t/8|0),a=0,c=0,l=0;for(let u=0;u<s;++u){let f=i[r[u]];if(f===void 0)throw new SyntaxError(`Non-${n} character`);c=c<<t|f,a+=t,a>=8&&(a-=8,o[l++]=255&c>>a)}if(a>=t||255&c<<8-a)throw new SyntaxError("Unexpected end of data");return o}function Z4(r,e,t){let n=e[e.length-1]==="=",i=(1<<t)-1,s="",o=0,a=0;for(let c=0;c<r.length;++c)for(a=a<<8|r[c],o+=8;o>t;)o-=t,s+=e[i&a>>o];if(o!==0&&(s+=e[i&a<<t-o]),n)for(;s.length*t&7;)s+="=";return s}function ne({name:r,prefix:e,bitsPerChar:t,alphabet:n}){return Ir({prefix:e,name:r,encode(i){return Z4(i,n,t)},decode(i){return Q4(i,n,t,r)}})}var Y4=Ut({prefix:"9",name:"base10",alphabet:"0123456789"});var Xs={};Te(Xs,{base16:()=>X4,base16upper:()=>J4});var X4=ne({prefix:"f",name:"base16",alphabet:"0123456789abcdef",bitsPerChar:4}),J4=ne({prefix:"F",name:"base16upper",alphabet:"0123456789ABCDEF",bitsPerChar:4});var Js={};Te(Js,{base2:()=>e5});var e5=ne({prefix:"0",name:"base2",alphabet:"01",bitsPerChar:1});var eo={};Te(eo,{base256emoji:()=>s5});var R0=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}"),t5=R0.reduce((r,e,t)=>(r[t]=e,r),[]),r5=R0.reduce((r,e,t)=>{let n=e.codePointAt(0);if(n==null)throw new Error(`Invalid character: ${e}`);return r[n]=t,r},[]);function n5(r){return r.reduce((e,t)=>(e+=t5[t],e),"")}function i5(r){let e=[];for(let t of r){let n=t.codePointAt(0);if(n==null)throw new Error(`Invalid character: ${t}`);let i=r5[n];if(i==null)throw new Error(`Non-base256emoji character: ${t}`);e.push(i)}return new Uint8Array(e)}var s5=Ir({prefix:"\u{1F680}",name:"base256emoji",encode:n5,decode:i5});var to={};Te(to,{base32:()=>pt,base32hex:()=>l5,base32hexpad:()=>f5,base32hexpadupper:()=>h5,base32hexupper:()=>u5,base32pad:()=>a5,base32padupper:()=>c5,base32upper:()=>o5,base32z:()=>d5});var pt=ne({prefix:"b",name:"base32",alphabet:"abcdefghijklmnopqrstuvwxyz234567",bitsPerChar:5}),o5=ne({prefix:"B",name:"base32upper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567",bitsPerChar:5}),a5=ne({prefix:"c",name:"base32pad",alphabet:"abcdefghijklmnopqrstuvwxyz234567=",bitsPerChar:5}),c5=ne({prefix:"C",name:"base32padupper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=",bitsPerChar:5}),l5=ne({prefix:"v",name:"base32hex",alphabet:"0123456789abcdefghijklmnopqrstuv",bitsPerChar:5}),u5=ne({prefix:"V",name:"base32hexupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV",bitsPerChar:5}),f5=ne({prefix:"t",name:"base32hexpad",alphabet:"0123456789abcdefghijklmnopqrstuv=",bitsPerChar:5}),h5=ne({prefix:"T",name:"base32hexpadupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV=",bitsPerChar:5}),d5=ne({prefix:"h",name:"base32z",alphabet:"ybndrfg8ejkmcpqxot1uwisza345h769",bitsPerChar:5});var ro={};Te(ro,{base36:()=>ln,base36upper:()=>p5});var ln=Ut({prefix:"k",name:"base36",alphabet:"0123456789abcdefghijklmnopqrstuvwxyz"}),p5=Ut({prefix:"K",name:"base36upper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"});var no={};Te(no,{base58btc:()=>Y,base58flickr:()=>m5});var Y=Ut({name:"base58btc",prefix:"z",alphabet:"123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"}),m5=Ut({name:"base58flickr",prefix:"Z",alphabet:"123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ"});var io={};Te(io,{base64:()=>g5,base64pad:()=>y5,base64url:()=>w5,base64urlpad:()=>b5});var g5=ne({prefix:"m",name:"base64",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",bitsPerChar:6}),y5=ne({prefix:"M",name:"base64pad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",bitsPerChar:6}),w5=ne({prefix:"u",name:"base64url",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_",bitsPerChar:6}),b5=ne({prefix:"U",name:"base64urlpad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_=",bitsPerChar:6});var so={};Te(so,{base8:()=>x5});var x5=ne({prefix:"7",name:"base8",alphabet:"01234567",bitsPerChar:3});var oo={};Te(oo,{identity:()=>v5});var v5=Ir({prefix:"\0",name:"identity",encode:r=>I0(r),decode:r=>S0(r)});var Fl=new TextEncoder,Hl=new TextDecoder;var P0=85;var co={};Te(co,{identity:()=>mt});var A5=C0,N0=128,S5=127,I5=~S5,B5=Math.pow(2,31);function C0(r,e,t){e=e||[],t=t||0;for(var n=t;r>=B5;)e[t++]=r&255|N0,r/=128;for(;r&I5;)e[t++]=r&255|N0,r>>>=7;return e[t]=r|0,C0.bytes=t-n+1,e}var k5=ao,T5=128,_0=127;function ao(r,n){var t=0,n=n||0,i=0,s=n,o,a=r.length;do{if(s>=a)throw ao.bytes=0,new RangeError("Could not decode varint");o=r[s++],t+=i<28?(o&_0)<<i:(o&_0)*Math.pow(2,i),i+=7}while(o>=T5);return ao.bytes=s-n,t}var R5=Math.pow(2,7),P5=Math.pow(2,14),L5=Math.pow(2,21),N5=Math.pow(2,28),_5=Math.pow(2,35),C5=Math.pow(2,42),U5=Math.pow(2,49),D5=Math.pow(2,56),O5=Math.pow(2,63),M5=function(r){return r<R5?1:r<P5?2:r<L5?3:r<N5?4:r<_5?5:r<C5?6:r<U5?7:r<D5?8:r<O5?9:10},V5={encode:A5,decode:k5,encodingLength:M5},F5=V5,un=F5;function fn(r,e=0){return[un.decode(r,e),un.decode.bytes]}function Br(r,e,t=0){return un.encode(r,e,t),e}function kr(r){return un.encodingLength(r)}function Qe(r,e){let t=e.byteLength,n=kr(r),i=n+kr(t),s=new Uint8Array(i+t);return Br(r,s,0),Br(t,s,n),s.set(e,i),new Tr(r,t,e,s)}function ae(r){let e=dt(r),[t,n]=fn(e),[i,s]=fn(e.subarray(n)),o=e.subarray(n+s);if(o.byteLength!==i)throw new Error("Incorrect length");return new Tr(t,i,o,e)}function U0(r,e){if(r===e)return!0;{let t=e;return r.code===t.code&&r.size===t.size&&t.bytes instanceof Uint8Array&&A0(r.bytes,t.bytes)}}var Tr=class{code;size;digest;bytes;constructor(e,t,n,i){this.code=e,this.size=t,this.digest=n,this.bytes=i}};var D0=0,H5="identity",O0=dt;function q5(r){return Qe(D0,O0(r))}var mt={code:D0,name:H5,encode:O0,digest:q5};var fo={};Te(fo,{sha256:()=>gt,sha512:()=>K5});function uo({name:r,code:e,encode:t}){return new lo(r,e,t)}var lo=class{name;code;encode;constructor(e,t,n){this.name=e,this.code=t,this.encode=n}digest(e){if(e instanceof Uint8Array){let t=this.encode(e);return t instanceof Uint8Array?Qe(this.code,t):t.then(n=>Qe(this.code,n))}else throw Error("Unknown type, must be binary type")}};function V0(r){return async e=>new Uint8Array(await crypto.subtle.digest(r,e))}var gt=uo({name:"sha2-256",code:18,encode:V0("SHA-256")}),K5=uo({name:"sha2-512",code:19,encode:V0("SHA-512")});function F0(r,e){let{bytes:t,version:n}=r;switch(n){case 0:return z5(t,ho(r),e??Y.encoder);default:return G5(t,ho(r),e??pt.encoder)}}var H0=new WeakMap;function ho(r){let e=H0.get(r);if(e==null){let t=new Map;return H0.set(r,t),t}return e}var re=class r{code;version;multihash;bytes;"/";constructor(e,t,n,i){this.code=t,this.version=e,this.multihash=n,this.bytes=i,this["/"]=i}get asCID(){return this}get byteOffset(){return this.bytes.byteOffset}get byteLength(){return this.bytes.byteLength}toV0(){switch(this.version){case 0:return this;case 1:{let{code:e,multihash:t}=this;if(e!==hn)throw new Error("Cannot convert a non dag-pb CID to CIDv0");if(t.code!==j5)throw new Error("Cannot convert non sha2-256 multihash CID to CIDv0");return r.createV0(t)}default:throw Error(`Can not convert CID version ${this.version} to version 0. This is a bug please report`)}}toV1(){switch(this.version){case 0:{let{code:e,digest:t}=this.multihash,n=Qe(e,t);return r.createV1(this.code,n)}case 1:return this;default:throw Error(`Can not convert CID version ${this.version} to version 1. This is a bug please report`)}}equals(e){return r.equals(this,e)}static equals(e,t){let n=t;return n!=null&&e.code===n.code&&e.version===n.version&&U0(e.multihash,n.multihash)}toString(e){return F0(this,e)}toJSON(){return{"/":F0(this)}}link(){return this}[Symbol.toStringTag]="CID";[Symbol.for("nodejs.util.inspect.custom")](){return`CID(${this.toString()})`}static asCID(e){if(e==null)return null;let t=e;if(t instanceof r)return t;if(t["/"]!=null&&t["/"]===t.bytes||t.asCID===t){let{version:n,code:i,multihash:s,bytes:o}=t;return new r(n,i,s,o??q0(n,i,s.bytes))}else if(t[W5]===!0){let{version:n,multihash:i,code:s}=t,o=ae(i);return r.create(n,s,o)}else return null}static create(e,t,n){if(typeof t!="number")throw new Error("String codecs are no longer supported");if(!(n.bytes instanceof Uint8Array))throw new Error("Invalid digest");switch(e){case 0:{if(t!==hn)throw new Error(`Version 0 CID must use dag-pb (code: ${hn}) block encoding`);return new r(e,t,n,n.bytes)}case 1:{let i=q0(e,t,n.bytes);return new r(e,t,n,i)}default:throw new Error("Invalid version")}}static createV0(e){return r.create(0,hn,e)}static createV1(e,t){return r.create(1,e,t)}static decode(e){let[t,n]=r.decodeFirst(e);if(n.length!==0)throw new Error("Incorrect length");return t}static decodeFirst(e){let t=r.inspectBytes(e),n=t.size-t.multihashSize,i=dt(e.subarray(n,n+t.multihashSize));if(i.byteLength!==t.multihashSize)throw new Error("Incorrect length");let s=i.subarray(t.multihashSize-t.digestSize),o=new Tr(t.multihashCode,t.digestSize,s,i);return[t.version===0?r.createV0(o):r.createV1(t.codec,o),e.subarray(t.size)]}static inspectBytes(e){let t=0,n=()=>{let[f,h]=fn(e.subarray(t));return t+=h,f},i=n(),s=hn;if(i===18?(i=0,t=0):s=n(),i!==0&&i!==1)throw new RangeError(`Invalid CID version ${i}`);let o=t,a=n(),c=n(),l=t+c,u=l-o;return{version:i,codec:s,multihashCode:a,digestSize:c,multihashSize:u,size:l}}static parse(e,t){let[n,i]=$5(e,t),s=r.decode(i);if(s.version===0&&e[0]!=="Q")throw Error("Version 0 CID string must not include multibase prefix");return ho(s).set(n,e),s}};function $5(r,e){switch(r[0]){case"Q":{let t=e??Y;return[Y.prefix,t.decode(`${Y.prefix}${r}`)]}case Y.prefix:{let t=e??Y;return[Y.prefix,t.decode(r)]}case pt.prefix:{let t=e??pt;return[pt.prefix,t.decode(r)]}case ln.prefix:{let t=e??ln;return[ln.prefix,t.decode(r)]}default:{if(e==null)throw Error("To parse non base32, base36 or base58btc encoded CID multibase decoder must be provided");return[r[0],e.decode(r)]}}}function z5(r,e,t){let{prefix:n}=t;if(n!==Y.prefix)throw Error(`Cannot string encode V0 in ${t.name} encoding`);let i=e.get(n);if(i==null){let s=t.encode(r).slice(1);return e.set(n,s),s}else return i}function G5(r,e,t){let{prefix:n}=t,i=e.get(n);if(i==null){let s=t.encode(r);return e.set(n,s),s}else return i}var hn=112,j5=18;function q0(r,e,t){let n=kr(r),i=n+kr(e),s=new Uint8Array(i+t.byteLength);return Br(r,s,0),Br(e,s,n),s.set(t,i),s}var W5=Symbol.for("@ipld/js-cid/CID");var dn={...oo,...Js,...so,...Ys,...Xs,...to,...ro,...no,...io,...eo},l9={...fo,...co};function $0(r,e,t,n){return{name:r,prefix:e,encoder:{name:r,prefix:e,encode:t},decoder:{decode:n}}}var K0=$0("utf8","u",r=>"u"+new TextDecoder("utf8").decode(r),r=>new TextEncoder().encode(r.substring(1))),po=$0("ascii","a",r=>{let e="a";for(let t=0;t<r.length;t++)e+=String.fromCharCode(r[t]);return e},r=>{r=r.substring(1);let e=ge(r.length);for(let t=0;t<r.length;t++)e[t]=r.charCodeAt(t);return e}),Q5={utf8:K0,"utf-8":K0,hex:dn.base16,latin1:po,ascii:po,binary:po,...dn},e1=Q5;function Q(r,e="utf8"){let t=e1[e];if(t==null)throw new Error(`Unsupported encoding "${e}"`);return t.decoder.decode(`${t.prefix}${r}`)}function mo(r){let e=r??8192,t=e>>>1,n,i=e;return function(o){if(o<1||o>t)return ge(o);i+o>e&&(n=ge(e),i=0);let a=n.subarray(i,i+=o);return i&7&&(i=(i|7)+1),a}}var or=class{fn;len;next;val;constructor(e,t,n){this.fn=e,this.len=t,this.next=void 0,this.val=n}};function go(){}var wo=class{head;tail;len;next;constructor(e){this.head=e.head,this.tail=e.tail,this.len=e.len,this.next=e.states}},Z5=mo();function Y5(r){return globalThis.Buffer!=null?ge(r):Z5(r)}var mn=class{len;head;tail;states;constructor(){this.len=0,this.head=new or(go,0,0),this.tail=this.head,this.states=null}_push(e,t,n){return this.tail=this.tail.next=new or(e,t,n),this.len+=t,this}uint32(e){return this.len+=(this.tail=this.tail.next=new bo((e=e>>>0)<128?1:e<16384?2:e<2097152?3:e<268435456?4:5,e)).len,this}int32(e){return e<0?this._push(t1,10,Fe.fromNumber(e)):this.uint32(e)}sint32(e){return this.uint32((e<<1^e>>31)>>>0)}uint64(e){let t=Fe.fromBigInt(e);return this._push(t1,t.length(),t)}uint64Number(e){return this._push(Fs,oe(e),e)}uint64String(e){return this.uint64(BigInt(e))}int64(e){return this.uint64(e)}int64Number(e){return this.uint64Number(e)}int64String(e){return this.uint64String(e)}sint64(e){let t=Fe.fromBigInt(e).zzEncode();return this._push(t1,t.length(),t)}sint64Number(e){let t=Fe.fromNumber(e).zzEncode();return this._push(t1,t.length(),t)}sint64String(e){return this.sint64(BigInt(e))}bool(e){return this._push(yo,1,e?1:0)}fixed32(e){return this._push(pn,4,e>>>0)}sfixed32(e){return this.fixed32(e)}fixed64(e){let t=Fe.fromBigInt(e);return this._push(pn,4,t.lo)._push(pn,4,t.hi)}fixed64Number(e){let t=Fe.fromNumber(e);return this._push(pn,4,t.lo)._push(pn,4,t.hi)}fixed64String(e){return this.fixed64(BigInt(e))}sfixed64(e){return this.fixed64(e)}sfixed64Number(e){return this.fixed64Number(e)}sfixed64String(e){return this.fixed64String(e)}float(e){return this._push(m0,4,e)}double(e){return this._push(y0,8,e)}bytes(e){let t=e.length>>>0;return t===0?this._push(yo,1,0):this.uint32(t)._push(J5,t,e)}string(e){let t=x0(e);return t!==0?this.uint32(t)._push($s,t,e):this._push(yo,1,0)}fork(){return this.states=new wo(this),this.head=this.tail=new or(go,0,0),this.len=0,this}reset(){return this.states!=null?(this.head=this.states.head,this.tail=this.states.tail,this.len=this.states.len,this.states=this.states.next):(this.head=this.tail=new or(go,0,0),this.len=0),this}ldelim(){let e=this.head,t=this.tail,n=this.len;return this.reset().uint32(n),n!==0&&(this.tail.next=e.next,this.tail=t,this.len+=n),this}finish(){let e=this.head.next,t=Y5(this.len),n=0;for(;e!=null;)e.fn(e.val,t,n),n+=e.len,e=e.next;return t}};function yo(r,e,t){e[t]=r&255}function X5(r,e,t){for(;r>127;)e[t++]=r&127|128,r>>>=7;e[t]=r}var bo=class extends or{next;constructor(e,t){super(X5,e,t),this.next=void 0}};function t1(r,e,t){for(;r.hi!==0;)e[t++]=r.lo&127|128,r.lo=(r.lo>>>7|r.hi<<25)>>>0,r.hi>>>=7;for(;r.lo>127;)e[t++]=r.lo&127|128,r.lo=r.lo>>>7;e[t++]=r.lo}function pn(r,e,t){e[t]=r&255,e[t+1]=r>>>8&255,e[t+2]=r>>>16&255,e[t+3]=r>>>24}function J5(r,e,t){e.set(r,t)}globalThis.Buffer!=null&&(mn.prototype.bytes=function(r){let e=r.length>>>0;return this.uint32(e),e>0&&this._push(e6,e,r),this},mn.prototype.string=function(r){let e=globalThis.Buffer.byteLength(r);return this.uint32(e),e>0&&this._push(t6,e,r),this});function e6(r,e,t){e.set(r,t)}function t6(r,e,t){r.length<40?$s(r,e,t):e.utf8Write!=null?e.utf8Write(r,t):e.set(Q(r),t)}function xo(){return new mn}function rt(r,e){let t=xo();return e.encode(r,t,{lengthDelimited:!1}),t.finish()}var Rr;(function(r){r[r.VARINT=0]="VARINT",r[r.BIT64=1]="BIT64",r[r.LENGTH_DELIMITED=2]="LENGTH_DELIMITED",r[r.START_GROUP=3]="START_GROUP",r[r.END_GROUP=4]="END_GROUP",r[r.BIT32=5]="BIT32"})(Rr||(Rr={}));function r1(r,e,t,n){return{name:r,type:e,encode:t,decode:n}}function Pr(r){function e(i){if(r[i.toString()]==null)throw new Error("Invalid enum value");return r[i]}let t=function(s,o){let a=e(s);o.int32(a)},n=function(s){let o=s.int32();return e(o)};return r1("enum",Rr.VARINT,t,n)}function nt(r,e){return r1("message",Rr.LENGTH_DELIMITED,r,e)}var Lr=class extends Error{code="ERR_MAX_LENGTH";name="MaxLengthError"};var gn;(function(r){let e;r.codec=()=>(e==null&&(e=nt((t,n,i={})=>{i.lengthDelimited!==!1&&n.fork(),t.key!=null&&t.key.byteLength>0&&(n.uint32(10),n.bytes(t.key)),t.value!=null&&t.value.byteLength>0&&(n.uint32(18),n.bytes(t.value)),t.timeReceived!=null&&t.timeReceived!==""&&(n.uint32(42),n.string(t.timeReceived)),i.lengthDelimited!==!1&&n.ldelim()},(t,n,i={})=>{let s={key:Ce(0),value:Ce(0),timeReceived:""},o=n==null?t.len:t.pos+n;for(;t.pos<o;){let a=t.uint32();switch(a>>>3){case 1:{s.key=t.bytes();break}case 2:{s.value=t.bytes();break}case 5:{s.timeReceived=t.string();break}default:{t.skipType(a&7);break}}}return s})),e),r.encode=t=>rt(t,r.codec()),r.decode=(t,n)=>tt(t,r.codec(),n)})(gn||(gn={}));function z0(r){let e=r.getUTCFullYear(),t=String(r.getUTCMonth()+1).padStart(2,"0"),n=String(r.getUTCDate()).padStart(2,"0"),i=String(r.getUTCHours()).padStart(2,"0"),s=String(r.getUTCMinutes()).padStart(2,"0"),o=String(r.getUTCSeconds()).padStart(2,"0"),a=r.getUTCMilliseconds(),c=String(a*1e3*1e3).padStart(9,"0");return`${e}-${t}-${n}T${i}:${s}:${o}.${c}Z`}function G0(r){let e=new RegExp("(\\d{4})-(\\d{2})-(\\d{2})T(\\d{2}):(\\d{2}):(\\d{2})\\.(\\d+)Z"),t=String(r).trim().match(e);if(t==null)throw new Error("Invalid format");let n=parseInt(t[1],10),i=parseInt(t[2],10)-1,s=parseInt(t[3],10),o=parseInt(t[4],10),a=parseInt(t[5],10),c=parseInt(t[6],10),l=parseInt(t[7].slice(0,-6),10);return new Date(Date.UTC(n,i,s,o,a,c,l))}var fe=class r{key;value;timeReceived;constructor(e,t,n){if(!(e instanceof Uint8Array))throw new Error("key must be a Uint8Array");if(!(t instanceof Uint8Array))throw new Error("value must be a Uint8Array");this.key=e,this.value=t,this.timeReceived=n}serialize(){return gn.encode(this.prepareSerialize())}prepareSerialize(){return{key:this.key,value:this.value,timeReceived:z0(this.timeReceived)}}static deserialize(e){let t=gn.decode(e);return new r(t.key,t.value,new Date(t.timeReceived))}static fromDeserialized(e){let t=G0(e.timeReceived);if(e.key==null)throw new Error("key missing from deserialized object");if(e.value==null)throw new Error("value missing from deserialized object");return new r(e.key,e.value,t)}};function n6(r){let[e,t]=r[Symbol.asyncIterator]!=null?[r[Symbol.asyncIterator](),Symbol.asyncIterator]:[r[Symbol.iterator](),Symbol.iterator],n=[];return{peek:()=>e.next(),push:i=>{n.push(i)},next:()=>n.length>0?{done:!1,value:n.shift()}:e.next(),[t](){return this}}}var j0=n6;function i6(r){return r[Symbol.asyncIterator]!=null}function s6(r,e){let t=0;if(i6(r))return async function*(){for await(let c of r)yield e(c,t++)}();let n=j0(r),{value:i,done:s}=n.next();if(s===!0)return function*(){}();let o=e(i,t++);if(typeof o.then=="function")return async function*(){yield await o;for await(let c of n)yield e(c,t++)}();let a=e;return function*(){yield o;for(let c of n)yield a(c,t++)}()}var Dt=s6;var n1=globalThis.CustomEvent??Event;async function*ar(r,e={}){let t=e.concurrency??1/0;t<1&&(t=1/0);let n=e.ordered==null?!1:e.ordered,i=new EventTarget,s=[],o=se(),a=se(),c=!1,l,u=!1;i.addEventListener("task-complete",()=>{a.resolve()}),Promise.resolve().then(async()=>{try{for await(let y of r){if(s.length===t&&(o=se(),await o.promise),u)break;let w={done:!1};s.push(w),y().then(d=>{w.done=!0,w.ok=!0,w.value=d,i.dispatchEvent(new n1("task-complete"))},d=>{w.done=!0,w.err=d,i.dispatchEvent(new n1("task-complete"))})}c=!0,i.dispatchEvent(new n1("task-complete"))}catch(y){l=y,i.dispatchEvent(new n1("task-complete"))}});function f(){return n?s[0]?.done:!!s.find(y=>y.done)}function*h(){for(;s.length>0&&s[0].done;){let y=s[0];if(s.shift(),y.ok)yield y.value;else throw u=!0,o.resolve(),y.err;o.resolve()}}function*p(){for(;f();)for(let y=0;y<s.length;y++)if(s[y].done){let w=s[y];if(s.splice(y,1),y--,w.ok)yield w.value;else throw u=!0,o.resolve(),w.err;o.resolve()}}for(;;){if(f()||(a=se(),await a.promise),l!=null)throw l;if(n?yield*h():yield*p(),c&&s.length===0)break}}var i1=class{buffer;mask;top;btm;next;constructor(e){if(!(e>0)||e-1&e)throw new Error("Max size for a FixedFIFO should be a power of two");this.buffer=new Array(e),this.mask=e-1,this.top=0,this.btm=0,this.next=null}push(e){return this.buffer[this.top]!==void 0?!1:(this.buffer[this.top]=e,this.top=this.top+1&this.mask,!0)}shift(){let e=this.buffer[this.btm];if(e!==void 0)return this.buffer[this.btm]=void 0,this.btm=this.btm+1&this.mask,e}isEmpty(){return this.buffer[this.btm]===void 0}},Nr=class{size;hwm;head;tail;constructor(e={}){this.hwm=e.splitLimit??16,this.head=new i1(this.hwm),this.tail=this.head,this.size=0}calculateSize(e){return e?.byteLength!=null?e.byteLength:1}push(e){if(e?.value!=null&&(this.size+=this.calculateSize(e.value)),!this.head.push(e)){let t=this.head;this.head=t.next=new i1(2*this.head.buffer.length),this.head.push(e)}}shift(){let e=this.tail.shift();if(e===void 0&&this.tail.next!=null){let t=this.tail.next;this.tail.next=null,this.tail=t,e=this.tail.shift()}return e?.value!=null&&(this.size-=this.calculateSize(e.value)),e}isEmpty(){return this.head.isEmpty()}};var vo=class extends Error{type;code;constructor(e,t){super(e??"The operation was aborted"),this.type="aborted",this.code=t??"ABORT_ERR"}};function _r(r={}){return o6(t=>{let n=t.shift();if(n==null)return{done:!0};if(n.error!=null)throw n.error;return{done:n.done===!0,value:n.value}},r)}function o6(r,e){e=e??{};let t=e.onEnd,n=new Nr,i,s,o,a=se(),c=async()=>{try{return n.isEmpty()?o?{done:!0}:await new Promise((d,x)=>{s=E=>{s=null,n.push(E);try{d(r(n))}catch(m){x(m)}return i}}):r(n)}finally{n.isEmpty()&&queueMicrotask(()=>{a.resolve(),a=se()})}},l=d=>s!=null?s(d):(n.push(d),i),u=d=>(n=new Nr,s!=null?s({error:d}):(n.push({error:d}),i)),f=d=>{if(o)return i;if(e?.objectMode!==!0&&d?.byteLength==null)throw new Error("objectMode was not true but tried to push non-Uint8Array value");return l({done:!1,value:d})},h=d=>o?i:(o=!0,d!=null?u(d):l({done:!0})),p=()=>(n=new Nr,h(),{done:!0}),y=d=>(h(d),{done:!0});if(i={[Symbol.asyncIterator](){return this},next:c,return:p,throw:y,push:f,end:h,get readableLength(){return n.size},onEmpty:async d=>{let x=d?.signal;if(x?.throwIfAborted(),n.isEmpty())return;let E,m;x!=null&&(E=new Promise((A,R)=>{m=()=>{R(new vo)},x.addEventListener("abort",m)}));try{await Promise.race([a.promise,E])}finally{m!=null&&x!=null&&x?.removeEventListener("abort",m)}}},t==null)return i;let w=i;return i={[Symbol.asyncIterator](){return this},next(){return w.next()},throw(d){return w.throw(d),t!=null&&(t(d),t=void 0),{done:!0}},return(){return w.return(),t!=null&&(t(),t=void 0),{done:!0}},push:f,end(d){return w.end(d),t!=null&&(t(d),t=void 0),i},get readableLength(){return w.readableLength},onEmpty:d=>w.onEmpty(d)},i}function a6(r){return r[Symbol.asyncIterator]!=null}function c6(...r){let e=[];for(let t of r)a6(t)||e.push(t);return e.length===r.length?function*(){for(let t of e)yield*t}():async function*(){let t=_r({objectMode:!0});Promise.resolve().then(async()=>{try{await Promise.all(r.map(async n=>{for await(let i of n)t.push(i)})),t.end()}catch(n){t.end(n)}}),yield*t}()}var s1=c6;function Ot(r,...e){if(r==null)throw new Error("Empty pipeline");if(Eo(r)){let n=r;r=()=>n.source}else if(Q0(r)||W0(r)){let n=r;r=()=>n}let t=[r,...e];if(t.length>1&&Eo(t[t.length-1])&&(t[t.length-1]=t[t.length-1].sink),t.length>2)for(let n=1;n<t.length-1;n++)Eo(t[n])&&(t[n]=u6(t[n]));return l6(...t)}var l6=(...r)=>{let e;for(;r.length>0;)e=r.shift()(e);return e},W0=r=>r?.[Symbol.asyncIterator]!=null,Q0=r=>r?.[Symbol.iterator]!=null,Eo=r=>r==null?!1:r.sink!=null&&r.source!=null,u6=r=>e=>{let t=r.sink(e);if(t?.then!=null){let n=_r({objectMode:!0});t.then(()=>{n.end()},o=>{n.end(o)});let i,s=r.source;if(W0(s))i=async function*(){yield*s,n.end()};else if(Q0(s))i=function*(){yield*s,n.end()};else throw new Error("Unknown duplex source type - must be Iterable or AsyncIterable");return s1(n,i())}return r.source};function X(r,e){if(r===e)return!0;if(r.byteLength!==e.byteLength)return!1;for(let t=0;t<r.byteLength;t++)if(r[t]!==e[t])return!1;return!0}var Mt=class extends Error{constructor(e="Query error"){super(e),this.name="QueryError"}},o1=class extends Error{constructor(e="Query aborted"){super(e),this.name="QueryAbortedError"}},a1=class extends Error{constructor(e="Invalid record"){super(e),this.name="InvalidRecordError"}},c1=class extends Error{constructor(e="No selector function configured for prefix"){super(e),this.name="MissingSelectorError"}};var Z0;(function(r){let e;r.codec=()=>(e==null&&(e=nt((t,n,i={})=>{i.lengthDelimited!==!1&&n.fork(),t.key!=null&&(n.uint32(10),n.bytes(t.key)),t.value!=null&&(n.uint32(18),n.bytes(t.value)),t.author!=null&&(n.uint32(26),n.bytes(t.author)),t.signature!=null&&(n.uint32(34),n.bytes(t.signature)),t.timeReceived!=null&&(n.uint32(42),n.string(t.timeReceived)),i.lengthDelimited!==!1&&n.ldelim()},(t,n,i={})=>{let s={},o=n==null?t.len:t.pos+n;for(;t.pos<o;){let a=t.uint32();switch(a>>>3){case 1:{s.key=t.bytes();break}case 2:{s.value=t.bytes();break}case 3:{s.author=t.bytes();break}case 4:{s.signature=t.bytes();break}case 5:{s.timeReceived=t.string();break}default:{t.skipType(a&7);break}}}return s})),e),r.encode=t=>rt(t,r.codec()),r.decode=(t,n)=>tt(t,r.codec(),n)})(Z0||(Z0={}));var O;(function(r){r.PUT_VALUE="PUT_VALUE",r.GET_VALUE="GET_VALUE",r.ADD_PROVIDER="ADD_PROVIDER",r.GET_PROVIDERS="GET_PROVIDERS",r.FIND_NODE="FIND_NODE",r.PING="PING"})(O||(O={}));var l1;(function(r){r[r.PUT_VALUE=0]="PUT_VALUE",r[r.GET_VALUE=1]="GET_VALUE",r[r.ADD_PROVIDER=2]="ADD_PROVIDER",r[r.GET_PROVIDERS=3]="GET_PROVIDERS",r[r.FIND_NODE=4]="FIND_NODE",r[r.PING=5]="PING"})(l1||(l1={}));(function(r){r.codec=()=>Pr(l1)})(O||(O={}));var Ur;(function(r){r.NOT_CONNECTED="NOT_CONNECTED",r.CONNECTED="CONNECTED",r.CAN_CONNECT="CAN_CONNECT",r.CANNOT_CONNECT="CANNOT_CONNECT"})(Ur||(Ur={}));var Ao;(function(r){r[r.NOT_CONNECTED=0]="NOT_CONNECTED",r[r.CONNECTED=1]="CONNECTED",r[r.CAN_CONNECT=2]="CAN_CONNECT",r[r.CANNOT_CONNECT=3]="CANNOT_CONNECT"})(Ao||(Ao={}));(function(r){r.codec=()=>Pr(Ao)})(Ur||(Ur={}));var Cr;(function(r){let e;r.codec=()=>(e==null&&(e=nt((t,n,i={})=>{if(i.lengthDelimited!==!1&&n.fork(),t.id!=null&&t.id.byteLength>0&&(n.uint32(10),n.bytes(t.id)),t.multiaddrs!=null)for(let s of t.multiaddrs)n.uint32(18),n.bytes(s);t.connection!=null&&(n.uint32(24),Ur.codec().encode(t.connection,n)),i.lengthDelimited!==!1&&n.ldelim()},(t,n,i={})=>{let s={id:Ce(0),multiaddrs:[]},o=n==null?t.len:t.pos+n;for(;t.pos<o;){let a=t.uint32();switch(a>>>3){case 1:{s.id=t.bytes();break}case 2:{if(i.limits?.multiaddrs!=null&&s.multiaddrs.length===i.limits.multiaddrs)throw new Lr('Decode error - map field "multiaddrs" had too many elements');s.multiaddrs.push(t.bytes());break}case 3:{s.connection=Ur.codec().decode(t);break}default:{t.skipType(a&7);break}}}return s})),e),r.encode=t=>rt(t,r.codec()),r.decode=(t,n)=>tt(t,r.codec(),n)})(Cr||(Cr={}));var yt;(function(r){let e;r.codec=()=>(e==null&&(e=nt((t,n,i={})=>{if(i.lengthDelimited!==!1&&n.fork(),t.type!=null&&l1[t.type]!==0&&(n.uint32(8),O.codec().encode(t.type,n)),t.clusterLevel!=null&&(n.uint32(80),n.int32(t.clusterLevel)),t.key!=null&&(n.uint32(18),n.bytes(t.key)),t.record!=null&&(n.uint32(26),n.bytes(t.record)),t.closer!=null)for(let s of t.closer)n.uint32(66),Cr.codec().encode(s,n);if(t.providers!=null)for(let s of t.providers)n.uint32(74),Cr.codec().encode(s,n);i.lengthDelimited!==!1&&n.ldelim()},(t,n,i={})=>{let s={type:O.PUT_VALUE,closer:[],providers:[]},o=n==null?t.len:t.pos+n;for(;t.pos<o;){let a=t.uint32();switch(a>>>3){case 1:{s.type=O.codec().decode(t);break}case 10:{s.clusterLevel=t.int32();break}case 2:{s.key=t.bytes();break}case 3:{s.record=t.bytes();break}case 8:{if(i.limits?.closer!=null&&s.closer.length===i.limits.closer)throw new Lr('Decode error - map field "closer" had too many elements');s.closer.push(Cr.codec().decode(t,t.uint32(),{limits:i.limits?.closer$}));break}case 9:{if(i.limits?.providers!=null&&s.providers.length===i.limits.providers)throw new Lr('Decode error - map field "providers" had too many elements');s.providers.push(Cr.codec().decode(t,t.uint32(),{limits:i.limits?.providers$}));break}default:{t.skipType(a&7);break}}}return s})),e),r.encode=t=>rt(t,r.codec()),r.decode=(t,n)=>tt(t,r.codec(),n)})(yt||(yt={}));function So(r,e={}){let t={...r,name:"SEND_QUERY",type:0,messageName:r.type,messageType:r.type};return e.onProgress?.(new CustomEvent("kad-dht:query:send-query",{detail:t})),t}function yn(r,e={}){let t={...r,name:"PEER_RESPONSE",type:1,messageName:r.messageType,closer:r.closer??[],providers:r.providers??[]};return e.onProgress?.(new CustomEvent("kad-dht:query:peer-response",{detail:t})),t}function u1(r,e={}){let t={...r,name:"FINAL_PEER",type:2};return e.onProgress?.(new CustomEvent("kad-dht:query:final-peer",{detail:t})),t}function qe(r,e={}){let t={...r,name:"QUERY_ERROR",type:3};return e.onProgress?.(new CustomEvent("kad-dht:query:query-error",{detail:t})),t}function Io(r,e={}){let t={...r,name:"PROVIDER",type:4};return e.onProgress?.(new CustomEvent("kad-dht:query:provider",{detail:t})),t}function wn(r,e={}){let t={...r,name:"VALUE",type:5};return e.onProgress?.(new CustomEvent("kad-dht:query:value",{detail:t})),t}function Bo(r,e={}){let t={...r,name:"DIAL_PEER",type:7};return e.onProgress?.(new CustomEvent("kad-dht:query:dial-peer",{detail:t})),t}function D(r,e="utf8"){let t=e1[e];if(t==null)throw new Error(`Unsupported encoding "${e}"`);return t.encoder.encode(r).substring(1)}function Y0(r,e,t){if(t.length===0)throw new $("No records given");let i=D(e).split("/");if(i.length<3)throw new $("Record key does not have a selector function");let s=r[i[1].toString()];if(s==null)throw new c1(`No selector function configured for key type "${i[1]}"`);return t.length===1?0:s(e,t)}function f6(r,e){return 0}var X0={pk:f6};function J0(r){if(!Number.isSafeInteger(r)||r<0)throw new Error(`positive integer expected, not ${r}`)}function h6(r){return r instanceof Uint8Array||r!=null&&typeof r=="object"&&r.constructor.name==="Uint8Array"}function Dr(r,...e){if(!h6(r))throw new Error("Uint8Array expected");if(e.length>0&&!e.includes(r.length))throw new Error(`Uint8Array expected of length ${e}, not of length=${r.length}`)}function e3(r){if(typeof r!="function"||typeof r.create!="function")throw new Error("Hash should be wrapped by utils.wrapConstructor");J0(r.outputLen),J0(r.blockLen)}function Or(r,e=!0){if(r.destroyed)throw new Error("Hash instance has been destroyed");if(e&&r.finished)throw new Error("Hash#digest() has already been called")}function t3(r,e){Dr(r);let t=e.outputLen;if(r.length<t)throw new Error(`digestInto() expects output buffer of length at least ${t}`)}var cr=typeof globalThis=="object"&&"crypto"in globalThis?globalThis.crypto:void 0;var f1=r=>new DataView(r.buffer,r.byteOffset,r.byteLength),Ze=(r,e)=>r<<32-e|r>>>e;var xu=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68;function r3(r){if(typeof r!="string")throw new Error(`utf8ToBytes expected string, got ${typeof r}`);return new Uint8Array(new TextEncoder().encode(r))}function bn(r){return typeof r=="string"&&(r=r3(r)),Dr(r),r}function ko(...r){let e=0;for(let n=0;n<r.length;n++){let i=r[n];Dr(i),e+=i.length}let t=new Uint8Array(e);for(let n=0,i=0;n<r.length;n++){let s=r[n];t.set(s,i),i+=s.length}return t}var Mr=class{clone(){return this._cloneInto()}},vu={}.toString;function h1(r){let e=n=>r().update(bn(n)).digest(),t=r();return e.outputLen=t.outputLen,e.blockLen=t.blockLen,e.create=()=>r(),e}function Vr(r=32){if(cr&&typeof cr.getRandomValues=="function")return cr.getRandomValues(new Uint8Array(r));if(cr&&typeof cr.randomBytes=="function")return cr.randomBytes(r);throw new Error("crypto.getRandomValues must be defined")}function d6(r,e,t,n){if(typeof r.setBigUint64=="function")return r.setBigUint64(e,t,n);let i=BigInt(32),s=BigInt(4294967295),o=Number(t>>i&s),a=Number(t&s),c=n?4:0,l=n?0:4;r.setUint32(e+c,o,n),r.setUint32(e+l,a,n)}var n3=(r,e,t)=>r&e^~r&t,i3=(r,e,t)=>r&e^r&t^e&t,Fr=class extends Mr{constructor(e,t,n,i){super(),this.blockLen=e,this.outputLen=t,this.padOffset=n,this.isLE=i,this.finished=!1,this.length=0,this.pos=0,this.destroyed=!1,this.buffer=new Uint8Array(e),this.view=f1(this.buffer)}update(e){Or(this);let{view:t,buffer:n,blockLen:i}=this;e=bn(e);let s=e.length;for(let o=0;o<s;){let a=Math.min(i-this.pos,s-o);if(a===i){let c=f1(e);for(;i<=s-o;o+=i)this.process(c,o);continue}n.set(e.subarray(o,o+a),this.pos),this.pos+=a,o+=a,this.pos===i&&(this.process(t,0),this.pos=0)}return this.length+=e.length,this.roundClean(),this}digestInto(e){Or(this),t3(e,this),this.finished=!0;let{buffer:t,view:n,blockLen:i,isLE:s}=this,{pos:o}=this;t[o++]=128,this.buffer.subarray(o).fill(0),this.padOffset>i-o&&(this.process(n,0),o=0);for(let f=o;f<i;f++)t[f]=0;d6(n,i-8,BigInt(this.length*8),s),this.process(n,0);let a=f1(e),c=this.outputLen;if(c%4)throw new Error("_sha2: outputLen should be aligned to 32bit");let l=c/4,u=this.get();if(l>u.length)throw new Error("_sha2: outputLen bigger than state");for(let f=0;f<l;f++)a.setUint32(4*f,u[f],s)}digest(){let{buffer:e,outputLen:t}=this;this.digestInto(e);let n=e.slice(0,t);return this.destroy(),n}_cloneInto(e){e||(e=new this.constructor),e.set(...this.get());let{blockLen:t,buffer:n,length:i,finished:s,destroyed:o,pos:a}=this;return e.length=i,e.pos=a,e.finished=s,e.destroyed=o,i%t&&e.buffer.set(n),e}};var d1=BigInt(4294967295),To=BigInt(32);function s3(r,e=!1){return e?{h:Number(r&d1),l:Number(r>>To&d1)}:{h:Number(r>>To&d1)|0,l:Number(r&d1)|0}}function p6(r,e=!1){let t=new Uint32Array(r.length),n=new Uint32Array(r.length);for(let i=0;i<r.length;i++){let{h:s,l:o}=s3(r[i],e);[t[i],n[i]]=[s,o]}return[t,n]}var m6=(r,e)=>BigInt(r>>>0)<<To|BigInt(e>>>0),g6=(r,e,t)=>r>>>t,y6=(r,e,t)=>r<<32-t|e>>>t,w6=(r,e,t)=>r>>>t|e<<32-t,b6=(r,e,t)=>r<<32-t|e>>>t,x6=(r,e,t)=>r<<64-t|e>>>t-32,v6=(r,e,t)=>r>>>t-32|e<<64-t,E6=(r,e)=>e,A6=(r,e)=>r,S6=(r,e,t)=>r<<t|e>>>32-t,I6=(r,e,t)=>e<<t|r>>>32-t,B6=(r,e,t)=>e<<t-32|r>>>64-t,k6=(r,e,t)=>r<<t-32|e>>>64-t;function T6(r,e,t,n){let i=(e>>>0)+(n>>>0);return{h:r+t+(i/2**32|0)|0,l:i|0}}var R6=(r,e,t)=>(r>>>0)+(e>>>0)+(t>>>0),P6=(r,e,t,n)=>e+t+n+(r/2**32|0)|0,L6=(r,e,t,n)=>(r>>>0)+(e>>>0)+(t>>>0)+(n>>>0),N6=(r,e,t,n,i)=>e+t+n+i+(r/2**32|0)|0,_6=(r,e,t,n,i)=>(r>>>0)+(e>>>0)+(t>>>0)+(n>>>0)+(i>>>0),C6=(r,e,t,n,i,s)=>e+t+n+i+s+(r/2**32|0)|0;var U6={fromBig:s3,split:p6,toBig:m6,shrSH:g6,shrSL:y6,rotrSH:w6,rotrSL:b6,rotrBH:x6,rotrBL:v6,rotr32H:E6,rotr32L:A6,rotlSH:S6,rotlSL:I6,rotlBH:B6,rotlBL:k6,add:T6,add3L:R6,add3H:P6,add4L:L6,add4H:N6,add5H:C6,add5L:_6},U=U6;var[D6,O6]=U.split(["0x428a2f98d728ae22","0x7137449123ef65cd","0xb5c0fbcfec4d3b2f","0xe9b5dba58189dbbc","0x3956c25bf348b538","0x59f111f1b605d019","0x923f82a4af194f9b","0xab1c5ed5da6d8118","0xd807aa98a3030242","0x12835b0145706fbe","0x243185be4ee4b28c","0x550c7dc3d5ffb4e2","0x72be5d74f27b896f","0x80deb1fe3b1696b1","0x9bdc06a725c71235","0xc19bf174cf692694","0xe49b69c19ef14ad2","0xefbe4786384f25e3","0x0fc19dc68b8cd5b5","0x240ca1cc77ac9c65","0x2de92c6f592b0275","0x4a7484aa6ea6e483","0x5cb0a9dcbd41fbd4","0x76f988da831153b5","0x983e5152ee66dfab","0xa831c66d2db43210","0xb00327c898fb213f","0xbf597fc7beef0ee4","0xc6e00bf33da88fc2","0xd5a79147930aa725","0x06ca6351e003826f","0x142929670a0e6e70","0x27b70a8546d22ffc","0x2e1b21385c26c926","0x4d2c6dfc5ac42aed","0x53380d139d95b3df","0x650a73548baf63de","0x766a0abb3c77b2a8","0x81c2c92e47edaee6","0x92722c851482353b","0xa2bfe8a14cf10364","0xa81a664bbc423001","0xc24b8b70d0f89791","0xc76c51a30654be30","0xd192e819d6ef5218","0xd69906245565a910","0xf40e35855771202a","0x106aa07032bbd1b8","0x19a4c116b8d2d0c8","0x1e376c085141ab53","0x2748774cdf8eeb99","0x34b0bcb5e19b48a8","0x391c0cb3c5c95a63","0x4ed8aa4ae3418acb","0x5b9cca4f7763e373","0x682e6ff3d6b2b8a3","0x748f82ee5defb2fc","0x78a5636f43172f60","0x84c87814a1f0ab72","0x8cc702081a6439ec","0x90befffa23631e28","0xa4506cebde82bde9","0xbef9a3f7b2c67915","0xc67178f2e372532b","0xca273eceea26619c","0xd186b8c721c0c207","0xeada7dd6cde0eb1e","0xf57d4f7fee6ed178","0x06f067aa72176fba","0x0a637dc5a2c898a6","0x113f9804bef90dae","0x1b710b35131c471b","0x28db77f523047d84","0x32caab7b40c72493","0x3c9ebe0a15c9bebc","0x431d67c49c100d4c","0x4cc5d4becb3e42b6","0x597f299cfc657e2a","0x5fcb6fab3ad6faec","0x6c44198c4a475817"].map(r=>BigInt(r))),Vt=new Uint32Array(80),Ft=new Uint32Array(80),Ro=class extends Fr{constructor(){super(128,64,16,!1),this.Ah=1779033703,this.Al=-205731576,this.Bh=-1150833019,this.Bl=-2067093701,this.Ch=1013904242,this.Cl=-23791573,this.Dh=-1521486534,this.Dl=1595750129,this.Eh=1359893119,this.El=-1377402159,this.Fh=-1694144372,this.Fl=725511199,this.Gh=528734635,this.Gl=-79577749,this.Hh=1541459225,this.Hl=327033209}get(){let{Ah:e,Al:t,Bh:n,Bl:i,Ch:s,Cl:o,Dh:a,Dl:c,Eh:l,El:u,Fh:f,Fl:h,Gh:p,Gl:y,Hh:w,Hl:d}=this;return[e,t,n,i,s,o,a,c,l,u,f,h,p,y,w,d]}set(e,t,n,i,s,o,a,c,l,u,f,h,p,y,w,d){this.Ah=e|0,this.Al=t|0,this.Bh=n|0,this.Bl=i|0,this.Ch=s|0,this.Cl=o|0,this.Dh=a|0,this.Dl=c|0,this.Eh=l|0,this.El=u|0,this.Fh=f|0,this.Fl=h|0,this.Gh=p|0,this.Gl=y|0,this.Hh=w|0,this.Hl=d|0}process(e,t){for(let m=0;m<16;m++,t+=4)Vt[m]=e.getUint32(t),Ft[m]=e.getUint32(t+=4);for(let m=16;m<80;m++){let A=Vt[m-15]|0,R=Ft[m-15]|0,T=U.rotrSH(A,R,1)^U.rotrSH(A,R,8)^U.shrSH(A,R,7),B=U.rotrSL(A,R,1)^U.rotrSL(A,R,8)^U.shrSL(A,R,7),k=Vt[m-2]|0,N=Ft[m-2]|0,ce=U.rotrSH(k,N,19)^U.rotrBH(k,N,61)^U.shrSH(k,N,6),K=U.rotrSL(k,N,19)^U.rotrBL(k,N,61)^U.shrSL(k,N,6),M=U.add4L(B,K,Ft[m-7],Ft[m-16]),le=U.add4H(M,T,ce,Vt[m-7],Vt[m-16]);Vt[m]=le|0,Ft[m]=M|0}let{Ah:n,Al:i,Bh:s,Bl:o,Ch:a,Cl:c,Dh:l,Dl:u,Eh:f,El:h,Fh:p,Fl:y,Gh:w,Gl:d,Hh:x,Hl:E}=this;for(let m=0;m<80;m++){let A=U.rotrSH(f,h,14)^U.rotrSH(f,h,18)^U.rotrBH(f,h,41),R=U.rotrSL(f,h,14)^U.rotrSL(f,h,18)^U.rotrBL(f,h,41),T=f&p^~f&w,B=h&y^~h&d,k=U.add5L(E,R,B,O6[m],Ft[m]),N=U.add5H(k,x,A,T,D6[m],Vt[m]),ce=k|0,K=U.rotrSH(n,i,28)^U.rotrBH(n,i,34)^U.rotrBH(n,i,39),M=U.rotrSL(n,i,28)^U.rotrBL(n,i,34)^U.rotrBL(n,i,39),le=n&s^n&a^s&a,S=i&o^i&c^o&c;x=w|0,E=d|0,w=p|0,d=y|0,p=f|0,y=h|0,{h:f,l:h}=U.add(l|0,u|0,N|0,ce|0),l=a|0,u=c|0,a=s|0,c=o|0,s=n|0,o=i|0;let P=U.add3L(ce,M,S);n=U.add3H(P,N,K,le),i=P|0}({h:n,l:i}=U.add(this.Ah|0,this.Al|0,n|0,i|0)),{h:s,l:o}=U.add(this.Bh|0,this.Bl|0,s|0,o|0),{h:a,l:c}=U.add(this.Ch|0,this.Cl|0,a|0,c|0),{h:l,l:u}=U.add(this.Dh|0,this.Dl|0,l|0,u|0),{h:f,l:h}=U.add(this.Eh|0,this.El|0,f|0,h|0),{h:p,l:y}=U.add(this.Fh|0,this.Fl|0,p|0,y|0),{h:w,l:d}=U.add(this.Gh|0,this.Gl|0,w|0,d|0),{h:x,l:E}=U.add(this.Hh|0,this.Hl|0,x|0,E|0),this.set(n,i,s,o,a,c,l,u,f,h,p,y,w,d,x,E)}roundClean(){Vt.fill(0),Ft.fill(0)}destroy(){this.buffer.fill(0),this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)}};var o3=h1(()=>new Ro);var m1={};Te(m1,{aInRange:()=>Ue,abool:()=>Ye,abytes:()=>Hr,bitGet:()=>K6,bitLen:()=>Co,bitMask:()=>vn,bitSet:()=>$6,bytesToHex:()=>bt,bytesToNumberBE:()=>xt,bytesToNumberLE:()=>qt,concatBytes:()=>vt,createHmacDrbg:()=>Uo,ensureBytes:()=>ie,equalBytes:()=>H6,hexToBytes:()=>ur,hexToNumber:()=>_o,inRange:()=>xn,isBytes:()=>Ht,memoized:()=>hr,notImplemented:()=>G6,numberToBytesBE:()=>Kt,numberToBytesLE:()=>fr,numberToHexUnpadded:()=>lr,numberToVarBytesBE:()=>F6,utf8ToBytes:()=>q6,validateObject:()=>it});var No=BigInt(0),p1=BigInt(1),M6=BigInt(2);function Ht(r){return r instanceof Uint8Array||r!=null&&typeof r=="object"&&r.constructor.name==="Uint8Array"}function Hr(r){if(!Ht(r))throw new Error("Uint8Array expected")}function Ye(r,e){if(typeof e!="boolean")throw new Error(`${r} must be valid boolean, got "${e}".`)}var V6=Array.from({length:256},(r,e)=>e.toString(16).padStart(2,"0"));function bt(r){Hr(r);let e="";for(let t=0;t<r.length;t++)e+=V6[r[t]];return e}function lr(r){let e=r.toString(16);return e.length&1?`0${e}`:e}function _o(r){if(typeof r!="string")throw new Error("hex string expected, got "+typeof r);return BigInt(r===""?"0":`0x${r}`)}var wt={_0:48,_9:57,_A:65,_F:70,_a:97,_f:102};function a3(r){if(r>=wt._0&&r<=wt._9)return r-wt._0;if(r>=wt._A&&r<=wt._F)return r-(wt._A-10);if(r>=wt._a&&r<=wt._f)return r-(wt._a-10)}function ur(r){if(typeof r!="string")throw new Error("hex string expected, got "+typeof r);let e=r.length,t=e/2;if(e%2)throw new Error("padded hex string expected, got unpadded hex of length "+e);let n=new Uint8Array(t);for(let i=0,s=0;i<t;i++,s+=2){let o=a3(r.charCodeAt(s)),a=a3(r.charCodeAt(s+1));if(o===void 0||a===void 0){let c=r[s]+r[s+1];throw new Error('hex string expected, got non-hex character "'+c+'" at index '+s)}n[i]=o*16+a}return n}function xt(r){return _o(bt(r))}function qt(r){return Hr(r),_o(bt(Uint8Array.from(r).reverse()))}function Kt(r,e){return ur(r.toString(16).padStart(e*2,"0"))}function fr(r,e){return Kt(r,e).reverse()}function F6(r){return ur(lr(r))}function ie(r,e,t){let n;if(typeof e=="string")try{n=ur(e)}catch(s){throw new Error(`${r} must be valid hex string, got "${e}". Cause: ${s}`)}else if(Ht(e))n=Uint8Array.from(e);else throw new Error(`${r} must be hex string or Uint8Array`);let i=n.length;if(typeof t=="number"&&i!==t)throw new Error(`${r} expected ${t} bytes, got ${i}`);return n}function vt(...r){let e=0;for(let n=0;n<r.length;n++){let i=r[n];Hr(i),e+=i.length}let t=new Uint8Array(e);for(let n=0,i=0;n<r.length;n++){let s=r[n];t.set(s,i),i+=s.length}return t}function H6(r,e){if(r.length!==e.length)return!1;let t=0;for(let n=0;n<r.length;n++)t|=r[n]^e[n];return t===0}function q6(r){if(typeof r!="string")throw new Error(`utf8ToBytes expected string, got ${typeof r}`);return new Uint8Array(new TextEncoder().encode(r))}var Po=r=>typeof r=="bigint"&&No<=r;function xn(r,e,t){return Po(r)&&Po(e)&&Po(t)&&e<=r&&r<t}function Ue(r,e,t,n){if(!xn(e,t,n))throw new Error(`expected valid ${r}: ${t} <= n < ${n}, got ${typeof e} ${e}`)}function Co(r){let e;for(e=0;r>No;r>>=p1,e+=1);return e}function K6(r,e){return r>>BigInt(e)&p1}function $6(r,e,t){return r|(t?p1:No)<<BigInt(e)}var vn=r=>(M6<<BigInt(r-1))-p1,Lo=r=>new Uint8Array(r),c3=r=>Uint8Array.from(r);function Uo(r,e,t){if(typeof r!="number"||r<2)throw new Error("hashLen must be a number");if(typeof e!="number"||e<2)throw new Error("qByteLen must be a number");if(typeof t!="function")throw new Error("hmacFn must be a function");let n=Lo(r),i=Lo(r),s=0,o=()=>{n.fill(1),i.fill(0),s=0},a=(...f)=>t(i,n,...f),c=(f=Lo())=>{i=a(c3([0]),f),n=a(),f.length!==0&&(i=a(c3([1]),f),n=a())},l=()=>{if(s++>=1e3)throw new Error("drbg: tried 1000 values");let f=0,h=[];for(;f<e;){n=a();let p=n.slice();h.push(p),f+=n.length}return vt(...h)};return(f,h)=>{o(),c(f);let p;for(;!(p=h(l()));)c();return o(),p}}var z6={bigint:r=>typeof r=="bigint",function:r=>typeof r=="function",boolean:r=>typeof r=="boolean",string:r=>typeof r=="string",stringOrUint8Array:r=>typeof r=="string"||Ht(r),isSafeInteger:r=>Number.isSafeInteger(r),array:r=>Array.isArray(r),field:(r,e)=>e.Fp.isValid(r),hash:r=>typeof r=="function"&&Number.isSafeInteger(r.outputLen)};function it(r,e,t={}){let n=(i,s,o)=>{let a=z6[s];if(typeof a!="function")throw new Error(`Invalid validator "${s}", expected function`);let c=r[i];if(!(o&&c===void 0)&&!a(c,r))throw new Error(`Invalid param ${String(i)}=${c} (${typeof c}), expected ${s}`)};for(let[i,s]of Object.entries(e))n(i,s,!1);for(let[i,s]of Object.entries(t))n(i,s,!0);return r}var G6=()=>{throw new Error("not implemented")};function hr(r){let e=new WeakMap;return(t,...n)=>{let i=e.get(t);if(i!==void 0)return i;let s=r(t,...n);return e.set(t,s),s}}var he=BigInt(0),J=BigInt(1),dr=BigInt(2),j6=BigInt(3),Do=BigInt(4),l3=BigInt(5),u3=BigInt(8),W6=BigInt(9),Q6=BigInt(16);function W(r,e){let t=r%e;return t>=he?t:e+t}function Z6(r,e,t){if(t<=he||e<he)throw new Error("Expected power/modulo > 0");if(t===J)return he;let n=J;for(;e>he;)e&J&&(n=n*r%t),r=r*r%t,e>>=J;return n}function ee(r,e,t){let n=r;for(;e-- >he;)n*=n,n%=t;return n}function g1(r,e){if(r===he||e<=he)throw new Error(`invert: expected positive integers, got n=${r} mod=${e}`);let t=W(r,e),n=e,i=he,s=J,o=J,a=he;for(;t!==he;){let l=n/t,u=n%t,f=i-o*l,h=s-a*l;n=t,t=u,i=o,s=a,o=f,a=h}if(n!==J)throw new Error("invert: does not exist");return W(i,e)}function Y6(r){let e=(r-J)/dr,t,n,i;for(t=r-J,n=0;t%dr===he;t/=dr,n++);for(i=dr;i<r&&Z6(i,e,r)!==r-J;i++);if(n===1){let o=(r+J)/Do;return function(c,l){let u=c.pow(l,o);if(!c.eql(c.sqr(u),l))throw new Error("Cannot find square root");return u}}let s=(t+J)/dr;return function(a,c){if(a.pow(c,e)===a.neg(a.ONE))throw new Error("Cannot find square root");let l=n,u=a.pow(a.mul(a.ONE,i),t),f=a.pow(c,s),h=a.pow(c,t);for(;!a.eql(h,a.ONE);){if(a.eql(h,a.ZERO))return a.ZERO;let p=1;for(let w=a.sqr(h);p<l&&!a.eql(w,a.ONE);p++)w=a.sqr(w);let y=a.pow(u,J<<BigInt(l-p-1));u=a.sqr(y),f=a.mul(f,y),h=a.mul(h,u),l=p}return f}}function X6(r){if(r%Do===j6){let e=(r+J)/Do;return function(n,i){let s=n.pow(i,e);if(!n.eql(n.sqr(s),i))throw new Error("Cannot find square root");return s}}if(r%u3===l3){let e=(r-l3)/u3;return function(n,i){let s=n.mul(i,dr),o=n.pow(s,e),a=n.mul(i,o),c=n.mul(n.mul(a,dr),o),l=n.mul(a,n.sub(c,n.ONE));if(!n.eql(n.sqr(l),i))throw new Error("Cannot find square root");return l}}return r%Q6,Y6(r)}var f3=(r,e)=>(W(r,e)&J)===J,J6=["create","isValid","is0","neg","inv","sqrt","sqr","eql","add","sub","mul","pow","div","addN","subN","mulN","sqrN"];function Oo(r){let e={ORDER:"bigint",MASK:"bigint",BYTES:"isSafeInteger",BITS:"isSafeInteger"},t=J6.reduce((n,i)=>(n[i]="function",n),e);return it(r,t)}function e8(r,e,t){if(t<he)throw new Error("Expected power > 0");if(t===he)return r.ONE;if(t===J)return e;let n=r.ONE,i=e;for(;t>he;)t&J&&(n=r.mul(n,i)),i=r.sqr(i),t>>=J;return n}function t8(r,e){let t=new Array(e.length),n=e.reduce((s,o,a)=>r.is0(o)?s:(t[a]=s,r.mul(s,o)),r.ONE),i=r.inv(n);return e.reduceRight((s,o,a)=>r.is0(o)?s:(t[a]=r.mul(s,t[a]),r.mul(s,o)),i),t}function Mo(r,e){let t=e!==void 0?e:r.toString(2).length,n=Math.ceil(t/8);return{nBitLength:t,nByteLength:n}}function $t(r,e,t=!1,n={}){if(r<=he)throw new Error(`Expected Field ORDER > 0, got ${r}`);let{nBitLength:i,nByteLength:s}=Mo(r,e);if(s>2048)throw new Error("Field lengths over 2048 bytes are not supported");let o=X6(r),a=Object.freeze({ORDER:r,BITS:i,BYTES:s,MASK:vn(i),ZERO:he,ONE:J,create:c=>W(c,r),isValid:c=>{if(typeof c!="bigint")throw new Error(`Invalid field element: expected bigint, got ${typeof c}`);return he<=c&&c<r},is0:c=>c===he,isOdd:c=>(c&J)===J,neg:c=>W(-c,r),eql:(c,l)=>c===l,sqr:c=>W(c*c,r),add:(c,l)=>W(c+l,r),sub:(c,l)=>W(c-l,r),mul:(c,l)=>W(c*l,r),pow:(c,l)=>e8(a,c,l),div:(c,l)=>W(c*g1(l,r),r),sqrN:c=>c*c,addN:(c,l)=>c+l,subN:(c,l)=>c-l,mulN:(c,l)=>c*l,inv:c=>g1(c,r),sqrt:n.sqrt||(c=>o(a,c)),invertBatch:c=>t8(a,c),cmov:(c,l,u)=>u?l:c,toBytes:c=>t?fr(c,s):Kt(c,s),fromBytes:c=>{if(c.length!==s)throw new Error(`Fp.fromBytes: expected ${s}, got ${c.length}`);return t?qt(c):xt(c)}});return Object.freeze(a)}function h3(r){if(typeof r!="bigint")throw new Error("field order must be bigint");let e=r.toString(2).length;return Math.ceil(e/8)}function Vo(r){let e=h3(r);return e+Math.ceil(e/2)}function d3(r,e,t=!1){let n=r.length,i=h3(e),s=Vo(e);if(n<16||n<s||n>1024)throw new Error(`expected ${s}-1024 bytes of input, got ${n}`);let o=t?xt(r):qt(r),a=W(o,e-J)+J;return t?fr(a,i):Kt(a,i)}var n8=BigInt(0),Fo=BigInt(1),Ho=new WeakMap,p3=new WeakMap;function y1(r,e){let t=(s,o)=>{let a=o.negate();return s?a:o},n=s=>{if(!Number.isSafeInteger(s)||s<=0||s>e)throw new Error(`Wrong window size=${s}, should be [1..${e}]`)},i=s=>{n(s);let o=Math.ceil(e/s)+1,a=2**(s-1);return{windows:o,windowSize:a}};return{constTimeNegate:t,unsafeLadder(s,o){let a=r.ZERO,c=s;for(;o>n8;)o&Fo&&(a=a.add(c)),c=c.double(),o>>=Fo;return a},precomputeWindow(s,o){let{windows:a,windowSize:c}=i(o),l=[],u=s,f=u;for(let h=0;h<a;h++){f=u,l.push(f);for(let p=1;p<c;p++)f=f.add(u),l.push(f);u=f.double()}return l},wNAF(s,o,a){let{windows:c,windowSize:l}=i(s),u=r.ZERO,f=r.BASE,h=BigInt(2**s-1),p=2**s,y=BigInt(s);for(let w=0;w<c;w++){let d=w*l,x=Number(a&h);a>>=y,x>l&&(x-=p,a+=Fo);let E=d,m=d+Math.abs(x)-1,A=w%2!==0,R=x<0;x===0?f=f.add(t(A,o[E])):u=u.add(t(R,o[m]))}return{p:u,f}},wNAFCached(s,o,a){let c=p3.get(s)||1,l=Ho.get(s);return l||(l=this.precomputeWindow(s,c),c!==1&&Ho.set(s,a(l))),this.wNAF(c,l,o)},setWindowSize(s,o){n(o),p3.set(s,o),Ho.delete(s)}}}function w1(r,e,t,n){if(!Array.isArray(t)||!Array.isArray(n)||n.length!==t.length)throw new Error("arrays of points and scalars must have equal length");n.forEach((u,f)=>{if(!e.isValid(u))throw new Error(`wrong scalar at index ${f}`)}),t.forEach((u,f)=>{if(!(u instanceof r))throw new Error(`wrong point at index ${f}`)});let i=Co(BigInt(t.length)),s=i>12?i-3:i>4?i-2:i?2:1,o=(1<<s)-1,a=new Array(o+1).fill(r.ZERO),c=Math.floor((e.BITS-1)/s)*s,l=r.ZERO;for(let u=c;u>=0;u-=s){a.fill(r.ZERO);for(let h=0;h<n.length;h++){let p=n[h],y=Number(p>>BigInt(u)&BigInt(o));a[y]=a[y].add(t[h])}let f=r.ZERO;for(let h=a.length-1,p=r.ZERO;h>0;h--)p=p.add(a[h]),f=f.add(p);if(l=l.add(f),u!==0)for(let h=0;h<s;h++)l=l.double()}return l}function En(r){return Oo(r.Fp),it(r,{n:"bigint",h:"bigint",Gx:"field",Gy:"field"},{nBitLength:"isSafeInteger",nByteLength:"isSafeInteger"}),Object.freeze({...Mo(r.n,r.nBitLength),...r,p:r.Fp.ORDER})}var Xe=BigInt(0),De=BigInt(1),b1=BigInt(2),i8=BigInt(8),s8={zip215:!0};function o8(r){let e=En(r);return it(r,{hash:"function",a:"bigint",d:"bigint",randomBytes:"function"},{adjustScalarBytes:"function",domain:"function",uvRatio:"function",mapToCurve:"function"}),Object.freeze({...e})}function m3(r){let e=o8(r),{Fp:t,n,prehash:i,hash:s,randomBytes:o,nByteLength:a,h:c}=e,l=b1<<BigInt(a*8)-De,u=t.create,f=$t(e.n,e.nBitLength),h=e.uvRatio||((b,g)=>{try{return{isValid:!0,value:t.sqrt(b*t.inv(g))}}catch{return{isValid:!1,value:Xe}}}),p=e.adjustScalarBytes||(b=>b),y=e.domain||((b,g,v)=>{if(Ye("phflag",v),g.length||v)throw new Error("Contexts/pre-hash are not supported");return b});function w(b,g){Ue("coordinate "+b,g,Xe,l)}function d(b){if(!(b instanceof m))throw new Error("ExtendedPoint expected")}let x=hr((b,g)=>{let{ex:v,ey:L,ez:_}=b,C=b.is0();g==null&&(g=C?i8:t.inv(_));let V=u(v*g),q=u(L*g),F=u(_*g);if(C)return{x:Xe,y:De};if(F!==De)throw new Error("invZ was invalid");return{x:V,y:q}}),E=hr(b=>{let{a:g,d:v}=e;if(b.is0())throw new Error("bad point: ZERO");let{ex:L,ey:_,ez:C,et:V}=b,q=u(L*L),F=u(_*_),j=u(C*C),Z=u(j*j),pe=u(q*g),me=u(j*u(pe+F)),we=u(Z+u(v*u(q*F)));if(me!==we)throw new Error("bad point: equation left != right (1)");let ke=u(L*_),ue=u(C*V);if(ke!==ue)throw new Error("bad point: equation left != right (2)");return!0});class m{constructor(g,v,L,_){this.ex=g,this.ey=v,this.ez=L,this.et=_,w("x",g),w("y",v),w("z",L),w("t",_),Object.freeze(this)}get x(){return this.toAffine().x}get y(){return this.toAffine().y}static fromAffine(g){if(g instanceof m)throw new Error("extended point not allowed");let{x:v,y:L}=g||{};return w("x",v),w("y",L),new m(v,L,De,u(v*L))}static normalizeZ(g){let v=t.invertBatch(g.map(L=>L.ez));return g.map((L,_)=>L.toAffine(v[_])).map(m.fromAffine)}static msm(g,v){return w1(m,f,g,v)}_setWindowSize(g){T.setWindowSize(this,g)}assertValidity(){E(this)}equals(g){d(g);let{ex:v,ey:L,ez:_}=this,{ex:C,ey:V,ez:q}=g,F=u(v*q),j=u(C*_),Z=u(L*q),pe=u(V*_);return F===j&&Z===pe}is0(){return this.equals(m.ZERO)}negate(){return new m(u(-this.ex),this.ey,this.ez,u(-this.et))}double(){let{a:g}=e,{ex:v,ey:L,ez:_}=this,C=u(v*v),V=u(L*L),q=u(b1*u(_*_)),F=u(g*C),j=v+L,Z=u(u(j*j)-C-V),pe=F+V,me=pe-q,we=F-V,ke=u(Z*me),ue=u(pe*we),Le=u(Z*we),ut=u(me*pe);return new m(ke,ue,ut,Le)}add(g){d(g);let{a:v,d:L}=e,{ex:_,ey:C,ez:V,et:q}=this,{ex:F,ey:j,ez:Z,et:pe}=g;if(v===BigInt(-1)){let _2=u((C-_)*(j+F)),C2=u((C+_)*(j-F)),ys=u(C2-_2);if(ys===Xe)return this.double();let U2=u(V*b1*pe),D2=u(q*b1*Z),O2=D2+U2,M2=C2+_2,V2=D2-U2,E4=u(O2*ys),A4=u(M2*V2),S4=u(O2*V2),I4=u(ys*M2);return new m(E4,A4,I4,S4)}let me=u(_*F),we=u(C*j),ke=u(q*L*pe),ue=u(V*Z),Le=u((_+C)*(F+j)-me-we),ut=ue-ke,tn=ue+ke,rn=u(we-v*me),w4=u(Le*ut),b4=u(tn*rn),x4=u(Le*rn),v4=u(ut*tn);return new m(w4,b4,v4,x4)}subtract(g){return this.add(g.negate())}wNAF(g){return T.wNAFCached(this,g,m.normalizeZ)}multiply(g){let v=g;Ue("scalar",v,De,n);let{p:L,f:_}=this.wNAF(v);return m.normalizeZ([L,_])[0]}multiplyUnsafe(g){let v=g;return Ue("scalar",v,Xe,n),v===Xe?R:this.equals(R)||v===De?this:this.equals(A)?this.wNAF(v).p:T.unsafeLadder(this,v)}isSmallOrder(){return this.multiplyUnsafe(c).is0()}isTorsionFree(){return T.unsafeLadder(this,n).is0()}toAffine(g){return x(this,g)}clearCofactor(){let{h:g}=e;return g===De?this:this.multiplyUnsafe(g)}static fromHex(g,v=!1){let{d:L,a:_}=e,C=t.BYTES;g=ie("pointHex",g,C),Ye("zip215",v);let V=g.slice(),q=g[C-1];V[C-1]=q&-129;let F=qt(V),j=v?l:t.ORDER;Ue("pointHex.y",F,Xe,j);let Z=u(F*F),pe=u(Z-De),me=u(L*Z-_),{isValid:we,value:ke}=h(pe,me);if(!we)throw new Error("Point.fromHex: invalid y coordinate");let ue=(ke&De)===De,Le=(q&128)!==0;if(!v&&ke===Xe&&Le)throw new Error("Point.fromHex: x=0 and x_0=1");return Le!==ue&&(ke=u(-ke)),m.fromAffine({x:ke,y:F})}static fromPrivateKey(g){return N(g).point}toRawBytes(){let{x:g,y:v}=this.toAffine(),L=fr(v,t.BYTES);return L[L.length-1]|=g&De?128:0,L}toHex(){return bt(this.toRawBytes())}}m.BASE=new m(e.Gx,e.Gy,De,u(e.Gx*e.Gy)),m.ZERO=new m(Xe,De,De,Xe);let{BASE:A,ZERO:R}=m,T=y1(m,a*8);function B(b){return W(b,n)}function k(b){return B(qt(b))}function N(b){let g=a;b=ie("private key",b,g);let v=ie("hashed private key",s(b),2*g),L=p(v.slice(0,g)),_=v.slice(g,2*g),C=k(L),V=A.multiply(C),q=V.toRawBytes();return{head:L,prefix:_,scalar:C,point:V,pointBytes:q}}function ce(b){return N(b).pointBytes}function K(b=new Uint8Array,...g){let v=vt(...g);return k(s(y(v,ie("context",b),!!i)))}function M(b,g,v={}){b=ie("message",b),i&&(b=i(b));let{prefix:L,scalar:_,pointBytes:C}=N(g),V=K(v.context,L,b),q=A.multiply(V).toRawBytes(),F=K(v.context,q,C,b),j=B(V+F*_);Ue("signature.s",j,Xe,n);let Z=vt(q,fr(j,t.BYTES));return ie("result",Z,a*2)}let le=s8;function S(b,g,v,L=le){let{context:_,zip215:C}=L,V=t.BYTES;b=ie("signature",b,2*V),g=ie("message",g),C!==void 0&&Ye("zip215",C),i&&(g=i(g));let q=qt(b.slice(V,2*V)),F,j,Z;try{F=m.fromHex(v,C),j=m.fromHex(b.slice(0,V),C),Z=A.multiplyUnsafe(q)}catch{return!1}if(!C&&F.isSmallOrder())return!1;let pe=K(_,j.toRawBytes(),F.toRawBytes(),g);return j.add(F.multiplyUnsafe(pe)).subtract(Z).clearCofactor().equals(m.ZERO)}return A._setWindowSize(8),{CURVE:e,getPublicKey:ce,sign:M,verify:S,ExtendedPoint:m,utils:{getExtendedPublicKey:N,randomPrivateKey:()=>o(t.BYTES),precompute(b=8,g=m.BASE){return g._setWindowSize(b),g.multiply(BigInt(3)),g}}}}var qo=BigInt("57896044618658097711785492504343953926634992332820282019728792003956564819949"),g3=BigInt("19681161376707505956807079304988542015446066515923890162744021073123829784752"),$u=BigInt(0),a8=BigInt(1),y3=BigInt(2),zu=BigInt(3),c8=BigInt(5),l8=BigInt(8);function u8(r){let e=BigInt(10),t=BigInt(20),n=BigInt(40),i=BigInt(80),s=qo,a=r*r%s*r%s,c=ee(a,y3,s)*a%s,l=ee(c,a8,s)*r%s,u=ee(l,c8,s)*l%s,f=ee(u,e,s)*u%s,h=ee(f,t,s)*f%s,p=ee(h,n,s)*h%s,y=ee(p,i,s)*p%s,w=ee(y,i,s)*p%s,d=ee(w,e,s)*u%s;return{pow_p_5_8:ee(d,y3,s)*r%s,b2:a}}function f8(r){return r[0]&=248,r[31]&=127,r[31]|=64,r}function h8(r,e){let t=qo,n=W(e*e*e,t),i=W(n*n*e,t),s=u8(r*i).pow_p_5_8,o=W(r*n*s,t),a=W(e*o*o,t),c=o,l=W(o*g3,t),u=a===r,f=a===W(-r,t),h=a===W(-r*g3,t);return u&&(o=c),(f||h)&&(o=l),f3(o,t)&&(o=W(-o,t)),{isValid:u||f,value:o}}var d8=$t(qo,void 0,!0),p8={a:BigInt(-1),d:BigInt("37095705934669439343138083508754565189542113879843219016388785533085940283555"),Fp:d8,n:BigInt("7237005577332262213973186563042994240857116359379907606001950938285454250989"),h:l8,Gx:BigInt("15112221349535400772501151409588531511454012693041857206046113283949847762202"),Gy:BigInt("46316835694926478169428394003475163141307993866256225615783033603165251855960"),hash:o3,randomBytes:Vr,adjustScalarBytes:f8,uvRatio:h8},w3=m3(p8);var x1=32;function b3(r,e,t){return w3.verify(e,t instanceof Uint8Array?t:t.subarray(),r)}var v1=class{type="Ed25519";raw;constructor(e){this.raw=Ko(e,x1)}toMultihash(){return mt.digest(qr(this))}toCID(){return re.createV1(114,this.toMultihash())}toString(){return Y.encode(this.toMultihash().bytes).substring(1)}equals(e){return e==null||!(e.raw instanceof Uint8Array)?!1:X(this.raw,e.raw)}verify(e,t){return b3(this.raw,t,e)}};function $o(r){return r=Ko(r,x1),new v1(r)}function Ko(r,e){if(r=Uint8Array.from(r??[]),r.length!==e)throw new $(`Key must be a Uint8Array of length ${e}, got ${r.length}`);return r}var de;(function(r){r.RSA="RSA",r.Ed25519="Ed25519",r.secp256k1="secp256k1"})(de||(de={}));var zo;(function(r){r[r.RSA=0]="RSA",r[r.Ed25519=1]="Ed25519",r[r.secp256k1=2]="secp256k1"})(zo||(zo={}));(function(r){r.codec=()=>Pr(zo)})(de||(de={}));var st;(function(r){let e;r.codec=()=>(e==null&&(e=nt((t,n,i={})=>{i.lengthDelimited!==!1&&n.fork(),t.Type!=null&&(n.uint32(8),de.codec().encode(t.Type,n)),t.Data!=null&&(n.uint32(18),n.bytes(t.Data)),i.lengthDelimited!==!1&&n.ldelim()},(t,n,i={})=>{let s={},o=n==null?t.len:t.pos+n;for(;t.pos<o;){let a=t.uint32();switch(a>>>3){case 1:{s.Type=de.codec().decode(t);break}case 2:{s.Data=t.bytes();break}default:{t.skipType(a&7);break}}}return s})),e),r.encode=t=>rt(t,r.codec()),r.decode=(t,n)=>tt(t,r.codec(),n)})(st||(st={}));var Go;(function(r){let e;r.codec=()=>(e==null&&(e=nt((t,n,i={})=>{i.lengthDelimited!==!1&&n.fork(),t.Type!=null&&(n.uint32(8),de.codec().encode(t.Type,n)),t.Data!=null&&(n.uint32(18),n.bytes(t.Data)),i.lengthDelimited!==!1&&n.ldelim()},(t,n,i={})=>{let s={},o=n==null?t.len:t.pos+n;for(;t.pos<o;){let a=t.uint32();switch(a>>>3){case 1:{s.Type=de.codec().decode(t);break}case 2:{s.Data=t.bytes();break}default:{t.skipType(a&7);break}}}return s})),e),r.encode=t=>rt(t,r.codec()),r.decode=(t,n)=>tt(t,r.codec(),n)})(Go||(Go={}));var Nn={};Te(Nn,{MAX_RSA_KEY_SIZE:()=>di,generateRSAKeyPair:()=>ya,jwkToJWKKeyPair:()=>wa,jwkToPkcs1:()=>L8,jwkToPkix:()=>t2,jwkToRSAPrivateKey:()=>ga,pkcs1ToJwk:()=>da,pkcs1ToRSAPrivateKey:()=>ma,pkixToJwk:()=>pa,pkixToRSAPublicKey:()=>r2});var g8=new Uint32Array([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]),zt=new Uint32Array([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),Gt=new Uint32Array(64),jo=class extends Fr{constructor(){super(64,32,8,!1),this.A=zt[0]|0,this.B=zt[1]|0,this.C=zt[2]|0,this.D=zt[3]|0,this.E=zt[4]|0,this.F=zt[5]|0,this.G=zt[6]|0,this.H=zt[7]|0}get(){let{A:e,B:t,C:n,D:i,E:s,F:o,G:a,H:c}=this;return[e,t,n,i,s,o,a,c]}set(e,t,n,i,s,o,a,c){this.A=e|0,this.B=t|0,this.C=n|0,this.D=i|0,this.E=s|0,this.F=o|0,this.G=a|0,this.H=c|0}process(e,t){for(let f=0;f<16;f++,t+=4)Gt[f]=e.getUint32(t,!1);for(let f=16;f<64;f++){let h=Gt[f-15],p=Gt[f-2],y=Ze(h,7)^Ze(h,18)^h>>>3,w=Ze(p,17)^Ze(p,19)^p>>>10;Gt[f]=w+Gt[f-7]+y+Gt[f-16]|0}let{A:n,B:i,C:s,D:o,E:a,F:c,G:l,H:u}=this;for(let f=0;f<64;f++){let h=Ze(a,6)^Ze(a,11)^Ze(a,25),p=u+h+n3(a,c,l)+g8[f]+Gt[f]|0,w=(Ze(n,2)^Ze(n,13)^Ze(n,22))+i3(n,i,s)|0;u=l,l=c,c=a,a=o+p|0,o=s,s=i,i=n,n=p+w|0}n=n+this.A|0,i=i+this.B|0,s=s+this.C|0,o=o+this.D|0,a=a+this.E|0,c=c+this.F|0,l=l+this.G|0,u=u+this.H|0,this.set(n,i,s,o,a,c,l,u)}roundClean(){Gt.fill(0)}destroy(){this.set(0,0,0,0,0,0,0,0),this.buffer.fill(0)}};var Kr=h1(()=>new jo);var H=bs(E3());function pr(r,e){let t=0;if(r.length===1)return r[0];for(let n=r.length-1;n>=0;n--)t+=r[r.length-1-n]*Math.pow(2,e*n);return t}function jt(r,e,t=-1){let n=t,i=r,s=0,o=Math.pow(2,e);for(let a=1;a<8;a++){if(r<o){let c;if(n<0)c=new ArrayBuffer(a),s=a;else{if(n<a)return new ArrayBuffer(0);c=new ArrayBuffer(n),s=n}let l=new Uint8Array(c);for(let u=a-1;u>=0;u--){let f=Math.pow(2,u*e);l[s-u-1]=Math.floor(i/f),i-=l[s-u-1]*f}return c}o*=Math.pow(2,e)}return new ArrayBuffer(0)}function S1(...r){let e=0,t=0;for(let s of r)e+=s.length;let n=new ArrayBuffer(e),i=new Uint8Array(n);for(let s of r)i.set(s,t),t+=s.length;return i}function Qo(){let r=new Uint8Array(this.valueHex);if(this.valueHex.byteLength>=2){let a=r[0]===255&&r[1]&128,c=r[0]===0&&(r[1]&128)===0;(a||c)&&this.warnings.push("Needlessly long format")}let e=new ArrayBuffer(this.valueHex.byteLength),t=new Uint8Array(e);for(let a=0;a<this.valueHex.byteLength;a++)t[a]=0;t[0]=r[0]&128;let n=pr(t,8),i=new ArrayBuffer(this.valueHex.byteLength),s=new Uint8Array(i);for(let a=0;a<this.valueHex.byteLength;a++)s[a]=r[a];return s[0]&=127,pr(s,8)-n}function A3(r){let e=r<0?r*-1:r,t=128;for(let n=1;n<8;n++){if(e<=t){if(r<0){let o=t-e,a=jt(o,8,n),c=new Uint8Array(a);return c[0]|=128,a}let i=jt(e,8,n),s=new Uint8Array(i);if(s[0]&128){let o=i.slice(0),a=new Uint8Array(o);i=new ArrayBuffer(i.byteLength+1),s=new Uint8Array(i);for(let c=0;c<o.byteLength;c++)s[c+1]=a[c];s[0]=0}return i}t*=Math.pow(2,8)}return new ArrayBuffer(0)}function S3(r,e){if(r.byteLength!==e.byteLength)return!1;let t=new Uint8Array(r),n=new Uint8Array(e);for(let i=0;i<t.length;i++)if(t[i]!==n[i])return!1;return!0}function Oe(r,e){let t=r.toString(10);if(e<t.length)return"";let n=e-t.length,i=new Array(n);for(let o=0;o<n;o++)i[o]="0";return i.join("").concat(t)}var mf=Math.log(2);function I1(){if(typeof BigInt>"u")throw new Error("BigInt is not defined. Your environment doesn't implement BigInt.")}function Zo(r){let e=0,t=0;for(let i=0;i<r.length;i++){let s=r[i];e+=s.byteLength}let n=new Uint8Array(e);for(let i=0;i<r.length;i++){let s=r[i];n.set(new Uint8Array(s),t),t+=s.byteLength}return n.buffer}function Bt(r,e,t,n){return e instanceof Uint8Array?e.byteLength?t<0?(r.error="Wrong parameter: inputOffset less than zero",!1):n<0?(r.error="Wrong parameter: inputLength less than zero",!1):e.byteLength-t-n<0?(r.error="End of input reached before message was fully decoded (inconsistent offset and length values)",!1):!0:(r.error="Wrong parameter: inputBuffer has zero length",!1):(r.error="Wrong parameter: inputBuffer must be 'Uint8Array'",!1)}var Sn=class{constructor(){this.items=[]}write(e){this.items.push(e)}final(){return Zo(this.items)}},An=[new Uint8Array([1])],I3="0123456789";var Wr="",Je=new ArrayBuffer(0),Yo=new Uint8Array(0),In="EndOfContent",k3="OCTET STRING",T3="BIT STRING";function kt(r){var e;return e=class extends r{constructor(...n){var i;super(...n);let s=n[0]||{};this.isHexOnly=(i=s.isHexOnly)!==null&&i!==void 0?i:!1,this.valueHexView=s.valueHex?H.BufferSourceConverter.toUint8Array(s.valueHex):Yo}get valueHex(){return this.valueHexView.slice().buffer}set valueHex(n){this.valueHexView=new Uint8Array(n)}fromBER(n,i,s){let o=n instanceof ArrayBuffer?new Uint8Array(n):n;if(!Bt(this,o,i,s))return-1;let a=i+s;return this.valueHexView=o.subarray(i,a),this.valueHexView.length?(this.blockLength=s,a):(this.warnings.push("Zero buffer length"),i)}toBER(n=!1){return this.isHexOnly?n?new ArrayBuffer(this.valueHexView.byteLength):this.valueHexView.byteLength===this.valueHexView.buffer.byteLength?this.valueHexView.buffer:this.valueHexView.slice().buffer:(this.error="Flag 'isHexOnly' is not set, abort",Je)}toJSON(){return{...super.toJSON(),isHexOnly:this.isHexOnly,valueHex:H.Convert.ToHex(this.valueHexView)}}},e.NAME="hexBlock",e}var At=class{constructor({blockLength:e=0,error:t=Wr,warnings:n=[],valueBeforeDecode:i=Yo}={}){this.blockLength=e,this.error=t,this.warnings=n,this.valueBeforeDecodeView=H.BufferSourceConverter.toUint8Array(i)}static blockName(){return this.NAME}get valueBeforeDecode(){return this.valueBeforeDecodeView.slice().buffer}set valueBeforeDecode(e){this.valueBeforeDecodeView=new Uint8Array(e)}toJSON(){return{blockName:this.constructor.NAME,blockLength:this.blockLength,error:this.error,warnings:this.warnings,valueBeforeDecode:H.Convert.ToHex(this.valueBeforeDecodeView)}}};At.NAME="baseBlock";var Ie=class extends At{fromBER(e,t,n){throw TypeError("User need to make a specific function in a class which extends 'ValueBlock'")}toBER(e,t){throw TypeError("User need to make a specific function in a class which extends 'ValueBlock'")}};Ie.NAME="valueBlock";var B1=class extends kt(At){constructor({idBlock:e={}}={}){var t,n,i,s;super(),e?(this.isHexOnly=(t=e.isHexOnly)!==null&&t!==void 0?t:!1,this.valueHexView=e.valueHex?H.BufferSourceConverter.toUint8Array(e.valueHex):Yo,this.tagClass=(n=e.tagClass)!==null&&n!==void 0?n:-1,this.tagNumber=(i=e.tagNumber)!==null&&i!==void 0?i:-1,this.isConstructed=(s=e.isConstructed)!==null&&s!==void 0?s:!1):(this.tagClass=-1,this.tagNumber=-1,this.isConstructed=!1)}toBER(e=!1){let t=0;switch(this.tagClass){case 1:t|=0;break;case 2:t|=64;break;case 3:t|=128;break;case 4:t|=192;break;default:return this.error="Unknown tag class",Je}if(this.isConstructed&&(t|=32),this.tagNumber<31&&!this.isHexOnly){let i=new Uint8Array(1);if(!e){let s=this.tagNumber;s&=31,t|=s,i[0]=t}return i.buffer}if(!this.isHexOnly){let i=jt(this.tagNumber,7),s=new Uint8Array(i),o=i.byteLength,a=new Uint8Array(o+1);if(a[0]=t|31,!e){for(let c=0;c<o-1;c++)a[c+1]=s[c]|128;a[o]=s[o-1]}return a.buffer}let n=new Uint8Array(this.valueHexView.byteLength+1);if(n[0]=t|31,!e){let i=this.valueHexView;for(let s=0;s<i.length-1;s++)n[s+1]=i[s]|128;n[this.valueHexView.byteLength]=i[i.length-1]}return n.buffer}fromBER(e,t,n){let i=H.BufferSourceConverter.toUint8Array(e);if(!Bt(this,i,t,n))return-1;let s=i.subarray(t,t+n);if(s.length===0)return this.error="Zero buffer length",-1;switch(s[0]&192){case 0:this.tagClass=1;break;case 64:this.tagClass=2;break;case 128:this.tagClass=3;break;case 192:this.tagClass=4;break;default:return this.error="Unknown tag class",-1}this.isConstructed=(s[0]&32)===32,this.isHexOnly=!1;let a=s[0]&31;if(a!==31)this.tagNumber=a,this.blockLength=1;else{let c=1,l=this.valueHexView=new Uint8Array(255),u=255;for(;s[c]&128;){if(l[c-1]=s[c]&127,c++,c>=s.length)return this.error="End of input reached before message was fully decoded",-1;if(c===u){u+=255;let h=new Uint8Array(u);for(let p=0;p<l.length;p++)h[p]=l[p];l=this.valueHexView=new Uint8Array(u)}}this.blockLength=c+1,l[c-1]=s[c]&127;let f=new Uint8Array(c);for(let h=0;h<c;h++)f[h]=l[h];l=this.valueHexView=new Uint8Array(c),l.set(f),this.blockLength<=9?this.tagNumber=pr(l,7):(this.isHexOnly=!0,this.warnings.push("Tag too long, represented as hex-coded"))}if(this.tagClass===1&&this.isConstructed)switch(this.tagNumber){case 1:case 2:case 5:case 6:case 9:case 13:case 14:case 23:case 24:case 31:case 32:case 33:case 34:return this.error="Constructed encoding used for primitive type",-1}return t+this.blockLength}toJSON(){return{...super.toJSON(),tagClass:this.tagClass,tagNumber:this.tagNumber,isConstructed:this.isConstructed}}};B1.NAME="identificationBlock";var k1=class extends At{constructor({lenBlock:e={}}={}){var t,n,i;super(),this.isIndefiniteForm=(t=e.isIndefiniteForm)!==null&&t!==void 0?t:!1,this.longFormUsed=(n=e.longFormUsed)!==null&&n!==void 0?n:!1,this.length=(i=e.length)!==null&&i!==void 0?i:0}fromBER(e,t,n){let i=H.BufferSourceConverter.toUint8Array(e);if(!Bt(this,i,t,n))return-1;let s=i.subarray(t,t+n);if(s.length===0)return this.error="Zero buffer length",-1;if(s[0]===255)return this.error="Length block 0xFF is reserved by standard",-1;if(this.isIndefiniteForm=s[0]===128,this.isIndefiniteForm)return this.blockLength=1,t+this.blockLength;if(this.longFormUsed=!!(s[0]&128),this.longFormUsed===!1)return this.length=s[0],this.blockLength=1,t+this.blockLength;let o=s[0]&127;if(o>8)return this.error="Too big integer",-1;if(o+1>s.length)return this.error="End of input reached before message was fully decoded",-1;let a=t+1,c=i.subarray(a,a+o);return c[o-1]===0&&this.warnings.push("Needlessly long encoded length"),this.length=pr(c,8),this.longFormUsed&&this.length<=127&&this.warnings.push("Unnecessary usage of long length form"),this.blockLength=o+1,t+this.blockLength}toBER(e=!1){let t,n;if(this.length>127&&(this.longFormUsed=!0),this.isIndefiniteForm)return t=new ArrayBuffer(1),e===!1&&(n=new Uint8Array(t),n[0]=128),t;if(this.longFormUsed){let i=jt(this.length,8);if(i.byteLength>127)return this.error="Too big length",Je;if(t=new ArrayBuffer(i.byteLength+1),e)return t;let s=new Uint8Array(i);n=new Uint8Array(t),n[0]=i.byteLength|128;for(let o=0;o<i.byteLength;o++)n[o+1]=s[o];return t}return t=new ArrayBuffer(1),e===!1&&(n=new Uint8Array(t),n[0]=this.length),t}toJSON(){return{...super.toJSON(),isIndefiniteForm:this.isIndefiniteForm,longFormUsed:this.longFormUsed,length:this.length}}};k1.NAME="lengthBlock";var I={},be=class extends At{constructor({name:e=Wr,optional:t=!1,primitiveSchema:n,...i}={},s){super(i),this.name=e,this.optional=t,n&&(this.primitiveSchema=n),this.idBlock=new B1(i),this.lenBlock=new k1(i),this.valueBlock=s?new s(i):new Ie(i)}fromBER(e,t,n){let i=this.valueBlock.fromBER(e,t,this.lenBlock.isIndefiniteForm?n:this.lenBlock.length);return i===-1?(this.error=this.valueBlock.error,i):(this.idBlock.error.length||(this.blockLength+=this.idBlock.blockLength),this.lenBlock.error.length||(this.blockLength+=this.lenBlock.blockLength),this.valueBlock.error.length||(this.blockLength+=this.valueBlock.blockLength),i)}toBER(e,t){let n=t||new Sn;t||R3(this);let i=this.idBlock.toBER(e);if(n.write(i),this.lenBlock.isIndefiniteForm)n.write(new Uint8Array([128]).buffer),this.valueBlock.toBER(e,n),n.write(new ArrayBuffer(2));else{let s=this.valueBlock.toBER(e);this.lenBlock.length=s.byteLength;let o=this.lenBlock.toBER(e);n.write(o),n.write(s)}return t?Je:n.final()}toJSON(){let e={...super.toJSON(),idBlock:this.idBlock.toJSON(),lenBlock:this.lenBlock.toJSON(),valueBlock:this.valueBlock.toJSON(),name:this.name,optional:this.optional};return this.primitiveSchema&&(e.primitiveSchema=this.primitiveSchema.toJSON()),e}toString(e="ascii"){return e==="ascii"?this.onAsciiEncoding():H.Convert.ToHex(this.toBER())}onAsciiEncoding(){return`${this.constructor.NAME} : ${H.Convert.ToHex(this.valueBlock.valueBeforeDecodeView)}`}isEqual(e){if(this===e)return!0;if(!(e instanceof this.constructor))return!1;let t=this.toBER(),n=e.toBER();return S3(t,n)}};be.NAME="BaseBlock";function R3(r){if(r instanceof I.Constructed)for(let e of r.valueBlock.value)R3(e)&&(r.lenBlock.isIndefiniteForm=!0);return!!r.lenBlock.isIndefiniteForm}var T1=class extends be{constructor({value:e=Wr,...t}={},n){super(t,n),e&&this.fromString(e)}getValue(){return this.valueBlock.value}setValue(e){this.valueBlock.value=e}fromBER(e,t,n){let i=this.valueBlock.fromBER(e,t,this.lenBlock.isIndefiniteForm?n:this.lenBlock.length);return i===-1?(this.error=this.valueBlock.error,i):(this.fromBuffer(this.valueBlock.valueHexView),this.idBlock.error.length||(this.blockLength+=this.idBlock.blockLength),this.lenBlock.error.length||(this.blockLength+=this.lenBlock.blockLength),this.valueBlock.error.length||(this.blockLength+=this.valueBlock.blockLength),i)}onAsciiEncoding(){return`${this.constructor.NAME} : '${this.valueBlock.value}'`}};T1.NAME="BaseStringBlock";var R1=class extends kt(Ie){constructor({isHexOnly:e=!0,...t}={}){super(t),this.isHexOnly=e}};R1.NAME="PrimitiveValueBlock";var P3,P1=class extends be{constructor(e={}){super(e,R1),this.idBlock.isConstructed=!1}};P3=P1;I.Primitive=P3;P1.NAME="PRIMITIVE";function I8(r,e){if(r instanceof e)return r;let t=new e;return t.idBlock=r.idBlock,t.lenBlock=r.lenBlock,t.warnings=r.warnings,t.valueBeforeDecodeView=r.valueBeforeDecodeView,t}function ui(r,e=0,t=r.length){let n=e,i=new be({},Ie),s=new At;if(!Bt(s,r,e,t))return i.error=s.error,{offset:-1,result:i};if(!r.subarray(e,e+t).length)return i.error="Zero buffer length",{offset:-1,result:i};let a=i.idBlock.fromBER(r,e,t);if(i.idBlock.warnings.length&&i.warnings.concat(i.idBlock.warnings),a===-1)return i.error=i.idBlock.error,{offset:-1,result:i};if(e=a,t-=i.idBlock.blockLength,a=i.lenBlock.fromBER(r,e,t),i.lenBlock.warnings.length&&i.warnings.concat(i.lenBlock.warnings),a===-1)return i.error=i.lenBlock.error,{offset:-1,result:i};if(e=a,t-=i.lenBlock.blockLength,!i.idBlock.isConstructed&&i.lenBlock.isIndefiniteForm)return i.error="Indefinite length form used for primitive encoding form",{offset:-1,result:i};let c=be;switch(i.idBlock.tagClass){case 1:if(i.idBlock.tagNumber>=37&&i.idBlock.isHexOnly===!1)return i.error="UNIVERSAL 37 and upper tags are reserved by ASN.1 standard",{offset:-1,result:i};switch(i.idBlock.tagNumber){case 0:if(i.idBlock.isConstructed&&i.lenBlock.length>0)return i.error="Type [UNIVERSAL 0] is reserved",{offset:-1,result:i};c=I.EndOfContent;break;case 1:c=I.Boolean;break;case 2:c=I.Integer;break;case 3:c=I.BitString;break;case 4:c=I.OctetString;break;case 5:c=I.Null;break;case 6:c=I.ObjectIdentifier;break;case 10:c=I.Enumerated;break;case 12:c=I.Utf8String;break;case 13:c=I.RelativeObjectIdentifier;break;case 14:c=I.TIME;break;case 15:return i.error="[UNIVERSAL 15] is reserved by ASN.1 standard",{offset:-1,result:i};case 16:c=I.Sequence;break;case 17:c=I.Set;break;case 18:c=I.NumericString;break;case 19:c=I.PrintableString;break;case 20:c=I.TeletexString;break;case 21:c=I.VideotexString;break;case 22:c=I.IA5String;break;case 23:c=I.UTCTime;break;case 24:c=I.GeneralizedTime;break;case 25:c=I.GraphicString;break;case 26:c=I.VisibleString;break;case 27:c=I.GeneralString;break;case 28:c=I.UniversalString;break;case 29:c=I.CharacterString;break;case 30:c=I.BmpString;break;case 31:c=I.DATE;break;case 32:c=I.TimeOfDay;break;case 33:c=I.DateTime;break;case 34:c=I.Duration;break;default:{let l=i.idBlock.isConstructed?new I.Constructed:new I.Primitive;l.idBlock=i.idBlock,l.lenBlock=i.lenBlock,l.warnings=i.warnings,i=l}}break;case 2:case 3:case 4:default:c=i.idBlock.isConstructed?I.Constructed:I.Primitive}return i=I8(i,c),a=i.fromBER(r,e,i.lenBlock.isIndefiniteForm?t:i.lenBlock.length),i.valueBeforeDecodeView=r.subarray(n,n+i.blockLength),{offset:a,result:i}}function Xo(r){if(!r.byteLength){let e=new be({},Ie);return e.error="Input buffer has zero length",{offset:-1,result:e}}return ui(H.BufferSourceConverter.toUint8Array(r).slice(),0,r.byteLength)}function B8(r,e){return r?1:e}var ot=class extends Ie{constructor({value:e=[],isIndefiniteForm:t=!1,...n}={}){super(n),this.value=e,this.isIndefiniteForm=t}fromBER(e,t,n){let i=H.BufferSourceConverter.toUint8Array(e);if(!Bt(this,i,t,n))return-1;if(this.valueBeforeDecodeView=i.subarray(t,t+n),this.valueBeforeDecodeView.length===0)return this.warnings.push("Zero buffer length"),t;let s=t;for(;B8(this.isIndefiniteForm,n)>0;){let o=ui(i,s,n);if(o.offset===-1)return this.error=o.result.error,this.warnings.concat(o.result.warnings),-1;if(s=o.offset,this.blockLength+=o.result.blockLength,n-=o.result.blockLength,this.value.push(o.result),this.isIndefiniteForm&&o.result.constructor.NAME===In)break}return this.isIndefiniteForm&&(this.value[this.value.length-1].constructor.NAME===In?this.value.pop():this.warnings.push("No EndOfContent block encoded")),s}toBER(e,t){let n=t||new Sn;for(let i=0;i<this.value.length;i++)this.value[i].toBER(e,n);return t?Je:n.final()}toJSON(){let e={...super.toJSON(),isIndefiniteForm:this.isIndefiniteForm,value:[]};for(let t of this.value)e.value.push(t.toJSON());return e}};ot.NAME="ConstructedValueBlock";var L3,Wt=class extends be{constructor(e={}){super(e,ot),this.idBlock.isConstructed=!0}fromBER(e,t,n){this.valueBlock.isIndefiniteForm=this.lenBlock.isIndefiniteForm;let i=this.valueBlock.fromBER(e,t,this.lenBlock.isIndefiniteForm?n:this.lenBlock.length);return i===-1?(this.error=this.valueBlock.error,i):(this.idBlock.error.length||(this.blockLength+=this.idBlock.blockLength),this.lenBlock.error.length||(this.blockLength+=this.lenBlock.blockLength),this.valueBlock.error.length||(this.blockLength+=this.valueBlock.blockLength),i)}onAsciiEncoding(){let e=[];for(let n of this.valueBlock.value)e.push(n.toString("ascii").split(`
3
3
  `).map(i=>` ${i}`).join(`
4
4
  `));let t=this.idBlock.tagClass===3?`[${this.idBlock.tagNumber}]`:this.constructor.NAME;return e.length?`${t} :
5
5
  ${e.join(`
6
- `)}`:`${t} :`}};N3=jt;B.Constructed=N3;jt.NAME="CONSTRUCTED";var N1=class extends Se{fromBER(e,t,n){return t}toBER(e){return Ye}};N1.override="EndOfContentValueBlock";var L3,L1=class extends be{constructor(e={}){super(e,N1),this.idBlock.tagClass=1,this.idBlock.tagNumber=0}};L3=L1;B.EndOfContent=L3;L1.NAME=Bn;var _3,$r=class extends be{constructor(e={}){super(e,Se),this.idBlock.tagClass=1,this.idBlock.tagNumber=5}fromBER(e,t,n){return this.lenBlock.length>0&&this.warnings.push("Non-zero length of value block for Null type"),this.idBlock.error.length||(this.blockLength+=this.idBlock.blockLength),this.lenBlock.error.length||(this.blockLength+=this.lenBlock.blockLength),this.blockLength+=n,t+n>e.byteLength?(this.error="End of input reached before message was fully decoded (inconsistent offset and length values)",-1):t+n}toBER(e,t){let n=new ArrayBuffer(2);if(!e){let i=new Uint8Array(n);i[0]=5,i[1]=0}return t&&t.write(n),n}onAsciiEncoding(){return`${this.constructor.NAME}`}};_3=$r;B.Null=_3;$r.NAME="NULL";var _1=class extends kt(Se){constructor({value:e,...t}={}){super(t),t.valueHex?this.valueHexView=H.BufferSourceConverter.toUint8Array(t.valueHex):this.valueHexView=new Uint8Array(1),e&&(this.value=e)}get value(){for(let e of this.valueHexView)if(e>0)return!0;return!1}set value(e){this.valueHexView[0]=e?255:0}fromBER(e,t,n){let i=H.BufferSourceConverter.toUint8Array(e);return It(this,i,t,n)?(this.valueHexView=i.subarray(t,t+n),n>1&&this.warnings.push("Boolean value encoded in more then 1 octet"),this.isHexOnly=!0,Qo.call(this),this.blockLength=n,t+n):-1}toBER(){return this.valueHexView.slice()}toJSON(){return{...super.toJSON(),value:this.value}}};_1.NAME="BooleanValueBlock";var C3,C1=class extends be{constructor(e={}){super(e,_1),this.idBlock.tagClass=1,this.idBlock.tagNumber=1}getValue(){return this.valueBlock.value}setValue(e){this.valueBlock.value=e}onAsciiEncoding(){return`${this.constructor.NAME} : ${this.getValue}`}};C3=C1;B.Boolean=C3;C1.NAME="BOOLEAN";var U1=class extends kt(ot){constructor({isConstructed:e=!1,...t}={}){super(t),this.isConstructed=e}fromBER(e,t,n){let i=0;if(this.isConstructed){if(this.isHexOnly=!1,i=ot.prototype.fromBER.call(this,e,t,n),i===-1)return i;for(let s=0;s<this.value.length;s++){let o=this.value[s].constructor.NAME;if(o===Bn){if(this.isIndefiniteForm)break;return this.error="EndOfContent is unexpected, OCTET STRING may consists of OCTET STRINGs only",-1}if(o!==k3)return this.error="OCTET STRING may consists of OCTET STRINGs only",-1}}else this.isHexOnly=!0,i=super.fromBER(e,t,n),this.blockLength=n;return i}toBER(e,t){return this.isConstructed?ot.prototype.toBER.call(this,e,t):e?new ArrayBuffer(this.valueHexView.byteLength):this.valueHexView.slice().buffer}toJSON(){return{...super.toJSON(),isConstructed:this.isConstructed}}};U1.NAME="OctetStringValueBlock";var U3,D1=class r extends be{constructor({idBlock:e={},lenBlock:t={},...n}={}){var i,s;(i=n.isConstructed)!==null&&i!==void 0||(n.isConstructed=!!(!((s=n.value)===null||s===void 0)&&s.length)),super({idBlock:{isConstructed:n.isConstructed,...e},lenBlock:{...t,isIndefiniteForm:!!n.isIndefiniteForm},...n},U1),this.idBlock.tagClass=1,this.idBlock.tagNumber=4}fromBER(e,t,n){if(this.valueBlock.isConstructed=this.idBlock.isConstructed,this.valueBlock.isIndefiniteForm=this.lenBlock.isIndefiniteForm,n===0)return this.idBlock.error.length===0&&(this.blockLength+=this.idBlock.blockLength),this.lenBlock.error.length===0&&(this.blockLength+=this.lenBlock.blockLength),t;if(!this.valueBlock.isConstructed){let s=(e instanceof ArrayBuffer?new Uint8Array(e):e).subarray(t,t+n);try{if(s.byteLength){let o=ui(s,0,s.byteLength);o.offset!==-1&&o.offset===n&&(this.valueBlock.value=[o.result])}}catch{}}return super.fromBER(e,t,n)}onAsciiEncoding(){return this.valueBlock.isConstructed||this.valueBlock.value&&this.valueBlock.value.length?jt.prototype.onAsciiEncoding.call(this):`${this.constructor.NAME} : ${H.Convert.ToHex(this.valueBlock.valueHexView)}`}getValue(){if(!this.idBlock.isConstructed)return this.valueBlock.valueHexView.slice().buffer;let e=[];for(let t of this.valueBlock.value)t instanceof r&&e.push(t.valueBlock.valueHexView);return H.BufferSourceConverter.concat(e)}};U3=D1;B.OctetString=U3;D1.NAME=k3;var O1=class extends kt(ot){constructor({unusedBits:e=0,isConstructed:t=!1,...n}={}){super(n),this.unusedBits=e,this.isConstructed=t,this.blockLength=this.valueHexView.byteLength}fromBER(e,t,n){if(!n)return t;let i=-1;if(this.isConstructed){if(i=ot.prototype.fromBER.call(this,e,t,n),i===-1)return i;for(let a of this.value){let c=a.constructor.NAME;if(c===Bn){if(this.isIndefiniteForm)break;return this.error="EndOfContent is unexpected, BIT STRING may consists of BIT STRINGs only",-1}if(c!==T3)return this.error="BIT STRING may consists of BIT STRINGs only",-1;let l=a.valueBlock;if(this.unusedBits>0&&l.unusedBits>0)return this.error='Using of "unused bits" inside constructive BIT STRING allowed for least one only',-1;this.unusedBits=l.unusedBits}return i}let s=H.BufferSourceConverter.toUint8Array(e);if(!It(this,s,t,n))return-1;let o=s.subarray(t,t+n);if(this.unusedBits=o[0],this.unusedBits>7)return this.error="Unused bits for BitString must be in range 0-7",-1;if(!this.unusedBits){let a=o.subarray(1);try{if(a.byteLength){let c=ui(a,0,a.byteLength);c.offset!==-1&&c.offset===n-1&&(this.value=[c.result])}}catch{}}return this.valueHexView=o.subarray(1),this.blockLength=o.length,t+n}toBER(e,t){if(this.isConstructed)return ot.prototype.toBER.call(this,e,t);if(e)return new ArrayBuffer(this.valueHexView.byteLength+1);if(!this.valueHexView.byteLength)return Ye;let n=new Uint8Array(this.valueHexView.length+1);return n[0]=this.unusedBits,n.set(this.valueHexView,1),n.buffer}toJSON(){return{...super.toJSON(),unusedBits:this.unusedBits,isConstructed:this.isConstructed}}};O1.NAME="BitStringValueBlock";var D3,zr=class extends be{constructor({idBlock:e={},lenBlock:t={},...n}={}){var i,s;(i=n.isConstructed)!==null&&i!==void 0||(n.isConstructed=!!(!((s=n.value)===null||s===void 0)&&s.length)),super({idBlock:{isConstructed:n.isConstructed,...e},lenBlock:{...t,isIndefiniteForm:!!n.isIndefiniteForm},...n},O1),this.idBlock.tagClass=1,this.idBlock.tagNumber=3}fromBER(e,t,n){return this.valueBlock.isConstructed=this.idBlock.isConstructed,this.valueBlock.isIndefiniteForm=this.lenBlock.isIndefiniteForm,super.fromBER(e,t,n)}onAsciiEncoding(){if(this.valueBlock.isConstructed||this.valueBlock.value&&this.valueBlock.value.length)return jt.prototype.onAsciiEncoding.call(this);{let e=[],t=this.valueBlock.valueHexView;for(let i of t)e.push(i.toString(2).padStart(8,"0"));let n=e.join("");return`${this.constructor.NAME} : ${n.substring(0,n.length-this.valueBlock.unusedBits)}`}}};D3=zr;B.BitString=D3;zr.NAME=T3;var O3;function I8(r,e){let t=new Uint8Array([0]),n=new Uint8Array(r),i=new Uint8Array(e),s=n.slice(0),o=s.length-1,a=i.slice(0),c=a.length-1,l=0,u=c<o?o:c,f=0;for(let h=u;h>=0;h--,f++){switch(!0){case f<a.length:l=s[o-f]+a[c-f]+t[0];break;default:l=s[o-f]+t[0]}switch(t[0]=l/10,!0){case f>=s.length:s=S1(new Uint8Array([l%10]),s);break;default:s[o-f]=l%10}}return t[0]>0&&(s=S1(t,s)),s}function I3(r){if(r>=An.length)for(let e=An.length;e<=r;e++){let t=new Uint8Array([0]),n=An[e-1].slice(0);for(let i=n.length-1;i>=0;i--){let s=new Uint8Array([(n[i]<<1)+t[0]]);t[0]=s[0]/10,n[i]=s[0]%10}t[0]>0&&(n=S1(t,n)),An.push(n)}return An[r]}function k8(r,e){let t=0,n=new Uint8Array(r),i=new Uint8Array(e),s=n.slice(0),o=s.length-1,a=i.slice(0),c=a.length-1,l,u=0;for(let f=c;f>=0;f--,u++)switch(l=s[o-u]-a[c-u]-t,!0){case l<0:t=1,s[o-u]=l+10;break;default:t=0,s[o-u]=l}if(t>0)for(let f=o-c+1;f>=0;f--,u++)if(l=s[o-u]-t,l<0)t=1,s[o-u]=l+10;else{t=0,s[o-u]=l;break}return s.slice()}var In=class extends kt(Se){constructor({value:e,...t}={}){super(t),this._valueDec=0,t.valueHex&&this.setValueHex(),e!==void 0&&(this.valueDec=e)}setValueHex(){this.valueHexView.length>=4?(this.warnings.push("Too big Integer for decoding, hex only"),this.isHexOnly=!0,this._valueDec=0):(this.isHexOnly=!1,this.valueHexView.length>0&&(this._valueDec=Qo.call(this)))}set valueDec(e){this._valueDec=e,this.isHexOnly=!1,this.valueHexView=new Uint8Array(A3(e))}get valueDec(){return this._valueDec}fromDER(e,t,n,i=0){let s=this.fromBER(e,t,n);if(s===-1)return s;let o=this.valueHexView;return o[0]===0&&o[1]&128?this.valueHexView=o.subarray(1):i!==0&&o.length<i&&(i-o.length>1&&(i=o.length+1),this.valueHexView=o.subarray(i-o.length)),s}toDER(e=!1){let t=this.valueHexView;switch(!0){case(t[0]&128)!==0:{let n=new Uint8Array(this.valueHexView.length+1);n[0]=0,n.set(t,1),this.valueHexView=n}break;case(t[0]===0&&(t[1]&128)===0):this.valueHexView=this.valueHexView.subarray(1);break}return this.toBER(e)}fromBER(e,t,n){let i=super.fromBER(e,t,n);return i===-1||this.setValueHex(),i}toBER(e){return e?new ArrayBuffer(this.valueHexView.length):this.valueHexView.slice().buffer}toJSON(){return{...super.toJSON(),valueDec:this.valueDec}}toString(){let e=this.valueHexView.length*8-1,t=new Uint8Array(this.valueHexView.length*8/3),n=0,i,s=this.valueHexView,o="",a=!1;for(let c=s.byteLength-1;c>=0;c--){i=s[c];for(let l=0;l<8;l++){if((i&1)===1)switch(n){case e:t=k8(I3(n),t),o="-";break;default:t=I8(t,I3(n))}n++,i>>=1}}for(let c=0;c<t.length;c++)t[c]&&(a=!0),a&&(o+=B3.charAt(t[c]));return a===!1&&(o+=B3.charAt(0)),o}};O3=In;In.NAME="IntegerValueBlock";Object.defineProperty(O3.prototype,"valueHex",{set:function(r){this.valueHexView=new Uint8Array(r),this.setValueHex()},get:function(){return this.valueHexView.slice().buffer}});var M3,xe=class r extends be{constructor(e={}){super(e,In),this.idBlock.tagClass=1,this.idBlock.tagNumber=2}toBigInt(){return B1(),BigInt(this.valueBlock.toString())}static fromBigInt(e){B1();let t=BigInt(e),n=new Sn,i=t.toString(16).replace(/^-/,""),s=new Uint8Array(H.Convert.FromHex(i));if(t<0){let a=new Uint8Array(s.length+(s[0]&128?1:0));a[0]|=128;let l=BigInt(`0x${H.Convert.ToHex(a)}`)+t,u=H.BufferSourceConverter.toUint8Array(H.Convert.FromHex(l.toString(16)));u[0]|=128,n.write(u)}else s[0]&128&&n.write(new Uint8Array([0])),n.write(s);return new r({valueHex:n.final()})}convertToDER(){let e=new r({valueHex:this.valueBlock.valueHexView});return e.valueBlock.toDER(),e}convertFromDER(){return new r({valueHex:this.valueBlock.valueHexView[0]===0?this.valueBlock.valueHexView.subarray(1):this.valueBlock.valueHexView})}onAsciiEncoding(){return`${this.constructor.NAME} : ${this.valueBlock.toString()}`}};M3=xe;B.Integer=M3;xe.NAME="INTEGER";var V3,M1=class extends xe{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=10}};V3=M1;B.Enumerated=V3;M1.NAME="ENUMERATED";var kn=class extends kt(Se){constructor({valueDec:e=-1,isFirstSid:t=!1,...n}={}){super(n),this.valueDec=e,this.isFirstSid=t}fromBER(e,t,n){if(!n)return t;let i=H.BufferSourceConverter.toUint8Array(e);if(!It(this,i,t,n))return-1;let s=i.subarray(t,t+n);this.valueHexView=new Uint8Array(n);for(let a=0;a<n&&(this.valueHexView[a]=s[a]&127,this.blockLength++,!!(s[a]&128));a++);let o=new Uint8Array(this.blockLength);for(let a=0;a<this.blockLength;a++)o[a]=this.valueHexView[a];return this.valueHexView=o,s[this.blockLength-1]&128?(this.error="End of input reached before message was fully decoded",-1):(this.valueHexView[0]===0&&this.warnings.push("Needlessly long format of SID encoding"),this.blockLength<=8?this.valueDec=hr(this.valueHexView,7):(this.isHexOnly=!0,this.warnings.push("Too big SID for decoding, hex only")),t+this.blockLength)}set valueBigInt(e){B1();let t=BigInt(e).toString(2);for(;t.length%7;)t="0"+t;let n=new Uint8Array(t.length/7);for(let i=0;i<n.length;i++)n[i]=parseInt(t.slice(i*7,i*7+7),2)+(i+1<n.length?128:0);this.fromBER(n.buffer,0,n.length)}toBER(e){if(this.isHexOnly){if(e)return new ArrayBuffer(this.valueHexView.byteLength);let i=this.valueHexView,s=new Uint8Array(this.blockLength);for(let o=0;o<this.blockLength-1;o++)s[o]=i[o]|128;return s[this.blockLength-1]=i[this.blockLength-1],s.buffer}let t=Gt(this.valueDec,7);if(t.byteLength===0)return this.error="Error during encoding SID value",Ye;let n=new Uint8Array(t.byteLength);if(!e){let i=new Uint8Array(t),s=t.byteLength-1;for(let o=0;o<s;o++)n[o]=i[o]|128;n[s]=i[s]}return n}toString(){let e="";if(this.isHexOnly)e=H.Convert.ToHex(this.valueHexView);else if(this.isFirstSid){let t=this.valueDec;this.valueDec<=39?e="0.":this.valueDec<=79?(e="1.",t-=40):(e="2.",t-=80),e+=t.toString()}else e=this.valueDec.toString();return e}toJSON(){return{...super.toJSON(),valueDec:this.valueDec,isFirstSid:this.isFirstSid}}};kn.NAME="sidBlock";var V1=class extends Se{constructor({value:e=jr,...t}={}){super(t),this.value=[],e&&this.fromString(e)}fromBER(e,t,n){let i=t;for(;n>0;){let s=new kn;if(i=s.fromBER(e,i,n),i===-1)return this.blockLength=0,this.error=s.error,i;this.value.length===0&&(s.isFirstSid=!0),this.blockLength+=s.blockLength,n-=s.blockLength,this.value.push(s)}return i}toBER(e){let t=[];for(let n=0;n<this.value.length;n++){let i=this.value[n].toBER(e);if(i.byteLength===0)return this.error=this.value[n].error,Ye;t.push(i)}return Zo(t)}fromString(e){this.value=[];let t=0,n=0,i="",s=!1;do if(n=e.indexOf(".",t),n===-1?i=e.substring(t):i=e.substring(t,n),t=n+1,s){let o=this.value[0],a=0;switch(o.valueDec){case 0:break;case 1:a=40;break;case 2:a=80;break;default:this.value=[];return}let c=parseInt(i,10);if(isNaN(c))return;o.valueDec=c+a,s=!1}else{let o=new kn;if(i>Number.MAX_SAFE_INTEGER){B1();let a=BigInt(i);o.valueBigInt=a}else if(o.valueDec=parseInt(i,10),isNaN(o.valueDec))return;this.value.length||(o.isFirstSid=!0,s=!0),this.value.push(o)}while(n!==-1)}toString(){let e="",t=!1;for(let n=0;n<this.value.length;n++){t=this.value[n].isHexOnly;let i=this.value[n].toString();n!==0&&(e=`${e}.`),t?(i=`{${i}}`,this.value[n].isFirstSid?e=`2.{${i} - 80}`:e+=i):e+=i}return e}toJSON(){let e={...super.toJSON(),value:this.toString(),sidArray:[]};for(let t=0;t<this.value.length;t++)e.sidArray.push(this.value[t].toJSON());return e}};V1.NAME="ObjectIdentifierValueBlock";var F3,Gr=class extends be{constructor(e={}){super(e,V1),this.idBlock.tagClass=1,this.idBlock.tagNumber=6}getValue(){return this.valueBlock.toString()}setValue(e){this.valueBlock.fromString(e)}onAsciiEncoding(){return`${this.constructor.NAME} : ${this.valueBlock.toString()||"empty"}`}toJSON(){return{...super.toJSON(),value:this.getValue()}}};F3=Gr;B.ObjectIdentifier=F3;Gr.NAME="OBJECT IDENTIFIER";var Tn=class extends kt(At){constructor({valueDec:e=0,...t}={}){super(t),this.valueDec=e}fromBER(e,t,n){if(n===0)return t;let i=H.BufferSourceConverter.toUint8Array(e);if(!It(this,i,t,n))return-1;let s=i.subarray(t,t+n);this.valueHexView=new Uint8Array(n);for(let a=0;a<n&&(this.valueHexView[a]=s[a]&127,this.blockLength++,!!(s[a]&128));a++);let o=new Uint8Array(this.blockLength);for(let a=0;a<this.blockLength;a++)o[a]=this.valueHexView[a];return this.valueHexView=o,s[this.blockLength-1]&128?(this.error="End of input reached before message was fully decoded",-1):(this.valueHexView[0]===0&&this.warnings.push("Needlessly long format of SID encoding"),this.blockLength<=8?this.valueDec=hr(this.valueHexView,7):(this.isHexOnly=!0,this.warnings.push("Too big SID for decoding, hex only")),t+this.blockLength)}toBER(e){if(this.isHexOnly){if(e)return new ArrayBuffer(this.valueHexView.byteLength);let i=this.valueHexView,s=new Uint8Array(this.blockLength);for(let o=0;o<this.blockLength-1;o++)s[o]=i[o]|128;return s[this.blockLength-1]=i[this.blockLength-1],s.buffer}let t=Gt(this.valueDec,7);if(t.byteLength===0)return this.error="Error during encoding SID value",Ye;let n=new Uint8Array(t.byteLength);if(!e){let i=new Uint8Array(t),s=t.byteLength-1;for(let o=0;o<s;o++)n[o]=i[o]|128;n[s]=i[s]}return n.buffer}toString(){let e="";return this.isHexOnly?e=H.Convert.ToHex(this.valueHexView):e=this.valueDec.toString(),e}toJSON(){return{...super.toJSON(),valueDec:this.valueDec}}};Tn.NAME="relativeSidBlock";var F1=class extends Se{constructor({value:e=jr,...t}={}){super(t),this.value=[],e&&this.fromString(e)}fromBER(e,t,n){let i=t;for(;n>0;){let s=new Tn;if(i=s.fromBER(e,i,n),i===-1)return this.blockLength=0,this.error=s.error,i;this.blockLength+=s.blockLength,n-=s.blockLength,this.value.push(s)}return i}toBER(e,t){let n=[];for(let i=0;i<this.value.length;i++){let s=this.value[i].toBER(e);if(s.byteLength===0)return this.error=this.value[i].error,Ye;n.push(s)}return Zo(n)}fromString(e){this.value=[];let t=0,n=0,i="";do{n=e.indexOf(".",t),n===-1?i=e.substring(t):i=e.substring(t,n),t=n+1;let s=new Tn;if(s.valueDec=parseInt(i,10),isNaN(s.valueDec))return!0;this.value.push(s)}while(n!==-1);return!0}toString(){let e="",t=!1;for(let n=0;n<this.value.length;n++){t=this.value[n].isHexOnly;let i=this.value[n].toString();n!==0&&(e=`${e}.`),t&&(i=`{${i}}`),e+=i}return e}toJSON(){let e={...super.toJSON(),value:this.toString(),sidArray:[]};for(let t=0;t<this.value.length;t++)e.sidArray.push(this.value[t].toJSON());return e}};F1.NAME="RelativeObjectIdentifierValueBlock";var H3,H1=class extends be{constructor(e={}){super(e,F1),this.idBlock.tagClass=1,this.idBlock.tagNumber=13}getValue(){return this.valueBlock.toString()}setValue(e){this.valueBlock.fromString(e)}onAsciiEncoding(){return`${this.constructor.NAME} : ${this.valueBlock.toString()||"empty"}`}toJSON(){return{...super.toJSON(),value:this.getValue()}}};H3=H1;B.RelativeObjectIdentifier=H3;H1.NAME="RelativeObjectIdentifier";var q3,St=class extends jt{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=16}};q3=St;B.Sequence=q3;St.NAME="SEQUENCE";var K3,q1=class extends jt{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=17}};K3=q1;B.Set=K3;q1.NAME="SET";var K1=class extends kt(Se){constructor({...e}={}){super(e),this.isHexOnly=!0,this.value=jr}toJSON(){return{...super.toJSON(),value:this.value}}};K1.NAME="StringValueBlock";var $1=class extends K1{};$1.NAME="SimpleStringValueBlock";var Re=class extends T1{constructor({...e}={}){super(e,$1)}fromBuffer(e){this.valueBlock.value=String.fromCharCode.apply(null,H.BufferSourceConverter.toUint8Array(e))}fromString(e){let t=e.length,n=this.valueBlock.valueHexView=new Uint8Array(t);for(let i=0;i<t;i++)n[i]=e.charCodeAt(i);this.valueBlock.value=e}};Re.NAME="SIMPLE STRING";var z1=class extends Re{fromBuffer(e){this.valueBlock.valueHexView=H.BufferSourceConverter.toUint8Array(e);try{this.valueBlock.value=H.Convert.ToUtf8String(e)}catch(t){this.warnings.push(`Error during "decodeURIComponent": ${t}, using raw string`),this.valueBlock.value=H.Convert.ToBinary(e)}}fromString(e){this.valueBlock.valueHexView=new Uint8Array(H.Convert.FromUtf8String(e)),this.valueBlock.value=e}};z1.NAME="Utf8StringValueBlock";var $3,Bt=class extends z1{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=12}};$3=Bt;B.Utf8String=$3;Bt.NAME="UTF8String";var G1=class extends Re{fromBuffer(e){this.valueBlock.value=H.Convert.ToUtf16String(e),this.valueBlock.valueHexView=H.BufferSourceConverter.toUint8Array(e)}fromString(e){this.valueBlock.value=e,this.valueBlock.valueHexView=new Uint8Array(H.Convert.FromUtf16String(e))}};G1.NAME="BmpStringValueBlock";var z3,j1=class extends G1{constructor({...e}={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=30}};z3=j1;B.BmpString=z3;j1.NAME="BMPString";var W1=class extends Re{fromBuffer(e){let t=ArrayBuffer.isView(e)?e.slice().buffer:e.slice(0),n=new Uint8Array(t);for(let i=0;i<n.length;i+=4)n[i]=n[i+3],n[i+1]=n[i+2],n[i+2]=0,n[i+3]=0;this.valueBlock.value=String.fromCharCode.apply(null,new Uint32Array(t))}fromString(e){let t=e.length,n=this.valueBlock.valueHexView=new Uint8Array(t*4);for(let i=0;i<t;i++){let s=Gt(e.charCodeAt(i),8),o=new Uint8Array(s);if(o.length>4)continue;let a=4-o.length;for(let c=o.length-1;c>=0;c--)n[i*4+c+a]=o[c]}this.valueBlock.value=e}};W1.NAME="UniversalStringValueBlock";var G3,Q1=class extends W1{constructor({...e}={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=28}};G3=Q1;B.UniversalString=G3;Q1.NAME="UniversalString";var j3,Z1=class extends Re{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=18}};j3=Z1;B.NumericString=j3;Z1.NAME="NumericString";var W3,Y1=class extends Re{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=19}};W3=Y1;B.PrintableString=W3;Y1.NAME="PrintableString";var Q3,X1=class extends Re{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=20}};Q3=X1;B.TeletexString=Q3;X1.NAME="TeletexString";var Z3,J1=class extends Re{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=21}};Z3=J1;B.VideotexString=Z3;J1.NAME="VideotexString";var Y3,ei=class extends Re{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=22}};Y3=ei;B.IA5String=Y3;ei.NAME="IA5String";var X3,ti=class extends Re{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=25}};X3=ti;B.GraphicString=X3;ti.NAME="GraphicString";var J3,Rn=class extends Re{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=26}};J3=Rn;B.VisibleString=J3;Rn.NAME="VisibleString";var ea,ri=class extends Re{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=27}};ea=ri;B.GeneralString=ea;ri.NAME="GeneralString";var ta,ni=class extends Re{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=29}};ta=ni;B.CharacterString=ta;ni.NAME="CharacterString";var ra,Pn=class extends Rn{constructor({value:e,valueDate:t,...n}={}){if(super(n),this.year=0,this.month=0,this.day=0,this.hour=0,this.minute=0,this.second=0,e){this.fromString(e),this.valueBlock.valueHexView=new Uint8Array(e.length);for(let i=0;i<e.length;i++)this.valueBlock.valueHexView[i]=e.charCodeAt(i)}t&&(this.fromDate(t),this.valueBlock.valueHexView=new Uint8Array(this.toBuffer())),this.idBlock.tagClass=1,this.idBlock.tagNumber=23}fromBuffer(e){this.fromString(String.fromCharCode.apply(null,H.BufferSourceConverter.toUint8Array(e)))}toBuffer(){let e=this.toString(),t=new ArrayBuffer(e.length),n=new Uint8Array(t);for(let i=0;i<e.length;i++)n[i]=e.charCodeAt(i);return t}fromDate(e){this.year=e.getUTCFullYear(),this.month=e.getUTCMonth()+1,this.day=e.getUTCDate(),this.hour=e.getUTCHours(),this.minute=e.getUTCMinutes(),this.second=e.getUTCSeconds()}toDate(){return new Date(Date.UTC(this.year,this.month-1,this.day,this.hour,this.minute,this.second))}fromString(e){let n=/(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})Z/ig.exec(e);if(n===null){this.error="Wrong input string for conversion";return}let i=parseInt(n[1],10);i>=50?this.year=1900+i:this.year=2e3+i,this.month=parseInt(n[2],10),this.day=parseInt(n[3],10),this.hour=parseInt(n[4],10),this.minute=parseInt(n[5],10),this.second=parseInt(n[6],10)}toString(e="iso"){if(e==="iso"){let t=new Array(7);return t[0]=De(this.year<2e3?this.year-1900:this.year-2e3,2),t[1]=De(this.month,2),t[2]=De(this.day,2),t[3]=De(this.hour,2),t[4]=De(this.minute,2),t[5]=De(this.second,2),t[6]="Z",t.join("")}return super.toString(e)}onAsciiEncoding(){return`${this.constructor.NAME} : ${this.toDate().toISOString()}`}toJSON(){return{...super.toJSON(),year:this.year,month:this.month,day:this.day,hour:this.hour,minute:this.minute,second:this.second}}};ra=Pn;B.UTCTime=ra;Pn.NAME="UTCTime";var na,ii=class extends Pn{constructor(e={}){var t;super(e),(t=this.millisecond)!==null&&t!==void 0||(this.millisecond=0),this.idBlock.tagClass=1,this.idBlock.tagNumber=24}fromDate(e){super.fromDate(e),this.millisecond=e.getUTCMilliseconds()}toDate(){return new Date(Date.UTC(this.year,this.month-1,this.day,this.hour,this.minute,this.second,this.millisecond))}fromString(e){let t=!1,n="",i="",s=0,o,a=0,c=0;if(e[e.length-1]==="Z")n=e.substring(0,e.length-1),t=!0;else{let f=new Number(e[e.length-1]);if(isNaN(f.valueOf()))throw new Error("Wrong input string for conversion");n=e}if(t){if(n.indexOf("+")!==-1)throw new Error("Wrong input string for conversion");if(n.indexOf("-")!==-1)throw new Error("Wrong input string for conversion")}else{let f=1,h=n.indexOf("+"),p="";if(h===-1&&(h=n.indexOf("-"),f=-1),h!==-1){if(p=n.substring(h+1),n=n.substring(0,h),p.length!==2&&p.length!==4)throw new Error("Wrong input string for conversion");let y=parseInt(p.substring(0,2),10);if(isNaN(y.valueOf()))throw new Error("Wrong input string for conversion");if(a=f*y,p.length===4){if(y=parseInt(p.substring(2,4),10),isNaN(y.valueOf()))throw new Error("Wrong input string for conversion");c=f*y}}}let l=n.indexOf(".");if(l===-1&&(l=n.indexOf(",")),l!==-1){let f=new Number(`0${n.substring(l)}`);if(isNaN(f.valueOf()))throw new Error("Wrong input string for conversion");s=f.valueOf(),i=n.substring(0,l)}else i=n;switch(!0){case i.length===8:if(o=/(\d{4})(\d{2})(\d{2})/ig,l!==-1)throw new Error("Wrong input string for conversion");break;case i.length===10:if(o=/(\d{4})(\d{2})(\d{2})(\d{2})/ig,l!==-1){let f=60*s;this.minute=Math.floor(f),f=60*(f-this.minute),this.second=Math.floor(f),f=1e3*(f-this.second),this.millisecond=Math.floor(f)}break;case i.length===12:if(o=/(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})/ig,l!==-1){let f=60*s;this.second=Math.floor(f),f=1e3*(f-this.second),this.millisecond=Math.floor(f)}break;case i.length===14:if(o=/(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})/ig,l!==-1){let f=1e3*s;this.millisecond=Math.floor(f)}break;default:throw new Error("Wrong input string for conversion")}let u=o.exec(i);if(u===null)throw new Error("Wrong input string for conversion");for(let f=1;f<u.length;f++)switch(f){case 1:this.year=parseInt(u[f],10);break;case 2:this.month=parseInt(u[f],10);break;case 3:this.day=parseInt(u[f],10);break;case 4:this.hour=parseInt(u[f],10)+a;break;case 5:this.minute=parseInt(u[f],10)+c;break;case 6:this.second=parseInt(u[f],10);break;default:throw new Error("Wrong input string for conversion")}if(t===!1){let f=new Date(this.year,this.month,this.day,this.hour,this.minute,this.second,this.millisecond);this.year=f.getUTCFullYear(),this.month=f.getUTCMonth(),this.day=f.getUTCDay(),this.hour=f.getUTCHours(),this.minute=f.getUTCMinutes(),this.second=f.getUTCSeconds(),this.millisecond=f.getUTCMilliseconds()}}toString(e="iso"){if(e==="iso"){let t=[];return t.push(De(this.year,4)),t.push(De(this.month,2)),t.push(De(this.day,2)),t.push(De(this.hour,2)),t.push(De(this.minute,2)),t.push(De(this.second,2)),this.millisecond!==0&&(t.push("."),t.push(De(this.millisecond,3))),t.push("Z"),t.join("")}return super.toString(e)}toJSON(){return{...super.toJSON(),millisecond:this.millisecond}}};na=ii;B.GeneralizedTime=na;ii.NAME="GeneralizedTime";var ia,si=class extends Bt{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=31}};ia=si;B.DATE=ia;si.NAME="DATE";var sa,oi=class extends Bt{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=32}};sa=oi;B.TimeOfDay=sa;oi.NAME="TimeOfDay";var oa,ai=class extends Bt{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=33}};oa=ai;B.DateTime=oa;ai.NAME="DateTime";var aa,ci=class extends Bt{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=34}};aa=ci;B.Duration=aa;ci.NAME="Duration";var ca,li=class extends Bt{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=14}};ca=li;B.TIME=ca;li.NAME="TIME";function fi(r){if(isNaN(r)||r<=0)throw new $("random bytes length must be a Number bigger than 0");return Mr(r)}var Nn=class extends Error{constructor(e="An error occurred while verifying a message"){super(e),this.name="VerificationError"}},hi=class extends Error{constructor(e="Missing Web Crypto API"){super(e),this.name="WebCryptoMissingError"}};var la={get(r=globalThis){let e=r.crypto;if(e?.subtle==null)throw new hi("Missing Web Crypto API. The most likely cause of this error is that this page is being accessed from an insecure context (i.e. not HTTPS). For more information and possible resolutions see https://github.com/libp2p/js-libp2p/blob/main/packages/crypto/README.md#web-crypto-api");return e}};var Wt=la;async function ua(r){let e=await Wt.get().subtle.generateKey({name:"RSASSA-PKCS1-v1_5",modulusLength:r,publicExponent:new Uint8Array([1,0,1]),hash:{name:"SHA-256"}},!0,["sign","verify"]),t=await R8(e);return{privateKey:t[0],publicKey:t[1]}}async function fa(r,e){let t=await Wt.get().subtle.importKey("jwk",r,{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-256"}},!1,["sign"]),n=await Wt.get().subtle.sign({name:"RSASSA-PKCS1-v1_5"},t,e instanceof Uint8Array?e:e.subarray());return new Uint8Array(n,0,n.byteLength)}async function ha(r,e,t){let n=await Wt.get().subtle.importKey("jwk",r,{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-256"}},!1,["verify"]);return Wt.get().subtle.verify({name:"RSASSA-PKCS1-v1_5"},n,e,t instanceof Uint8Array?t:t.subarray())}async function R8(r){if(r.privateKey==null||r.publicKey==null)throw new $("Private and public key are required");return Promise.all([Wt.get().subtle.exportKey("jwk",r.privateKey),Wt.get().subtle.exportKey("jwk",r.publicKey)])}function Jo(r){if(r.kty!=="RSA")throw new $("invalid key type");if(r.n==null)throw new $("invalid key modulus");return Q(r.n,"base64url").length*8}var Wr=class{type="RSA";_key;_raw;_multihash;constructor(e,t){this._key=e,this._multihash=t}get raw(){return this._raw==null&&(this._raw=Ln.jwkToPkix(this._key)),this._raw}toMultihash(){return this._multihash}toCID(){return re.createV1(114,this._multihash)}toString(){return Y.encode(this.toMultihash().bytes).substring(1)}equals(e){return e==null||!(e.raw instanceof Uint8Array)?!1:X(this.raw,e.raw)}verify(e,t){return ha(this._key,t,e)}},_n=class{type="RSA";_key;_raw;publicKey;constructor(e,t){this._key=e,this.publicKey=t}get raw(){return this._raw==null&&(this._raw=Ln.jwkToPkcs1(this._key)),this._raw}equals(e){return e==null||!(e.raw instanceof Uint8Array)?!1:X(this.raw,e.raw)}sign(e){return fa(this._key,e)}};var di=8192,e2=18;function da(r){let{result:e}=Xo(r),t=e.valueBlock.value;return{n:at(t[1]),e:at(t[2]),d:at(t[3]),p:at(t[4]),q:at(t[5]),dp:at(t[6]),dq:at(t[7]),qi:at(t[8]),kty:"RSA",alg:"RS256"}}function P8(r){if(r.n==null||r.e==null||r.d==null||r.p==null||r.q==null||r.dp==null||r.dq==null||r.qi==null)throw new $("JWK was missing components");let t=new St({value:[new xe({value:0}),xe.fromBigInt(ct(Q(r.n,"base64url"))),xe.fromBigInt(ct(Q(r.e,"base64url"))),xe.fromBigInt(ct(Q(r.d,"base64url"))),xe.fromBigInt(ct(Q(r.p,"base64url"))),xe.fromBigInt(ct(Q(r.q,"base64url"))),xe.fromBigInt(ct(Q(r.dp,"base64url"))),xe.fromBigInt(ct(Q(r.dq,"base64url"))),xe.fromBigInt(ct(Q(r.qi,"base64url")))]}).toBER();return new Uint8Array(t,0,t.byteLength)}function pa(r){let{result:e}=Xo(r),t=e.valueBlock.value[1].valueBlock.value[0].valueBlock.value;return{kty:"RSA",n:at(t[0]),e:at(t[1])}}function t2(r){if(r.n==null||r.e==null)throw new $("JWK was missing components");let t=new St({value:[new St({value:[new Gr({value:"1.2.840.113549.1.1.1"}),new $r]}),new zr({valueHex:new St({value:[xe.fromBigInt(ct(Q(r.n,"base64url"))),xe.fromBigInt(ct(Q(r.e,"base64url")))]}).toBER()})]}).toBER();return new Uint8Array(t,0,t.byteLength)}function at(r){let e=r.valueBlock.valueHexView;for(;e[0]===0;)e=e.subarray(1);return D(e,"base64url")}function ct(r){let e=[];return r.forEach(function(t){let n=t.toString(16);n.length%2>0&&(n=`0${n}`),e.push(n)}),BigInt("0x"+e.join(""))}function ga(r){let e=da(r);return ma(e)}function r2(r){let e=pa(r);if(Jo(e)>di)throw new ht("Key size is too large");let t=qr(st.encode({Type:he.RSA,Data:r})),n=je(e2,t);return new Wr(e,n)}function ma(r){if(Jo(r)>di)throw new $("Key size is too large");let e=wa(r),t=qr(st.encode({Type:he.RSA,Data:t2(e.publicKey)})),n=je(e2,t);return new _n(e.privateKey,new Wr(e.publicKey,n))}async function ya(r){if(r>di)throw new $("Key size is too large");let e=await ua(r),t=qr(st.encode({Type:he.RSA,Data:t2(e.publicKey)})),n=je(e2,t);return new _n(e.privateKey,new Wr(e.publicKey,n))}function wa(r){if(r==null)throw new $("Missing key parameter");return{privateKey:r,publicKey:{kty:r.kty,n:r.n,e:r.e}}}var pi=class extends Or{constructor(e,t){super(),this.finished=!1,this.destroyed=!1,e3(e);let n=bn(t);if(this.iHash=e.create(),typeof this.iHash.update!="function")throw new Error("Expected instance of class which extends utils.Hash");this.blockLen=this.iHash.blockLen,this.outputLen=this.iHash.outputLen;let i=this.blockLen,s=new Uint8Array(i);s.set(n.length>i?e.create().update(n).digest():n);for(let o=0;o<s.length;o++)s[o]^=54;this.iHash.update(s),this.oHash=e.create();for(let o=0;o<s.length;o++)s[o]^=106;this.oHash.update(s),s.fill(0)}update(e){return Dr(this),this.iHash.update(e),this}digestInto(e){Dr(this),Ur(e,this.outputLen),this.finished=!0,this.iHash.digestInto(e),this.oHash.update(e),this.oHash.digestInto(e),this.destroy()}digest(){let e=new Uint8Array(this.oHash.outputLen);return this.digestInto(e),e}_cloneInto(e){e||(e=Object.create(Object.getPrototypeOf(this),{}));let{oHash:t,iHash:n,finished:i,destroyed:s,blockLen:o,outputLen:a}=this;return e=e,e.finished=i,e.destroyed=s,e.blockLen=o,e.outputLen=a,e.oHash=t._cloneInto(e.oHash),e.iHash=n._cloneInto(e.iHash),e}destroy(){this.destroyed=!0,this.oHash.destroy(),this.iHash.destroy()}},n2=(r,e,t)=>new pi(r,e).update(t).digest();n2.create=(r,e)=>new pi(r,e);function ba(r){r.lowS!==void 0&&Qe("lowS",r.lowS),r.prehash!==void 0&&Qe("prehash",r.prehash)}function N8(r){let e=En(r);it(e,{a:"field",b:"field"},{allowedPrivateKeyLengths:"array",wrapPrivateKey:"boolean",isTorsionFree:"function",clearCofactor:"function",allowInfinityPoint:"boolean",fromBytes:"function",toBytes:"function"});let{endo:t,Fp:n,a:i}=e;if(t){if(!n.eql(i,n.ZERO))throw new Error("Endomorphism can only be defined for Koblitz curves that have a=0");if(typeof t!="object"||typeof t.beta!="bigint"||typeof t.splitScalar!="function")throw new Error("Expected endomorphism with beta: bigint and splitScalar: function")}return Object.freeze({...e})}var{bytesToNumberBE:L8,hexToBytes:_8}=g1,Tt={Err:class extends Error{constructor(e=""){super(e)}},_tlv:{encode:(r,e)=>{let{Err:t}=Tt;if(r<0||r>256)throw new t("tlv.encode: wrong tag");if(e.length&1)throw new t("tlv.encode: unpadded data");let n=e.length/2,i=ar(n);if(i.length/2&128)throw new t("tlv.encode: long form length too big");let s=n>127?ar(i.length/2|128):"";return`${ar(r)}${s}${i}${e}`},decode(r,e){let{Err:t}=Tt,n=0;if(r<0||r>256)throw new t("tlv.encode: wrong tag");if(e.length<2||e[n++]!==r)throw new t("tlv.decode: wrong tlv");let i=e[n++],s=!!(i&128),o=0;if(!s)o=i;else{let c=i&127;if(!c)throw new t("tlv.decode(long): indefinite length not supported");if(c>4)throw new t("tlv.decode(long): byte length is too big");let l=e.subarray(n,n+c);if(l.length!==c)throw new t("tlv.decode: length bytes not complete");if(l[0]===0)throw new t("tlv.decode(long): zero leftmost byte");for(let u of l)o=o<<8|u;if(n+=c,o<128)throw new t("tlv.decode(long): not minimal encoding")}let a=e.subarray(n,n+o);if(a.length!==o)throw new t("tlv.decode: wrong value length");return{v:a,l:e.subarray(n+o)}}},_int:{encode(r){let{Err:e}=Tt;if(r<Rt)throw new e("integer: negative integers are not allowed");let t=ar(r);if(Number.parseInt(t[0],16)&8&&(t="00"+t),t.length&1)throw new e("unexpected assertion");return t},decode(r){let{Err:e}=Tt;if(r[0]&128)throw new e("Invalid signature integer: negative");if(r[0]===0&&!(r[1]&128))throw new e("Invalid signature integer: unnecessary leading zero");return L8(r)}},toSig(r){let{Err:e,_int:t,_tlv:n}=Tt,i=typeof r=="string"?_8(r):r;Fr(i);let{v:s,l:o}=n.decode(48,i);if(o.length)throw new e("Invalid signature: left bytes after parsing");let{v:a,l:c}=n.decode(2,s),{v:l,l:u}=n.decode(2,c);if(u.length)throw new e("Invalid signature: left bytes after parsing");return{r:t.decode(a),s:t.decode(l)}},hexFromSig(r){let{_tlv:e,_int:t}=Tt,n=`${e.encode(2,t.encode(r.r))}${e.encode(2,t.encode(r.s))}`;return e.encode(48,n)}},Rt=BigInt(0),ye=BigInt(1),zf=BigInt(2),xa=BigInt(3),Gf=BigInt(4);function C8(r){let e=N8(r),{Fp:t}=e,n=Kt(e.n,e.nBitLength),i=e.toBytes||((w,d,x)=>{let E=d.toAffine();return vt(Uint8Array.from([4]),t.toBytes(E.x),t.toBytes(E.y))}),s=e.fromBytes||(w=>{let d=w.subarray(1),x=t.fromBytes(d.subarray(0,t.BYTES)),E=t.fromBytes(d.subarray(t.BYTES,2*t.BYTES));return{x,y:E}});function o(w){let{a:d,b:x}=e,E=t.sqr(w),g=t.mul(E,w);return t.add(t.add(g,t.mul(w,d)),x)}if(!t.eql(t.sqr(e.Gy),o(e.Gx)))throw new Error("bad generator point: equation left != right");function a(w){return xn(w,ye,e.n)}function c(w){let{allowedPrivateKeyLengths:d,nByteLength:x,wrapPrivateKey:E,n:g}=e;if(d&&typeof w!="bigint"){if(Ft(w)&&(w=bt(w)),typeof w!="string"||!d.includes(w.length))throw new Error("Invalid key");w=w.padStart(x*2,"0")}let A;try{A=typeof w=="bigint"?w:xt(ie("private key",w,x))}catch{throw new Error(`private key must be ${x} bytes, hex or bigint, not ${typeof w}`)}return E&&(A=W(A,g)),Ce("private key",A,ye,g),A}function l(w){if(!(w instanceof h))throw new Error("ProjectivePoint expected")}let u=ur((w,d)=>{let{px:x,py:E,pz:g}=w;if(t.eql(g,t.ONE))return{x,y:E};let A=w.is0();d==null&&(d=A?t.ONE:t.inv(g));let R=t.mul(x,d),T=t.mul(E,d),I=t.mul(g,d);if(A)return{x:t.ZERO,y:t.ZERO};if(!t.eql(I,t.ONE))throw new Error("invZ was invalid");return{x:R,y:T}}),f=ur(w=>{if(w.is0()){if(e.allowInfinityPoint&&!t.is0(w.py))return;throw new Error("bad point: ZERO")}let{x:d,y:x}=w.toAffine();if(!t.isValid(d)||!t.isValid(x))throw new Error("bad point: x or y not FE");let E=t.sqr(x),g=o(d);if(!t.eql(E,g))throw new Error("bad point: equation left != right");if(!w.isTorsionFree())throw new Error("bad point: not in prime-order subgroup");return!0});class h{constructor(d,x,E){if(this.px=d,this.py=x,this.pz=E,d==null||!t.isValid(d))throw new Error("x required");if(x==null||!t.isValid(x))throw new Error("y required");if(E==null||!t.isValid(E))throw new Error("z required");Object.freeze(this)}static fromAffine(d){let{x,y:E}=d||{};if(!d||!t.isValid(x)||!t.isValid(E))throw new Error("invalid affine point");if(d instanceof h)throw new Error("projective point not allowed");let g=A=>t.eql(A,t.ZERO);return g(x)&&g(E)?h.ZERO:new h(x,E,t.ONE)}get x(){return this.toAffine().x}get y(){return this.toAffine().y}static normalizeZ(d){let x=t.invertBatch(d.map(E=>E.pz));return d.map((E,g)=>E.toAffine(x[g])).map(h.fromAffine)}static fromHex(d){let x=h.fromAffine(s(ie("pointHex",d)));return x.assertValidity(),x}static fromPrivateKey(d){return h.BASE.multiply(c(d))}static msm(d,x){return w1(h,n,d,x)}_setWindowSize(d){y.setWindowSize(this,d)}assertValidity(){f(this)}hasEvenY(){let{y:d}=this.toAffine();if(t.isOdd)return!t.isOdd(d);throw new Error("Field doesn't support isOdd")}equals(d){l(d);let{px:x,py:E,pz:g}=this,{px:A,py:R,pz:T}=d,I=t.eql(t.mul(x,T),t.mul(A,g)),k=t.eql(t.mul(E,T),t.mul(R,g));return I&&k}negate(){return new h(this.px,t.neg(this.py),this.pz)}double(){let{a:d,b:x}=e,E=t.mul(x,xa),{px:g,py:A,pz:R}=this,T=t.ZERO,I=t.ZERO,k=t.ZERO,L=t.mul(g,g),ae=t.mul(A,A),K=t.mul(R,R),M=t.mul(g,A);return M=t.add(M,M),k=t.mul(g,R),k=t.add(k,k),T=t.mul(d,k),I=t.mul(E,K),I=t.add(T,I),T=t.sub(ae,I),I=t.add(ae,I),I=t.mul(T,I),T=t.mul(M,T),k=t.mul(E,k),K=t.mul(d,K),M=t.sub(L,K),M=t.mul(d,M),M=t.add(M,k),k=t.add(L,L),L=t.add(k,L),L=t.add(L,K),L=t.mul(L,M),I=t.add(I,L),K=t.mul(A,R),K=t.add(K,K),L=t.mul(K,M),T=t.sub(T,L),k=t.mul(K,ae),k=t.add(k,k),k=t.add(k,k),new h(T,I,k)}add(d){l(d);let{px:x,py:E,pz:g}=this,{px:A,py:R,pz:T}=d,I=t.ZERO,k=t.ZERO,L=t.ZERO,ae=e.a,K=t.mul(e.b,xa),M=t.mul(x,A),ce=t.mul(E,R),S=t.mul(g,T),P=t.add(x,E),b=t.add(A,R);P=t.mul(P,b),b=t.add(M,ce),P=t.sub(P,b),b=t.add(x,g);let m=t.add(A,T);return b=t.mul(b,m),m=t.add(M,S),b=t.sub(b,m),m=t.add(E,g),I=t.add(R,T),m=t.mul(m,I),I=t.add(ce,S),m=t.sub(m,I),L=t.mul(ae,b),I=t.mul(K,S),L=t.add(I,L),I=t.sub(ce,L),L=t.add(ce,L),k=t.mul(I,L),ce=t.add(M,M),ce=t.add(ce,M),S=t.mul(ae,S),b=t.mul(K,b),ce=t.add(ce,S),S=t.sub(M,S),S=t.mul(ae,S),b=t.add(b,S),M=t.mul(ce,b),k=t.add(k,M),M=t.mul(m,b),I=t.mul(P,I),I=t.sub(I,M),M=t.mul(P,ce),L=t.mul(m,L),L=t.add(L,M),new h(I,k,L)}subtract(d){return this.add(d.negate())}is0(){return this.equals(h.ZERO)}wNAF(d){return y.wNAFCached(this,d,h.normalizeZ)}multiplyUnsafe(d){Ce("scalar",d,Rt,e.n);let x=h.ZERO;if(d===Rt)return x;if(d===ye)return this;let{endo:E}=e;if(!E)return y.unsafeLadder(this,d);let{k1neg:g,k1:A,k2neg:R,k2:T}=E.splitScalar(d),I=x,k=x,L=this;for(;A>Rt||T>Rt;)A&ye&&(I=I.add(L)),T&ye&&(k=k.add(L)),L=L.double(),A>>=ye,T>>=ye;return g&&(I=I.negate()),R&&(k=k.negate()),k=new h(t.mul(k.px,E.beta),k.py,k.pz),I.add(k)}multiply(d){let{endo:x,n:E}=e;Ce("scalar",d,ye,E);let g,A;if(x){let{k1neg:R,k1:T,k2neg:I,k2:k}=x.splitScalar(d),{p:L,f:ae}=this.wNAF(T),{p:K,f:M}=this.wNAF(k);L=y.constTimeNegate(R,L),K=y.constTimeNegate(I,K),K=new h(t.mul(K.px,x.beta),K.py,K.pz),g=L.add(K),A=ae.add(M)}else{let{p:R,f:T}=this.wNAF(d);g=R,A=T}return h.normalizeZ([g,A])[0]}multiplyAndAddUnsafe(d,x,E){let g=h.BASE,A=(T,I)=>I===Rt||I===ye||!T.equals(g)?T.multiplyUnsafe(I):T.multiply(I),R=A(this,x).add(A(d,E));return R.is0()?void 0:R}toAffine(d){return u(this,d)}isTorsionFree(){let{h:d,isTorsionFree:x}=e;if(d===ye)return!0;if(x)return x(h,this);throw new Error("isTorsionFree() has not been declared for the elliptic curve")}clearCofactor(){let{h:d,clearCofactor:x}=e;return d===ye?this:x?x(h,this):this.multiplyUnsafe(e.h)}toRawBytes(d=!0){return Qe("isCompressed",d),this.assertValidity(),i(h,this,d)}toHex(d=!0){return Qe("isCompressed",d),bt(this.toRawBytes(d))}}h.BASE=new h(e.Gx,e.Gy,t.ONE),h.ZERO=new h(t.ZERO,t.ONE,t.ZERO);let p=e.nBitLength,y=y1(h,e.endo?Math.ceil(p/2):p);return{CURVE:e,ProjectivePoint:h,normPrivateKeyToScalar:c,weierstrassEquation:o,isWithinCurveOrder:a}}function U8(r){let e=En(r);return it(e,{hash:"hash",hmac:"function",randomBytes:"function"},{bits2int:"function",bits2int_modN:"function",lowS:"boolean"}),Object.freeze({lowS:!0,...e})}function va(r){let e=U8(r),{Fp:t,n}=e,i=t.BYTES+1,s=2*t.BYTES+1;function o(S){return W(S,n)}function a(S){return m1(S,n)}let{ProjectivePoint:c,normPrivateKeyToScalar:l,weierstrassEquation:u,isWithinCurveOrder:f}=C8({...e,toBytes(S,P,b){let m=P.toAffine(),v=t.toBytes(m.x),N=vt;return Qe("isCompressed",b),b?N(Uint8Array.from([P.hasEvenY()?2:3]),v):N(Uint8Array.from([4]),v,t.toBytes(m.y))},fromBytes(S){let P=S.length,b=S[0],m=S.subarray(1);if(P===i&&(b===2||b===3)){let v=xt(m);if(!xn(v,ye,t.ORDER))throw new Error("Point is not on curve");let N=u(v),_;try{_=t.sqrt(N)}catch(q){let F=q instanceof Error?": "+q.message:"";throw new Error("Point is not on curve"+F)}let C=(_&ye)===ye;return(b&1)===1!==C&&(_=t.neg(_)),{x:v,y:_}}else if(P===s&&b===4){let v=t.fromBytes(m.subarray(0,t.BYTES)),N=t.fromBytes(m.subarray(t.BYTES,2*t.BYTES));return{x:v,y:N}}else throw new Error(`Point of length ${P} was invalid. Expected ${i} compressed bytes or ${s} uncompressed bytes`)}}),h=S=>bt(qt(S,e.nByteLength));function p(S){let P=n>>ye;return S>P}function y(S){return p(S)?o(-S):S}let w=(S,P,b)=>xt(S.slice(P,b));class d{constructor(P,b,m){this.r=P,this.s=b,this.recovery=m,this.assertValidity()}static fromCompact(P){let b=e.nByteLength;return P=ie("compactSignature",P,b*2),new d(w(P,0,b),w(P,b,2*b))}static fromDER(P){let{r:b,s:m}=Tt.toSig(ie("DER",P));return new d(b,m)}assertValidity(){Ce("r",this.r,ye,n),Ce("s",this.s,ye,n)}addRecoveryBit(P){return new d(this.r,this.s,P)}recoverPublicKey(P){let{r:b,s:m,recovery:v}=this,N=T(ie("msgHash",P));if(v==null||![0,1,2,3].includes(v))throw new Error("recovery id invalid");let _=v===2||v===3?b+e.n:b;if(_>=t.ORDER)throw new Error("recovery id 2 or 3 invalid");let C=v&1?"03":"02",V=c.fromHex(C+h(_)),q=a(_),F=o(-N*q),j=o(m*q),Z=c.BASE.multiplyAndAddUnsafe(V,F,j);if(!Z)throw new Error("point at infinify");return Z.assertValidity(),Z}hasHighS(){return p(this.s)}normalizeS(){return this.hasHighS()?new d(this.r,o(-this.s),this.recovery):this}toDERRawBytes(){return cr(this.toDERHex())}toDERHex(){return Tt.hexFromSig({r:this.r,s:this.s})}toCompactRawBytes(){return cr(this.toCompactHex())}toCompactHex(){return h(this.r)+h(this.s)}}let x={isValidPrivateKey(S){try{return l(S),!0}catch{return!1}},normPrivateKeyToScalar:l,randomPrivateKey:()=>{let S=Vo(e.n);return d3(e.randomBytes(S),e.n)},precompute(S=8,P=c.BASE){return P._setWindowSize(S),P.multiply(BigInt(3)),P}};function E(S,P=!0){return c.fromPrivateKey(S).toRawBytes(P)}function g(S){let P=Ft(S),b=typeof S=="string",m=(P||b)&&S.length;return P?m===i||m===s:b?m===2*i||m===2*s:S instanceof c}function A(S,P,b=!0){if(g(S))throw new Error("first arg must be private key");if(!g(P))throw new Error("second arg must be public key");return c.fromHex(P).multiply(l(S)).toRawBytes(b)}let R=e.bits2int||function(S){let P=xt(S),b=S.length*8-e.nBitLength;return b>0?P>>BigInt(b):P},T=e.bits2int_modN||function(S){return o(R(S))},I=vn(e.nBitLength);function k(S){return Ce(`num < 2^${e.nBitLength}`,S,Rt,I),qt(S,e.nByteLength)}function L(S,P,b=ae){if(["recovered","canonical"].some(pe=>pe in b))throw new Error("sign() legacy options not supported");let{hash:m,randomBytes:v}=e,{lowS:N,prehash:_,extraEntropy:C}=b;N==null&&(N=!0),S=ie("msgHash",S),ba(b),_&&(S=ie("prehashed msgHash",m(S)));let V=T(S),q=l(P),F=[k(q),k(V)];if(C!=null&&C!==!1){let pe=C===!0?v(t.BYTES):C;F.push(ie("extraEntropy",pe))}let j=vt(...F),Z=V;function de(pe){let we=R(pe);if(!f(we))return;let Ie=a(we),le=c.BASE.multiply(we).toAffine(),Pe=o(le.x);if(Pe===Rt)return;let ut=o(Ie*o(Z+Pe*q));if(ut===Rt)return;let tn=(le.x===Pe?0:2)|Number(le.y&ye),rn=ut;return N&&p(ut)&&(rn=y(ut),tn^=1),new d(Pe,rn,tn)}return{seed:j,k2sig:de}}let ae={lowS:e.lowS,prehash:!1},K={lowS:e.lowS,prehash:!1};function M(S,P,b=ae){let{seed:m,k2sig:v}=L(S,P,b),N=e;return Uo(N.hash.outputLen,N.nByteLength,N.hmac)(m,v)}c.BASE._setWindowSize(8);function ce(S,P,b,m=K){let v=S;if(P=ie("msgHash",P),b=ie("publicKey",b),"strict"in m)throw new Error("options.strict was renamed to lowS");ba(m);let{lowS:N,prehash:_}=m,C,V;try{if(typeof v=="string"||Ft(v))try{C=d.fromDER(v)}catch(le){if(!(le instanceof Tt.Err))throw le;C=d.fromCompact(v)}else if(typeof v=="object"&&typeof v.r=="bigint"&&typeof v.s=="bigint"){let{r:le,s:Pe}=v;C=new d(le,Pe)}else throw new Error("PARSE");V=c.fromHex(b)}catch(le){if(le.message==="PARSE")throw new Error("signature must be Signature instance, Uint8Array or hex string");return!1}if(N&&C.hasHighS())return!1;_&&(P=e.hash(P));let{r:q,s:F}=C,j=T(P),Z=a(F),de=o(j*Z),pe=o(q*Z),we=c.BASE.multiplyAndAddUnsafe(V,de,pe)?.toAffine();return we?o(we.x)===q:!1}return{CURVE:e,getPublicKey:E,getSharedSecret:A,sign:M,verify:ce,ProjectivePoint:c,Signature:d,utils:x}}function D8(r){return{hash:r,hmac:(e,...t)=>n2(r,e,ko(...t)),randomBytes:Mr}}function Ea(r,e){let t=n=>va({...r,...D8(n)});return Object.freeze({...t(e),create:t})}var Ba=BigInt("0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f"),Aa=BigInt("0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141"),O8=BigInt(1),i2=BigInt(2),Sa=(r,e)=>(r+e/i2)/e;function M8(r){let e=Ba,t=BigInt(3),n=BigInt(6),i=BigInt(11),s=BigInt(22),o=BigInt(23),a=BigInt(44),c=BigInt(88),l=r*r*r%e,u=l*l*r%e,f=ee(u,t,e)*u%e,h=ee(f,t,e)*u%e,p=ee(h,i2,e)*l%e,y=ee(p,i,e)*p%e,w=ee(y,s,e)*y%e,d=ee(w,a,e)*w%e,x=ee(d,c,e)*d%e,E=ee(x,a,e)*w%e,g=ee(E,t,e)*u%e,A=ee(g,o,e)*y%e,R=ee(A,n,e)*l%e,T=ee(R,i2,e);if(!s2.eql(s2.sqr(T),r))throw new Error("Cannot find square root");return T}var s2=Kt(Ba,void 0,void 0,{sqrt:M8}),dr=Ea({a:BigInt(0),b:BigInt(7),Fp:s2,n:Aa,Gx:BigInt("55066263022277343669578718895168534326250603453777594175500187360389116729240"),Gy:BigInt("32670510020758816978083085130507043184471273380659243275938904335757337482424"),h:BigInt(1),lowS:!0,endo:{beta:BigInt("0x7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee"),splitScalar:r=>{let e=Aa,t=BigInt("0x3086d221a7d46bcde86c90e49284eb15"),n=-O8*BigInt("0xe4437ed6010e88286f547fa90abfe4c3"),i=BigInt("0x114ca50f7a8e2f3f657c1108d9d44cfd8"),s=t,o=BigInt("0x100000000000000000000000000000000"),a=Sa(s*r,e),c=Sa(-n*r,e),l=W(r-a*t-c*i,e),u=W(-a*n-c*s,e),f=l>o,h=u>o;if(f&&(l=e-l),h&&(u=e-u),l>o||u>o)throw new Error("splitScalar: Endomorphism failed, k="+r);return{k1neg:f,k1:l,k2neg:h,k2:u}}}},qr),th=BigInt(0);var rh=dr.ProjectivePoint;function Be(r,e){e==null&&(e=r.reduce((i,s)=>i+s.length,0));let t=ge(e),n=0;for(let i of r)t.set(i,n),n+=i.length;return t}function Ia(r){return r==null?!1:typeof r.then=="function"&&typeof r.catch=="function"&&typeof r.finally=="function"}function ka(r,e,t){let n=mt.digest(t instanceof Uint8Array?t:t.subarray());if(Ia(n))return n.then(({digest:i})=>dr.verify(e,i,r)).catch(i=>{throw new Nn(String(i))});try{return dr.verify(e,n.digest,r)}catch(i){throw new Nn(String(i))}}var gi=class{type="secp256k1";raw;_key;constructor(e){this._key=Ra(e),this.raw=Ta(this._key)}toMultihash(){return gt.digest(Hr(this))}toCID(){return re.createV1(114,this.toMultihash())}toString(){return Y.encode(this.toMultihash().bytes).substring(1)}equals(e){return e==null||!(e.raw instanceof Uint8Array)?!1:X(this.raw,e.raw)}verify(e,t){return ka(this._key,t,e)}};function o2(r){return new gi(r)}function Ta(r){return dr.ProjectivePoint.fromHex(r).toRawBytes(!0)}function Ra(r){try{return dr.ProjectivePoint.fromHex(r),r}catch(e){throw new ht(String(e))}}function mi(r){let{Type:e,Data:t}=st.decode(r),n=t??new Uint8Array;switch(e){case he.RSA:return r2(n);case he.Ed25519:return $o(n);case he.secp256k1:return o2(n);default:throw new Jt}}function Pa(r){let{Type:e,Data:t}=st.decode(r.digest),n=t??new Uint8Array;switch(e){case he.Ed25519:return $o(n);case he.secp256k1:return o2(n);default:throw new Jt}}function Hr(r){return st.encode({Type:he[r.type],Data:r.raw})}async function Qr(r,e){let t=e.key,i=D(t).split("/");if(i.length<3)return;let s=r[i[1].toString()];if(s==null)throw new $(`No validator available for key type "${i[1]}"`);await s(t,e.value)}var F8=async(r,e)=>{if(!(r instanceof Uint8Array))throw new $('"key" must be a Uint8Array');if(r.byteLength<5)throw new $("Invalid public key record");if(D(r.subarray(0,4))!=="/pk/")throw new $("key was not prefixed with /pk/");let n=mi(e),i=r.slice(4);if(!X(i,n.toMultihash().bytes))throw new $("public key does not match passed in key")},Na={pk:F8};var La=Symbol.for("nodejs.util.inspect.custom"),H8=114,Cn=class{type;multihash;publicKey;string;constructor(e){this.type=e.type,this.multihash=e.multihash,Object.defineProperty(this,"string",{enumerable:!1,writable:!0})}get[Symbol.toStringTag](){return`PeerId(${this.toString()})`}[xs]=!0;toString(){return this.string==null&&(this.string=Y.encode(this.multihash.bytes).slice(1)),this.string}toMultihash(){return this.multihash}toCID(){return re.createV1(H8,this.multihash)}toJSON(){return this.toString()}equals(e){if(e==null)return!1;if(e instanceof Uint8Array)return X(this.multihash.bytes,e);if(typeof e=="string")return this.toString()===e;if(e?.toMultihash()?.bytes!=null)return X(this.multihash.bytes,e.toMultihash().bytes);throw new Error("not valid Id")}[La](){return`PeerId(${this.toString()})`}},Un=class extends Cn{type="RSA";publicKey;constructor(e){super({...e,type:"RSA"}),this.publicKey=e.publicKey}},Dn=class extends Cn{type="Ed25519";publicKey;constructor(e){super({...e,type:"Ed25519"}),this.publicKey=e.publicKey}},On=class extends Cn{type="secp256k1";publicKey;constructor(e){super({...e,type:"secp256k1"}),this.publicKey=e.publicKey}},q8=2336,yi=class{type="url";multihash;publicKey;url;constructor(e){this.url=e.toString(),this.multihash=gt.digest(Q(this.url))}[La](){return`PeerId(${this.url})`}[xs]=!0;toString(){return this.toCID().toString()}toMultihash(){return this.multihash}toCID(){return re.createV1(q8,this.toMultihash())}toJSON(){return this.toString()}equals(e){return e==null?!1:(e instanceof Uint8Array&&(e=D(e)),e.toString()===this.toString())}};function _a(r,e){let t;if(r.charAt(0)==="1"||r.charAt(0)==="Q")t=me(Y.decode(`z${r}`));else{if(e==null)throw new $('Please pass a multibase decoder for strings that do not start with "1" or "Q"');t=me(e.decode(r))}return Xe(t)}function Ca(r){if(r.type==="Ed25519")return new Dn({multihash:r.toCID().multihash,publicKey:r});if(r.type==="secp256k1")return new On({multihash:r.toCID().multihash,publicKey:r});if(r.type==="RSA")return new Un({multihash:r.toCID().multihash,publicKey:r});throw new Jt}function Xe(r){if($8(r))return new Un({multihash:r});if(K8(r))try{let e=Pa(r);if(e.type==="Ed25519")return new Dn({multihash:r,publicKey:e});if(e.type==="secp256k1")return new On({multihash:r,publicKey:e})}catch{let t=D(r.digest);return new yi(new URL(t))}throw new jn("Supplied PeerID Multihash is invalid")}function K8(r){return r.code===gt.code}function $8(r){return r.code===mt.code}var wi=class{index=0;input="";new(e){return this.index=0,this.input=e,this}readAtomically(e){let t=this.index,n=e();return n===void 0&&(this.index=t),n}parseWith(e){let t=e();if(this.index===this.input.length)return t}peekChar(){if(!(this.index>=this.input.length))return this.input[this.index]}readChar(){if(!(this.index>=this.input.length))return this.input[this.index++]}readGivenChar(e){return this.readAtomically(()=>{let t=this.readChar();if(t===e)return t})}readSeparator(e,t,n){return this.readAtomically(()=>{if(!(t>0&&this.readGivenChar(e)===void 0))return n()})}readNumber(e,t,n,i){return this.readAtomically(()=>{let s=0,o=0,a=this.peekChar();if(a===void 0)return;let c=a==="0",l=2**(8*i)-1;for(;;){let u=this.readAtomically(()=>{let f=this.readChar();if(f===void 0)return;let h=Number.parseInt(f,e);if(!Number.isNaN(h))return h});if(u===void 0)break;if(s*=e,s+=u,s>l||(o+=1,t!==void 0&&o>t))return}if(o!==0)return!n&&c&&o>1?void 0:s})}readIPv4Addr(){return this.readAtomically(()=>{let e=new Uint8Array(4);for(let t=0;t<e.length;t++){let n=this.readSeparator(".",t,()=>this.readNumber(10,3,!1,1));if(n===void 0)return;e[t]=n}return e})}readIPv6Addr(){let e=t=>{for(let n=0;n<t.length/2;n++){let i=n*2;if(n<t.length-3){let o=this.readSeparator(":",n,()=>this.readIPv4Addr());if(o!==void 0)return t[i]=o[0],t[i+1]=o[1],t[i+2]=o[2],t[i+3]=o[3],[i+4,!0]}let s=this.readSeparator(":",n,()=>this.readNumber(16,4,!0,2));if(s===void 0)return[i,!1];t[i]=s>>8,t[i+1]=s&255}return[t.length,!1]};return this.readAtomically(()=>{let t=new Uint8Array(16),[n,i]=e(t);if(n===16)return t;if(i||this.readGivenChar(":")===void 0||this.readGivenChar(":")===void 0)return;let s=new Uint8Array(14),o=16-(n+2),[a]=e(s.subarray(0,o));return t.set(s.subarray(0,a),16-a),t})}readIPAddr(){return this.readIPv4Addr()??this.readIPv6Addr()}};var Ua=45,z8=15,Zr=new wi;function a2(r){if(!(r.length>z8))return Zr.new(r).parseWith(()=>Zr.readIPv4Addr())}function c2(r){if(r.includes("%")&&(r=r.split("%")[0]),!(r.length>Ua))return Zr.new(r).parseWith(()=>Zr.readIPv6Addr())}function bi(r){if(r.includes("%")&&(r=r.split("%")[0]),!(r.length>Ua))return Zr.new(r).parseWith(()=>Zr.readIPAddr())}function xi(r){return!!a2(r)}function vi(r){return!!c2(r)}function Ei(r){return!!bi(r)}var Oa=bs(Da(),1),G8=["0.0.0.0/8","10.0.0.0/8","100.64.0.0/10","127.0.0.0/8","169.254.0.0/16","172.16.0.0/12","192.0.0.0/24","192.0.0.0/29","192.0.0.8/32","192.0.0.9/32","192.0.0.10/32","192.0.0.170/32","192.0.0.171/32","192.0.2.0/24","192.31.196.0/24","192.52.193.0/24","192.88.99.0/24","192.168.0.0/16","192.175.48.0/24","198.18.0.0/15","198.51.100.0/24","203.0.113.0/24","240.0.0.0/4","255.255.255.255/32"],j8=G8.map(r=>new Oa.Netmask(r));function l2(r){for(let e of j8)if(e.contains(r))return!0;return!1}function W8(r){return/^::ffff:([0-9a-fA-F]{1,4}):([0-9a-fA-F]{1,4})$/.test(r)}function Q8(r){let e=r.split(":");if(e.length<2)return!1;let t=e[e.length-1].padStart(4,"0"),n=e[e.length-2].padStart(4,"0"),i=`${parseInt(n.substring(0,2),16)}.${parseInt(n.substring(2),16)}.${parseInt(t.substring(0,2),16)}.${parseInt(t.substring(2),16)}`;return l2(i)}function Z8(r){return/^::ffff:([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})$/.test(r)}function Y8(r){let e=r.split(":"),t=e[e.length-1];return l2(t)}function X8(r){return/^::$/.test(r)||/^::1$/.test(r)||/^64:ff9b::([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})$/.test(r)||/^100::([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4})$/.test(r)||/^2001::([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4})$/.test(r)||/^2001:2[0-9a-fA-F]:([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4})$/.test(r)||/^2001:db8:([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4})$/.test(r)||/^2002:([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4})$/.test(r)||/^f[c-d]([0-9a-fA-F]{2,2}):/i.test(r)||/^fe[8-9a-bA-B][0-9a-fA-F]:/i.test(r)||/^ff([0-9a-fA-F]{2,2}):/i.test(r)}function Ai(r){return xi(r)?l2(r):W8(r)?Q8(r):Z8(r)?Y8(r):vi(r)?X8(r):void 0}var Pt="/",Ma=new TextEncoder().encode(Pt),Si=Ma[0],Vn=class r{_buf;constructor(e,t){if(typeof e=="string")this._buf=Q(e);else if(e instanceof Uint8Array)this._buf=e;else throw new Error("Invalid key, should be String of Uint8Array");if(t==null&&(t=!0),t&&this.clean(),this._buf.byteLength===0||this._buf[0]!==Si)throw new Error("Invalid key")}toString(e="utf8"){return D(this._buf,e)}uint8Array(){return this._buf}get[Symbol.toStringTag](){return`Key(${this.toString()})`}static withNamespaces(e){return new r(e.join(Pt))}static random(){return new r(Math.random().toString().substring(2))}static asKey(e){return e instanceof Uint8Array||typeof e=="string"?new r(e):typeof e.uint8Array=="function"?new r(e.uint8Array()):null}clean(){if((this._buf==null||this._buf.byteLength===0)&&(this._buf=Ma),this._buf[0]!==Si){let e=new Uint8Array(this._buf.byteLength+1);e.fill(Si,0,1),e.set(this._buf,1),this._buf=e}for(;this._buf.byteLength>1&&this._buf[this._buf.byteLength-1]===Si;)this._buf=this._buf.subarray(0,-1)}less(e){let t=this.list(),n=e.list();for(let i=0;i<t.length;i++){if(n.length<i+1)return!1;let s=t[i],o=n[i];if(s<o)return!0;if(s>o)return!1}return t.length<n.length}reverse(){return r.withNamespaces(this.list().slice().reverse())}namespaces(){return this.list()}baseNamespace(){let e=this.namespaces();return e[e.length-1]}list(){return this.toString().split(Pt).slice(1)}type(){return J8(this.baseNamespace())}name(){return e7(this.baseNamespace())}instance(e){return new r(this.toString()+":"+e)}path(){let e=this.parent().toString();return e.endsWith(Pt)||(e+=Pt),e+=this.type(),new r(e)}parent(){let e=this.list();return e.length===1?new r(Pt):new r(e.slice(0,-1).join(Pt))}child(e){return this.toString()===Pt?e:e.toString()===Pt?this:new r(this.toString()+e.toString(),!1)}isAncestorOf(e){return e.toString()===this.toString()?!1:e.toString().startsWith(this.toString())}isDecendantOf(e){return e.toString()===this.toString()?!1:this.toString().startsWith(e.toString())}isTopLevel(){return this.list().length===1}concat(...e){return r.withNamespaces([...this.namespaces(),...t7(e.map(t=>t.namespaces()))])}};function J8(r){let e=r.split(":");return e.length<2?"":e.slice(0,-1).join(":")}function e7(r){let e=r.split(":");return e[e.length-1]}function t7(r){return[].concat(...r)}var r7=Q("/pk/");function Bi(r){return{...r,multiaddrs:r.multiaddrs.filter(e=>{let[[t,n]]=e.stringTuples();if(t===53||t===54||t===55)return n!=="localhost";if(t!==4&&t!==6||n==null)return!1;let i=Ai(n);return i==null?!0:!i})}}function Va(r){return{...r,multiaddrs:r.multiaddrs.filter(e=>{let[[t,n]]=e.stringTuples();if(n==="localhost")return!0;if(t!==4&&t!==6||n==null)return!1;let i=Ai(n);return i??!1})}}function Fa(r){return r}async function Qt(r){return(await mt.digest(r)).digest}async function Oe(r){return Qt(r.toMultihash().bytes)}function Zt(r,e){return new Vn(`${r}/${D(e,"base32")}`,!1)}function Ha(r){return Be([r7,r.toMultihash().bytes])}function qa(r){return D(r.subarray(0,4))==="/pk/"}function Ka(r){let e=me(r.subarray(4));return Xe(e)}function u2(r,e){let t=new Date;return new ue(r,e,t).serialize()}var n7=290,i7=54,s7=55,o7=56,a7=4,c7=41;function $a(r){let e=r.stringTuples();for(let t of e)if(t[0]===n7)return!1;if(e[0][0]===i7||e[0][0]===s7||e[0][0]===o7)return!0;if(e[0][0]===a7||e[0][0]===c7){let t=Ai(`${e[0][1]}`);return t==null||!t}return!1}function Ii(r){let e=r.toString().split("/"),t=e.pop(),n=e.pop();if(t==null||n==null)throw new Error(`incorrectly formatted provider entry key in datastore: ${r.toString()}`);return{cid:re.createV1(P0,me(Q(n,"base32"))),peerId:_a(t)}}function ki(r,e,t){let n=typeof e=="string"?e:D(e.multihash.bytes,"base32"),i=[r,n];return t!=null&&i.push(t.toString()),new Vn(i.join("/"))}function Ti(r){return new Date(Me(r))}function pr(r,e,t){return async function*(...n){let i=e.queryTime?.timer(t),s=e.errorTime?.timer(t),o=!1;try{e.queries?.increment({[t]:!0}),yield*r(...n)}catch(a){throw o=!0,s?.(),e.errors?.increment({[t]:!0}),a}finally{e.queries?.decrement({[t]:!0}),o||i?.()}}}function Ri(r,e,t){return async function(...n){let i=e?.queryTime?.timer(t),s=e?.errorTime?.timer(t),o=!1;try{return e.queries?.increment({[t]:!0}),await r(...n)}catch(a){throw o=!0,s?.(),e.errors?.increment({[t]:!0}),a}finally{e.queries?.decrement({[t]:!0}),o||i?.()}}}var Pi=class{log;components;validators;selectors;peerRouting;queryManager;network;datastorePrefix;constructor(e,t){let{validators:n,selectors:i,peerRouting:s,queryManager:o,network:a,logPrefix:c}=t;this.components=e,this.log=e.logger.forComponent(`${c}:content-fetching`),this.datastorePrefix=`/${t.logPrefix.replaceAll(":","/")}/record`,this.validators=n,this.selectors=i,this.peerRouting=s,this.queryManager=o,this.network=a}async getLocal(e){this.log("getLocal %b",e);let t=Zt(this.datastorePrefix,e);this.log("fetching record for key %k",t);let n=await this.components.datastore.get(t);this.log("found %k in local datastore",t);let i=ue.deserialize(n);return await Qr(this.validators,i),i}async*sendCorrectionRecord(e,t,n,i={}){this.log("sendCorrection for %b",e);let s=u2(e,n);for(let{value:o,from:a}of t){if(X(o,n)){this.log("record was ok");continue}if(this.components.peerId.equals(a)){try{let u=Zt(this.datastorePrefix,e);this.log(`Storing corrected record for key ${u.toString()}`),await this.components.datastore.put(u,s.subarray())}catch(u){this.log.error("Failed error correcting self",u)}continue}let c=!1,l={type:O.PUT_VALUE,key:e,record:s};for await(let u of this.network.sendRequest(a,l,i))u.name==="PEER_RESPONSE"&&u.record!=null&&X(u.record.value,ue.deserialize(s).value)&&(c=!0),yield u;c||(yield Fe({from:a,error:new Ot("Value not put correctly")},i)),this.log.error("Failed error correcting entry")}}async*put(e,t,n={}){this.log("put key %b value %b",e,t);let i=u2(e,t),s=Zt(this.datastorePrefix,e);this.log(`storing record for key ${s.toString()}`),await this.components.datastore.put(s,i.subarray()),yield*Dt(this.peerRouting.getClosestPeers(e,{signal:n.signal}),o=>Pr(o,a=>async()=>{if(a.name!=="FINAL_PEER")return[a];let c=[],l={type:O.PUT_VALUE,key:e,record:i};this.log("send put to %p",a.peer.id);for await(let u of this.network.sendRequest(a.peer.id,l,n))c.push(u),u.name==="PEER_RESPONSE"&&(u.record!=null&&X(u.record.value,ue.deserialize(i).value)||c.push(Fe({from:a.peer.id,error:new Ot("Value not put correctly")},n)));return c}),o=>sr(o,{ordered:!1,concurrency:Er}),async function*(o){for await(let a of o)yield*a})}async*get(e,t={}){this.log("get %b",e);let n=[];for await(let a of this.getMany(e,t))a.name==="VALUE"&&n.push(a),yield a;if(n.length===0)return;let i=n.map(a=>a.value),s=0;try{s=Y0(this.selectors,e,i)}catch(a){if(a.name!=="InvalidParametersError")throw a}let o=i[s];if(this.log("GetValue %b %b",e,o),o==null)throw new ze("Best value was not found");yield*this.sendCorrectionRecord(e,n,o,t),yield n[s]}async*getMany(e,t={}){this.log("getMany values for %b",e);try{let s=await this.getLocal(e);yield wn({value:s.value,from:this.components.peerId},t)}catch(s){this.log("error getting local value for %b",e,s)}let n=this,i=async function*({peer:s,signal:o}){for await(let a of n.peerRouting.getValueOrPeers(s,e,{signal:o}))yield a,a.name==="PEER_RESPONSE"&&a.record!=null&&(yield wn({from:s,value:a.record.value},t))};yield*this.queryManager.run(e,i,t)}};function gr(r,e){let t={[Symbol.iterator]:()=>t,next:()=>{let n=r.next(),i=n.value;return n.done===!0||i==null?{done:!0,value:void 0}:{done:!1,value:e(i)}}};return t}function Ni(r){let e=me(Y.decode(`z${r}`));return Xe(e)}var mr=class{map;constructor(e){if(this.map=new Map,e!=null)for(let[t,n]of e.entries())this.map.set(t.toString(),{key:t,value:n})}[Symbol.iterator](){return this.entries()}clear(){this.map.clear()}delete(e){return this.map.delete(e.toString())}entries(){return gr(this.map.entries(),e=>[e[1].key,e[1].value])}forEach(e){this.map.forEach((t,n)=>{e(t.value,t.key,this)})}get(e){return this.map.get(e.toString())?.value}has(e){return this.map.has(e.toString())}set(e,t){this.map.set(e.toString(),{key:e,value:t})}keys(){return gr(this.map.values(),e=>e.key)}values(){return gr(this.map.values(),e=>e.value)}get size(){return this.map.size}};var lt=class r{set;constructor(e){if(this.set=new Set,e!=null)for(let t of e)this.set.add(t.toString())}get size(){return this.set.size}[Symbol.iterator](){return this.values()}add(e){this.set.add(e.toString())}clear(){this.set.clear()}delete(e){this.set.delete(e.toString())}entries(){return gr(this.set.entries(),e=>{let t=Ni(e[0]);return[t,t]})}forEach(e){this.set.forEach(t=>{let n=Ni(t);e(n,n,this)})}has(e){return this.set.has(e.toString())}values(){return gr(this.set.values(),e=>Ni(e))}intersection(e){let t=new r;for(let n of e)this.has(n)&&t.add(n);return t}difference(e){let t=new r;for(let n of this)e.has(n)||t.add(n);return t}union(e){let t=new r;for(let n of e)t.add(n);for(let n of this)t.add(n);return t}};var Ga=Symbol.for("@achingbrain/uint8arraylist");function za(r,e){if(e==null||e<0)throw new RangeError("index is out of bounds");let t=0;for(let n of r){let i=t+n.byteLength;if(e<i)return{buf:n,index:e-t};t=i}throw new RangeError("index is out of bounds")}function Li(r){return!!r?.[Ga]}var He=class r{bufs;length;[Ga]=!0;constructor(...e){this.bufs=[],this.length=0,e.length>0&&this.appendAll(e)}*[Symbol.iterator](){yield*this.bufs}get byteLength(){return this.length}append(...e){this.appendAll(e)}appendAll(e){let t=0;for(let n of e)if(n instanceof Uint8Array)t+=n.byteLength,this.bufs.push(n);else if(Li(n))t+=n.byteLength,this.bufs.push(...n.bufs);else throw new Error("Could not append value, must be an Uint8Array or a Uint8ArrayList");this.length+=t}prepend(...e){this.prependAll(e)}prependAll(e){let t=0;for(let n of e.reverse())if(n instanceof Uint8Array)t+=n.byteLength,this.bufs.unshift(n);else if(Li(n))t+=n.byteLength,this.bufs.unshift(...n.bufs);else throw new Error("Could not prepend value, must be an Uint8Array or a Uint8ArrayList");this.length+=t}get(e){let t=za(this.bufs,e);return t.buf[t.index]}set(e,t){let n=za(this.bufs,e);n.buf[n.index]=t}write(e,t=0){if(e instanceof Uint8Array)for(let n=0;n<e.length;n++)this.set(t+n,e[n]);else if(Li(e))for(let n=0;n<e.length;n++)this.set(t+n,e.get(n));else throw new Error("Could not write value, must be an Uint8Array or a Uint8ArrayList")}consume(e){if(e=Math.trunc(e),!(Number.isNaN(e)||e<=0)){if(e===this.byteLength){this.bufs=[],this.length=0;return}for(;this.bufs.length>0;)if(e>=this.bufs[0].byteLength)e-=this.bufs[0].byteLength,this.length-=this.bufs[0].byteLength,this.bufs.shift();else{this.bufs[0]=this.bufs[0].subarray(e),this.length-=e;break}}}slice(e,t){let{bufs:n,length:i}=this._subList(e,t);return Be(n,i)}subarray(e,t){let{bufs:n,length:i}=this._subList(e,t);return n.length===1?n[0]:Be(n,i)}sublist(e,t){let{bufs:n,length:i}=this._subList(e,t),s=new r;return s.length=i,s.bufs=[...n],s}_subList(e,t){if(e=e??0,t=t??this.length,e<0&&(e=this.length+e),t<0&&(t=this.length+t),e<0||t>this.length)throw new RangeError("index is out of bounds");if(e===t)return{bufs:[],length:0};if(e===0&&t===this.length)return{bufs:this.bufs,length:this.length};let n=[],i=0;for(let s=0;s<this.bufs.length;s++){let o=this.bufs[s],a=i,c=a+o.byteLength;if(i=c,e>=c)continue;let l=e>=a&&e<c,u=t>a&&t<=c;if(l&&u){if(e===a&&t===c){n.push(o);break}let f=e-a;n.push(o.subarray(f,f+(t-e)));break}if(l){if(e===0){n.push(o);continue}n.push(o.subarray(e-a));continue}if(u){if(t===c){n.push(o);break}n.push(o.subarray(0,t-a));break}n.push(o)}return{bufs:n,length:t-e}}indexOf(e,t=0){if(!Li(e)&&!(e instanceof Uint8Array))throw new TypeError('The "value" argument must be a Uint8ArrayList or Uint8Array');let n=e instanceof Uint8Array?e:e.subarray();if(t=Number(t??0),isNaN(t)&&(t=0),t<0&&(t=this.length+t),t<0&&(t=0),e.length===0)return t>this.length?this.length:t;let i=n.byteLength;if(i===0)throw new TypeError("search must be at least 1 byte long");let s=256,o=new Int32Array(s);for(let f=0;f<s;f++)o[f]=-1;for(let f=0;f<i;f++)o[n[f]]=f;let a=o,c=this.byteLength-n.byteLength,l=n.byteLength-1,u;for(let f=t;f<=c;f+=u){u=0;for(let h=l;h>=0;h--){let p=this.get(f+h);if(n[h]!==p){u=Math.max(1,h-a[p]);break}}if(u===0)return f}return-1}getInt8(e){let t=this.subarray(e,e+1);return new DataView(t.buffer,t.byteOffset,t.byteLength).getInt8(0)}setInt8(e,t){let n=ge(1);new DataView(n.buffer,n.byteOffset,n.byteLength).setInt8(0,t),this.write(n,e)}getInt16(e,t){let n=this.subarray(e,e+2);return new DataView(n.buffer,n.byteOffset,n.byteLength).getInt16(0,t)}setInt16(e,t,n){let i=_e(2);new DataView(i.buffer,i.byteOffset,i.byteLength).setInt16(0,t,n),this.write(i,e)}getInt32(e,t){let n=this.subarray(e,e+4);return new DataView(n.buffer,n.byteOffset,n.byteLength).getInt32(0,t)}setInt32(e,t,n){let i=_e(4);new DataView(i.buffer,i.byteOffset,i.byteLength).setInt32(0,t,n),this.write(i,e)}getBigInt64(e,t){let n=this.subarray(e,e+8);return new DataView(n.buffer,n.byteOffset,n.byteLength).getBigInt64(0,t)}setBigInt64(e,t,n){let i=_e(8);new DataView(i.buffer,i.byteOffset,i.byteLength).setBigInt64(0,t,n),this.write(i,e)}getUint8(e){let t=this.subarray(e,e+1);return new DataView(t.buffer,t.byteOffset,t.byteLength).getUint8(0)}setUint8(e,t){let n=ge(1);new DataView(n.buffer,n.byteOffset,n.byteLength).setUint8(0,t),this.write(n,e)}getUint16(e,t){let n=this.subarray(e,e+2);return new DataView(n.buffer,n.byteOffset,n.byteLength).getUint16(0,t)}setUint16(e,t,n){let i=_e(2);new DataView(i.buffer,i.byteOffset,i.byteLength).setUint16(0,t,n),this.write(i,e)}getUint32(e,t){let n=this.subarray(e,e+4);return new DataView(n.buffer,n.byteOffset,n.byteLength).getUint32(0,t)}setUint32(e,t,n){let i=_e(4);new DataView(i.buffer,i.byteOffset,i.byteLength).setUint32(0,t,n),this.write(i,e)}getBigUint64(e,t){let n=this.subarray(e,e+8);return new DataView(n.buffer,n.byteOffset,n.byteLength).getBigUint64(0,t)}setBigUint64(e,t,n){let i=_e(8);new DataView(i.buffer,i.byteOffset,i.byteLength).setBigUint64(0,t,n),this.write(i,e)}getFloat32(e,t){let n=this.subarray(e,e+4);return new DataView(n.buffer,n.byteOffset,n.byteLength).getFloat32(0,t)}setFloat32(e,t,n){let i=_e(4);new DataView(i.buffer,i.byteOffset,i.byteLength).setFloat32(0,t,n),this.write(i,e)}getFloat64(e,t){let n=this.subarray(e,e+8);return new DataView(n.buffer,n.byteOffset,n.byteLength).getFloat64(0,t)}setFloat64(e,t,n){let i=_e(8);new DataView(i.buffer,i.byteOffset,i.byteLength).setFloat64(0,t,n),this.write(i,e)}equals(e){if(e==null||!(e instanceof r)||e.bufs.length!==this.bufs.length)return!1;for(let t=0;t<this.bufs.length;t++)if(!X(this.bufs[t],e.bufs[t]))return!1;return!0}static fromUint8Arrays(e,t){let n=new r;return n.bufs=e,t==null&&(t=e.reduce((i,s)=>i+s.byteLength,0)),n.length=t,n}};var yp=parseInt("0xFFFF",16),wp=new Uint8Array([0,0,0,0,0,0,0,0,0,0,255,255]);var Qa=xi,p7=vi,f2=function(r){let e=0;if(r=r.toString().trim(),Qa(r)){let t=new Uint8Array(e+4);return r.split(/\./g).forEach(n=>{t[e++]=parseInt(n,10)&255}),t}if(p7(r)){let t=r.split(":",8),n;for(n=0;n<t.length;n++){let s=Qa(t[n]),o;s&&(o=f2(t[n]),t[n]=D(o.slice(0,2),"base16")),o!=null&&++n<8&&t.splice(n,0,D(o.slice(2,4),"base16"))}if(t[0]==="")for(;t.length<8;)t.unshift("0");else if(t[t.length-1]==="")for(;t.length<8;)t.push("0");else if(t.length<8){for(n=0;n<t.length&&t[n]!=="";n++);let s=[n,1];for(n=9-t.length;n>0;n--)s.push("0");t.splice.apply(t,s)}let i=new Uint8Array(e+16);for(n=0;n<t.length;n++){let s=parseInt(t[n],16);i[e++]=s>>8&255,i[e++]=s&255}return i}throw new Error("invalid ip address")},Za=function(r,e=0,t){e=~~e,t=t??r.length-e;let n=new DataView(r.buffer);if(t===4){let i=[];for(let s=0;s<t;s++)i.push(r[e+s]);return i.join(".")}if(t===16){let i=[];for(let s=0;s<t;s+=2)i.push(n.getUint16(e+s).toString(16));return i.join(":").replace(/(^|:)0(:0)*:0(:|$)/,"$1::$3").replace(/:{3,4}/,"::")}return""};var Yr={},h2={},m7=[[4,32,"ip4"],[6,16,"tcp"],[33,16,"dccp"],[41,128,"ip6"],[42,-1,"ip6zone"],[43,8,"ipcidr"],[53,-1,"dns",!0],[54,-1,"dns4",!0],[55,-1,"dns6",!0],[56,-1,"dnsaddr",!0],[132,16,"sctp"],[273,16,"udp"],[275,0,"p2p-webrtc-star"],[276,0,"p2p-webrtc-direct"],[277,0,"p2p-stardust"],[280,0,"webrtc-direct"],[281,0,"webrtc"],[290,0,"p2p-circuit"],[301,0,"udt"],[302,0,"utp"],[400,-1,"unix",!1,!0],[421,-1,"ipfs"],[421,-1,"p2p"],[443,0,"https"],[444,96,"onion"],[445,296,"onion3"],[446,-1,"garlic64"],[448,0,"tls"],[449,-1,"sni"],[460,0,"quic"],[461,0,"quic-v1"],[465,0,"webtransport"],[466,-1,"certhash"],[477,0,"ws"],[478,0,"wss"],[479,0,"p2p-websocket-star"],[480,0,"http"],[481,-1,"http-path"],[777,-1,"memory"]];m7.forEach(r=>{let e=y7(...r);h2[e.code]=e,Yr[e.name]=e});function y7(r,e,t,n,i){return{code:r,size:e,name:t,resolvable:!!n,path:!!i}}function G(r){if(typeof r=="number"){if(h2[r]!=null)return h2[r];throw new Error(`no protocol with code: ${r}`)}else if(typeof r=="string"){if(Yr[r]!=null)return Yr[r];throw new Error(`no protocol with name: ${r}`)}throw new Error(`invalid protocol id type: ${typeof r}`)}var Jp=G("ip4"),eg=G("ip6"),tg=G("ipcidr");function m2(r,e){switch(G(r).code){case 4:case 41:return b7(e);case 42:return g2(e);case 6:case 273:case 33:case 132:return Ja(e).toString();case 53:case 54:case 55:case 56:case 400:case 449:case 777:return g2(e);case 421:return A7(e);case 444:return Xa(e);case 445:return Xa(e);case 466:return E7(e);case 481:return globalThis.encodeURIComponent(g2(e));default:return D(e,"base16")}}function y2(r,e){switch(G(r).code){case 4:return Ya(e);case 41:return Ya(e);case 42:return p2(e);case 6:case 273:case 33:case 132:return w2(parseInt(e,10));case 53:case 54:case 55:case 56:case 400:case 449:case 777:return p2(e);case 421:return x7(e);case 444:return S7(e);case 445:return B7(e);case 466:return v7(e);case 481:return p2(globalThis.decodeURIComponent(e));default:return Q(e,"base16")}}var d2=Object.values(dn).map(r=>r.decoder),w7=function(){let r=d2[0].or(d2[1]);return d2.slice(2).forEach(e=>r=r.or(e)),r}();function Ya(r){if(!Ei(r))throw new Error("invalid ip address");return f2(r)}function b7(r){let e=Za(r,0,r.length);if(e==null)throw new Error("ipBuff is required");if(!Ei(e))throw new Error("invalid ip address");return e}function w2(r){let e=new ArrayBuffer(2);return new DataView(e).setUint16(0,r),new Uint8Array(e)}function Ja(r){return new DataView(r.buffer).getUint16(r.byteOffset)}function p2(r){let e=Q(r),t=Uint8Array.from(qe(e.length));return Be([t,e],t.length+e.length)}function g2(r){let e=Me(r);if(r=r.slice(oe(e)),r.length!==e)throw new Error("inconsistent lengths");return D(r)}function x7(r){let e;r[0]==="Q"||r[0]==="1"?e=me(Y.decode(`z${r}`)).bytes:e=re.parse(r).multihash.bytes;let t=Uint8Array.from(qe(e.length));return Be([t,e],t.length+e.length)}function v7(r){let e=w7.decode(r),t=Uint8Array.from(qe(e.length));return Be([t,e],t.length+e.length)}function E7(r){let e=Me(r),t=r.slice(oe(e));if(t.length!==e)throw new Error("inconsistent lengths");return"u"+D(t,"base64url")}function A7(r){let e=Me(r),t=r.slice(oe(e));if(t.length!==e)throw new Error("inconsistent lengths");return D(t,"base58btc")}function S7(r){let e=r.split(":");if(e.length!==2)throw new Error(`failed to parse onion addr: ["'${e.join('", "')}'"]' does not contain a port number`);if(e[0].length!==16)throw new Error(`failed to parse onion addr: ${e[0]} not a Tor onion address.`);let t=pt.decode("b"+e[0]),n=parseInt(e[1],10);if(n<1||n>65536)throw new Error("Port number is not in range(1, 65536)");let i=w2(n);return Be([t,i],t.length+i.length)}function B7(r){let e=r.split(":");if(e.length!==2)throw new Error(`failed to parse onion addr: ["'${e.join('", "')}'"]' does not contain a port number`);if(e[0].length!==56)throw new Error(`failed to parse onion addr: ${e[0]} not a Tor onion3 address.`);let t=pt.decode(`b${e[0]}`),n=parseInt(e[1],10);if(n<1||n>65536)throw new Error("Port number is not in range(1, 65536)");let i=w2(n);return Be([t,i],t.length+i.length)}function Xa(r){let e=r.slice(0,r.length-2),t=r.slice(r.length-2),n=D(e,"base32"),i=Ja(t);return`${n}:${i}`}function e4(r){r=b2(r);let e=[],t=[],n=null,i=r.split("/").slice(1);if(i.length===1&&i[0]==="")return{bytes:new Uint8Array,string:"/",tuples:[],stringTuples:[],path:null};for(let s=0;s<i.length;s++){let o=i[s],a=G(o);if(a.size===0){e.push([a.code]),t.push([a.code]);continue}if(s++,s>=i.length)throw r4("invalid address: "+r);if(a.path===!0){n=b2(i.slice(s).join("/")),e.push([a.code,y2(a.code,n)]),t.push([a.code,n]);break}let c=y2(a.code,i[s]);e.push([a.code,c]),t.push([a.code,m2(a.code,c)])}return{string:t4(t),bytes:v2(e),tuples:e,stringTuples:t,path:n}}function x2(r){let e=[],t=[],n=null,i=0;for(;i<r.length;){let s=Me(r,i),o=oe(s),a=G(s),c=I7(a,r.slice(i+o));if(c===0){e.push([s]),t.push([s]),i+=o;continue}let l=r.slice(i+o,i+o+c);if(i+=c+o,i>r.length)throw r4("Invalid address Uint8Array: "+D(r,"base16"));e.push([s,l]);let u=m2(s,l);if(t.push([s,u]),a.path===!0){n=u;break}}return{bytes:Uint8Array.from(r),string:t4(t),tuples:e,stringTuples:t,path:n}}function t4(r){let e=[];return r.map(t=>{let n=G(t[0]);return e.push(n.name),t.length>1&&t[1]!=null&&e.push(t[1]),null}),b2(e.join("/"))}function v2(r){return Be(r.map(e=>{let t=G(e[0]),n=Uint8Array.from(qe(t.code));return e.length>1&&e[1]!=null&&(n=Be([n,e[1]])),n}))}function I7(r,e){if(r.size>0)return r.size/8;if(r.size===0)return 0;{let t=Me(e instanceof Uint8Array?e:Uint8Array.from(e));return t+oe(t)}}function b2(r){return"/"+r.trim().split("/").filter(e=>e).join("/")}function r4(r){return new Error("Error parsing address: "+r)}var k7=Symbol.for("nodejs.util.inspect.custom"),A2=Symbol.for("@multiformats/js-multiaddr/multiaddr"),T7=[G("dns").code,G("dns4").code,G("dns6").code,G("dnsaddr").code],E2=class extends Error{constructor(e="No available resolver"){super(e),this.name="NoAvailableResolverError"}},_i=class r{bytes;#e;#r;#s;#a;[A2]=!0;constructor(e){e==null&&(e="");let t;if(e instanceof Uint8Array)t=x2(e);else if(typeof e=="string"){if(e.length>0&&e.charAt(0)!=="/")throw new Error(`multiaddr "${e}" must start with a "/"`);t=e4(e)}else if(i4(e))t=x2(e.bytes);else throw new Error("addr must be a string, Buffer, or another Multiaddr");this.bytes=t.bytes,this.#e=t.string,this.#r=t.tuples,this.#s=t.stringTuples,this.#a=t.path}toString(){return this.#e}toJSON(){return this.toString()}toOptions(){let e,t,n,i,s="",o=G("tcp"),a=G("udp"),c=G("ip4"),l=G("ip6"),u=G("dns6"),f=G("ip6zone");for(let[p,y]of this.stringTuples())p===f.code&&(s=`%${y??""}`),T7.includes(p)&&(t=o.name,i=443,n=`${y??""}${s}`,e=p===u.code?6:4),(p===o.code||p===a.code)&&(t=G(p).name,i=parseInt(y??"")),(p===c.code||p===l.code)&&(t=G(p).name,n=`${y??""}${s}`,e=p===l.code?6:4);if(e==null||t==null||n==null||i==null)throw new Error('multiaddr must have a valid format: "/{ip4, ip6, dns4, dns6, dnsaddr}/{address}/{tcp, udp}/{port}".');return{family:e,host:n,transport:t,port:i}}protos(){return this.#r.map(([e])=>Object.assign({},G(e)))}protoCodes(){return this.#r.map(([e])=>e)}protoNames(){return this.#r.map(([e])=>G(e).name)}tuples(){return this.#r}stringTuples(){return this.#s}encapsulate(e){return e=new r(e),new r(this.toString()+e.toString())}decapsulate(e){let t=e.toString(),n=this.toString(),i=n.lastIndexOf(t);if(i<0)throw new Error(`Address ${this.toString()} does not contain subaddress: ${e.toString()}`);return new r(n.slice(0,i))}decapsulateCode(e){let t=this.tuples();for(let n=t.length-1;n>=0;n--)if(t[n][0]===e)return new r(v2(t.slice(0,n)));return this}getPeerId(){try{let e=[];this.stringTuples().forEach(([n,i])=>{n===Yr.p2p.code&&e.push([n,i]),n===Yr["p2p-circuit"].code&&(e=[])});let t=e.pop();if(t?.[1]!=null){let n=t[1];return n[0]==="Q"||n[0]==="1"?D(Y.decode(`z${n}`),"base58btc"):D(re.parse(n).multihash.bytes,"base58btc")}return null}catch{return null}}getPath(){return this.#a}equals(e){return X(this.bytes,e.bytes)}async resolve(e){let t=this.protos().find(s=>s.resolvable);if(t==null)return[this];let n=n4.get(t.name);if(n==null)throw new E2(`no available resolver for ${t.name}`);return(await n(this,e)).map(s=>yr(s))}nodeAddress(){let e=this.toOptions();if(e.transport!=="tcp"&&e.transport!=="udp")throw new Error(`multiaddr must have a valid format - no protocol with name: "${e.transport}". Must have a valid transport protocol: "{tcp, udp}"`);return{family:e.family,address:e.host,port:e.port}}isThinWaistAddress(e){let t=(e??this).protos();return!(t.length!==2||t[0].code!==4&&t[0].code!==41||t[1].code!==6&&t[1].code!==273)}[k7](){return`Multiaddr(${this.#e})`}};var n4=new Map;function i4(r){return!!r?.[A2]}function yr(r){return new _i(r)}function s4(r,e){return{id:r.id.toMultihash().bytes,multiaddrs:(r.multiaddrs??[]).map(n=>n.bytes),connection:e}}function Fn(r){if(r.id==null)throw new Error("Invalid peer in message");let e=me(r.id);return{id:Xe(e),multiaddrs:(r.multiaddrs??[]).map(t=>yr(t))}}var Ci=class{log;components;network;peerRouting;queryManager;routingTable;providers;constructor(e,t){let{network:n,peerRouting:i,queryManager:s,routingTable:o,providers:a,logPrefix:c}=t;this.components=e,this.log=e.logger.forComponent(`${c}:content-routing`),this.network=n,this.peerRouting=i,this.queryManager=s,this.routingTable=o,this.providers=a}async*provide(e,t,n={}){this.log("provide %s",e);let i=e.multihash.bytes;await this.providers.addProvider(e,this.components.peerId);let s={type:O.ADD_PROVIDER,key:i,providers:[s4({id:this.components.peerId,multiaddrs:t})]},o=0,a=c=>async()=>{if(c.name!=="FINAL_PEER")return[c];let l=[];this.log("putProvider %s to %p",e,c.peer.id);try{this.log("sending provider record for %s to %p",e,c.peer.id);for await(let u of this.network.sendMessage(c.peer.id,s,n))u.name==="PEER_RESPONSE"&&(this.log("sent provider record for %s to %p",e,c.peer.id),o++),l.push(u)}catch(u){this.log.error("error sending provide record to peer %p",c.peer.id,u),l.push(Fe({from:c.peer.id,error:u},n))}return l};yield*Dt(this.peerRouting.getClosestPeers(i,n),c=>Pr(c,l=>a(l)),c=>sr(c,{ordered:!1,concurrency:Er}),async function*(c){for await(let l of c)yield*l}),this.log("sent provider records to %d peers",o)}async*findProviders(e,t){let n=this.routingTable.kBucketSize,i=0,s=e.multihash.bytes,o=this;this.log("findProviders %c",e);let a=await this.providers.getProviders(e);if(a.length>0){let u=[];for(let f of a.slice(0,n))try{let h=await this.components.peerStore.get(f);u.push({id:f,multiaddrs:h.addresses.map(({multiaddr:p})=>p)})}catch(h){if(h.name!=="NotFoundError")throw h;this.log("no peer store entry for %p",f)}if(yield yn({from:this.components.peerId,messageType:O.GET_PROVIDERS,providers:u},t),yield Bo({from:this.components.peerId,providers:u},t),i+=u.length,i>=n)return}let c=async function*({peer:u,signal:f}){let h={type:O.GET_PROVIDERS,key:s};yield*o.network.sendRequest(u,h,{...t,signal:f})},l=new lt(a);for await(let u of this.queryManager.run(s,c,t))if(yield u,u.name==="PEER_RESPONSE"){this.log("Found %d provider entries for %c and %d closer peers",u.providers.length,e,u.closer.length);let f=[];for(let h of u.providers)l.has(h.id)||(l.add(h.id),f.push(h));if(f.length>0&&(yield Bo({from:u.from,providers:f},t),i+=f.length,i>=n))return}}};function Je(r){let e=new globalThis.AbortController;function t(){e.abort();for(let s of r)s?.removeEventListener!=null&&s.removeEventListener("abort",t)}for(let s of r){if(s?.aborted===!0){t();break}s?.addEventListener!=null&&s.addEventListener("abort",t)}function n(){for(let s of r)s?.removeEventListener!=null&&s.removeEventListener("abort",t)}let i=e.signal;return i.clear=n,i}var Xr=class{movingAverage;variance;deviation;forecast;timespan;previousTime;constructor(e){this.timespan=e,this.movingAverage=0,this.variance=0,this.deviation=0,this.forecast=0}alpha(e,t){return 1-Math.exp(-(e-t)/this.timespan)}push(e,t=Date.now()){if(this.previousTime!=null){let n=this.alpha(t,this.previousTime),i=e-this.movingAverage,s=n*i;this.movingAverage=n*e+(1-n)*this.movingAverage,this.variance=(1-n)*(this.variance+i*s),this.deviation=Math.sqrt(this.variance),this.forecast=this.movingAverage+n*i}else this.movingAverage=e;this.previousTime=t}};var R7=1.2,P7=2,N7=2e3,Nt=class{success;failure;next;metric;timeoutMultiplier;failureMultiplier;minTimeout;constructor(e={}){this.success=new Xr(e.interval??5e3),this.failure=new Xr(e.interval??5e3),this.next=new Xr(e.interval??5e3),this.failureMultiplier=e.failureMultiplier??P7,this.timeoutMultiplier=e.timeoutMultiplier??R7,this.minTimeout=e.minTimeout??N7,e.metricName!=null&&(this.metric=e.metrics?.registerMetricGroup(e.metricName))}getTimeoutSignal(e={}){let t=Math.max(Math.round(this.next.movingAverage*(e.timeoutFactor??this.timeoutMultiplier)),this.minTimeout),n=AbortSignal.timeout(t),i=Je([e.signal,n]);return te(1/0,i,n),i.start=Date.now(),i.timeout=t,i}cleanUp(e){let t=Date.now()-e.start;e.aborted?(this.failure.push(t),this.next.push(t*this.failureMultiplier),this.metric?.update({failureMovingAverage:this.failure.movingAverage,failureDeviation:this.failure.deviation,failureForecast:this.failure.forecast,failureVariance:this.failure.variance,failure:t})):(this.success.push(t),this.next.push(t),this.metric?.update({successMovingAverage:this.success.movingAverage,successDeviation:this.success.deviation,successForecast:this.success.forecast,successVariance:this.success.variance,success:t}))}};var Ui=class extends Error{type;code;constructor(e,t,n){super(e??"The operation was aborted"),this.type="aborted",this.name=n??"AbortError",this.code=t??"ABORT_ERR"}};async function Jr(r,e,t){if(e==null)return r;if(e.aborted)return Promise.reject(new Ui(t?.errorMessage,t?.errorCode,t?.errorName));let n,i=new Ui(t?.errorMessage,t?.errorCode,t?.errorName);try{return await Promise.race([r,new Promise((s,o)=>{n=()=>{o(i)},e.addEventListener("abort",n)})])}finally{n!=null&&e.removeEventListener("abort",n)}}var S2=class{readNext;haveNext;ended;nextResult;constructor(){this.ended=!1,this.readNext=se(),this.haveNext=se()}[Symbol.asyncIterator](){return this}async next(){if(this.nextResult==null&&await this.haveNext.promise,this.nextResult==null)throw new Error("HaveNext promise resolved but nextResult was undefined");let e=this.nextResult;return this.nextResult=void 0,this.readNext.resolve(),this.readNext=se(),e}async throw(e){return this.ended=!0,e!=null&&(this.haveNext.promise.catch(()=>{}),this.haveNext.reject(e)),{done:!0,value:void 0}}async return(){let e={done:!0,value:void 0};return await this._push(void 0),e}async push(e,t){await this._push(e,t)}async end(e,t){e!=null?await this.throw(e):await this._push(void 0,t)}async _push(e,t){if(e!=null&&this.ended)throw new Error("Cannot push value onto an ended pushable");for(;this.nextResult!=null;)await this.readNext.promise;e!=null?this.nextResult={done:!1,value:e}:(this.ended=!0,this.nextResult={done:!0,value:void 0}),this.haveNext.resolve(),this.haveNext=se(),await Jr(this.readNext.promise,t?.signal,t)}};function o4(){return new S2}var Di=class extends Error{name="UnexpectedEOFError";code="ERR_UNEXPECTED_EOF"};var B2=class extends Error{code;constructor(e,t){super(e),this.code=t}},I2=class extends B2{type;constructor(e){super(e,"ABORT_ERR"),this.type="aborted",this.name="AbortError"}};function a4(r,e){let t=o4();r.sink(t).catch(async o=>{await t.end(o)}),r.sink=async o=>{for await(let a of o)await t.push(a);await t.end()};let n=r.source;r.source[Symbol.iterator]!=null?n=r.source[Symbol.iterator]():r.source[Symbol.asyncIterator]!=null&&(n=r.source[Symbol.asyncIterator]());let i=new He;return{read:async(o,a)=>{a?.signal?.throwIfAborted();let c,l=new Promise((u,f)=>{c=()=>{f(new I2("Read aborted"))},a?.signal?.addEventListener("abort",c)});try{if(o==null){let{done:f,value:h}=await Promise.race([n.next(),l]);return f===!0?new He:h}for(;i.byteLength<o;){let{value:f,done:h}=await Promise.race([n.next(),l]);if(h===!0)throw new Di("unexpected end of input");i.append(f)}let u=i.sublist(0,o);return i.consume(o),u}finally{c!=null&&a?.signal?.removeEventListener("abort",c)}},write:async(o,a)=>{a?.signal?.throwIfAborted(),o instanceof Uint8Array?await t.push(o,a):await t.push(o.subarray(),a)},unwrap:()=>{if(i.byteLength>0){let o=r.source;r.source=async function*(){e?.yieldBytes===!1?yield i:yield*i,yield*o}()}return r}}}var Oi=class extends Error{name="InvalidMessageLengthError";code="ERR_INVALID_MSG_LENGTH"},Mi=class extends Error{name="InvalidDataLengthError";code="ERR_MSG_DATA_TOO_LONG"},Vi=class extends Error{name="InvalidDataLengthLengthError";code="ERR_MSG_LENGTH_TOO_LONG"};function c4(r,e={}){let t=a4(r,e);e.maxDataLength!=null&&e.maxLengthLength==null&&(e.maxLengthLength=oe(e.maxDataLength));let n=e?.lengthDecoder??Me,i=e?.lengthEncoder??qe;return{read:async o=>{let a=-1,c=new He;for(;;){c.append(await t.read(1,o));try{a=n(c)}catch(l){if(l instanceof RangeError)continue;throw l}if(a<0)throw new Oi("Invalid message length");if(e?.maxLengthLength!=null&&c.byteLength>e.maxLengthLength)throw new Vi("message length length too long");if(a>-1)break}if(e?.maxDataLength!=null&&a>e.maxDataLength)throw new Mi("message length too long");return t.read(a,o)},write:async(o,a)=>{await t.write(new He(i(o.byteLength),o),a)},writeV:async(o,a)=>{let c=new He(...o.flatMap(l=>[i(l.byteLength),l]));await t.write(c,a)},unwrap:()=>t.unwrap()}}function k2(r,e){let t=c4(r,e),n={read:async(i,s)=>{let o=await t.read(s);return i.decode(o)},write:async(i,s,o)=>{await t.write(s.encode(i),o)},writeV:async(i,s,o)=>{await t.writeV(i.map(a=>s.encode(a)),o)},pb:i=>({read:async s=>n.read(i,s),write:async(s,o)=>n.write(s,i,o),writeV:async(s,o)=>n.writeV(s,i,o),unwrap:()=>n}),unwrap:()=>t.unwrap()};return n}var Fi=class extends Le{log;protocol;running;components;timeout;metrics;constructor(e,t){super(),this.components=e,this.log=e.logger.forComponent(`${t.logPrefix}:network`),this.running=!1,this.protocol=t.protocol,this.timeout=new Nt({...t.timeout??{},metrics:e.metrics,metricName:`${t.metricsPrefix}_network_message_send_times_milliseconds`}),this.metrics={operations:e.metrics?.registerCounterGroup(`${t.metricsPrefix}_outbound_rpc_requests_total`),errors:e.metrics?.registerCounterGroup(`${t.metricsPrefix}_outbound_rpc_errors_total`)}}async start(){this.running||(this.running=!0)}async stop(){this.running=!1}isStarted(){return this.running}async*sendRequest(e,t,n={}){if(!this.running)return;let i=t.type;if(i==null)throw new $("Message type was missing");this.log("sending %s to %p",t.type,e),yield Io({peer:e},n),yield So({to:e,type:i},n);let s,o=this.timeout.getTimeoutSignal(n);n={...n,signal:o};try{this.metrics.operations?.increment({[i]:!0}),s=await(await this.components.connectionManager.openConnection(e,n)).newStream(this.protocol,n);let c=await this._writeReadMessage(s,t,n);s.close(n).catch(l=>{this.log.error("error closing stream to %p",e,l),s?.abort(l)}),yield yn({from:e,messageType:c.type,closer:c.closer.map(Fn),providers:c.providers.map(Fn),record:c.record==null?void 0:ue.deserialize(c.record)},n)}catch(a){this.metrics.errors?.increment({[i]:!0}),s?.abort(a),n.signal?.aborted!==!0&&this.log.error("could not send %s to %p - %e",t.type,e,a),yield Fe({from:e,error:a},n)}finally{this.timeout.cleanUp(o)}}async*sendMessage(e,t,n={}){if(!this.running)return;let i=t.type;if(i==null)throw new $("Message type was missing");this.log("sending %s to %p",t.type,e),yield Io({peer:e},n),yield So({to:e,type:i},n);let s,o=this.timeout.getTimeoutSignal(n);n={...n,signal:o};try{this.metrics.operations?.increment({[i]:!0}),s=await(await this.components.connectionManager.openConnection(e,n)).newStream(this.protocol,n),await this._writeMessage(s,t,n),s.close(n).catch(c=>{this.log.error("error closing stream to %p",e,c),s?.abort(c)}),yield yn({from:e,messageType:i},n)}catch(a){this.metrics.errors?.increment({[i]:!0}),s?.abort(a),yield Fe({from:e,error:a},n)}finally{this.timeout.cleanUp(o)}}async _writeMessage(e,t,n){await k2(e).write(t,yt,n)}async _writeReadMessage(e,t,n){let i=k2(e);await i.write(t,yt,n);let s=await i.read(yt,n);return s.closer.forEach(o=>{this.safeDispatchEvent("peer",{detail:Fn(o)})}),s.providers.forEach(o=>{this.safeDispatchEvent("peer",{detail:Fn(o)})}),s}};function et(r,e){if(r.length!==e.length)throw new Error("Inputs should have the same length");let t=ge(r.length);for(let n=0;n<r.length;n++)t[n]=r[n]^e[n];return t}function en(r,e){if(r.byteLength!==e.byteLength)throw new Error("Inputs should have the same length");for(let t=0;t<r.byteLength;t++)if(r[t]!==e[t])return r[t]<e[t]?-1:1;return 0}var Yt=class{originDhtKey;capacity;peerDistances;constructor(e,t){this.originDhtKey=e,this.capacity=t,this.peerDistances=[]}get length(){return this.peerDistances.length}get peers(){return this.peerDistances.map(e=>e.peer)}async add(e){let t=await Oe(e.id);this.addWitKadId(e,t)}addWitKadId(e,t){if(this.peerDistances.find(i=>i.peer.id.equals(e.id))!=null)return;let n={peer:e,distance:et(this.originDhtKey,t)};this.peerDistances.push(n),this.peerDistances.sort((i,s)=>en(i.distance,s.distance)),this.peerDistances=this.peerDistances.slice(0,this.capacity)}async isCloser(e){if(this.length===0)return!0;let t=await Oe(e),n=et(t,this.originDhtKey),i=this.peerDistances[this.peerDistances.length-1].distance;return en(n,i)===-1}async anyCloser(e){return e.length===0?!1:Promise.any(e.map(async t=>this.isCloser(t)))}};var Hi=class{log;routingTable;network;validators;queryManager;peerStore;peerId;constructor(e,t){this.routingTable=t.routingTable,this.network=t.network,this.validators=t.validators,this.queryManager=t.queryManager,this.peerStore=e.peerStore,this.peerId=e.peerId,this.log=e.logger.forComponent(`${t.logPrefix}:peer-routing`)}async findPeerLocal(e){let t,n=await this.routingTable.find(e);if(n!=null){this.log("findPeerLocal found %p in routing table",e);try{t=await this.peerStore.get(n)}catch(i){if(i.name!=="NotFoundError")throw i}}if(t==null)try{t=await this.peerStore.get(e)}catch(i){if(i.name!=="NotFoundError")throw i}if(t!=null)return this.log("findPeerLocal found %p in peer store",e),{id:t.id,multiaddrs:t.addresses.map(i=>i.multiaddr)}}async*_getValueSingle(e,t,n={}){let i={type:O.GET_VALUE,key:t};yield*this.network.sendRequest(e,i,n)}async*getPublicKeyFromNode(e,t={}){let n=Ha(e);for await(let i of this._getValueSingle(e,n,t))if(yield i,i.name==="PEER_RESPONSE"&&i.record!=null){let s=mi(i.record.value),o=Ca(s);if(!o.equals(e))throw new ht("public key does not match id");if(o.publicKey==null)throw new ht("public key missing");yield wn({from:e,value:i.record.value},t)}throw new Ot(`Node not responding with its public key: ${e.toString()}`)}async*findPeer(e,t={}){if(this.log("findPeer %p",e),t.useCache!==!1){let i=await this.findPeerLocal(e);if(i!=null){this.log("found local"),yield u1({from:this.peerId,peer:i},t);return}}let n=!1;if(t.useNetwork!==!1){let i=this,s=async function*({peer:o,signal:a}){let c={type:O.FIND_NODE,key:e.toMultihash().bytes};for await(let l of i.network.sendRequest(o,c,{...t,signal:a}))if(yield l,l.name==="PEER_RESPONSE"){let u=l.closer.find(f=>f.id.equals(e));u!=null&&(yield u1({from:l.from,peer:u},t))}};for await(let o of this.queryManager.run(e.toMultihash().bytes,s,t))o.name==="FINAL_PEER"&&(n=!0),yield o}n||(yield Fe({from:this.peerId,error:new ze("Not found")},t))}async*getClosestPeers(e,t={}){this.log("getClosestPeers to %b",e);let n=await Qt(e),i=this.routingTable.closestPeers(n),s=this,o=new Yt(n,this.routingTable.kBucketSize);await Promise.all(i.map(async c=>{await o.add({id:c,multiaddrs:[]})}));let a=async function*({peer:c,signal:l}){s.log("closerPeersSingle %s from %p",D(e,"base32"),c);let u={type:O.FIND_NODE,key:e};yield*s.network.sendRequest(c,u,{...t,signal:l})};for await(let c of this.queryManager.run(e,a,t))c.name==="PEER_RESPONSE"&&await Promise.all(c.closer.map(async l=>{await o.add(l)})),yield c;this.log("found %d peers close to %b",o.length,e);for(let c of o.peers)yield u1({from:this.peerId,peer:c},t)}async*getValueOrPeers(e,t,n={}){for await(let i of this._getValueSingle(e,t,n)){if(i.name==="PEER_RESPONSE"&&i.record!=null)try{await this._verifyRecordOnline(i.record)}catch{let o="invalid record received, discarded";this.log(o),yield Fe({from:i.from,error:new Ot(o)},n);continue}yield i}}async _verifyRecordOnline(e){if(e.timeReceived==null)throw new a1("invalid record received");await Qr(this.validators,new ue(e.key,e.value,e.timeReceived))}async getCloserPeersOffline(e,t){let n=await Qt(e),i=this.routingTable.closestPeers(n),s=[];for(let o of i)if(!o.equals(t))try{let a=await this.peerStore.get(o);s.push({id:o,multiaddrs:a.addresses.map(({multiaddr:c})=>c)})}catch(a){if(a.name!=="NotFoundError")throw a}return s.length>0?this.log("getCloserPeersOffline found %d peer(s) closer to %b than %p",s.length,e,t):this.log("getCloserPeersOffline could not find peer closer to %b than %p with %d peers in the routing table",e,t,this.routingTable.size),s}};var qi=class{log;datastore;datastorePrefix;lock;constructor(e,t){this.log=e.logger.forComponent(`${t.logPrefix}:providers`),this.datastorePrefix=`/${t.datastorePrefix}/provider`,this.datastore=e.datastore,this.lock=t.lock}async addProvider(e,t){let n=await this.lock.readLock();try{this.log("%p provides %s",t,e),await this.writeProviderEntry(e,t)}finally{n()}}async removeProvider(e,t){let n=await this.lock.writeLock();try{let i=ki(this.datastorePrefix,e,t);this.log("%p no longer provides %s",t,e),await this.datastore.delete(i)}finally{n()}}async getProviders(e){let t=await this.lock.readLock();try{return this.log("get providers for %s",e),[...(await this.loadProviders(e)).keys()]}finally{t()}}async writeProviderEntry(e,t,n=new Date){let i=ki(this.datastorePrefix,e,t),s=qe(n.getTime());await this.datastore.put(i,s)}async loadProviders(e){let t=new mr;for await(let n of this.datastore.query({prefix:ki(this.datastorePrefix,e).toString()})){let{peerId:i}=Ii(n.key);t.set(i,Ti(n.value))}return t}};var T2=class extends Error{type;code;constructor(e,t){super(e??"The operation was aborted"),this.type="aborted",this.name="AbortError",this.code=t??"ABORT_ERR"}};async function Ki(r,e,t,n){let i=new T2(n?.errorMessage,n?.errorCode);return t?.aborted===!0?Promise.reject(i):new Promise((s,o)=>{function a(){t?.removeEventListener("abort",u),r.removeEventListener(e,c),n?.errorEvent!=null&&r.removeEventListener(n.errorEvent,l)}let c=f=>{try{if(n?.filter?.(f)===!1)return}catch(h){a(),o(h);return}a(),s(f)},l=f=>{a(),o(f.detail)},u=()=>{a(),o(i)};t?.addEventListener("abort",u),r.addEventListener(e,c),n?.errorEvent!=null&&r.addEventListener(n.errorEvent,l)})}var $i=class extends Error{static name="QueueFullError";constructor(e="The queue was full"){super(e),this.name="QueueFullError"}};var zi=class{deferred;signal;constructor(e){this.signal=e,this.deferred=se(),this.onAbort=this.onAbort.bind(this),this.signal?.addEventListener("abort",this.onAbort)}onAbort(){this.deferred.reject(this.signal?.reason??new ft)}cleanup(){this.signal?.removeEventListener("abort",this.onAbort)}};function L7(){return`${parseInt(String(Math.random()*1e9),10).toString()}${Date.now()}`}var Gi=class{id;fn;options;recipients;status;timeline;controller;constructor(e,t){this.id=L7(),this.status="queued",this.fn=e,this.options=t,this.recipients=[],this.timeline={created:Date.now()},this.controller=new AbortController,te(1/0,this.controller.signal),this.onAbort=this.onAbort.bind(this)}abort(e){this.controller.abort(e)}onAbort(){this.recipients.reduce((t,n)=>t&&n.signal?.aborted===!0,!0)&&(this.controller.abort(new ft),this.cleanup())}async join(e={}){let t=new zi(e.signal);return this.recipients.push(t),e.signal?.addEventListener("abort",this.onAbort),t.deferred.promise}async run(){this.status="running",this.timeline.started=Date.now();try{this.controller.signal.throwIfAborted();let e=await Jr(this.fn({...this.options??{},signal:this.controller.signal}),this.controller.signal);this.recipients.forEach(t=>{t.deferred.resolve(e)}),this.status="complete"}catch(e){this.recipients.forEach(t=>{t.deferred.reject(e)}),this.status="errored"}finally{this.timeline.finished=Date.now(),this.cleanup()}}cleanup(){this.recipients.forEach(e=>{e.cleanup(),e.signal?.removeEventListener("abort",this.onAbort)})}};var Xt=class extends Le{concurrency;maxSize;queue;pending;sort;constructor(e={}){super(),this.concurrency=e.concurrency??Number.POSITIVE_INFINITY,this.maxSize=e.maxSize??Number.POSITIVE_INFINITY,this.pending=0,e.metricName!=null&&e.metrics?.registerMetricGroup(e.metricName,{calculate:()=>({size:this.queue.length,running:this.pending,queued:this.queue.length-this.pending})}),this.sort=e.sort,this.queue=[]}tryToStartAnother(){if(this.size===0)return queueMicrotask(()=>{this.safeDispatchEvent("empty")}),this.running===0&&queueMicrotask(()=>{this.safeDispatchEvent("idle")}),!1;if(this.pending<this.concurrency){let e;for(let t of this.queue)if(t.status==="queued"){e=t;break}return e==null?!1:(this.safeDispatchEvent("active"),this.pending++,e.run().finally(()=>{for(let t=0;t<this.queue.length;t++)if(this.queue[t]===e){this.queue.splice(t,1);break}this.pending--,this.tryToStartAnother(),this.safeDispatchEvent("next")}),!0)}return!1}enqueue(e){this.queue.push(e),this.sort!=null&&this.queue.sort(this.sort)}async add(e,t){if(t?.signal?.throwIfAborted(),this.size===this.maxSize)throw new $i;let n=new Gi(e,t);return this.enqueue(n),this.safeDispatchEvent("add"),this.tryToStartAnother(),n.join(t).then(i=>(this.safeDispatchEvent("completed",{detail:i}),this.safeDispatchEvent("success",{detail:{job:n,result:i}}),i)).catch(i=>{if(n.status==="queued"){for(let s=0;s<this.queue.length;s++)if(this.queue[s]===n){this.queue.splice(s,1);break}}throw this.safeDispatchEvent("error",{detail:i}),this.safeDispatchEvent("failure",{detail:{job:n,error:i}}),i})}clear(){this.queue.splice(0,this.queue.length)}abort(){this.queue.forEach(e=>{e.abort(new ft)}),this.clear()}async onEmpty(e){this.size!==0&&await Ki(this,"empty",e?.signal)}async onSizeLessThan(e,t){this.size<e||await Ki(this,"next",t?.signal,{filter:()=>this.size<e})}async onIdle(e){this.pending===0&&this.size===0||await Ki(this,"idle",e?.signal)}get size(){return this.queue.length}get queued(){return this.queue.length-this.pending}get running(){return this.pending}async*toGenerator(e){e?.signal?.throwIfAborted();let t=Lr({objectMode:!0}),n=c=>{c!=null?this.abort():this.clear(),t.end(c)},i=c=>{c.detail!=null&&t.push(c.detail)},s=c=>{n(c.detail)},o=()=>{n()},a=()=>{n(new ft("Queue aborted"))};this.addEventListener("completed",i),this.addEventListener("error",s),this.addEventListener("idle",o),e?.signal?.addEventListener("abort",a);try{yield*t}finally{this.removeEventListener("completed",i),this.removeEventListener("error",s),this.removeEventListener("idle",o),e?.signal?.removeEventListener("abort",a),n()}}};async function*l4(r){let{key:e,startingPeer:t,ourPeerId:n,signal:i,query:s,alpha:o,pathIndex:a,numPaths:c,queryFuncTimeout:l,log:u,peersSeen:f,connectionManager:h}=r,p=new Xt({concurrency:o,sort:(d,x)=>en(d.options.distance,x.options.distance)}),y=await Qt(e);function w(d,x){if(d==null)return;f.add(d);let E=et(x,y);p.add(async()=>{let g=[i];l!=null&&g.push(AbortSignal.timeout(l));let A=Je(g);te(1/0,A);try{for await(let R of s({key:e,peer:d,signal:A,pathIndex:a,numPaths:c})){if(A.aborted)return;if(R.name==="PEER_RESPONSE")for(let T of R.closer){if(f.has(T.id)){u.trace("already seen %p in query",T.id);continue}if(n.equals(T.id)){u("not querying ourselves");continue}if(!await h.isDialable(T.multiaddrs)){u("not querying undialable peer");continue}let I=await Oe(T.id),k=et(I,y);if(en(k,E)!==-1){u.trace("skipping %p as they are not closer to %b than %p",T.id,e,d);continue}u.trace("querying closer peer %p",T.id),w(T.id,I)}p.safeDispatchEvent("completed",{detail:R})}}catch(R){if(!i.aborted)return Fe({from:d,error:R},r)}finally{A.clear()}},{distance:E}).catch(g=>{u.error(g)})}w(t,await Oe(t));try{for await(let d of p.toGenerator({signal:i}))d!=null&&(yield d)}catch(d){throw i.aborted?new o1("Query aborted"):d}}var ji=class{disjointPaths;alpha;shutDownController;running;logger;peerId;connectionManager;routingTable;initialQuerySelfHasRun;logPrefix;constructor(e,t){this.logPrefix=t.logPrefix,this.disjointPaths=t.disjointPaths??Yn,this.alpha=t.alpha??Er,this.initialQuerySelfHasRun=t.initialQuerySelfHasRun,this.routingTable=t.routingTable,this.logger=e.logger,this.peerId=e.peerId,this.connectionManager=e.connectionManager,this.shutDownController=new AbortController,te(1/0,this.shutDownController.signal),this.running=!1}isStarted(){return this.running}async start(){this.running||(this.running=!0,this.shutDownController=new AbortController,te(1/0,this.shutDownController.signal))}async stop(){this.running=!1,this.shutDownController.abort()}async*run(e,t,n={}){if(!this.running)throw new Error("QueryManager not started");if(n.signal==null){let c=AbortSignal.timeout(p0);te(1/0,c),n={...n,signal:c}}let i=new AbortController,s=Je([this.shutDownController.signal,i.signal,n.signal]);te(1/0,s,i.signal);let o=this.logger.forComponent(`${this.logPrefix}:query:`+D(e,"base58btc")),a=!1;try{n.isSelfQuery!==!0&&this.initialQuerySelfHasRun!=null&&(o("waiting for initial query-self query before continuing"),await Jr(this.initialQuerySelfHasRun.promise,s),this.initialQuerySelfHasRun=void 0),o("query:start");let c=await Qt(e),l=this.routingTable.closestPeers(c),u=l.slice(0,Math.min(this.disjointPaths,l.length));if(l.length===0){o.error("Running query with no peers");return}let f=new lt,h=u.map((p,y)=>l4({key:e,startingPeer:p,ourPeerId:this.peerId,signal:s,query:t,pathIndex:y,numPaths:u.length,alpha:this.alpha,queryFuncTimeout:n.queryFuncTimeout,log:o,peersSeen:f,onProgress:n.onProgress,connectionManager:this.connectionManager}));for await(let p of s1(...h)){if(p.name==="QUERY_ERROR"&&o.error("query error",p.error),p.name==="PEER_RESPONSE")for(let y of[...p.closer,...p.providers])await this.connectionManager.isDialable(y.multiaddrs)&&await this.routingTable.add(y.id);yield p}a=!0}catch(c){if(!(!this.running&&c.name==="QueryAbortedError"))throw c}finally{a||(o("query exited early"),i.abort()),s.clear(),o("query:done")}}};function _7(r){return r[Symbol.asyncIterator]!=null}function C7(r){if(_7(r))return(async()=>{let e=0;for await(let t of r)e++;return e})();{let e=0;for(let t of r)e++;return e}}var Wi=C7;function U7(r){return r[Symbol.asyncIterator]!=null}function D7(r,e){return U7(r)?async function*(){let t=0;if(!(e<1)){for await(let n of r)if(yield n,t++,t===e)return}}():function*(){let t=0;if(!(e<1)){for(let n of r)if(yield n,t++,t===e)return}}()}var u4=D7;var O7=r=>{let e=r.addEventListener||r.on||r.addListener,t=r.removeEventListener||r.off||r.removeListener;if(!e||!t)throw new TypeError("Emitter is not compatible");return{addListener:e.bind(r),removeListener:t.bind(r)}};function M7(r,e,t){let n,i=new Promise((s,o)=>{if(t={rejectionEvents:["error"],multiArgs:!1,resolveImmediately:!1,...t},!(t.count>=0&&(t.count===Number.POSITIVE_INFINITY||Number.isInteger(t.count))))throw new TypeError("The `count` option should be at least 0 or more");t.signal?.throwIfAborted();let a=[e].flat(),c=[],{addListener:l,removeListener:u}=O7(r),f=(...p)=>{let y=t.multiArgs?p:p[0];t.filter&&!t.filter(y)||(c.push(y),t.count===c.length&&(n(),s(c)))},h=p=>{n(),o(p)};n=()=>{for(let p of a)u(p,f);for(let p of t.rejectionEvents)u(p,h)};for(let p of a)l(p,f);for(let p of t.rejectionEvents)l(p,h);t.signal&&t.signal.addEventListener("abort",()=>{h(t.signal.reason)},{once:!0}),t.resolveImmediately&&s(c)});if(i.cancel=n,typeof t.timeout=="number"){let s=er(i,{milliseconds:t.timeout});return s.cancel=n,s}return i}function f4(r,e,t){typeof t=="function"&&(t={filter:t}),t={...t,count:1,resolveImmediately:!1};let n=M7(r,e,t),i=n.then(s=>s[0]);return i.cancel=n.cancel,i}var Qi=class{log;peerId;peerRouting;routingTable;count;interval;initialInterval;queryTimeout;running;timeoutId;controller;initialQuerySelfHasRun;querySelfPromise;constructor(e,t){this.peerId=e.peerId,this.log=e.logger.forComponent(`${t.logPrefix}:query-self`),this.running=!1,this.peerRouting=t.peerRouting,this.routingTable=t.routingTable,this.count=t.count??Yn,this.interval=t.interval??l0,this.initialInterval=t.initialInterval??u0,this.queryTimeout=t.queryTimeout??f0,this.initialQuerySelfHasRun=t.initialQuerySelfHasRun,this.querySelf=Ri(this.querySelf.bind(this),t.operationMetrics,"SELF_QUERY")}isStarted(){return this.running}start(){this.running||(this.running=!0,clearTimeout(this.timeoutId),this.timeoutId=setTimeout(()=>{this.querySelf().catch(e=>{this.log.error("error running self-query",e)})},this.initialInterval))}stop(){this.running=!1,this.timeoutId!=null&&clearTimeout(this.timeoutId),this.controller!=null&&this.controller.abort()}async querySelf(){if(!this.running){this.log("skip self-query because we are not started");return}if(this.querySelfPromise!=null)return this.log("joining existing self query"),this.querySelfPromise.promise;if(this.querySelfPromise=se(),this.running){this.controller=new AbortController;let e=[this.controller.signal];if(this.initialQuerySelfHasRun==null){let n=AbortSignal.timeout(this.queryTimeout);te(1/0,n),e.push(n)}let t=Je(e);te(1/0,t,this.controller.signal);try{this.routingTable.size===0&&(this.log("routing table was empty, waiting for some peers before running query"),await f4(this.routingTable,"peer:add",{signal:t,filter:s=>!this.peerId.equals(s.detail)}),this.log("routing table has peers, continuing with query")),this.log("run self-query, look for %d peers timing out after %dms",this.count,this.queryTimeout);let n=Date.now(),i=await Dt(this.peerRouting.getClosestPeers(this.peerId.toMultihash().bytes,{signal:t,isSelfQuery:!0}),s=>u4(s,this.count),async s=>Wi(s));this.log("self-query found %d peers in %dms",i,Date.now()-n)}catch(n){this.log.error("self-query error",n)}finally{t.clear(),this.initialQuerySelfHasRun!=null&&(this.initialQuerySelfHasRun.resolve(),this.initialQuerySelfHasRun=void 0)}}this.querySelfPromise.resolve(),this.querySelfPromise=void 0,this.running&&(this.timeoutId=setTimeout(()=>{this.querySelf().catch(e=>{this.log.error("error running self-query",e)})},this.interval))}};var Zi=class extends Le{log;reprovideQueue;maxQueueSize;datastore;timeout;reprovideTimeout;running;shutdownController;reprovideThreshold;contentRouting;datastorePrefix;addressManager;validity;interval;lock;peerId;constructor(e,t){super(),this.log=e.logger.forComponent(`${t.logPrefix}:reprovider`),this.peerId=e.peerId,this.reprovideQueue=new Xt({concurrency:t.concurrency??o0,metrics:e.metrics,metricName:`${t.metricsPrefix}_reprovide_queue`}),this.reprovideTimeout=new Nt({...t.timeout??{},metrics:e.metrics,metricName:`${t.metricsPrefix}_reprovide_timeout_milliseconds`}),this.datastore=e.datastore,this.addressManager=e.addressManager,this.datastorePrefix=`/${t.datastorePrefix}/provider`,this.reprovideThreshold=t.threshold??s0,this.maxQueueSize=t.maxQueueSize??a0,this.validity=t.validity??i0,this.interval=t.interval??c0,this.contentRouting=t.contentRouting,this.lock=t.lock,this.running=!1,this.reprovide=Ri(this.reprovide.bind(this),t.operationMetrics,"PROVIDE")}start(){this.running||(this.running=!0,this.shutdownController=new AbortController,te(1/0,this.shutdownController.signal),this.timeout=setTimeout(()=>{this.cleanUp().catch(e=>{this.log.error("error running reprovide/cleanup - %e",e)})},this.interval))}stop(){this.running=!1,this.reprovideQueue.clear(),clearTimeout(this.timeout),this.shutdownController?.abort()}async cleanUp(){let e=await this.lock.writeLock();try{this.safeDispatchEvent("reprovide:start");for await(let t of this.datastore.query({prefix:this.datastorePrefix}))try{let{cid:n,peerId:i}=Ii(t.key),s=Ti(t.value).getTime(),o=s+this.validity,a=Date.now(),c=a>o;this.log.trace("comparing: %d < %d = %s %s",s,a-this.validity,c,c?"(expired)":""),c&&await this.datastore.delete(t.key),this.peerId.equals(i)&&a-o<this.reprovideThreshold&&this.queueReprovide(n).catch(l=>{this.log.error("could not reprovide %c - %e",n,l)})}catch(n){this.log.error("error processing datastore key %s - %e",t.key,n.message)}this.log("reprovide/cleanup successful")}finally{e(),this.safeDispatchEvent("reprovide:end"),this.running&&(this.timeout=setTimeout(()=>{this.cleanUp().catch(t=>{this.log.error("error running re-provide - %e",t)})},this.interval))}}async queueReprovide(e){if(!this.running)return;this.log.trace("waiting for queue capacity before adding %c to re-provide queue",e),await this.reprovideQueue.onSizeLessThan(this.maxQueueSize);let t=this.reprovideQueue.queue.find(n=>n.options.cid.equals(e));if(t!=null)return this.log.trace("not adding %c to re-provide queue - already in queue",e),t.join();this.log.trace("adding %c to re-provide queue",e),this.reprovideQueue.add(async n=>{if(n.signal?.throwIfAborted(),!this.running)return;this.log.trace("re-providing %c",e);let i=this.reprovideTimeout.getTimeoutSignal(n);try{await this.reprovide(n.cid,n)}finally{this.reprovideTimeout.cleanUp(i)}this.log.trace("re-provided %c",e)},{signal:this.shutdownController?.signal,cid:e}).catch(n=>{this.log.error("could not re-provide key %c - %e",e,n)})}async reprovide(e,t){await sn(this.contentRouting.provide(e,this.addressManager.getAddresses(),t))}};var Hn=class extends Xt{has(e){return this.find(e)!=null}find(e){return this.queue.find(t=>e.equals(t.options.peerId))}};var V7=20,F7=5e3,H7="kad-close",q7=50,Yi=class{routingTable;components;closestPeers;newPeers;refreshInterval;peerSetSize;timeout;closeTagName;closeTagValue;log;running;constructor(e,t){this.components=e,this.log=e.logger.forComponent(`${t.logPrefix}:routing-table`),this.routingTable=t.routingTable,this.refreshInterval=t.refreshInterval??F7,this.peerSetSize=t.peerSetSize??V7,this.closeTagName=t.closeTagName??H7,this.closeTagValue=t.closeTagValue??q7,this.closestPeers=new lt,this.onPeerPing=this.onPeerPing.bind(this),this.running=!1}async start(){if(this.running)return;this.running=!0;let e=await Oe(this.components.peerId);this.newPeers=new Yt(e,this.peerSetSize),this.routingTable.addEventListener("peer:ping",this.onPeerPing),this.timeout=setInterval(()=>{this.updatePeerTags().catch(t=>{this.log.error("error updating peer tags - %e",t)})},this.refreshInterval)}stop(){this.running=!1,this.routingTable.removeEventListener("peer:ping",this.onPeerPing),clearTimeout(this.timeout)}onPeerPing(e){this.newPeers?.add({id:e.detail,multiaddrs:[]}).catch(t=>{this.log.error("error adding peer to distance list - %e",t)})}async updatePeerTags(){let e=new lt(this.newPeers?.peers.map(i=>i.id)),t=e.difference(this.closestPeers),n=this.closestPeers.difference(e);this.closestPeers=e,await Promise.all([...[...t].map(async i=>{await this.components.peerStore.merge(i,{tags:{[this.closeTagName]:{value:this.closeTagValue},[Us]:{value:1}}})}),...[...n].map(async i=>{await this.components.peerStore.merge(i,{tags:{[this.closeTagName]:void 0,[Us]:void 0}})})])}};function qn(r){return Array.isArray(r?.peers)}var Xi=class{root;localPeer;prefixLength;splitThreshold;kBucketSize;numberOfNodesToPing;lastPingThreshold;ping;verify;onAdd;onRemove;onMove;addingPeerMap;constructor(e){this.prefixLength=e.prefixLength??h4,this.kBucketSize=e.kBucketSize??R2,this.splitThreshold=e.splitThreshold??this.kBucketSize,this.numberOfNodesToPing=e.numberOfOldContactsToPing??d4,this.lastPingThreshold=e.lastPingThreshold??p4,this.ping=e.ping,this.verify=e.verify,this.onAdd=e.onAdd,this.onRemove=e.onRemove,this.addingPeerMap=new mr,this.root={prefix:"",depth:0,peers:[]}}async addSelfPeer(e){this.localPeer={peerId:e,kadId:await Oe(e),lastPing:Date.now()}}async add(e,t){let n={peerId:e,kadId:await Oe(e),lastPing:0},i=this.addingPeerMap.get(e);if(i!=null)return i;try{let s=this._add(n,t);this.addingPeerMap.set(e,s),await s}finally{this.addingPeerMap.delete(e)}}async _add(e,t){let n=this._determineBucket(e.kadId);if(this._indexOf(n,e.kadId)>-1)return;if(n.peers.length===this.splitThreshold&&n.depth<this.prefixLength){await this._split(n),await this._add(e,t);return}if(n.peers.length<this.kBucketSize){if(!$7(e,this.lastPingThreshold)){n.peers.push(e),await this.onAdd?.(e,n);return}await this.verify(e,t)&&(e.lastPing=Date.now(),await this._add(e,t));return}let i=n.peers.filter(o=>!(o.peerId.equals(this.localPeer?.peerId)||o.lastPing>Date.now()-this.lastPingThreshold)).sort((o,a)=>o.lastPing<a.lastPing?-1:o.lastPing>a.lastPing?1:0).slice(0,this.numberOfNodesToPing),s=!1;for await(let o of this.ping(i,t))s=!0,await this.remove(o.kadId);s&&await this._add(e,t)}*closest(e,t=this.kBucketSize){let n=new Yt(e,t);for(let i of this.toIterable())n.addWitKadId({id:i.peerId,multiaddrs:[]},i.kadId);yield*Pr(n.peers,i=>i.id)}count(){function e(t){if(qn(t))return t.peers.length;let n=0;return t.left!=null&&(n+=e(t.left)),t.right!=null&&(n+=e(t.right)),n}return e(this.root)}get(e){let t=this._determineBucket(e),n=this._indexOf(t,e);return t.peers[n]}async remove(e){let t=this._determineBucket(e),n=this._indexOf(t,e);if(n>-1){let i=t.peers.splice(n,1)[0];await this.onRemove?.(i,t)}}*toIterable(){function*e(t){if(qn(t)){yield*t.peers;return}yield*e(t.left),yield*e(t.right)}yield*e(this.root)}distance(e,t){return BigInt("0x"+D(et(e,t),"base16"))}_determineBucket(e){let t=D(e,"base2");function n(i,s=0){return qn(i)?i:t[s]==="0"?n(i.left,s+1):n(i.right,s+1)}return n(this.root)}_indexOf(e,t){return e.peers.findIndex(n=>X(n.kadId,t))}async _split(e){let t={prefix:"0",depth:e.depth+1,peers:[]},n={prefix:"1",depth:e.depth+1,peers:[]};for(let i of e.peers)D(i.kadId,"base2")[e.depth]==="0"?(t.peers.push(i),await this.onMove?.(i,e,t)):(n.peers.push(i),await this.onMove?.(i,e,n));K7(e,t,n)}};function K7(r,e,t){return delete r.peers,r.left=e,r.right=t,r.prefix===""&&(delete r.depth,delete r.prefix),!0}function $7(r,e){return r.lastPing<Date.now()-e}var R2=20,h4=8;var z7=20,G7=100,d4=3;var j7=20,W7=100,g4="kad-peer",Q7=1,p4=6e5,Z7=!0,Y7=1e3,Ji=class extends Le{kBucketSize;kb;network;closestPeerTagger;log;components;running;pingNewContactTimeout;pingNewContactQueue;pingOldContactTimeout;pingOldContactQueue;populateFromDatastoreOnStart;populateFromDatastoreLimit;protocol;peerTagName;peerTagValue;metrics;constructor(e,t){super(),this.components=e,this.log=e.logger.forComponent(`${t.logPrefix}:routing-table`),this.kBucketSize=t.kBucketSize??R2,this.running=!1,this.protocol=t.protocol,this.network=t.network,this.peerTagName=t.peerTagName??g4,this.peerTagValue=t.peerTagValue??Q7,this.pingOldContacts=this.pingOldContacts.bind(this),this.verifyNewContact=this.verifyNewContact.bind(this),this.peerAdded=this.peerAdded.bind(this),this.peerRemoved=this.peerRemoved.bind(this),this.populateFromDatastoreOnStart=t.populateFromDatastoreOnStart??Z7,this.populateFromDatastoreLimit=t.populateFromDatastoreLimit??Y7,this.pingOldContactQueue=new Hn({concurrency:t.pingOldContactConcurrency??j7,metricName:`${t.metricsPrefix}_ping_old_contact_queue`,metrics:this.components.metrics,maxSize:t.pingOldContactMaxQueueSize??W7}),this.pingOldContactTimeout=new Nt({...t.pingOldContactTimeout??{},metrics:this.components.metrics,metricName:`${t.metricsPrefix}_routing_table_ping_old_contact_time_milliseconds`}),this.pingNewContactQueue=new Hn({concurrency:t.pingNewContactConcurrency??z7,metricName:`${t.metricsPrefix}_ping_new_contact_queue`,metrics:this.components.metrics,maxSize:t.pingNewContactMaxQueueSize??G7}),this.pingNewContactTimeout=new Nt({...t.pingNewContactTimeout??{},metrics:this.components.metrics,metricName:`${t.metricsPrefix}_routing_table_ping_new_contact_time_milliseconds`}),this.kb=new Xi({kBucketSize:t.kBucketSize,prefixLength:t.prefixLength,splitThreshold:t.splitThreshold,numberOfOldContactsToPing:t.numberOfOldContactsToPing,lastPingThreshold:t.lastPingThreshold,ping:this.pingOldContacts,verify:this.verifyNewContact,onAdd:this.peerAdded,onRemove:this.peerRemoved}),this.closestPeerTagger=new Yi(this.components,{logPrefix:t.logPrefix,routingTable:this,peerSetSize:t.closestPeerSetSize,refreshInterval:t.closestPeerSetRefreshInterval,closeTagName:t.closeTagName,closeTagValue:t.closeTagValue}),this.components.metrics!=null&&(this.metrics={routingTableSize:this.components.metrics.registerMetric(`${t.metricsPrefix}_routing_table_size`),routingTableKadBucketTotal:this.components.metrics.registerMetric(`${t.metricsPrefix}_routing_table_kad_bucket_total`),routingTableKadBucketAverageOccupancy:this.components.metrics.registerMetric(`${t.metricsPrefix}_routing_table_kad_bucket_average_occupancy`),routingTableKadBucketMinOccupancy:this.components.metrics.registerMetric(`${t.metricsPrefix}_routing_table_kad_bucket_min_occupancy`),routingTableKadBucketMaxOccupancy:this.components.metrics.registerMetric(`${t.metricsPrefix}_routing_table_kad_bucket_max_occupancy`),routingTableKadBucketMaxDepth:this.components.metrics.registerMetric(`${t.metricsPrefix}_routing_table_kad_bucket_max_depth`),kadBucketEvents:this.components.metrics.registerCounterGroup(`${t.metricsPrefix}_kad_bucket_events_total`)})}isStarted(){return this.running}async start(){this.running||(this.running=!0,await nn(this.closestPeerTagger),await this.kb.addSelfPeer(this.components.peerId))}async afterStart(){Promise.resolve().then(async()=>{if(!this.populateFromDatastoreOnStart)return;let e=0;for(let t of await this.components.peerStore.all({filters:[n=>n.protocols.includes(this.protocol)&&n.tags.has(g4)],limit:this.populateFromDatastoreLimit})){if(!this.running)return;try{await this.add(t.id),e++}catch{this.log("failed to add peer %p to routing table, removing kad-dht peer tags - %e"),await this.components.peerStore.merge(t.id,{tags:{[this.peerTagName]:void 0}})}}this.log("added %d peer store peers to the routing table",e)}).catch(e=>{this.log.error("error adding peer store peers to the routing table %e",e)})}async stop(){this.running=!1,await Wn(this.closestPeerTagger),this.pingOldContactQueue.abort(),this.pingNewContactQueue.abort()}async peerAdded(e,t){this.components.peerId.equals(e.peerId)||await this.components.peerStore.merge(e.peerId,{tags:{[this.peerTagName]:{value:this.peerTagValue}}}),this.updateMetrics(),this.metrics?.kadBucketEvents.increment({peer_added:!0}),this.safeDispatchEvent("peer:add",{detail:e.peerId})}async peerRemoved(e,t){this.components.peerId.equals(e.peerId)||await this.components.peerStore.merge(e.peerId,{tags:{[this.peerTagName]:void 0}}),this.updateMetrics(),this.metrics?.kadBucketEvents.increment({peer_removed:!0}),this.safeDispatchEvent("peer:remove",{detail:e.peerId})}async*pingOldContacts(e,t){if(!this.running)return;let n=[];for(let i of e){if(this.kb.get(i.kadId)==null){this.log("asked to ping contact %p that was not in routing table",i.peerId);continue}this.metrics?.kadBucketEvents.increment({ping_old_contact:!0}),n.push(async()=>{let s=this.pingOldContactQueue.find(i.peerId);if(s!=null)return this.log("asked to ping contact %p was already being pinged",i.peerId),await s.join(t)?void 0:i;if(!await this.pingOldContactQueue.add(async a=>{let c=this.pingOldContactTimeout.getTimeoutSignal(),l=Je([c,a?.signal]);te(1/0,c,l);try{return await this.pingContact(i,a)}catch{return this.metrics?.kadBucketEvents.increment({ping_old_contact_error:!0}),!0}finally{this.pingOldContactTimeout.cleanUp(c),l.clear()}},{peerId:i.peerId,signal:t?.signal}))return i})}for await(let i of sr(n))i!=null&&(yield i)}async verifyNewContact(e,t){let n=this.pingNewContactTimeout.getTimeoutSignal(),i=Je([n,t?.signal]);te(1/0,n,i);try{let s=this.pingNewContactQueue.find(e.peerId);return s!=null?(this.log("joining existing ping to add new peer %p to routing table",e.peerId),await s.join({signal:i})):await this.pingNewContactQueue.add(async o=>(this.metrics?.kadBucketEvents.increment({ping_new_contact:!0}),this.log("pinging new peer %p before adding to routing table",e.peerId),this.pingContact(e,o)),{peerId:e.peerId,signal:i})}catch{return this.log.trace("tried to add peer %p but they were not online",e.peerId),this.metrics?.kadBucketEvents.increment({ping_new_contact_error:!0}),!1}finally{this.pingNewContactTimeout.cleanUp(n),i.clear()}}async pingContact(e,t){let n;try{this.log("pinging contact %p",e.peerId);for await(let i of this.network.sendRequest(e.peerId,{type:O.PING},t))if(i.type===Kn.PEER_RESPONSE)return i.messageType===O.PING?(this.log("contact %p ping ok",e.peerId),this.safeDispatchEvent("peer:ping",{detail:e.peerId}),!0):!1;return!1}catch(i){return this.log("error pinging old contact %p - %e",e.peerId,i),n?.abort(i),!1}}get size(){return this.kb==null?0:this.kb.count()}async find(e){let t=await Oe(e);return this.kb.get(t)?.peerId}closestPeer(e){let t=this.closestPeers(e,1);if(t.length>0)return t[0]}closestPeers(e,t=this.kBucketSize){return this.kb==null?[]:[...this.kb.closest(e,t)]}async add(e,t){if(this.kb==null)throw new Error("RoutingTable is not started");await this.kb.add(e,t)}async remove(e){if(this.kb==null)throw new Error("RoutingTable is not started");let t=await Oe(e);await this.kb.remove(t)}updateMetrics(){if(this.metrics==null||this.kb==null)return;let e=0,t=0,n=0,i=20,s=0;function o(a){if(qn(a)){a.depth>n&&(n=a.depth),t++,e+=a.peers.length,a.peers.length<i&&(i=a.peers.length),a.peers.length>s&&(s=a.peers.length);return}o(a.left),o(a.right)}o(this.kb.root),this.metrics.routingTableSize.update(e),this.metrics.routingTableKadBucketTotal.update(t),this.metrics.routingTableKadBucketAverageOccupancy.update(Math.round(e/t)),this.metrics.routingTableKadBucketMinOccupancy.update(i),this.metrics.routingTableKadBucketMaxOccupancy.update(s),this.metrics.routingTableKadBucketMaxDepth.update(n)}};var m4=[77591,22417,43971,28421,740,29829,71467,228973,196661,78537,27689,36431,44415,14362,19456,106025,96308,2882,49509,21149,87173,131409,75844,23676,121838,30291,17492,2953,7564,110620,129477,127283,53113,72417,165166,109690,21200,102125,24049,71504,90342,25307,72039,26812,26715,32264,133800,71161,88956,171987,51779,24425,16671,30251,186294,247761,14202,2121,8465,35024,4876,85917,169730,3638,256836,96184,943,18678,6583,52907,35807,112254,214097,18796,11595,9243,23554,887,268203,382004,24590,111335,11625,16619,29039,102425,69006,97976,92362,32552,63717,41433,128974,137630,59943,10019,13986,35430,33665,108037,43799,43280,38195,29078,58629,18265,14425,46832,235538,40830,77881,110717,58937,3463,325358,51300,47623,117252,19007,10170,20540,91237,294813,4951,79841,56232,36270,128547,69209,66275,100156,32063,73531,34439,80937,28892,44466,88595,216307,32583,49620,16605,82127,45807,21630,78726,20235,40163,111007,96926,5567,72083,21665,58844,39419,179767,48328,42662,51550,5251,37811,49608,81056,50854,55513,20922,18891,197409,164656,32593,71449,220474,58919,85682,67854,13758,35066,3565,61905,214793,119572,141419,21504,10302,27354,67003,46131,32668,15165,64871,34450,17821,2757,11452,34189,5160,12257,85523,560,53385,65887,119549,135620,312353,115979,122356,10867,193231,124537,54783,90675,120791,4715,142253,50943,17271,43358,25331,4917,120566,34580,12878,33786,160528,32523,4869,301307,104817,81491,23276,8832,97911,31265,52065,7998,49622,9715,43998,34091,84587,20664,69041,29419,53205,10838,58288,116145,6185,5154,141795,35924,21307,144738,43730,12085,8279,10002,119,133779,199668,72938,31768,39176,67875,38453,9700,44144,4121,116048,41733,12868,82669,92308,128,34262,11332,7712,90764,36141,13553,71312,77470,117314,96549,49135,23602,54468,28605,6327,62308,17171,67531,21319,14105,894,107722,46157,8503,51069,100472,45138,15246,14577,35609,191464,1757,13364,161349,32067,91705,81144,52339,5408,91066,21983,14157,100545,4372,26630,129112,1423,29676,213626,4397,88436,99190,6877,49958,26122,114348,60661,29818,293118,50042,179738,16400,163423,89627,31040,43973,36638,45952,5153,1894,109322,1898,134021,12402,112077,68309,190269,69866,31938,107383,11522,105232,11248,14868,39852,71707,186525,16530,38162,106212,11700,5130,16608,26998,59586,108399,230033,43683,48135,82179,2073,5015,196684,189293,16378,23452,8301,35640,11632,214551,29240,57644,33137,91949,55157,52384,117313,5090,17717,89668,49363,82238,241035,66216,29066,184088,97206,62820,26595,4241,135635,173672,8202,459,71355,146294,29587,3008,135385,141203,14803,6634,45094,69362,50925,546,51884,62011,83296,234584,44515,56050,89476,87751,19373,12691,149923,19794,13833,35846,87557,58339,2884,19145,25647,12224,11024,77338,64608,122297,53025,7205,36189,36294,170779,21750,7739,173883,75192,35664,224240,113121,30181,26267,27036,117827,92015,106516,55628,203549,67949,60462,60844,35911,20457,1820,920,19773,8738,73173,181993,38521,98254,76257,46008,92796,5384,26868,151566,22124,2411,15919,186872,180021,28099,152961,78811,80237,62352,102653,74259,184890,16792,123702,224945,29940,19512,75283,14059,112691,92811,233329,20411,138569,53341,109802,50600,134528,66747,5529,166531,31578,64732,67189,1596,126357,967,167999,206598,109752,119431,207825,78791,91938,10301,27311,24233,252343,28831,32812,66002,112267,90895,8786,8095,16824,22866,21813,60507,174833,19549,130985,117051,52110,6938,81923,123864,38061,919,18680,53534,46739,112893,161529,85429,26761,11900,81121,91968,15390,217947,56524,1713,6654,37089,85630,138866,61850,16491,75577,16884,98296,73523,6140,44645,6062,36366,29844,57946,37932,42472,5266,20834,19309,33753,127182,134259,35810,41805,45878,312001,14881,47757,49251,120050,44252,3708,25856,107864,120347,1228,36550,41682,34496,47025,8393,173365,246526,12894,161607,35670,90785,126572,2095,124731,157033,58694,554,12786,9642,4817,16136,47864,174698,66992,4639,69284,10625,40710,27763,51738,30404,264105,137904,109882,52487,42824,57514,2740,10479,146799,107390,16586,88038,174951,9410,16185,44158,5568,40658,46108,12763,97385,26175,108859,664,230732,67470,46663,14395,50750,141320,93140,15361,47997,55784,6791,307840,118569,107326,18056,58281,260415,54691,8790,73332,45633,7511,45674,143373,14031,11799,94491,35646,96544,14560,26049,32983,25791,83814,42094,231370,63955,139212,2359,169908,3108,183486,105867,28197,32941,124968,26402,88267,149768,23053,3078,19091,52924,25383,19209,111548,97361,3959,24880,235061,9099,24921,161254,151405,20508,7159,34381,20133,11434,74036,19974,34769,36585,1076,22454,17354,38727,235160,111547,96454,117448,156940,91330,37299,7310,26915,117060,51369,22620,61861,322264,106850,111694,15091,2624,40345,300446,177064,1707,27389,54792,327783,132669,183543,59003,17744,20603,151134,106923,53084,71803,279424,319816,11579,21946,16728,38274,72711,5085,83391,88646,40159,25027,34680,10752,12988,54126,30365,18338,100445,230674,44874,84974,143877,123253,139372,28082,91477,144002,13096,219729,46016,50029,42377,14601,6660,58244,58978,23918,88206,113611,64452,17541,41032,10942,12021,49189,10978,40175,37156,10947,71709,106894,112538,57007,137486,150608,152719,40615,7746,279716,13101,19524,28708,40578,72320,1096,182051,94527,51275,22833,45164,81917,77519,48508,5421,140302,37845,149830,5587,27579,5357,428725,248187,6326,206760,39814,32585,89923,44341,288753,284443,96368,31201,94189,119504,20359,52073,103216,179,27934,32801,96035,34111,34309,101326,18198,20704,210266,37643,27880,141873,106e3,19414,56614,167714,66483,107885,86602,4379,20796,75467,4987,5017,118857,26003,34308,114428,29198,6686,29697,73632,3739,69795,16798,41504,7207,30722,21436,36735,28067,28545,3239,11221,36031,41889,100010,19247,317673,29495,174554,6424,129725,53845,94986,7955,59676,2604,191497,19735,102214,62954,23844,11872,179525,261436,34492,428,78404,142035,16747,17246,27578,37021,33672,57944,26056,135760,2369,61674,122066,31327,19374,157065,40553,130982,69619,71290,38855,72100,92903,95940,51422,165999,65713,57873,50726,7288,20272,2081,42326,22624,81120,57914,79352,19447,1684,72302,11774,302559,161481,96396,13692,414988,3721,79066,56627,46883,21150,11747,12184,5856,113458,176117,84416,52079,27933,3354,59765,141359,2212,216309,2555,23458,196722,142463,45701,44548,28798,19418,215,29916,9396,10574,114226,84475,13520,18694,34056,4524,90302,62930,13539,19407,77209,7728,38088,9535,2263,23875,183945,17750,26274,67172,10585,28042,22199,7478,51331,66030,26774,192929,31434,25850,50197,52926,178158,4679,181256,70184,229600,9959,105594,72158,73974,2726,35085,78087,23284,35568,51713,155676,5401,27254,11966,17569,223253,71993,103357,111477,55722,30504,26034,46774,35392,36285,214814,41143,163465,1051,16094,81044,6636,76489,179102,20712,39178,35683,125177,54219,30617,52994,25324,50123,2543,87529,58995,10688,125199,12388,60158,125481,131646,7642,133350,65874,3438,97277,101450,10075,56344,116821,50778,60547,98016,106135,13859,14255,16300,77373,173521,8285,45932,37426,4054,114295,55947,7703,39114,52,51119,128135,19714,60715,9554,50492,88180,2823,118271,52993,122625,97919,23859,37895,25040,33614,32102,20431,3577,9275,15686,43031,157741,110358,1884,40291,125391,13736,5008,64881,87336,77381,70711,43032,49155,118587,70494,4318,10168,30126,12580,10524,280104,104001,145413,2862,84140,6603,106005,13566,12780,11251,42830,571,179910,82443,13146,469,42714,32591,265217,424024,92553,54721,134100,6007,15242,114681,59030,16718,85465,200214,85982,55174,165013,23493,56964,82529,109150,32706,27568,82442,5350,14976,13165,44890,60021,21343,33978,17264,4655,22328,27819,75730,16567,55483,14510,17926,45827,150609,3704,7385,272531,161543,76904,122163,52405,2039,19165,41623,14423,228354,3369,176360,85491,7122,35789,303724,4465,13628,2233,55311,118771,20713,10006,221519,45115,71021,35650,29775,7337,10864,20665,21142,1746,15080,1624,32449,10905,105743,229797,7701,3940,22997,178467,57208,389057,39683,59403,63344,63125,54847,69691,18336,56448,3362,37202,18282,29648,138224,35867,10495,5911,28814,26653,31514,176702,26550,45621,11734,4525,40543,73944,121080,27858,155561,14887,44670,30742,8796,107455,113472,56369,75581,183777,240095,133699,153299,8768,160464,26058,49078,103971,21875,71486,44888,17156,9678,89541,123019,102337,3972,83930,21245,87852,109660,287918,183019,686,10100,39177,283941,11274,24736,26793,26214,25995,77011,141580,4070,23742,46285,46632,30700,26669,19056,35951,115575,174034,56097,35463,87425,24575,44245,38701,82317,85922,281616,100333,147697,61503,7730,84330,8530,59917,61597,17173,9092,32658,90288,193136,39023,20381,56654,31132,7779,1919,1375,117128,30819,11169,40938,23935,115201,101155,151034,4835,11231,74550,89388,59951,91704,107312,167882,115062,12732,72738,88703,464019,158267,57995,60496,737,14371,123867,4174,243339,159946,7568,16025,134556,110916,38103,191,80226,88794,29688,27230,10454,76308,57647,77409,113483,66864,14745,19808,12023,46583,84805,16015,17102,2231,20611,3547,95740,250131,34559,108894,8498,15853,159169,148920,20942,2813,93160,45188,210613,45531,52587,149062,39782,28194,57849,60965,84954,89766,84453,100927,16501,27658,165311,103841,54192,207341,19558,20084,319622,5672,205467,98462,61849,36279,13609,147177,24726,165015,209489,59591,31157,6551,117580,75060,141146,277310,21072,22023,106474,63041,137443,122965,68371,5383,42146,98961,113467,30863,23794,4843,99630,30392,82679,13699,241612,33601,93146,24319,18643,32155,95669,40440,15333,34089,67799,142144,58245,38633,114531,117400,77861,188726,5507,2568,8853,10987,107222,2663,2421,11530,13345,30075,41785,118661,104786,17459,12490,16281,71936,193555,17431,5944,71758,26485,77317,20803,367167,158,7362,93430,11735,172445,46002,11532,54482,930,62911,2235,23004,179236,4764,101859,208113,22477,55163,95579,14098,67320,162556,90709,156949,3826,57492,4025,34092,87442,104565,6718,186015,28214,14209,10039,107186,233912,58877,81637,55265,39828,6194,145813,50831,105849,4974,88319,122296,10272,197216,95714,51540,72418,23324,91555,8743,140452,250249,51666,34124,7229,38592,129641,78169,174242,22464,149964,51450,14034,10026,95376,26190,120062,14401,8700,265,31386,143573,7203,229889,61567,4227,140981,2466,72052,10787,10062,30958,6099,38471,30103,23202,208101,70847,467,58934,32271,32984,36637,24107,30771,17109,73353,13650,2098,157040,67366,66904,106018,265380,107238,18535,44025,32681,144983,62505,91295,56120,3082,77508,10322,63023,36700,81885,224127,16721,45023,239261,111272,13852,7866,149243,204199,32309,22084,42029,38316,126644,104973,14406,43454,67322,61310,15789,40285,24026,181047,6301,70927,23319,115823,27248,66693,115875,278566,63007,146844,56841,59007,87368,180001,22370,42114,80605,12022,10374,308,25079,14689,12618,63368,7936,264973,212291,136713,95999,105801,18965,32075,48700,52230,35119,96912,32992,8586,16606,101333,101812,14969,39930,759,193090,27387,42914,12937,5058,62646,64528,38624,25743,37502,3716,4435,30352,178687,26461,132611,42002,138442,35833,59582,16345,8048,60319,49349,309,47800,49739,90482,26405,34470,63786,32479,85028,39866,47846,11649,23934,29466,2816,42864,31828,7410,74885,49632,47629,111801,90749,19536,18767,105764,59606,21223,10746,76298,22220,39408,7190,79654,64856,11602,82156,272765,17079,70089,245473,51813,184407,384678,1576,122249,5064,27481,6188,25790,74361,27541,318284,45430,31488,620,93579,45723,192118,22670,51913,4162,70244,35966,26397,16199,50899,209613,121702,287507,2993,36101,132229,67345,33062,76295,118628,78705,52316,34375,107083,107454,44863,127561,33964,3073,154010,190914,55967,39074,6272,31047,5550,41123,26154,98638,47110,19998,148091,50229,31329,59900,195442,19106,61347,73497,70015,682,45850,25776,38022,148951,6288,37411,232526,109277,27286,32342,9262,5220,16651,23175,46740,129438,78614,121925,66914,88710,127952,5563,21500,34521,10739,14863,191006,62956,17359,16749,67027,56284,69134,43301,35039,58883,54466,60823,404451,75743,59856,86979,7923,34273,83785,32142,7693,268986,197428,282681,17049,22346,22990,92245,107180,3357,37104,96724,49153,7683,31197,43267,82231,164276,23696,20848,188364,22309,24821,158707,1018,22514,70922,27792,45589,59709,10765,736,35218,63479,51987,24275,63588,55361,92929,81964,4658,20122,12330,44058,13065,311456,72224,8337,211229,38979,22590,138478,52757,32595,133600,8838,31549,94412,43391,90056,1585,94802,127271,6223,31889,137038,132910,2165,57616,230152,6080,10748,36737,74579,134062,50525,180532,119270,34556,76155,82394,52595,29258,31435,87820,67996,26943,183878,38007,2410,13526,180297,69856,3503,187396,167700,7838,16701,9199,56267,3661,37407,65994,23767,5708,62508,221700,67088,86978,46776,84434,32088,5612,9149,88244,21685,95151,46750,189612,2979,506311,2594,3628,40074,105039,78243,28523,6651,38058,71999,30992,12764,68261,108991,6165,26450,61961,13400,22426,7490,60890,109623,2070,12958,50355,67979,257096,7213,42578,52121,35716,65461,7516,124758,39268,302,64712,14977,1467,219452,2840,34229,11121,21602,19270,63574,8024,1532,17331,79839,78885,52029,180767,57957,6069,91265,61380,55767,8927,32881,287603,22149,35029,68876,6428,199567,46926,13412,104132,21434,366616,45060,110046,81924,128910,45886,52821,130416,29416,77342,21762,67329,121432,79924,11724,38625,81006,102033,28338,13326,3250,82056,82526,38212,21112,12382,111495,3263,7414,86274,93490,40844,30224,45212,24019,48411,71367,24941,76729,57776,3769,38114,202019,197745,31953,237533,33270,201580,255648,100798,44741,32241,98468,106931,10085,15090,170358,33154,66787,18819,69760,25061,234005,82660,6295,131975,16874,9076,4094,25005,17740,40908,19533,220019,44330,99792,50040,19619,13950,55228,24423,31253,95308,103177,184795,28590,82285,5059,3210,75525,49894,70007,56178,10580,36051,139681,21617,98736,3555,106306,164189,37352,63915,47824,24883,145530,61904,28444,11483,19837,145446,30420,112972,85939,11835,191233,2262,20705,58630,1753,148334,1197,144714,6887,11223,107667,60879,77914,4151,57417,81594,96681,169430,1784,20444,95138,254041,27038,596,7117,72808,13759,3353,126776,21074,55322,27081,36942,39547,139830,179275,4453,713,8722,71399,19204,25785,22794,23923,104114,11291,25458,102309,88396,75288,230440,206396,104551,58447,130857,37247,94734,31548,176529,226077,65159,20104,10096,66881,94191,237909,27109,37404,1520,27421,25220,113003,23423,24884,50585,6286,231877,150800,11789,3226,90004,60642,5053,202400,61442,132531,175329,57138,30116,103847,9973,75367,16452,32360,59119,21246,10191,164804,23305,61051,37348,154530,13214,5468,50403,66754,130976,50559,80515,14436,155492,84017,5472,43107,41240,2890,90431,70188,382,76234,48040,50211,281038,237007,32115,142178,1536,22761,96429,1811,31243,1679,49143,55209,17402,235054,61494,7462,77030,34925,87609,78002,9499,9027,73289,201078,101379,63544,27666,5469,10642,30029,49816,132979,95620,58086,351930,116300,2110,2043,30845,6154,11279,16727,4122,2277,27281,4971,3650,39060,61970,65951,39674,75686,38151,11370,130809,177895,32665,63725,122267,7857,39618,118483,44792,157755,178624,136994,24260,41308,22471,12404,21707,12486,30473,52781,50246,20247,39065,909,56825,103158,128603,31542,1089,41935,32744,12428,37963,84420,33134,72921,208449,42622,168151,127335,147107,46699,38216,12591,94342,85814,31423,24944,2605,87542,67473,192551,4496,56321,91819,17630,6300,256183,114569,202090,33209,35289,34897,24967,40520,43470,5344,10199,34810,14283,10381,10017,62923,49924,23233,64539,13051,35686,19698,11570,135555,120868,44924,87065,52318,52335,47586,140906,245885,109834,78668,9065,46990,25258,72022,61243,40838,4545,146387,10537,11557,17470,36930,68104,46711,24264,79401,81043,18225,120488,24746,84338,81652,28266,13776,21878,46973,1047,230465,73357,95777,24973,210160,62210,58404,110633,169651,6937,41870,9909,26822,191062,76553,27519,96256,239070,2478,205678,67955,58532,20601,50120,19148,78501,195724,110740,8249,109665,27446,30568,57631,31425,49752,32820,65504,50079,3663,102256,219898,23849,211315,14645,4359,91767,9528,12449,49366,7941,49763,107848,8930,27086,50686,9744,10447,81935,39513,46514,1670,29229,6172,22312,137280,97759,9806,14445,22976,56458,73391,34983,93760,174219,52573,33149,59747,2429,136277,75123,165263,91040,7446,57632,48633,97140,246081,84766,151684,79918,93268,120346,54059,54875,77858,32996,103590,45276,11968,19600,25849,17159,132907,42828,16817,4913,99462,103303,27395,5737,74184,20749,21160,14377,77062,131403,158735,10999,27799,77785,9320,34366,51593,61070,33746,47048,29268,36675,30262,53297,9832,82e3,20188,122292,39917,7331,18160,68301,185935,134830,15031,4935,10004,165845,185534,46923,30109,44134,122631,18874,22903,112790,26561,18549,348902,82871,140345,255565,135390,63556,103747,145055,179600,145662,296111,61661,211987,23952,52342,126343,48450,32919,44277,82185,9591,62139,205363,376969,394874,108461,18040,120885,14798,39863,16571,16794,58271,81025,55206,14640,118656,6361,44092,85970,6262,153863,108244,180200,72264,79947,38044,10050,5735,61221,80712,5471,115689,11391,11661,184257,20010,60116,30320,19327,134598,45455,27542,18004,125092,452272,1549,91523,46567,180063,156026,2608,11174,58848,37788,65907,80194,30490,5786,40775,119519,106241,11323,156297,8425,61495,2617,29675,2425,59886,112582,49142,59618,4863,50597,86710,50650,168632,27693,85641,83643,18993,25768,84284,28090,93592,36627,312804,43381,9887,9402,100931,97165,3311,173330,66805,28935,4963,184460,3201,78102,19126,21607,37496,24938,22615,16153,32862,134792,153318,61120,6067,2812,12826,12792,23825,37559,64662,202250,102694,155488,85881,149193,46233,65383,15521,106982,11358,176786,25752,39717,34208,24510,32464,77742,39371,72028,138229,60688,71386,102834,132477,2208,11548,63670,271279,28351,30338,38620,32491,99845,143885,152266,13252,2825,178663,108097,1775,78201,14897,113573,163346,62292,171129,22183,96598,38733,64971,166776,117445,9968,146393,44677,74867,20908,97328,12761,25656,26785,9148,112344,26115,99176,110121,22437,49547,6180,79320,5835,31392,43328,33377,75870,119860,69497,80273,7325,155219,43167,111173,28347,20222,3763,71752,55041,47252,14618,28088,15012,97805,194698,54636,2036,41349,6173,96604,61530,51859,43782,13361,24334,22668,24792,7070,23441,16789,3209,36211,208475,26242,32880,122181,182407,21444,31060,88459,29929,77907,12716,10934,97005,20599,31690,8403,58445,30303,22700,10336,86731,103115,337709,72556,46788,112566,47684,67089,53548,36874,56487,41387,125985,26893,40071,106683,73712,18787,40105,72992,67246,137276,50802,36790,70328,138827,22466,39263,183295,29858,50975,9322,57397,10654,24364,30383,55799,41600,23584,127295,296610,129078,143558,244131,86397,36049,1085,80677,3820,108139,5476,34767,24683,7758,13060,7239,131671,250593,59556,103392,29810,4188,252323,39404,116877,7651,43600,40338,13554,157253,39196,25978,144387,61211,234,50104,6129,10449,93777,9240,356378,274148,4439,72970,3724,147770,78680,62570,115877,40027,40547,36817,224392,64609,34795,165027,67440,2477,37206,23431,50754,164797,46018,94995,170982,27051,7957,22767,3674,27900,56419,18930,60701,41302,2692,84749,339721,61996,111094,80221,50129,1045,8153,62945,19202,8250,37208,37418,32560,79477,41106,88569,33963,36693,5892,30570,1581,66471,49647,11922,160717,29442,5643,114865,82962,95982,132098,22633,22838,94726,54556,28566,205039,162340,33216,16849,35847,221339,94851,26533,71469,1805,3804,12935,45483,71020,36310,65381,192960,34240,35165,59773,1248,46954,155332,96864,4246,388800,16129,57133,74592,44807,442014,38203,42574,80818,91592,26377,36424,65760,977,77387,22628,147610,28018,30561,98454,6969,119628,63648,18170,36854,26601,64018,22027,37279,51395,152934,21153,9430,58760,194742,5330,55115,34158,28917,174111,13171,122326,1526,43896,66094,25325,4234,148354,11450,275,18999,112191,44365,22723,68409,8733,57746,96565,75007,14196,108844,29475,88599,177563,100792,106156,86323,93726,14248,135341,194131,40126,47099,14779,8272,39597,95983,171398,65882,28052,10393,47213,40689,22120,72212,106829,34964,109146,753,648,21660,30047,17527,181025,5619,145357,4085,216883,9359,186951,24779,53931,24545,36197,223296,62628,168101,4243,107313,30321,26642,13049,51059,31027,107912,807,73550,26551,84369,122422,165872,49754,74213,234264,33151,52014,33100,87183,22365,52500,40013,23302,5652,72723,21404,26107,48434,587,94049,168493,96418,32871,70860,31709,25128,443,71597,166253,15670,70994,26341,133675,28280,75491,54756,47955,56028,26182,11952,113272,472197,64640,110753,17919,337,50642,22576,142,87371,53391,93210,126694,15285,19642,85667,14148,1506,42092,52962,33243,11970,20734,135843,57044,58880,13002,219134,22876,64754,232519,4257,43120,321573,24799,64526,124728,52579,81472,70831,276848,17403,74359,23021,182101,74597,23744,148267,12055,7976,5349,11772,67540,167347,65318,18720,127832,108238,22828,90233,9987,259080,118185,73209,79270,13775,90100,137742,90799,70569,15699,19961,9087,67475,57872,39731,8810,134897,131868,146849,19898,3334,2281,167061,91073,60356,467742,74712,188,53179,137679,92769,29241,9537,132595,80119,1041,88962,5976,40171,44911,102859,139059,104558,98987,47761,19272,71472,113864,175377,73338,10857,23402,23758,1591,139864,5644,4076,118760,16427,134198,18853,20291,100849,37423,22038,36677,19071,195521,57445,11069,31869,55718,66882,148490,44,41296,75242,49704,166810,9906,20943,122258,49112,105667,15969,10344,6408,187694,21399,72742,58970,14867,14376,81889,41856,23225,15042,56993,16074,131389,74276,72407,53875,383108,53597,37363,68993,44854,122548,430927,198279,38430,80409,12245,2981,628,2818,17760,37437,238229,7968,46892,2200,3730,34190,65983,37959,112291,87850,70827,6522,20750,73913,111621,41652,19587,2780,58668,25916,85259,18200,168962,95781,42445,102050,7776,57662,103313,47742,96358,41964,66174,100396,29069,204735,19679,27978,7479,40264,22534,61183,36081,107436,58223,14680,23002,101311,24716,124108,12908,5646,31750,40380,14215,232799,102772,14122,96775,61398,50917,12096,149880,67833,598749,124194,155871,49216,790,14677,65319,56917,7440,145744,95701,12206,49405,129269,76199,45732,9767,11058,9047,210885,11051,7392,26307,2130,8132,147526,20802,232698,115660,50060,59789,57344,107623,80343,112676,23291,9866,160971,34032,118291,15719,59730,164911,28975,2659,58046,78480,21854,66209,53863,109085,116045,29021,46481,107552,22130,18764,70254,31272,11300,52460,43933,84738,20721,53869,190840,79673,105300,7561,321817,66924,13940,33281,101046,183181,32176,71878,5678,62924,79535,56646,40303,19559,27703,93042,73368,42187,3670,37376,46440,7023,36816,109628,20680,5940,276440,275233,170848,112093,136996,14984,20226,111441,77693,112960,48577,39370,55707,50314,123404,26570,54281,61372,123391,4857,35928,246740,132507,106646,44241,7196,92258,9825,37688,51197,303141,5590,15476,132986,10955,85782,34486,26696,7991,28813,18858,39546,11703,11365,38185,5716,93555,11925,40121,60002,6985,10976,171384,3887,43394,13337,56346,6381,252336,39573,75042,53711,1028,31781,44295,95925,131713,7214,68125,43571,70954,213234,1628,8760,13391,65485,17320,56038,1710,25248,60803,57399,19839,3870,326,281556,50945,72400,21460,316244,75619,56246,98775,481,13513,55765,50427,7388,123519,32929,57908,27124,61316,101097,57467,30228,48792,10788,20402,37318,50526,155730,34456,158065,145305,17832,43733,64052,4506,35072,205355,177028,184004,187081,68616,35938,83703,10367,36892,93186,260137,51934,89970,4985,23445,26755,21558,7948,78741,23376,124405,85594,68596,57536,49351,12619,56593,132668,99924,109728,71844,71935,196018,65464,17617,14987,89701,143773,33997,8687,22701,33258,2914,4436,72108,85610,9671,49067,2327,82988,1361,1672,44033,35777,30269,24057,10605,82236,616,15793,13919,47249,112086,116698,9484,80207,90574,33304,68624,93127,56101,42210,160929,4827,38995,38095,4701,125119,5027,33680,9236,231236,14135,87837,23318,70261,78893,30151,81482,14332,1084,74256,27532,46644,79185,3148,62615,6981,55672,31668,36825,1849,14536,37446,14738,23779,43058,162749,72199,1168,21346,5592,85932,85302,9668,18351,57135,150360,2080,228015,77953,34670,119302,151751,31009,106725,84265,45214,59289,74178,113071,263206,111009,4021,44449,188119,192629,123592,392506,292847,114487,12831,205858,9852,20780,79648,75767,357014,97721,18166,21005,67950,33226,204009,16536,2987,11335,66717,144910,47950,17262,55060,15063,2934,51038,26775,178497,66008,3427,49433,128592,20036,157553,63861,3089,23015,51210,28696,35933,49942,71135,231518,99620,17248,21835,176536,20676,16944,38700,165831,233253,295625,36723,13023,52745,10907,19423,67972,125868,95473,82875,1183,108455,52685,33417,64095,21433,52438,33191,127809,44505,211823,7810,2752,95548,162031,7185,91196,47563,61721,33359,17897,23682,42806,178101,22874,49707,199897,75419,82456,8618,11171,79712,116847,18783,44190,46564,5346,59046,95032,7893,14916,3214,26800,24172,121453,34362,10250,17408,18888,4840,68696,22831,13162,36005,32512,14800,62357,41723,45046,27247,37486,5372,2564,34261,298500,66509,133920,89138,31305,117697,19097,108304,81386,84106,23802,46411,63304,946,51417,41777,41041,19501,115864,60743,294354,37955,94165,18116,1156,17937,20645,57114,90804,58042,48643,92288,9861,2557,88546,61333,101008,12853,5148,87856,4152,144503,73841,18718,9789,147565,10846,42085,12789,30223,8993,56352,67203,2448,28215,6052,23540,126319,75933,36689,80235,23231,23561,21383,38800,77548,102798,21234,31468,158608,46188,63960,191679,8051,67014,11185,170078,42186,28827,34777,41930,212079,12421,34750,24111,110344,73918,45171,70826,141949,40063,23979,24254,37309,26724,27179,24718,83648,54938,14591,17425,29525,102675,48975,48654,12316,8929,60640,41709,50168,63264,89812,50716,48632,38755,138583,160123,55579,71829,24230,233277,46322,39650,166388,34718,24108,98252,7031,106695,62498,18258,35062,217827,78731,34824,33354,19520,60852,2432,60224,8587,2836,62955,702,20227,42285,40560,95592,62486,11094,53035,143291,18842,46177,77994,1770,9657,107422,172915,32655,128716,25886,25164,156740,119928,165875,85817,11007,89110,33956,12652,65156,180266,8494,36889,19958,20955,96,1264,118288,135769,44754,86671,5632,19026,168220,289120,33569,93821,66144,70635,7687,5642,2714,55445,56636,71545,184182,93133,7332,37389,12643,52315,22729,11014,158742,17050,152889,50178,34601,41945,52136,9948,26914,63548,95721,115951,40759,8960,158258,38938,49232,48325,42234,81523,253019,66128,40978,20048,238048,38760,62928,122560,118532,43687,137472,163689,26680,9878,17448,51035,16211,60834,36749,29178,14241,59868,150086,2305,26477,42422,34342,165341,83279,33894,14257,29928,12743,13957,125571,89134,66712,10952,16507,147839,30146,7249,16565,45399,39874,114565,215780,31990,230881,171477,102,196546,44538,10880,84948,281705,86651,10617,31395,2342,453658,43569,60561,132901,21845,17727,58556,258242,22262,58728,4008,77997,11806,37431,30599,81375,109137,185787,114085,217292,97453,169085,30593,60212,11544,102056,65580,2384,91655,4855,95725,7295,157994,16228,20669,53276,141590,105246,17334,25440,76067,17967,39321,38911,11362,28559,63807,21627,26468,85816,40120,1025,15234,58319,69516,66512,124548,75845,78873,22137,46681,51242,85683,32909,76747,35555,43396,101465,1765,73094,1077,2962,39028,66777,57831,42048,15828,13962,36041,63657,52412,5242,58846,2141,5506,219012,134451,3936,182230,17558,17153,152237,22621,49377,170216,35257,68233,65374,6510,11126,212151,7184,2480,22517,3437,33073,30156,16557,3768,55067,86829,91e3,12350,148650,66017,79424,70885,49066,28250,21369,51213,34533,11510,3258,18176,18465,84413,6315,36411,163765,4346,356,107618,598,13727,285026,162695,8749,14583,7132,63521,184253,32378,25991,5604,30961,53675,4874,84693,5086,34811,26978,56564,7904,33519,51221,113942,69253,6664,125563,22055,220680,102008,742,51930,19494,176108,44424,35123,13025,75685,11759,74335,22250,181453,131147,16984,132115,154311,11991,76452,52609,85351,196,30969,9198,74919,2529,56838,71779,29187,116304,3504,62330,41190,86153,28393,254926,104228,105189,13264,84359,3574,12415,8534,57147,10175,188174,59504,60932,66318,16407,107921,17638,99103,49278,28403,39786,145865,8462,3558,43406,142271,29139,21989,36552,93955,72365,7176,13556,106185,37957,321774,17782,129017,51154,27938,24952,1935,39366,2791,33489,41582,56078,24558,9311,5449,218786,27808,190429,68013,36020,86003,29735,3404,87348,119357,115714,2324,86796,81973,40992,43376,93621,28784,16808,36367,2517,2909,191926,24978,55303,53308,205724,60068,3098,21375,64784,23949,26579,63121,12319,80145,39967,97861,6757,70143,67642,37082,34698,69140,122883,46151,62187,80934,429,19437,135071,137885,222647,13331,154065,327,61778,74257,40116,37493,14855,85079,237641,42342,102164,199965,71204,4662,29368,5042,113914,122214,8955,13149,102503,43173,5659,163787,69003,307084,63392,171080,21390,81918,86666,36622,24126,28887,5736,28054,207170,163428,79891,346467,95363,38980,111806,80828,9200,19288,294896,114468,87405,111715,141705,7015,72754,68463,48738,243147,33397,101210,37051,98801,82847,20397,4940,185559,18716,54718,83491,11725,40803,1128,12128,23060,5174,7745,67007,46701,1571,27807,180186,256996,18975,16837,7877,212758,250379,15440,87954,57755,24719,124057,83461,258,50864,8874,29038,71289,31627,15429,9005,4061,113851,107716,82819,13651,79656,117851,17539,111446,12938,39724,190787,4352,15402,21070,62708,8539,23777,73853,13552,38810,86117,16285,56400,1718,75342,142863,29033,378,110113,180321,32586,23606,26393,160984,207987,23783,8406,16904,24596,47274,11693,46539,60524,78595,48423,31718,20170,9009,146268,15183,191060,172765,1349,138436,37365,10970,40509,225817,20021,70394,152138,21541,66559,66544,89352,2725,17258,91345,7313,3815,115868,8660,40362,4071,103524,39388,118275,21950,6549,38226,32754,209574,29201,43495,18028,20296,40597,18370,47520,202450,24134,2219,8195,69545,38041,136934,46374,19041,159811,84865,58620,846,98749,13569,30714,97246,32186,4479,27355,92973,35214,151491,75963,37631,1561,27200,238083,23182,60756,12291,25766,39355,102333,87362,65741,59906,19538,201575,48772,102938,24438,292580,39964,66366,9004,61379,50548,37622,38732,28379,68180,76622,17488,69849,5963,7219,48143,43413,55358,540,58691,29506,19245,52193,48621,5518,13048,118625,44755,191081,42061,89197,2259,60665,66994,71210,51232,3585,142096,55024,7892,8345,58653,463307,65658,64319,137941,136323,53499,12746,43492,6978,95163,29925,60175,5128,7352,41463,184756,121146,20473,18426,4598,5309,54580,14277,121151,10691,56711,43880,63409,76682,11830,172218,264898,32632,66536,81062,31649,25788,92774,60222,11100,63159,9432,224657,25240,53613,152,138620,163829,2397,85345,12501,37507,64932,38575,43522,65789,80198,78796,35226,3851,108891,73311,3060,28391,93671,39663,46142,30982,66041,37281,68157,26553,71872,81142,211527,39747,118119,22695,2859,11066,20232,168911,7933,197005,17066,111071,44434,133994,120798,12766,227798,45756,132852,29917,36076,55352,65281,129800,41958,18944,84678,18580,168093,132621,39997,54092,27740,32354,3770,114118,103242,43918,15899,18574,145944,3190,123469,219903,24169,100571,62403,16776,92779,14535,17168,16475,14304,37231,1712,28218,242754,61688,28980,1318,51359,222657,99200,67989,31772,23932,35351,201251,49041,27306,19128,40135,3986,77333,19649,120683,151927,21081,7076,78375,77501,101599,8011,89585,96715,58179,5378,102138,106793,26051,217276,4197,16297,27014,46721,13322,22806,5278,29629,70632,9647,71519,58818,40603,128530,8903,36770,56900,31483,26935,43845,34265,34920,87658,6114,84767,64250,47318,50720,19264,162514,33357,13117,6705,46696,75032,71054,87004,42035,69138,11903,99854,102328,19611,34525,69312,6431,49842,101600,133178,108751,41829,89939,225664,48916,99556,9195,130387,5960,36857,116724,53518,94002,39077,53996,6945,22261,64291,8314,152785,57588,16522,9091,5048,87671,35441,39509,1945,12423,158923,178413,37549,14095,1475,73188,62878,4819,24012,68534,42606,4010,120809,57497,59564,101758,103718,32701,80116,12345,95834,46918,21468,53213,15665,31200,3867,5140,96013,250744,21016,10069,13968,35449,180829,27683,39704,59956,22893,3115,26293,32785,75934,62445,141162,62720,2018,83638,19949,114012,95006,3330,99829,130935,309272,9565,55874,121727,37017,23586,319858,40970,27602,8625,112329,61060,100088,118525,25922,16232,1907,60671,51583,44553,80993,5262,94679,8676,940,20736,11823,3020,16476,12340,152600,97416,3703,25744,66826,16245,16876,46446,84798,74227,176020,45192,61955,75496,23946,23626,40372,26036,6149,11822,30582,16541,41914,82385,232823,40921,80773,14930,3631,7517,39619,4348,36180,126106,138939,62611,1477,113512,47321,25052,14546,118881,29060,23589,128322,36795,18401,137921,104699,267929,36194,172791,18113,4766,188215,30083,332586,94089,5805,77909,22194,68234,154976,43220,40660,70001,184893,138095,11128,103010,22663,5108,212615,8485,5565,49222,54614,26530,42639,16319,55062,152662,105595,21114,22216,10294,68158,10436,86950,7206,62115,3977,3657,59874,456,118617,18156,106663,112229,80992,17442,8217,55551,5133,34344,251927,51153,39364,201321,7816,66803,23057,156724,145664,14276,95705,979,2796,6875,13429,212525,50602,26276,28284,3424,19465,52397,46963,31420,51399,206476,92317,48851,637,100820,83349,10317,60227,21972,6908,282439,32857,224767,95629,83882,42106,87338,69757,29840,68709,37665,45244,114577,49188,175943,54009,186746,106158,70168,3358,234002,50555,9221,129338,9562,20118,32923,78479,118280,65752,4977,10474,102174,60947,129006,10570,83451,8598,8078,159367,123785,80438,16742,5905,5281,181513,42402,6977,163136,93179,42191,14968,50421,112401,105440,33456,57347,121611,4221,94954,36517,24046,27796,6255,33394,72990,135408,116627,1233,57874,25654,95419,68156,401399,313338,55208,45573,93124,119251,47200,38196,11909,130667,45391,73904,64964,167846,4137,115606,52036,62214,7969,160925,7187,1132,134835,40309,73195,64494,80472,444841,61111,26500,45323,40743,53625,52797,22659,15631,29739,36706,28841,39147,102836,26794,10536,14845,87305,45874,12241,127587,83833,57183,79722,30844,41304,84655,20825,92500,3722,25655,27811,10157,81634,31362,34088,92487,70123,22190,185100,72658,139035,192523,88241,2078,230490,44528,85638,100198,22088,29982,291233,241062,13865,4445,137791,37835,107218,31726,19718,38234,72528,23046,19177,66695,5109,17251,28077,5617,21554,47839,72425,133825,1486,73065,181275,141508,21768,62971,63082,2512,34200,9904,120309,6392,91243,68416,268253,41199,116757,138551,185526,41246,28986,4093,19057,17295,4148,245766,122360,35356,112075,20301,75441,10998,7977,19769,62922,937,63547,100196,26427,157820,20983,236696,22935,8140,90315,156004,47204,140973,7726,45097,52725,22636,23436,257282,105247,522,88389,216031,202204,46812,211666,19693,68828,81691,45925,11256,30292,372,5236,167826,88328,232776,151611,5360,82104,18841,80393,25465,18285,20320,72377,31730,33160,45803,38715,27705,37379,24163,18360,103586,4015,32305,269494,91252,20080,36567,54650,7797,57073,12650,31164,42209,6375,261663,105528,81661,106002,2800,5375,17247,43151,4442,15727,194619,100855,144898,62320,78465,39929,16454,1967,28311,61363,17219,9395,8745,121445,76939,80385,162380,22009,54191,44248,16299,122830,48151,74429,78291,64755,14238,44966,2511,17712,67954,93583,829,105899,49935,84750,11591,33185,85447,42717,27409,208542,28965,62052,52525,5597,25694,65594,16343,63224,276188,12475,9331,127507,38522,57287,24128,133161,79723,105548,133695,48917,27558,43278,46520,13778,141954,110785,83366,17715,46317,105763,66298,147013,41086,94180,16478,220447,44611,730,19722,78975,117889,125643,26254,16574,18480,65006,15806,38549,246418,46052,36056,8440,34984,30170,3163,59800,4458,115442,4283,41970,33507,104078,1653,22,121158,276486,3655,6338,24048,133421,23641,2161,24422,36006,8086,10675,181474,12307,29514,59143,14729,52509,87128,122470,19446,80852,33314,24573,119864,14237,9652,57779,6612,51851,15284,98871,90581,124466,156831,21190,22015,71380,161906,87247,69201,18392,17908,108470,72962,40719,14338,17911,95260,43339,20610,78916,20710,72451,11315,31448,17263,58853,178878,48111,116002,45497,80506,82605,85880,36300,121755,25215,36118,301929,88728,405223,276136,553,34704,212438,49970,78329,922,20711,25036,257130,38295,145369,18128,15385,30829,55656,48345,8012,3561,28004,122041,192900,58338,112508,41085,29976,87040,47117,23905,4336,92061,138880,97407,42083,172121,6256,25192,172671,5,93568,1420,12677,31605,56743,40620,6015,78415,231077,31298,80026,13902,19048,24924,170586,32955,176119,87859,36731,6773,27711,24658,26475,115216,133207,93250,95820,88522,8317,5714,124047,55219,86860,19677,23961,22928,162209,8904,225992,359835,56084,96201,29392,96558,86071,93643,55114,13347,8183,95129,82012,2017,123336,34219,115554,157159,47747,101684,41008,18735,193781,104151,226906,7552,179874,124113,31159,21162,44010,14771,51268,166128,31382,73124,77438,92830,205709,12113,1292,38937,13114,1334,2118,15597,69581,14449,21934,76618,48728,67038,14967,51495,24243,87736,147249,26720,11119,46063,43749,5843,44147,152629,133428,65703,14269,45604,57982,28672,55616,45957,8438,95433,37698,220862,132034,39456,61870,4161,26501,73560,56418,9845,4654,20916,10456,88920,119358,9015,65931,96507,48029,38534,21676,109081,43078,34943,25089,6131,28766,23665,5477,10255,16695,67,45778,42443,42770,29534,23733,100513,62617,42630,48746,14191,43753,50295,26007,8792,57243,43119,54725,164253,58250,112304,131796,25165,4651,3188,24831,47748,3705,19540,13211,102095,5593,18699,23666,32005,117571,33541,60584,74573,86311,99443,25172,27222,168938,7143,11853,53560,18834,19960,86522,28217,53266,117700,72989,34323,18721,66450,34346,74056,47217,202002,46269,9429,68582,75458,37823,82843,96652,32549,145144,27958,19820,158086,31955,201406,135379,31207,192545,12950,51704,9094,248263,76147,64028,110009,79407,89345,99284,223492,47966,26848,15359,201137,2861,110507,71231,72297,31851,118777,71039,151051,240855,16333,50766,14727,7939,4149,80908,418780,88378,59276,1327,7284,38576,79814,65820,42199,84860,49574,62596,12396,70598,40117,8648,7994,16836,7630,14047,359699,106878,525,29037,28064,13380,11675,50669,74216,103539,180314,27449,56299,172344,19274,7301,246099,32043,19422,36506,129317,6806,30140,4614,46639,66926,932,86600,6322,27847,233103,10541,39025,34887,3517,12972,26220,2031,66561,115015,48658,47596,12714,33845,3893,16165,35237,89983,14769,11962,147224,47018,29977,27979,5552,82338,86023,131368,1218,24853,237840,132193,15455,40873,3668,65351,53388,15229,59889,272245,47934,11858,34347,18038,90853,86981,300602,19343,114181,29362,84921,6095,106059,79472,38015,1206,48741,6208,8e4,21916,17423,6002,108083,24479,34931,56661,9511,26995,100694,163853,35997,81254,58321,18919,171890,86877,91341,74503,70477,53412,7027,59281,39892,131302,5864,15947,61301,67466,162369,47956,27874,35624,282324,21270,111847,102548,41482,30955,116737,28264,8592,55458,22301,75090,29821,30697,51709,3041,19208,8038,24634,30467,87509,126428,19389,18814,152686,20701,83474,45832,80891,105808,11378,153223,120770,98186,150633,49838,9141,12755,30962,5260,74490,21256,31678,65062,33326,289838,187831,20595,89768,2805,58535,10844,70085,12090,2451,138068,98544,24461,4511,6754,41684,28203,3383,65355,82833,30161,83924,234361,128424,28921,222594,33975,125491,34069,11508,67464,144226,41850,98703,34371,7901,21254,38398,65651,23549,53883,213340,123269,12028,71764,177701,28758,2623,68395,11549,15232,68603,9660,63116,36079,57093,31198,20475,48467,89984,35619,186847,107469,31389,43631,73867,41949,68841,114250,1605,30564,63403,17588,27680,99533,12641,70325,50428,73426,78379,11855,91651,72081,91720,60198,15743,12065,83398,140046,6761,46598,45900,5068,886,62448,148968,37347,19405,9680,15819,43496,63370,75667,163700,37639,3633,22774,34341,183131,134335,37200,23915,7054,14194,12970,26438,13350,285521,25594,8219,104410,91039,168804,138480,149734,15907,33818,61132,60082,4622,110187,56736,13551,73571,3945,73463,65498,17758,263266,17593,2710,27585,54469,38200,45367,63754,28881,3473,12791,98287,31895,65787,4463,94536,24951,36332,59901,28803,52130,86403,7668,181822,74831,18977,9850,177206,145485,109798,7292,31421,26280,77211,58511,12507,127004,11113,147,8729,56208,43066,79926,129937,31345,83947,39915,46146,98763,42566,1337,13192,18323,105163,80570,117753,16555,72883,11077,159438,40764,70933,83329,26066,12276,72059,21655,173836,126713,69454,153482,91585,70644,102558,110483,6764,127864,190133,3961,101798,20945,71138,82402,90884,69669,44753,923,16939,59700,164258,25969,27082,31399,43846,6306,246093,51342,6153,151581,202801,182731,56475,162188,89426,141356,14355,121815,27536,28023,65257,77523,106668,127314,24947,12790,38796,169698,23555,10725,44573,183083,42088,62716,43265,105958,32050,44067,50118,1668,3874,6243,318411,16599,1691,94999,52378,28671,216728,123258,2059,34969,69225,5913,136280,171443,141515,91662,22175,135282,80020,92270,1663,4808,4482,3495,34691,5226,109830,108512,17342,107488,11606,123190,100247,29666,146527,113014,15794,30894,13224,39585,243192,22351,9903,7836,47699,11078,25468,122291,48821,26780,122679,75521,81450,630,4895,92900,55074,74293,17441,3563,111657,103102,51613,12318,52370,36191,68245,34269,40445,41354,122901,168604,182500,62012,42557,11259,24428,115113,86345,12362,3909,78430,86852,134602,20459,47853,93879,22577,7659,3688,38555,13349,17381,56715,91639,12493,10895,92438,3142,37057,28928,2004,36427,32268,34222,209974,10432,67436,41989,173518,107930,27079,62729,30908,55558,5828,45031,14902,53546,8204,144263,60255,14520,88212,86582,109589,69356,8064,47449,8505,66558,16886,4844,52817,111260,215129,12941,91118,650,20770,6273,73089,40618,62790,2873,35002,14023,97208,19386,102646,36993,143736,135457,35385,113601,17893,32627,84439,100619,56016,6581,57264,172160,45452,111710,203627,70131,24100,322787,1996,35665,70078,22358,90922,83658,4097,63200,58499,14542,99153,52159,6615,12414,63415,31986,16823,1579,65405,137809,8841,16898,48082,259,33014,42375,12260,179850,73667,91389,98882,29532,17311,326251,41092,5928,20742,44964,48019,43505,9317,49265,6643,192712,48424,163487,19861,20113,70848,31928,105333,23685,78563,14638,54755,7158,24142,44018,20774,125255,20331,24280,10163,1285,2336,39851,4299,117269,46714,63816,87779,159624,11731,9971,990,137317,108831,50994,74554,162680,23640,131597,146962,170620,34829,91205,21184,1913,63616,18427,93136,156592,17519,67565,115882,138220,78622,88535,18115,2711,33554,109492,54298,971,24914,25863,36363,45715,27099,194995,14299,178181,111488,72395,322385,157719,130787,11897,81843,83999,11369,49280,118604,40922,61332,110343,53407,75639,40582,300440,54722,25637,13694,48248,48278,194521,56203,52779,48783,72627,10953,376,16733,280238,26351,230789,15132,25168,137270,3588,63704,73376,94031,74284,19443,159557,9697,39901,13351,119050,15406,146455,3460,29556,75195,37673,102524,92329,47289,98413,15311,100684,56345,7116,95480,11590,7200,167,23610,58426,17730,136656,27944,53151,2701,8824,103124,3017,90744,113588,53216,79736,65940,26931,498,29568,80540,143543,21292,1740,59268,16561,180816,42323,50174,40890,52866,10703,57169,4700,17191,4424,93511,49698,166650,26972,48631,165169,82879,69326,202970,4007,2376,231325,139592,22119,62851,37504,68816,58345,67398,186643,43331,277416,53749,15746,23102,17432,4793,151138,48822,54265,48203,198688,14305,54287,2291,18018,113378,123260,7180,97549,87027,120085,2920,76080,8190,102005,5641,64580,14955,59802,54028,58884,19367,81779,412567,85957,97053,103637,78871,29364,27637,141728,4767,30686,112738,130146,42745,12730,105040,14844,232,210944,36581,152317,135543,29744,3129,55647,58149,46319,27265,17499,28005,59948,7170,34138,5702,293047,110892,408,91760,218674,18469,46095,81403,14389,4610,35672,73060,11006,74848,104820,118143,190357,20043,105358,141735,5115,27093,45924,123073,52599,29433,9616,238350,78610,24851,58858,26769,31969,24613,18294,4982,32735,39639,143563,112073,202205,12567,4873,88601,44897,81503,101648,81362,34662,85277,17574,48173,21435,221188,40215,39576,80786,26544,64668,81841,10731,37733,247986,149188,127703,495,18382,54388,72446,43071,30974,198723,89608,41360,190,33045,8386,31658,19992,237838,119015,137622,50890,100913,6460,116233,267230,26621,104129,65114,14190,41542,14888,85962,23342,23041,26453,43725,71809,45186,4770,46452,53894,56616,221286,18973,9038,109299,55365,19366,26863,18808,60909,69353,41738,83463,12100,68561,72860,3980,13796,49340,12332,31311,27418,4255,53430,18976,45523,510,14224,30477,26581,4530,3651,101663,139840,22709,150861,31996,63923,120623,262522,3076,10528,2929,14672,130238,18087,9816,121894,100308,25085,55111,14565,18952,53293,2042,369988,23674,61789,133529,28783,108293,35477,47119,36448,71049,40015,33055,78598,198442,1833,159937,40654,77444,189245,113153,8621,18599,38553,35223,166072,2375,11659,21786,89523,6032,12116,63046,159398,18454,3678,32521,47626,11411,103527,38896,42946,15696,26370,10185,8413,37080,165583,4331,63555,14907,72220,50056,6623,62236,36565,49783,10049,17503,100581,55951,146244,24724,9626,17969,25524,109300,173965,99994,101056,46459,43647,53737,277968,8347,123521,74858,33829,44762,77574,877,81377,222525,123532,30602,43881,53145,2973,16284,81940,61281,127044,63620,9875,14756,114829,19032,9202,52759,119141,23928,120551,19607,3599,33401,76821,73233,117430,39968,36539,7071,5446,121735,194059,15206,45283,6706,15603,65615,1207,165723,92275,34773,104447,8396,32353,205240,164323,13600,60555,79205,25532,22907,33410,57480,107111,69630,32137,47832,70913,33161,20321,2371,117348,10714,86246,1625,11763,17900,268,78457,99175,97940,101092,86660,32221,14041,128504,125080,53744,124263,31017,13897,403,31859,21964,5633,111630,5547,77329,17961,18241,84995,25984,12983,67491,62168,47262,5241,297,51191,7351,8967,147212,82060,16821,782,11033,82431,62957,5026,43459,77963,203477,53528,6247,191852,87774,74164,215654,13467,1522,219964,28589,244104,16242,117821,67725,72570,156792,17186,15979,26990,44128,193014,35276,57125,16212,166451,68017,6905,77608,16364,53777,75921,76426,37975,26203,269296,64099,84122,12077,38533,830,4407,20139,963,43028,38902,42911,37503,83343,85045,16979,1165,60835,137387,58380,86990,110066,134540,56331,193845,81238,17922,163093,38744,110641,12502,56404,34862,26865,125964,12965,111648,25547,7771,27196,136980,9555,29551,107158,57885,18831,37705,35505,101742,13970,102109,62548,124657,23328,11124,89592,146376,248050,6241,22033,18337,80685,29898,11908,216623,67721,106162,146610,21377,15085,91552,42041,62560,122532,125336,102365,121537,142559,29693,223919,11515,110495,18776,22494,5895,185059,103592,229351,51220,100102,37027,257855,29359,54123,36066,106493,12244,79258,32002,432,56205,94836,90182,6726,14762,29391,48938,26864,38083,60364,3310,60192,14766,205567,57504,110760,22649,24666,46333,21517,3430,13135,28873,27052,158809,11597,20529,6695,23138,22960,37137,45574,6545,305877,43423,26153,24769,59844,14501,10430,134352,56169,13213,103432,49523,35181,13435,12408,129475,64620,230854,77390,51990,15653,83248,33466,44571,117828,51481,2187,10559,68019,18021,54895,48247,18354,33737,4554,108595,37288,39767,116707,9175,3726,108877,21616,83684,49862,1938,8543,276466,20134,108498,48770,102254,31914,131520,185291,100559,51890,209,19526,76471,50544,71814,99351,8172,198526,28816,20419,9109,98389,136777,76479,75596,30635,165417,48216,120220,25955,211071,39314,24308,32164,2559,146280,43403,9233,17947,90585,1786,86920,125662,2457,64741,32152,32918,122882,78538,44001,31723,56426,23375,103172,88177,145697,52506,49319,68016,31664,41488,18486,110400,7030,28241,986,109199,19900,42147,56864,65287,49183,7858,24e3,30453,840,16673,25907,68916,89927,6309,158335,36407,199737,130464,13137,59603,201778,195292,21015,42466,179062,172561,89492,11075,180407,31868,72493,20998,60217,9865,19530,39274,130266,54539,21623,12535,13505,40641,73375,4087,85633,2153,3117,70680,55788,92096,47509,98493,37490,271936,151475,3032,16171,96642,34106,78425,125761,19591,3366,19316,54508,24183,50786,194248,91528,33253,34622,108355,41741,705,3814,3883,108929,13203,67831,10142,59754,68208,29128,84820,56880,38794,24972,48571,40821,40476,18137,164254,24064,236309,79181,11282,395,39169,2013,51587,28551,9645,701,109513,115899,113566,12762,62045,58322,103726,41343,40866,244102,143816,2490,70346,40973,52618,15412,30720,104315,38917,42027,93676,17513,107418,20706,123890,13399,97727,24044,87962,65606,44250,98044,65276,74790,101473,19350,91570,1326,87790,172042,7577,100813,86896,85891,41512,108130,27794,14875,71431,12835,156250,58135,3759,22476,42176,115873,34686,56523,73643,108505,51491,20838,12721,32863,45700,29496,13700,34294,55360,29206,155942,123812,7706,163234,203,132720,49358,144431,8130,175788,35818,3270,76832,25710,54095,97274,28779,94621,74396,19092,128242,58067,20885,14670,93255,15107,63291,23654,126900,129421,59294,262659,9798,3251,67344,28600,44629,50672,29072,26999,31526,23183,49175,165843,175455,17282,175411,32022,45989,30298,90690,78118,83156,23749,35636,31317,7069,80381,94561,133756,14960,97404,6138,41065,78041,32843,16601,34123,9559,146529,123377,96395,54441,42012,84257,123541,10745,22139,106459,11720,150883,172651,154996,110538,4728,53447,25704,2009,71152,119354,21166,66604,1429,216162,8637,122250,63520,27180,29172,36124,276428,107787,77184,4680,14952,104903,24418,14793,51561,52931,8371,26342,48526,7118,92066,67280,40653,8847,34597,105438,14198,50163,61188,146286,50315,41205,170829,161496,585,197359,95056,1687,365794,91349,48507,5804,49263,5146,104902,96365,117343,132222,46084,96919,16875,8073,262381,79982,52663,13928,16056,153908,15145,109256,132308,18763,24904,167644,13618,40750,18686,147124,114709,150038,52849,2938,12568,48617,8778,5459,44202,44591,74914,17183,248689,13878,7822,80060,23116,194037,18487,2067,7798,43077,33678,244028,31320,74273,2794,19466,8218,36280,183997,48124,19416,29656,19280,98734,7715,18311,30701,133602,150307,126956,7378,2933,79903,13178,12593,86571,26604,92446,13574,44205,65699,427599,21118,8245,14407,27877,47936,33542,7916,26460,117762,21596,37818,2249,127359,209394,60044,47677,308089,36791,154971,31417,6998,150042,174360,12255,43009,29335,48739,3912,101398,53340,2580,146939,151295,45360,125275,15273,45383,27456,48761,23314,8750,60801,85823,104759,27894,123685,66968,39480,26917,55290,83305,2696,98390,57569,145853,340733,4919,20024,52268,30884,7413,203685,70989,112855,4129,50536,349518,68205,332641,159581,135361,236026,37563,176404,64899,6578,122033,63871,1850,85234,82089,66124,74145,121098,107351,12687,36881,117334,13136,14698,85933,93866,18047,32620,310,15094,46e3,88451,23632,36645,27940,87618,80520,58892,20976,27702,140090,96075,67841,103292,238964,87778,107338,17019,83427,67522,7302,8261,47570,116787,8730,80484,61772,174422,56005,131193,52875,14588,28471,59817,9586,15720,158155,51307,109734,15196,11025,59331,3884,52626,102602,84797,25158,27314,4437,20488,76214,189248,35023,114952,157376,2827,62439,102878,129749,36405,10329,109339,108633,36662,1254,13267,5470,87105,58004,15397,10434,159667,21864,52022,179464,3013,32147,31496,116832,18494,105502,129227,107267,50033,13481,9954,24267,22141,16257,116154,36185,950,115685,11305,176708,2048,178671,112573,287867,162328,497663,95170,50979,193861,50987,30368,136257,31830,46549,15119,169876,23788,17462,249887,57377,1949,35448,14791,43769,210091,3783,34612,282103,88380,245190,5457,20491,98908,11402,86899,117916,16028,162584,60644,320177,156096,31065,55876,22e3,77655,9992,23397,13757,317623,63978,215255,2443,17648,93231,27388,104529,93807,55505,140477,12046,112040,70887,40152,94365,112353,25063,114679,266061,71248,119555,15589,2244,617,14129,211431,70110,100652,7777,4383,85911,89221,21010,120615,58357,86405,37554,41647,18,15143,69662,60491,14714,186134,148344,42347,5410,168175,44535,42449,343894,129417,99682,20659,27272,140483,63455,222159,17536,13722,42637,62324,11976,114691,148109,2283,32057,182393,4295,147364,33705,2075,44303,30274,28331,63740,69740,29148,10346,44862,33716,73937,153333,12930,38784,247159,2515,41053,20256,83368,256189,54639,115240,5096,24661,175419,153552,26516,141,138176,63885,34115,47222,55709,2765,28479,38875,236608,12229,22921,77291,54426,45388,2860,57787,114579,295139,105782,17826,71066,19119,54364,69385,16568,12323,28057,33346,34919,124763,155533,101386,31644,8627,49001,303600,29868,63213,9103,77280,71333,9696,138789,37059,24823,5057,21352,32368,114208,56803,19424,10445,58514,8661,209508,26187,171838,10460,63454,14016,122504,41328,21329,46618,32493,38225,7855,31763,7945,29876,8734,6438,24205,97490,139977,130740,47323,33195,85390,57194,13813,60600,21313,96251,7699,27584,170521,139271,1363,4402,336738,129223,84983,69150,13147,3590,163929,207225,155260,55916,20288,4503,8398,98490,11773,27512,37113,84976,86558,28365,11756,116005,182148,13733,115313,47644,67208,85069,9347,14995,226141,14704,101835,41159,35314,13113,63526,214039,29978,50446,83339,17440,129441,72522,118641,97816,24907,73844,15717,118884,167255,96509,162793,30847,36849,51297,78974,77793,10427,1873,2972,9999,35074,28190,64297,146836,46298,60038,163007,108919,61219,2403,75022,127339,4233,110389,69022,9833,128097,88016,79390,222936,22570,94657,28462,56956,38803,81536,30474,152794,19566,16481,147408,74574,81895,20731,1918,1366,76367,187321,54494,24366,21690,61696,33283,107477,77499,31112,414383,74362,18463,218441,120929,59848,258629,201924,69269,454,19989,13054,59894,3623,58908,20681,35723,78523,102680,38988,184112,108087,50944,132704,52966,21699,18860,96349,201411,82697,85395,95658,5093,6427,177894,44191,32755,26961,155739,6249,31310,81030,26574,84311,120155,86730,113535,7424,48888,13516,45747,98098,20077,183995,81945,43210,26704,40420,75831,45648,11180,6855,57927,65528,124096,34851,2598,156633,107572,127352,38169,123845,60142,62722,105584,232364,23211,68120,1601,22169,89299,747,258039,80572,7258,152249,11862,101204,8834,121434,33761,19175,133142,46343,40178,48723,3589,41977,30210,38868,62257,10087,82658,87827,90646,16415,47552,351723,28298,72225,91146,272760,1701,11295,1652,109651,300747,51863,198800,29446,11794,32345,37538,22356,33102,37590,113544,37970,11478,179743,25454,103417,59905,221970,105196,145604,7817,164809,102360,16974,75840,255333,56902,6659,1954,645,59400,67769,7689,18675,5215,13793,20536,27852,3387,29523,259718,16860,94625,43143,29245,15848,233581,22685,63631,78557,22836,133302,84513,1348,51826,47129,98836,58284,1830,1749,94642,10933,6145,12506,10975,13879,103781,144434,10268,28409,32346,52968,121567,107374,77268,23686,35097,10501,155275,15303,47136,21102,168741,55332,90385,15996,84817,681,137803,25054,142275,6163,38175,8056,124296,240642,65621,4934,178205,16101,62803,60964,18230,100622,76465,44689,14545,9543,47514,16852,93380,28048,12047,107106,37575,101485,77047,57326,34819,96137,76916,6469,46264,115983,75768,87668,69942,13027,165,8373,114231,26434,52844,42799,182044,23580,146254,38081,43236,33883,146220,382894,14606,46035,36481,166621,35417,95382,2957,59384,60428,36358,66343,75378,22267,22950,83528,17577,56474,25285,4619,179691,75355,95836,53295,34588,171410,4487,14679,84208,44015,18562,109133,54101,11531,86052,174479,303157,28095,9953,35642,14564,39802,16145,77606,117406,53038,121117,53624,22062,1212,7632,127157,237292,189087,10478,127345,102515,181997,86752,87623,10966,121602,68783,68681,83042,114380,138349,191305,67176,50085,39016,1427,42384,1412,67118,122616,72389,25260,2237,13576,137346,19938,20304,2191,68759,5373,61364,238507,75814,23931,69565,38993,131741,38364,12528,87762,5679,129853,5310,186831,32653,90338,260176,389531,108118,26843,43985,50175,30563,25106,56965,18130,140428,4542,165503,117991,24219,229605,1819,129663,1240,3797,76093,18398,71339,51919,93043,27175,47060,216257,6483,35051,1217,16512,80798,129064,13225,69339,8548,237079,72298,2575,34280,51379,117910,55671,53345,247552,29486,39328,140821,34681,57045,60177,5004,90269,78522,2479,322607,48474,61296,13057,31558,4678,59271,6699,27044,31988,35944,12503,83480,4389,136508,3781,114121,70279,4488,155829,42214,2898,68191,75695,305850,45041,74344,106509,30087,17429,93292,12477,290,23080,114802,35714,18751,26554,105424,17775,2144,2412,100610,65192,113975,52975,180272,135050,129815,76238,106483,21440,63186,4260,46189,9711,28249,4169,23429,23390,8324,141585,63809,67668,38457,38063,39226,59972,1189,203916,62368,14403,16949,61767,85801,1739,40147,35049,76757,33124,62102,15780,103593,103009,53484,22952,67973,114645,6566,5245,50462,7601,8288,3513,194571,80276,1908,54592,5124,58571,2513,6800,273997,193904,1119,17991,117245,2508,129156,82366,26278,71465,63341,56943,39662,106116,94966,156875,9736,2204,122308,94418,27134,1280,24539,49022,45314,3764,50904,46424,30699,28087,293839,9400,33646,40165,822,147499,50263,116179,29085,11863,31314,5578,17797,5104,12454,1604,15342,219206,10232,67800,94261,25872,13565,90339,78971,75377,26649,41184,47695,11514,35369,20767,14227,41953,309396,148270,147938,33074,14453,27499,109019,39018,25738,240196,158931,52820,8612,95853,21524,137010,84901,70869,70021,116794,48404,38771,6732,1070,70990,187297,49140,5238,576,3564,253975,16027,16483,2811,37775,19034,25259,4053,2e3,70083,95774,19713,33431,92703,91314,42381,288770,48194,95985,3991,77418,13406,241328,245086,56533,35275,62725,9246,51924,70181,95331,16163,31410,79016,39312,120878,119371,275987,80124,27712,9186,220,23598,146167,85209,68238,282190,57048,31273,30555,80913,17594,75779,59160,135002,101219,189377,29225,96735,60126,62522,104e3,27620,86814,17240,147533,11001,5425,43682,410,49460,87270,69480,46315,59448,1816,76201,9431,11788,87960,29063,65539,47347,11678,33846,7008,196704,9895,6753,8633,120892,59970,572824,115934,6646,202559,892,48351,37611,251282,57823,67263,57750,26527,34485,90747,7685,88370,6144,64182,1709,41969,21458,62327,181657,49247,225330,122600,114574,107124,85361,111833,63243,71420,15655,191178,72430,18063,51425,54002,12364,53225,86557,18193,97580,41232,138398,67821,128724,8944,233212,101353,52099,42127,14006,120107,32789,32132,3498,18123,33758,56058,5779,128760,59888,98869,18445,84702,51911,13234,218379,20093,39031,8074,70195,20708,23462,24355,131384,60189,26390,10403,41060,7140,10781,49410,42261,87202,82566,41663,43105,60276,2768,5733,74176,28329,2297,145430,131632,83615,122915,105441,655,224102,5284,136426,67763,16294,188511,32538,61049,27893,3394,13951,159099,28542,17930,145360,9492,190122,32285,78855,26440,13570,58648,73908,4239,124561,2444,74172,53131,11468,10794,73566,11623,35343,64710,30481,4163,10328,38309,29901,10538,154377,76132,92405,24839,11679,3465,13449,11637,7824,2337,57754,1260,14458,41118,19878,38661,13416,159180,37074,163164,54137,28627,52134,184900,8520,40385,29546,30502,22386,66527,107458,6850,24022,47983,30603,35083,8934,304066,39500,9,28261,33026,77251,9374,44833,116312,34990,29236,63563,125639,135405,165398,159055,55690,88141,69643,236964,31983,25572,20436,36746,60896,31850,16179,11828,5888,3043,66368,9750,31167,7915,53111,36430,1333,64344,93659,20061,60596,180191,51630,6792,30244,43509,101058,22409,420,44210,109783,43223,27030,72477,72831,32679,29235,7675,47556,12258,39907,149412,84926,118247,24692,71717,105038,86009,45941,41189,89453,29856,52543,30627,226798,67303,59230,67415,34408,1367,99685,16867,128419,52147,4111,125381,117881,16173,44093,102224,31575,23234,24870,83790,127407,239098,3200,994,1255,100903,242275,117266,55116,38205,16140,29662,11307,40414,208793,123355,56470,4862,75600,30119,58218,70828,24075,26974,7802,192353,4851,5475,78720,66596,3409,28573,64396,30381,30690,59859,88256,5406,99945,103064,34463,37727,24238,86643,60088,4057,23741,5967,162904,38240,28356,93858,25510,122879,6897,3278,7057,11971,4400,35461,211413,21395,59615,39471,87233,55795,128426,3051,22470,41950,14705,3974,180108,80476,78442,204996,91987,15634,67610,139015,142373,35611,51134,10387,4353,153456,57749,181039,14183,68447,151532,21107,36452,20551,3186,46247,46383,129666,88736,140662,146243,2066,8360,7978,64818,106963,17896,47801,10723,114821,223295,74192,3293,3393,16987,74064,11277,91622,4270,29828,27951,387869,103235,1374,61988,120083,477,145892,128378,11779,211263,61354,18221,17869,46530,83061,108538,157981,90608,67199,95080,49064,195814,12302,66307,10348,231346,160732,112859,63633,146558,21271,31037,198802,47622,12862,95710,3910,77850,73961,85585,34752,61e3,4082,24595,103679,71107,8208,79568,150019,16615,24961,139857,32664,197366,4559,54735,32696,4126,162019,75698,13916,70108,159638,19834,9349,24675,175560,49643,18206,52459,27992,10809,88865,401975,133172,29e3,34558,30915,3658,25834,42430,36562,125265,18182,10155,40149,97082,208980,19575,60853,90529,66545,9600,789,46420,2317,88593,55595,98980,115302,5742,169155,1073,177901,3472,11189,63711,78643,65472,50459,127979,93,42202,67053,21720,157650,11145,141378,42033,22824,85705,79114,35584,15974,1510,54172,28562,12451,104226,19190,97151,73024,20948,5151,81741,21499,29006,84183,198074,54003,45120,170125,26240,35177,28389,64863,79974,60778,176915,232183,45342,2038,80253,41564,40703,32689,5430,100689,5366,23007,134279,14266,26712,73993,24934,64242,52113,102887,61801,46415,201049,54251,62133,122757,164883,30815,139966,2319,30842,766,13362,10287,134518,86111,81665,82440,28333,43019,18963,8804,161944,23439,102144,101145,80029,39052,248708,30350,117340,11878,128467,974,138625,63961,5237,74778,61834,67040,43814,13690,65947,33809,232476,115258,181745,28824,94013,9510,10246,93722,81976,7217,114383,3493,16014,69045,72692,12145,80981,9507,6692,1620,60820,330444,35474,33962,4797,7053,295463,46445,27026,12491,77988,49524,35675,90947,29114,166705,101385,133782,32704,6186,84595,176031,185623,45966,151302,63069,1699,107491,947,15458,74452,196212,6046,10498,12163,10239,35191,243951,9277,9090,29539,54460,22820,26514,112549,60372,51753,48756,21812,70861,260326,41,44222,10441,16961,48148,138771,216194,5914,52153,53400,212036,56519,26245,10117,45888,15294,138019,90913,26368,43842,42111,23348,6082,194845,161089,156206,51546,11647,30759,302912,262094,8635,78876,26535,35283,54183,31183,85484,147873,12989,5197,6356,72894,65347,20150,27370,73787,1493,45918,12366,190217,20724,13858,10981,67449,81213,7553,14115,72242,271517,11842,48310,88743,143726,22177,3290,243231,58452,62937,12592,1654,40066,33477,13751,9921,128442,15868,7106,75236,83773,10775,36938,10482,170465,17368,17469,161508,32752,98340,800,19824,264456,3901,87319,2867,26782,9630,113102,185815,24197,44584,86366,40224,3636,140916,31731,267731,9567,53678,72984,29389,27963,17106,50282,284911,60170,8322,12608,23374,89652,5268,39044,229766,8869,151350,31436,177342,12269,183212,120418,116270,2843,78888,69192,7865,184099,1086,129897,18383,70508,20242,18508,229924,124569,35749,50589,55626,9884,83115,40971,30671,18135,14452,38861,17844,201826,5549,26413,17189,13561,38539,10679,143331,3314,36785,171194,49685,187713,67506,4618,104039,17060,195080,50648,33159,19238,67559,134840,28599,157523,17130,38064,117398,94355,31918,13575,34538,40326,13997,3494,348283,62481,26862,3603,104426,244363,153709,112487,304612,199674,41239,35545,54869,293005,28223,26277,26899,4533,18518,15492,38587,80488,70485,160395,263,60162,11382,222152,4696,250751,51921,182609,10707,48463,46243,1227,49111,111564,46502,33342,56846,68541,63559,858,139927,16654,229375,76759,26478,33205,95828,23399,92945,2637,35630,28470,143992,50214,14174,21456,166191,65665,1711,21594,78019,97599,111701,36,147151,110246,189022,43021,30397,40757,131935,42065,73335,48039,26596,28984,15102,2361,7421,202167,69744,43766,52826,3642,83304,33873,75140,63169,192389,36551,92748,13039,123959,233220,21738,84447,77230,20228,187852,19095,25799,92136,108774,29237,53947,2299,118106,2687,8830,42331,202924,33667,2023,73763,30704,19363,19779,16737,35629,48081,24068,101013,162338,291912,13749,24745,328289,167679,70086,48299,23306,16732,17801,43322,54589,3586,63653,43624,53474,925,109177,251316,43805,13082,19511,86565,142182,92461,17117,101033,103319,64589,4022,4351,235897,5352,82705,107142,46391,156084,5860,61365,10558,13045,7717,18357,33922,12590,33065,6928,46993,783,46937,67846,8952,26295,6107,119656,18799,17458,50747,4229,179559,112727,118080,20683,41464,125468,51560,49749,44231,7359,35339,62988,136487,67015,5208,29150,24956,105186,48858,6143,18097,6972,16404,73489,58742,97196,36357,164616,5834,32267,13746,147733,15113,132091,34127,106298,39729,106426,22294,9780,15602,36213,71502,42808,66802,599,60755,5851,39120,67363,108623,126368,72770,91263,32486,30596,151717,7951,52002,43103,11768,68942,40901,39344,24037,127500,116890,48403,16926,86750,17745,48648,159545,34460,58419,5634,114317,67865,31462,23352,24010,98185,125708,69686,68337,13610,26271,70691,2980,4768,27225,102402,75453,28106,8104,6931,1176,6274,6475,112635,22498,6176,238686,26832,28893,90319,14441,15682,15087,39517,45270,109134,104440,45965,47645,81772,7876,52683,87720,12898,4505,185665,2769,113401,15664,57592,105229,137381,97059,119268,6876,43309,33886,128363,35476,144249,67013,143587,83367,25703,91436,59347,53236,2289,16519,19844,46309,58558,99834,23313,218816,231303,36388,51333,183535,109792,139277,54306,90139,18235,8275,32710,37677,82464,86025,92204,88842,117723,37570,128723,234242,76350,73795,34896,148247,58424,11105,11744,45746,63372,17118,49772,199520,81902,38004,22911,33752,3125,1995,53792,4689,26909,108150,146062,69674,41811,161444,84855,8999,28561,16731,93937,3189,21967,24890,22943,1356,145300,51569,28802,517,118679,31703,40607,48098,108854,25003,10233,73969,177495,5248,24516,215347,146192,48712,60626,69188,40735,5866,586,101541,6509,47590,52129,5969,222045,110933,25733,24223,65339,62812,2414,155418,35819,16022,78423,43138,20995,128255,240673,46745,236093,72176,57085,97841,61248,107,36068,193177,105427,55726,215229,20446,47228,100420,87091,14429,121708,23605,21157,187721,21880,2997,203976,99166,95068,25877,7724,98925,83401,4829,13182,18229,13718,239662,38653,116505,153497,30589,89029,38962,181302,43853,78872,180301,4786,248240,7401,106136,112590,77745,19731,60880,77789,125748,135487,5975,48627,34084,12419,215770,47557,254582,10364,106495,21856,67539,88981,38805,21428,48732,42316,12149,16078,52808,25327,51322,33850,51147,12253,122354,46077,56483,254553,115417,81834,150991,94662,86668,7381,12841,100650,18218,15741,22372,68294,50705,15535,84660,61887,22553,72299,31361,24824,17743,46820,64288,31582,77006,111674,116384,30760,80920,86149,77192,51979,79691,60342,122805,103800,240873,160744,233114,78962,54920,8608,3484,316104,72548,24337,5088,230040,21926,10172,36838,26,86221,83458,102176,12062,17571,41929,41170,28428,68239,41750,103930,2634,18313,53019,34825,97837,63115,24606,73157,152474,14715,91439,37033,109806,140259,30668,174760,380,135597,95673,136073,65073,134249,13829,17279,122305,4420,46444,10237,64848,203623,70728,10349,182885,65075,24519,25783,40318,34139,22222,63394,55266,102764,41422,20126,65100,90408,53640,35128,48932,11192,38935,96839,34782,39492,19396,41332,6250,5511,19492,51304,25936,104466,54099,73771,86115,5080,7669,30891,111700,13931,25276,72289,135447,14820,258641,25265,31005,281179,75286,393,95359,14623,13584,6680,101227,80173,44933,76666,54542,13244,39348,458,25379,109451,134348,81143,6959,65554,12027,51311,8716,57589,140731,28467,23316,17272,30458,25980,55229,77197,83798,28302,114784,7428,34548,26241,14712,39336,103304,18928,54080,12870,334,87722,15208,16895,142098,114262,39820,83913,57817,28682,7721,14900,108672,11250,62246,42849,415188,1724,26555,24549,25505,26443,107450,145899,61035,43528,6901,60726,65906,267741,21338,147590,42079,18924,73017,135236,15393,5206,4026,84185,1531,5988,113890,82647,303391,7386,69844,71611,189865,76523,31877,13315,19314,198575,32821,1928,67641,25913,104475,103489,3297,70391,18406,15446,113347,19295,93790,27856,1792,167471,116449,8541,4408,41757,63233,25765,86680,64501,27034,24816,34975,6079,4486,49693,36229,16917,21581,62426,27862,11612,54284,35702,194034,355,24277,48262,87411,70504,310164,118018,12516,47559,43502,57433,107139,9290,66533,80863,14634,34312,91725,28606,21342,67241,72355,43244,375789,37402,174015,105070,8342,44167,67494,1890,16365,11723,271002,1865,47918,8350,45564,27742,25110,125803,8553,49504,81925,62211,4534,15491,19011,80373,206920,667,102405,128623,245524,5553,113309,192739,65766,19567,22832,261958,29679,21293,71134,20962,105123,24721,860,21752,33448,18372,157167,94822,35770,173224,232737,75729,28937,46828,28062,25453,5207,140366,36665,30652,6169,67920,150458,92040,23186,184604,92330,20891,176492,49427,27828,38305,42495,143982,49560,25503,90043,29747,65328,47830,12932,11068,77721,9003,25213,94205,140426,46090,89945,138173,192691,33329,112232,129905,35709,27514,1841,19957,31411,127476,53572,17497,173549,55063,175135,19841,69314,5192,237921,117660,150697,4060,273045,50414,98940,65348,153665,164423,58804,156695,48994,213928,86036,28608,8355,39574,34540,16927,135680,18374,151587,10830,53805,16878,16623,4282,48030,8537,14986,46102,13062,72897,72,33050,108227,39451,45935,651,113320,40535,95176,57450,48843,5003,19019,10407,211163,3848,1068,4988,32091,30095,41692,15099,43602,107434,50744,7627,171349,16313,150832,352665,207750,33937,38256,51091,156e3,87889,90663,84175,24908,114900,50365,31494,83829,5398,169342,47521,54818,18935,8356,43094,41212,174536,10082,92550,6678,60614,23355,69721,14796,34149,128830,58187,3179,208,40325,28399,225029,401412,51150,31580,207268,6657,10993,69818,64282,289845,23308,12961,38447,6681,52944,31855,2572,47646,120728,179148,37240,45196,218274,4816,3695,21961,50084,35209,18073,51452,27004,6100,33941,1377,84831,171214,85,141510,9078,99227,32610,6417,11718,49868,65579,87902,73018,49062,46280,61742,21512,40862,107733,15941,29168,157765,144919,14487,5767,158014,140070,7241,573,71584,16921,223566,40331,179473,35081,47926,140885,41508,52104,59180,42310,32811,29048,123517,102413,80208,10104,14746,12649,153641,126022,37965,113017,4171,83,142592,2809,6362,50416,71323,116894,260776,16204,1524,5760,30351,12658,20703,54403,36083,45408,74772,4946,14485,50759,111222,10890,2195,167147,92962,130534,16283,177256,35016,15472,210156,151187,73922,117691,43250,52051,37392,24811,24358,30830,5775,818,21969,1476,127322,151783,58392,31021,106913,65215,89407,90802,28531,11690,20234,95249,44602,37256,18707,11928,5161,4410,26571,51903,49768,22008,25252,65780,209499,68769,203726,13249,137363,48845,86823,6658,5674,31881,1083,1823,108676,34518,166752,13791,14287,91576,91429,8665,11529,26401,16191,91972,30964,5254,28486,54697,79613,66520,18447,22870,45203,194466,22822,51703,12278,76716,44595,73455,33546,12235,144843,36154,51247,11116,33040,3180,225753,60864,1972,28469,12891,28879,10338,144157,56294,353058,38302,41447,87532,110616,27065,168438,6557,1213,50804,144643,24817,2390,136531,38174,247513,16190,4059,122791,131994,137430,39506,57650,16305,5188,54309,106128,20628,88071,67394,395446,250285,66176,91254,1399,114196,43915,60230,44853,27206,106353,43013,18733,345105,226453,51202,16607,57106,117175,35492,10476,89598,127439,15187,39624,13688,61570,10615,31111,59370,6238,175252,32143,224492,41388,95408,34384,148238,78307,38959,9340,160091,61443,15737,11216,41244,170,38299,102443,113097,26382,14027,33707,3957,76300,66160,19431,18900,6952,1717,108656,82206,188021,257335,27295,43999,41210,31777,46956,57457,12657,11489,15697,48060,204748,53583,82422,284790,30503,137341,8120,19615,220311,15991,10217,63424,9808,67431,70976,98221,4491,15177,28535,144789,751,13230,2394,1504,33977,132104,30316,22230,931,97193,185240,24826,22687,174322,15307,22988,1390,188745,180325,29580,59068,74903,18994,29195,79,15436,7622,38462,11566,138710,44828,45774,37768,99236,68137,84083,19282,22698,17134,74807,126662,173497,46248,16938,119735,3212,28292,213652,49013,9975,32180,45660,86250,4801,68788,95490,77482,113751,11994,44624,94452,46839,128497,100316,5798,58588,73184,202987,65417,37790,88524,1606,43156,97964,105717,34947,11203,100060,37742,130074,93653,107799,94311,196106,41347,8035,10780,16390,27883,118236,167395,1979,25006,19375,31628,18916,144723,78502,114047,103107,86492,107686,5844,20934,206963,23556,22591,16562,146333,20167,10471,117434,33085,2863,9740,36669,41849,37271,22790,18209,28979,8231,12952,54408,21731,25130,45208,55748,138120,75826,414,29593,9925,292865,25999,683,123149,7036,92159,86055,61827,103680,23176,54918,58466,57578,13305,5709,86479,16697,31064,17660,200919,10770,49793,33423,32370,52047,16488,62555,6459,8426,83493,7763,59725,82812,18628,67760,79405,68557,9612,7673,28102,56517,69620,171797,32458,29541,15870,81109,32080,207644,71495,21202,11039,91036,61230,2810,130800,32260,4613,60590,37112,75214,33979,126402,155062,30642,63875,12810,194463,82799,47664,16725,36685,43367,61099,449,172150,102867,21691,301838,36745,7130,18671,57316,34852,38034,54182,35578,65900,99486,19771,3456,2658,16914,99866,28390,28109,8262,21147,34353,20006,4228,137085,1675,203023,283196,198286,214375,163329,290603,152574,40471,83506,30068,14730,23177,131539,34759,27668,32178,71896,104799,116305,85430,119262,42860,25160,8911,23428,49437,105322,6519,16203,6349,74711,1230,38045,8540,75165,44736,25909,51026,317034,4984,32281,91312,27060,44431,17817,45363,155937,239085,35697,59784,91993,29531,126740,213757,76560,167776,285273,24262,8237,65030,41160,74437,48804,118916,13159,37842,1031,75349,1478,11655,108777,23435,277425,101734,67469,70231,124711,43532,28514,65526,54956,1e3,21882,17728,25302,40952,52214,149632,1999,2111,3259,63362,89961,220561,39777,26335,9063,10572,12416,34551,34623,38604,24723,5947,15588,69927,66252,119177,69173,46629,28714,70715,212408,20521,406913,74380,11716,50659,50862,37009,88460,130101,7210,53853,538,65120,151950,55806,163748,52837,13153,21100,16674,64536,6091,138201,44837,58547,3723,163,2177,32288,85454,34033,8497,14282,25742,10535,10741,79559,117493,243787,49337,100718,79495,40139,42956,7551,55433,15421,31509,23034,45081,547,61176,53434,328001,8470,36263,30145,4519,74173,53935,11845,73774,60211,78025,3,4102,73782,109293,315332,48412,26683,13714,6865,20128,18490,104141,325,39470,171970,115860,15707,7268,73301,74336,31370,2368,111827,107757,136231,142844,97138,96638,84053,38691,23801,1588,10573,122098,77039,240,186135,146101,11996,18143,112963,46171,155836,348769,47795,121213,116266,132515,3344,144804,31286,99187,255838,129694,35894,48779,55235,148582,71967,65282,15174,13920,47080,6147,108242,157593,125025,7136,1286,28957,127956,28402,98813,20805,7532,109417,40610,5041,32958,15142,18408,108596,33543,50517,27748,80114,233434,91447,487,37094,100048,30541,43477,10639,89862,155868,37667,8726,60684,237903,73408,99589,12190,38739,97348,3914,13594,2680,149016,13907,30171,28343,23530,115225,61104,35821,147679,14337,4297,244282,24085,326976,56428,7851,21303,131620,71446,83253,68692,111870,5224,15813,38197,49026,45057,13660,3306,76345,40671,27905,91072,996,68527,62085,91351,122634,55109,168209,2024,27560,112707,17352,8306,167115,169921,166958,5031,46020,11844,67284,19130,76185,6920,32849,5450,14610,22451,21002,17392,31872,66682,84796,13709,40210,59898,12029,8719,53564,21462,91884,21647,88379,194428,12754,37797,132826,160016,22567,54383,53186,77611,31107,8339,4694,19185,90355,23597,17222,140675,28442,23668,55977,9128,61555,28774,155229,17658,9390,24379,69357,15752,127381,239631,62460,93181,55913,45133,140155,18676,25249,33164,29581,82837,67223,22362,29975,7317,52813,1943,29613,20012,207130,49617,49651,5636,15334,36313,29226,28084,95247,72072,19e3,224932,15811,114,32127,38097,37508,88507,37225,27359,91626,12193,69279,20608,11055,88156,92808,2152,57259,55275,72789,24475,104414,1708,9882,3818,48661,66897,1631,34806,227930,85815,87753,18321,250664,72733,25107,206797,50891,8082,196411,92596,96764,152823,65514,22819,387277,62176,51225,40329,15563,189,3659,73670,64357,51793,275136,33482,86653,74615,67058,11318,125720,15388,22388,8267,1730,102663,170910,40784,7144,85373,13040,7088,94309,583,44224,140424,77439,18496,164026,36578,4722,9151,5824,63365,26510,35199,40500,79277,32495,44614,35233,9566,203293,152144,7097,2330,183480,98629,13423,330887,44130,68600,30939,97829,31012,345465,56747,94879,4939,160027,149761,99423,46099,32251,15332,8761,96094,128555,5763,235318,222223,55729,30241,55420,201746,3987,81382,8259,49325,23287,7719,24633,251100,92311,18591,110533,64759,170260,393860,7175,21144,132887,3593,75346,101277,91109,16387,259187,11627,57459,173829,44694,55780,49797,89192,120443,62622,3904,14814,23887,1027,112258,64955,99800,11132,66353,36202,48624,18158,88481,96882,43059,11040,2455,7077,21651,181159,99126,100434,61388,68186,19161,110468,120052,8819,55324,41494,7014,37689,3618,87729,92615,207943,9823,128657,12587,15857,6379,67628,51216,71775,157617,63244,1503,3864,218754,110864,5769,21492,7243,1192,87921,85529,31512,18537,42698,35350,73510,84474,34301,8991,21013,35034,566,38832,19838,35586,37216,39413,55006,12178,59742,856,84563,6900,25632,17437,49786,30723,13847,70845,4044,7843,23944,235976,55530,48942,6518,20939,73769,192653,52936,95207,23895,132542,142982,22632,87452,48042,54018,178468,10728,26230,23559,363,81269,142012,5718,346258,31456,84333,246476,51018,66692,101804,120570,39962,30373,70593,2864,60541,19425,54209,104092,7201,31545,48018,25865,15442,46257,40443,8328,6451,111782,47527,97754,33046,470,245116,31095,39,91934,87208,73470,36708,36521,12801,70624,36272,8892,79768,12427,55454,103756,5908,52390,62962,22720,141138,94634,41689,128402,126390,6628,106394,35527,134394,82727,254651,194502,148064,89549,3202,28359,957,21954,27906,49840,142747,8307,24206,48978,1186,71728,133038,71474,91306,6333,110959,74600,70387,18983,62609,56057,22970,1147,135850,1321,28834,3578,59715,102227,32827,81415,99952,55636,257598,390,22702,35701,85872,402916,39216,189795,14929,19467,10112,144422,61514,5279,63421,134686,41436,8424,51925,10598,132295,124416,4604,194739,210929,57866,31829,51626,50007,9976,91878,61906,56168,81906,60918,61859,40017,23059,16887,40927,62064,12785,32893,32913,21782,93965,20169,44387,79084,38463,11457,93950,27127,157050,2697,337088,5116,54128,48255,33279,8821,27352,25515,124022,65710,28906,38557,33390,1722,104435,72215,38551,12094,30978,25113,6671,37355,175109,42862,98024,65406,221276,59624,118012,64637,78760,86697,21426,1639,40350,12584,67193,84144,31396,7863,143011,69629,63112,9454,28666,65798,46372,134721,6314,51402,30837,151922,2847,38676,38008,92823,136245,17540,5504,109295,205242,37606,5211,214892,1586,20670,208711,137743,19328,40652,16995,20023,14657,154919,34422,12996,13918,38221,47690,16398,2959,37680,89122,6721,198469,91876,172043,83898,101992,26084,94570,3635,76958,22853,76497,38266,176590,168403,44464,142840,79180,184594,1984,41806,83147,11985,6546,366068,59732,24533,271505,8736,39084,222992,93429,28962,58985,86665,8432,30028,14548,32439,54424,165029,55175,27458,69046,121277,46168,33732,20661,24581,135574,123110,37556,79260,72611,16957,12939,46162,58238,44907,72936,253758,41324,32518,96480,11949,124438,65280,43256,34107,53533,43531,37037,28366,45970,32741,173438,6121,194202,62969,26355,30314,58370,28455,1848,50519,82830,90393,21761,295490,10936,256940,133568,44050,20269,4089,27457,21610,219460,36743,14821,101388,52005,13124,30979,140816,167362,26054,18458,60789,34917,40447,26606,33422,9066,3452,83614,5761,20263,137238,25038,91310,101,52322,74548,42572,38084,214054,186568,31802,17665,30620,141936,37730,14420,4265,187218,49640,188208,51441,55388,96452,66659,40869,42039,60967,221027,19234,178581,29105,96050,9165,196118,157335,3738,40354,117436,2965,34136,59659,15570,50843,230035,31444,71260,43886,18316,5387,38500,168508,17406,32174,8828,103373,143806,90367,3560,18719,122310,16508,26719,2541,105429,6645,37998,73190,10591,235916,49737,87112,233941,53188,32193,79154,4544,52905,126477,7580,63501,57314,3216,31337,6541,103083,60846,49,9756,15481,1355,43840,14319,13743,27486,10222,73114,230718,418644,16706,6674,279748,23058,45273,295831,86306,2743,5535,88773,21829,35253,120938,31153,3169,16839,42847,8751,80974,33942,36867,35514,16485,26474,77775,56877,5391,48346,3882,108713,31403,27804,55248,26235,43821,136104,40118,175507,28034,203908,18732,1788,34030,106427,36958,54359,7251,44936,15356,69139,455,157915,22173,140291,50348,43275,82066,49621,54952,15216,36226,96695,66855,6936,1987,8227,196087,4631,68827,99004,47541,110265,17953,147605,110242,58520,31312,38724,329975,642,3155,34497,75937,6207,73843,6120,17249,51429,117746,3218,910,68961,319671,14938,29555,34700,1649,66673,72268,9655,76800,153087,6941,210168,27130,35398,1780,73242,3135,56689,19556,165307,8765,35967,121458,13333,70453,17350,117253,22265,13340,44265,39869,441,3742,135025,23581,33309,16543,17731,13291,157637,283005,21408,101360,63887,52312,83873,5338,233779,23759,186949,34531,177320,38069,156465,91004,19353,59852,68160,14891,1338,1072,29823,1950,28901,81407,313445,73038,84807,162348,240257,37162,138934,16111,58013,41253,102951,16457,96056,19541,56402,67217,41638,94381,89674,29481,37456,80815,151579,13937,13683,132537,19699,134545,67020,29816,222341,141235,427578,48868,129557,233342,23077,87871,16213,18728,16184,9469,37913,19680,2798,171356,178328,13216,50049,72690,71904,124644,55455,7504,29052,41036,266546,19899,30391,188755,8659,59469,16,104298,112943,53865,76203,138226,68857,139953,14125,107625,119795,173133,4398,50273,48808,54390,16466,122086,31835,67035,50971,48859,7508,46427,66477,73021,84615,39985,83076,46779,201569,53336,36443,60865,168164,143810,51393,25548,169307,32896,24485,38424,21837,29087,275813,51674,6714,64883,46169,187369,55186,76192,12852,12018,62134,31067,118303,16542,12125,10579,4928,26291,43854,7091,10946,253716,109062,39283,17261,113012,258512,47764,125126,32646,55892,80279,201623,149872,3192,385,1208,48750,5376,58738,22335,5427,82416,47811,32435,143086,38930,94128,59975,156037,37977,38224,62485,7698,50405,71027,16462,21559,136153,34131,107506,162069,63703,3101,215029,40407,4178,3774,9187,80019,17880,97926,67579,2600,18405,8351,47924,86638,70820,92206,86453,29610,42241,119200,3198,15466,67813,57863,35454,4779,99518,4649,104641,144269,33730,38073,65864,6838,109456,193298,154007,5623,45741,30846,182578,25573,157224,1543,58575,138703,146140,44971,49356,18275,59064,20300,13122,11848,24453,11973,9797,86843,2919,25530,49210,1130,161220,76788,75373,85604,34926,36014,17777,17255,51533,11676,92226,51845,119859,21525,5936,18507,28050,1140,31418,14857,34207,47859,10750,36382,32079,106909,59426,87757,38393,110042,15965,97104,33757,35344,97993,53979,33651,45407,41884,82515,173089,7177,58371,35365,47543,51927,35587,10670,23544,29306,84233,39976,76076,62097,9007,8668,28119,78281,120790,19835,143020,54968,18670,64959,20649,34469,42570,33001,136570,87796,120044,1106,58700,63951,127623,12805,83057,40212,31773,49850,7361,54336,347524,101314,23751,19569,48791,29174,49369,20467,7465,75842,38281,623,112457,60210,28849,51003,94720,6426,90047,85560,43761,3579,85105,34607,90410,118528,7224,42907,111163,18168,6960,161135,191298,5247,100584,127552,171568,20121,91173,12636,54615,20199,63730,98105,2396,40387,14438,125012,4765,33235,12865,45299,37728,82098,77872,114037,59253,19675,24838,398016,102561,11446,17069,57508,178277,65836,99941,26114,2585,271882,136866,50126,11027,155648,118367,14585,8910,123015,335383,40434,41016,53021,14439,87098,176860,201543,121888,2358,9286,5739,22666,54270,37884,169381,33984,93859,16124,89364,72207,51639,76366,99029,65812,2198,12147,174891,194289,6986,30252,88822,21284,11445,288337,160821,33034,100869,43852,25761,52882,1144,103809,1924,84458,86079,43411,13542,139276,18141,34978,41298,7276,26481,173800,33210,17951,142652,33616,33677,2210,19941,98568,2486,192414,80136,12058,235883,50963,249638,29572,27221,47034,6124,72107,63346,97620,158513,299699,40388,23235,37176,224244,198386,121323,67992,23827,63170,17838,106622,158590,26807,5345,23489,91891,55474,74834,37981,13058,5977,72552,34706,26828,145172,19904,21367,34043,960,77092,91381,4733,47446,7680,41697,5170,16960,14741,46101,13656,473,51842,37433,11103,11551,121951,13191,97536,165932,50397,51628,129028,9069,44885,6590,59195,47045,32940,225472,90345,21833,13303,29407,96615,141951,5198,6028,18395,7181,3861,14966,156358,167182,36529,55253,25942,173153,30959,27261,50691,150176,162201,38467,48462,80602,42163,118482,168,108756,26011,17166,54149,456538,22512,91374,13816,90358,131615,18132,226707,1824,28139,26860,42253,93877,77351,65575,8980,80574,22020,27948,40422,91324,76376,13528,39281,91685,82215,122541,144066,1983,193851,17283,26320,2739,194978,4790,26845,42627,61300,65815,174612,55133,4200,191130,79771,158321,52280,166796,221620,62461,11278,4067,88152,83409,31717,121367,13522,47325,37945,10406,174348,249321,154101,64912,29938,51775,17220,15776,166138,78890,84425,54121,42861,16368,24572,291647,10197,32073,22651,11677,97509,26952,35787,18424,41910,71614,94977,72318,41594,70024,275419,37702,60199,7335,39107,61315,18271,18394,33768,87884,104277,123724,7277,56288,71981,189803,49320,3352,6798,14240,8954,69220,94433,57372,28620,68863,193727,85575,42309,41667,67689,42081,22543,44824,12719,28540,114236,101553,27638,27296,4300,5353,4663,19379,94098,3758,95888,95144,80344,87320,28447,259518,12718,71391,152731,37063,24132,31911,104896,15672,103782,1521,4945,72541,23717,122632,15619,87175,206120,29428,189780,61416,28350,44457,972,1175,47233,198738,95789,41907,21953,97034,59341,22864,53713,16873,32971,20693,20954,31336,21477,16169,38370,16412,9019,3841,24599,21938,17085,6484,81198,76413,5849,72514,12320,65247,276175,37234,59796,52642,16312,57349,198507,94148,46134,18958,125552,1747,18725,151873,14901,5490,68287,29470,3689,64794,40814,26018,25692,54450,2703,88278,124886,173087,174e3,24159,179477,24276,46004,201876,209202,445,52876,31948,30206,157610,39180,18439,44124,50469,5774,96278,222758,200216,50290,45486,20435,46986,46276,140133,142326,15569,13363,47522,92583,2182,7135,16853,22998,30272,4952,63263,35623,39096,53789,44864,20053,110392,124213,4630,16087,28221,127787,25839,77481,44693,13464,113146,6983,27069,55717,50102,4760,7107,26186,66507,59145,36032,104182,71328,29425,64317,50781,47465,94298,69706,74899,22754,120756,25108,93077,56834,73286,39928,16218,41699,176763,7555,70819,50083,26895,23315,26014,16773,123079,41712,5719,31516,90427,158540,85051,183128,40864,27505,55392,9058,45224,96857,30901,136622,96557,56304,120061,11501,151448,5773,89743,7769,86069,2935,18471,41628,10114,33660,110170,49479,26745,92846,33221,26731,18795,87076,8550,2100,29972,120289,3077,72490,33784,2630,208722,50861,63483,79029,6419,39467,14302,45286,64207,9686,67513,44170,1050,77246,59266,17055,53801,7150,11111,42432,4278,94579,362117,36175,42902,41933,39002,98489,22913,74161,84773,57036,17556,162288,74485,178760,93867,73635,128860,50362,261,67455,80001,46080,35662,4368,25247,19230,74393,22588,1822,27682,235324,13798,85998,13194,235067,23514,71669,147632,23191,134748,214683,105101,1518,25489,247114,7380,54842,26922,3971,26361,20844,68642,170517,77339,123255,8963,77818,150998,48466,36806,2732,23261,11741,236162,18243,126216,28690,50546,16385,92760,197383,246558,201295,88255,67588,71687,176076,172653,169058,33906,63747,24835,157621,43338,30050,46152,132741,2770,51371,94835,6614,15112,11749,56936,1250,19027,399017,58036,100215,23388,55815,308768,124152,94803,9521,64186,8971,28,30427,62163,7616,103838,35079,29203,131235,7743,17389,10882,37420,61460,228512,85363,41581,131077,62822,119647,10130,54445,26925,19968,29016,24446,74028,24176,61448,67185,9254,8563,119129,9771,99184,37716,39514,10532,221512,258753,218630,55980,23394,32141,61924,66749,32411,3741,36475,26678,77010,44946,91203,128749,116953,20476,49625,53116,13735,102335,29376,51946,83407,67892,59212,34685,21083,1546,112982,32972,74397,1078,190545,16082,86140,58591,89611,101531,10061,105104,76319,20035,17551,52611,169061,190842,100780,23907,90413,115619,9675,34710,193435,49443,129734,11183,258877,16318,136182,126808,44635,27304,192375,2599,125648,47051,12091,23814,721,58800,40137,66726,97930,60877,74487,7942,54326,9841,41428,13762,8211,85383,6950,99177,79806,201786,296464,124087,13144,29741,41721,47634,55088,254286,106408,17041,99064,12942,64086,45233,14005,2612,55827,255,7984,13980,38574,12776,46654,73499,249951,2101,26676,25996,132326,116415,119062,50449,31033,23038,11589,179252,20007,14860,129270,21143,17796,144715,60106,70758,69842,34674,282133,44014,16774,57268,38528,24053,46373,201667,28327,471023,51889,102667,21193,114909,84132,69317,96723,67969,16134,68145,15058,28765,32035,2524,101089,98664,25045,76571,14957,86040,118506,262428,154764,81573,39681,283900,73287,127825,544,80448,52347,38512,175971,15180,45467,33086,46552,48894,81107,43213,36672,54025,76703,8053,7608,13299,56619,20752,238099,54164,105133,1444,32942,953,37564,8e3,66316,119463,106817,404,13667,149108,128597,31267,10269,49836,106150,1484,52330,76965,160486,171648,38456,31263,22424,37738,66245,67467,143369,60471,75610,20895,115528,86070,60854,40796,49347,18989,15030,11371,37578,15779,79867,10187,86462,46402,155626,93200,40229,7090,57547,108053,99598,11088,47505,41218,206017,2173,20988,30219,22919,80563,57566,42369,93141,41675,2407,182519,120495,27154,16702,29456,14349,7958,16688,117177,140375,42467,261919,74916,153569,10836,34742,49526,7621,105997,12212,2270,392377,7755,17959,25086,232152,138791,33847,13860,35316,5811,1344,71259,50452,207539,92635,50359,5821,33674,30255,2086,2587,96264,17543,42,6029,9580,43007,139248,82831,12917,29607,25786,51467,42137,85161,100698,31561,88989,121990,278500,3602,109344,37982,15279,116442,28936,30880,87894,58079,128661,126731,67392,28051,146885,4861,16216,97344,42827,147561,153948,22684,21335,47685,1853,43349,15185,59642,10229,25520,187921,108972,5579,98037,24945,6697,19193,63734,137934,75056,89740,19767,224268,56138,63643,151661,39313,70618,84031,89723,84074,13703,85626,35460,8867,64845,3439,57906,99776,63968,49270,81130,34356,16210,23547,36446,34090,140028,72439,2221,22163,57058,363492,113754,18913,95451,48663,54464,54037,176097,68425,3023,34906,29482,117389,341780,80431,58330,16753,92616,60907,94846,147486,4498,48646,7773,46801,7778,18946,464978,47558,33223,177444,7328,15626,63337,94700,11743,9351,255024,39098,16447,42647,96230,39769,58840,10068,63439,35800,65843,58823,413844,9156,51258,7434,61791,85018,6872,3692,28096,7121,33024,6009,75532,31997,192535,9661,3304,9547,14753,31987,25314,55689,15896,20430,39472,31340,99744,25398,115569,54883,28719,205423,23071,57855,64638,149867,25671,82403,37616,20668,39989,77996,74948,140555,175248,64810,36515,46595,4958,248773,24045,28728,136673,168704,20804,114833,100325,27135,21205,96151,153134,45992,7093,13992,76047,1980,19432,145001,75159,87462,17710,1013,45556,34297,144882,20648,26061,11319,129567,108555,18872,464580,33386,22717,65948,167189,5603,135042,79542,8801,202632,18114,91882,5973,5239,67315,4431,60916,47819,71693,32597,32606,18183,45072,80329,76385,24749,51305,40314,156514,14693,130345,13168,66214,18029,12858,34801,27628,14544,10823,40522,40185,33739,148694,23548,9923,61012,28859,17933,19442,34364,99849,164107,141167,30629,21054,6744,36491,8096,42474,41706,155060,30650,10600,163442,1143,96655,61390,52359,7559,51568,64256,203854,4467,22453,14504,436398,7878,6980,8293,63610,293747,16167,35763,19627,147603,15419,18032,110744,51346,33681,54571,40472,48615,39073,21604,13754,173027,92560,11083,47299,63062,11813,52007,29883,9734,139722,15953,1550,20651,13616,49306,16113,90089,92326,7584,30712,72424,164858,6831,152871,55746,197721,34167,196442,6022,112107,55215,7538,123381,4920,43539,77165,8939,50392,34192,20225,79762,22505,58667,40770,29788,97180,82835,4568,8579,13273,363569,35898,49983,436,36598,3237,131691,62418,35591,8101,4073,379438,65218,76072,33887,2968,27573,212619,288680,68278,72851,150504,217896,6913,121339,22017,35340,51072,43616,75043,31437,10833,81487,4364,22968,41454,106687,85446,19863,109625,149241,524,141850,214404,54376,657,237023,9401,108137,53800,32474,49712,53334,126876,27337,45552,177696,8269,15036,12097,42240,2328,125374,119295,99715,2500,19624,39441,27220,102691,60957,94543,39101,18566,67362,13975,78230,25017,34017,239007,90027,39351,41681,35354,43822,1043,916,58587,141983,94818,38799,75459,41114,67432,16195,36606,59568,22272,126769,31424,68659,12287,134302,257977,5756,207285,95637,47248,117689,19583,77451,22373,12200,54993,117118,34244,29386,34562,53819,71267,64172,77665,49368,7716,59301,25749,45426,194789,17297,2650,1766,32501,45198,20403,20984,6600,14171,94604,19037,5402,29896,9938,59935,109708,88081,145182,44844,39167,352626,164173,35374,45982,6122,154,73419,220487,53834,53601,17992,8609,229321,5610,68098,66815,71012,95069,140968,27396,8957,134489,24656,86659,56598,134852,17316,123838,255436,6613,41610,138033,81452,32023,32396,123687,63398,8693,29712,30407,19296,121188,3551,36099,20032,111948,56624,16547,27453,35916,15378,52039,56849,13489,22214,73177,53097,277349,2157,14029,187886,10260,141743,246460,91880,50869,3788,49486,133566,54950,33120,129337,53768,18333,9525,26902,312251,10297,9020,70759,16647,112432,59260,84609,9818,82766,73569,468,46001,75780,55028,52106,11498,43645,108069,17150,17753,29417,16705,31799,9606,289,122254,115975,8620,6133,255357,56908,14456,133464,43554,79224,11247,29630,160,12756,25464,65960,350428,62521,321796,100359,67358,35169,46172,113128,48988,88868,31094,33266,6847,60887,98188,49659,69117,92977,220228,13947,80181,35103,62170,97351,13475,2440,199768,19498,36597,46971,25234,67806,62881,84717,73648,181966,10488,94149,21550,26655,63436,48375,14405,165650,9621,24439,28043,42735,4490,29963,56674,45373,1934,262446,50855,67098,26898,5261,52696,40644,33900,9440,180286,87162,22940,19704,26936,69769,10254,101759,27406,12243,48e3,73926,113215,54935,5726,192787,4312,106216,9366,11550,52949,23457,212271,277152,133895,108374,6191,96477,29980,218916,58024,54696,40853,91124,65894,91170,65908,252552,6793,29212,15389,44516,122515,52617,35058,9017,103536,39510,49136,19242,130652,662077,74699,47024,31422,8517,73351,24399,13867,128360,4810,4434,61779,111983,61036,17798,110240,59722,102960,39688,10001,23803,23039,176498,56659,44814,134295,17188,77577,74466,226175,102472,154333,63900,111747,18062,41171,79669,32773,408933,42562,28931,30907,107388,43487,2946,240310,23938,24354,319,184983,7927,6488,1422,10790,68809,68209,64775,4361,202,17123,59634,51200,44391,18188,17843,2619,74278,3230,9540,47187,21702,36274,56894,43907,16310,34790,16866,6150,5561,13587,107545,108873,126867,86986,28640,33427,19017,5762,80637,17430,46903,2047,131055,25958,13558,5444,47152,13900,44563,122857,45348,70863,39593,54332,38068,33637,318,40310,143467,18502,24520,11377,62013,28942,27246,28269,83545,17999,59015,90707,30065,15161,34720,1263,37008,2012,6060,98575,92933,5721,299,199555,24578,29223,2985,743,115825,109523,136657,47454,26378,53586,3733,174945,93340,244456,5693,37386,28782,89767,27545,23573,18798,136425,34320,84778,20041,48453,38215,7477,71958,40621,8773,5874,187927,105965,51100,43533,18083,8443,10180,43597,2003,183999,69689,12216,129696,146188,62389,34044,68410,12765,43273,26949,266807,3345,34477,79197,5688,47539,213110,21634,22257,50092,32222,42346,39530,63668,98,134978,74022,5152,59088,174145,37220,9934,9545,118937,5724,87240,19875,15784,40143,23263,87513,181654,285152,37881,263241,4966,43934,10433,186657,6470,74416,225854,25908,142677,246262,32280,6192,75890,45546,143264,135305,29742,47013,77787,11732,126658,8763,37950,21806,57557,113464,89465,108995,164574,23894,22996,23169,15369,23117,17642,130607,40503,36239,280990,44666,9981,40427,147487,26869,168452,32886,32991,46798,240839,15111,70502,65697,88548,44145,28701,48767,31139,206777,35659,181164,166262,14554,171445,31786,66523,76607,17956,6507,31279,90476,116611,167918,6560,1243,115324,80128,41867,55897,187323,37069,32596,189444,145931,13390,105530,65709,26805,6999,55714,41300,22915,68951,22138,21120,22264,10058,19945,33635,56123,99085,10032,5818,6016,46649,57476,35264,94413,112522,262288,93686,83038,14341,23204,28807,66084,77987,6101,126673,7133,38126,5923,122091,170240,97772,46874,215746,43948,41622,3272,55596,8332,146411,251315,13533,8561,81521,115449,48616,175175,2063,186556,3036,134537,75772,29728,82360,22973,186559,86348,89100,38388,82297,45610,2613,87082,9986,177812,57884,23591,47485,42543,33582,44713,74439,257444,252451,31825,35631,38540,33066,5147,13973,4343,51830,70378,22827,26448,95560,36896,241741,48067,203953,298860,61620,20450,3220,67272,6586,107662,100160,108684,6929,57226,4762,7457,1320,40404,77204,99309,62750,208653,59977,44e3,74315,34332,5819,172217,64904,114077,18147,84012,1791,98456,90930,21446,116669,103938,7422,85140,59713,5768,326211,16239,75411,13229,29398,10758,236107,1539,112472,95979,152154,151294,306,21196,38146,10700,6891,84282,109646,56492,40539,6589,119491,51354,30685,140209,136906,29622,73617,49553,70525,51671,166869,139616,74395,37439,49595,45678,11959,33211,86560,52434,9282,62690,112155,130810,5243,108261,99970,265613,72551,80049,6391,33365,90721,66737,69872,87011,1860,9032,112544,60905,37371,89015,140351,19076,850,373531,2802,36725,218795,72062,28990,16550,24614,7815,6187,26336,33373,32162,42791,73555,32062,23386,10244,56392,49442,27076,136262,12412,14883,1134,33675,97153,199281,15608,100152,74072,47942,254301,36451,16026,10687,65067,56708,254030,30290,50490,13864,57941,259331,35588,23485,43486,24869,21620,92971,22072,88645,1048,182050,13343,32452,14825,19509,3325,216938,45740,99716,189082,53740,78245,25609,24311,176777,47340,308354,40669,66085,14102,125339,9225,128709,97207,1271,200933,78439,113451,88975,18324,46521,11819,18570,141756,72512,170020,52754,63550,118515,103073,93330,32736,50499,14722,31600,68452,398867,29316,172786,18417,104924,2606,5670,84818,16288,67106,59580,82929,607401,291,85829,359,15897,35830,50696,65630,52672,22115,356968,29895,40837,231192,34024,38957,26722,406,23335,124952,72068,68804,13268,147101,164740,276569,162596,66943,11569,26654,66358,4777,23229,102127,5848,978,2921,59666,5371,28212,90108,42938,39320,2499,4271,108792,33510,125072,71653,65239,38250,66357,38577,13964,86251,35708,50755,36010,29448,12209,3844,38222,206337,100876,67827,137088,14167,252225,84163,195270,1306,5703,54198,779,46802,22028,51124,86759,70560,113164,35685,162145,45471,34561,422,2611,6464,47486,19223,38246,9191,18331,89942,243642,212364,15893,17518,22617,6409,30046,126182,59716,36560,104428,18846,26592,19458,50793,147333,30826,1388,27647,10922,14495,33545,19269,135828,39727,41601,46931,233379,49169,131130,182112,16276,82381,118209,142445,128310,19672,28740,82907,33436,3118,102206,28723,24819,41937,38854,5157,3881,111491,1142,9776,421673,152241,29309,14961,87854,6054,15424,3796,82656,54996,2108,55367,239450,154525,9643,118103,106041,64601,68549,48707,30266,25772,18740,9462,229669,91798,112152,191327,14493,72828,8175,66636,236474,25817,87351,129027,76653,20422,22983,71240,27846,44661,12399,46158,77704,53101,35032,11072,17300,109294,33638,24408,1895,11241,760,17584,82479,125877,63150,141075,34259,23274,81698,15732,43577,48340,91584,14688,16379,24481,150280,96420,262050,48635,43727,61819,56268,72003,88178,17281,79912,13218,122519,125295,166396,11811,2171,118930,67746,17636,178278,174656,95661,173039,83845,79689,17473,98555,127696,203415,54730,22925,232239,9309,12136,175026,20740,180188,10747,39816,314017,266131,10040,175732,112550,220651,31974,37393,888,23008,86799,4303,64905,148467,75337,251,3284,370102,50264,9835,5438,23655,4481,29851,329,12855,7162,64931,78141,12804,42372,296771,83547,18624,34874,86271,3360,48665,77735,88767,11463,63527,28889,22258,29140,194315,113924,25499,6406,31334,1845,4802,49184,43455,35469,127594,92970,61038,115005,38840,87761,106838,8811,20572,55637,11162,96721,132425,108925,2948,125457,36356,3502,75270,27622,127192,2561,123095,49394,61155,16897,110064,9699,89448,53356,19628,220310,21622,83036,9885,112214,6087,26713,17901,161912,91492,3440,68594,9266,92238,8087,6866,150194,72175,80701,13459,31836,43243,239700,95846,44749,50647,21945,230538,120612,132371,244604,5193,105637,34661,41341,68775,85393,1874,8771,33718,49672,77403,595452,99507,6490,58895,128742,7704,39239,73217,43816,62824,37804,199976,22361,80005,87514,94832,14089,4574,139975,59142,75523,100268,43906,53442,15152,2547,186002,17011,19513,204282,3343,60568,128318,119250,4298,51871,41336,71759,21921,45074,98169,145889,99427,11350,1237,5520,28799,7803,53702,21026,136352,38293,128690,12158,90132,44600,10184,26957,39459,126025,78904,82999,59373,39301,150198,120529,153042,20177,50089,14764,271571,30530,123161,38975,101562,22941,5648,124654,109243,69817,71675,49162,106884,21241,107795,30258,16572,188262,141456,7688,60718,8271,11044,32440,104608,103419,236109,93156,43293,128929,42107,67180,25201,115254,185488,130954,72813,167547,20537,39969,38432,22582,184022,1139,27199,5655,17767,97412,122606,209377,27070,35871,326617,188954,42680,73512,80911,22629,3011,95021,315242,157737,383,41821,41808,19335,27950,15674,25677,110950,35375,76835,59108,57370,35262,16569,160415,37706,78086,32041,49691,137143,9782,172080,50148,77917,6323,10110,69172,17711,21795,59511,76184,135114,31046,132319,59105,157578,20549,80778,57649,158421,65143,4575,72235,21899,10797,92745,34035,106079,80159,4508,78304,25350,75457,46458,32937,25623,47,8531,104751,84953,8138,36508,187199,66310,115274,13253,32461,38536,1916,42007,187160,35055,26325,84394,35963,94216,45590,97782];var es=15,ts=class{log;peerRouting;routingTable;refreshInterval;refreshQueryTimeout;commonPrefixLengthRefreshedAt;refreshTimeoutId;constructor(e,t){let{peerRouting:n,routingTable:i,refreshInterval:s,refreshQueryTimeout:o,logPrefix:a}=t;this.log=e.logger.forComponent(`${a}:routing-table:refresh`),this.peerRouting=n,this.routingTable=i,this.refreshInterval=s??h0,this.refreshQueryTimeout=o??d0,this.commonPrefixLengthRefreshedAt=[],this.refreshTable=this.refreshTable.bind(this)}async afterStart(){this.log(`refreshing routing table every ${this.refreshInterval}ms`),this.refreshTable(!0)}async stop(){this.refreshTimeoutId!=null&&clearTimeout(this.refreshTimeoutId)}refreshTable(e=!1){this.log("refreshing routing table");let t=this._maxCommonPrefix(),n=this._getTrackedCommonPrefixLengthsForRefresh(t);this.log(`max common prefix length ${t}`),this.log(`tracked CPLs [ ${n.map(i=>i.toISOString()).join(", ")} ]`),Promise.all(n.map(async(i,s)=>{try{if(await this._refreshCommonPrefixLength(s,i,e),this._numPeersForCpl(t)===0){let o=Math.min(2*(s+1),n.length-1);for(let a=s+1;a<o+1;a++)try{await this._refreshCommonPrefixLength(a,i,e)}catch(c){this.log.error(c)}}}catch(o){this.log.error(o)}})).catch(i=>{this.log.error(i)}).then(()=>{this.refreshTimeoutId=setTimeout(this.refreshTable,this.refreshInterval),this.refreshTimeoutId.unref!=null&&this.refreshTimeoutId.unref()}).catch(i=>{this.log.error(i)})}async _refreshCommonPrefixLength(e,t,n){if(!n&&t.getTime()>Date.now()-this.refreshInterval){this.log("not running refresh for cpl %s as time since last refresh not above interval",e);return}let i=await this._generateRandomPeerId(e);this.log("starting refreshing cpl %s with key %p (routing table size was %s)",e,i,this.routingTable.size);let s=AbortSignal.timeout(this.refreshQueryTimeout);te(1/0,s);let o=await Wi(this.peerRouting.getClosestPeers(i.toMultihash().bytes,{signal:s}));this.log(`found ${o} peers that were close to imaginary peer %p`,i),this.log("finished refreshing cpl %s with key %p (routing table size is now %s)",e,i,this.routingTable.size)}_getTrackedCommonPrefixLengthsForRefresh(e){e>es&&(e=es);let t=[];for(let n=0;n<=e;n++)t[n]=this.commonPrefixLengthRefreshedAt[n]??new Date;return t}async _generateRandomPeerId(e){if(this.routingTable.kb==null)throw new Error("Routing table not started");if(this.routingTable.kb.localPeer==null)throw new Error("Local peer not set");let t=fi(2),n=(t[1]<<8)+t[0],i=await this._makePeerId(this.routingTable.kb.localPeer.kadId,n,e),s=me(i);return Xe(s)}async _makePeerId(e,t,n){if(n>es)throw new Error(`Cannot generate peer ID for common prefix length greater than ${es}`);let o=new DataView(e.buffer,e.byteOffset,e.byteLength).getUint16(0,!1)^32768>>n,a=65535<<16-(n+1),c=o&a|t&~a,l=m4[c],u=new ArrayBuffer(34),f=new DataView(u,0,u.byteLength);return f.setUint8(0,mt.code),f.setUint8(1,32),f.setUint32(2,l,!1),new Uint8Array(f.buffer,f.byteOffset,f.byteLength)}_maxCommonPrefix(){let e=0;for(let t of this._prefixLengths())t>e&&(e=t);return e}_numPeersForCpl(e){let t=0;for(let n of this._prefixLengths())n===e&&t++;return t}*_prefixLengths(){if(this.routingTable.kb?.localPeer!=null)for(let{kadId:e}of this.routingTable.kb.toIterable()){let t=et(this.routingTable.kb.localPeer.kadId,e),n=0;for(let i of t)if(i===0)n++;else break;yield n}}};function rs(r){return r[Symbol.asyncIterator]!=null}var ns=r=>{let e=oe(r),t=ge(e);return qe(r,t),ns.bytes=e,t};ns.bytes=0;function is(r,e){e=e??{};let t=e.lengthEncoder??ns;function*n(i){let s=t(i.byteLength);s instanceof Uint8Array?yield s:yield*s,i instanceof Uint8Array?yield i:yield*i}return rs(r)?async function*(){for await(let i of r)yield*n(i)}():function*(){for(let i of r)yield*n(i)}()}is.single=(r,e)=>{e=e??{};let t=e.lengthEncoder??ns;return new He(t(r.byteLength),r)};var ss=class extends Error{name="InvalidMessageLengthError";code="ERR_INVALID_MSG_LENGTH"},os=class extends Error{name="InvalidDataLengthError";code="ERR_MSG_DATA_TOO_LONG"},as=class extends Error{name="InvalidDataLengthLengthError";code="ERR_MSG_LENGTH_TOO_LONG"},$n=class extends Error{name="UnexpectedEOFError";code="ERR_UNEXPECTED_EOF"};var X7=8,J7=1024*1024*4,wr;(function(r){r[r.LENGTH=0]="LENGTH",r[r.DATA=1]="DATA"})(wr||(wr={}));var P2=r=>{let e=Me(r);return P2.bytes=oe(e),e};P2.bytes=0;function zn(r,e){let t=new He,n=wr.LENGTH,i=-1,s=e?.lengthDecoder??P2,o=e?.maxLengthLength??X7,a=e?.maxDataLength??J7;function*c(){for(;t.byteLength>0;){if(n===wr.LENGTH)try{if(i=s(t),i<0)throw new ss("Invalid message length");if(i>a)throw new os("Message length too long");let l=s.bytes;t.consume(l),e?.onLength!=null&&e.onLength(i),n=wr.DATA}catch(l){if(l instanceof RangeError){if(t.byteLength>o)throw new as("Message length length too long");break}throw l}if(n===wr.DATA){if(t.byteLength<i)break;let l=t.sublist(0,i);t.consume(i),e?.onData!=null&&e.onData(l),yield l,n=wr.LENGTH}}}return rs(r)?async function*(){for await(let l of r)t.append(l),yield*c();if(t.byteLength>0)throw new $n("Unexpected end of input")}():function*(){for(let l of r)t.append(l),yield*c();if(t.byteLength>0)throw new $n("Unexpected end of input")}()}zn.fromReader=(r,e)=>{let t=1,n=async function*(){for(;;)try{let{done:s,value:o}=await r.next(t);if(s===!0)return;o!=null&&(yield o)}catch(s){if(s.code==="ERR_UNDER_READ")return{done:!0,value:null};throw s}finally{t=1}}();return zn(n,{...e??{},onLength:s=>{t=s}})};var cs=class{providers;log;constructor(e,t){this.log=e.logger.forComponent(`${t.logPrefix}:rpc:handlers:add-provider`),this.providers=t.providers}async handle(e,t){if(t.key==null||t.key.length===0)throw new Ne("Missing key");let n;try{n=re.decode(t.key)}catch{throw new Ne("Invalid CID")}(t.providers==null||t.providers.length===0)&&this.log.error("no providers found in message"),this.log("%p asked us to store provider record for for %c",e,n),await Promise.all(t.providers.map(async i=>{if(!e.equals(i.id)){this.log("invalid provider peer %p from %p",i.id,e);return}if(i.multiaddrs.length<1){this.log("no valid addresses for provider %p. Ignore",e);return}this.log.trace("received provider %p for %s (addrs %s)",e,n,i.multiaddrs.map(o=>yr(o).toString()));let s=me(i.id);await this.providers.addProvider(n,Xe(s))}))}};var ls=class{peerRouting;peerInfoMapper;peerId;addressManager;log;constructor(e,t){let{peerRouting:n,logPrefix:i}=t;this.log=e.logger.forComponent(`${i}:rpc:handlers:find-node`),this.peerId=e.peerId,this.addressManager=e.addressManager,this.peerRouting=n,this.peerInfoMapper=t.peerInfoMapper}async handle(e,t){if(this.log("incoming request from %p for peers closer to %b",e,t.key),t.key==null)throw new Ne("Invalid FIND_NODE message received - key was missing");let n=await this.peerRouting.getCloserPeersOffline(t.key,e);X(this.peerId.toMultihash().bytes,t.key)&&n.push({id:this.peerId,multiaddrs:this.addressManager.getAddresses().map(s=>s.decapsulateCode(G("p2p").code))});let i={type:O.FIND_NODE,clusterLevel:t.clusterLevel,closer:n.map(this.peerInfoMapper).filter(({multiaddrs:s})=>s.length).map(s=>({id:s.id.toMultihash().bytes,multiaddrs:s.multiaddrs.map(o=>o.bytes)})),providers:[]};return i.closer.length===0&&this.log("could not find any peers closer to %b than %p",t.key,e),i}};var us=class{peerRouting;providers;peerStore;peerInfoMapper;log;constructor(e,t){let{peerRouting:n,providers:i,logPrefix:s}=t;this.log=e.logger.forComponent(`${s}:rpc:handlers:get-providers`),this.peerStore=e.peerStore,this.peerRouting=n,this.providers=i,this.peerInfoMapper=t.peerInfoMapper}async handle(e,t){if(t.key==null)throw new Ne("Invalid GET_PROVIDERS message received - key was missing");let n;try{n=re.decode(t.key)}catch{throw new Ne("Invalid CID")}this.log("%p asking for providers for %s",e,n);let[i,s]=await Promise.all([this.providers.getProviders(n),this.peerRouting.getCloserPeersOffline(t.key,e)]),o=await this._getPeers(i),a=await this._getPeers(s.map(({id:l})=>l)),c={type:O.GET_PROVIDERS,key:t.key,clusterLevel:t.clusterLevel,closer:a.map(this.peerInfoMapper).filter(({multiaddrs:l})=>l.length).map(l=>({id:l.id.toMultihash().bytes,multiaddrs:l.multiaddrs.map(u=>u.bytes)})),providers:o.map(this.peerInfoMapper).filter(({multiaddrs:l})=>l.length).map(l=>({id:l.id.toMultihash().bytes,multiaddrs:l.multiaddrs.map(u=>u.bytes)}))};return this.log("got %s providers %s closerPeers",c.providers.length,c.closer.length),c}async _getAddresses(e){return[]}async _getPeers(e){let t=[];for(let n of e)try{let i=await this.peerStore.get(n),s=this.peerInfoMapper({id:n,multiaddrs:i.addresses.map(({multiaddr:o})=>o)});s.multiaddrs.length>0&&t.push(s)}catch(i){if(i.name!=="NotFoundError")throw i}return t}};var fs=class{peerStore;datastore;peerRouting;log;datastorePrefix;constructor(e,t){this.log=e.logger.forComponent(`${t.logPrefix}:rpc:handlers:get-value`),this.datastorePrefix=`/${t.logPrefix.replaceAll(":","/")}/record`,this.peerStore=e.peerStore,this.datastore=e.datastore,this.peerRouting=t.peerRouting}async handle(e,t){let n=t.key;if(this.log("%p asked for key %b",e,n),n==null||n.length===0)throw new Ne("Invalid key");let i={type:O.GET_VALUE,key:n,clusterLevel:t.clusterLevel,closer:[],providers:[]};if(qa(n)){this.log("is public key");let a=Ka(n),c;try{let l=await this.peerStore.get(a);if(l.id.publicKey==null)throw new ze("No public key found in key book");c=Hr(l.id.publicKey)}catch(l){if(l.name!=="NotFoundError")throw l}if(c!=null)return this.log("returning found public key"),i.record=new ue(n,c,new Date).serialize(),i}let[s,o]=await Promise.all([this._checkLocalDatastore(n),this.peerRouting.getCloserPeersOffline(n,e)]);return s!=null&&(this.log("had record for %b in local datastore",n),i.record=s.serialize()),o.length>0&&(this.log("had %s closer peers in routing table",o.length),i.closer=o.map(a=>({id:a.id.toMultihash().bytes,multiaddrs:a.multiaddrs.map(c=>c.bytes)}))),i}async _checkLocalDatastore(e){this.log("checkLocalDatastore looking for %b",e);let t=Zt(this.datastorePrefix,e),n;try{n=await this.datastore.get(t)}catch(s){if(s.name==="NotFoundError")return;throw s}let i=ue.deserialize(n);if(i.timeReceived==null||Date.now()-i.timeReceived.getTime()>r0){await this.datastore.delete(t);return}return i}};var hs=class{log;constructor(e,t){this.log=e.logger.forComponent(`${t.logPrefix}:rpc:handlers:ping`)}async handle(e,t){return this.log("ping from %p",e),t}};var ds=class{components;validators;log;datastorePrefix;constructor(e,t){let{validators:n}=t;this.components=e,this.log=e.logger.forComponent(`${t.logPrefix}:rpc:handlers:put-value`),this.datastorePrefix=`/${t.logPrefix.replaceAll(":","/")}/record`,this.validators=n}async handle(e,t){let n=t.key;if(this.log("%p asked us to store value for key %b",e,n),t.record==null){let i=`Empty record from: ${e.toString()}`;throw this.log.error(i),new Ne(i)}try{let i=ue.deserialize(t.record);await Qr(this.validators,i),i.timeReceived=new Date;let s=Zt(this.datastorePrefix,i.key);await this.components.datastore.put(s,i.serialize().subarray()),this.log("put record for %b into datastore under key %k",n,s)}catch(i){this.log("did not put record for key %b into datastore %o",n,i)}return t}};var ps=class{handlers;routingTable;log;metrics;constructor(e,t){this.metrics={operations:e.metrics?.registerCounterGroup(`${t.metricsPrefix}_inbound_rpc_requests_total`),errors:e.metrics?.registerCounterGroup(`${t.metricsPrefix}_inbound_rpc_errors_total`)},this.log=e.logger.forComponent(`${t.logPrefix}:rpc`),this.routingTable=t.routingTable,this.handlers={[O.GET_VALUE.toString()]:new fs(e,t),[O.PUT_VALUE.toString()]:new ds(e,t),[O.FIND_NODE.toString()]:new ls(e,t),[O.ADD_PROVIDER.toString()]:new cs(e,t),[O.GET_PROVIDERS.toString()]:new us(e,t),[O.PING.toString()]:new hs(e,t)}}async handleMessage(e,t){let n=this.handlers[t.type];if(n==null){this.log.error(`no handler found for message type: ${t.type}`);return}try{return this.metrics.operations?.increment({[t.type]:!0}),await n.handle(e,t)}catch{this.metrics.errors?.increment({[t.type]:!0})}}onIncomingStream(e){let t="unknown";Promise.resolve().then(async()=>{let{stream:n,connection:i}=e,s=i.remotePeer;try{await this.routingTable.add(s)}catch(a){this.log.error(a)}let o=this;await Dt(n,a=>zn(a),async function*(a){for await(let c of a){let l=yt.decode(c);t=l.type,o.log("incoming %s from %p",l.type,s);let u=await o.handleMessage(s,l);u!=null&&(yield yt.encode(u))}},a=>is(a),n)}).catch(n=>{this.log.error("error handling %s RPC message from %p - %e",t,e.connection.remotePeer,n)})}};var gs=class extends Le{log;components;protocol;running;registrarId;constructor(e,t){super();let{protocol:n,logPrefix:i}=t;this.components=e,this.log=e.logger.forComponent(`${i}:topology-listener`),this.running=!1,this.protocol=n}isStarted(){return this.running}async start(){this.running||(this.running=!0,this.registrarId=await this.components.registrar.register(this.protocol,{onConnect:e=>{this.log("observed peer %p with protocol %s",e,this.protocol),this.dispatchEvent(new CustomEvent("peer",{detail:e}))}}))}async stop(){this.running=!1,this.registrarId!=null&&(this.components.registrar.unregister(this.registrarId),this.registrarId=void 0)}};var N2=class{dht;constructor(e){this.dht=e}async provide(e,t={}){await sn(this.dht.provide(e,t))}async cancelReprovide(e){await this.dht.cancelReprovide(e)}async*findProviders(e,t={}){for await(let n of this.dht.findProviders(e,t))n.name==="PROVIDER"&&(yield*n.providers)}async put(e,t,n){await sn(this.dht.put(e,t,n))}async get(e,t){for await(let n of this.dht.get(e,t))if(n.name==="VALUE")return n.value;throw new ze("Could not find value for key")}},L2=class{dht;constructor(e){this.dht=e}async findPeer(e,t={}){for await(let n of this.dht.findPeer(e,t))if(n.name==="FINAL_PEER")return n.peer;throw new ze("Peer not found")}async*getClosestPeers(e,t={}){for await(let n of this.dht.getClosestPeers(e,t))n.name==="FINAL_PEER"&&(yield n.peer)}},tc=32,rc=64,ms=class extends Le{protocol;routingTable;providers;network;peerRouting;components;log;running;kBucketSize;clientMode;validators;selectors;queryManager;contentFetching;contentRouting;routingTableRefresh;rpc;topologyListener;querySelf;maxInboundStreams;maxOutboundStreams;dhtContentRouting;dhtPeerRouting;peerInfoMapper;reprovider;constructor(e,t={}){super();let n=t.logPrefix??"libp2p:kad-dht",i=t.datastorePrefix??"/dht",s=t.metricsPrefix??"libp2p_kad_dht",o={queries:e.metrics?.registerMetricGroup(`${s}_operations_total`,{label:"operation"}),errors:e.metrics?.registerCounterGroup(`${s}_operation_errors_total`,{label:"operation"}),queryTime:e.metrics?.registerMetricGroup(`${s}_operation_time_seconds`,{label:"operation"}),errorTime:e.metrics?.registerMetricGroup(`${s}_operation_error_time_seconds`,{label:"operation"})};this.running=!1,this.components=e,this.log=e.logger.forComponent(n),this.protocol=t.protocol??n0,this.kBucketSize=t.kBucketSize??20,this.clientMode=t.clientMode??!0,this.maxInboundStreams=t.maxInboundStreams??tc,this.maxOutboundStreams=t.maxOutboundStreams??rc,this.peerInfoMapper=t.peerInfoMapper??Bi;let a=_s();this.providers=new qi(e,{...t.providers,logPrefix:n,datastorePrefix:i,lock:a}),this.validators={...Na,...t.validators},this.selectors={...X0,...t.selectors},this.network=new Fi(e,{protocol:this.protocol,logPrefix:n,metricsPrefix:s}),this.routingTable=new Ji(e,{kBucketSize:t.kBucketSize,pingOldContactTimeout:t.pingOldContactTimeout,pingOldContactConcurrency:t.pingOldContactConcurrency,pingOldContactMaxQueueSize:t.pingOldContactMaxQueueSize,pingNewContactTimeout:t.pingNewContactTimeout,pingNewContactConcurrency:t.pingNewContactConcurrency,pingNewContactMaxQueueSize:t.pingNewContactMaxQueueSize,protocol:this.protocol,logPrefix:n,metricsPrefix:s,prefixLength:t.prefixLength,splitThreshold:t.kBucketSplitThreshold,network:this.network});let c=se();t.allowQueryWithZeroPeers===!0&&c.resolve(),this.queryManager=new ji(e,{disjointPaths:Math.ceil(this.kBucketSize/2),logPrefix:n,metricsPrefix:s,initialQuerySelfHasRun:c,routingTable:this.routingTable}),this.peerRouting=new Hi(e,{routingTable:this.routingTable,network:this.network,validators:this.validators,queryManager:this.queryManager,logPrefix:n}),this.contentFetching=new Pi(e,{validators:this.validators,selectors:this.selectors,peerRouting:this.peerRouting,queryManager:this.queryManager,network:this.network,logPrefix:n}),this.contentRouting=new Ci(e,{network:this.network,peerRouting:this.peerRouting,queryManager:this.queryManager,routingTable:this.routingTable,providers:this.providers,logPrefix:n}),this.routingTableRefresh=new ts(e,{peerRouting:this.peerRouting,routingTable:this.routingTable,logPrefix:n}),this.rpc=new ps(e,{routingTable:this.routingTable,providers:this.providers,peerRouting:this.peerRouting,validators:this.validators,logPrefix:n,metricsPrefix:s,peerInfoMapper:this.peerInfoMapper}),this.topologyListener=new gs(e,{protocol:this.protocol,logPrefix:n}),this.querySelf=new Qi(e,{peerRouting:this.peerRouting,interval:t.querySelfInterval,initialInterval:t.initialQuerySelfInterval,logPrefix:n,initialQuerySelfHasRun:c,routingTable:this.routingTable,operationMetrics:o}),this.reprovider=new Zi(e,{...t.reprovide,logPrefix:n,metricsPrefix:s,datastorePrefix:i,contentRouting:this.contentRouting,lock:a,operationMetrics:o}),this.network.addEventListener("peer",l=>{let u=l.detail;this.onPeerConnect(u).catch(f=>{this.log.error("could not add %p to routing table",u.id,f)}),this.dispatchEvent(new CustomEvent("peer",{detail:u}))}),this.topologyListener.addEventListener("peer",l=>{let u=l.detail;Promise.resolve().then(async()=>{let f=await this.components.peerStore.get(u),h={id:u,multiaddrs:f.addresses.map(({multiaddr:p})=>p),protocols:f.protocols};await this.onPeerConnect(h)}).catch(f=>{this.log.error("could not add %p to routing table",u,f)})}),this.dhtPeerRouting=new L2(this),this.dhtContentRouting=new N2(this),t.clientMode==null&&e.events.addEventListener("self:peer:update",l=>{this.log("received update of self-peer info"),Promise.resolve().then(async()=>{let u=l.detail.peer.addresses.some(({multiaddr:h})=>$a(h)),f=this.getMode();u&&f==="client"?await this.setMode("server"):f==="server"&&!u&&await this.setMode("client")}).catch(u=>{this.log.error("error setting dht server mode",u)})}),this.get=pr(this.get.bind(this),o,"GET_VALUE"),this.findProviders=pr(this.findProviders.bind(this),o,"FIND_PROVIDERS"),this.findPeer=pr(this.findPeer.bind(this),o,"FIND_PEER"),this.getClosestPeers=pr(this.getClosestPeers.bind(this),o,"GET_CLOSEST_PEERS"),this.provide=pr(this.provide.bind(this),o,"PROVIDE"),this.put=pr(this.put.bind(this),o,"PUT_VALUE")}[Symbol.toStringTag]="@libp2p/kad-dht";[G2]=["@libp2p/content-routing","@libp2p/peer-routing","@libp2p/peer-discovery"];[j2]=["@libp2p/identify"];get[H2](){return this.dhtContentRouting}get[K2](){return this.dhtPeerRouting}get[q2](){return this}async onPeerConnect(e){if(this.log.trace("peer %p connected",e.id),e=this.peerInfoMapper(e),e.multiaddrs.length===0){this.log.trace("ignoring %p as there were no valid addresses in %s after filtering",e.id,e.multiaddrs.map(t=>t.toString()));return}try{await this.routingTable.add(e.id)}catch(t){this.log.error("could not add %p to routing table",e.id,t)}}isStarted(){return this.running}getMode(){return this.clientMode?"client":"server"}async setMode(e,t=!1){if(e===this.getMode()&&!t){this.log("already in %s mode",e);return}if(await this.components.registrar.unhandle(this.protocol),e===this.getMode()&&!t){this.log("already in %s mode",e);return}e==="client"?(this.log("enabling client mode while in %s mode",this.getMode()),this.clientMode=!0):(this.log("enabling server mode while in %s mode",this.getMode()),this.clientMode=!1,await this.components.registrar.handle(this.protocol,this.rpc.onIncomingStream.bind(this.rpc),{maxInboundStreams:this.maxInboundStreams,maxOutboundStreams:this.maxOutboundStreams}))}async start(){this.running||(this.running=!0,await this.setMode(this.clientMode?"client":"server",!0),await nn(this.routingTable,this.queryManager,this.network,this.topologyListener,this.routingTableRefresh,this.reprovider),await nn(this.querySelf))}async stop(){this.running=!1,await Wn(this.querySelf,this.queryManager,this.network,this.routingTable,this.routingTableRefresh,this.topologyListener,this.reprovider)}async*put(e,t,n={}){yield*this.contentFetching.put(e,t,n)}async*get(e,t={}){yield*this.contentFetching.get(e,t)}async*provide(e,t={}){yield*this.contentRouting.provide(e,this.components.addressManager.getAddresses(),t)}async cancelReprovide(e){await this.providers.removeProvider(e,this.components.peerId)}async*findProviders(e,t={}){yield*this.contentRouting.findProviders(e,t)}async*findPeer(e,t={}){yield*this.peerRouting.findPeer(e,t)}async*getClosestPeers(e,t={}){yield*this.peerRouting.getClosestPeers(e,t)}async refreshRoutingTable(){this.routingTableRefresh.refreshTable(!0)}};var Kn;(function(r){r[r.SEND_QUERY=0]="SEND_QUERY",r[r.PEER_RESPONSE=1]="PEER_RESPONSE",r[r.FINAL_PEER=2]="FINAL_PEER",r[r.QUERY_ERROR=3]="QUERY_ERROR",r[r.PROVIDER=4]="PROVIDER",r[r.VALUE=5]="VALUE",r[r.ADD_PEER=6]="ADD_PEER",r[r.DIAL_PEER=7]="DIAL_PEER"})(Kn||(Kn={}));function nc(r={}){return e=>new ms(e,r)}return P4(ic);})();
6
+ `)}`:`${t} :`}};L3=Wt;I.Constructed=L3;Wt.NAME="CONSTRUCTED";var L1=class extends Ie{fromBER(e,t,n){return t}toBER(e){return Je}};L1.override="EndOfContentValueBlock";var N3,N1=class extends be{constructor(e={}){super(e,L1),this.idBlock.tagClass=1,this.idBlock.tagNumber=0}};N3=N1;I.EndOfContent=N3;N1.NAME=In;var _3,zr=class extends be{constructor(e={}){super(e,Ie),this.idBlock.tagClass=1,this.idBlock.tagNumber=5}fromBER(e,t,n){return this.lenBlock.length>0&&this.warnings.push("Non-zero length of value block for Null type"),this.idBlock.error.length||(this.blockLength+=this.idBlock.blockLength),this.lenBlock.error.length||(this.blockLength+=this.lenBlock.blockLength),this.blockLength+=n,t+n>e.byteLength?(this.error="End of input reached before message was fully decoded (inconsistent offset and length values)",-1):t+n}toBER(e,t){let n=new ArrayBuffer(2);if(!e){let i=new Uint8Array(n);i[0]=5,i[1]=0}return t&&t.write(n),n}onAsciiEncoding(){return`${this.constructor.NAME}`}};_3=zr;I.Null=_3;zr.NAME="NULL";var _1=class extends kt(Ie){constructor({value:e,...t}={}){super(t),t.valueHex?this.valueHexView=H.BufferSourceConverter.toUint8Array(t.valueHex):this.valueHexView=new Uint8Array(1),e&&(this.value=e)}get value(){for(let e of this.valueHexView)if(e>0)return!0;return!1}set value(e){this.valueHexView[0]=e?255:0}fromBER(e,t,n){let i=H.BufferSourceConverter.toUint8Array(e);return Bt(this,i,t,n)?(this.valueHexView=i.subarray(t,t+n),n>1&&this.warnings.push("Boolean value encoded in more then 1 octet"),this.isHexOnly=!0,Qo.call(this),this.blockLength=n,t+n):-1}toBER(){return this.valueHexView.slice()}toJSON(){return{...super.toJSON(),value:this.value}}};_1.NAME="BooleanValueBlock";var C3,C1=class extends be{constructor(e={}){super(e,_1),this.idBlock.tagClass=1,this.idBlock.tagNumber=1}getValue(){return this.valueBlock.value}setValue(e){this.valueBlock.value=e}onAsciiEncoding(){return`${this.constructor.NAME} : ${this.getValue}`}};C3=C1;I.Boolean=C3;C1.NAME="BOOLEAN";var U1=class extends kt(ot){constructor({isConstructed:e=!1,...t}={}){super(t),this.isConstructed=e}fromBER(e,t,n){let i=0;if(this.isConstructed){if(this.isHexOnly=!1,i=ot.prototype.fromBER.call(this,e,t,n),i===-1)return i;for(let s=0;s<this.value.length;s++){let o=this.value[s].constructor.NAME;if(o===In){if(this.isIndefiniteForm)break;return this.error="EndOfContent is unexpected, OCTET STRING may consists of OCTET STRINGs only",-1}if(o!==k3)return this.error="OCTET STRING may consists of OCTET STRINGs only",-1}}else this.isHexOnly=!0,i=super.fromBER(e,t,n),this.blockLength=n;return i}toBER(e,t){return this.isConstructed?ot.prototype.toBER.call(this,e,t):e?new ArrayBuffer(this.valueHexView.byteLength):this.valueHexView.slice().buffer}toJSON(){return{...super.toJSON(),isConstructed:this.isConstructed}}};U1.NAME="OctetStringValueBlock";var U3,D1=class r extends be{constructor({idBlock:e={},lenBlock:t={},...n}={}){var i,s;(i=n.isConstructed)!==null&&i!==void 0||(n.isConstructed=!!(!((s=n.value)===null||s===void 0)&&s.length)),super({idBlock:{isConstructed:n.isConstructed,...e},lenBlock:{...t,isIndefiniteForm:!!n.isIndefiniteForm},...n},U1),this.idBlock.tagClass=1,this.idBlock.tagNumber=4}fromBER(e,t,n){if(this.valueBlock.isConstructed=this.idBlock.isConstructed,this.valueBlock.isIndefiniteForm=this.lenBlock.isIndefiniteForm,n===0)return this.idBlock.error.length===0&&(this.blockLength+=this.idBlock.blockLength),this.lenBlock.error.length===0&&(this.blockLength+=this.lenBlock.blockLength),t;if(!this.valueBlock.isConstructed){let s=(e instanceof ArrayBuffer?new Uint8Array(e):e).subarray(t,t+n);try{if(s.byteLength){let o=ui(s,0,s.byteLength);o.offset!==-1&&o.offset===n&&(this.valueBlock.value=[o.result])}}catch{}}return super.fromBER(e,t,n)}onAsciiEncoding(){return this.valueBlock.isConstructed||this.valueBlock.value&&this.valueBlock.value.length?Wt.prototype.onAsciiEncoding.call(this):`${this.constructor.NAME} : ${H.Convert.ToHex(this.valueBlock.valueHexView)}`}getValue(){if(!this.idBlock.isConstructed)return this.valueBlock.valueHexView.slice().buffer;let e=[];for(let t of this.valueBlock.value)t instanceof r&&e.push(t.valueBlock.valueHexView);return H.BufferSourceConverter.concat(e)}};U3=D1;I.OctetString=U3;D1.NAME=k3;var O1=class extends kt(ot){constructor({unusedBits:e=0,isConstructed:t=!1,...n}={}){super(n),this.unusedBits=e,this.isConstructed=t,this.blockLength=this.valueHexView.byteLength}fromBER(e,t,n){if(!n)return t;let i=-1;if(this.isConstructed){if(i=ot.prototype.fromBER.call(this,e,t,n),i===-1)return i;for(let a of this.value){let c=a.constructor.NAME;if(c===In){if(this.isIndefiniteForm)break;return this.error="EndOfContent is unexpected, BIT STRING may consists of BIT STRINGs only",-1}if(c!==T3)return this.error="BIT STRING may consists of BIT STRINGs only",-1;let l=a.valueBlock;if(this.unusedBits>0&&l.unusedBits>0)return this.error='Using of "unused bits" inside constructive BIT STRING allowed for least one only',-1;this.unusedBits=l.unusedBits}return i}let s=H.BufferSourceConverter.toUint8Array(e);if(!Bt(this,s,t,n))return-1;let o=s.subarray(t,t+n);if(this.unusedBits=o[0],this.unusedBits>7)return this.error="Unused bits for BitString must be in range 0-7",-1;if(!this.unusedBits){let a=o.subarray(1);try{if(a.byteLength){let c=ui(a,0,a.byteLength);c.offset!==-1&&c.offset===n-1&&(this.value=[c.result])}}catch{}}return this.valueHexView=o.subarray(1),this.blockLength=o.length,t+n}toBER(e,t){if(this.isConstructed)return ot.prototype.toBER.call(this,e,t);if(e)return new ArrayBuffer(this.valueHexView.byteLength+1);if(!this.valueHexView.byteLength)return Je;let n=new Uint8Array(this.valueHexView.length+1);return n[0]=this.unusedBits,n.set(this.valueHexView,1),n.buffer}toJSON(){return{...super.toJSON(),unusedBits:this.unusedBits,isConstructed:this.isConstructed}}};O1.NAME="BitStringValueBlock";var D3,Gr=class extends be{constructor({idBlock:e={},lenBlock:t={},...n}={}){var i,s;(i=n.isConstructed)!==null&&i!==void 0||(n.isConstructed=!!(!((s=n.value)===null||s===void 0)&&s.length)),super({idBlock:{isConstructed:n.isConstructed,...e},lenBlock:{...t,isIndefiniteForm:!!n.isIndefiniteForm},...n},O1),this.idBlock.tagClass=1,this.idBlock.tagNumber=3}fromBER(e,t,n){return this.valueBlock.isConstructed=this.idBlock.isConstructed,this.valueBlock.isIndefiniteForm=this.lenBlock.isIndefiniteForm,super.fromBER(e,t,n)}onAsciiEncoding(){if(this.valueBlock.isConstructed||this.valueBlock.value&&this.valueBlock.value.length)return Wt.prototype.onAsciiEncoding.call(this);{let e=[],t=this.valueBlock.valueHexView;for(let i of t)e.push(i.toString(2).padStart(8,"0"));let n=e.join("");return`${this.constructor.NAME} : ${n.substring(0,n.length-this.valueBlock.unusedBits)}`}}};D3=Gr;I.BitString=D3;Gr.NAME=T3;var O3;function k8(r,e){let t=new Uint8Array([0]),n=new Uint8Array(r),i=new Uint8Array(e),s=n.slice(0),o=s.length-1,a=i.slice(0),c=a.length-1,l=0,u=c<o?o:c,f=0;for(let h=u;h>=0;h--,f++){switch(!0){case f<a.length:l=s[o-f]+a[c-f]+t[0];break;default:l=s[o-f]+t[0]}switch(t[0]=l/10,!0){case f>=s.length:s=S1(new Uint8Array([l%10]),s);break;default:s[o-f]=l%10}}return t[0]>0&&(s=S1(t,s)),s}function B3(r){if(r>=An.length)for(let e=An.length;e<=r;e++){let t=new Uint8Array([0]),n=An[e-1].slice(0);for(let i=n.length-1;i>=0;i--){let s=new Uint8Array([(n[i]<<1)+t[0]]);t[0]=s[0]/10,n[i]=s[0]%10}t[0]>0&&(n=S1(t,n)),An.push(n)}return An[r]}function T8(r,e){let t=0,n=new Uint8Array(r),i=new Uint8Array(e),s=n.slice(0),o=s.length-1,a=i.slice(0),c=a.length-1,l,u=0;for(let f=c;f>=0;f--,u++)switch(l=s[o-u]-a[c-u]-t,!0){case l<0:t=1,s[o-u]=l+10;break;default:t=0,s[o-u]=l}if(t>0)for(let f=o-c+1;f>=0;f--,u++)if(l=s[o-u]-t,l<0)t=1,s[o-u]=l+10;else{t=0,s[o-u]=l;break}return s.slice()}var Bn=class extends kt(Ie){constructor({value:e,...t}={}){super(t),this._valueDec=0,t.valueHex&&this.setValueHex(),e!==void 0&&(this.valueDec=e)}setValueHex(){this.valueHexView.length>=4?(this.warnings.push("Too big Integer for decoding, hex only"),this.isHexOnly=!0,this._valueDec=0):(this.isHexOnly=!1,this.valueHexView.length>0&&(this._valueDec=Qo.call(this)))}set valueDec(e){this._valueDec=e,this.isHexOnly=!1,this.valueHexView=new Uint8Array(A3(e))}get valueDec(){return this._valueDec}fromDER(e,t,n,i=0){let s=this.fromBER(e,t,n);if(s===-1)return s;let o=this.valueHexView;return o[0]===0&&o[1]&128?this.valueHexView=o.subarray(1):i!==0&&o.length<i&&(i-o.length>1&&(i=o.length+1),this.valueHexView=o.subarray(i-o.length)),s}toDER(e=!1){let t=this.valueHexView;switch(!0){case(t[0]&128)!==0:{let n=new Uint8Array(this.valueHexView.length+1);n[0]=0,n.set(t,1),this.valueHexView=n}break;case(t[0]===0&&(t[1]&128)===0):this.valueHexView=this.valueHexView.subarray(1);break}return this.toBER(e)}fromBER(e,t,n){let i=super.fromBER(e,t,n);return i===-1||this.setValueHex(),i}toBER(e){return e?new ArrayBuffer(this.valueHexView.length):this.valueHexView.slice().buffer}toJSON(){return{...super.toJSON(),valueDec:this.valueDec}}toString(){let e=this.valueHexView.length*8-1,t=new Uint8Array(this.valueHexView.length*8/3),n=0,i,s=this.valueHexView,o="",a=!1;for(let c=s.byteLength-1;c>=0;c--){i=s[c];for(let l=0;l<8;l++){if((i&1)===1)switch(n){case e:t=T8(B3(n),t),o="-";break;default:t=k8(t,B3(n))}n++,i>>=1}}for(let c=0;c<t.length;c++)t[c]&&(a=!0),a&&(o+=I3.charAt(t[c]));return a===!1&&(o+=I3.charAt(0)),o}};O3=Bn;Bn.NAME="IntegerValueBlock";Object.defineProperty(O3.prototype,"valueHex",{set:function(r){this.valueHexView=new Uint8Array(r),this.setValueHex()},get:function(){return this.valueHexView.slice().buffer}});var M3,xe=class r extends be{constructor(e={}){super(e,Bn),this.idBlock.tagClass=1,this.idBlock.tagNumber=2}toBigInt(){return I1(),BigInt(this.valueBlock.toString())}static fromBigInt(e){I1();let t=BigInt(e),n=new Sn,i=t.toString(16).replace(/^-/,""),s=new Uint8Array(H.Convert.FromHex(i));if(t<0){let a=new Uint8Array(s.length+(s[0]&128?1:0));a[0]|=128;let l=BigInt(`0x${H.Convert.ToHex(a)}`)+t,u=H.BufferSourceConverter.toUint8Array(H.Convert.FromHex(l.toString(16)));u[0]|=128,n.write(u)}else s[0]&128&&n.write(new Uint8Array([0])),n.write(s);return new r({valueHex:n.final()})}convertToDER(){let e=new r({valueHex:this.valueBlock.valueHexView});return e.valueBlock.toDER(),e}convertFromDER(){return new r({valueHex:this.valueBlock.valueHexView[0]===0?this.valueBlock.valueHexView.subarray(1):this.valueBlock.valueHexView})}onAsciiEncoding(){return`${this.constructor.NAME} : ${this.valueBlock.toString()}`}};M3=xe;I.Integer=M3;xe.NAME="INTEGER";var V3,M1=class extends xe{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=10}};V3=M1;I.Enumerated=V3;M1.NAME="ENUMERATED";var kn=class extends kt(Ie){constructor({valueDec:e=-1,isFirstSid:t=!1,...n}={}){super(n),this.valueDec=e,this.isFirstSid=t}fromBER(e,t,n){if(!n)return t;let i=H.BufferSourceConverter.toUint8Array(e);if(!Bt(this,i,t,n))return-1;let s=i.subarray(t,t+n);this.valueHexView=new Uint8Array(n);for(let a=0;a<n&&(this.valueHexView[a]=s[a]&127,this.blockLength++,!!(s[a]&128));a++);let o=new Uint8Array(this.blockLength);for(let a=0;a<this.blockLength;a++)o[a]=this.valueHexView[a];return this.valueHexView=o,s[this.blockLength-1]&128?(this.error="End of input reached before message was fully decoded",-1):(this.valueHexView[0]===0&&this.warnings.push("Needlessly long format of SID encoding"),this.blockLength<=8?this.valueDec=pr(this.valueHexView,7):(this.isHexOnly=!0,this.warnings.push("Too big SID for decoding, hex only")),t+this.blockLength)}set valueBigInt(e){I1();let t=BigInt(e).toString(2);for(;t.length%7;)t="0"+t;let n=new Uint8Array(t.length/7);for(let i=0;i<n.length;i++)n[i]=parseInt(t.slice(i*7,i*7+7),2)+(i+1<n.length?128:0);this.fromBER(n.buffer,0,n.length)}toBER(e){if(this.isHexOnly){if(e)return new ArrayBuffer(this.valueHexView.byteLength);let i=this.valueHexView,s=new Uint8Array(this.blockLength);for(let o=0;o<this.blockLength-1;o++)s[o]=i[o]|128;return s[this.blockLength-1]=i[this.blockLength-1],s.buffer}let t=jt(this.valueDec,7);if(t.byteLength===0)return this.error="Error during encoding SID value",Je;let n=new Uint8Array(t.byteLength);if(!e){let i=new Uint8Array(t),s=t.byteLength-1;for(let o=0;o<s;o++)n[o]=i[o]|128;n[s]=i[s]}return n}toString(){let e="";if(this.isHexOnly)e=H.Convert.ToHex(this.valueHexView);else if(this.isFirstSid){let t=this.valueDec;this.valueDec<=39?e="0.":this.valueDec<=79?(e="1.",t-=40):(e="2.",t-=80),e+=t.toString()}else e=this.valueDec.toString();return e}toJSON(){return{...super.toJSON(),valueDec:this.valueDec,isFirstSid:this.isFirstSid}}};kn.NAME="sidBlock";var V1=class extends Ie{constructor({value:e=Wr,...t}={}){super(t),this.value=[],e&&this.fromString(e)}fromBER(e,t,n){let i=t;for(;n>0;){let s=new kn;if(i=s.fromBER(e,i,n),i===-1)return this.blockLength=0,this.error=s.error,i;this.value.length===0&&(s.isFirstSid=!0),this.blockLength+=s.blockLength,n-=s.blockLength,this.value.push(s)}return i}toBER(e){let t=[];for(let n=0;n<this.value.length;n++){let i=this.value[n].toBER(e);if(i.byteLength===0)return this.error=this.value[n].error,Je;t.push(i)}return Zo(t)}fromString(e){this.value=[];let t=0,n=0,i="",s=!1;do if(n=e.indexOf(".",t),n===-1?i=e.substring(t):i=e.substring(t,n),t=n+1,s){let o=this.value[0],a=0;switch(o.valueDec){case 0:break;case 1:a=40;break;case 2:a=80;break;default:this.value=[];return}let c=parseInt(i,10);if(isNaN(c))return;o.valueDec=c+a,s=!1}else{let o=new kn;if(i>Number.MAX_SAFE_INTEGER){I1();let a=BigInt(i);o.valueBigInt=a}else if(o.valueDec=parseInt(i,10),isNaN(o.valueDec))return;this.value.length||(o.isFirstSid=!0,s=!0),this.value.push(o)}while(n!==-1)}toString(){let e="",t=!1;for(let n=0;n<this.value.length;n++){t=this.value[n].isHexOnly;let i=this.value[n].toString();n!==0&&(e=`${e}.`),t?(i=`{${i}}`,this.value[n].isFirstSid?e=`2.{${i} - 80}`:e+=i):e+=i}return e}toJSON(){let e={...super.toJSON(),value:this.toString(),sidArray:[]};for(let t=0;t<this.value.length;t++)e.sidArray.push(this.value[t].toJSON());return e}};V1.NAME="ObjectIdentifierValueBlock";var F3,jr=class extends be{constructor(e={}){super(e,V1),this.idBlock.tagClass=1,this.idBlock.tagNumber=6}getValue(){return this.valueBlock.toString()}setValue(e){this.valueBlock.fromString(e)}onAsciiEncoding(){return`${this.constructor.NAME} : ${this.valueBlock.toString()||"empty"}`}toJSON(){return{...super.toJSON(),value:this.getValue()}}};F3=jr;I.ObjectIdentifier=F3;jr.NAME="OBJECT IDENTIFIER";var Tn=class extends kt(At){constructor({valueDec:e=0,...t}={}){super(t),this.valueDec=e}fromBER(e,t,n){if(n===0)return t;let i=H.BufferSourceConverter.toUint8Array(e);if(!Bt(this,i,t,n))return-1;let s=i.subarray(t,t+n);this.valueHexView=new Uint8Array(n);for(let a=0;a<n&&(this.valueHexView[a]=s[a]&127,this.blockLength++,!!(s[a]&128));a++);let o=new Uint8Array(this.blockLength);for(let a=0;a<this.blockLength;a++)o[a]=this.valueHexView[a];return this.valueHexView=o,s[this.blockLength-1]&128?(this.error="End of input reached before message was fully decoded",-1):(this.valueHexView[0]===0&&this.warnings.push("Needlessly long format of SID encoding"),this.blockLength<=8?this.valueDec=pr(this.valueHexView,7):(this.isHexOnly=!0,this.warnings.push("Too big SID for decoding, hex only")),t+this.blockLength)}toBER(e){if(this.isHexOnly){if(e)return new ArrayBuffer(this.valueHexView.byteLength);let i=this.valueHexView,s=new Uint8Array(this.blockLength);for(let o=0;o<this.blockLength-1;o++)s[o]=i[o]|128;return s[this.blockLength-1]=i[this.blockLength-1],s.buffer}let t=jt(this.valueDec,7);if(t.byteLength===0)return this.error="Error during encoding SID value",Je;let n=new Uint8Array(t.byteLength);if(!e){let i=new Uint8Array(t),s=t.byteLength-1;for(let o=0;o<s;o++)n[o]=i[o]|128;n[s]=i[s]}return n.buffer}toString(){let e="";return this.isHexOnly?e=H.Convert.ToHex(this.valueHexView):e=this.valueDec.toString(),e}toJSON(){return{...super.toJSON(),valueDec:this.valueDec}}};Tn.NAME="relativeSidBlock";var F1=class extends Ie{constructor({value:e=Wr,...t}={}){super(t),this.value=[],e&&this.fromString(e)}fromBER(e,t,n){let i=t;for(;n>0;){let s=new Tn;if(i=s.fromBER(e,i,n),i===-1)return this.blockLength=0,this.error=s.error,i;this.blockLength+=s.blockLength,n-=s.blockLength,this.value.push(s)}return i}toBER(e,t){let n=[];for(let i=0;i<this.value.length;i++){let s=this.value[i].toBER(e);if(s.byteLength===0)return this.error=this.value[i].error,Je;n.push(s)}return Zo(n)}fromString(e){this.value=[];let t=0,n=0,i="";do{n=e.indexOf(".",t),n===-1?i=e.substring(t):i=e.substring(t,n),t=n+1;let s=new Tn;if(s.valueDec=parseInt(i,10),isNaN(s.valueDec))return!0;this.value.push(s)}while(n!==-1);return!0}toString(){let e="",t=!1;for(let n=0;n<this.value.length;n++){t=this.value[n].isHexOnly;let i=this.value[n].toString();n!==0&&(e=`${e}.`),t&&(i=`{${i}}`),e+=i}return e}toJSON(){let e={...super.toJSON(),value:this.toString(),sidArray:[]};for(let t=0;t<this.value.length;t++)e.sidArray.push(this.value[t].toJSON());return e}};F1.NAME="RelativeObjectIdentifierValueBlock";var H3,H1=class extends be{constructor(e={}){super(e,F1),this.idBlock.tagClass=1,this.idBlock.tagNumber=13}getValue(){return this.valueBlock.toString()}setValue(e){this.valueBlock.fromString(e)}onAsciiEncoding(){return`${this.constructor.NAME} : ${this.valueBlock.toString()||"empty"}`}toJSON(){return{...super.toJSON(),value:this.getValue()}}};H3=H1;I.RelativeObjectIdentifier=H3;H1.NAME="RelativeObjectIdentifier";var q3,St=class extends Wt{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=16}};q3=St;I.Sequence=q3;St.NAME="SEQUENCE";var K3,q1=class extends Wt{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=17}};K3=q1;I.Set=K3;q1.NAME="SET";var K1=class extends kt(Ie){constructor({...e}={}){super(e),this.isHexOnly=!0,this.value=Wr}toJSON(){return{...super.toJSON(),value:this.value}}};K1.NAME="StringValueBlock";var $1=class extends K1{};$1.NAME="SimpleStringValueBlock";var Pe=class extends T1{constructor({...e}={}){super(e,$1)}fromBuffer(e){this.valueBlock.value=String.fromCharCode.apply(null,H.BufferSourceConverter.toUint8Array(e))}fromString(e){let t=e.length,n=this.valueBlock.valueHexView=new Uint8Array(t);for(let i=0;i<t;i++)n[i]=e.charCodeAt(i);this.valueBlock.value=e}};Pe.NAME="SIMPLE STRING";var z1=class extends Pe{fromBuffer(e){this.valueBlock.valueHexView=H.BufferSourceConverter.toUint8Array(e);try{this.valueBlock.value=H.Convert.ToUtf8String(e)}catch(t){this.warnings.push(`Error during "decodeURIComponent": ${t}, using raw string`),this.valueBlock.value=H.Convert.ToBinary(e)}}fromString(e){this.valueBlock.valueHexView=new Uint8Array(H.Convert.FromUtf8String(e)),this.valueBlock.value=e}};z1.NAME="Utf8StringValueBlock";var $3,It=class extends z1{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=12}};$3=It;I.Utf8String=$3;It.NAME="UTF8String";var G1=class extends Pe{fromBuffer(e){this.valueBlock.value=H.Convert.ToUtf16String(e),this.valueBlock.valueHexView=H.BufferSourceConverter.toUint8Array(e)}fromString(e){this.valueBlock.value=e,this.valueBlock.valueHexView=new Uint8Array(H.Convert.FromUtf16String(e))}};G1.NAME="BmpStringValueBlock";var z3,j1=class extends G1{constructor({...e}={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=30}};z3=j1;I.BmpString=z3;j1.NAME="BMPString";var W1=class extends Pe{fromBuffer(e){let t=ArrayBuffer.isView(e)?e.slice().buffer:e.slice(0),n=new Uint8Array(t);for(let i=0;i<n.length;i+=4)n[i]=n[i+3],n[i+1]=n[i+2],n[i+2]=0,n[i+3]=0;this.valueBlock.value=String.fromCharCode.apply(null,new Uint32Array(t))}fromString(e){let t=e.length,n=this.valueBlock.valueHexView=new Uint8Array(t*4);for(let i=0;i<t;i++){let s=jt(e.charCodeAt(i),8),o=new Uint8Array(s);if(o.length>4)continue;let a=4-o.length;for(let c=o.length-1;c>=0;c--)n[i*4+c+a]=o[c]}this.valueBlock.value=e}};W1.NAME="UniversalStringValueBlock";var G3,Q1=class extends W1{constructor({...e}={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=28}};G3=Q1;I.UniversalString=G3;Q1.NAME="UniversalString";var j3,Z1=class extends Pe{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=18}};j3=Z1;I.NumericString=j3;Z1.NAME="NumericString";var W3,Y1=class extends Pe{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=19}};W3=Y1;I.PrintableString=W3;Y1.NAME="PrintableString";var Q3,X1=class extends Pe{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=20}};Q3=X1;I.TeletexString=Q3;X1.NAME="TeletexString";var Z3,J1=class extends Pe{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=21}};Z3=J1;I.VideotexString=Z3;J1.NAME="VideotexString";var Y3,ei=class extends Pe{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=22}};Y3=ei;I.IA5String=Y3;ei.NAME="IA5String";var X3,ti=class extends Pe{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=25}};X3=ti;I.GraphicString=X3;ti.NAME="GraphicString";var J3,Rn=class extends Pe{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=26}};J3=Rn;I.VisibleString=J3;Rn.NAME="VisibleString";var ea,ri=class extends Pe{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=27}};ea=ri;I.GeneralString=ea;ri.NAME="GeneralString";var ta,ni=class extends Pe{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=29}};ta=ni;I.CharacterString=ta;ni.NAME="CharacterString";var ra,Pn=class extends Rn{constructor({value:e,valueDate:t,...n}={}){if(super(n),this.year=0,this.month=0,this.day=0,this.hour=0,this.minute=0,this.second=0,e){this.fromString(e),this.valueBlock.valueHexView=new Uint8Array(e.length);for(let i=0;i<e.length;i++)this.valueBlock.valueHexView[i]=e.charCodeAt(i)}t&&(this.fromDate(t),this.valueBlock.valueHexView=new Uint8Array(this.toBuffer())),this.idBlock.tagClass=1,this.idBlock.tagNumber=23}fromBuffer(e){this.fromString(String.fromCharCode.apply(null,H.BufferSourceConverter.toUint8Array(e)))}toBuffer(){let e=this.toString(),t=new ArrayBuffer(e.length),n=new Uint8Array(t);for(let i=0;i<e.length;i++)n[i]=e.charCodeAt(i);return t}fromDate(e){this.year=e.getUTCFullYear(),this.month=e.getUTCMonth()+1,this.day=e.getUTCDate(),this.hour=e.getUTCHours(),this.minute=e.getUTCMinutes(),this.second=e.getUTCSeconds()}toDate(){return new Date(Date.UTC(this.year,this.month-1,this.day,this.hour,this.minute,this.second))}fromString(e){let n=/(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})Z/ig.exec(e);if(n===null){this.error="Wrong input string for conversion";return}let i=parseInt(n[1],10);i>=50?this.year=1900+i:this.year=2e3+i,this.month=parseInt(n[2],10),this.day=parseInt(n[3],10),this.hour=parseInt(n[4],10),this.minute=parseInt(n[5],10),this.second=parseInt(n[6],10)}toString(e="iso"){if(e==="iso"){let t=new Array(7);return t[0]=Oe(this.year<2e3?this.year-1900:this.year-2e3,2),t[1]=Oe(this.month,2),t[2]=Oe(this.day,2),t[3]=Oe(this.hour,2),t[4]=Oe(this.minute,2),t[5]=Oe(this.second,2),t[6]="Z",t.join("")}return super.toString(e)}onAsciiEncoding(){return`${this.constructor.NAME} : ${this.toDate().toISOString()}`}toJSON(){return{...super.toJSON(),year:this.year,month:this.month,day:this.day,hour:this.hour,minute:this.minute,second:this.second}}};ra=Pn;I.UTCTime=ra;Pn.NAME="UTCTime";var na,ii=class extends Pn{constructor(e={}){var t;super(e),(t=this.millisecond)!==null&&t!==void 0||(this.millisecond=0),this.idBlock.tagClass=1,this.idBlock.tagNumber=24}fromDate(e){super.fromDate(e),this.millisecond=e.getUTCMilliseconds()}toDate(){return new Date(Date.UTC(this.year,this.month-1,this.day,this.hour,this.minute,this.second,this.millisecond))}fromString(e){let t=!1,n="",i="",s=0,o,a=0,c=0;if(e[e.length-1]==="Z")n=e.substring(0,e.length-1),t=!0;else{let f=new Number(e[e.length-1]);if(isNaN(f.valueOf()))throw new Error("Wrong input string for conversion");n=e}if(t){if(n.indexOf("+")!==-1)throw new Error("Wrong input string for conversion");if(n.indexOf("-")!==-1)throw new Error("Wrong input string for conversion")}else{let f=1,h=n.indexOf("+"),p="";if(h===-1&&(h=n.indexOf("-"),f=-1),h!==-1){if(p=n.substring(h+1),n=n.substring(0,h),p.length!==2&&p.length!==4)throw new Error("Wrong input string for conversion");let y=parseInt(p.substring(0,2),10);if(isNaN(y.valueOf()))throw new Error("Wrong input string for conversion");if(a=f*y,p.length===4){if(y=parseInt(p.substring(2,4),10),isNaN(y.valueOf()))throw new Error("Wrong input string for conversion");c=f*y}}}let l=n.indexOf(".");if(l===-1&&(l=n.indexOf(",")),l!==-1){let f=new Number(`0${n.substring(l)}`);if(isNaN(f.valueOf()))throw new Error("Wrong input string for conversion");s=f.valueOf(),i=n.substring(0,l)}else i=n;switch(!0){case i.length===8:if(o=/(\d{4})(\d{2})(\d{2})/ig,l!==-1)throw new Error("Wrong input string for conversion");break;case i.length===10:if(o=/(\d{4})(\d{2})(\d{2})(\d{2})/ig,l!==-1){let f=60*s;this.minute=Math.floor(f),f=60*(f-this.minute),this.second=Math.floor(f),f=1e3*(f-this.second),this.millisecond=Math.floor(f)}break;case i.length===12:if(o=/(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})/ig,l!==-1){let f=60*s;this.second=Math.floor(f),f=1e3*(f-this.second),this.millisecond=Math.floor(f)}break;case i.length===14:if(o=/(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})/ig,l!==-1){let f=1e3*s;this.millisecond=Math.floor(f)}break;default:throw new Error("Wrong input string for conversion")}let u=o.exec(i);if(u===null)throw new Error("Wrong input string for conversion");for(let f=1;f<u.length;f++)switch(f){case 1:this.year=parseInt(u[f],10);break;case 2:this.month=parseInt(u[f],10);break;case 3:this.day=parseInt(u[f],10);break;case 4:this.hour=parseInt(u[f],10)+a;break;case 5:this.minute=parseInt(u[f],10)+c;break;case 6:this.second=parseInt(u[f],10);break;default:throw new Error("Wrong input string for conversion")}if(t===!1){let f=new Date(this.year,this.month,this.day,this.hour,this.minute,this.second,this.millisecond);this.year=f.getUTCFullYear(),this.month=f.getUTCMonth(),this.day=f.getUTCDay(),this.hour=f.getUTCHours(),this.minute=f.getUTCMinutes(),this.second=f.getUTCSeconds(),this.millisecond=f.getUTCMilliseconds()}}toString(e="iso"){if(e==="iso"){let t=[];return t.push(Oe(this.year,4)),t.push(Oe(this.month,2)),t.push(Oe(this.day,2)),t.push(Oe(this.hour,2)),t.push(Oe(this.minute,2)),t.push(Oe(this.second,2)),this.millisecond!==0&&(t.push("."),t.push(Oe(this.millisecond,3))),t.push("Z"),t.join("")}return super.toString(e)}toJSON(){return{...super.toJSON(),millisecond:this.millisecond}}};na=ii;I.GeneralizedTime=na;ii.NAME="GeneralizedTime";var ia,si=class extends It{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=31}};ia=si;I.DATE=ia;si.NAME="DATE";var sa,oi=class extends It{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=32}};sa=oi;I.TimeOfDay=sa;oi.NAME="TimeOfDay";var oa,ai=class extends It{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=33}};oa=ai;I.DateTime=oa;ai.NAME="DateTime";var aa,ci=class extends It{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=34}};aa=ci;I.Duration=aa;ci.NAME="Duration";var ca,li=class extends It{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=14}};ca=li;I.TIME=ca;li.NAME="TIME";function fi(r){if(isNaN(r)||r<=0)throw new $("random bytes length must be a Number bigger than 0");return Vr(r)}var Ln=class extends Error{constructor(e="An error occurred while verifying a message"){super(e),this.name="VerificationError"}},hi=class extends Error{constructor(e="Missing Web Crypto API"){super(e),this.name="WebCryptoMissingError"}};var la={get(r=globalThis){let e=r.crypto;if(e?.subtle==null)throw new hi("Missing Web Crypto API. The most likely cause of this error is that this page is being accessed from an insecure context (i.e. not HTTPS). For more information and possible resolutions see https://github.com/libp2p/js-libp2p/blob/main/packages/crypto/README.md#web-crypto-api");return e}};var Qt=la;async function ua(r){let e=await Qt.get().subtle.generateKey({name:"RSASSA-PKCS1-v1_5",modulusLength:r,publicExponent:new Uint8Array([1,0,1]),hash:{name:"SHA-256"}},!0,["sign","verify"]),t=await P8(e);return{privateKey:t[0],publicKey:t[1]}}async function fa(r,e){let t=await Qt.get().subtle.importKey("jwk",r,{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-256"}},!1,["sign"]),n=await Qt.get().subtle.sign({name:"RSASSA-PKCS1-v1_5"},t,e instanceof Uint8Array?e:e.subarray());return new Uint8Array(n,0,n.byteLength)}async function ha(r,e,t){let n=await Qt.get().subtle.importKey("jwk",r,{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-256"}},!1,["verify"]);return Qt.get().subtle.verify({name:"RSASSA-PKCS1-v1_5"},n,e,t instanceof Uint8Array?t:t.subarray())}async function P8(r){if(r.privateKey==null||r.publicKey==null)throw new $("Private and public key are required");return Promise.all([Qt.get().subtle.exportKey("jwk",r.privateKey),Qt.get().subtle.exportKey("jwk",r.publicKey)])}function Jo(r){if(r.kty!=="RSA")throw new $("invalid key type");if(r.n==null)throw new $("invalid key modulus");return Q(r.n,"base64url").length*8}var Qr=class{type="RSA";_key;_raw;_multihash;constructor(e,t){this._key=e,this._multihash=t}get raw(){return this._raw==null&&(this._raw=Nn.jwkToPkix(this._key)),this._raw}toMultihash(){return this._multihash}toCID(){return re.createV1(114,this._multihash)}toString(){return Y.encode(this.toMultihash().bytes).substring(1)}equals(e){return e==null||!(e.raw instanceof Uint8Array)?!1:X(this.raw,e.raw)}verify(e,t){return ha(this._key,t,e)}},_n=class{type="RSA";_key;_raw;publicKey;constructor(e,t){this._key=e,this.publicKey=t}get raw(){return this._raw==null&&(this._raw=Nn.jwkToPkcs1(this._key)),this._raw}equals(e){return e==null||!(e.raw instanceof Uint8Array)?!1:X(this.raw,e.raw)}sign(e){return fa(this._key,e)}};var di=8192,e2=18;function da(r){let{result:e}=Xo(r),t=e.valueBlock.value;return{n:at(t[1]),e:at(t[2]),d:at(t[3]),p:at(t[4]),q:at(t[5]),dp:at(t[6]),dq:at(t[7]),qi:at(t[8]),kty:"RSA",alg:"RS256"}}function L8(r){if(r.n==null||r.e==null||r.d==null||r.p==null||r.q==null||r.dp==null||r.dq==null||r.qi==null)throw new $("JWK was missing components");let t=new St({value:[new xe({value:0}),xe.fromBigInt(ct(Q(r.n,"base64url"))),xe.fromBigInt(ct(Q(r.e,"base64url"))),xe.fromBigInt(ct(Q(r.d,"base64url"))),xe.fromBigInt(ct(Q(r.p,"base64url"))),xe.fromBigInt(ct(Q(r.q,"base64url"))),xe.fromBigInt(ct(Q(r.dp,"base64url"))),xe.fromBigInt(ct(Q(r.dq,"base64url"))),xe.fromBigInt(ct(Q(r.qi,"base64url")))]}).toBER();return new Uint8Array(t,0,t.byteLength)}function pa(r){let{result:e}=Xo(r),t=e.valueBlock.value[1].valueBlock.value[0].valueBlock.value;return{kty:"RSA",n:at(t[0]),e:at(t[1])}}function t2(r){if(r.n==null||r.e==null)throw new $("JWK was missing components");let t=new St({value:[new St({value:[new jr({value:"1.2.840.113549.1.1.1"}),new zr]}),new Gr({valueHex:new St({value:[xe.fromBigInt(ct(Q(r.n,"base64url"))),xe.fromBigInt(ct(Q(r.e,"base64url")))]}).toBER()})]}).toBER();return new Uint8Array(t,0,t.byteLength)}function at(r){let e=r.valueBlock.valueHexView;for(;e[0]===0;)e=e.subarray(1);return D(e,"base64url")}function ct(r){let e=[];return r.forEach(function(t){let n=t.toString(16);n.length%2>0&&(n=`0${n}`),e.push(n)}),BigInt("0x"+e.join(""))}function ma(r){let e=da(r);return ga(e)}function r2(r){let e=pa(r);if(Jo(e)>di)throw new ht("Key size is too large");let t=Kr(st.encode({Type:de.RSA,Data:r})),n=Qe(e2,t);return new Qr(e,n)}function ga(r){if(Jo(r)>di)throw new $("Key size is too large");let e=wa(r),t=Kr(st.encode({Type:de.RSA,Data:t2(e.publicKey)})),n=Qe(e2,t);return new _n(e.privateKey,new Qr(e.publicKey,n))}async function ya(r){if(r>di)throw new $("Key size is too large");let e=await ua(r),t=Kr(st.encode({Type:de.RSA,Data:t2(e.publicKey)})),n=Qe(e2,t);return new _n(e.privateKey,new Qr(e.publicKey,n))}function wa(r){if(r==null)throw new $("Missing key parameter");return{privateKey:r,publicKey:{kty:r.kty,n:r.n,e:r.e}}}var pi=class extends Mr{constructor(e,t){super(),this.finished=!1,this.destroyed=!1,e3(e);let n=bn(t);if(this.iHash=e.create(),typeof this.iHash.update!="function")throw new Error("Expected instance of class which extends utils.Hash");this.blockLen=this.iHash.blockLen,this.outputLen=this.iHash.outputLen;let i=this.blockLen,s=new Uint8Array(i);s.set(n.length>i?e.create().update(n).digest():n);for(let o=0;o<s.length;o++)s[o]^=54;this.iHash.update(s),this.oHash=e.create();for(let o=0;o<s.length;o++)s[o]^=106;this.oHash.update(s),s.fill(0)}update(e){return Or(this),this.iHash.update(e),this}digestInto(e){Or(this),Dr(e,this.outputLen),this.finished=!0,this.iHash.digestInto(e),this.oHash.update(e),this.oHash.digestInto(e),this.destroy()}digest(){let e=new Uint8Array(this.oHash.outputLen);return this.digestInto(e),e}_cloneInto(e){e||(e=Object.create(Object.getPrototypeOf(this),{}));let{oHash:t,iHash:n,finished:i,destroyed:s,blockLen:o,outputLen:a}=this;return e=e,e.finished=i,e.destroyed=s,e.blockLen=o,e.outputLen=a,e.oHash=t._cloneInto(e.oHash),e.iHash=n._cloneInto(e.iHash),e}destroy(){this.destroyed=!0,this.oHash.destroy(),this.iHash.destroy()}},n2=(r,e,t)=>new pi(r,e).update(t).digest();n2.create=(r,e)=>new pi(r,e);function ba(r){r.lowS!==void 0&&Ye("lowS",r.lowS),r.prehash!==void 0&&Ye("prehash",r.prehash)}function N8(r){let e=En(r);it(e,{a:"field",b:"field"},{allowedPrivateKeyLengths:"array",wrapPrivateKey:"boolean",isTorsionFree:"function",clearCofactor:"function",allowInfinityPoint:"boolean",fromBytes:"function",toBytes:"function"});let{endo:t,Fp:n,a:i}=e;if(t){if(!n.eql(i,n.ZERO))throw new Error("Endomorphism can only be defined for Koblitz curves that have a=0");if(typeof t!="object"||typeof t.beta!="bigint"||typeof t.splitScalar!="function")throw new Error("Expected endomorphism with beta: bigint and splitScalar: function")}return Object.freeze({...e})}var{bytesToNumberBE:_8,hexToBytes:C8}=m1,Tt={Err:class extends Error{constructor(e=""){super(e)}},_tlv:{encode:(r,e)=>{let{Err:t}=Tt;if(r<0||r>256)throw new t("tlv.encode: wrong tag");if(e.length&1)throw new t("tlv.encode: unpadded data");let n=e.length/2,i=lr(n);if(i.length/2&128)throw new t("tlv.encode: long form length too big");let s=n>127?lr(i.length/2|128):"";return`${lr(r)}${s}${i}${e}`},decode(r,e){let{Err:t}=Tt,n=0;if(r<0||r>256)throw new t("tlv.encode: wrong tag");if(e.length<2||e[n++]!==r)throw new t("tlv.decode: wrong tlv");let i=e[n++],s=!!(i&128),o=0;if(!s)o=i;else{let c=i&127;if(!c)throw new t("tlv.decode(long): indefinite length not supported");if(c>4)throw new t("tlv.decode(long): byte length is too big");let l=e.subarray(n,n+c);if(l.length!==c)throw new t("tlv.decode: length bytes not complete");if(l[0]===0)throw new t("tlv.decode(long): zero leftmost byte");for(let u of l)o=o<<8|u;if(n+=c,o<128)throw new t("tlv.decode(long): not minimal encoding")}let a=e.subarray(n,n+o);if(a.length!==o)throw new t("tlv.decode: wrong value length");return{v:a,l:e.subarray(n+o)}}},_int:{encode(r){let{Err:e}=Tt;if(r<Rt)throw new e("integer: negative integers are not allowed");let t=lr(r);if(Number.parseInt(t[0],16)&8&&(t="00"+t),t.length&1)throw new e("unexpected assertion");return t},decode(r){let{Err:e}=Tt;if(r[0]&128)throw new e("Invalid signature integer: negative");if(r[0]===0&&!(r[1]&128))throw new e("Invalid signature integer: unnecessary leading zero");return _8(r)}},toSig(r){let{Err:e,_int:t,_tlv:n}=Tt,i=typeof r=="string"?C8(r):r;Hr(i);let{v:s,l:o}=n.decode(48,i);if(o.length)throw new e("Invalid signature: left bytes after parsing");let{v:a,l:c}=n.decode(2,s),{v:l,l:u}=n.decode(2,c);if(u.length)throw new e("Invalid signature: left bytes after parsing");return{r:t.decode(a),s:t.decode(l)}},hexFromSig(r){let{_tlv:e,_int:t}=Tt,n=`${e.encode(2,t.encode(r.r))}${e.encode(2,t.encode(r.s))}`;return e.encode(48,n)}},Rt=BigInt(0),ye=BigInt(1),Wf=BigInt(2),xa=BigInt(3),Qf=BigInt(4);function U8(r){let e=N8(r),{Fp:t}=e,n=$t(e.n,e.nBitLength),i=e.toBytes||((w,d,x)=>{let E=d.toAffine();return vt(Uint8Array.from([4]),t.toBytes(E.x),t.toBytes(E.y))}),s=e.fromBytes||(w=>{let d=w.subarray(1),x=t.fromBytes(d.subarray(0,t.BYTES)),E=t.fromBytes(d.subarray(t.BYTES,2*t.BYTES));return{x,y:E}});function o(w){let{a:d,b:x}=e,E=t.sqr(w),m=t.mul(E,w);return t.add(t.add(m,t.mul(w,d)),x)}if(!t.eql(t.sqr(e.Gy),o(e.Gx)))throw new Error("bad generator point: equation left != right");function a(w){return xn(w,ye,e.n)}function c(w){let{allowedPrivateKeyLengths:d,nByteLength:x,wrapPrivateKey:E,n:m}=e;if(d&&typeof w!="bigint"){if(Ht(w)&&(w=bt(w)),typeof w!="string"||!d.includes(w.length))throw new Error("Invalid key");w=w.padStart(x*2,"0")}let A;try{A=typeof w=="bigint"?w:xt(ie("private key",w,x))}catch{throw new Error(`private key must be ${x} bytes, hex or bigint, not ${typeof w}`)}return E&&(A=W(A,m)),Ue("private key",A,ye,m),A}function l(w){if(!(w instanceof h))throw new Error("ProjectivePoint expected")}let u=hr((w,d)=>{let{px:x,py:E,pz:m}=w;if(t.eql(m,t.ONE))return{x,y:E};let A=w.is0();d==null&&(d=A?t.ONE:t.inv(m));let R=t.mul(x,d),T=t.mul(E,d),B=t.mul(m,d);if(A)return{x:t.ZERO,y:t.ZERO};if(!t.eql(B,t.ONE))throw new Error("invZ was invalid");return{x:R,y:T}}),f=hr(w=>{if(w.is0()){if(e.allowInfinityPoint&&!t.is0(w.py))return;throw new Error("bad point: ZERO")}let{x:d,y:x}=w.toAffine();if(!t.isValid(d)||!t.isValid(x))throw new Error("bad point: x or y not FE");let E=t.sqr(x),m=o(d);if(!t.eql(E,m))throw new Error("bad point: equation left != right");if(!w.isTorsionFree())throw new Error("bad point: not in prime-order subgroup");return!0});class h{constructor(d,x,E){if(this.px=d,this.py=x,this.pz=E,d==null||!t.isValid(d))throw new Error("x required");if(x==null||!t.isValid(x))throw new Error("y required");if(E==null||!t.isValid(E))throw new Error("z required");Object.freeze(this)}static fromAffine(d){let{x,y:E}=d||{};if(!d||!t.isValid(x)||!t.isValid(E))throw new Error("invalid affine point");if(d instanceof h)throw new Error("projective point not allowed");let m=A=>t.eql(A,t.ZERO);return m(x)&&m(E)?h.ZERO:new h(x,E,t.ONE)}get x(){return this.toAffine().x}get y(){return this.toAffine().y}static normalizeZ(d){let x=t.invertBatch(d.map(E=>E.pz));return d.map((E,m)=>E.toAffine(x[m])).map(h.fromAffine)}static fromHex(d){let x=h.fromAffine(s(ie("pointHex",d)));return x.assertValidity(),x}static fromPrivateKey(d){return h.BASE.multiply(c(d))}static msm(d,x){return w1(h,n,d,x)}_setWindowSize(d){y.setWindowSize(this,d)}assertValidity(){f(this)}hasEvenY(){let{y:d}=this.toAffine();if(t.isOdd)return!t.isOdd(d);throw new Error("Field doesn't support isOdd")}equals(d){l(d);let{px:x,py:E,pz:m}=this,{px:A,py:R,pz:T}=d,B=t.eql(t.mul(x,T),t.mul(A,m)),k=t.eql(t.mul(E,T),t.mul(R,m));return B&&k}negate(){return new h(this.px,t.neg(this.py),this.pz)}double(){let{a:d,b:x}=e,E=t.mul(x,xa),{px:m,py:A,pz:R}=this,T=t.ZERO,B=t.ZERO,k=t.ZERO,N=t.mul(m,m),ce=t.mul(A,A),K=t.mul(R,R),M=t.mul(m,A);return M=t.add(M,M),k=t.mul(m,R),k=t.add(k,k),T=t.mul(d,k),B=t.mul(E,K),B=t.add(T,B),T=t.sub(ce,B),B=t.add(ce,B),B=t.mul(T,B),T=t.mul(M,T),k=t.mul(E,k),K=t.mul(d,K),M=t.sub(N,K),M=t.mul(d,M),M=t.add(M,k),k=t.add(N,N),N=t.add(k,N),N=t.add(N,K),N=t.mul(N,M),B=t.add(B,N),K=t.mul(A,R),K=t.add(K,K),N=t.mul(K,M),T=t.sub(T,N),k=t.mul(K,ce),k=t.add(k,k),k=t.add(k,k),new h(T,B,k)}add(d){l(d);let{px:x,py:E,pz:m}=this,{px:A,py:R,pz:T}=d,B=t.ZERO,k=t.ZERO,N=t.ZERO,ce=e.a,K=t.mul(e.b,xa),M=t.mul(x,A),le=t.mul(E,R),S=t.mul(m,T),P=t.add(x,E),b=t.add(A,R);P=t.mul(P,b),b=t.add(M,le),P=t.sub(P,b),b=t.add(x,m);let g=t.add(A,T);return b=t.mul(b,g),g=t.add(M,S),b=t.sub(b,g),g=t.add(E,m),B=t.add(R,T),g=t.mul(g,B),B=t.add(le,S),g=t.sub(g,B),N=t.mul(ce,b),B=t.mul(K,S),N=t.add(B,N),B=t.sub(le,N),N=t.add(le,N),k=t.mul(B,N),le=t.add(M,M),le=t.add(le,M),S=t.mul(ce,S),b=t.mul(K,b),le=t.add(le,S),S=t.sub(M,S),S=t.mul(ce,S),b=t.add(b,S),M=t.mul(le,b),k=t.add(k,M),M=t.mul(g,b),B=t.mul(P,B),B=t.sub(B,M),M=t.mul(P,le),N=t.mul(g,N),N=t.add(N,M),new h(B,k,N)}subtract(d){return this.add(d.negate())}is0(){return this.equals(h.ZERO)}wNAF(d){return y.wNAFCached(this,d,h.normalizeZ)}multiplyUnsafe(d){Ue("scalar",d,Rt,e.n);let x=h.ZERO;if(d===Rt)return x;if(d===ye)return this;let{endo:E}=e;if(!E)return y.unsafeLadder(this,d);let{k1neg:m,k1:A,k2neg:R,k2:T}=E.splitScalar(d),B=x,k=x,N=this;for(;A>Rt||T>Rt;)A&ye&&(B=B.add(N)),T&ye&&(k=k.add(N)),N=N.double(),A>>=ye,T>>=ye;return m&&(B=B.negate()),R&&(k=k.negate()),k=new h(t.mul(k.px,E.beta),k.py,k.pz),B.add(k)}multiply(d){let{endo:x,n:E}=e;Ue("scalar",d,ye,E);let m,A;if(x){let{k1neg:R,k1:T,k2neg:B,k2:k}=x.splitScalar(d),{p:N,f:ce}=this.wNAF(T),{p:K,f:M}=this.wNAF(k);N=y.constTimeNegate(R,N),K=y.constTimeNegate(B,K),K=new h(t.mul(K.px,x.beta),K.py,K.pz),m=N.add(K),A=ce.add(M)}else{let{p:R,f:T}=this.wNAF(d);m=R,A=T}return h.normalizeZ([m,A])[0]}multiplyAndAddUnsafe(d,x,E){let m=h.BASE,A=(T,B)=>B===Rt||B===ye||!T.equals(m)?T.multiplyUnsafe(B):T.multiply(B),R=A(this,x).add(A(d,E));return R.is0()?void 0:R}toAffine(d){return u(this,d)}isTorsionFree(){let{h:d,isTorsionFree:x}=e;if(d===ye)return!0;if(x)return x(h,this);throw new Error("isTorsionFree() has not been declared for the elliptic curve")}clearCofactor(){let{h:d,clearCofactor:x}=e;return d===ye?this:x?x(h,this):this.multiplyUnsafe(e.h)}toRawBytes(d=!0){return Ye("isCompressed",d),this.assertValidity(),i(h,this,d)}toHex(d=!0){return Ye("isCompressed",d),bt(this.toRawBytes(d))}}h.BASE=new h(e.Gx,e.Gy,t.ONE),h.ZERO=new h(t.ZERO,t.ONE,t.ZERO);let p=e.nBitLength,y=y1(h,e.endo?Math.ceil(p/2):p);return{CURVE:e,ProjectivePoint:h,normPrivateKeyToScalar:c,weierstrassEquation:o,isWithinCurveOrder:a}}function D8(r){let e=En(r);return it(e,{hash:"hash",hmac:"function",randomBytes:"function"},{bits2int:"function",bits2int_modN:"function",lowS:"boolean"}),Object.freeze({lowS:!0,...e})}function va(r){let e=D8(r),{Fp:t,n}=e,i=t.BYTES+1,s=2*t.BYTES+1;function o(S){return W(S,n)}function a(S){return g1(S,n)}let{ProjectivePoint:c,normPrivateKeyToScalar:l,weierstrassEquation:u,isWithinCurveOrder:f}=U8({...e,toBytes(S,P,b){let g=P.toAffine(),v=t.toBytes(g.x),L=vt;return Ye("isCompressed",b),b?L(Uint8Array.from([P.hasEvenY()?2:3]),v):L(Uint8Array.from([4]),v,t.toBytes(g.y))},fromBytes(S){let P=S.length,b=S[0],g=S.subarray(1);if(P===i&&(b===2||b===3)){let v=xt(g);if(!xn(v,ye,t.ORDER))throw new Error("Point is not on curve");let L=u(v),_;try{_=t.sqrt(L)}catch(q){let F=q instanceof Error?": "+q.message:"";throw new Error("Point is not on curve"+F)}let C=(_&ye)===ye;return(b&1)===1!==C&&(_=t.neg(_)),{x:v,y:_}}else if(P===s&&b===4){let v=t.fromBytes(g.subarray(0,t.BYTES)),L=t.fromBytes(g.subarray(t.BYTES,2*t.BYTES));return{x:v,y:L}}else throw new Error(`Point of length ${P} was invalid. Expected ${i} compressed bytes or ${s} uncompressed bytes`)}}),h=S=>bt(Kt(S,e.nByteLength));function p(S){let P=n>>ye;return S>P}function y(S){return p(S)?o(-S):S}let w=(S,P,b)=>xt(S.slice(P,b));class d{constructor(P,b,g){this.r=P,this.s=b,this.recovery=g,this.assertValidity()}static fromCompact(P){let b=e.nByteLength;return P=ie("compactSignature",P,b*2),new d(w(P,0,b),w(P,b,2*b))}static fromDER(P){let{r:b,s:g}=Tt.toSig(ie("DER",P));return new d(b,g)}assertValidity(){Ue("r",this.r,ye,n),Ue("s",this.s,ye,n)}addRecoveryBit(P){return new d(this.r,this.s,P)}recoverPublicKey(P){let{r:b,s:g,recovery:v}=this,L=T(ie("msgHash",P));if(v==null||![0,1,2,3].includes(v))throw new Error("recovery id invalid");let _=v===2||v===3?b+e.n:b;if(_>=t.ORDER)throw new Error("recovery id 2 or 3 invalid");let C=v&1?"03":"02",V=c.fromHex(C+h(_)),q=a(_),F=o(-L*q),j=o(g*q),Z=c.BASE.multiplyAndAddUnsafe(V,F,j);if(!Z)throw new Error("point at infinify");return Z.assertValidity(),Z}hasHighS(){return p(this.s)}normalizeS(){return this.hasHighS()?new d(this.r,o(-this.s),this.recovery):this}toDERRawBytes(){return ur(this.toDERHex())}toDERHex(){return Tt.hexFromSig({r:this.r,s:this.s})}toCompactRawBytes(){return ur(this.toCompactHex())}toCompactHex(){return h(this.r)+h(this.s)}}let x={isValidPrivateKey(S){try{return l(S),!0}catch{return!1}},normPrivateKeyToScalar:l,randomPrivateKey:()=>{let S=Vo(e.n);return d3(e.randomBytes(S),e.n)},precompute(S=8,P=c.BASE){return P._setWindowSize(S),P.multiply(BigInt(3)),P}};function E(S,P=!0){return c.fromPrivateKey(S).toRawBytes(P)}function m(S){let P=Ht(S),b=typeof S=="string",g=(P||b)&&S.length;return P?g===i||g===s:b?g===2*i||g===2*s:S instanceof c}function A(S,P,b=!0){if(m(S))throw new Error("first arg must be private key");if(!m(P))throw new Error("second arg must be public key");return c.fromHex(P).multiply(l(S)).toRawBytes(b)}let R=e.bits2int||function(S){let P=xt(S),b=S.length*8-e.nBitLength;return b>0?P>>BigInt(b):P},T=e.bits2int_modN||function(S){return o(R(S))},B=vn(e.nBitLength);function k(S){return Ue(`num < 2^${e.nBitLength}`,S,Rt,B),Kt(S,e.nByteLength)}function N(S,P,b=ce){if(["recovered","canonical"].some(me=>me in b))throw new Error("sign() legacy options not supported");let{hash:g,randomBytes:v}=e,{lowS:L,prehash:_,extraEntropy:C}=b;L==null&&(L=!0),S=ie("msgHash",S),ba(b),_&&(S=ie("prehashed msgHash",g(S)));let V=T(S),q=l(P),F=[k(q),k(V)];if(C!=null&&C!==!1){let me=C===!0?v(t.BYTES):C;F.push(ie("extraEntropy",me))}let j=vt(...F),Z=V;function pe(me){let we=R(me);if(!f(we))return;let ke=a(we),ue=c.BASE.multiply(we).toAffine(),Le=o(ue.x);if(Le===Rt)return;let ut=o(ke*o(Z+Le*q));if(ut===Rt)return;let tn=(ue.x===Le?0:2)|Number(ue.y&ye),rn=ut;return L&&p(ut)&&(rn=y(ut),tn^=1),new d(Le,rn,tn)}return{seed:j,k2sig:pe}}let ce={lowS:e.lowS,prehash:!1},K={lowS:e.lowS,prehash:!1};function M(S,P,b=ce){let{seed:g,k2sig:v}=N(S,P,b),L=e;return Uo(L.hash.outputLen,L.nByteLength,L.hmac)(g,v)}c.BASE._setWindowSize(8);function le(S,P,b,g=K){let v=S;if(P=ie("msgHash",P),b=ie("publicKey",b),"strict"in g)throw new Error("options.strict was renamed to lowS");ba(g);let{lowS:L,prehash:_}=g,C,V;try{if(typeof v=="string"||Ht(v))try{C=d.fromDER(v)}catch(ue){if(!(ue instanceof Tt.Err))throw ue;C=d.fromCompact(v)}else if(typeof v=="object"&&typeof v.r=="bigint"&&typeof v.s=="bigint"){let{r:ue,s:Le}=v;C=new d(ue,Le)}else throw new Error("PARSE");V=c.fromHex(b)}catch(ue){if(ue.message==="PARSE")throw new Error("signature must be Signature instance, Uint8Array or hex string");return!1}if(L&&C.hasHighS())return!1;_&&(P=e.hash(P));let{r:q,s:F}=C,j=T(P),Z=a(F),pe=o(j*Z),me=o(q*Z),we=c.BASE.multiplyAndAddUnsafe(V,pe,me)?.toAffine();return we?o(we.x)===q:!1}return{CURVE:e,getPublicKey:E,getSharedSecret:A,sign:M,verify:le,ProjectivePoint:c,Signature:d,utils:x}}function O8(r){return{hash:r,hmac:(e,...t)=>n2(r,e,ko(...t)),randomBytes:Vr}}function Ea(r,e){let t=n=>va({...r,...O8(n)});return Object.freeze({...t(e),create:t})}var Ia=BigInt("0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f"),Aa=BigInt("0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141"),M8=BigInt(1),i2=BigInt(2),Sa=(r,e)=>(r+e/i2)/e;function V8(r){let e=Ia,t=BigInt(3),n=BigInt(6),i=BigInt(11),s=BigInt(22),o=BigInt(23),a=BigInt(44),c=BigInt(88),l=r*r*r%e,u=l*l*r%e,f=ee(u,t,e)*u%e,h=ee(f,t,e)*u%e,p=ee(h,i2,e)*l%e,y=ee(p,i,e)*p%e,w=ee(y,s,e)*y%e,d=ee(w,a,e)*w%e,x=ee(d,c,e)*d%e,E=ee(x,a,e)*w%e,m=ee(E,t,e)*u%e,A=ee(m,o,e)*y%e,R=ee(A,n,e)*l%e,T=ee(R,i2,e);if(!s2.eql(s2.sqr(T),r))throw new Error("Cannot find square root");return T}var s2=$t(Ia,void 0,void 0,{sqrt:V8}),mr=Ea({a:BigInt(0),b:BigInt(7),Fp:s2,n:Aa,Gx:BigInt("55066263022277343669578718895168534326250603453777594175500187360389116729240"),Gy:BigInt("32670510020758816978083085130507043184471273380659243275938904335757337482424"),h:BigInt(1),lowS:!0,endo:{beta:BigInt("0x7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee"),splitScalar:r=>{let e=Aa,t=BigInt("0x3086d221a7d46bcde86c90e49284eb15"),n=-M8*BigInt("0xe4437ed6010e88286f547fa90abfe4c3"),i=BigInt("0x114ca50f7a8e2f3f657c1108d9d44cfd8"),s=t,o=BigInt("0x100000000000000000000000000000000"),a=Sa(s*r,e),c=Sa(-n*r,e),l=W(r-a*t-c*i,e),u=W(-a*n-c*s,e),f=l>o,h=u>o;if(f&&(l=e-l),h&&(u=e-u),l>o||u>o)throw new Error("splitScalar: Endomorphism failed, k="+r);return{k1neg:f,k1:l,k2neg:h,k2:u}}}},Kr),ih=BigInt(0);var sh=mr.ProjectivePoint;function Be(r,e){e==null&&(e=r.reduce((i,s)=>i+s.length,0));let t=ge(e),n=0;for(let i of r)t.set(i,n),n+=i.length;return t}function Ba(r){return r==null?!1:typeof r.then=="function"&&typeof r.catch=="function"&&typeof r.finally=="function"}function ka(r,e,t){let n=gt.digest(t instanceof Uint8Array?t:t.subarray());if(Ba(n))return n.then(({digest:i})=>mr.verify(e,i,r)).catch(i=>{throw new Ln(String(i))});try{return mr.verify(e,n.digest,r)}catch(i){throw new Ln(String(i))}}var mi=class{type="secp256k1";raw;_key;constructor(e){this._key=Ra(e),this.raw=Ta(this._key)}toMultihash(){return mt.digest(qr(this))}toCID(){return re.createV1(114,this.toMultihash())}toString(){return Y.encode(this.toMultihash().bytes).substring(1)}equals(e){return e==null||!(e.raw instanceof Uint8Array)?!1:X(this.raw,e.raw)}verify(e,t){return ka(this._key,t,e)}};function o2(r){return new mi(r)}function Ta(r){return mr.ProjectivePoint.fromHex(r).toRawBytes(!0)}function Ra(r){try{return mr.ProjectivePoint.fromHex(r),r}catch(e){throw new ht(String(e))}}function gi(r){let{Type:e,Data:t}=st.decode(r),n=t??new Uint8Array;switch(e){case de.RSA:return r2(n);case de.Ed25519:return $o(n);case de.secp256k1:return o2(n);default:throw new tr}}function Pa(r){let{Type:e,Data:t}=st.decode(r.digest),n=t??new Uint8Array;switch(e){case de.Ed25519:return $o(n);case de.secp256k1:return o2(n);default:throw new tr}}function qr(r){return st.encode({Type:de[r.type],Data:r.raw})}async function Zr(r,e){let t=e.key,i=D(t).split("/");if(i.length<3)return;let s=r[i[1].toString()];if(s==null)throw new $(`No validator available for key type "${i[1]}"`);await s(t,e.value)}var H8=async(r,e)=>{if(!(r instanceof Uint8Array))throw new $('"key" must be a Uint8Array');if(r.byteLength<5)throw new $("Invalid public key record");if(D(r.subarray(0,4))!=="/pk/")throw new $("key was not prefixed with /pk/");let n=gi(e),i=r.slice(4);if(!X(i,n.toMultihash().bytes))throw new $("public key does not match passed in key")},La={pk:H8};var Na=Symbol.for("nodejs.util.inspect.custom"),q8=114,Cn=class{type;multihash;publicKey;string;constructor(e){this.type=e.type,this.multihash=e.multihash,Object.defineProperty(this,"string",{enumerable:!1,writable:!0})}get[Symbol.toStringTag](){return`PeerId(${this.toString()})`}[xs]=!0;toString(){return this.string==null&&(this.string=Y.encode(this.multihash.bytes).slice(1)),this.string}toMultihash(){return this.multihash}toCID(){return re.createV1(q8,this.multihash)}toJSON(){return this.toString()}equals(e){if(e==null)return!1;if(e instanceof Uint8Array)return X(this.multihash.bytes,e);if(typeof e=="string")return this.toString()===e;if(e?.toMultihash()?.bytes!=null)return X(this.multihash.bytes,e.toMultihash().bytes);throw new Error("not valid Id")}[Na](){return`PeerId(${this.toString()})`}},Un=class extends Cn{type="RSA";publicKey;constructor(e){super({...e,type:"RSA"}),this.publicKey=e.publicKey}},Dn=class extends Cn{type="Ed25519";publicKey;constructor(e){super({...e,type:"Ed25519"}),this.publicKey=e.publicKey}},On=class extends Cn{type="secp256k1";publicKey;constructor(e){super({...e,type:"secp256k1"}),this.publicKey=e.publicKey}},K8=2336,yi=class{type="url";multihash;publicKey;url;constructor(e){this.url=e.toString(),this.multihash=mt.digest(Q(this.url))}[Na](){return`PeerId(${this.url})`}[xs]=!0;toString(){return this.toCID().toString()}toMultihash(){return this.multihash}toCID(){return re.createV1(K8,this.toMultihash())}toJSON(){return this.toString()}equals(e){return e==null?!1:(e instanceof Uint8Array&&(e=D(e)),e.toString()===this.toString())}};function _a(r,e){let t;if(r.charAt(0)==="1"||r.charAt(0)==="Q")t=ae(Y.decode(`z${r}`));else{if(e==null)throw new $('Please pass a multibase decoder for strings that do not start with "1" or "Q"');t=ae(e.decode(r))}return Ke(t)}function Ca(r){if(r.type==="Ed25519")return new Dn({multihash:r.toCID().multihash,publicKey:r});if(r.type==="secp256k1")return new On({multihash:r.toCID().multihash,publicKey:r});if(r.type==="RSA")return new Un({multihash:r.toCID().multihash,publicKey:r});throw new tr}function Ke(r){if(z8(r))return new Un({multihash:r});if($8(r))try{let e=Pa(r);if(e.type==="Ed25519")return new Dn({multihash:r,publicKey:e});if(e.type==="secp256k1")return new On({multihash:r,publicKey:e})}catch{let t=D(r.digest);return new yi(new URL(t))}throw new jn("Supplied PeerID Multihash is invalid")}function $8(r){return r.code===mt.code}function z8(r){return r.code===gt.code}var wi=class{index=0;input="";new(e){return this.index=0,this.input=e,this}readAtomically(e){let t=this.index,n=e();return n===void 0&&(this.index=t),n}parseWith(e){let t=e();if(this.index===this.input.length)return t}peekChar(){if(!(this.index>=this.input.length))return this.input[this.index]}readChar(){if(!(this.index>=this.input.length))return this.input[this.index++]}readGivenChar(e){return this.readAtomically(()=>{let t=this.readChar();if(t===e)return t})}readSeparator(e,t,n){return this.readAtomically(()=>{if(!(t>0&&this.readGivenChar(e)===void 0))return n()})}readNumber(e,t,n,i){return this.readAtomically(()=>{let s=0,o=0,a=this.peekChar();if(a===void 0)return;let c=a==="0",l=2**(8*i)-1;for(;;){let u=this.readAtomically(()=>{let f=this.readChar();if(f===void 0)return;let h=Number.parseInt(f,e);if(!Number.isNaN(h))return h});if(u===void 0)break;if(s*=e,s+=u,s>l||(o+=1,t!==void 0&&o>t))return}if(o!==0)return!n&&c&&o>1?void 0:s})}readIPv4Addr(){return this.readAtomically(()=>{let e=new Uint8Array(4);for(let t=0;t<e.length;t++){let n=this.readSeparator(".",t,()=>this.readNumber(10,3,!1,1));if(n===void 0)return;e[t]=n}return e})}readIPv6Addr(){let e=t=>{for(let n=0;n<t.length/2;n++){let i=n*2;if(n<t.length-3){let o=this.readSeparator(":",n,()=>this.readIPv4Addr());if(o!==void 0)return t[i]=o[0],t[i+1]=o[1],t[i+2]=o[2],t[i+3]=o[3],[i+4,!0]}let s=this.readSeparator(":",n,()=>this.readNumber(16,4,!0,2));if(s===void 0)return[i,!1];t[i]=s>>8,t[i+1]=s&255}return[t.length,!1]};return this.readAtomically(()=>{let t=new Uint8Array(16),[n,i]=e(t);if(n===16)return t;if(i||this.readGivenChar(":")===void 0||this.readGivenChar(":")===void 0)return;let s=new Uint8Array(14),o=16-(n+2),[a]=e(s.subarray(0,o));return t.set(s.subarray(0,a),16-a),t})}readIPAddr(){return this.readIPv4Addr()??this.readIPv6Addr()}};var Ua=45,G8=15,Yr=new wi;function a2(r){if(!(r.length>G8))return Yr.new(r).parseWith(()=>Yr.readIPv4Addr())}function c2(r){if(r.includes("%")&&(r=r.split("%")[0]),!(r.length>Ua))return Yr.new(r).parseWith(()=>Yr.readIPv6Addr())}function bi(r){if(r.includes("%")&&(r=r.split("%")[0]),!(r.length>Ua))return Yr.new(r).parseWith(()=>Yr.readIPAddr())}function xi(r){return!!a2(r)}function vi(r){return!!c2(r)}function Ei(r){return!!bi(r)}var Oa=bs(Da(),1),j8=["0.0.0.0/8","10.0.0.0/8","100.64.0.0/10","127.0.0.0/8","169.254.0.0/16","172.16.0.0/12","192.0.0.0/24","192.0.0.0/29","192.0.0.8/32","192.0.0.9/32","192.0.0.10/32","192.0.0.170/32","192.0.0.171/32","192.0.2.0/24","192.31.196.0/24","192.52.193.0/24","192.88.99.0/24","192.168.0.0/16","192.175.48.0/24","198.18.0.0/15","198.51.100.0/24","203.0.113.0/24","240.0.0.0/4","255.255.255.255/32"],W8=j8.map(r=>new Oa.Netmask(r));function l2(r){for(let e of W8)if(e.contains(r))return!0;return!1}function Q8(r){return/^::ffff:([0-9a-fA-F]{1,4}):([0-9a-fA-F]{1,4})$/.test(r)}function Z8(r){let e=r.split(":");if(e.length<2)return!1;let t=e[e.length-1].padStart(4,"0"),n=e[e.length-2].padStart(4,"0"),i=`${parseInt(n.substring(0,2),16)}.${parseInt(n.substring(2),16)}.${parseInt(t.substring(0,2),16)}.${parseInt(t.substring(2),16)}`;return l2(i)}function Y8(r){return/^::ffff:([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})$/.test(r)}function X8(r){let e=r.split(":"),t=e[e.length-1];return l2(t)}function J8(r){return/^::$/.test(r)||/^::1$/.test(r)||/^64:ff9b::([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})$/.test(r)||/^100::([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4})$/.test(r)||/^2001::([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4})$/.test(r)||/^2001:2[0-9a-fA-F]:([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4})$/.test(r)||/^2001:db8:([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4})$/.test(r)||/^2002:([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4})$/.test(r)||/^f[c-d]([0-9a-fA-F]{2,2}):/i.test(r)||/^fe[8-9a-bA-B][0-9a-fA-F]:/i.test(r)||/^ff([0-9a-fA-F]{2,2}):/i.test(r)}function Ai(r){return xi(r)?l2(r):Q8(r)?Z8(r):Y8(r)?X8(r):vi(r)?J8(r):void 0}var Pt="/",Ma=new TextEncoder().encode(Pt),Si=Ma[0],Vn=class r{_buf;constructor(e,t){if(typeof e=="string")this._buf=Q(e);else if(e instanceof Uint8Array)this._buf=e;else throw new Error("Invalid key, should be String of Uint8Array");if(t==null&&(t=!0),t&&this.clean(),this._buf.byteLength===0||this._buf[0]!==Si)throw new Error("Invalid key")}toString(e="utf8"){return D(this._buf,e)}uint8Array(){return this._buf}get[Symbol.toStringTag](){return`Key(${this.toString()})`}static withNamespaces(e){return new r(e.join(Pt))}static random(){return new r(Math.random().toString().substring(2))}static asKey(e){return e instanceof Uint8Array||typeof e=="string"?new r(e):typeof e.uint8Array=="function"?new r(e.uint8Array()):null}clean(){if((this._buf==null||this._buf.byteLength===0)&&(this._buf=Ma),this._buf[0]!==Si){let e=new Uint8Array(this._buf.byteLength+1);e.fill(Si,0,1),e.set(this._buf,1),this._buf=e}for(;this._buf.byteLength>1&&this._buf[this._buf.byteLength-1]===Si;)this._buf=this._buf.subarray(0,-1)}less(e){let t=this.list(),n=e.list();for(let i=0;i<t.length;i++){if(n.length<i+1)return!1;let s=t[i],o=n[i];if(s<o)return!0;if(s>o)return!1}return t.length<n.length}reverse(){return r.withNamespaces(this.list().slice().reverse())}namespaces(){return this.list()}baseNamespace(){let e=this.namespaces();return e[e.length-1]}list(){return this.toString().split(Pt).slice(1)}type(){return e7(this.baseNamespace())}name(){return t7(this.baseNamespace())}instance(e){return new r(this.toString()+":"+e)}path(){let e=this.parent().toString();return e.endsWith(Pt)||(e+=Pt),e+=this.type(),new r(e)}parent(){let e=this.list();return e.length===1?new r(Pt):new r(e.slice(0,-1).join(Pt))}child(e){return this.toString()===Pt?e:e.toString()===Pt?this:new r(this.toString()+e.toString(),!1)}isAncestorOf(e){return e.toString()===this.toString()?!1:e.toString().startsWith(this.toString())}isDecendantOf(e){return e.toString()===this.toString()?!1:this.toString().startsWith(e.toString())}isTopLevel(){return this.list().length===1}concat(...e){return r.withNamespaces([...this.namespaces(),...r7(e.map(t=>t.namespaces()))])}};function e7(r){let e=r.split(":");return e.length<2?"":e.slice(0,-1).join(":")}function t7(r){let e=r.split(":");return e[e.length-1]}function r7(r){return[].concat(...r)}var n7=Q("/pk/");function Ii(r){return{...r,multiaddrs:r.multiaddrs.filter(e=>{let[[t,n]]=e.stringTuples();if(t===53||t===54||t===55)return n!=="localhost";if(t!==4&&t!==6||n==null)return!1;let i=Ai(n);return i==null?!0:!i})}}function Va(r){return{...r,multiaddrs:r.multiaddrs.filter(e=>{let[[t,n]]=e.stringTuples();if(n==="localhost")return!0;if(t!==4&&t!==6||n==null)return!1;let i=Ai(n);return i??!1})}}function Fa(r){return r}async function Zt(r){return(await gt.digest(r)).digest}async function ve(r){return Zt(r.toMultihash().bytes)}function Yt(r,e){return new Vn(`${r}/${D(e,"base32")}`,!1)}function Ha(r){return Be([n7,r.toMultihash().bytes])}function qa(r){return D(r.subarray(0,4))==="/pk/"}function Ka(r){let e=ae(r.subarray(4));return Ke(e)}function u2(r,e){let t=new Date;return new fe(r,e,t).serialize()}var i7=290,s7=54,o7=55,a7=56,c7=4,l7=41;function $a(r){let e=r.stringTuples();for(let t of e)if(t[0]===i7)return!1;if(e[0][0]===s7||e[0][0]===o7||e[0][0]===a7)return!0;if(e[0][0]===c7||e[0][0]===l7){let t=Ai(`${e[0][1]}`);return t==null||!t}return!1}function Bi(r){let e=r.toString().split("/"),t=e.pop(),n=e.pop();if(t==null||n==null)throw new Error(`incorrectly formatted provider entry key in datastore: ${r.toString()}`);return{cid:re.createV1(P0,ae(Q(n,"base32"))),peerId:_a(t)}}function ki(r,e,t){let n=typeof e=="string"?e:D(e.multihash.bytes,"base32"),i=[r,n];return t!=null&&i.push(t.toString()),new Vn(i.join("/"))}function Ti(r){return new Date(Ve(r))}function gr(r,e,t){return async function*(...n){let i=e.queryTime?.timer(t),s=e.errorTime?.timer(t),o=!1;try{e.queries?.increment({[t]:!0}),yield*r(...n)}catch(a){throw o=!0,s?.(),e.errors?.increment({[t]:!0}),a}finally{e.queries?.decrement({[t]:!0}),o||i?.()}}}function Ri(r,e,t){return async function(...n){let i=e?.queryTime?.timer(t),s=e?.errorTime?.timer(t),o=!1;try{return e.queries?.increment({[t]:!0}),await r(...n)}catch(a){throw o=!0,s?.(),e.errors?.increment({[t]:!0}),a}finally{e.queries?.decrement({[t]:!0}),o||i?.()}}}var Pi=class{log;components;validators;selectors;peerRouting;queryManager;network;datastorePrefix;constructor(e,t){let{validators:n,selectors:i,peerRouting:s,queryManager:o,network:a,logPrefix:c}=t;this.components=e,this.log=e.logger.forComponent(`${c}:content-fetching`),this.datastorePrefix=`${t.datastorePrefix}/record`,this.validators=n,this.selectors=i,this.peerRouting=s,this.queryManager=o,this.network=a}async getLocal(e){this.log("getLocal %b",e);let t=Yt(this.datastorePrefix,e);this.log("fetching record for key %k",t);let n=await this.components.datastore.get(t);this.log("found %k in local datastore",t);let i=fe.deserialize(n);return await Zr(this.validators,i),i}async*sendCorrectionRecord(e,t,n,i={}){this.log("sendCorrection for %b",e);let s=u2(e,n);for(let{value:o,from:a}of t){if(X(o,n)){this.log("record was ok");continue}if(this.components.peerId.equals(a)){try{let u=Yt(this.datastorePrefix,e);this.log(`Storing corrected record for key ${u.toString()}`),await this.components.datastore.put(u,s.subarray())}catch(u){this.log.error("Failed error correcting self",u)}continue}let c=!1,l={type:O.PUT_VALUE,key:e,record:s};for await(let u of this.network.sendRequest(a,l,i))u.name==="PEER_RESPONSE"&&u.record!=null&&X(u.record.value,fe.deserialize(s).value)&&(c=!0),yield u;c||(yield qe({from:a,error:new Mt("Value not put correctly")},i)),this.log.error("Failed error correcting entry")}}async*put(e,t,n={}){this.log("put key %b value %b",e,t);let i=u2(e,t),s=Yt(this.datastorePrefix,e);this.log(`storing record for key ${s.toString()}`),await this.components.datastore.put(s,i.subarray()),yield*Ot(this.peerRouting.getClosestPeers(e,{signal:n.signal}),o=>Dt(o,a=>async()=>{if(a.name!=="FINAL_PEER")return[a];let c=[],l={type:O.PUT_VALUE,key:e,record:i};this.log("send put to %p",a.peer.id);for await(let u of this.network.sendRequest(a.peer.id,l,n))c.push(u),u.name==="PEER_RESPONSE"&&(u.record!=null&&X(u.record.value,fe.deserialize(i).value)||c.push(qe({from:a.peer.id,error:new Mt("Value not put correctly")},n)));return c}),o=>ar(o,{ordered:!1,concurrency:Sr}),async function*(o){for await(let a of o)yield*a})}async*get(e,t={}){this.log("get %b",e);let n=[];for await(let a of this.getMany(e,t))a.name==="VALUE"&&n.push(a),yield a;if(n.length===0)return;let i=n.map(a=>a.value),s=0;try{s=Y0(this.selectors,e,i)}catch(a){if(a.name!=="InvalidParametersError")throw a}let o=i[s];if(this.log("GetValue %b %b",e,o),o==null)throw new je("Best value was not found");yield*this.sendCorrectionRecord(e,n,o,t),yield n[s]}async*getMany(e,t={}){this.log("getMany values for %b",e);try{let s=await this.getLocal(e);yield wn({value:s.value,from:this.components.peerId},t)}catch(s){this.log("error getting local value for %b",e,s)}let n=this,i=async function*({peer:s,signal:o}){for await(let a of n.peerRouting.getValueOrPeers(s,e,{signal:o}))yield a,a.name==="PEER_RESPONSE"&&a.record!=null&&(yield wn({from:s,value:a.record.value},t))};yield*this.queryManager.run(e,i,t)}};function yr(r,e){let t={[Symbol.iterator]:()=>t,next:()=>{let n=r.next(),i=n.value;return n.done===!0||i==null?{done:!0,value:void 0}:{done:!1,value:e(i)}}};return t}function Li(r){let e=ae(Y.decode(`z${r}`));return Ke(e)}var wr=class{map;constructor(e){if(this.map=new Map,e!=null)for(let[t,n]of e.entries())this.map.set(t.toString(),{key:t,value:n})}[Symbol.iterator](){return this.entries()}clear(){this.map.clear()}delete(e){return this.map.delete(e.toString())}entries(){return yr(this.map.entries(),e=>[e[1].key,e[1].value])}forEach(e){this.map.forEach((t,n)=>{e(t.value,t.key,this)})}get(e){return this.map.get(e.toString())?.value}has(e){return this.map.has(e.toString())}set(e,t){this.map.set(e.toString(),{key:e,value:t})}keys(){return yr(this.map.values(),e=>e.key)}values(){return yr(this.map.values(),e=>e.value)}get size(){return this.map.size}};var lt=class r{set;constructor(e){if(this.set=new Set,e!=null)for(let t of e)this.set.add(t.toString())}get size(){return this.set.size}[Symbol.iterator](){return this.values()}add(e){this.set.add(e.toString())}clear(){this.set.clear()}delete(e){this.set.delete(e.toString())}entries(){return yr(this.set.entries(),e=>{let t=Li(e[0]);return[t,t]})}forEach(e){this.set.forEach(t=>{let n=Li(t);e(n,n,this)})}has(e){return this.set.has(e.toString())}values(){return yr(this.set.values(),e=>Li(e))}intersection(e){let t=new r;for(let n of e)this.has(n)&&t.add(n);return t}difference(e){let t=new r;for(let n of this)e.has(n)||t.add(n);return t}union(e){let t=new r;for(let n of e)t.add(n);for(let n of this)t.add(n);return t}};var Ga=Symbol.for("@achingbrain/uint8arraylist");function za(r,e){if(e==null||e<0)throw new RangeError("index is out of bounds");let t=0;for(let n of r){let i=t+n.byteLength;if(e<i)return{buf:n,index:e-t};t=i}throw new RangeError("index is out of bounds")}function Ni(r){return!!r?.[Ga]}var $e=class r{bufs;length;[Ga]=!0;constructor(...e){this.bufs=[],this.length=0,e.length>0&&this.appendAll(e)}*[Symbol.iterator](){yield*this.bufs}get byteLength(){return this.length}append(...e){this.appendAll(e)}appendAll(e){let t=0;for(let n of e)if(n instanceof Uint8Array)t+=n.byteLength,this.bufs.push(n);else if(Ni(n))t+=n.byteLength,this.bufs.push(...n.bufs);else throw new Error("Could not append value, must be an Uint8Array or a Uint8ArrayList");this.length+=t}prepend(...e){this.prependAll(e)}prependAll(e){let t=0;for(let n of e.reverse())if(n instanceof Uint8Array)t+=n.byteLength,this.bufs.unshift(n);else if(Ni(n))t+=n.byteLength,this.bufs.unshift(...n.bufs);else throw new Error("Could not prepend value, must be an Uint8Array or a Uint8ArrayList");this.length+=t}get(e){let t=za(this.bufs,e);return t.buf[t.index]}set(e,t){let n=za(this.bufs,e);n.buf[n.index]=t}write(e,t=0){if(e instanceof Uint8Array)for(let n=0;n<e.length;n++)this.set(t+n,e[n]);else if(Ni(e))for(let n=0;n<e.length;n++)this.set(t+n,e.get(n));else throw new Error("Could not write value, must be an Uint8Array or a Uint8ArrayList")}consume(e){if(e=Math.trunc(e),!(Number.isNaN(e)||e<=0)){if(e===this.byteLength){this.bufs=[],this.length=0;return}for(;this.bufs.length>0;)if(e>=this.bufs[0].byteLength)e-=this.bufs[0].byteLength,this.length-=this.bufs[0].byteLength,this.bufs.shift();else{this.bufs[0]=this.bufs[0].subarray(e),this.length-=e;break}}}slice(e,t){let{bufs:n,length:i}=this._subList(e,t);return Be(n,i)}subarray(e,t){let{bufs:n,length:i}=this._subList(e,t);return n.length===1?n[0]:Be(n,i)}sublist(e,t){let{bufs:n,length:i}=this._subList(e,t),s=new r;return s.length=i,s.bufs=[...n],s}_subList(e,t){if(e=e??0,t=t??this.length,e<0&&(e=this.length+e),t<0&&(t=this.length+t),e<0||t>this.length)throw new RangeError("index is out of bounds");if(e===t)return{bufs:[],length:0};if(e===0&&t===this.length)return{bufs:this.bufs,length:this.length};let n=[],i=0;for(let s=0;s<this.bufs.length;s++){let o=this.bufs[s],a=i,c=a+o.byteLength;if(i=c,e>=c)continue;let l=e>=a&&e<c,u=t>a&&t<=c;if(l&&u){if(e===a&&t===c){n.push(o);break}let f=e-a;n.push(o.subarray(f,f+(t-e)));break}if(l){if(e===0){n.push(o);continue}n.push(o.subarray(e-a));continue}if(u){if(t===c){n.push(o);break}n.push(o.subarray(0,t-a));break}n.push(o)}return{bufs:n,length:t-e}}indexOf(e,t=0){if(!Ni(e)&&!(e instanceof Uint8Array))throw new TypeError('The "value" argument must be a Uint8ArrayList or Uint8Array');let n=e instanceof Uint8Array?e:e.subarray();if(t=Number(t??0),isNaN(t)&&(t=0),t<0&&(t=this.length+t),t<0&&(t=0),e.length===0)return t>this.length?this.length:t;let i=n.byteLength;if(i===0)throw new TypeError("search must be at least 1 byte long");let s=256,o=new Int32Array(s);for(let f=0;f<s;f++)o[f]=-1;for(let f=0;f<i;f++)o[n[f]]=f;let a=o,c=this.byteLength-n.byteLength,l=n.byteLength-1,u;for(let f=t;f<=c;f+=u){u=0;for(let h=l;h>=0;h--){let p=this.get(f+h);if(n[h]!==p){u=Math.max(1,h-a[p]);break}}if(u===0)return f}return-1}getInt8(e){let t=this.subarray(e,e+1);return new DataView(t.buffer,t.byteOffset,t.byteLength).getInt8(0)}setInt8(e,t){let n=ge(1);new DataView(n.buffer,n.byteOffset,n.byteLength).setInt8(0,t),this.write(n,e)}getInt16(e,t){let n=this.subarray(e,e+2);return new DataView(n.buffer,n.byteOffset,n.byteLength).getInt16(0,t)}setInt16(e,t,n){let i=Ce(2);new DataView(i.buffer,i.byteOffset,i.byteLength).setInt16(0,t,n),this.write(i,e)}getInt32(e,t){let n=this.subarray(e,e+4);return new DataView(n.buffer,n.byteOffset,n.byteLength).getInt32(0,t)}setInt32(e,t,n){let i=Ce(4);new DataView(i.buffer,i.byteOffset,i.byteLength).setInt32(0,t,n),this.write(i,e)}getBigInt64(e,t){let n=this.subarray(e,e+8);return new DataView(n.buffer,n.byteOffset,n.byteLength).getBigInt64(0,t)}setBigInt64(e,t,n){let i=Ce(8);new DataView(i.buffer,i.byteOffset,i.byteLength).setBigInt64(0,t,n),this.write(i,e)}getUint8(e){let t=this.subarray(e,e+1);return new DataView(t.buffer,t.byteOffset,t.byteLength).getUint8(0)}setUint8(e,t){let n=ge(1);new DataView(n.buffer,n.byteOffset,n.byteLength).setUint8(0,t),this.write(n,e)}getUint16(e,t){let n=this.subarray(e,e+2);return new DataView(n.buffer,n.byteOffset,n.byteLength).getUint16(0,t)}setUint16(e,t,n){let i=Ce(2);new DataView(i.buffer,i.byteOffset,i.byteLength).setUint16(0,t,n),this.write(i,e)}getUint32(e,t){let n=this.subarray(e,e+4);return new DataView(n.buffer,n.byteOffset,n.byteLength).getUint32(0,t)}setUint32(e,t,n){let i=Ce(4);new DataView(i.buffer,i.byteOffset,i.byteLength).setUint32(0,t,n),this.write(i,e)}getBigUint64(e,t){let n=this.subarray(e,e+8);return new DataView(n.buffer,n.byteOffset,n.byteLength).getBigUint64(0,t)}setBigUint64(e,t,n){let i=Ce(8);new DataView(i.buffer,i.byteOffset,i.byteLength).setBigUint64(0,t,n),this.write(i,e)}getFloat32(e,t){let n=this.subarray(e,e+4);return new DataView(n.buffer,n.byteOffset,n.byteLength).getFloat32(0,t)}setFloat32(e,t,n){let i=Ce(4);new DataView(i.buffer,i.byteOffset,i.byteLength).setFloat32(0,t,n),this.write(i,e)}getFloat64(e,t){let n=this.subarray(e,e+8);return new DataView(n.buffer,n.byteOffset,n.byteLength).getFloat64(0,t)}setFloat64(e,t,n){let i=Ce(8);new DataView(i.buffer,i.byteOffset,i.byteLength).setFloat64(0,t,n),this.write(i,e)}equals(e){if(e==null||!(e instanceof r)||e.bufs.length!==this.bufs.length)return!1;for(let t=0;t<this.bufs.length;t++)if(!X(this.bufs[t],e.bufs[t]))return!1;return!0}static fromUint8Arrays(e,t){let n=new r;return n.bufs=e,t==null&&(t=e.reduce((i,s)=>i+s.byteLength,0)),n.length=t,n}};var xp=parseInt("0xFFFF",16),vp=new Uint8Array([0,0,0,0,0,0,0,0,0,0,255,255]);var Qa=xi,m7=vi,f2=function(r){let e=0;if(r=r.toString().trim(),Qa(r)){let t=new Uint8Array(e+4);return r.split(/\./g).forEach(n=>{t[e++]=parseInt(n,10)&255}),t}if(m7(r)){let t=r.split(":",8),n;for(n=0;n<t.length;n++){let s=Qa(t[n]),o;s&&(o=f2(t[n]),t[n]=D(o.slice(0,2),"base16")),o!=null&&++n<8&&t.splice(n,0,D(o.slice(2,4),"base16"))}if(t[0]==="")for(;t.length<8;)t.unshift("0");else if(t[t.length-1]==="")for(;t.length<8;)t.push("0");else if(t.length<8){for(n=0;n<t.length&&t[n]!=="";n++);let s=[n,1];for(n=9-t.length;n>0;n--)s.push("0");t.splice.apply(t,s)}let i=new Uint8Array(e+16);for(n=0;n<t.length;n++){let s=parseInt(t[n],16);i[e++]=s>>8&255,i[e++]=s&255}return i}throw new Error("invalid ip address")},Za=function(r,e=0,t){e=~~e,t=t??r.length-e;let n=new DataView(r.buffer);if(t===4){let i=[];for(let s=0;s<t;s++)i.push(r[e+s]);return i.join(".")}if(t===16){let i=[];for(let s=0;s<t;s+=2)i.push(n.getUint16(e+s).toString(16));return i.join(":").replace(/(^|:)0(:0)*:0(:|$)/,"$1::$3").replace(/:{3,4}/,"::")}return""};var Xr={},h2={},y7=[[4,32,"ip4"],[6,16,"tcp"],[33,16,"dccp"],[41,128,"ip6"],[42,-1,"ip6zone"],[43,8,"ipcidr"],[53,-1,"dns",!0],[54,-1,"dns4",!0],[55,-1,"dns6",!0],[56,-1,"dnsaddr",!0],[132,16,"sctp"],[273,16,"udp"],[275,0,"p2p-webrtc-star"],[276,0,"p2p-webrtc-direct"],[277,0,"p2p-stardust"],[280,0,"webrtc-direct"],[281,0,"webrtc"],[290,0,"p2p-circuit"],[301,0,"udt"],[302,0,"utp"],[400,-1,"unix",!1,!0],[421,-1,"ipfs"],[421,-1,"p2p"],[443,0,"https"],[444,96,"onion"],[445,296,"onion3"],[446,-1,"garlic64"],[448,0,"tls"],[449,-1,"sni"],[460,0,"quic"],[461,0,"quic-v1"],[465,0,"webtransport"],[466,-1,"certhash"],[477,0,"ws"],[478,0,"wss"],[479,0,"p2p-websocket-star"],[480,0,"http"],[481,-1,"http-path"],[777,-1,"memory"]];y7.forEach(r=>{let e=w7(...r);h2[e.code]=e,Xr[e.name]=e});function w7(r,e,t,n,i){return{code:r,size:e,name:t,resolvable:!!n,path:!!i}}function G(r){if(typeof r=="number"){if(h2[r]!=null)return h2[r];throw new Error(`no protocol with code: ${r}`)}else if(typeof r=="string"){if(Xr[r]!=null)return Xr[r];throw new Error(`no protocol with name: ${r}`)}throw new Error(`invalid protocol id type: ${typeof r}`)}var rm=G("ip4"),nm=G("ip6"),im=G("ipcidr");function g2(r,e){switch(G(r).code){case 4:case 41:return x7(e);case 42:return m2(e);case 6:case 273:case 33:case 132:return Ja(e).toString();case 53:case 54:case 55:case 56:case 400:case 449:case 777:return m2(e);case 421:return S7(e);case 444:return Xa(e);case 445:return Xa(e);case 466:return A7(e);case 481:return globalThis.encodeURIComponent(m2(e));default:return D(e,"base16")}}function y2(r,e){switch(G(r).code){case 4:return Ya(e);case 41:return Ya(e);case 42:return p2(e);case 6:case 273:case 33:case 132:return w2(parseInt(e,10));case 53:case 54:case 55:case 56:case 400:case 449:case 777:return p2(e);case 421:return v7(e);case 444:return I7(e);case 445:return B7(e);case 466:return E7(e);case 481:return p2(globalThis.decodeURIComponent(e));default:return Q(e,"base16")}}var d2=Object.values(dn).map(r=>r.decoder),b7=function(){let r=d2[0].or(d2[1]);return d2.slice(2).forEach(e=>r=r.or(e)),r}();function Ya(r){if(!Ei(r))throw new Error("invalid ip address");return f2(r)}function x7(r){let e=Za(r,0,r.length);if(e==null)throw new Error("ipBuff is required");if(!Ei(e))throw new Error("invalid ip address");return e}function w2(r){let e=new ArrayBuffer(2);return new DataView(e).setUint16(0,r),new Uint8Array(e)}function Ja(r){return new DataView(r.buffer).getUint16(r.byteOffset)}function p2(r){let e=Q(r),t=Uint8Array.from(ze(e.length));return Be([t,e],t.length+e.length)}function m2(r){let e=Ve(r);if(r=r.slice(oe(e)),r.length!==e)throw new Error("inconsistent lengths");return D(r)}function v7(r){let e;r[0]==="Q"||r[0]==="1"?e=ae(Y.decode(`z${r}`)).bytes:e=re.parse(r).multihash.bytes;let t=Uint8Array.from(ze(e.length));return Be([t,e],t.length+e.length)}function E7(r){let e=b7.decode(r),t=Uint8Array.from(ze(e.length));return Be([t,e],t.length+e.length)}function A7(r){let e=Ve(r),t=r.slice(oe(e));if(t.length!==e)throw new Error("inconsistent lengths");return"u"+D(t,"base64url")}function S7(r){let e=Ve(r),t=r.slice(oe(e));if(t.length!==e)throw new Error("inconsistent lengths");return D(t,"base58btc")}function I7(r){let e=r.split(":");if(e.length!==2)throw new Error(`failed to parse onion addr: ["'${e.join('", "')}'"]' does not contain a port number`);if(e[0].length!==16)throw new Error(`failed to parse onion addr: ${e[0]} not a Tor onion address.`);let t=pt.decode("b"+e[0]),n=parseInt(e[1],10);if(n<1||n>65536)throw new Error("Port number is not in range(1, 65536)");let i=w2(n);return Be([t,i],t.length+i.length)}function B7(r){let e=r.split(":");if(e.length!==2)throw new Error(`failed to parse onion addr: ["'${e.join('", "')}'"]' does not contain a port number`);if(e[0].length!==56)throw new Error(`failed to parse onion addr: ${e[0]} not a Tor onion3 address.`);let t=pt.decode(`b${e[0]}`),n=parseInt(e[1],10);if(n<1||n>65536)throw new Error("Port number is not in range(1, 65536)");let i=w2(n);return Be([t,i],t.length+i.length)}function Xa(r){let e=r.slice(0,r.length-2),t=r.slice(r.length-2),n=D(e,"base32"),i=Ja(t);return`${n}:${i}`}function e4(r){r=b2(r);let e=[],t=[],n=null,i=r.split("/").slice(1);if(i.length===1&&i[0]==="")return{bytes:new Uint8Array,string:"/",tuples:[],stringTuples:[],path:null};for(let s=0;s<i.length;s++){let o=i[s],a=G(o);if(a.size===0){e.push([a.code]),t.push([a.code]);continue}if(s++,s>=i.length)throw r4("invalid address: "+r);if(a.path===!0){n=b2(i.slice(s).join("/")),e.push([a.code,y2(a.code,n)]),t.push([a.code,n]);break}let c=y2(a.code,i[s]);e.push([a.code,c]),t.push([a.code,g2(a.code,c)])}return{string:t4(t),bytes:v2(e),tuples:e,stringTuples:t,path:n}}function x2(r){let e=[],t=[],n=null,i=0;for(;i<r.length;){let s=Ve(r,i),o=oe(s),a=G(s),c=k7(a,r.slice(i+o));if(c===0){e.push([s]),t.push([s]),i+=o;continue}let l=r.slice(i+o,i+o+c);if(i+=c+o,i>r.length)throw r4("Invalid address Uint8Array: "+D(r,"base16"));e.push([s,l]);let u=g2(s,l);if(t.push([s,u]),a.path===!0){n=u;break}}return{bytes:Uint8Array.from(r),string:t4(t),tuples:e,stringTuples:t,path:n}}function t4(r){let e=[];return r.map(t=>{let n=G(t[0]);return e.push(n.name),t.length>1&&t[1]!=null&&e.push(t[1]),null}),b2(e.join("/"))}function v2(r){return Be(r.map(e=>{let t=G(e[0]),n=Uint8Array.from(ze(t.code));return e.length>1&&e[1]!=null&&(n=Be([n,e[1]])),n}))}function k7(r,e){if(r.size>0)return r.size/8;if(r.size===0)return 0;{let t=Ve(e instanceof Uint8Array?e:Uint8Array.from(e));return t+oe(t)}}function b2(r){return"/"+r.trim().split("/").filter(e=>e).join("/")}function r4(r){return new Error("Error parsing address: "+r)}var T7=Symbol.for("nodejs.util.inspect.custom"),A2=Symbol.for("@multiformats/js-multiaddr/multiaddr"),R7=[G("dns").code,G("dns4").code,G("dns6").code,G("dnsaddr").code],E2=class extends Error{constructor(e="No available resolver"){super(e),this.name="NoAvailableResolverError"}},_i=class r{bytes;#e;#r;#s;#a;[A2]=!0;constructor(e){e==null&&(e="");let t;if(e instanceof Uint8Array)t=x2(e);else if(typeof e=="string"){if(e.length>0&&e.charAt(0)!=="/")throw new Error(`multiaddr "${e}" must start with a "/"`);t=e4(e)}else if(i4(e))t=x2(e.bytes);else throw new Error("addr must be a string, Buffer, or another Multiaddr");this.bytes=t.bytes,this.#e=t.string,this.#r=t.tuples,this.#s=t.stringTuples,this.#a=t.path}toString(){return this.#e}toJSON(){return this.toString()}toOptions(){let e,t,n,i,s="",o=G("tcp"),a=G("udp"),c=G("ip4"),l=G("ip6"),u=G("dns6"),f=G("ip6zone");for(let[p,y]of this.stringTuples())p===f.code&&(s=`%${y??""}`),R7.includes(p)&&(t=o.name,i=443,n=`${y??""}${s}`,e=p===u.code?6:4),(p===o.code||p===a.code)&&(t=G(p).name,i=parseInt(y??"")),(p===c.code||p===l.code)&&(t=G(p).name,n=`${y??""}${s}`,e=p===l.code?6:4);if(e==null||t==null||n==null||i==null)throw new Error('multiaddr must have a valid format: "/{ip4, ip6, dns4, dns6, dnsaddr}/{address}/{tcp, udp}/{port}".');return{family:e,host:n,transport:t,port:i}}protos(){return this.#r.map(([e])=>Object.assign({},G(e)))}protoCodes(){return this.#r.map(([e])=>e)}protoNames(){return this.#r.map(([e])=>G(e).name)}tuples(){return this.#r.map(([e,t])=>t==null?[e]:[e,t])}stringTuples(){return this.#s.map(([e,t])=>t==null?[e]:[e,t])}encapsulate(e){return e=new r(e),new r(this.toString()+e.toString())}decapsulate(e){let t=e.toString(),n=this.toString(),i=n.lastIndexOf(t);if(i<0)throw new Error(`Address ${this.toString()} does not contain subaddress: ${e.toString()}`);return new r(n.slice(0,i))}decapsulateCode(e){let t=this.tuples();for(let n=t.length-1;n>=0;n--)if(t[n][0]===e)return new r(v2(t.slice(0,n)));return this}getPeerId(){try{let e=[];this.stringTuples().forEach(([n,i])=>{n===Xr.p2p.code&&e.push([n,i]),n===Xr["p2p-circuit"].code&&(e=[])});let t=e.pop();if(t?.[1]!=null){let n=t[1];return n[0]==="Q"||n[0]==="1"?D(Y.decode(`z${n}`),"base58btc"):D(re.parse(n).multihash.bytes,"base58btc")}return null}catch{return null}}getPath(){return this.#a}equals(e){return X(this.bytes,e.bytes)}async resolve(e){let t=this.protos().find(s=>s.resolvable);if(t==null)return[this];let n=n4.get(t.name);if(n==null)throw new E2(`no available resolver for ${t.name}`);return(await n(this,e)).map(s=>br(s))}nodeAddress(){let e=this.toOptions();if(e.transport!=="tcp"&&e.transport!=="udp")throw new Error(`multiaddr must have a valid format - no protocol with name: "${e.transport}". Must have a valid transport protocol: "{tcp, udp}"`);return{family:e.family,address:e.host,port:e.port}}isThinWaistAddress(e){let t=(e??this).protos();return!(t.length!==2||t[0].code!==4&&t[0].code!==41||t[1].code!==6&&t[1].code!==273)}[T7](){return`Multiaddr(${this.#e})`}};var n4=new Map;function i4(r){return!!r?.[A2]}function br(r){return new _i(r)}function s4(r,e){return{id:r.id.toMultihash().bytes,multiaddrs:(r.multiaddrs??[]).map(n=>n.bytes),connection:e}}function Fn(r){if(r.id==null)throw new Error("Invalid peer in message");let e=ae(r.id);return{id:Ke(e),multiaddrs:(r.multiaddrs??[]).map(t=>br(t))}}var Ci=class{log;components;network;peerRouting;queryManager;routingTable;providers;constructor(e,t){let{network:n,peerRouting:i,queryManager:s,routingTable:o,providers:a,logPrefix:c}=t;this.components=e,this.log=e.logger.forComponent(`${c}:content-routing`),this.network=n,this.peerRouting=i,this.queryManager=s,this.routingTable=o,this.providers=a}async*provide(e,t,n={}){this.log("provide %s",e);let i=e.multihash.bytes;await this.providers.addProvider(e,this.components.peerId);let s={type:O.ADD_PROVIDER,key:i,providers:[s4({id:this.components.peerId,multiaddrs:t})]},o=0,a=c=>async()=>{if(c.name!=="FINAL_PEER")return[c];let l=[];this.log("putProvider %s to %p",e,c.peer.id);try{this.log("sending provider record for %s to %p",e,c.peer.id);for await(let u of this.network.sendMessage(c.peer.id,s,n))u.name==="PEER_RESPONSE"&&(this.log("sent provider record for %s to %p",e,c.peer.id),o++),l.push(u)}catch(u){this.log.error("error sending provide record to peer %p",c.peer.id,u),l.push(qe({from:c.peer.id,error:u},n))}return l};yield*Ot(this.peerRouting.getClosestPeers(i,n),c=>Dt(c,l=>a(l)),c=>ar(c,{ordered:!1,concurrency:Sr}),async function*(c){for await(let l of c)yield*l}),this.log("sent provider records to %d peers",o)}async*findProviders(e,t){let n=this.routingTable.kBucketSize,i=0,s=e.multihash.bytes,o=this;this.log("findProviders %c",e);let a=await this.providers.getProviders(e);if(a.length>0){let u=[];for(let f of a.slice(0,n))try{let h=await this.components.peerStore.get(f);u.push({id:f,multiaddrs:h.addresses.map(({multiaddr:p})=>p)})}catch(h){if(h.name!=="NotFoundError")throw h;this.log("no peer store entry for %p",f)}if(yield yn({from:this.components.peerId,messageType:O.GET_PROVIDERS,providers:u},t),yield Io({from:this.components.peerId,providers:u},t),i+=u.length,i>=n)return}let c=async function*({peer:u,signal:f}){let h={type:O.GET_PROVIDERS,key:s};yield*o.network.sendRequest(u,h,{...t,signal:f})},l=new lt(a);for await(let u of this.queryManager.run(s,c,t))if(yield u,u.name==="PEER_RESPONSE"){this.log("Found %d provider entries for %c and %d closer peers",u.providers.length,e,u.closer.length);let f=[];for(let h of u.providers)l.has(h.id)||(l.add(h.id),f.push(h));if(f.length>0&&(yield Io({from:u.from,providers:f},t),i+=f.length,i>=n))return}}};function et(r){let e=new globalThis.AbortController;function t(){e.abort();for(let s of r)s?.removeEventListener!=null&&s.removeEventListener("abort",t)}for(let s of r){if(s?.aborted===!0){t();break}s?.addEventListener!=null&&s.addEventListener("abort",t)}function n(){for(let s of r)s?.removeEventListener!=null&&s.removeEventListener("abort",t)}let i=e.signal;return i.clear=n,i}var Jr=class{movingAverage;variance;deviation;forecast;timespan;previousTime;constructor(e){this.timespan=e,this.movingAverage=0,this.variance=0,this.deviation=0,this.forecast=0}alpha(e,t){return 1-Math.exp(-(e-t)/this.timespan)}push(e,t=Date.now()){if(this.previousTime!=null){let n=this.alpha(t,this.previousTime),i=e-this.movingAverage,s=n*i;this.movingAverage=n*e+(1-n)*this.movingAverage,this.variance=(1-n)*(this.variance+i*s),this.deviation=Math.sqrt(this.variance),this.forecast=this.movingAverage+n*i}else this.movingAverage=e;this.previousTime=t}};var P7=1.2,L7=2,N7=2e3,Lt=class{success;failure;next;metric;timeoutMultiplier;failureMultiplier;minTimeout;constructor(e={}){this.success=new Jr(e.interval??5e3),this.failure=new Jr(e.interval??5e3),this.next=new Jr(e.interval??5e3),this.failureMultiplier=e.failureMultiplier??L7,this.timeoutMultiplier=e.timeoutMultiplier??P7,this.minTimeout=e.minTimeout??N7,e.metricName!=null&&(this.metric=e.metrics?.registerMetricGroup(e.metricName))}getTimeoutSignal(e={}){let t=Math.max(Math.round(this.next.movingAverage*(e.timeoutFactor??this.timeoutMultiplier)),this.minTimeout),n=AbortSignal.timeout(t),i=et([e.signal,n]);return te(1/0,i,n),i.start=Date.now(),i.timeout=t,i}cleanUp(e){let t=Date.now()-e.start;e.aborted?(this.failure.push(t),this.next.push(t*this.failureMultiplier),this.metric?.update({failureMovingAverage:this.failure.movingAverage,failureDeviation:this.failure.deviation,failureForecast:this.failure.forecast,failureVariance:this.failure.variance,failure:t})):(this.success.push(t),this.next.push(t),this.metric?.update({successMovingAverage:this.success.movingAverage,successDeviation:this.success.deviation,successForecast:this.success.forecast,successVariance:this.success.variance,success:t}))}};var Ui=class extends Error{type;code;constructor(e,t,n){super(e??"The operation was aborted"),this.type="aborted",this.name=n??"AbortError",this.code=t??"ABORT_ERR"}};async function en(r,e,t){if(e==null)return r;if(e.aborted)return Promise.reject(new Ui(t?.errorMessage,t?.errorCode,t?.errorName));let n,i=new Ui(t?.errorMessage,t?.errorCode,t?.errorName);try{return await Promise.race([r,new Promise((s,o)=>{n=()=>{o(i)},e.addEventListener("abort",n)})])}finally{n!=null&&e.removeEventListener("abort",n)}}var S2=class{readNext;haveNext;ended;nextResult;constructor(){this.ended=!1,this.readNext=se(),this.haveNext=se()}[Symbol.asyncIterator](){return this}async next(){if(this.nextResult==null&&await this.haveNext.promise,this.nextResult==null)throw new Error("HaveNext promise resolved but nextResult was undefined");let e=this.nextResult;return this.nextResult=void 0,this.readNext.resolve(),this.readNext=se(),e}async throw(e){return this.ended=!0,e!=null&&(this.haveNext.promise.catch(()=>{}),this.haveNext.reject(e)),{done:!0,value:void 0}}async return(){let e={done:!0,value:void 0};return await this._push(void 0),e}async push(e,t){await this._push(e,t)}async end(e,t){e!=null?await this.throw(e):await this._push(void 0,t)}async _push(e,t){if(e!=null&&this.ended)throw new Error("Cannot push value onto an ended pushable");for(;this.nextResult!=null;)await this.readNext.promise;e!=null?this.nextResult={done:!1,value:e}:(this.ended=!0,this.nextResult={done:!0,value:void 0}),this.haveNext.resolve(),this.haveNext=se(),await en(this.readNext.promise,t?.signal,t)}};function o4(){return new S2}var Di=class extends Error{name="UnexpectedEOFError";code="ERR_UNEXPECTED_EOF"};var I2=class extends Error{code;constructor(e,t){super(e),this.code=t}},B2=class extends I2{type;constructor(e){super(e,"ABORT_ERR"),this.type="aborted",this.name="AbortError"}};function a4(r,e){let t=o4();r.sink(t).catch(async o=>{await t.end(o)}),r.sink=async o=>{for await(let a of o)await t.push(a);await t.end()};let n=r.source;r.source[Symbol.iterator]!=null?n=r.source[Symbol.iterator]():r.source[Symbol.asyncIterator]!=null&&(n=r.source[Symbol.asyncIterator]());let i=new $e;return{read:async(o,a)=>{a?.signal?.throwIfAborted();let c,l=new Promise((u,f)=>{c=()=>{f(new B2("Read aborted"))},a?.signal?.addEventListener("abort",c)});try{if(o==null){let{done:f,value:h}=await Promise.race([n.next(),l]);return f===!0?new $e:h}for(;i.byteLength<o;){let{value:f,done:h}=await Promise.race([n.next(),l]);if(h===!0)throw new Di("unexpected end of input");i.append(f)}let u=i.sublist(0,o);return i.consume(o),u}finally{c!=null&&a?.signal?.removeEventListener("abort",c)}},write:async(o,a)=>{a?.signal?.throwIfAborted(),o instanceof Uint8Array?await t.push(o,a):await t.push(o.subarray(),a)},unwrap:()=>{if(i.byteLength>0){let o=r.source;r.source=async function*(){e?.yieldBytes===!1?yield i:yield*i,yield*o}()}return r}}}var Oi=class extends Error{name="InvalidMessageLengthError";code="ERR_INVALID_MSG_LENGTH"},Mi=class extends Error{name="InvalidDataLengthError";code="ERR_MSG_DATA_TOO_LONG"},Vi=class extends Error{name="InvalidDataLengthLengthError";code="ERR_MSG_LENGTH_TOO_LONG"};function c4(r,e={}){let t=a4(r,e);e.maxDataLength!=null&&e.maxLengthLength==null&&(e.maxLengthLength=oe(e.maxDataLength));let n=e?.lengthDecoder??Ve,i=e?.lengthEncoder??ze;return{read:async o=>{let a=-1,c=new $e;for(;;){c.append(await t.read(1,o));try{a=n(c)}catch(l){if(l instanceof RangeError)continue;throw l}if(a<0)throw new Oi("Invalid message length");if(e?.maxLengthLength!=null&&c.byteLength>e.maxLengthLength)throw new Vi("message length length too long");if(a>-1)break}if(e?.maxDataLength!=null&&a>e.maxDataLength)throw new Mi("message length too long");return t.read(a,o)},write:async(o,a)=>{await t.write(new $e(i(o.byteLength),o),a)},writeV:async(o,a)=>{let c=new $e(...o.flatMap(l=>[i(l.byteLength),l]));await t.write(c,a)},unwrap:()=>t.unwrap()}}function k2(r,e){let t=c4(r,e),n={read:async(i,s)=>{let o=await t.read(s);return i.decode(o)},write:async(i,s,o)=>{await t.write(s.encode(i),o)},writeV:async(i,s,o)=>{await t.writeV(i.map(a=>s.encode(a)),o)},pb:i=>({read:async s=>n.read(i,s),write:async(s,o)=>n.write(s,i,o),writeV:async(s,o)=>n.writeV(s,i,o),unwrap:()=>n}),unwrap:()=>t.unwrap()};return n}var Fi=class extends _e{log;protocol;running;components;timeout;metrics;constructor(e,t){super(),this.components=e,this.log=e.logger.forComponent(`${t.logPrefix}:network`),this.running=!1,this.protocol=t.protocol,this.timeout=new Lt({...t.timeout??{},metrics:e.metrics,metricName:`${t.metricsPrefix}_network_message_send_times_milliseconds`}),this.metrics={operations:e.metrics?.registerCounterGroup(`${t.metricsPrefix}_outbound_rpc_requests_total`),errors:e.metrics?.registerCounterGroup(`${t.metricsPrefix}_outbound_rpc_errors_total`)}}async start(){this.running||(this.running=!0)}async stop(){this.running=!1}isStarted(){return this.running}async*sendRequest(e,t,n={}){if(!this.running)return;let i=t.type;if(i==null)throw new $("Message type was missing");this.log("sending %s to %p",t.type,e),yield Bo({peer:e},n),yield So({to:e,type:i},n);let s,o=this.timeout.getTimeoutSignal(n);n={...n,signal:o};try{this.metrics.operations?.increment({[i]:!0}),s=await(await this.components.connectionManager.openConnection(e,n)).newStream(this.protocol,n);let c=await this._writeReadMessage(s,t,n);s.close(n).catch(l=>{this.log.error("error closing stream to %p",e,l),s?.abort(l)}),yield yn({from:e,messageType:c.type,closer:c.closer.map(Fn),providers:c.providers.map(Fn),record:c.record==null?void 0:fe.deserialize(c.record)},n)}catch(a){this.metrics.errors?.increment({[i]:!0}),s?.abort(a),n.signal?.aborted!==!0&&this.log.error("could not send %s to %p - %e",t.type,e,a),yield qe({from:e,error:a},n)}finally{this.timeout.cleanUp(o)}}async*sendMessage(e,t,n={}){if(!this.running)return;let i=t.type;if(i==null)throw new $("Message type was missing");this.log("sending %s to %p",t.type,e),yield Bo({peer:e},n),yield So({to:e,type:i},n);let s,o=this.timeout.getTimeoutSignal(n);n={...n,signal:o};try{this.metrics.operations?.increment({[i]:!0}),s=await(await this.components.connectionManager.openConnection(e,n)).newStream(this.protocol,n),await this._writeMessage(s,t,n),s.close(n).catch(c=>{this.log.error("error closing stream to %p",e,c),s?.abort(c)}),yield yn({from:e,messageType:i},n)}catch(a){this.metrics.errors?.increment({[i]:!0}),s?.abort(a),yield qe({from:e,error:a},n)}finally{this.timeout.cleanUp(o)}}async _writeMessage(e,t,n){await k2(e).write(t,yt,n)}async _writeReadMessage(e,t,n){let i=k2(e);await i.write(t,yt,n);let s=await i.read(yt,n);return s.closer.forEach(o=>{this.safeDispatchEvent("peer",{detail:Fn(o)})}),s.providers.forEach(o=>{this.safeDispatchEvent("peer",{detail:Fn(o)})}),s}};function Me(r,e){if(r.length!==e.length)throw new Error("Inputs should have the same length");let t=ge(r.length);for(let n=0;n<r.length;n++)t[n]=r[n]^e[n];return t}function Xt(r,e){if(r.byteLength!==e.byteLength)throw new Error("Inputs should have the same length");for(let t=0;t<r.byteLength;t++)if(r[t]!==e[t])return r[t]<e[t]?-1:1;return 0}var Jt=class{originDhtKey;capacity;peerDistances;constructor(e,t){this.originDhtKey=e,this.capacity=t,this.peerDistances=[]}get length(){return this.peerDistances.length}get peers(){return this.peerDistances.map(e=>e.peer)}async add(e){let t=await ve(e.id);this.addWitKadId(e,t)}addWitKadId(e,t){if(this.peerDistances.find(i=>i.peer.id.equals(e.id))!=null)return;let n={peer:e,distance:Me(this.originDhtKey,t)};this.peerDistances.push(n),this.peerDistances.sort((i,s)=>Xt(i.distance,s.distance)),this.peerDistances=this.peerDistances.slice(0,this.capacity)}async isCloser(e){if(this.length===0)return!0;let t=await ve(e),n=Me(t,this.originDhtKey),i=this.peerDistances[this.peerDistances.length-1].distance;return Xt(n,i)===-1}async anyCloser(e){return e.length===0?!1:Promise.any(e.map(async t=>this.isCloser(t)))}};var Hi=class{log;routingTable;network;validators;queryManager;peerStore;peerId;constructor(e,t){this.routingTable=t.routingTable,this.network=t.network,this.validators=t.validators,this.queryManager=t.queryManager,this.peerStore=e.peerStore,this.peerId=e.peerId,this.log=e.logger.forComponent(`${t.logPrefix}:peer-routing`)}async findPeerLocal(e){let t,n=await this.routingTable.find(e);if(n!=null){this.log("findPeerLocal found %p in routing table",e);try{t=await this.peerStore.get(n)}catch(i){if(i.name!=="NotFoundError")throw i}}if(t==null)try{t=await this.peerStore.get(e)}catch(i){if(i.name!=="NotFoundError")throw i}if(t!=null)return this.log("findPeerLocal found %p in peer store",e),{id:t.id,multiaddrs:t.addresses.map(i=>i.multiaddr)}}async*_getValueSingle(e,t,n={}){let i={type:O.GET_VALUE,key:t};yield*this.network.sendRequest(e,i,n)}async*getPublicKeyFromNode(e,t={}){let n=Ha(e);for await(let i of this._getValueSingle(e,n,t))if(yield i,i.name==="PEER_RESPONSE"&&i.record!=null){let s=gi(i.record.value),o=Ca(s);if(!o.equals(e))throw new ht("public key does not match id");if(o.publicKey==null)throw new ht("public key missing");yield wn({from:e,value:i.record.value},t)}throw new Mt(`Node not responding with its public key: ${e.toString()}`)}async*findPeer(e,t={}){if(this.log("findPeer %p",e),t.useCache!==!1){let i=await this.findPeerLocal(e);if(i!=null){this.log("found local"),yield u1({from:this.peerId,peer:i},t);return}}let n=!1;if(t.useNetwork!==!1){let i=this,s=async function*({peer:o,signal:a}){let c={type:O.FIND_NODE,key:e.toMultihash().bytes};for await(let l of i.network.sendRequest(o,c,{...t,signal:a}))if(yield l,l.name==="PEER_RESPONSE"){let u=l.closer.find(f=>f.id.equals(e));u!=null&&(yield u1({from:l.from,peer:u},t))}};for await(let o of this.queryManager.run(e.toMultihash().bytes,s,t))o.name==="FINAL_PEER"&&(n=!0),yield o}n||(yield qe({from:this.peerId,error:new je("Not found")},t))}async*getClosestPeers(e,t={}){this.log("getClosestPeers to %b",e);let n=await Zt(e),i=this.routingTable.closestPeers(n),s=this,o=new Jt(n,this.routingTable.kBucketSize);await Promise.all(i.map(async c=>{await o.add({id:c,multiaddrs:[]})}));let a=async function*({peer:c,signal:l}){s.log("closerPeersSingle %s from %p",D(e,"base32"),c);let u={type:O.FIND_NODE,key:e};yield*s.network.sendRequest(c,u,{...t,signal:l})};for await(let c of this.queryManager.run(e,a,t))c.name==="PEER_RESPONSE"&&await Promise.all(c.closer.map(async l=>{await o.add(l)})),yield c;this.log("found %d peers close to %b",o.length,e);for(let c of o.peers)yield u1({from:this.peerId,peer:c},t)}async*getValueOrPeers(e,t,n={}){for await(let i of this._getValueSingle(e,t,n)){if(i.name==="PEER_RESPONSE"&&i.record!=null)try{await this._verifyRecordOnline(i.record)}catch{let o="invalid record received, discarded";this.log(o),yield qe({from:i.from,error:new Mt(o)},n);continue}yield i}}async _verifyRecordOnline(e){if(e.timeReceived==null)throw new a1("invalid record received");await Zr(this.validators,new fe(e.key,e.value,e.timeReceived))}async getCloserPeersOffline(e,t){let n=[];try{let c=ae(e),l=Ke(c),u=await this.peerStore.get(l);n.push({id:u.id,multiaddrs:u.addresses.map(({multiaddr:f})=>f)})}catch{}let i=await Zt(e),s=this.routingTable.closestPeers(i),o=await ve(t),a=Me(o,i);for(let c of s){let l=await ve(c),u=Me(l,i);if(Xt(u,a)===-1)try{let f=await this.peerStore.get(c);n.push({id:c,multiaddrs:f.addresses.map(({multiaddr:h})=>h)})}catch(f){if(f.name!=="NotFoundError")throw f}}return n.length>0?this.log("getCloserPeersOffline found %d peer(s) closer to %b than %p",n.length,e,t):this.log("getCloserPeersOffline could not find peer closer to %b than %p with %d peers in the routing table",e,t,this.routingTable.size),n}};var qi=class{log;datastore;datastorePrefix;lock;constructor(e,t){this.log=e.logger.forComponent(`${t.logPrefix}:providers`),this.datastorePrefix=`${t.datastorePrefix}/provider`,this.datastore=e.datastore,this.lock=t.lock}async addProvider(e,t){let n=await this.lock.readLock();try{this.log("%p provides %s",t,e),await this.writeProviderEntry(e,t)}finally{n()}}async removeProvider(e,t){let n=await this.lock.writeLock();try{let i=ki(this.datastorePrefix,e,t);this.log("%p no longer provides %s",t,e),await this.datastore.delete(i)}finally{n()}}async getProviders(e){let t=await this.lock.readLock();try{this.log("get providers for %c",e);let n=await this.loadProviders(e);return this.log("got %d providers for %c",n.size,e),[...n.keys()]}finally{t()}}async writeProviderEntry(e,t,n=new Date){let i=ki(this.datastorePrefix,e,t),s=ze(n.getTime());await this.datastore.put(i,s)}async loadProviders(e){let t=new wr,n=ki(this.datastorePrefix,e);for await(let i of this.datastore.query({prefix:n.toString()})){let{peerId:s}=Bi(i.key);t.set(s,Ti(i.value))}return t}};var T2=class extends Error{type;code;constructor(e,t){super(e??"The operation was aborted"),this.type="aborted",this.name="AbortError",this.code=t??"ABORT_ERR"}};async function Ki(r,e,t,n){let i=new T2(n?.errorMessage,n?.errorCode);return t?.aborted===!0?Promise.reject(i):new Promise((s,o)=>{function a(){t?.removeEventListener("abort",u),r.removeEventListener(e,c),n?.errorEvent!=null&&r.removeEventListener(n.errorEvent,l)}let c=f=>{try{if(n?.filter?.(f)===!1)return}catch(h){a(),o(h);return}a(),s(f)},l=f=>{a(),o(f.detail)},u=()=>{a(),o(i)};t?.addEventListener("abort",u),r.addEventListener(e,c),n?.errorEvent!=null&&r.addEventListener(n.errorEvent,l)})}var $i=class extends Error{static name="QueueFullError";constructor(e="The queue was full"){super(e),this.name="QueueFullError"}};var zi=class{deferred;signal;constructor(e){this.signal=e,this.deferred=se(),this.onAbort=this.onAbort.bind(this),this.signal?.addEventListener("abort",this.onAbort)}onAbort(){this.deferred.reject(this.signal?.reason??new ft)}cleanup(){this.signal?.removeEventListener("abort",this.onAbort)}};function _7(){return`${parseInt(String(Math.random()*1e9),10).toString()}${Date.now()}`}var Gi=class{id;fn;options;recipients;status;timeline;controller;constructor(e,t){this.id=_7(),this.status="queued",this.fn=e,this.options=t,this.recipients=[],this.timeline={created:Date.now()},this.controller=new AbortController,te(1/0,this.controller.signal),this.onAbort=this.onAbort.bind(this)}abort(e){this.controller.abort(e)}onAbort(){this.recipients.reduce((t,n)=>t&&n.signal?.aborted===!0,!0)&&(this.controller.abort(new ft),this.cleanup())}async join(e={}){let t=new zi(e.signal);return this.recipients.push(t),e.signal?.addEventListener("abort",this.onAbort),t.deferred.promise}async run(){this.status="running",this.timeline.started=Date.now();try{this.controller.signal.throwIfAborted();let e=await en(this.fn({...this.options??{},signal:this.controller.signal}),this.controller.signal);this.recipients.forEach(t=>{t.deferred.resolve(e)}),this.status="complete"}catch(e){this.recipients.forEach(t=>{t.deferred.reject(e)}),this.status="errored"}finally{this.timeline.finished=Date.now(),this.cleanup()}}cleanup(){this.recipients.forEach(e=>{e.cleanup(),e.signal?.removeEventListener("abort",this.onAbort)})}};var er=class extends _e{concurrency;maxSize;queue;pending;sort;constructor(e={}){super(),this.concurrency=e.concurrency??Number.POSITIVE_INFINITY,this.maxSize=e.maxSize??Number.POSITIVE_INFINITY,this.pending=0,e.metricName!=null&&e.metrics?.registerMetricGroup(e.metricName,{calculate:()=>({size:this.queue.length,running:this.pending,queued:this.queue.length-this.pending})}),this.sort=e.sort,this.queue=[]}tryToStartAnother(){if(this.size===0)return queueMicrotask(()=>{this.safeDispatchEvent("empty")}),this.running===0&&queueMicrotask(()=>{this.safeDispatchEvent("idle")}),!1;if(this.pending<this.concurrency){let e;for(let t of this.queue)if(t.status==="queued"){e=t;break}return e==null?!1:(this.safeDispatchEvent("active"),this.pending++,e.run().finally(()=>{for(let t=0;t<this.queue.length;t++)if(this.queue[t]===e){this.queue.splice(t,1);break}this.pending--,this.tryToStartAnother(),this.safeDispatchEvent("next")}),!0)}return!1}enqueue(e){this.queue.push(e),this.sort!=null&&this.queue.sort(this.sort)}async add(e,t){if(t?.signal?.throwIfAborted(),this.size===this.maxSize)throw new $i;let n=new Gi(e,t);return this.enqueue(n),this.safeDispatchEvent("add"),this.tryToStartAnother(),n.join(t).then(i=>(this.safeDispatchEvent("completed",{detail:i}),this.safeDispatchEvent("success",{detail:{job:n,result:i}}),i)).catch(i=>{if(n.status==="queued"){for(let s=0;s<this.queue.length;s++)if(this.queue[s]===n){this.queue.splice(s,1);break}}throw this.safeDispatchEvent("error",{detail:i}),this.safeDispatchEvent("failure",{detail:{job:n,error:i}}),i})}clear(){this.queue.splice(0,this.queue.length)}abort(){this.queue.forEach(e=>{e.abort(new ft)}),this.clear()}async onEmpty(e){this.size!==0&&await Ki(this,"empty",e?.signal)}async onSizeLessThan(e,t){this.size<e||await Ki(this,"next",t?.signal,{filter:()=>this.size<e})}async onIdle(e){this.pending===0&&this.size===0||await Ki(this,"idle",e?.signal)}get size(){return this.queue.length}get queued(){return this.queue.length-this.pending}get running(){return this.pending}async*toGenerator(e){e?.signal?.throwIfAborted();let t=_r({objectMode:!0}),n=c=>{c!=null?this.abort():this.clear(),t.end(c)},i=c=>{c.detail!=null&&t.push(c.detail)},s=c=>{n(c.detail)},o=()=>{n()},a=()=>{n(new ft("Queue aborted"))};this.addEventListener("completed",i),this.addEventListener("error",s),this.addEventListener("idle",o),e?.signal?.addEventListener("abort",a);try{yield*t}finally{this.removeEventListener("completed",i),this.removeEventListener("error",s),this.removeEventListener("idle",o),e?.signal?.removeEventListener("abort",a),n()}}};async function*l4(r){let{key:e,startingPeer:t,ourPeerId:n,signal:i,query:s,alpha:o,pathIndex:a,numPaths:c,queryFuncTimeout:l,log:u,peersSeen:f,connectionManager:h}=r,p=new er({concurrency:o,sort:(d,x)=>Xt(d.options.distance,x.options.distance)}),y=await Zt(e);function w(d,x){if(d==null)return;f.add(d);let E=Me(x,y);p.add(async()=>{let m=[i];l!=null&&m.push(AbortSignal.timeout(l));let A=et(m);te(1/0,A);try{for await(let R of s({key:e,peer:d,signal:A,pathIndex:a,numPaths:c})){if(A.aborted)return;if(R.name==="PEER_RESPONSE")for(let T of R.closer){if(f.has(T.id)){u.trace("already seen %p in query",T.id);continue}if(n.equals(T.id)){u("not querying ourselves");continue}if(!await h.isDialable(T.multiaddrs)){u("not querying undialable peer");continue}let B=await ve(T.id),k=Me(B,y);if(Xt(k,E)!==-1){u.trace("skipping %p as they are not closer to %b than %p",T.id,e,d);continue}u.trace("querying closer peer %p",T.id),w(T.id,B)}p.safeDispatchEvent("completed",{detail:R})}}catch(R){if(!i.aborted)return qe({from:d,error:R},r)}finally{A.clear()}},{distance:E}).catch(m=>{u.error(m)})}w(t,await ve(t));try{for await(let d of p.toGenerator({signal:i}))d!=null&&(yield d)}catch(d){throw i.aborted?new o1("Query aborted"):d}}var ji=class{disjointPaths;alpha;shutDownController;running;logger;peerId;connectionManager;routingTable;initialQuerySelfHasRun;logPrefix;constructor(e,t){this.logPrefix=t.logPrefix,this.disjointPaths=t.disjointPaths??Yn,this.alpha=t.alpha??Sr,this.initialQuerySelfHasRun=t.initialQuerySelfHasRun,this.routingTable=t.routingTable,this.logger=e.logger,this.peerId=e.peerId,this.connectionManager=e.connectionManager,this.shutDownController=new AbortController,te(1/0,this.shutDownController.signal),this.running=!1}isStarted(){return this.running}async start(){this.running||(this.running=!0,this.shutDownController=new AbortController,te(1/0,this.shutDownController.signal))}async stop(){this.running=!1,this.shutDownController.abort()}async*run(e,t,n={}){if(!this.running)throw new Error("QueryManager not started");if(n.signal==null){let c=AbortSignal.timeout(p0);te(1/0,c),n={...n,signal:c}}let i=new AbortController,s=et([this.shutDownController.signal,i.signal,n.signal]);te(1/0,s,i.signal);let o=this.logger.forComponent(`${this.logPrefix}:query:`+D(e,"base58btc")),a=!1;try{n.isSelfQuery!==!0&&this.initialQuerySelfHasRun!=null&&(o("waiting for initial query-self query before continuing"),await en(this.initialQuerySelfHasRun.promise,s),this.initialQuerySelfHasRun=void 0),o("query:start");let c=await Zt(e),l=this.routingTable.closestPeers(c),u=l.slice(0,Math.min(this.disjointPaths,l.length));if(l.length===0){o.error("Running query with no peers");return}let f=new lt,h=u.map((p,y)=>l4({key:e,startingPeer:p,ourPeerId:this.peerId,signal:s,query:t,pathIndex:y,numPaths:u.length,alpha:this.alpha,queryFuncTimeout:n.queryFuncTimeout,log:o,peersSeen:f,onProgress:n.onProgress,connectionManager:this.connectionManager}));for await(let p of s1(...h)){if(p.name==="QUERY_ERROR"&&o.error("query error",p.error),p.name==="PEER_RESPONSE")for(let y of[...p.closer,...p.providers])await this.connectionManager.isDialable(y.multiaddrs)&&await this.routingTable.add(y.id);yield p}a=!0}catch(c){if(!(!this.running&&c.name==="QueryAbortedError"))throw c}finally{a||(o("query exited early"),i.abort()),s.clear(),o("query:done")}}};function C7(r){return r[Symbol.asyncIterator]!=null}function U7(r){if(C7(r))return(async()=>{let e=0;for await(let t of r)e++;return e})();{let e=0;for(let t of r)e++;return e}}var Wi=U7;function D7(r){return r[Symbol.asyncIterator]!=null}function O7(r,e){return D7(r)?async function*(){let t=0;if(!(e<1)){for await(let n of r)if(yield n,t++,t===e)return}}():function*(){let t=0;if(!(e<1)){for(let n of r)if(yield n,t++,t===e)return}}()}var u4=O7;var M7=r=>{let e=r.addEventListener||r.on||r.addListener,t=r.removeEventListener||r.off||r.removeListener;if(!e||!t)throw new TypeError("Emitter is not compatible");return{addListener:e.bind(r),removeListener:t.bind(r)}};function V7(r,e,t){let n,i=new Promise((s,o)=>{if(t={rejectionEvents:["error"],multiArgs:!1,resolveImmediately:!1,...t},!(t.count>=0&&(t.count===Number.POSITIVE_INFINITY||Number.isInteger(t.count))))throw new TypeError("The `count` option should be at least 0 or more");t.signal?.throwIfAborted();let a=[e].flat(),c=[],{addListener:l,removeListener:u}=M7(r),f=(...p)=>{let y=t.multiArgs?p:p[0];t.filter&&!t.filter(y)||(c.push(y),t.count===c.length&&(n(),s(c)))},h=p=>{n(),o(p)};n=()=>{for(let p of a)u(p,f);for(let p of t.rejectionEvents)u(p,h)};for(let p of a)l(p,f);for(let p of t.rejectionEvents)l(p,h);t.signal&&t.signal.addEventListener("abort",()=>{h(t.signal.reason)},{once:!0}),t.resolveImmediately&&s(c)});if(i.cancel=n,typeof t.timeout=="number"){let s=rr(i,{milliseconds:t.timeout});return s.cancel=n,s}return i}function f4(r,e,t){typeof t=="function"&&(t={filter:t}),t={...t,count:1,resolveImmediately:!1};let n=V7(r,e,t),i=n.then(s=>s[0]);return i.cancel=n.cancel,i}var Qi=class{log;peerId;peerRouting;routingTable;count;interval;initialInterval;queryTimeout;running;timeoutId;controller;initialQuerySelfHasRun;querySelfPromise;constructor(e,t){this.peerId=e.peerId,this.log=e.logger.forComponent(`${t.logPrefix}:query-self`),this.running=!1,this.peerRouting=t.peerRouting,this.routingTable=t.routingTable,this.count=t.count??Yn,this.interval=t.interval??l0,this.initialInterval=t.initialInterval??u0,this.queryTimeout=t.queryTimeout??f0,this.initialQuerySelfHasRun=t.initialQuerySelfHasRun,this.querySelf=Ri(this.querySelf.bind(this),t.operationMetrics,"SELF_QUERY")}isStarted(){return this.running}start(){this.running||(this.running=!0,clearTimeout(this.timeoutId),this.timeoutId=setTimeout(()=>{this.querySelf().catch(e=>{this.log.error("error running self-query",e)})},this.initialInterval))}stop(){this.running=!1,this.timeoutId!=null&&clearTimeout(this.timeoutId),this.controller!=null&&this.controller.abort()}async querySelf(){if(!this.running){this.log("skip self-query because we are not started");return}if(this.querySelfPromise!=null)return this.log("joining existing self query"),this.querySelfPromise.promise;if(this.querySelfPromise=se(),this.running){this.controller=new AbortController;let e=[this.controller.signal];if(this.initialQuerySelfHasRun==null){let n=AbortSignal.timeout(this.queryTimeout);te(1/0,n),e.push(n)}let t=et(e);te(1/0,t,this.controller.signal);try{this.routingTable.size===0&&(this.log("routing table was empty, waiting for some peers before running query"),await f4(this.routingTable,"peer:add",{signal:t,filter:s=>!this.peerId.equals(s.detail)}),this.log("routing table has peers, continuing with query")),this.log("run self-query, look for %d peers timing out after %dms",this.count,this.queryTimeout);let n=Date.now(),i=await Ot(this.peerRouting.getClosestPeers(this.peerId.toMultihash().bytes,{signal:t,isSelfQuery:!0}),s=>u4(s,this.count),async s=>Wi(s));this.log("self-query found %d peers in %dms",i,Date.now()-n)}catch(n){this.log.error("self-query error",n)}finally{t.clear(),this.initialQuerySelfHasRun!=null&&(this.initialQuerySelfHasRun.resolve(),this.initialQuerySelfHasRun=void 0)}}this.querySelfPromise.resolve(),this.querySelfPromise=void 0,this.running&&(this.timeoutId=setTimeout(()=>{this.querySelf().catch(e=>{this.log.error("error running self-query",e)})},this.interval))}};var Zi=class extends _e{log;reprovideQueue;maxQueueSize;datastore;timeout;reprovideTimeout;running;shutdownController;reprovideThreshold;contentRouting;datastorePrefix;addressManager;validity;interval;lock;peerId;constructor(e,t){super(),this.log=e.logger.forComponent(`${t.logPrefix}:reprovider`),this.peerId=e.peerId,this.reprovideQueue=new er({concurrency:t.concurrency??o0,metrics:e.metrics,metricName:`${t.metricsPrefix}_reprovide_queue`}),this.reprovideTimeout=new Lt({...t.timeout??{},metrics:e.metrics,metricName:`${t.metricsPrefix}_reprovide_timeout_milliseconds`}),this.datastore=e.datastore,this.addressManager=e.addressManager,this.datastorePrefix=`${t.datastorePrefix}/provider`,this.reprovideThreshold=t.threshold??s0,this.maxQueueSize=t.maxQueueSize??a0,this.validity=t.validity??i0,this.interval=t.interval??c0,this.contentRouting=t.contentRouting,this.lock=t.lock,this.running=!1,this.reprovide=Ri(this.reprovide.bind(this),t.operationMetrics,"PROVIDE")}start(){this.running||(this.running=!0,this.shutdownController=new AbortController,te(1/0,this.shutdownController.signal),this.timeout=setTimeout(()=>{this.cleanUp().catch(e=>{this.log.error("error running reprovide/cleanup - %e",e)})},this.interval))}stop(){this.running=!1,this.reprovideQueue.clear(),clearTimeout(this.timeout),this.shutdownController?.abort()}async cleanUp(){let e=await this.lock.writeLock();try{this.safeDispatchEvent("reprovide:start");for await(let t of this.datastore.query({prefix:this.datastorePrefix}))try{let{cid:n,peerId:i}=Bi(t.key),s=Ti(t.value).getTime(),o=s+this.validity,a=Date.now(),c=a>o;this.log.trace("comparing: %d < %d = %s %s",s,a-this.validity,c,c?"(expired)":""),c&&await this.datastore.delete(t.key),this.peerId.equals(i)&&a-o<this.reprovideThreshold&&this.queueReprovide(n).catch(l=>{this.log.error("could not reprovide %c - %e",n,l)})}catch(n){this.log.error("error processing datastore key %s - %e",t.key,n.message)}this.log("reprovide/cleanup successful")}finally{e(),this.safeDispatchEvent("reprovide:end"),this.running&&(this.timeout=setTimeout(()=>{this.cleanUp().catch(t=>{this.log.error("error running re-provide - %e",t)})},this.interval))}}async queueReprovide(e){if(!this.running)return;this.log.trace("waiting for queue capacity before adding %c to re-provide queue",e),await this.reprovideQueue.onSizeLessThan(this.maxQueueSize);let t=this.reprovideQueue.queue.find(n=>n.options.cid.equals(e));if(t!=null)return this.log.trace("not adding %c to re-provide queue - already in queue",e),t.join();this.log.trace("adding %c to re-provide queue",e),this.reprovideQueue.add(async n=>{if(n.signal?.throwIfAborted(),!this.running)return;this.log.trace("re-providing %c",e);let i=this.reprovideTimeout.getTimeoutSignal(n);try{await this.reprovide(n.cid,n)}finally{this.reprovideTimeout.cleanUp(i)}this.log.trace("re-provided %c",e)},{signal:this.shutdownController?.signal,cid:e}).catch(n=>{this.log.error("could not re-provide key %c - %e",e,n)})}async reprovide(e,t){await sn(this.contentRouting.provide(e,this.addressManager.getAddresses(),t))}};var Hn=class extends er{has(e){return this.find(e)!=null}find(e){return this.queue.find(t=>e.equals(t.options.peerId))}};var F7=20,H7=5e3,q7="kad-close",K7=50,Yi=class{routingTable;components;closestPeers;newPeers;refreshInterval;peerSetSize;timeout;closeTagName;closeTagValue;log;running;constructor(e,t){this.components=e,this.log=e.logger.forComponent(`${t.logPrefix}:routing-table`),this.routingTable=t.routingTable,this.refreshInterval=t.refreshInterval??H7,this.peerSetSize=t.peerSetSize??F7,this.closeTagName=t.closeTagName??q7,this.closeTagValue=t.closeTagValue??K7,this.closestPeers=new lt,this.onPeerPing=this.onPeerPing.bind(this),this.running=!1}async start(){if(this.running)return;this.running=!0;let e=await ve(this.components.peerId);this.newPeers=new Jt(e,this.peerSetSize),this.routingTable.addEventListener("peer:ping",this.onPeerPing),this.timeout=setInterval(()=>{this.updatePeerTags().catch(t=>{this.log.error("error updating peer tags - %e",t)})},this.refreshInterval)}stop(){this.running=!1,this.routingTable.removeEventListener("peer:ping",this.onPeerPing),clearTimeout(this.timeout)}onPeerPing(e){this.newPeers?.add({id:e.detail,multiaddrs:[]}).catch(t=>{this.log.error("error adding peer to distance list - %e",t)})}async updatePeerTags(){let e=new lt(this.newPeers?.peers.map(i=>i.id)),t=e.difference(this.closestPeers),n=this.closestPeers.difference(e);this.closestPeers=e,await Promise.all([...[...t].map(async i=>{await this.components.peerStore.merge(i,{tags:{[this.closeTagName]:{value:this.closeTagValue},[Us]:{value:1}}})}),...[...n].map(async i=>{await this.components.peerStore.merge(i,{tags:{[this.closeTagName]:void 0,[Us]:void 0}})})])}};function qn(r){return Array.isArray(r?.peers)}var Xi=class{root;localPeer;prefixLength;splitThreshold;kBucketSize;numberOfNodesToPing;lastPingThreshold;ping;verify;onAdd;onRemove;onMove;addingPeerMap;constructor(e){this.prefixLength=e.prefixLength??h4,this.kBucketSize=e.kBucketSize??R2,this.splitThreshold=e.splitThreshold??this.kBucketSize,this.numberOfNodesToPing=e.numberOfOldContactsToPing??d4,this.lastPingThreshold=e.lastPingThreshold??p4,this.ping=e.ping,this.verify=e.verify,this.onAdd=e.onAdd,this.onRemove=e.onRemove,this.addingPeerMap=new wr,this.root={prefix:"",depth:0,peers:[]}}async addSelfPeer(e){this.localPeer={peerId:e,kadId:await ve(e),lastPing:Date.now()}}async add(e,t){let n={peerId:e,kadId:await ve(e),lastPing:0},i=this.addingPeerMap.get(e);if(i!=null)return i;try{let s=this._add(n,t);this.addingPeerMap.set(e,s),await s}finally{this.addingPeerMap.delete(e)}}async _add(e,t){let n=this._determineBucket(e.kadId);if(this._indexOf(n,e.kadId)>-1)return;if(n.peers.length===this.splitThreshold&&n.depth<this.prefixLength){await this._split(n),await this._add(e,t);return}if(n.peers.length<this.kBucketSize){if(!z7(e,this.lastPingThreshold)){n.peers.push(e),await this.onAdd?.(e,n);return}await this.verify(e,t)&&(e.lastPing=Date.now(),await this._add(e,t));return}let i=n.peers.filter(o=>!(o.peerId.equals(this.localPeer?.peerId)||o.lastPing>Date.now()-this.lastPingThreshold)).sort((o,a)=>o.lastPing<a.lastPing?-1:o.lastPing>a.lastPing?1:0).slice(0,this.numberOfNodesToPing),s=!1;for await(let o of this.ping(i,t))s=!0,await this.remove(o.kadId);s&&await this._add(e,t)}*closest(e,t=this.kBucketSize){let n=new Jt(e,t);for(let i of this.toIterable())n.addWitKadId({id:i.peerId,multiaddrs:[]},i.kadId);yield*Dt(n.peers,i=>i.id)}count(){function e(t){if(qn(t))return t.peers.length;let n=0;return t.left!=null&&(n+=e(t.left)),t.right!=null&&(n+=e(t.right)),n}return e(this.root)}get(e){let t=this._determineBucket(e),n=this._indexOf(t,e);return t.peers[n]}async remove(e){let t=this._determineBucket(e),n=this._indexOf(t,e);if(n>-1){let i=t.peers.splice(n,1)[0];await this.onRemove?.(i,t)}}*toIterable(){function*e(t){if(qn(t)){yield*t.peers;return}yield*e(t.left),yield*e(t.right)}yield*e(this.root)}distance(e,t){return BigInt("0x"+D(Me(e,t),"base16"))}_determineBucket(e){let t=D(e,"base2");function n(i,s=0){return qn(i)?i:t[s]==="0"?n(i.left,s+1):n(i.right,s+1)}return n(this.root)}_indexOf(e,t){return e.peers.findIndex(n=>X(n.kadId,t))}async _split(e){let t={prefix:"0",depth:e.depth+1,peers:[]},n={prefix:"1",depth:e.depth+1,peers:[]};for(let i of e.peers)D(i.kadId,"base2")[e.depth]==="0"?(t.peers.push(i),await this.onMove?.(i,e,t)):(n.peers.push(i),await this.onMove?.(i,e,n));$7(e,t,n)}};function $7(r,e,t){return delete r.peers,r.left=e,r.right=t,r.prefix===""&&(delete r.depth,delete r.prefix),!0}function z7(r,e){return r.lastPing<Date.now()-e}var R2=20,h4=8;var G7=20,j7=100,d4=3;var W7=20,Q7=100,m4="kad-peer",Z7=1,p4=6e5,Y7=!0,X7=1e3,Ji=class extends _e{kBucketSize;kb;network;closestPeerTagger;log;components;running;pingNewContactTimeout;pingNewContactQueue;pingOldContactTimeout;pingOldContactQueue;populateFromDatastoreOnStart;populateFromDatastoreLimit;protocol;peerTagName;peerTagValue;metrics;constructor(e,t){super(),this.components=e,this.log=e.logger.forComponent(`${t.logPrefix}:routing-table`),this.kBucketSize=t.kBucketSize??R2,this.running=!1,this.protocol=t.protocol,this.network=t.network,this.peerTagName=t.peerTagName??m4,this.peerTagValue=t.peerTagValue??Z7,this.pingOldContacts=this.pingOldContacts.bind(this),this.verifyNewContact=this.verifyNewContact.bind(this),this.peerAdded=this.peerAdded.bind(this),this.peerRemoved=this.peerRemoved.bind(this),this.populateFromDatastoreOnStart=t.populateFromDatastoreOnStart??Y7,this.populateFromDatastoreLimit=t.populateFromDatastoreLimit??X7,this.pingOldContactQueue=new Hn({concurrency:t.pingOldContactConcurrency??W7,metricName:`${t.metricsPrefix}_ping_old_contact_queue`,metrics:this.components.metrics,maxSize:t.pingOldContactMaxQueueSize??Q7}),this.pingOldContactTimeout=new Lt({...t.pingOldContactTimeout??{},metrics:this.components.metrics,metricName:`${t.metricsPrefix}_routing_table_ping_old_contact_time_milliseconds`}),this.pingNewContactQueue=new Hn({concurrency:t.pingNewContactConcurrency??G7,metricName:`${t.metricsPrefix}_ping_new_contact_queue`,metrics:this.components.metrics,maxSize:t.pingNewContactMaxQueueSize??j7}),this.pingNewContactTimeout=new Lt({...t.pingNewContactTimeout??{},metrics:this.components.metrics,metricName:`${t.metricsPrefix}_routing_table_ping_new_contact_time_milliseconds`}),this.kb=new Xi({kBucketSize:t.kBucketSize,prefixLength:t.prefixLength,splitThreshold:t.splitThreshold,numberOfOldContactsToPing:t.numberOfOldContactsToPing,lastPingThreshold:t.lastPingThreshold,ping:this.pingOldContacts,verify:this.verifyNewContact,onAdd:this.peerAdded,onRemove:this.peerRemoved}),this.closestPeerTagger=new Yi(this.components,{logPrefix:t.logPrefix,routingTable:this,peerSetSize:t.closestPeerSetSize,refreshInterval:t.closestPeerSetRefreshInterval,closeTagName:t.closeTagName,closeTagValue:t.closeTagValue}),this.components.metrics!=null&&(this.metrics={routingTableSize:this.components.metrics.registerMetric(`${t.metricsPrefix}_routing_table_size`),routingTableKadBucketTotal:this.components.metrics.registerMetric(`${t.metricsPrefix}_routing_table_kad_bucket_total`),routingTableKadBucketAverageOccupancy:this.components.metrics.registerMetric(`${t.metricsPrefix}_routing_table_kad_bucket_average_occupancy`),routingTableKadBucketMinOccupancy:this.components.metrics.registerMetric(`${t.metricsPrefix}_routing_table_kad_bucket_min_occupancy`),routingTableKadBucketMaxOccupancy:this.components.metrics.registerMetric(`${t.metricsPrefix}_routing_table_kad_bucket_max_occupancy`),routingTableKadBucketMaxDepth:this.components.metrics.registerMetric(`${t.metricsPrefix}_routing_table_kad_bucket_max_depth`),kadBucketEvents:this.components.metrics.registerCounterGroup(`${t.metricsPrefix}_kad_bucket_events_total`)})}isStarted(){return this.running}async start(){this.running||(this.running=!0,await nn(this.closestPeerTagger),await this.kb.addSelfPeer(this.components.peerId))}async afterStart(){Promise.resolve().then(async()=>{if(!this.populateFromDatastoreOnStart)return;let e=0;for(let t of await this.components.peerStore.all({filters:[n=>n.protocols.includes(this.protocol)&&n.tags.has(m4)],limit:this.populateFromDatastoreLimit})){if(!this.running)return;try{await this.add(t.id),e++}catch{this.log("failed to add peer %p to routing table, removing kad-dht peer tags - %e"),await this.components.peerStore.merge(t.id,{tags:{[this.peerTagName]:void 0}})}}this.log("added %d peer store peers to the routing table",e)}).catch(e=>{this.log.error("error adding peer store peers to the routing table %e",e)})}async stop(){this.running=!1,await Wn(this.closestPeerTagger),this.pingOldContactQueue.abort(),this.pingNewContactQueue.abort()}async peerAdded(e,t){this.components.peerId.equals(e.peerId)||await this.components.peerStore.merge(e.peerId,{tags:{[this.peerTagName]:{value:this.peerTagValue}}}),this.updateMetrics(),this.metrics?.kadBucketEvents.increment({peer_added:!0}),this.safeDispatchEvent("peer:add",{detail:e.peerId})}async peerRemoved(e,t){this.components.peerId.equals(e.peerId)||await this.components.peerStore.merge(e.peerId,{tags:{[this.peerTagName]:void 0}}),this.updateMetrics(),this.metrics?.kadBucketEvents.increment({peer_removed:!0}),this.safeDispatchEvent("peer:remove",{detail:e.peerId})}async*pingOldContacts(e,t){if(!this.running)return;let n=[];for(let i of e){if(this.kb.get(i.kadId)==null){this.log("asked to ping contact %p that was not in routing table",i.peerId);continue}this.metrics?.kadBucketEvents.increment({ping_old_contact:!0}),n.push(async()=>{let s=this.pingOldContactQueue.find(i.peerId);if(s!=null)return this.log("asked to ping contact %p was already being pinged",i.peerId),await s.join(t)?void 0:i;if(!await this.pingOldContactQueue.add(async a=>{let c=this.pingOldContactTimeout.getTimeoutSignal(),l=et([c,a?.signal]);te(1/0,c,l);try{return await this.pingContact(i,a)}catch{return this.metrics?.kadBucketEvents.increment({ping_old_contact_error:!0}),!0}finally{this.pingOldContactTimeout.cleanUp(c),l.clear()}},{peerId:i.peerId,signal:t?.signal}))return i})}for await(let i of ar(n))i!=null&&(yield i)}async verifyNewContact(e,t){let n=this.pingNewContactTimeout.getTimeoutSignal(),i=et([n,t?.signal]);te(1/0,n,i);try{let s=this.pingNewContactQueue.find(e.peerId);return s!=null?(this.log("joining existing ping to add new peer %p to routing table",e.peerId),await s.join({signal:i})):await this.pingNewContactQueue.add(async o=>(this.metrics?.kadBucketEvents.increment({ping_new_contact:!0}),this.log("pinging new peer %p before adding to routing table",e.peerId),this.pingContact(e,o)),{peerId:e.peerId,signal:i})}catch{return this.log.trace("tried to add peer %p but they were not online",e.peerId),this.metrics?.kadBucketEvents.increment({ping_new_contact_error:!0}),!1}finally{this.pingNewContactTimeout.cleanUp(n),i.clear()}}async pingContact(e,t){let n;try{this.log("pinging contact %p",e.peerId);for await(let i of this.network.sendRequest(e.peerId,{type:O.PING},t))if(i.type===Kn.PEER_RESPONSE)return i.messageType===O.PING?(this.log("contact %p ping ok",e.peerId),this.safeDispatchEvent("peer:ping",{detail:e.peerId}),!0):!1;return!1}catch(i){return this.log("error pinging old contact %p - %e",e.peerId,i),n?.abort(i),!1}}get size(){return this.kb==null?0:this.kb.count()}async find(e){let t=await ve(e);return this.kb.get(t)?.peerId}closestPeer(e){let t=this.closestPeers(e,1);if(t.length>0)return t[0]}closestPeers(e,t=this.kBucketSize){return this.kb==null?[]:[...this.kb.closest(e,t)]}async add(e,t){if(this.kb==null)throw new Error("RoutingTable is not started");await this.kb.add(e,t)}async remove(e){if(this.kb==null)throw new Error("RoutingTable is not started");let t=await ve(e);await this.kb.remove(t)}updateMetrics(){if(this.metrics==null||this.kb==null)return;let e=0,t=0,n=0,i=20,s=0;function o(a){if(qn(a)){a.depth>n&&(n=a.depth),t++,e+=a.peers.length,a.peers.length<i&&(i=a.peers.length),a.peers.length>s&&(s=a.peers.length);return}o(a.left),o(a.right)}o(this.kb.root),this.metrics.routingTableSize.update(e),this.metrics.routingTableKadBucketTotal.update(t),this.metrics.routingTableKadBucketAverageOccupancy.update(Math.round(e/t)),this.metrics.routingTableKadBucketMinOccupancy.update(i),this.metrics.routingTableKadBucketMaxOccupancy.update(s),this.metrics.routingTableKadBucketMaxDepth.update(n)}};var g4=[77591,22417,43971,28421,740,29829,71467,228973,196661,78537,27689,36431,44415,14362,19456,106025,96308,2882,49509,21149,87173,131409,75844,23676,121838,30291,17492,2953,7564,110620,129477,127283,53113,72417,165166,109690,21200,102125,24049,71504,90342,25307,72039,26812,26715,32264,133800,71161,88956,171987,51779,24425,16671,30251,186294,247761,14202,2121,8465,35024,4876,85917,169730,3638,256836,96184,943,18678,6583,52907,35807,112254,214097,18796,11595,9243,23554,887,268203,382004,24590,111335,11625,16619,29039,102425,69006,97976,92362,32552,63717,41433,128974,137630,59943,10019,13986,35430,33665,108037,43799,43280,38195,29078,58629,18265,14425,46832,235538,40830,77881,110717,58937,3463,325358,51300,47623,117252,19007,10170,20540,91237,294813,4951,79841,56232,36270,128547,69209,66275,100156,32063,73531,34439,80937,28892,44466,88595,216307,32583,49620,16605,82127,45807,21630,78726,20235,40163,111007,96926,5567,72083,21665,58844,39419,179767,48328,42662,51550,5251,37811,49608,81056,50854,55513,20922,18891,197409,164656,32593,71449,220474,58919,85682,67854,13758,35066,3565,61905,214793,119572,141419,21504,10302,27354,67003,46131,32668,15165,64871,34450,17821,2757,11452,34189,5160,12257,85523,560,53385,65887,119549,135620,312353,115979,122356,10867,193231,124537,54783,90675,120791,4715,142253,50943,17271,43358,25331,4917,120566,34580,12878,33786,160528,32523,4869,301307,104817,81491,23276,8832,97911,31265,52065,7998,49622,9715,43998,34091,84587,20664,69041,29419,53205,10838,58288,116145,6185,5154,141795,35924,21307,144738,43730,12085,8279,10002,119,133779,199668,72938,31768,39176,67875,38453,9700,44144,4121,116048,41733,12868,82669,92308,128,34262,11332,7712,90764,36141,13553,71312,77470,117314,96549,49135,23602,54468,28605,6327,62308,17171,67531,21319,14105,894,107722,46157,8503,51069,100472,45138,15246,14577,35609,191464,1757,13364,161349,32067,91705,81144,52339,5408,91066,21983,14157,100545,4372,26630,129112,1423,29676,213626,4397,88436,99190,6877,49958,26122,114348,60661,29818,293118,50042,179738,16400,163423,89627,31040,43973,36638,45952,5153,1894,109322,1898,134021,12402,112077,68309,190269,69866,31938,107383,11522,105232,11248,14868,39852,71707,186525,16530,38162,106212,11700,5130,16608,26998,59586,108399,230033,43683,48135,82179,2073,5015,196684,189293,16378,23452,8301,35640,11632,214551,29240,57644,33137,91949,55157,52384,117313,5090,17717,89668,49363,82238,241035,66216,29066,184088,97206,62820,26595,4241,135635,173672,8202,459,71355,146294,29587,3008,135385,141203,14803,6634,45094,69362,50925,546,51884,62011,83296,234584,44515,56050,89476,87751,19373,12691,149923,19794,13833,35846,87557,58339,2884,19145,25647,12224,11024,77338,64608,122297,53025,7205,36189,36294,170779,21750,7739,173883,75192,35664,224240,113121,30181,26267,27036,117827,92015,106516,55628,203549,67949,60462,60844,35911,20457,1820,920,19773,8738,73173,181993,38521,98254,76257,46008,92796,5384,26868,151566,22124,2411,15919,186872,180021,28099,152961,78811,80237,62352,102653,74259,184890,16792,123702,224945,29940,19512,75283,14059,112691,92811,233329,20411,138569,53341,109802,50600,134528,66747,5529,166531,31578,64732,67189,1596,126357,967,167999,206598,109752,119431,207825,78791,91938,10301,27311,24233,252343,28831,32812,66002,112267,90895,8786,8095,16824,22866,21813,60507,174833,19549,130985,117051,52110,6938,81923,123864,38061,919,18680,53534,46739,112893,161529,85429,26761,11900,81121,91968,15390,217947,56524,1713,6654,37089,85630,138866,61850,16491,75577,16884,98296,73523,6140,44645,6062,36366,29844,57946,37932,42472,5266,20834,19309,33753,127182,134259,35810,41805,45878,312001,14881,47757,49251,120050,44252,3708,25856,107864,120347,1228,36550,41682,34496,47025,8393,173365,246526,12894,161607,35670,90785,126572,2095,124731,157033,58694,554,12786,9642,4817,16136,47864,174698,66992,4639,69284,10625,40710,27763,51738,30404,264105,137904,109882,52487,42824,57514,2740,10479,146799,107390,16586,88038,174951,9410,16185,44158,5568,40658,46108,12763,97385,26175,108859,664,230732,67470,46663,14395,50750,141320,93140,15361,47997,55784,6791,307840,118569,107326,18056,58281,260415,54691,8790,73332,45633,7511,45674,143373,14031,11799,94491,35646,96544,14560,26049,32983,25791,83814,42094,231370,63955,139212,2359,169908,3108,183486,105867,28197,32941,124968,26402,88267,149768,23053,3078,19091,52924,25383,19209,111548,97361,3959,24880,235061,9099,24921,161254,151405,20508,7159,34381,20133,11434,74036,19974,34769,36585,1076,22454,17354,38727,235160,111547,96454,117448,156940,91330,37299,7310,26915,117060,51369,22620,61861,322264,106850,111694,15091,2624,40345,300446,177064,1707,27389,54792,327783,132669,183543,59003,17744,20603,151134,106923,53084,71803,279424,319816,11579,21946,16728,38274,72711,5085,83391,88646,40159,25027,34680,10752,12988,54126,30365,18338,100445,230674,44874,84974,143877,123253,139372,28082,91477,144002,13096,219729,46016,50029,42377,14601,6660,58244,58978,23918,88206,113611,64452,17541,41032,10942,12021,49189,10978,40175,37156,10947,71709,106894,112538,57007,137486,150608,152719,40615,7746,279716,13101,19524,28708,40578,72320,1096,182051,94527,51275,22833,45164,81917,77519,48508,5421,140302,37845,149830,5587,27579,5357,428725,248187,6326,206760,39814,32585,89923,44341,288753,284443,96368,31201,94189,119504,20359,52073,103216,179,27934,32801,96035,34111,34309,101326,18198,20704,210266,37643,27880,141873,106e3,19414,56614,167714,66483,107885,86602,4379,20796,75467,4987,5017,118857,26003,34308,114428,29198,6686,29697,73632,3739,69795,16798,41504,7207,30722,21436,36735,28067,28545,3239,11221,36031,41889,100010,19247,317673,29495,174554,6424,129725,53845,94986,7955,59676,2604,191497,19735,102214,62954,23844,11872,179525,261436,34492,428,78404,142035,16747,17246,27578,37021,33672,57944,26056,135760,2369,61674,122066,31327,19374,157065,40553,130982,69619,71290,38855,72100,92903,95940,51422,165999,65713,57873,50726,7288,20272,2081,42326,22624,81120,57914,79352,19447,1684,72302,11774,302559,161481,96396,13692,414988,3721,79066,56627,46883,21150,11747,12184,5856,113458,176117,84416,52079,27933,3354,59765,141359,2212,216309,2555,23458,196722,142463,45701,44548,28798,19418,215,29916,9396,10574,114226,84475,13520,18694,34056,4524,90302,62930,13539,19407,77209,7728,38088,9535,2263,23875,183945,17750,26274,67172,10585,28042,22199,7478,51331,66030,26774,192929,31434,25850,50197,52926,178158,4679,181256,70184,229600,9959,105594,72158,73974,2726,35085,78087,23284,35568,51713,155676,5401,27254,11966,17569,223253,71993,103357,111477,55722,30504,26034,46774,35392,36285,214814,41143,163465,1051,16094,81044,6636,76489,179102,20712,39178,35683,125177,54219,30617,52994,25324,50123,2543,87529,58995,10688,125199,12388,60158,125481,131646,7642,133350,65874,3438,97277,101450,10075,56344,116821,50778,60547,98016,106135,13859,14255,16300,77373,173521,8285,45932,37426,4054,114295,55947,7703,39114,52,51119,128135,19714,60715,9554,50492,88180,2823,118271,52993,122625,97919,23859,37895,25040,33614,32102,20431,3577,9275,15686,43031,157741,110358,1884,40291,125391,13736,5008,64881,87336,77381,70711,43032,49155,118587,70494,4318,10168,30126,12580,10524,280104,104001,145413,2862,84140,6603,106005,13566,12780,11251,42830,571,179910,82443,13146,469,42714,32591,265217,424024,92553,54721,134100,6007,15242,114681,59030,16718,85465,200214,85982,55174,165013,23493,56964,82529,109150,32706,27568,82442,5350,14976,13165,44890,60021,21343,33978,17264,4655,22328,27819,75730,16567,55483,14510,17926,45827,150609,3704,7385,272531,161543,76904,122163,52405,2039,19165,41623,14423,228354,3369,176360,85491,7122,35789,303724,4465,13628,2233,55311,118771,20713,10006,221519,45115,71021,35650,29775,7337,10864,20665,21142,1746,15080,1624,32449,10905,105743,229797,7701,3940,22997,178467,57208,389057,39683,59403,63344,63125,54847,69691,18336,56448,3362,37202,18282,29648,138224,35867,10495,5911,28814,26653,31514,176702,26550,45621,11734,4525,40543,73944,121080,27858,155561,14887,44670,30742,8796,107455,113472,56369,75581,183777,240095,133699,153299,8768,160464,26058,49078,103971,21875,71486,44888,17156,9678,89541,123019,102337,3972,83930,21245,87852,109660,287918,183019,686,10100,39177,283941,11274,24736,26793,26214,25995,77011,141580,4070,23742,46285,46632,30700,26669,19056,35951,115575,174034,56097,35463,87425,24575,44245,38701,82317,85922,281616,100333,147697,61503,7730,84330,8530,59917,61597,17173,9092,32658,90288,193136,39023,20381,56654,31132,7779,1919,1375,117128,30819,11169,40938,23935,115201,101155,151034,4835,11231,74550,89388,59951,91704,107312,167882,115062,12732,72738,88703,464019,158267,57995,60496,737,14371,123867,4174,243339,159946,7568,16025,134556,110916,38103,191,80226,88794,29688,27230,10454,76308,57647,77409,113483,66864,14745,19808,12023,46583,84805,16015,17102,2231,20611,3547,95740,250131,34559,108894,8498,15853,159169,148920,20942,2813,93160,45188,210613,45531,52587,149062,39782,28194,57849,60965,84954,89766,84453,100927,16501,27658,165311,103841,54192,207341,19558,20084,319622,5672,205467,98462,61849,36279,13609,147177,24726,165015,209489,59591,31157,6551,117580,75060,141146,277310,21072,22023,106474,63041,137443,122965,68371,5383,42146,98961,113467,30863,23794,4843,99630,30392,82679,13699,241612,33601,93146,24319,18643,32155,95669,40440,15333,34089,67799,142144,58245,38633,114531,117400,77861,188726,5507,2568,8853,10987,107222,2663,2421,11530,13345,30075,41785,118661,104786,17459,12490,16281,71936,193555,17431,5944,71758,26485,77317,20803,367167,158,7362,93430,11735,172445,46002,11532,54482,930,62911,2235,23004,179236,4764,101859,208113,22477,55163,95579,14098,67320,162556,90709,156949,3826,57492,4025,34092,87442,104565,6718,186015,28214,14209,10039,107186,233912,58877,81637,55265,39828,6194,145813,50831,105849,4974,88319,122296,10272,197216,95714,51540,72418,23324,91555,8743,140452,250249,51666,34124,7229,38592,129641,78169,174242,22464,149964,51450,14034,10026,95376,26190,120062,14401,8700,265,31386,143573,7203,229889,61567,4227,140981,2466,72052,10787,10062,30958,6099,38471,30103,23202,208101,70847,467,58934,32271,32984,36637,24107,30771,17109,73353,13650,2098,157040,67366,66904,106018,265380,107238,18535,44025,32681,144983,62505,91295,56120,3082,77508,10322,63023,36700,81885,224127,16721,45023,239261,111272,13852,7866,149243,204199,32309,22084,42029,38316,126644,104973,14406,43454,67322,61310,15789,40285,24026,181047,6301,70927,23319,115823,27248,66693,115875,278566,63007,146844,56841,59007,87368,180001,22370,42114,80605,12022,10374,308,25079,14689,12618,63368,7936,264973,212291,136713,95999,105801,18965,32075,48700,52230,35119,96912,32992,8586,16606,101333,101812,14969,39930,759,193090,27387,42914,12937,5058,62646,64528,38624,25743,37502,3716,4435,30352,178687,26461,132611,42002,138442,35833,59582,16345,8048,60319,49349,309,47800,49739,90482,26405,34470,63786,32479,85028,39866,47846,11649,23934,29466,2816,42864,31828,7410,74885,49632,47629,111801,90749,19536,18767,105764,59606,21223,10746,76298,22220,39408,7190,79654,64856,11602,82156,272765,17079,70089,245473,51813,184407,384678,1576,122249,5064,27481,6188,25790,74361,27541,318284,45430,31488,620,93579,45723,192118,22670,51913,4162,70244,35966,26397,16199,50899,209613,121702,287507,2993,36101,132229,67345,33062,76295,118628,78705,52316,34375,107083,107454,44863,127561,33964,3073,154010,190914,55967,39074,6272,31047,5550,41123,26154,98638,47110,19998,148091,50229,31329,59900,195442,19106,61347,73497,70015,682,45850,25776,38022,148951,6288,37411,232526,109277,27286,32342,9262,5220,16651,23175,46740,129438,78614,121925,66914,88710,127952,5563,21500,34521,10739,14863,191006,62956,17359,16749,67027,56284,69134,43301,35039,58883,54466,60823,404451,75743,59856,86979,7923,34273,83785,32142,7693,268986,197428,282681,17049,22346,22990,92245,107180,3357,37104,96724,49153,7683,31197,43267,82231,164276,23696,20848,188364,22309,24821,158707,1018,22514,70922,27792,45589,59709,10765,736,35218,63479,51987,24275,63588,55361,92929,81964,4658,20122,12330,44058,13065,311456,72224,8337,211229,38979,22590,138478,52757,32595,133600,8838,31549,94412,43391,90056,1585,94802,127271,6223,31889,137038,132910,2165,57616,230152,6080,10748,36737,74579,134062,50525,180532,119270,34556,76155,82394,52595,29258,31435,87820,67996,26943,183878,38007,2410,13526,180297,69856,3503,187396,167700,7838,16701,9199,56267,3661,37407,65994,23767,5708,62508,221700,67088,86978,46776,84434,32088,5612,9149,88244,21685,95151,46750,189612,2979,506311,2594,3628,40074,105039,78243,28523,6651,38058,71999,30992,12764,68261,108991,6165,26450,61961,13400,22426,7490,60890,109623,2070,12958,50355,67979,257096,7213,42578,52121,35716,65461,7516,124758,39268,302,64712,14977,1467,219452,2840,34229,11121,21602,19270,63574,8024,1532,17331,79839,78885,52029,180767,57957,6069,91265,61380,55767,8927,32881,287603,22149,35029,68876,6428,199567,46926,13412,104132,21434,366616,45060,110046,81924,128910,45886,52821,130416,29416,77342,21762,67329,121432,79924,11724,38625,81006,102033,28338,13326,3250,82056,82526,38212,21112,12382,111495,3263,7414,86274,93490,40844,30224,45212,24019,48411,71367,24941,76729,57776,3769,38114,202019,197745,31953,237533,33270,201580,255648,100798,44741,32241,98468,106931,10085,15090,170358,33154,66787,18819,69760,25061,234005,82660,6295,131975,16874,9076,4094,25005,17740,40908,19533,220019,44330,99792,50040,19619,13950,55228,24423,31253,95308,103177,184795,28590,82285,5059,3210,75525,49894,70007,56178,10580,36051,139681,21617,98736,3555,106306,164189,37352,63915,47824,24883,145530,61904,28444,11483,19837,145446,30420,112972,85939,11835,191233,2262,20705,58630,1753,148334,1197,144714,6887,11223,107667,60879,77914,4151,57417,81594,96681,169430,1784,20444,95138,254041,27038,596,7117,72808,13759,3353,126776,21074,55322,27081,36942,39547,139830,179275,4453,713,8722,71399,19204,25785,22794,23923,104114,11291,25458,102309,88396,75288,230440,206396,104551,58447,130857,37247,94734,31548,176529,226077,65159,20104,10096,66881,94191,237909,27109,37404,1520,27421,25220,113003,23423,24884,50585,6286,231877,150800,11789,3226,90004,60642,5053,202400,61442,132531,175329,57138,30116,103847,9973,75367,16452,32360,59119,21246,10191,164804,23305,61051,37348,154530,13214,5468,50403,66754,130976,50559,80515,14436,155492,84017,5472,43107,41240,2890,90431,70188,382,76234,48040,50211,281038,237007,32115,142178,1536,22761,96429,1811,31243,1679,49143,55209,17402,235054,61494,7462,77030,34925,87609,78002,9499,9027,73289,201078,101379,63544,27666,5469,10642,30029,49816,132979,95620,58086,351930,116300,2110,2043,30845,6154,11279,16727,4122,2277,27281,4971,3650,39060,61970,65951,39674,75686,38151,11370,130809,177895,32665,63725,122267,7857,39618,118483,44792,157755,178624,136994,24260,41308,22471,12404,21707,12486,30473,52781,50246,20247,39065,909,56825,103158,128603,31542,1089,41935,32744,12428,37963,84420,33134,72921,208449,42622,168151,127335,147107,46699,38216,12591,94342,85814,31423,24944,2605,87542,67473,192551,4496,56321,91819,17630,6300,256183,114569,202090,33209,35289,34897,24967,40520,43470,5344,10199,34810,14283,10381,10017,62923,49924,23233,64539,13051,35686,19698,11570,135555,120868,44924,87065,52318,52335,47586,140906,245885,109834,78668,9065,46990,25258,72022,61243,40838,4545,146387,10537,11557,17470,36930,68104,46711,24264,79401,81043,18225,120488,24746,84338,81652,28266,13776,21878,46973,1047,230465,73357,95777,24973,210160,62210,58404,110633,169651,6937,41870,9909,26822,191062,76553,27519,96256,239070,2478,205678,67955,58532,20601,50120,19148,78501,195724,110740,8249,109665,27446,30568,57631,31425,49752,32820,65504,50079,3663,102256,219898,23849,211315,14645,4359,91767,9528,12449,49366,7941,49763,107848,8930,27086,50686,9744,10447,81935,39513,46514,1670,29229,6172,22312,137280,97759,9806,14445,22976,56458,73391,34983,93760,174219,52573,33149,59747,2429,136277,75123,165263,91040,7446,57632,48633,97140,246081,84766,151684,79918,93268,120346,54059,54875,77858,32996,103590,45276,11968,19600,25849,17159,132907,42828,16817,4913,99462,103303,27395,5737,74184,20749,21160,14377,77062,131403,158735,10999,27799,77785,9320,34366,51593,61070,33746,47048,29268,36675,30262,53297,9832,82e3,20188,122292,39917,7331,18160,68301,185935,134830,15031,4935,10004,165845,185534,46923,30109,44134,122631,18874,22903,112790,26561,18549,348902,82871,140345,255565,135390,63556,103747,145055,179600,145662,296111,61661,211987,23952,52342,126343,48450,32919,44277,82185,9591,62139,205363,376969,394874,108461,18040,120885,14798,39863,16571,16794,58271,81025,55206,14640,118656,6361,44092,85970,6262,153863,108244,180200,72264,79947,38044,10050,5735,61221,80712,5471,115689,11391,11661,184257,20010,60116,30320,19327,134598,45455,27542,18004,125092,452272,1549,91523,46567,180063,156026,2608,11174,58848,37788,65907,80194,30490,5786,40775,119519,106241,11323,156297,8425,61495,2617,29675,2425,59886,112582,49142,59618,4863,50597,86710,50650,168632,27693,85641,83643,18993,25768,84284,28090,93592,36627,312804,43381,9887,9402,100931,97165,3311,173330,66805,28935,4963,184460,3201,78102,19126,21607,37496,24938,22615,16153,32862,134792,153318,61120,6067,2812,12826,12792,23825,37559,64662,202250,102694,155488,85881,149193,46233,65383,15521,106982,11358,176786,25752,39717,34208,24510,32464,77742,39371,72028,138229,60688,71386,102834,132477,2208,11548,63670,271279,28351,30338,38620,32491,99845,143885,152266,13252,2825,178663,108097,1775,78201,14897,113573,163346,62292,171129,22183,96598,38733,64971,166776,117445,9968,146393,44677,74867,20908,97328,12761,25656,26785,9148,112344,26115,99176,110121,22437,49547,6180,79320,5835,31392,43328,33377,75870,119860,69497,80273,7325,155219,43167,111173,28347,20222,3763,71752,55041,47252,14618,28088,15012,97805,194698,54636,2036,41349,6173,96604,61530,51859,43782,13361,24334,22668,24792,7070,23441,16789,3209,36211,208475,26242,32880,122181,182407,21444,31060,88459,29929,77907,12716,10934,97005,20599,31690,8403,58445,30303,22700,10336,86731,103115,337709,72556,46788,112566,47684,67089,53548,36874,56487,41387,125985,26893,40071,106683,73712,18787,40105,72992,67246,137276,50802,36790,70328,138827,22466,39263,183295,29858,50975,9322,57397,10654,24364,30383,55799,41600,23584,127295,296610,129078,143558,244131,86397,36049,1085,80677,3820,108139,5476,34767,24683,7758,13060,7239,131671,250593,59556,103392,29810,4188,252323,39404,116877,7651,43600,40338,13554,157253,39196,25978,144387,61211,234,50104,6129,10449,93777,9240,356378,274148,4439,72970,3724,147770,78680,62570,115877,40027,40547,36817,224392,64609,34795,165027,67440,2477,37206,23431,50754,164797,46018,94995,170982,27051,7957,22767,3674,27900,56419,18930,60701,41302,2692,84749,339721,61996,111094,80221,50129,1045,8153,62945,19202,8250,37208,37418,32560,79477,41106,88569,33963,36693,5892,30570,1581,66471,49647,11922,160717,29442,5643,114865,82962,95982,132098,22633,22838,94726,54556,28566,205039,162340,33216,16849,35847,221339,94851,26533,71469,1805,3804,12935,45483,71020,36310,65381,192960,34240,35165,59773,1248,46954,155332,96864,4246,388800,16129,57133,74592,44807,442014,38203,42574,80818,91592,26377,36424,65760,977,77387,22628,147610,28018,30561,98454,6969,119628,63648,18170,36854,26601,64018,22027,37279,51395,152934,21153,9430,58760,194742,5330,55115,34158,28917,174111,13171,122326,1526,43896,66094,25325,4234,148354,11450,275,18999,112191,44365,22723,68409,8733,57746,96565,75007,14196,108844,29475,88599,177563,100792,106156,86323,93726,14248,135341,194131,40126,47099,14779,8272,39597,95983,171398,65882,28052,10393,47213,40689,22120,72212,106829,34964,109146,753,648,21660,30047,17527,181025,5619,145357,4085,216883,9359,186951,24779,53931,24545,36197,223296,62628,168101,4243,107313,30321,26642,13049,51059,31027,107912,807,73550,26551,84369,122422,165872,49754,74213,234264,33151,52014,33100,87183,22365,52500,40013,23302,5652,72723,21404,26107,48434,587,94049,168493,96418,32871,70860,31709,25128,443,71597,166253,15670,70994,26341,133675,28280,75491,54756,47955,56028,26182,11952,113272,472197,64640,110753,17919,337,50642,22576,142,87371,53391,93210,126694,15285,19642,85667,14148,1506,42092,52962,33243,11970,20734,135843,57044,58880,13002,219134,22876,64754,232519,4257,43120,321573,24799,64526,124728,52579,81472,70831,276848,17403,74359,23021,182101,74597,23744,148267,12055,7976,5349,11772,67540,167347,65318,18720,127832,108238,22828,90233,9987,259080,118185,73209,79270,13775,90100,137742,90799,70569,15699,19961,9087,67475,57872,39731,8810,134897,131868,146849,19898,3334,2281,167061,91073,60356,467742,74712,188,53179,137679,92769,29241,9537,132595,80119,1041,88962,5976,40171,44911,102859,139059,104558,98987,47761,19272,71472,113864,175377,73338,10857,23402,23758,1591,139864,5644,4076,118760,16427,134198,18853,20291,100849,37423,22038,36677,19071,195521,57445,11069,31869,55718,66882,148490,44,41296,75242,49704,166810,9906,20943,122258,49112,105667,15969,10344,6408,187694,21399,72742,58970,14867,14376,81889,41856,23225,15042,56993,16074,131389,74276,72407,53875,383108,53597,37363,68993,44854,122548,430927,198279,38430,80409,12245,2981,628,2818,17760,37437,238229,7968,46892,2200,3730,34190,65983,37959,112291,87850,70827,6522,20750,73913,111621,41652,19587,2780,58668,25916,85259,18200,168962,95781,42445,102050,7776,57662,103313,47742,96358,41964,66174,100396,29069,204735,19679,27978,7479,40264,22534,61183,36081,107436,58223,14680,23002,101311,24716,124108,12908,5646,31750,40380,14215,232799,102772,14122,96775,61398,50917,12096,149880,67833,598749,124194,155871,49216,790,14677,65319,56917,7440,145744,95701,12206,49405,129269,76199,45732,9767,11058,9047,210885,11051,7392,26307,2130,8132,147526,20802,232698,115660,50060,59789,57344,107623,80343,112676,23291,9866,160971,34032,118291,15719,59730,164911,28975,2659,58046,78480,21854,66209,53863,109085,116045,29021,46481,107552,22130,18764,70254,31272,11300,52460,43933,84738,20721,53869,190840,79673,105300,7561,321817,66924,13940,33281,101046,183181,32176,71878,5678,62924,79535,56646,40303,19559,27703,93042,73368,42187,3670,37376,46440,7023,36816,109628,20680,5940,276440,275233,170848,112093,136996,14984,20226,111441,77693,112960,48577,39370,55707,50314,123404,26570,54281,61372,123391,4857,35928,246740,132507,106646,44241,7196,92258,9825,37688,51197,303141,5590,15476,132986,10955,85782,34486,26696,7991,28813,18858,39546,11703,11365,38185,5716,93555,11925,40121,60002,6985,10976,171384,3887,43394,13337,56346,6381,252336,39573,75042,53711,1028,31781,44295,95925,131713,7214,68125,43571,70954,213234,1628,8760,13391,65485,17320,56038,1710,25248,60803,57399,19839,3870,326,281556,50945,72400,21460,316244,75619,56246,98775,481,13513,55765,50427,7388,123519,32929,57908,27124,61316,101097,57467,30228,48792,10788,20402,37318,50526,155730,34456,158065,145305,17832,43733,64052,4506,35072,205355,177028,184004,187081,68616,35938,83703,10367,36892,93186,260137,51934,89970,4985,23445,26755,21558,7948,78741,23376,124405,85594,68596,57536,49351,12619,56593,132668,99924,109728,71844,71935,196018,65464,17617,14987,89701,143773,33997,8687,22701,33258,2914,4436,72108,85610,9671,49067,2327,82988,1361,1672,44033,35777,30269,24057,10605,82236,616,15793,13919,47249,112086,116698,9484,80207,90574,33304,68624,93127,56101,42210,160929,4827,38995,38095,4701,125119,5027,33680,9236,231236,14135,87837,23318,70261,78893,30151,81482,14332,1084,74256,27532,46644,79185,3148,62615,6981,55672,31668,36825,1849,14536,37446,14738,23779,43058,162749,72199,1168,21346,5592,85932,85302,9668,18351,57135,150360,2080,228015,77953,34670,119302,151751,31009,106725,84265,45214,59289,74178,113071,263206,111009,4021,44449,188119,192629,123592,392506,292847,114487,12831,205858,9852,20780,79648,75767,357014,97721,18166,21005,67950,33226,204009,16536,2987,11335,66717,144910,47950,17262,55060,15063,2934,51038,26775,178497,66008,3427,49433,128592,20036,157553,63861,3089,23015,51210,28696,35933,49942,71135,231518,99620,17248,21835,176536,20676,16944,38700,165831,233253,295625,36723,13023,52745,10907,19423,67972,125868,95473,82875,1183,108455,52685,33417,64095,21433,52438,33191,127809,44505,211823,7810,2752,95548,162031,7185,91196,47563,61721,33359,17897,23682,42806,178101,22874,49707,199897,75419,82456,8618,11171,79712,116847,18783,44190,46564,5346,59046,95032,7893,14916,3214,26800,24172,121453,34362,10250,17408,18888,4840,68696,22831,13162,36005,32512,14800,62357,41723,45046,27247,37486,5372,2564,34261,298500,66509,133920,89138,31305,117697,19097,108304,81386,84106,23802,46411,63304,946,51417,41777,41041,19501,115864,60743,294354,37955,94165,18116,1156,17937,20645,57114,90804,58042,48643,92288,9861,2557,88546,61333,101008,12853,5148,87856,4152,144503,73841,18718,9789,147565,10846,42085,12789,30223,8993,56352,67203,2448,28215,6052,23540,126319,75933,36689,80235,23231,23561,21383,38800,77548,102798,21234,31468,158608,46188,63960,191679,8051,67014,11185,170078,42186,28827,34777,41930,212079,12421,34750,24111,110344,73918,45171,70826,141949,40063,23979,24254,37309,26724,27179,24718,83648,54938,14591,17425,29525,102675,48975,48654,12316,8929,60640,41709,50168,63264,89812,50716,48632,38755,138583,160123,55579,71829,24230,233277,46322,39650,166388,34718,24108,98252,7031,106695,62498,18258,35062,217827,78731,34824,33354,19520,60852,2432,60224,8587,2836,62955,702,20227,42285,40560,95592,62486,11094,53035,143291,18842,46177,77994,1770,9657,107422,172915,32655,128716,25886,25164,156740,119928,165875,85817,11007,89110,33956,12652,65156,180266,8494,36889,19958,20955,96,1264,118288,135769,44754,86671,5632,19026,168220,289120,33569,93821,66144,70635,7687,5642,2714,55445,56636,71545,184182,93133,7332,37389,12643,52315,22729,11014,158742,17050,152889,50178,34601,41945,52136,9948,26914,63548,95721,115951,40759,8960,158258,38938,49232,48325,42234,81523,253019,66128,40978,20048,238048,38760,62928,122560,118532,43687,137472,163689,26680,9878,17448,51035,16211,60834,36749,29178,14241,59868,150086,2305,26477,42422,34342,165341,83279,33894,14257,29928,12743,13957,125571,89134,66712,10952,16507,147839,30146,7249,16565,45399,39874,114565,215780,31990,230881,171477,102,196546,44538,10880,84948,281705,86651,10617,31395,2342,453658,43569,60561,132901,21845,17727,58556,258242,22262,58728,4008,77997,11806,37431,30599,81375,109137,185787,114085,217292,97453,169085,30593,60212,11544,102056,65580,2384,91655,4855,95725,7295,157994,16228,20669,53276,141590,105246,17334,25440,76067,17967,39321,38911,11362,28559,63807,21627,26468,85816,40120,1025,15234,58319,69516,66512,124548,75845,78873,22137,46681,51242,85683,32909,76747,35555,43396,101465,1765,73094,1077,2962,39028,66777,57831,42048,15828,13962,36041,63657,52412,5242,58846,2141,5506,219012,134451,3936,182230,17558,17153,152237,22621,49377,170216,35257,68233,65374,6510,11126,212151,7184,2480,22517,3437,33073,30156,16557,3768,55067,86829,91e3,12350,148650,66017,79424,70885,49066,28250,21369,51213,34533,11510,3258,18176,18465,84413,6315,36411,163765,4346,356,107618,598,13727,285026,162695,8749,14583,7132,63521,184253,32378,25991,5604,30961,53675,4874,84693,5086,34811,26978,56564,7904,33519,51221,113942,69253,6664,125563,22055,220680,102008,742,51930,19494,176108,44424,35123,13025,75685,11759,74335,22250,181453,131147,16984,132115,154311,11991,76452,52609,85351,196,30969,9198,74919,2529,56838,71779,29187,116304,3504,62330,41190,86153,28393,254926,104228,105189,13264,84359,3574,12415,8534,57147,10175,188174,59504,60932,66318,16407,107921,17638,99103,49278,28403,39786,145865,8462,3558,43406,142271,29139,21989,36552,93955,72365,7176,13556,106185,37957,321774,17782,129017,51154,27938,24952,1935,39366,2791,33489,41582,56078,24558,9311,5449,218786,27808,190429,68013,36020,86003,29735,3404,87348,119357,115714,2324,86796,81973,40992,43376,93621,28784,16808,36367,2517,2909,191926,24978,55303,53308,205724,60068,3098,21375,64784,23949,26579,63121,12319,80145,39967,97861,6757,70143,67642,37082,34698,69140,122883,46151,62187,80934,429,19437,135071,137885,222647,13331,154065,327,61778,74257,40116,37493,14855,85079,237641,42342,102164,199965,71204,4662,29368,5042,113914,122214,8955,13149,102503,43173,5659,163787,69003,307084,63392,171080,21390,81918,86666,36622,24126,28887,5736,28054,207170,163428,79891,346467,95363,38980,111806,80828,9200,19288,294896,114468,87405,111715,141705,7015,72754,68463,48738,243147,33397,101210,37051,98801,82847,20397,4940,185559,18716,54718,83491,11725,40803,1128,12128,23060,5174,7745,67007,46701,1571,27807,180186,256996,18975,16837,7877,212758,250379,15440,87954,57755,24719,124057,83461,258,50864,8874,29038,71289,31627,15429,9005,4061,113851,107716,82819,13651,79656,117851,17539,111446,12938,39724,190787,4352,15402,21070,62708,8539,23777,73853,13552,38810,86117,16285,56400,1718,75342,142863,29033,378,110113,180321,32586,23606,26393,160984,207987,23783,8406,16904,24596,47274,11693,46539,60524,78595,48423,31718,20170,9009,146268,15183,191060,172765,1349,138436,37365,10970,40509,225817,20021,70394,152138,21541,66559,66544,89352,2725,17258,91345,7313,3815,115868,8660,40362,4071,103524,39388,118275,21950,6549,38226,32754,209574,29201,43495,18028,20296,40597,18370,47520,202450,24134,2219,8195,69545,38041,136934,46374,19041,159811,84865,58620,846,98749,13569,30714,97246,32186,4479,27355,92973,35214,151491,75963,37631,1561,27200,238083,23182,60756,12291,25766,39355,102333,87362,65741,59906,19538,201575,48772,102938,24438,292580,39964,66366,9004,61379,50548,37622,38732,28379,68180,76622,17488,69849,5963,7219,48143,43413,55358,540,58691,29506,19245,52193,48621,5518,13048,118625,44755,191081,42061,89197,2259,60665,66994,71210,51232,3585,142096,55024,7892,8345,58653,463307,65658,64319,137941,136323,53499,12746,43492,6978,95163,29925,60175,5128,7352,41463,184756,121146,20473,18426,4598,5309,54580,14277,121151,10691,56711,43880,63409,76682,11830,172218,264898,32632,66536,81062,31649,25788,92774,60222,11100,63159,9432,224657,25240,53613,152,138620,163829,2397,85345,12501,37507,64932,38575,43522,65789,80198,78796,35226,3851,108891,73311,3060,28391,93671,39663,46142,30982,66041,37281,68157,26553,71872,81142,211527,39747,118119,22695,2859,11066,20232,168911,7933,197005,17066,111071,44434,133994,120798,12766,227798,45756,132852,29917,36076,55352,65281,129800,41958,18944,84678,18580,168093,132621,39997,54092,27740,32354,3770,114118,103242,43918,15899,18574,145944,3190,123469,219903,24169,100571,62403,16776,92779,14535,17168,16475,14304,37231,1712,28218,242754,61688,28980,1318,51359,222657,99200,67989,31772,23932,35351,201251,49041,27306,19128,40135,3986,77333,19649,120683,151927,21081,7076,78375,77501,101599,8011,89585,96715,58179,5378,102138,106793,26051,217276,4197,16297,27014,46721,13322,22806,5278,29629,70632,9647,71519,58818,40603,128530,8903,36770,56900,31483,26935,43845,34265,34920,87658,6114,84767,64250,47318,50720,19264,162514,33357,13117,6705,46696,75032,71054,87004,42035,69138,11903,99854,102328,19611,34525,69312,6431,49842,101600,133178,108751,41829,89939,225664,48916,99556,9195,130387,5960,36857,116724,53518,94002,39077,53996,6945,22261,64291,8314,152785,57588,16522,9091,5048,87671,35441,39509,1945,12423,158923,178413,37549,14095,1475,73188,62878,4819,24012,68534,42606,4010,120809,57497,59564,101758,103718,32701,80116,12345,95834,46918,21468,53213,15665,31200,3867,5140,96013,250744,21016,10069,13968,35449,180829,27683,39704,59956,22893,3115,26293,32785,75934,62445,141162,62720,2018,83638,19949,114012,95006,3330,99829,130935,309272,9565,55874,121727,37017,23586,319858,40970,27602,8625,112329,61060,100088,118525,25922,16232,1907,60671,51583,44553,80993,5262,94679,8676,940,20736,11823,3020,16476,12340,152600,97416,3703,25744,66826,16245,16876,46446,84798,74227,176020,45192,61955,75496,23946,23626,40372,26036,6149,11822,30582,16541,41914,82385,232823,40921,80773,14930,3631,7517,39619,4348,36180,126106,138939,62611,1477,113512,47321,25052,14546,118881,29060,23589,128322,36795,18401,137921,104699,267929,36194,172791,18113,4766,188215,30083,332586,94089,5805,77909,22194,68234,154976,43220,40660,70001,184893,138095,11128,103010,22663,5108,212615,8485,5565,49222,54614,26530,42639,16319,55062,152662,105595,21114,22216,10294,68158,10436,86950,7206,62115,3977,3657,59874,456,118617,18156,106663,112229,80992,17442,8217,55551,5133,34344,251927,51153,39364,201321,7816,66803,23057,156724,145664,14276,95705,979,2796,6875,13429,212525,50602,26276,28284,3424,19465,52397,46963,31420,51399,206476,92317,48851,637,100820,83349,10317,60227,21972,6908,282439,32857,224767,95629,83882,42106,87338,69757,29840,68709,37665,45244,114577,49188,175943,54009,186746,106158,70168,3358,234002,50555,9221,129338,9562,20118,32923,78479,118280,65752,4977,10474,102174,60947,129006,10570,83451,8598,8078,159367,123785,80438,16742,5905,5281,181513,42402,6977,163136,93179,42191,14968,50421,112401,105440,33456,57347,121611,4221,94954,36517,24046,27796,6255,33394,72990,135408,116627,1233,57874,25654,95419,68156,401399,313338,55208,45573,93124,119251,47200,38196,11909,130667,45391,73904,64964,167846,4137,115606,52036,62214,7969,160925,7187,1132,134835,40309,73195,64494,80472,444841,61111,26500,45323,40743,53625,52797,22659,15631,29739,36706,28841,39147,102836,26794,10536,14845,87305,45874,12241,127587,83833,57183,79722,30844,41304,84655,20825,92500,3722,25655,27811,10157,81634,31362,34088,92487,70123,22190,185100,72658,139035,192523,88241,2078,230490,44528,85638,100198,22088,29982,291233,241062,13865,4445,137791,37835,107218,31726,19718,38234,72528,23046,19177,66695,5109,17251,28077,5617,21554,47839,72425,133825,1486,73065,181275,141508,21768,62971,63082,2512,34200,9904,120309,6392,91243,68416,268253,41199,116757,138551,185526,41246,28986,4093,19057,17295,4148,245766,122360,35356,112075,20301,75441,10998,7977,19769,62922,937,63547,100196,26427,157820,20983,236696,22935,8140,90315,156004,47204,140973,7726,45097,52725,22636,23436,257282,105247,522,88389,216031,202204,46812,211666,19693,68828,81691,45925,11256,30292,372,5236,167826,88328,232776,151611,5360,82104,18841,80393,25465,18285,20320,72377,31730,33160,45803,38715,27705,37379,24163,18360,103586,4015,32305,269494,91252,20080,36567,54650,7797,57073,12650,31164,42209,6375,261663,105528,81661,106002,2800,5375,17247,43151,4442,15727,194619,100855,144898,62320,78465,39929,16454,1967,28311,61363,17219,9395,8745,121445,76939,80385,162380,22009,54191,44248,16299,122830,48151,74429,78291,64755,14238,44966,2511,17712,67954,93583,829,105899,49935,84750,11591,33185,85447,42717,27409,208542,28965,62052,52525,5597,25694,65594,16343,63224,276188,12475,9331,127507,38522,57287,24128,133161,79723,105548,133695,48917,27558,43278,46520,13778,141954,110785,83366,17715,46317,105763,66298,147013,41086,94180,16478,220447,44611,730,19722,78975,117889,125643,26254,16574,18480,65006,15806,38549,246418,46052,36056,8440,34984,30170,3163,59800,4458,115442,4283,41970,33507,104078,1653,22,121158,276486,3655,6338,24048,133421,23641,2161,24422,36006,8086,10675,181474,12307,29514,59143,14729,52509,87128,122470,19446,80852,33314,24573,119864,14237,9652,57779,6612,51851,15284,98871,90581,124466,156831,21190,22015,71380,161906,87247,69201,18392,17908,108470,72962,40719,14338,17911,95260,43339,20610,78916,20710,72451,11315,31448,17263,58853,178878,48111,116002,45497,80506,82605,85880,36300,121755,25215,36118,301929,88728,405223,276136,553,34704,212438,49970,78329,922,20711,25036,257130,38295,145369,18128,15385,30829,55656,48345,8012,3561,28004,122041,192900,58338,112508,41085,29976,87040,47117,23905,4336,92061,138880,97407,42083,172121,6256,25192,172671,5,93568,1420,12677,31605,56743,40620,6015,78415,231077,31298,80026,13902,19048,24924,170586,32955,176119,87859,36731,6773,27711,24658,26475,115216,133207,93250,95820,88522,8317,5714,124047,55219,86860,19677,23961,22928,162209,8904,225992,359835,56084,96201,29392,96558,86071,93643,55114,13347,8183,95129,82012,2017,123336,34219,115554,157159,47747,101684,41008,18735,193781,104151,226906,7552,179874,124113,31159,21162,44010,14771,51268,166128,31382,73124,77438,92830,205709,12113,1292,38937,13114,1334,2118,15597,69581,14449,21934,76618,48728,67038,14967,51495,24243,87736,147249,26720,11119,46063,43749,5843,44147,152629,133428,65703,14269,45604,57982,28672,55616,45957,8438,95433,37698,220862,132034,39456,61870,4161,26501,73560,56418,9845,4654,20916,10456,88920,119358,9015,65931,96507,48029,38534,21676,109081,43078,34943,25089,6131,28766,23665,5477,10255,16695,67,45778,42443,42770,29534,23733,100513,62617,42630,48746,14191,43753,50295,26007,8792,57243,43119,54725,164253,58250,112304,131796,25165,4651,3188,24831,47748,3705,19540,13211,102095,5593,18699,23666,32005,117571,33541,60584,74573,86311,99443,25172,27222,168938,7143,11853,53560,18834,19960,86522,28217,53266,117700,72989,34323,18721,66450,34346,74056,47217,202002,46269,9429,68582,75458,37823,82843,96652,32549,145144,27958,19820,158086,31955,201406,135379,31207,192545,12950,51704,9094,248263,76147,64028,110009,79407,89345,99284,223492,47966,26848,15359,201137,2861,110507,71231,72297,31851,118777,71039,151051,240855,16333,50766,14727,7939,4149,80908,418780,88378,59276,1327,7284,38576,79814,65820,42199,84860,49574,62596,12396,70598,40117,8648,7994,16836,7630,14047,359699,106878,525,29037,28064,13380,11675,50669,74216,103539,180314,27449,56299,172344,19274,7301,246099,32043,19422,36506,129317,6806,30140,4614,46639,66926,932,86600,6322,27847,233103,10541,39025,34887,3517,12972,26220,2031,66561,115015,48658,47596,12714,33845,3893,16165,35237,89983,14769,11962,147224,47018,29977,27979,5552,82338,86023,131368,1218,24853,237840,132193,15455,40873,3668,65351,53388,15229,59889,272245,47934,11858,34347,18038,90853,86981,300602,19343,114181,29362,84921,6095,106059,79472,38015,1206,48741,6208,8e4,21916,17423,6002,108083,24479,34931,56661,9511,26995,100694,163853,35997,81254,58321,18919,171890,86877,91341,74503,70477,53412,7027,59281,39892,131302,5864,15947,61301,67466,162369,47956,27874,35624,282324,21270,111847,102548,41482,30955,116737,28264,8592,55458,22301,75090,29821,30697,51709,3041,19208,8038,24634,30467,87509,126428,19389,18814,152686,20701,83474,45832,80891,105808,11378,153223,120770,98186,150633,49838,9141,12755,30962,5260,74490,21256,31678,65062,33326,289838,187831,20595,89768,2805,58535,10844,70085,12090,2451,138068,98544,24461,4511,6754,41684,28203,3383,65355,82833,30161,83924,234361,128424,28921,222594,33975,125491,34069,11508,67464,144226,41850,98703,34371,7901,21254,38398,65651,23549,53883,213340,123269,12028,71764,177701,28758,2623,68395,11549,15232,68603,9660,63116,36079,57093,31198,20475,48467,89984,35619,186847,107469,31389,43631,73867,41949,68841,114250,1605,30564,63403,17588,27680,99533,12641,70325,50428,73426,78379,11855,91651,72081,91720,60198,15743,12065,83398,140046,6761,46598,45900,5068,886,62448,148968,37347,19405,9680,15819,43496,63370,75667,163700,37639,3633,22774,34341,183131,134335,37200,23915,7054,14194,12970,26438,13350,285521,25594,8219,104410,91039,168804,138480,149734,15907,33818,61132,60082,4622,110187,56736,13551,73571,3945,73463,65498,17758,263266,17593,2710,27585,54469,38200,45367,63754,28881,3473,12791,98287,31895,65787,4463,94536,24951,36332,59901,28803,52130,86403,7668,181822,74831,18977,9850,177206,145485,109798,7292,31421,26280,77211,58511,12507,127004,11113,147,8729,56208,43066,79926,129937,31345,83947,39915,46146,98763,42566,1337,13192,18323,105163,80570,117753,16555,72883,11077,159438,40764,70933,83329,26066,12276,72059,21655,173836,126713,69454,153482,91585,70644,102558,110483,6764,127864,190133,3961,101798,20945,71138,82402,90884,69669,44753,923,16939,59700,164258,25969,27082,31399,43846,6306,246093,51342,6153,151581,202801,182731,56475,162188,89426,141356,14355,121815,27536,28023,65257,77523,106668,127314,24947,12790,38796,169698,23555,10725,44573,183083,42088,62716,43265,105958,32050,44067,50118,1668,3874,6243,318411,16599,1691,94999,52378,28671,216728,123258,2059,34969,69225,5913,136280,171443,141515,91662,22175,135282,80020,92270,1663,4808,4482,3495,34691,5226,109830,108512,17342,107488,11606,123190,100247,29666,146527,113014,15794,30894,13224,39585,243192,22351,9903,7836,47699,11078,25468,122291,48821,26780,122679,75521,81450,630,4895,92900,55074,74293,17441,3563,111657,103102,51613,12318,52370,36191,68245,34269,40445,41354,122901,168604,182500,62012,42557,11259,24428,115113,86345,12362,3909,78430,86852,134602,20459,47853,93879,22577,7659,3688,38555,13349,17381,56715,91639,12493,10895,92438,3142,37057,28928,2004,36427,32268,34222,209974,10432,67436,41989,173518,107930,27079,62729,30908,55558,5828,45031,14902,53546,8204,144263,60255,14520,88212,86582,109589,69356,8064,47449,8505,66558,16886,4844,52817,111260,215129,12941,91118,650,20770,6273,73089,40618,62790,2873,35002,14023,97208,19386,102646,36993,143736,135457,35385,113601,17893,32627,84439,100619,56016,6581,57264,172160,45452,111710,203627,70131,24100,322787,1996,35665,70078,22358,90922,83658,4097,63200,58499,14542,99153,52159,6615,12414,63415,31986,16823,1579,65405,137809,8841,16898,48082,259,33014,42375,12260,179850,73667,91389,98882,29532,17311,326251,41092,5928,20742,44964,48019,43505,9317,49265,6643,192712,48424,163487,19861,20113,70848,31928,105333,23685,78563,14638,54755,7158,24142,44018,20774,125255,20331,24280,10163,1285,2336,39851,4299,117269,46714,63816,87779,159624,11731,9971,990,137317,108831,50994,74554,162680,23640,131597,146962,170620,34829,91205,21184,1913,63616,18427,93136,156592,17519,67565,115882,138220,78622,88535,18115,2711,33554,109492,54298,971,24914,25863,36363,45715,27099,194995,14299,178181,111488,72395,322385,157719,130787,11897,81843,83999,11369,49280,118604,40922,61332,110343,53407,75639,40582,300440,54722,25637,13694,48248,48278,194521,56203,52779,48783,72627,10953,376,16733,280238,26351,230789,15132,25168,137270,3588,63704,73376,94031,74284,19443,159557,9697,39901,13351,119050,15406,146455,3460,29556,75195,37673,102524,92329,47289,98413,15311,100684,56345,7116,95480,11590,7200,167,23610,58426,17730,136656,27944,53151,2701,8824,103124,3017,90744,113588,53216,79736,65940,26931,498,29568,80540,143543,21292,1740,59268,16561,180816,42323,50174,40890,52866,10703,57169,4700,17191,4424,93511,49698,166650,26972,48631,165169,82879,69326,202970,4007,2376,231325,139592,22119,62851,37504,68816,58345,67398,186643,43331,277416,53749,15746,23102,17432,4793,151138,48822,54265,48203,198688,14305,54287,2291,18018,113378,123260,7180,97549,87027,120085,2920,76080,8190,102005,5641,64580,14955,59802,54028,58884,19367,81779,412567,85957,97053,103637,78871,29364,27637,141728,4767,30686,112738,130146,42745,12730,105040,14844,232,210944,36581,152317,135543,29744,3129,55647,58149,46319,27265,17499,28005,59948,7170,34138,5702,293047,110892,408,91760,218674,18469,46095,81403,14389,4610,35672,73060,11006,74848,104820,118143,190357,20043,105358,141735,5115,27093,45924,123073,52599,29433,9616,238350,78610,24851,58858,26769,31969,24613,18294,4982,32735,39639,143563,112073,202205,12567,4873,88601,44897,81503,101648,81362,34662,85277,17574,48173,21435,221188,40215,39576,80786,26544,64668,81841,10731,37733,247986,149188,127703,495,18382,54388,72446,43071,30974,198723,89608,41360,190,33045,8386,31658,19992,237838,119015,137622,50890,100913,6460,116233,267230,26621,104129,65114,14190,41542,14888,85962,23342,23041,26453,43725,71809,45186,4770,46452,53894,56616,221286,18973,9038,109299,55365,19366,26863,18808,60909,69353,41738,83463,12100,68561,72860,3980,13796,49340,12332,31311,27418,4255,53430,18976,45523,510,14224,30477,26581,4530,3651,101663,139840,22709,150861,31996,63923,120623,262522,3076,10528,2929,14672,130238,18087,9816,121894,100308,25085,55111,14565,18952,53293,2042,369988,23674,61789,133529,28783,108293,35477,47119,36448,71049,40015,33055,78598,198442,1833,159937,40654,77444,189245,113153,8621,18599,38553,35223,166072,2375,11659,21786,89523,6032,12116,63046,159398,18454,3678,32521,47626,11411,103527,38896,42946,15696,26370,10185,8413,37080,165583,4331,63555,14907,72220,50056,6623,62236,36565,49783,10049,17503,100581,55951,146244,24724,9626,17969,25524,109300,173965,99994,101056,46459,43647,53737,277968,8347,123521,74858,33829,44762,77574,877,81377,222525,123532,30602,43881,53145,2973,16284,81940,61281,127044,63620,9875,14756,114829,19032,9202,52759,119141,23928,120551,19607,3599,33401,76821,73233,117430,39968,36539,7071,5446,121735,194059,15206,45283,6706,15603,65615,1207,165723,92275,34773,104447,8396,32353,205240,164323,13600,60555,79205,25532,22907,33410,57480,107111,69630,32137,47832,70913,33161,20321,2371,117348,10714,86246,1625,11763,17900,268,78457,99175,97940,101092,86660,32221,14041,128504,125080,53744,124263,31017,13897,403,31859,21964,5633,111630,5547,77329,17961,18241,84995,25984,12983,67491,62168,47262,5241,297,51191,7351,8967,147212,82060,16821,782,11033,82431,62957,5026,43459,77963,203477,53528,6247,191852,87774,74164,215654,13467,1522,219964,28589,244104,16242,117821,67725,72570,156792,17186,15979,26990,44128,193014,35276,57125,16212,166451,68017,6905,77608,16364,53777,75921,76426,37975,26203,269296,64099,84122,12077,38533,830,4407,20139,963,43028,38902,42911,37503,83343,85045,16979,1165,60835,137387,58380,86990,110066,134540,56331,193845,81238,17922,163093,38744,110641,12502,56404,34862,26865,125964,12965,111648,25547,7771,27196,136980,9555,29551,107158,57885,18831,37705,35505,101742,13970,102109,62548,124657,23328,11124,89592,146376,248050,6241,22033,18337,80685,29898,11908,216623,67721,106162,146610,21377,15085,91552,42041,62560,122532,125336,102365,121537,142559,29693,223919,11515,110495,18776,22494,5895,185059,103592,229351,51220,100102,37027,257855,29359,54123,36066,106493,12244,79258,32002,432,56205,94836,90182,6726,14762,29391,48938,26864,38083,60364,3310,60192,14766,205567,57504,110760,22649,24666,46333,21517,3430,13135,28873,27052,158809,11597,20529,6695,23138,22960,37137,45574,6545,305877,43423,26153,24769,59844,14501,10430,134352,56169,13213,103432,49523,35181,13435,12408,129475,64620,230854,77390,51990,15653,83248,33466,44571,117828,51481,2187,10559,68019,18021,54895,48247,18354,33737,4554,108595,37288,39767,116707,9175,3726,108877,21616,83684,49862,1938,8543,276466,20134,108498,48770,102254,31914,131520,185291,100559,51890,209,19526,76471,50544,71814,99351,8172,198526,28816,20419,9109,98389,136777,76479,75596,30635,165417,48216,120220,25955,211071,39314,24308,32164,2559,146280,43403,9233,17947,90585,1786,86920,125662,2457,64741,32152,32918,122882,78538,44001,31723,56426,23375,103172,88177,145697,52506,49319,68016,31664,41488,18486,110400,7030,28241,986,109199,19900,42147,56864,65287,49183,7858,24e3,30453,840,16673,25907,68916,89927,6309,158335,36407,199737,130464,13137,59603,201778,195292,21015,42466,179062,172561,89492,11075,180407,31868,72493,20998,60217,9865,19530,39274,130266,54539,21623,12535,13505,40641,73375,4087,85633,2153,3117,70680,55788,92096,47509,98493,37490,271936,151475,3032,16171,96642,34106,78425,125761,19591,3366,19316,54508,24183,50786,194248,91528,33253,34622,108355,41741,705,3814,3883,108929,13203,67831,10142,59754,68208,29128,84820,56880,38794,24972,48571,40821,40476,18137,164254,24064,236309,79181,11282,395,39169,2013,51587,28551,9645,701,109513,115899,113566,12762,62045,58322,103726,41343,40866,244102,143816,2490,70346,40973,52618,15412,30720,104315,38917,42027,93676,17513,107418,20706,123890,13399,97727,24044,87962,65606,44250,98044,65276,74790,101473,19350,91570,1326,87790,172042,7577,100813,86896,85891,41512,108130,27794,14875,71431,12835,156250,58135,3759,22476,42176,115873,34686,56523,73643,108505,51491,20838,12721,32863,45700,29496,13700,34294,55360,29206,155942,123812,7706,163234,203,132720,49358,144431,8130,175788,35818,3270,76832,25710,54095,97274,28779,94621,74396,19092,128242,58067,20885,14670,93255,15107,63291,23654,126900,129421,59294,262659,9798,3251,67344,28600,44629,50672,29072,26999,31526,23183,49175,165843,175455,17282,175411,32022,45989,30298,90690,78118,83156,23749,35636,31317,7069,80381,94561,133756,14960,97404,6138,41065,78041,32843,16601,34123,9559,146529,123377,96395,54441,42012,84257,123541,10745,22139,106459,11720,150883,172651,154996,110538,4728,53447,25704,2009,71152,119354,21166,66604,1429,216162,8637,122250,63520,27180,29172,36124,276428,107787,77184,4680,14952,104903,24418,14793,51561,52931,8371,26342,48526,7118,92066,67280,40653,8847,34597,105438,14198,50163,61188,146286,50315,41205,170829,161496,585,197359,95056,1687,365794,91349,48507,5804,49263,5146,104902,96365,117343,132222,46084,96919,16875,8073,262381,79982,52663,13928,16056,153908,15145,109256,132308,18763,24904,167644,13618,40750,18686,147124,114709,150038,52849,2938,12568,48617,8778,5459,44202,44591,74914,17183,248689,13878,7822,80060,23116,194037,18487,2067,7798,43077,33678,244028,31320,74273,2794,19466,8218,36280,183997,48124,19416,29656,19280,98734,7715,18311,30701,133602,150307,126956,7378,2933,79903,13178,12593,86571,26604,92446,13574,44205,65699,427599,21118,8245,14407,27877,47936,33542,7916,26460,117762,21596,37818,2249,127359,209394,60044,47677,308089,36791,154971,31417,6998,150042,174360,12255,43009,29335,48739,3912,101398,53340,2580,146939,151295,45360,125275,15273,45383,27456,48761,23314,8750,60801,85823,104759,27894,123685,66968,39480,26917,55290,83305,2696,98390,57569,145853,340733,4919,20024,52268,30884,7413,203685,70989,112855,4129,50536,349518,68205,332641,159581,135361,236026,37563,176404,64899,6578,122033,63871,1850,85234,82089,66124,74145,121098,107351,12687,36881,117334,13136,14698,85933,93866,18047,32620,310,15094,46e3,88451,23632,36645,27940,87618,80520,58892,20976,27702,140090,96075,67841,103292,238964,87778,107338,17019,83427,67522,7302,8261,47570,116787,8730,80484,61772,174422,56005,131193,52875,14588,28471,59817,9586,15720,158155,51307,109734,15196,11025,59331,3884,52626,102602,84797,25158,27314,4437,20488,76214,189248,35023,114952,157376,2827,62439,102878,129749,36405,10329,109339,108633,36662,1254,13267,5470,87105,58004,15397,10434,159667,21864,52022,179464,3013,32147,31496,116832,18494,105502,129227,107267,50033,13481,9954,24267,22141,16257,116154,36185,950,115685,11305,176708,2048,178671,112573,287867,162328,497663,95170,50979,193861,50987,30368,136257,31830,46549,15119,169876,23788,17462,249887,57377,1949,35448,14791,43769,210091,3783,34612,282103,88380,245190,5457,20491,98908,11402,86899,117916,16028,162584,60644,320177,156096,31065,55876,22e3,77655,9992,23397,13757,317623,63978,215255,2443,17648,93231,27388,104529,93807,55505,140477,12046,112040,70887,40152,94365,112353,25063,114679,266061,71248,119555,15589,2244,617,14129,211431,70110,100652,7777,4383,85911,89221,21010,120615,58357,86405,37554,41647,18,15143,69662,60491,14714,186134,148344,42347,5410,168175,44535,42449,343894,129417,99682,20659,27272,140483,63455,222159,17536,13722,42637,62324,11976,114691,148109,2283,32057,182393,4295,147364,33705,2075,44303,30274,28331,63740,69740,29148,10346,44862,33716,73937,153333,12930,38784,247159,2515,41053,20256,83368,256189,54639,115240,5096,24661,175419,153552,26516,141,138176,63885,34115,47222,55709,2765,28479,38875,236608,12229,22921,77291,54426,45388,2860,57787,114579,295139,105782,17826,71066,19119,54364,69385,16568,12323,28057,33346,34919,124763,155533,101386,31644,8627,49001,303600,29868,63213,9103,77280,71333,9696,138789,37059,24823,5057,21352,32368,114208,56803,19424,10445,58514,8661,209508,26187,171838,10460,63454,14016,122504,41328,21329,46618,32493,38225,7855,31763,7945,29876,8734,6438,24205,97490,139977,130740,47323,33195,85390,57194,13813,60600,21313,96251,7699,27584,170521,139271,1363,4402,336738,129223,84983,69150,13147,3590,163929,207225,155260,55916,20288,4503,8398,98490,11773,27512,37113,84976,86558,28365,11756,116005,182148,13733,115313,47644,67208,85069,9347,14995,226141,14704,101835,41159,35314,13113,63526,214039,29978,50446,83339,17440,129441,72522,118641,97816,24907,73844,15717,118884,167255,96509,162793,30847,36849,51297,78974,77793,10427,1873,2972,9999,35074,28190,64297,146836,46298,60038,163007,108919,61219,2403,75022,127339,4233,110389,69022,9833,128097,88016,79390,222936,22570,94657,28462,56956,38803,81536,30474,152794,19566,16481,147408,74574,81895,20731,1918,1366,76367,187321,54494,24366,21690,61696,33283,107477,77499,31112,414383,74362,18463,218441,120929,59848,258629,201924,69269,454,19989,13054,59894,3623,58908,20681,35723,78523,102680,38988,184112,108087,50944,132704,52966,21699,18860,96349,201411,82697,85395,95658,5093,6427,177894,44191,32755,26961,155739,6249,31310,81030,26574,84311,120155,86730,113535,7424,48888,13516,45747,98098,20077,183995,81945,43210,26704,40420,75831,45648,11180,6855,57927,65528,124096,34851,2598,156633,107572,127352,38169,123845,60142,62722,105584,232364,23211,68120,1601,22169,89299,747,258039,80572,7258,152249,11862,101204,8834,121434,33761,19175,133142,46343,40178,48723,3589,41977,30210,38868,62257,10087,82658,87827,90646,16415,47552,351723,28298,72225,91146,272760,1701,11295,1652,109651,300747,51863,198800,29446,11794,32345,37538,22356,33102,37590,113544,37970,11478,179743,25454,103417,59905,221970,105196,145604,7817,164809,102360,16974,75840,255333,56902,6659,1954,645,59400,67769,7689,18675,5215,13793,20536,27852,3387,29523,259718,16860,94625,43143,29245,15848,233581,22685,63631,78557,22836,133302,84513,1348,51826,47129,98836,58284,1830,1749,94642,10933,6145,12506,10975,13879,103781,144434,10268,28409,32346,52968,121567,107374,77268,23686,35097,10501,155275,15303,47136,21102,168741,55332,90385,15996,84817,681,137803,25054,142275,6163,38175,8056,124296,240642,65621,4934,178205,16101,62803,60964,18230,100622,76465,44689,14545,9543,47514,16852,93380,28048,12047,107106,37575,101485,77047,57326,34819,96137,76916,6469,46264,115983,75768,87668,69942,13027,165,8373,114231,26434,52844,42799,182044,23580,146254,38081,43236,33883,146220,382894,14606,46035,36481,166621,35417,95382,2957,59384,60428,36358,66343,75378,22267,22950,83528,17577,56474,25285,4619,179691,75355,95836,53295,34588,171410,4487,14679,84208,44015,18562,109133,54101,11531,86052,174479,303157,28095,9953,35642,14564,39802,16145,77606,117406,53038,121117,53624,22062,1212,7632,127157,237292,189087,10478,127345,102515,181997,86752,87623,10966,121602,68783,68681,83042,114380,138349,191305,67176,50085,39016,1427,42384,1412,67118,122616,72389,25260,2237,13576,137346,19938,20304,2191,68759,5373,61364,238507,75814,23931,69565,38993,131741,38364,12528,87762,5679,129853,5310,186831,32653,90338,260176,389531,108118,26843,43985,50175,30563,25106,56965,18130,140428,4542,165503,117991,24219,229605,1819,129663,1240,3797,76093,18398,71339,51919,93043,27175,47060,216257,6483,35051,1217,16512,80798,129064,13225,69339,8548,237079,72298,2575,34280,51379,117910,55671,53345,247552,29486,39328,140821,34681,57045,60177,5004,90269,78522,2479,322607,48474,61296,13057,31558,4678,59271,6699,27044,31988,35944,12503,83480,4389,136508,3781,114121,70279,4488,155829,42214,2898,68191,75695,305850,45041,74344,106509,30087,17429,93292,12477,290,23080,114802,35714,18751,26554,105424,17775,2144,2412,100610,65192,113975,52975,180272,135050,129815,76238,106483,21440,63186,4260,46189,9711,28249,4169,23429,23390,8324,141585,63809,67668,38457,38063,39226,59972,1189,203916,62368,14403,16949,61767,85801,1739,40147,35049,76757,33124,62102,15780,103593,103009,53484,22952,67973,114645,6566,5245,50462,7601,8288,3513,194571,80276,1908,54592,5124,58571,2513,6800,273997,193904,1119,17991,117245,2508,129156,82366,26278,71465,63341,56943,39662,106116,94966,156875,9736,2204,122308,94418,27134,1280,24539,49022,45314,3764,50904,46424,30699,28087,293839,9400,33646,40165,822,147499,50263,116179,29085,11863,31314,5578,17797,5104,12454,1604,15342,219206,10232,67800,94261,25872,13565,90339,78971,75377,26649,41184,47695,11514,35369,20767,14227,41953,309396,148270,147938,33074,14453,27499,109019,39018,25738,240196,158931,52820,8612,95853,21524,137010,84901,70869,70021,116794,48404,38771,6732,1070,70990,187297,49140,5238,576,3564,253975,16027,16483,2811,37775,19034,25259,4053,2e3,70083,95774,19713,33431,92703,91314,42381,288770,48194,95985,3991,77418,13406,241328,245086,56533,35275,62725,9246,51924,70181,95331,16163,31410,79016,39312,120878,119371,275987,80124,27712,9186,220,23598,146167,85209,68238,282190,57048,31273,30555,80913,17594,75779,59160,135002,101219,189377,29225,96735,60126,62522,104e3,27620,86814,17240,147533,11001,5425,43682,410,49460,87270,69480,46315,59448,1816,76201,9431,11788,87960,29063,65539,47347,11678,33846,7008,196704,9895,6753,8633,120892,59970,572824,115934,6646,202559,892,48351,37611,251282,57823,67263,57750,26527,34485,90747,7685,88370,6144,64182,1709,41969,21458,62327,181657,49247,225330,122600,114574,107124,85361,111833,63243,71420,15655,191178,72430,18063,51425,54002,12364,53225,86557,18193,97580,41232,138398,67821,128724,8944,233212,101353,52099,42127,14006,120107,32789,32132,3498,18123,33758,56058,5779,128760,59888,98869,18445,84702,51911,13234,218379,20093,39031,8074,70195,20708,23462,24355,131384,60189,26390,10403,41060,7140,10781,49410,42261,87202,82566,41663,43105,60276,2768,5733,74176,28329,2297,145430,131632,83615,122915,105441,655,224102,5284,136426,67763,16294,188511,32538,61049,27893,3394,13951,159099,28542,17930,145360,9492,190122,32285,78855,26440,13570,58648,73908,4239,124561,2444,74172,53131,11468,10794,73566,11623,35343,64710,30481,4163,10328,38309,29901,10538,154377,76132,92405,24839,11679,3465,13449,11637,7824,2337,57754,1260,14458,41118,19878,38661,13416,159180,37074,163164,54137,28627,52134,184900,8520,40385,29546,30502,22386,66527,107458,6850,24022,47983,30603,35083,8934,304066,39500,9,28261,33026,77251,9374,44833,116312,34990,29236,63563,125639,135405,165398,159055,55690,88141,69643,236964,31983,25572,20436,36746,60896,31850,16179,11828,5888,3043,66368,9750,31167,7915,53111,36430,1333,64344,93659,20061,60596,180191,51630,6792,30244,43509,101058,22409,420,44210,109783,43223,27030,72477,72831,32679,29235,7675,47556,12258,39907,149412,84926,118247,24692,71717,105038,86009,45941,41189,89453,29856,52543,30627,226798,67303,59230,67415,34408,1367,99685,16867,128419,52147,4111,125381,117881,16173,44093,102224,31575,23234,24870,83790,127407,239098,3200,994,1255,100903,242275,117266,55116,38205,16140,29662,11307,40414,208793,123355,56470,4862,75600,30119,58218,70828,24075,26974,7802,192353,4851,5475,78720,66596,3409,28573,64396,30381,30690,59859,88256,5406,99945,103064,34463,37727,24238,86643,60088,4057,23741,5967,162904,38240,28356,93858,25510,122879,6897,3278,7057,11971,4400,35461,211413,21395,59615,39471,87233,55795,128426,3051,22470,41950,14705,3974,180108,80476,78442,204996,91987,15634,67610,139015,142373,35611,51134,10387,4353,153456,57749,181039,14183,68447,151532,21107,36452,20551,3186,46247,46383,129666,88736,140662,146243,2066,8360,7978,64818,106963,17896,47801,10723,114821,223295,74192,3293,3393,16987,74064,11277,91622,4270,29828,27951,387869,103235,1374,61988,120083,477,145892,128378,11779,211263,61354,18221,17869,46530,83061,108538,157981,90608,67199,95080,49064,195814,12302,66307,10348,231346,160732,112859,63633,146558,21271,31037,198802,47622,12862,95710,3910,77850,73961,85585,34752,61e3,4082,24595,103679,71107,8208,79568,150019,16615,24961,139857,32664,197366,4559,54735,32696,4126,162019,75698,13916,70108,159638,19834,9349,24675,175560,49643,18206,52459,27992,10809,88865,401975,133172,29e3,34558,30915,3658,25834,42430,36562,125265,18182,10155,40149,97082,208980,19575,60853,90529,66545,9600,789,46420,2317,88593,55595,98980,115302,5742,169155,1073,177901,3472,11189,63711,78643,65472,50459,127979,93,42202,67053,21720,157650,11145,141378,42033,22824,85705,79114,35584,15974,1510,54172,28562,12451,104226,19190,97151,73024,20948,5151,81741,21499,29006,84183,198074,54003,45120,170125,26240,35177,28389,64863,79974,60778,176915,232183,45342,2038,80253,41564,40703,32689,5430,100689,5366,23007,134279,14266,26712,73993,24934,64242,52113,102887,61801,46415,201049,54251,62133,122757,164883,30815,139966,2319,30842,766,13362,10287,134518,86111,81665,82440,28333,43019,18963,8804,161944,23439,102144,101145,80029,39052,248708,30350,117340,11878,128467,974,138625,63961,5237,74778,61834,67040,43814,13690,65947,33809,232476,115258,181745,28824,94013,9510,10246,93722,81976,7217,114383,3493,16014,69045,72692,12145,80981,9507,6692,1620,60820,330444,35474,33962,4797,7053,295463,46445,27026,12491,77988,49524,35675,90947,29114,166705,101385,133782,32704,6186,84595,176031,185623,45966,151302,63069,1699,107491,947,15458,74452,196212,6046,10498,12163,10239,35191,243951,9277,9090,29539,54460,22820,26514,112549,60372,51753,48756,21812,70861,260326,41,44222,10441,16961,48148,138771,216194,5914,52153,53400,212036,56519,26245,10117,45888,15294,138019,90913,26368,43842,42111,23348,6082,194845,161089,156206,51546,11647,30759,302912,262094,8635,78876,26535,35283,54183,31183,85484,147873,12989,5197,6356,72894,65347,20150,27370,73787,1493,45918,12366,190217,20724,13858,10981,67449,81213,7553,14115,72242,271517,11842,48310,88743,143726,22177,3290,243231,58452,62937,12592,1654,40066,33477,13751,9921,128442,15868,7106,75236,83773,10775,36938,10482,170465,17368,17469,161508,32752,98340,800,19824,264456,3901,87319,2867,26782,9630,113102,185815,24197,44584,86366,40224,3636,140916,31731,267731,9567,53678,72984,29389,27963,17106,50282,284911,60170,8322,12608,23374,89652,5268,39044,229766,8869,151350,31436,177342,12269,183212,120418,116270,2843,78888,69192,7865,184099,1086,129897,18383,70508,20242,18508,229924,124569,35749,50589,55626,9884,83115,40971,30671,18135,14452,38861,17844,201826,5549,26413,17189,13561,38539,10679,143331,3314,36785,171194,49685,187713,67506,4618,104039,17060,195080,50648,33159,19238,67559,134840,28599,157523,17130,38064,117398,94355,31918,13575,34538,40326,13997,3494,348283,62481,26862,3603,104426,244363,153709,112487,304612,199674,41239,35545,54869,293005,28223,26277,26899,4533,18518,15492,38587,80488,70485,160395,263,60162,11382,222152,4696,250751,51921,182609,10707,48463,46243,1227,49111,111564,46502,33342,56846,68541,63559,858,139927,16654,229375,76759,26478,33205,95828,23399,92945,2637,35630,28470,143992,50214,14174,21456,166191,65665,1711,21594,78019,97599,111701,36,147151,110246,189022,43021,30397,40757,131935,42065,73335,48039,26596,28984,15102,2361,7421,202167,69744,43766,52826,3642,83304,33873,75140,63169,192389,36551,92748,13039,123959,233220,21738,84447,77230,20228,187852,19095,25799,92136,108774,29237,53947,2299,118106,2687,8830,42331,202924,33667,2023,73763,30704,19363,19779,16737,35629,48081,24068,101013,162338,291912,13749,24745,328289,167679,70086,48299,23306,16732,17801,43322,54589,3586,63653,43624,53474,925,109177,251316,43805,13082,19511,86565,142182,92461,17117,101033,103319,64589,4022,4351,235897,5352,82705,107142,46391,156084,5860,61365,10558,13045,7717,18357,33922,12590,33065,6928,46993,783,46937,67846,8952,26295,6107,119656,18799,17458,50747,4229,179559,112727,118080,20683,41464,125468,51560,49749,44231,7359,35339,62988,136487,67015,5208,29150,24956,105186,48858,6143,18097,6972,16404,73489,58742,97196,36357,164616,5834,32267,13746,147733,15113,132091,34127,106298,39729,106426,22294,9780,15602,36213,71502,42808,66802,599,60755,5851,39120,67363,108623,126368,72770,91263,32486,30596,151717,7951,52002,43103,11768,68942,40901,39344,24037,127500,116890,48403,16926,86750,17745,48648,159545,34460,58419,5634,114317,67865,31462,23352,24010,98185,125708,69686,68337,13610,26271,70691,2980,4768,27225,102402,75453,28106,8104,6931,1176,6274,6475,112635,22498,6176,238686,26832,28893,90319,14441,15682,15087,39517,45270,109134,104440,45965,47645,81772,7876,52683,87720,12898,4505,185665,2769,113401,15664,57592,105229,137381,97059,119268,6876,43309,33886,128363,35476,144249,67013,143587,83367,25703,91436,59347,53236,2289,16519,19844,46309,58558,99834,23313,218816,231303,36388,51333,183535,109792,139277,54306,90139,18235,8275,32710,37677,82464,86025,92204,88842,117723,37570,128723,234242,76350,73795,34896,148247,58424,11105,11744,45746,63372,17118,49772,199520,81902,38004,22911,33752,3125,1995,53792,4689,26909,108150,146062,69674,41811,161444,84855,8999,28561,16731,93937,3189,21967,24890,22943,1356,145300,51569,28802,517,118679,31703,40607,48098,108854,25003,10233,73969,177495,5248,24516,215347,146192,48712,60626,69188,40735,5866,586,101541,6509,47590,52129,5969,222045,110933,25733,24223,65339,62812,2414,155418,35819,16022,78423,43138,20995,128255,240673,46745,236093,72176,57085,97841,61248,107,36068,193177,105427,55726,215229,20446,47228,100420,87091,14429,121708,23605,21157,187721,21880,2997,203976,99166,95068,25877,7724,98925,83401,4829,13182,18229,13718,239662,38653,116505,153497,30589,89029,38962,181302,43853,78872,180301,4786,248240,7401,106136,112590,77745,19731,60880,77789,125748,135487,5975,48627,34084,12419,215770,47557,254582,10364,106495,21856,67539,88981,38805,21428,48732,42316,12149,16078,52808,25327,51322,33850,51147,12253,122354,46077,56483,254553,115417,81834,150991,94662,86668,7381,12841,100650,18218,15741,22372,68294,50705,15535,84660,61887,22553,72299,31361,24824,17743,46820,64288,31582,77006,111674,116384,30760,80920,86149,77192,51979,79691,60342,122805,103800,240873,160744,233114,78962,54920,8608,3484,316104,72548,24337,5088,230040,21926,10172,36838,26,86221,83458,102176,12062,17571,41929,41170,28428,68239,41750,103930,2634,18313,53019,34825,97837,63115,24606,73157,152474,14715,91439,37033,109806,140259,30668,174760,380,135597,95673,136073,65073,134249,13829,17279,122305,4420,46444,10237,64848,203623,70728,10349,182885,65075,24519,25783,40318,34139,22222,63394,55266,102764,41422,20126,65100,90408,53640,35128,48932,11192,38935,96839,34782,39492,19396,41332,6250,5511,19492,51304,25936,104466,54099,73771,86115,5080,7669,30891,111700,13931,25276,72289,135447,14820,258641,25265,31005,281179,75286,393,95359,14623,13584,6680,101227,80173,44933,76666,54542,13244,39348,458,25379,109451,134348,81143,6959,65554,12027,51311,8716,57589,140731,28467,23316,17272,30458,25980,55229,77197,83798,28302,114784,7428,34548,26241,14712,39336,103304,18928,54080,12870,334,87722,15208,16895,142098,114262,39820,83913,57817,28682,7721,14900,108672,11250,62246,42849,415188,1724,26555,24549,25505,26443,107450,145899,61035,43528,6901,60726,65906,267741,21338,147590,42079,18924,73017,135236,15393,5206,4026,84185,1531,5988,113890,82647,303391,7386,69844,71611,189865,76523,31877,13315,19314,198575,32821,1928,67641,25913,104475,103489,3297,70391,18406,15446,113347,19295,93790,27856,1792,167471,116449,8541,4408,41757,63233,25765,86680,64501,27034,24816,34975,6079,4486,49693,36229,16917,21581,62426,27862,11612,54284,35702,194034,355,24277,48262,87411,70504,310164,118018,12516,47559,43502,57433,107139,9290,66533,80863,14634,34312,91725,28606,21342,67241,72355,43244,375789,37402,174015,105070,8342,44167,67494,1890,16365,11723,271002,1865,47918,8350,45564,27742,25110,125803,8553,49504,81925,62211,4534,15491,19011,80373,206920,667,102405,128623,245524,5553,113309,192739,65766,19567,22832,261958,29679,21293,71134,20962,105123,24721,860,21752,33448,18372,157167,94822,35770,173224,232737,75729,28937,46828,28062,25453,5207,140366,36665,30652,6169,67920,150458,92040,23186,184604,92330,20891,176492,49427,27828,38305,42495,143982,49560,25503,90043,29747,65328,47830,12932,11068,77721,9003,25213,94205,140426,46090,89945,138173,192691,33329,112232,129905,35709,27514,1841,19957,31411,127476,53572,17497,173549,55063,175135,19841,69314,5192,237921,117660,150697,4060,273045,50414,98940,65348,153665,164423,58804,156695,48994,213928,86036,28608,8355,39574,34540,16927,135680,18374,151587,10830,53805,16878,16623,4282,48030,8537,14986,46102,13062,72897,72,33050,108227,39451,45935,651,113320,40535,95176,57450,48843,5003,19019,10407,211163,3848,1068,4988,32091,30095,41692,15099,43602,107434,50744,7627,171349,16313,150832,352665,207750,33937,38256,51091,156e3,87889,90663,84175,24908,114900,50365,31494,83829,5398,169342,47521,54818,18935,8356,43094,41212,174536,10082,92550,6678,60614,23355,69721,14796,34149,128830,58187,3179,208,40325,28399,225029,401412,51150,31580,207268,6657,10993,69818,64282,289845,23308,12961,38447,6681,52944,31855,2572,47646,120728,179148,37240,45196,218274,4816,3695,21961,50084,35209,18073,51452,27004,6100,33941,1377,84831,171214,85,141510,9078,99227,32610,6417,11718,49868,65579,87902,73018,49062,46280,61742,21512,40862,107733,15941,29168,157765,144919,14487,5767,158014,140070,7241,573,71584,16921,223566,40331,179473,35081,47926,140885,41508,52104,59180,42310,32811,29048,123517,102413,80208,10104,14746,12649,153641,126022,37965,113017,4171,83,142592,2809,6362,50416,71323,116894,260776,16204,1524,5760,30351,12658,20703,54403,36083,45408,74772,4946,14485,50759,111222,10890,2195,167147,92962,130534,16283,177256,35016,15472,210156,151187,73922,117691,43250,52051,37392,24811,24358,30830,5775,818,21969,1476,127322,151783,58392,31021,106913,65215,89407,90802,28531,11690,20234,95249,44602,37256,18707,11928,5161,4410,26571,51903,49768,22008,25252,65780,209499,68769,203726,13249,137363,48845,86823,6658,5674,31881,1083,1823,108676,34518,166752,13791,14287,91576,91429,8665,11529,26401,16191,91972,30964,5254,28486,54697,79613,66520,18447,22870,45203,194466,22822,51703,12278,76716,44595,73455,33546,12235,144843,36154,51247,11116,33040,3180,225753,60864,1972,28469,12891,28879,10338,144157,56294,353058,38302,41447,87532,110616,27065,168438,6557,1213,50804,144643,24817,2390,136531,38174,247513,16190,4059,122791,131994,137430,39506,57650,16305,5188,54309,106128,20628,88071,67394,395446,250285,66176,91254,1399,114196,43915,60230,44853,27206,106353,43013,18733,345105,226453,51202,16607,57106,117175,35492,10476,89598,127439,15187,39624,13688,61570,10615,31111,59370,6238,175252,32143,224492,41388,95408,34384,148238,78307,38959,9340,160091,61443,15737,11216,41244,170,38299,102443,113097,26382,14027,33707,3957,76300,66160,19431,18900,6952,1717,108656,82206,188021,257335,27295,43999,41210,31777,46956,57457,12657,11489,15697,48060,204748,53583,82422,284790,30503,137341,8120,19615,220311,15991,10217,63424,9808,67431,70976,98221,4491,15177,28535,144789,751,13230,2394,1504,33977,132104,30316,22230,931,97193,185240,24826,22687,174322,15307,22988,1390,188745,180325,29580,59068,74903,18994,29195,79,15436,7622,38462,11566,138710,44828,45774,37768,99236,68137,84083,19282,22698,17134,74807,126662,173497,46248,16938,119735,3212,28292,213652,49013,9975,32180,45660,86250,4801,68788,95490,77482,113751,11994,44624,94452,46839,128497,100316,5798,58588,73184,202987,65417,37790,88524,1606,43156,97964,105717,34947,11203,100060,37742,130074,93653,107799,94311,196106,41347,8035,10780,16390,27883,118236,167395,1979,25006,19375,31628,18916,144723,78502,114047,103107,86492,107686,5844,20934,206963,23556,22591,16562,146333,20167,10471,117434,33085,2863,9740,36669,41849,37271,22790,18209,28979,8231,12952,54408,21731,25130,45208,55748,138120,75826,414,29593,9925,292865,25999,683,123149,7036,92159,86055,61827,103680,23176,54918,58466,57578,13305,5709,86479,16697,31064,17660,200919,10770,49793,33423,32370,52047,16488,62555,6459,8426,83493,7763,59725,82812,18628,67760,79405,68557,9612,7673,28102,56517,69620,171797,32458,29541,15870,81109,32080,207644,71495,21202,11039,91036,61230,2810,130800,32260,4613,60590,37112,75214,33979,126402,155062,30642,63875,12810,194463,82799,47664,16725,36685,43367,61099,449,172150,102867,21691,301838,36745,7130,18671,57316,34852,38034,54182,35578,65900,99486,19771,3456,2658,16914,99866,28390,28109,8262,21147,34353,20006,4228,137085,1675,203023,283196,198286,214375,163329,290603,152574,40471,83506,30068,14730,23177,131539,34759,27668,32178,71896,104799,116305,85430,119262,42860,25160,8911,23428,49437,105322,6519,16203,6349,74711,1230,38045,8540,75165,44736,25909,51026,317034,4984,32281,91312,27060,44431,17817,45363,155937,239085,35697,59784,91993,29531,126740,213757,76560,167776,285273,24262,8237,65030,41160,74437,48804,118916,13159,37842,1031,75349,1478,11655,108777,23435,277425,101734,67469,70231,124711,43532,28514,65526,54956,1e3,21882,17728,25302,40952,52214,149632,1999,2111,3259,63362,89961,220561,39777,26335,9063,10572,12416,34551,34623,38604,24723,5947,15588,69927,66252,119177,69173,46629,28714,70715,212408,20521,406913,74380,11716,50659,50862,37009,88460,130101,7210,53853,538,65120,151950,55806,163748,52837,13153,21100,16674,64536,6091,138201,44837,58547,3723,163,2177,32288,85454,34033,8497,14282,25742,10535,10741,79559,117493,243787,49337,100718,79495,40139,42956,7551,55433,15421,31509,23034,45081,547,61176,53434,328001,8470,36263,30145,4519,74173,53935,11845,73774,60211,78025,3,4102,73782,109293,315332,48412,26683,13714,6865,20128,18490,104141,325,39470,171970,115860,15707,7268,73301,74336,31370,2368,111827,107757,136231,142844,97138,96638,84053,38691,23801,1588,10573,122098,77039,240,186135,146101,11996,18143,112963,46171,155836,348769,47795,121213,116266,132515,3344,144804,31286,99187,255838,129694,35894,48779,55235,148582,71967,65282,15174,13920,47080,6147,108242,157593,125025,7136,1286,28957,127956,28402,98813,20805,7532,109417,40610,5041,32958,15142,18408,108596,33543,50517,27748,80114,233434,91447,487,37094,100048,30541,43477,10639,89862,155868,37667,8726,60684,237903,73408,99589,12190,38739,97348,3914,13594,2680,149016,13907,30171,28343,23530,115225,61104,35821,147679,14337,4297,244282,24085,326976,56428,7851,21303,131620,71446,83253,68692,111870,5224,15813,38197,49026,45057,13660,3306,76345,40671,27905,91072,996,68527,62085,91351,122634,55109,168209,2024,27560,112707,17352,8306,167115,169921,166958,5031,46020,11844,67284,19130,76185,6920,32849,5450,14610,22451,21002,17392,31872,66682,84796,13709,40210,59898,12029,8719,53564,21462,91884,21647,88379,194428,12754,37797,132826,160016,22567,54383,53186,77611,31107,8339,4694,19185,90355,23597,17222,140675,28442,23668,55977,9128,61555,28774,155229,17658,9390,24379,69357,15752,127381,239631,62460,93181,55913,45133,140155,18676,25249,33164,29581,82837,67223,22362,29975,7317,52813,1943,29613,20012,207130,49617,49651,5636,15334,36313,29226,28084,95247,72072,19e3,224932,15811,114,32127,38097,37508,88507,37225,27359,91626,12193,69279,20608,11055,88156,92808,2152,57259,55275,72789,24475,104414,1708,9882,3818,48661,66897,1631,34806,227930,85815,87753,18321,250664,72733,25107,206797,50891,8082,196411,92596,96764,152823,65514,22819,387277,62176,51225,40329,15563,189,3659,73670,64357,51793,275136,33482,86653,74615,67058,11318,125720,15388,22388,8267,1730,102663,170910,40784,7144,85373,13040,7088,94309,583,44224,140424,77439,18496,164026,36578,4722,9151,5824,63365,26510,35199,40500,79277,32495,44614,35233,9566,203293,152144,7097,2330,183480,98629,13423,330887,44130,68600,30939,97829,31012,345465,56747,94879,4939,160027,149761,99423,46099,32251,15332,8761,96094,128555,5763,235318,222223,55729,30241,55420,201746,3987,81382,8259,49325,23287,7719,24633,251100,92311,18591,110533,64759,170260,393860,7175,21144,132887,3593,75346,101277,91109,16387,259187,11627,57459,173829,44694,55780,49797,89192,120443,62622,3904,14814,23887,1027,112258,64955,99800,11132,66353,36202,48624,18158,88481,96882,43059,11040,2455,7077,21651,181159,99126,100434,61388,68186,19161,110468,120052,8819,55324,41494,7014,37689,3618,87729,92615,207943,9823,128657,12587,15857,6379,67628,51216,71775,157617,63244,1503,3864,218754,110864,5769,21492,7243,1192,87921,85529,31512,18537,42698,35350,73510,84474,34301,8991,21013,35034,566,38832,19838,35586,37216,39413,55006,12178,59742,856,84563,6900,25632,17437,49786,30723,13847,70845,4044,7843,23944,235976,55530,48942,6518,20939,73769,192653,52936,95207,23895,132542,142982,22632,87452,48042,54018,178468,10728,26230,23559,363,81269,142012,5718,346258,31456,84333,246476,51018,66692,101804,120570,39962,30373,70593,2864,60541,19425,54209,104092,7201,31545,48018,25865,15442,46257,40443,8328,6451,111782,47527,97754,33046,470,245116,31095,39,91934,87208,73470,36708,36521,12801,70624,36272,8892,79768,12427,55454,103756,5908,52390,62962,22720,141138,94634,41689,128402,126390,6628,106394,35527,134394,82727,254651,194502,148064,89549,3202,28359,957,21954,27906,49840,142747,8307,24206,48978,1186,71728,133038,71474,91306,6333,110959,74600,70387,18983,62609,56057,22970,1147,135850,1321,28834,3578,59715,102227,32827,81415,99952,55636,257598,390,22702,35701,85872,402916,39216,189795,14929,19467,10112,144422,61514,5279,63421,134686,41436,8424,51925,10598,132295,124416,4604,194739,210929,57866,31829,51626,50007,9976,91878,61906,56168,81906,60918,61859,40017,23059,16887,40927,62064,12785,32893,32913,21782,93965,20169,44387,79084,38463,11457,93950,27127,157050,2697,337088,5116,54128,48255,33279,8821,27352,25515,124022,65710,28906,38557,33390,1722,104435,72215,38551,12094,30978,25113,6671,37355,175109,42862,98024,65406,221276,59624,118012,64637,78760,86697,21426,1639,40350,12584,67193,84144,31396,7863,143011,69629,63112,9454,28666,65798,46372,134721,6314,51402,30837,151922,2847,38676,38008,92823,136245,17540,5504,109295,205242,37606,5211,214892,1586,20670,208711,137743,19328,40652,16995,20023,14657,154919,34422,12996,13918,38221,47690,16398,2959,37680,89122,6721,198469,91876,172043,83898,101992,26084,94570,3635,76958,22853,76497,38266,176590,168403,44464,142840,79180,184594,1984,41806,83147,11985,6546,366068,59732,24533,271505,8736,39084,222992,93429,28962,58985,86665,8432,30028,14548,32439,54424,165029,55175,27458,69046,121277,46168,33732,20661,24581,135574,123110,37556,79260,72611,16957,12939,46162,58238,44907,72936,253758,41324,32518,96480,11949,124438,65280,43256,34107,53533,43531,37037,28366,45970,32741,173438,6121,194202,62969,26355,30314,58370,28455,1848,50519,82830,90393,21761,295490,10936,256940,133568,44050,20269,4089,27457,21610,219460,36743,14821,101388,52005,13124,30979,140816,167362,26054,18458,60789,34917,40447,26606,33422,9066,3452,83614,5761,20263,137238,25038,91310,101,52322,74548,42572,38084,214054,186568,31802,17665,30620,141936,37730,14420,4265,187218,49640,188208,51441,55388,96452,66659,40869,42039,60967,221027,19234,178581,29105,96050,9165,196118,157335,3738,40354,117436,2965,34136,59659,15570,50843,230035,31444,71260,43886,18316,5387,38500,168508,17406,32174,8828,103373,143806,90367,3560,18719,122310,16508,26719,2541,105429,6645,37998,73190,10591,235916,49737,87112,233941,53188,32193,79154,4544,52905,126477,7580,63501,57314,3216,31337,6541,103083,60846,49,9756,15481,1355,43840,14319,13743,27486,10222,73114,230718,418644,16706,6674,279748,23058,45273,295831,86306,2743,5535,88773,21829,35253,120938,31153,3169,16839,42847,8751,80974,33942,36867,35514,16485,26474,77775,56877,5391,48346,3882,108713,31403,27804,55248,26235,43821,136104,40118,175507,28034,203908,18732,1788,34030,106427,36958,54359,7251,44936,15356,69139,455,157915,22173,140291,50348,43275,82066,49621,54952,15216,36226,96695,66855,6936,1987,8227,196087,4631,68827,99004,47541,110265,17953,147605,110242,58520,31312,38724,329975,642,3155,34497,75937,6207,73843,6120,17249,51429,117746,3218,910,68961,319671,14938,29555,34700,1649,66673,72268,9655,76800,153087,6941,210168,27130,35398,1780,73242,3135,56689,19556,165307,8765,35967,121458,13333,70453,17350,117253,22265,13340,44265,39869,441,3742,135025,23581,33309,16543,17731,13291,157637,283005,21408,101360,63887,52312,83873,5338,233779,23759,186949,34531,177320,38069,156465,91004,19353,59852,68160,14891,1338,1072,29823,1950,28901,81407,313445,73038,84807,162348,240257,37162,138934,16111,58013,41253,102951,16457,96056,19541,56402,67217,41638,94381,89674,29481,37456,80815,151579,13937,13683,132537,19699,134545,67020,29816,222341,141235,427578,48868,129557,233342,23077,87871,16213,18728,16184,9469,37913,19680,2798,171356,178328,13216,50049,72690,71904,124644,55455,7504,29052,41036,266546,19899,30391,188755,8659,59469,16,104298,112943,53865,76203,138226,68857,139953,14125,107625,119795,173133,4398,50273,48808,54390,16466,122086,31835,67035,50971,48859,7508,46427,66477,73021,84615,39985,83076,46779,201569,53336,36443,60865,168164,143810,51393,25548,169307,32896,24485,38424,21837,29087,275813,51674,6714,64883,46169,187369,55186,76192,12852,12018,62134,31067,118303,16542,12125,10579,4928,26291,43854,7091,10946,253716,109062,39283,17261,113012,258512,47764,125126,32646,55892,80279,201623,149872,3192,385,1208,48750,5376,58738,22335,5427,82416,47811,32435,143086,38930,94128,59975,156037,37977,38224,62485,7698,50405,71027,16462,21559,136153,34131,107506,162069,63703,3101,215029,40407,4178,3774,9187,80019,17880,97926,67579,2600,18405,8351,47924,86638,70820,92206,86453,29610,42241,119200,3198,15466,67813,57863,35454,4779,99518,4649,104641,144269,33730,38073,65864,6838,109456,193298,154007,5623,45741,30846,182578,25573,157224,1543,58575,138703,146140,44971,49356,18275,59064,20300,13122,11848,24453,11973,9797,86843,2919,25530,49210,1130,161220,76788,75373,85604,34926,36014,17777,17255,51533,11676,92226,51845,119859,21525,5936,18507,28050,1140,31418,14857,34207,47859,10750,36382,32079,106909,59426,87757,38393,110042,15965,97104,33757,35344,97993,53979,33651,45407,41884,82515,173089,7177,58371,35365,47543,51927,35587,10670,23544,29306,84233,39976,76076,62097,9007,8668,28119,78281,120790,19835,143020,54968,18670,64959,20649,34469,42570,33001,136570,87796,120044,1106,58700,63951,127623,12805,83057,40212,31773,49850,7361,54336,347524,101314,23751,19569,48791,29174,49369,20467,7465,75842,38281,623,112457,60210,28849,51003,94720,6426,90047,85560,43761,3579,85105,34607,90410,118528,7224,42907,111163,18168,6960,161135,191298,5247,100584,127552,171568,20121,91173,12636,54615,20199,63730,98105,2396,40387,14438,125012,4765,33235,12865,45299,37728,82098,77872,114037,59253,19675,24838,398016,102561,11446,17069,57508,178277,65836,99941,26114,2585,271882,136866,50126,11027,155648,118367,14585,8910,123015,335383,40434,41016,53021,14439,87098,176860,201543,121888,2358,9286,5739,22666,54270,37884,169381,33984,93859,16124,89364,72207,51639,76366,99029,65812,2198,12147,174891,194289,6986,30252,88822,21284,11445,288337,160821,33034,100869,43852,25761,52882,1144,103809,1924,84458,86079,43411,13542,139276,18141,34978,41298,7276,26481,173800,33210,17951,142652,33616,33677,2210,19941,98568,2486,192414,80136,12058,235883,50963,249638,29572,27221,47034,6124,72107,63346,97620,158513,299699,40388,23235,37176,224244,198386,121323,67992,23827,63170,17838,106622,158590,26807,5345,23489,91891,55474,74834,37981,13058,5977,72552,34706,26828,145172,19904,21367,34043,960,77092,91381,4733,47446,7680,41697,5170,16960,14741,46101,13656,473,51842,37433,11103,11551,121951,13191,97536,165932,50397,51628,129028,9069,44885,6590,59195,47045,32940,225472,90345,21833,13303,29407,96615,141951,5198,6028,18395,7181,3861,14966,156358,167182,36529,55253,25942,173153,30959,27261,50691,150176,162201,38467,48462,80602,42163,118482,168,108756,26011,17166,54149,456538,22512,91374,13816,90358,131615,18132,226707,1824,28139,26860,42253,93877,77351,65575,8980,80574,22020,27948,40422,91324,76376,13528,39281,91685,82215,122541,144066,1983,193851,17283,26320,2739,194978,4790,26845,42627,61300,65815,174612,55133,4200,191130,79771,158321,52280,166796,221620,62461,11278,4067,88152,83409,31717,121367,13522,47325,37945,10406,174348,249321,154101,64912,29938,51775,17220,15776,166138,78890,84425,54121,42861,16368,24572,291647,10197,32073,22651,11677,97509,26952,35787,18424,41910,71614,94977,72318,41594,70024,275419,37702,60199,7335,39107,61315,18271,18394,33768,87884,104277,123724,7277,56288,71981,189803,49320,3352,6798,14240,8954,69220,94433,57372,28620,68863,193727,85575,42309,41667,67689,42081,22543,44824,12719,28540,114236,101553,27638,27296,4300,5353,4663,19379,94098,3758,95888,95144,80344,87320,28447,259518,12718,71391,152731,37063,24132,31911,104896,15672,103782,1521,4945,72541,23717,122632,15619,87175,206120,29428,189780,61416,28350,44457,972,1175,47233,198738,95789,41907,21953,97034,59341,22864,53713,16873,32971,20693,20954,31336,21477,16169,38370,16412,9019,3841,24599,21938,17085,6484,81198,76413,5849,72514,12320,65247,276175,37234,59796,52642,16312,57349,198507,94148,46134,18958,125552,1747,18725,151873,14901,5490,68287,29470,3689,64794,40814,26018,25692,54450,2703,88278,124886,173087,174e3,24159,179477,24276,46004,201876,209202,445,52876,31948,30206,157610,39180,18439,44124,50469,5774,96278,222758,200216,50290,45486,20435,46986,46276,140133,142326,15569,13363,47522,92583,2182,7135,16853,22998,30272,4952,63263,35623,39096,53789,44864,20053,110392,124213,4630,16087,28221,127787,25839,77481,44693,13464,113146,6983,27069,55717,50102,4760,7107,26186,66507,59145,36032,104182,71328,29425,64317,50781,47465,94298,69706,74899,22754,120756,25108,93077,56834,73286,39928,16218,41699,176763,7555,70819,50083,26895,23315,26014,16773,123079,41712,5719,31516,90427,158540,85051,183128,40864,27505,55392,9058,45224,96857,30901,136622,96557,56304,120061,11501,151448,5773,89743,7769,86069,2935,18471,41628,10114,33660,110170,49479,26745,92846,33221,26731,18795,87076,8550,2100,29972,120289,3077,72490,33784,2630,208722,50861,63483,79029,6419,39467,14302,45286,64207,9686,67513,44170,1050,77246,59266,17055,53801,7150,11111,42432,4278,94579,362117,36175,42902,41933,39002,98489,22913,74161,84773,57036,17556,162288,74485,178760,93867,73635,128860,50362,261,67455,80001,46080,35662,4368,25247,19230,74393,22588,1822,27682,235324,13798,85998,13194,235067,23514,71669,147632,23191,134748,214683,105101,1518,25489,247114,7380,54842,26922,3971,26361,20844,68642,170517,77339,123255,8963,77818,150998,48466,36806,2732,23261,11741,236162,18243,126216,28690,50546,16385,92760,197383,246558,201295,88255,67588,71687,176076,172653,169058,33906,63747,24835,157621,43338,30050,46152,132741,2770,51371,94835,6614,15112,11749,56936,1250,19027,399017,58036,100215,23388,55815,308768,124152,94803,9521,64186,8971,28,30427,62163,7616,103838,35079,29203,131235,7743,17389,10882,37420,61460,228512,85363,41581,131077,62822,119647,10130,54445,26925,19968,29016,24446,74028,24176,61448,67185,9254,8563,119129,9771,99184,37716,39514,10532,221512,258753,218630,55980,23394,32141,61924,66749,32411,3741,36475,26678,77010,44946,91203,128749,116953,20476,49625,53116,13735,102335,29376,51946,83407,67892,59212,34685,21083,1546,112982,32972,74397,1078,190545,16082,86140,58591,89611,101531,10061,105104,76319,20035,17551,52611,169061,190842,100780,23907,90413,115619,9675,34710,193435,49443,129734,11183,258877,16318,136182,126808,44635,27304,192375,2599,125648,47051,12091,23814,721,58800,40137,66726,97930,60877,74487,7942,54326,9841,41428,13762,8211,85383,6950,99177,79806,201786,296464,124087,13144,29741,41721,47634,55088,254286,106408,17041,99064,12942,64086,45233,14005,2612,55827,255,7984,13980,38574,12776,46654,73499,249951,2101,26676,25996,132326,116415,119062,50449,31033,23038,11589,179252,20007,14860,129270,21143,17796,144715,60106,70758,69842,34674,282133,44014,16774,57268,38528,24053,46373,201667,28327,471023,51889,102667,21193,114909,84132,69317,96723,67969,16134,68145,15058,28765,32035,2524,101089,98664,25045,76571,14957,86040,118506,262428,154764,81573,39681,283900,73287,127825,544,80448,52347,38512,175971,15180,45467,33086,46552,48894,81107,43213,36672,54025,76703,8053,7608,13299,56619,20752,238099,54164,105133,1444,32942,953,37564,8e3,66316,119463,106817,404,13667,149108,128597,31267,10269,49836,106150,1484,52330,76965,160486,171648,38456,31263,22424,37738,66245,67467,143369,60471,75610,20895,115528,86070,60854,40796,49347,18989,15030,11371,37578,15779,79867,10187,86462,46402,155626,93200,40229,7090,57547,108053,99598,11088,47505,41218,206017,2173,20988,30219,22919,80563,57566,42369,93141,41675,2407,182519,120495,27154,16702,29456,14349,7958,16688,117177,140375,42467,261919,74916,153569,10836,34742,49526,7621,105997,12212,2270,392377,7755,17959,25086,232152,138791,33847,13860,35316,5811,1344,71259,50452,207539,92635,50359,5821,33674,30255,2086,2587,96264,17543,42,6029,9580,43007,139248,82831,12917,29607,25786,51467,42137,85161,100698,31561,88989,121990,278500,3602,109344,37982,15279,116442,28936,30880,87894,58079,128661,126731,67392,28051,146885,4861,16216,97344,42827,147561,153948,22684,21335,47685,1853,43349,15185,59642,10229,25520,187921,108972,5579,98037,24945,6697,19193,63734,137934,75056,89740,19767,224268,56138,63643,151661,39313,70618,84031,89723,84074,13703,85626,35460,8867,64845,3439,57906,99776,63968,49270,81130,34356,16210,23547,36446,34090,140028,72439,2221,22163,57058,363492,113754,18913,95451,48663,54464,54037,176097,68425,3023,34906,29482,117389,341780,80431,58330,16753,92616,60907,94846,147486,4498,48646,7773,46801,7778,18946,464978,47558,33223,177444,7328,15626,63337,94700,11743,9351,255024,39098,16447,42647,96230,39769,58840,10068,63439,35800,65843,58823,413844,9156,51258,7434,61791,85018,6872,3692,28096,7121,33024,6009,75532,31997,192535,9661,3304,9547,14753,31987,25314,55689,15896,20430,39472,31340,99744,25398,115569,54883,28719,205423,23071,57855,64638,149867,25671,82403,37616,20668,39989,77996,74948,140555,175248,64810,36515,46595,4958,248773,24045,28728,136673,168704,20804,114833,100325,27135,21205,96151,153134,45992,7093,13992,76047,1980,19432,145001,75159,87462,17710,1013,45556,34297,144882,20648,26061,11319,129567,108555,18872,464580,33386,22717,65948,167189,5603,135042,79542,8801,202632,18114,91882,5973,5239,67315,4431,60916,47819,71693,32597,32606,18183,45072,80329,76385,24749,51305,40314,156514,14693,130345,13168,66214,18029,12858,34801,27628,14544,10823,40522,40185,33739,148694,23548,9923,61012,28859,17933,19442,34364,99849,164107,141167,30629,21054,6744,36491,8096,42474,41706,155060,30650,10600,163442,1143,96655,61390,52359,7559,51568,64256,203854,4467,22453,14504,436398,7878,6980,8293,63610,293747,16167,35763,19627,147603,15419,18032,110744,51346,33681,54571,40472,48615,39073,21604,13754,173027,92560,11083,47299,63062,11813,52007,29883,9734,139722,15953,1550,20651,13616,49306,16113,90089,92326,7584,30712,72424,164858,6831,152871,55746,197721,34167,196442,6022,112107,55215,7538,123381,4920,43539,77165,8939,50392,34192,20225,79762,22505,58667,40770,29788,97180,82835,4568,8579,13273,363569,35898,49983,436,36598,3237,131691,62418,35591,8101,4073,379438,65218,76072,33887,2968,27573,212619,288680,68278,72851,150504,217896,6913,121339,22017,35340,51072,43616,75043,31437,10833,81487,4364,22968,41454,106687,85446,19863,109625,149241,524,141850,214404,54376,657,237023,9401,108137,53800,32474,49712,53334,126876,27337,45552,177696,8269,15036,12097,42240,2328,125374,119295,99715,2500,19624,39441,27220,102691,60957,94543,39101,18566,67362,13975,78230,25017,34017,239007,90027,39351,41681,35354,43822,1043,916,58587,141983,94818,38799,75459,41114,67432,16195,36606,59568,22272,126769,31424,68659,12287,134302,257977,5756,207285,95637,47248,117689,19583,77451,22373,12200,54993,117118,34244,29386,34562,53819,71267,64172,77665,49368,7716,59301,25749,45426,194789,17297,2650,1766,32501,45198,20403,20984,6600,14171,94604,19037,5402,29896,9938,59935,109708,88081,145182,44844,39167,352626,164173,35374,45982,6122,154,73419,220487,53834,53601,17992,8609,229321,5610,68098,66815,71012,95069,140968,27396,8957,134489,24656,86659,56598,134852,17316,123838,255436,6613,41610,138033,81452,32023,32396,123687,63398,8693,29712,30407,19296,121188,3551,36099,20032,111948,56624,16547,27453,35916,15378,52039,56849,13489,22214,73177,53097,277349,2157,14029,187886,10260,141743,246460,91880,50869,3788,49486,133566,54950,33120,129337,53768,18333,9525,26902,312251,10297,9020,70759,16647,112432,59260,84609,9818,82766,73569,468,46001,75780,55028,52106,11498,43645,108069,17150,17753,29417,16705,31799,9606,289,122254,115975,8620,6133,255357,56908,14456,133464,43554,79224,11247,29630,160,12756,25464,65960,350428,62521,321796,100359,67358,35169,46172,113128,48988,88868,31094,33266,6847,60887,98188,49659,69117,92977,220228,13947,80181,35103,62170,97351,13475,2440,199768,19498,36597,46971,25234,67806,62881,84717,73648,181966,10488,94149,21550,26655,63436,48375,14405,165650,9621,24439,28043,42735,4490,29963,56674,45373,1934,262446,50855,67098,26898,5261,52696,40644,33900,9440,180286,87162,22940,19704,26936,69769,10254,101759,27406,12243,48e3,73926,113215,54935,5726,192787,4312,106216,9366,11550,52949,23457,212271,277152,133895,108374,6191,96477,29980,218916,58024,54696,40853,91124,65894,91170,65908,252552,6793,29212,15389,44516,122515,52617,35058,9017,103536,39510,49136,19242,130652,662077,74699,47024,31422,8517,73351,24399,13867,128360,4810,4434,61779,111983,61036,17798,110240,59722,102960,39688,10001,23803,23039,176498,56659,44814,134295,17188,77577,74466,226175,102472,154333,63900,111747,18062,41171,79669,32773,408933,42562,28931,30907,107388,43487,2946,240310,23938,24354,319,184983,7927,6488,1422,10790,68809,68209,64775,4361,202,17123,59634,51200,44391,18188,17843,2619,74278,3230,9540,47187,21702,36274,56894,43907,16310,34790,16866,6150,5561,13587,107545,108873,126867,86986,28640,33427,19017,5762,80637,17430,46903,2047,131055,25958,13558,5444,47152,13900,44563,122857,45348,70863,39593,54332,38068,33637,318,40310,143467,18502,24520,11377,62013,28942,27246,28269,83545,17999,59015,90707,30065,15161,34720,1263,37008,2012,6060,98575,92933,5721,299,199555,24578,29223,2985,743,115825,109523,136657,47454,26378,53586,3733,174945,93340,244456,5693,37386,28782,89767,27545,23573,18798,136425,34320,84778,20041,48453,38215,7477,71958,40621,8773,5874,187927,105965,51100,43533,18083,8443,10180,43597,2003,183999,69689,12216,129696,146188,62389,34044,68410,12765,43273,26949,266807,3345,34477,79197,5688,47539,213110,21634,22257,50092,32222,42346,39530,63668,98,134978,74022,5152,59088,174145,37220,9934,9545,118937,5724,87240,19875,15784,40143,23263,87513,181654,285152,37881,263241,4966,43934,10433,186657,6470,74416,225854,25908,142677,246262,32280,6192,75890,45546,143264,135305,29742,47013,77787,11732,126658,8763,37950,21806,57557,113464,89465,108995,164574,23894,22996,23169,15369,23117,17642,130607,40503,36239,280990,44666,9981,40427,147487,26869,168452,32886,32991,46798,240839,15111,70502,65697,88548,44145,28701,48767,31139,206777,35659,181164,166262,14554,171445,31786,66523,76607,17956,6507,31279,90476,116611,167918,6560,1243,115324,80128,41867,55897,187323,37069,32596,189444,145931,13390,105530,65709,26805,6999,55714,41300,22915,68951,22138,21120,22264,10058,19945,33635,56123,99085,10032,5818,6016,46649,57476,35264,94413,112522,262288,93686,83038,14341,23204,28807,66084,77987,6101,126673,7133,38126,5923,122091,170240,97772,46874,215746,43948,41622,3272,55596,8332,146411,251315,13533,8561,81521,115449,48616,175175,2063,186556,3036,134537,75772,29728,82360,22973,186559,86348,89100,38388,82297,45610,2613,87082,9986,177812,57884,23591,47485,42543,33582,44713,74439,257444,252451,31825,35631,38540,33066,5147,13973,4343,51830,70378,22827,26448,95560,36896,241741,48067,203953,298860,61620,20450,3220,67272,6586,107662,100160,108684,6929,57226,4762,7457,1320,40404,77204,99309,62750,208653,59977,44e3,74315,34332,5819,172217,64904,114077,18147,84012,1791,98456,90930,21446,116669,103938,7422,85140,59713,5768,326211,16239,75411,13229,29398,10758,236107,1539,112472,95979,152154,151294,306,21196,38146,10700,6891,84282,109646,56492,40539,6589,119491,51354,30685,140209,136906,29622,73617,49553,70525,51671,166869,139616,74395,37439,49595,45678,11959,33211,86560,52434,9282,62690,112155,130810,5243,108261,99970,265613,72551,80049,6391,33365,90721,66737,69872,87011,1860,9032,112544,60905,37371,89015,140351,19076,850,373531,2802,36725,218795,72062,28990,16550,24614,7815,6187,26336,33373,32162,42791,73555,32062,23386,10244,56392,49442,27076,136262,12412,14883,1134,33675,97153,199281,15608,100152,74072,47942,254301,36451,16026,10687,65067,56708,254030,30290,50490,13864,57941,259331,35588,23485,43486,24869,21620,92971,22072,88645,1048,182050,13343,32452,14825,19509,3325,216938,45740,99716,189082,53740,78245,25609,24311,176777,47340,308354,40669,66085,14102,125339,9225,128709,97207,1271,200933,78439,113451,88975,18324,46521,11819,18570,141756,72512,170020,52754,63550,118515,103073,93330,32736,50499,14722,31600,68452,398867,29316,172786,18417,104924,2606,5670,84818,16288,67106,59580,82929,607401,291,85829,359,15897,35830,50696,65630,52672,22115,356968,29895,40837,231192,34024,38957,26722,406,23335,124952,72068,68804,13268,147101,164740,276569,162596,66943,11569,26654,66358,4777,23229,102127,5848,978,2921,59666,5371,28212,90108,42938,39320,2499,4271,108792,33510,125072,71653,65239,38250,66357,38577,13964,86251,35708,50755,36010,29448,12209,3844,38222,206337,100876,67827,137088,14167,252225,84163,195270,1306,5703,54198,779,46802,22028,51124,86759,70560,113164,35685,162145,45471,34561,422,2611,6464,47486,19223,38246,9191,18331,89942,243642,212364,15893,17518,22617,6409,30046,126182,59716,36560,104428,18846,26592,19458,50793,147333,30826,1388,27647,10922,14495,33545,19269,135828,39727,41601,46931,233379,49169,131130,182112,16276,82381,118209,142445,128310,19672,28740,82907,33436,3118,102206,28723,24819,41937,38854,5157,3881,111491,1142,9776,421673,152241,29309,14961,87854,6054,15424,3796,82656,54996,2108,55367,239450,154525,9643,118103,106041,64601,68549,48707,30266,25772,18740,9462,229669,91798,112152,191327,14493,72828,8175,66636,236474,25817,87351,129027,76653,20422,22983,71240,27846,44661,12399,46158,77704,53101,35032,11072,17300,109294,33638,24408,1895,11241,760,17584,82479,125877,63150,141075,34259,23274,81698,15732,43577,48340,91584,14688,16379,24481,150280,96420,262050,48635,43727,61819,56268,72003,88178,17281,79912,13218,122519,125295,166396,11811,2171,118930,67746,17636,178278,174656,95661,173039,83845,79689,17473,98555,127696,203415,54730,22925,232239,9309,12136,175026,20740,180188,10747,39816,314017,266131,10040,175732,112550,220651,31974,37393,888,23008,86799,4303,64905,148467,75337,251,3284,370102,50264,9835,5438,23655,4481,29851,329,12855,7162,64931,78141,12804,42372,296771,83547,18624,34874,86271,3360,48665,77735,88767,11463,63527,28889,22258,29140,194315,113924,25499,6406,31334,1845,4802,49184,43455,35469,127594,92970,61038,115005,38840,87761,106838,8811,20572,55637,11162,96721,132425,108925,2948,125457,36356,3502,75270,27622,127192,2561,123095,49394,61155,16897,110064,9699,89448,53356,19628,220310,21622,83036,9885,112214,6087,26713,17901,161912,91492,3440,68594,9266,92238,8087,6866,150194,72175,80701,13459,31836,43243,239700,95846,44749,50647,21945,230538,120612,132371,244604,5193,105637,34661,41341,68775,85393,1874,8771,33718,49672,77403,595452,99507,6490,58895,128742,7704,39239,73217,43816,62824,37804,199976,22361,80005,87514,94832,14089,4574,139975,59142,75523,100268,43906,53442,15152,2547,186002,17011,19513,204282,3343,60568,128318,119250,4298,51871,41336,71759,21921,45074,98169,145889,99427,11350,1237,5520,28799,7803,53702,21026,136352,38293,128690,12158,90132,44600,10184,26957,39459,126025,78904,82999,59373,39301,150198,120529,153042,20177,50089,14764,271571,30530,123161,38975,101562,22941,5648,124654,109243,69817,71675,49162,106884,21241,107795,30258,16572,188262,141456,7688,60718,8271,11044,32440,104608,103419,236109,93156,43293,128929,42107,67180,25201,115254,185488,130954,72813,167547,20537,39969,38432,22582,184022,1139,27199,5655,17767,97412,122606,209377,27070,35871,326617,188954,42680,73512,80911,22629,3011,95021,315242,157737,383,41821,41808,19335,27950,15674,25677,110950,35375,76835,59108,57370,35262,16569,160415,37706,78086,32041,49691,137143,9782,172080,50148,77917,6323,10110,69172,17711,21795,59511,76184,135114,31046,132319,59105,157578,20549,80778,57649,158421,65143,4575,72235,21899,10797,92745,34035,106079,80159,4508,78304,25350,75457,46458,32937,25623,47,8531,104751,84953,8138,36508,187199,66310,115274,13253,32461,38536,1916,42007,187160,35055,26325,84394,35963,94216,45590,97782];var es=15,ts=class{log;peerRouting;routingTable;refreshInterval;refreshQueryTimeout;commonPrefixLengthRefreshedAt;refreshTimeoutId;constructor(e,t){let{peerRouting:n,routingTable:i,refreshInterval:s,refreshQueryTimeout:o,logPrefix:a}=t;this.log=e.logger.forComponent(`${a}:routing-table:refresh`),this.peerRouting=n,this.routingTable=i,this.refreshInterval=s??h0,this.refreshQueryTimeout=o??d0,this.commonPrefixLengthRefreshedAt=[],this.refreshTable=this.refreshTable.bind(this)}async afterStart(){this.log(`refreshing routing table every ${this.refreshInterval}ms`),this.refreshTable(!0)}async stop(){this.refreshTimeoutId!=null&&clearTimeout(this.refreshTimeoutId)}refreshTable(e=!1){this.log("refreshing routing table");let t=this._maxCommonPrefix(),n=this._getTrackedCommonPrefixLengthsForRefresh(t);this.log(`max common prefix length ${t}`),this.log(`tracked CPLs [ ${n.map(i=>i.toISOString()).join(", ")} ]`),Promise.all(n.map(async(i,s)=>{try{if(await this._refreshCommonPrefixLength(s,i,e),this._numPeersForCpl(t)===0){let o=Math.min(2*(s+1),n.length-1);for(let a=s+1;a<o+1;a++)try{await this._refreshCommonPrefixLength(a,i,e)}catch(c){this.log.error(c)}}}catch(o){this.log.error(o)}})).catch(i=>{this.log.error(i)}).then(()=>{this.refreshTimeoutId=setTimeout(this.refreshTable,this.refreshInterval),this.refreshTimeoutId.unref!=null&&this.refreshTimeoutId.unref()}).catch(i=>{this.log.error(i)})}async _refreshCommonPrefixLength(e,t,n){if(!n&&t.getTime()>Date.now()-this.refreshInterval){this.log("not running refresh for cpl %s as time since last refresh not above interval",e);return}let i=await this._generateRandomPeerId(e);this.log("starting refreshing cpl %s with key %p (routing table size was %s)",e,i,this.routingTable.size);let s=AbortSignal.timeout(this.refreshQueryTimeout);te(1/0,s);let o=await Wi(this.peerRouting.getClosestPeers(i.toMultihash().bytes,{signal:s}));this.log(`found ${o} peers that were close to imaginary peer %p`,i),this.log("finished refreshing cpl %s with key %p (routing table size is now %s)",e,i,this.routingTable.size)}_getTrackedCommonPrefixLengthsForRefresh(e){e>es&&(e=es);let t=[];for(let n=0;n<=e;n++)t[n]=this.commonPrefixLengthRefreshedAt[n]??new Date;return t}async _generateRandomPeerId(e){if(this.routingTable.kb==null)throw new Error("Routing table not started");if(this.routingTable.kb.localPeer==null)throw new Error("Local peer not set");let t=fi(2),n=(t[1]<<8)+t[0],i=await this._makePeerId(this.routingTable.kb.localPeer.kadId,n,e),s=ae(i);return Ke(s)}async _makePeerId(e,t,n){if(n>es)throw new Error(`Cannot generate peer ID for common prefix length greater than ${es}`);let o=new DataView(e.buffer,e.byteOffset,e.byteLength).getUint16(0,!1)^32768>>n,a=65535<<16-(n+1),c=o&a|t&~a,l=g4[c],u=new ArrayBuffer(34),f=new DataView(u,0,u.byteLength);return f.setUint8(0,gt.code),f.setUint8(1,32),f.setUint32(2,l,!1),new Uint8Array(f.buffer,f.byteOffset,f.byteLength)}_maxCommonPrefix(){let e=0;for(let t of this._prefixLengths())t>e&&(e=t);return e}_numPeersForCpl(e){let t=0;for(let n of this._prefixLengths())n===e&&t++;return t}*_prefixLengths(){if(this.routingTable.kb?.localPeer!=null)for(let{kadId:e}of this.routingTable.kb.toIterable()){let t=Me(this.routingTable.kb.localPeer.kadId,e),n=0;for(let i of t)if(i===0)n++;else break;yield n}}};function rs(r){return r[Symbol.asyncIterator]!=null}var ns=r=>{let e=oe(r),t=ge(e);return ze(r,t),ns.bytes=e,t};ns.bytes=0;function is(r,e){e=e??{};let t=e.lengthEncoder??ns;function*n(i){let s=t(i.byteLength);s instanceof Uint8Array?yield s:yield*s,i instanceof Uint8Array?yield i:yield*i}return rs(r)?async function*(){for await(let i of r)yield*n(i)}():function*(){for(let i of r)yield*n(i)}()}is.single=(r,e)=>{e=e??{};let t=e.lengthEncoder??ns;return new $e(t(r.byteLength),r)};var ss=class extends Error{name="InvalidMessageLengthError";code="ERR_INVALID_MSG_LENGTH"},os=class extends Error{name="InvalidDataLengthError";code="ERR_MSG_DATA_TOO_LONG"},as=class extends Error{name="InvalidDataLengthLengthError";code="ERR_MSG_LENGTH_TOO_LONG"},$n=class extends Error{name="UnexpectedEOFError";code="ERR_UNEXPECTED_EOF"};var J7=8,ec=1024*1024*4,xr;(function(r){r[r.LENGTH=0]="LENGTH",r[r.DATA=1]="DATA"})(xr||(xr={}));var P2=r=>{let e=Ve(r);return P2.bytes=oe(e),e};P2.bytes=0;function zn(r,e){let t=new $e,n=xr.LENGTH,i=-1,s=e?.lengthDecoder??P2,o=e?.maxLengthLength??J7,a=e?.maxDataLength??ec;function*c(){for(;t.byteLength>0;){if(n===xr.LENGTH)try{if(i=s(t),i<0)throw new ss("Invalid message length");if(i>a)throw new os("Message length too long");let l=s.bytes;t.consume(l),e?.onLength!=null&&e.onLength(i),n=xr.DATA}catch(l){if(l instanceof RangeError){if(t.byteLength>o)throw new as("Message length length too long");break}throw l}if(n===xr.DATA){if(t.byteLength<i)break;let l=t.sublist(0,i);t.consume(i),e?.onData!=null&&e.onData(l),yield l,n=xr.LENGTH}}}return rs(r)?async function*(){for await(let l of r)t.append(l),yield*c();if(t.byteLength>0)throw new $n("Unexpected end of input")}():function*(){for(let l of r)t.append(l),yield*c();if(t.byteLength>0)throw new $n("Unexpected end of input")}()}zn.fromReader=(r,e)=>{let t=1,n=async function*(){for(;;)try{let{done:s,value:o}=await r.next(t);if(s===!0)return;o!=null&&(yield o)}catch(s){if(s.code==="ERR_UNDER_READ")return{done:!0,value:null};throw s}finally{t=1}}();return zn(n,{...e??{},onLength:s=>{t=s}})};var cs=class{peerId;providers;peerStore;log;constructor(e,t){this.log=e.logger.forComponent(`${t.logPrefix}:rpc:handlers:add-provider`),this.peerId=e.peerId,this.providers=t.providers,this.peerStore=e.peerStore}async handle(e,t){if(t.key==null||t.key.length===0)throw new Ne("Missing key");let n;try{n=re.decode(t.key)}catch{throw new Ne("Invalid CID")}(t.providers==null||t.providers.length===0)&&this.log.error("no providers found in message"),this.log("%p asked us, %p to store provider record for for %c",e,this.peerId,n),await Promise.all(t.providers.map(async i=>{let s=ae(i.id),o=Ke(s),a=i.multiaddrs.map(c=>br(c));if(!e.equals(o)){this.log("invalid provider peer %p from %p",i.id,e);return}if(i.multiaddrs.length<1){this.log("no valid addresses for provider %p. Ignore",e);return}this.log.trace("received provider %p for %s (addrs %s)",e,n,a),await this.providers.addProvider(n,o),await this.peerStore.merge(o,{multiaddrs:a})}))}};var ls=class{peerRouting;peerInfoMapper;peerId;addressManager;log;constructor(e,t){let{peerRouting:n,logPrefix:i}=t;this.log=e.logger.forComponent(`${i}:rpc:handlers:find-node`),this.peerId=e.peerId,this.addressManager=e.addressManager,this.peerRouting=n,this.peerInfoMapper=t.peerInfoMapper}async handle(e,t){if(this.log("incoming request from %p for peers closer to %b",e,t.key),t.key==null)throw new Ne("Invalid FIND_NODE message received - key was missing");let n=await this.peerRouting.getCloserPeersOffline(t.key,e);X(this.peerId.toMultihash().bytes,t.key)&&n.push({id:this.peerId,multiaddrs:this.addressManager.getAddresses().map(s=>s.decapsulateCode(G("p2p").code))});let i={type:O.FIND_NODE,clusterLevel:t.clusterLevel,closer:n.map(this.peerInfoMapper).filter(({multiaddrs:s})=>s.length).map(s=>({id:s.id.toMultihash().bytes,multiaddrs:s.multiaddrs.map(o=>o.bytes)})),providers:[]};return i.closer.length===0&&this.log("could not find any peers closer to %b than %p",t.key,e),i}};function rc(r){return r[Symbol.asyncIterator]!=null}function nc(r){if(rc(r))return(async()=>{let t=[];for await(let n of r)t.push(n);return t})();let e=[];for(let t of r)e.push(t);return e}var y4=nc;var us=class{peerId;peerRouting;providers;peerStore;peerInfoMapper;log;constructor(e,t){let{peerRouting:n,providers:i,logPrefix:s}=t;this.log=e.logger.forComponent(`${s}:rpc:handlers:get-providers`),this.peerId=e.peerId,this.peerStore=e.peerStore,this.peerRouting=n,this.providers=i,this.peerInfoMapper=t.peerInfoMapper}async handle(e,t){if(t.key==null)throw new Ne("Invalid GET_PROVIDERS message received - key was missing");let n;try{n=re.decode(t.key)}catch{throw new Ne("Invalid CID")}this.log("%p asking for providers for %s",e,n);let[i,s]=await Promise.all([y4(Dt(await this.providers.getProviders(n),async a=>{let c=await this.peerStore.get(a);return{id:c.id,multiaddrs:c.addresses.map(({multiaddr:u})=>u)}})),this.peerRouting.getCloserPeersOffline(t.key,this.peerId)]),o={type:O.GET_PROVIDERS,key:t.key,clusterLevel:t.clusterLevel,closer:s.map(this.peerInfoMapper).filter(({id:a,multiaddrs:c})=>c.length>0).map(a=>({id:a.id.toMultihash().bytes,multiaddrs:a.multiaddrs.map(c=>c.bytes)})),providers:i.map(this.peerInfoMapper).filter(({id:a,multiaddrs:c})=>c.length>0).map(a=>({id:a.id.toMultihash().bytes,multiaddrs:a.multiaddrs.map(c=>c.bytes)}))};return this.log("got %s providers %s closerPeers",o.providers.length,o.closer.length),o}async _getAddresses(e){return[]}};var fs=class{peerStore;datastore;peerRouting;log;datastorePrefix;constructor(e,t){this.log=e.logger.forComponent(`${t.logPrefix}:rpc:handlers:get-value`),this.datastorePrefix=`${t.datastorePrefix}/record`,this.peerStore=e.peerStore,this.datastore=e.datastore,this.peerRouting=t.peerRouting}async handle(e,t){let n=t.key;if(this.log("%p asked for key %b",e,n),n==null||n.length===0)throw new Ne("Invalid key");let i={type:O.GET_VALUE,key:n,clusterLevel:t.clusterLevel,closer:[],providers:[]};if(qa(n)){this.log("is public key");let a=Ka(n),c;try{let l=await this.peerStore.get(a);if(l.id.publicKey==null)throw new je("No public key found in key book");c=qr(l.id.publicKey)}catch(l){if(l.name!=="NotFoundError")throw l}if(c!=null)return this.log("returning found public key"),i.record=new fe(n,c,new Date).serialize(),i}let[s,o]=await Promise.all([this._checkLocalDatastore(n),this.peerRouting.getCloserPeersOffline(n,e)]);return s!=null&&(this.log("had record for %b in local datastore",n),i.record=s.serialize()),o.length>0&&(this.log("had %s closer peers in routing table",o.length),i.closer=o.map(a=>({id:a.id.toMultihash().bytes,multiaddrs:a.multiaddrs.map(c=>c.bytes)}))),i}async _checkLocalDatastore(e){this.log("checkLocalDatastore looking for %b",e);let t=Yt(this.datastorePrefix,e),n;try{n=await this.datastore.get(t)}catch(s){if(s.name==="NotFoundError")return;throw s}let i=fe.deserialize(n);if(i.timeReceived==null||Date.now()-i.timeReceived.getTime()>r0){await this.datastore.delete(t);return}return i}};var hs=class{log;constructor(e,t){this.log=e.logger.forComponent(`${t.logPrefix}:rpc:handlers:ping`)}async handle(e,t){return this.log("ping from %p",e),t}};var ds=class{components;validators;log;datastorePrefix;constructor(e,t){let{validators:n}=t;this.components=e,this.log=e.logger.forComponent(`${t.logPrefix}:rpc:handlers:put-value`),this.datastorePrefix=`${t.datastorePrefix}/record`,this.validators=n}async handle(e,t){let n=t.key;if(this.log("%p asked us to store value for key %b",e,n),t.record==null){let i=`Empty record from: ${e.toString()}`;throw this.log.error(i),new Ne(i)}try{let i=fe.deserialize(t.record);await Zr(this.validators,i),i.timeReceived=new Date;let s=Yt(this.datastorePrefix,i.key);await this.components.datastore.put(s,i.serialize().subarray()),this.log("put record for %b into datastore under key %k",n,s)}catch(i){this.log("did not put record for key %b into datastore %o",n,i)}return t}};var ps=class{handlers;routingTable;log;metrics;constructor(e,t){this.metrics={operations:e.metrics?.registerCounterGroup(`${t.metricsPrefix}_inbound_rpc_requests_total`),errors:e.metrics?.registerCounterGroup(`${t.metricsPrefix}_inbound_rpc_errors_total`)},this.log=e.logger.forComponent(`${t.logPrefix}:rpc`),this.routingTable=t.routingTable,this.handlers={[O.GET_VALUE.toString()]:new fs(e,t),[O.PUT_VALUE.toString()]:new ds(e,t),[O.FIND_NODE.toString()]:new ls(e,t),[O.ADD_PROVIDER.toString()]:new cs(e,t),[O.GET_PROVIDERS.toString()]:new us(e,t),[O.PING.toString()]:new hs(e,t)}}async handleMessage(e,t){let n=this.handlers[t.type];if(n==null){this.log.error(`no handler found for message type: ${t.type}`);return}try{return this.metrics.operations?.increment({[t.type]:!0}),await n.handle(e,t)}catch{this.metrics.errors?.increment({[t.type]:!0})}}onIncomingStream(e){let t="unknown";Promise.resolve().then(async()=>{let{stream:n,connection:i}=e,s=i.remotePeer;try{await this.routingTable.add(s)}catch(a){this.log.error(a)}let o=this;await Ot(n,a=>zn(a),async function*(a){for await(let c of a){let l=yt.decode(c);t=l.type,o.log("incoming %s from %p",l.type,s);let u=await o.handleMessage(s,l);u!=null&&(yield yt.encode(u))}},a=>is(a),n)}).catch(n=>{this.log.error("error handling %s RPC message from %p - %e",t,e.connection.remotePeer,n)})}};var ms=class extends _e{log;components;protocol;running;registrarId;constructor(e,t){super();let{protocol:n,logPrefix:i}=t;this.components=e,this.log=e.logger.forComponent(`${i}:topology-listener`),this.running=!1,this.protocol=n}isStarted(){return this.running}async start(){this.running||(this.running=!0,this.registrarId=await this.components.registrar.register(this.protocol,{onConnect:e=>{this.log("observed peer %p with protocol %s",e,this.protocol),this.dispatchEvent(new CustomEvent("peer",{detail:e}))}}))}async stop(){this.running=!1,this.registrarId!=null&&(this.components.registrar.unregister(this.registrarId),this.registrarId=void 0)}};var L2=class{dht;constructor(e){this.dht=e}async provide(e,t={}){await sn(this.dht.provide(e,t))}async cancelReprovide(e){await this.dht.cancelReprovide(e)}async*findProviders(e,t={}){for await(let n of this.dht.findProviders(e,t))n.name==="PROVIDER"&&(yield*n.providers)}async put(e,t,n){await sn(this.dht.put(e,t,n))}async get(e,t){for await(let n of this.dht.get(e,t))if(n.name==="VALUE")return n.value;throw new je("Could not find value for key")}},N2=class{dht;constructor(e){this.dht=e}async findPeer(e,t={}){for await(let n of this.dht.findPeer(e,t))if(n.name==="FINAL_PEER")return n.peer;throw new je("Peer not found")}async*getClosestPeers(e,t={}){for await(let n of this.dht.getClosestPeers(e,t))n.name==="FINAL_PEER"&&(yield n.peer)}},ic=32,sc=64,gs=class extends _e{protocol;routingTable;providers;network;peerRouting;components;log;running;kBucketSize;clientMode;validators;selectors;queryManager;contentFetching;contentRouting;routingTableRefresh;rpc;topologyListener;querySelf;maxInboundStreams;maxOutboundStreams;dhtContentRouting;dhtPeerRouting;peerInfoMapper;reprovider;constructor(e,t={}){super();let n=t.logPrefix??"libp2p:kad-dht",i=t.datastorePrefix??"/dht",s=t.metricsPrefix??"libp2p_kad_dht",o={queries:e.metrics?.registerMetricGroup(`${s}_operations_total`,{label:"operation"}),errors:e.metrics?.registerCounterGroup(`${s}_operation_errors_total`,{label:"operation"}),queryTime:e.metrics?.registerMetricGroup(`${s}_operation_time_seconds`,{label:"operation"}),errorTime:e.metrics?.registerMetricGroup(`${s}_operation_error_time_seconds`,{label:"operation"})};this.running=!1,this.components=e,this.log=e.logger.forComponent(n),this.protocol=t.protocol??n0,this.kBucketSize=t.kBucketSize??20,this.clientMode=t.clientMode??!0,this.maxInboundStreams=t.maxInboundStreams??ic,this.maxOutboundStreams=t.maxOutboundStreams??sc,this.peerInfoMapper=t.peerInfoMapper??Ii;let a=_s();this.providers=new qi(e,{...t.providers,logPrefix:n,datastorePrefix:i,lock:a}),this.validators={...La,...t.validators},this.selectors={...X0,...t.selectors},this.network=new Fi(e,{protocol:this.protocol,logPrefix:n,metricsPrefix:s}),this.routingTable=new Ji(e,{kBucketSize:t.kBucketSize,pingOldContactTimeout:t.pingOldContactTimeout,pingOldContactConcurrency:t.pingOldContactConcurrency,pingOldContactMaxQueueSize:t.pingOldContactMaxQueueSize,pingNewContactTimeout:t.pingNewContactTimeout,pingNewContactConcurrency:t.pingNewContactConcurrency,pingNewContactMaxQueueSize:t.pingNewContactMaxQueueSize,protocol:this.protocol,logPrefix:n,metricsPrefix:s,prefixLength:t.prefixLength,splitThreshold:t.kBucketSplitThreshold,network:this.network});let c=se();t.allowQueryWithZeroPeers===!0&&c.resolve(),this.queryManager=new ji(e,{disjointPaths:Math.ceil(this.kBucketSize/2),logPrefix:n,metricsPrefix:s,initialQuerySelfHasRun:c,routingTable:this.routingTable}),this.peerRouting=new Hi(e,{routingTable:this.routingTable,network:this.network,validators:this.validators,queryManager:this.queryManager,logPrefix:n}),this.contentFetching=new Pi(e,{validators:this.validators,selectors:this.selectors,peerRouting:this.peerRouting,queryManager:this.queryManager,network:this.network,logPrefix:n,datastorePrefix:i}),this.contentRouting=new Ci(e,{network:this.network,peerRouting:this.peerRouting,queryManager:this.queryManager,routingTable:this.routingTable,providers:this.providers,logPrefix:n}),this.routingTableRefresh=new ts(e,{peerRouting:this.peerRouting,routingTable:this.routingTable,logPrefix:n}),this.rpc=new ps(e,{routingTable:this.routingTable,providers:this.providers,peerRouting:this.peerRouting,validators:this.validators,logPrefix:n,metricsPrefix:s,datastorePrefix:i,peerInfoMapper:this.peerInfoMapper}),this.topologyListener=new ms(e,{protocol:this.protocol,logPrefix:n}),this.querySelf=new Qi(e,{peerRouting:this.peerRouting,interval:t.querySelfInterval,initialInterval:t.initialQuerySelfInterval,logPrefix:n,initialQuerySelfHasRun:c,routingTable:this.routingTable,operationMetrics:o}),this.reprovider=new Zi(e,{...t.reprovide,logPrefix:n,metricsPrefix:s,datastorePrefix:i,contentRouting:this.contentRouting,lock:a,operationMetrics:o}),this.network.addEventListener("peer",l=>{let u=l.detail;this.onPeerConnect(u).catch(f=>{this.log.error("could not add %p to routing table",u.id,f)}),this.dispatchEvent(new CustomEvent("peer",{detail:u}))}),this.topologyListener.addEventListener("peer",l=>{let u=l.detail;Promise.resolve().then(async()=>{let f=await this.components.peerStore.get(u),h={id:u,multiaddrs:f.addresses.map(({multiaddr:p})=>p),protocols:f.protocols};await this.onPeerConnect(h)}).catch(f=>{this.log.error("could not add %p to routing table - %e",u,f)})}),this.dhtPeerRouting=new N2(this),this.dhtContentRouting=new L2(this),t.clientMode==null&&e.events.addEventListener("self:peer:update",l=>{this.log("received update of self-peer info"),Promise.resolve().then(async()=>{let u=l.detail.peer.addresses.some(({multiaddr:h})=>$a(h)),f=this.getMode();u&&f==="client"?await this.setMode("server"):f==="server"&&!u&&await this.setMode("client")}).catch(u=>{this.log.error("error setting dht server mode",u)})}),this.get=gr(this.get.bind(this),o,"GET_VALUE"),this.findProviders=gr(this.findProviders.bind(this),o,"FIND_PROVIDERS"),this.findPeer=gr(this.findPeer.bind(this),o,"FIND_PEER"),this.getClosestPeers=gr(this.getClosestPeers.bind(this),o,"GET_CLOSEST_PEERS"),this.provide=gr(this.provide.bind(this),o,"PROVIDE"),this.put=gr(this.put.bind(this),o,"PUT_VALUE")}[Symbol.toStringTag]="@libp2p/kad-dht";[G2]=["@libp2p/content-routing","@libp2p/peer-routing","@libp2p/peer-discovery"];[j2]=["@libp2p/identify"];get[H2](){return this.dhtContentRouting}get[K2](){return this.dhtPeerRouting}get[q2](){return this}async onPeerConnect(e){if(this.log.trace("peer %p connected",e.id),e=this.peerInfoMapper(e),e.multiaddrs.length===0){this.log.trace("ignoring %p as there were no valid addresses in %s after filtering",e.id,e.multiaddrs.map(t=>t.toString()));return}try{await this.routingTable.add(e.id)}catch(t){this.log.error("could not add %p to routing table",e.id,t)}}isStarted(){return this.running}getMode(){return this.clientMode?"client":"server"}async setMode(e,t=!1){if(e===this.getMode()&&!t){this.log("already in %s mode",e);return}if(await this.components.registrar.unhandle(this.protocol),e===this.getMode()&&!t){this.log("already in %s mode",e);return}e==="client"?(this.log("enabling client mode while in %s mode",this.getMode()),this.clientMode=!0):(this.log("enabling server mode while in %s mode",this.getMode()),this.clientMode=!1,await this.components.registrar.handle(this.protocol,this.rpc.onIncomingStream.bind(this.rpc),{maxInboundStreams:this.maxInboundStreams,maxOutboundStreams:this.maxOutboundStreams}))}async start(){this.running||(this.running=!0,await this.setMode(this.clientMode?"client":"server",!0),await nn(this.routingTable,this.queryManager,this.network,this.topologyListener,this.routingTableRefresh,this.reprovider),await nn(this.querySelf))}async stop(){this.running=!1,await Wn(this.querySelf,this.queryManager,this.network,this.routingTable,this.routingTableRefresh,this.topologyListener,this.reprovider)}async*put(e,t,n={}){yield*this.contentFetching.put(e,t,n)}async*get(e,t={}){yield*this.contentFetching.get(e,t)}async*provide(e,t={}){yield*this.contentRouting.provide(e,this.components.addressManager.getAddresses(),t)}async cancelReprovide(e){await this.providers.removeProvider(e,this.components.peerId)}async*findProviders(e,t={}){yield*this.contentRouting.findProviders(e,t)}async*findPeer(e,t={}){yield*this.peerRouting.findPeer(e,t)}async*getClosestPeers(e,t={}){yield*this.peerRouting.getClosestPeers(e,t)}async refreshRoutingTable(){this.routingTableRefresh.refreshTable(!0)}};var Kn;(function(r){r[r.SEND_QUERY=0]="SEND_QUERY",r[r.PEER_RESPONSE=1]="PEER_RESPONSE",r[r.FINAL_PEER=2]="FINAL_PEER",r[r.QUERY_ERROR=3]="QUERY_ERROR",r[r.PROVIDER=4]="PROVIDER",r[r.VALUE=5]="VALUE",r[r.ADD_PEER=6]="ADD_PEER",r[r.DIAL_PEER=7]="DIAL_PEER"})(Kn||(Kn={}));function oc(r={}){return e=>new gs(e,r)}return L4(ac);})();
7
7
  /*! Bundled license information:
8
8
 
9
9
  pvtsutils/build/index.js:
10
10
  (*!
11
11
  * MIT License
12
12
  *
13
- * Copyright (c) 2017-2022 Peculiar Ventures, LLC
13
+ * Copyright (c) 2017-2024 Peculiar Ventures, LLC
14
14
  *
15
15
  * Permission is hereby granted, free of charge, to any person obtaining a copy
16
16
  * of this software and associated documentation files (the "Software"), to deal