@cetusprotocol/margin-sdk 0.0.0-experimental-20260428110430 → 0.0.0-experimental-20260429124835

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -24,7 +24,7 @@ Given a collection of price feed ids, retrieve the latest Pyth price for each pr
24
24
  Given a collection of price feed ids, retrieve the latest Pyth price for each price feed.`,requestFormat:"json",parameters:[{name:"ids[]",type:"Query",schema:De.array(_s)},{name:"encoding",type:"Query",schema:De.enum(["hex","base64"]).optional()},{name:"parsed",type:"Query",schema:De.boolean().optional()},{name:"ignore_invalid_price_ids",type:"Query",schema:De.boolean().optional()}],response:gs,errors:[{status:404,description:"Price ids not found",schema:De.void()}]},{method:"get",path:"/v2/updates/price/stream",alias:"price_stream_sse_handler",description:`SSE route handler for streaming price updates.
25
25
 
26
26
  The connection will automatically close after 24 hours to prevent resource leaks.
27
- Clients should implement reconnection logic to maintain continuous price updates.`,requestFormat:"json",parameters:[{name:"ids[]",type:"Query",schema:De.array(_s)},{name:"encoding",type:"Query",schema:De.enum(["hex","base64"]).optional()},{name:"parsed",type:"Query",schema:De.boolean().optional()},{name:"allow_unordered",type:"Query",schema:De.boolean().optional()},{name:"benchmarks_only",type:"Query",schema:De.boolean().optional()},{name:"ignore_invalid_price_ids",type:"Query",schema:De.boolean().optional()}],response:gs,errors:[{status:404,description:"Price ids not found",schema:De.void()}]},{method:"get",path:"/v2/updates/publisher_stake_caps/latest",alias:"latest_publisher_stake_caps",description:"Get the most recent publisher stake caps update data.",requestFormat:"json",parameters:[{name:"encoding",type:"Query",schema:De.enum(["hex","base64"]).optional()},{name:"parsed",type:"Query",schema:De.boolean().optional()}],response:Oc}]),dy=new kc(Mm);var km=5e3,Am=3,ws=class{baseURL;timeout;httpRetries;headers;accessToken;constructor(e,i){this.baseURL=e,this.timeout=i?.timeout??km,this.httpRetries=i?.httpRetries??Am,this.headers=i?.headers??{},this.accessToken=i?.accessToken}async httpRequest(e,i,r,n=this.httpRetries,o=100+Math.floor(Math.random()*100)){try{let a={};this.accessToken!==void 0&&(a.Authorization=`Bearer ${this.accessToken}`);let l=await fetch(e,{...r,signal:AbortSignal.any([...r?.signal?[r.signal]:[],AbortSignal.timeout(this.timeout)]),headers:{...a,...this.headers,...r?.headers}});if(!l.ok){let f=await l.text();throw new Error(`HTTP error! status: ${l.status.toString()}${f?`, body: ${f}`:""}`)}let d=await l.json();return i.parse(d)}catch(a){if(n>0&&!(a instanceof Error&&a.name==="AbortError"))return await new Promise(l=>setTimeout(l,o)),this.httpRequest(e,i,r,n-1,o*2);throw a}}async getPriceFeeds({fetchOptions:e,...i}={}){let r=this.buildURL("price_feeds");if(i){let n=vo(i);this.appendUrlSearchParams(r,n)}return await this.httpRequest(r.toString(),ko.PriceFeedMetadata.array(),e)}async getLatestPublisherCaps({fetchOptions:e,...i}={}){let r=this.buildURL("updates/publisher_stake_caps/latest");return i&&this.appendUrlSearchParams(r,i),await this.httpRequest(r.toString(),ko.LatestPublisherStakeCapsUpdateDataResponse,e)}async getLatestPriceUpdates(e,i,r){let n=this.buildURL("updates/price/latest");for(let o of e)n.searchParams.append("ids[]",o);if(i){let o=vo(i);this.appendUrlSearchParams(n,o)}return this.httpRequest(n.toString(),ko.PriceUpdate,r)}async getPriceUpdatesAtTimestamp(e,i,r,n){let o=this.buildURL(`updates/price/${e.toString()}`);for(let a of i)o.searchParams.append("ids[]",a);if(r){let a=vo(r);this.appendUrlSearchParams(o,a)}return this.httpRequest(o.toString(),ko.PriceUpdate,n)}async getPriceUpdatesStream(e,i){let r=this.buildURL("updates/price/stream");for(let o of e)r.searchParams.append("ids[]",o);if(i){let o=vo(i);this.appendUrlSearchParams(r,o)}let n={};return this.accessToken!==void 0&&(n.Authorization=`Bearer ${this.accessToken}`),new Wr(r.toString(),{fetch:(o,a)=>fetch(o,{...a,headers:{...a?.headers,...n,...this.headers}})})}appendUrlSearchParams(e,i){for(let[r,n]of Object.entries(i))n!==void 0&&e.searchParams.append(r,String(n))}buildURL(e){return new URL(`./v2/${e}`,`${this.baseURL}${this.baseURL.endsWith("/")?"":"/"}`)}};import{bcs as vs}from"@mysten/sui/bcs";var Em=Object.create,Gc=Object.defineProperty,xm=Object.getOwnPropertyDescriptor,zc=Object.getOwnPropertyNames,Im=Object.getPrototypeOf,Pm=Object.prototype.hasOwnProperty,Om=(t=>typeof Jt<"u"?Jt:typeof Proxy<"u"?new Proxy(t,{get:(e,i)=>(typeof Jt<"u"?Jt:e)[i]}):t)(function(t){if(typeof Jt<"u")return Jt.apply(this,arguments);throw Error('Dynamic require of "'+t+'" is not supported')}),Rm=(t,e)=>function(){return e||(0,t[zc(t)[0]])((e={exports:{}}).exports,e),e.exports},Nm=(t,e,i,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of zc(e))!Pm.call(t,n)&&n!==i&&Gc(t,n,{get:()=>e[n],enumerable:!(r=xm(e,n))||r.enumerable});return t},Jn=(t,e,i)=>(i=t!=null?Em(Im(t)):{},Nm(Gc(i,"default",{value:t,enumerable:!0}),t)),Qn=Rm({"node_modules/bn.js/lib/bn.js"(t,e){(function(i,r){function n(p,s){if(!p)throw new Error(s||"Assertion failed")}function o(p,s){p.super_=s;var u=function(){};u.prototype=s.prototype,p.prototype=new u,p.prototype.constructor=p}function a(p,s,u){if(a.isBN(p))return p;this.negative=0,this.words=null,this.length=0,this.red=null,p!==null&&((s==="le"||s==="be")&&(u=s,s=10),this._init(p||0,s||10,u||"be"))}typeof i=="object"?i.exports=a:r.BN=a,a.BN=a,a.wordSize=26;var l;try{typeof window<"u"&&typeof window.Buffer<"u"?l=window.Buffer:l=Om("buffer").Buffer}catch{}a.isBN=function(s){return s instanceof a?!0:s!==null&&typeof s=="object"&&s.constructor.wordSize===a.wordSize&&Array.isArray(s.words)},a.max=function(s,u){return s.cmp(u)>0?s:u},a.min=function(s,u){return s.cmp(u)<0?s:u},a.prototype._init=function(s,u,h){if(typeof s=="number")return this._initNumber(s,u,h);if(typeof s=="object")return this._initArray(s,u,h);u==="hex"&&(u=16),n(u===(u|0)&&u>=2&&u<=36),s=s.toString().replace(/\s+/g,"");var _=0;s[0]==="-"&&(_++,this.negative=1),_<s.length&&(u===16?this._parseHex(s,_,h):(this._parseBase(s,u,_),h==="le"&&this._initArray(this.toArray(),u,h)))},a.prototype._initNumber=function(s,u,h){s<0&&(this.negative=1,s=-s),s<67108864?(this.words=[s&67108863],this.length=1):s<4503599627370496?(this.words=[s&67108863,s/67108864&67108863],this.length=2):(n(s<9007199254740992),this.words=[s&67108863,s/67108864&67108863,1],this.length=3),h==="le"&&this._initArray(this.toArray(),u,h)},a.prototype._initArray=function(s,u,h){if(n(typeof s.length=="number"),s.length<=0)return this.words=[0],this.length=1,this;this.length=Math.ceil(s.length/3),this.words=new Array(this.length);for(var _=0;_<this.length;_++)this.words[_]=0;var w,M,b=0;if(h==="be")for(_=s.length-1,w=0;_>=0;_-=3)M=s[_]|s[_-1]<<8|s[_-2]<<16,this.words[w]|=M<<b&67108863,this.words[w+1]=M>>>26-b&67108863,b+=24,b>=26&&(b-=26,w++);else if(h==="le")for(_=0,w=0;_<s.length;_+=3)M=s[_]|s[_+1]<<8|s[_+2]<<16,this.words[w]|=M<<b&67108863,this.words[w+1]=M>>>26-b&67108863,b+=24,b>=26&&(b-=26,w++);return this._strip()};function d(p,s){var u=p.charCodeAt(s);if(u>=48&&u<=57)return u-48;if(u>=65&&u<=70)return u-55;if(u>=97&&u<=102)return u-87;n(!1,"Invalid character in "+p)}function f(p,s,u){var h=d(p,u);return u-1>=s&&(h|=d(p,u-1)<<4),h}a.prototype._parseHex=function(s,u,h){this.length=Math.ceil((s.length-u)/6),this.words=new Array(this.length);for(var _=0;_<this.length;_++)this.words[_]=0;var w=0,M=0,b;if(h==="be")for(_=s.length-1;_>=u;_-=2)b=f(s,u,_)<<w,this.words[M]|=b&67108863,w>=18?(w-=18,M+=1,this.words[M]|=b>>>26):w+=8;else{var m=s.length-u;for(_=m%2===0?u+1:u;_<s.length;_+=2)b=f(s,u,_)<<w,this.words[M]|=b&67108863,w>=18?(w-=18,M+=1,this.words[M]|=b>>>26):w+=8}this._strip()};function g(p,s,u,h){for(var _=0,w=0,M=Math.min(p.length,u),b=s;b<M;b++){var m=p.charCodeAt(b)-48;_*=h,m>=49?w=m-49+10:m>=17?w=m-17+10:w=m,n(m>=0&&w<h,"Invalid character"),_+=w}return _}a.prototype._parseBase=function(s,u,h){this.words=[0],this.length=1;for(var _=0,w=1;w<=67108863;w*=u)_++;_--,w=w/u|0;for(var M=s.length-h,b=M%_,m=Math.min(M,M-b)+h,c=0,k=h;k<m;k+=_)c=g(s,k,k+_,u),this.imuln(w),this.words[0]+c<67108864?this.words[0]+=c:this._iaddn(c);if(b!==0){var Z=1;for(c=g(s,k,s.length,u),k=0;k<b;k++)Z*=u;this.imuln(Z),this.words[0]+c<67108864?this.words[0]+=c:this._iaddn(c)}this._strip()},a.prototype.copy=function(s){s.words=new Array(this.length);for(var u=0;u<this.length;u++)s.words[u]=this.words[u];s.length=this.length,s.negative=this.negative,s.red=this.red};function v(p,s){p.words=s.words,p.length=s.length,p.negative=s.negative,p.red=s.red}if(a.prototype._move=function(s){v(s,this)},a.prototype.clone=function(){var s=new a(null);return this.copy(s),s},a.prototype._expand=function(s){for(;this.length<s;)this.words[this.length++]=0;return this},a.prototype._strip=function(){for(;this.length>1&&this.words[this.length-1]===0;)this.length--;return this._normSign()},a.prototype._normSign=function(){return this.length===1&&this.words[0]===0&&(this.negative=0),this},typeof Symbol<"u"&&typeof Symbol.for=="function")try{a.prototype[Symbol.for("nodejs.util.inspect.custom")]=y}catch{a.prototype.inspect=y}else a.prototype.inspect=y;function y(){return(this.red?"<BN-R: ":"<BN: ")+this.toString(16)+">"}var S=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],I=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],x=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];a.prototype.toString=function(s,u){s=s||10,u=u|0||1;var h;if(s===16||s==="hex"){h="";for(var _=0,w=0,M=0;M<this.length;M++){var b=this.words[M],m=((b<<_|w)&16777215).toString(16);w=b>>>24-_&16777215,_+=2,_>=26&&(_-=26,M--),w!==0||M!==this.length-1?h=S[6-m.length]+m+h:h=m+h}for(w!==0&&(h=w.toString(16)+h);h.length%u!==0;)h="0"+h;return this.negative!==0&&(h="-"+h),h}if(s===(s|0)&&s>=2&&s<=36){var c=I[s],k=x[s];h="";var Z=this.clone();for(Z.negative=0;!Z.isZero();){var W=Z.modrn(k).toString(s);Z=Z.idivn(k),Z.isZero()?h=W+h:h=S[c-W.length]+W+h}for(this.isZero()&&(h="0"+h);h.length%u!==0;)h="0"+h;return this.negative!==0&&(h="-"+h),h}n(!1,"Base should be between 2 and 36")},a.prototype.toNumber=function(){var s=this.words[0];return this.length===2?s+=this.words[1]*67108864:this.length===3&&this.words[2]===1?s+=4503599627370496+this.words[1]*67108864:this.length>2&&n(!1,"Number can only safely store up to 53 bits"),this.negative!==0?-s:s},a.prototype.toJSON=function(){return this.toString(16,2)},l&&(a.prototype.toBuffer=function(s,u){return this.toArrayLike(l,s,u)}),a.prototype.toArray=function(s,u){return this.toArrayLike(Array,s,u)};var B=function(s,u){return s.allocUnsafe?s.allocUnsafe(u):new s(u)};a.prototype.toArrayLike=function(s,u,h){this._strip();var _=this.byteLength(),w=h||Math.max(1,_);n(_<=w,"byte array longer than desired length"),n(w>0,"Requested array length <= 0");var M=B(s,w),b=u==="le"?"LE":"BE";return this["_toArrayLike"+b](M,_),M},a.prototype._toArrayLikeLE=function(s,u){for(var h=0,_=0,w=0,M=0;w<this.length;w++){var b=this.words[w]<<M|_;s[h++]=b&255,h<s.length&&(s[h++]=b>>8&255),h<s.length&&(s[h++]=b>>16&255),M===6?(h<s.length&&(s[h++]=b>>24&255),_=0,M=0):(_=b>>>24,M+=2)}if(h<s.length)for(s[h++]=_;h<s.length;)s[h++]=0},a.prototype._toArrayLikeBE=function(s,u){for(var h=s.length-1,_=0,w=0,M=0;w<this.length;w++){var b=this.words[w]<<M|_;s[h--]=b&255,h>=0&&(s[h--]=b>>8&255),h>=0&&(s[h--]=b>>16&255),M===6?(h>=0&&(s[h--]=b>>24&255),_=0,M=0):(_=b>>>24,M+=2)}if(h>=0)for(s[h--]=_;h>=0;)s[h--]=0},Math.clz32?a.prototype._countBits=function(s){return 32-Math.clz32(s)}:a.prototype._countBits=function(s){var u=s,h=0;return u>=4096&&(h+=13,u>>>=13),u>=64&&(h+=7,u>>>=7),u>=8&&(h+=4,u>>>=4),u>=2&&(h+=2,u>>>=2),h+u},a.prototype._zeroBits=function(s){if(s===0)return 26;var u=s,h=0;return(u&8191)===0&&(h+=13,u>>>=13),(u&127)===0&&(h+=7,u>>>=7),(u&15)===0&&(h+=4,u>>>=4),(u&3)===0&&(h+=2,u>>>=2),(u&1)===0&&h++,h},a.prototype.bitLength=function(){var s=this.words[this.length-1],u=this._countBits(s);return(this.length-1)*26+u};function R(p){for(var s=new Array(p.bitLength()),u=0;u<s.length;u++){var h=u/26|0,_=u%26;s[u]=p.words[h]>>>_&1}return s}a.prototype.zeroBits=function(){if(this.isZero())return 0;for(var s=0,u=0;u<this.length;u++){var h=this._zeroBits(this.words[u]);if(s+=h,h!==26)break}return s},a.prototype.byteLength=function(){return Math.ceil(this.bitLength()/8)},a.prototype.toTwos=function(s){return this.negative!==0?this.abs().inotn(s).iaddn(1):this.clone()},a.prototype.fromTwos=function(s){return this.testn(s-1)?this.notn(s).iaddn(1).ineg():this.clone()},a.prototype.isNeg=function(){return this.negative!==0},a.prototype.neg=function(){return this.clone().ineg()},a.prototype.ineg=function(){return this.isZero()||(this.negative^=1),this},a.prototype.iuor=function(s){for(;this.length<s.length;)this.words[this.length++]=0;for(var u=0;u<s.length;u++)this.words[u]=this.words[u]|s.words[u];return this._strip()},a.prototype.ior=function(s){return n((this.negative|s.negative)===0),this.iuor(s)},a.prototype.or=function(s){return this.length>s.length?this.clone().ior(s):s.clone().ior(this)},a.prototype.uor=function(s){return this.length>s.length?this.clone().iuor(s):s.clone().iuor(this)},a.prototype.iuand=function(s){var u;this.length>s.length?u=s:u=this;for(var h=0;h<u.length;h++)this.words[h]=this.words[h]&s.words[h];return this.length=u.length,this._strip()},a.prototype.iand=function(s){return n((this.negative|s.negative)===0),this.iuand(s)},a.prototype.and=function(s){return this.length>s.length?this.clone().iand(s):s.clone().iand(this)},a.prototype.uand=function(s){return this.length>s.length?this.clone().iuand(s):s.clone().iuand(this)},a.prototype.iuxor=function(s){var u,h;this.length>s.length?(u=this,h=s):(u=s,h=this);for(var _=0;_<h.length;_++)this.words[_]=u.words[_]^h.words[_];if(this!==u)for(;_<u.length;_++)this.words[_]=u.words[_];return this.length=u.length,this._strip()},a.prototype.ixor=function(s){return n((this.negative|s.negative)===0),this.iuxor(s)},a.prototype.xor=function(s){return this.length>s.length?this.clone().ixor(s):s.clone().ixor(this)},a.prototype.uxor=function(s){return this.length>s.length?this.clone().iuxor(s):s.clone().iuxor(this)},a.prototype.inotn=function(s){n(typeof s=="number"&&s>=0);var u=Math.ceil(s/26)|0,h=s%26;this._expand(u),h>0&&u--;for(var _=0;_<u;_++)this.words[_]=~this.words[_]&67108863;return h>0&&(this.words[_]=~this.words[_]&67108863>>26-h),this._strip()},a.prototype.notn=function(s){return this.clone().inotn(s)},a.prototype.setn=function(s,u){n(typeof s=="number"&&s>=0);var h=s/26|0,_=s%26;return this._expand(h+1),u?this.words[h]=this.words[h]|1<<_:this.words[h]=this.words[h]&~(1<<_),this._strip()},a.prototype.iadd=function(s){var u;if(this.negative!==0&&s.negative===0)return this.negative=0,u=this.isub(s),this.negative^=1,this._normSign();if(this.negative===0&&s.negative!==0)return s.negative=0,u=this.isub(s),s.negative=1,u._normSign();var h,_;this.length>s.length?(h=this,_=s):(h=s,_=this);for(var w=0,M=0;M<_.length;M++)u=(h.words[M]|0)+(_.words[M]|0)+w,this.words[M]=u&67108863,w=u>>>26;for(;w!==0&&M<h.length;M++)u=(h.words[M]|0)+w,this.words[M]=u&67108863,w=u>>>26;if(this.length=h.length,w!==0)this.words[this.length]=w,this.length++;else if(h!==this)for(;M<h.length;M++)this.words[M]=h.words[M];return this},a.prototype.add=function(s){var u;return s.negative!==0&&this.negative===0?(s.negative=0,u=this.sub(s),s.negative^=1,u):s.negative===0&&this.negative!==0?(this.negative=0,u=s.sub(this),this.negative=1,u):this.length>s.length?this.clone().iadd(s):s.clone().iadd(this)},a.prototype.isub=function(s){if(s.negative!==0){s.negative=0;var u=this.iadd(s);return s.negative=1,u._normSign()}else if(this.negative!==0)return this.negative=0,this.iadd(s),this.negative=1,this._normSign();var h=this.cmp(s);if(h===0)return this.negative=0,this.length=1,this.words[0]=0,this;var _,w;h>0?(_=this,w=s):(_=s,w=this);for(var M=0,b=0;b<w.length;b++)u=(_.words[b]|0)-(w.words[b]|0)+M,M=u>>26,this.words[b]=u&67108863;for(;M!==0&&b<_.length;b++)u=(_.words[b]|0)+M,M=u>>26,this.words[b]=u&67108863;if(M===0&&b<_.length&&_!==this)for(;b<_.length;b++)this.words[b]=_.words[b];return this.length=Math.max(this.length,b),_!==this&&(this.negative=1),this._strip()},a.prototype.sub=function(s){return this.clone().isub(s)};function j(p,s,u){u.negative=s.negative^p.negative;var h=p.length+s.length|0;u.length=h,h=h-1|0;var _=p.words[0]|0,w=s.words[0]|0,M=_*w,b=M&67108863,m=M/67108864|0;u.words[0]=b;for(var c=1;c<h;c++){for(var k=m>>>26,Z=m&67108863,W=Math.min(c,s.length-1),Q=Math.max(0,c-p.length+1);Q<=W;Q++){var ie=c-Q|0;_=p.words[ie]|0,w=s.words[Q]|0,M=_*w+Z,k+=M/67108864|0,Z=M&67108863}u.words[c]=Z|0,m=k|0}return m!==0?u.words[c]=m|0:u.length--,u._strip()}var V=function(s,u,h){var _=s.words,w=u.words,M=h.words,b=0,m,c,k,Z=_[0]|0,W=Z&8191,Q=Z>>>13,ie=_[1]|0,T=ie&8191,P=ie>>>13,L=_[2]|0,q=L&8191,F=L>>>13,H=_[3]|0,$=H&8191,U=H>>>13,K=_[4]|0,G=K&8191,z=K>>>13,te=_[5]|0,re=te&8191,oe=te>>>13,_e=_[6]|0,ce=_e&8191,ge=_e>>>13,Ie=_[7]|0,de=Ie&8191,Ee=Ie>>>13,ht=_[8]|0,we=ht&8191,Ue=ht>>>13,st=_[9]|0,me=st&8191,Pe=st>>>13,rt=w[0]|0,he=rt&8191,Ge=rt>>>13,wt=w[1]|0,ve=wt&8191,ze=wt>>>13,vt=w[2]|0,ye=vt&8191,Ke=vt>>>13,yt=w[3]|0,be=yt&8191,Xe=yt>>>13,bt=w[4]|0,Me=bt&8191,Je=bt>>>13,Mt=w[5]|0,ke=Mt&8191,Qe=Mt>>>13,kt=w[6]|0,Ae=kt&8191,Ye=kt>>>13,At=w[7]|0,Se=At&8191,et=At>>>13,St=w[8]|0,Ce=St&8191,tt=St>>>13,Ct=w[9]|0,Te=Ct&8191,We=Ct>>>13;h.negative=s.negative^u.negative,h.length=19,m=Math.imul(W,he),c=Math.imul(W,Ge),c=c+Math.imul(Q,he)|0,k=Math.imul(Q,Ge);var mi=(b+m|0)+((c&8191)<<13)|0;b=(k+(c>>>13)|0)+(mi>>>26)|0,mi&=67108863,m=Math.imul(T,he),c=Math.imul(T,Ge),c=c+Math.imul(P,he)|0,k=Math.imul(P,Ge),m=m+Math.imul(W,ve)|0,c=c+Math.imul(W,ze)|0,c=c+Math.imul(Q,ve)|0,k=k+Math.imul(Q,ze)|0;var _i=(b+m|0)+((c&8191)<<13)|0;b=(k+(c>>>13)|0)+(_i>>>26)|0,_i&=67108863,m=Math.imul(q,he),c=Math.imul(q,Ge),c=c+Math.imul(F,he)|0,k=Math.imul(F,Ge),m=m+Math.imul(T,ve)|0,c=c+Math.imul(T,ze)|0,c=c+Math.imul(P,ve)|0,k=k+Math.imul(P,ze)|0,m=m+Math.imul(W,ye)|0,c=c+Math.imul(W,Ke)|0,c=c+Math.imul(Q,ye)|0,k=k+Math.imul(Q,Ke)|0;var gi=(b+m|0)+((c&8191)<<13)|0;b=(k+(c>>>13)|0)+(gi>>>26)|0,gi&=67108863,m=Math.imul($,he),c=Math.imul($,Ge),c=c+Math.imul(U,he)|0,k=Math.imul(U,Ge),m=m+Math.imul(q,ve)|0,c=c+Math.imul(q,ze)|0,c=c+Math.imul(F,ve)|0,k=k+Math.imul(F,ze)|0,m=m+Math.imul(T,ye)|0,c=c+Math.imul(T,Ke)|0,c=c+Math.imul(P,ye)|0,k=k+Math.imul(P,Ke)|0,m=m+Math.imul(W,be)|0,c=c+Math.imul(W,Xe)|0,c=c+Math.imul(Q,be)|0,k=k+Math.imul(Q,Xe)|0;var wi=(b+m|0)+((c&8191)<<13)|0;b=(k+(c>>>13)|0)+(wi>>>26)|0,wi&=67108863,m=Math.imul(G,he),c=Math.imul(G,Ge),c=c+Math.imul(z,he)|0,k=Math.imul(z,Ge),m=m+Math.imul($,ve)|0,c=c+Math.imul($,ze)|0,c=c+Math.imul(U,ve)|0,k=k+Math.imul(U,ze)|0,m=m+Math.imul(q,ye)|0,c=c+Math.imul(q,Ke)|0,c=c+Math.imul(F,ye)|0,k=k+Math.imul(F,Ke)|0,m=m+Math.imul(T,be)|0,c=c+Math.imul(T,Xe)|0,c=c+Math.imul(P,be)|0,k=k+Math.imul(P,Xe)|0,m=m+Math.imul(W,Me)|0,c=c+Math.imul(W,Je)|0,c=c+Math.imul(Q,Me)|0,k=k+Math.imul(Q,Je)|0;var vi=(b+m|0)+((c&8191)<<13)|0;b=(k+(c>>>13)|0)+(vi>>>26)|0,vi&=67108863,m=Math.imul(re,he),c=Math.imul(re,Ge),c=c+Math.imul(oe,he)|0,k=Math.imul(oe,Ge),m=m+Math.imul(G,ve)|0,c=c+Math.imul(G,ze)|0,c=c+Math.imul(z,ve)|0,k=k+Math.imul(z,ze)|0,m=m+Math.imul($,ye)|0,c=c+Math.imul($,Ke)|0,c=c+Math.imul(U,ye)|0,k=k+Math.imul(U,Ke)|0,m=m+Math.imul(q,be)|0,c=c+Math.imul(q,Xe)|0,c=c+Math.imul(F,be)|0,k=k+Math.imul(F,Xe)|0,m=m+Math.imul(T,Me)|0,c=c+Math.imul(T,Je)|0,c=c+Math.imul(P,Me)|0,k=k+Math.imul(P,Je)|0,m=m+Math.imul(W,ke)|0,c=c+Math.imul(W,Qe)|0,c=c+Math.imul(Q,ke)|0,k=k+Math.imul(Q,Qe)|0;var yi=(b+m|0)+((c&8191)<<13)|0;b=(k+(c>>>13)|0)+(yi>>>26)|0,yi&=67108863,m=Math.imul(ce,he),c=Math.imul(ce,Ge),c=c+Math.imul(ge,he)|0,k=Math.imul(ge,Ge),m=m+Math.imul(re,ve)|0,c=c+Math.imul(re,ze)|0,c=c+Math.imul(oe,ve)|0,k=k+Math.imul(oe,ze)|0,m=m+Math.imul(G,ye)|0,c=c+Math.imul(G,Ke)|0,c=c+Math.imul(z,ye)|0,k=k+Math.imul(z,Ke)|0,m=m+Math.imul($,be)|0,c=c+Math.imul($,Xe)|0,c=c+Math.imul(U,be)|0,k=k+Math.imul(U,Xe)|0,m=m+Math.imul(q,Me)|0,c=c+Math.imul(q,Je)|0,c=c+Math.imul(F,Me)|0,k=k+Math.imul(F,Je)|0,m=m+Math.imul(T,ke)|0,c=c+Math.imul(T,Qe)|0,c=c+Math.imul(P,ke)|0,k=k+Math.imul(P,Qe)|0,m=m+Math.imul(W,Ae)|0,c=c+Math.imul(W,Ye)|0,c=c+Math.imul(Q,Ae)|0,k=k+Math.imul(Q,Ye)|0;var bi=(b+m|0)+((c&8191)<<13)|0;b=(k+(c>>>13)|0)+(bi>>>26)|0,bi&=67108863,m=Math.imul(de,he),c=Math.imul(de,Ge),c=c+Math.imul(Ee,he)|0,k=Math.imul(Ee,Ge),m=m+Math.imul(ce,ve)|0,c=c+Math.imul(ce,ze)|0,c=c+Math.imul(ge,ve)|0,k=k+Math.imul(ge,ze)|0,m=m+Math.imul(re,ye)|0,c=c+Math.imul(re,Ke)|0,c=c+Math.imul(oe,ye)|0,k=k+Math.imul(oe,Ke)|0,m=m+Math.imul(G,be)|0,c=c+Math.imul(G,Xe)|0,c=c+Math.imul(z,be)|0,k=k+Math.imul(z,Xe)|0,m=m+Math.imul($,Me)|0,c=c+Math.imul($,Je)|0,c=c+Math.imul(U,Me)|0,k=k+Math.imul(U,Je)|0,m=m+Math.imul(q,ke)|0,c=c+Math.imul(q,Qe)|0,c=c+Math.imul(F,ke)|0,k=k+Math.imul(F,Qe)|0,m=m+Math.imul(T,Ae)|0,c=c+Math.imul(T,Ye)|0,c=c+Math.imul(P,Ae)|0,k=k+Math.imul(P,Ye)|0,m=m+Math.imul(W,Se)|0,c=c+Math.imul(W,et)|0,c=c+Math.imul(Q,Se)|0,k=k+Math.imul(Q,et)|0;var Mi=(b+m|0)+((c&8191)<<13)|0;b=(k+(c>>>13)|0)+(Mi>>>26)|0,Mi&=67108863,m=Math.imul(we,he),c=Math.imul(we,Ge),c=c+Math.imul(Ue,he)|0,k=Math.imul(Ue,Ge),m=m+Math.imul(de,ve)|0,c=c+Math.imul(de,ze)|0,c=c+Math.imul(Ee,ve)|0,k=k+Math.imul(Ee,ze)|0,m=m+Math.imul(ce,ye)|0,c=c+Math.imul(ce,Ke)|0,c=c+Math.imul(ge,ye)|0,k=k+Math.imul(ge,Ke)|0,m=m+Math.imul(re,be)|0,c=c+Math.imul(re,Xe)|0,c=c+Math.imul(oe,be)|0,k=k+Math.imul(oe,Xe)|0,m=m+Math.imul(G,Me)|0,c=c+Math.imul(G,Je)|0,c=c+Math.imul(z,Me)|0,k=k+Math.imul(z,Je)|0,m=m+Math.imul($,ke)|0,c=c+Math.imul($,Qe)|0,c=c+Math.imul(U,ke)|0,k=k+Math.imul(U,Qe)|0,m=m+Math.imul(q,Ae)|0,c=c+Math.imul(q,Ye)|0,c=c+Math.imul(F,Ae)|0,k=k+Math.imul(F,Ye)|0,m=m+Math.imul(T,Se)|0,c=c+Math.imul(T,et)|0,c=c+Math.imul(P,Se)|0,k=k+Math.imul(P,et)|0,m=m+Math.imul(W,Ce)|0,c=c+Math.imul(W,tt)|0,c=c+Math.imul(Q,Ce)|0,k=k+Math.imul(Q,tt)|0;var ki=(b+m|0)+((c&8191)<<13)|0;b=(k+(c>>>13)|0)+(ki>>>26)|0,ki&=67108863,m=Math.imul(me,he),c=Math.imul(me,Ge),c=c+Math.imul(Pe,he)|0,k=Math.imul(Pe,Ge),m=m+Math.imul(we,ve)|0,c=c+Math.imul(we,ze)|0,c=c+Math.imul(Ue,ve)|0,k=k+Math.imul(Ue,ze)|0,m=m+Math.imul(de,ye)|0,c=c+Math.imul(de,Ke)|0,c=c+Math.imul(Ee,ye)|0,k=k+Math.imul(Ee,Ke)|0,m=m+Math.imul(ce,be)|0,c=c+Math.imul(ce,Xe)|0,c=c+Math.imul(ge,be)|0,k=k+Math.imul(ge,Xe)|0,m=m+Math.imul(re,Me)|0,c=c+Math.imul(re,Je)|0,c=c+Math.imul(oe,Me)|0,k=k+Math.imul(oe,Je)|0,m=m+Math.imul(G,ke)|0,c=c+Math.imul(G,Qe)|0,c=c+Math.imul(z,ke)|0,k=k+Math.imul(z,Qe)|0,m=m+Math.imul($,Ae)|0,c=c+Math.imul($,Ye)|0,c=c+Math.imul(U,Ae)|0,k=k+Math.imul(U,Ye)|0,m=m+Math.imul(q,Se)|0,c=c+Math.imul(q,et)|0,c=c+Math.imul(F,Se)|0,k=k+Math.imul(F,et)|0,m=m+Math.imul(T,Ce)|0,c=c+Math.imul(T,tt)|0,c=c+Math.imul(P,Ce)|0,k=k+Math.imul(P,tt)|0,m=m+Math.imul(W,Te)|0,c=c+Math.imul(W,We)|0,c=c+Math.imul(Q,Te)|0,k=k+Math.imul(Q,We)|0;var Ai=(b+m|0)+((c&8191)<<13)|0;b=(k+(c>>>13)|0)+(Ai>>>26)|0,Ai&=67108863,m=Math.imul(me,ve),c=Math.imul(me,ze),c=c+Math.imul(Pe,ve)|0,k=Math.imul(Pe,ze),m=m+Math.imul(we,ye)|0,c=c+Math.imul(we,Ke)|0,c=c+Math.imul(Ue,ye)|0,k=k+Math.imul(Ue,Ke)|0,m=m+Math.imul(de,be)|0,c=c+Math.imul(de,Xe)|0,c=c+Math.imul(Ee,be)|0,k=k+Math.imul(Ee,Xe)|0,m=m+Math.imul(ce,Me)|0,c=c+Math.imul(ce,Je)|0,c=c+Math.imul(ge,Me)|0,k=k+Math.imul(ge,Je)|0,m=m+Math.imul(re,ke)|0,c=c+Math.imul(re,Qe)|0,c=c+Math.imul(oe,ke)|0,k=k+Math.imul(oe,Qe)|0,m=m+Math.imul(G,Ae)|0,c=c+Math.imul(G,Ye)|0,c=c+Math.imul(z,Ae)|0,k=k+Math.imul(z,Ye)|0,m=m+Math.imul($,Se)|0,c=c+Math.imul($,et)|0,c=c+Math.imul(U,Se)|0,k=k+Math.imul(U,et)|0,m=m+Math.imul(q,Ce)|0,c=c+Math.imul(q,tt)|0,c=c+Math.imul(F,Ce)|0,k=k+Math.imul(F,tt)|0,m=m+Math.imul(T,Te)|0,c=c+Math.imul(T,We)|0,c=c+Math.imul(P,Te)|0,k=k+Math.imul(P,We)|0;var Si=(b+m|0)+((c&8191)<<13)|0;b=(k+(c>>>13)|0)+(Si>>>26)|0,Si&=67108863,m=Math.imul(me,ye),c=Math.imul(me,Ke),c=c+Math.imul(Pe,ye)|0,k=Math.imul(Pe,Ke),m=m+Math.imul(we,be)|0,c=c+Math.imul(we,Xe)|0,c=c+Math.imul(Ue,be)|0,k=k+Math.imul(Ue,Xe)|0,m=m+Math.imul(de,Me)|0,c=c+Math.imul(de,Je)|0,c=c+Math.imul(Ee,Me)|0,k=k+Math.imul(Ee,Je)|0,m=m+Math.imul(ce,ke)|0,c=c+Math.imul(ce,Qe)|0,c=c+Math.imul(ge,ke)|0,k=k+Math.imul(ge,Qe)|0,m=m+Math.imul(re,Ae)|0,c=c+Math.imul(re,Ye)|0,c=c+Math.imul(oe,Ae)|0,k=k+Math.imul(oe,Ye)|0,m=m+Math.imul(G,Se)|0,c=c+Math.imul(G,et)|0,c=c+Math.imul(z,Se)|0,k=k+Math.imul(z,et)|0,m=m+Math.imul($,Ce)|0,c=c+Math.imul($,tt)|0,c=c+Math.imul(U,Ce)|0,k=k+Math.imul(U,tt)|0,m=m+Math.imul(q,Te)|0,c=c+Math.imul(q,We)|0,c=c+Math.imul(F,Te)|0,k=k+Math.imul(F,We)|0;var Ci=(b+m|0)+((c&8191)<<13)|0;b=(k+(c>>>13)|0)+(Ci>>>26)|0,Ci&=67108863,m=Math.imul(me,be),c=Math.imul(me,Xe),c=c+Math.imul(Pe,be)|0,k=Math.imul(Pe,Xe),m=m+Math.imul(we,Me)|0,c=c+Math.imul(we,Je)|0,c=c+Math.imul(Ue,Me)|0,k=k+Math.imul(Ue,Je)|0,m=m+Math.imul(de,ke)|0,c=c+Math.imul(de,Qe)|0,c=c+Math.imul(Ee,ke)|0,k=k+Math.imul(Ee,Qe)|0,m=m+Math.imul(ce,Ae)|0,c=c+Math.imul(ce,Ye)|0,c=c+Math.imul(ge,Ae)|0,k=k+Math.imul(ge,Ye)|0,m=m+Math.imul(re,Se)|0,c=c+Math.imul(re,et)|0,c=c+Math.imul(oe,Se)|0,k=k+Math.imul(oe,et)|0,m=m+Math.imul(G,Ce)|0,c=c+Math.imul(G,tt)|0,c=c+Math.imul(z,Ce)|0,k=k+Math.imul(z,tt)|0,m=m+Math.imul($,Te)|0,c=c+Math.imul($,We)|0,c=c+Math.imul(U,Te)|0,k=k+Math.imul(U,We)|0;var Ti=(b+m|0)+((c&8191)<<13)|0;b=(k+(c>>>13)|0)+(Ti>>>26)|0,Ti&=67108863,m=Math.imul(me,Me),c=Math.imul(me,Je),c=c+Math.imul(Pe,Me)|0,k=Math.imul(Pe,Je),m=m+Math.imul(we,ke)|0,c=c+Math.imul(we,Qe)|0,c=c+Math.imul(Ue,ke)|0,k=k+Math.imul(Ue,Qe)|0,m=m+Math.imul(de,Ae)|0,c=c+Math.imul(de,Ye)|0,c=c+Math.imul(Ee,Ae)|0,k=k+Math.imul(Ee,Ye)|0,m=m+Math.imul(ce,Se)|0,c=c+Math.imul(ce,et)|0,c=c+Math.imul(ge,Se)|0,k=k+Math.imul(ge,et)|0,m=m+Math.imul(re,Ce)|0,c=c+Math.imul(re,tt)|0,c=c+Math.imul(oe,Ce)|0,k=k+Math.imul(oe,tt)|0,m=m+Math.imul(G,Te)|0,c=c+Math.imul(G,We)|0,c=c+Math.imul(z,Te)|0,k=k+Math.imul(z,We)|0;var Ei=(b+m|0)+((c&8191)<<13)|0;b=(k+(c>>>13)|0)+(Ei>>>26)|0,Ei&=67108863,m=Math.imul(me,ke),c=Math.imul(me,Qe),c=c+Math.imul(Pe,ke)|0,k=Math.imul(Pe,Qe),m=m+Math.imul(we,Ae)|0,c=c+Math.imul(we,Ye)|0,c=c+Math.imul(Ue,Ae)|0,k=k+Math.imul(Ue,Ye)|0,m=m+Math.imul(de,Se)|0,c=c+Math.imul(de,et)|0,c=c+Math.imul(Ee,Se)|0,k=k+Math.imul(Ee,et)|0,m=m+Math.imul(ce,Ce)|0,c=c+Math.imul(ce,tt)|0,c=c+Math.imul(ge,Ce)|0,k=k+Math.imul(ge,tt)|0,m=m+Math.imul(re,Te)|0,c=c+Math.imul(re,We)|0,c=c+Math.imul(oe,Te)|0,k=k+Math.imul(oe,We)|0;var xi=(b+m|0)+((c&8191)<<13)|0;b=(k+(c>>>13)|0)+(xi>>>26)|0,xi&=67108863,m=Math.imul(me,Ae),c=Math.imul(me,Ye),c=c+Math.imul(Pe,Ae)|0,k=Math.imul(Pe,Ye),m=m+Math.imul(we,Se)|0,c=c+Math.imul(we,et)|0,c=c+Math.imul(Ue,Se)|0,k=k+Math.imul(Ue,et)|0,m=m+Math.imul(de,Ce)|0,c=c+Math.imul(de,tt)|0,c=c+Math.imul(Ee,Ce)|0,k=k+Math.imul(Ee,tt)|0,m=m+Math.imul(ce,Te)|0,c=c+Math.imul(ce,We)|0,c=c+Math.imul(ge,Te)|0,k=k+Math.imul(ge,We)|0;var Ii=(b+m|0)+((c&8191)<<13)|0;b=(k+(c>>>13)|0)+(Ii>>>26)|0,Ii&=67108863,m=Math.imul(me,Se),c=Math.imul(me,et),c=c+Math.imul(Pe,Se)|0,k=Math.imul(Pe,et),m=m+Math.imul(we,Ce)|0,c=c+Math.imul(we,tt)|0,c=c+Math.imul(Ue,Ce)|0,k=k+Math.imul(Ue,tt)|0,m=m+Math.imul(de,Te)|0,c=c+Math.imul(de,We)|0,c=c+Math.imul(Ee,Te)|0,k=k+Math.imul(Ee,We)|0;var Pi=(b+m|0)+((c&8191)<<13)|0;b=(k+(c>>>13)|0)+(Pi>>>26)|0,Pi&=67108863,m=Math.imul(me,Ce),c=Math.imul(me,tt),c=c+Math.imul(Pe,Ce)|0,k=Math.imul(Pe,tt),m=m+Math.imul(we,Te)|0,c=c+Math.imul(we,We)|0,c=c+Math.imul(Ue,Te)|0,k=k+Math.imul(Ue,We)|0;var Oi=(b+m|0)+((c&8191)<<13)|0;b=(k+(c>>>13)|0)+(Oi>>>26)|0,Oi&=67108863,m=Math.imul(me,Te),c=Math.imul(me,We),c=c+Math.imul(Pe,Te)|0,k=Math.imul(Pe,We);var qr=(b+m|0)+((c&8191)<<13)|0;return b=(k+(c>>>13)|0)+(qr>>>26)|0,qr&=67108863,M[0]=mi,M[1]=_i,M[2]=gi,M[3]=wi,M[4]=vi,M[5]=yi,M[6]=bi,M[7]=Mi,M[8]=ki,M[9]=Ai,M[10]=Si,M[11]=Ci,M[12]=Ti,M[13]=Ei,M[14]=xi,M[15]=Ii,M[16]=Pi,M[17]=Oi,M[18]=qr,b!==0&&(M[19]=b,h.length++),h};Math.imul||(V=j);function J(p,s,u){u.negative=s.negative^p.negative,u.length=p.length+s.length;for(var h=0,_=0,w=0;w<u.length-1;w++){var M=_;_=0;for(var b=h&67108863,m=Math.min(w,s.length-1),c=Math.max(0,w-p.length+1);c<=m;c++){var k=w-c,Z=p.words[k]|0,W=s.words[c]|0,Q=Z*W,ie=Q&67108863;M=M+(Q/67108864|0)|0,ie=ie+b|0,b=ie&67108863,M=M+(ie>>>26)|0,_+=M>>>26,M&=67108863}u.words[w]=b,h=M,M=_}return h!==0?u.words[w]=h:u.length--,u._strip()}function Y(p,s,u){return J(p,s,u)}a.prototype.mulTo=function(s,u){var h,_=this.length+s.length;return this.length===10&&s.length===10?h=V(this,s,u):_<63?h=j(this,s,u):_<1024?h=J(this,s,u):h=Y(this,s,u),h},a.prototype.mul=function(s){var u=new a(null);return u.words=new Array(this.length+s.length),this.mulTo(s,u)},a.prototype.mulf=function(s){var u=new a(null);return u.words=new Array(this.length+s.length),Y(this,s,u)},a.prototype.imul=function(s){return this.clone().mulTo(s,this)},a.prototype.imuln=function(s){var u=s<0;u&&(s=-s),n(typeof s=="number"),n(s<67108864);for(var h=0,_=0;_<this.length;_++){var w=(this.words[_]|0)*s,M=(w&67108863)+(h&67108863);h>>=26,h+=w/67108864|0,h+=M>>>26,this.words[_]=M&67108863}return h!==0&&(this.words[_]=h,this.length++),this.length=s===0?1:this.length,u?this.ineg():this},a.prototype.muln=function(s){return this.clone().imuln(s)},a.prototype.sqr=function(){return this.mul(this)},a.prototype.isqr=function(){return this.imul(this.clone())},a.prototype.pow=function(s){var u=R(s);if(u.length===0)return new a(1);for(var h=this,_=0;_<u.length&&u[_]===0;_++,h=h.sqr());if(++_<u.length)for(var w=h.sqr();_<u.length;_++,w=w.sqr())u[_]!==0&&(h=h.mul(w));return h},a.prototype.iushln=function(s){n(typeof s=="number"&&s>=0);var u=s%26,h=(s-u)/26,_=67108863>>>26-u<<26-u,w;if(u!==0){var M=0;for(w=0;w<this.length;w++){var b=this.words[w]&_,m=(this.words[w]|0)-b<<u;this.words[w]=m|M,M=b>>>26-u}M&&(this.words[w]=M,this.length++)}if(h!==0){for(w=this.length-1;w>=0;w--)this.words[w+h]=this.words[w];for(w=0;w<h;w++)this.words[w]=0;this.length+=h}return this._strip()},a.prototype.ishln=function(s){return n(this.negative===0),this.iushln(s)},a.prototype.iushrn=function(s,u,h){n(typeof s=="number"&&s>=0);var _;u?_=(u-u%26)/26:_=0;var w=s%26,M=Math.min((s-w)/26,this.length),b=67108863^67108863>>>w<<w,m=h;if(_-=M,_=Math.max(0,_),m){for(var c=0;c<M;c++)m.words[c]=this.words[c];m.length=M}if(M!==0)if(this.length>M)for(this.length-=M,c=0;c<this.length;c++)this.words[c]=this.words[c+M];else this.words[0]=0,this.length=1;var k=0;for(c=this.length-1;c>=0&&(k!==0||c>=_);c--){var Z=this.words[c]|0;this.words[c]=k<<26-w|Z>>>w,k=Z&b}return m&&k!==0&&(m.words[m.length++]=k),this.length===0&&(this.words[0]=0,this.length=1),this._strip()},a.prototype.ishrn=function(s,u,h){return n(this.negative===0),this.iushrn(s,u,h)},a.prototype.shln=function(s){return this.clone().ishln(s)},a.prototype.ushln=function(s){return this.clone().iushln(s)},a.prototype.shrn=function(s){return this.clone().ishrn(s)},a.prototype.ushrn=function(s){return this.clone().iushrn(s)},a.prototype.testn=function(s){n(typeof s=="number"&&s>=0);var u=s%26,h=(s-u)/26,_=1<<u;if(this.length<=h)return!1;var w=this.words[h];return!!(w&_)},a.prototype.imaskn=function(s){n(typeof s=="number"&&s>=0);var u=s%26,h=(s-u)/26;if(n(this.negative===0,"imaskn works only with positive numbers"),this.length<=h)return this;if(u!==0&&h++,this.length=Math.min(h,this.length),u!==0){var _=67108863^67108863>>>u<<u;this.words[this.length-1]&=_}return this._strip()},a.prototype.maskn=function(s){return this.clone().imaskn(s)},a.prototype.iaddn=function(s){return n(typeof s=="number"),n(s<67108864),s<0?this.isubn(-s):this.negative!==0?this.length===1&&(this.words[0]|0)<=s?(this.words[0]=s-(this.words[0]|0),this.negative=0,this):(this.negative=0,this.isubn(s),this.negative=1,this):this._iaddn(s)},a.prototype._iaddn=function(s){this.words[0]+=s;for(var u=0;u<this.length&&this.words[u]>=67108864;u++)this.words[u]-=67108864,u===this.length-1?this.words[u+1]=1:this.words[u+1]++;return this.length=Math.max(this.length,u+1),this},a.prototype.isubn=function(s){if(n(typeof s=="number"),n(s<67108864),s<0)return this.iaddn(-s);if(this.negative!==0)return this.negative=0,this.iaddn(s),this.negative=1,this;if(this.words[0]-=s,this.length===1&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var u=0;u<this.length&&this.words[u]<0;u++)this.words[u]+=67108864,this.words[u+1]-=1;return this._strip()},a.prototype.addn=function(s){return this.clone().iaddn(s)},a.prototype.subn=function(s){return this.clone().isubn(s)},a.prototype.iabs=function(){return this.negative=0,this},a.prototype.abs=function(){return this.clone().iabs()},a.prototype._ishlnsubmul=function(s,u,h){var _=s.length+h,w;this._expand(_);var M,b=0;for(w=0;w<s.length;w++){M=(this.words[w+h]|0)+b;var m=(s.words[w]|0)*u;M-=m&67108863,b=(M>>26)-(m/67108864|0),this.words[w+h]=M&67108863}for(;w<this.length-h;w++)M=(this.words[w+h]|0)+b,b=M>>26,this.words[w+h]=M&67108863;if(b===0)return this._strip();for(n(b===-1),b=0,w=0;w<this.length;w++)M=-(this.words[w]|0)+b,b=M>>26,this.words[w]=M&67108863;return this.negative=1,this._strip()},a.prototype._wordDiv=function(s,u){var h=this.length-s.length,_=this.clone(),w=s,M=w.words[w.length-1]|0,b=this._countBits(M);h=26-b,h!==0&&(w=w.ushln(h),_.iushln(h),M=w.words[w.length-1]|0);var m=_.length-w.length,c;if(u!=="mod"){c=new a(null),c.length=m+1,c.words=new Array(c.length);for(var k=0;k<c.length;k++)c.words[k]=0}var Z=_.clone()._ishlnsubmul(w,1,m);Z.negative===0&&(_=Z,c&&(c.words[m]=1));for(var W=m-1;W>=0;W--){var Q=(_.words[w.length+W]|0)*67108864+(_.words[w.length+W-1]|0);for(Q=Math.min(Q/M|0,67108863),_._ishlnsubmul(w,Q,W);_.negative!==0;)Q--,_.negative=0,_._ishlnsubmul(w,1,W),_.isZero()||(_.negative^=1);c&&(c.words[W]=Q)}return c&&c._strip(),_._strip(),u!=="div"&&h!==0&&_.iushrn(h),{div:c||null,mod:_}},a.prototype.divmod=function(s,u,h){if(n(!s.isZero()),this.isZero())return{div:new a(0),mod:new a(0)};var _,w,M;return this.negative!==0&&s.negative===0?(M=this.neg().divmod(s,u),u!=="mod"&&(_=M.div.neg()),u!=="div"&&(w=M.mod.neg(),h&&w.negative!==0&&w.iadd(s)),{div:_,mod:w}):this.negative===0&&s.negative!==0?(M=this.divmod(s.neg(),u),u!=="mod"&&(_=M.div.neg()),{div:_,mod:M.mod}):(this.negative&s.negative)!==0?(M=this.neg().divmod(s.neg(),u),u!=="div"&&(w=M.mod.neg(),h&&w.negative!==0&&w.isub(s)),{div:M.div,mod:w}):s.length>this.length||this.cmp(s)<0?{div:new a(0),mod:this}:s.length===1?u==="div"?{div:this.divn(s.words[0]),mod:null}:u==="mod"?{div:null,mod:new a(this.modrn(s.words[0]))}:{div:this.divn(s.words[0]),mod:new a(this.modrn(s.words[0]))}:this._wordDiv(s,u)},a.prototype.div=function(s){return this.divmod(s,"div",!1).div},a.prototype.mod=function(s){return this.divmod(s,"mod",!1).mod},a.prototype.umod=function(s){return this.divmod(s,"mod",!0).mod},a.prototype.divRound=function(s){var u=this.divmod(s);if(u.mod.isZero())return u.div;var h=u.div.negative!==0?u.mod.isub(s):u.mod,_=s.ushrn(1),w=s.andln(1),M=h.cmp(_);return M<0||w===1&&M===0?u.div:u.div.negative!==0?u.div.isubn(1):u.div.iaddn(1)},a.prototype.modrn=function(s){var u=s<0;u&&(s=-s),n(s<=67108863);for(var h=(1<<26)%s,_=0,w=this.length-1;w>=0;w--)_=(h*_+(this.words[w]|0))%s;return u?-_:_},a.prototype.modn=function(s){return this.modrn(s)},a.prototype.idivn=function(s){var u=s<0;u&&(s=-s),n(s<=67108863);for(var h=0,_=this.length-1;_>=0;_--){var w=(this.words[_]|0)+h*67108864;this.words[_]=w/s|0,h=w%s}return this._strip(),u?this.ineg():this},a.prototype.divn=function(s){return this.clone().idivn(s)},a.prototype.egcd=function(s){n(s.negative===0),n(!s.isZero());var u=this,h=s.clone();u.negative!==0?u=u.umod(s):u=u.clone();for(var _=new a(1),w=new a(0),M=new a(0),b=new a(1),m=0;u.isEven()&&h.isEven();)u.iushrn(1),h.iushrn(1),++m;for(var c=h.clone(),k=u.clone();!u.isZero();){for(var Z=0,W=1;(u.words[0]&W)===0&&Z<26;++Z,W<<=1);if(Z>0)for(u.iushrn(Z);Z-- >0;)(_.isOdd()||w.isOdd())&&(_.iadd(c),w.isub(k)),_.iushrn(1),w.iushrn(1);for(var Q=0,ie=1;(h.words[0]&ie)===0&&Q<26;++Q,ie<<=1);if(Q>0)for(h.iushrn(Q);Q-- >0;)(M.isOdd()||b.isOdd())&&(M.iadd(c),b.isub(k)),M.iushrn(1),b.iushrn(1);u.cmp(h)>=0?(u.isub(h),_.isub(M),w.isub(b)):(h.isub(u),M.isub(_),b.isub(w))}return{a:M,b,gcd:h.iushln(m)}},a.prototype._invmp=function(s){n(s.negative===0),n(!s.isZero());var u=this,h=s.clone();u.negative!==0?u=u.umod(s):u=u.clone();for(var _=new a(1),w=new a(0),M=h.clone();u.cmpn(1)>0&&h.cmpn(1)>0;){for(var b=0,m=1;(u.words[0]&m)===0&&b<26;++b,m<<=1);if(b>0)for(u.iushrn(b);b-- >0;)_.isOdd()&&_.iadd(M),_.iushrn(1);for(var c=0,k=1;(h.words[0]&k)===0&&c<26;++c,k<<=1);if(c>0)for(h.iushrn(c);c-- >0;)w.isOdd()&&w.iadd(M),w.iushrn(1);u.cmp(h)>=0?(u.isub(h),_.isub(w)):(h.isub(u),w.isub(_))}var Z;return u.cmpn(1)===0?Z=_:Z=w,Z.cmpn(0)<0&&Z.iadd(s),Z},a.prototype.gcd=function(s){if(this.isZero())return s.abs();if(s.isZero())return this.abs();var u=this.clone(),h=s.clone();u.negative=0,h.negative=0;for(var _=0;u.isEven()&&h.isEven();_++)u.iushrn(1),h.iushrn(1);do{for(;u.isEven();)u.iushrn(1);for(;h.isEven();)h.iushrn(1);var w=u.cmp(h);if(w<0){var M=u;u=h,h=M}else if(w===0||h.cmpn(1)===0)break;u.isub(h)}while(!0);return h.iushln(_)},a.prototype.invm=function(s){return this.egcd(s).a.umod(s)},a.prototype.isEven=function(){return(this.words[0]&1)===0},a.prototype.isOdd=function(){return(this.words[0]&1)===1},a.prototype.andln=function(s){return this.words[0]&s},a.prototype.bincn=function(s){n(typeof s=="number");var u=s%26,h=(s-u)/26,_=1<<u;if(this.length<=h)return this._expand(h+1),this.words[h]|=_,this;for(var w=_,M=h;w!==0&&M<this.length;M++){var b=this.words[M]|0;b+=w,w=b>>>26,b&=67108863,this.words[M]=b}return w!==0&&(this.words[M]=w,this.length++),this},a.prototype.isZero=function(){return this.length===1&&this.words[0]===0},a.prototype.cmpn=function(s){var u=s<0;if(this.negative!==0&&!u)return-1;if(this.negative===0&&u)return 1;this._strip();var h;if(this.length>1)h=1;else{u&&(s=-s),n(s<=67108863,"Number is too big");var _=this.words[0]|0;h=_===s?0:_<s?-1:1}return this.negative!==0?-h|0:h},a.prototype.cmp=function(s){if(this.negative!==0&&s.negative===0)return-1;if(this.negative===0&&s.negative!==0)return 1;var u=this.ucmp(s);return this.negative!==0?-u|0:u},a.prototype.ucmp=function(s){if(this.length>s.length)return 1;if(this.length<s.length)return-1;for(var u=0,h=this.length-1;h>=0;h--){var _=this.words[h]|0,w=s.words[h]|0;if(_!==w){_<w?u=-1:_>w&&(u=1);break}}return u},a.prototype.gtn=function(s){return this.cmpn(s)===1},a.prototype.gt=function(s){return this.cmp(s)===1},a.prototype.gten=function(s){return this.cmpn(s)>=0},a.prototype.gte=function(s){return this.cmp(s)>=0},a.prototype.ltn=function(s){return this.cmpn(s)===-1},a.prototype.lt=function(s){return this.cmp(s)===-1},a.prototype.lten=function(s){return this.cmpn(s)<=0},a.prototype.lte=function(s){return this.cmp(s)<=0},a.prototype.eqn=function(s){return this.cmpn(s)===0},a.prototype.eq=function(s){return this.cmp(s)===0},a.red=function(s){return new O(s)},a.prototype.toRed=function(s){return n(!this.red,"Already a number in reduction context"),n(this.negative===0,"red works only with positives"),s.convertTo(this)._forceRed(s)},a.prototype.fromRed=function(){return n(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},a.prototype._forceRed=function(s){return this.red=s,this},a.prototype.forceRed=function(s){return n(!this.red,"Already a number in reduction context"),this._forceRed(s)},a.prototype.redAdd=function(s){return n(this.red,"redAdd works only with red numbers"),this.red.add(this,s)},a.prototype.redIAdd=function(s){return n(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,s)},a.prototype.redSub=function(s){return n(this.red,"redSub works only with red numbers"),this.red.sub(this,s)},a.prototype.redISub=function(s){return n(this.red,"redISub works only with red numbers"),this.red.isub(this,s)},a.prototype.redShl=function(s){return n(this.red,"redShl works only with red numbers"),this.red.shl(this,s)},a.prototype.redMul=function(s){return n(this.red,"redMul works only with red numbers"),this.red._verify2(this,s),this.red.mul(this,s)},a.prototype.redIMul=function(s){return n(this.red,"redMul works only with red numbers"),this.red._verify2(this,s),this.red.imul(this,s)},a.prototype.redSqr=function(){return n(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},a.prototype.redISqr=function(){return n(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},a.prototype.redSqrt=function(){return n(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},a.prototype.redInvm=function(){return n(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},a.prototype.redNeg=function(){return n(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},a.prototype.redPow=function(s){return n(this.red&&!s.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,s)};var X={k256:null,p224:null,p192:null,p25519:null};function ee(p,s){this.name=p,this.p=new a(s,16),this.n=this.p.bitLength(),this.k=new a(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}ee.prototype._tmp=function(){var s=new a(null);return s.words=new Array(Math.ceil(this.n/13)),s},ee.prototype.ireduce=function(s){var u=s,h;do this.split(u,this.tmp),u=this.imulK(u),u=u.iadd(this.tmp),h=u.bitLength();while(h>this.n);var _=h<this.n?-1:u.ucmp(this.p);return _===0?(u.words[0]=0,u.length=1):_>0?u.isub(this.p):u.strip!==void 0?u.strip():u._strip(),u},ee.prototype.split=function(s,u){s.iushrn(this.n,0,u)},ee.prototype.imulK=function(s){return s.imul(this.k)};function C(){ee.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}o(C,ee),C.prototype.split=function(s,u){for(var h=4194303,_=Math.min(s.length,9),w=0;w<_;w++)u.words[w]=s.words[w];if(u.length=_,s.length<=9){s.words[0]=0,s.length=1;return}var M=s.words[9];for(u.words[u.length++]=M&h,w=10;w<s.length;w++){var b=s.words[w]|0;s.words[w-10]=(b&h)<<4|M>>>22,M=b}M>>>=22,s.words[w-10]=M,M===0&&s.length>10?s.length-=10:s.length-=9},C.prototype.imulK=function(s){s.words[s.length]=0,s.words[s.length+1]=0,s.length+=2;for(var u=0,h=0;h<s.length;h++){var _=s.words[h]|0;u+=_*977,s.words[h]=u&67108863,u=_*64+(u/67108864|0)}return s.words[s.length-1]===0&&(s.length--,s.words[s.length-1]===0&&s.length--),s};function E(){ee.call(this,"p224","ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001")}o(E,ee);function N(){ee.call(this,"p192","ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff")}o(N,ee);function D(){ee.call(this,"25519","7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed")}o(D,ee),D.prototype.imulK=function(s){for(var u=0,h=0;h<s.length;h++){var _=(s.words[h]|0)*19+u,w=_&67108863;_>>>=26,s.words[h]=w,u=_}return u!==0&&(s.words[s.length++]=u),s},a._prime=function(s){if(X[s])return X[s];var u;if(s==="k256")u=new C;else if(s==="p224")u=new E;else if(s==="p192")u=new N;else if(s==="p25519")u=new D;else throw new Error("Unknown prime "+s);return X[s]=u,u};function O(p){if(typeof p=="string"){var s=a._prime(p);this.m=s.p,this.prime=s}else n(p.gtn(1),"modulus must be greater than 1"),this.m=p,this.prime=null}O.prototype._verify1=function(s){n(s.negative===0,"red works only with positives"),n(s.red,"red works only with red numbers")},O.prototype._verify2=function(s,u){n((s.negative|u.negative)===0,"red works only with positives"),n(s.red&&s.red===u.red,"red works only with red numbers")},O.prototype.imod=function(s){return this.prime?this.prime.ireduce(s)._forceRed(this):(v(s,s.umod(this.m)._forceRed(this)),s)},O.prototype.neg=function(s){return s.isZero()?s.clone():this.m.sub(s)._forceRed(this)},O.prototype.add=function(s,u){this._verify2(s,u);var h=s.add(u);return h.cmp(this.m)>=0&&h.isub(this.m),h._forceRed(this)},O.prototype.iadd=function(s,u){this._verify2(s,u);var h=s.iadd(u);return h.cmp(this.m)>=0&&h.isub(this.m),h},O.prototype.sub=function(s,u){this._verify2(s,u);var h=s.sub(u);return h.cmpn(0)<0&&h.iadd(this.m),h._forceRed(this)},O.prototype.isub=function(s,u){this._verify2(s,u);var h=s.isub(u);return h.cmpn(0)<0&&h.iadd(this.m),h},O.prototype.shl=function(s,u){return this._verify1(s),this.imod(s.ushln(u))},O.prototype.imul=function(s,u){return this._verify2(s,u),this.imod(s.imul(u))},O.prototype.mul=function(s,u){return this._verify2(s,u),this.imod(s.mul(u))},O.prototype.isqr=function(s){return this.imul(s,s.clone())},O.prototype.sqr=function(s){return this.mul(s,s)},O.prototype.sqrt=function(s){if(s.isZero())return s.clone();var u=this.m.andln(3);if(n(u%2===1),u===3){var h=this.m.add(new a(1)).iushrn(2);return this.pow(s,h)}for(var _=this.m.subn(1),w=0;!_.isZero()&&_.andln(1)===0;)w++,_.iushrn(1);n(!_.isZero());var M=new a(1).toRed(this),b=M.redNeg(),m=this.m.subn(1).iushrn(1),c=this.m.bitLength();for(c=new a(2*c*c).toRed(this);this.pow(c,m).cmp(b)!==0;)c.redIAdd(b);for(var k=this.pow(c,_),Z=this.pow(s,_.addn(1).iushrn(1)),W=this.pow(s,_),Q=w;W.cmp(M)!==0;){for(var ie=W,T=0;ie.cmp(M)!==0;T++)ie=ie.redSqr();n(T<Q);var P=this.pow(k,new a(1).iushln(Q-T-1));Z=Z.redMul(P),k=P.redSqr(),W=W.redMul(k),Q=T}return Z},O.prototype.invm=function(s){var u=s._invmp(this.m);return u.negative!==0?(u.negative=0,this.imod(u).redNeg()):this.imod(u)},O.prototype.pow=function(s,u){if(u.isZero())return new a(1).toRed(this);if(u.cmpn(1)===0)return s.clone();var h=4,_=new Array(1<<h);_[0]=new a(1).toRed(this),_[1]=s;for(var w=2;w<_.length;w++)_[w]=this.mul(_[w-1],s);var M=_[0],b=0,m=0,c=u.bitLength()%26;for(c===0&&(c=26),w=u.length-1;w>=0;w--){for(var k=u.words[w],Z=c-1;Z>=0;Z--){var W=k>>Z&1;if(M!==_[0]&&(M=this.sqr(M)),W===0&&b===0){m=0;continue}b<<=1,b|=W,m++,!(m!==h&&(w!==0||Z!==0))&&(M=this.mul(M,_[b]),m=0,b=0)}c=26}return M},O.prototype.convertTo=function(s){var u=s.umod(this.m);return u===s?u.clone():u},O.prototype.convertFrom=function(s){var u=s.clone();return u.red=null,u},a.mont=function(s){return new A(s)};function A(p){O.call(this,p),this.shift=this.m.bitLength(),this.shift%26!==0&&(this.shift+=26-this.shift%26),this.r=new a(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}o(A,O),A.prototype.convertTo=function(s){return this.imod(s.ushln(this.shift))},A.prototype.convertFrom=function(s){var u=this.imod(s.mul(this.rinv));return u.red=null,u},A.prototype.imul=function(s,u){if(s.isZero()||u.isZero())return s.words[0]=0,s.length=1,s;var h=s.imul(u),_=h.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),w=h.isub(_).iushrn(this.shift),M=w;return w.cmp(this.m)>=0?M=w.isub(this.m):w.cmpn(0)<0&&(M=w.iadd(this.m)),M._forceRed(this)},A.prototype.mul=function(s,u){if(s.isZero()||u.isZero())return new a(0)._forceRed(this);var h=s.mul(u),_=h.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),w=h.isub(_).iushrn(this.shift),M=w;return w.cmp(this.m)>=0?M=w.isub(this.m):w.cmpn(0)<0&&(M=w.iadd(this.m)),M._forceRed(this)},A.prototype.invm=function(s){var u=this.imod(s._invmp(this.m).mul(this.r2));return u._forceRed(this)}})(typeof e>"u"||e,t)}}),pt=Jn(Qn()),si=Jn(Qn());function Ao(t,e){switch(t){case 1e3:return"Number too large"+(e?`: ${e}`:"");case 1001:return"Rate limit exceeded"+(e?`: ${e}`:"");case 1002:return"Insufficient liquidity"+(e?`: ${e}`:"");case 1003:return"HoneyPot scam detected"+(e?`: ${e}`:"");case 1005:return"Forbidden"+(e?`: ${e}`:"");case 1004:return"Bad request"+(e?`: ${e}`:"");case 1006:return"Internal server error"+(e?`: ${e}`:"");case 1007:return"Not found route"+(e?`: ${e}`:"");case 1008:return"Service unavailable"+(e?`: ${e}`:"");case 1009:return"Unsupported API version"+(e?`: ${e}`:"");case 1010:return"Detected HoneyPot Scam"+(e?`: ${e}`:"");case 400:return"Unknown error"+(e?`: ${e}`:"");default:return"Unknown error"}}function Rc(t,...e){let i=Array.isArray(e[e.length-1])?e.pop():[],n=[t,...e].filter(Boolean).join("::");return i&&i.length&&(n+=`<${i.join(", ")}>`),n}function So(t){try{let e=t.replace(/\s/g,""),r=e.match(/(<.+>)$/)?.[0]?.match(/(\w+::\w+::\w+)(?:<.*?>(?!>))?/g);if(r){e=e.slice(0,e.indexOf("<"));let d={...So(e),type_arguments:r.map(f=>So(f).source_address)};return d.type_arguments=d.type_arguments.map(f=>ks.isSuiCoin(f)?f:So(f).source_address),d.source_address=Rc(d.full_address,d.type_arguments),d}let n=e.split("::"),a={full_address:e,address:e===Kc||e===jm?"0x2":Cm(n[0]),module:n[1],name:n[2],type_arguments:[],source_address:""};return a.full_address=`${a.address}::${a.module}::${a.name}`,a.source_address=Rc(a.full_address,a.type_arguments),a}catch{return{full_address:t,address:"",module:"",name:"",type_arguments:[],source_address:t}}}function Nc(t){return So(t).source_address}var Dm="0x2::coin::Coin",Lm=/^0x2::coin::Coin<(.+)>$/;var Kc="0x2::sui::SUI",jm="0x0000000000000000000000000000000000000000000000000000000000000002::sui::SUI";var ks=class Er{static getCoinTypeArg(e){let i=e.type.match(Lm);return i?i[1]:null}static isSUI(e){let i=Er.getCoinTypeArg(e);return i?Er.getCoinSymbol(i)==="SUI":!1}static getCoinSymbol(e){return e.substring(e.lastIndexOf(":")+1)}static getBalance(e){return BigInt(e.fields.balance)}static totalBalance(e,i){let r=BigInt(0);return e.forEach(n=>{i===n.coinAddress&&(r+=BigInt(n.balance))}),r}static getID(e){return e.fields.id.id}static getCoinTypeFromArg(e){return`${Dm}<${e}>`}static getCoinAssets(e,i){let r=[];return i.forEach(n=>{Nc(n.coinAddress)===Nc(e)&&r.push(n)}),r}static isSuiCoin(e){return So(e).full_address===Kc}static selectCoinObjectIdGreaterThanOrEqual(e,i,r=[]){let n=Er.selectCoinAssetGreaterThanOrEqual(e,i,r),o=n.selectedCoins.map(d=>d.coinObjectId),a=n.remainingCoins,l=n.selectedCoins.map(d=>d.balance.toString());return{objectArray:o,remainCoins:a,amountArray:l}}static selectCoinAssetGreaterThanOrEqual(e,i,r=[]){let n=Er.sortByBalance(e.filter(f=>!r.includes(f.coinObjectId))),o=Er.calculateTotalBalance(n);if(o<i)return{selectedCoins:[],remainingCoins:n};if(o===i)return{selectedCoins:n,remainingCoins:[]};let a=BigInt(0),l=[],d=[...n];for(;a<o;){let f=i-a,g=d.findIndex(y=>y.balance>=f);if(g!==-1){l.push(d[g]),d.splice(g,1);break}let v=d.pop();v.balance>0&&(l.push(v),a+=v.balance)}return{selectedCoins:Er.sortByBalance(l),remainingCoins:Er.sortByBalance(d)}}static sortByBalance(e){return e.sort((i,r)=>i.balance<r.balance?-1:i.balance>r.balance?1:0)}static sortByBalanceDes(e){return e.sort((i,r)=>i.balance>r.balance?-1:i.balance<r.balance?0:1)}static calculateTotalBalance(e){return e.reduce((i,r)=>i+r.balance,BigInt(0))}};function Yi(t){let e=t.indexOf("::");if(e===-1)return t;let i=t.substring(0,e),r=t.substring(e);if(!i.startsWith("0x"))return t;let n=i.substring(2);return n.length>64?t:`0x${n.padStart(64,"0")}${r}`}function Bm(t,e){t=Yi(t),e=Yi(e);let i=Math.min(t.length,e.length);for(let r=0;r<i;r++){if(t[r]>e[r])return!0;if(t[r]<e[r])return!1}return!0}var To=Jn(Qn()),cn=new To.default(0),Ay=new To.default(1),Fm=new To.default(2),Sy=Fm.pow(new To.default(128)),Cy=new To.default("18446744073709551615"),As="18446744073709551615";var qm="0xd7b0cfc33a3b46c0ae0e2584c44028385da11724d4c94ec5b21a78117c5c1ab9",Um="0x7a82ed4b00a8c68d751b6c0cbd4e989691daa4716a1cf4f875c2f9b28fb72f3a";var zn={AGGREGATOR_V3:"aggregator_v3"};var Es={Mainnet:"0xdeeb7a4662eec9f2f3def03fb937a663dddaa2e215b8078a284d026b7946c270::deep::DEEP",Testnet:"0x36dbef866a1d62bf7328989a10fb2f07d769f4ee587c0de4a0a256e57e0a58a8::deep::DEEP"},zt={DEFAULT_PYTH_URL:"https://hermes.pyth.network",PYTH_TIMEOUT:3e3,MAX_OVERLAY_FEE_RATE:.1,MAX_OVERLAY_FEE_RATE_NUMERATOR:1e5,FEE_RATE_MULTIPLIER:1e6,DEFAULT_OVERLAY_FEE_RECEIVER:"0x0",ERRORS:{SIGNER_REQUIRED:"Signer is required, but not provided.",INVALID_OVERLAY_FEE_RATE:"Overlay fee rate must be between 0 and 0.1",INVALID_SLIPPAGE:"Invalid slippage value. Must be between 0 and 1 (e.g., 0.01 represents 1% slippage)",NO_ROUTER_FOUND:"No router found",EMPTY_PATH:"Empty path",UNSUPPORTED_DEX:"Unsupported dex",PYTH_UNAVAILABLE:"All Pyth price nodes are unavailable. Cannot fetch price data. Please switch to or add new available Pyth nodes",QUOTE_ID_REQUIRED:"Quote ID is required",AGGREGATOR_V3_PACKAGE_REQUIRED:"Aggregator V3 package is required",PACKAGES_REQUIRED:"Packages are required",OVERLAY_FEE_RECEIVER_REQUIRED:"Overlay fee rate is set, but overlay fee receiver is not set"}},ct={FEE_DENOMINATOR:1e6,MAX_FEE_RATE:1e5,MAX_AMOUNT_IN:As,DEFAULT_PUBLISHED_AT:{Mainnet:"0xde5d696a79714ca5cb910b9aed99d41f67353abb00715ceaeb0663d57ee39640",Testnet:"0x61da681cf2af95cb214a71596b49e662290065536984ed7e06b47e701ef547e3"}},hu=1010405;function $m(t,e){let i=new Map;return t.packages&&(t.packages instanceof Map?i=t.packages:typeof t.packages=="object"&&Object.entries(t.packages).forEach(([r,n])=>{i.set(r,n)})),{quoteID:t.request_id||"",amountIn:new si.default(t.amount_in.toString()),amountOut:new si.default(t.amount_out.toString()),byAmountIn:e,insufficientLiquidity:!1,deviationRatio:t.deviation_ratio,packages:i,paths:t.paths.map(r=>({id:r.id,direction:r.direction,provider:r.provider,from:r.from,target:r.target,feeRate:r.fee_rate,amountIn:r.amount_in.toString(),amountOut:r.amount_out.toString(),version:r.version,publishedAt:r.published_at,extendedDetails:r.extended_details}))}}function Vm(t){let e=new Map;t.packages&&(t.packages instanceof Map?e=t.packages:typeof t.packages=="object"&&Object.entries(t.packages).forEach(([r,n])=>{e.set(r,n)}));let i=[];if(t.all_routes)for(let r of t.all_routes){let n={amountIn:new si.default(r.amount_in.toString()),amountOut:new si.default(r.amount_out.toString()),deviationRatio:r.deviation_ratio,paths:r.paths.map(o=>({id:o.id,direction:o.direction,provider:o.provider,from:o.from,target:o.target,feeRate:o.fee_rate,amountIn:o.amount_in.toString(),amountOut:o.amount_out.toString(),version:o.version,publishedAt:o.published_at,extendedDetails:o.extended_details}))};i.push(n)}return{quoteID:t.request_id||"",totalAmountOut:new si.default(t.total_amount_out?.toString()||"0"),allRoutes:i,packages:e,gas:t.gas}}async function Zm(t,e,i,r,n){let o;if(i.liquidityChanges&&i.liquidityChanges.length>0?o=await Wm(t,i):o=await Hm(t,e,i),!o)return null;if(!o.ok){let g=1004;return o.status===429&&(g=1001),{quoteID:"",amountIn:cn,amountOut:cn,paths:[],byAmountIn:i.byAmountIn,insufficientLiquidity:!1,deviationRatio:0,error:{code:g,msg:Ao(g)}}}let a=Ts.default.parse(await o.text());if(a.data!=null){let g=$m(a.data,i.byAmountIn);if(r>0&&n!=="0x0")if(i.byAmountIn){let v=g.amountOut.mul(new si.default(r)).div(new si.default(1e6));g.overlayFee=Number(v.toString()),g.amountOut=g.amountOut.sub(v)}else{let v=g.amountIn.mul(new si.default(r)).div(new si.default(1e6));g.overlayFee=Number(v.toString()),g.amountIn=g.amountIn.add(v)}return g.packages||(g.packages=new Map),g.packages.has("aggregator_v3")||g.packages.set("aggregator_v3","0x3864c7c59a4889fec05d1aae4bc9dba5a0e0940594b424fbed44cb3f6ac4c032"),g}let l=au(a.code),d=Ao(l,a.msg),f=d.includes("Insufficient liquidity");return{quoteID:"",amountIn:cn,amountOut:cn,paths:[],insufficientLiquidity:f,byAmountIn:i.byAmountIn,deviationRatio:0,error:{code:l,msg:d}}}async function Hm(t,e,i){try{let{from:r,target:n,amount:o,byAmountIn:a,depth:l,splitAlgorithm:d,splitFactor:f,splitCount:g,providers:v}=i,y=Yi(r),S=Yi(n),I=`${t}/find_routes?from=${y}&target=${S}&amount=${o.toString()}&by_amount_in=${a}`;return l&&(I+=`&depth=${l}`),d&&(I+=`&split_algorithm=${d}`),f&&(I+=`&split_factor=${f}`),g&&(I+=`&split_count=${g}`),v&&v.length>0&&(I+=`&providers=${v.join(",")}`),e.length>0&&(I+=`&apiKey=${e}`),I+=`&v=${hu}`,await fetch(I)}catch(r){return console.error(r),null}}async function Wm(t,e){let{from:i,target:r,amount:n,byAmountIn:o,depth:a,splitAlgorithm:l,splitFactor:d,splitCount:f,providers:g,liquidityChanges:v}=e,y=Yi(i),S=Yi(r),I=`${t}/find_routes`,x=g?.join(","),B={from:y,target:S,amount:Number(n.toString()),by_amount_in:o,depth:a,split_algorithm:l,split_factor:d,split_count:f,providers:x,liquidity_changes:v.map(R=>({pool:R.poolID,tick_lower:R.ticklower,tick_upper:R.tickUpper,delta_liquidity:R.deltaLiquidity})),v:hu};try{return await fetch(I,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(B)})}catch(R){return console.error("Error:",R),null}}async function Gm(t,e,i){try{let{target:r,byAmountIn:n,depth:o,providers:a,froms:l}=i,d=Yi(r),f=`${t}/multi_find_routes?target=${d}&by_amount_in=${n}`;o&&(f+=`&depth=${o}`),a&&a.length>0&&(f+=`&providers=${a.join(",")}`),e.length>0&&(f+=`&apiKey=${e}`),f+=`&v=${hu}`;let g=l.map(y=>({coin_type:Yi(y.coinType),amount:Number(y.amount.toString())}));f+=`&froms=${encodeURIComponent(JSON.stringify(g))}`;let v=await fetch(f);return console.log("response",v),v}catch(r){return console.error(r),null}}async function zm(t,e,i,r,n){let o=await Gm(t,e,i);if(!o)return null;if(!o.ok){let g=1004;return o.status===429&&(g=1001),{quoteID:"",totalAmountOut:cn,allRoutes:[],error:{code:g,msg:Ao(g)}}}if(!o.ok){let g=au(o.status),v=await o.text(),y=Ts.default.parse(v),S=Ao(g,y.msg);return{quoteID:"",totalAmountOut:cn,allRoutes:[],error:{code:g,msg:S}}}let a=await o.text(),l=Ts.default.parse(a);if(l.data!=null){console.log("data.data not null",l.data);let g=Vm(l.data);if(r>0&&n!=="0x0"&&i.byAmountIn){let v=g.totalAmountOut.mul(new si.default(r)).div(new si.default(1e6));g.totalAmountOut=g.totalAmountOut.sub(v);for(let y of g.allRoutes){let S=y.amountOut.mul(new si.default(r)).div(new si.default(1e6));y.amountOut=y.amountOut.sub(S)}}return g.packages||(g.packages=new Map),g}let d=au(l.code),f=Ao(d,l.msg);return{quoteID:"",totalAmountOut:cn,allRoutes:[],error:{code:d,msg:f}}}async function Km(t){let e=`${t}/deepbookv3_config`;try{return(await fetch(e)).json()}catch(i){return console.error("Error:",i),null}}function ys(t){let e=t.paths,i=e[0].from,r=e[e.length-1].target,n=[];for(let a of e)n.push({path:a,isLastUseOfIntermediateToken:!1});let o=new Map;for(let a=n.length-1;a>=0;a--){let{from:l}=n[a].path;o.has(l)||(o.set(l,!0),n[a].isLastUseOfIntermediateToken=!0)}return{quoteID:t.quoteID||"",amountIn:t.amountIn,amountOut:t.amountOut,byAmountIn:t.byAmountIn,flattenedPaths:n,fromCoinType:i,targetCoinType:r,packages:t.packages,totalDeepFee:t.totalDeepFee,error:t.error,overlayFee:t.overlayFee}}function au(t){switch(t){case 400:return 1004;case 403:return 1005;case 429:return 1001;case 4e3:return 1004;case 4030:return 1005;case 4040:return 1010;case 5e3:return 1002;case 5001:case 5010:return 1007;case 5030:return 1008;case 5040:return 1009;default:return 400}}var Os=(t=>(t[t.Mainnet=0]="Mainnet",t[t.Testnet=1]="Testnet",t))(Os||{});var Xm=Jn(Qn()),Kn=9e15,Or=1e9,uu="0123456789abcdef",xs="2.3025850929940456840179914546843642076011014886287729760333279009675726096773524802359972050895982983419677840422862486334095254650828067566662873690987816894829072083255546808437998948262331985283935053089653777326288461633662222876982198867465436674744042432743651550489343149393914796194044002221051017141748003688084012647080685567743216228355220114804663715659121373450747856947683463616792101806445070648000277502684916746550586856935673420670581136429224554405758925724208241314695689016758940256776311356919292033376587141660230105703089634572075440370847469940168269282808481184289314848524948644871927809676271275775397027668605952496716674183485704422507197965004714951050492214776567636938662976979522110718264549734772662425709429322582798502585509785265383207606726317164309505995087807523710333101197857547331541421808427543863591778117054309827482385045648019095610299291824318237525357709750539565187697510374970888692180205189339507238539205144634197265287286965110862571492198849978748873771345686209167058",Is="3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185950244594553469083026425223082533446850352619311881710100031378387528865875332083814206171776691473035982534904287554687311595628638823537875937519577818577805321712268066130019278766111959092164201989380952572010654858632789",lu={precision:20,rounding:4,modulo:1,toExpNeg:-7,toExpPos:21,minE:-Kn,maxE:Kn,crypto:!1},Xc,dr,Ze=!0,Rs="[DecimalError] ",Pr=Rs+"Invalid argument: ",Jc=Rs+"Precision limit exceeded",Qc=Rs+"crypto unavailable",Yc="[object Decimal]",Kt=Math.floor,Nt=Math.pow,Jm=/^0b([01]+(\.[01]*)?|\.[01]+)(p[+-]?\d+)?$/i,Qm=/^0x([0-9a-f]+(\.[0-9a-f]*)?|\.[0-9a-f]+)(p[+-]?\d+)?$/i,Ym=/^0o([0-7]+(\.[0-7]*)?|\.[0-7]+)(p[+-]?\d+)?$/i,ed=/^(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i,Fi=1e7,Be=7,e_=9007199254740991,t_=xs.length-1,cu=Is.length-1,ae={toStringTag:Yc};ae.absoluteValue=ae.abs=function(){var t=new this.constructor(this);return t.s<0&&(t.s=1),Re(t)};ae.ceil=function(){return Re(new this.constructor(this),this.e+1,2)};ae.clampedTo=ae.clamp=function(t,e){var i,r=this,n=r.constructor;if(t=new n(t),e=new n(e),!t.s||!e.s)return new n(NaN);if(t.gt(e))throw Error(Pr+e);return i=r.cmp(t),i<0?t:r.cmp(e)>0?e:new n(r)};ae.comparedTo=ae.cmp=function(t){var e,i,r,n,o=this,a=o.d,l=(t=new o.constructor(t)).d,d=o.s,f=t.s;if(!a||!l)return!d||!f?NaN:d!==f?d:a===l?0:!a^d<0?1:-1;if(!a[0]||!l[0])return a[0]?d:l[0]?-f:0;if(d!==f)return d;if(o.e!==t.e)return o.e>t.e^d<0?1:-1;for(r=a.length,n=l.length,e=0,i=r<n?r:n;e<i;++e)if(a[e]!==l[e])return a[e]>l[e]^d<0?1:-1;return r===n?0:r>n^d<0?1:-1};ae.cosine=ae.cos=function(){var t,e,i=this,r=i.constructor;return i.d?i.d[0]?(t=r.precision,e=r.rounding,r.precision=t+Math.max(i.e,i.sd())+Be,r.rounding=1,i=i_(r,od(r,i)),r.precision=t,r.rounding=e,Re(dr==2||dr==3?i.neg():i,t,e,!0)):new r(1):new r(NaN)};ae.cubeRoot=ae.cbrt=function(){var t,e,i,r,n,o,a,l,d,f,g=this,v=g.constructor;if(!g.isFinite()||g.isZero())return new v(g);for(Ze=!1,o=g.s*Nt(g.s*g,1/3),!o||Math.abs(o)==1/0?(i=qt(g.d),t=g.e,(o=(t-i.length+1)%3)&&(i+=o==1||o==-2?"0":"00"),o=Nt(i,1/3),t=Kt((t+1)/3)-(t%3==(t<0?-1:2)),o==1/0?i="5e"+t:(i=o.toExponential(),i=i.slice(0,i.indexOf("e")+1)+t),r=new v(i),r.s=g.s):r=new v(o.toString()),a=(t=v.precision)+3;;)if(l=r,d=l.times(l).times(l),f=d.plus(g),r=_t(f.plus(g).times(l),f.plus(d),a+2,1),qt(l.d).slice(0,a)===(i=qt(r.d)).slice(0,a))if(i=i.slice(a-3,a+1),i=="9999"||!n&&i=="4999"){if(!n&&(Re(l,t+1,0),l.times(l).times(l).eq(g))){r=l;break}a+=4,n=1}else{(!+i||!+i.slice(1)&&i.charAt(0)=="5")&&(Re(r,t+1,1),e=!r.times(r).times(r).eq(g));break}return Ze=!0,Re(r,t,v.rounding,e)};ae.decimalPlaces=ae.dp=function(){var t,e=this.d,i=NaN;if(e){if(t=e.length-1,i=(t-Kt(this.e/Be))*Be,t=e[t],t)for(;t%10==0;t/=10)i--;i<0&&(i=0)}return i};ae.dividedBy=ae.div=function(t){return _t(this,new this.constructor(t))};ae.dividedToIntegerBy=ae.divToInt=function(t){var e=this,i=e.constructor;return Re(_t(e,new i(t),0,1,1),i.precision,i.rounding)};ae.equals=ae.eq=function(t){return this.cmp(t)===0};ae.floor=function(){return Re(new this.constructor(this),this.e+1,3)};ae.greaterThan=ae.gt=function(t){return this.cmp(t)>0};ae.greaterThanOrEqualTo=ae.gte=function(t){var e=this.cmp(t);return e==1||e===0};ae.hyperbolicCosine=ae.cosh=function(){var t,e,i,r,n,o=this,a=o.constructor,l=new a(1);if(!o.isFinite())return new a(o.s?1/0:NaN);if(o.isZero())return l;i=a.precision,r=a.rounding,a.precision=i+Math.max(o.e,o.sd())+4,a.rounding=1,n=o.d.length,n<32?(t=Math.ceil(n/3),e=(1/Ds(4,t)).toString()):(t=16,e="2.3283064365386962890625e-10"),o=Xn(a,1,o.times(e),new a(1),!0);for(var d,f=t,g=new a(8);f--;)d=o.times(o),o=l.minus(d.times(g.minus(d.times(g))));return Re(o,a.precision=i,a.rounding=r,!0)};ae.hyperbolicSine=ae.sinh=function(){var t,e,i,r,n=this,o=n.constructor;if(!n.isFinite()||n.isZero())return new o(n);if(e=o.precision,i=o.rounding,o.precision=e+Math.max(n.e,n.sd())+4,o.rounding=1,r=n.d.length,r<3)n=Xn(o,2,n,n,!0);else{t=1.4*Math.sqrt(r),t=t>16?16:t|0,n=n.times(1/Ds(5,t)),n=Xn(o,2,n,n,!0);for(var a,l=new o(5),d=new o(16),f=new o(20);t--;)a=n.times(n),n=n.times(l.plus(a.times(d.times(a).plus(f))))}return o.precision=e,o.rounding=i,Re(n,e,i,!0)};ae.hyperbolicTangent=ae.tanh=function(){var t,e,i=this,r=i.constructor;return i.isFinite()?i.isZero()?new r(i):(t=r.precision,e=r.rounding,r.precision=t+7,r.rounding=1,_t(i.sinh(),i.cosh(),r.precision=t,r.rounding=e)):new r(i.s)};ae.inverseCosine=ae.acos=function(){var t=this,e=t.constructor,i=t.abs().cmp(1),r=e.precision,n=e.rounding;return i!==-1?i===0?t.isNeg()?Qi(e,r,n):new e(0):new e(NaN):t.isZero()?Qi(e,r+4,n).times(.5):(e.precision=r+6,e.rounding=1,t=new e(1).minus(t).div(t.plus(1)).sqrt().atan(),e.precision=r,e.rounding=n,t.times(2))};ae.inverseHyperbolicCosine=ae.acosh=function(){var t,e,i=this,r=i.constructor;return i.lte(1)?new r(i.eq(1)?0:NaN):i.isFinite()?(t=r.precision,e=r.rounding,r.precision=t+Math.max(Math.abs(i.e),i.sd())+4,r.rounding=1,Ze=!1,i=i.times(i).minus(1).sqrt().plus(i),Ze=!0,r.precision=t,r.rounding=e,i.ln()):new r(i)};ae.inverseHyperbolicSine=ae.asinh=function(){var t,e,i=this,r=i.constructor;return!i.isFinite()||i.isZero()?new r(i):(t=r.precision,e=r.rounding,r.precision=t+2*Math.max(Math.abs(i.e),i.sd())+6,r.rounding=1,Ze=!1,i=i.times(i).plus(1).sqrt().plus(i),Ze=!0,r.precision=t,r.rounding=e,i.ln())};ae.inverseHyperbolicTangent=ae.atanh=function(){var t,e,i,r,n=this,o=n.constructor;return n.isFinite()?n.e>=0?new o(n.abs().eq(1)?n.s/0:n.isZero()?n:NaN):(t=o.precision,e=o.rounding,r=n.sd(),Math.max(r,t)<2*-n.e-1?Re(new o(n),t,e,!0):(o.precision=i=r-n.e,n=_t(n.plus(1),new o(1).minus(n),i+t,1),o.precision=t+4,o.rounding=1,n=n.ln(),o.precision=t,o.rounding=e,n.times(.5))):new o(NaN)};ae.inverseSine=ae.asin=function(){var t,e,i,r,n=this,o=n.constructor;return n.isZero()?new o(n):(e=n.abs().cmp(1),i=o.precision,r=o.rounding,e!==-1?e===0?(t=Qi(o,i+4,r).times(.5),t.s=n.s,t):new o(NaN):(o.precision=i+6,o.rounding=1,n=n.div(new o(1).minus(n.times(n)).sqrt().plus(1)).atan(),o.precision=i,o.rounding=r,n.times(2)))};ae.inverseTangent=ae.atan=function(){var t,e,i,r,n,o,a,l,d,f=this,g=f.constructor,v=g.precision,y=g.rounding;if(f.isFinite()){if(f.isZero())return new g(f);if(f.abs().eq(1)&&v+4<=cu)return a=Qi(g,v+4,y).times(.25),a.s=f.s,a}else{if(!f.s)return new g(NaN);if(v+4<=cu)return a=Qi(g,v+4,y).times(.5),a.s=f.s,a}for(g.precision=l=v+10,g.rounding=1,i=Math.min(28,l/Be+2|0),t=i;t;--t)f=f.div(f.times(f).plus(1).sqrt().plus(1));for(Ze=!1,e=Math.ceil(l/Be),r=1,d=f.times(f),a=new g(f),n=f;t!==-1;)if(n=n.times(d),o=a.minus(n.div(r+=2)),n=n.times(d),a=o.plus(n.div(r+=2)),a.d[e]!==void 0)for(t=e;a.d[t]===o.d[t]&&t--;);return i&&(a=a.times(2<<i-1)),Ze=!0,Re(a,g.precision=v,g.rounding=y,!0)};ae.isFinite=function(){return!!this.d};ae.isInteger=ae.isInt=function(){return!!this.d&&Kt(this.e/Be)>this.d.length-2};ae.isNaN=function(){return!this.s};ae.isNegative=ae.isNeg=function(){return this.s<0};ae.isPositive=ae.isPos=function(){return this.s>0};ae.isZero=function(){return!!this.d&&this.d[0]===0};ae.lessThan=ae.lt=function(t){return this.cmp(t)<0};ae.lessThanOrEqualTo=ae.lte=function(t){return this.cmp(t)<1};ae.logarithm=ae.log=function(t){var e,i,r,n,o,a,l,d,f=this,g=f.constructor,v=g.precision,y=g.rounding,S=5;if(t==null)t=new g(10),e=!0;else{if(t=new g(t),i=t.d,t.s<0||!i||!i[0]||t.eq(1))return new g(NaN);e=t.eq(10)}if(i=f.d,f.s<0||!i||!i[0]||f.eq(1))return new g(i&&!i[0]?-1/0:f.s!=1?NaN:i?0:1/0);if(e)if(i.length>1)o=!0;else{for(n=i[0];n%10===0;)n/=10;o=n!==1}if(Ze=!1,l=v+S,a=Ir(f,l),r=e?Ps(g,l+10):Ir(t,l),d=_t(a,r,l,1),Co(d.d,n=v,y))do if(l+=10,a=Ir(f,l),r=e?Ps(g,l+10):Ir(t,l),d=_t(a,r,l,1),!o){+qt(d.d).slice(n+1,n+15)+1==1e14&&(d=Re(d,v+1,0));break}while(Co(d.d,n+=10,y));return Ze=!0,Re(d,v,y)};ae.minus=ae.sub=function(t){var e,i,r,n,o,a,l,d,f,g,v,y,S=this,I=S.constructor;if(t=new I(t),!S.d||!t.d)return!S.s||!t.s?t=new I(NaN):S.d?t.s=-t.s:t=new I(t.d||S.s!==t.s?S:NaN),t;if(S.s!=t.s)return t.s=-t.s,S.plus(t);if(f=S.d,y=t.d,l=I.precision,d=I.rounding,!f[0]||!y[0]){if(y[0])t.s=-t.s;else if(f[0])t=new I(S);else return new I(d===3?-0:0);return Ze?Re(t,l,d):t}if(i=Kt(t.e/Be),g=Kt(S.e/Be),f=f.slice(),o=g-i,o){for(v=o<0,v?(e=f,o=-o,a=y.length):(e=y,i=g,a=f.length),r=Math.max(Math.ceil(l/Be),a)+2,o>r&&(o=r,e.length=1),e.reverse(),r=o;r--;)e.push(0);e.reverse()}else{for(r=f.length,a=y.length,v=r<a,v&&(a=r),r=0;r<a;r++)if(f[r]!=y[r]){v=f[r]<y[r];break}o=0}for(v&&(e=f,f=y,y=e,t.s=-t.s),a=f.length,r=y.length-a;r>0;--r)f[a++]=0;for(r=y.length;r>o;){if(f[--r]<y[r]){for(n=r;n&&f[--n]===0;)f[n]=Fi-1;--f[n],f[r]+=Fi}f[r]-=y[r]}for(;f[--a]===0;)f.pop();for(;f[0]===0;f.shift())--i;return f[0]?(t.d=f,t.e=Ns(f,i),Ze?Re(t,l,d):t):new I(d===3?-0:0)};ae.modulo=ae.mod=function(t){var e,i=this,r=i.constructor;return t=new r(t),!i.d||!t.s||t.d&&!t.d[0]?new r(NaN):!t.d||i.d&&!i.d[0]?Re(new r(i),r.precision,r.rounding):(Ze=!1,r.modulo==9?(e=_t(i,t.abs(),0,3,1),e.s*=t.s):e=_t(i,t,0,r.modulo,1),e=e.times(t),Ze=!0,i.minus(e))};ae.naturalExponential=ae.exp=function(){return du(this)};ae.naturalLogarithm=ae.ln=function(){return Ir(this)};ae.negated=ae.neg=function(){var t=new this.constructor(this);return t.s=-t.s,Re(t)};ae.plus=ae.add=function(t){var e,i,r,n,o,a,l,d,f,g,v=this,y=v.constructor;if(t=new y(t),!v.d||!t.d)return!v.s||!t.s?t=new y(NaN):v.d||(t=new y(t.d||v.s===t.s?v:NaN)),t;if(v.s!=t.s)return t.s=-t.s,v.minus(t);if(f=v.d,g=t.d,l=y.precision,d=y.rounding,!f[0]||!g[0])return g[0]||(t=new y(v)),Ze?Re(t,l,d):t;if(o=Kt(v.e/Be),r=Kt(t.e/Be),f=f.slice(),n=o-r,n){for(n<0?(i=f,n=-n,a=g.length):(i=g,r=o,a=f.length),o=Math.ceil(l/Be),a=o>a?o+1:a+1,n>a&&(n=a,i.length=1),i.reverse();n--;)i.push(0);i.reverse()}for(a=f.length,n=g.length,a-n<0&&(n=a,i=g,g=f,f=i),e=0;n;)e=(f[--n]=f[n]+g[n]+e)/Fi|0,f[n]%=Fi;for(e&&(f.unshift(e),++r),a=f.length;f[--a]==0;)f.pop();return t.d=f,t.e=Ns(f,r),Ze?Re(t,l,d):t};ae.precision=ae.sd=function(t){var e,i=this;if(t!==void 0&&t!==!!t&&t!==1&&t!==0)throw Error(Pr+t);return i.d?(e=td(i.d),t&&i.e+1>e&&(e=i.e+1)):e=NaN,e};ae.round=function(){var t=this,e=t.constructor;return Re(new e(t),t.e+1,e.rounding)};ae.sine=ae.sin=function(){var t,e,i=this,r=i.constructor;return i.isFinite()?i.isZero()?new r(i):(t=r.precision,e=r.rounding,r.precision=t+Math.max(i.e,i.sd())+Be,r.rounding=1,i=n_(r,od(r,i)),r.precision=t,r.rounding=e,Re(dr>2?i.neg():i,t,e,!0)):new r(NaN)};ae.squareRoot=ae.sqrt=function(){var t,e,i,r,n,o,a=this,l=a.d,d=a.e,f=a.s,g=a.constructor;if(f!==1||!l||!l[0])return new g(!f||f<0&&(!l||l[0])?NaN:l?a:1/0);for(Ze=!1,f=Math.sqrt(+a),f==0||f==1/0?(e=qt(l),(e.length+d)%2==0&&(e+="0"),f=Math.sqrt(e),d=Kt((d+1)/2)-(d<0||d%2),f==1/0?e="5e"+d:(e=f.toExponential(),e=e.slice(0,e.indexOf("e")+1)+d),r=new g(e)):r=new g(f.toString()),i=(d=g.precision)+3;;)if(o=r,r=o.plus(_t(a,o,i+2,1)).times(.5),qt(o.d).slice(0,i)===(e=qt(r.d)).slice(0,i))if(e=e.slice(i-3,i+1),e=="9999"||!n&&e=="4999"){if(!n&&(Re(o,d+1,0),o.times(o).eq(a))){r=o;break}i+=4,n=1}else{(!+e||!+e.slice(1)&&e.charAt(0)=="5")&&(Re(r,d+1,1),t=!r.times(r).eq(a));break}return Ze=!0,Re(r,d,g.rounding,t)};ae.tangent=ae.tan=function(){var t,e,i=this,r=i.constructor;return i.isFinite()?i.isZero()?new r(i):(t=r.precision,e=r.rounding,r.precision=t+10,r.rounding=1,i=i.sin(),i.s=1,i=_t(i,new r(1).minus(i.times(i)).sqrt(),t+10,0),r.precision=t,r.rounding=e,Re(dr==2||dr==4?i.neg():i,t,e,!0)):new r(NaN)};ae.times=ae.mul=function(t){var e,i,r,n,o,a,l,d,f,g=this,v=g.constructor,y=g.d,S=(t=new v(t)).d;if(t.s*=g.s,!y||!y[0]||!S||!S[0])return new v(!t.s||y&&!y[0]&&!S||S&&!S[0]&&!y?NaN:!y||!S?t.s/0:t.s*0);for(i=Kt(g.e/Be)+Kt(t.e/Be),d=y.length,f=S.length,d<f&&(o=y,y=S,S=o,a=d,d=f,f=a),o=[],a=d+f,r=a;r--;)o.push(0);for(r=f;--r>=0;){for(e=0,n=d+r;n>r;)l=o[n]+S[r]*y[n-r-1]+e,o[n--]=l%Fi|0,e=l/Fi|0;o[n]=(o[n]+e)%Fi|0}for(;!o[--a];)o.pop();return e?++i:o.shift(),t.d=o,t.e=Ns(o,i),Ze?Re(t,v.precision,v.rounding):t};ae.toBinary=function(t,e){return fu(this,2,t,e)};ae.toDecimalPlaces=ae.toDP=function(t,e){var i=this,r=i.constructor;return i=new r(i),t===void 0?i:(ii(t,0,Or),e===void 0?e=r.rounding:ii(e,0,8),Re(i,t+i.e+1,e))};ae.toExponential=function(t,e){var i,r=this,n=r.constructor;return t===void 0?i=er(r,!0):(ii(t,0,Or),e===void 0?e=n.rounding:ii(e,0,8),r=Re(new n(r),t+1,e),i=er(r,!0,t+1)),r.isNeg()&&!r.isZero()?"-"+i:i};ae.toFixed=function(t,e){var i,r,n=this,o=n.constructor;return t===void 0?i=er(n):(ii(t,0,Or),e===void 0?e=o.rounding:ii(e,0,8),r=Re(new o(n),t+n.e+1,e),i=er(r,!1,t+r.e+1)),n.isNeg()&&!n.isZero()?"-"+i:i};ae.toFraction=function(t){var e,i,r,n,o,a,l,d,f,g,v,y,S=this,I=S.d,x=S.constructor;if(!I)return new x(S);if(f=i=new x(1),r=d=new x(0),e=new x(r),o=e.e=td(I)-S.e-1,a=o%Be,e.d[0]=Nt(10,a<0?Be+a:a),t==null)t=o>0?e:f;else{if(l=new x(t),!l.isInt()||l.lt(f))throw Error(Pr+l);t=l.gt(e)?o>0?e:f:l}for(Ze=!1,l=new x(qt(I)),g=x.precision,x.precision=o=I.length*Be*2;v=_t(l,e,0,1,1),n=i.plus(v.times(r)),n.cmp(t)!=1;)i=r,r=n,n=f,f=d.plus(v.times(n)),d=n,n=e,e=l.minus(v.times(n)),l=n;return n=_t(t.minus(i),r,0,1,1),d=d.plus(n.times(f)),i=i.plus(n.times(r)),d.s=f.s=S.s,y=_t(f,r,o,1).minus(S).abs().cmp(_t(d,i,o,1).minus(S).abs())<1?[f,r]:[d,i],x.precision=g,Ze=!0,y};ae.toHexadecimal=ae.toHex=function(t,e){return fu(this,16,t,e)};ae.toNearest=function(t,e){var i=this,r=i.constructor;if(i=new r(i),t==null){if(!i.d)return i;t=new r(1),e=r.rounding}else{if(t=new r(t),e===void 0?e=r.rounding:ii(e,0,8),!i.d)return t.s?i:t;if(!t.d)return t.s&&(t.s=i.s),t}return t.d[0]?(Ze=!1,i=_t(i,t,0,e,1).times(t),Ze=!0,Re(i)):(t.s=i.s,i=t),i};ae.toNumber=function(){return+this};ae.toOctal=function(t,e){return fu(this,8,t,e)};ae.toPower=ae.pow=function(t){var e,i,r,n,o,a,l=this,d=l.constructor,f=+(t=new d(t));if(!l.d||!t.d||!l.d[0]||!t.d[0])return new d(Nt(+l,f));if(l=new d(l),l.eq(1))return l;if(r=d.precision,o=d.rounding,t.eq(1))return Re(l,r,o);if(e=Kt(t.e/Be),e>=t.d.length-1&&(i=f<0?-f:f)<=e_)return n=id(d,l,i,r),t.s<0?new d(1).div(n):Re(n,r,o);if(a=l.s,a<0){if(e<t.d.length-1)return new d(NaN);if((t.d[e]&1)==0&&(a=1),l.e==0&&l.d[0]==1&&l.d.length==1)return l.s=a,l}return i=Nt(+l,f),e=i==0||!isFinite(i)?Kt(f*(Math.log("0."+qt(l.d))/Math.LN10+l.e+1)):new d(i+"").e,e>d.maxE+1||e<d.minE-1?new d(e>0?a/0:0):(Ze=!1,d.rounding=l.s=1,i=Math.min(12,(e+"").length),n=du(t.times(Ir(l,r+i)),r),n.d&&(n=Re(n,r+5,1),Co(n.d,r,o)&&(e=r+10,n=Re(du(t.times(Ir(l,e+i)),e),e+5,1),+qt(n.d).slice(r+1,r+15)+1==1e14&&(n=Re(n,r+1,0)))),n.s=a,Ze=!0,d.rounding=o,Re(n,r,o))};ae.toPrecision=function(t,e){var i,r=this,n=r.constructor;return t===void 0?i=er(r,r.e<=n.toExpNeg||r.e>=n.toExpPos):(ii(t,1,Or),e===void 0?e=n.rounding:ii(e,0,8),r=Re(new n(r),t,e),i=er(r,t<=r.e||r.e<=n.toExpNeg,t)),r.isNeg()&&!r.isZero()?"-"+i:i};ae.toSignificantDigits=ae.toSD=function(t,e){var i=this,r=i.constructor;return t===void 0?(t=r.precision,e=r.rounding):(ii(t,1,Or),e===void 0?e=r.rounding:ii(e,0,8)),Re(new r(i),t,e)};ae.toString=function(){var t=this,e=t.constructor,i=er(t,t.e<=e.toExpNeg||t.e>=e.toExpPos);return t.isNeg()&&!t.isZero()?"-"+i:i};ae.truncated=ae.trunc=function(){return Re(new this.constructor(this),this.e+1,1)};ae.valueOf=ae.toJSON=function(){var t=this,e=t.constructor,i=er(t,t.e<=e.toExpNeg||t.e>=e.toExpPos);return t.isNeg()?"-"+i:i};function qt(t){var e,i,r,n=t.length-1,o="",a=t[0];if(n>0){for(o+=a,e=1;e<n;e++)r=t[e]+"",i=Be-r.length,i&&(o+=xr(i)),o+=r;a=t[e],r=a+"",i=Be-r.length,i&&(o+=xr(i))}else if(a===0)return"0";for(;a%10===0;)a/=10;return o+a}function ii(t,e,i){if(t!==~~t||t<e||t>i)throw Error(Pr+t)}function Co(t,e,i,r){var n,o,a,l;for(o=t[0];o>=10;o/=10)--e;return--e<0?(e+=Be,n=0):(n=Math.ceil((e+1)/Be),e%=Be),o=Nt(10,Be-e),l=t[n]%o|0,r==null?e<3?(e==0?l=l/100|0:e==1&&(l=l/10|0),a=i<4&&l==99999||i>3&&l==49999||l==5e4||l==0):a=(i<4&&l+1==o||i>3&&l+1==o/2)&&(t[n+1]/o/100|0)==Nt(10,e-2)-1||(l==o/2||l==0)&&(t[n+1]/o/100|0)==0:e<4?(e==0?l=l/1e3|0:e==1?l=l/100|0:e==2&&(l=l/10|0),a=(r||i<4)&&l==9999||!r&&i>3&&l==4999):a=((r||i<4)&&l+1==o||!r&&i>3&&l+1==o/2)&&(t[n+1]/o/1e3|0)==Nt(10,e-3)-1,a}function Ss(t,e,i){for(var r,n=[0],o,a=0,l=t.length;a<l;){for(o=n.length;o--;)n[o]*=e;for(n[0]+=uu.indexOf(t.charAt(a++)),r=0;r<n.length;r++)n[r]>i-1&&(n[r+1]===void 0&&(n[r+1]=0),n[r+1]+=n[r]/i|0,n[r]%=i)}return n.reverse()}function i_(t,e){var i,r,n;if(e.isZero())return e;r=e.d.length,r<32?(i=Math.ceil(r/3),n=(1/Ds(4,i)).toString()):(i=16,n="2.3283064365386962890625e-10"),t.precision+=i,e=Xn(t,1,e.times(n),new t(1));for(var o=i;o--;){var a=e.times(e);e=a.times(a).minus(a).times(8).plus(1)}return t.precision-=i,e}var _t=(function(){function t(r,n,o){var a,l=0,d=r.length;for(r=r.slice();d--;)a=r[d]*n+l,r[d]=a%o|0,l=a/o|0;return l&&r.unshift(l),r}function e(r,n,o,a){var l,d;if(o!=a)d=o>a?1:-1;else for(l=d=0;l<o;l++)if(r[l]!=n[l]){d=r[l]>n[l]?1:-1;break}return d}function i(r,n,o,a){for(var l=0;o--;)r[o]-=l,l=r[o]<n[o]?1:0,r[o]=l*a+r[o]-n[o];for(;!r[0]&&r.length>1;)r.shift()}return function(r,n,o,a,l,d){var f,g,v,y,S,I,x,B,R,j,V,J,Y,X,ee,C,E,N,D,O,A=r.constructor,p=r.s==n.s?1:-1,s=r.d,u=n.d;if(!s||!s[0]||!u||!u[0])return new A(!r.s||!n.s||(s?u&&s[0]==u[0]:!u)?NaN:s&&s[0]==0||!u?p*0:p/0);for(d?(S=1,g=r.e-n.e):(d=Fi,S=Be,g=Kt(r.e/S)-Kt(n.e/S)),D=u.length,E=s.length,R=new A(p),j=R.d=[],v=0;u[v]==(s[v]||0);v++);if(u[v]>(s[v]||0)&&g--,o==null?(X=o=A.precision,a=A.rounding):l?X=o+(r.e-n.e)+1:X=o,X<0)j.push(1),I=!0;else{if(X=X/S+2|0,v=0,D==1){for(y=0,u=u[0],X++;(v<E||y)&&X--;v++)ee=y*d+(s[v]||0),j[v]=ee/u|0,y=ee%u|0;I=y||v<E}else{for(y=d/(u[0]+1)|0,y>1&&(u=t(u,y,d),s=t(s,y,d),D=u.length,E=s.length),C=D,V=s.slice(0,D),J=V.length;J<D;)V[J++]=0;O=u.slice(),O.unshift(0),N=u[0],u[1]>=d/2&&++N;do y=0,f=e(u,V,D,J),f<0?(Y=V[0],D!=J&&(Y=Y*d+(V[1]||0)),y=Y/N|0,y>1?(y>=d&&(y=d-1),x=t(u,y,d),B=x.length,J=V.length,f=e(x,V,B,J),f==1&&(y--,i(x,D<B?O:u,B,d))):(y==0&&(f=y=1),x=u.slice()),B=x.length,B<J&&x.unshift(0),i(V,x,J,d),f==-1&&(J=V.length,f=e(u,V,D,J),f<1&&(y++,i(V,D<J?O:u,J,d))),J=V.length):f===0&&(y++,V=[0]),j[v++]=y,f&&V[0]?V[J++]=s[C]||0:(V=[s[C]],J=1);while((C++<E||V[0]!==void 0)&&X--);I=V[0]!==void 0}j[0]||j.shift()}if(S==1)R.e=g,Xc=I;else{for(v=1,y=j[0];y>=10;y/=10)v++;R.e=v+g*S-1,Re(R,l?o+R.e+1:o,a,I)}return R}})();function Re(t,e,i,r){var n,o,a,l,d,f,g,v,y,S=t.constructor;e:if(e!=null){if(v=t.d,!v)return t;for(n=1,l=v[0];l>=10;l/=10)n++;if(o=e-n,o<0)o+=Be,a=e,g=v[y=0],d=g/Nt(10,n-a-1)%10|0;else if(y=Math.ceil((o+1)/Be),l=v.length,y>=l)if(r){for(;l++<=y;)v.push(0);g=d=0,n=1,o%=Be,a=o-Be+1}else break e;else{for(g=l=v[y],n=1;l>=10;l/=10)n++;o%=Be,a=o-Be+n,d=a<0?0:g/Nt(10,n-a-1)%10|0}if(r=r||e<0||v[y+1]!==void 0||(a<0?g:g%Nt(10,n-a-1)),f=i<4?(d||r)&&(i==0||i==(t.s<0?3:2)):d>5||d==5&&(i==4||r||i==6&&(o>0?a>0?g/Nt(10,n-a):0:v[y-1])%10&1||i==(t.s<0?8:7)),e<1||!v[0])return v.length=0,f?(e-=t.e+1,v[0]=Nt(10,(Be-e%Be)%Be),t.e=-e||0):v[0]=t.e=0,t;if(o==0?(v.length=y,l=1,y--):(v.length=y+1,l=Nt(10,Be-o),v[y]=a>0?(g/Nt(10,n-a)%Nt(10,a)|0)*l:0),f)for(;;)if(y==0){for(o=1,a=v[0];a>=10;a/=10)o++;for(a=v[0]+=l,l=1;a>=10;a/=10)l++;o!=l&&(t.e++,v[0]==Fi&&(v[0]=1));break}else{if(v[y]+=l,v[y]!=Fi)break;v[y--]=0,l=1}for(o=v.length;v[--o]===0;)v.pop()}return Ze&&(t.e>S.maxE?(t.d=null,t.e=NaN):t.e<S.minE&&(t.e=0,t.d=[0])),t}function er(t,e,i){if(!t.isFinite())return nd(t);var r,n=t.e,o=qt(t.d),a=o.length;return e?(i&&(r=i-a)>0?o=o.charAt(0)+"."+o.slice(1)+xr(r):a>1&&(o=o.charAt(0)+"."+o.slice(1)),o=o+(t.e<0?"e":"e+")+t.e):n<0?(o="0."+xr(-n-1)+o,i&&(r=i-a)>0&&(o+=xr(r))):n>=a?(o+=xr(n+1-a),i&&(r=i-n-1)>0&&(o=o+"."+xr(r))):((r=n+1)<a&&(o=o.slice(0,r)+"."+o.slice(r)),i&&(r=i-a)>0&&(n+1===a&&(o+="."),o+=xr(r))),o}function Ns(t,e){var i=t[0];for(e*=Be;i>=10;i/=10)e++;return e}function Ps(t,e,i){if(e>t_)throw Ze=!0,i&&(t.precision=i),Error(Jc);return Re(new t(xs),e,1,!0)}function Qi(t,e,i){if(e>cu)throw Error(Jc);return Re(new t(Is),e,i,!0)}function td(t){var e=t.length-1,i=e*Be+1;if(e=t[e],e){for(;e%10==0;e/=10)i--;for(e=t[0];e>=10;e/=10)i++}return i}function xr(t){for(var e="";t--;)e+="0";return e}function id(t,e,i,r){var n,o=new t(1),a=Math.ceil(r/Be+4);for(Ze=!1;;){if(i%2&&(o=o.times(e),Lc(o.d,a)&&(n=!0)),i=Kt(i/2),i===0){i=o.d.length-1,n&&o.d[i]===0&&++o.d[i];break}e=e.times(e),Lc(e.d,a)}return Ze=!0,o}function Dc(t){return t.d[t.d.length-1]&1}function rd(t,e,i){for(var r,n,o=new t(e[0]),a=0;++a<e.length;){if(n=new t(e[a]),!n.s){o=n;break}r=o.cmp(n),(r===i||r===0&&o.s===i)&&(o=n)}return o}function du(t,e){var i,r,n,o,a,l,d,f=0,g=0,v=0,y=t.constructor,S=y.rounding,I=y.precision;if(!t.d||!t.d[0]||t.e>17)return new y(t.d?t.d[0]?t.s<0?0:1/0:1:t.s?t.s<0?0:t:NaN);for(e==null?(Ze=!1,d=I):d=e,l=new y(.03125);t.e>-2;)t=t.times(l),v+=5;for(r=Math.log(Nt(2,v))/Math.LN10*2+5|0,d+=r,i=o=a=new y(1),y.precision=d;;){if(o=Re(o.times(t),d,1),i=i.times(++g),l=a.plus(_t(o,i,d,1)),qt(l.d).slice(0,d)===qt(a.d).slice(0,d)){for(n=v;n--;)a=Re(a.times(a),d,1);if(e==null)if(f<3&&Co(a.d,d-r,S,f))y.precision=d+=10,i=o=l=new y(1),g=0,f++;else return Re(a,y.precision=I,S,Ze=!0);else return y.precision=I,a}a=l}}function Ir(t,e){var i,r,n,o,a,l,d,f,g,v,y,S=1,I=10,x=t,B=x.d,R=x.constructor,j=R.rounding,V=R.precision;if(x.s<0||!B||!B[0]||!x.e&&B[0]==1&&B.length==1)return new R(B&&!B[0]?-1/0:x.s!=1?NaN:B?0:x);if(e==null?(Ze=!1,g=V):g=e,R.precision=g+=I,i=qt(B),r=i.charAt(0),Math.abs(o=x.e)<15e14){for(;r<7&&r!=1||r==1&&i.charAt(1)>3;)x=x.times(t),i=qt(x.d),r=i.charAt(0),S++;o=x.e,r>1?(x=new R("0."+i),o++):x=new R(r+"."+i.slice(1))}else return f=Ps(R,g+2,V).times(o+""),x=Ir(new R(r+"."+i.slice(1)),g-I).plus(f),R.precision=V,e==null?Re(x,V,j,Ze=!0):x;for(v=x,d=a=x=_t(x.minus(1),x.plus(1),g,1),y=Re(x.times(x),g,1),n=3;;){if(a=Re(a.times(y),g,1),f=d.plus(_t(a,new R(n),g,1)),qt(f.d).slice(0,g)===qt(d.d).slice(0,g))if(d=d.times(2),o!==0&&(d=d.plus(Ps(R,g+2,V).times(o+""))),d=_t(d,new R(S),g,1),e==null)if(Co(d.d,g-I,j,l))R.precision=g+=I,f=a=x=_t(v.minus(1),v.plus(1),g,1),y=Re(x.times(x),g,1),n=l=1;else return Re(d,R.precision=V,j,Ze=!0);else return R.precision=V,d;d=f,n+=2}}function nd(t){return String(t.s*t.s/0)}function Cs(t,e){var i,r,n;for((i=e.indexOf("."))>-1&&(e=e.replace(".","")),(r=e.search(/e/i))>0?(i<0&&(i=r),i+=+e.slice(r+1),e=e.substring(0,r)):i<0&&(i=e.length),r=0;e.charCodeAt(r)===48;r++);for(n=e.length;e.charCodeAt(n-1)===48;--n);if(e=e.slice(r,n),e){if(n-=r,t.e=i=i-r-1,t.d=[],r=(i+1)%Be,i<0&&(r+=Be),r<n){for(r&&t.d.push(+e.slice(0,r)),n-=Be;r<n;)t.d.push(+e.slice(r,r+=Be));e=e.slice(r),r=Be-e.length}else r-=n;for(;r--;)e+="0";t.d.push(+e),Ze&&(t.e>t.constructor.maxE?(t.d=null,t.e=NaN):t.e<t.constructor.minE&&(t.e=0,t.d=[0]))}else t.e=0,t.d=[0];return t}function r_(t,e){var i,r,n,o,a,l,d,f,g;if(e.indexOf("_")>-1){if(e=e.replace(/(\d)_(?=\d)/g,"$1"),ed.test(e))return Cs(t,e)}else if(e==="Infinity"||e==="NaN")return+e||(t.s=NaN),t.e=NaN,t.d=null,t;if(Qm.test(e))i=16,e=e.toLowerCase();else if(Jm.test(e))i=2;else if(Ym.test(e))i=8;else throw Error(Pr+e);for(o=e.search(/p/i),o>0?(d=+e.slice(o+1),e=e.substring(2,o)):e=e.slice(2),o=e.indexOf("."),a=o>=0,r=t.constructor,a&&(e=e.replace(".",""),l=e.length,o=l-o,n=id(r,new r(i),o,o*2)),f=Ss(e,i,Fi),g=f.length-1,o=g;f[o]===0;--o)f.pop();return o<0?new r(t.s*0):(t.e=Ns(f,g),t.d=f,Ze=!1,a&&(t=_t(t,n,l*4)),d&&(t=t.times(Math.abs(d)<54?Nt(2,d):Eo.pow(2,d))),Ze=!0,t)}function n_(t,e){var i,r=e.d.length;if(r<3)return e.isZero()?e:Xn(t,2,e,e);i=1.4*Math.sqrt(r),i=i>16?16:i|0,e=e.times(1/Ds(5,i)),e=Xn(t,2,e,e);for(var n,o=new t(5),a=new t(16),l=new t(20);i--;)n=e.times(e),e=e.times(o.plus(n.times(a.times(n).minus(l))));return e}function Xn(t,e,i,r,n){var o,a,l,d,f=t.precision,g=Math.ceil(f/Be);for(Ze=!1,d=i.times(i),l=new t(r);;){if(a=_t(l.times(d),new t(e++*e++),f,1),l=n?r.plus(a):r.minus(a),r=_t(a.times(d),new t(e++*e++),f,1),a=l.plus(r),a.d[g]!==void 0){for(o=g;a.d[o]===l.d[o]&&o--;);if(o==-1)break}o=l,l=r,r=a,a=o}return Ze=!0,a.d.length=g+1,a}function Ds(t,e){for(var i=t;--e;)i*=t;return i}function od(t,e){var i,r=e.s<0,n=Qi(t,t.precision,1),o=n.times(.5);if(e=e.abs(),e.lte(o))return dr=r?4:1,e;if(i=e.divToInt(n),i.isZero())dr=r?3:2;else{if(e=e.minus(i.times(n)),e.lte(o))return dr=Dc(i)?r?2:3:r?4:1,e;dr=Dc(i)?r?1:4:r?3:2}return e.minus(n).abs()}function fu(t,e,i,r){var n,o,a,l,d,f,g,v,y,S=t.constructor,I=i!==void 0;if(I?(ii(i,1,Or),r===void 0?r=S.rounding:ii(r,0,8)):(i=S.precision,r=S.rounding),!t.isFinite())g=nd(t);else{for(g=er(t),a=g.indexOf("."),I?(n=2,e==16?i=i*4-3:e==8&&(i=i*3-2)):n=e,a>=0&&(g=g.replace(".",""),y=new S(1),y.e=g.length-a,y.d=Ss(er(y),10,n),y.e=y.d.length),v=Ss(g,10,n),o=d=v.length;v[--d]==0;)v.pop();if(!v[0])g=I?"0p+0":"0";else{if(a<0?o--:(t=new S(t),t.d=v,t.e=o,t=_t(t,y,i,r,0,n),v=t.d,o=t.e,f=Xc),a=v[i],l=n/2,f=f||v[i+1]!==void 0,f=r<4?(a!==void 0||f)&&(r===0||r===(t.s<0?3:2)):a>l||a===l&&(r===4||f||r===6&&v[i-1]&1||r===(t.s<0?8:7)),v.length=i,f)for(;++v[--i]>n-1;)v[i]=0,i||(++o,v.unshift(1));for(d=v.length;!v[d-1];--d);for(a=0,g="";a<d;a++)g+=uu.charAt(v[a]);if(I){if(d>1)if(e==16||e==8){for(a=e==16?4:3,--d;d%a;d++)g+="0";for(v=Ss(g,n,e),d=v.length;!v[d-1];--d);for(a=1,g="1.";a<d;a++)g+=uu.charAt(v[a])}else g=g.charAt(0)+"."+g.slice(1);g=g+(o<0?"p":"p+")+o}else if(o<0){for(;++o;)g="0"+g;g="0."+g}else if(++o>d)for(o-=d;o--;)g+="0";else o<d&&(g=g.slice(0,o)+"."+g.slice(o))}g=(e==16?"0x":e==2?"0b":e==8?"0o":"")+g}return t.s<0?"-"+g:g}function Lc(t,e){if(t.length>e)return t.length=e,!0}function o_(t){return new this(t).abs()}function s_(t){return new this(t).acos()}function a_(t){return new this(t).acosh()}function u_(t,e){return new this(t).plus(e)}function l_(t){return new this(t).asin()}function c_(t){return new this(t).asinh()}function d_(t){return new this(t).atan()}function h_(t){return new this(t).atanh()}function f_(t,e){t=new this(t),e=new this(e);var i,r=this.precision,n=this.rounding,o=r+4;return!t.s||!e.s?i=new this(NaN):!t.d&&!e.d?(i=Qi(this,o,1).times(e.s>0?.25:.75),i.s=t.s):!e.d||t.isZero()?(i=e.s<0?Qi(this,r,n):new this(0),i.s=t.s):!t.d||e.isZero()?(i=Qi(this,o,1).times(.5),i.s=t.s):e.s<0?(this.precision=o,this.rounding=1,i=this.atan(_t(t,e,o,1)),e=Qi(this,o,1),this.precision=r,this.rounding=n,i=t.s<0?i.minus(e):i.plus(e)):i=this.atan(_t(t,e,o,1)),i}function p_(t){return new this(t).cbrt()}function m_(t){return Re(t=new this(t),t.e+1,2)}function __(t,e,i){return new this(t).clamp(e,i)}function g_(t){if(!t||typeof t!="object")throw Error(Rs+"Object expected");var e,i,r,n=t.defaults===!0,o=["precision",1,Or,"rounding",0,8,"toExpNeg",-Kn,0,"toExpPos",0,Kn,"maxE",0,Kn,"minE",-Kn,0,"modulo",0,9];for(e=0;e<o.length;e+=3)if(i=o[e],n&&(this[i]=lu[i]),(r=t[i])!==void 0)if(Kt(r)===r&&r>=o[e+1]&&r<=o[e+2])this[i]=r;else throw Error(Pr+i+": "+r);if(i="crypto",n&&(this[i]=lu[i]),(r=t[i])!==void 0)if(r===!0||r===!1||r===0||r===1)if(r)if(typeof crypto<"u"&&crypto&&(crypto.getRandomValues||crypto.randomBytes))this[i]=!0;else throw Error(Qc);else this[i]=!1;else throw Error(Pr+i+": "+r);return this}function w_(t){return new this(t).cos()}function v_(t){return new this(t).cosh()}function sd(t){var e,i,r;function n(o){var a,l,d,f=this;if(!(f instanceof n))return new n(o);if(f.constructor=n,jc(o)){f.s=o.s,Ze?!o.d||o.e>n.maxE?(f.e=NaN,f.d=null):o.e<n.minE?(f.e=0,f.d=[0]):(f.e=o.e,f.d=o.d.slice()):(f.e=o.e,f.d=o.d?o.d.slice():o.d);return}if(d=typeof o,d==="number"){if(o===0){f.s=1/o<0?-1:1,f.e=0,f.d=[0];return}if(o<0?(o=-o,f.s=-1):f.s=1,o===~~o&&o<1e7){for(a=0,l=o;l>=10;l/=10)a++;Ze?a>n.maxE?(f.e=NaN,f.d=null):a<n.minE?(f.e=0,f.d=[0]):(f.e=a,f.d=[o]):(f.e=a,f.d=[o]);return}if(o*0!==0){o||(f.s=NaN),f.e=NaN,f.d=null;return}return Cs(f,o.toString())}if(d==="string")return(l=o.charCodeAt(0))===45?(o=o.slice(1),f.s=-1):(l===43&&(o=o.slice(1)),f.s=1),ed.test(o)?Cs(f,o):r_(f,o);if(d==="bigint")return o<0?(o=-o,f.s=-1):f.s=1,Cs(f,o.toString());throw Error(Pr+o)}if(n.prototype=ae,n.ROUND_UP=0,n.ROUND_DOWN=1,n.ROUND_CEIL=2,n.ROUND_FLOOR=3,n.ROUND_HALF_UP=4,n.ROUND_HALF_DOWN=5,n.ROUND_HALF_EVEN=6,n.ROUND_HALF_CEIL=7,n.ROUND_HALF_FLOOR=8,n.EUCLID=9,n.config=n.set=g_,n.clone=sd,n.isDecimal=jc,n.abs=o_,n.acos=s_,n.acosh=a_,n.add=u_,n.asin=l_,n.asinh=c_,n.atan=d_,n.atanh=h_,n.atan2=f_,n.cbrt=p_,n.ceil=m_,n.clamp=__,n.cos=w_,n.cosh=v_,n.div=y_,n.exp=b_,n.floor=M_,n.hypot=k_,n.ln=A_,n.log=S_,n.log10=T_,n.log2=C_,n.max=E_,n.min=x_,n.mod=I_,n.mul=P_,n.pow=O_,n.random=R_,n.round=N_,n.sign=D_,n.sin=L_,n.sinh=j_,n.sqrt=B_,n.sub=F_,n.sum=q_,n.tan=U_,n.tanh=$_,n.trunc=V_,t===void 0&&(t={}),t&&t.defaults!==!0)for(r=["precision","rounding","toExpNeg","toExpPos","maxE","minE","modulo","crypto"],e=0;e<r.length;)t.hasOwnProperty(i=r[e++])||(t[i]=this[i]);return n.config(t),n}function y_(t,e){return new this(t).div(e)}function b_(t){return new this(t).exp()}function M_(t){return Re(t=new this(t),t.e+1,3)}function k_(){var t,e,i=new this(0);for(Ze=!1,t=0;t<arguments.length;)if(e=new this(arguments[t++]),e.d)i.d&&(i=i.plus(e.times(e)));else{if(e.s)return Ze=!0,new this(1/0);i=e}return Ze=!0,i.sqrt()}function jc(t){return t instanceof Eo||t&&t.toStringTag===Yc||!1}function A_(t){return new this(t).ln()}function S_(t,e){return new this(t).log(e)}function C_(t){return new this(t).log(2)}function T_(t){return new this(t).log(10)}function E_(){return rd(this,arguments,-1)}function x_(){return rd(this,arguments,1)}function I_(t,e){return new this(t).mod(e)}function P_(t,e){return new this(t).mul(e)}function O_(t,e){return new this(t).pow(e)}function R_(t){var e,i,r,n,o=0,a=new this(1),l=[];if(t===void 0?t=this.precision:ii(t,1,Or),r=Math.ceil(t/Be),this.crypto)if(crypto.getRandomValues)for(e=crypto.getRandomValues(new Uint32Array(r));o<r;)n=e[o],n>=429e7?e[o]=crypto.getRandomValues(new Uint32Array(1))[0]:l[o++]=n%1e7;else if(crypto.randomBytes){for(e=crypto.randomBytes(r*=4);o<r;)n=e[o]+(e[o+1]<<8)+(e[o+2]<<16)+((e[o+3]&127)<<24),n>=214e7?crypto.randomBytes(4).copy(e,o):(l.push(n%1e7),o+=4);o=r/4}else throw Error(Qc);else for(;o<r;)l[o++]=Math.random()*1e7|0;for(r=l[--o],t%=Be,r&&t&&(n=Nt(10,Be-t),l[o]=(r/n|0)*n);l[o]===0;o--)l.pop();if(o<0)i=0,l=[0];else{for(i=-1;l[0]===0;i-=Be)l.shift();for(r=1,n=l[0];n>=10;n/=10)r++;r<Be&&(i-=Be-r)}return a.e=i,a.d=l,a}function N_(t){return Re(t=new this(t),t.e+1,this.rounding)}function D_(t){return t=new this(t),t.d?t.d[0]?t.s:0*t.s:t.s||NaN}function L_(t){return new this(t).sin()}function j_(t){return new this(t).sinh()}function B_(t){return new this(t).sqrt()}function F_(t,e){return new this(t).sub(e)}function q_(){var t=0,e=arguments,i=new this(e[t]);for(Ze=!1;i.s&&++t<e.length;)i=i.plus(e[t]);return Ze=!0,Re(i,this.precision,this.rounding)}function U_(t){return new this(t).tan()}function $_(t){return new this(t).tanh()}function V_(t){return Re(t=new this(t),t.e+1,1)}ae[Symbol.for("nodejs.util.inspect.custom")]=ae.toString;ae[Symbol.toStringTag]="Decimal";var Eo=ae.constructor=sd(lu);xs=new Eo(xs);Is=new Eo(Is);var ad=Eo;function Z_(t,e,i){return Number(ud(new ad(t.toString()),e,i).toFixed(0))}function nu(t,e,i){let r=ud(new ad(t.toString()),e,i);return new Xm.default(r.toFixed(0))}function ud(t,e,i){return e?t.mul(1-i):t.mul(1+i)}var ou=class{constructor(t,e){this.globalConfig=t===0?"0xdaa46292632c3c4d8f31f23ea0f9b36a28ff3677e9684980e4438403a67a3d8f":"0xc6273f844b4bc258952c4e477697aa12c918c8e08106fac6b934811298c9820a",this.partner=e??(t===0?"0x639b5e433da31739e800cd085f356e64cae222966d0f1b11bd9dc76b322ff58b":"0xfdc30896f88f74544fd507722d3bf52e46b06412ba8241ba0e854cbc65f8d85f")}swap(t,e,i,r){let n=this.prepareSwapData(e);this.executeSwapContract(t,n,i)}prepareSwapData(t){if(t.path.publishedAt==null)throw new Error("Cetus not set publishedAt");let e=t.path,[i,r]=e.direction?[e.from,e.target]:[e.target,e.from],n=t.isLastUseOfIntermediateToken?ct.MAX_AMOUNT_IN:e.amountIn;return{coinAType:i,coinBType:r,direction:e.direction,amountIn:n,publishedAt:e.publishedAt,poolId:e.id}}executeSwapContract(t,e,i){let r=[i,t.object(this.globalConfig),t.object(e.poolId),t.object(this.partner),t.pure.bool(e.direction),t.pure.u64(e.amountIn),t.object(ft)];t.moveCall({target:`${e.publishedAt}::cetus::swap`,typeArguments:[e.coinAType,e.coinBType],arguments:r})}flashSwapFixedOutput(t,e,i,r){let n=[r,t.object(this.globalConfig),t.object(e.id),t.object(this.partner),i,t.pure.bool(e.direction),t.pure.bool(!1),t.object(ft)],[o,a]=e.direction?[e.from,e.target]:[e.target,e.from],[l,d]=t.moveCall({target:`${e.publishedAt}::cetus::flash_swap_fixed_output`,typeArguments:[o,a],arguments:n});return{flashReceipt:l,repayAmount:d}}repayFlashSwapFixedOutput(t,e,i,r){let n=[i,t.object(this.globalConfig),t.object(e.id),t.object(this.partner),t.pure.bool(e.direction),r],[o,a]=e.direction?[e.from,e.target]:[e.target,e.from];t.moveCall({target:`${e.publishedAt}::cetus::repay_flash_swap_fixed_output`,typeArguments:[o,a],arguments:n})}add(t,e,i,r){let n=[e,i];return t.moveCall({target:`${r}::cetus::add`,typeArguments:[],arguments:n})}sub(t,e,i,r){let n=[e,i];return t.moveCall({target:`${r}::cetus::sub`,typeArguments:[],arguments:n})}},H_=class{constructor(t){if(t!==0)throw new Error("Kriya V3 only supported on mainnet");this.version="0xf5145a7ac345ca8736cf8c76047d00d6d378f30e81be6f6eb557184d9de93c78"}swap(t,e,i,r){let n=this.prepareSwapData(e);this.executeSwapContract(t,n,i)}prepareSwapData(t){if(t.path.publishedAt==null)throw new Error("Kriya V3 not set publishedAt");let e=t.path,[i,r]=e.direction?[e.from,e.target]:[e.target,e.from],n=t.isLastUseOfIntermediateToken?ct.MAX_AMOUNT_IN:e.amountIn;return{coinAType:i,coinBType:r,direction:e.direction,amountIn:n,publishedAt:e.publishedAt,poolId:e.id}}executeSwapContract(t,e,i){let r=[i,t.object(e.poolId),t.object(this.version),t.pure.bool(e.direction),t.pure.u64(e.amountIn),t.object(ft)];t.moveCall({target:`${e.publishedAt}::kriya_clmm::swap`,typeArguments:[e.coinAType,e.coinBType],arguments:r})}},W_=class{constructor(t){if(t!==0)throw new Error("FlowX V3 only supported on mainnet");this.poolRegistry="0x27565d24a4cd51127ac90e4074a841bbe356cca7bf5759ddc14a975be1632abc",this.versioned="0x67624a1533b5aff5d0dfcf5e598684350efd38134d2d245f475524c03a64e656"}swap(t,e,i,r){let n=this.prepareSwapData(e);this.executeSwapContract(t,n,i)}prepareSwapData(t){if(t.path.publishedAt==null)throw new Error("FlowX V3 not set publishedAt");let e=t.path,[i,r]=e.direction?[e.from,e.target]:[e.target,e.from],n=t.isLastUseOfIntermediateToken?ct.MAX_AMOUNT_IN:e.amountIn,o=e.feeRate*1e6;return{coinAType:i,coinBType:r,direction:e.direction,amountIn:n,publishedAt:e.publishedAt,poolId:e.id,feeRate:o}}executeSwapContract(t,e,i){let r=[i,t.object(this.poolRegistry),t.object(this.versioned),t.pure.u64(e.feeRate),t.pure.u64(e.amountIn),t.pure.bool(e.direction),t.object(ft)];t.moveCall({target:`${e.publishedAt}::flowx_clmm::swap`,typeArguments:[e.coinAType,e.coinBType],arguments:r})}},G_=class{constructor(t){if(t!==0)throw new Error("Turbos only supported on mainnet");this.versioned="0xf1cf0e81048df168ebeb1b8030fad24b3e0b53ae827c25053fff0779c1445b6f"}swap(t,e,i,r){let n=this.prepareSwapData(e);this.executeSwapContract(t,n,i)}prepareSwapData(t){if(t.path.publishedAt==null)throw new Error("Turbos not set publishedAt");let e=t.path,[i,r]=e.direction?[e.from,e.target]:[e.target,e.from],n=t.isLastUseOfIntermediateToken?ct.MAX_AMOUNT_IN:e.amountIn;if(e.extendedDetails==null)throw new Error("Extended details not supported");if(e.extendedDetails.turbos_fee_type==null)throw new Error("Turbos fee type not supported");let o=e.extendedDetails.turbos_fee_type;return{coinAType:i,coinBType:r,feeType:o,direction:e.direction,amountIn:n,publishedAt:e.publishedAt,poolId:e.id}}executeSwapContract(t,e,i){let r=[i,t.object(e.poolId),t.object(this.versioned),t.pure.bool(e.direction),t.pure.u64(e.amountIn),t.object(ft)];t.moveCall({target:`${e.publishedAt}::turbos::swap`,typeArguments:[e.coinAType,e.coinBType,e.feeType],arguments:r})}},z_=class{constructor(t){if(t!==0)throw new Error("Bluefin only supported on mainnet");this.globalConfig="0x03db251ba509a8d5d8777b6338836082335d93eecbdd09a11e190a1cff51c352"}swap(t,e,i,r){let n=this.prepareSwapData(e);this.executeSwapContract(t,n,i)}prepareSwapData(t){if(t.path.publishedAt==null)throw new Error("Bluefin not set publishedAt");let e=t.path,[i,r]=e.direction?[e.from,e.target]:[e.target,e.from],n=t.isLastUseOfIntermediateToken?ct.MAX_AMOUNT_IN:e.amountIn;return{coinAType:i,coinBType:r,direction:e.direction,amountIn:n,publishedAt:e.publishedAt,poolId:e.id}}executeSwapContract(t,e,i){let r=[i,t.object(this.globalConfig),t.object(e.poolId),t.pure.bool(e.direction),t.pure.u64(e.amountIn),t.object(ft)];t.moveCall({target:`${e.publishedAt}::bluefin::swap`,typeArguments:[e.coinAType,e.coinBType],arguments:r})}},K_=class{constructor(t){if(t!==0)throw new Error("Momentum only supported on mainnet");this.version="0x2375a0b1ec12010aaea3b2545acfa2ad34cfbba03ce4b59f4c39e1e25eed1b2a"}swap(t,e,i,r){let n=this.prepareSwapData(e);this.executeSwapContract(t,n,i)}prepareSwapData(t){let e=t.path;if(t.path.publishedAt==null)throw new Error("Momentum not set publishedAt");let[i,r]=e.direction?[e.from,e.target]:[e.target,e.from],n=t.isLastUseOfIntermediateToken?ct.MAX_AMOUNT_IN:e.amountIn;return{coinAType:i,coinBType:r,direction:e.direction,amountIn:n,publishedAt:e.publishedAt,poolId:e.id}}executeSwapContract(t,e,i){let r=[i,t.object(e.poolId),t.pure.bool(e.direction),t.pure.u64(e.amountIn),t.object(this.version),t.object(ft)];t.moveCall({target:`${e.publishedAt}::momentum::swap`,typeArguments:[e.coinAType,e.coinBType],arguments:r})}},X_=class{constructor(t){if(t!==0)throw new Error("Magma only supported on mainnet");this.globalConfig="0x4c4e1402401f72c7d8533d0ed8d5f8949da363c7a3319ccef261ffe153d32f8a"}swap(t,e,i,r){let n=this.prepareSwapData(e);this.executeSwapContract(t,n,i)}prepareSwapData(t){let e=t.path;if(t.path.publishedAt==null)throw new Error("Magma not set publishedAt");let[i,r]=e.direction?[e.from,e.target]:[e.target,e.from],n=t.isLastUseOfIntermediateToken?ct.MAX_AMOUNT_IN:e.amountIn;return{coinAType:i,coinBType:r,direction:e.direction,amountIn:n,publishedAt:e.publishedAt,poolId:e.id}}executeSwapContract(t,e,i){let r=[i,t.object(this.globalConfig),t.object(e.poolId),t.pure.bool(e.direction),t.pure.u64(e.amountIn),t.object(ft)];t.moveCall({target:`${e.publishedAt}::magma::swap`,typeArguments:[e.coinAType,e.coinBType],arguments:r})}},J_=class{constructor(t){if(t!==0)throw new Error("Kriya V2 only supported on mainnet")}swap(t,e,i,r){let n=this.prepareSwapData(e);this.executeSwapContract(t,n,i)}prepareSwapData(t){let e=t.path;if(t.path.publishedAt==null)throw new Error("Kriya V2 not set publishedAt");let[i,r]=e.direction?[e.from,e.target]:[e.target,e.from],n=t.isLastUseOfIntermediateToken?ct.MAX_AMOUNT_IN:e.amountIn;return{coinAType:i,coinBType:r,direction:e.direction,amountIn:n,publishedAt:e.publishedAt,poolId:e.id}}executeSwapContract(t,e,i){let r=[i,t.object(e.poolId),t.pure.bool(e.direction),t.pure.u64(e.amountIn)];t.moveCall({target:`${e.publishedAt}::kriya_amm::swap`,typeArguments:[e.coinAType,e.coinBType],arguments:r})}},Q_=class{constructor(t){if(t!==0)throw new Error("FlowX V2 only supported on mainnet");this.container="0xb65dcbf63fd3ad5d0ebfbf334780dc9f785eff38a4459e37ab08fa79576ee511"}swap(t,e,i,r){let n=this.prepareSwapData(e);this.executeSwapContract(t,n,i)}prepareSwapData(t){let e=t.path;if(t.path.publishedAt==null)throw new Error("FlowX V2 not set publishedAt");let[i,r]=e.direction?[e.from,e.target]:[e.target,e.from],n=t.isLastUseOfIntermediateToken?ct.MAX_AMOUNT_IN:e.amountIn;return{coinAType:i,coinBType:r,direction:e.direction,amountIn:n,publishedAt:e.publishedAt,poolId:e.id}}executeSwapContract(t,e,i){let r=[i,t.object(this.container),t.pure.bool(e.direction),t.pure.u64(e.amountIn)];t.moveCall({target:`${e.publishedAt}::flowx_amm::swap`,typeArguments:[e.coinAType,e.coinBType],arguments:r})}},Y_=class{constructor(t){if(t!==0)throw new Error("BlueMove only supported on mainnet");this.dexInfo="0x3f2d9f724f4a1ce5e71676448dc452be9a6243dac9c5b975a588c8c867066e92"}swap(t,e,i,r){let n=this.prepareSwapData(e);this.executeSwapContract(t,n,i)}prepareSwapData(t){let e=t.path;if(t.path.publishedAt==null)throw new Error("BlueMove not set publishedAt");let[i,r]=e.direction?[e.from,e.target]:[e.target,e.from],n=t.isLastUseOfIntermediateToken?ct.MAX_AMOUNT_IN:e.amountIn;return{coinAType:i,coinBType:r,direction:e.direction,amountIn:n,publishedAt:e.publishedAt,poolId:e.id}}executeSwapContract(t,e,i){let r=[i,t.object(this.dexInfo),t.pure.bool(e.direction),t.pure.u64(e.amountIn)];t.moveCall({target:`${e.publishedAt}::bluemove::swap`,typeArguments:[e.coinAType,e.coinBType],arguments:r})}},eg=class{constructor(t){if(t!==0)throw new Error("DeepBook V3 only supported on mainnet");this.env=t,this.globalConfig="0x699d455ab8c5e02075b4345ea1f91be55bf46064ae6026cc2528e701ce3ac135"}swap(t,e,i,r){let n=this.prepareSwapData(e);n.needAddDeepPricePoint&&this.addDeepPricePoint(t,n),this.executeSwapContract(t,n,i,r)}prepareSwapData(t){if(t.path.publishedAt==null)throw new Error("DeepBook V3 not set publishedAt");let e=t.path,[i,r]=e.direction?[e.from,e.target]:[e.target,e.from],n=t.isLastUseOfIntermediateToken?ct.MAX_AMOUNT_IN:e.amountIn,o=e.extendedDetails?.deepbookv3_need_add_deep_price_point??!1,a=e.extendedDetails?.deepbookv3_reference_pool_id,l=e.extendedDetails?.deepbookv3_reference_pool_base_type,d=e.extendedDetails?.deepbookv3_reference_pool_quote_type;if(o){if(!a)throw new Error("DeepBook V3: deepbookv3_reference_pool_id is required when deepbookv3_need_add_deep_price_point is true");if(!l)throw new Error("DeepBook V3: reference_pool_base_type is required when deepbookv3_need_add_deep_price_point is true");if(!d)throw new Error("DeepBook V3: reference_pool_quote_type is required when deepbookv3_need_add_deep_price_point is true")}return{coinAType:i,coinBType:r,direction:e.direction,amountIn:n,publishedAt:e.publishedAt,poolId:e.id,needAddDeepPricePoint:o,referencePoolId:a,referencePoolBaseType:l,referencePoolQuoteType:d}}addDeepPricePoint(t,e){t.moveCall({target:`${e.publishedAt}::deepbookv3::add_deep_price_point_v2`,typeArguments:[e.coinAType,e.coinBType,e.referencePoolBaseType,e.referencePoolQuoteType],arguments:[t.object(e.poolId),t.object(e.referencePoolId),t.object(ft)]})}executeSwapContract(t,e,i,r){let n=r?.deepbookv3DeepFee||t.moveCall({target:"0x2::coin::zero",typeArguments:[this.getDeepFeeType()]}),o=[i,t.object(this.globalConfig),t.object(e.poolId),t.pure.u64(e.amountIn),t.pure.bool(e.direction),n,t.object(ft)];t.moveCall({target:`${e.publishedAt}::deepbookv3::swap`,typeArguments:[e.coinAType,e.coinBType],arguments:o})}getDeepFeeType(){return this.env===0?Es.Mainnet:Es.Testnet}},tg=class{constructor(t){if(t!==0)throw new Error("Aftermath only supported on mainnet");this.poolRegistry="0xfcc774493db2c45c79f688f88d28023a3e7d98e4ee9f48bbf5c7990f651577ae",this.protocolFeeVault="0xf194d9b1bcad972e45a7dd67dd49b3ee1e3357a00a50850c52cd51bb450e13b4",this.treasury="0x28e499dff5e864a2eafe476269a4f5035f1c16f338da7be18b103499abf271ce",this.insuranceFund="0xf0c40d67b078000e18032334c3325c47b9ec9f3d9ae4128be820d54663d14e3b",this.referralVault="0x35d35b0e5b177593d8c3a801462485572fc30861e6ce96a55af6dc4730709278"}swap(t,e,i,r){let n=this.prepareSwapData(e);this.executeSwapContract(t,n,i)}prepareSwapData(t){if(t.path.publishedAt==null)throw new Error("Aftermath not set publishedAt");let e=t.path,[i,r]=e.direction?[e.from,e.target]:[e.target,e.from],n=t.isLastUseOfIntermediateToken?"18446744073709551615":e.amountIn;return{coinAType:i,coinBType:r,feeType:e.extendedDetails?.aftermath_lp_supply_type||e.extendedDetails?.aftermath_lp_supply_type||"0x2::sui::SUI",direction:e.direction,amountIn:n,expectAmountOut:e.amountOut,publishedAt:e.publishedAt,poolId:e.id}}executeSwapContract(t,e,i){let r=[i,t.object(e.poolId),t.object(this.poolRegistry),t.object(this.protocolFeeVault),t.object(this.treasury),t.object(this.insuranceFund),t.object(this.referralVault),t.pure.bool(e.direction),t.pure.u64(e.amountIn),t.pure.u64(e.expectAmountOut)];t.moveCall({target:`${e.publishedAt}::aftermath::swap`,typeArguments:[e.coinAType,e.coinBType,e.feeType],arguments:r})}},ig=class{constructor(t){if(t!==0)throw new Error("Steamm CPMM only supported on mainnet")}swap(t,e,i,r){let n=this.prepareSwapData(e);this.executeSwapContract(t,n,i)}validateExtendedDetails(t){let e=["steamm_bank_a","steamm_bank_b","steamm_lending_market","steamm_lending_market_type","steamm_btoken_a_type","steamm_btoken_b_type","steamm_lp_token_type"];for(let i of e)if(t[i]==null)throw new Error(`Steamm CPMM ${i} not supported`)}prepareSwapData(t){let e=t.path;if(t.path.publishedAt==null)throw new Error("Steamm CPMM not set publishedAt");if(!e.extendedDetails)throw new Error("Extended details not found for Steamm CPMM");this.validateExtendedDetails(e.extendedDetails);let{direction:i,from:r,target:n}=e,[o,a]=i?[r,n]:[n,r],l=t.isLastUseOfIntermediateToken?ct.MAX_AMOUNT_IN:e.amountIn;return{coinAType:o,coinBType:a,direction:i,amountIn:l,publishedAt:e.publishedAt,poolId:e.id,extendedDetails:e.extendedDetails}}executeSwapContract(t,e,i){let r=[i,t.object(e.poolId),t.object(e.extendedDetails.steamm_bank_a),t.object(e.extendedDetails.steamm_bank_b),t.object(e.extendedDetails.steamm_lending_market),t.pure.bool(e.direction),t.pure.u64(e.amountIn),t.object(ft)];t.moveCall({target:`${e.publishedAt}::steamm_cpmm::swap`,typeArguments:[e.extendedDetails.steamm_lending_market_type,e.coinAType,e.coinBType,e.extendedDetails.steamm_btoken_a_type,e.extendedDetails.steamm_btoken_b_type,e.extendedDetails.steamm_lp_token_type],arguments:r})}},rg=class{constructor(t){if(t!==0)throw new Error("Scallop only supported on mainnet");this.version="0x07871c4b3c847a0f674510d4978d5cf6f960452795e8ff6f189fd2088a3f6ac7",this.marketData="0xa757975255146dc9686aa823b7838b507f315d704f428cbadad2f4ea061939d9"}swap(t,e,i,r){let n=this.prepareSwapData(e);this.executeSwapContract(t,n,i)}prepareSwapData(t){let e=t.path;if(t.path.publishedAt==null)throw new Error("Scallop not set publishedAt");let[i,r]=e.direction?[e.from,e.target]:[e.from,e.target],n=t.isLastUseOfIntermediateToken?ct.MAX_AMOUNT_IN:e.amountIn;if(e.extendedDetails==null)throw new Error("Extended details not supported");let o=e.extendedDetails.scallop_scoin_treasury;if(o==null)throw new Error("Scallop scoin treasury not supported");return{coinAType:i,coinBType:r,direction:e.direction,amountIn:n,publishedAt:e.publishedAt,poolId:e.id,scallopScoinTreasury:o}}executeSwapContract(t,e,i){let r=[i,t.object(this.version),t.object(this.marketData),t.object(e.scallopScoinTreasury),t.pure.u64(e.amountIn),t.object(ft)],n=e.direction?"swap_a2b":"swap_b2a";t.moveCall({target:`${e.publishedAt}::scallop::${n}`,typeArguments:[e.coinAType,e.coinBType],arguments:r})}},Bc=class{constructor(t){if(t!==0)throw new Error("Springsui only supported on mainnet")}swap(t,e,i,r){let n=this.prepareSwapData(e);this.executeSwapContract(t,n,i)}prepareSwapData(t){let e=t.path;if(t.path.publishedAt==null)throw new Error("Springsui not set publishedAt");let i=e.direction?e.target:e.from,r=t.isLastUseOfIntermediateToken?ct.MAX_AMOUNT_IN:e.amountIn;return{springSUICoinType:i,direction:e.direction,amountIn:r,publishedAt:e.publishedAt,poolId:e.id}}executeSwapContract(t,e,i){let r=[i,t.object(e.poolId),t.object("0x5"),t.pure.u64(e.amountIn),t.pure.bool(e.direction)];t.moveCall({target:`${e.publishedAt}::springsui::swap`,typeArguments:[e.springSUICoinType],arguments:r})}},ng=class{constructor(t,e){if(t!==0)throw new Error("Haedal PMM only supported on mainnet");this.pythPriceIDs=e}swap(t,e,i,r){let n=e.path;if(!n.extendedDetails)throw new Error("Extended details not found for Haedal PMM");this.validateExtendedDetails(n.extendedDetails);let o=this.prepareSwapData(e);this.executeSwapContract(t,o,i)}validateExtendedDetails(t){if(!t.haedal_pmm_base_price_seed)throw new Error("Haedal PMM base price seed not supported");if(!t.haedal_pmm_quote_price_seed)throw new Error("Haedal PMM quote price seed not supported")}prepareSwapData(t){let e=t.path;if(t.path.publishedAt==null)throw new Error("Haedal PMM not set publishedAt");let i=e.extendedDetails,[r,n]=e.direction?[e.from,e.target]:[e.target,e.from],o=t.isLastUseOfIntermediateToken?ct.MAX_AMOUNT_IN:e.amountIn,a=i.haedal_pmm_base_price_seed,l=i.haedal_pmm_quote_price_seed,d=this.pythPriceIDs.get(a),f=this.pythPriceIDs.get(l);if(!d||!f)throw new Error("Haedal HMM requires oracle price IDs for both coins");return{coinAType:r,coinBType:n,basePriceId:d,quotePriceId:f,a2b:e.direction,amountIn:o,publishedAt:e.publishedAt,poolId:e.id}}executeSwapContract(t,e,i){let r=[i,t.object(e.poolId),t.object(e.basePriceId),t.object(e.quotePriceId),t.pure.u64(e.amountIn),t.pure.bool(e.a2b),t.object(ft)];t.moveCall({target:`${e.publishedAt}::haedal_hmm::swap`,typeArguments:[e.coinAType,e.coinBType],arguments:r})}},og=class{constructor(t,e){if(t===1)throw new Error("Obric is not supported on testnet");this.pythStateObjectId="0x1f9310238ee9298fb703c3419030b35b22bb1cc37113e3bb5007c99aec79e5b8",this.pythPriceIDs=e}swap(t,e,i,r){let n=this.prepareSwapData(e);this.executeSwapContract(t,n,i)}prepareSwapData(t){let e=t.path;if(t.path.publishedAt==null)throw new Error("Obric not set publishedAt");if(!e.extendedDetails)throw new Error("Extended details not supported in obric");let{direction:i,from:r,target:n}=e,[o,a]=i?[r,n]:[n,r],l=t.isLastUseOfIntermediateToken?ct.MAX_AMOUNT_IN:e.amountIn,d,f;if(e.extendedDetails.obric_coin_a_price_seed&&e.extendedDetails.obric_coin_b_price_seed)d=this.pythPriceIDs.get(e.extendedDetails.obric_coin_a_price_seed),f=this.pythPriceIDs.get(e.extendedDetails.obric_coin_b_price_seed);else if(e.extendedDetails.obric_coin_a_price_id&&e.extendedDetails.obric_coin_b_price_id)d=e.extendedDetails.obric_coin_a_price_id,f=e.extendedDetails.obric_coin_b_price_id;else throw new Error("Base price id or quote price id not supported");return{coinAType:o,coinBType:a,coinAPriceInfoObjectId:d,coinBPriceInfoObjectId:f,direction:i,amountIn:l,publishedAt:e.publishedAt,poolId:e.id,extendedDetails:e.extendedDetails}}executeSwapContract(t,e,i){if(!e.coinAPriceInfoObjectId||!e.coinBPriceInfoObjectId)throw new Error("Base price info object id or quote price info object id not found");let r=[i,t.object(e.poolId),t.pure.u64(e.amountIn),t.pure.bool(e.direction),t.object(this.pythStateObjectId),t.object(e.coinAPriceInfoObjectId),t.object(e.coinBPriceInfoObjectId),t.object(ft)];t.moveCall({target:`${e.publishedAt}::obric::swap`,typeArguments:[e.coinAType,e.coinBType],arguments:r})}},sg=class{constructor(t,e){if(t!==0)throw new Error("Sevenk only supported on mainnet");this.oraclePublishedAt="0x8c36ea167c5e6da8c3d60b4fc897416105dcb986471bd81cfbfd38720a4487c0",this.pythPriceIDs=e}swap(t,e,i,r){let n=this.prepareSwapData(e);this.executeSwapContract(t,n,i,r)}prepareSwapData(t){let e=t.path;if(t.path.publishedAt==null)throw new Error("Sevenk not set publishedAt");if(!e.extendedDetails)throw new Error("Extended details not found for Sevenk");let{direction:i,from:r,target:n}=e,[o,a,l]=i?["swap_a2b",r,n]:["swap_b2a",n,r],d=t.isLastUseOfIntermediateToken?ct.MAX_AMOUNT_IN:e.amountIn,f=e.extendedDetails;if(!f.sevenk_coin_a_price_seed||!f.sevenk_coin_b_price_seed||!f.sevenk_oracle_config_a||!f.sevenk_oracle_config_b||!f.sevenk_lp_cap_type)throw new Error("Required Sevenk extended details not found");let g=f.sevenk_coin_a_price_seed,v=f.sevenk_coin_b_price_seed,y=f.sevenk_oracle_config_a,S=f.sevenk_oracle_config_b,I=f.sevenk_lp_cap_type,x=this.pythPriceIDs.get(g),B=this.pythPriceIDs.get(v);if(!x||!B)throw new Error("Sevenk price info object IDs not found");return{func:o,coinAType:a,coinBType:l,coinAPriceId:x,coinBPriceId:B,coinAOracleId:y,coinBOracleId:S,lpCapType:I,direction:i,amountIn:d,publishedAt:e.publishedAt,poolId:e.id,extendedDetails:e.extendedDetails}}executeSwapContract(t,e,i,r){let n=t.moveCall({target:`${this.oraclePublishedAt}::oracle::new_holder`,typeArguments:[],arguments:[]});t.moveCall({target:`${this.oraclePublishedAt}::pyth::get_price`,typeArguments:[],arguments:[t.object(e.coinAOracleId),n,t.object(e.coinAPriceId),t.object(ft)]}),t.moveCall({target:`${this.oraclePublishedAt}::pyth::get_price`,typeArguments:[],arguments:[t.object(e.coinBOracleId),n,t.object(e.coinBPriceId),t.object(ft)]});let o=[i,t.object(e.poolId),n,t.pure.u64(e.amountIn)];t.moveCall({target:`${e.publishedAt}::sevenk::${e.func}`,typeArguments:[e.coinAType,e.coinBType,e.lpCapType],arguments:o})}},ag=class{constructor(t,e){if(t!==0)throw new Error("Steamm OMM only supported on mainnet");this.pythPriceIDs=e,this.oraclePackageId="0xe84b649199654d18c38e727212f5d8dacfc3cf78d60d0a7fc85fd589f280eb2b"}swap(t,e,i,r){let n=e.path;if(!n.extendedDetails)throw new Error("Extended details not found for Steamm OMM");this.validateExtendedDetails(n.extendedDetails);let o=this.prepareSwapData(e);this.executeSwapContract(t,o,i)}validateExtendedDetails(t){let e=["steamm_bank_a","steamm_bank_b","steamm_lending_market","steamm_lending_market_type","steamm_btoken_a_type","steamm_btoken_b_type","steamm_lp_token_type","steammOracleRegistryId","steammOracleIndexA","steammOracleIndexB","steammOraclePythPriceSeedA","steammOraclePythPriceSeedB"];for(let i of e)if(t[i]==null)throw new Error(`Steamm ${i} not supported`)}prepareSwapData(t){let e=t.path;if(t.path.publishedAt==null)throw new Error("Steamm OMM not set publishedAt");let i=e.extendedDetails,{direction:r,from:n,target:o}=e,[a,l,d]=r?["swap_a2b_v2",n,o]:["swap_b2a_v2",o,n],f=t.isLastUseOfIntermediateToken?ct.MAX_AMOUNT_IN:e.amountIn,g=i.steamm_oracle_pyth_price_seed_a,v=i.steamm_oracle_pyth_price_seed_b;if(!g||!v)throw new Error("Steamm oracle price seeds not found");let y=this.pythPriceIDs.get(g),S=this.pythPriceIDs.get(v);if(!y||!S)throw new Error("Base price info object id or quote price info object id not found");return{func:a,coinAType:l,coinBType:d,direction:r,amountIn:f,publishedAt:e.publishedAt,poolId:e.id,extendedDetails:i,priceInfoObjectIdA:y,priceInfoObjectIdB:S}}executeSwapContract(t,e,i){let r=e.extendedDetails,n=t.moveCall({target:`${this.oraclePackageId}::oracles::get_pyth_price`,typeArguments:[],arguments:[t.object(r.steammOracleRegistryId),t.object(e.priceInfoObjectIdA),t.pure.u64(r.steammOracleIndexA),t.object(ft)]}),o=t.moveCall({target:`${this.oraclePackageId}::oracles::get_pyth_price`,typeArguments:[],arguments:[t.object(r.steammOracleRegistryId),t.object(e.priceInfoObjectIdB),t.pure.u64(r.steammOracleIndexB),t.object(ft)]}),a=[i,t.object(e.poolId),t.object(r.steamm_bank_a),t.object(r.steamm_bank_b),t.object(r.steamm_lending_market),n,o,t.pure.u64(e.amountIn),t.object(ft)];t.moveCall({target:`${e.publishedAt}::steamm_omm::${e.func}`,typeArguments:[r.steamm_lending_market_type,e.coinAType,e.coinBType,r.steamm_btoken_a_type,r.steamm_btoken_b_type,r.steamm_lp_token_type],arguments:a})}},ug=class{constructor(t,e){if(t!==0)throw new Error("Steamm OMM V2 only supported on mainnet");this.pythPriceIDs=e,this.oraclePackageId="0xe84b649199654d18c38e727212f5d8dacfc3cf78d60d0a7fc85fd589f280eb2b"}swap(t,e,i,r){let n=e.path;if(!n.extendedDetails)throw new Error("Extended details not found for Steamm OMM V2");this.validateExtendedDetails(n.extendedDetails);let o=this.prepareSwapData(e);this.executeSwapContract(t,o,i)}validateExtendedDetails(t){let e=["steamm_bank_a","steamm_bank_b","steamm_lending_market","steamm_lending_market_type","steamm_btoken_a_type","steamm_btoken_b_type","steamm_lp_token_type","steamm_oracle_registry_id","steamm_oracle_index_a","steamm_oracle_index_b","steamm_oracle_pyth_price_seed_a","steamm_oracle_pyth_price_seed_b"];for(let i of e)if(t[i]==null)throw new Error(`Steamm OMM V2 ${i} not supported`)}prepareSwapData(t){let e=t.path;if(t.path.publishedAt==null)throw new Error("Steamm OMM V2 not set publishedAt");let i=e.extendedDetails,{direction:r,from:n,target:o}=e,[a,l]=r?[n,o]:[o,n],d=t.isLastUseOfIntermediateToken?ct.MAX_AMOUNT_IN:e.amountIn,f=i.steamm_oracle_pyth_price_seed_a,g=i.steamm_oracle_pyth_price_seed_b;if(!f||!g)throw new Error("Steamm OMM V2 oracle price seeds not found");let v=this.pythPriceIDs.get(f),y=this.pythPriceIDs.get(g);if(!v||!y)throw new Error("Base price info object id or quote price info object id not found");return{coinAType:a,coinBType:l,direction:r,amountIn:d,publishedAt:e.publishedAt,poolId:e.id,extendedDetails:i,priceInfoObjectIdA:v,priceInfoObjectIdB:y}}executeSwapContract(t,e,i){let r=e.extendedDetails,n=t.moveCall({target:`${this.oraclePackageId}::oracles::get_pyth_price`,typeArguments:[],arguments:[t.object(r.steamm_oracle_registry_id),t.object(e.priceInfoObjectIdA),t.pure.u64(r.steamm_oracle_index_a),t.object(ft)]}),o=t.moveCall({target:`${this.oraclePackageId}::oracles::get_pyth_price`,typeArguments:[],arguments:[t.object(r.steamm_oracle_registry_id),t.object(e.priceInfoObjectIdB),t.pure.u64(r.steamm_oracle_index_b),t.object(ft)]}),a=[i,t.object(e.poolId),t.object(r.steamm_bank_a),t.object(r.steamm_bank_b),t.object(r.steamm_lending_market),n,o,t.pure.bool(e.direction),t.pure.u64(e.amountIn),t.object(ft)];t.moveCall({target:`${e.publishedAt}::steamm_omm_v2::swap`,typeArguments:[r.steamm_lending_market_type,e.coinAType,e.coinBType,r.steamm_btoken_a_type,r.steamm_btoken_b_type,r.steamm_lp_token_type],arguments:a})}},lg="0x790f258062909e3a0ffc78b3c53ac2f62d7084c3bab95644bdeb05add7250001::super_sui::SUPER_SUI",cg="0xe44df51c0b21a27ab915fa1fe2ca610cd3eaa6d9666fe5e62b988bf7f0bd8722::musd::MUSD",dg="0xccd628c2334c5ed33e6c47d6c21bb664f8b6307b2ac32c2462a61f69a31ebcee::meth::METH",hg=class{constructor(t,e){if(t!==0)throw new Error("Metastable only supported on mainnet");this.versionID="0x4696559327b35ff2ab26904e7426a1646312e9c836d5c6cff6709a5ccc30915c",this.pythPriceIDs=e}swap(t,e,i,r){let n=this.prepareSwapData(e),o=this.createDepositCap(t,n);this.executeSwapContract(t,n,i,o)}prepareSwapData(t){let e=t.path;if(t.path.publishedAt==null)throw new Error("Metastable not set publishedAt");if(!e.extendedDetails)throw new Error("Extended details not found for Metastable");let{direction:i,from:r,target:n}=e,[o,a]=i?[r,n]:[n,r],[l,d]=i?["swap_a2b","create_deposit_cap"]:["swap_b2a","create_withdraw_cap"];if(!e.extendedDetails.metastable_create_cap_pkg_id||!e.extendedDetails.metastable_create_cap_module||!e.extendedDetails.metastable_whitelisted_app_id)throw new Error("CreateCapPkgId or CreateCapModule or WhitelistedAppId not found in extended details");let f=t.isLastUseOfIntermediateToken?ct.MAX_AMOUNT_IN:e.amountIn;return{coinType:o,metaCoinType:a,func:l,createCapFunc:d,direction:i,amountIn:f,publishedAt:e.publishedAt,poolId:e.id,extendedDetails:e.extendedDetails}}createDepositCap(t,e){let i=[e.metaCoinType];e.extendedDetails.metastable_create_cap_all_type_params&&i.push(e.coinType);let r=[t.object(e.extendedDetails.metastable_whitelisted_app_id),t.object(e.poolId)];switch(e.metaCoinType){case lg:{if(!e.extendedDetails.metastable_registry_id)throw new Error("Not found registry id for super sui");r.push(t.object(e.extendedDetails.metastable_registry_id));break}case cg:case dg:{if(e.extendedDetails.metastable_price_seed!=null){let n=this.pythPriceIDs.get(e.extendedDetails.metastable_price_seed);if(n==null)throw new Error("Invalid Pyth price feed: "+e.extendedDetails.metastable_price_seed);r.push(t.object(n))}if(e.extendedDetails.metastable_eth_price_seed!=null){let n=this.pythPriceIDs.get(e.extendedDetails.metastable_eth_price_seed);if(n==null)throw new Error("Invalid Pyth price feed: "+e.extendedDetails.metastable_eth_price_seed);r.push(t.object(n))}r.push(t.object(ft));break}default:throw new Error("Invalid Metacoin: "+e.metaCoinType)}return t.moveCall({target:`${e.extendedDetails.metastable_create_cap_pkg_id}::${e.extendedDetails.metastable_create_cap_module}::${e.createCapFunc}`,typeArguments:i,arguments:r})}executeSwapContract(t,e,i,r){let n=[i,t.object(e.poolId),t.object(this.versionID),r,t.pure.u64(e.amountIn)];t.moveCall({target:`${e.publishedAt}::metastable::${e.func}`,typeArguments:[e.coinType,e.metaCoinType],arguments:n})}},fg=class{constructor(t){if(t!==0)throw new Error("Alphafi only supported on mainnet");this.suiSystemState="0x0000000000000000000000000000000000000000000000000000000000000005"}swap(t,e,i,r){let n=this.prepareSwapData(e);this.executeSwapContract(t,n,i)}prepareSwapData(t){if(t.path.publishedAt==null)throw new Error("Alphafi not set publishedAt");let e=t.path,[i,r]=e.direction?[e.from,e.target]:[e.target,e.from],n=t.isLastUseOfIntermediateToken?ct.MAX_AMOUNT_IN:e.amountIn;return{coinAType:i,coinBType:r,direction:e.direction,amountIn:n,publishedAt:e.publishedAt,poolId:e.id}}executeSwapContract(t,e,i){let r=[i,t.object(e.poolId),t.object(this.suiSystemState),t.pure.bool(e.direction),t.pure.u64(e.amountIn)];t.moveCall({target:`${e.publishedAt}::alphafi::swap`,typeArguments:[e.coinBType],arguments:r})}},pg=class{constructor(t){if(t!==0)throw new Error("Volo only supported on mainnet");this.stakePool="0x2d914e23d82fedef1b5f56a32d5c64bdcc3087ccfea2b4d6ea51a71f587840e5",this.metadata="0x680cd26af32b2bde8d3361e804c53ec1d1cfe24c7f039eb7f549e8dfde389a60"}swap(t,e,i,r){let n=this.prepareSwapData(e);this.executeSwapContract(t,n,i)}prepareSwapData(t){let e=t.path;if(t.path.publishedAt==null)throw new Error("Volo not set publishedAt");let[i,r]=e.direction?[e.from,e.target]:[e.target,e.from],n=t.isLastUseOfIntermediateToken?ct.MAX_AMOUNT_IN:e.amountIn;return{coinAType:i,coinBType:r,direction:e.direction,amountIn:n,publishedAt:e.publishedAt,poolId:e.id}}executeSwapContract(t,e,i){let r=[i,t.object(this.stakePool),t.object(this.metadata),t.object("0x5"),t.pure.bool(e.direction),t.pure.u64(e.amountIn)];t.moveCall({target:`${e.publishedAt}::volo::swap`,typeArguments:[],arguments:r})}},mg=class{constructor(t){if(t!==0)throw new Error("afSUI only supported on mainnet");this.stakedSuiVault="0x2f8f6d5da7f13ea37daa397724280483ed062769813b6f31e9788e59cc88994d",this.safe="0xeb685899830dd5837b47007809c76d91a098d52aabbf61e8ac467c59e5cc4610",this.referVault="0x4ce9a19b594599536c53edb25d22532f82f18038dc8ef618afd00fbbfb9845ef",this.validator="0xd30018ec3f5ff1a3c75656abf927a87d7f0529e6dc89c7ddd1bd27ecb05e3db2"}swap(t,e,i,r){let n=this.prepareSwapData(e);this.executeSwapContract(t,n,i)}prepareSwapData(t){if(t.path.publishedAt==null)throw new Error("AFSUI not set publishedAt");let e=t.path,[i,r]=e.direction?[e.from,e.target]:[e.target,e.from],n=t.isLastUseOfIntermediateToken?ct.MAX_AMOUNT_IN:e.amountIn;return{coinAType:i,coinBType:r,direction:e.direction,amountIn:n,publishedAt:e.publishedAt,poolId:e.id}}executeSwapContract(t,e,i){if(!e.direction)throw new Error("AFSUI not support b2a swap");let r=[i,t.object(this.stakedSuiVault),t.object(this.safe),t.object("0x5"),t.object(this.referVault),t.pure.address(this.validator),t.pure.bool(e.direction),t.pure.u64(e.amountIn)];t.moveCall({target:`${e.publishedAt}::afsui::swap`,typeArguments:[],arguments:r})}},_g=class{constructor(t){if(t!==0)throw new Error("Haedal only supported on mainnet")}swap(t,e,i,r){let n=this.prepareSwapData(e);this.executeSwapContract(t,n,i)}prepareSwapData(t){let e=t.path;if(t.path.publishedAt==null)throw new Error("Haedal not set publishedAt");let[i,r]=e.direction?[e.from,e.target]:[e.target,e.from],n=t.isLastUseOfIntermediateToken?ct.MAX_AMOUNT_IN:e.amountIn;return{coinAType:i,coinBType:r,direction:e.direction,amountIn:n,publishedAt:e.publishedAt,poolId:e.id}}executeSwapContract(t,e,i){let r=[i,t.object(e.poolId),t.object("0x5"),t.pure.bool(e.direction),t.pure.u64(e.amountIn)];t.moveCall({target:`${e.publishedAt}::hasui::swap`,typeArguments:[],arguments:r})}},gg=class{constructor(t){if(t!==0)throw new Error("Hawal only supported on mainnet");this.staking="0x10b9d30c28448939ce6c4d6c6e0ffce4a7f8a4ada8248bdad09ef8b70e4a3904",this.validator="0x7b3ba6de2ae58283f60d5b8dc04bb9e90e4796b3b2e0dea75569f491275242e7"}swap(t,e,i,r){let n=this.prepareSwapData(e);this.executeSwapContract(t,n,i)}prepareSwapData(t){let e=t.path;if(t.path.publishedAt==null)throw new Error("Hawal not set publishedAt");let[i,r]=e.direction?[e.from,e.target]:[e.target,e.from],n=t.isLastUseOfIntermediateToken?ct.MAX_AMOUNT_IN:e.amountIn;return{coinAType:i,coinBType:r,direction:e.direction,amountIn:n,publishedAt:e.publishedAt,poolId:e.id}}executeSwapContract(t,e,i){let r=[i,t.object(this.staking),t.object(e.poolId),t.pure.address(this.validator),t.pure.bool(e.direction),t.pure.u64(e.amountIn)];t.moveCall({target:`${e.publishedAt}::hawal::swap`,typeArguments:[],arguments:r})}},wg=ct.DEFAULT_PUBLISHED_AT.Mainnet;function Yn(t,e){return t&&t.has(zn.AGGREGATOR_V3)?t.get(zn.AGGREGATOR_V3):e||wg}function Fc(t,e){let{quoteID:i,fromCoinType:r,targetCoinType:n,expectAmountOut:o,amountOutLimit:a,inputCoin:l,feeRate:d,feeRecipient:f,aggregatorPublishedAt:g,packages:v}=t,y=Yn(v,g),S=[e.pure.string(i),e.pure.u64(o.toString()),e.pure.u64(a.toString()),l,e.pure.u32(Number(d.toString())),e.pure.address(f)];return e.moveCall({target:`${y}::router::new_swap_context`,typeArguments:[r,n],arguments:S})}function qc(t,e){let{quoteID:i,fromCoinType:r,targetCoinType:n,maxAmountIn:o,expectAmountOut:a,amountOutLimit:l,inputCoin:d,feeRate:f,feeRecipient:g,aggregatorPublishedAt:v,packages:y}=t,S=Yn(y,v),I=[e.pure.string(i),e.pure.u64(o.toString()),e.pure.u64(a.toString()),e.pure.u64(l.toString()),d,e.pure.u32(Number(f.toString())),e.pure.address(g)];return e.moveCall({target:`${S}::router::new_swap_context_v2`,typeArguments:[r,n],arguments:I})}function bs(t,e){let{swapContext:i,targetCoinType:r,aggregatorPublishedAt:n,packages:o}=t,a=Yn(o,n);return e.moveCall({target:`${a}::router::confirm_swap`,typeArguments:[r],arguments:[i]})}function Uc(t,e){let{coinType:i,amount:r,swapCtx:n,aggregatorPublishedAt:o,packages:a}=t,l=Yn(a,o),d=[n,e.pure.u64(r.toString())];return e.moveCall({target:`${l}::router::take_balance`,typeArguments:[i],arguments:d})}function $c(t,e){let{balance:i,coinType:r,recipient:n,aggregatorPublishedAt:o,packages:a}=t,l=Yn(a,o),d=[i,e.pure.address(n)];e.moveCall({target:`${l}::router::transfer_balance`,typeArguments:[r],arguments:d})}function Vc(t,e){let{coin:i,coinType:r,aggregatorPublishedAt:n,packages:o}=t,a=Yn(o,n);e.moveCall({target:`${a}::router::transfer_or_destroy_coin`,typeArguments:[r],arguments:[i]})}var Zc=16*1024,vg=class{constructor(t,e,i,r){this.priceFeedObjectIdCache=new Map,this.client=t,this.pythStateId=e,this.wormholeStateId=i;let n=[...r];n.includes("https://hermes.pyth.network")||n.push("https://hermes.pyth.network"),this.hermesClients=n.map(o=>new ws(o,{timeout:3e3}))}async getPriceFeedsUpdateData(t){let e=null;for(let i of this.hermesClients)try{return(await i.getLatestPriceUpdates(t,{encoding:"hex"})).binary.data.map(n=>Buffer.from(n,"hex"))}catch(r){e=r;continue}throw new Error(`All Pyth Hermes endpoints are unavailable. Detailed error: ${e?.message}`)}async getBaseUpdateFee(){if(this.baseUpdateFee!==void 0)return this.baseUpdateFee;let e=(await this.client.getObject({id:this.pythStateId,options:{showContent:!0}})).data?.content,i=e&&"fields"in e?e.fields:null;if(!i)throw new Error("Unable to fetch pyth state object");return this.baseUpdateFee=Number(i.base_update_fee),this.baseUpdateFee}async getPackageId(t){let i=(await this.client.getObject({id:t,options:{showContent:!0}})).data?.content,r=i&&"fields"in i?i.fields:null;if(!r)throw new Error(`Cannot fetch package id for object ${t}`);if("upgrade_cap"in r){let o=r.upgrade_cap?.fields?.package;if(typeof o=="string")return o}throw new Error("upgrade_cap not found")}async getWormholePackageId(){return this.wormholePackageId||(this.wormholePackageId=await this.getPackageId(this.wormholeStateId)),this.wormholePackageId}async getPythPackageId(){return this.pythPackageId||(this.pythPackageId=await this.getPackageId(this.pythStateId)),this.pythPackageId}async getPriceFeedObjectId(t){let e=t.replace("0x","");if(this.priceFeedObjectIdCache.has(e))return this.priceFeedObjectIdCache.get(e);let{id:i,fieldType:r}=await this.getPriceTableInfo(),n=Buffer.from(e,"hex");try{let a=(await this.client.getDynamicFieldObject({parentId:i,name:{type:`${r}::price_identifier::PriceIdentifier`,value:{bytes:Array.from(n)}}})).data?.content,l=a&&"fields"in a?a.fields:null,d=typeof l?.value=="string"?l.value:void 0;return d?(this.priceFeedObjectIdCache.set(e,d),d):void 0}catch{return}}async getPriceTableInfo(){if(this.priceTableInfo!==void 0)return this.priceTableInfo;let t=await this.client.getDynamicFieldObject({parentId:this.pythStateId,name:{type:"vector<u8>",value:"price_info"}});if(!t.data?.type)throw new Error("Price Table not found, contract may not be initialized");let e=t.data.type.replace("0x2::table::Table<","");return e=e.replace("::price_identifier::PriceIdentifier, 0x2::object::ID>",""),this.priceTableInfo={id:t.data.objectId,fieldType:e},this.priceTableInfo}extractVaaBytesFromAccumulatorMessage(t){let i=7+t.readUint8(6)+1,r=t.readUint16BE(i),n=i+2;return t.subarray(n,n+r)}async verifyVaas(t,e){let i=await this.getWormholePackageId(),r=[];for(let n of t){let[o]=e.moveCall({target:`${i}::vaa::parse_and_verify`,arguments:[e.object(this.wormholeStateId),e.pure(vs.vector(vs.u8()).serialize(Array.from(n),{maxSize:Zc}).toBytes()),e.object(ft)]});r.push(o)}return r}async verifyVaasAndGetHotPotato(t,e,i){if(e.length>1)throw new Error("SDK does not support sending multiple accumulator messages in a single transaction");let r=this.extractVaaBytesFromAccumulatorMessage(e[0]),n=await this.verifyVaas([r],t),[o]=t.moveCall({target:`${i}::pyth::create_authenticated_price_infos_using_accumulator`,arguments:[t.object(this.pythStateId),t.pure(vs.vector(vs.u8()).serialize(Array.from(e[0]),{maxSize:Zc}).toBytes()),n[0],t.object(ft)]});return o}async updatePriceFeeds(t,e,i){let r=await this.getPythPackageId(),n=await this.verifyVaasAndGetHotPotato(t,e,r),o=await this.getBaseUpdateFee(),a=t.splitCoins(t.gas,i.map(()=>t.pure.u64(o))),l=[],d=0;for(let f of i){let g=await this.getPriceFeedObjectId(f);if(!g)throw new Error(`Price feed ${f} not found, please create it first`);l.push(g),[n]=t.moveCall({target:`${r}::pyth::update_single_price_feed`,arguments:[t.object(this.pythStateId),n,t.object(g),a[d],t.object(ft)]}),d++}return t.moveCall({target:`${r}::hot_potato_vector::destroy`,arguments:[n],typeArguments:[`${r}::price_info::PriceInfo`]}),l}};function yg(t){return t.endsWith("/find_routes")?t.replace("/find_routes",""):t}var Ty=Jn(Qn());var Ey=Jn(Qn());var bg=class{constructor(t,e){if(t!==0)throw new Error("Haedal HMM V2 only supported on mainnet");this.pythPriceIDs=e}swap(t,e,i,r){let n=e.path;if(!n.extendedDetails)throw new Error("Extended details not found for Haedal HMM V2");console.log("path.extendedDetails",n.extendedDetails),this.validateExtendedDetails(n.extendedDetails);let o=this.prepareSwapData(e);this.executeSwapContract(t,o,i)}validateExtendedDetails(t){if(!t.haedalhmmv2_base_price_seed)throw new Error("Haedal HMM V2 base price seed not supported")}prepareSwapData(t){let e=t.path;if(t.path.publishedAt==null)throw new Error("Haedal HMM V2 not set publishedAt");let i=e.extendedDetails,[r,n]=e.direction?[e.from,e.target]:[e.target,e.from],o=t.isLastUseOfIntermediateToken?ct.MAX_AMOUNT_IN:e.amountIn,a=i.haedalhmmv2_base_price_seed,l=this.pythPriceIDs.get(a);if(!l)throw new Error("Haedal HMM V2 requires oracle price IDs for base coin");return{coinAType:r,coinBType:n,basePriceId:l,a2b:e.direction,amountIn:o,publishedAt:e.publishedAt,poolId:e.id}}executeSwapContract(t,e,i){let r=[i,t.object(e.poolId),t.object(e.basePriceId),t.pure.u64(e.amountIn),t.pure.bool(e.a2b),t.object(ft)];t.moveCall({target:`${e.publishedAt}::haedal_hmm_v2::swap`,typeArguments:[e.coinAType,e.coinBType],arguments:r})}},Mg=class{constructor(t){if(t!==0)throw new Error("Fullsail only supported on mainnet");this.globalConfig="0xe93baa80cb570b3a494cbf0621b2ba96bc993926d34dc92508c9446f9a05d615",this.vault="0xfb971d3a2fb98bde74e1c30ba15a3d8bef60a02789e59ae0b91660aeed3e64e1",this.stats="0x6822a33d1d971e040c32f7cc74507010d1fe786f7d06ab89135083ddb07d2dc2",this.price_provider="0x854b2d2c0381bb656ec962f8b443eb082654384cf97885359d1956c7d76e33c9"}swap(t,e,i,r){let n=this.prepareSwapData(e);this.executeSwapContract(t,n,i)}prepareSwapData(t){let e=t.path;if(t.path.publishedAt==null)throw new Error("Fullsail not set publishedAt");let[i,r]=e.direction?[e.from,e.target]:[e.target,e.from],n=t.isLastUseOfIntermediateToken?ct.MAX_AMOUNT_IN:e.amountIn;return{coinAType:i,coinBType:r,direction:e.direction,amountIn:n,publishedAt:e.publishedAt,poolId:e.id}}executeSwapContract(t,e,i){let r=[i,t.object(this.globalConfig),t.object(this.vault),t.object(this.stats),t.object(this.price_provider),t.object(e.poolId),t.pure.bool(e.direction),t.pure.u64(e.amountIn),t.object(ft)];t.moveCall({target:`${e.publishedAt}::fullsail::swap`,typeArguments:[e.coinAType,e.coinBType],arguments:r})}},kg=class{constructor(t,e){if(t!==0)throw new Error("CetusRouter only supported on mainnet");this.globalConfig="0xf31b605d117f959b9730e8c07b08b856cb05143c5e81d5751c90d2979e82f599",this.partner=e??"0x59ae16f6c42f578063c2da9b9c0173fe58120ceae08e40fd8212c8eceb80bb86",this.versioned="0x05370b2d656612dd5759cbe80463de301e3b94a921dfc72dd9daa2ecdeb2d0a8"}swap(t,e,i,r){let n=this.prepareSwapData(e);this.executeSwapContract(t,n,i)}prepareSwapData(t){if(t.path.publishedAt==null)throw new Error("Cetus not set publishedAt");let e=t.path,[i,r]=e.direction?[e.from,e.target]:[e.target,e.from],n=t.isLastUseOfIntermediateToken?ct.MAX_AMOUNT_IN:e.amountIn;return{coinAType:i,coinBType:r,direction:e.direction,amountIn:n,publishedAt:e.publishedAt,poolId:e.id}}executeSwapContract(t,e,i){let r=[i,t.object(this.globalConfig),t.object(e.poolId),t.object(this.partner),t.pure.bool(e.direction),t.pure.u64(e.amountIn),t.object(this.versioned),t.object(ft)];t.moveCall({target:`${e.publishedAt}::cetus_dlmm::swap`,typeArguments:[e.coinAType,e.coinBType],arguments:r})}},Ag=class{constructor(t){if(t!==0)throw new Error("Ferra DLMM only supported on mainnet");this.globalConfig="0x5c9dacf5a678ea15b8569d65960330307e23d429289ca380e665b1aa175ebeca"}swap(t,e,i,r){let n=this.prepareSwapData(e);this.executeSwapContract(t,n,i)}prepareSwapData(t){if(t.path.publishedAt==null)throw new Error("Ferra DLMM not set publishedAt");let e=t.path,[i,r]=e.direction?[e.from,e.target]:[e.target,e.from],n=t.isLastUseOfIntermediateToken?ct.MAX_AMOUNT_IN:e.amountIn;return{coinAType:i,coinBType:r,direction:e.direction,amountIn:n,publishedAt:e.publishedAt,poolId:e.id}}executeSwapContract(t,e,i){let r=[i,t.object(this.globalConfig),t.object(e.poolId),t.pure.bool(e.direction),t.pure.u64(e.amountIn),t.object(ft)];t.moveCall({target:`${e.publishedAt}::ferra_dlmm::swap`,typeArguments:[e.coinAType,e.coinBType],arguments:r})}},Sg=class{constructor(t){if(t!==0)throw new Error("Ferra CLMM only supported on mainnet");this.globalConfig="0x2cd8382c19e6994f16df204e9b8cddd04bdc486c251de75ac66ac4e48e3e7081"}swap(t,e,i,r){let n=this.prepareSwapData(e);this.executeSwapContract(t,n,i)}prepareSwapData(t){if(t.path.publishedAt==null)throw new Error("Ferra CLMM not set publishedAt");let e=t.path,[i,r]=e.direction?[e.from,e.target]:[e.target,e.from],n=t.isLastUseOfIntermediateToken?ct.MAX_AMOUNT_IN:e.amountIn;return{coinAType:i,coinBType:r,direction:e.direction,amountIn:n,publishedAt:e.publishedAt,poolId:e.id}}executeSwapContract(t,e,i){let r=[i,t.object(this.globalConfig),t.object(e.poolId),t.pure.bool(e.direction),t.pure.u64(e.amountIn),t.object(ft)];t.moveCall({target:`${e.publishedAt}::ferra_clmm::swap`,typeArguments:[e.coinAType,e.coinBType],arguments:r})}},Hc="CETUS";var Cg="KRIYA",Tg="FLOWX",Eg="FLOWXV3",xg="KRIYAV3",Ig="TURBOS",Pg="AFTERMATH",Og="HAEDAL",Rg="VOLO",Ng="AFSUI",Dg="BLUEMOVE",Lg="DEEPBOOKV3",jg="SCALLOP",Bg="SUILEND",Fg="BLUEFIN",ld="HAEDALPMM",qg="ALPHAFI",Ug="SPRINGSUI",$g="STEAMM",cd="METASTABLE",dd="OBRIC",Vg="HAWAL",hd="STEAMM_OMM",Zg="MOMENTUM",fd="STEAMM_OMM_V2",Hg="MAGMA",pd="SEVENK",md="HAEDALHMMV2",Wg="FULLSAIL",Gg="CETUSDLMM",zg="FERRADLMM",Kg="FERRACLMM",Xg="https://api-sui.cetus.zone/router_v3";function su(t){let e=new Set;for(let i of t){if(i.provider===ld&&i.extendedDetails&&i.extendedDetails.haedal_pmm_base_price_seed&&i.extendedDetails.haedal_pmm_quote_price_seed&&(e.add(i.extendedDetails.haedal_pmm_base_price_seed),e.add(i.extendedDetails.haedal_pmm_quote_price_seed)),i.provider===cd&&(i.extendedDetails&&i.extendedDetails.metastable_price_seed&&e.add(i.extendedDetails.metastable_price_seed),i.extendedDetails&&i.extendedDetails.metastable_eth_price_seed&&e.add(i.extendedDetails.metastable_eth_price_seed)),i.provider===dd&&(i.extendedDetails&&i.extendedDetails.obric_coin_a_price_seed&&e.add(i.extendedDetails.obric_coin_a_price_seed),i.extendedDetails&&i.extendedDetails.obric_coin_b_price_seed&&e.add(i.extendedDetails.obric_coin_b_price_seed)),(i.provider===hd||i.provider===fd)&&(i.extendedDetails&&i.extendedDetails.steamm_oracle_pyth_price_seed_a&&e.add(i.extendedDetails.steamm_oracle_pyth_price_seed_a),i.extendedDetails&&i.extendedDetails.steamm_oracle_pyth_price_seed_b&&e.add(i.extendedDetails.steamm_oracle_pyth_price_seed_b)),i.provider===pd&&i.extendedDetails){let r=i.extendedDetails;r.sevenk_coin_a_price_seed&&e.add(r.sevenk_coin_a_price_seed),r.sevenk_coin_b_price_seed&&e.add(r.sevenk_coin_b_price_seed)}i.provider===md&&i.extendedDetails&&i.extendedDetails.haedalhmmv2_base_price_seed&&e.add(i.extendedDetails.haedalhmmv2_base_price_seed)}return Array.from(e)}var _d=class gd{constructor(e){this.endpoint=e.endpoint?yg(e.endpoint):Xg;let i=e.env===1?"testnet":"mainnet",r=e.env===1?"https://fullnode.testnet.sui.io:443":"https://fullnode.mainnet.sui.io:443";this.client=e.client??new Tm({network:i,url:r}),this.signer=e.signer||"",this.env=e.env||0;let n=gd.CONFIG[this.env];if(this.pythAdapter=new vg(this.client,n.pythStateId,n.wormholeStateId,e.pythUrls??[]),this.apiKey=e.apiKey||"",this.partner=e.partner,this.cetusDlmmPartner=e.cetusDlmmPartner,e.overlayFeeRate)if(e.overlayFeeRate>0&&e.overlayFeeRate<=zt.MAX_OVERLAY_FEE_RATE){if(this.overlayFeeRate=e.overlayFeeRate*ct.FEE_DENOMINATOR,this.overlayFeeRate>ct.MAX_FEE_RATE)throw new Error(zt.ERRORS.INVALID_OVERLAY_FEE_RATE)}else throw new Error(zt.ERRORS.INVALID_OVERLAY_FEE_RATE);else this.overlayFeeRate=0;this.overlayFeeReceiver=e.overlayFeeReceiver??zt.DEFAULT_OVERLAY_FEE_RECEIVER}deepbookv3DeepFeeType(){return this.env===0?Es.Mainnet:Es.Testnet}async getDeepbookV3Config(){return await Km(this.endpoint)}async getOneCoinUsedToMerge(e){try{let i=await this.client.getCoins({owner:this.signer,coinType:e,limit:1});return i.data.length===1?i.data[0].coinObjectId:null}catch{return null}}async findRouters(e){return Zm(this.endpoint,this.apiKey,e,this.overlayFeeRate,this.overlayFeeReceiver)}async findMergeSwapRouters(e){return zm(this.endpoint,this.apiKey,e,this.overlayFeeRate,this.overlayFeeReceiver)}async executeFlexibleInputSwap(e,i,r,n,o,a,l,d,f){}newDexRouterV3(e,i,r,n){switch(e){case Hc:return new ou(this.env,r);case xg:return new H_(this.env);case Eg:return new W_(this.env);case Ig:return new G_(this.env);case Fg:return new z_(this.env);case Zg:return new K_(this.env);case Hg:return new X_(this.env);case Cg:return new J_(this.env);case Tg:return new Q_(this.env);case Dg:return new Y_(this.env);case Lg:return new eg(this.env);case Pg:return new tg(this.env);case $g:return new ig(this.env);case jg:return new rg(this.env);case Bg:return new Bc(this.env);case Ug:return new Bc(this.env);case ld:return new ng(this.env,i);case dd:return new og(this.env,i);case pd:return new sg(this.env,i);case hd:return new ag(this.env,i);case fd:return new ug(this.env,i);case cd:return new hg(this.env,i);case qg:return new fg(this.env);case Rg:return new pg(this.env);case Ng:return new mg(this.env);case Og:return new _g(this.env);case Vg:return new gg(this.env);case md:return new bg(this.env,i);case Wg:return new Mg(this.env);case Gg:return new kg(this.env,n);case zg:return new Ag(this.env);case Kg:return new Sg(this.env);default:throw new Error(`${zt.ERRORS.UNSUPPORTED_DEX} ${e}`)}}expectInputSwapV3(e,i,r,n,o,a,l,d){if(r.quoteID==null)throw new Error(zt.ERRORS.QUOTE_ID_REQUIRED);let f=ys(r),g=Fc({quoteID:f.quoteID,fromCoinType:f.fromCoinType,targetCoinType:f.targetCoinType,expectAmountOut:n,amountOutLimit:o,inputCoin:i,feeRate:this.overlayFeeRate,feeRecipient:this.overlayFeeReceiver,packages:f.packages},e),v=new Map;for(let S of f.flattenedPaths){let I=S.path;v.has(I.provider)||v.set(I.provider,this.newDexRouterV3(I.provider,a,l,d)),v.get(I.provider).swap(e,S,g,{pythPriceIDs:a})}return bs({swapContext:g,targetCoinType:f.targetCoinType,packages:f.packages},e)}expectInputSwapV3WithMaxAmountIn(e,i,r,n,o,a,l,d,f){if(r.quoteID==null)throw new Error(zt.ERRORS.QUOTE_ID_REQUIRED);let g=ys(r),v=qc({quoteID:g.quoteID,fromCoinType:g.fromCoinType,targetCoinType:g.targetCoinType,maxAmountIn:n,expectAmountOut:o,amountOutLimit:a,inputCoin:i,feeRate:this.overlayFeeRate,feeRecipient:this.overlayFeeReceiver,packages:g.packages},e),y=new Map;for(let I of g.flattenedPaths){let x=I.path;y.has(x.provider)||y.set(x.provider,this.newDexRouterV3(x.provider,l,d,f)),y.get(x.provider).swap(e,I,v,{pythPriceIDs:l})}return bs({swapContext:v,targetCoinType:g.targetCoinType,packages:g.packages},e)}expectOutputSwapV3(e,i,r,n,o,a){let l=[],d=new ou(this.env,a),f=ys(r),g=Fc({quoteID:f.quoteID,fromCoinType:f.fromCoinType,targetCoinType:f.targetCoinType,expectAmountOut:n,amountOutLimit:n,inputCoin:i,feeRate:this.overlayFeeRate,feeRecipient:this.overlayFeeReceiver,packages:f.packages},e),v=Wc(r.paths),y=new Map,S=new Map;for(let B=r.paths.length-1;B>=0;B--){let R=r.paths[B],j=v.get(R.from),V;if(B!==j||R.target===f.targetCoinType){if(R.target!==f.targetCoinType){let Y=BigInt(R.amountOut);S.has(R.target)&&(Y=S.get(R.target)+Y),S.set(R.target,Y)}V=e.pure.u64(R.amountOut.toString())}else{if(!y.has(R.target))throw Error("no need repay record");if(S.has(R.target)){let Y=S.get(R.target),X=y.get(R.target);V=d.sub(e,X,e.pure.u64(Y),R.publishedAt)}else V=y.get(R.target)}let J=d.flashSwapFixedOutput(e,R,V,g);if(l.unshift(J.flashReceipt),y.has(R.from)){let Y=y.get(R.from);y.set(R.from,d.add(e,Y,J.repayAmount,R.publishedAt))}else y.set(R.from,J.repayAmount)}for(let B=0;B<r.paths.length;B++){let R=r.paths[B];d.repayFlashSwapFixedOutput(e,R,g,l[B])}let I=Uc({coinType:f.fromCoinType,amount:As,swapCtx:g,packages:f.packages},e);return $c({balance:I,coinType:f.fromCoinType,recipient:this.signer,packages:f.packages},e),bs({swapContext:g,targetCoinType:f.targetCoinType,packages:f.packages},e)}expectOutputSwapV3WithMaxAmountIn(e,i,r,n,o,a,l){let d=[],f=new ou(this.env,l),g=ys(r),v=qc({quoteID:g.quoteID,fromCoinType:g.fromCoinType,targetCoinType:g.targetCoinType,maxAmountIn:n,expectAmountOut:o,amountOutLimit:o,inputCoin:i,feeRate:this.overlayFeeRate,feeRecipient:this.overlayFeeReceiver,packages:g.packages},e),y=Wc(r.paths),S=new Map,I=new Map;for(let R=r.paths.length-1;R>=0;R--){let j=r.paths[R],V=y.get(j.from),J;if(R!==V||j.target===g.targetCoinType){if(j.target!==g.targetCoinType){let X=BigInt(j.amountOut);I.has(j.target)&&(X=I.get(j.target)+X),I.set(j.target,X)}J=e.pure.u64(j.amountOut.toString())}else{if(!S.has(j.target))throw Error("no need repay record");if(I.has(j.target)){let X=I.get(j.target),ee=S.get(j.target);J=f.sub(e,ee,e.pure.u64(X),j.publishedAt)}else J=S.get(j.target)}let Y=f.flashSwapFixedOutput(e,j,J,v);if(d.unshift(Y.flashReceipt),S.has(j.from)){let X=S.get(j.from);S.set(j.from,f.add(e,X,Y.repayAmount,j.publishedAt))}else S.set(j.from,Y.repayAmount)}for(let R=0;R<r.paths.length;R++){let j=r.paths[R];f.repayFlashSwapFixedOutput(e,j,v,d[R])}let x=Uc({coinType:g.fromCoinType,amount:As,swapCtx:v,packages:g.packages},e);return $c({balance:x,coinType:g.fromCoinType,recipient:this.signer,packages:g.packages},e),bs({swapContext:v,targetCoinType:g.targetCoinType,packages:g.packages},e)}async routerSwap(e){let{router:i,inputCoin:r,slippage:n,txb:o,partner:a}=e;if(n>1||n<0)throw new Error(zt.ERRORS.INVALID_SLIPPAGE);if(!e.router.packages||!e.router.packages.get(zn.AGGREGATOR_V3))throw new Error(zt.ERRORS.PACKAGES_REQUIRED);let l=e.router.byAmountIn,d=i.amountIn,f=i.amountOut;Ms(this.overlayFeeRate,this.overlayFeeReceiver);let g=new pt.default(0);l?g=f.mul(new pt.default(this.overlayFeeRate)).div(new pt.default(1e6)):g=d.mul(new pt.default(this.overlayFeeRate)).div(new pt.default(1e6));let v=l?f.sub(g):f,y=l?d:d.add(g),S=nu(l?v:y,l,n),I=su(i.paths),x=I.length>0?await this.updatePythPriceIDs(I,o):new Map;return l?this.expectInputSwapV3(o,r,i,f.toString(),S.toString(),x,a??this.partner):this.expectOutputSwapV3(o,r,i,f.toString(),S.toString(),a??this.partner)}async routerSwapWithMaxAmountIn(e){let{router:i,inputCoin:r,slippage:n,txb:o,partner:a,maxAmountIn:l}=e;if(n>1||n<0)throw new Error(zt.ERRORS.INVALID_SLIPPAGE);if(!e.router.packages||!e.router.packages.get(zn.AGGREGATOR_V3))throw new Error(zt.ERRORS.PACKAGES_REQUIRED);let d=e.router.byAmountIn,f=i.amountIn,g=i.amountOut;Ms(this.overlayFeeRate,this.overlayFeeReceiver);let v=new pt.default(0);d?v=g.mul(new pt.default(this.overlayFeeRate)).div(new pt.default(1e6)):v=f.mul(new pt.default(this.overlayFeeRate)).div(new pt.default(1e6));let y=d?g.sub(v):g,S=d?f:f.add(v),I=nu(d?y:S,d,n),x=su(i.paths),B=x.length>0?await this.updatePythPriceIDs(x,o):new Map;return d?this.expectInputSwapV3WithMaxAmountIn(o,r,i,l,g.toString(),I.toString(),B,a??this.partner):this.expectOutputSwapV3WithMaxAmountIn(o,r,i,l,g.toString(),I.toString(),a??this.partner)}async fastRouterSwap(e){let{router:i,slippage:r,txb:n,partner:o,payDeepFeeAmount:a}=e,l=i.paths[0].from,d=i.paths[i.paths.length-1].target,f=i.byAmountIn;Ms(this.overlayFeeRate,this.overlayFeeReceiver);let g=0;f?g=Number(i.amountOut.mul(new pt.default(this.overlayFeeRate)).div(new pt.default(1e6)).toString()):g=Number(i.amountIn.mul(new pt.default(this.overlayFeeRate)).div(new pt.default(1e6)).toString());let v=f?i.amountOut.sub(new pt.default(g)):i.amountOut,y=f?i.amountIn:i.amountIn.add(new pt.default(g)),S=Z_(f?v:y,f,r),x=ru({balance:BigInt((f?y:S).toString()),useGasCoin:!0,type:l}),B;a&&a>0&&(B=ru({balance:BigInt(a),type:this.deepbookv3DeepFeeType()}));let R={router:i,inputCoin:x,slippage:r,txb:n,partner:o??this.partner,deepbookv3DeepFee:B},j=await this.routerSwap(R);if(ks.isSuiCoin(d))n.mergeCoins(n.gas,[j]);else{let V=await this.getOneCoinUsedToMerge(d);V!=null?n.mergeCoins(n.object(V),[j]):Vc({coin:j,coinType:d,packages:i.packages},n)}}async mergeSwap(e){let{router:i,inputCoins:r,slippage:n,txb:o,partner:a}=e;if(n>1||n<0)throw new Error(zt.ERRORS.INVALID_SLIPPAGE);if(!i.packages||!i.packages.get(zn.AGGREGATOR_V3))throw new Error(zt.ERRORS.PACKAGES_REQUIRED);if(!i.allRoutes||i.allRoutes.length===0)throw new Error("No routes found in merge swap response");let l=[];for(let f=0;f<i.allRoutes.length&&f<r.length;f++){let g=i.allRoutes[f],v=r[f],S={router:{quoteID:i.quoteID,amountIn:g.amountIn,amountOut:g.amountOut,deviationRatio:Number(g.deviationRatio),byAmountIn:!0,paths:g.paths,insufficientLiquidity:!1,packages:i.packages},inputCoin:v.coin,slippage:n,txb:o,partner:a??this.partner},I=await this.routerSwap(S);l.push(I)}if(l.length===0)throw new Error("No output coins generated from merge swap");let d=l[0];return l.length>1&&o.mergeCoins(d,l.slice(1)),d}async fastMergeSwap(e){let{router:i,slippage:r,txb:n,partner:o}=e;if(!i||!i.allRoutes||i.allRoutes.length===0)throw new Error("Invalid router: no routes found");let a=i.allRoutes[0],l=a.paths[a.paths.length-1].target,d=[],f=new Set;for(let y of i.allRoutes){let S=y.paths[0].from;if(f.has(S))continue;f.add(S);let I=ru({balance:BigInt(y.amountIn.toString()),useGasCoin:ks.isSuiCoin(S),type:S});d.push({coinType:S,coin:I})}let g={router:i,inputCoins:d,slippage:r,txb:n,partner:o??this.partner},v=await this.mergeSwap(g);if(ks.isSuiCoin(l))n.mergeCoins(n.gas,[v]);else{let y=await this.getOneCoinUsedToMerge(l);y!=null?n.mergeCoins(n.object(y),[v]):Vc({coin:v,coinType:l,packages:i.packages},n)}}async fixableRouterSwapV3(e){let{router:i,inputCoin:r,slippage:n,txb:o,partner:a}=e;Ms(this.overlayFeeRate,this.overlayFeeReceiver);let l=0;i.byAmountIn?l=Number(i.amountOut.mul(new pt.default(this.overlayFeeRate)).div(new pt.default(1e6)).toString()):l=Number(i.amountIn.mul(new pt.default(this.overlayFeeRate)).div(new pt.default(1e6)).toString());let d=i.byAmountIn?i.amountOut.sub(new pt.default(l)):i.amountOut,f=i.byAmountIn?i.amountIn:i.amountIn.add(new pt.default(l)),g=nu(i.byAmountIn?d:f,i.byAmountIn,n),v=su(i.paths),y=v.length>0?await this.updatePythPriceIDs(v,o):new Map;return i.byAmountIn?this.expectInputSwapV3(o,r,i,d.toString(),g.toString(),y,a??this.partner):this.expectOutputSwapV3(o,r,i,d.toString(),g.toString(),a??this.partner)}async swapInPools(e){let{from:i,target:r,amount:n,byAmountIn:o,pools:a}=e,l=Yi(i),d=Yi(r),f=new Sm,g=Bm(l,d),v=g?l:d,y=g?d:l,S=[v,y],I=this.env===0?"0xfbb32ac0fa89a3cb0c56c745b688c6d2a53ac8e43447119ad822763997ffb9c3":"0xab2d58dd28ff0dc19b18ab2c634397b785a38c342a8f5065ade5f53f9dbffa1c";for(let u=0;u<a.length;u++){let h=[f.object(a[u]),f.pure.bool(g),f.pure.bool(o),f.pure.u64(n.toString())];f.moveCall({target:`${I}::fetcher_script::calculate_swap_result`,arguments:h,typeArguments:S})}f.setSenderIfNotSet(this.signer||"0x0");let x=await this.client.devInspectTransactionBlock({sender:this.signer||"0x0",transactionBlock:f});if(x.error)throw new Error("Simulation error: "+x.error);let R=(x.events??[]).filter(u=>u.type.includes("CalculatedSwapResultEvent"));if(R.length===0||R.length!==a.length)throw new Error("Simulate event result error");let j=o?new pt.default(0):new pt.default(As),V=0;for(let u=0;u<R.length;u+=1){let h=R[u].parsedJson;if(!h?.data?.is_exceed)if(e.byAmountIn){let _=new pt.default(h?.data?.amount_out??0);_.gt(j)&&(V=u,j=_)}else{let _=new pt.default(h?.data?.amount_out??0);_.lt(j)&&(V=u,j=_)}}let Y=R[V].parsedJson?.data,[X,ee]=await Promise.all([this.client.getCoinMetadata({coinType:v}).then(u=>u?.decimals??null),this.client.getCoinMetadata({coinType:y}).then(u=>u?.decimals??null)]);if(X==null||ee==null)throw new Error("Cannot get coin decimals");let C=Number(Y?.fee_rate??0)/1e6,E=new pt.default(Y?.amount_in??0),N=new pt.default(Y?.fee_amount??0),D=E.add(N),O=this.env===0?qm:Um,A=this.env===0?ct.DEFAULT_PUBLISHED_AT.Mainnet:ct.DEFAULT_PUBLISHED_AT.Testnet,p={amountIn:D,amountOut:new pt.default(Y?.amount_out??0),deviationRatio:0,paths:[{id:a[V],direction:g,provider:Hc,from:l,target:d,feeRate:C,amountIn:D.toString(),amountOut:Y?.amount_out??"0",publishedAt:O,extendedDetails:{afterSqrtPrice:Y?.after_sqrt_price}}],insufficientLiquidity:!1,byAmountIn:e.byAmountIn,quoteID:`degraded-${Jg()}`,packages:new Map([[zn.AGGREGATOR_V3,A]])};return{isExceed:Y?.is_exceed??!1,routeData:p}}async updatePythPriceIDs(e,i){let r=await this.pythAdapter.getPriceFeedsUpdateData(e),n;try{n=await this.pythAdapter.updatePriceFeeds(i,r,e)}catch(a){throw new Error(`Failed to update Pyth price feeds. Ensure pythUrls are configured correctly. Detailed error: ${a}`)}let o=new Map;for(let a=0;a<e.length;a++)o.set(e[a],n[a]);return o}async devInspectTransactionBlock(e){return e.setSenderIfNotSet(this.signer||"0x0"),await this.client.devInspectTransactionBlock({sender:this.signer||"0x0",transactionBlock:e})}async sendTransaction(e,i){return await this.client.signAndExecuteTransaction({transaction:e,signer:i,options:{showEffects:!0,showEvents:!0,showBalanceChanges:!0}})}};_d.CONFIG={1:{wormholeStateId:"0x31358d198147da50db32eda2562951d53973a0c0ad5ed738e9b17d88b213d790",pythStateId:"0x243759059f4c3111179da5878c12f68d612c21a8d54d85edc86164bb18be1c7c"},0:{wormholeStateId:"0xaeab97f96cf9877fee2883315d459552b2b921edc16d7ceac6eab944dd88919c",pythStateId:"0x1f9310238ee9298fb703c3419030b35b22bb1cc37113e3bb5007c99aec79e5b8"}};var wd=_d;function Jg(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,function(t){let e=Math.random()*16|0;return(t==="x"?e:e&3|8).toString(16)})}function Wc(t){let e=new Map;for(let i=0;i<t.length;i++)e.has(t[i].from)||e.set(t[i].from,i);return e}function Ms(t,e){if(t>zt.MAX_OVERLAY_FEE_RATE_NUMERATOR)throw new Error(zt.ERRORS.INVALID_OVERLAY_FEE_RATE);if(e==="0x0"&&t>0)throw new Error(zt.ERRORS.OVERLAY_FEE_RECEIVER_REQUIRED)}import{FullRpcUrlMainnet as Qg}from"@cetusprotocol/common-sdk";var vd={full_rpc_url:Qg,env:"mainnet",aggregator_url:"https://api-sui.cetus.zone/router_v3",margin_trading:{package_id:"0x51bfedf86b5e18076f844bf0e1f82b14667bce59e2c38a8b5c8752ba3314bbd3",published_at:"0x51bfedf86b5e18076f844bf0e1f82b14667bce59e2c38a8b5c8752ba3314bbd3",version:0,config:{versioned_id:"0xdf21deea40ae40b2df5ef4b89a6d2d4bb487433b8fbc5af4f013c5d72e6fdc5f",admin_cap_id:"0x37727c2a5135bdf5b0d02f58dc119d3f3f3a778603690f8ecbb9ca9ecb2f0699",global_config_id:"0x3f0c7d3295ec74b465e944f9bad4310a8ce7f7fbeb76abf11933e43bb708bcd1",markets:"0x7d8797b6f177a8820e8b03ca81edf0818bc3ab2739df6800011b79c02d93f3ef",markets_table_id:"0xaf0d0a53740d02f6ace10a07a60763f8e079ee646913062e8392da3a96af3500"}},tspl:{package_id:"0x75dde20ab838ad72cff25f552bd5f80d46966d8cc038a0a9fc21b36c020ee287",published_at:"0x75dde20ab838ad72cff25f552bd5f80d46966d8cc038a0a9fc21b36c020ee287",version:0,config:{versioned_id:"0x70add27578467094df3bee0182658470fec89bb02fe7d32d3b8b34b10e8d538a",global_config_id:"0x61d0d36a0d7ef1dac7a7fb9d51facbdc285ecea38a64c1ceb7f56e62b5ab4cc4",admin_cap_id:"0x8739552de56c86f4115dc6a1c17eeda991e8c4cc3a275ef6566cfb1dc2d6d403",order_book_registry_id:"0x0497dc37da2702082ea3e29f673ad90ff1e0436585ea87cda4eed019c55449a2",order_book_registry_handle:"0x2d02fd0913750f9a2d36a188652eed05ec55b65a0510ffd1d0f1c1e2ff9d28d6"}},suilend:{package_id:"0xf95b06141ed4a174f239417323bde3f209b972f5930d8521ea38a52aff3a6ddf",published_at:"0xe37cc7bb50fd9b6dbd3873df66fa2c554e973697f50ef97707311dc78bd08444",config:{lending_market:[{name:"Main market",slug:"main",id:"0x84030d26d85eaa7035084a057f2f11f701b7e2e4eda87551becbc7c97505ece1",type:"0xf95b06141ed4a174f239417323bde3f209b972f5930d8521ea38a52aff3a6ddf::suilend::MAIN_POOL",owner_cap_id:"0xf7a4defe0b6566b6a2674a02a0c61c9f99bd012eed21bc741a069eaa82d35927"},{name:"STEAMM LM",slug:"steamm-lm",id:"0xc1888ec1b81a414e427a44829310508352aec38252ee0daa9f8b181b6947de9f",type:"0x0a071f4976abae1a7f722199cf0bfcbe695ef9408a878e7d12a7ca87b7e582a6::lp_rewards::LP_REWARDS",owner_cap_id:"0x55a0f33b24e091830302726c8cfbff8cf8abd2ec1f83a4e6f4bf51c7ba3ad5ab",is_hidden:!0}],lending_market_id:"0x84030d26d85eaa7035084a057f2f11f701b7e2e4eda87551becbc7c97505ece1",lending_market_type:"0xf95b06141ed4a174f239417323bde3f209b972f5930d8521ea38a52aff3a6ddf::suilend::MAIN_POOL",api_url:"https://d10td5ybgrf39v.cloudfront.net"}}};import{CACHE_TIME_5MIN as i1,d as tr,getPackagerConfigs as js}from"@cetusprotocol/common-sdk";import{Transaction as Bs}from"@mysten/sui/transactions";import{addHexPrefix as yd,d as Ut,getObjectFields as Ad}from"@cetusprotocol/common-sdk";import{getNetAprPercent as Yg,getTotalAprPercent as bd,getFilteredRewards as Md}from"@suilend/sdk/lib/liquidityMining";import{Side as kd}from"@suilend/sdk/lib/types";import{parseObligation as e1}from"@suilend/sdk/parsers/obligation";var pu=t=>{let e=Ad(t),{open_permissions_pause:i,close_permissions_pause:r,deposit_permissions_pause:n,withdraw_permissions_pause:o,borrow_permissions_pause:a,repay_permissions_pause:l}=gu(e.permissions.toString(2));return{market_id:e.id.id,base_token:yd(e.base_token.fields.name),quote_token:yd(e.quote_token.fields.name),max_long_leverage:Ut(e.max_long_leverage).div(10**6).toString(),max_short_leverage:Ut(e.max_short_leverage).div(10**6).toString(),open_fee_rate:Ut(e.open_fee_rate).div(10**6).toString(),close_fee_rate:Ut(e.close_fee_rate).div(10**6).toString(),open_permissions_pause:i,close_permissions_pause:r,deposit_permissions_pause:n,withdraw_permissions_pause:o,borrow_permissions_pause:a,repay_permissions_pause:l}},mu=(t,e,i)=>{let r=Ad(t);return{created_at:r.created_ts,position_id:r.id.id,init_deposit_amount:r.init_deposit_amount,is_long:r.is_long,lending_market_id:r.lending_market_id,obligation_owner_cap:r.obligation_owner_cap.fields.obligation_id,market_id:r.market_id,position_cap_id:e,is_tspl_cap:i}},_u=(t,e,i,r,n,o,a,l)=>{let d=e1(e,i),f=Yg(d,l,r,n,o,a);if(!d.deposits||d.deposits.length===0)throw new Error("No deposits found in obligation data");let g=d.deposits[0],v=Ut(g.reserve.config.closeLtvPct).div(100).toString(),y=Ut(g.reserve.config.openLtvPct).div(100).toString(),S=d.depositedAmountUsd.gt(0)?d.borrowedAmountUsd.div(d.depositedAmountUsd).toString():"0",I=Ut(1).div(v).toString(),x=Ut(v).sub(S).toString(),B="0",R="0",j="0",V="0";if(d.borrows&&d.borrows.length>0){let J=d.borrows[0],Y=l[J?.coinType];Y&&(B=bd(kd.BORROW,J?.reserve.borrowAprPercent,Md(Y.borrow)).toString()),j=J.borrowedAmountUsd.toString(),V=J.borrowedAmount.toString()}if(d.deposits&&d.deposits.length>0){let J=d.deposits[0],Y=l[J?.coinType];Y&&(R=bd(kd.DEPOSIT,J?.reserve.depositAprPercent,Md(Y.deposit)).toString())}return{...t,...d,origin_obligation:e,net_apr_percent:f.toString(),supplied_apr:Ut(R).toString(),borrowed_apr:Ut(B).toString(),close_ltv:v,open_ltv:y,cr:S,ltr:I,liquidation_buffer:x,deposited_amount_usd:g.depositedAmountUsd.toString(),borrowed_amount_usd:j,deposited_amount:g.depositedAmount.toString(),borrowed_amount:V}},gu=t=>{let e=t.length,i=t.substring(e-1,e)==="0",r=t.substring(e-2,e-1)==="0",n=t.substring(e-3,e-2)==="0",o=t.substring(e-4,e-3)==="0",a=t.substring(e-5,e-4)==="0",l=t.substring(e-6,e-5)==="0";return{open_permissions_pause:i,close_permissions_pause:r,deposit_permissions_pause:n,withdraw_permissions_pause:a,borrow_permissions_pause:o,repay_permissions_pause:l}};function wu(t){return{created_ts:t.created_ts,entry_price:Ut(t.entry_price).div(1e18).toString(),id:t.id.id,is_long:t.is_long,market_id:t.market_id,next_target_id:t.next_level_id,order_book_id:t.order_book_id,position_cap:t.position_cap.fields.id.id,order_cap:"",position_id:t.position_id,settlements:{id:t.settlements.fields.id.id,size:t.settlements.fields.size},status:t.status,updated_ts:t.updated_ts,tp_targets:t.tp_levels.map(i=>({trigger_price:Ut(i.fields.trigger_price).div(1e18).toString(),execution_price:Ut(i.fields.execution_price).div(1e18).toString(),close_ratio_bps:Ut(i.fields.close_ratio_bps).div(1e4).toString(),target_is_base:i.fields.target_is_base,id:i.fields.id})),sl_targets:t.sl_levels.map(i=>({trigger_price:Ut(i.fields.trigger_price).div(1e18).toString(),execution_price:Ut(i.fields.execution_price).div(1e18).toString(),close_ratio_bps:Ut(i.fields.close_ratio_bps).div(1e4).toString(),target_is_base:i.fields.target_is_base,id:i.fields.id}))}}import{getFilteredRewards as Rr,getStakingYieldAprPercent as Sd,getTotalAprPercent as Fs}from"@suilend/sdk/lib/liquidityMining";import{Side as eo}from"@suilend/sdk/lib/types";import{BaseError as t1}from"@cetusprotocol/common-sdk";var Ls=class extends t1{constructor(e,i,r){super(e,i||"UnknownError",r)}static isCrossSwapErrorCode(e,i){return this.isErrorCode(e,i)}},$t=(t,e,i)=>{let r={...i,stack:e instanceof Error?e.stack:void 0};throw e instanceof Error?new Ls(e.message,t,r):new Ls(e,t,r)};var qs=class{constructor(e){this.createMarket=async e=>{let{package_id:i}=this._sdk.sdkOptions.margin_trading,{versioned_id:r,admin_cap_id:n,markets:o,global_config_id:a}=js(this._sdk.sdkOptions.margin_trading),l=new Bs;return l.moveCall({target:`${i}::market::create_market`,arguments:[l.object(n),l.object(a),l.object(o),l.pure.u64(e.open_fee_rate),l.pure.u64(e.close_fee_rate),l.object(r)],typeArguments:[e.base_token,e.quote_token]}),l};this.updateMarketFeeRate=async e=>{let{package_id:i}=this._sdk.sdkOptions.margin_trading,{versioned_id:r,admin_cap_id:n}=js(this._sdk.sdkOptions.margin_trading),{market_id:o,open_fee_rate:a,close_fee_rate:l}=e,d=new Bs;return d.moveCall({target:`${i}::market::set_fee_rate`,arguments:[d.object(n),d.object(o),d.pure.u64(a),d.pure.u64(l),d.object(r)],typeArguments:[]}),d};this.claimMarketFees=async(e,i)=>{let{package_id:r}=this._sdk.sdkOptions.margin_trading,{versioned_id:n,admin_cap_id:o}=js(this._sdk.sdkOptions.margin_trading),a=i||new Bs,{base_token:l,quote_token:d}=await this._sdk.MarketModules.getMarketInfo(e);return a.moveCall({target:`${r}::market::claim_fees`,arguments:[a.object(o),a.object(e),a.object(n)],typeArguments:[l,d]}),a};this.claimAllMarketFees=async e=>{let i=new Bs;for(let r=0;r<e.length;r++){let n=e[r];this.claimMarketFees(n,i)}return i};this.getMarginTradingConfig=async()=>{let{package_id:e}=this._sdk.sdkOptions.margin_trading;try{let i=await this._sdk.FullClient.queryEventsByPage({MoveEventType:`${e}::versioned::InitEvent`}),r=await this._sdk.FullClient.queryEventsByPage({MoveEventType:`${e}::admin_cap::InitEvent`}),n=await this._sdk.FullClient.queryEventsByPage({MoveEventType:`${e}::config::InitEvent`}),a=(await this._sdk.FullClient.queryEventsByPage({MoveEventType:`${e}::market::InitEvent`})).data[0].parsedJson.markets_id,d=(await this._sdk.FullClient.getObject({id:a,options:{showContent:!0}})).data.content.fields.list.fields.id.id;return{versioned_id:i.data[0].parsedJson.versioned_id,admin_cap_id:r.data[0].parsedJson.admin_cap_id,global_config_id:n.data[0].parsedJson.global_config_id,markets:a,markets_table_id:d}}catch(i){return $t("FetchError",i),{versioned_id:"",admin_cap_id:"",global_config_id:"",markets_table_id:"",markets:""}}};this.getMarketList=async(e=!1)=>{let r=this._sdk.getCache("margin_trading_markets_list",e);if(r)return r;let{package_id:n}=this._sdk.sdkOptions.margin_trading,o=[];try{let a=`${n}::market::CreateMarketEvent`,d=(await this._sdk.FullClient.queryEventsByPage({MoveEventType:a})).data.map(f=>f.parsedJson.market_id);return d.length>0?((await this._sdk.FullClient.batchGetObjects(d,{showContent:!0,showType:!0})).forEach(g=>{let v=pu(g),y=`margin_trading_market_info_${v.market_id}`;this._sdk.updateCache(y,v),o.push(v)}),o):($t("MarketNotFound","Market not found"),[])}catch(a){return $t("FetchError",a),[]}};this.getMarketInfo=async(e,i=!1)=>{let r=`margin_trading_market_info_${e}`,n=this._sdk.getCache(r,i);if(n)return n;try{let o=await this._sdk.FullClient.getObject({id:e,options:{showContent:!0}}),a=pu(o);return this._sdk.updateCache(r,a,i1),a}catch(o){return $t("FetchError",o),{}}};this.getMarketSuilendInfo=async e=>{try{let{base_token:i,quote_token:r}=await this.getMarketInfo(e),{lending_market_id:n}=js(this._sdk.sdkOptions.suilend),o=await this._sdk.SuiLendModule.getLendingMarketData(!0),{allLendingMarketData:a,lstStatsMap:l,sdeUsdAprPercent:d,eThirdAprPercent:f,eEarnAprPercent:g}=o,{base_reserve_map_info:v,quote_reserve_map_info:y}=await this._sdk.SuiLendModule.getSuiLendReserveInfo(i,r,a);console.log("\u{1F680}\u{1F680}\u{1F680} ~ marketModules.ts:188 ~ MarketModules ~ base_reserve_map_info:",v);let S=await this._sdk.SuiLendModule.getInitializeObligations(o,!0),I=S[n].rewardMap[i],x=S[n].rewardMap[r],{depositedAmountUsd:B,borrowedAmountUsd:R,depositAprPercent:j,borrowAprPercent:V,depositedAmount:J,borrowedAmount:Y}=v,{depositLimit:X,borrowLimit:ee}=v.config,{depositedAmountUsd:C,borrowedAmountUsd:E,depositAprPercent:N,borrowAprPercent:D,depositedAmount:O,borrowedAmount:A}=y,{depositLimit:p,borrowLimit:s}=y.config,u=Fs(eo.DEPOSIT,j,Rr(I.deposit),Sd(eo.DEPOSIT,i,l,d,f)),h=Fs(eo.BORROW,V,Rr(I.borrow)),_=Fs(eo.DEPOSIT,N,Rr(x.deposit),Sd(eo.DEPOSIT,i,l,d,f)),w=Fs(eo.BORROW,D,Rr(x.borrow)),M=tr(C.toString()).sub(E.toString()).toString(),b=tr(B.toString()).sub(R.toString()).toString(),m=tr(X.toString()).sub(tr(J.toString())).toString(),c=tr(ee.toString()).sub(tr(Y.toString())).toString(),k=tr(p.toString()).sub(tr(O.toString())).toString(),Z=tr(s.toString()).sub(tr(A.toString())).toString();return{long_liquidity:M,short_liquidity:b,base_total_deposit_apr_percent:u.toString(),base_total_borrow_apr_percent:h.toString(),quote_total_deposit_apr_percent:_.toString(),quote_total_borrow_apr_percent:w.toString(),base_token_available_deposit_amount:m,base_token_available_borrow_amount:c,quote_token_available_deposit_amount:k,quote_token_available_borrow_amount:Z,base_deposit_rewards:Rr(I.deposit),quote_deposit_rewards:Rr(x.deposit),base_borrow_rewards:Rr(I.borrow),quote_borrow_rewards:Rr(x.borrow),base_deposit_apr_percent:j.toString(),base_borrow_apr_percent:V.toString(),quote_deposit_apr_percent:N.toString(),quote_borrow_apr_percent:D.toString(),obligations:S[n],base_reserve_map_info:v,quote_reserve_map_info:y}}catch(i){return $t("FetchError",i),{}}};this._sdk=e}};import{CLOCK_ADDRESS as to,getPackagerConfigs as ai}from"@cetusprotocol/common-sdk";import{Transaction as ri}from"@mysten/sui/transactions";var Us=class{constructor(e){this.queryGlobalPermissions=async()=>{let e=this._sdk.sdkOptions.margin_trading,{global_config_id:i}=ai(e),r=await this._sdk.FullClient.getObject({id:i,options:{showContent:!0}});if(r){let n=r.data.content.fields.permissions.toString(2),{open_permissions_pause:o,close_permissions_pause:a,deposit_permissions_pause:l,withdraw_permissions_pause:d,borrow_permissions_pause:f,repay_permissions_pause:g}=gu(n);return{open_permissions_pause:o,close_permissions_pause:a,deposit_permissions_pause:l,withdraw_permissions_pause:d,borrow_permissions_pause:f,repay_permissions_pause:g}}};this.updateGlobalPermissions=async e=>{let i=new ri;return this.updateGlobalOpenPositionPermissions(e,i),this.updateGlobalClosePositionPermissions(e,i),this.updateGlobalDepositPermissions(e,i),this.updateGlobalBorrowPermissions(e,i),this.updateGlobalWithdrawPermissions(e,i),this.updateGlobalRepayPermissions(e,i),i};this.updateGlobalOpenPositionPermissions=async(e,i)=>{let r=this._sdk.sdkOptions.margin_trading,{global_config_id:n,versioned_id:o,admin_cap_id:a}=ai(r),l=i||new ri;return l.moveCall({target:`${r.published_at}::config::update_global_open_position_permissions`,arguments:[l.object(a),l.object(n),l.pure.bool(e),l.object(to),l.object(o)],typeArguments:[]}),l};this.updateGlobalClosePositionPermissions=async(e,i)=>{let r=this._sdk.sdkOptions.margin_trading,{global_config_id:n,versioned_id:o,admin_cap_id:a}=ai(r),l=i||new ri;return l.moveCall({target:`${r.published_at}::config::update_global_close_position_permissions`,arguments:[l.object(a),l.object(n),l.pure.bool(e),l.object(to),l.object(o)],typeArguments:[]}),l};this.updateGlobalDepositPermissions=async(e,i)=>{let r=this._sdk.sdkOptions.margin_trading,{global_config_id:n,versioned_id:o,admin_cap_id:a}=ai(r),l=i||new ri;return l.moveCall({target:`${r.published_at}::config::update_global_deposit_permissions`,arguments:[l.object(a),l.object(n),l.pure.bool(e),l.object(to),l.object(o)],typeArguments:[]}),l};this.updateGlobalBorrowPermissions=async(e,i)=>{let r=this._sdk.sdkOptions.margin_trading,{global_config_id:n,versioned_id:o,admin_cap_id:a}=ai(r),l=i||new ri;return l.moveCall({target:`${r.published_at}::config::update_global_borrow_permissions`,arguments:[l.object(a),l.object(n),l.pure.bool(e),l.object(to),l.object(o)],typeArguments:[]}),l};this.updateGlobalWithdrawPermissions=async(e,i)=>{let r=this._sdk.sdkOptions.margin_trading,{global_config_id:n,versioned_id:o,admin_cap_id:a}=ai(r),l=i||new ri;return l.moveCall({target:`${r.published_at}::config::update_global_withdraw_permissions`,arguments:[l.object(a),l.object(n),l.pure.bool(e),l.object(to),l.object(o)],typeArguments:[]}),l};this.updateGlobalRepayPermissions=async(e,i)=>{let r=this._sdk.sdkOptions.margin_trading,{global_config_id:n,versioned_id:o,admin_cap_id:a}=ai(r),l=i||new ri;return l.moveCall({target:`${r.published_at}::config::update_global_repay_permissions`,arguments:[l.object(a),l.object(n),l.pure.bool(e),l.object(to),l.object(o)],typeArguments:[]}),l};this.updateMarketCreatePositionPermissions=async(e,i,r)=>{let n=this._sdk.sdkOptions.margin_trading,{versioned_id:o,admin_cap_id:a}=ai(n),l=r||new ri;return l.moveCall({target:`${n.published_at}::market::update_market_open_position_permission`,arguments:[l.object(a),l.object(e),l.pure.bool(i),l.object(o)],typeArguments:[]}),l};this.updateMarketClosePositionPermissions=async(e,i,r)=>{let n=this._sdk.sdkOptions.margin_trading,{versioned_id:o,admin_cap_id:a}=ai(n),l=r||new ri;return l.moveCall({target:`${n.published_at}::market::update_market_close_position_permission`,arguments:[l.object(a),l.object(e),l.pure.bool(i),l.object(o)],typeArguments:[]}),l};this.updateMarketDepositPermissions=async(e,i,r)=>{let n=this._sdk.sdkOptions.margin_trading,{versioned_id:o,admin_cap_id:a}=ai(n),l=r||new ri;return l.moveCall({target:`${n.published_at}::market::update_market_deposit_permission`,arguments:[l.object(a),l.object(e),l.pure.bool(i),l.object(o)],typeArguments:[]}),l};this.updateMarketWithdrawPermissions=async(e,i,r)=>{let n=this._sdk.sdkOptions.margin_trading,{versioned_id:o,admin_cap_id:a}=ai(n),l=r||new ri;return l.moveCall({target:`${n.published_at}::market::update_market_withdraw_permission`,arguments:[l.object(a),l.object(e),l.pure.bool(i),l.object(o)],typeArguments:[]}),l};this.updateMarketBorrowPermissions=async(e,i,r)=>{let n=this._sdk.sdkOptions.margin_trading,{versioned_id:o,admin_cap_id:a}=ai(n),l=r||new ri;return l.moveCall({target:`${n.published_at}::market::update_market_borrow_permission`,arguments:[l.object(a),l.object(e),l.pure.bool(i),l.object(o)],typeArguments:[]}),l};this.updateMarketRepayPermissions=async(e,i,r)=>{let n=this._sdk.sdkOptions.margin_trading,{versioned_id:o,admin_cap_id:a}=ai(n),l=r||new ri;return l.moveCall({target:`${n.published_at}::market::update_market_repay_permission`,arguments:[l.object(a),l.object(e),l.pure.bool(i),l.object(o)],typeArguments:[]}),l};this.updateMarketPermissions=async(e,i,r)=>{let n=r||new ri;return this.updateMarketCreatePositionPermissions(e,i,n),this.updateMarketClosePositionPermissions(e,i,n),this.updateMarketDepositPermissions(e,i,n),this.updateMarketWithdrawPermissions(e,i,n),this.updateMarketBorrowPermissions(e,i,n),this.updateMarketRepayPermissions(e,i,n),n};this._sdk=e}};import{CACHE_TIME_24H as Gd,CLOCK_ADDRESS as fn,CoinAssist as $e,d as ne,DETAILS_KEYS as ta,getObjectFields as ia,getPackagerConfigs as Pt,removeHexPrefix as no,SUI_SYSTEM_STATE_OBJECT_ID as zd,U64_MAX as ra}from"@cetusprotocol/common-sdk";var r1=/^-?(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?$/i,yu=Math.ceil,hi=Math.floor,ni="[BigNumber Error] ",Cd=ni+"Number primitive has more than 15 significant digits: ",qi=1e14,it=14,bu=9007199254740991,Mu=[1,10,100,1e3,1e4,1e5,1e6,1e7,1e8,1e9,1e10,1e11,1e12,1e13],Nr=1e7,Lt=1e9;function Td(t){var e,i,r,n=j.prototype={constructor:j,toString:null,valueOf:null},o=new j(1),a=20,l=4,d=-7,f=21,g=-1e7,v=1e7,y=!1,S=1,I=0,x={prefix:"",groupSize:3,secondaryGroupSize:0,groupSeparator:",",decimalSeparator:".",fractionGroupSize:0,fractionGroupSeparator:"\xA0",suffix:""},B="0123456789abcdefghijklmnopqrstuvwxyz",R=!0;function j(C,E){var N,D,O,A,p,s,u,h,_=this;if(!(_ instanceof j))return new j(C,E);if(E==null){if(C&&C._isBigNumber===!0){_.s=C.s,!C.c||C.e>v?_.c=_.e=null:C.e<g?_.c=[_.e=0]:(_.e=C.e,_.c=C.c.slice());return}if((s=typeof C=="number")&&C*0==0){if(_.s=1/C<0?(C=-C,-1):1,C===~~C){for(A=0,p=C;p>=10;p/=10,A++);A>v?_.c=_.e=null:(_.e=A,_.c=[C]);return}h=String(C)}else{if(!r1.test(h=String(C)))return r(_,h,s);_.s=h.charCodeAt(0)==45?(h=h.slice(1),-1):1}(A=h.indexOf("."))>-1&&(h=h.replace(".","")),(p=h.search(/e/i))>0?(A<0&&(A=p),A+=+h.slice(p+1),h=h.substring(0,p)):A<0&&(A=h.length)}else{if(Et(E,2,B.length,"Base"),E==10&&R)return _=new j(C),X(_,a+_.e+1,l);if(h=String(C),s=typeof C=="number"){if(C*0!=0)return r(_,h,s,E);if(_.s=1/C<0?(h=h.slice(1),-1):1,j.DEBUG&&h.replace(/^0\.0*|\./,"").length>15)throw Error(Cd+C)}else _.s=h.charCodeAt(0)===45?(h=h.slice(1),-1):1;for(N=B.slice(0,E),A=p=0,u=h.length;p<u;p++)if(N.indexOf(D=h.charAt(p))<0){if(D=="."){if(p>A){A=u;continue}}else if(!O&&(h==h.toUpperCase()&&(h=h.toLowerCase())||h==h.toLowerCase()&&(h=h.toUpperCase()))){O=!0,p=-1,A=0;continue}return r(_,String(C),s,E)}s=!1,h=i(h,E,10,_.s),(A=h.indexOf("."))>-1?h=h.replace(".",""):A=h.length}for(p=0;h.charCodeAt(p)===48;p++);for(u=h.length;h.charCodeAt(--u)===48;);if(h=h.slice(p,++u)){if(u-=p,s&&j.DEBUG&&u>15&&(C>bu||C!==hi(C)))throw Error(Cd+_.s*C);if((A=A-p-1)>v)_.c=_.e=null;else if(A<g)_.c=[_.e=0];else{if(_.e=A,_.c=[],p=(A+1)%it,A<0&&(p+=it),p<u){for(p&&_.c.push(+h.slice(0,p)),u-=it;p<u;)_.c.push(+h.slice(p,p+=it));p=it-(h=h.slice(p)).length}else p-=u;for(;p--;h+="0");_.c.push(+h)}}else _.c=[_.e=0]}j.clone=Td,j.ROUND_UP=0,j.ROUND_DOWN=1,j.ROUND_CEIL=2,j.ROUND_FLOOR=3,j.ROUND_HALF_UP=4,j.ROUND_HALF_DOWN=5,j.ROUND_HALF_EVEN=6,j.ROUND_HALF_CEIL=7,j.ROUND_HALF_FLOOR=8,j.EUCLID=9,j.config=j.set=function(C){var E,N;if(C!=null)if(typeof C=="object"){if(C.hasOwnProperty(E="DECIMAL_PLACES")&&(N=C[E],Et(N,0,Lt,E),a=N),C.hasOwnProperty(E="ROUNDING_MODE")&&(N=C[E],Et(N,0,8,E),l=N),C.hasOwnProperty(E="EXPONENTIAL_AT")&&(N=C[E],N&&N.pop?(Et(N[0],-Lt,0,E),Et(N[1],0,Lt,E),d=N[0],f=N[1]):(Et(N,-Lt,Lt,E),d=-(f=N<0?-N:N))),C.hasOwnProperty(E="RANGE"))if(N=C[E],N&&N.pop)Et(N[0],-Lt,-1,E),Et(N[1],1,Lt,E),g=N[0],v=N[1];else if(Et(N,-Lt,Lt,E),N)g=-(v=N<0?-N:N);else throw Error(ni+E+" cannot be zero: "+N);if(C.hasOwnProperty(E="CRYPTO"))if(N=C[E],N===!!N)if(N)if(typeof crypto<"u"&&crypto&&(crypto.getRandomValues||crypto.randomBytes))y=N;else throw y=!N,Error(ni+"crypto unavailable");else y=N;else throw Error(ni+E+" not true or false: "+N);if(C.hasOwnProperty(E="MODULO_MODE")&&(N=C[E],Et(N,0,9,E),S=N),C.hasOwnProperty(E="POW_PRECISION")&&(N=C[E],Et(N,0,Lt,E),I=N),C.hasOwnProperty(E="FORMAT"))if(N=C[E],typeof N=="object")x=N;else throw Error(ni+E+" not an object: "+N);if(C.hasOwnProperty(E="ALPHABET"))if(N=C[E],typeof N=="string"&&!/^.?$|[+\-.\s]|(.).*\1/.test(N))R=N.slice(0,10)=="0123456789",B=N;else throw Error(ni+E+" invalid: "+N)}else throw Error(ni+"Object expected: "+C);return{DECIMAL_PLACES:a,ROUNDING_MODE:l,EXPONENTIAL_AT:[d,f],RANGE:[g,v],CRYPTO:y,MODULO_MODE:S,POW_PRECISION:I,FORMAT:x,ALPHABET:B}},j.isBigNumber=function(C){if(!C||C._isBigNumber!==!0)return!1;if(!j.DEBUG)return!0;var E,N,D=C.c,O=C.e,A=C.s;e:if({}.toString.call(D)=="[object Array]"){if((A===1||A===-1)&&O>=-Lt&&O<=Lt&&O===hi(O)){if(D[0]===0){if(O===0&&D.length===1)return!0;break e}if(E=(O+1)%it,E<1&&(E+=it),String(D[0]).length==E){for(E=0;E<D.length;E++)if(N=D[E],N<0||N>=qi||N!==hi(N))break e;if(N!==0)return!0}}}else if(D===null&&O===null&&(A===null||A===1||A===-1))return!0;throw Error(ni+"Invalid BigNumber: "+C)},j.maximum=j.max=function(){return J(arguments,-1)},j.minimum=j.min=function(){return J(arguments,1)},j.random=(function(){var C=9007199254740992,E=Math.random()*C&2097151?function(){return hi(Math.random()*C)}:function(){return(Math.random()*1073741824|0)*8388608+(Math.random()*8388608|0)};return function(N){var D,O,A,p,s,u=0,h=[],_=new j(o);if(N==null?N=a:Et(N,0,Lt),p=yu(N/it),y)if(crypto.getRandomValues){for(D=crypto.getRandomValues(new Uint32Array(p*=2));u<p;)s=D[u]*131072+(D[u+1]>>>11),s>=9e15?(O=crypto.getRandomValues(new Uint32Array(2)),D[u]=O[0],D[u+1]=O[1]):(h.push(s%1e14),u+=2);u=p/2}else if(crypto.randomBytes){for(D=crypto.randomBytes(p*=7);u<p;)s=(D[u]&31)*281474976710656+D[u+1]*1099511627776+D[u+2]*4294967296+D[u+3]*16777216+(D[u+4]<<16)+(D[u+5]<<8)+D[u+6],s>=9e15?crypto.randomBytes(7).copy(D,u):(h.push(s%1e14),u+=7);u=p/7}else throw y=!1,Error(ni+"crypto unavailable");if(!y)for(;u<p;)s=E(),s<9e15&&(h[u++]=s%1e14);for(p=h[--u],N%=it,p&&N&&(s=Mu[it-N],h[u]=hi(p/s)*s);h[u]===0;h.pop(),u--);if(u<0)h=[A=0];else{for(A=-1;h[0]===0;h.splice(0,1),A-=it);for(u=1,s=h[0];s>=10;s/=10,u++);u<it&&(A-=it-u)}return _.e=A,_.c=h,_}})(),j.sum=function(){for(var C=1,E=arguments,N=new j(E[0]);C<E.length;)N=N.plus(E[C++]);return N},i=(function(){var C="0123456789";function E(N,D,O,A){for(var p,s=[0],u,h=0,_=N.length;h<_;){for(u=s.length;u--;s[u]*=D);for(s[0]+=A.indexOf(N.charAt(h++)),p=0;p<s.length;p++)s[p]>O-1&&(s[p+1]==null&&(s[p+1]=0),s[p+1]+=s[p]/O|0,s[p]%=O)}return s.reverse()}return function(N,D,O,A,p){var s,u,h,_,w,M,b,m,c=N.indexOf("."),k=a,Z=l;for(c>=0&&(_=I,I=0,N=N.replace(".",""),m=new j(D),M=m.pow(N.length-c),I=_,m.c=E(hr(di(M.c),M.e,"0"),10,O,C),m.e=m.c.length),b=E(N,D,O,p?(s=B,C):(s=C,B)),h=_=b.length;b[--_]==0;b.pop());if(!b[0])return s.charAt(0);if(c<0?--h:(M.c=b,M.e=h,M.s=A,M=e(M,m,k,Z,O),b=M.c,w=M.r,h=M.e),u=h+k+1,c=b[u],_=O/2,w=w||u<0||b[u+1]!=null,w=Z<4?(c!=null||w)&&(Z==0||Z==(M.s<0?3:2)):c>_||c==_&&(Z==4||w||Z==6&&b[u-1]&1||Z==(M.s<0?8:7)),u<1||!b[0])N=w?hr(s.charAt(1),-k,s.charAt(0)):s.charAt(0);else{if(b.length=u,w)for(--O;++b[--u]>O;)b[u]=0,u||(++h,b=[1].concat(b));for(_=b.length;!b[--_];);for(c=0,N="";c<=_;N+=s.charAt(b[c++]));N=hr(N,h,s.charAt(0))}return N}})(),e=(function(){function C(D,O,A){var p,s,u,h,_=0,w=D.length,M=O%Nr,b=O/Nr|0;for(D=D.slice();w--;)u=D[w]%Nr,h=D[w]/Nr|0,p=b*u+h*M,s=M*u+p%Nr*Nr+_,_=(s/A|0)+(p/Nr|0)+b*h,D[w]=s%A;return _&&(D=[_].concat(D)),D}function E(D,O,A,p){var s,u;if(A!=p)u=A>p?1:-1;else for(s=u=0;s<A;s++)if(D[s]!=O[s]){u=D[s]>O[s]?1:-1;break}return u}function N(D,O,A,p){for(var s=0;A--;)D[A]-=s,s=D[A]<O[A]?1:0,D[A]=s*p+D[A]-O[A];for(;!D[0]&&D.length>1;D.splice(0,1));}return function(D,O,A,p,s){var u,h,_,w,M,b,m,c,k,Z,W,Q,ie,T,P,L,q,F=D.s==O.s?1:-1,H=D.c,$=O.c;if(!H||!H[0]||!$||!$[0])return new j(!D.s||!O.s||(H?$&&H[0]==$[0]:!$)?NaN:H&&H[0]==0||!$?F*0:F/0);for(c=new j(F),k=c.c=[],h=D.e-O.e,F=A+h+1,s||(s=qi,h=fi(D.e/it)-fi(O.e/it),F=F/it|0),_=0;$[_]==(H[_]||0);_++);if($[_]>(H[_]||0)&&h--,F<0)k.push(1),w=!0;else{for(T=H.length,L=$.length,_=0,F+=2,M=hi(s/($[0]+1)),M>1&&($=C($,M,s),H=C(H,M,s),L=$.length,T=H.length),ie=L,Z=H.slice(0,L),W=Z.length;W<L;Z[W++]=0);q=$.slice(),q=[0].concat(q),P=$[0],$[1]>=s/2&&P++;do{if(M=0,u=E($,Z,L,W),u<0){if(Q=Z[0],L!=W&&(Q=Q*s+(Z[1]||0)),M=hi(Q/P),M>1)for(M>=s&&(M=s-1),b=C($,M,s),m=b.length,W=Z.length;E(b,Z,m,W)==1;)M--,N(b,L<m?q:$,m,s),m=b.length,u=1;else M==0&&(u=M=1),b=$.slice(),m=b.length;if(m<W&&(b=[0].concat(b)),N(Z,b,W,s),W=Z.length,u==-1)for(;E($,Z,L,W)<1;)M++,N(Z,L<W?q:$,W,s),W=Z.length}else u===0&&(M++,Z=[0]);k[_++]=M,Z[0]?Z[W++]=H[ie]||0:(Z=[H[ie]],W=1)}while((ie++<T||Z[0]!=null)&&F--);w=Z[0]!=null,k[0]||k.splice(0,1)}if(s==qi){for(_=1,F=k[0];F>=10;F/=10,_++);X(c,A+(c.e=_+h*it-1)+1,p,w)}else c.e=h,c.r=+w;return c}})();function V(C,E,N,D){var O,A,p,s,u;if(N==null?N=l:Et(N,0,8),!C.c)return C.toString();if(O=C.c[0],p=C.e,E==null)u=di(C.c),u=D==1||D==2&&(p<=d||p>=f)?Vs(u,p):hr(u,p,"0");else if(C=X(new j(C),E,N),A=C.e,u=di(C.c),s=u.length,D==1||D==2&&(E<=A||A<=d)){for(;s<E;u+="0",s++);u=Vs(u,A)}else if(E-=p+(D===2&&A>p),u=hr(u,A,"0"),A+1>s){if(--E>0)for(u+=".";E--;u+="0");}else if(E+=A-s,E>0)for(A+1==s&&(u+=".");E--;u+="0");return C.s<0&&O?"-"+u:u}function J(C,E){for(var N,D,O=1,A=new j(C[0]);O<C.length;O++)D=new j(C[O]),(!D.s||(N=dn(A,D))===E||N===0&&A.s===E)&&(A=D);return A}function Y(C,E,N){for(var D=1,O=E.length;!E[--O];E.pop());for(O=E[0];O>=10;O/=10,D++);return(N=D+N*it-1)>v?C.c=C.e=null:N<g?C.c=[C.e=0]:(C.e=N,C.c=E),C}r=(function(){var C=/^(-?)0([xbo])(?=\w[\w.]*$)/i,E=/^([^.]+)\.$/,N=/^\.([^.]+)$/,D=/^-?(Infinity|NaN)$/,O=/^\s*\+(?=[\w.])|^\s+|\s+$/g;return function(A,p,s,u){var h,_=s?p:p.replace(O,"");if(D.test(_))A.s=isNaN(_)?null:_<0?-1:1;else{if(!s&&(_=_.replace(C,function(w,M,b){return h=(b=b.toLowerCase())=="x"?16:b=="b"?2:8,!u||u==h?M:w}),u&&(h=u,_=_.replace(E,"$1").replace(N,"0.$1")),p!=_))return new j(_,h);if(j.DEBUG)throw Error(ni+"Not a"+(u?" base "+u:"")+" number: "+p);A.s=null}A.c=A.e=null}})();function X(C,E,N,D){var O,A,p,s,u,h,_,w=C.c,M=Mu;if(w){e:{for(O=1,s=w[0];s>=10;s/=10,O++);if(A=E-O,A<0)A+=it,p=E,u=w[h=0],_=hi(u/M[O-p-1]%10);else if(h=yu((A+1)/it),h>=w.length)if(D){for(;w.length<=h;w.push(0));u=_=0,O=1,A%=it,p=A-it+1}else break e;else{for(u=s=w[h],O=1;s>=10;s/=10,O++);A%=it,p=A-it+O,_=p<0?0:hi(u/M[O-p-1]%10)}if(D=D||E<0||w[h+1]!=null||(p<0?u:u%M[O-p-1]),D=N<4?(_||D)&&(N==0||N==(C.s<0?3:2)):_>5||_==5&&(N==4||D||N==6&&(A>0?p>0?u/M[O-p]:0:w[h-1])%10&1||N==(C.s<0?8:7)),E<1||!w[0])return w.length=0,D?(E-=C.e+1,w[0]=M[(it-E%it)%it],C.e=-E||0):w[0]=C.e=0,C;if(A==0?(w.length=h,s=1,h--):(w.length=h+1,s=M[it-A],w[h]=p>0?hi(u/M[O-p]%M[p])*s:0),D)for(;;)if(h==0){for(A=1,p=w[0];p>=10;p/=10,A++);for(p=w[0]+=s,s=1;p>=10;p/=10,s++);A!=s&&(C.e++,w[0]==qi&&(w[0]=1));break}else{if(w[h]+=s,w[h]!=qi)break;w[h--]=0,s=1}for(A=w.length;w[--A]===0;w.pop());}C.e>v?C.c=C.e=null:C.e<g&&(C.c=[C.e=0])}return C}function ee(C){var E,N=C.e;return N===null?C.toString():(E=di(C.c),E=N<=d||N>=f?Vs(E,N):hr(E,N,"0"),C.s<0?"-"+E:E)}return n.absoluteValue=n.abs=function(){var C=new j(this);return C.s<0&&(C.s=1),C},n.comparedTo=function(C,E){return dn(this,new j(C,E))},n.decimalPlaces=n.dp=function(C,E){var N,D,O,A=this;if(C!=null)return Et(C,0,Lt),E==null?E=l:Et(E,0,8),X(new j(A),C+A.e+1,E);if(!(N=A.c))return null;if(D=((O=N.length-1)-fi(this.e/it))*it,O=N[O])for(;O%10==0;O/=10,D--);return D<0&&(D=0),D},n.dividedBy=n.div=function(C,E){return e(this,new j(C,E),a,l)},n.dividedToIntegerBy=n.idiv=function(C,E){return e(this,new j(C,E),0,1)},n.exponentiatedBy=n.pow=function(C,E){var N,D,O,A,p,s,u,h,_,w=this;if(C=new j(C),C.c&&!C.isInteger())throw Error(ni+"Exponent not an integer: "+ee(C));if(E!=null&&(E=new j(E)),s=C.e>14,!w.c||!w.c[0]||w.c[0]==1&&!w.e&&w.c.length==1||!C.c||!C.c[0])return _=new j(Math.pow(+ee(w),s?C.s*(2-$s(C)):+ee(C))),E?_.mod(E):_;if(u=C.s<0,E){if(E.c?!E.c[0]:!E.s)return new j(NaN);D=!u&&w.isInteger()&&E.isInteger(),D&&(w=w.mod(E))}else{if(C.e>9&&(w.e>0||w.e<-1||(w.e==0?w.c[0]>1||s&&w.c[1]>=24e7:w.c[0]<8e13||s&&w.c[0]<=9999975e7)))return A=w.s<0&&$s(C)?-0:0,w.e>-1&&(A=1/A),new j(u?1/A:A);I&&(A=yu(I/it+2))}for(s?(N=new j(.5),u&&(C.s=1),h=$s(C)):(O=Math.abs(+ee(C)),h=O%2),_=new j(o);;){if(h){if(_=_.times(w),!_.c)break;A?_.c.length>A&&(_.c.length=A):D&&(_=_.mod(E))}if(O){if(O=hi(O/2),O===0)break;h=O%2}else if(C=C.times(N),X(C,C.e+1,1),C.e>14)h=$s(C);else{if(O=+ee(C),O===0)break;h=O%2}w=w.times(w),A?w.c&&w.c.length>A&&(w.c.length=A):D&&(w=w.mod(E))}return D?_:(u&&(_=o.div(_)),E?_.mod(E):A?X(_,I,l,p):_)},n.integerValue=function(C){var E=new j(this);return C==null?C=l:Et(C,0,8),X(E,E.e+1,C)},n.isEqualTo=n.eq=function(C,E){return dn(this,new j(C,E))===0},n.isFinite=function(){return!!this.c},n.isGreaterThan=n.gt=function(C,E){return dn(this,new j(C,E))>0},n.isGreaterThanOrEqualTo=n.gte=function(C,E){return(E=dn(this,new j(C,E)))===1||E===0},n.isInteger=function(){return!!this.c&&fi(this.e/it)>this.c.length-2},n.isLessThan=n.lt=function(C,E){return dn(this,new j(C,E))<0},n.isLessThanOrEqualTo=n.lte=function(C,E){return(E=dn(this,new j(C,E)))===-1||E===0},n.isNaN=function(){return!this.s},n.isNegative=function(){return this.s<0},n.isPositive=function(){return this.s>0},n.isZero=function(){return!!this.c&&this.c[0]==0},n.minus=function(C,E){var N,D,O,A,p=this,s=p.s;if(C=new j(C,E),E=C.s,!s||!E)return new j(NaN);if(s!=E)return C.s=-E,p.plus(C);var u=p.e/it,h=C.e/it,_=p.c,w=C.c;if(!u||!h){if(!_||!w)return _?(C.s=-E,C):new j(w?p:NaN);if(!_[0]||!w[0])return w[0]?(C.s=-E,C):new j(_[0]?p:l==3?-0:0)}if(u=fi(u),h=fi(h),_=_.slice(),s=u-h){for((A=s<0)?(s=-s,O=_):(h=u,O=w),O.reverse(),E=s;E--;O.push(0));O.reverse()}else for(D=(A=(s=_.length)<(E=w.length))?s:E,s=E=0;E<D;E++)if(_[E]!=w[E]){A=_[E]<w[E];break}if(A&&(O=_,_=w,w=O,C.s=-C.s),E=(D=w.length)-(N=_.length),E>0)for(;E--;_[N++]=0);for(E=qi-1;D>s;){if(_[--D]<w[D]){for(N=D;N&&!_[--N];_[N]=E);--_[N],_[D]+=qi}_[D]-=w[D]}for(;_[0]==0;_.splice(0,1),--h);return _[0]?Y(C,_,h):(C.s=l==3?-1:1,C.c=[C.e=0],C)},n.modulo=n.mod=function(C,E){var N,D,O=this;return C=new j(C,E),!O.c||!C.s||C.c&&!C.c[0]?new j(NaN):!C.c||O.c&&!O.c[0]?new j(O):(S==9?(D=C.s,C.s=1,N=e(O,C,0,3),C.s=D,N.s*=D):N=e(O,C,0,S),C=O.minus(N.times(C)),!C.c[0]&&S==1&&(C.s=O.s),C)},n.multipliedBy=n.times=function(C,E){var N,D,O,A,p,s,u,h,_,w,M,b,m,c,k,Z=this,W=Z.c,Q=(C=new j(C,E)).c;if(!W||!Q||!W[0]||!Q[0])return!Z.s||!C.s||W&&!W[0]&&!Q||Q&&!Q[0]&&!W?C.c=C.e=C.s=null:(C.s*=Z.s,!W||!Q?C.c=C.e=null:(C.c=[0],C.e=0)),C;for(D=fi(Z.e/it)+fi(C.e/it),C.s*=Z.s,u=W.length,w=Q.length,u<w&&(m=W,W=Q,Q=m,O=u,u=w,w=O),O=u+w,m=[];O--;m.push(0));for(c=qi,k=Nr,O=w;--O>=0;){for(N=0,M=Q[O]%k,b=Q[O]/k|0,p=u,A=O+p;A>O;)h=W[--p]%k,_=W[p]/k|0,s=b*h+_*M,h=M*h+s%k*k+m[A]+N,N=(h/c|0)+(s/k|0)+b*_,m[A--]=h%c;m[A]=N}return N?++D:m.splice(0,1),Y(C,m,D)},n.negated=function(){var C=new j(this);return C.s=-C.s||null,C},n.plus=function(C,E){var N,D=this,O=D.s;if(C=new j(C,E),E=C.s,!O||!E)return new j(NaN);if(O!=E)return C.s=-E,D.minus(C);var A=D.e/it,p=C.e/it,s=D.c,u=C.c;if(!A||!p){if(!s||!u)return new j(O/0);if(!s[0]||!u[0])return u[0]?C:new j(s[0]?D:O*0)}if(A=fi(A),p=fi(p),s=s.slice(),O=A-p){for(O>0?(p=A,N=u):(O=-O,N=s),N.reverse();O--;N.push(0));N.reverse()}for(O=s.length,E=u.length,O-E<0&&(N=u,u=s,s=N,E=O),O=0;E;)O=(s[--E]=s[E]+u[E]+O)/qi|0,s[E]=qi===s[E]?0:s[E]%qi;return O&&(s=[O].concat(s),++p),Y(C,s,p)},n.precision=n.sd=function(C,E){var N,D,O,A=this;if(C!=null&&C!==!!C)return Et(C,1,Lt),E==null?E=l:Et(E,0,8),X(new j(A),C,E);if(!(N=A.c))return null;if(O=N.length-1,D=O*it+1,O=N[O]){for(;O%10==0;O/=10,D--);for(O=N[0];O>=10;O/=10,D++);}return C&&A.e+1>D&&(D=A.e+1),D},n.shiftedBy=function(C){return Et(C,-bu,bu),this.times("1e"+C)},n.squareRoot=n.sqrt=function(){var C,E,N,D,O,A=this,p=A.c,s=A.s,u=A.e,h=a+4,_=new j("0.5");if(s!==1||!p||!p[0])return new j(!s||s<0&&(!p||p[0])?NaN:p?A:1/0);if(s=Math.sqrt(+ee(A)),s==0||s==1/0?(E=di(p),(E.length+u)%2==0&&(E+="0"),s=Math.sqrt(+E),u=fi((u+1)/2)-(u<0||u%2),s==1/0?E="5e"+u:(E=s.toExponential(),E=E.slice(0,E.indexOf("e")+1)+u),N=new j(E)):N=new j(s+""),N.c[0]){for(u=N.e,s=u+h,s<3&&(s=0);;)if(O=N,N=_.times(O.plus(e(A,O,h,1))),di(O.c).slice(0,s)===(E=di(N.c)).slice(0,s))if(N.e<u&&--s,E=E.slice(s-3,s+1),E=="9999"||!D&&E=="4999"){if(!D&&(X(O,O.e+a+2,0),O.times(O).eq(A))){N=O;break}h+=4,s+=4,D=1}else{(!+E||!+E.slice(1)&&E.charAt(0)=="5")&&(X(N,N.e+a+2,1),C=!N.times(N).eq(A));break}}return X(N,N.e+a+1,l,C)},n.toExponential=function(C,E){return C!=null&&(Et(C,0,Lt),C++),V(this,C,E,1)},n.toFixed=function(C,E){return C!=null&&(Et(C,0,Lt),C=C+this.e+1),V(this,C,E)},n.toFormat=function(C,E,N){var D,O=this;if(N==null)C!=null&&E&&typeof E=="object"?(N=E,E=null):C&&typeof C=="object"?(N=C,C=E=null):N=x;else if(typeof N!="object")throw Error(ni+"Argument not an object: "+N);if(D=O.toFixed(C,E),O.c){var A,p=D.split("."),s=+N.groupSize,u=+N.secondaryGroupSize,h=N.groupSeparator||"",_=p[0],w=p[1],M=O.s<0,b=M?_.slice(1):_,m=b.length;if(u&&(A=s,s=u,u=A,m-=A),s>0&&m>0){for(A=m%s||s,_=b.substr(0,A);A<m;A+=s)_+=h+b.substr(A,s);u>0&&(_+=h+b.slice(A)),M&&(_="-"+_)}D=w?_+(N.decimalSeparator||"")+((u=+N.fractionGroupSize)?w.replace(new RegExp("\\d{"+u+"}\\B","g"),"$&"+(N.fractionGroupSeparator||"")):w):_}return(N.prefix||"")+D+(N.suffix||"")},n.toFraction=function(C){var E,N,D,O,A,p,s,u,h,_,w,M,b=this,m=b.c;if(C!=null&&(s=new j(C),!s.isInteger()&&(s.c||s.s!==1)||s.lt(o)))throw Error(ni+"Argument "+(s.isInteger()?"out of range: ":"not an integer: ")+ee(s));if(!m)return new j(b);for(E=new j(o),h=N=new j(o),D=u=new j(o),M=di(m),A=E.e=M.length-b.e-1,E.c[0]=Mu[(p=A%it)<0?it+p:p],C=!C||s.comparedTo(E)>0?A>0?E:h:s,p=v,v=1/0,s=new j(M),u.c[0]=0;_=e(s,E,0,1),O=N.plus(_.times(D)),O.comparedTo(C)!=1;)N=D,D=O,h=u.plus(_.times(O=h)),u=O,E=s.minus(_.times(O=E)),s=O;return O=e(C.minus(N),D,0,1),u=u.plus(O.times(h)),N=N.plus(O.times(D)),u.s=h.s=b.s,A=A*2,w=e(h,D,A,l).minus(b).abs().comparedTo(e(u,N,A,l).minus(b).abs())<1?[h,D]:[u,N],v=p,w},n.toNumber=function(){return+ee(this)},n.toPrecision=function(C,E){return C!=null&&Et(C,1,Lt),V(this,C,E,2)},n.toString=function(C){var E,N=this,D=N.s,O=N.e;return O===null?D?(E="Infinity",D<0&&(E="-"+E)):E="NaN":(C==null?E=O<=d||O>=f?Vs(di(N.c),O):hr(di(N.c),O,"0"):C===10&&R?(N=X(new j(N),a+O+1,l),E=hr(di(N.c),N.e,"0")):(Et(C,2,B.length,"Base"),E=i(hr(di(N.c),O,"0"),10,C,D,!0)),D<0&&N.c[0]&&(E="-"+E)),E},n.valueOf=n.toJSON=function(){return ee(this)},n._isBigNumber=!0,n[Symbol.toStringTag]="BigNumber",n[Symbol.for("nodejs.util.inspect.custom")]=n.valueOf,t!=null&&j.set(t),j}function fi(t){var e=t|0;return t>0||t===e?e:e-1}function di(t){for(var e,i,r=1,n=t.length,o=t[0]+"";r<n;){for(e=t[r++]+"",i=it-e.length;i--;e="0"+e);o+=e}for(n=o.length;o.charCodeAt(--n)===48;);return o.slice(0,n+1||1)}function dn(t,e){var i,r,n=t.c,o=e.c,a=t.s,l=e.s,d=t.e,f=e.e;if(!a||!l)return null;if(i=n&&!n[0],r=o&&!o[0],i||r)return i?r?0:-l:a;if(a!=l)return a;if(i=a<0,r=d==f,!n||!o)return r?0:!n^i?1:-1;if(!r)return d>f^i?1:-1;for(l=(d=n.length)<(f=o.length)?d:f,a=0;a<l;a++)if(n[a]!=o[a])return n[a]>o[a]^i?1:-1;return d==f?0:d>f^i?1:-1}function Et(t,e,i,r){if(t<e||t>i||t!==hi(t))throw Error(ni+(r||"Argument")+(typeof t=="number"?t<e||t>i?" out of range: ":" not an integer: ":" not a primitive number: ")+String(t))}function $s(t){var e=t.c.length-1;return fi(t.e/it)==e&&t.c[e]%2!=0}function Vs(t,e){return(t.length>1?t.charAt(0)+"."+t.slice(1):t)+(e<0?"e":"e+")+e}function hr(t,e,i){var r,n;if(e<0){for(n=i+".";++e;n+=i);t=n+t}else if(r=t.length,++e>r){for(n=i,e-=r;--e;n+=i);t+=n}else e<r&&(t=t.slice(0,e)+"."+t.slice(e));return t}var n1=Td(),dt=n1;import{Transaction as $i}from"@mysten/sui/transactions";import{bcs as aw}from"@mysten/sui/bcs";var io=9e15,Br=1e9,ku="0123456789abcdef",Ws="2.3025850929940456840179914546843642076011014886287729760333279009675726096773524802359972050895982983419677840422862486334095254650828067566662873690987816894829072083255546808437998948262331985283935053089653777326288461633662222876982198867465436674744042432743651550489343149393914796194044002221051017141748003688084012647080685567743216228355220114804663715659121373450747856947683463616792101806445070648000277502684916746550586856935673420670581136429224554405758925724208241314695689016758940256776311356919292033376587141660230105703089634572075440370847469940168269282808481184289314848524948644871927809676271275775397027668605952496716674183485704422507197965004714951050492214776567636938662976979522110718264549734772662425709429322582798502585509785265383207606726317164309505995087807523710333101197857547331541421808427543863591778117054309827482385045648019095610299291824318237525357709750539565187697510374970888692180205189339507238539205144634197265287286965110862571492198849978748873771345686209167058",Gs="3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185950244594553469083026425223082533446850352619311881710100031378387528865875332083814206171776691473035982534904287554687311595628638823537875937519577818577805321712268066130019278766111959092164201989380952572010654858632789",Au={precision:20,rounding:4,modulo:1,toExpNeg:-7,toExpPos:21,minE:-io,maxE:io,crypto:!1},Pd,fr,He=!0,Ks="[DecimalError] ",jr=Ks+"Invalid argument: ",Od=Ks+"Precision limit exceeded",Rd=Ks+"crypto unavailable",Nd="[object Decimal]",Xt=Math.floor,Dt=Math.pow,o1=/^0b([01]+(\.[01]*)?|\.[01]+)(p[+-]?\d+)?$/i,s1=/^0x([0-9a-f]+(\.[0-9a-f]*)?|\.[0-9a-f]+)(p[+-]?\d+)?$/i,a1=/^0o([0-7]+(\.[0-7]*)?|\.[0-7]+)(p[+-]?\d+)?$/i,Dd=/^(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i,Ui=1e7,Fe=7,u1=9007199254740991,l1=Ws.length-1,Su=Gs.length-1,ue={toStringTag:Nd};ue.absoluteValue=ue.abs=function(){var t=new this.constructor(this);return t.s<0&&(t.s=1),Ne(t)};ue.ceil=function(){return Ne(new this.constructor(this),this.e+1,2)};ue.clampedTo=ue.clamp=function(t,e){var i,r=this,n=r.constructor;if(t=new n(t),e=new n(e),!t.s||!e.s)return new n(NaN);if(t.gt(e))throw Error(jr+e);return i=r.cmp(t),i<0?t:r.cmp(e)>0?e:new n(r)};ue.comparedTo=ue.cmp=function(t){var e,i,r,n,o=this,a=o.d,l=(t=new o.constructor(t)).d,d=o.s,f=t.s;if(!a||!l)return!d||!f?NaN:d!==f?d:a===l?0:!a^d<0?1:-1;if(!a[0]||!l[0])return a[0]?d:l[0]?-f:0;if(d!==f)return d;if(o.e!==t.e)return o.e>t.e^d<0?1:-1;for(r=a.length,n=l.length,e=0,i=r<n?r:n;e<i;++e)if(a[e]!==l[e])return a[e]>l[e]^d<0?1:-1;return r===n?0:r>n^d<0?1:-1};ue.cosine=ue.cos=function(){var t,e,i=this,r=i.constructor;return i.d?i.d[0]?(t=r.precision,e=r.rounding,r.precision=t+Math.max(i.e,i.sd())+Fe,r.rounding=1,i=c1(r,qd(r,i)),r.precision=t,r.rounding=e,Ne(fr==2||fr==3?i.neg():i,t,e,!0)):new r(1):new r(NaN)};ue.cubeRoot=ue.cbrt=function(){var t,e,i,r,n,o,a,l,d,f,g=this,v=g.constructor;if(!g.isFinite()||g.isZero())return new v(g);for(He=!1,o=g.s*Dt(g.s*g,1/3),!o||Math.abs(o)==1/0?(i=Vt(g.d),t=g.e,(o=(t-i.length+1)%3)&&(i+=o==1||o==-2?"0":"00"),o=Dt(i,1/3),t=Xt((t+1)/3)-(t%3==(t<0?-1:2)),o==1/0?i="5e"+t:(i=o.toExponential(),i=i.slice(0,i.indexOf("e")+1)+t),r=new v(i),r.s=g.s):r=new v(o.toString()),a=(t=v.precision)+3;;)if(l=r,d=l.times(l).times(l),f=d.plus(g),r=gt(f.plus(g).times(l),f.plus(d),a+2,1),Vt(l.d).slice(0,a)===(i=Vt(r.d)).slice(0,a))if(i=i.slice(a-3,a+1),i=="9999"||!n&&i=="4999"){if(!n&&(Ne(l,t+1,0),l.times(l).times(l).eq(g))){r=l;break}a+=4,n=1}else{(!+i||!+i.slice(1)&&i.charAt(0)=="5")&&(Ne(r,t+1,1),e=!r.times(r).times(r).eq(g));break}return He=!0,Ne(r,t,v.rounding,e)};ue.decimalPlaces=ue.dp=function(){var t,e=this.d,i=NaN;if(e){if(t=e.length-1,i=(t-Xt(this.e/Fe))*Fe,t=e[t],t)for(;t%10==0;t/=10)i--;i<0&&(i=0)}return i};ue.dividedBy=ue.div=function(t){return gt(this,new this.constructor(t))};ue.dividedToIntegerBy=ue.divToInt=function(t){var e=this,i=e.constructor;return Ne(gt(e,new i(t),0,1,1),i.precision,i.rounding)};ue.equals=ue.eq=function(t){return this.cmp(t)===0};ue.floor=function(){return Ne(new this.constructor(this),this.e+1,3)};ue.greaterThan=ue.gt=function(t){return this.cmp(t)>0};ue.greaterThanOrEqualTo=ue.gte=function(t){var e=this.cmp(t);return e==1||e===0};ue.hyperbolicCosine=ue.cosh=function(){var t,e,i,r,n,o=this,a=o.constructor,l=new a(1);if(!o.isFinite())return new a(o.s?1/0:NaN);if(o.isZero())return l;i=a.precision,r=a.rounding,a.precision=i+Math.max(o.e,o.sd())+4,a.rounding=1,n=o.d.length,n<32?(t=Math.ceil(n/3),e=(1/Js(4,t)).toString()):(t=16,e="2.3283064365386962890625e-10"),o=ro(a,1,o.times(e),new a(1),!0);for(var d,f=t,g=new a(8);f--;)d=o.times(o),o=l.minus(d.times(g.minus(d.times(g))));return Ne(o,a.precision=i,a.rounding=r,!0)};ue.hyperbolicSine=ue.sinh=function(){var t,e,i,r,n=this,o=n.constructor;if(!n.isFinite()||n.isZero())return new o(n);if(e=o.precision,i=o.rounding,o.precision=e+Math.max(n.e,n.sd())+4,o.rounding=1,r=n.d.length,r<3)n=ro(o,2,n,n,!0);else{t=1.4*Math.sqrt(r),t=t>16?16:t|0,n=n.times(1/Js(5,t)),n=ro(o,2,n,n,!0);for(var a,l=new o(5),d=new o(16),f=new o(20);t--;)a=n.times(n),n=n.times(l.plus(a.times(d.times(a).plus(f))))}return o.precision=e,o.rounding=i,Ne(n,e,i,!0)};ue.hyperbolicTangent=ue.tanh=function(){var t,e,i=this,r=i.constructor;return i.isFinite()?i.isZero()?new r(i):(t=r.precision,e=r.rounding,r.precision=t+7,r.rounding=1,gt(i.sinh(),i.cosh(),r.precision=t,r.rounding=e)):new r(i.s)};ue.inverseCosine=ue.acos=function(){var t=this,e=t.constructor,i=t.abs().cmp(1),r=e.precision,n=e.rounding;return i!==-1?i===0?t.isNeg()?ir(e,r,n):new e(0):new e(NaN):t.isZero()?ir(e,r+4,n).times(.5):(e.precision=r+6,e.rounding=1,t=new e(1).minus(t).div(t.plus(1)).sqrt().atan(),e.precision=r,e.rounding=n,t.times(2))};ue.inverseHyperbolicCosine=ue.acosh=function(){var t,e,i=this,r=i.constructor;return i.lte(1)?new r(i.eq(1)?0:NaN):i.isFinite()?(t=r.precision,e=r.rounding,r.precision=t+Math.max(Math.abs(i.e),i.sd())+4,r.rounding=1,He=!1,i=i.times(i).minus(1).sqrt().plus(i),He=!0,r.precision=t,r.rounding=e,i.ln()):new r(i)};ue.inverseHyperbolicSine=ue.asinh=function(){var t,e,i=this,r=i.constructor;return!i.isFinite()||i.isZero()?new r(i):(t=r.precision,e=r.rounding,r.precision=t+2*Math.max(Math.abs(i.e),i.sd())+6,r.rounding=1,He=!1,i=i.times(i).plus(1).sqrt().plus(i),He=!0,r.precision=t,r.rounding=e,i.ln())};ue.inverseHyperbolicTangent=ue.atanh=function(){var t,e,i,r,n=this,o=n.constructor;return n.isFinite()?n.e>=0?new o(n.abs().eq(1)?n.s/0:n.isZero()?n:NaN):(t=o.precision,e=o.rounding,r=n.sd(),Math.max(r,t)<2*-n.e-1?Ne(new o(n),t,e,!0):(o.precision=i=r-n.e,n=gt(n.plus(1),new o(1).minus(n),i+t,1),o.precision=t+4,o.rounding=1,n=n.ln(),o.precision=t,o.rounding=e,n.times(.5))):new o(NaN)};ue.inverseSine=ue.asin=function(){var t,e,i,r,n=this,o=n.constructor;return n.isZero()?new o(n):(e=n.abs().cmp(1),i=o.precision,r=o.rounding,e!==-1?e===0?(t=ir(o,i+4,r).times(.5),t.s=n.s,t):new o(NaN):(o.precision=i+6,o.rounding=1,n=n.div(new o(1).minus(n.times(n)).sqrt().plus(1)).atan(),o.precision=i,o.rounding=r,n.times(2)))};ue.inverseTangent=ue.atan=function(){var t,e,i,r,n,o,a,l,d,f=this,g=f.constructor,v=g.precision,y=g.rounding;if(f.isFinite()){if(f.isZero())return new g(f);if(f.abs().eq(1)&&v+4<=Su)return a=ir(g,v+4,y).times(.25),a.s=f.s,a}else{if(!f.s)return new g(NaN);if(v+4<=Su)return a=ir(g,v+4,y).times(.5),a.s=f.s,a}for(g.precision=l=v+10,g.rounding=1,i=Math.min(28,l/Fe+2|0),t=i;t;--t)f=f.div(f.times(f).plus(1).sqrt().plus(1));for(He=!1,e=Math.ceil(l/Fe),r=1,d=f.times(f),a=new g(f),n=f;t!==-1;)if(n=n.times(d),o=a.minus(n.div(r+=2)),n=n.times(d),a=o.plus(n.div(r+=2)),a.d[e]!==void 0)for(t=e;a.d[t]===o.d[t]&&t--;);return i&&(a=a.times(2<<i-1)),He=!0,Ne(a,g.precision=v,g.rounding=y,!0)};ue.isFinite=function(){return!!this.d};ue.isInteger=ue.isInt=function(){return!!this.d&&Xt(this.e/Fe)>this.d.length-2};ue.isNaN=function(){return!this.s};ue.isNegative=ue.isNeg=function(){return this.s<0};ue.isPositive=ue.isPos=function(){return this.s>0};ue.isZero=function(){return!!this.d&&this.d[0]===0};ue.lessThan=ue.lt=function(t){return this.cmp(t)<0};ue.lessThanOrEqualTo=ue.lte=function(t){return this.cmp(t)<1};ue.logarithm=ue.log=function(t){var e,i,r,n,o,a,l,d,f=this,g=f.constructor,v=g.precision,y=g.rounding,S=5;if(t==null)t=new g(10),e=!0;else{if(t=new g(t),i=t.d,t.s<0||!i||!i[0]||t.eq(1))return new g(NaN);e=t.eq(10)}if(i=f.d,f.s<0||!i||!i[0]||f.eq(1))return new g(i&&!i[0]?-1/0:f.s!=1?NaN:i?0:1/0);if(e)if(i.length>1)o=!0;else{for(n=i[0];n%10===0;)n/=10;o=n!==1}if(He=!1,l=v+S,a=Lr(f,l),r=e?zs(g,l+10):Lr(t,l),d=gt(a,r,l,1),xo(d.d,n=v,y))do if(l+=10,a=Lr(f,l),r=e?zs(g,l+10):Lr(t,l),d=gt(a,r,l,1),!o){+Vt(d.d).slice(n+1,n+15)+1==1e14&&(d=Ne(d,v+1,0));break}while(xo(d.d,n+=10,y));return He=!0,Ne(d,v,y)};ue.minus=ue.sub=function(t){var e,i,r,n,o,a,l,d,f,g,v,y,S=this,I=S.constructor;if(t=new I(t),!S.d||!t.d)return!S.s||!t.s?t=new I(NaN):S.d?t.s=-t.s:t=new I(t.d||S.s!==t.s?S:NaN),t;if(S.s!=t.s)return t.s=-t.s,S.plus(t);if(f=S.d,y=t.d,l=I.precision,d=I.rounding,!f[0]||!y[0]){if(y[0])t.s=-t.s;else if(f[0])t=new I(S);else return new I(d===3?-0:0);return He?Ne(t,l,d):t}if(i=Xt(t.e/Fe),g=Xt(S.e/Fe),f=f.slice(),o=g-i,o){for(v=o<0,v?(e=f,o=-o,a=y.length):(e=y,i=g,a=f.length),r=Math.max(Math.ceil(l/Fe),a)+2,o>r&&(o=r,e.length=1),e.reverse(),r=o;r--;)e.push(0);e.reverse()}else{for(r=f.length,a=y.length,v=r<a,v&&(a=r),r=0;r<a;r++)if(f[r]!=y[r]){v=f[r]<y[r];break}o=0}for(v&&(e=f,f=y,y=e,t.s=-t.s),a=f.length,r=y.length-a;r>0;--r)f[a++]=0;for(r=y.length;r>o;){if(f[--r]<y[r]){for(n=r;n&&f[--n]===0;)f[n]=Ui-1;--f[n],f[r]+=Ui}f[r]-=y[r]}for(;f[--a]===0;)f.pop();for(;f[0]===0;f.shift())--i;return f[0]?(t.d=f,t.e=Xs(f,i),He?Ne(t,l,d):t):new I(d===3?-0:0)};ue.modulo=ue.mod=function(t){var e,i=this,r=i.constructor;return t=new r(t),!i.d||!t.s||t.d&&!t.d[0]?new r(NaN):!t.d||i.d&&!i.d[0]?Ne(new r(i),r.precision,r.rounding):(He=!1,r.modulo==9?(e=gt(i,t.abs(),0,3,1),e.s*=t.s):e=gt(i,t,0,r.modulo,1),e=e.times(t),He=!0,i.minus(e))};ue.naturalExponential=ue.exp=function(){return Cu(this)};ue.naturalLogarithm=ue.ln=function(){return Lr(this)};ue.negated=ue.neg=function(){var t=new this.constructor(this);return t.s=-t.s,Ne(t)};ue.plus=ue.add=function(t){var e,i,r,n,o,a,l,d,f,g,v=this,y=v.constructor;if(t=new y(t),!v.d||!t.d)return!v.s||!t.s?t=new y(NaN):v.d||(t=new y(t.d||v.s===t.s?v:NaN)),t;if(v.s!=t.s)return t.s=-t.s,v.minus(t);if(f=v.d,g=t.d,l=y.precision,d=y.rounding,!f[0]||!g[0])return g[0]||(t=new y(v)),He?Ne(t,l,d):t;if(o=Xt(v.e/Fe),r=Xt(t.e/Fe),f=f.slice(),n=o-r,n){for(n<0?(i=f,n=-n,a=g.length):(i=g,r=o,a=f.length),o=Math.ceil(l/Fe),a=o>a?o+1:a+1,n>a&&(n=a,i.length=1),i.reverse();n--;)i.push(0);i.reverse()}for(a=f.length,n=g.length,a-n<0&&(n=a,i=g,g=f,f=i),e=0;n;)e=(f[--n]=f[n]+g[n]+e)/Ui|0,f[n]%=Ui;for(e&&(f.unshift(e),++r),a=f.length;f[--a]==0;)f.pop();return t.d=f,t.e=Xs(f,r),He?Ne(t,l,d):t};ue.precision=ue.sd=function(t){var e,i=this;if(t!==void 0&&t!==!!t&&t!==1&&t!==0)throw Error(jr+t);return i.d?(e=Ld(i.d),t&&i.e+1>e&&(e=i.e+1)):e=NaN,e};ue.round=function(){var t=this,e=t.constructor;return Ne(new e(t),t.e+1,e.rounding)};ue.sine=ue.sin=function(){var t,e,i=this,r=i.constructor;return i.isFinite()?i.isZero()?new r(i):(t=r.precision,e=r.rounding,r.precision=t+Math.max(i.e,i.sd())+Fe,r.rounding=1,i=h1(r,qd(r,i)),r.precision=t,r.rounding=e,Ne(fr>2?i.neg():i,t,e,!0)):new r(NaN)};ue.squareRoot=ue.sqrt=function(){var t,e,i,r,n,o,a=this,l=a.d,d=a.e,f=a.s,g=a.constructor;if(f!==1||!l||!l[0])return new g(!f||f<0&&(!l||l[0])?NaN:l?a:1/0);for(He=!1,f=Math.sqrt(+a),f==0||f==1/0?(e=Vt(l),(e.length+d)%2==0&&(e+="0"),f=Math.sqrt(e),d=Xt((d+1)/2)-(d<0||d%2),f==1/0?e="5e"+d:(e=f.toExponential(),e=e.slice(0,e.indexOf("e")+1)+d),r=new g(e)):r=new g(f.toString()),i=(d=g.precision)+3;;)if(o=r,r=o.plus(gt(a,o,i+2,1)).times(.5),Vt(o.d).slice(0,i)===(e=Vt(r.d)).slice(0,i))if(e=e.slice(i-3,i+1),e=="9999"||!n&&e=="4999"){if(!n&&(Ne(o,d+1,0),o.times(o).eq(a))){r=o;break}i+=4,n=1}else{(!+e||!+e.slice(1)&&e.charAt(0)=="5")&&(Ne(r,d+1,1),t=!r.times(r).eq(a));break}return He=!0,Ne(r,d,g.rounding,t)};ue.tangent=ue.tan=function(){var t,e,i=this,r=i.constructor;return i.isFinite()?i.isZero()?new r(i):(t=r.precision,e=r.rounding,r.precision=t+10,r.rounding=1,i=i.sin(),i.s=1,i=gt(i,new r(1).minus(i.times(i)).sqrt(),t+10,0),r.precision=t,r.rounding=e,Ne(fr==2||fr==4?i.neg():i,t,e,!0)):new r(NaN)};ue.times=ue.mul=function(t){var e,i,r,n,o,a,l,d,f,g=this,v=g.constructor,y=g.d,S=(t=new v(t)).d;if(t.s*=g.s,!y||!y[0]||!S||!S[0])return new v(!t.s||y&&!y[0]&&!S||S&&!S[0]&&!y?NaN:!y||!S?t.s/0:t.s*0);for(i=Xt(g.e/Fe)+Xt(t.e/Fe),d=y.length,f=S.length,d<f&&(o=y,y=S,S=o,a=d,d=f,f=a),o=[],a=d+f,r=a;r--;)o.push(0);for(r=f;--r>=0;){for(e=0,n=d+r;n>r;)l=o[n]+S[r]*y[n-r-1]+e,o[n--]=l%Ui|0,e=l/Ui|0;o[n]=(o[n]+e)%Ui|0}for(;!o[--a];)o.pop();return e?++i:o.shift(),t.d=o,t.e=Xs(o,i),He?Ne(t,v.precision,v.rounding):t};ue.toBinary=function(t,e){return Tu(this,2,t,e)};ue.toDecimalPlaces=ue.toDP=function(t,e){var i=this,r=i.constructor;return i=new r(i),t===void 0?i:(oi(t,0,Br),e===void 0?e=r.rounding:oi(e,0,8),Ne(i,t+i.e+1,e))};ue.toExponential=function(t,e){var i,r=this,n=r.constructor;return t===void 0?i=rr(r,!0):(oi(t,0,Br),e===void 0?e=n.rounding:oi(e,0,8),r=Ne(new n(r),t+1,e),i=rr(r,!0,t+1)),r.isNeg()&&!r.isZero()?"-"+i:i};ue.toFixed=function(t,e){var i,r,n=this,o=n.constructor;return t===void 0?i=rr(n):(oi(t,0,Br),e===void 0?e=o.rounding:oi(e,0,8),r=Ne(new o(n),t+n.e+1,e),i=rr(r,!1,t+r.e+1)),n.isNeg()&&!n.isZero()?"-"+i:i};ue.toFraction=function(t){var e,i,r,n,o,a,l,d,f,g,v,y,S=this,I=S.d,x=S.constructor;if(!I)return new x(S);if(f=i=new x(1),r=d=new x(0),e=new x(r),o=e.e=Ld(I)-S.e-1,a=o%Fe,e.d[0]=Dt(10,a<0?Fe+a:a),t==null)t=o>0?e:f;else{if(l=new x(t),!l.isInt()||l.lt(f))throw Error(jr+l);t=l.gt(e)?o>0?e:f:l}for(He=!1,l=new x(Vt(I)),g=x.precision,x.precision=o=I.length*Fe*2;v=gt(l,e,0,1,1),n=i.plus(v.times(r)),n.cmp(t)!=1;)i=r,r=n,n=f,f=d.plus(v.times(n)),d=n,n=e,e=l.minus(v.times(n)),l=n;return n=gt(t.minus(i),r,0,1,1),d=d.plus(n.times(f)),i=i.plus(n.times(r)),d.s=f.s=S.s,y=gt(f,r,o,1).minus(S).abs().cmp(gt(d,i,o,1).minus(S).abs())<1?[f,r]:[d,i],x.precision=g,He=!0,y};ue.toHexadecimal=ue.toHex=function(t,e){return Tu(this,16,t,e)};ue.toNearest=function(t,e){var i=this,r=i.constructor;if(i=new r(i),t==null){if(!i.d)return i;t=new r(1),e=r.rounding}else{if(t=new r(t),e===void 0?e=r.rounding:oi(e,0,8),!i.d)return t.s?i:t;if(!t.d)return t.s&&(t.s=i.s),t}return t.d[0]?(He=!1,i=gt(i,t,0,e,1).times(t),He=!0,Ne(i)):(t.s=i.s,i=t),i};ue.toNumber=function(){return+this};ue.toOctal=function(t,e){return Tu(this,8,t,e)};ue.toPower=ue.pow=function(t){var e,i,r,n,o,a,l=this,d=l.constructor,f=+(t=new d(t));if(!l.d||!t.d||!l.d[0]||!t.d[0])return new d(Dt(+l,f));if(l=new d(l),l.eq(1))return l;if(r=d.precision,o=d.rounding,t.eq(1))return Ne(l,r,o);if(e=Xt(t.e/Fe),e>=t.d.length-1&&(i=f<0?-f:f)<=u1)return n=jd(d,l,i,r),t.s<0?new d(1).div(n):Ne(n,r,o);if(a=l.s,a<0){if(e<t.d.length-1)return new d(NaN);if((t.d[e]&1)==0&&(a=1),l.e==0&&l.d[0]==1&&l.d.length==1)return l.s=a,l}return i=Dt(+l,f),e=i==0||!isFinite(i)?Xt(f*(Math.log("0."+Vt(l.d))/Math.LN10+l.e+1)):new d(i+"").e,e>d.maxE+1||e<d.minE-1?new d(e>0?a/0:0):(He=!1,d.rounding=l.s=1,i=Math.min(12,(e+"").length),n=Cu(t.times(Lr(l,r+i)),r),n.d&&(n=Ne(n,r+5,1),xo(n.d,r,o)&&(e=r+10,n=Ne(Cu(t.times(Lr(l,e+i)),e),e+5,1),+Vt(n.d).slice(r+1,r+15)+1==1e14&&(n=Ne(n,r+1,0)))),n.s=a,He=!0,d.rounding=o,Ne(n,r,o))};ue.toPrecision=function(t,e){var i,r=this,n=r.constructor;return t===void 0?i=rr(r,r.e<=n.toExpNeg||r.e>=n.toExpPos):(oi(t,1,Br),e===void 0?e=n.rounding:oi(e,0,8),r=Ne(new n(r),t,e),i=rr(r,t<=r.e||r.e<=n.toExpNeg,t)),r.isNeg()&&!r.isZero()?"-"+i:i};ue.toSignificantDigits=ue.toSD=function(t,e){var i=this,r=i.constructor;return t===void 0?(t=r.precision,e=r.rounding):(oi(t,1,Br),e===void 0?e=r.rounding:oi(e,0,8)),Ne(new r(i),t,e)};ue.toString=function(){var t=this,e=t.constructor,i=rr(t,t.e<=e.toExpNeg||t.e>=e.toExpPos);return t.isNeg()&&!t.isZero()?"-"+i:i};ue.truncated=ue.trunc=function(){return Ne(new this.constructor(this),this.e+1,1)};ue.valueOf=ue.toJSON=function(){var t=this,e=t.constructor,i=rr(t,t.e<=e.toExpNeg||t.e>=e.toExpPos);return t.isNeg()?"-"+i:i};function Vt(t){var e,i,r,n=t.length-1,o="",a=t[0];if(n>0){for(o+=a,e=1;e<n;e++)r=t[e]+"",i=Fe-r.length,i&&(o+=Dr(i)),o+=r;a=t[e],r=a+"",i=Fe-r.length,i&&(o+=Dr(i))}else if(a===0)return"0";for(;a%10===0;)a/=10;return o+a}function oi(t,e,i){if(t!==~~t||t<e||t>i)throw Error(jr+t)}function xo(t,e,i,r){var n,o,a,l;for(o=t[0];o>=10;o/=10)--e;return--e<0?(e+=Fe,n=0):(n=Math.ceil((e+1)/Fe),e%=Fe),o=Dt(10,Fe-e),l=t[n]%o|0,r==null?e<3?(e==0?l=l/100|0:e==1&&(l=l/10|0),a=i<4&&l==99999||i>3&&l==49999||l==5e4||l==0):a=(i<4&&l+1==o||i>3&&l+1==o/2)&&(t[n+1]/o/100|0)==Dt(10,e-2)-1||(l==o/2||l==0)&&(t[n+1]/o/100|0)==0:e<4?(e==0?l=l/1e3|0:e==1?l=l/100|0:e==2&&(l=l/10|0),a=(r||i<4)&&l==9999||!r&&i>3&&l==4999):a=((r||i<4)&&l+1==o||!r&&i>3&&l+1==o/2)&&(t[n+1]/o/1e3|0)==Dt(10,e-3)-1,a}function Zs(t,e,i){for(var r,n=[0],o,a=0,l=t.length;a<l;){for(o=n.length;o--;)n[o]*=e;for(n[0]+=ku.indexOf(t.charAt(a++)),r=0;r<n.length;r++)n[r]>i-1&&(n[r+1]===void 0&&(n[r+1]=0),n[r+1]+=n[r]/i|0,n[r]%=i)}return n.reverse()}function c1(t,e){var i,r,n;if(e.isZero())return e;r=e.d.length,r<32?(i=Math.ceil(r/3),n=(1/Js(4,i)).toString()):(i=16,n="2.3283064365386962890625e-10"),t.precision+=i,e=ro(t,1,e.times(n),new t(1));for(var o=i;o--;){var a=e.times(e);e=a.times(a).minus(a).times(8).plus(1)}return t.precision-=i,e}var gt=(function(){function t(r,n,o){var a,l=0,d=r.length;for(r=r.slice();d--;)a=r[d]*n+l,r[d]=a%o|0,l=a/o|0;return l&&r.unshift(l),r}function e(r,n,o,a){var l,d;if(o!=a)d=o>a?1:-1;else for(l=d=0;l<o;l++)if(r[l]!=n[l]){d=r[l]>n[l]?1:-1;break}return d}function i(r,n,o,a){for(var l=0;o--;)r[o]-=l,l=r[o]<n[o]?1:0,r[o]=l*a+r[o]-n[o];for(;!r[0]&&r.length>1;)r.shift()}return function(r,n,o,a,l,d){var f,g,v,y,S,I,x,B,R,j,V,J,Y,X,ee,C,E,N,D,O,A=r.constructor,p=r.s==n.s?1:-1,s=r.d,u=n.d;if(!s||!s[0]||!u||!u[0])return new A(!r.s||!n.s||(s?u&&s[0]==u[0]:!u)?NaN:s&&s[0]==0||!u?p*0:p/0);for(d?(S=1,g=r.e-n.e):(d=Ui,S=Fe,g=Xt(r.e/S)-Xt(n.e/S)),D=u.length,E=s.length,R=new A(p),j=R.d=[],v=0;u[v]==(s[v]||0);v++);if(u[v]>(s[v]||0)&&g--,o==null?(X=o=A.precision,a=A.rounding):l?X=o+(r.e-n.e)+1:X=o,X<0)j.push(1),I=!0;else{if(X=X/S+2|0,v=0,D==1){for(y=0,u=u[0],X++;(v<E||y)&&X--;v++)ee=y*d+(s[v]||0),j[v]=ee/u|0,y=ee%u|0;I=y||v<E}else{for(y=d/(u[0]+1)|0,y>1&&(u=t(u,y,d),s=t(s,y,d),D=u.length,E=s.length),C=D,V=s.slice(0,D),J=V.length;J<D;)V[J++]=0;O=u.slice(),O.unshift(0),N=u[0],u[1]>=d/2&&++N;do y=0,f=e(u,V,D,J),f<0?(Y=V[0],D!=J&&(Y=Y*d+(V[1]||0)),y=Y/N|0,y>1?(y>=d&&(y=d-1),x=t(u,y,d),B=x.length,J=V.length,f=e(x,V,B,J),f==1&&(y--,i(x,D<B?O:u,B,d))):(y==0&&(f=y=1),x=u.slice()),B=x.length,B<J&&x.unshift(0),i(V,x,J,d),f==-1&&(J=V.length,f=e(u,V,D,J),f<1&&(y++,i(V,D<J?O:u,J,d))),J=V.length):f===0&&(y++,V=[0]),j[v++]=y,f&&V[0]?V[J++]=s[C]||0:(V=[s[C]],J=1);while((C++<E||V[0]!==void 0)&&X--);I=V[0]!==void 0}j[0]||j.shift()}if(S==1)R.e=g,Pd=I;else{for(v=1,y=j[0];y>=10;y/=10)v++;R.e=v+g*S-1,Ne(R,l?o+R.e+1:o,a,I)}return R}})();function Ne(t,e,i,r){var n,o,a,l,d,f,g,v,y,S=t.constructor;e:if(e!=null){if(v=t.d,!v)return t;for(n=1,l=v[0];l>=10;l/=10)n++;if(o=e-n,o<0)o+=Fe,a=e,g=v[y=0],d=g/Dt(10,n-a-1)%10|0;else if(y=Math.ceil((o+1)/Fe),l=v.length,y>=l)if(r){for(;l++<=y;)v.push(0);g=d=0,n=1,o%=Fe,a=o-Fe+1}else break e;else{for(g=l=v[y],n=1;l>=10;l/=10)n++;o%=Fe,a=o-Fe+n,d=a<0?0:g/Dt(10,n-a-1)%10|0}if(r=r||e<0||v[y+1]!==void 0||(a<0?g:g%Dt(10,n-a-1)),f=i<4?(d||r)&&(i==0||i==(t.s<0?3:2)):d>5||d==5&&(i==4||r||i==6&&(o>0?a>0?g/Dt(10,n-a):0:v[y-1])%10&1||i==(t.s<0?8:7)),e<1||!v[0])return v.length=0,f?(e-=t.e+1,v[0]=Dt(10,(Fe-e%Fe)%Fe),t.e=-e||0):v[0]=t.e=0,t;if(o==0?(v.length=y,l=1,y--):(v.length=y+1,l=Dt(10,Fe-o),v[y]=a>0?(g/Dt(10,n-a)%Dt(10,a)|0)*l:0),f)for(;;)if(y==0){for(o=1,a=v[0];a>=10;a/=10)o++;for(a=v[0]+=l,l=1;a>=10;a/=10)l++;o!=l&&(t.e++,v[0]==Ui&&(v[0]=1));break}else{if(v[y]+=l,v[y]!=Ui)break;v[y--]=0,l=1}for(o=v.length;v[--o]===0;)v.pop()}return He&&(t.e>S.maxE?(t.d=null,t.e=NaN):t.e<S.minE&&(t.e=0,t.d=[0])),t}function rr(t,e,i){if(!t.isFinite())return Fd(t);var r,n=t.e,o=Vt(t.d),a=o.length;return e?(i&&(r=i-a)>0?o=o.charAt(0)+"."+o.slice(1)+Dr(r):a>1&&(o=o.charAt(0)+"."+o.slice(1)),o=o+(t.e<0?"e":"e+")+t.e):n<0?(o="0."+Dr(-n-1)+o,i&&(r=i-a)>0&&(o+=Dr(r))):n>=a?(o+=Dr(n+1-a),i&&(r=i-n-1)>0&&(o=o+"."+Dr(r))):((r=n+1)<a&&(o=o.slice(0,r)+"."+o.slice(r)),i&&(r=i-a)>0&&(n+1===a&&(o+="."),o+=Dr(r))),o}function Xs(t,e){var i=t[0];for(e*=Fe;i>=10;i/=10)e++;return e}function zs(t,e,i){if(e>l1)throw He=!0,i&&(t.precision=i),Error(Od);return Ne(new t(Ws),e,1,!0)}function ir(t,e,i){if(e>Su)throw Error(Od);return Ne(new t(Gs),e,i,!0)}function Ld(t){var e=t.length-1,i=e*Fe+1;if(e=t[e],e){for(;e%10==0;e/=10)i--;for(e=t[0];e>=10;e/=10)i++}return i}function Dr(t){for(var e="";t--;)e+="0";return e}function jd(t,e,i,r){var n,o=new t(1),a=Math.ceil(r/Fe+4);for(He=!1;;){if(i%2&&(o=o.times(e),xd(o.d,a)&&(n=!0)),i=Xt(i/2),i===0){i=o.d.length-1,n&&o.d[i]===0&&++o.d[i];break}e=e.times(e),xd(e.d,a)}return He=!0,o}function Ed(t){return t.d[t.d.length-1]&1}function Bd(t,e,i){for(var r,n,o=new t(e[0]),a=0;++a<e.length;){if(n=new t(e[a]),!n.s){o=n;break}r=o.cmp(n),(r===i||r===0&&o.s===i)&&(o=n)}return o}function Cu(t,e){var i,r,n,o,a,l,d,f=0,g=0,v=0,y=t.constructor,S=y.rounding,I=y.precision;if(!t.d||!t.d[0]||t.e>17)return new y(t.d?t.d[0]?t.s<0?0:1/0:1:t.s?t.s<0?0:t:NaN);for(e==null?(He=!1,d=I):d=e,l=new y(.03125);t.e>-2;)t=t.times(l),v+=5;for(r=Math.log(Dt(2,v))/Math.LN10*2+5|0,d+=r,i=o=a=new y(1),y.precision=d;;){if(o=Ne(o.times(t),d,1),i=i.times(++g),l=a.plus(gt(o,i,d,1)),Vt(l.d).slice(0,d)===Vt(a.d).slice(0,d)){for(n=v;n--;)a=Ne(a.times(a),d,1);if(e==null)if(f<3&&xo(a.d,d-r,S,f))y.precision=d+=10,i=o=l=new y(1),g=0,f++;else return Ne(a,y.precision=I,S,He=!0);else return y.precision=I,a}a=l}}function Lr(t,e){var i,r,n,o,a,l,d,f,g,v,y,S=1,I=10,x=t,B=x.d,R=x.constructor,j=R.rounding,V=R.precision;if(x.s<0||!B||!B[0]||!x.e&&B[0]==1&&B.length==1)return new R(B&&!B[0]?-1/0:x.s!=1?NaN:B?0:x);if(e==null?(He=!1,g=V):g=e,R.precision=g+=I,i=Vt(B),r=i.charAt(0),Math.abs(o=x.e)<15e14){for(;r<7&&r!=1||r==1&&i.charAt(1)>3;)x=x.times(t),i=Vt(x.d),r=i.charAt(0),S++;o=x.e,r>1?(x=new R("0."+i),o++):x=new R(r+"."+i.slice(1))}else return f=zs(R,g+2,V).times(o+""),x=Lr(new R(r+"."+i.slice(1)),g-I).plus(f),R.precision=V,e==null?Ne(x,V,j,He=!0):x;for(v=x,d=a=x=gt(x.minus(1),x.plus(1),g,1),y=Ne(x.times(x),g,1),n=3;;){if(a=Ne(a.times(y),g,1),f=d.plus(gt(a,new R(n),g,1)),Vt(f.d).slice(0,g)===Vt(d.d).slice(0,g))if(d=d.times(2),o!==0&&(d=d.plus(zs(R,g+2,V).times(o+""))),d=gt(d,new R(S),g,1),e==null)if(xo(d.d,g-I,j,l))R.precision=g+=I,f=a=x=gt(v.minus(1),v.plus(1),g,1),y=Ne(x.times(x),g,1),n=l=1;else return Ne(d,R.precision=V,j,He=!0);else return R.precision=V,d;d=f,n+=2}}function Fd(t){return String(t.s*t.s/0)}function Hs(t,e){var i,r,n;for((i=e.indexOf("."))>-1&&(e=e.replace(".","")),(r=e.search(/e/i))>0?(i<0&&(i=r),i+=+e.slice(r+1),e=e.substring(0,r)):i<0&&(i=e.length),r=0;e.charCodeAt(r)===48;r++);for(n=e.length;e.charCodeAt(n-1)===48;--n);if(e=e.slice(r,n),e){if(n-=r,t.e=i=i-r-1,t.d=[],r=(i+1)%Fe,i<0&&(r+=Fe),r<n){for(r&&t.d.push(+e.slice(0,r)),n-=Fe;r<n;)t.d.push(+e.slice(r,r+=Fe));e=e.slice(r),r=Fe-e.length}else r-=n;for(;r--;)e+="0";t.d.push(+e),He&&(t.e>t.constructor.maxE?(t.d=null,t.e=NaN):t.e<t.constructor.minE&&(t.e=0,t.d=[0]))}else t.e=0,t.d=[0];return t}function d1(t,e){var i,r,n,o,a,l,d,f,g;if(e.indexOf("_")>-1){if(e=e.replace(/(\d)_(?=\d)/g,"$1"),Dd.test(e))return Hs(t,e)}else if(e==="Infinity"||e==="NaN")return+e||(t.s=NaN),t.e=NaN,t.d=null,t;if(s1.test(e))i=16,e=e.toLowerCase();else if(o1.test(e))i=2;else if(a1.test(e))i=8;else throw Error(jr+e);for(o=e.search(/p/i),o>0?(d=+e.slice(o+1),e=e.substring(2,o)):e=e.slice(2),o=e.indexOf("."),a=o>=0,r=t.constructor,a&&(e=e.replace(".",""),l=e.length,o=l-o,n=jd(r,new r(i),o,o*2)),f=Zs(e,i,Ui),g=f.length-1,o=g;f[o]===0;--o)f.pop();return o<0?new r(t.s*0):(t.e=Xs(f,g),t.d=f,He=!1,a&&(t=gt(t,n,l*4)),d&&(t=t.times(Math.abs(d)<54?Dt(2,d):Io.pow(2,d))),He=!0,t)}function h1(t,e){var i,r=e.d.length;if(r<3)return e.isZero()?e:ro(t,2,e,e);i=1.4*Math.sqrt(r),i=i>16?16:i|0,e=e.times(1/Js(5,i)),e=ro(t,2,e,e);for(var n,o=new t(5),a=new t(16),l=new t(20);i--;)n=e.times(e),e=e.times(o.plus(n.times(a.times(n).minus(l))));return e}function ro(t,e,i,r,n){var o,a,l,d,f=1,g=t.precision,v=Math.ceil(g/Fe);for(He=!1,d=i.times(i),l=new t(r);;){if(a=gt(l.times(d),new t(e++*e++),g,1),l=n?r.plus(a):r.minus(a),r=gt(a.times(d),new t(e++*e++),g,1),a=l.plus(r),a.d[v]!==void 0){for(o=v;a.d[o]===l.d[o]&&o--;);if(o==-1)break}o=l,l=r,r=a,a=o,f++}return He=!0,a.d.length=v+1,a}function Js(t,e){for(var i=t;--e;)i*=t;return i}function qd(t,e){var i,r=e.s<0,n=ir(t,t.precision,1),o=n.times(.5);if(e=e.abs(),e.lte(o))return fr=r?4:1,e;if(i=e.divToInt(n),i.isZero())fr=r?3:2;else{if(e=e.minus(i.times(n)),e.lte(o))return fr=Ed(i)?r?2:3:r?4:1,e;fr=Ed(i)?r?1:4:r?3:2}return e.minus(n).abs()}function Tu(t,e,i,r){var n,o,a,l,d,f,g,v,y,S=t.constructor,I=i!==void 0;if(I?(oi(i,1,Br),r===void 0?r=S.rounding:oi(r,0,8)):(i=S.precision,r=S.rounding),!t.isFinite())g=Fd(t);else{for(g=rr(t),a=g.indexOf("."),I?(n=2,e==16?i=i*4-3:e==8&&(i=i*3-2)):n=e,a>=0&&(g=g.replace(".",""),y=new S(1),y.e=g.length-a,y.d=Zs(rr(y),10,n),y.e=y.d.length),v=Zs(g,10,n),o=d=v.length;v[--d]==0;)v.pop();if(!v[0])g=I?"0p+0":"0";else{if(a<0?o--:(t=new S(t),t.d=v,t.e=o,t=gt(t,y,i,r,0,n),v=t.d,o=t.e,f=Pd),a=v[i],l=n/2,f=f||v[i+1]!==void 0,f=r<4?(a!==void 0||f)&&(r===0||r===(t.s<0?3:2)):a>l||a===l&&(r===4||f||r===6&&v[i-1]&1||r===(t.s<0?8:7)),v.length=i,f)for(;++v[--i]>n-1;)v[i]=0,i||(++o,v.unshift(1));for(d=v.length;!v[d-1];--d);for(a=0,g="";a<d;a++)g+=ku.charAt(v[a]);if(I){if(d>1)if(e==16||e==8){for(a=e==16?4:3,--d;d%a;d++)g+="0";for(v=Zs(g,n,e),d=v.length;!v[d-1];--d);for(a=1,g="1.";a<d;a++)g+=ku.charAt(v[a])}else g=g.charAt(0)+"."+g.slice(1);g=g+(o<0?"p":"p+")+o}else if(o<0){for(;++o;)g="0"+g;g="0."+g}else if(++o>d)for(o-=d;o--;)g+="0";else o<d&&(g=g.slice(0,o)+"."+g.slice(o))}g=(e==16?"0x":e==2?"0b":e==8?"0o":"")+g}return t.s<0?"-"+g:g}function xd(t,e){if(t.length>e)return t.length=e,!0}function f1(t){return new this(t).abs()}function p1(t){return new this(t).acos()}function m1(t){return new this(t).acosh()}function _1(t,e){return new this(t).plus(e)}function g1(t){return new this(t).asin()}function w1(t){return new this(t).asinh()}function v1(t){return new this(t).atan()}function y1(t){return new this(t).atanh()}function b1(t,e){t=new this(t),e=new this(e);var i,r=this.precision,n=this.rounding,o=r+4;return!t.s||!e.s?i=new this(NaN):!t.d&&!e.d?(i=ir(this,o,1).times(e.s>0?.25:.75),i.s=t.s):!e.d||t.isZero()?(i=e.s<0?ir(this,r,n):new this(0),i.s=t.s):!t.d||e.isZero()?(i=ir(this,o,1).times(.5),i.s=t.s):e.s<0?(this.precision=o,this.rounding=1,i=this.atan(gt(t,e,o,1)),e=ir(this,o,1),this.precision=r,this.rounding=n,i=t.s<0?i.minus(e):i.plus(e)):i=this.atan(gt(t,e,o,1)),i}function M1(t){return new this(t).cbrt()}function k1(t){return Ne(t=new this(t),t.e+1,2)}function A1(t,e,i){return new this(t).clamp(e,i)}function S1(t){if(!t||typeof t!="object")throw Error(Ks+"Object expected");var e,i,r,n=t.defaults===!0,o=["precision",1,Br,"rounding",0,8,"toExpNeg",-io,0,"toExpPos",0,io,"maxE",0,io,"minE",-io,0,"modulo",0,9];for(e=0;e<o.length;e+=3)if(i=o[e],n&&(this[i]=Au[i]),(r=t[i])!==void 0)if(Xt(r)===r&&r>=o[e+1]&&r<=o[e+2])this[i]=r;else throw Error(jr+i+": "+r);if(i="crypto",n&&(this[i]=Au[i]),(r=t[i])!==void 0)if(r===!0||r===!1||r===0||r===1)if(r)if(typeof crypto<"u"&&crypto&&(crypto.getRandomValues||crypto.randomBytes))this[i]=!0;else throw Error(Rd);else this[i]=!1;else throw Error(jr+i+": "+r);return this}function C1(t){return new this(t).cos()}function T1(t){return new this(t).cosh()}function Ud(t){var e,i,r;function n(o){var a,l,d,f=this;if(!(f instanceof n))return new n(o);if(f.constructor=n,Id(o)){f.s=o.s,He?!o.d||o.e>n.maxE?(f.e=NaN,f.d=null):o.e<n.minE?(f.e=0,f.d=[0]):(f.e=o.e,f.d=o.d.slice()):(f.e=o.e,f.d=o.d?o.d.slice():o.d);return}if(d=typeof o,d==="number"){if(o===0){f.s=1/o<0?-1:1,f.e=0,f.d=[0];return}if(o<0?(o=-o,f.s=-1):f.s=1,o===~~o&&o<1e7){for(a=0,l=o;l>=10;l/=10)a++;He?a>n.maxE?(f.e=NaN,f.d=null):a<n.minE?(f.e=0,f.d=[0]):(f.e=a,f.d=[o]):(f.e=a,f.d=[o]);return}if(o*0!==0){o||(f.s=NaN),f.e=NaN,f.d=null;return}return Hs(f,o.toString())}if(d==="string")return(l=o.charCodeAt(0))===45?(o=o.slice(1),f.s=-1):(l===43&&(o=o.slice(1)),f.s=1),Dd.test(o)?Hs(f,o):d1(f,o);if(d==="bigint")return o<0?(o=-o,f.s=-1):f.s=1,Hs(f,o.toString());throw Error(jr+o)}if(n.prototype=ue,n.ROUND_UP=0,n.ROUND_DOWN=1,n.ROUND_CEIL=2,n.ROUND_FLOOR=3,n.ROUND_HALF_UP=4,n.ROUND_HALF_DOWN=5,n.ROUND_HALF_EVEN=6,n.ROUND_HALF_CEIL=7,n.ROUND_HALF_FLOOR=8,n.EUCLID=9,n.config=n.set=S1,n.clone=Ud,n.isDecimal=Id,n.abs=f1,n.acos=p1,n.acosh=m1,n.add=_1,n.asin=g1,n.asinh=w1,n.atan=v1,n.atanh=y1,n.atan2=b1,n.cbrt=M1,n.ceil=k1,n.clamp=A1,n.cos=C1,n.cosh=T1,n.div=E1,n.exp=x1,n.floor=I1,n.hypot=P1,n.ln=O1,n.log=R1,n.log10=D1,n.log2=N1,n.max=L1,n.min=j1,n.mod=B1,n.mul=F1,n.pow=q1,n.random=U1,n.round=$1,n.sign=V1,n.sin=Z1,n.sinh=H1,n.sqrt=W1,n.sub=G1,n.sum=z1,n.tan=K1,n.tanh=X1,n.trunc=J1,t===void 0&&(t={}),t&&t.defaults!==!0)for(r=["precision","rounding","toExpNeg","toExpPos","maxE","minE","modulo","crypto"],e=0;e<r.length;)t.hasOwnProperty(i=r[e++])||(t[i]=this[i]);return n.config(t),n}function E1(t,e){return new this(t).div(e)}function x1(t){return new this(t).exp()}function I1(t){return Ne(t=new this(t),t.e+1,3)}function P1(){var t,e,i=new this(0);for(He=!1,t=0;t<arguments.length;)if(e=new this(arguments[t++]),e.d)i.d&&(i=i.plus(e.times(e)));else{if(e.s)return He=!0,new this(1/0);i=e}return He=!0,i.sqrt()}function Id(t){return t instanceof Io||t&&t.toStringTag===Nd||!1}function O1(t){return new this(t).ln()}function R1(t,e){return new this(t).log(e)}function N1(t){return new this(t).log(2)}function D1(t){return new this(t).log(10)}function L1(){return Bd(this,arguments,-1)}function j1(){return Bd(this,arguments,1)}function B1(t,e){return new this(t).mod(e)}function F1(t,e){return new this(t).mul(e)}function q1(t,e){return new this(t).pow(e)}function U1(t){var e,i,r,n,o=0,a=new this(1),l=[];if(t===void 0?t=this.precision:oi(t,1,Br),r=Math.ceil(t/Fe),this.crypto)if(crypto.getRandomValues)for(e=crypto.getRandomValues(new Uint32Array(r));o<r;)n=e[o],n>=429e7?e[o]=crypto.getRandomValues(new Uint32Array(1))[0]:l[o++]=n%1e7;else if(crypto.randomBytes){for(e=crypto.randomBytes(r*=4);o<r;)n=e[o]+(e[o+1]<<8)+(e[o+2]<<16)+((e[o+3]&127)<<24),n>=214e7?crypto.randomBytes(4).copy(e,o):(l.push(n%1e7),o+=4);o=r/4}else throw Error(Rd);else for(;o<r;)l[o++]=Math.random()*1e7|0;for(r=l[--o],t%=Fe,r&&t&&(n=Dt(10,Fe-t),l[o]=(r/n|0)*n);l[o]===0;o--)l.pop();if(o<0)i=0,l=[0];else{for(i=-1;l[0]===0;i-=Fe)l.shift();for(r=1,n=l[0];n>=10;n/=10)r++;r<Fe&&(i-=Fe-r)}return a.e=i,a.d=l,a}function $1(t){return Ne(t=new this(t),t.e+1,this.rounding)}function V1(t){return t=new this(t),t.d?t.d[0]?t.s:0*t.s:t.s||NaN}function Z1(t){return new this(t).sin()}function H1(t){return new this(t).sinh()}function W1(t){return new this(t).sqrt()}function G1(t,e){return new this(t).sub(e)}function z1(){var t=0,e=arguments,i=new this(e[t]);for(He=!1;i.s&&++t<e.length;)i=i.plus(e[t]);return He=!0,Ne(i,this.precision,this.rounding)}function K1(t){return new this(t).tan()}function X1(t){return new this(t).tanh()}function J1(t){return Ne(t=new this(t),t.e+1,1)}ue[Symbol.for("nodejs.util.inspect.custom")]=ue.toString;ue[Symbol.toStringTag]="Decimal";var Io=ue.constructor=Ud(Au);Ws=new Io(Ws);Gs=new Io(Gs);var xt=Io;import{compoundDebt as uw}from"@suilend/sdk/utils/simulate";import{linearlyInterpolate as tw}from"@suilend/sdk/utils";import{Side as hn}from"@suilend/sdk/lib/types";import{NORMALIZED_flSUI_COINTYPE as iw,NORMALIZED_jugSUI_COINTYPE as rw,NORMALIZED_LBTC_COINTYPE as nw,formatLtvPercent as ow}from"@suilend/sui-fe";import Q1 from"crypto";var Ys=new Uint8Array(256),Qs=Ys.length;function Eu(){return Qs>Ys.length-16&&(Q1.randomFillSync(Ys),Qs=0),Ys.slice(Qs,Qs+=16)}var Zt=[];for(let t=0;t<256;++t)Zt.push((t+256).toString(16).slice(1));function $d(t,e=0){return Zt[t[e+0]]+Zt[t[e+1]]+Zt[t[e+2]]+Zt[t[e+3]]+"-"+Zt[t[e+4]]+Zt[t[e+5]]+"-"+Zt[t[e+6]]+Zt[t[e+7]]+"-"+Zt[t[e+8]]+Zt[t[e+9]]+"-"+Zt[t[e+10]]+Zt[t[e+11]]+Zt[t[e+12]]+Zt[t[e+13]]+Zt[t[e+14]]+Zt[t[e+15]]}import Y1 from"crypto";var xu={randomUUID:Y1.randomUUID};function ew(t,e,i){if(xu.randomUUID&&!e&&!t)return xu.randomUUID();t=t||{};let r=t.random||(t.rng||Eu)();if(r[6]=r[6]&15|64,r[8]=r[8]&63|128,e){i=i||0;for(let n=0;n<16;++n)e[i+n]=r[n];return e}return $d(r)}var ea=ew;import{getPackagerConfigs as sw}from"@cetusprotocol/common-sdk";var Iu=10n;function Vd(t){return t.depositedAmount.eq(0)?new dt(0):t.borrowedAmount.div(t.depositedAmount).times(100)}function Pu(t){let e=Vd(t);if(!e.gt(100))return tw(t.config.interestRate,"utilPercent","aprPercent",e)}function Zd(t){let e=Vd(t),i=Pu(t);if(!(i===void 0||e.gt(100)))return new dt(e.div(100)).times(i.div(100)).times(1-t.config.spreadFeeBps/1e4).times(100)}function Kb(t,e,i,r){let{api_url:n}=sw(r.sdkOptions.suilend);t===hn.DEPOSIT&&([iw,rw].includes(e.coinType)&&i.push({stats:{id:ea(),isActive:!0,rewardIndex:-1,reserve:e,rewardCoinType:"LIQ_AG",mintDecimals:0,symbol:"LiqAg Points",iconUrl:`${n}/partners/LiqAg.png`,perDay:new dt(.036),side:hn.DEPOSIT},obligationClaims:{}}),e.coinType===nw&&i.push({stats:{id:ea(),isActive:!0,rewardIndex:-1,reserve:e,rewardCoinType:"LOMBARD",mintDecimals:0,symbol:"3x Lombard Lux",iconUrl:`${n}/partners/Lombard Lux.png`,perDay:new dt(0),side:hn.DEPOSIT},obligationClaims:{}}))}function Xb(t,e,i){return{...t,depositedAmount:e===hn.DEPOSIT?dt.max(t.depositedAmount.plus(i),0):t.depositedAmount,borrowedAmount:e===hn.BORROW?dt.max(t.borrowedAmount.plus(i),0):t.borrowedAmount}}function Jb(t,e,i){let r=t===hn.DEPOSIT?e.depositedAmount:e.borrowedAmount,n=t===hn.DEPOSIT?i.depositedAmount:i.borrowedAmount,o=n.eq(0)?new dt(-1):r.div(n);return{multiplier:o,isValid:!o.eq(-1)}}function Qb(t,e,i,r){let n=t.map(a=>({...a,stats:{...a.stats,perDay:r?a.stats.perDay.times(i):void 0}})),o=e.map(a=>({...a,stats:{...a.stats,aprPercent:r?a.stats.aprPercent.times(i):void 0}}));return{newPerDayRewards:n,newAprRewards:o}}function Hd(t,e){if(!Iu)throw new Error("oraclePriceMultiplierDecimal is required");if(t===0n)throw new Error("Invalid oracle price");if(e<0n){let i=10n**(Iu- -e);return t*i}return t/10n**(e+Iu)}function Yb(t){return ow(new dt(t))}function Wd(t,e,i,r,n,o){let a=new dt(t),l=new dt(e),d=new dt(i),f=new dt(r),g=new dt(n),v=new dt(o),y=a.times(f),S=l.times(g),I=y.minus(S),x=d.times(f),B=I.plus(x),V=B.times(v).minus(B).minus(S);if(V.lt(0))throw new Error("Target leverage lower than current leverage");let J=V.div(g),Y=V.div(f),X=a.plus(d).plus(Y),ee=l.plus(J),C=X.times(f),E=ee.times(g),N=C.div(C.minus(E)),D=d.plus(Y),O=x.plus(Y.times(f));return{addBorrowAmount:J.toString(),addBorrowValue:V.toString(),addCollateralFromBorrow:Y.toString(),addCollateralAmount:D.toString(),addCollateralValue:O.toString(),finalCollateralAmount:X.toString(),finalCollateralValue:C.toString(),finalDebtAmount:ee.toString(),finalDebtValue:E.toString(),leverage:N.toString()}}var na=class{constructor(e){this.getPositionList=async(e=this._sdk.getSenderAddress(),i=!1)=>{let{lending_market_id:r,lending_market_type:n}=Pt(this._sdk.sdkOptions.suilend);try{let o=`cap_to_position_mapping_${e}`,a=`order_cap_to_position_mapping_${e}`,l=this._sdk.getCache(o,i),d=this._sdk.getCache(a,i)||new Map,f=`${this._sdk.sdkOptions.tspl.package_id}::order::OrderCap`,g=`${this._sdk.sdkOptions.margin_trading.package_id}::position::PositionCap`,v=await this._sdk.FullClient.getOwnedObjectsByPage(e,{options:{showType:!0,showContent:!0,showOwner:!0},filter:{MatchAny:[{StructType:f},{StructType:g}]}});if(console.log("\u{1F680}\u{1F680}\u{1F680} ~ positionModules.ts:42 ~ PositionModules ~ ownerRes.data.length:",v.data.length),v.data.length===0)return $t("PositionNotFound","Position not found"),[];let y=await this._sdk.SuiLendModule.getSuilendClient(r,n);console.log("\u{1F680}\u{1F680}\u{1F680} ~ positionModules.ts:48 ~ PositionModules ~ suiLendClient:",y);let S=await this._sdk.SuiLendModule.getLendingMarketData(),{allLendingMarketData:I,lstStatsMap:x,sdeUsdAprPercent:B,eThirdAprPercent:R,eEarnAprPercent:j}=S;console.log("\u{1F680}\u{1F680}\u{1F680} ~ positionModules.ts:50 ~ PositionModules ~ allLendingMarketData:",I);let V=I[r].reserveMap;l||(l=new Map);let J=[];for(let C=0;C<v.data.length;C++)if(v.data[C].data.type.includes(f)){let N=ia(v.data[C]);d.set(N.position_id,{id:N.id.id,order_id:N.order_id,position_id:N.position_id}),J.push(N.position_id)}else{let N=ia(v.data[C]);N.position_id&&J.push(N.position_id),N.id.id&&l.set(N.id.id,N.position_id)}this._sdk.updateCache(o,l,Gd),this._sdk.updateCache(a,d,Gd);let Y=await this._sdk.FullClient.batchGetObjects(J,{showContent:!0});console.log("\u{1F680}\u{1F680}\u{1F680} ~ positionModules.ts:73 ~ PositionModules ~ positionRes:",Y);let X=await this._sdk.SuiLendModule.getInitializeObligations(S,!0);console.log("\u{1F680}\u{1F680}\u{1F680} ~ positionModules.ts:75 ~ PositionModules ~ obligations:",X);let ee=[];for(let C=0;C<Y.length;C++){let E=J[C],N="",{capId:D,is_tspl_cap:O}=this.getCapIdByPositionId(E);N=D;let A=mu(Y[C],N,O),p=await y.getObligation(A.obligation_owner_cap),s=_u(A,p,V||{},x||{},B,R,j,X[r].rewardMap),u=this.getObligationRewardsInfo(p,Object.values(V));ee.push({...s,claimable_rewards:u})}return ee}catch(o){return $t("FetchError",o),[]}};this.getPositionInfo=async(e,i=this._sdk.getSenderAddress(),r=!0)=>{let n=`cap_to_position_mapping_${i}`,o=`order_cap_to_position_mapping_${i}`,a=this._sdk.getCache(n,r),l=this._sdk.getCache(o,r)||new Map;a||(a=new Map);let d=this.getCapIdByPositionId(e,i)||"",f=d?.capId||"",g=d?.is_tspl_cap||!1;if(!f){let O=`${this._sdk.sdkOptions.tspl.package_id}::order::OrderCap`,A=`${this._sdk.sdkOptions.margin_trading.package_id}::position::PositionCap`,p=await this._sdk.FullClient.getOwnedObjectsByPage(i,{options:{showType:!0,showContent:!0,showOwner:!0},filter:{MatchAny:[{StructType:O},{StructType:A}]}});for(let s=0;s<p.data.length;s++)if(p.data[s].data.type.includes(O)){g=!0;let h=ia(p.data[s]);l.set(h.position_id,{id:h.id.id,order_id:h.order_id,position_id:h.position_id}),e=h.position_id,f=h.id.id}else{let h=ia(p.data[s]);h.position_id&&(e=h.position_id),h.id.id&&a.set(h.id.id,h.position_id),f=h.id.id}}let v=await this._sdk.FullClient.batchGetObjects([e],{showContent:!0}),y=mu(v[0],f||"",g),{lending_market_id:S,lending_market_type:I}=Pt(this._sdk.sdkOptions.suilend),x=await this._sdk.SuiLendModule.getSuilendClient(S,I),B=await this._sdk.SuiLendModule.getLendingMarketData(),{allLendingMarketData:R,lstStatsMap:j,sdeUsdAprPercent:V,eThirdAprPercent:J,eEarnAprPercent:Y}=B,X=R[S].reserveMap,ee=await this._sdk.SuiLendModule.getInitializeObligations(B,!0),C=await x.getObligation(y.obligation_owner_cap),E=this.getObligationRewardsInfo(C,Object.values(X));return{..._u(y,C,X||{},j||{},V,J,Y,ee[S].rewardMap),claimable_rewards:E}};this.getCapIdByPositionId=(e,i=this._sdk.getSenderAddress())=>{let r=`cap_to_position_mapping_${i}`,n=`order_cap_to_position_mapping_${i}`,o=this._sdk.getCache(r,!1),a=this._sdk.getCache(n,!1);if(o){for(let[l,d]of o.entries())if(d===e)return{capId:l,is_tspl_cap:!1}}if(a){for(let[l,d]of a.entries())if(e===d.position_id)return{capId:d.id,is_tspl_cap:!0}}return{capId:"",is_tspl_cap:!1}};this.repay=e=>{let{margin_trading:i}=this._sdk.sdkOptions,{lending_market_id:r,lending_market_type:n}=Pt(this._sdk.sdkOptions.suilend),{global_config_id:o,versioned_id:a}=Pt(this._sdk.sdkOptions.margin_trading),{txb:l,repay_amount:d,repay_coin_type:f,repay_coin:g,repay_reserve_array_index:v,market_id:y,position_cap_id:S}=e,I=l||new $i,x=g||$e.buildCoinWithBalance(BigInt(d.toString()),f,I);I.moveCall({target:`${i.published_at}::router::repay`,typeArguments:[n,f],arguments:[I.object(o),I.object(r),I.object(y),I.object(S),x,I.pure.u64(v.toString()),I.object(fn),I.object(a)]})};this.withdrawAsset=(e,i)=>{let{margin_trading:r}=this._sdk.sdkOptions,{lending_market_id:n,lending_market_type:o}=Pt(this._sdk.sdkOptions.suilend),{global_config_id:a,versioned_id:l}=Pt(this._sdk.sdkOptions.margin_trading),{package_id:d}=this._sdk.sdkOptions.suilend,{market_id:f,withdraw_amount:g,withdraw_reserve_array_index:v,withdraw_coin_type:y,position_cap_id:S}=e,[I]=i.moveCall({target:"0x1::option::none",typeArguments:[`${d}::lending_market::RateLimiterExemption<${o}, ${y}>`],arguments:[]});return i.moveCall({target:`${r.published_at}::router::withdraw`,typeArguments:[o,y],arguments:[i.object(a),i.object(n),i.object(f),i.object(S),i.object(I),i.pure.u64(g),i.pure.u64(v),i.object(zd),i.object(fn),i.object(l)]})};this.borrowAsset=(e,i)=>{let{reserve_array_index:r,borrow_amount:n,base_token:o,quote_token:a,lending_market_id:l,is_long:d,market_id:f,position_cap_id:g,position_cap:v}=e,{margin_trading:y}=this._sdk.sdkOptions,{lending_market_type:S}=Pt(this._sdk.sdkOptions.suilend),{global_config_id:I,versioned_id:x}=Pt(this._sdk.sdkOptions.margin_trading);return i.moveCall({target:`${y.published_at}::router::borrow`,typeArguments:[S,d?a:o],arguments:[i.object(I),i.object(l),i.object(f),g?i.object(g):v,i.pure.u64(r),i.pure.u64(n.toString()),i.object(zd),i.object(fn),i.object(x)]})};this.openPosition=async(e,i)=>{let{is_quote:r,is_long:n,amount:o,swap_clmm_pool:a="",slippage:l,leverage:d,market_id:f}=e,{lending_market_id:g}=Pt(this._sdk.sdkOptions.suilend),{base_token:v,quote_token:y}=await this._sdk.MarketModules.getMarketInfo(f),{borrow_amount:S,base_reserve_array_index:I,quote_reserve_array_index:x,reserve:B,has_swap:R,flash_loan_objs:j}=await this.calculatePositionDeposit({is_long:n,is_quote:r,amount:o,swap_clmm_pool:a,leverage:d,slippage:l,market_id:f,base_token:v,quote_token:y,is_submit:!0});await this._sdk.SuiLendModule.refreshReservePrices(i,B);let V=this.createLeveragePosition({leverage:d,market_id:f,base_token:v,quote_token:y,is_long:n,init_deposit_amount:ne(o).toString(),init_coin_type:r?y:v,tx:i}),J=n?I:x;if(j){let{is_flash_a:Y,flash_amount:X,clmm_pool:ee,clmm_pool_coin_type_a:C,clmm_pool_coin_type_b:E,flash_loan_coin:N}=j,{balance_a:D,balance_b:O,receipt:A}=this._sdk.SwapModules.flashLoan({amount:X,clmm_pool:ee,clmm_pool_coin_type_a:C,clmm_pool_coin_type_b:E,flash_loan_coin:N,tx:i}),p=n?y:v,s=n?v:y,u=$e.buildCoinWithBalance(BigInt(o),r?y:v,i),h=$e.fromBalance(D,C,i),_=$e.fromBalance(O,E,i);R&&(console.log("\u{1F680}\u{1F680}\u{1F680} ~ positionModules.ts:515 ~ PositionModules ~ is_flash_a:",Y),i.mergeCoins(u,[Y?h:_]));let w=await this._sdk.SwapModules.handleSwap({from:p,to:s,amount:R?ne(X).add(o).toString():X,input_coin:R?u:Y?h:_,swap_clmm_pool:a,slippage:l,tx:i});w.swap_out_coin&&!R&&i.mergeCoins(w.swap_out_coin,[u]),await this.depositToLeveragePosition({is_long:n,market_id:f,position_cap:V,deposit_reserve_array_index:J,input_coin:w.swap_out_coin,base_token:v,quote_token:y},i);let M=this.borrowAsset({position_cap:V,reserve_array_index:n?x:I,borrow_amount:S,base_token:v,quote_token:y,is_long:n,lending_market_id:g,market_id:f},i),b=$e.mintBalanceZero(Y?E:C,i);this._sdk.SwapModules.repayFlashLoan({tx:i,clmm_pool:ee,repay_base:Y?$e.intoBalance(M,C,i):b,repay_quote:Y?b:$e.intoBalance(M,E,i),receipt:A,clmm_pool_coin_type_a:C,clmm_pool_coin_type_b:E}),i.transferObjects([V],i.pure.address(this._sdk.getSenderAddress())),$e.destroyBalanceZero(Y?$e.intoBalance(_,E,i):$e.intoBalance(h,C,i),Y?E:C,i)}else{let Y=$e.buildCoinWithBalance(BigInt(o),r?y:v,i),X=n?v:y,ee=n?y:v;R&&(Y=(await this._sdk.SwapModules.handleSwap({from:ee,to:X,amount:o,input_coin:Y,swap_clmm_pool:a,slippage:l,tx:i})).swap_out_coin),await this.depositToLeveragePosition({is_long:n,market_id:f,position_cap:V,deposit_reserve_array_index:J,input_coin:Y,base_token:v,quote_token:y},i);let C=this.borrowAsset({position_cap:V,reserve_array_index:n?x:I,borrow_amount:S,base_token:v,quote_token:y,is_long:n,lending_market_id:g,market_id:f},i),E=await this._sdk.SwapModules.handleSwap({from:ee,to:X,amount:S,input_coin:C,swap_clmm_pool:a,slippage:l,tx:i});await this.depositToLeveragePosition({is_long:n,market_id:f,position_cap:V,deposit_reserve_array_index:J,input_coin:E.swap_out_coin,base_token:v,quote_token:y},i)}return V};this.positionDeposit=async e=>{let{position_id:i,swap_clmm_pool:r="",is_quote:n,amount:o,slippage:a,leverage:l,txb:d}=e,{lending_market_id:f}=Pt(this._sdk.sdkOptions.suilend),{is_long:g,deposits:v,borrows:y,position_cap_id:S,market_id:I}=await this.getPositionInfo(i),{base_token:x,quote_token:B}=await this._sdk.MarketModules.getMarketInfo(I),R=d||new $i,j=v[0].reserveArrayIndex.toString(),V=y[0].reserveArrayIndex.toString(),{borrow_amount:J,flash_loan_objs:Y,reserve:X,has_swap:ee}=await this.calculatePositionDeposit({market_id:I,is_long:g,is_quote:n,amount:o,swap_clmm_pool:r,leverage:l,slippage:a,base_token:x,quote_token:B,position_id:i,is_open:!1});if(await this._sdk.SuiLendModule.refreshReservePrices(R,X),Y){let{is_flash_a:C,flash_amount:E,clmm_pool:N,clmm_pool_coin_type_a:D,clmm_pool_coin_type_b:O,flash_loan_coin:A}=Y,{balance_a:p,balance_b:s,receipt:u}=this._sdk.SwapModules.flashLoan({amount:E,clmm_pool:N,clmm_pool_coin_type_a:D,clmm_pool_coin_type_b:O,flash_loan_coin:A,tx:R}),h=g?B:x,_=g?x:B,w=$e.buildCoinWithBalance(BigInt(o),n?B:x,R),M=$e.fromBalance(p,D,R),b=$e.fromBalance(s,O,R);ee&&R.mergeCoins(w,[C?M:b]);let m=await this._sdk.SwapModules.handleSwap({from:h,to:_,amount:ee?ne(E).add(o).toString():E,input_coin:ee?w:C?M:b,swap_clmm_pool:r,slippage:a,tx:R});m.swap_out_coin&&!ee&&R.mergeCoins(m.swap_out_coin,[w]),await this.depositToLeveragePosition({is_long:g,market_id:I,position_cap_id:S,deposit_reserve_array_index:j,input_coin:m.swap_out_coin,base_token:x,quote_token:B},R);let c=await this.borrowAsset({position_cap_id:S,reserve_array_index:V,borrow_amount:J,base_token:x,quote_token:B,is_long:g,lending_market_id:f,market_id:I},R),k=$e.mintBalanceZero(C?O:D,R);this._sdk.SwapModules.repayFlashLoan({tx:R,clmm_pool:N,repay_base:C?$e.intoBalance(c,D,R):k,repay_quote:C?k:$e.intoBalance(c,O,R),receipt:u,clmm_pool_coin_type_a:D,clmm_pool_coin_type_b:O}),$e.destroyBalanceZero(C?$e.intoBalance(b,O,R):$e.intoBalance(M,D,R),C?O:D,R)}else{let C=$e.buildCoinWithBalance(BigInt(o),n?B:x,R),E=g?x:B,N=g?B:x;ee&&(C=(await this._sdk.SwapModules.handleSwap({from:N,to:E,amount:o,input_coin:C,swap_clmm_pool:r,slippage:a,tx:R})).swap_out_coin),await this.depositToLeveragePosition({is_long:g,market_id:I,position_cap_id:S,deposit_reserve_array_index:j,input_coin:C,base_token:x,quote_token:B},R);let D=this.borrowAsset({position_cap_id:S,reserve_array_index:V,borrow_amount:J,base_token:x,quote_token:B,is_long:g,lending_market_id:f,market_id:I},R),O=await this._sdk.SwapModules.handleSwap({from:N,to:E,amount:J,input_coin:D,swap_clmm_pool:r,slippage:a,tx:R});await this.depositToLeveragePosition({is_long:g,market_id:I,position_cap_id:S,deposit_reserve_array_index:j,input_coin:O.swap_out_coin,base_token:x,quote_token:B},R)}return R};this.positionWithdraw=async e=>{let{amount:i,is_quote:r,txb:n,swap_clmm_pool:o="",slippage:a,position_id:l,leverage:d,withdraw_max:f}=e,g=n||new $i,{withdraw_ctoken_amount:v,repay_amount:y,is_close:S,deposits:I,borrows:x,reserve:B,base_token:R,quote_token:j,clmm_pool:V,clmm_pool_coin_type_a:J,clmm_pool_coin_type_b:Y,position_cap_id:X,market_id:ee,is_long:C,swap_convert_all:E,flash_loan_amount:N,routers:D,repay_flash_loan_amount:O="0",partial_amount_in:A,withdraw_amount:p,has_flash_loan:s,compoundDebtU64:u}=await this.calculatePositionWithdraw({position_id:l,is_quote:r,swap_clmm_pool:o,amount:i,leverage:d,slippage:a,withdraw_max:f});if(S)return this.positionClose({position_id:l,is_quote:r,leverage:d,slippage:a,swap_clmm_pool:o});await this._sdk.SuiLendModule.refreshReservePrices(g,B);let h,_;if(s){let{balance_a:m,balance_b:c,receipt:k,is_loan_a:Z}=this._sdk.SwapModules.flashLoan({tx:g,amount:N,amount_u64:u,flash_loan_coin:x[0].reserve.coinType,clmm_pool:V,clmm_pool_coin_type_a:J,clmm_pool_coin_type_b:Y});h=k,_=Z,$e.destroyBalanceZero(_?c:m,_?Y:J,g);let W=Z?$e.fromBalance(m,J,g):$e.fromBalance(c,Y,g);this.repay({txb:g,position_cap_id:X,repay_reserve_array_index:x[0].reserveArrayIndex.toString(),repay_coin:W,repay_coin_type:C?j:R,repay_amount:"0",market_id:ee}),g.transferObjects([W],this._sdk.getSenderAddress())}let w=this.withdrawAsset({market_id:ee,position_cap_id:X,withdraw_amount:v.toString(),withdraw_reserve_array_index:I[0].reserveArrayIndex.toString(),withdraw_coin_type:C?R:j},g);for(let m=1;m<I.length;m++){let c=this.withdrawAsset({market_id:ee,position_cap_id:X,withdraw_amount:ra.toString(),withdraw_reserve_array_index:I[m].reserveArrayIndex.toString(),withdraw_coin_type:I[m].coinType},g);g.transferObjects([c],this._sdk.getSenderAddress())}let M;if(console.log("\u{1F680}\u{1F680}\u{1F680} ~ positionModules.ts:778 ~ PositionModules ~ swap_convert_all:",{swap_convert_all:E,has_flash_loan:s}),E)M=await this._sdk.SwapModules.routerSwap({router:D?.route_obj,input_coin:w,slippage:a,txb:g});else{let m=g.splitCoins(w,[g.pure.u64(A?.toString()||"0")]);M=await this._sdk.SwapModules.routerSwap({router:D?.route_obj,input_coin:m,slippage:a,txb:g})}let b;if(M&&s&&(b=g.splitCoins(M,[g.pure.u64(O.toString())])),b&&s){let m=$e.mintBalanceZero(_?Y:J,g);this._sdk.SwapModules.repayFlashLoan({tx:g,clmm_pool:V,repay_base:_?$e.intoBalance(b,J,g):m,repay_quote:_?m:$e.intoBalance(b,Y,g),clmm_pool_coin_type_a:J,clmm_pool_coin_type_b:Y,receipt:h})}else if(M){let m=g.splitCoins(M,[g.pure.u64(O.toString())]);this.repay({txb:g,position_cap_id:X,repay_reserve_array_index:x[0].reserveArrayIndex.toString(),repay_coin:m,repay_coin_type:C?j:R,repay_amount:"0",market_id:ee}),g.transferObjects([m],this._sdk.getSenderAddress())}return M&&g.transferObjects([M],this._sdk.getSenderAddress()),E||g.transferObjects([w],this._sdk.getSenderAddress()),g};this.positionClose=async e=>{let{position_id:i,is_quote:r,slippage:n,leverage:o,swap_clmm_pool:a=""}=e,{margin_trading:l}=this._sdk.sdkOptions,{global_config_id:d,versioned_id:f}=Pt(this._sdk.sdkOptions.margin_trading),{lending_market_type:g,lending_market_id:v}=Pt(this._sdk.sdkOptions.suilend),y=new $i,{deposits:S,borrows:I,base_token:x,quote_token:B,clmm_pool:R,clmm_pool_coin_type_a:j,clmm_pool_coin_type_b:V,position_cap_id:J,market_id:Y,swap_convert_all:X,routers:ee,partial_amount_in:C,is_long:E,flash_loan_amount:N,reserve:D,repay_flash_loan_amount:O="0",claimable_rewards:A,compoundDebtU64:p}=await this.calculatePositionWithdraw({tx:y,position_id:i,is_quote:r,swap_clmm_pool:a,amount:ra.toString(),leverage:o,slippage:n,withdraw_max:!0});await this._sdk.SuiLendModule.refreshReservePrices(y,D);let s,u;if(ne(N).gt(0)){let{balance_a:w,balance_b:M,receipt:b,is_loan_a:m}=this._sdk.SwapModules.flashLoan({tx:y,amount:N,amount_u64:p,flash_loan_coin:E?B:x,clmm_pool:R,clmm_pool_coin_type_a:j,clmm_pool_coin_type_b:V});s=b,u=m,$e.destroyBalanceZero(u?M:w,u?V:j,y);let c=u?$e.fromBalance(w,j,y):$e.fromBalance(M,V,y);this.repay({txb:y,position_cap_id:J,repay_reserve_array_index:I[0].reserveArrayIndex.toString(),repay_coin:c,repay_coin_type:I[0].reserve.coinType,repay_amount:"0",market_id:Y}),y.transferObjects([c],this._sdk.getSenderAddress())}let h=this.withdrawAsset({market_id:Y,position_cap_id:J,withdraw_amount:ra.toString(),withdraw_reserve_array_index:S[0].reserveArrayIndex.toString(),withdraw_coin_type:E?x:B},y);await this.buildClaimRewardsMoveCall(A,Y,J,y);for(let w=1;w<S.length;w++){let M=this.withdrawAsset({market_id:Y,position_cap_id:J,withdraw_amount:ra.toString(),withdraw_reserve_array_index:S[w].reserveArrayIndex.toString(),withdraw_coin_type:S[w].coinType},y);y.transferObjects([M],this._sdk.getSenderAddress())}let _;if(console.log("\u{1F680}\u{1F680}\u{1F680} ~ positionModules.ts:895 ~ PositionModules ~ swap_convert_all:",X),X)_=await this._sdk.SwapModules.routerSwap({router:ee?.route_obj,input_coin:h,slippage:n,txb:y});else if(C&&ne(C).gt(0)){let w=y.splitCoins(h,[y.pure.u64(C?.toString()||"0")]);_=await this._sdk.SwapModules.routerSwap({router:ee?.route_obj,input_coin:w,slippage:n,txb:y})}if(_&&s){let w=$e.mintBalanceZero(u?V:j,y),M=y.splitCoins(_,[y.pure.u64(O?.toString()||"0")]);this._sdk.SwapModules.repayFlashLoan({tx:y,clmm_pool:R,repay_base:u?$e.intoBalance(M,j,y):w,repay_quote:u?w:$e.intoBalance(M,V,y),clmm_pool_coin_type_a:j,clmm_pool_coin_type_b:V,receipt:s})}return y.moveCall({target:`${l.published_at}::router::close_position`,typeArguments:[g],arguments:[y.object(d),y.object(v),y.object(Y),y.object(J),y.object(fn),y.object(f)]}),_&&y.transferObjects([_],this._sdk.getSenderAddress()),X||y.transferObjects([h],this._sdk.getSenderAddress()),console.log("\u{1F680}\u{1F680}\u{1F680} ~ positionModules.ts:951 ~ PositionModules ~ tx:",y),y};this.positionLeverageIncrease=async e=>{let{current_leverage:i,target_leverage:r,swap_clmm_pool:n="",slippage:o,position_id:a}=e,{lending_market_id:l}=Pt(this._sdk.sdkOptions.suilend),d=new $i,{flash_loan_amount:f,quote_token:g,base_token:v,reserve:y,deposits:S,borrow_amount:I,routers:x,position_cap_id:B,is_long:R,market_id:j,is_flash_loan:V}=await this.calculatePositionLeverage({position_id:a,current_leverage:i,target_leverage:r,swap_clmm_pool:n,slippage:o}),J=R?g:v;if(await this._sdk.SuiLendModule.refreshReservePrices(d,y),V){let{clmm_pool_coin_type_a:Y,clmm_pool_coin_type_b:X,clmm_pool:ee}=await this._sdk.SwapModules.getFlashLoanPool(J,f?.toString()||""),{balance_a:C,balance_b:E,receipt:N,is_loan_a:D}=this._sdk.SwapModules.flashLoan({tx:d,amount:f?.toString()||"0",clmm_pool:ee,clmm_pool_coin_type_a:Y,clmm_pool_coin_type_b:X,flash_loan_coin:J}),O=await this._sdk.SwapModules.routerSwap({router:x?.route_obj,input_coin:D?$e.fromBalance(C,Y,d):$e.fromBalance(E,X,d),slippage:o,txb:d});this.depositToLeveragePosition({is_long:R,market_id:j,position_cap_id:B,deposit_reserve_array_index:S[0].reserveArrayIndex.toString(),input_coin:O,base_token:v,quote_token:g},d);let A=this.borrowAsset({position_cap_id:B,reserve_array_index:R?y[1].arrayIndex.toString():y[0].arrayIndex.toString(),borrow_amount:I,base_token:v,quote_token:g,is_long:R,lending_market_id:l,market_id:j},d),p=$e.mintBalanceZero(D?X:Y,d);this._sdk.SwapModules.repayFlashLoan({tx:d,clmm_pool:ee,repay_base:D?$e.intoBalance(A,Y,d):p,repay_quote:D?p:$e.intoBalance(A,X,d),receipt:N,clmm_pool_coin_type_a:Y,clmm_pool_coin_type_b:X}),$e.destroyBalanceZero(D?E:C,D?X:Y,d)}else{let Y=this.borrowAsset({position_cap_id:B,reserve_array_index:R?y[1].arrayIndex.toString():y[0].arrayIndex.toString(),borrow_amount:I,base_token:v,quote_token:g,is_long:R,lending_market_id:l,market_id:j},d),X=await this._sdk.SwapModules.routerSwap({router:x?.route_obj,input_coin:Y,slippage:o,txb:d});this.depositToLeveragePosition({is_long:R,market_id:j,position_cap_id:B,deposit_reserve_array_index:S[0].reserveArrayIndex.toString(),input_coin:X,base_token:v,quote_token:g},d)}return d};this.positionLeverageDecrease=async e=>{let{current_leverage:i,target_leverage:r,swap_clmm_pool:n="",slippage:o,position_id:a}=e,{deposits:l,borrows:d,position_cap_id:f,market_id:g,is_long:v}=await this.getPositionInfo(a),{base_token:y,quote_token:S}=await this._sdk.MarketModules.getMarketInfo(g),I=new $i,{withdraw_ctoken_amount:x,routers:B,reserve:R,is_flash_loan:j}=await this.calculatePositionLeverage({position_id:a,current_leverage:i,target_leverage:r,swap_clmm_pool:n,slippage:o});if(await this._sdk.SuiLendModule.refreshReservePrices(I,R),j){let{clmm_pool_coin_type_a:V,clmm_pool_coin_type_b:J,clmm_pool:Y,clmm_fee_tier:X}=await this._sdk.SwapModules.getFlashLoanPool(l[0].reserve.coinType,x.toString()),{balance_a:ee,balance_b:C,receipt:E,is_loan_a:N}=this._sdk.SwapModules.flashLoan({tx:I,amount:x,clmm_pool:Y,clmm_pool_coin_type_a:V,clmm_pool_coin_type_b:J,flash_loan_coin:l[0].reserve.coinType}),D=await this._sdk.SwapModules.routerSwap({router:B?.route_obj,input_coin:N?$e.fromBalance(ee,V,I):$e.fromBalance(C,J,I),slippage:o,txb:I});this.repay({txb:I,market_id:g,position_cap_id:f,repay_reserve_array_index:d[0].reserveArrayIndex.toString(),repay_coin:D,repay_coin_type:v?S:y,repay_amount:"0"}),D&&I.transferObjects([D],this._sdk.getSenderAddress());let O=ne(x).mul(X).toString(),A=ne(x).add(O).toDP(0,xt.ROUND_UP),p=this.withdrawAsset({market_id:g,position_cap_id:f,withdraw_amount:A.toString(),withdraw_reserve_array_index:l[0].reserveArrayIndex.toString(),withdraw_coin_type:v?y:S},I),s=I.splitCoins(p,[A.toString()]);this._sdk.SwapModules.repayFlashLoan({tx:I,clmm_pool:Y,repay_base:N?$e.intoBalance(s,V,I):ee,repay_quote:N?C:$e.intoBalance(s,J,I),receipt:E,clmm_pool_coin_type_a:V,clmm_pool_coin_type_b:J}),I.transferObjects([p],this._sdk.getSenderAddress())}else{let V=this.withdrawAsset({market_id:g,position_cap_id:f,withdraw_amount:x.toString(),withdraw_reserve_array_index:l[0].reserveArrayIndex.toString(),withdraw_coin_type:v?y:S},I),J=await this._sdk.SwapModules.routerSwap({router:B?.route_obj,input_coin:V,slippage:o,txb:I});this.repay({txb:I,market_id:g,position_cap_id:f,repay_reserve_array_index:d[0].reserveArrayIndex.toString(),repay_coin:J,repay_coin_type:v?S:y,repay_amount:"0"}),I.transferObjects([J],this._sdk.getSenderAddress())}return I};this.positionRepay=async e=>{let{position_id:i,amount:r,is_quote:n,slippage:o}=e,{routers:a,repay_coin_type:l,base_token:d,quote_token:f,borrows:g,deposits:v,market_id:y,position_cap_id:S}=await this.calculatePositionRepay({position_id:i,amount:r,is_quote:n}),I=this.extractOtherTokenTypes(v,g,d,f),{reserve:x}=await this._sdk.SuiLendModule.getSuiLendReserveInfo(d,f,void 0,I),B=new $i;await this._sdk.SuiLendModule.refreshReservePrices(B,x);let R=n?f!==l:d!==l,j;if(R){let V=$e.buildCoinWithBalance(BigInt(r.toString()),n?f:d,B);j=await this._sdk.SwapModules.routerSwap({router:a?.route_obj,input_coin:V,slippage:o,txb:B})}else j=$e.buildCoinWithBalance(BigInt(r.toString()),n?f:d,B);return this.repay({txb:B,position_cap_id:S,repay_reserve_array_index:g[0].reserveArrayIndex.toString(),repay_coin:j,repay_coin_type:l,repay_amount:"0",market_id:y}),B.transferObjects([j],this._sdk.getSenderAddress()),B};this.positionTopUpCToken=async e=>{let{position_id:i,amount:r,is_quote:n,swap_clmm_pool:o="",slippage:a}=e,l=new $i,{is_long:d,market_id:f,position_cap_id:g,deposits:v,borrows:y}=await this.getPositionInfo(i),{base_token:S,quote_token:I}=await this._sdk.MarketModules.getMarketInfo(f),x=d&&n||!d&&!n,B=this.extractOtherTokenTypes(v,y,S,I),{base_reserve_array_index:R,quote_reserve_array_index:j,reserve:V}=await this._sdk.SuiLendModule.getSuiLendReserveInfo(S,I,void 0,B);await this._sdk.SuiLendModule.refreshReservePrices(l,V);let J;if(x){let Y=await this._sdk.SwapModules.findRouters(n?I:S,n?S:I,r,!0,[o]),X=$e.buildCoinWithBalance(BigInt(r.toString()),n?I:S,l);J=await this._sdk.SwapModules.routerSwap({router:Y?.route_obj,input_coin:X,slippage:a,txb:l})}else J=$e.buildCoinWithBalance(BigInt(r.toString()),n?I:S,l);return await this.depositToLeveragePosition({is_long:d,market_id:f,position_cap_id:g,deposit_reserve_array_index:d?R:j,input_coin:J,base_token:S,quote_token:I},l),l};this.positionWithdrawCToken=async e=>{let{position_id:i,amount:r,is_quote:n,swap_clmm_pool:o="",slippage:a}=e,l=new $i,{is_long:d,market_id:f,position_cap_id:g,deposits:v,borrows:y}=await this.getPositionInfo(i),{base_token:S,quote_token:I}=await this._sdk.MarketModules.getMarketInfo(f),x=d&&n||!d&&!n,B=this.extractOtherTokenTypes(v,y,S,I),{base_reserve_array_index:R,quote_reserve_array_index:j,reserve:V}=await this._sdk.SuiLendModule.getSuiLendReserveInfo(S,I,void 0,B);await this._sdk.SuiLendModule.refreshReservePrices(l,V);let J=await this._sdk.SuiLendModule.getLatestPriceFeeds(V,!0),Y=J[no(I)]?.price,X=J[no(S)]?.price,ee=d?ne(Y).div(ne(X)).toString():ne(X).div(ne(Y)).toString(),C=V[0].mintDecimals,E=V[1].mintDecimals,N=x?ne(r).mul(ee).div(10**(n?E:C)).mul(10**(d?C:E)).toDP(0,xt.ROUND_DOWN).toString():r.toString(),D=this.withdrawAsset({market_id:f,position_cap_id:g,withdraw_amount:N,withdraw_reserve_array_index:d?R:j,withdraw_coin_type:d?S:I},l);if(x){let O=await this._sdk.SwapModules.findRouters(d?S:I,n?I:S,N,!0,[o]),A=await this._sdk.SwapModules.routerSwap({router:O?.route_obj,input_coin:D,slippage:a,txb:l});A&&l.transferObjects([A],this._sdk.getSenderAddress())}else l.transferObjects([D],this._sdk.getSenderAddress());return l};this.positionClaim=async e=>{let i=new $i,{position_cap_id:r,obligation_owner_cap:n,market_id:o,claimable_rewards:a}=await this.getPositionInfo(e);return console.log("\u{1F680}\u{1F680}\u{1F680} ~ positionModules.ts:1650 ~ PositionModules ~ claimable_rewards:",a),await this.buildClaimRewardsMoveCall(a,o,r,i),i};this.calculatePositionDeposit=async e=>{let{is_quote:i,is_long:r,amount:n,swap_clmm_pool:o="",leverage:a,by_amount_in:l=!0,base_token:d,quote_token:f,is_submit:g=!1,is_open:v=!0,position_id:y,market_id:S}=e,I=[],x=[],B=[],R=this._sdk.getLeverageThresholdForMarket(S),j;if(!v&&y){let{deposits:Q,borrows:ie}=await this.getPositionInfo(y);if(x=Q,B=ie,I=this.extractOtherTokenTypes(x,B,d,f),B.length>0&&x.length>0){let T=B[0].borrowedAmountUsd.toString(),P=x[0].depositedAmountUsd.toString();P&&T&&ne(T).gt(0)&&(j=ne(P).div(ne(P).sub(T)).toString())}}let{reserve:V,base_reserve_array_index:J,quote_reserve_array_index:Y}=await this._sdk.SuiLendModule.getSuiLendReserveInfo(d,f,void 0,I),X=V[0].mintDecimals,ee=V[1].mintDecimals,C=n.toString(),E=r&&i||!r&&!i,N=await this._sdk.SuiLendModule.getLatestPriceFeedsByCoinTypes([d,f]),D=N&&N[f]?.price,O=N&&N[d]?.price;if(!D||!O)throw $t("PriceNotFound","Price not found");if(E&&g){let Q=r?ne(D).div(ne(O)).toString():ne(O).div(ne(D)).toString();C=ne(n).mul(Q).div(10**(i?ee:X)).mul(10**(r?X:ee)).toString(),console.log("\u{1F680}\u{1F680}\u{1F680} ~ positionModules.ts:492 ~ PositionModules ~ initDepositAmount:",{initDepositAmount:C,rate:Q})}else if(E&&!g){let Q=r?f:d,ie=r?d:f;C=(await this._sdk.SwapModules.findRouters(Q,ie,C,!0,[o]))?.amount_out.toString()}else C=n;let A=!1;R?A=r?a>R.long_threshold:a>R.short_threshold:A=!0,j&&ne(j).gt(a)&&(A=!0);let p,s,u,h,_,w,M,b;if(A){let{base_price:Q,quote_price:ie,flash_amount:T,flash_loan_fee:P,flash_loan_coin:L,is_flash_a:q,clmm_pool:F,clmm_fee_tier:H,clmm_pool_coin_type_a:$,clmm_pool_coin_type_b:U}=await this._sdk.SwapModules.calculateFlashLoan({is_long:r,leverage:a,base_token:d,quote_token:f,deposit_amount:C,reserve:V,base_token_decimal:X,quote_token_decimal:ee}),K=await this._sdk.SwapModules.findRouters(r?f:d,r?d:f,T.toString(),!0,[o]);p=ne(C).add(ne(K?.amount_out.toString())).toDP(0,xt.ROUND_DOWN).toString(),s=ne(p).mul(r?Q:ie).toString(),u=ne(T).add(P).toDP(0,xt.ROUND_UP).toString(),h=ne(u).mul(r?ie:Q).toString(),b=K,_={clmm_fee_tier:H,flash_loan_fee:P,flash_loan_coin:L,flash_amount:T,is_flash_a:q,clmm_pool_coin_type_a:$,clmm_pool_coin_type_b:U,clmm_pool:F}}else{let Q=r?X:ee,ie=r?ee:X,T=x.length>0?x[0].depositedAmount.toString():"0",P=B.length>0?B[0].borrowedAmount.toString():"0",L=r?O:D,q=r?D:O,F=ne(C).div(10**Q).toFixed(Q),{addBorrowAmount:H,addBorrowValue:$,addCollateralFromBorrow:U,finalCollateralAmount:K,finalCollateralValue:G,finalDebtAmount:z,finalDebtValue:te,addCollateralAmount:re,addCollateralValue:oe}=Wd(T,P,F,L,q,a.toString());p=ne(re).mul(10**Q).toFixed(0,xt.ROUND_DOWN).toString(),s=ne(oe).mul(10**Q).toString(),u=ne(H).mul(10**ie).toFixed(0,xt.ROUND_UP).toString(),h=ne($).mul(10**ie).toString(),b=await this._sdk.SwapModules.findRouters(r?f:d,r?d:f,p,!0,[])}let m=i?ne(n).div(10**(i?ee:X)).mul(10**X).mul(a).div(O).toDP(0,xt.ROUND_DOWN).toString():ne(n).mul(a).toDP(0,xt.ROUND_DOWN).toString(),c="0",k="0",Z="0",W="0";return!v&&y&&(B&&B.length>0&&(c=ne(B[0].borrowedAmount.toString()).mul(r?10**ee:10**X).add(ne(u)).toString(),k=ne(c).mul(r?D:O).toString()),Z=ne(x[0].depositedAmount.toString()).mul(r?10**X:10**ee).add(ne(p)).toString(),W=ne(Z).mul(r?O:D).toString()),{routers:b,flash_loan_objs:_,quote_price:w,leverageDepositAmount:m,base_price:M,deposit_amount:p,borrow_amount:u,deposit_amount_usd:s,borrow_amount_usd:h,after_borrow_amount:c,after_borrow_amount_usd:k,after_deposit_amount:Z,after_deposit_amount_usd:W,init_deposit_amount:C,base_reserve_array_index:J,quote_reserve_array_index:Y,reserve:V,has_swap:E}};this.calculateCompoundDebt=async(e,i)=>{let{market_id:r,position_cap_id:n,borrow_reserve_array_index:o,borrow_index:a}=e,{margin_trading:l}=this._sdk.sdkOptions,{lending_market_type:d,lending_market_id:f}=Pt(this._sdk.sdkOptions.suilend),g=new $i;g.moveCall({target:`${l.published_at}::router::compound_debt`,typeArguments:[d],arguments:[g.object(f),g.object(r),g.object(n),g.pure.u64(o),g.pure.u64(a)]});let v=i.moveCall({target:`${l.published_at}::router::compound_debt`,typeArguments:[d],arguments:[i.object(f),i.object(r),i.object(n),i.pure.u64(o),i.pure.u64(a)]});try{let y=await this._sdk.FullClient.devInspectTransactionBlock({transactionBlock:g,sender:this._sdk.getSenderAddress()});y.error!=null&&$t("FetchError",new Error(y.error),{[ta.METHOD_NAME]:"calculateCompoundDebt",[ta.REQUEST_PARAMS]:e}),(!y.results||y.results.length===0||!y.results[0].returnValues||y.results[0].returnValues.length===0)&&$t("FetchError",new Error("No return values from compound_debt"),{[ta.METHOD_NAME]:"calculateCompoundDebt",[ta.REQUEST_PARAMS]:e});let S=aw.u64().parse(Uint8Array.from(y?.results?.[0]?.returnValues?.[0]?.[0]||[]));return{compoundDebtU64:v,compoundDebtAmount:S.toString()}}catch{return}};this.calculatePositionWithdraw=async e=>{let{position_id:i,is_quote:r,swap_clmm_pool:n="",amount:o,leverage:a,slippage:l,withdraw_max:d,tx:f}=e,{deposits:g,borrows:v,origin_obligation:y,position_cap_id:S,market_id:I,is_long:x,claimable_rewards:B}=await this.getPositionInfo(i),{base_token:R,quote_token:j}=await this._sdk.MarketModules.getMarketInfo(I),V=i?this.extractOtherTokenTypes(g,v,R,j):[],{reserve:J,base_reserve_map_info:Y,quote_reserve_map_info:X}=await this._sdk.SuiLendModule.getSuiLendReserveInfo(R,j,void 0,V),ee=J[0].mintDecimals,C=J[1].mintDecimals,E=x?Y.cTokenExchangeRate:X.cTokenExchangeRate,N=await this._sdk.SuiLendModule.getLatestPriceFeeds(J,!0),D=N[no(j)]?.price,O=N[no(R)]?.price,A=ne(0),p;x?(A=ne(r?ne(o).mul(D).toString():ne(o).mul(O).toString()).div(r?10**C:10**ee),p=r?ne(o).div(O).div(10**C).mul(10**ee).toString():ne(o)):(A=ne(r?ne(o).mul(D).toString():ne(o).mul(O).toString()).div(r?10**C:10**ee),p=r?ne(o):ne(o).mul(O).div(10**ee).mul(10**C).toString());let s=ne(g[0].depositedAmountUsd.toString()).sub(ne(v&&v.length>0?v[0].borrowedAmountUsd.toString():"0")).toString(),u=A.div(ne(s)),h=d||ne(u).gte(1),_,w=new xt(0);y&&y.borrows&&y.borrows.length>0&&(_=uw(y.borrows[0],x?J[1]:J[0]),w=ne(_.borrowedAmount.value.toString()).div(10**18).toDP(0,xt.ROUND_UP));let M,b=w.mul(h?1.001:u).toDP(0,xt.ROUND_UP).toString(),m=b.toString(),c,k,Z,W,Q,ie;if(ne(b).gt(0)){let{clmm_pool_coin_type_a:oe,clmm_pool_coin_type_b:_e,clmm_fee_tier:ce,clmm_pool:ge}=await this._sdk.SwapModules.getFlashLoanPool(x?j:R,m);Q=oe||"",ie=_e||"",Z=ce||0,W=ge||"",c=ne(m).mul(ce).toString(),k=ne(m).mul(ne(1).add(ce)).toDP(0,xt.ROUND_UP).toString()}let T=x&&r||!x&&!r,P,L;if(T){let oe=ne(g[0].depositedAmount.toString()).mul(10**(x?ee:C)).mul(h?1:u).toDP(0,xt.ROUND_DOWN).toString();P=await this._sdk.SwapModules.findRouters(g[0].reserve.coinType,x?j:R,oe,!0,[n])}else{let _e=R==="0x0041f9f9344cac094454cd574e333c4fdb132d7bcc9379bcd4aab485b2a63942::wbtc::WBTC"||j==="0x0041f9f9344cac094454cd574e333c4fdb132d7bcc9379bcd4aab485b2a63942::wbtc::WBTC"?.01:.0025;L=ne(b).mul(x?D:O).div(10**(x?C:ee)).mul(10**(x?ee:C)).div(x?O:D).mul(ne(1).add(_e)).toDP(0,xt.ROUND_DOWN).toString(),P=await this._sdk.SwapModules.findRouters(g[0].reserve.coinType,x?j:R,L.toString(),!0,[n]),h||(b=ne(P?.amount_out.toString()).mul(ne(1).sub(l)).toDP(0,xt.ROUND_DOWN).toString())}p=ne(p).mul(a).toDP(0,xt.ROUND_DOWN).toString(),A=ne(A).mul(a);let q=w.mul(ne(1).sub(u)).toString(),F=ne(q).mul(x?D:O).toString(),H=ne(g[0].depositedAmount.toString()).mul(x?10**ee:10**C).sub(ne(p)).toString(),$=ne(H).mul(x?O:D).toString(),U=ne(P?.amount_in.toString()).toString(),K=ne(P?.amount_out.toString()).toString(),G=ne(p).div(E.toString()).toDP(0,xt.ROUND_DOWN).toString(),z=ne(F).div(ne(10**(x?C:ee))),te=ne($).div(ne(10**(x?ee:C))),re=!0;if(v.length>0){let oe=ne(v[0].borrowedAmountUsd.toString()),_e=oe.div(te).toString(),ce=ne(g[0].reserve.config.openLtvPct).mul(ne(.95)).div(100).toString();console.log("\u{1F680}\u{1F680}\u{1F680} ~ positionModules.ts:1459 ~ PositionModules ~ afterLTV:",{afterLTV:_e,ltv:ce,afterDepositAmount:H,afterDepositAmountUSD:te,afterBorrowAmount:q,afterBorrowAmountUSD:z,withdrawAmount:p,currentBorrowAmountUSD:oe}),ne(_e).lte(ce)&&(re=!1)}return{compoundDebtU64:M,amount_in:U,amount_out:K,from:g[0].reserve.coinType,to:x?R:j,after_borrow_amount:q,after_borrow_amount_usd:F,after_deposit_amount:H,after_deposit_amount_usd:$,flash_loan_fee:c,clmm_fee_tier:Z,withdraw_amount:p,withdraw_ctoken_amount:G,repay_amount:b,ratio:u,is_close:h,is_long:x,deposits:g,borrows:v,reserve:J,base_token:R,quote_token:j,clmm_pool:W,clmm_pool_coin_type_a:Q,clmm_pool_coin_type_b:ie,position_cap_id:S,market_id:I,swap_convert_all:T,flash_loan_amount:m,routers:P,repay_flash_loan_amount:k,partial_amount_in:L,has_flash_loan:re,claimable_rewards:B}};this.calculatePositionLeverage=async e=>{let{position_id:i,current_leverage:r,target_leverage:n,swap_clmm_pool:o=""}=e,a=ne(n).sub(ne(r)),l=a.gt(0),{borrows:d,deposits:f,is_long:g,position_cap_id:v,market_id:y}=await this.getPositionInfo(i),{base_token:S,quote_token:I}=await this._sdk.MarketModules.getMarketInfo(y),x=this.extractOtherTokenTypes(f,d,S,I),{reserve:B}=await this._sdk.SuiLendModule.getSuiLendReserveInfo(S,I,void 0,x),R=B[0].mintDecimals,j=B[1].mintDecimals,V=await this._sdk.SuiLendModule.getLatestPriceFeeds(B,!0),J=V[no(I)]?.price,Y=V[no(S)]?.price,X=d.length>0,ee=f[0].depositedAmountUsd.toString(),C=f[0].depositedAmount.toString(),E=X?ne(d[0].borrowedAmount.toString()).mul(10**(g?j:R)):ne(0),N=X?d[0].borrowedAmountUsd.toString():ne(0),D=X?ne(d[0].reserve.config.borrowWeightBps.toString()).div(1e4).toString():"1",O=ne(f[0].reserve.config.openLtvPct).mul(ne(.95)).div(100).div(D).toString(),A=ne(ee).sub(ne(N)).mul(O).toString();if(l){let p=ne(ee).div(r).mul(a),s=p.add(N).div(ee).toString(),u=p.div(g?J:Y).mul(10**(g?j:R)).toDP(0,xt.ROUND_UP),h=ne(s).gt(O),_=u,w=g?I:S,M=g?S:I,b=await this._sdk.SwapModules.findRouters(w,M,_.toString(),!0,[o]),m=ne(b?.amount_out.toString()).toString(),c=ne(m).mul(g?Y:J).toString(),k,Z,W,Q,ie,T="0",P="0";if(h){let{clmm_pool_coin_type_a:$,clmm_pool_coin_type_b:U,clmm_pool:K,clmm_fee_tier:G}=await this._sdk.SwapModules.getFlashLoanPool(w,_.toString());W=G,Q=$,ie=U,k=_.mul(W).toString(),Z=g?Q==I:ie==S,T=ne(_).add(k).toDP(0,xt.ROUND_UP).toString(),P=ne(T).mul(g?J:Y).toString()}else T=u.toString(),P=p.toString();let L=ne(C).add(ne(m).div(10**(g?R:j))).toString(),q=ne(L).mul(g?Y:J).toString(),F=ne(E).add(ne(T)).div(10**(g?j:R)).toString(),H=ne(F).mul(g?J:Y).toString();return{amount_in:b?.amount_in.toString(),amount_out:b?.amount_out.toString(),flash_loan_fee:k,deposit_amount:m,borrow_amount:T,deposit_amount_usd:c,borrow_amount_usd:P,flash_loan_amount:_,base_token:S,quote_token:I,reserve:B,deposits:f,borrows:d,clmm_fee_tier:W,is_flash_loan:h,is_loan_a:Z,clmm_pool_coin_type_a:Q,clmm_pool_coin_type_b:ie,after_deposit_amount:L,after_borrow_amount:F,after_deposit_amount_usd:q,after_borrow_amount_usd:H,position_cap_id:v,market_id:y,is_long:g,routers:b}}else{let s=ne(ee).div(r).mul(a.abs()).div(g?J:Y).mul(10**(g?j:R)).toDP(0,xt.ROUND_UP),u=await this._sdk.SwapModules.findRouters(f[0].reserve.coinType,d[0].reserve.coinType,s.toString(),!1,[o]),h=u?.amount_in.toString(),_=ne(h).mul(g?Y:J).div(10**(g?R:j)).toString(),w=ne(ee).mul(O).toString(),M=ne(N).div(ne(ee).sub(ne(_))).toString(),b=ne(M).gt(O),m=s.toString(),c=ne(m).mul(g?J:Y).toString(),k=h,Z=ne(k).mul(g?Y:J).toString(),W,Q="",ie="";if(b){let{clmm_pool_coin_type_a:F,clmm_pool_coin_type_b:H,clmm_pool:$,clmm_fee_tier:U}=await this._sdk.SwapModules.getFlashLoanPool(d[0].reserve.coinType,m.toString());W=U,Q=F,ie=H}let T=ne(C).sub(ne(k).div(10**(g?R:j))).toString(),P=ne(T).mul(g?Y:J).toString(),L=ne(E).sub(ne(m)).div(10**(g?j:R)).toString(),q=ne(L).mul(g?J:Y).toString();return{amount_in:u?.amount_in.toString(),amount_out:u?.amount_out.toString(),deposit_amount:k,borrow_amount:m,deposit_amount_usd:Z,borrow_amount_usd:c,base_token:S,quote_token:I,reserve:B,deposits:f,borrows:d,clmm_fee_tier:W,withdraw_ctoken_amount:h,is_flash_loan:b,clmm_pool_coin_type_a:Q,clmm_pool_coin_type_b:ie,after_deposit_amount:T,after_borrow_amount:L,after_deposit_amount_usd:P,after_borrow_amount_usd:q,position_cap_id:v,market_id:y,is_long:g,routers:u}}};this.calculatePositionRepay=async e=>{let{position_id:i,amount:r,is_quote:n}=e,{borrows:o,deposits:a,is_long:l,market_id:d,position_cap_id:f}=await this._sdk.PositionModules.getPositionInfo(i),g=o[0].reserve.coinType,v=l?a[0].reserve.coinType:o[0].reserve.coinType,y=l?o[0].reserve.coinType:a[0].reserve.coinType,S,I=l?!n:n;return I&&(S=await this._sdk.SwapModules.findRouters(n?y:v,g,r,!0,[])),{routers:S,repay_coin_type:g,base_token:v,quote_token:y,is_long:l,borrows:o,deposits:a,market_id:d,position_cap_id:f,has_swap:I}};this._sdk=e}getObligationRewardsInfo(e,i){let r=[],n=new dt(10).pow(18),o={},a=Date.now();for(let d of i){let f=d.coinType,g=d.arrayIndex.toString(),v=d.depositsPoolRewardManager.poolRewards||[];for(let S of v){if(!S)continue;let I=S.id,x=S.coinType,B=parseInt(S.startTimeMs),R=parseInt(S.endTimeMs),j=a>=B&&a<R,V=S.mintDecimals,J=dt(S.cumulativeRewardsPerShare).times(10**V);o[I]={coinType:x,mintDecimals:V,isActive:j,reserveType:"deposit",reserveArrayIndex:g,reserveCoinType:f,globalCumulativePerShare:J,rewardIndex:S.rewardIndex,reserve:d}}let y=d.borrowsPoolRewardManager.poolRewards||[];for(let S of y){if(!S)continue;let I=S.id,x=S.coinType,B=parseInt(S.startTimeMs),R=parseInt(S.endTimeMs),j=a>=B&&a<R,V=S.mintDecimals,J=dt(S.cumulativeRewardsPerShare).times(10**V);o[I]={coinType:x,mintDecimals:V,isActive:j,reserveType:"borrow",reserveCoinType:f,reserveArrayIndex:g,rewardIndex:S.rewardIndex,globalCumulativePerShare:J,reserve:d}}}let l=e.userRewardManagers;for(let d of l)for(let f=0;f<d.rewards.length;f++){let g=d.rewards[f];if(!g)continue;let v=o[g.poolRewardId];if(!v)continue;let y=v.globalCumulativePerShare,S=new dt(g.cumulativeRewardsPerShare.value.toString()).div(n),I=new dt(d.share).times(y.minus(S)),x=new dt(g.earnedRewards.value).div(n),B=new dt(x).plus(I),R=v.reserve.price,j=B.div(10**v.mintDecimals),V=R?j.times(R).toFixed(12):0;ne(V).gt(0)&&r.push({poolRewardId:g.poolRewardId,coinType:v.coinType,earnedRewards:B.toString(),earnedRewardsUsd:V,earnedRewardsFormatted:j.toFixed(12),isActive:v.isActive,reserveType:v.reserveType,reserveCoinType:v.reserveCoinType,reserveArrayIndex:v.reserveArrayIndex,rewardIndex:v.rewardIndex,rewardInfo:v})}return r}createLeveragePosition(e){let{lending_market_id:i,lending_market_type:r}=Pt(this._sdk.sdkOptions.suilend),{global_config_id:n,versioned_id:o}=Pt(this._sdk.sdkOptions.margin_trading),a=this._sdk.sdkOptions.margin_trading,{leverage:l,market_id:d,base_token:f,quote_token:g,is_long:v,init_deposit_amount:y,tx:S,init_coin_type:I}=e;return S.moveCall({target:`${a.published_at}::router::open_position`,arguments:[S.object(n),S.object(d),S.object(i),S.pure.u64(ne(l).mul(1e4).toString()),S.object(fn),S.object(o)],typeArguments:[r,v?f:g]})}async depositToLeveragePosition(e,i){let{margin_trading:r}=this._sdk.sdkOptions,{lending_market_type:n,lending_market_id:o}=Pt(this._sdk.sdkOptions.suilend),{is_long:a,market_id:l,position_cap_id:d,position_cap:f,deposit_reserve_array_index:g,input_coin:v,base_token:y,quote_token:S}=e,{global_config_id:I,versioned_id:x}=Pt(this._sdk.sdkOptions.margin_trading);return i.moveCall({target:`${r.published_at}::router::deposit`,typeArguments:[n,a?y:S],arguments:[i.object(I),i.object(o),i.object(l),d?i.object(d):f,v,i.pure.u64(g),i.object(fn),i.object(x)]}),i}extractOtherTokenTypes(e,i,r,n){let o=[];return e.forEach(a=>{a.reserve.coinType!==r&&a.reserve.coinType!==n&&o.push(a.reserve.coinType)}),i.forEach(a=>{a.reserve.coinType!==r&&a.reserve.coinType!==n&&o.push(a.reserve.coinType)}),o}async buildClaimRewardsMoveCall(e,i,r,n){let{suilend:o,margin_trading:a}=this._sdk.sdkOptions,l=Pt(o).lending_market_id,d=Pt(o).lending_market_type,{global_config_id:f,versioned_id:g}=Pt(this._sdk.sdkOptions.margin_trading);for(let v=0;v<e.length;v++){let y=n.moveCall({target:`${a.published_at}::router::claim_rewards`,arguments:[n.object(f),n.object(l),n.object(i),n.object(r),n.pure.u64(e[v].reserveArrayIndex.toString()),n.pure.u64(e[v].rewardIndex.toString()),n.pure.bool(e[v].reserveType==="deposit"),n.object(fn),n.object(g)],typeArguments:[d,e[v].coinType]});n.transferObjects([y],this._sdk.getSenderAddress())}}};import{SuilendClient as lw}from"@suilend/sdk/client";import{initializeSuilend as cw,initializeSuilendRewards as dw,initializeObligations as hw}from"@suilend/sdk/lib/initialize";import{formatRewards as fw,getFilteredRewards as pw,getStakingYieldAprPercent as mw,getDedupedPerDayRewards as _w,getDedupedAprRewards as gw,getTotalAprPercent as Kd,getNetAprPercent as ww}from"@suilend/sdk/lib/liquidityMining";import{Side as Fr}from"@suilend/sdk/lib/types";import{d as Ou,getPackagerConfigs as oo,PythPriceModule as vw,removeHexPrefix as oa}from"@cetusprotocol/common-sdk";import{SUI_DECIMALS as yw,toHex as Xd}from"@mysten/sui/utils";var bw=9,sa=class{constructor(e){this.getCoinAprByAmount=async(e,i,r)=>{let n=new dt(i.toString()),o=await this.getLendingMarketData(!1),{allLendingMarketData:a,lstStatsMap:l,sdeUsdAprPercent:d,eThirdAprPercent:f,eEarnAprPercent:g}=o;if(await this.getInitializeObligations(o,!0),!a||!l)throw new Error("lendingMarketCache is not initialized");let v=Object.values(a??{})[0],y=v.lendingMarket.reserves.find(O=>O.coinType===e);if(!y)throw new Error("reserve not found");let I=(this.obligationsCache?.[v.lendingMarket.id]).rewardMap[y.token.coinType]?.[r]??[],x=pw(I),B=mw(r,y.coinType,l,d,f),R=r===Fr.DEPOSIT?y.depositAprPercent:y.borrowAprPercent,j=R,V=new dt(1),J=!0;if(r!==void 0&&n!==void 0&&n.gt(0)){let O={...y,depositedAmount:r===Fr.DEPOSIT?dt.max(y.depositedAmount.plus(r===Fr.DEPOSIT?n:n.negated()),0):y.depositedAmount,borrowedAmount:r===Fr.BORROW?dt.max(y.borrowedAmount.plus(r===Fr.BORROW?n:n.negated()),0):y.borrowedAmount};j=r===Fr.DEPOSIT?Zd(O):Pu(O);let A=r===Fr.DEPOSIT?y.depositedAmount:y.borrowedAmount,p=r===Fr.DEPOSIT?O.depositedAmount:O.borrowedAmount;V=p.eq(0)?new dt(-1):A.div(p),J=!V.eq(-1)}let ee=_w(x).map(O=>({...O,stats:{...O.stats,perDay:J?O.stats.perDay.times(V):void 0}})),E=gw(x).map(O=>({...O,stats:{...O.stats,aprPercent:J?O.stats.aprPercent.times(V):void 0}})),N=Kd(r,R,x,B),D=j===void 0||E.some(O=>O.stats.aprPercent===void 0)?void 0:Kd(r,j,E,B);return console.log("\u{1F680}\u{1F680}\u{1F680} ~ suilendModule.ts:315 ~ SuiLendModule ~ newTotalAprPercent:",D?.toString()),{new_total_apr_percent:D?.toString(),total_apr_percent:N.toString()}};this.refreshReservePrice=async(e,i,r)=>{let{lending_market_id:n,lending_market_type:o}=oo(this.sdk.sdkOptions?.suilend),a=`${n}_${o}`;if(!this.suilendClientCache)throw new Error("suilendClientCache is not initialized");let l=await this.pythPriceModule.getPriceFeedObjectId(i);this.suilendClientCache[a].refreshReservePrices(e,l,r)};this.getLatestPriceFeeds=async(e,i=!1)=>{let{lending_market_id:r,lending_market_type:n}=oo(this.sdk.sdkOptions?.suilend),o={},a=[];if(e.forEach(g=>{let v=this.sdk.getCache(`getLatestPrice_${g.coinType.name}`,i);v&&this.priceCheck(v,60)?o[g.coinType.name]=v:a.push(g.coinType.name)}),a.length==0)return o;let l=`${r}_${n}`;if(!this.suilendClientCache)throw new Error("suilendClient is not initialized");let d=Array.from(new Set(e.map(g=>g?.priceIdentifier?.bytes?Xd(new Uint8Array(g.priceIdentifier.bytes)):oa(g.priceIdentifier.toString()))));return(await this.pythPriceModule.getLatestPriceFeeds(d))?.parsed?.forEach((g,v)=>{if(g){let{price:y,expo:S,publish_time:I}=g.price,x=Ou(y).mul(Ou(10).pow(Ou(S))).toString(),B=e[v],R={coin_type:B.coinType.name||B.coinType,price:x,oracle_price:0n,last_update_time:I};R.oracle_price=Hd(BigInt(y),BigInt(S)),o[B.coinType.name||B.coinType]=R,this.sdk.updateCache(`getLatestPrice_${R.coin_type}`,R)}}),o};this.getLatestPriceFeedsByCoinTypes=async(e,i=!1)=>{try{let{lending_market_id:r}=oo(this.sdk.sdkOptions?.suilend),{allLendingMarketData:n}=await this.getLendingMarketData(!1),o=[];return e.forEach(l=>{let d=n[r].reserveMap[l];o.push(d)}),await this.getLatestPriceFeeds(o,i)}catch(r){$t("FetchError",r);return}};this.getSuiLendReserveInfo=async(e,i,r,n)=>{let{lending_market_id:o}=oo(this.sdk.sdkOptions?.suilend);r||(r=(await this.getLendingMarketData(!1)).allLendingMarketData);let a=r[o].reserveMap[e],l=r[o].reserveMap[i],d=r[o].refreshedRawReserves.filter(S=>S.coinType.name==oa(e)),f=r[o].refreshedRawReserves.filter(S=>S.coinType.name==oa(i)),g=r[o].reserveMap[e],v=r[o].reserveMap[i],y=[];return n&&n.forEach(S=>{let I=r[o].refreshedRawReserves.filter(x=>x.coinType.name==oa(S));y.push(...I)}),{base_reserve_array_index:a.arrayIndex.toString(),quote_reserve_array_index:l.arrayIndex.toString(),reserve:[d[0],f[0],...y],base_reserve_map_info:g,quote_reserve_map_info:v}};this.refreshReservePrices=async(e,i)=>{for(let r=0;r<i.length;r++){let n=Xd(new Uint8Array(i[r].priceIdentifier.bytes));await this.refreshReservePrice(e,n,BigInt(i[r].arrayIndex))}};this.refreshReservePricesV2=async(e,i)=>{for(let r=0;r<i.length;r++){let n=i[r].priceIdentifier.toString();await this.refreshReservePrice(e,n,BigInt(i[r].arrayIndex))}};this.sdk=e,this.pythPriceModule=new vw(this.sdk.FullClient,{pyth_package_id:"0x04e20ddf36af412a4096f9014f4a565af9e812db9a05cc40254846cf6ed0ad91",pyth_published_at:"0x04e20ddf36af412a4096f9014f4a565af9e812db9a05cc40254846cf6ed0ad91",pyth_state_id:"0x1f9310238ee9298fb703c3419030b35b22bb1cc37113e3bb5007c99aec79e5b8",wormhole_state_id:"0xaeab97f96cf9877fee2883315d459552b2b921edc16d7ceac6eab944dd88919c",hermes_service_urls:[]})}async getSuilendClient(e,i){let r=`${e}_${i}`;return this.suilendClientCache||(this.suilendClientCache={}),this.suilendClientCache[r]||(this.suilendClientCache[r]=await lw.initialize(e,i,this.sdk.FullClient,!0)),this.suilendClientCache[r]}async getLendingMarketData(e=!0){let i="lendingMarketData",r=this.sdk.getCache(i,e);if(r)return r;let n=oo(this.sdk.sdkOptions?.suilend)?.lending_market||[];if(console.log("\u{1F680}\u{1F680}\u{1F680} ~ suilendModule.ts:67 ~ SuiLendModule ~ getLendingMarketData ~ lendingMarkets:",n),!n.length)return console.warn("\u26A0\uFE0F No lending markets configured."),{};try{let[o,a,l,d,f]=await Promise.all([(async()=>Object.fromEntries(await Promise.all(n.map(async y=>{let S=await this.getSuilendClient(y.id,y.type),{lendingMarket:I,coinMetadataMap:x,refreshedRawReserves:B,reserveMap:R,reserveCoinTypes:j,reserveCoinMetadataMap:V,rewardCoinTypes:J,activeRewardCoinTypes:Y,rewardCoinMetadataMap:X}=await cw(this.sdk.FullClient,S),{rewardPriceMap:ee}=await dw(R,Y);return[y.id,{suilendClient:S,lendingMarket:I,coinMetadataMap:x,refreshedRawReserves:B,reserveMap:R,reserveCoinTypes:j,reserveCoinMetadataMap:V,rewardPriceMap:ee,rewardCoinTypes:J,activeRewardCoinTypes:Y,rewardCoinMetadataMap:X}]}))))(),(async()=>{try{let v=await fetch(`${this.sdk.sdkOptions?.suilend?.config?.api_url}/springsui/lst-info`),y=await v.json();if(v?.statusCode===500)throw new Error("Failed to fetch SpringSui LSTs");return Object.fromEntries(Object.entries(y).map(([S,{LIQUID_STAKING_INFO:I,liquidStakingInfo:x,weightHook:B,apy:R}])=>{let j=new dt(x.storage.totalSuiSupply.toString()).div(10**yw),V=new dt(x.lstTreasuryCap.totalSupply.value.toString()).div(10**bw),J=V.eq(0)?new dt(1):j.div(V);return[S,{lstToSuiExchangeRate:J,aprPercent:new dt(R)}]}))}catch(v){return console.error(v),{}}})(),(async()=>{})(),(async()=>{try{let v=`${this.sdk.sdkOptions?.suilend?.config?.api_url}/ember/apy`,S=await(await fetch(v)).json();return new dt(S.data.apy).times(100)}catch(v){console.error(v);return}})(),(async()=>{try{return new dt(13.6472884)}catch(v){console.error(v);return}})()]),g={allLendingMarketData:o,lstStatsMap:a,sdeUsdAprPercent:l,eThirdAprPercent:d,eEarnAprPercent:f};return this.sdk.updateCache(i,g,30*1e3),g}catch(o){throw console.log("\u{1F680} getLendingMarketData error:",o),o}}async getInitializeObligations(e,i=!1){if(!i&&this.obligationsCache)return this.obligationsCache;e||(e=await this.getLendingMarketData(!1));let r={};for(let n of Object.values(e.allLendingMarketData)){let{obligationOwnerCaps:o,obligations:a}=await hw(this.sdk.FullClient,n.suilendClient,n.refreshedRawReserves,n.reserveMap,this.sdk.senderAddress);a.length>0&&console.log("\u{1F680}\u{1F680}\u{1F680} ~ suilendModule.ts:181 ~ SuiLendModule ~ getInitializeObligations ~ obligations:",a[0].original.allowedBorrowValueUsd.value.toString());let l=fw(n.reserveMap,n.rewardCoinMetadataMap,n.rewardPriceMap,a);r[n.lendingMarket.id]={obligationOwnerCaps:o,obligations:a,rewardMap:l}}return this.obligationsCache=r,this.obligationsCache}async getSuiLendUserData(e,i=!1){let r=await this.getLendingMarketData(!1),{allLendingMarketData:n,lstStatsMap:o,sdeUsdAprPercent:a,eThirdAprPercent:l,eEarnAprPercent:d}=r,f=await this.getInitializeObligations(r,!1),{lending_market_id:g}=oo(this.sdk.sdkOptions?.suilend),v=f[g];if(!v)throw new Error(`No user data found for lending market: ${g}`);let y=v.obligations.find(I=>I.id===e);if(!y)throw new Error(`Obligation not found: ${e}`);let S=ww(y,v.rewardMap,o??{},a,l);return{obligation:y,netAprPercent:S,deposits:y.deposits,borrowedAmount:y.borrowedAmount,depositedAmount:y.depositedAmount,netValueUsd:y.netValueUsd,rewardMap:v.rewardMap}}priceCheck(e,i=60){let r=Math.floor(Date.now()/1e3);if(!(Math.abs(r-e.last_update_time)>i))return e}};var Du=Lu(Qd(),1);import{Transaction as Mw}from"@mysten/sui/transactions";import{addHexPrefix as kw,CoinAssist as Nu,d as pi,getPackagerConfigs as Yd,removeHexPrefix as eh}from"@cetusprotocol/common-sdk";var aa=class{constructor(e){this.routerSwap=async e=>{let{slippage:i,txb:r,input_coin:n,router:o}=e,a=r||new Mw;if(o)return await this._sdk.AggregatorClient.routerSwap({router:o,inputCoin:n,slippage:i,txb:a})};this.flashLoan=e=>{console.log("\u{1F680}\u{1F680}\u{1F680} ~ swapModules.ts:183 ~ SwapModules ~ params:",e);let{clmm_pool:i}=this._sdk.ClmmSDK.sdkOptions,{global_config_id:r}=Yd(this._sdk.ClmmSDK.sdkOptions.clmm_pool),{amount:n,clmm_pool:o,clmm_pool_coin_type_a:a,clmm_pool_coin_type_b:l,flash_loan_coin:d,tx:f,amount_u64:g}=e,v=kw(a)===d;console.log("\u{1F680}\u{1F680}\u{1F680} ~ swapModules.ts:188 ~ SwapModules ~ isLoanA:",v);let[y,S,I]=f.moveCall({target:`${i.published_at}::pool::flash_loan`,arguments:[f.object(r),f.object(o),f.pure.bool(v),g||f.pure.u64(n.toString())],typeArguments:[a,l]});return{balance_a:y,balance_b:S,receipt:I,is_loan_a:v,loan_coin_type:v?a:l}};this.getFlashLoanPool=async(e,i)=>{console.log("\u{1F680}\u{1F680}\u{1F680} ~ swapModules.ts:201 ~ SwapModules ~ flash_amount:",i,e);try{let r=await fetch(`https://api-sui.cetus.zone/v3/sui/margin_trading/pools?coin_type=${e}&min_amount=${i}`),{data:n}=await r.json();return console.log("\u{1F680}\u{1F680}\u{1F680} ~ swapModules.ts:206 ~ SwapModules ~ data:",n),n&&n.length>0?{clmm_pool_coin_type_a:n[0].coin_type_a,clmm_pool_coin_type_b:n[0].coin_type_b,clmm_pool:n[0].pool_id,clmm_fee_tier:pi(n[0].fee_rate).div(1e6).toString()}:($t("FlashLoanPoolNotFound","FlashLoanPoolNotFound"),{clmm_pool_coin_type_a:"",clmm_pool_coin_type_b:"",clmm_pool:"",clmm_fee_tier:""})}catch(r){return $t("FetchError",r),{clmm_pool_coin_type_a:"",clmm_pool_coin_type_b:"",clmm_pool:"",clmm_fee_tier:""}}};this.repayFlashLoan=e=>{let{clmm_pool:i}=this._sdk.ClmmSDK.sdkOptions,{global_config_id:r}=Yd(this._sdk.ClmmSDK.sdkOptions.clmm_pool),{tx:n,repay_base:o,repay_quote:a,receipt:l,clmm_pool:d,clmm_pool_coin_type_a:f,clmm_pool_coin_type_b:g}=e;return n.moveCall({target:`${i.published_at}::pool::repay_flash_loan`,arguments:[n.object(r),n.object(d),o,a,l],typeArguments:[f,g]}),n};this._sdk=e}async findRouters(e,i,r,n,o){try{let a={from:e,target:i,amount:new Du.default(pi(r).toFixed(0).toString()),byAmountIn:n,depth:3},l=await this._sdk.AggregatorClient.findRouters(a);if(l?.error?.code===10001)return{...l,is_exceed:l.insufficientLiquidity};if(l?.insufficientLiquidity)return{...l,is_exceed:l.insufficientLiquidity};if(!l?.paths||l?.paths?.length===0)throw Error("Aggregator no router");return{amount_in:l.amountIn.toString(),amount_out:l.amountOut.toString(),is_exceed:l.insufficientLiquidity,route_obj:l,by_amount_in:!0,origin_res:l}}catch{try{if(o){let l=await this._sdk.AggregatorClient.swapInPools({from:e,target:i,amount:new Du.default(pi(r).toFixed(0).toString()),byAmountIn:n,pools:o});return l?{amount_in:l.routeData.amountIn.toString(),amount_out:l.routeData.amountOut.toString(),is_exceed:l.isExceed,route_obj:l.routeData,by_amount_in:!0,origin_res:l}:null}return null}catch{return null}}}async handleSwapLogic(e){let{is_long:i,is_quote:r,amount:n,base_token:o,quote_token:a,swap_clmm_pool:l="",slippage:d,tx:f}=e,g=i&&r||!i&&!r,v,y,S=n;if(g){let I=i&&r?a:o,x=i&&r?o:a,B=await this.findRouters(I,x,n,!0,[l]);if(S=B?.amount_out.toString(),B){let R=Nu.buildCoinWithBalance(BigInt(n),I,f);y=await this.routerSwap({router:B.route_obj,slippage:d,input_coin:R,txb:f}),v=y}}else v=Nu.buildCoinWithBalance(BigInt(n.toString()),r?a:o,f);return{has_swap:g,input_coin:v,init_deposit_amount:S}}async handleSwap(e){let{swap_clmm_pool:i="",slippage:r,amount:n,from:o,to:a,tx:l,input_coin:d}=e,f=await this.findRouters(o,a,n,!0,[i]),g=f.amount_out.toString();return{swap_out_coin:await this.routerSwap({router:f.route_obj,slippage:r,input_coin:d||Nu.buildCoinWithBalance(BigInt(n),o,l),txb:l}),amount_out:g}}async calculateFlashLoan(e){let{is_long:i,leverage:r,base_token:n,quote_token:o,deposit_amount:a,reserve:l,base_token_decimal:d,quote_token_decimal:f}=e,g=await this._sdk.SuiLendModule.getLatestPriceFeeds(l),v=g&&g[eh(o)]?.price,y=g&&g[eh(n)]?.price,S=i?pi(y).div(pi(v)).toString():pi(v).div(pi(y)).toString();console.log("\u{1F680}\u{1F680}\u{1F680} ~ swapModules.ts:267 ~ SwapModules ~ calculateFlashLoan ~ deposit_amount:",a,S,d,f);let I=pi(a).mul(pi(r).sub(1)).mul(S).div(10**(i?d:f)).mul(10**(i?f:d)).toDP(0,xt.ROUND_UP).toString();console.log("\u{1F680}\u{1F680}\u{1F680} ~ swapModules.ts:274 ~ SwapModules ~ calculateFlashLoan ~ flashAmount:",pi(a).mul(pi(r).sub(1)).mul(S).div(10**(i?d:f)).mul(10**(i?f:d)).toString(),I);let x=i?o:n,{clmm_pool_coin_type_a:B,clmm_fee_tier:R,clmm_pool:j,clmm_pool_coin_type_b:V}=await this.getFlashLoanPool(x,I),J=B===x,Y=pi(I).mul(R).toString();return{flash_amount:I,rate:S,quote_price:v,base_price:y,flash_loan_coin:x,is_flash_a:J,flash_loan_fee:Y,clmm_pool:j,clmm_pool_coin_type_a:B,clmm_pool_coin_type_b:V,clmm_fee_tier:R}}};import{CLOCK_ADDRESS as ua,d as th,getPackagerConfigs as pn}from"@cetusprotocol/common-sdk";var la=class{constructor(e){this._sdk=e}get config(){return this._sdk.sdkOptions.tspl}get versionedId(){return pn(this.config).versioned_id}target(e){return`${this.config.published_at}::router::${e}`}u128Price18(e,i){return e.pure.u128(th(i).mul(10**18).toFixed(0))}u64CloseRatioBps(e,i){return e.pure.u64(th(i).mul(1e4).toFixed(0))}appendTpslLevel(e,i,r,n,o,a){let{trigger_price:l,execution_price:d,close_ratio_bps:f,target_is_base:g,id:v}=r,y=[e.object(this.versionedId),typeof o=="string"?e.object(o):o,typeof a=="string"?e.object(a):a];if(v)e.moveCall({target:this.target("update_tpsl_level"),typeArguments:n,arguments:[...y,e.pure.u64(v),this.u128Price18(e,l),this.u128Price18(e,d),this.u64CloseRatioBps(e,f),e.pure.bool(g),e.object(ua)]});else{let S=i==="tp"?"add_tp_level":"add_sl_level";e.moveCall({target:this.target(S),typeArguments:n,arguments:[...y,this.u128Price18(e,l),this.u128Price18(e,d),this.u64CloseRatioBps(e,f),e.pure.bool(g),e.object(ua)]})}}async getOrderBookId(e){let i=`getOrderBookId_${e}`,r=this._sdk.getCache(i);if(r)return r;let n=pn(this.config).order_book_registry_handle,a=(await this._sdk.FullClient.getDynamicFieldObject({parentId:n,name:{type:"0x2::object::ID",value:e}})).data.content.fields.value;return a&&this._sdk.updateCache(i,a),a}async getTsplOrderCap(e=this._sdk.getSenderAddress()){let i=[];try{(await this._sdk.FullClient.getOwnedObjectsByPage(e,{filter:{StructType:`${this.config.package_id}::order::OrderCap`},options:{showContent:!0}})).data.forEach(n=>{let o=n.data.content.fields;i.push({id:o.id.id,order_id:o.order_id,position_id:o.position_id})})}catch(r){console.log("\u{1F680}\u{1F680}\u{1F680} ~ tsplModules.ts:82 ~ TsplModules ~ error:",r)}return i}async getTsplOrderList(e){let i=[];try{let r=e.map(n=>n.order_id);r.length>0&&(await this._sdk.FullClient.batchGetObjects(r,{showContent:!0})).forEach((o,a)=>{let l=o.data.content.fields,d=wu(l);d.order_cap=e[a].id,i.push(d)})}catch(r){console.log("\u{1F680}\u{1F680}\u{1F680} ~ tsplModules.ts:82 ~ TsplModules ~ error:",r)}return i}async getTsplOrder(e){try{let r=(await this._sdk.FullClient.getObject({id:e.order_id,options:{showContent:!0}})).data.content.fields,n=wu(r);return n.order_cap=e.id,n}catch(i){console.log("\u{1F680}\u{1F680}\u{1F680} ~ tsplModules.ts:82 ~ TsplModules ~ error:",i)}throw new Error(`Order id ${e.order_id} not found`)}createTpslOrder(e,i){let{order_book_id:r,position_cap_id:n,tp_target:o,sl_target:a,base_coin_type:l,quote_coin_type:d,is_long:f,entry_price:g}=e;if(!o&&!a)throw new Error("tp_target or sl_target is required");let{lending_market_type:v}=pn(this._sdk.sdkOptions.suilend),y=[v,l,d],S,I,x=i.moveCall({target:this.target("create_order"),typeArguments:y,arguments:[i.object(this.versionedId),i.object(r),typeof n=="string"?i.object(n):n,i.pure.bool(f),this.u128Price18(i,g),i.object(ua)]});return S=x[0],I=x[1],o&&this.appendTpslLevel(i,"tp",o,y,S,I),a&&this.appendTpslLevel(i,"sl",a,y,S,I),i.moveCall({target:this.target("share_order"),typeArguments:y,arguments:[i.object(this.versionedId),i.object(r),S]}),i.transferObjects([I],this._sdk.getSenderAddress()),i}updateTpslOrder(e,i){let{order_id:r,order_cap_id:n,target:o,base_coin_type:a,quote_coin_type:l}=e,{lending_market_type:d}=pn(this._sdk.sdkOptions.suilend),f=[d,a,l];if(o.id===void 0)throw new Error("target.id is required");return this.appendTpslLevel(i,"tp",o,f,r,n),i}cancelOrder(e,i){let{order_id:r,order_cap_id:n,base_coin_type:o,quote_coin_type:a,order_book_id:l}=e,{lending_market_type:d}=pn(this._sdk.sdkOptions.suilend);return i.moveCall({target:this.target("cancel_order"),typeArguments:[d,o,a],arguments:[i.object(this.versionedId),i.object(l),i.object(r),i.object(n)]}),i}removeTarget(e,i){let{order_id:r,order_cap_id:n,target_id:o,base_coin_type:a,quote_coin_type:l}=e,{lending_market_type:d}=pn(this._sdk.sdkOptions.suilend);return i.moveCall({target:this.target("remove_target"),typeArguments:[d,a,l],arguments:[i.object(this.versionedId),i.object(r),i.object(n),i.pure.u64(o),i.object(ua)]}),i}claimSettlement(e,i){let{order_id:r,order_cap_id:n,base_coin_type:o,quote_coin_type:a}=e,{lending_market_type:l}=pn(this._sdk.sdkOptions.suilend);return i.moveCall({target:this.target("claim_settlement"),typeArguments:[l,o,a],arguments:[i.object(this.versionedId),i.object(r),i.object(n)]}),i}};var ca=class t extends Tw{constructor(i,r){super(i);this._marketLeverageThresholds={};this._permissionModules=new Us(this),this._swapModules=new aa(this),this._tsplModules=new la(this),this._aggregatorClient=new wd({signer:Sw("0x0"),client:i.sui_client||new Aw({url:i.full_rpc_url,network:i.env==="testnet"?"testnet":"mainnet"}),env:i.env==="testnet"?Os.Testnet:Os.Mainnet}),this._clmmSDK=r||Zl.createSDK({env:i.env,full_rpc_url:i.full_rpc_url}),this._pythConnection=new Cw("https://hermes.pyth.network",{timeout:30*1e3}),this.setMarketLeverageThresholds({"0x7c62cbfa1884c02eec32cfa6a1e4325550fb6dda9579b030c3bae3031b80e0e4":{long_threshold:1.65,short_threshold:1.7},"0xe41b1cc8154300743bfd7bb9e6325edc2beea98e957dbe4c68790e7a92a13922":{long_threshold:1.55,short_threshold:1.7},"0x71bc9710e59c3f2c385e1530e16e9aecbcd02a1bab8a557825c73760efd9d0ec":{long_threshold:1.65,short_threshold:1.7}})}get SuiLendModule(){return this._suilendModule||(this._suilendModule=new sa(this)),this._suilendModule}get PermissionModules(){return this._permissionModules}get MarketModules(){return this._marketModules||(this._marketModules=new qs(this)),this._marketModules}get PositionModules(){return this._positionModules||(this._positionModules=new na(this)),this._positionModules}get SwapModules(){return this._swapModules}get TsplModules(){return this._tsplModules}get AggregatorClient(){return this._aggregatorClient}get ClmmSDK(){return this._clmmSDK}get PythConnection(){return this._pythConnection}getMarketLeverageThresholds(){return{...this._marketLeverageThresholds}}getLeverageThresholdForMarket(i){return this._marketLeverageThresholds[i]}setLeverageThresholdForMarket(i,r){this._marketLeverageThresholds[i]=r}setMarketLeverageThresholds(i){this._marketLeverageThresholds={...i}}static createSDK(i){return t.createCustomSDK({...vd,...i})}static createCustomSDK(i){return new t(i)}};var nM=ca;export{ca as CetusMarginTradingSDK,Kb as appendExtraRewards,Wd as calcIncrementalLeverage,Pu as calculateBorrowAprPercent,Zd as calculateDepositAprPercent,Vd as calculateUtilizationPercent,nM as default,Yb as formatLtvPercentValue,Hd as getPriceWithFormattedDecimals,Jb as getRewardsAprMultiplier,Xb as getUpdatedReserve,vd as margin_trading_mainnet,_u as mergePositionData,Iu as oraclePriceMultiplierDecimal,Qb as updateRewardsWithMultiplier,pu as wrapMarketInfo,gu as wrapMarketPermissions,mu as wrapPosition,wu as wrapTsplOrder};
27
+ Clients should implement reconnection logic to maintain continuous price updates.`,requestFormat:"json",parameters:[{name:"ids[]",type:"Query",schema:De.array(_s)},{name:"encoding",type:"Query",schema:De.enum(["hex","base64"]).optional()},{name:"parsed",type:"Query",schema:De.boolean().optional()},{name:"allow_unordered",type:"Query",schema:De.boolean().optional()},{name:"benchmarks_only",type:"Query",schema:De.boolean().optional()},{name:"ignore_invalid_price_ids",type:"Query",schema:De.boolean().optional()}],response:gs,errors:[{status:404,description:"Price ids not found",schema:De.void()}]},{method:"get",path:"/v2/updates/publisher_stake_caps/latest",alias:"latest_publisher_stake_caps",description:"Get the most recent publisher stake caps update data.",requestFormat:"json",parameters:[{name:"encoding",type:"Query",schema:De.enum(["hex","base64"]).optional()},{name:"parsed",type:"Query",schema:De.boolean().optional()}],response:Oc}]),dy=new kc(Mm);var km=5e3,Am=3,ws=class{baseURL;timeout;httpRetries;headers;accessToken;constructor(e,i){this.baseURL=e,this.timeout=i?.timeout??km,this.httpRetries=i?.httpRetries??Am,this.headers=i?.headers??{},this.accessToken=i?.accessToken}async httpRequest(e,i,r,n=this.httpRetries,o=100+Math.floor(Math.random()*100)){try{let a={};this.accessToken!==void 0&&(a.Authorization=`Bearer ${this.accessToken}`);let l=await fetch(e,{...r,signal:AbortSignal.any([...r?.signal?[r.signal]:[],AbortSignal.timeout(this.timeout)]),headers:{...a,...this.headers,...r?.headers}});if(!l.ok){let f=await l.text();throw new Error(`HTTP error! status: ${l.status.toString()}${f?`, body: ${f}`:""}`)}let d=await l.json();return i.parse(d)}catch(a){if(n>0&&!(a instanceof Error&&a.name==="AbortError"))return await new Promise(l=>setTimeout(l,o)),this.httpRequest(e,i,r,n-1,o*2);throw a}}async getPriceFeeds({fetchOptions:e,...i}={}){let r=this.buildURL("price_feeds");if(i){let n=vo(i);this.appendUrlSearchParams(r,n)}return await this.httpRequest(r.toString(),ko.PriceFeedMetadata.array(),e)}async getLatestPublisherCaps({fetchOptions:e,...i}={}){let r=this.buildURL("updates/publisher_stake_caps/latest");return i&&this.appendUrlSearchParams(r,i),await this.httpRequest(r.toString(),ko.LatestPublisherStakeCapsUpdateDataResponse,e)}async getLatestPriceUpdates(e,i,r){let n=this.buildURL("updates/price/latest");for(let o of e)n.searchParams.append("ids[]",o);if(i){let o=vo(i);this.appendUrlSearchParams(n,o)}return this.httpRequest(n.toString(),ko.PriceUpdate,r)}async getPriceUpdatesAtTimestamp(e,i,r,n){let o=this.buildURL(`updates/price/${e.toString()}`);for(let a of i)o.searchParams.append("ids[]",a);if(r){let a=vo(r);this.appendUrlSearchParams(o,a)}return this.httpRequest(o.toString(),ko.PriceUpdate,n)}async getPriceUpdatesStream(e,i){let r=this.buildURL("updates/price/stream");for(let o of e)r.searchParams.append("ids[]",o);if(i){let o=vo(i);this.appendUrlSearchParams(r,o)}let n={};return this.accessToken!==void 0&&(n.Authorization=`Bearer ${this.accessToken}`),new Wr(r.toString(),{fetch:(o,a)=>fetch(o,{...a,headers:{...a?.headers,...n,...this.headers}})})}appendUrlSearchParams(e,i){for(let[r,n]of Object.entries(i))n!==void 0&&e.searchParams.append(r,String(n))}buildURL(e){return new URL(`./v2/${e}`,`${this.baseURL}${this.baseURL.endsWith("/")?"":"/"}`)}};import{bcs as vs}from"@mysten/sui/bcs";var Em=Object.create,Gc=Object.defineProperty,xm=Object.getOwnPropertyDescriptor,zc=Object.getOwnPropertyNames,Im=Object.getPrototypeOf,Pm=Object.prototype.hasOwnProperty,Om=(t=>typeof Jt<"u"?Jt:typeof Proxy<"u"?new Proxy(t,{get:(e,i)=>(typeof Jt<"u"?Jt:e)[i]}):t)(function(t){if(typeof Jt<"u")return Jt.apply(this,arguments);throw Error('Dynamic require of "'+t+'" is not supported')}),Rm=(t,e)=>function(){return e||(0,t[zc(t)[0]])((e={exports:{}}).exports,e),e.exports},Nm=(t,e,i,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of zc(e))!Pm.call(t,n)&&n!==i&&Gc(t,n,{get:()=>e[n],enumerable:!(r=xm(e,n))||r.enumerable});return t},Jn=(t,e,i)=>(i=t!=null?Em(Im(t)):{},Nm(Gc(i,"default",{value:t,enumerable:!0}),t)),Qn=Rm({"node_modules/bn.js/lib/bn.js"(t,e){(function(i,r){function n(p,s){if(!p)throw new Error(s||"Assertion failed")}function o(p,s){p.super_=s;var u=function(){};u.prototype=s.prototype,p.prototype=new u,p.prototype.constructor=p}function a(p,s,u){if(a.isBN(p))return p;this.negative=0,this.words=null,this.length=0,this.red=null,p!==null&&((s==="le"||s==="be")&&(u=s,s=10),this._init(p||0,s||10,u||"be"))}typeof i=="object"?i.exports=a:r.BN=a,a.BN=a,a.wordSize=26;var l;try{typeof window<"u"&&typeof window.Buffer<"u"?l=window.Buffer:l=Om("buffer").Buffer}catch{}a.isBN=function(s){return s instanceof a?!0:s!==null&&typeof s=="object"&&s.constructor.wordSize===a.wordSize&&Array.isArray(s.words)},a.max=function(s,u){return s.cmp(u)>0?s:u},a.min=function(s,u){return s.cmp(u)<0?s:u},a.prototype._init=function(s,u,h){if(typeof s=="number")return this._initNumber(s,u,h);if(typeof s=="object")return this._initArray(s,u,h);u==="hex"&&(u=16),n(u===(u|0)&&u>=2&&u<=36),s=s.toString().replace(/\s+/g,"");var _=0;s[0]==="-"&&(_++,this.negative=1),_<s.length&&(u===16?this._parseHex(s,_,h):(this._parseBase(s,u,_),h==="le"&&this._initArray(this.toArray(),u,h)))},a.prototype._initNumber=function(s,u,h){s<0&&(this.negative=1,s=-s),s<67108864?(this.words=[s&67108863],this.length=1):s<4503599627370496?(this.words=[s&67108863,s/67108864&67108863],this.length=2):(n(s<9007199254740992),this.words=[s&67108863,s/67108864&67108863,1],this.length=3),h==="le"&&this._initArray(this.toArray(),u,h)},a.prototype._initArray=function(s,u,h){if(n(typeof s.length=="number"),s.length<=0)return this.words=[0],this.length=1,this;this.length=Math.ceil(s.length/3),this.words=new Array(this.length);for(var _=0;_<this.length;_++)this.words[_]=0;var w,M,b=0;if(h==="be")for(_=s.length-1,w=0;_>=0;_-=3)M=s[_]|s[_-1]<<8|s[_-2]<<16,this.words[w]|=M<<b&67108863,this.words[w+1]=M>>>26-b&67108863,b+=24,b>=26&&(b-=26,w++);else if(h==="le")for(_=0,w=0;_<s.length;_+=3)M=s[_]|s[_+1]<<8|s[_+2]<<16,this.words[w]|=M<<b&67108863,this.words[w+1]=M>>>26-b&67108863,b+=24,b>=26&&(b-=26,w++);return this._strip()};function d(p,s){var u=p.charCodeAt(s);if(u>=48&&u<=57)return u-48;if(u>=65&&u<=70)return u-55;if(u>=97&&u<=102)return u-87;n(!1,"Invalid character in "+p)}function f(p,s,u){var h=d(p,u);return u-1>=s&&(h|=d(p,u-1)<<4),h}a.prototype._parseHex=function(s,u,h){this.length=Math.ceil((s.length-u)/6),this.words=new Array(this.length);for(var _=0;_<this.length;_++)this.words[_]=0;var w=0,M=0,b;if(h==="be")for(_=s.length-1;_>=u;_-=2)b=f(s,u,_)<<w,this.words[M]|=b&67108863,w>=18?(w-=18,M+=1,this.words[M]|=b>>>26):w+=8;else{var m=s.length-u;for(_=m%2===0?u+1:u;_<s.length;_+=2)b=f(s,u,_)<<w,this.words[M]|=b&67108863,w>=18?(w-=18,M+=1,this.words[M]|=b>>>26):w+=8}this._strip()};function g(p,s,u,h){for(var _=0,w=0,M=Math.min(p.length,u),b=s;b<M;b++){var m=p.charCodeAt(b)-48;_*=h,m>=49?w=m-49+10:m>=17?w=m-17+10:w=m,n(m>=0&&w<h,"Invalid character"),_+=w}return _}a.prototype._parseBase=function(s,u,h){this.words=[0],this.length=1;for(var _=0,w=1;w<=67108863;w*=u)_++;_--,w=w/u|0;for(var M=s.length-h,b=M%_,m=Math.min(M,M-b)+h,c=0,k=h;k<m;k+=_)c=g(s,k,k+_,u),this.imuln(w),this.words[0]+c<67108864?this.words[0]+=c:this._iaddn(c);if(b!==0){var Z=1;for(c=g(s,k,s.length,u),k=0;k<b;k++)Z*=u;this.imuln(Z),this.words[0]+c<67108864?this.words[0]+=c:this._iaddn(c)}this._strip()},a.prototype.copy=function(s){s.words=new Array(this.length);for(var u=0;u<this.length;u++)s.words[u]=this.words[u];s.length=this.length,s.negative=this.negative,s.red=this.red};function v(p,s){p.words=s.words,p.length=s.length,p.negative=s.negative,p.red=s.red}if(a.prototype._move=function(s){v(s,this)},a.prototype.clone=function(){var s=new a(null);return this.copy(s),s},a.prototype._expand=function(s){for(;this.length<s;)this.words[this.length++]=0;return this},a.prototype._strip=function(){for(;this.length>1&&this.words[this.length-1]===0;)this.length--;return this._normSign()},a.prototype._normSign=function(){return this.length===1&&this.words[0]===0&&(this.negative=0),this},typeof Symbol<"u"&&typeof Symbol.for=="function")try{a.prototype[Symbol.for("nodejs.util.inspect.custom")]=y}catch{a.prototype.inspect=y}else a.prototype.inspect=y;function y(){return(this.red?"<BN-R: ":"<BN: ")+this.toString(16)+">"}var S=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],I=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],x=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];a.prototype.toString=function(s,u){s=s||10,u=u|0||1;var h;if(s===16||s==="hex"){h="";for(var _=0,w=0,M=0;M<this.length;M++){var b=this.words[M],m=((b<<_|w)&16777215).toString(16);w=b>>>24-_&16777215,_+=2,_>=26&&(_-=26,M--),w!==0||M!==this.length-1?h=S[6-m.length]+m+h:h=m+h}for(w!==0&&(h=w.toString(16)+h);h.length%u!==0;)h="0"+h;return this.negative!==0&&(h="-"+h),h}if(s===(s|0)&&s>=2&&s<=36){var c=I[s],k=x[s];h="";var Z=this.clone();for(Z.negative=0;!Z.isZero();){var W=Z.modrn(k).toString(s);Z=Z.idivn(k),Z.isZero()?h=W+h:h=S[c-W.length]+W+h}for(this.isZero()&&(h="0"+h);h.length%u!==0;)h="0"+h;return this.negative!==0&&(h="-"+h),h}n(!1,"Base should be between 2 and 36")},a.prototype.toNumber=function(){var s=this.words[0];return this.length===2?s+=this.words[1]*67108864:this.length===3&&this.words[2]===1?s+=4503599627370496+this.words[1]*67108864:this.length>2&&n(!1,"Number can only safely store up to 53 bits"),this.negative!==0?-s:s},a.prototype.toJSON=function(){return this.toString(16,2)},l&&(a.prototype.toBuffer=function(s,u){return this.toArrayLike(l,s,u)}),a.prototype.toArray=function(s,u){return this.toArrayLike(Array,s,u)};var B=function(s,u){return s.allocUnsafe?s.allocUnsafe(u):new s(u)};a.prototype.toArrayLike=function(s,u,h){this._strip();var _=this.byteLength(),w=h||Math.max(1,_);n(_<=w,"byte array longer than desired length"),n(w>0,"Requested array length <= 0");var M=B(s,w),b=u==="le"?"LE":"BE";return this["_toArrayLike"+b](M,_),M},a.prototype._toArrayLikeLE=function(s,u){for(var h=0,_=0,w=0,M=0;w<this.length;w++){var b=this.words[w]<<M|_;s[h++]=b&255,h<s.length&&(s[h++]=b>>8&255),h<s.length&&(s[h++]=b>>16&255),M===6?(h<s.length&&(s[h++]=b>>24&255),_=0,M=0):(_=b>>>24,M+=2)}if(h<s.length)for(s[h++]=_;h<s.length;)s[h++]=0},a.prototype._toArrayLikeBE=function(s,u){for(var h=s.length-1,_=0,w=0,M=0;w<this.length;w++){var b=this.words[w]<<M|_;s[h--]=b&255,h>=0&&(s[h--]=b>>8&255),h>=0&&(s[h--]=b>>16&255),M===6?(h>=0&&(s[h--]=b>>24&255),_=0,M=0):(_=b>>>24,M+=2)}if(h>=0)for(s[h--]=_;h>=0;)s[h--]=0},Math.clz32?a.prototype._countBits=function(s){return 32-Math.clz32(s)}:a.prototype._countBits=function(s){var u=s,h=0;return u>=4096&&(h+=13,u>>>=13),u>=64&&(h+=7,u>>>=7),u>=8&&(h+=4,u>>>=4),u>=2&&(h+=2,u>>>=2),h+u},a.prototype._zeroBits=function(s){if(s===0)return 26;var u=s,h=0;return(u&8191)===0&&(h+=13,u>>>=13),(u&127)===0&&(h+=7,u>>>=7),(u&15)===0&&(h+=4,u>>>=4),(u&3)===0&&(h+=2,u>>>=2),(u&1)===0&&h++,h},a.prototype.bitLength=function(){var s=this.words[this.length-1],u=this._countBits(s);return(this.length-1)*26+u};function R(p){for(var s=new Array(p.bitLength()),u=0;u<s.length;u++){var h=u/26|0,_=u%26;s[u]=p.words[h]>>>_&1}return s}a.prototype.zeroBits=function(){if(this.isZero())return 0;for(var s=0,u=0;u<this.length;u++){var h=this._zeroBits(this.words[u]);if(s+=h,h!==26)break}return s},a.prototype.byteLength=function(){return Math.ceil(this.bitLength()/8)},a.prototype.toTwos=function(s){return this.negative!==0?this.abs().inotn(s).iaddn(1):this.clone()},a.prototype.fromTwos=function(s){return this.testn(s-1)?this.notn(s).iaddn(1).ineg():this.clone()},a.prototype.isNeg=function(){return this.negative!==0},a.prototype.neg=function(){return this.clone().ineg()},a.prototype.ineg=function(){return this.isZero()||(this.negative^=1),this},a.prototype.iuor=function(s){for(;this.length<s.length;)this.words[this.length++]=0;for(var u=0;u<s.length;u++)this.words[u]=this.words[u]|s.words[u];return this._strip()},a.prototype.ior=function(s){return n((this.negative|s.negative)===0),this.iuor(s)},a.prototype.or=function(s){return this.length>s.length?this.clone().ior(s):s.clone().ior(this)},a.prototype.uor=function(s){return this.length>s.length?this.clone().iuor(s):s.clone().iuor(this)},a.prototype.iuand=function(s){var u;this.length>s.length?u=s:u=this;for(var h=0;h<u.length;h++)this.words[h]=this.words[h]&s.words[h];return this.length=u.length,this._strip()},a.prototype.iand=function(s){return n((this.negative|s.negative)===0),this.iuand(s)},a.prototype.and=function(s){return this.length>s.length?this.clone().iand(s):s.clone().iand(this)},a.prototype.uand=function(s){return this.length>s.length?this.clone().iuand(s):s.clone().iuand(this)},a.prototype.iuxor=function(s){var u,h;this.length>s.length?(u=this,h=s):(u=s,h=this);for(var _=0;_<h.length;_++)this.words[_]=u.words[_]^h.words[_];if(this!==u)for(;_<u.length;_++)this.words[_]=u.words[_];return this.length=u.length,this._strip()},a.prototype.ixor=function(s){return n((this.negative|s.negative)===0),this.iuxor(s)},a.prototype.xor=function(s){return this.length>s.length?this.clone().ixor(s):s.clone().ixor(this)},a.prototype.uxor=function(s){return this.length>s.length?this.clone().iuxor(s):s.clone().iuxor(this)},a.prototype.inotn=function(s){n(typeof s=="number"&&s>=0);var u=Math.ceil(s/26)|0,h=s%26;this._expand(u),h>0&&u--;for(var _=0;_<u;_++)this.words[_]=~this.words[_]&67108863;return h>0&&(this.words[_]=~this.words[_]&67108863>>26-h),this._strip()},a.prototype.notn=function(s){return this.clone().inotn(s)},a.prototype.setn=function(s,u){n(typeof s=="number"&&s>=0);var h=s/26|0,_=s%26;return this._expand(h+1),u?this.words[h]=this.words[h]|1<<_:this.words[h]=this.words[h]&~(1<<_),this._strip()},a.prototype.iadd=function(s){var u;if(this.negative!==0&&s.negative===0)return this.negative=0,u=this.isub(s),this.negative^=1,this._normSign();if(this.negative===0&&s.negative!==0)return s.negative=0,u=this.isub(s),s.negative=1,u._normSign();var h,_;this.length>s.length?(h=this,_=s):(h=s,_=this);for(var w=0,M=0;M<_.length;M++)u=(h.words[M]|0)+(_.words[M]|0)+w,this.words[M]=u&67108863,w=u>>>26;for(;w!==0&&M<h.length;M++)u=(h.words[M]|0)+w,this.words[M]=u&67108863,w=u>>>26;if(this.length=h.length,w!==0)this.words[this.length]=w,this.length++;else if(h!==this)for(;M<h.length;M++)this.words[M]=h.words[M];return this},a.prototype.add=function(s){var u;return s.negative!==0&&this.negative===0?(s.negative=0,u=this.sub(s),s.negative^=1,u):s.negative===0&&this.negative!==0?(this.negative=0,u=s.sub(this),this.negative=1,u):this.length>s.length?this.clone().iadd(s):s.clone().iadd(this)},a.prototype.isub=function(s){if(s.negative!==0){s.negative=0;var u=this.iadd(s);return s.negative=1,u._normSign()}else if(this.negative!==0)return this.negative=0,this.iadd(s),this.negative=1,this._normSign();var h=this.cmp(s);if(h===0)return this.negative=0,this.length=1,this.words[0]=0,this;var _,w;h>0?(_=this,w=s):(_=s,w=this);for(var M=0,b=0;b<w.length;b++)u=(_.words[b]|0)-(w.words[b]|0)+M,M=u>>26,this.words[b]=u&67108863;for(;M!==0&&b<_.length;b++)u=(_.words[b]|0)+M,M=u>>26,this.words[b]=u&67108863;if(M===0&&b<_.length&&_!==this)for(;b<_.length;b++)this.words[b]=_.words[b];return this.length=Math.max(this.length,b),_!==this&&(this.negative=1),this._strip()},a.prototype.sub=function(s){return this.clone().isub(s)};function j(p,s,u){u.negative=s.negative^p.negative;var h=p.length+s.length|0;u.length=h,h=h-1|0;var _=p.words[0]|0,w=s.words[0]|0,M=_*w,b=M&67108863,m=M/67108864|0;u.words[0]=b;for(var c=1;c<h;c++){for(var k=m>>>26,Z=m&67108863,W=Math.min(c,s.length-1),Q=Math.max(0,c-p.length+1);Q<=W;Q++){var ie=c-Q|0;_=p.words[ie]|0,w=s.words[Q]|0,M=_*w+Z,k+=M/67108864|0,Z=M&67108863}u.words[c]=Z|0,m=k|0}return m!==0?u.words[c]=m|0:u.length--,u._strip()}var V=function(s,u,h){var _=s.words,w=u.words,M=h.words,b=0,m,c,k,Z=_[0]|0,W=Z&8191,Q=Z>>>13,ie=_[1]|0,T=ie&8191,P=ie>>>13,L=_[2]|0,q=L&8191,F=L>>>13,H=_[3]|0,$=H&8191,U=H>>>13,K=_[4]|0,G=K&8191,z=K>>>13,te=_[5]|0,re=te&8191,oe=te>>>13,_e=_[6]|0,ce=_e&8191,ge=_e>>>13,Ie=_[7]|0,de=Ie&8191,Ee=Ie>>>13,ht=_[8]|0,we=ht&8191,Ue=ht>>>13,st=_[9]|0,me=st&8191,Pe=st>>>13,rt=w[0]|0,he=rt&8191,Ge=rt>>>13,wt=w[1]|0,ve=wt&8191,ze=wt>>>13,vt=w[2]|0,ye=vt&8191,Ke=vt>>>13,yt=w[3]|0,be=yt&8191,Xe=yt>>>13,bt=w[4]|0,Me=bt&8191,Je=bt>>>13,Mt=w[5]|0,ke=Mt&8191,Qe=Mt>>>13,kt=w[6]|0,Ae=kt&8191,Ye=kt>>>13,At=w[7]|0,Se=At&8191,et=At>>>13,St=w[8]|0,Ce=St&8191,tt=St>>>13,Ct=w[9]|0,Te=Ct&8191,We=Ct>>>13;h.negative=s.negative^u.negative,h.length=19,m=Math.imul(W,he),c=Math.imul(W,Ge),c=c+Math.imul(Q,he)|0,k=Math.imul(Q,Ge);var mi=(b+m|0)+((c&8191)<<13)|0;b=(k+(c>>>13)|0)+(mi>>>26)|0,mi&=67108863,m=Math.imul(T,he),c=Math.imul(T,Ge),c=c+Math.imul(P,he)|0,k=Math.imul(P,Ge),m=m+Math.imul(W,ve)|0,c=c+Math.imul(W,ze)|0,c=c+Math.imul(Q,ve)|0,k=k+Math.imul(Q,ze)|0;var _i=(b+m|0)+((c&8191)<<13)|0;b=(k+(c>>>13)|0)+(_i>>>26)|0,_i&=67108863,m=Math.imul(q,he),c=Math.imul(q,Ge),c=c+Math.imul(F,he)|0,k=Math.imul(F,Ge),m=m+Math.imul(T,ve)|0,c=c+Math.imul(T,ze)|0,c=c+Math.imul(P,ve)|0,k=k+Math.imul(P,ze)|0,m=m+Math.imul(W,ye)|0,c=c+Math.imul(W,Ke)|0,c=c+Math.imul(Q,ye)|0,k=k+Math.imul(Q,Ke)|0;var gi=(b+m|0)+((c&8191)<<13)|0;b=(k+(c>>>13)|0)+(gi>>>26)|0,gi&=67108863,m=Math.imul($,he),c=Math.imul($,Ge),c=c+Math.imul(U,he)|0,k=Math.imul(U,Ge),m=m+Math.imul(q,ve)|0,c=c+Math.imul(q,ze)|0,c=c+Math.imul(F,ve)|0,k=k+Math.imul(F,ze)|0,m=m+Math.imul(T,ye)|0,c=c+Math.imul(T,Ke)|0,c=c+Math.imul(P,ye)|0,k=k+Math.imul(P,Ke)|0,m=m+Math.imul(W,be)|0,c=c+Math.imul(W,Xe)|0,c=c+Math.imul(Q,be)|0,k=k+Math.imul(Q,Xe)|0;var wi=(b+m|0)+((c&8191)<<13)|0;b=(k+(c>>>13)|0)+(wi>>>26)|0,wi&=67108863,m=Math.imul(G,he),c=Math.imul(G,Ge),c=c+Math.imul(z,he)|0,k=Math.imul(z,Ge),m=m+Math.imul($,ve)|0,c=c+Math.imul($,ze)|0,c=c+Math.imul(U,ve)|0,k=k+Math.imul(U,ze)|0,m=m+Math.imul(q,ye)|0,c=c+Math.imul(q,Ke)|0,c=c+Math.imul(F,ye)|0,k=k+Math.imul(F,Ke)|0,m=m+Math.imul(T,be)|0,c=c+Math.imul(T,Xe)|0,c=c+Math.imul(P,be)|0,k=k+Math.imul(P,Xe)|0,m=m+Math.imul(W,Me)|0,c=c+Math.imul(W,Je)|0,c=c+Math.imul(Q,Me)|0,k=k+Math.imul(Q,Je)|0;var vi=(b+m|0)+((c&8191)<<13)|0;b=(k+(c>>>13)|0)+(vi>>>26)|0,vi&=67108863,m=Math.imul(re,he),c=Math.imul(re,Ge),c=c+Math.imul(oe,he)|0,k=Math.imul(oe,Ge),m=m+Math.imul(G,ve)|0,c=c+Math.imul(G,ze)|0,c=c+Math.imul(z,ve)|0,k=k+Math.imul(z,ze)|0,m=m+Math.imul($,ye)|0,c=c+Math.imul($,Ke)|0,c=c+Math.imul(U,ye)|0,k=k+Math.imul(U,Ke)|0,m=m+Math.imul(q,be)|0,c=c+Math.imul(q,Xe)|0,c=c+Math.imul(F,be)|0,k=k+Math.imul(F,Xe)|0,m=m+Math.imul(T,Me)|0,c=c+Math.imul(T,Je)|0,c=c+Math.imul(P,Me)|0,k=k+Math.imul(P,Je)|0,m=m+Math.imul(W,ke)|0,c=c+Math.imul(W,Qe)|0,c=c+Math.imul(Q,ke)|0,k=k+Math.imul(Q,Qe)|0;var yi=(b+m|0)+((c&8191)<<13)|0;b=(k+(c>>>13)|0)+(yi>>>26)|0,yi&=67108863,m=Math.imul(ce,he),c=Math.imul(ce,Ge),c=c+Math.imul(ge,he)|0,k=Math.imul(ge,Ge),m=m+Math.imul(re,ve)|0,c=c+Math.imul(re,ze)|0,c=c+Math.imul(oe,ve)|0,k=k+Math.imul(oe,ze)|0,m=m+Math.imul(G,ye)|0,c=c+Math.imul(G,Ke)|0,c=c+Math.imul(z,ye)|0,k=k+Math.imul(z,Ke)|0,m=m+Math.imul($,be)|0,c=c+Math.imul($,Xe)|0,c=c+Math.imul(U,be)|0,k=k+Math.imul(U,Xe)|0,m=m+Math.imul(q,Me)|0,c=c+Math.imul(q,Je)|0,c=c+Math.imul(F,Me)|0,k=k+Math.imul(F,Je)|0,m=m+Math.imul(T,ke)|0,c=c+Math.imul(T,Qe)|0,c=c+Math.imul(P,ke)|0,k=k+Math.imul(P,Qe)|0,m=m+Math.imul(W,Ae)|0,c=c+Math.imul(W,Ye)|0,c=c+Math.imul(Q,Ae)|0,k=k+Math.imul(Q,Ye)|0;var bi=(b+m|0)+((c&8191)<<13)|0;b=(k+(c>>>13)|0)+(bi>>>26)|0,bi&=67108863,m=Math.imul(de,he),c=Math.imul(de,Ge),c=c+Math.imul(Ee,he)|0,k=Math.imul(Ee,Ge),m=m+Math.imul(ce,ve)|0,c=c+Math.imul(ce,ze)|0,c=c+Math.imul(ge,ve)|0,k=k+Math.imul(ge,ze)|0,m=m+Math.imul(re,ye)|0,c=c+Math.imul(re,Ke)|0,c=c+Math.imul(oe,ye)|0,k=k+Math.imul(oe,Ke)|0,m=m+Math.imul(G,be)|0,c=c+Math.imul(G,Xe)|0,c=c+Math.imul(z,be)|0,k=k+Math.imul(z,Xe)|0,m=m+Math.imul($,Me)|0,c=c+Math.imul($,Je)|0,c=c+Math.imul(U,Me)|0,k=k+Math.imul(U,Je)|0,m=m+Math.imul(q,ke)|0,c=c+Math.imul(q,Qe)|0,c=c+Math.imul(F,ke)|0,k=k+Math.imul(F,Qe)|0,m=m+Math.imul(T,Ae)|0,c=c+Math.imul(T,Ye)|0,c=c+Math.imul(P,Ae)|0,k=k+Math.imul(P,Ye)|0,m=m+Math.imul(W,Se)|0,c=c+Math.imul(W,et)|0,c=c+Math.imul(Q,Se)|0,k=k+Math.imul(Q,et)|0;var Mi=(b+m|0)+((c&8191)<<13)|0;b=(k+(c>>>13)|0)+(Mi>>>26)|0,Mi&=67108863,m=Math.imul(we,he),c=Math.imul(we,Ge),c=c+Math.imul(Ue,he)|0,k=Math.imul(Ue,Ge),m=m+Math.imul(de,ve)|0,c=c+Math.imul(de,ze)|0,c=c+Math.imul(Ee,ve)|0,k=k+Math.imul(Ee,ze)|0,m=m+Math.imul(ce,ye)|0,c=c+Math.imul(ce,Ke)|0,c=c+Math.imul(ge,ye)|0,k=k+Math.imul(ge,Ke)|0,m=m+Math.imul(re,be)|0,c=c+Math.imul(re,Xe)|0,c=c+Math.imul(oe,be)|0,k=k+Math.imul(oe,Xe)|0,m=m+Math.imul(G,Me)|0,c=c+Math.imul(G,Je)|0,c=c+Math.imul(z,Me)|0,k=k+Math.imul(z,Je)|0,m=m+Math.imul($,ke)|0,c=c+Math.imul($,Qe)|0,c=c+Math.imul(U,ke)|0,k=k+Math.imul(U,Qe)|0,m=m+Math.imul(q,Ae)|0,c=c+Math.imul(q,Ye)|0,c=c+Math.imul(F,Ae)|0,k=k+Math.imul(F,Ye)|0,m=m+Math.imul(T,Se)|0,c=c+Math.imul(T,et)|0,c=c+Math.imul(P,Se)|0,k=k+Math.imul(P,et)|0,m=m+Math.imul(W,Ce)|0,c=c+Math.imul(W,tt)|0,c=c+Math.imul(Q,Ce)|0,k=k+Math.imul(Q,tt)|0;var ki=(b+m|0)+((c&8191)<<13)|0;b=(k+(c>>>13)|0)+(ki>>>26)|0,ki&=67108863,m=Math.imul(me,he),c=Math.imul(me,Ge),c=c+Math.imul(Pe,he)|0,k=Math.imul(Pe,Ge),m=m+Math.imul(we,ve)|0,c=c+Math.imul(we,ze)|0,c=c+Math.imul(Ue,ve)|0,k=k+Math.imul(Ue,ze)|0,m=m+Math.imul(de,ye)|0,c=c+Math.imul(de,Ke)|0,c=c+Math.imul(Ee,ye)|0,k=k+Math.imul(Ee,Ke)|0,m=m+Math.imul(ce,be)|0,c=c+Math.imul(ce,Xe)|0,c=c+Math.imul(ge,be)|0,k=k+Math.imul(ge,Xe)|0,m=m+Math.imul(re,Me)|0,c=c+Math.imul(re,Je)|0,c=c+Math.imul(oe,Me)|0,k=k+Math.imul(oe,Je)|0,m=m+Math.imul(G,ke)|0,c=c+Math.imul(G,Qe)|0,c=c+Math.imul(z,ke)|0,k=k+Math.imul(z,Qe)|0,m=m+Math.imul($,Ae)|0,c=c+Math.imul($,Ye)|0,c=c+Math.imul(U,Ae)|0,k=k+Math.imul(U,Ye)|0,m=m+Math.imul(q,Se)|0,c=c+Math.imul(q,et)|0,c=c+Math.imul(F,Se)|0,k=k+Math.imul(F,et)|0,m=m+Math.imul(T,Ce)|0,c=c+Math.imul(T,tt)|0,c=c+Math.imul(P,Ce)|0,k=k+Math.imul(P,tt)|0,m=m+Math.imul(W,Te)|0,c=c+Math.imul(W,We)|0,c=c+Math.imul(Q,Te)|0,k=k+Math.imul(Q,We)|0;var Ai=(b+m|0)+((c&8191)<<13)|0;b=(k+(c>>>13)|0)+(Ai>>>26)|0,Ai&=67108863,m=Math.imul(me,ve),c=Math.imul(me,ze),c=c+Math.imul(Pe,ve)|0,k=Math.imul(Pe,ze),m=m+Math.imul(we,ye)|0,c=c+Math.imul(we,Ke)|0,c=c+Math.imul(Ue,ye)|0,k=k+Math.imul(Ue,Ke)|0,m=m+Math.imul(de,be)|0,c=c+Math.imul(de,Xe)|0,c=c+Math.imul(Ee,be)|0,k=k+Math.imul(Ee,Xe)|0,m=m+Math.imul(ce,Me)|0,c=c+Math.imul(ce,Je)|0,c=c+Math.imul(ge,Me)|0,k=k+Math.imul(ge,Je)|0,m=m+Math.imul(re,ke)|0,c=c+Math.imul(re,Qe)|0,c=c+Math.imul(oe,ke)|0,k=k+Math.imul(oe,Qe)|0,m=m+Math.imul(G,Ae)|0,c=c+Math.imul(G,Ye)|0,c=c+Math.imul(z,Ae)|0,k=k+Math.imul(z,Ye)|0,m=m+Math.imul($,Se)|0,c=c+Math.imul($,et)|0,c=c+Math.imul(U,Se)|0,k=k+Math.imul(U,et)|0,m=m+Math.imul(q,Ce)|0,c=c+Math.imul(q,tt)|0,c=c+Math.imul(F,Ce)|0,k=k+Math.imul(F,tt)|0,m=m+Math.imul(T,Te)|0,c=c+Math.imul(T,We)|0,c=c+Math.imul(P,Te)|0,k=k+Math.imul(P,We)|0;var Si=(b+m|0)+((c&8191)<<13)|0;b=(k+(c>>>13)|0)+(Si>>>26)|0,Si&=67108863,m=Math.imul(me,ye),c=Math.imul(me,Ke),c=c+Math.imul(Pe,ye)|0,k=Math.imul(Pe,Ke),m=m+Math.imul(we,be)|0,c=c+Math.imul(we,Xe)|0,c=c+Math.imul(Ue,be)|0,k=k+Math.imul(Ue,Xe)|0,m=m+Math.imul(de,Me)|0,c=c+Math.imul(de,Je)|0,c=c+Math.imul(Ee,Me)|0,k=k+Math.imul(Ee,Je)|0,m=m+Math.imul(ce,ke)|0,c=c+Math.imul(ce,Qe)|0,c=c+Math.imul(ge,ke)|0,k=k+Math.imul(ge,Qe)|0,m=m+Math.imul(re,Ae)|0,c=c+Math.imul(re,Ye)|0,c=c+Math.imul(oe,Ae)|0,k=k+Math.imul(oe,Ye)|0,m=m+Math.imul(G,Se)|0,c=c+Math.imul(G,et)|0,c=c+Math.imul(z,Se)|0,k=k+Math.imul(z,et)|0,m=m+Math.imul($,Ce)|0,c=c+Math.imul($,tt)|0,c=c+Math.imul(U,Ce)|0,k=k+Math.imul(U,tt)|0,m=m+Math.imul(q,Te)|0,c=c+Math.imul(q,We)|0,c=c+Math.imul(F,Te)|0,k=k+Math.imul(F,We)|0;var Ci=(b+m|0)+((c&8191)<<13)|0;b=(k+(c>>>13)|0)+(Ci>>>26)|0,Ci&=67108863,m=Math.imul(me,be),c=Math.imul(me,Xe),c=c+Math.imul(Pe,be)|0,k=Math.imul(Pe,Xe),m=m+Math.imul(we,Me)|0,c=c+Math.imul(we,Je)|0,c=c+Math.imul(Ue,Me)|0,k=k+Math.imul(Ue,Je)|0,m=m+Math.imul(de,ke)|0,c=c+Math.imul(de,Qe)|0,c=c+Math.imul(Ee,ke)|0,k=k+Math.imul(Ee,Qe)|0,m=m+Math.imul(ce,Ae)|0,c=c+Math.imul(ce,Ye)|0,c=c+Math.imul(ge,Ae)|0,k=k+Math.imul(ge,Ye)|0,m=m+Math.imul(re,Se)|0,c=c+Math.imul(re,et)|0,c=c+Math.imul(oe,Se)|0,k=k+Math.imul(oe,et)|0,m=m+Math.imul(G,Ce)|0,c=c+Math.imul(G,tt)|0,c=c+Math.imul(z,Ce)|0,k=k+Math.imul(z,tt)|0,m=m+Math.imul($,Te)|0,c=c+Math.imul($,We)|0,c=c+Math.imul(U,Te)|0,k=k+Math.imul(U,We)|0;var Ti=(b+m|0)+((c&8191)<<13)|0;b=(k+(c>>>13)|0)+(Ti>>>26)|0,Ti&=67108863,m=Math.imul(me,Me),c=Math.imul(me,Je),c=c+Math.imul(Pe,Me)|0,k=Math.imul(Pe,Je),m=m+Math.imul(we,ke)|0,c=c+Math.imul(we,Qe)|0,c=c+Math.imul(Ue,ke)|0,k=k+Math.imul(Ue,Qe)|0,m=m+Math.imul(de,Ae)|0,c=c+Math.imul(de,Ye)|0,c=c+Math.imul(Ee,Ae)|0,k=k+Math.imul(Ee,Ye)|0,m=m+Math.imul(ce,Se)|0,c=c+Math.imul(ce,et)|0,c=c+Math.imul(ge,Se)|0,k=k+Math.imul(ge,et)|0,m=m+Math.imul(re,Ce)|0,c=c+Math.imul(re,tt)|0,c=c+Math.imul(oe,Ce)|0,k=k+Math.imul(oe,tt)|0,m=m+Math.imul(G,Te)|0,c=c+Math.imul(G,We)|0,c=c+Math.imul(z,Te)|0,k=k+Math.imul(z,We)|0;var Ei=(b+m|0)+((c&8191)<<13)|0;b=(k+(c>>>13)|0)+(Ei>>>26)|0,Ei&=67108863,m=Math.imul(me,ke),c=Math.imul(me,Qe),c=c+Math.imul(Pe,ke)|0,k=Math.imul(Pe,Qe),m=m+Math.imul(we,Ae)|0,c=c+Math.imul(we,Ye)|0,c=c+Math.imul(Ue,Ae)|0,k=k+Math.imul(Ue,Ye)|0,m=m+Math.imul(de,Se)|0,c=c+Math.imul(de,et)|0,c=c+Math.imul(Ee,Se)|0,k=k+Math.imul(Ee,et)|0,m=m+Math.imul(ce,Ce)|0,c=c+Math.imul(ce,tt)|0,c=c+Math.imul(ge,Ce)|0,k=k+Math.imul(ge,tt)|0,m=m+Math.imul(re,Te)|0,c=c+Math.imul(re,We)|0,c=c+Math.imul(oe,Te)|0,k=k+Math.imul(oe,We)|0;var xi=(b+m|0)+((c&8191)<<13)|0;b=(k+(c>>>13)|0)+(xi>>>26)|0,xi&=67108863,m=Math.imul(me,Ae),c=Math.imul(me,Ye),c=c+Math.imul(Pe,Ae)|0,k=Math.imul(Pe,Ye),m=m+Math.imul(we,Se)|0,c=c+Math.imul(we,et)|0,c=c+Math.imul(Ue,Se)|0,k=k+Math.imul(Ue,et)|0,m=m+Math.imul(de,Ce)|0,c=c+Math.imul(de,tt)|0,c=c+Math.imul(Ee,Ce)|0,k=k+Math.imul(Ee,tt)|0,m=m+Math.imul(ce,Te)|0,c=c+Math.imul(ce,We)|0,c=c+Math.imul(ge,Te)|0,k=k+Math.imul(ge,We)|0;var Ii=(b+m|0)+((c&8191)<<13)|0;b=(k+(c>>>13)|0)+(Ii>>>26)|0,Ii&=67108863,m=Math.imul(me,Se),c=Math.imul(me,et),c=c+Math.imul(Pe,Se)|0,k=Math.imul(Pe,et),m=m+Math.imul(we,Ce)|0,c=c+Math.imul(we,tt)|0,c=c+Math.imul(Ue,Ce)|0,k=k+Math.imul(Ue,tt)|0,m=m+Math.imul(de,Te)|0,c=c+Math.imul(de,We)|0,c=c+Math.imul(Ee,Te)|0,k=k+Math.imul(Ee,We)|0;var Pi=(b+m|0)+((c&8191)<<13)|0;b=(k+(c>>>13)|0)+(Pi>>>26)|0,Pi&=67108863,m=Math.imul(me,Ce),c=Math.imul(me,tt),c=c+Math.imul(Pe,Ce)|0,k=Math.imul(Pe,tt),m=m+Math.imul(we,Te)|0,c=c+Math.imul(we,We)|0,c=c+Math.imul(Ue,Te)|0,k=k+Math.imul(Ue,We)|0;var Oi=(b+m|0)+((c&8191)<<13)|0;b=(k+(c>>>13)|0)+(Oi>>>26)|0,Oi&=67108863,m=Math.imul(me,Te),c=Math.imul(me,We),c=c+Math.imul(Pe,Te)|0,k=Math.imul(Pe,We);var qr=(b+m|0)+((c&8191)<<13)|0;return b=(k+(c>>>13)|0)+(qr>>>26)|0,qr&=67108863,M[0]=mi,M[1]=_i,M[2]=gi,M[3]=wi,M[4]=vi,M[5]=yi,M[6]=bi,M[7]=Mi,M[8]=ki,M[9]=Ai,M[10]=Si,M[11]=Ci,M[12]=Ti,M[13]=Ei,M[14]=xi,M[15]=Ii,M[16]=Pi,M[17]=Oi,M[18]=qr,b!==0&&(M[19]=b,h.length++),h};Math.imul||(V=j);function J(p,s,u){u.negative=s.negative^p.negative,u.length=p.length+s.length;for(var h=0,_=0,w=0;w<u.length-1;w++){var M=_;_=0;for(var b=h&67108863,m=Math.min(w,s.length-1),c=Math.max(0,w-p.length+1);c<=m;c++){var k=w-c,Z=p.words[k]|0,W=s.words[c]|0,Q=Z*W,ie=Q&67108863;M=M+(Q/67108864|0)|0,ie=ie+b|0,b=ie&67108863,M=M+(ie>>>26)|0,_+=M>>>26,M&=67108863}u.words[w]=b,h=M,M=_}return h!==0?u.words[w]=h:u.length--,u._strip()}function Y(p,s,u){return J(p,s,u)}a.prototype.mulTo=function(s,u){var h,_=this.length+s.length;return this.length===10&&s.length===10?h=V(this,s,u):_<63?h=j(this,s,u):_<1024?h=J(this,s,u):h=Y(this,s,u),h},a.prototype.mul=function(s){var u=new a(null);return u.words=new Array(this.length+s.length),this.mulTo(s,u)},a.prototype.mulf=function(s){var u=new a(null);return u.words=new Array(this.length+s.length),Y(this,s,u)},a.prototype.imul=function(s){return this.clone().mulTo(s,this)},a.prototype.imuln=function(s){var u=s<0;u&&(s=-s),n(typeof s=="number"),n(s<67108864);for(var h=0,_=0;_<this.length;_++){var w=(this.words[_]|0)*s,M=(w&67108863)+(h&67108863);h>>=26,h+=w/67108864|0,h+=M>>>26,this.words[_]=M&67108863}return h!==0&&(this.words[_]=h,this.length++),this.length=s===0?1:this.length,u?this.ineg():this},a.prototype.muln=function(s){return this.clone().imuln(s)},a.prototype.sqr=function(){return this.mul(this)},a.prototype.isqr=function(){return this.imul(this.clone())},a.prototype.pow=function(s){var u=R(s);if(u.length===0)return new a(1);for(var h=this,_=0;_<u.length&&u[_]===0;_++,h=h.sqr());if(++_<u.length)for(var w=h.sqr();_<u.length;_++,w=w.sqr())u[_]!==0&&(h=h.mul(w));return h},a.prototype.iushln=function(s){n(typeof s=="number"&&s>=0);var u=s%26,h=(s-u)/26,_=67108863>>>26-u<<26-u,w;if(u!==0){var M=0;for(w=0;w<this.length;w++){var b=this.words[w]&_,m=(this.words[w]|0)-b<<u;this.words[w]=m|M,M=b>>>26-u}M&&(this.words[w]=M,this.length++)}if(h!==0){for(w=this.length-1;w>=0;w--)this.words[w+h]=this.words[w];for(w=0;w<h;w++)this.words[w]=0;this.length+=h}return this._strip()},a.prototype.ishln=function(s){return n(this.negative===0),this.iushln(s)},a.prototype.iushrn=function(s,u,h){n(typeof s=="number"&&s>=0);var _;u?_=(u-u%26)/26:_=0;var w=s%26,M=Math.min((s-w)/26,this.length),b=67108863^67108863>>>w<<w,m=h;if(_-=M,_=Math.max(0,_),m){for(var c=0;c<M;c++)m.words[c]=this.words[c];m.length=M}if(M!==0)if(this.length>M)for(this.length-=M,c=0;c<this.length;c++)this.words[c]=this.words[c+M];else this.words[0]=0,this.length=1;var k=0;for(c=this.length-1;c>=0&&(k!==0||c>=_);c--){var Z=this.words[c]|0;this.words[c]=k<<26-w|Z>>>w,k=Z&b}return m&&k!==0&&(m.words[m.length++]=k),this.length===0&&(this.words[0]=0,this.length=1),this._strip()},a.prototype.ishrn=function(s,u,h){return n(this.negative===0),this.iushrn(s,u,h)},a.prototype.shln=function(s){return this.clone().ishln(s)},a.prototype.ushln=function(s){return this.clone().iushln(s)},a.prototype.shrn=function(s){return this.clone().ishrn(s)},a.prototype.ushrn=function(s){return this.clone().iushrn(s)},a.prototype.testn=function(s){n(typeof s=="number"&&s>=0);var u=s%26,h=(s-u)/26,_=1<<u;if(this.length<=h)return!1;var w=this.words[h];return!!(w&_)},a.prototype.imaskn=function(s){n(typeof s=="number"&&s>=0);var u=s%26,h=(s-u)/26;if(n(this.negative===0,"imaskn works only with positive numbers"),this.length<=h)return this;if(u!==0&&h++,this.length=Math.min(h,this.length),u!==0){var _=67108863^67108863>>>u<<u;this.words[this.length-1]&=_}return this._strip()},a.prototype.maskn=function(s){return this.clone().imaskn(s)},a.prototype.iaddn=function(s){return n(typeof s=="number"),n(s<67108864),s<0?this.isubn(-s):this.negative!==0?this.length===1&&(this.words[0]|0)<=s?(this.words[0]=s-(this.words[0]|0),this.negative=0,this):(this.negative=0,this.isubn(s),this.negative=1,this):this._iaddn(s)},a.prototype._iaddn=function(s){this.words[0]+=s;for(var u=0;u<this.length&&this.words[u]>=67108864;u++)this.words[u]-=67108864,u===this.length-1?this.words[u+1]=1:this.words[u+1]++;return this.length=Math.max(this.length,u+1),this},a.prototype.isubn=function(s){if(n(typeof s=="number"),n(s<67108864),s<0)return this.iaddn(-s);if(this.negative!==0)return this.negative=0,this.iaddn(s),this.negative=1,this;if(this.words[0]-=s,this.length===1&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var u=0;u<this.length&&this.words[u]<0;u++)this.words[u]+=67108864,this.words[u+1]-=1;return this._strip()},a.prototype.addn=function(s){return this.clone().iaddn(s)},a.prototype.subn=function(s){return this.clone().isubn(s)},a.prototype.iabs=function(){return this.negative=0,this},a.prototype.abs=function(){return this.clone().iabs()},a.prototype._ishlnsubmul=function(s,u,h){var _=s.length+h,w;this._expand(_);var M,b=0;for(w=0;w<s.length;w++){M=(this.words[w+h]|0)+b;var m=(s.words[w]|0)*u;M-=m&67108863,b=(M>>26)-(m/67108864|0),this.words[w+h]=M&67108863}for(;w<this.length-h;w++)M=(this.words[w+h]|0)+b,b=M>>26,this.words[w+h]=M&67108863;if(b===0)return this._strip();for(n(b===-1),b=0,w=0;w<this.length;w++)M=-(this.words[w]|0)+b,b=M>>26,this.words[w]=M&67108863;return this.negative=1,this._strip()},a.prototype._wordDiv=function(s,u){var h=this.length-s.length,_=this.clone(),w=s,M=w.words[w.length-1]|0,b=this._countBits(M);h=26-b,h!==0&&(w=w.ushln(h),_.iushln(h),M=w.words[w.length-1]|0);var m=_.length-w.length,c;if(u!=="mod"){c=new a(null),c.length=m+1,c.words=new Array(c.length);for(var k=0;k<c.length;k++)c.words[k]=0}var Z=_.clone()._ishlnsubmul(w,1,m);Z.negative===0&&(_=Z,c&&(c.words[m]=1));for(var W=m-1;W>=0;W--){var Q=(_.words[w.length+W]|0)*67108864+(_.words[w.length+W-1]|0);for(Q=Math.min(Q/M|0,67108863),_._ishlnsubmul(w,Q,W);_.negative!==0;)Q--,_.negative=0,_._ishlnsubmul(w,1,W),_.isZero()||(_.negative^=1);c&&(c.words[W]=Q)}return c&&c._strip(),_._strip(),u!=="div"&&h!==0&&_.iushrn(h),{div:c||null,mod:_}},a.prototype.divmod=function(s,u,h){if(n(!s.isZero()),this.isZero())return{div:new a(0),mod:new a(0)};var _,w,M;return this.negative!==0&&s.negative===0?(M=this.neg().divmod(s,u),u!=="mod"&&(_=M.div.neg()),u!=="div"&&(w=M.mod.neg(),h&&w.negative!==0&&w.iadd(s)),{div:_,mod:w}):this.negative===0&&s.negative!==0?(M=this.divmod(s.neg(),u),u!=="mod"&&(_=M.div.neg()),{div:_,mod:M.mod}):(this.negative&s.negative)!==0?(M=this.neg().divmod(s.neg(),u),u!=="div"&&(w=M.mod.neg(),h&&w.negative!==0&&w.isub(s)),{div:M.div,mod:w}):s.length>this.length||this.cmp(s)<0?{div:new a(0),mod:this}:s.length===1?u==="div"?{div:this.divn(s.words[0]),mod:null}:u==="mod"?{div:null,mod:new a(this.modrn(s.words[0]))}:{div:this.divn(s.words[0]),mod:new a(this.modrn(s.words[0]))}:this._wordDiv(s,u)},a.prototype.div=function(s){return this.divmod(s,"div",!1).div},a.prototype.mod=function(s){return this.divmod(s,"mod",!1).mod},a.prototype.umod=function(s){return this.divmod(s,"mod",!0).mod},a.prototype.divRound=function(s){var u=this.divmod(s);if(u.mod.isZero())return u.div;var h=u.div.negative!==0?u.mod.isub(s):u.mod,_=s.ushrn(1),w=s.andln(1),M=h.cmp(_);return M<0||w===1&&M===0?u.div:u.div.negative!==0?u.div.isubn(1):u.div.iaddn(1)},a.prototype.modrn=function(s){var u=s<0;u&&(s=-s),n(s<=67108863);for(var h=(1<<26)%s,_=0,w=this.length-1;w>=0;w--)_=(h*_+(this.words[w]|0))%s;return u?-_:_},a.prototype.modn=function(s){return this.modrn(s)},a.prototype.idivn=function(s){var u=s<0;u&&(s=-s),n(s<=67108863);for(var h=0,_=this.length-1;_>=0;_--){var w=(this.words[_]|0)+h*67108864;this.words[_]=w/s|0,h=w%s}return this._strip(),u?this.ineg():this},a.prototype.divn=function(s){return this.clone().idivn(s)},a.prototype.egcd=function(s){n(s.negative===0),n(!s.isZero());var u=this,h=s.clone();u.negative!==0?u=u.umod(s):u=u.clone();for(var _=new a(1),w=new a(0),M=new a(0),b=new a(1),m=0;u.isEven()&&h.isEven();)u.iushrn(1),h.iushrn(1),++m;for(var c=h.clone(),k=u.clone();!u.isZero();){for(var Z=0,W=1;(u.words[0]&W)===0&&Z<26;++Z,W<<=1);if(Z>0)for(u.iushrn(Z);Z-- >0;)(_.isOdd()||w.isOdd())&&(_.iadd(c),w.isub(k)),_.iushrn(1),w.iushrn(1);for(var Q=0,ie=1;(h.words[0]&ie)===0&&Q<26;++Q,ie<<=1);if(Q>0)for(h.iushrn(Q);Q-- >0;)(M.isOdd()||b.isOdd())&&(M.iadd(c),b.isub(k)),M.iushrn(1),b.iushrn(1);u.cmp(h)>=0?(u.isub(h),_.isub(M),w.isub(b)):(h.isub(u),M.isub(_),b.isub(w))}return{a:M,b,gcd:h.iushln(m)}},a.prototype._invmp=function(s){n(s.negative===0),n(!s.isZero());var u=this,h=s.clone();u.negative!==0?u=u.umod(s):u=u.clone();for(var _=new a(1),w=new a(0),M=h.clone();u.cmpn(1)>0&&h.cmpn(1)>0;){for(var b=0,m=1;(u.words[0]&m)===0&&b<26;++b,m<<=1);if(b>0)for(u.iushrn(b);b-- >0;)_.isOdd()&&_.iadd(M),_.iushrn(1);for(var c=0,k=1;(h.words[0]&k)===0&&c<26;++c,k<<=1);if(c>0)for(h.iushrn(c);c-- >0;)w.isOdd()&&w.iadd(M),w.iushrn(1);u.cmp(h)>=0?(u.isub(h),_.isub(w)):(h.isub(u),w.isub(_))}var Z;return u.cmpn(1)===0?Z=_:Z=w,Z.cmpn(0)<0&&Z.iadd(s),Z},a.prototype.gcd=function(s){if(this.isZero())return s.abs();if(s.isZero())return this.abs();var u=this.clone(),h=s.clone();u.negative=0,h.negative=0;for(var _=0;u.isEven()&&h.isEven();_++)u.iushrn(1),h.iushrn(1);do{for(;u.isEven();)u.iushrn(1);for(;h.isEven();)h.iushrn(1);var w=u.cmp(h);if(w<0){var M=u;u=h,h=M}else if(w===0||h.cmpn(1)===0)break;u.isub(h)}while(!0);return h.iushln(_)},a.prototype.invm=function(s){return this.egcd(s).a.umod(s)},a.prototype.isEven=function(){return(this.words[0]&1)===0},a.prototype.isOdd=function(){return(this.words[0]&1)===1},a.prototype.andln=function(s){return this.words[0]&s},a.prototype.bincn=function(s){n(typeof s=="number");var u=s%26,h=(s-u)/26,_=1<<u;if(this.length<=h)return this._expand(h+1),this.words[h]|=_,this;for(var w=_,M=h;w!==0&&M<this.length;M++){var b=this.words[M]|0;b+=w,w=b>>>26,b&=67108863,this.words[M]=b}return w!==0&&(this.words[M]=w,this.length++),this},a.prototype.isZero=function(){return this.length===1&&this.words[0]===0},a.prototype.cmpn=function(s){var u=s<0;if(this.negative!==0&&!u)return-1;if(this.negative===0&&u)return 1;this._strip();var h;if(this.length>1)h=1;else{u&&(s=-s),n(s<=67108863,"Number is too big");var _=this.words[0]|0;h=_===s?0:_<s?-1:1}return this.negative!==0?-h|0:h},a.prototype.cmp=function(s){if(this.negative!==0&&s.negative===0)return-1;if(this.negative===0&&s.negative!==0)return 1;var u=this.ucmp(s);return this.negative!==0?-u|0:u},a.prototype.ucmp=function(s){if(this.length>s.length)return 1;if(this.length<s.length)return-1;for(var u=0,h=this.length-1;h>=0;h--){var _=this.words[h]|0,w=s.words[h]|0;if(_!==w){_<w?u=-1:_>w&&(u=1);break}}return u},a.prototype.gtn=function(s){return this.cmpn(s)===1},a.prototype.gt=function(s){return this.cmp(s)===1},a.prototype.gten=function(s){return this.cmpn(s)>=0},a.prototype.gte=function(s){return this.cmp(s)>=0},a.prototype.ltn=function(s){return this.cmpn(s)===-1},a.prototype.lt=function(s){return this.cmp(s)===-1},a.prototype.lten=function(s){return this.cmpn(s)<=0},a.prototype.lte=function(s){return this.cmp(s)<=0},a.prototype.eqn=function(s){return this.cmpn(s)===0},a.prototype.eq=function(s){return this.cmp(s)===0},a.red=function(s){return new O(s)},a.prototype.toRed=function(s){return n(!this.red,"Already a number in reduction context"),n(this.negative===0,"red works only with positives"),s.convertTo(this)._forceRed(s)},a.prototype.fromRed=function(){return n(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},a.prototype._forceRed=function(s){return this.red=s,this},a.prototype.forceRed=function(s){return n(!this.red,"Already a number in reduction context"),this._forceRed(s)},a.prototype.redAdd=function(s){return n(this.red,"redAdd works only with red numbers"),this.red.add(this,s)},a.prototype.redIAdd=function(s){return n(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,s)},a.prototype.redSub=function(s){return n(this.red,"redSub works only with red numbers"),this.red.sub(this,s)},a.prototype.redISub=function(s){return n(this.red,"redISub works only with red numbers"),this.red.isub(this,s)},a.prototype.redShl=function(s){return n(this.red,"redShl works only with red numbers"),this.red.shl(this,s)},a.prototype.redMul=function(s){return n(this.red,"redMul works only with red numbers"),this.red._verify2(this,s),this.red.mul(this,s)},a.prototype.redIMul=function(s){return n(this.red,"redMul works only with red numbers"),this.red._verify2(this,s),this.red.imul(this,s)},a.prototype.redSqr=function(){return n(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},a.prototype.redISqr=function(){return n(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},a.prototype.redSqrt=function(){return n(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},a.prototype.redInvm=function(){return n(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},a.prototype.redNeg=function(){return n(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},a.prototype.redPow=function(s){return n(this.red&&!s.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,s)};var X={k256:null,p224:null,p192:null,p25519:null};function ee(p,s){this.name=p,this.p=new a(s,16),this.n=this.p.bitLength(),this.k=new a(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}ee.prototype._tmp=function(){var s=new a(null);return s.words=new Array(Math.ceil(this.n/13)),s},ee.prototype.ireduce=function(s){var u=s,h;do this.split(u,this.tmp),u=this.imulK(u),u=u.iadd(this.tmp),h=u.bitLength();while(h>this.n);var _=h<this.n?-1:u.ucmp(this.p);return _===0?(u.words[0]=0,u.length=1):_>0?u.isub(this.p):u.strip!==void 0?u.strip():u._strip(),u},ee.prototype.split=function(s,u){s.iushrn(this.n,0,u)},ee.prototype.imulK=function(s){return s.imul(this.k)};function C(){ee.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}o(C,ee),C.prototype.split=function(s,u){for(var h=4194303,_=Math.min(s.length,9),w=0;w<_;w++)u.words[w]=s.words[w];if(u.length=_,s.length<=9){s.words[0]=0,s.length=1;return}var M=s.words[9];for(u.words[u.length++]=M&h,w=10;w<s.length;w++){var b=s.words[w]|0;s.words[w-10]=(b&h)<<4|M>>>22,M=b}M>>>=22,s.words[w-10]=M,M===0&&s.length>10?s.length-=10:s.length-=9},C.prototype.imulK=function(s){s.words[s.length]=0,s.words[s.length+1]=0,s.length+=2;for(var u=0,h=0;h<s.length;h++){var _=s.words[h]|0;u+=_*977,s.words[h]=u&67108863,u=_*64+(u/67108864|0)}return s.words[s.length-1]===0&&(s.length--,s.words[s.length-1]===0&&s.length--),s};function E(){ee.call(this,"p224","ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001")}o(E,ee);function N(){ee.call(this,"p192","ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff")}o(N,ee);function D(){ee.call(this,"25519","7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed")}o(D,ee),D.prototype.imulK=function(s){for(var u=0,h=0;h<s.length;h++){var _=(s.words[h]|0)*19+u,w=_&67108863;_>>>=26,s.words[h]=w,u=_}return u!==0&&(s.words[s.length++]=u),s},a._prime=function(s){if(X[s])return X[s];var u;if(s==="k256")u=new C;else if(s==="p224")u=new E;else if(s==="p192")u=new N;else if(s==="p25519")u=new D;else throw new Error("Unknown prime "+s);return X[s]=u,u};function O(p){if(typeof p=="string"){var s=a._prime(p);this.m=s.p,this.prime=s}else n(p.gtn(1),"modulus must be greater than 1"),this.m=p,this.prime=null}O.prototype._verify1=function(s){n(s.negative===0,"red works only with positives"),n(s.red,"red works only with red numbers")},O.prototype._verify2=function(s,u){n((s.negative|u.negative)===0,"red works only with positives"),n(s.red&&s.red===u.red,"red works only with red numbers")},O.prototype.imod=function(s){return this.prime?this.prime.ireduce(s)._forceRed(this):(v(s,s.umod(this.m)._forceRed(this)),s)},O.prototype.neg=function(s){return s.isZero()?s.clone():this.m.sub(s)._forceRed(this)},O.prototype.add=function(s,u){this._verify2(s,u);var h=s.add(u);return h.cmp(this.m)>=0&&h.isub(this.m),h._forceRed(this)},O.prototype.iadd=function(s,u){this._verify2(s,u);var h=s.iadd(u);return h.cmp(this.m)>=0&&h.isub(this.m),h},O.prototype.sub=function(s,u){this._verify2(s,u);var h=s.sub(u);return h.cmpn(0)<0&&h.iadd(this.m),h._forceRed(this)},O.prototype.isub=function(s,u){this._verify2(s,u);var h=s.isub(u);return h.cmpn(0)<0&&h.iadd(this.m),h},O.prototype.shl=function(s,u){return this._verify1(s),this.imod(s.ushln(u))},O.prototype.imul=function(s,u){return this._verify2(s,u),this.imod(s.imul(u))},O.prototype.mul=function(s,u){return this._verify2(s,u),this.imod(s.mul(u))},O.prototype.isqr=function(s){return this.imul(s,s.clone())},O.prototype.sqr=function(s){return this.mul(s,s)},O.prototype.sqrt=function(s){if(s.isZero())return s.clone();var u=this.m.andln(3);if(n(u%2===1),u===3){var h=this.m.add(new a(1)).iushrn(2);return this.pow(s,h)}for(var _=this.m.subn(1),w=0;!_.isZero()&&_.andln(1)===0;)w++,_.iushrn(1);n(!_.isZero());var M=new a(1).toRed(this),b=M.redNeg(),m=this.m.subn(1).iushrn(1),c=this.m.bitLength();for(c=new a(2*c*c).toRed(this);this.pow(c,m).cmp(b)!==0;)c.redIAdd(b);for(var k=this.pow(c,_),Z=this.pow(s,_.addn(1).iushrn(1)),W=this.pow(s,_),Q=w;W.cmp(M)!==0;){for(var ie=W,T=0;ie.cmp(M)!==0;T++)ie=ie.redSqr();n(T<Q);var P=this.pow(k,new a(1).iushln(Q-T-1));Z=Z.redMul(P),k=P.redSqr(),W=W.redMul(k),Q=T}return Z},O.prototype.invm=function(s){var u=s._invmp(this.m);return u.negative!==0?(u.negative=0,this.imod(u).redNeg()):this.imod(u)},O.prototype.pow=function(s,u){if(u.isZero())return new a(1).toRed(this);if(u.cmpn(1)===0)return s.clone();var h=4,_=new Array(1<<h);_[0]=new a(1).toRed(this),_[1]=s;for(var w=2;w<_.length;w++)_[w]=this.mul(_[w-1],s);var M=_[0],b=0,m=0,c=u.bitLength()%26;for(c===0&&(c=26),w=u.length-1;w>=0;w--){for(var k=u.words[w],Z=c-1;Z>=0;Z--){var W=k>>Z&1;if(M!==_[0]&&(M=this.sqr(M)),W===0&&b===0){m=0;continue}b<<=1,b|=W,m++,!(m!==h&&(w!==0||Z!==0))&&(M=this.mul(M,_[b]),m=0,b=0)}c=26}return M},O.prototype.convertTo=function(s){var u=s.umod(this.m);return u===s?u.clone():u},O.prototype.convertFrom=function(s){var u=s.clone();return u.red=null,u},a.mont=function(s){return new A(s)};function A(p){O.call(this,p),this.shift=this.m.bitLength(),this.shift%26!==0&&(this.shift+=26-this.shift%26),this.r=new a(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}o(A,O),A.prototype.convertTo=function(s){return this.imod(s.ushln(this.shift))},A.prototype.convertFrom=function(s){var u=this.imod(s.mul(this.rinv));return u.red=null,u},A.prototype.imul=function(s,u){if(s.isZero()||u.isZero())return s.words[0]=0,s.length=1,s;var h=s.imul(u),_=h.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),w=h.isub(_).iushrn(this.shift),M=w;return w.cmp(this.m)>=0?M=w.isub(this.m):w.cmpn(0)<0&&(M=w.iadd(this.m)),M._forceRed(this)},A.prototype.mul=function(s,u){if(s.isZero()||u.isZero())return new a(0)._forceRed(this);var h=s.mul(u),_=h.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),w=h.isub(_).iushrn(this.shift),M=w;return w.cmp(this.m)>=0?M=w.isub(this.m):w.cmpn(0)<0&&(M=w.iadd(this.m)),M._forceRed(this)},A.prototype.invm=function(s){var u=this.imod(s._invmp(this.m).mul(this.r2));return u._forceRed(this)}})(typeof e>"u"||e,t)}}),pt=Jn(Qn()),si=Jn(Qn());function Ao(t,e){switch(t){case 1e3:return"Number too large"+(e?`: ${e}`:"");case 1001:return"Rate limit exceeded"+(e?`: ${e}`:"");case 1002:return"Insufficient liquidity"+(e?`: ${e}`:"");case 1003:return"HoneyPot scam detected"+(e?`: ${e}`:"");case 1005:return"Forbidden"+(e?`: ${e}`:"");case 1004:return"Bad request"+(e?`: ${e}`:"");case 1006:return"Internal server error"+(e?`: ${e}`:"");case 1007:return"Not found route"+(e?`: ${e}`:"");case 1008:return"Service unavailable"+(e?`: ${e}`:"");case 1009:return"Unsupported API version"+(e?`: ${e}`:"");case 1010:return"Detected HoneyPot Scam"+(e?`: ${e}`:"");case 400:return"Unknown error"+(e?`: ${e}`:"");default:return"Unknown error"}}function Rc(t,...e){let i=Array.isArray(e[e.length-1])?e.pop():[],n=[t,...e].filter(Boolean).join("::");return i&&i.length&&(n+=`<${i.join(", ")}>`),n}function So(t){try{let e=t.replace(/\s/g,""),r=e.match(/(<.+>)$/)?.[0]?.match(/(\w+::\w+::\w+)(?:<.*?>(?!>))?/g);if(r){e=e.slice(0,e.indexOf("<"));let d={...So(e),type_arguments:r.map(f=>So(f).source_address)};return d.type_arguments=d.type_arguments.map(f=>ks.isSuiCoin(f)?f:So(f).source_address),d.source_address=Rc(d.full_address,d.type_arguments),d}let n=e.split("::"),a={full_address:e,address:e===Kc||e===jm?"0x2":Cm(n[0]),module:n[1],name:n[2],type_arguments:[],source_address:""};return a.full_address=`${a.address}::${a.module}::${a.name}`,a.source_address=Rc(a.full_address,a.type_arguments),a}catch{return{full_address:t,address:"",module:"",name:"",type_arguments:[],source_address:t}}}function Nc(t){return So(t).source_address}var Dm="0x2::coin::Coin",Lm=/^0x2::coin::Coin<(.+)>$/;var Kc="0x2::sui::SUI",jm="0x0000000000000000000000000000000000000000000000000000000000000002::sui::SUI";var ks=class Er{static getCoinTypeArg(e){let i=e.type.match(Lm);return i?i[1]:null}static isSUI(e){let i=Er.getCoinTypeArg(e);return i?Er.getCoinSymbol(i)==="SUI":!1}static getCoinSymbol(e){return e.substring(e.lastIndexOf(":")+1)}static getBalance(e){return BigInt(e.fields.balance)}static totalBalance(e,i){let r=BigInt(0);return e.forEach(n=>{i===n.coinAddress&&(r+=BigInt(n.balance))}),r}static getID(e){return e.fields.id.id}static getCoinTypeFromArg(e){return`${Dm}<${e}>`}static getCoinAssets(e,i){let r=[];return i.forEach(n=>{Nc(n.coinAddress)===Nc(e)&&r.push(n)}),r}static isSuiCoin(e){return So(e).full_address===Kc}static selectCoinObjectIdGreaterThanOrEqual(e,i,r=[]){let n=Er.selectCoinAssetGreaterThanOrEqual(e,i,r),o=n.selectedCoins.map(d=>d.coinObjectId),a=n.remainingCoins,l=n.selectedCoins.map(d=>d.balance.toString());return{objectArray:o,remainCoins:a,amountArray:l}}static selectCoinAssetGreaterThanOrEqual(e,i,r=[]){let n=Er.sortByBalance(e.filter(f=>!r.includes(f.coinObjectId))),o=Er.calculateTotalBalance(n);if(o<i)return{selectedCoins:[],remainingCoins:n};if(o===i)return{selectedCoins:n,remainingCoins:[]};let a=BigInt(0),l=[],d=[...n];for(;a<o;){let f=i-a,g=d.findIndex(y=>y.balance>=f);if(g!==-1){l.push(d[g]),d.splice(g,1);break}let v=d.pop();v.balance>0&&(l.push(v),a+=v.balance)}return{selectedCoins:Er.sortByBalance(l),remainingCoins:Er.sortByBalance(d)}}static sortByBalance(e){return e.sort((i,r)=>i.balance<r.balance?-1:i.balance>r.balance?1:0)}static sortByBalanceDes(e){return e.sort((i,r)=>i.balance>r.balance?-1:i.balance<r.balance?0:1)}static calculateTotalBalance(e){return e.reduce((i,r)=>i+r.balance,BigInt(0))}};function Yi(t){let e=t.indexOf("::");if(e===-1)return t;let i=t.substring(0,e),r=t.substring(e);if(!i.startsWith("0x"))return t;let n=i.substring(2);return n.length>64?t:`0x${n.padStart(64,"0")}${r}`}function Bm(t,e){t=Yi(t),e=Yi(e);let i=Math.min(t.length,e.length);for(let r=0;r<i;r++){if(t[r]>e[r])return!0;if(t[r]<e[r])return!1}return!0}var To=Jn(Qn()),cn=new To.default(0),Ay=new To.default(1),Fm=new To.default(2),Sy=Fm.pow(new To.default(128)),Cy=new To.default("18446744073709551615"),As="18446744073709551615";var qm="0xd7b0cfc33a3b46c0ae0e2584c44028385da11724d4c94ec5b21a78117c5c1ab9",Um="0x7a82ed4b00a8c68d751b6c0cbd4e989691daa4716a1cf4f875c2f9b28fb72f3a";var zn={AGGREGATOR_V3:"aggregator_v3"};var Es={Mainnet:"0xdeeb7a4662eec9f2f3def03fb937a663dddaa2e215b8078a284d026b7946c270::deep::DEEP",Testnet:"0x36dbef866a1d62bf7328989a10fb2f07d769f4ee587c0de4a0a256e57e0a58a8::deep::DEEP"},zt={DEFAULT_PYTH_URL:"https://hermes.pyth.network",PYTH_TIMEOUT:3e3,MAX_OVERLAY_FEE_RATE:.1,MAX_OVERLAY_FEE_RATE_NUMERATOR:1e5,FEE_RATE_MULTIPLIER:1e6,DEFAULT_OVERLAY_FEE_RECEIVER:"0x0",ERRORS:{SIGNER_REQUIRED:"Signer is required, but not provided.",INVALID_OVERLAY_FEE_RATE:"Overlay fee rate must be between 0 and 0.1",INVALID_SLIPPAGE:"Invalid slippage value. Must be between 0 and 1 (e.g., 0.01 represents 1% slippage)",NO_ROUTER_FOUND:"No router found",EMPTY_PATH:"Empty path",UNSUPPORTED_DEX:"Unsupported dex",PYTH_UNAVAILABLE:"All Pyth price nodes are unavailable. Cannot fetch price data. Please switch to or add new available Pyth nodes",QUOTE_ID_REQUIRED:"Quote ID is required",AGGREGATOR_V3_PACKAGE_REQUIRED:"Aggregator V3 package is required",PACKAGES_REQUIRED:"Packages are required",OVERLAY_FEE_RECEIVER_REQUIRED:"Overlay fee rate is set, but overlay fee receiver is not set"}},ct={FEE_DENOMINATOR:1e6,MAX_FEE_RATE:1e5,MAX_AMOUNT_IN:As,DEFAULT_PUBLISHED_AT:{Mainnet:"0xde5d696a79714ca5cb910b9aed99d41f67353abb00715ceaeb0663d57ee39640",Testnet:"0x61da681cf2af95cb214a71596b49e662290065536984ed7e06b47e701ef547e3"}},hu=1010405;function $m(t,e){let i=new Map;return t.packages&&(t.packages instanceof Map?i=t.packages:typeof t.packages=="object"&&Object.entries(t.packages).forEach(([r,n])=>{i.set(r,n)})),{quoteID:t.request_id||"",amountIn:new si.default(t.amount_in.toString()),amountOut:new si.default(t.amount_out.toString()),byAmountIn:e,insufficientLiquidity:!1,deviationRatio:t.deviation_ratio,packages:i,paths:t.paths.map(r=>({id:r.id,direction:r.direction,provider:r.provider,from:r.from,target:r.target,feeRate:r.fee_rate,amountIn:r.amount_in.toString(),amountOut:r.amount_out.toString(),version:r.version,publishedAt:r.published_at,extendedDetails:r.extended_details}))}}function Vm(t){let e=new Map;t.packages&&(t.packages instanceof Map?e=t.packages:typeof t.packages=="object"&&Object.entries(t.packages).forEach(([r,n])=>{e.set(r,n)}));let i=[];if(t.all_routes)for(let r of t.all_routes){let n={amountIn:new si.default(r.amount_in.toString()),amountOut:new si.default(r.amount_out.toString()),deviationRatio:r.deviation_ratio,paths:r.paths.map(o=>({id:o.id,direction:o.direction,provider:o.provider,from:o.from,target:o.target,feeRate:o.fee_rate,amountIn:o.amount_in.toString(),amountOut:o.amount_out.toString(),version:o.version,publishedAt:o.published_at,extendedDetails:o.extended_details}))};i.push(n)}return{quoteID:t.request_id||"",totalAmountOut:new si.default(t.total_amount_out?.toString()||"0"),allRoutes:i,packages:e,gas:t.gas}}async function Zm(t,e,i,r,n){let o;if(i.liquidityChanges&&i.liquidityChanges.length>0?o=await Wm(t,i):o=await Hm(t,e,i),!o)return null;if(!o.ok){let g=1004;return o.status===429&&(g=1001),{quoteID:"",amountIn:cn,amountOut:cn,paths:[],byAmountIn:i.byAmountIn,insufficientLiquidity:!1,deviationRatio:0,error:{code:g,msg:Ao(g)}}}let a=Ts.default.parse(await o.text());if(a.data!=null){let g=$m(a.data,i.byAmountIn);if(r>0&&n!=="0x0")if(i.byAmountIn){let v=g.amountOut.mul(new si.default(r)).div(new si.default(1e6));g.overlayFee=Number(v.toString()),g.amountOut=g.amountOut.sub(v)}else{let v=g.amountIn.mul(new si.default(r)).div(new si.default(1e6));g.overlayFee=Number(v.toString()),g.amountIn=g.amountIn.add(v)}return g.packages||(g.packages=new Map),g.packages.has("aggregator_v3")||g.packages.set("aggregator_v3","0x3864c7c59a4889fec05d1aae4bc9dba5a0e0940594b424fbed44cb3f6ac4c032"),g}let l=au(a.code),d=Ao(l,a.msg),f=d.includes("Insufficient liquidity");return{quoteID:"",amountIn:cn,amountOut:cn,paths:[],insufficientLiquidity:f,byAmountIn:i.byAmountIn,deviationRatio:0,error:{code:l,msg:d}}}async function Hm(t,e,i){try{let{from:r,target:n,amount:o,byAmountIn:a,depth:l,splitAlgorithm:d,splitFactor:f,splitCount:g,providers:v}=i,y=Yi(r),S=Yi(n),I=`${t}/find_routes?from=${y}&target=${S}&amount=${o.toString()}&by_amount_in=${a}`;return l&&(I+=`&depth=${l}`),d&&(I+=`&split_algorithm=${d}`),f&&(I+=`&split_factor=${f}`),g&&(I+=`&split_count=${g}`),v&&v.length>0&&(I+=`&providers=${v.join(",")}`),e.length>0&&(I+=`&apiKey=${e}`),I+=`&v=${hu}`,await fetch(I)}catch(r){return console.error(r),null}}async function Wm(t,e){let{from:i,target:r,amount:n,byAmountIn:o,depth:a,splitAlgorithm:l,splitFactor:d,splitCount:f,providers:g,liquidityChanges:v}=e,y=Yi(i),S=Yi(r),I=`${t}/find_routes`,x=g?.join(","),B={from:y,target:S,amount:Number(n.toString()),by_amount_in:o,depth:a,split_algorithm:l,split_factor:d,split_count:f,providers:x,liquidity_changes:v.map(R=>({pool:R.poolID,tick_lower:R.ticklower,tick_upper:R.tickUpper,delta_liquidity:R.deltaLiquidity})),v:hu};try{return await fetch(I,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(B)})}catch(R){return console.error("Error:",R),null}}async function Gm(t,e,i){try{let{target:r,byAmountIn:n,depth:o,providers:a,froms:l}=i,d=Yi(r),f=`${t}/multi_find_routes?target=${d}&by_amount_in=${n}`;o&&(f+=`&depth=${o}`),a&&a.length>0&&(f+=`&providers=${a.join(",")}`),e.length>0&&(f+=`&apiKey=${e}`),f+=`&v=${hu}`;let g=l.map(y=>({coin_type:Yi(y.coinType),amount:Number(y.amount.toString())}));f+=`&froms=${encodeURIComponent(JSON.stringify(g))}`;let v=await fetch(f);return console.log("response",v),v}catch(r){return console.error(r),null}}async function zm(t,e,i,r,n){let o=await Gm(t,e,i);if(!o)return null;if(!o.ok){let g=1004;return o.status===429&&(g=1001),{quoteID:"",totalAmountOut:cn,allRoutes:[],error:{code:g,msg:Ao(g)}}}if(!o.ok){let g=au(o.status),v=await o.text(),y=Ts.default.parse(v),S=Ao(g,y.msg);return{quoteID:"",totalAmountOut:cn,allRoutes:[],error:{code:g,msg:S}}}let a=await o.text(),l=Ts.default.parse(a);if(l.data!=null){console.log("data.data not null",l.data);let g=Vm(l.data);if(r>0&&n!=="0x0"&&i.byAmountIn){let v=g.totalAmountOut.mul(new si.default(r)).div(new si.default(1e6));g.totalAmountOut=g.totalAmountOut.sub(v);for(let y of g.allRoutes){let S=y.amountOut.mul(new si.default(r)).div(new si.default(1e6));y.amountOut=y.amountOut.sub(S)}}return g.packages||(g.packages=new Map),g}let d=au(l.code),f=Ao(d,l.msg);return{quoteID:"",totalAmountOut:cn,allRoutes:[],error:{code:d,msg:f}}}async function Km(t){let e=`${t}/deepbookv3_config`;try{return(await fetch(e)).json()}catch(i){return console.error("Error:",i),null}}function ys(t){let e=t.paths,i=e[0].from,r=e[e.length-1].target,n=[];for(let a of e)n.push({path:a,isLastUseOfIntermediateToken:!1});let o=new Map;for(let a=n.length-1;a>=0;a--){let{from:l}=n[a].path;o.has(l)||(o.set(l,!0),n[a].isLastUseOfIntermediateToken=!0)}return{quoteID:t.quoteID||"",amountIn:t.amountIn,amountOut:t.amountOut,byAmountIn:t.byAmountIn,flattenedPaths:n,fromCoinType:i,targetCoinType:r,packages:t.packages,totalDeepFee:t.totalDeepFee,error:t.error,overlayFee:t.overlayFee}}function au(t){switch(t){case 400:return 1004;case 403:return 1005;case 429:return 1001;case 4e3:return 1004;case 4030:return 1005;case 4040:return 1010;case 5e3:return 1002;case 5001:case 5010:return 1007;case 5030:return 1008;case 5040:return 1009;default:return 400}}var Os=(t=>(t[t.Mainnet=0]="Mainnet",t[t.Testnet=1]="Testnet",t))(Os||{});var Xm=Jn(Qn()),Kn=9e15,Or=1e9,uu="0123456789abcdef",xs="2.3025850929940456840179914546843642076011014886287729760333279009675726096773524802359972050895982983419677840422862486334095254650828067566662873690987816894829072083255546808437998948262331985283935053089653777326288461633662222876982198867465436674744042432743651550489343149393914796194044002221051017141748003688084012647080685567743216228355220114804663715659121373450747856947683463616792101806445070648000277502684916746550586856935673420670581136429224554405758925724208241314695689016758940256776311356919292033376587141660230105703089634572075440370847469940168269282808481184289314848524948644871927809676271275775397027668605952496716674183485704422507197965004714951050492214776567636938662976979522110718264549734772662425709429322582798502585509785265383207606726317164309505995087807523710333101197857547331541421808427543863591778117054309827482385045648019095610299291824318237525357709750539565187697510374970888692180205189339507238539205144634197265287286965110862571492198849978748873771345686209167058",Is="3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185950244594553469083026425223082533446850352619311881710100031378387528865875332083814206171776691473035982534904287554687311595628638823537875937519577818577805321712268066130019278766111959092164201989380952572010654858632789",lu={precision:20,rounding:4,modulo:1,toExpNeg:-7,toExpPos:21,minE:-Kn,maxE:Kn,crypto:!1},Xc,dr,Ze=!0,Rs="[DecimalError] ",Pr=Rs+"Invalid argument: ",Jc=Rs+"Precision limit exceeded",Qc=Rs+"crypto unavailable",Yc="[object Decimal]",Kt=Math.floor,Nt=Math.pow,Jm=/^0b([01]+(\.[01]*)?|\.[01]+)(p[+-]?\d+)?$/i,Qm=/^0x([0-9a-f]+(\.[0-9a-f]*)?|\.[0-9a-f]+)(p[+-]?\d+)?$/i,Ym=/^0o([0-7]+(\.[0-7]*)?|\.[0-7]+)(p[+-]?\d+)?$/i,ed=/^(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i,Fi=1e7,Be=7,e_=9007199254740991,t_=xs.length-1,cu=Is.length-1,ae={toStringTag:Yc};ae.absoluteValue=ae.abs=function(){var t=new this.constructor(this);return t.s<0&&(t.s=1),Re(t)};ae.ceil=function(){return Re(new this.constructor(this),this.e+1,2)};ae.clampedTo=ae.clamp=function(t,e){var i,r=this,n=r.constructor;if(t=new n(t),e=new n(e),!t.s||!e.s)return new n(NaN);if(t.gt(e))throw Error(Pr+e);return i=r.cmp(t),i<0?t:r.cmp(e)>0?e:new n(r)};ae.comparedTo=ae.cmp=function(t){var e,i,r,n,o=this,a=o.d,l=(t=new o.constructor(t)).d,d=o.s,f=t.s;if(!a||!l)return!d||!f?NaN:d!==f?d:a===l?0:!a^d<0?1:-1;if(!a[0]||!l[0])return a[0]?d:l[0]?-f:0;if(d!==f)return d;if(o.e!==t.e)return o.e>t.e^d<0?1:-1;for(r=a.length,n=l.length,e=0,i=r<n?r:n;e<i;++e)if(a[e]!==l[e])return a[e]>l[e]^d<0?1:-1;return r===n?0:r>n^d<0?1:-1};ae.cosine=ae.cos=function(){var t,e,i=this,r=i.constructor;return i.d?i.d[0]?(t=r.precision,e=r.rounding,r.precision=t+Math.max(i.e,i.sd())+Be,r.rounding=1,i=i_(r,od(r,i)),r.precision=t,r.rounding=e,Re(dr==2||dr==3?i.neg():i,t,e,!0)):new r(1):new r(NaN)};ae.cubeRoot=ae.cbrt=function(){var t,e,i,r,n,o,a,l,d,f,g=this,v=g.constructor;if(!g.isFinite()||g.isZero())return new v(g);for(Ze=!1,o=g.s*Nt(g.s*g,1/3),!o||Math.abs(o)==1/0?(i=qt(g.d),t=g.e,(o=(t-i.length+1)%3)&&(i+=o==1||o==-2?"0":"00"),o=Nt(i,1/3),t=Kt((t+1)/3)-(t%3==(t<0?-1:2)),o==1/0?i="5e"+t:(i=o.toExponential(),i=i.slice(0,i.indexOf("e")+1)+t),r=new v(i),r.s=g.s):r=new v(o.toString()),a=(t=v.precision)+3;;)if(l=r,d=l.times(l).times(l),f=d.plus(g),r=_t(f.plus(g).times(l),f.plus(d),a+2,1),qt(l.d).slice(0,a)===(i=qt(r.d)).slice(0,a))if(i=i.slice(a-3,a+1),i=="9999"||!n&&i=="4999"){if(!n&&(Re(l,t+1,0),l.times(l).times(l).eq(g))){r=l;break}a+=4,n=1}else{(!+i||!+i.slice(1)&&i.charAt(0)=="5")&&(Re(r,t+1,1),e=!r.times(r).times(r).eq(g));break}return Ze=!0,Re(r,t,v.rounding,e)};ae.decimalPlaces=ae.dp=function(){var t,e=this.d,i=NaN;if(e){if(t=e.length-1,i=(t-Kt(this.e/Be))*Be,t=e[t],t)for(;t%10==0;t/=10)i--;i<0&&(i=0)}return i};ae.dividedBy=ae.div=function(t){return _t(this,new this.constructor(t))};ae.dividedToIntegerBy=ae.divToInt=function(t){var e=this,i=e.constructor;return Re(_t(e,new i(t),0,1,1),i.precision,i.rounding)};ae.equals=ae.eq=function(t){return this.cmp(t)===0};ae.floor=function(){return Re(new this.constructor(this),this.e+1,3)};ae.greaterThan=ae.gt=function(t){return this.cmp(t)>0};ae.greaterThanOrEqualTo=ae.gte=function(t){var e=this.cmp(t);return e==1||e===0};ae.hyperbolicCosine=ae.cosh=function(){var t,e,i,r,n,o=this,a=o.constructor,l=new a(1);if(!o.isFinite())return new a(o.s?1/0:NaN);if(o.isZero())return l;i=a.precision,r=a.rounding,a.precision=i+Math.max(o.e,o.sd())+4,a.rounding=1,n=o.d.length,n<32?(t=Math.ceil(n/3),e=(1/Ds(4,t)).toString()):(t=16,e="2.3283064365386962890625e-10"),o=Xn(a,1,o.times(e),new a(1),!0);for(var d,f=t,g=new a(8);f--;)d=o.times(o),o=l.minus(d.times(g.minus(d.times(g))));return Re(o,a.precision=i,a.rounding=r,!0)};ae.hyperbolicSine=ae.sinh=function(){var t,e,i,r,n=this,o=n.constructor;if(!n.isFinite()||n.isZero())return new o(n);if(e=o.precision,i=o.rounding,o.precision=e+Math.max(n.e,n.sd())+4,o.rounding=1,r=n.d.length,r<3)n=Xn(o,2,n,n,!0);else{t=1.4*Math.sqrt(r),t=t>16?16:t|0,n=n.times(1/Ds(5,t)),n=Xn(o,2,n,n,!0);for(var a,l=new o(5),d=new o(16),f=new o(20);t--;)a=n.times(n),n=n.times(l.plus(a.times(d.times(a).plus(f))))}return o.precision=e,o.rounding=i,Re(n,e,i,!0)};ae.hyperbolicTangent=ae.tanh=function(){var t,e,i=this,r=i.constructor;return i.isFinite()?i.isZero()?new r(i):(t=r.precision,e=r.rounding,r.precision=t+7,r.rounding=1,_t(i.sinh(),i.cosh(),r.precision=t,r.rounding=e)):new r(i.s)};ae.inverseCosine=ae.acos=function(){var t=this,e=t.constructor,i=t.abs().cmp(1),r=e.precision,n=e.rounding;return i!==-1?i===0?t.isNeg()?Qi(e,r,n):new e(0):new e(NaN):t.isZero()?Qi(e,r+4,n).times(.5):(e.precision=r+6,e.rounding=1,t=new e(1).minus(t).div(t.plus(1)).sqrt().atan(),e.precision=r,e.rounding=n,t.times(2))};ae.inverseHyperbolicCosine=ae.acosh=function(){var t,e,i=this,r=i.constructor;return i.lte(1)?new r(i.eq(1)?0:NaN):i.isFinite()?(t=r.precision,e=r.rounding,r.precision=t+Math.max(Math.abs(i.e),i.sd())+4,r.rounding=1,Ze=!1,i=i.times(i).minus(1).sqrt().plus(i),Ze=!0,r.precision=t,r.rounding=e,i.ln()):new r(i)};ae.inverseHyperbolicSine=ae.asinh=function(){var t,e,i=this,r=i.constructor;return!i.isFinite()||i.isZero()?new r(i):(t=r.precision,e=r.rounding,r.precision=t+2*Math.max(Math.abs(i.e),i.sd())+6,r.rounding=1,Ze=!1,i=i.times(i).plus(1).sqrt().plus(i),Ze=!0,r.precision=t,r.rounding=e,i.ln())};ae.inverseHyperbolicTangent=ae.atanh=function(){var t,e,i,r,n=this,o=n.constructor;return n.isFinite()?n.e>=0?new o(n.abs().eq(1)?n.s/0:n.isZero()?n:NaN):(t=o.precision,e=o.rounding,r=n.sd(),Math.max(r,t)<2*-n.e-1?Re(new o(n),t,e,!0):(o.precision=i=r-n.e,n=_t(n.plus(1),new o(1).minus(n),i+t,1),o.precision=t+4,o.rounding=1,n=n.ln(),o.precision=t,o.rounding=e,n.times(.5))):new o(NaN)};ae.inverseSine=ae.asin=function(){var t,e,i,r,n=this,o=n.constructor;return n.isZero()?new o(n):(e=n.abs().cmp(1),i=o.precision,r=o.rounding,e!==-1?e===0?(t=Qi(o,i+4,r).times(.5),t.s=n.s,t):new o(NaN):(o.precision=i+6,o.rounding=1,n=n.div(new o(1).minus(n.times(n)).sqrt().plus(1)).atan(),o.precision=i,o.rounding=r,n.times(2)))};ae.inverseTangent=ae.atan=function(){var t,e,i,r,n,o,a,l,d,f=this,g=f.constructor,v=g.precision,y=g.rounding;if(f.isFinite()){if(f.isZero())return new g(f);if(f.abs().eq(1)&&v+4<=cu)return a=Qi(g,v+4,y).times(.25),a.s=f.s,a}else{if(!f.s)return new g(NaN);if(v+4<=cu)return a=Qi(g,v+4,y).times(.5),a.s=f.s,a}for(g.precision=l=v+10,g.rounding=1,i=Math.min(28,l/Be+2|0),t=i;t;--t)f=f.div(f.times(f).plus(1).sqrt().plus(1));for(Ze=!1,e=Math.ceil(l/Be),r=1,d=f.times(f),a=new g(f),n=f;t!==-1;)if(n=n.times(d),o=a.minus(n.div(r+=2)),n=n.times(d),a=o.plus(n.div(r+=2)),a.d[e]!==void 0)for(t=e;a.d[t]===o.d[t]&&t--;);return i&&(a=a.times(2<<i-1)),Ze=!0,Re(a,g.precision=v,g.rounding=y,!0)};ae.isFinite=function(){return!!this.d};ae.isInteger=ae.isInt=function(){return!!this.d&&Kt(this.e/Be)>this.d.length-2};ae.isNaN=function(){return!this.s};ae.isNegative=ae.isNeg=function(){return this.s<0};ae.isPositive=ae.isPos=function(){return this.s>0};ae.isZero=function(){return!!this.d&&this.d[0]===0};ae.lessThan=ae.lt=function(t){return this.cmp(t)<0};ae.lessThanOrEqualTo=ae.lte=function(t){return this.cmp(t)<1};ae.logarithm=ae.log=function(t){var e,i,r,n,o,a,l,d,f=this,g=f.constructor,v=g.precision,y=g.rounding,S=5;if(t==null)t=new g(10),e=!0;else{if(t=new g(t),i=t.d,t.s<0||!i||!i[0]||t.eq(1))return new g(NaN);e=t.eq(10)}if(i=f.d,f.s<0||!i||!i[0]||f.eq(1))return new g(i&&!i[0]?-1/0:f.s!=1?NaN:i?0:1/0);if(e)if(i.length>1)o=!0;else{for(n=i[0];n%10===0;)n/=10;o=n!==1}if(Ze=!1,l=v+S,a=Ir(f,l),r=e?Ps(g,l+10):Ir(t,l),d=_t(a,r,l,1),Co(d.d,n=v,y))do if(l+=10,a=Ir(f,l),r=e?Ps(g,l+10):Ir(t,l),d=_t(a,r,l,1),!o){+qt(d.d).slice(n+1,n+15)+1==1e14&&(d=Re(d,v+1,0));break}while(Co(d.d,n+=10,y));return Ze=!0,Re(d,v,y)};ae.minus=ae.sub=function(t){var e,i,r,n,o,a,l,d,f,g,v,y,S=this,I=S.constructor;if(t=new I(t),!S.d||!t.d)return!S.s||!t.s?t=new I(NaN):S.d?t.s=-t.s:t=new I(t.d||S.s!==t.s?S:NaN),t;if(S.s!=t.s)return t.s=-t.s,S.plus(t);if(f=S.d,y=t.d,l=I.precision,d=I.rounding,!f[0]||!y[0]){if(y[0])t.s=-t.s;else if(f[0])t=new I(S);else return new I(d===3?-0:0);return Ze?Re(t,l,d):t}if(i=Kt(t.e/Be),g=Kt(S.e/Be),f=f.slice(),o=g-i,o){for(v=o<0,v?(e=f,o=-o,a=y.length):(e=y,i=g,a=f.length),r=Math.max(Math.ceil(l/Be),a)+2,o>r&&(o=r,e.length=1),e.reverse(),r=o;r--;)e.push(0);e.reverse()}else{for(r=f.length,a=y.length,v=r<a,v&&(a=r),r=0;r<a;r++)if(f[r]!=y[r]){v=f[r]<y[r];break}o=0}for(v&&(e=f,f=y,y=e,t.s=-t.s),a=f.length,r=y.length-a;r>0;--r)f[a++]=0;for(r=y.length;r>o;){if(f[--r]<y[r]){for(n=r;n&&f[--n]===0;)f[n]=Fi-1;--f[n],f[r]+=Fi}f[r]-=y[r]}for(;f[--a]===0;)f.pop();for(;f[0]===0;f.shift())--i;return f[0]?(t.d=f,t.e=Ns(f,i),Ze?Re(t,l,d):t):new I(d===3?-0:0)};ae.modulo=ae.mod=function(t){var e,i=this,r=i.constructor;return t=new r(t),!i.d||!t.s||t.d&&!t.d[0]?new r(NaN):!t.d||i.d&&!i.d[0]?Re(new r(i),r.precision,r.rounding):(Ze=!1,r.modulo==9?(e=_t(i,t.abs(),0,3,1),e.s*=t.s):e=_t(i,t,0,r.modulo,1),e=e.times(t),Ze=!0,i.minus(e))};ae.naturalExponential=ae.exp=function(){return du(this)};ae.naturalLogarithm=ae.ln=function(){return Ir(this)};ae.negated=ae.neg=function(){var t=new this.constructor(this);return t.s=-t.s,Re(t)};ae.plus=ae.add=function(t){var e,i,r,n,o,a,l,d,f,g,v=this,y=v.constructor;if(t=new y(t),!v.d||!t.d)return!v.s||!t.s?t=new y(NaN):v.d||(t=new y(t.d||v.s===t.s?v:NaN)),t;if(v.s!=t.s)return t.s=-t.s,v.minus(t);if(f=v.d,g=t.d,l=y.precision,d=y.rounding,!f[0]||!g[0])return g[0]||(t=new y(v)),Ze?Re(t,l,d):t;if(o=Kt(v.e/Be),r=Kt(t.e/Be),f=f.slice(),n=o-r,n){for(n<0?(i=f,n=-n,a=g.length):(i=g,r=o,a=f.length),o=Math.ceil(l/Be),a=o>a?o+1:a+1,n>a&&(n=a,i.length=1),i.reverse();n--;)i.push(0);i.reverse()}for(a=f.length,n=g.length,a-n<0&&(n=a,i=g,g=f,f=i),e=0;n;)e=(f[--n]=f[n]+g[n]+e)/Fi|0,f[n]%=Fi;for(e&&(f.unshift(e),++r),a=f.length;f[--a]==0;)f.pop();return t.d=f,t.e=Ns(f,r),Ze?Re(t,l,d):t};ae.precision=ae.sd=function(t){var e,i=this;if(t!==void 0&&t!==!!t&&t!==1&&t!==0)throw Error(Pr+t);return i.d?(e=td(i.d),t&&i.e+1>e&&(e=i.e+1)):e=NaN,e};ae.round=function(){var t=this,e=t.constructor;return Re(new e(t),t.e+1,e.rounding)};ae.sine=ae.sin=function(){var t,e,i=this,r=i.constructor;return i.isFinite()?i.isZero()?new r(i):(t=r.precision,e=r.rounding,r.precision=t+Math.max(i.e,i.sd())+Be,r.rounding=1,i=n_(r,od(r,i)),r.precision=t,r.rounding=e,Re(dr>2?i.neg():i,t,e,!0)):new r(NaN)};ae.squareRoot=ae.sqrt=function(){var t,e,i,r,n,o,a=this,l=a.d,d=a.e,f=a.s,g=a.constructor;if(f!==1||!l||!l[0])return new g(!f||f<0&&(!l||l[0])?NaN:l?a:1/0);for(Ze=!1,f=Math.sqrt(+a),f==0||f==1/0?(e=qt(l),(e.length+d)%2==0&&(e+="0"),f=Math.sqrt(e),d=Kt((d+1)/2)-(d<0||d%2),f==1/0?e="5e"+d:(e=f.toExponential(),e=e.slice(0,e.indexOf("e")+1)+d),r=new g(e)):r=new g(f.toString()),i=(d=g.precision)+3;;)if(o=r,r=o.plus(_t(a,o,i+2,1)).times(.5),qt(o.d).slice(0,i)===(e=qt(r.d)).slice(0,i))if(e=e.slice(i-3,i+1),e=="9999"||!n&&e=="4999"){if(!n&&(Re(o,d+1,0),o.times(o).eq(a))){r=o;break}i+=4,n=1}else{(!+e||!+e.slice(1)&&e.charAt(0)=="5")&&(Re(r,d+1,1),t=!r.times(r).eq(a));break}return Ze=!0,Re(r,d,g.rounding,t)};ae.tangent=ae.tan=function(){var t,e,i=this,r=i.constructor;return i.isFinite()?i.isZero()?new r(i):(t=r.precision,e=r.rounding,r.precision=t+10,r.rounding=1,i=i.sin(),i.s=1,i=_t(i,new r(1).minus(i.times(i)).sqrt(),t+10,0),r.precision=t,r.rounding=e,Re(dr==2||dr==4?i.neg():i,t,e,!0)):new r(NaN)};ae.times=ae.mul=function(t){var e,i,r,n,o,a,l,d,f,g=this,v=g.constructor,y=g.d,S=(t=new v(t)).d;if(t.s*=g.s,!y||!y[0]||!S||!S[0])return new v(!t.s||y&&!y[0]&&!S||S&&!S[0]&&!y?NaN:!y||!S?t.s/0:t.s*0);for(i=Kt(g.e/Be)+Kt(t.e/Be),d=y.length,f=S.length,d<f&&(o=y,y=S,S=o,a=d,d=f,f=a),o=[],a=d+f,r=a;r--;)o.push(0);for(r=f;--r>=0;){for(e=0,n=d+r;n>r;)l=o[n]+S[r]*y[n-r-1]+e,o[n--]=l%Fi|0,e=l/Fi|0;o[n]=(o[n]+e)%Fi|0}for(;!o[--a];)o.pop();return e?++i:o.shift(),t.d=o,t.e=Ns(o,i),Ze?Re(t,v.precision,v.rounding):t};ae.toBinary=function(t,e){return fu(this,2,t,e)};ae.toDecimalPlaces=ae.toDP=function(t,e){var i=this,r=i.constructor;return i=new r(i),t===void 0?i:(ii(t,0,Or),e===void 0?e=r.rounding:ii(e,0,8),Re(i,t+i.e+1,e))};ae.toExponential=function(t,e){var i,r=this,n=r.constructor;return t===void 0?i=er(r,!0):(ii(t,0,Or),e===void 0?e=n.rounding:ii(e,0,8),r=Re(new n(r),t+1,e),i=er(r,!0,t+1)),r.isNeg()&&!r.isZero()?"-"+i:i};ae.toFixed=function(t,e){var i,r,n=this,o=n.constructor;return t===void 0?i=er(n):(ii(t,0,Or),e===void 0?e=o.rounding:ii(e,0,8),r=Re(new o(n),t+n.e+1,e),i=er(r,!1,t+r.e+1)),n.isNeg()&&!n.isZero()?"-"+i:i};ae.toFraction=function(t){var e,i,r,n,o,a,l,d,f,g,v,y,S=this,I=S.d,x=S.constructor;if(!I)return new x(S);if(f=i=new x(1),r=d=new x(0),e=new x(r),o=e.e=td(I)-S.e-1,a=o%Be,e.d[0]=Nt(10,a<0?Be+a:a),t==null)t=o>0?e:f;else{if(l=new x(t),!l.isInt()||l.lt(f))throw Error(Pr+l);t=l.gt(e)?o>0?e:f:l}for(Ze=!1,l=new x(qt(I)),g=x.precision,x.precision=o=I.length*Be*2;v=_t(l,e,0,1,1),n=i.plus(v.times(r)),n.cmp(t)!=1;)i=r,r=n,n=f,f=d.plus(v.times(n)),d=n,n=e,e=l.minus(v.times(n)),l=n;return n=_t(t.minus(i),r,0,1,1),d=d.plus(n.times(f)),i=i.plus(n.times(r)),d.s=f.s=S.s,y=_t(f,r,o,1).minus(S).abs().cmp(_t(d,i,o,1).minus(S).abs())<1?[f,r]:[d,i],x.precision=g,Ze=!0,y};ae.toHexadecimal=ae.toHex=function(t,e){return fu(this,16,t,e)};ae.toNearest=function(t,e){var i=this,r=i.constructor;if(i=new r(i),t==null){if(!i.d)return i;t=new r(1),e=r.rounding}else{if(t=new r(t),e===void 0?e=r.rounding:ii(e,0,8),!i.d)return t.s?i:t;if(!t.d)return t.s&&(t.s=i.s),t}return t.d[0]?(Ze=!1,i=_t(i,t,0,e,1).times(t),Ze=!0,Re(i)):(t.s=i.s,i=t),i};ae.toNumber=function(){return+this};ae.toOctal=function(t,e){return fu(this,8,t,e)};ae.toPower=ae.pow=function(t){var e,i,r,n,o,a,l=this,d=l.constructor,f=+(t=new d(t));if(!l.d||!t.d||!l.d[0]||!t.d[0])return new d(Nt(+l,f));if(l=new d(l),l.eq(1))return l;if(r=d.precision,o=d.rounding,t.eq(1))return Re(l,r,o);if(e=Kt(t.e/Be),e>=t.d.length-1&&(i=f<0?-f:f)<=e_)return n=id(d,l,i,r),t.s<0?new d(1).div(n):Re(n,r,o);if(a=l.s,a<0){if(e<t.d.length-1)return new d(NaN);if((t.d[e]&1)==0&&(a=1),l.e==0&&l.d[0]==1&&l.d.length==1)return l.s=a,l}return i=Nt(+l,f),e=i==0||!isFinite(i)?Kt(f*(Math.log("0."+qt(l.d))/Math.LN10+l.e+1)):new d(i+"").e,e>d.maxE+1||e<d.minE-1?new d(e>0?a/0:0):(Ze=!1,d.rounding=l.s=1,i=Math.min(12,(e+"").length),n=du(t.times(Ir(l,r+i)),r),n.d&&(n=Re(n,r+5,1),Co(n.d,r,o)&&(e=r+10,n=Re(du(t.times(Ir(l,e+i)),e),e+5,1),+qt(n.d).slice(r+1,r+15)+1==1e14&&(n=Re(n,r+1,0)))),n.s=a,Ze=!0,d.rounding=o,Re(n,r,o))};ae.toPrecision=function(t,e){var i,r=this,n=r.constructor;return t===void 0?i=er(r,r.e<=n.toExpNeg||r.e>=n.toExpPos):(ii(t,1,Or),e===void 0?e=n.rounding:ii(e,0,8),r=Re(new n(r),t,e),i=er(r,t<=r.e||r.e<=n.toExpNeg,t)),r.isNeg()&&!r.isZero()?"-"+i:i};ae.toSignificantDigits=ae.toSD=function(t,e){var i=this,r=i.constructor;return t===void 0?(t=r.precision,e=r.rounding):(ii(t,1,Or),e===void 0?e=r.rounding:ii(e,0,8)),Re(new r(i),t,e)};ae.toString=function(){var t=this,e=t.constructor,i=er(t,t.e<=e.toExpNeg||t.e>=e.toExpPos);return t.isNeg()&&!t.isZero()?"-"+i:i};ae.truncated=ae.trunc=function(){return Re(new this.constructor(this),this.e+1,1)};ae.valueOf=ae.toJSON=function(){var t=this,e=t.constructor,i=er(t,t.e<=e.toExpNeg||t.e>=e.toExpPos);return t.isNeg()?"-"+i:i};function qt(t){var e,i,r,n=t.length-1,o="",a=t[0];if(n>0){for(o+=a,e=1;e<n;e++)r=t[e]+"",i=Be-r.length,i&&(o+=xr(i)),o+=r;a=t[e],r=a+"",i=Be-r.length,i&&(o+=xr(i))}else if(a===0)return"0";for(;a%10===0;)a/=10;return o+a}function ii(t,e,i){if(t!==~~t||t<e||t>i)throw Error(Pr+t)}function Co(t,e,i,r){var n,o,a,l;for(o=t[0];o>=10;o/=10)--e;return--e<0?(e+=Be,n=0):(n=Math.ceil((e+1)/Be),e%=Be),o=Nt(10,Be-e),l=t[n]%o|0,r==null?e<3?(e==0?l=l/100|0:e==1&&(l=l/10|0),a=i<4&&l==99999||i>3&&l==49999||l==5e4||l==0):a=(i<4&&l+1==o||i>3&&l+1==o/2)&&(t[n+1]/o/100|0)==Nt(10,e-2)-1||(l==o/2||l==0)&&(t[n+1]/o/100|0)==0:e<4?(e==0?l=l/1e3|0:e==1?l=l/100|0:e==2&&(l=l/10|0),a=(r||i<4)&&l==9999||!r&&i>3&&l==4999):a=((r||i<4)&&l+1==o||!r&&i>3&&l+1==o/2)&&(t[n+1]/o/1e3|0)==Nt(10,e-3)-1,a}function Ss(t,e,i){for(var r,n=[0],o,a=0,l=t.length;a<l;){for(o=n.length;o--;)n[o]*=e;for(n[0]+=uu.indexOf(t.charAt(a++)),r=0;r<n.length;r++)n[r]>i-1&&(n[r+1]===void 0&&(n[r+1]=0),n[r+1]+=n[r]/i|0,n[r]%=i)}return n.reverse()}function i_(t,e){var i,r,n;if(e.isZero())return e;r=e.d.length,r<32?(i=Math.ceil(r/3),n=(1/Ds(4,i)).toString()):(i=16,n="2.3283064365386962890625e-10"),t.precision+=i,e=Xn(t,1,e.times(n),new t(1));for(var o=i;o--;){var a=e.times(e);e=a.times(a).minus(a).times(8).plus(1)}return t.precision-=i,e}var _t=(function(){function t(r,n,o){var a,l=0,d=r.length;for(r=r.slice();d--;)a=r[d]*n+l,r[d]=a%o|0,l=a/o|0;return l&&r.unshift(l),r}function e(r,n,o,a){var l,d;if(o!=a)d=o>a?1:-1;else for(l=d=0;l<o;l++)if(r[l]!=n[l]){d=r[l]>n[l]?1:-1;break}return d}function i(r,n,o,a){for(var l=0;o--;)r[o]-=l,l=r[o]<n[o]?1:0,r[o]=l*a+r[o]-n[o];for(;!r[0]&&r.length>1;)r.shift()}return function(r,n,o,a,l,d){var f,g,v,y,S,I,x,B,R,j,V,J,Y,X,ee,C,E,N,D,O,A=r.constructor,p=r.s==n.s?1:-1,s=r.d,u=n.d;if(!s||!s[0]||!u||!u[0])return new A(!r.s||!n.s||(s?u&&s[0]==u[0]:!u)?NaN:s&&s[0]==0||!u?p*0:p/0);for(d?(S=1,g=r.e-n.e):(d=Fi,S=Be,g=Kt(r.e/S)-Kt(n.e/S)),D=u.length,E=s.length,R=new A(p),j=R.d=[],v=0;u[v]==(s[v]||0);v++);if(u[v]>(s[v]||0)&&g--,o==null?(X=o=A.precision,a=A.rounding):l?X=o+(r.e-n.e)+1:X=o,X<0)j.push(1),I=!0;else{if(X=X/S+2|0,v=0,D==1){for(y=0,u=u[0],X++;(v<E||y)&&X--;v++)ee=y*d+(s[v]||0),j[v]=ee/u|0,y=ee%u|0;I=y||v<E}else{for(y=d/(u[0]+1)|0,y>1&&(u=t(u,y,d),s=t(s,y,d),D=u.length,E=s.length),C=D,V=s.slice(0,D),J=V.length;J<D;)V[J++]=0;O=u.slice(),O.unshift(0),N=u[0],u[1]>=d/2&&++N;do y=0,f=e(u,V,D,J),f<0?(Y=V[0],D!=J&&(Y=Y*d+(V[1]||0)),y=Y/N|0,y>1?(y>=d&&(y=d-1),x=t(u,y,d),B=x.length,J=V.length,f=e(x,V,B,J),f==1&&(y--,i(x,D<B?O:u,B,d))):(y==0&&(f=y=1),x=u.slice()),B=x.length,B<J&&x.unshift(0),i(V,x,J,d),f==-1&&(J=V.length,f=e(u,V,D,J),f<1&&(y++,i(V,D<J?O:u,J,d))),J=V.length):f===0&&(y++,V=[0]),j[v++]=y,f&&V[0]?V[J++]=s[C]||0:(V=[s[C]],J=1);while((C++<E||V[0]!==void 0)&&X--);I=V[0]!==void 0}j[0]||j.shift()}if(S==1)R.e=g,Xc=I;else{for(v=1,y=j[0];y>=10;y/=10)v++;R.e=v+g*S-1,Re(R,l?o+R.e+1:o,a,I)}return R}})();function Re(t,e,i,r){var n,o,a,l,d,f,g,v,y,S=t.constructor;e:if(e!=null){if(v=t.d,!v)return t;for(n=1,l=v[0];l>=10;l/=10)n++;if(o=e-n,o<0)o+=Be,a=e,g=v[y=0],d=g/Nt(10,n-a-1)%10|0;else if(y=Math.ceil((o+1)/Be),l=v.length,y>=l)if(r){for(;l++<=y;)v.push(0);g=d=0,n=1,o%=Be,a=o-Be+1}else break e;else{for(g=l=v[y],n=1;l>=10;l/=10)n++;o%=Be,a=o-Be+n,d=a<0?0:g/Nt(10,n-a-1)%10|0}if(r=r||e<0||v[y+1]!==void 0||(a<0?g:g%Nt(10,n-a-1)),f=i<4?(d||r)&&(i==0||i==(t.s<0?3:2)):d>5||d==5&&(i==4||r||i==6&&(o>0?a>0?g/Nt(10,n-a):0:v[y-1])%10&1||i==(t.s<0?8:7)),e<1||!v[0])return v.length=0,f?(e-=t.e+1,v[0]=Nt(10,(Be-e%Be)%Be),t.e=-e||0):v[0]=t.e=0,t;if(o==0?(v.length=y,l=1,y--):(v.length=y+1,l=Nt(10,Be-o),v[y]=a>0?(g/Nt(10,n-a)%Nt(10,a)|0)*l:0),f)for(;;)if(y==0){for(o=1,a=v[0];a>=10;a/=10)o++;for(a=v[0]+=l,l=1;a>=10;a/=10)l++;o!=l&&(t.e++,v[0]==Fi&&(v[0]=1));break}else{if(v[y]+=l,v[y]!=Fi)break;v[y--]=0,l=1}for(o=v.length;v[--o]===0;)v.pop()}return Ze&&(t.e>S.maxE?(t.d=null,t.e=NaN):t.e<S.minE&&(t.e=0,t.d=[0])),t}function er(t,e,i){if(!t.isFinite())return nd(t);var r,n=t.e,o=qt(t.d),a=o.length;return e?(i&&(r=i-a)>0?o=o.charAt(0)+"."+o.slice(1)+xr(r):a>1&&(o=o.charAt(0)+"."+o.slice(1)),o=o+(t.e<0?"e":"e+")+t.e):n<0?(o="0."+xr(-n-1)+o,i&&(r=i-a)>0&&(o+=xr(r))):n>=a?(o+=xr(n+1-a),i&&(r=i-n-1)>0&&(o=o+"."+xr(r))):((r=n+1)<a&&(o=o.slice(0,r)+"."+o.slice(r)),i&&(r=i-a)>0&&(n+1===a&&(o+="."),o+=xr(r))),o}function Ns(t,e){var i=t[0];for(e*=Be;i>=10;i/=10)e++;return e}function Ps(t,e,i){if(e>t_)throw Ze=!0,i&&(t.precision=i),Error(Jc);return Re(new t(xs),e,1,!0)}function Qi(t,e,i){if(e>cu)throw Error(Jc);return Re(new t(Is),e,i,!0)}function td(t){var e=t.length-1,i=e*Be+1;if(e=t[e],e){for(;e%10==0;e/=10)i--;for(e=t[0];e>=10;e/=10)i++}return i}function xr(t){for(var e="";t--;)e+="0";return e}function id(t,e,i,r){var n,o=new t(1),a=Math.ceil(r/Be+4);for(Ze=!1;;){if(i%2&&(o=o.times(e),Lc(o.d,a)&&(n=!0)),i=Kt(i/2),i===0){i=o.d.length-1,n&&o.d[i]===0&&++o.d[i];break}e=e.times(e),Lc(e.d,a)}return Ze=!0,o}function Dc(t){return t.d[t.d.length-1]&1}function rd(t,e,i){for(var r,n,o=new t(e[0]),a=0;++a<e.length;){if(n=new t(e[a]),!n.s){o=n;break}r=o.cmp(n),(r===i||r===0&&o.s===i)&&(o=n)}return o}function du(t,e){var i,r,n,o,a,l,d,f=0,g=0,v=0,y=t.constructor,S=y.rounding,I=y.precision;if(!t.d||!t.d[0]||t.e>17)return new y(t.d?t.d[0]?t.s<0?0:1/0:1:t.s?t.s<0?0:t:NaN);for(e==null?(Ze=!1,d=I):d=e,l=new y(.03125);t.e>-2;)t=t.times(l),v+=5;for(r=Math.log(Nt(2,v))/Math.LN10*2+5|0,d+=r,i=o=a=new y(1),y.precision=d;;){if(o=Re(o.times(t),d,1),i=i.times(++g),l=a.plus(_t(o,i,d,1)),qt(l.d).slice(0,d)===qt(a.d).slice(0,d)){for(n=v;n--;)a=Re(a.times(a),d,1);if(e==null)if(f<3&&Co(a.d,d-r,S,f))y.precision=d+=10,i=o=l=new y(1),g=0,f++;else return Re(a,y.precision=I,S,Ze=!0);else return y.precision=I,a}a=l}}function Ir(t,e){var i,r,n,o,a,l,d,f,g,v,y,S=1,I=10,x=t,B=x.d,R=x.constructor,j=R.rounding,V=R.precision;if(x.s<0||!B||!B[0]||!x.e&&B[0]==1&&B.length==1)return new R(B&&!B[0]?-1/0:x.s!=1?NaN:B?0:x);if(e==null?(Ze=!1,g=V):g=e,R.precision=g+=I,i=qt(B),r=i.charAt(0),Math.abs(o=x.e)<15e14){for(;r<7&&r!=1||r==1&&i.charAt(1)>3;)x=x.times(t),i=qt(x.d),r=i.charAt(0),S++;o=x.e,r>1?(x=new R("0."+i),o++):x=new R(r+"."+i.slice(1))}else return f=Ps(R,g+2,V).times(o+""),x=Ir(new R(r+"."+i.slice(1)),g-I).plus(f),R.precision=V,e==null?Re(x,V,j,Ze=!0):x;for(v=x,d=a=x=_t(x.minus(1),x.plus(1),g,1),y=Re(x.times(x),g,1),n=3;;){if(a=Re(a.times(y),g,1),f=d.plus(_t(a,new R(n),g,1)),qt(f.d).slice(0,g)===qt(d.d).slice(0,g))if(d=d.times(2),o!==0&&(d=d.plus(Ps(R,g+2,V).times(o+""))),d=_t(d,new R(S),g,1),e==null)if(Co(d.d,g-I,j,l))R.precision=g+=I,f=a=x=_t(v.minus(1),v.plus(1),g,1),y=Re(x.times(x),g,1),n=l=1;else return Re(d,R.precision=V,j,Ze=!0);else return R.precision=V,d;d=f,n+=2}}function nd(t){return String(t.s*t.s/0)}function Cs(t,e){var i,r,n;for((i=e.indexOf("."))>-1&&(e=e.replace(".","")),(r=e.search(/e/i))>0?(i<0&&(i=r),i+=+e.slice(r+1),e=e.substring(0,r)):i<0&&(i=e.length),r=0;e.charCodeAt(r)===48;r++);for(n=e.length;e.charCodeAt(n-1)===48;--n);if(e=e.slice(r,n),e){if(n-=r,t.e=i=i-r-1,t.d=[],r=(i+1)%Be,i<0&&(r+=Be),r<n){for(r&&t.d.push(+e.slice(0,r)),n-=Be;r<n;)t.d.push(+e.slice(r,r+=Be));e=e.slice(r),r=Be-e.length}else r-=n;for(;r--;)e+="0";t.d.push(+e),Ze&&(t.e>t.constructor.maxE?(t.d=null,t.e=NaN):t.e<t.constructor.minE&&(t.e=0,t.d=[0]))}else t.e=0,t.d=[0];return t}function r_(t,e){var i,r,n,o,a,l,d,f,g;if(e.indexOf("_")>-1){if(e=e.replace(/(\d)_(?=\d)/g,"$1"),ed.test(e))return Cs(t,e)}else if(e==="Infinity"||e==="NaN")return+e||(t.s=NaN),t.e=NaN,t.d=null,t;if(Qm.test(e))i=16,e=e.toLowerCase();else if(Jm.test(e))i=2;else if(Ym.test(e))i=8;else throw Error(Pr+e);for(o=e.search(/p/i),o>0?(d=+e.slice(o+1),e=e.substring(2,o)):e=e.slice(2),o=e.indexOf("."),a=o>=0,r=t.constructor,a&&(e=e.replace(".",""),l=e.length,o=l-o,n=id(r,new r(i),o,o*2)),f=Ss(e,i,Fi),g=f.length-1,o=g;f[o]===0;--o)f.pop();return o<0?new r(t.s*0):(t.e=Ns(f,g),t.d=f,Ze=!1,a&&(t=_t(t,n,l*4)),d&&(t=t.times(Math.abs(d)<54?Nt(2,d):Eo.pow(2,d))),Ze=!0,t)}function n_(t,e){var i,r=e.d.length;if(r<3)return e.isZero()?e:Xn(t,2,e,e);i=1.4*Math.sqrt(r),i=i>16?16:i|0,e=e.times(1/Ds(5,i)),e=Xn(t,2,e,e);for(var n,o=new t(5),a=new t(16),l=new t(20);i--;)n=e.times(e),e=e.times(o.plus(n.times(a.times(n).minus(l))));return e}function Xn(t,e,i,r,n){var o,a,l,d,f=t.precision,g=Math.ceil(f/Be);for(Ze=!1,d=i.times(i),l=new t(r);;){if(a=_t(l.times(d),new t(e++*e++),f,1),l=n?r.plus(a):r.minus(a),r=_t(a.times(d),new t(e++*e++),f,1),a=l.plus(r),a.d[g]!==void 0){for(o=g;a.d[o]===l.d[o]&&o--;);if(o==-1)break}o=l,l=r,r=a,a=o}return Ze=!0,a.d.length=g+1,a}function Ds(t,e){for(var i=t;--e;)i*=t;return i}function od(t,e){var i,r=e.s<0,n=Qi(t,t.precision,1),o=n.times(.5);if(e=e.abs(),e.lte(o))return dr=r?4:1,e;if(i=e.divToInt(n),i.isZero())dr=r?3:2;else{if(e=e.minus(i.times(n)),e.lte(o))return dr=Dc(i)?r?2:3:r?4:1,e;dr=Dc(i)?r?1:4:r?3:2}return e.minus(n).abs()}function fu(t,e,i,r){var n,o,a,l,d,f,g,v,y,S=t.constructor,I=i!==void 0;if(I?(ii(i,1,Or),r===void 0?r=S.rounding:ii(r,0,8)):(i=S.precision,r=S.rounding),!t.isFinite())g=nd(t);else{for(g=er(t),a=g.indexOf("."),I?(n=2,e==16?i=i*4-3:e==8&&(i=i*3-2)):n=e,a>=0&&(g=g.replace(".",""),y=new S(1),y.e=g.length-a,y.d=Ss(er(y),10,n),y.e=y.d.length),v=Ss(g,10,n),o=d=v.length;v[--d]==0;)v.pop();if(!v[0])g=I?"0p+0":"0";else{if(a<0?o--:(t=new S(t),t.d=v,t.e=o,t=_t(t,y,i,r,0,n),v=t.d,o=t.e,f=Xc),a=v[i],l=n/2,f=f||v[i+1]!==void 0,f=r<4?(a!==void 0||f)&&(r===0||r===(t.s<0?3:2)):a>l||a===l&&(r===4||f||r===6&&v[i-1]&1||r===(t.s<0?8:7)),v.length=i,f)for(;++v[--i]>n-1;)v[i]=0,i||(++o,v.unshift(1));for(d=v.length;!v[d-1];--d);for(a=0,g="";a<d;a++)g+=uu.charAt(v[a]);if(I){if(d>1)if(e==16||e==8){for(a=e==16?4:3,--d;d%a;d++)g+="0";for(v=Ss(g,n,e),d=v.length;!v[d-1];--d);for(a=1,g="1.";a<d;a++)g+=uu.charAt(v[a])}else g=g.charAt(0)+"."+g.slice(1);g=g+(o<0?"p":"p+")+o}else if(o<0){for(;++o;)g="0"+g;g="0."+g}else if(++o>d)for(o-=d;o--;)g+="0";else o<d&&(g=g.slice(0,o)+"."+g.slice(o))}g=(e==16?"0x":e==2?"0b":e==8?"0o":"")+g}return t.s<0?"-"+g:g}function Lc(t,e){if(t.length>e)return t.length=e,!0}function o_(t){return new this(t).abs()}function s_(t){return new this(t).acos()}function a_(t){return new this(t).acosh()}function u_(t,e){return new this(t).plus(e)}function l_(t){return new this(t).asin()}function c_(t){return new this(t).asinh()}function d_(t){return new this(t).atan()}function h_(t){return new this(t).atanh()}function f_(t,e){t=new this(t),e=new this(e);var i,r=this.precision,n=this.rounding,o=r+4;return!t.s||!e.s?i=new this(NaN):!t.d&&!e.d?(i=Qi(this,o,1).times(e.s>0?.25:.75),i.s=t.s):!e.d||t.isZero()?(i=e.s<0?Qi(this,r,n):new this(0),i.s=t.s):!t.d||e.isZero()?(i=Qi(this,o,1).times(.5),i.s=t.s):e.s<0?(this.precision=o,this.rounding=1,i=this.atan(_t(t,e,o,1)),e=Qi(this,o,1),this.precision=r,this.rounding=n,i=t.s<0?i.minus(e):i.plus(e)):i=this.atan(_t(t,e,o,1)),i}function p_(t){return new this(t).cbrt()}function m_(t){return Re(t=new this(t),t.e+1,2)}function __(t,e,i){return new this(t).clamp(e,i)}function g_(t){if(!t||typeof t!="object")throw Error(Rs+"Object expected");var e,i,r,n=t.defaults===!0,o=["precision",1,Or,"rounding",0,8,"toExpNeg",-Kn,0,"toExpPos",0,Kn,"maxE",0,Kn,"minE",-Kn,0,"modulo",0,9];for(e=0;e<o.length;e+=3)if(i=o[e],n&&(this[i]=lu[i]),(r=t[i])!==void 0)if(Kt(r)===r&&r>=o[e+1]&&r<=o[e+2])this[i]=r;else throw Error(Pr+i+": "+r);if(i="crypto",n&&(this[i]=lu[i]),(r=t[i])!==void 0)if(r===!0||r===!1||r===0||r===1)if(r)if(typeof crypto<"u"&&crypto&&(crypto.getRandomValues||crypto.randomBytes))this[i]=!0;else throw Error(Qc);else this[i]=!1;else throw Error(Pr+i+": "+r);return this}function w_(t){return new this(t).cos()}function v_(t){return new this(t).cosh()}function sd(t){var e,i,r;function n(o){var a,l,d,f=this;if(!(f instanceof n))return new n(o);if(f.constructor=n,jc(o)){f.s=o.s,Ze?!o.d||o.e>n.maxE?(f.e=NaN,f.d=null):o.e<n.minE?(f.e=0,f.d=[0]):(f.e=o.e,f.d=o.d.slice()):(f.e=o.e,f.d=o.d?o.d.slice():o.d);return}if(d=typeof o,d==="number"){if(o===0){f.s=1/o<0?-1:1,f.e=0,f.d=[0];return}if(o<0?(o=-o,f.s=-1):f.s=1,o===~~o&&o<1e7){for(a=0,l=o;l>=10;l/=10)a++;Ze?a>n.maxE?(f.e=NaN,f.d=null):a<n.minE?(f.e=0,f.d=[0]):(f.e=a,f.d=[o]):(f.e=a,f.d=[o]);return}if(o*0!==0){o||(f.s=NaN),f.e=NaN,f.d=null;return}return Cs(f,o.toString())}if(d==="string")return(l=o.charCodeAt(0))===45?(o=o.slice(1),f.s=-1):(l===43&&(o=o.slice(1)),f.s=1),ed.test(o)?Cs(f,o):r_(f,o);if(d==="bigint")return o<0?(o=-o,f.s=-1):f.s=1,Cs(f,o.toString());throw Error(Pr+o)}if(n.prototype=ae,n.ROUND_UP=0,n.ROUND_DOWN=1,n.ROUND_CEIL=2,n.ROUND_FLOOR=3,n.ROUND_HALF_UP=4,n.ROUND_HALF_DOWN=5,n.ROUND_HALF_EVEN=6,n.ROUND_HALF_CEIL=7,n.ROUND_HALF_FLOOR=8,n.EUCLID=9,n.config=n.set=g_,n.clone=sd,n.isDecimal=jc,n.abs=o_,n.acos=s_,n.acosh=a_,n.add=u_,n.asin=l_,n.asinh=c_,n.atan=d_,n.atanh=h_,n.atan2=f_,n.cbrt=p_,n.ceil=m_,n.clamp=__,n.cos=w_,n.cosh=v_,n.div=y_,n.exp=b_,n.floor=M_,n.hypot=k_,n.ln=A_,n.log=S_,n.log10=T_,n.log2=C_,n.max=E_,n.min=x_,n.mod=I_,n.mul=P_,n.pow=O_,n.random=R_,n.round=N_,n.sign=D_,n.sin=L_,n.sinh=j_,n.sqrt=B_,n.sub=F_,n.sum=q_,n.tan=U_,n.tanh=$_,n.trunc=V_,t===void 0&&(t={}),t&&t.defaults!==!0)for(r=["precision","rounding","toExpNeg","toExpPos","maxE","minE","modulo","crypto"],e=0;e<r.length;)t.hasOwnProperty(i=r[e++])||(t[i]=this[i]);return n.config(t),n}function y_(t,e){return new this(t).div(e)}function b_(t){return new this(t).exp()}function M_(t){return Re(t=new this(t),t.e+1,3)}function k_(){var t,e,i=new this(0);for(Ze=!1,t=0;t<arguments.length;)if(e=new this(arguments[t++]),e.d)i.d&&(i=i.plus(e.times(e)));else{if(e.s)return Ze=!0,new this(1/0);i=e}return Ze=!0,i.sqrt()}function jc(t){return t instanceof Eo||t&&t.toStringTag===Yc||!1}function A_(t){return new this(t).ln()}function S_(t,e){return new this(t).log(e)}function C_(t){return new this(t).log(2)}function T_(t){return new this(t).log(10)}function E_(){return rd(this,arguments,-1)}function x_(){return rd(this,arguments,1)}function I_(t,e){return new this(t).mod(e)}function P_(t,e){return new this(t).mul(e)}function O_(t,e){return new this(t).pow(e)}function R_(t){var e,i,r,n,o=0,a=new this(1),l=[];if(t===void 0?t=this.precision:ii(t,1,Or),r=Math.ceil(t/Be),this.crypto)if(crypto.getRandomValues)for(e=crypto.getRandomValues(new Uint32Array(r));o<r;)n=e[o],n>=429e7?e[o]=crypto.getRandomValues(new Uint32Array(1))[0]:l[o++]=n%1e7;else if(crypto.randomBytes){for(e=crypto.randomBytes(r*=4);o<r;)n=e[o]+(e[o+1]<<8)+(e[o+2]<<16)+((e[o+3]&127)<<24),n>=214e7?crypto.randomBytes(4).copy(e,o):(l.push(n%1e7),o+=4);o=r/4}else throw Error(Qc);else for(;o<r;)l[o++]=Math.random()*1e7|0;for(r=l[--o],t%=Be,r&&t&&(n=Nt(10,Be-t),l[o]=(r/n|0)*n);l[o]===0;o--)l.pop();if(o<0)i=0,l=[0];else{for(i=-1;l[0]===0;i-=Be)l.shift();for(r=1,n=l[0];n>=10;n/=10)r++;r<Be&&(i-=Be-r)}return a.e=i,a.d=l,a}function N_(t){return Re(t=new this(t),t.e+1,this.rounding)}function D_(t){return t=new this(t),t.d?t.d[0]?t.s:0*t.s:t.s||NaN}function L_(t){return new this(t).sin()}function j_(t){return new this(t).sinh()}function B_(t){return new this(t).sqrt()}function F_(t,e){return new this(t).sub(e)}function q_(){var t=0,e=arguments,i=new this(e[t]);for(Ze=!1;i.s&&++t<e.length;)i=i.plus(e[t]);return Ze=!0,Re(i,this.precision,this.rounding)}function U_(t){return new this(t).tan()}function $_(t){return new this(t).tanh()}function V_(t){return Re(t=new this(t),t.e+1,1)}ae[Symbol.for("nodejs.util.inspect.custom")]=ae.toString;ae[Symbol.toStringTag]="Decimal";var Eo=ae.constructor=sd(lu);xs=new Eo(xs);Is=new Eo(Is);var ad=Eo;function Z_(t,e,i){return Number(ud(new ad(t.toString()),e,i).toFixed(0))}function nu(t,e,i){let r=ud(new ad(t.toString()),e,i);return new Xm.default(r.toFixed(0))}function ud(t,e,i){return e?t.mul(1-i):t.mul(1+i)}var ou=class{constructor(t,e){this.globalConfig=t===0?"0xdaa46292632c3c4d8f31f23ea0f9b36a28ff3677e9684980e4438403a67a3d8f":"0xc6273f844b4bc258952c4e477697aa12c918c8e08106fac6b934811298c9820a",this.partner=e??(t===0?"0x639b5e433da31739e800cd085f356e64cae222966d0f1b11bd9dc76b322ff58b":"0xfdc30896f88f74544fd507722d3bf52e46b06412ba8241ba0e854cbc65f8d85f")}swap(t,e,i,r){let n=this.prepareSwapData(e);this.executeSwapContract(t,n,i)}prepareSwapData(t){if(t.path.publishedAt==null)throw new Error("Cetus not set publishedAt");let e=t.path,[i,r]=e.direction?[e.from,e.target]:[e.target,e.from],n=t.isLastUseOfIntermediateToken?ct.MAX_AMOUNT_IN:e.amountIn;return{coinAType:i,coinBType:r,direction:e.direction,amountIn:n,publishedAt:e.publishedAt,poolId:e.id}}executeSwapContract(t,e,i){let r=[i,t.object(this.globalConfig),t.object(e.poolId),t.object(this.partner),t.pure.bool(e.direction),t.pure.u64(e.amountIn),t.object(ft)];t.moveCall({target:`${e.publishedAt}::cetus::swap`,typeArguments:[e.coinAType,e.coinBType],arguments:r})}flashSwapFixedOutput(t,e,i,r){let n=[r,t.object(this.globalConfig),t.object(e.id),t.object(this.partner),i,t.pure.bool(e.direction),t.pure.bool(!1),t.object(ft)],[o,a]=e.direction?[e.from,e.target]:[e.target,e.from],[l,d]=t.moveCall({target:`${e.publishedAt}::cetus::flash_swap_fixed_output`,typeArguments:[o,a],arguments:n});return{flashReceipt:l,repayAmount:d}}repayFlashSwapFixedOutput(t,e,i,r){let n=[i,t.object(this.globalConfig),t.object(e.id),t.object(this.partner),t.pure.bool(e.direction),r],[o,a]=e.direction?[e.from,e.target]:[e.target,e.from];t.moveCall({target:`${e.publishedAt}::cetus::repay_flash_swap_fixed_output`,typeArguments:[o,a],arguments:n})}add(t,e,i,r){let n=[e,i];return t.moveCall({target:`${r}::cetus::add`,typeArguments:[],arguments:n})}sub(t,e,i,r){let n=[e,i];return t.moveCall({target:`${r}::cetus::sub`,typeArguments:[],arguments:n})}},H_=class{constructor(t){if(t!==0)throw new Error("Kriya V3 only supported on mainnet");this.version="0xf5145a7ac345ca8736cf8c76047d00d6d378f30e81be6f6eb557184d9de93c78"}swap(t,e,i,r){let n=this.prepareSwapData(e);this.executeSwapContract(t,n,i)}prepareSwapData(t){if(t.path.publishedAt==null)throw new Error("Kriya V3 not set publishedAt");let e=t.path,[i,r]=e.direction?[e.from,e.target]:[e.target,e.from],n=t.isLastUseOfIntermediateToken?ct.MAX_AMOUNT_IN:e.amountIn;return{coinAType:i,coinBType:r,direction:e.direction,amountIn:n,publishedAt:e.publishedAt,poolId:e.id}}executeSwapContract(t,e,i){let r=[i,t.object(e.poolId),t.object(this.version),t.pure.bool(e.direction),t.pure.u64(e.amountIn),t.object(ft)];t.moveCall({target:`${e.publishedAt}::kriya_clmm::swap`,typeArguments:[e.coinAType,e.coinBType],arguments:r})}},W_=class{constructor(t){if(t!==0)throw new Error("FlowX V3 only supported on mainnet");this.poolRegistry="0x27565d24a4cd51127ac90e4074a841bbe356cca7bf5759ddc14a975be1632abc",this.versioned="0x67624a1533b5aff5d0dfcf5e598684350efd38134d2d245f475524c03a64e656"}swap(t,e,i,r){let n=this.prepareSwapData(e);this.executeSwapContract(t,n,i)}prepareSwapData(t){if(t.path.publishedAt==null)throw new Error("FlowX V3 not set publishedAt");let e=t.path,[i,r]=e.direction?[e.from,e.target]:[e.target,e.from],n=t.isLastUseOfIntermediateToken?ct.MAX_AMOUNT_IN:e.amountIn,o=e.feeRate*1e6;return{coinAType:i,coinBType:r,direction:e.direction,amountIn:n,publishedAt:e.publishedAt,poolId:e.id,feeRate:o}}executeSwapContract(t,e,i){let r=[i,t.object(this.poolRegistry),t.object(this.versioned),t.pure.u64(e.feeRate),t.pure.u64(e.amountIn),t.pure.bool(e.direction),t.object(ft)];t.moveCall({target:`${e.publishedAt}::flowx_clmm::swap`,typeArguments:[e.coinAType,e.coinBType],arguments:r})}},G_=class{constructor(t){if(t!==0)throw new Error("Turbos only supported on mainnet");this.versioned="0xf1cf0e81048df168ebeb1b8030fad24b3e0b53ae827c25053fff0779c1445b6f"}swap(t,e,i,r){let n=this.prepareSwapData(e);this.executeSwapContract(t,n,i)}prepareSwapData(t){if(t.path.publishedAt==null)throw new Error("Turbos not set publishedAt");let e=t.path,[i,r]=e.direction?[e.from,e.target]:[e.target,e.from],n=t.isLastUseOfIntermediateToken?ct.MAX_AMOUNT_IN:e.amountIn;if(e.extendedDetails==null)throw new Error("Extended details not supported");if(e.extendedDetails.turbos_fee_type==null)throw new Error("Turbos fee type not supported");let o=e.extendedDetails.turbos_fee_type;return{coinAType:i,coinBType:r,feeType:o,direction:e.direction,amountIn:n,publishedAt:e.publishedAt,poolId:e.id}}executeSwapContract(t,e,i){let r=[i,t.object(e.poolId),t.object(this.versioned),t.pure.bool(e.direction),t.pure.u64(e.amountIn),t.object(ft)];t.moveCall({target:`${e.publishedAt}::turbos::swap`,typeArguments:[e.coinAType,e.coinBType,e.feeType],arguments:r})}},z_=class{constructor(t){if(t!==0)throw new Error("Bluefin only supported on mainnet");this.globalConfig="0x03db251ba509a8d5d8777b6338836082335d93eecbdd09a11e190a1cff51c352"}swap(t,e,i,r){let n=this.prepareSwapData(e);this.executeSwapContract(t,n,i)}prepareSwapData(t){if(t.path.publishedAt==null)throw new Error("Bluefin not set publishedAt");let e=t.path,[i,r]=e.direction?[e.from,e.target]:[e.target,e.from],n=t.isLastUseOfIntermediateToken?ct.MAX_AMOUNT_IN:e.amountIn;return{coinAType:i,coinBType:r,direction:e.direction,amountIn:n,publishedAt:e.publishedAt,poolId:e.id}}executeSwapContract(t,e,i){let r=[i,t.object(this.globalConfig),t.object(e.poolId),t.pure.bool(e.direction),t.pure.u64(e.amountIn),t.object(ft)];t.moveCall({target:`${e.publishedAt}::bluefin::swap`,typeArguments:[e.coinAType,e.coinBType],arguments:r})}},K_=class{constructor(t){if(t!==0)throw new Error("Momentum only supported on mainnet");this.version="0x2375a0b1ec12010aaea3b2545acfa2ad34cfbba03ce4b59f4c39e1e25eed1b2a"}swap(t,e,i,r){let n=this.prepareSwapData(e);this.executeSwapContract(t,n,i)}prepareSwapData(t){let e=t.path;if(t.path.publishedAt==null)throw new Error("Momentum not set publishedAt");let[i,r]=e.direction?[e.from,e.target]:[e.target,e.from],n=t.isLastUseOfIntermediateToken?ct.MAX_AMOUNT_IN:e.amountIn;return{coinAType:i,coinBType:r,direction:e.direction,amountIn:n,publishedAt:e.publishedAt,poolId:e.id}}executeSwapContract(t,e,i){let r=[i,t.object(e.poolId),t.pure.bool(e.direction),t.pure.u64(e.amountIn),t.object(this.version),t.object(ft)];t.moveCall({target:`${e.publishedAt}::momentum::swap`,typeArguments:[e.coinAType,e.coinBType],arguments:r})}},X_=class{constructor(t){if(t!==0)throw new Error("Magma only supported on mainnet");this.globalConfig="0x4c4e1402401f72c7d8533d0ed8d5f8949da363c7a3319ccef261ffe153d32f8a"}swap(t,e,i,r){let n=this.prepareSwapData(e);this.executeSwapContract(t,n,i)}prepareSwapData(t){let e=t.path;if(t.path.publishedAt==null)throw new Error("Magma not set publishedAt");let[i,r]=e.direction?[e.from,e.target]:[e.target,e.from],n=t.isLastUseOfIntermediateToken?ct.MAX_AMOUNT_IN:e.amountIn;return{coinAType:i,coinBType:r,direction:e.direction,amountIn:n,publishedAt:e.publishedAt,poolId:e.id}}executeSwapContract(t,e,i){let r=[i,t.object(this.globalConfig),t.object(e.poolId),t.pure.bool(e.direction),t.pure.u64(e.amountIn),t.object(ft)];t.moveCall({target:`${e.publishedAt}::magma::swap`,typeArguments:[e.coinAType,e.coinBType],arguments:r})}},J_=class{constructor(t){if(t!==0)throw new Error("Kriya V2 only supported on mainnet")}swap(t,e,i,r){let n=this.prepareSwapData(e);this.executeSwapContract(t,n,i)}prepareSwapData(t){let e=t.path;if(t.path.publishedAt==null)throw new Error("Kriya V2 not set publishedAt");let[i,r]=e.direction?[e.from,e.target]:[e.target,e.from],n=t.isLastUseOfIntermediateToken?ct.MAX_AMOUNT_IN:e.amountIn;return{coinAType:i,coinBType:r,direction:e.direction,amountIn:n,publishedAt:e.publishedAt,poolId:e.id}}executeSwapContract(t,e,i){let r=[i,t.object(e.poolId),t.pure.bool(e.direction),t.pure.u64(e.amountIn)];t.moveCall({target:`${e.publishedAt}::kriya_amm::swap`,typeArguments:[e.coinAType,e.coinBType],arguments:r})}},Q_=class{constructor(t){if(t!==0)throw new Error("FlowX V2 only supported on mainnet");this.container="0xb65dcbf63fd3ad5d0ebfbf334780dc9f785eff38a4459e37ab08fa79576ee511"}swap(t,e,i,r){let n=this.prepareSwapData(e);this.executeSwapContract(t,n,i)}prepareSwapData(t){let e=t.path;if(t.path.publishedAt==null)throw new Error("FlowX V2 not set publishedAt");let[i,r]=e.direction?[e.from,e.target]:[e.target,e.from],n=t.isLastUseOfIntermediateToken?ct.MAX_AMOUNT_IN:e.amountIn;return{coinAType:i,coinBType:r,direction:e.direction,amountIn:n,publishedAt:e.publishedAt,poolId:e.id}}executeSwapContract(t,e,i){let r=[i,t.object(this.container),t.pure.bool(e.direction),t.pure.u64(e.amountIn)];t.moveCall({target:`${e.publishedAt}::flowx_amm::swap`,typeArguments:[e.coinAType,e.coinBType],arguments:r})}},Y_=class{constructor(t){if(t!==0)throw new Error("BlueMove only supported on mainnet");this.dexInfo="0x3f2d9f724f4a1ce5e71676448dc452be9a6243dac9c5b975a588c8c867066e92"}swap(t,e,i,r){let n=this.prepareSwapData(e);this.executeSwapContract(t,n,i)}prepareSwapData(t){let e=t.path;if(t.path.publishedAt==null)throw new Error("BlueMove not set publishedAt");let[i,r]=e.direction?[e.from,e.target]:[e.target,e.from],n=t.isLastUseOfIntermediateToken?ct.MAX_AMOUNT_IN:e.amountIn;return{coinAType:i,coinBType:r,direction:e.direction,amountIn:n,publishedAt:e.publishedAt,poolId:e.id}}executeSwapContract(t,e,i){let r=[i,t.object(this.dexInfo),t.pure.bool(e.direction),t.pure.u64(e.amountIn)];t.moveCall({target:`${e.publishedAt}::bluemove::swap`,typeArguments:[e.coinAType,e.coinBType],arguments:r})}},eg=class{constructor(t){if(t!==0)throw new Error("DeepBook V3 only supported on mainnet");this.env=t,this.globalConfig="0x699d455ab8c5e02075b4345ea1f91be55bf46064ae6026cc2528e701ce3ac135"}swap(t,e,i,r){let n=this.prepareSwapData(e);n.needAddDeepPricePoint&&this.addDeepPricePoint(t,n),this.executeSwapContract(t,n,i,r)}prepareSwapData(t){if(t.path.publishedAt==null)throw new Error("DeepBook V3 not set publishedAt");let e=t.path,[i,r]=e.direction?[e.from,e.target]:[e.target,e.from],n=t.isLastUseOfIntermediateToken?ct.MAX_AMOUNT_IN:e.amountIn,o=e.extendedDetails?.deepbookv3_need_add_deep_price_point??!1,a=e.extendedDetails?.deepbookv3_reference_pool_id,l=e.extendedDetails?.deepbookv3_reference_pool_base_type,d=e.extendedDetails?.deepbookv3_reference_pool_quote_type;if(o){if(!a)throw new Error("DeepBook V3: deepbookv3_reference_pool_id is required when deepbookv3_need_add_deep_price_point is true");if(!l)throw new Error("DeepBook V3: reference_pool_base_type is required when deepbookv3_need_add_deep_price_point is true");if(!d)throw new Error("DeepBook V3: reference_pool_quote_type is required when deepbookv3_need_add_deep_price_point is true")}return{coinAType:i,coinBType:r,direction:e.direction,amountIn:n,publishedAt:e.publishedAt,poolId:e.id,needAddDeepPricePoint:o,referencePoolId:a,referencePoolBaseType:l,referencePoolQuoteType:d}}addDeepPricePoint(t,e){t.moveCall({target:`${e.publishedAt}::deepbookv3::add_deep_price_point_v2`,typeArguments:[e.coinAType,e.coinBType,e.referencePoolBaseType,e.referencePoolQuoteType],arguments:[t.object(e.poolId),t.object(e.referencePoolId),t.object(ft)]})}executeSwapContract(t,e,i,r){let n=r?.deepbookv3DeepFee||t.moveCall({target:"0x2::coin::zero",typeArguments:[this.getDeepFeeType()]}),o=[i,t.object(this.globalConfig),t.object(e.poolId),t.pure.u64(e.amountIn),t.pure.bool(e.direction),n,t.object(ft)];t.moveCall({target:`${e.publishedAt}::deepbookv3::swap`,typeArguments:[e.coinAType,e.coinBType],arguments:o})}getDeepFeeType(){return this.env===0?Es.Mainnet:Es.Testnet}},tg=class{constructor(t){if(t!==0)throw new Error("Aftermath only supported on mainnet");this.poolRegistry="0xfcc774493db2c45c79f688f88d28023a3e7d98e4ee9f48bbf5c7990f651577ae",this.protocolFeeVault="0xf194d9b1bcad972e45a7dd67dd49b3ee1e3357a00a50850c52cd51bb450e13b4",this.treasury="0x28e499dff5e864a2eafe476269a4f5035f1c16f338da7be18b103499abf271ce",this.insuranceFund="0xf0c40d67b078000e18032334c3325c47b9ec9f3d9ae4128be820d54663d14e3b",this.referralVault="0x35d35b0e5b177593d8c3a801462485572fc30861e6ce96a55af6dc4730709278"}swap(t,e,i,r){let n=this.prepareSwapData(e);this.executeSwapContract(t,n,i)}prepareSwapData(t){if(t.path.publishedAt==null)throw new Error("Aftermath not set publishedAt");let e=t.path,[i,r]=e.direction?[e.from,e.target]:[e.target,e.from],n=t.isLastUseOfIntermediateToken?"18446744073709551615":e.amountIn;return{coinAType:i,coinBType:r,feeType:e.extendedDetails?.aftermath_lp_supply_type||e.extendedDetails?.aftermath_lp_supply_type||"0x2::sui::SUI",direction:e.direction,amountIn:n,expectAmountOut:e.amountOut,publishedAt:e.publishedAt,poolId:e.id}}executeSwapContract(t,e,i){let r=[i,t.object(e.poolId),t.object(this.poolRegistry),t.object(this.protocolFeeVault),t.object(this.treasury),t.object(this.insuranceFund),t.object(this.referralVault),t.pure.bool(e.direction),t.pure.u64(e.amountIn),t.pure.u64(e.expectAmountOut)];t.moveCall({target:`${e.publishedAt}::aftermath::swap`,typeArguments:[e.coinAType,e.coinBType,e.feeType],arguments:r})}},ig=class{constructor(t){if(t!==0)throw new Error("Steamm CPMM only supported on mainnet")}swap(t,e,i,r){let n=this.prepareSwapData(e);this.executeSwapContract(t,n,i)}validateExtendedDetails(t){let e=["steamm_bank_a","steamm_bank_b","steamm_lending_market","steamm_lending_market_type","steamm_btoken_a_type","steamm_btoken_b_type","steamm_lp_token_type"];for(let i of e)if(t[i]==null)throw new Error(`Steamm CPMM ${i} not supported`)}prepareSwapData(t){let e=t.path;if(t.path.publishedAt==null)throw new Error("Steamm CPMM not set publishedAt");if(!e.extendedDetails)throw new Error("Extended details not found for Steamm CPMM");this.validateExtendedDetails(e.extendedDetails);let{direction:i,from:r,target:n}=e,[o,a]=i?[r,n]:[n,r],l=t.isLastUseOfIntermediateToken?ct.MAX_AMOUNT_IN:e.amountIn;return{coinAType:o,coinBType:a,direction:i,amountIn:l,publishedAt:e.publishedAt,poolId:e.id,extendedDetails:e.extendedDetails}}executeSwapContract(t,e,i){let r=[i,t.object(e.poolId),t.object(e.extendedDetails.steamm_bank_a),t.object(e.extendedDetails.steamm_bank_b),t.object(e.extendedDetails.steamm_lending_market),t.pure.bool(e.direction),t.pure.u64(e.amountIn),t.object(ft)];t.moveCall({target:`${e.publishedAt}::steamm_cpmm::swap`,typeArguments:[e.extendedDetails.steamm_lending_market_type,e.coinAType,e.coinBType,e.extendedDetails.steamm_btoken_a_type,e.extendedDetails.steamm_btoken_b_type,e.extendedDetails.steamm_lp_token_type],arguments:r})}},rg=class{constructor(t){if(t!==0)throw new Error("Scallop only supported on mainnet");this.version="0x07871c4b3c847a0f674510d4978d5cf6f960452795e8ff6f189fd2088a3f6ac7",this.marketData="0xa757975255146dc9686aa823b7838b507f315d704f428cbadad2f4ea061939d9"}swap(t,e,i,r){let n=this.prepareSwapData(e);this.executeSwapContract(t,n,i)}prepareSwapData(t){let e=t.path;if(t.path.publishedAt==null)throw new Error("Scallop not set publishedAt");let[i,r]=e.direction?[e.from,e.target]:[e.from,e.target],n=t.isLastUseOfIntermediateToken?ct.MAX_AMOUNT_IN:e.amountIn;if(e.extendedDetails==null)throw new Error("Extended details not supported");let o=e.extendedDetails.scallop_scoin_treasury;if(o==null)throw new Error("Scallop scoin treasury not supported");return{coinAType:i,coinBType:r,direction:e.direction,amountIn:n,publishedAt:e.publishedAt,poolId:e.id,scallopScoinTreasury:o}}executeSwapContract(t,e,i){let r=[i,t.object(this.version),t.object(this.marketData),t.object(e.scallopScoinTreasury),t.pure.u64(e.amountIn),t.object(ft)],n=e.direction?"swap_a2b":"swap_b2a";t.moveCall({target:`${e.publishedAt}::scallop::${n}`,typeArguments:[e.coinAType,e.coinBType],arguments:r})}},Bc=class{constructor(t){if(t!==0)throw new Error("Springsui only supported on mainnet")}swap(t,e,i,r){let n=this.prepareSwapData(e);this.executeSwapContract(t,n,i)}prepareSwapData(t){let e=t.path;if(t.path.publishedAt==null)throw new Error("Springsui not set publishedAt");let i=e.direction?e.target:e.from,r=t.isLastUseOfIntermediateToken?ct.MAX_AMOUNT_IN:e.amountIn;return{springSUICoinType:i,direction:e.direction,amountIn:r,publishedAt:e.publishedAt,poolId:e.id}}executeSwapContract(t,e,i){let r=[i,t.object(e.poolId),t.object("0x5"),t.pure.u64(e.amountIn),t.pure.bool(e.direction)];t.moveCall({target:`${e.publishedAt}::springsui::swap`,typeArguments:[e.springSUICoinType],arguments:r})}},ng=class{constructor(t,e){if(t!==0)throw new Error("Haedal PMM only supported on mainnet");this.pythPriceIDs=e}swap(t,e,i,r){let n=e.path;if(!n.extendedDetails)throw new Error("Extended details not found for Haedal PMM");this.validateExtendedDetails(n.extendedDetails);let o=this.prepareSwapData(e);this.executeSwapContract(t,o,i)}validateExtendedDetails(t){if(!t.haedal_pmm_base_price_seed)throw new Error("Haedal PMM base price seed not supported");if(!t.haedal_pmm_quote_price_seed)throw new Error("Haedal PMM quote price seed not supported")}prepareSwapData(t){let e=t.path;if(t.path.publishedAt==null)throw new Error("Haedal PMM not set publishedAt");let i=e.extendedDetails,[r,n]=e.direction?[e.from,e.target]:[e.target,e.from],o=t.isLastUseOfIntermediateToken?ct.MAX_AMOUNT_IN:e.amountIn,a=i.haedal_pmm_base_price_seed,l=i.haedal_pmm_quote_price_seed,d=this.pythPriceIDs.get(a),f=this.pythPriceIDs.get(l);if(!d||!f)throw new Error("Haedal HMM requires oracle price IDs for both coins");return{coinAType:r,coinBType:n,basePriceId:d,quotePriceId:f,a2b:e.direction,amountIn:o,publishedAt:e.publishedAt,poolId:e.id}}executeSwapContract(t,e,i){let r=[i,t.object(e.poolId),t.object(e.basePriceId),t.object(e.quotePriceId),t.pure.u64(e.amountIn),t.pure.bool(e.a2b),t.object(ft)];t.moveCall({target:`${e.publishedAt}::haedal_hmm::swap`,typeArguments:[e.coinAType,e.coinBType],arguments:r})}},og=class{constructor(t,e){if(t===1)throw new Error("Obric is not supported on testnet");this.pythStateObjectId="0x1f9310238ee9298fb703c3419030b35b22bb1cc37113e3bb5007c99aec79e5b8",this.pythPriceIDs=e}swap(t,e,i,r){let n=this.prepareSwapData(e);this.executeSwapContract(t,n,i)}prepareSwapData(t){let e=t.path;if(t.path.publishedAt==null)throw new Error("Obric not set publishedAt");if(!e.extendedDetails)throw new Error("Extended details not supported in obric");let{direction:i,from:r,target:n}=e,[o,a]=i?[r,n]:[n,r],l=t.isLastUseOfIntermediateToken?ct.MAX_AMOUNT_IN:e.amountIn,d,f;if(e.extendedDetails.obric_coin_a_price_seed&&e.extendedDetails.obric_coin_b_price_seed)d=this.pythPriceIDs.get(e.extendedDetails.obric_coin_a_price_seed),f=this.pythPriceIDs.get(e.extendedDetails.obric_coin_b_price_seed);else if(e.extendedDetails.obric_coin_a_price_id&&e.extendedDetails.obric_coin_b_price_id)d=e.extendedDetails.obric_coin_a_price_id,f=e.extendedDetails.obric_coin_b_price_id;else throw new Error("Base price id or quote price id not supported");return{coinAType:o,coinBType:a,coinAPriceInfoObjectId:d,coinBPriceInfoObjectId:f,direction:i,amountIn:l,publishedAt:e.publishedAt,poolId:e.id,extendedDetails:e.extendedDetails}}executeSwapContract(t,e,i){if(!e.coinAPriceInfoObjectId||!e.coinBPriceInfoObjectId)throw new Error("Base price info object id or quote price info object id not found");let r=[i,t.object(e.poolId),t.pure.u64(e.amountIn),t.pure.bool(e.direction),t.object(this.pythStateObjectId),t.object(e.coinAPriceInfoObjectId),t.object(e.coinBPriceInfoObjectId),t.object(ft)];t.moveCall({target:`${e.publishedAt}::obric::swap`,typeArguments:[e.coinAType,e.coinBType],arguments:r})}},sg=class{constructor(t,e){if(t!==0)throw new Error("Sevenk only supported on mainnet");this.oraclePublishedAt="0x8c36ea167c5e6da8c3d60b4fc897416105dcb986471bd81cfbfd38720a4487c0",this.pythPriceIDs=e}swap(t,e,i,r){let n=this.prepareSwapData(e);this.executeSwapContract(t,n,i,r)}prepareSwapData(t){let e=t.path;if(t.path.publishedAt==null)throw new Error("Sevenk not set publishedAt");if(!e.extendedDetails)throw new Error("Extended details not found for Sevenk");let{direction:i,from:r,target:n}=e,[o,a,l]=i?["swap_a2b",r,n]:["swap_b2a",n,r],d=t.isLastUseOfIntermediateToken?ct.MAX_AMOUNT_IN:e.amountIn,f=e.extendedDetails;if(!f.sevenk_coin_a_price_seed||!f.sevenk_coin_b_price_seed||!f.sevenk_oracle_config_a||!f.sevenk_oracle_config_b||!f.sevenk_lp_cap_type)throw new Error("Required Sevenk extended details not found");let g=f.sevenk_coin_a_price_seed,v=f.sevenk_coin_b_price_seed,y=f.sevenk_oracle_config_a,S=f.sevenk_oracle_config_b,I=f.sevenk_lp_cap_type,x=this.pythPriceIDs.get(g),B=this.pythPriceIDs.get(v);if(!x||!B)throw new Error("Sevenk price info object IDs not found");return{func:o,coinAType:a,coinBType:l,coinAPriceId:x,coinBPriceId:B,coinAOracleId:y,coinBOracleId:S,lpCapType:I,direction:i,amountIn:d,publishedAt:e.publishedAt,poolId:e.id,extendedDetails:e.extendedDetails}}executeSwapContract(t,e,i,r){let n=t.moveCall({target:`${this.oraclePublishedAt}::oracle::new_holder`,typeArguments:[],arguments:[]});t.moveCall({target:`${this.oraclePublishedAt}::pyth::get_price`,typeArguments:[],arguments:[t.object(e.coinAOracleId),n,t.object(e.coinAPriceId),t.object(ft)]}),t.moveCall({target:`${this.oraclePublishedAt}::pyth::get_price`,typeArguments:[],arguments:[t.object(e.coinBOracleId),n,t.object(e.coinBPriceId),t.object(ft)]});let o=[i,t.object(e.poolId),n,t.pure.u64(e.amountIn)];t.moveCall({target:`${e.publishedAt}::sevenk::${e.func}`,typeArguments:[e.coinAType,e.coinBType,e.lpCapType],arguments:o})}},ag=class{constructor(t,e){if(t!==0)throw new Error("Steamm OMM only supported on mainnet");this.pythPriceIDs=e,this.oraclePackageId="0xe84b649199654d18c38e727212f5d8dacfc3cf78d60d0a7fc85fd589f280eb2b"}swap(t,e,i,r){let n=e.path;if(!n.extendedDetails)throw new Error("Extended details not found for Steamm OMM");this.validateExtendedDetails(n.extendedDetails);let o=this.prepareSwapData(e);this.executeSwapContract(t,o,i)}validateExtendedDetails(t){let e=["steamm_bank_a","steamm_bank_b","steamm_lending_market","steamm_lending_market_type","steamm_btoken_a_type","steamm_btoken_b_type","steamm_lp_token_type","steammOracleRegistryId","steammOracleIndexA","steammOracleIndexB","steammOraclePythPriceSeedA","steammOraclePythPriceSeedB"];for(let i of e)if(t[i]==null)throw new Error(`Steamm ${i} not supported`)}prepareSwapData(t){let e=t.path;if(t.path.publishedAt==null)throw new Error("Steamm OMM not set publishedAt");let i=e.extendedDetails,{direction:r,from:n,target:o}=e,[a,l,d]=r?["swap_a2b_v2",n,o]:["swap_b2a_v2",o,n],f=t.isLastUseOfIntermediateToken?ct.MAX_AMOUNT_IN:e.amountIn,g=i.steamm_oracle_pyth_price_seed_a,v=i.steamm_oracle_pyth_price_seed_b;if(!g||!v)throw new Error("Steamm oracle price seeds not found");let y=this.pythPriceIDs.get(g),S=this.pythPriceIDs.get(v);if(!y||!S)throw new Error("Base price info object id or quote price info object id not found");return{func:a,coinAType:l,coinBType:d,direction:r,amountIn:f,publishedAt:e.publishedAt,poolId:e.id,extendedDetails:i,priceInfoObjectIdA:y,priceInfoObjectIdB:S}}executeSwapContract(t,e,i){let r=e.extendedDetails,n=t.moveCall({target:`${this.oraclePackageId}::oracles::get_pyth_price`,typeArguments:[],arguments:[t.object(r.steammOracleRegistryId),t.object(e.priceInfoObjectIdA),t.pure.u64(r.steammOracleIndexA),t.object(ft)]}),o=t.moveCall({target:`${this.oraclePackageId}::oracles::get_pyth_price`,typeArguments:[],arguments:[t.object(r.steammOracleRegistryId),t.object(e.priceInfoObjectIdB),t.pure.u64(r.steammOracleIndexB),t.object(ft)]}),a=[i,t.object(e.poolId),t.object(r.steamm_bank_a),t.object(r.steamm_bank_b),t.object(r.steamm_lending_market),n,o,t.pure.u64(e.amountIn),t.object(ft)];t.moveCall({target:`${e.publishedAt}::steamm_omm::${e.func}`,typeArguments:[r.steamm_lending_market_type,e.coinAType,e.coinBType,r.steamm_btoken_a_type,r.steamm_btoken_b_type,r.steamm_lp_token_type],arguments:a})}},ug=class{constructor(t,e){if(t!==0)throw new Error("Steamm OMM V2 only supported on mainnet");this.pythPriceIDs=e,this.oraclePackageId="0xe84b649199654d18c38e727212f5d8dacfc3cf78d60d0a7fc85fd589f280eb2b"}swap(t,e,i,r){let n=e.path;if(!n.extendedDetails)throw new Error("Extended details not found for Steamm OMM V2");this.validateExtendedDetails(n.extendedDetails);let o=this.prepareSwapData(e);this.executeSwapContract(t,o,i)}validateExtendedDetails(t){let e=["steamm_bank_a","steamm_bank_b","steamm_lending_market","steamm_lending_market_type","steamm_btoken_a_type","steamm_btoken_b_type","steamm_lp_token_type","steamm_oracle_registry_id","steamm_oracle_index_a","steamm_oracle_index_b","steamm_oracle_pyth_price_seed_a","steamm_oracle_pyth_price_seed_b"];for(let i of e)if(t[i]==null)throw new Error(`Steamm OMM V2 ${i} not supported`)}prepareSwapData(t){let e=t.path;if(t.path.publishedAt==null)throw new Error("Steamm OMM V2 not set publishedAt");let i=e.extendedDetails,{direction:r,from:n,target:o}=e,[a,l]=r?[n,o]:[o,n],d=t.isLastUseOfIntermediateToken?ct.MAX_AMOUNT_IN:e.amountIn,f=i.steamm_oracle_pyth_price_seed_a,g=i.steamm_oracle_pyth_price_seed_b;if(!f||!g)throw new Error("Steamm OMM V2 oracle price seeds not found");let v=this.pythPriceIDs.get(f),y=this.pythPriceIDs.get(g);if(!v||!y)throw new Error("Base price info object id or quote price info object id not found");return{coinAType:a,coinBType:l,direction:r,amountIn:d,publishedAt:e.publishedAt,poolId:e.id,extendedDetails:i,priceInfoObjectIdA:v,priceInfoObjectIdB:y}}executeSwapContract(t,e,i){let r=e.extendedDetails,n=t.moveCall({target:`${this.oraclePackageId}::oracles::get_pyth_price`,typeArguments:[],arguments:[t.object(r.steamm_oracle_registry_id),t.object(e.priceInfoObjectIdA),t.pure.u64(r.steamm_oracle_index_a),t.object(ft)]}),o=t.moveCall({target:`${this.oraclePackageId}::oracles::get_pyth_price`,typeArguments:[],arguments:[t.object(r.steamm_oracle_registry_id),t.object(e.priceInfoObjectIdB),t.pure.u64(r.steamm_oracle_index_b),t.object(ft)]}),a=[i,t.object(e.poolId),t.object(r.steamm_bank_a),t.object(r.steamm_bank_b),t.object(r.steamm_lending_market),n,o,t.pure.bool(e.direction),t.pure.u64(e.amountIn),t.object(ft)];t.moveCall({target:`${e.publishedAt}::steamm_omm_v2::swap`,typeArguments:[r.steamm_lending_market_type,e.coinAType,e.coinBType,r.steamm_btoken_a_type,r.steamm_btoken_b_type,r.steamm_lp_token_type],arguments:a})}},lg="0x790f258062909e3a0ffc78b3c53ac2f62d7084c3bab95644bdeb05add7250001::super_sui::SUPER_SUI",cg="0xe44df51c0b21a27ab915fa1fe2ca610cd3eaa6d9666fe5e62b988bf7f0bd8722::musd::MUSD",dg="0xccd628c2334c5ed33e6c47d6c21bb664f8b6307b2ac32c2462a61f69a31ebcee::meth::METH",hg=class{constructor(t,e){if(t!==0)throw new Error("Metastable only supported on mainnet");this.versionID="0x4696559327b35ff2ab26904e7426a1646312e9c836d5c6cff6709a5ccc30915c",this.pythPriceIDs=e}swap(t,e,i,r){let n=this.prepareSwapData(e),o=this.createDepositCap(t,n);this.executeSwapContract(t,n,i,o)}prepareSwapData(t){let e=t.path;if(t.path.publishedAt==null)throw new Error("Metastable not set publishedAt");if(!e.extendedDetails)throw new Error("Extended details not found for Metastable");let{direction:i,from:r,target:n}=e,[o,a]=i?[r,n]:[n,r],[l,d]=i?["swap_a2b","create_deposit_cap"]:["swap_b2a","create_withdraw_cap"];if(!e.extendedDetails.metastable_create_cap_pkg_id||!e.extendedDetails.metastable_create_cap_module||!e.extendedDetails.metastable_whitelisted_app_id)throw new Error("CreateCapPkgId or CreateCapModule or WhitelistedAppId not found in extended details");let f=t.isLastUseOfIntermediateToken?ct.MAX_AMOUNT_IN:e.amountIn;return{coinType:o,metaCoinType:a,func:l,createCapFunc:d,direction:i,amountIn:f,publishedAt:e.publishedAt,poolId:e.id,extendedDetails:e.extendedDetails}}createDepositCap(t,e){let i=[e.metaCoinType];e.extendedDetails.metastable_create_cap_all_type_params&&i.push(e.coinType);let r=[t.object(e.extendedDetails.metastable_whitelisted_app_id),t.object(e.poolId)];switch(e.metaCoinType){case lg:{if(!e.extendedDetails.metastable_registry_id)throw new Error("Not found registry id for super sui");r.push(t.object(e.extendedDetails.metastable_registry_id));break}case cg:case dg:{if(e.extendedDetails.metastable_price_seed!=null){let n=this.pythPriceIDs.get(e.extendedDetails.metastable_price_seed);if(n==null)throw new Error("Invalid Pyth price feed: "+e.extendedDetails.metastable_price_seed);r.push(t.object(n))}if(e.extendedDetails.metastable_eth_price_seed!=null){let n=this.pythPriceIDs.get(e.extendedDetails.metastable_eth_price_seed);if(n==null)throw new Error("Invalid Pyth price feed: "+e.extendedDetails.metastable_eth_price_seed);r.push(t.object(n))}r.push(t.object(ft));break}default:throw new Error("Invalid Metacoin: "+e.metaCoinType)}return t.moveCall({target:`${e.extendedDetails.metastable_create_cap_pkg_id}::${e.extendedDetails.metastable_create_cap_module}::${e.createCapFunc}`,typeArguments:i,arguments:r})}executeSwapContract(t,e,i,r){let n=[i,t.object(e.poolId),t.object(this.versionID),r,t.pure.u64(e.amountIn)];t.moveCall({target:`${e.publishedAt}::metastable::${e.func}`,typeArguments:[e.coinType,e.metaCoinType],arguments:n})}},fg=class{constructor(t){if(t!==0)throw new Error("Alphafi only supported on mainnet");this.suiSystemState="0x0000000000000000000000000000000000000000000000000000000000000005"}swap(t,e,i,r){let n=this.prepareSwapData(e);this.executeSwapContract(t,n,i)}prepareSwapData(t){if(t.path.publishedAt==null)throw new Error("Alphafi not set publishedAt");let e=t.path,[i,r]=e.direction?[e.from,e.target]:[e.target,e.from],n=t.isLastUseOfIntermediateToken?ct.MAX_AMOUNT_IN:e.amountIn;return{coinAType:i,coinBType:r,direction:e.direction,amountIn:n,publishedAt:e.publishedAt,poolId:e.id}}executeSwapContract(t,e,i){let r=[i,t.object(e.poolId),t.object(this.suiSystemState),t.pure.bool(e.direction),t.pure.u64(e.amountIn)];t.moveCall({target:`${e.publishedAt}::alphafi::swap`,typeArguments:[e.coinBType],arguments:r})}},pg=class{constructor(t){if(t!==0)throw new Error("Volo only supported on mainnet");this.stakePool="0x2d914e23d82fedef1b5f56a32d5c64bdcc3087ccfea2b4d6ea51a71f587840e5",this.metadata="0x680cd26af32b2bde8d3361e804c53ec1d1cfe24c7f039eb7f549e8dfde389a60"}swap(t,e,i,r){let n=this.prepareSwapData(e);this.executeSwapContract(t,n,i)}prepareSwapData(t){let e=t.path;if(t.path.publishedAt==null)throw new Error("Volo not set publishedAt");let[i,r]=e.direction?[e.from,e.target]:[e.target,e.from],n=t.isLastUseOfIntermediateToken?ct.MAX_AMOUNT_IN:e.amountIn;return{coinAType:i,coinBType:r,direction:e.direction,amountIn:n,publishedAt:e.publishedAt,poolId:e.id}}executeSwapContract(t,e,i){let r=[i,t.object(this.stakePool),t.object(this.metadata),t.object("0x5"),t.pure.bool(e.direction),t.pure.u64(e.amountIn)];t.moveCall({target:`${e.publishedAt}::volo::swap`,typeArguments:[],arguments:r})}},mg=class{constructor(t){if(t!==0)throw new Error("afSUI only supported on mainnet");this.stakedSuiVault="0x2f8f6d5da7f13ea37daa397724280483ed062769813b6f31e9788e59cc88994d",this.safe="0xeb685899830dd5837b47007809c76d91a098d52aabbf61e8ac467c59e5cc4610",this.referVault="0x4ce9a19b594599536c53edb25d22532f82f18038dc8ef618afd00fbbfb9845ef",this.validator="0xd30018ec3f5ff1a3c75656abf927a87d7f0529e6dc89c7ddd1bd27ecb05e3db2"}swap(t,e,i,r){let n=this.prepareSwapData(e);this.executeSwapContract(t,n,i)}prepareSwapData(t){if(t.path.publishedAt==null)throw new Error("AFSUI not set publishedAt");let e=t.path,[i,r]=e.direction?[e.from,e.target]:[e.target,e.from],n=t.isLastUseOfIntermediateToken?ct.MAX_AMOUNT_IN:e.amountIn;return{coinAType:i,coinBType:r,direction:e.direction,amountIn:n,publishedAt:e.publishedAt,poolId:e.id}}executeSwapContract(t,e,i){if(!e.direction)throw new Error("AFSUI not support b2a swap");let r=[i,t.object(this.stakedSuiVault),t.object(this.safe),t.object("0x5"),t.object(this.referVault),t.pure.address(this.validator),t.pure.bool(e.direction),t.pure.u64(e.amountIn)];t.moveCall({target:`${e.publishedAt}::afsui::swap`,typeArguments:[],arguments:r})}},_g=class{constructor(t){if(t!==0)throw new Error("Haedal only supported on mainnet")}swap(t,e,i,r){let n=this.prepareSwapData(e);this.executeSwapContract(t,n,i)}prepareSwapData(t){let e=t.path;if(t.path.publishedAt==null)throw new Error("Haedal not set publishedAt");let[i,r]=e.direction?[e.from,e.target]:[e.target,e.from],n=t.isLastUseOfIntermediateToken?ct.MAX_AMOUNT_IN:e.amountIn;return{coinAType:i,coinBType:r,direction:e.direction,amountIn:n,publishedAt:e.publishedAt,poolId:e.id}}executeSwapContract(t,e,i){let r=[i,t.object(e.poolId),t.object("0x5"),t.pure.bool(e.direction),t.pure.u64(e.amountIn)];t.moveCall({target:`${e.publishedAt}::hasui::swap`,typeArguments:[],arguments:r})}},gg=class{constructor(t){if(t!==0)throw new Error("Hawal only supported on mainnet");this.staking="0x10b9d30c28448939ce6c4d6c6e0ffce4a7f8a4ada8248bdad09ef8b70e4a3904",this.validator="0x7b3ba6de2ae58283f60d5b8dc04bb9e90e4796b3b2e0dea75569f491275242e7"}swap(t,e,i,r){let n=this.prepareSwapData(e);this.executeSwapContract(t,n,i)}prepareSwapData(t){let e=t.path;if(t.path.publishedAt==null)throw new Error("Hawal not set publishedAt");let[i,r]=e.direction?[e.from,e.target]:[e.target,e.from],n=t.isLastUseOfIntermediateToken?ct.MAX_AMOUNT_IN:e.amountIn;return{coinAType:i,coinBType:r,direction:e.direction,amountIn:n,publishedAt:e.publishedAt,poolId:e.id}}executeSwapContract(t,e,i){let r=[i,t.object(this.staking),t.object(e.poolId),t.pure.address(this.validator),t.pure.bool(e.direction),t.pure.u64(e.amountIn)];t.moveCall({target:`${e.publishedAt}::hawal::swap`,typeArguments:[],arguments:r})}},wg=ct.DEFAULT_PUBLISHED_AT.Mainnet;function Yn(t,e){return t&&t.has(zn.AGGREGATOR_V3)?t.get(zn.AGGREGATOR_V3):e||wg}function Fc(t,e){let{quoteID:i,fromCoinType:r,targetCoinType:n,expectAmountOut:o,amountOutLimit:a,inputCoin:l,feeRate:d,feeRecipient:f,aggregatorPublishedAt:g,packages:v}=t,y=Yn(v,g),S=[e.pure.string(i),e.pure.u64(o.toString()),e.pure.u64(a.toString()),l,e.pure.u32(Number(d.toString())),e.pure.address(f)];return e.moveCall({target:`${y}::router::new_swap_context`,typeArguments:[r,n],arguments:S})}function qc(t,e){let{quoteID:i,fromCoinType:r,targetCoinType:n,maxAmountIn:o,expectAmountOut:a,amountOutLimit:l,inputCoin:d,feeRate:f,feeRecipient:g,aggregatorPublishedAt:v,packages:y}=t,S=Yn(y,v),I=[e.pure.string(i),e.pure.u64(o.toString()),e.pure.u64(a.toString()),e.pure.u64(l.toString()),d,e.pure.u32(Number(f.toString())),e.pure.address(g)];return e.moveCall({target:`${S}::router::new_swap_context_v2`,typeArguments:[r,n],arguments:I})}function bs(t,e){let{swapContext:i,targetCoinType:r,aggregatorPublishedAt:n,packages:o}=t,a=Yn(o,n);return e.moveCall({target:`${a}::router::confirm_swap`,typeArguments:[r],arguments:[i]})}function Uc(t,e){let{coinType:i,amount:r,swapCtx:n,aggregatorPublishedAt:o,packages:a}=t,l=Yn(a,o),d=[n,e.pure.u64(r.toString())];return e.moveCall({target:`${l}::router::take_balance`,typeArguments:[i],arguments:d})}function $c(t,e){let{balance:i,coinType:r,recipient:n,aggregatorPublishedAt:o,packages:a}=t,l=Yn(a,o),d=[i,e.pure.address(n)];e.moveCall({target:`${l}::router::transfer_balance`,typeArguments:[r],arguments:d})}function Vc(t,e){let{coin:i,coinType:r,aggregatorPublishedAt:n,packages:o}=t,a=Yn(o,n);e.moveCall({target:`${a}::router::transfer_or_destroy_coin`,typeArguments:[r],arguments:[i]})}var Zc=16*1024,vg=class{constructor(t,e,i,r){this.priceFeedObjectIdCache=new Map,this.client=t,this.pythStateId=e,this.wormholeStateId=i;let n=[...r];n.includes("https://hermes.pyth.network")||n.push("https://hermes.pyth.network"),this.hermesClients=n.map(o=>new ws(o,{timeout:3e3}))}async getPriceFeedsUpdateData(t){let e=null;for(let i of this.hermesClients)try{return(await i.getLatestPriceUpdates(t,{encoding:"hex"})).binary.data.map(n=>Buffer.from(n,"hex"))}catch(r){e=r;continue}throw new Error(`All Pyth Hermes endpoints are unavailable. Detailed error: ${e?.message}`)}async getBaseUpdateFee(){if(this.baseUpdateFee!==void 0)return this.baseUpdateFee;let e=(await this.client.getObject({id:this.pythStateId,options:{showContent:!0}})).data?.content,i=e&&"fields"in e?e.fields:null;if(!i)throw new Error("Unable to fetch pyth state object");return this.baseUpdateFee=Number(i.base_update_fee),this.baseUpdateFee}async getPackageId(t){let i=(await this.client.getObject({id:t,options:{showContent:!0}})).data?.content,r=i&&"fields"in i?i.fields:null;if(!r)throw new Error(`Cannot fetch package id for object ${t}`);if("upgrade_cap"in r){let o=r.upgrade_cap?.fields?.package;if(typeof o=="string")return o}throw new Error("upgrade_cap not found")}async getWormholePackageId(){return this.wormholePackageId||(this.wormholePackageId=await this.getPackageId(this.wormholeStateId)),this.wormholePackageId}async getPythPackageId(){return this.pythPackageId||(this.pythPackageId=await this.getPackageId(this.pythStateId)),this.pythPackageId}async getPriceFeedObjectId(t){let e=t.replace("0x","");if(this.priceFeedObjectIdCache.has(e))return this.priceFeedObjectIdCache.get(e);let{id:i,fieldType:r}=await this.getPriceTableInfo(),n=Buffer.from(e,"hex");try{let a=(await this.client.getDynamicFieldObject({parentId:i,name:{type:`${r}::price_identifier::PriceIdentifier`,value:{bytes:Array.from(n)}}})).data?.content,l=a&&"fields"in a?a.fields:null,d=typeof l?.value=="string"?l.value:void 0;return d?(this.priceFeedObjectIdCache.set(e,d),d):void 0}catch{return}}async getPriceTableInfo(){if(this.priceTableInfo!==void 0)return this.priceTableInfo;let t=await this.client.getDynamicFieldObject({parentId:this.pythStateId,name:{type:"vector<u8>",value:"price_info"}});if(!t.data?.type)throw new Error("Price Table not found, contract may not be initialized");let e=t.data.type.replace("0x2::table::Table<","");return e=e.replace("::price_identifier::PriceIdentifier, 0x2::object::ID>",""),this.priceTableInfo={id:t.data.objectId,fieldType:e},this.priceTableInfo}extractVaaBytesFromAccumulatorMessage(t){let i=7+t.readUint8(6)+1,r=t.readUint16BE(i),n=i+2;return t.subarray(n,n+r)}async verifyVaas(t,e){let i=await this.getWormholePackageId(),r=[];for(let n of t){let[o]=e.moveCall({target:`${i}::vaa::parse_and_verify`,arguments:[e.object(this.wormholeStateId),e.pure(vs.vector(vs.u8()).serialize(Array.from(n),{maxSize:Zc}).toBytes()),e.object(ft)]});r.push(o)}return r}async verifyVaasAndGetHotPotato(t,e,i){if(e.length>1)throw new Error("SDK does not support sending multiple accumulator messages in a single transaction");let r=this.extractVaaBytesFromAccumulatorMessage(e[0]),n=await this.verifyVaas([r],t),[o]=t.moveCall({target:`${i}::pyth::create_authenticated_price_infos_using_accumulator`,arguments:[t.object(this.pythStateId),t.pure(vs.vector(vs.u8()).serialize(Array.from(e[0]),{maxSize:Zc}).toBytes()),n[0],t.object(ft)]});return o}async updatePriceFeeds(t,e,i){let r=await this.getPythPackageId(),n=await this.verifyVaasAndGetHotPotato(t,e,r),o=await this.getBaseUpdateFee(),a=t.splitCoins(t.gas,i.map(()=>t.pure.u64(o))),l=[],d=0;for(let f of i){let g=await this.getPriceFeedObjectId(f);if(!g)throw new Error(`Price feed ${f} not found, please create it first`);l.push(g),[n]=t.moveCall({target:`${r}::pyth::update_single_price_feed`,arguments:[t.object(this.pythStateId),n,t.object(g),a[d],t.object(ft)]}),d++}return t.moveCall({target:`${r}::hot_potato_vector::destroy`,arguments:[n],typeArguments:[`${r}::price_info::PriceInfo`]}),l}};function yg(t){return t.endsWith("/find_routes")?t.replace("/find_routes",""):t}var Ty=Jn(Qn());var Ey=Jn(Qn());var bg=class{constructor(t,e){if(t!==0)throw new Error("Haedal HMM V2 only supported on mainnet");this.pythPriceIDs=e}swap(t,e,i,r){let n=e.path;if(!n.extendedDetails)throw new Error("Extended details not found for Haedal HMM V2");console.log("path.extendedDetails",n.extendedDetails),this.validateExtendedDetails(n.extendedDetails);let o=this.prepareSwapData(e);this.executeSwapContract(t,o,i)}validateExtendedDetails(t){if(!t.haedalhmmv2_base_price_seed)throw new Error("Haedal HMM V2 base price seed not supported")}prepareSwapData(t){let e=t.path;if(t.path.publishedAt==null)throw new Error("Haedal HMM V2 not set publishedAt");let i=e.extendedDetails,[r,n]=e.direction?[e.from,e.target]:[e.target,e.from],o=t.isLastUseOfIntermediateToken?ct.MAX_AMOUNT_IN:e.amountIn,a=i.haedalhmmv2_base_price_seed,l=this.pythPriceIDs.get(a);if(!l)throw new Error("Haedal HMM V2 requires oracle price IDs for base coin");return{coinAType:r,coinBType:n,basePriceId:l,a2b:e.direction,amountIn:o,publishedAt:e.publishedAt,poolId:e.id}}executeSwapContract(t,e,i){let r=[i,t.object(e.poolId),t.object(e.basePriceId),t.pure.u64(e.amountIn),t.pure.bool(e.a2b),t.object(ft)];t.moveCall({target:`${e.publishedAt}::haedal_hmm_v2::swap`,typeArguments:[e.coinAType,e.coinBType],arguments:r})}},Mg=class{constructor(t){if(t!==0)throw new Error("Fullsail only supported on mainnet");this.globalConfig="0xe93baa80cb570b3a494cbf0621b2ba96bc993926d34dc92508c9446f9a05d615",this.vault="0xfb971d3a2fb98bde74e1c30ba15a3d8bef60a02789e59ae0b91660aeed3e64e1",this.stats="0x6822a33d1d971e040c32f7cc74507010d1fe786f7d06ab89135083ddb07d2dc2",this.price_provider="0x854b2d2c0381bb656ec962f8b443eb082654384cf97885359d1956c7d76e33c9"}swap(t,e,i,r){let n=this.prepareSwapData(e);this.executeSwapContract(t,n,i)}prepareSwapData(t){let e=t.path;if(t.path.publishedAt==null)throw new Error("Fullsail not set publishedAt");let[i,r]=e.direction?[e.from,e.target]:[e.target,e.from],n=t.isLastUseOfIntermediateToken?ct.MAX_AMOUNT_IN:e.amountIn;return{coinAType:i,coinBType:r,direction:e.direction,amountIn:n,publishedAt:e.publishedAt,poolId:e.id}}executeSwapContract(t,e,i){let r=[i,t.object(this.globalConfig),t.object(this.vault),t.object(this.stats),t.object(this.price_provider),t.object(e.poolId),t.pure.bool(e.direction),t.pure.u64(e.amountIn),t.object(ft)];t.moveCall({target:`${e.publishedAt}::fullsail::swap`,typeArguments:[e.coinAType,e.coinBType],arguments:r})}},kg=class{constructor(t,e){if(t!==0)throw new Error("CetusRouter only supported on mainnet");this.globalConfig="0xf31b605d117f959b9730e8c07b08b856cb05143c5e81d5751c90d2979e82f599",this.partner=e??"0x59ae16f6c42f578063c2da9b9c0173fe58120ceae08e40fd8212c8eceb80bb86",this.versioned="0x05370b2d656612dd5759cbe80463de301e3b94a921dfc72dd9daa2ecdeb2d0a8"}swap(t,e,i,r){let n=this.prepareSwapData(e);this.executeSwapContract(t,n,i)}prepareSwapData(t){if(t.path.publishedAt==null)throw new Error("Cetus not set publishedAt");let e=t.path,[i,r]=e.direction?[e.from,e.target]:[e.target,e.from],n=t.isLastUseOfIntermediateToken?ct.MAX_AMOUNT_IN:e.amountIn;return{coinAType:i,coinBType:r,direction:e.direction,amountIn:n,publishedAt:e.publishedAt,poolId:e.id}}executeSwapContract(t,e,i){let r=[i,t.object(this.globalConfig),t.object(e.poolId),t.object(this.partner),t.pure.bool(e.direction),t.pure.u64(e.amountIn),t.object(this.versioned),t.object(ft)];t.moveCall({target:`${e.publishedAt}::cetus_dlmm::swap`,typeArguments:[e.coinAType,e.coinBType],arguments:r})}},Ag=class{constructor(t){if(t!==0)throw new Error("Ferra DLMM only supported on mainnet");this.globalConfig="0x5c9dacf5a678ea15b8569d65960330307e23d429289ca380e665b1aa175ebeca"}swap(t,e,i,r){let n=this.prepareSwapData(e);this.executeSwapContract(t,n,i)}prepareSwapData(t){if(t.path.publishedAt==null)throw new Error("Ferra DLMM not set publishedAt");let e=t.path,[i,r]=e.direction?[e.from,e.target]:[e.target,e.from],n=t.isLastUseOfIntermediateToken?ct.MAX_AMOUNT_IN:e.amountIn;return{coinAType:i,coinBType:r,direction:e.direction,amountIn:n,publishedAt:e.publishedAt,poolId:e.id}}executeSwapContract(t,e,i){let r=[i,t.object(this.globalConfig),t.object(e.poolId),t.pure.bool(e.direction),t.pure.u64(e.amountIn),t.object(ft)];t.moveCall({target:`${e.publishedAt}::ferra_dlmm::swap`,typeArguments:[e.coinAType,e.coinBType],arguments:r})}},Sg=class{constructor(t){if(t!==0)throw new Error("Ferra CLMM only supported on mainnet");this.globalConfig="0x2cd8382c19e6994f16df204e9b8cddd04bdc486c251de75ac66ac4e48e3e7081"}swap(t,e,i,r){let n=this.prepareSwapData(e);this.executeSwapContract(t,n,i)}prepareSwapData(t){if(t.path.publishedAt==null)throw new Error("Ferra CLMM not set publishedAt");let e=t.path,[i,r]=e.direction?[e.from,e.target]:[e.target,e.from],n=t.isLastUseOfIntermediateToken?ct.MAX_AMOUNT_IN:e.amountIn;return{coinAType:i,coinBType:r,direction:e.direction,amountIn:n,publishedAt:e.publishedAt,poolId:e.id}}executeSwapContract(t,e,i){let r=[i,t.object(this.globalConfig),t.object(e.poolId),t.pure.bool(e.direction),t.pure.u64(e.amountIn),t.object(ft)];t.moveCall({target:`${e.publishedAt}::ferra_clmm::swap`,typeArguments:[e.coinAType,e.coinBType],arguments:r})}},Hc="CETUS";var Cg="KRIYA",Tg="FLOWX",Eg="FLOWXV3",xg="KRIYAV3",Ig="TURBOS",Pg="AFTERMATH",Og="HAEDAL",Rg="VOLO",Ng="AFSUI",Dg="BLUEMOVE",Lg="DEEPBOOKV3",jg="SCALLOP",Bg="SUILEND",Fg="BLUEFIN",ld="HAEDALPMM",qg="ALPHAFI",Ug="SPRINGSUI",$g="STEAMM",cd="METASTABLE",dd="OBRIC",Vg="HAWAL",hd="STEAMM_OMM",Zg="MOMENTUM",fd="STEAMM_OMM_V2",Hg="MAGMA",pd="SEVENK",md="HAEDALHMMV2",Wg="FULLSAIL",Gg="CETUSDLMM",zg="FERRADLMM",Kg="FERRACLMM",Xg="https://api-sui.cetus.zone/router_v3";function su(t){let e=new Set;for(let i of t){if(i.provider===ld&&i.extendedDetails&&i.extendedDetails.haedal_pmm_base_price_seed&&i.extendedDetails.haedal_pmm_quote_price_seed&&(e.add(i.extendedDetails.haedal_pmm_base_price_seed),e.add(i.extendedDetails.haedal_pmm_quote_price_seed)),i.provider===cd&&(i.extendedDetails&&i.extendedDetails.metastable_price_seed&&e.add(i.extendedDetails.metastable_price_seed),i.extendedDetails&&i.extendedDetails.metastable_eth_price_seed&&e.add(i.extendedDetails.metastable_eth_price_seed)),i.provider===dd&&(i.extendedDetails&&i.extendedDetails.obric_coin_a_price_seed&&e.add(i.extendedDetails.obric_coin_a_price_seed),i.extendedDetails&&i.extendedDetails.obric_coin_b_price_seed&&e.add(i.extendedDetails.obric_coin_b_price_seed)),(i.provider===hd||i.provider===fd)&&(i.extendedDetails&&i.extendedDetails.steamm_oracle_pyth_price_seed_a&&e.add(i.extendedDetails.steamm_oracle_pyth_price_seed_a),i.extendedDetails&&i.extendedDetails.steamm_oracle_pyth_price_seed_b&&e.add(i.extendedDetails.steamm_oracle_pyth_price_seed_b)),i.provider===pd&&i.extendedDetails){let r=i.extendedDetails;r.sevenk_coin_a_price_seed&&e.add(r.sevenk_coin_a_price_seed),r.sevenk_coin_b_price_seed&&e.add(r.sevenk_coin_b_price_seed)}i.provider===md&&i.extendedDetails&&i.extendedDetails.haedalhmmv2_base_price_seed&&e.add(i.extendedDetails.haedalhmmv2_base_price_seed)}return Array.from(e)}var _d=class gd{constructor(e){this.endpoint=e.endpoint?yg(e.endpoint):Xg;let i=e.env===1?"testnet":"mainnet",r=e.env===1?"https://fullnode.testnet.sui.io:443":"https://fullnode.mainnet.sui.io:443";this.client=e.client??new Tm({network:i,url:r}),this.signer=e.signer||"",this.env=e.env||0;let n=gd.CONFIG[this.env];if(this.pythAdapter=new vg(this.client,n.pythStateId,n.wormholeStateId,e.pythUrls??[]),this.apiKey=e.apiKey||"",this.partner=e.partner,this.cetusDlmmPartner=e.cetusDlmmPartner,e.overlayFeeRate)if(e.overlayFeeRate>0&&e.overlayFeeRate<=zt.MAX_OVERLAY_FEE_RATE){if(this.overlayFeeRate=e.overlayFeeRate*ct.FEE_DENOMINATOR,this.overlayFeeRate>ct.MAX_FEE_RATE)throw new Error(zt.ERRORS.INVALID_OVERLAY_FEE_RATE)}else throw new Error(zt.ERRORS.INVALID_OVERLAY_FEE_RATE);else this.overlayFeeRate=0;this.overlayFeeReceiver=e.overlayFeeReceiver??zt.DEFAULT_OVERLAY_FEE_RECEIVER}deepbookv3DeepFeeType(){return this.env===0?Es.Mainnet:Es.Testnet}async getDeepbookV3Config(){return await Km(this.endpoint)}async getOneCoinUsedToMerge(e){try{let i=await this.client.getCoins({owner:this.signer,coinType:e,limit:1});return i.data.length===1?i.data[0].coinObjectId:null}catch{return null}}async findRouters(e){return Zm(this.endpoint,this.apiKey,e,this.overlayFeeRate,this.overlayFeeReceiver)}async findMergeSwapRouters(e){return zm(this.endpoint,this.apiKey,e,this.overlayFeeRate,this.overlayFeeReceiver)}async executeFlexibleInputSwap(e,i,r,n,o,a,l,d,f){}newDexRouterV3(e,i,r,n){switch(e){case Hc:return new ou(this.env,r);case xg:return new H_(this.env);case Eg:return new W_(this.env);case Ig:return new G_(this.env);case Fg:return new z_(this.env);case Zg:return new K_(this.env);case Hg:return new X_(this.env);case Cg:return new J_(this.env);case Tg:return new Q_(this.env);case Dg:return new Y_(this.env);case Lg:return new eg(this.env);case Pg:return new tg(this.env);case $g:return new ig(this.env);case jg:return new rg(this.env);case Bg:return new Bc(this.env);case Ug:return new Bc(this.env);case ld:return new ng(this.env,i);case dd:return new og(this.env,i);case pd:return new sg(this.env,i);case hd:return new ag(this.env,i);case fd:return new ug(this.env,i);case cd:return new hg(this.env,i);case qg:return new fg(this.env);case Rg:return new pg(this.env);case Ng:return new mg(this.env);case Og:return new _g(this.env);case Vg:return new gg(this.env);case md:return new bg(this.env,i);case Wg:return new Mg(this.env);case Gg:return new kg(this.env,n);case zg:return new Ag(this.env);case Kg:return new Sg(this.env);default:throw new Error(`${zt.ERRORS.UNSUPPORTED_DEX} ${e}`)}}expectInputSwapV3(e,i,r,n,o,a,l,d){if(r.quoteID==null)throw new Error(zt.ERRORS.QUOTE_ID_REQUIRED);let f=ys(r),g=Fc({quoteID:f.quoteID,fromCoinType:f.fromCoinType,targetCoinType:f.targetCoinType,expectAmountOut:n,amountOutLimit:o,inputCoin:i,feeRate:this.overlayFeeRate,feeRecipient:this.overlayFeeReceiver,packages:f.packages},e),v=new Map;for(let S of f.flattenedPaths){let I=S.path;v.has(I.provider)||v.set(I.provider,this.newDexRouterV3(I.provider,a,l,d)),v.get(I.provider).swap(e,S,g,{pythPriceIDs:a})}return bs({swapContext:g,targetCoinType:f.targetCoinType,packages:f.packages},e)}expectInputSwapV3WithMaxAmountIn(e,i,r,n,o,a,l,d,f){if(r.quoteID==null)throw new Error(zt.ERRORS.QUOTE_ID_REQUIRED);let g=ys(r),v=qc({quoteID:g.quoteID,fromCoinType:g.fromCoinType,targetCoinType:g.targetCoinType,maxAmountIn:n,expectAmountOut:o,amountOutLimit:a,inputCoin:i,feeRate:this.overlayFeeRate,feeRecipient:this.overlayFeeReceiver,packages:g.packages},e),y=new Map;for(let I of g.flattenedPaths){let x=I.path;y.has(x.provider)||y.set(x.provider,this.newDexRouterV3(x.provider,l,d,f)),y.get(x.provider).swap(e,I,v,{pythPriceIDs:l})}return bs({swapContext:v,targetCoinType:g.targetCoinType,packages:g.packages},e)}expectOutputSwapV3(e,i,r,n,o,a){let l=[],d=new ou(this.env,a),f=ys(r),g=Fc({quoteID:f.quoteID,fromCoinType:f.fromCoinType,targetCoinType:f.targetCoinType,expectAmountOut:n,amountOutLimit:n,inputCoin:i,feeRate:this.overlayFeeRate,feeRecipient:this.overlayFeeReceiver,packages:f.packages},e),v=Wc(r.paths),y=new Map,S=new Map;for(let B=r.paths.length-1;B>=0;B--){let R=r.paths[B],j=v.get(R.from),V;if(B!==j||R.target===f.targetCoinType){if(R.target!==f.targetCoinType){let Y=BigInt(R.amountOut);S.has(R.target)&&(Y=S.get(R.target)+Y),S.set(R.target,Y)}V=e.pure.u64(R.amountOut.toString())}else{if(!y.has(R.target))throw Error("no need repay record");if(S.has(R.target)){let Y=S.get(R.target),X=y.get(R.target);V=d.sub(e,X,e.pure.u64(Y),R.publishedAt)}else V=y.get(R.target)}let J=d.flashSwapFixedOutput(e,R,V,g);if(l.unshift(J.flashReceipt),y.has(R.from)){let Y=y.get(R.from);y.set(R.from,d.add(e,Y,J.repayAmount,R.publishedAt))}else y.set(R.from,J.repayAmount)}for(let B=0;B<r.paths.length;B++){let R=r.paths[B];d.repayFlashSwapFixedOutput(e,R,g,l[B])}let I=Uc({coinType:f.fromCoinType,amount:As,swapCtx:g,packages:f.packages},e);return $c({balance:I,coinType:f.fromCoinType,recipient:this.signer,packages:f.packages},e),bs({swapContext:g,targetCoinType:f.targetCoinType,packages:f.packages},e)}expectOutputSwapV3WithMaxAmountIn(e,i,r,n,o,a,l){let d=[],f=new ou(this.env,l),g=ys(r),v=qc({quoteID:g.quoteID,fromCoinType:g.fromCoinType,targetCoinType:g.targetCoinType,maxAmountIn:n,expectAmountOut:o,amountOutLimit:o,inputCoin:i,feeRate:this.overlayFeeRate,feeRecipient:this.overlayFeeReceiver,packages:g.packages},e),y=Wc(r.paths),S=new Map,I=new Map;for(let R=r.paths.length-1;R>=0;R--){let j=r.paths[R],V=y.get(j.from),J;if(R!==V||j.target===g.targetCoinType){if(j.target!==g.targetCoinType){let X=BigInt(j.amountOut);I.has(j.target)&&(X=I.get(j.target)+X),I.set(j.target,X)}J=e.pure.u64(j.amountOut.toString())}else{if(!S.has(j.target))throw Error("no need repay record");if(I.has(j.target)){let X=I.get(j.target),ee=S.get(j.target);J=f.sub(e,ee,e.pure.u64(X),j.publishedAt)}else J=S.get(j.target)}let Y=f.flashSwapFixedOutput(e,j,J,v);if(d.unshift(Y.flashReceipt),S.has(j.from)){let X=S.get(j.from);S.set(j.from,f.add(e,X,Y.repayAmount,j.publishedAt))}else S.set(j.from,Y.repayAmount)}for(let R=0;R<r.paths.length;R++){let j=r.paths[R];f.repayFlashSwapFixedOutput(e,j,v,d[R])}let x=Uc({coinType:g.fromCoinType,amount:As,swapCtx:v,packages:g.packages},e);return $c({balance:x,coinType:g.fromCoinType,recipient:this.signer,packages:g.packages},e),bs({swapContext:v,targetCoinType:g.targetCoinType,packages:g.packages},e)}async routerSwap(e){let{router:i,inputCoin:r,slippage:n,txb:o,partner:a}=e;if(n>1||n<0)throw new Error(zt.ERRORS.INVALID_SLIPPAGE);if(!e.router.packages||!e.router.packages.get(zn.AGGREGATOR_V3))throw new Error(zt.ERRORS.PACKAGES_REQUIRED);let l=e.router.byAmountIn,d=i.amountIn,f=i.amountOut;Ms(this.overlayFeeRate,this.overlayFeeReceiver);let g=new pt.default(0);l?g=f.mul(new pt.default(this.overlayFeeRate)).div(new pt.default(1e6)):g=d.mul(new pt.default(this.overlayFeeRate)).div(new pt.default(1e6));let v=l?f.sub(g):f,y=l?d:d.add(g),S=nu(l?v:y,l,n),I=su(i.paths),x=I.length>0?await this.updatePythPriceIDs(I,o):new Map;return l?this.expectInputSwapV3(o,r,i,f.toString(),S.toString(),x,a??this.partner):this.expectOutputSwapV3(o,r,i,f.toString(),S.toString(),a??this.partner)}async routerSwapWithMaxAmountIn(e){let{router:i,inputCoin:r,slippage:n,txb:o,partner:a,maxAmountIn:l}=e;if(n>1||n<0)throw new Error(zt.ERRORS.INVALID_SLIPPAGE);if(!e.router.packages||!e.router.packages.get(zn.AGGREGATOR_V3))throw new Error(zt.ERRORS.PACKAGES_REQUIRED);let d=e.router.byAmountIn,f=i.amountIn,g=i.amountOut;Ms(this.overlayFeeRate,this.overlayFeeReceiver);let v=new pt.default(0);d?v=g.mul(new pt.default(this.overlayFeeRate)).div(new pt.default(1e6)):v=f.mul(new pt.default(this.overlayFeeRate)).div(new pt.default(1e6));let y=d?g.sub(v):g,S=d?f:f.add(v),I=nu(d?y:S,d,n),x=su(i.paths),B=x.length>0?await this.updatePythPriceIDs(x,o):new Map;return d?this.expectInputSwapV3WithMaxAmountIn(o,r,i,l,g.toString(),I.toString(),B,a??this.partner):this.expectOutputSwapV3WithMaxAmountIn(o,r,i,l,g.toString(),I.toString(),a??this.partner)}async fastRouterSwap(e){let{router:i,slippage:r,txb:n,partner:o,payDeepFeeAmount:a}=e,l=i.paths[0].from,d=i.paths[i.paths.length-1].target,f=i.byAmountIn;Ms(this.overlayFeeRate,this.overlayFeeReceiver);let g=0;f?g=Number(i.amountOut.mul(new pt.default(this.overlayFeeRate)).div(new pt.default(1e6)).toString()):g=Number(i.amountIn.mul(new pt.default(this.overlayFeeRate)).div(new pt.default(1e6)).toString());let v=f?i.amountOut.sub(new pt.default(g)):i.amountOut,y=f?i.amountIn:i.amountIn.add(new pt.default(g)),S=Z_(f?v:y,f,r),x=ru({balance:BigInt((f?y:S).toString()),useGasCoin:!0,type:l}),B;a&&a>0&&(B=ru({balance:BigInt(a),type:this.deepbookv3DeepFeeType()}));let R={router:i,inputCoin:x,slippage:r,txb:n,partner:o??this.partner,deepbookv3DeepFee:B},j=await this.routerSwap(R);if(ks.isSuiCoin(d))n.mergeCoins(n.gas,[j]);else{let V=await this.getOneCoinUsedToMerge(d);V!=null?n.mergeCoins(n.object(V),[j]):Vc({coin:j,coinType:d,packages:i.packages},n)}}async mergeSwap(e){let{router:i,inputCoins:r,slippage:n,txb:o,partner:a}=e;if(n>1||n<0)throw new Error(zt.ERRORS.INVALID_SLIPPAGE);if(!i.packages||!i.packages.get(zn.AGGREGATOR_V3))throw new Error(zt.ERRORS.PACKAGES_REQUIRED);if(!i.allRoutes||i.allRoutes.length===0)throw new Error("No routes found in merge swap response");let l=[];for(let f=0;f<i.allRoutes.length&&f<r.length;f++){let g=i.allRoutes[f],v=r[f],S={router:{quoteID:i.quoteID,amountIn:g.amountIn,amountOut:g.amountOut,deviationRatio:Number(g.deviationRatio),byAmountIn:!0,paths:g.paths,insufficientLiquidity:!1,packages:i.packages},inputCoin:v.coin,slippage:n,txb:o,partner:a??this.partner},I=await this.routerSwap(S);l.push(I)}if(l.length===0)throw new Error("No output coins generated from merge swap");let d=l[0];return l.length>1&&o.mergeCoins(d,l.slice(1)),d}async fastMergeSwap(e){let{router:i,slippage:r,txb:n,partner:o}=e;if(!i||!i.allRoutes||i.allRoutes.length===0)throw new Error("Invalid router: no routes found");let a=i.allRoutes[0],l=a.paths[a.paths.length-1].target,d=[],f=new Set;for(let y of i.allRoutes){let S=y.paths[0].from;if(f.has(S))continue;f.add(S);let I=ru({balance:BigInt(y.amountIn.toString()),useGasCoin:ks.isSuiCoin(S),type:S});d.push({coinType:S,coin:I})}let g={router:i,inputCoins:d,slippage:r,txb:n,partner:o??this.partner},v=await this.mergeSwap(g);if(ks.isSuiCoin(l))n.mergeCoins(n.gas,[v]);else{let y=await this.getOneCoinUsedToMerge(l);y!=null?n.mergeCoins(n.object(y),[v]):Vc({coin:v,coinType:l,packages:i.packages},n)}}async fixableRouterSwapV3(e){let{router:i,inputCoin:r,slippage:n,txb:o,partner:a}=e;Ms(this.overlayFeeRate,this.overlayFeeReceiver);let l=0;i.byAmountIn?l=Number(i.amountOut.mul(new pt.default(this.overlayFeeRate)).div(new pt.default(1e6)).toString()):l=Number(i.amountIn.mul(new pt.default(this.overlayFeeRate)).div(new pt.default(1e6)).toString());let d=i.byAmountIn?i.amountOut.sub(new pt.default(l)):i.amountOut,f=i.byAmountIn?i.amountIn:i.amountIn.add(new pt.default(l)),g=nu(i.byAmountIn?d:f,i.byAmountIn,n),v=su(i.paths),y=v.length>0?await this.updatePythPriceIDs(v,o):new Map;return i.byAmountIn?this.expectInputSwapV3(o,r,i,d.toString(),g.toString(),y,a??this.partner):this.expectOutputSwapV3(o,r,i,d.toString(),g.toString(),a??this.partner)}async swapInPools(e){let{from:i,target:r,amount:n,byAmountIn:o,pools:a}=e,l=Yi(i),d=Yi(r),f=new Sm,g=Bm(l,d),v=g?l:d,y=g?d:l,S=[v,y],I=this.env===0?"0xfbb32ac0fa89a3cb0c56c745b688c6d2a53ac8e43447119ad822763997ffb9c3":"0xab2d58dd28ff0dc19b18ab2c634397b785a38c342a8f5065ade5f53f9dbffa1c";for(let u=0;u<a.length;u++){let h=[f.object(a[u]),f.pure.bool(g),f.pure.bool(o),f.pure.u64(n.toString())];f.moveCall({target:`${I}::fetcher_script::calculate_swap_result`,arguments:h,typeArguments:S})}f.setSenderIfNotSet(this.signer||"0x0");let x=await this.client.devInspectTransactionBlock({sender:this.signer||"0x0",transactionBlock:f});if(x.error)throw new Error("Simulation error: "+x.error);let R=(x.events??[]).filter(u=>u.type.includes("CalculatedSwapResultEvent"));if(R.length===0||R.length!==a.length)throw new Error("Simulate event result error");let j=o?new pt.default(0):new pt.default(As),V=0;for(let u=0;u<R.length;u+=1){let h=R[u].parsedJson;if(!h?.data?.is_exceed)if(e.byAmountIn){let _=new pt.default(h?.data?.amount_out??0);_.gt(j)&&(V=u,j=_)}else{let _=new pt.default(h?.data?.amount_out??0);_.lt(j)&&(V=u,j=_)}}let Y=R[V].parsedJson?.data,[X,ee]=await Promise.all([this.client.getCoinMetadata({coinType:v}).then(u=>u?.decimals??null),this.client.getCoinMetadata({coinType:y}).then(u=>u?.decimals??null)]);if(X==null||ee==null)throw new Error("Cannot get coin decimals");let C=Number(Y?.fee_rate??0)/1e6,E=new pt.default(Y?.amount_in??0),N=new pt.default(Y?.fee_amount??0),D=E.add(N),O=this.env===0?qm:Um,A=this.env===0?ct.DEFAULT_PUBLISHED_AT.Mainnet:ct.DEFAULT_PUBLISHED_AT.Testnet,p={amountIn:D,amountOut:new pt.default(Y?.amount_out??0),deviationRatio:0,paths:[{id:a[V],direction:g,provider:Hc,from:l,target:d,feeRate:C,amountIn:D.toString(),amountOut:Y?.amount_out??"0",publishedAt:O,extendedDetails:{afterSqrtPrice:Y?.after_sqrt_price}}],insufficientLiquidity:!1,byAmountIn:e.byAmountIn,quoteID:`degraded-${Jg()}`,packages:new Map([[zn.AGGREGATOR_V3,A]])};return{isExceed:Y?.is_exceed??!1,routeData:p}}async updatePythPriceIDs(e,i){let r=await this.pythAdapter.getPriceFeedsUpdateData(e),n;try{n=await this.pythAdapter.updatePriceFeeds(i,r,e)}catch(a){throw new Error(`Failed to update Pyth price feeds. Ensure pythUrls are configured correctly. Detailed error: ${a}`)}let o=new Map;for(let a=0;a<e.length;a++)o.set(e[a],n[a]);return o}async devInspectTransactionBlock(e){return e.setSenderIfNotSet(this.signer||"0x0"),await this.client.devInspectTransactionBlock({sender:this.signer||"0x0",transactionBlock:e})}async sendTransaction(e,i){return await this.client.signAndExecuteTransaction({transaction:e,signer:i,options:{showEffects:!0,showEvents:!0,showBalanceChanges:!0}})}};_d.CONFIG={1:{wormholeStateId:"0x31358d198147da50db32eda2562951d53973a0c0ad5ed738e9b17d88b213d790",pythStateId:"0x243759059f4c3111179da5878c12f68d612c21a8d54d85edc86164bb18be1c7c"},0:{wormholeStateId:"0xaeab97f96cf9877fee2883315d459552b2b921edc16d7ceac6eab944dd88919c",pythStateId:"0x1f9310238ee9298fb703c3419030b35b22bb1cc37113e3bb5007c99aec79e5b8"}};var wd=_d;function Jg(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,function(t){let e=Math.random()*16|0;return(t==="x"?e:e&3|8).toString(16)})}function Wc(t){let e=new Map;for(let i=0;i<t.length;i++)e.has(t[i].from)||e.set(t[i].from,i);return e}function Ms(t,e){if(t>zt.MAX_OVERLAY_FEE_RATE_NUMERATOR)throw new Error(zt.ERRORS.INVALID_OVERLAY_FEE_RATE);if(e==="0x0"&&t>0)throw new Error(zt.ERRORS.OVERLAY_FEE_RECEIVER_REQUIRED)}import{FullRpcUrlMainnet as Qg}from"@cetusprotocol/common-sdk";var vd={full_rpc_url:Qg,env:"mainnet",aggregator_url:"https://api-sui.cetus.zone/router_v3",margin_trading:{package_id:"0x51bfedf86b5e18076f844bf0e1f82b14667bce59e2c38a8b5c8752ba3314bbd3",published_at:"0x51bfedf86b5e18076f844bf0e1f82b14667bce59e2c38a8b5c8752ba3314bbd3",version:0,config:{versioned_id:"0xdf21deea40ae40b2df5ef4b89a6d2d4bb487433b8fbc5af4f013c5d72e6fdc5f",admin_cap_id:"0x37727c2a5135bdf5b0d02f58dc119d3f3f3a778603690f8ecbb9ca9ecb2f0699",global_config_id:"0x3f0c7d3295ec74b465e944f9bad4310a8ce7f7fbeb76abf11933e43bb708bcd1",markets:"0x7d8797b6f177a8820e8b03ca81edf0818bc3ab2739df6800011b79c02d93f3ef",markets_table_id:"0xaf0d0a53740d02f6ace10a07a60763f8e079ee646913062e8392da3a96af3500"}},tspl:{package_id:"0x75dde20ab838ad72cff25f552bd5f80d46966d8cc038a0a9fc21b36c020ee287",published_at:"0x75dde20ab838ad72cff25f552bd5f80d46966d8cc038a0a9fc21b36c020ee287",version:0,config:{versioned_id:"0x70add27578467094df3bee0182658470fec89bb02fe7d32d3b8b34b10e8d538a",global_config_id:"0x61d0d36a0d7ef1dac7a7fb9d51facbdc285ecea38a64c1ceb7f56e62b5ab4cc4",admin_cap_id:"0x8739552de56c86f4115dc6a1c17eeda991e8c4cc3a275ef6566cfb1dc2d6d403",order_book_registry_id:"0x0497dc37da2702082ea3e29f673ad90ff1e0436585ea87cda4eed019c55449a2",order_book_registry_handle:"0x2d02fd0913750f9a2d36a188652eed05ec55b65a0510ffd1d0f1c1e2ff9d28d6"}},suilend:{package_id:"0xf95b06141ed4a174f239417323bde3f209b972f5930d8521ea38a52aff3a6ddf",published_at:"0xe37cc7bb50fd9b6dbd3873df66fa2c554e973697f50ef97707311dc78bd08444",config:{lending_market:[{name:"Main market",slug:"main",id:"0x84030d26d85eaa7035084a057f2f11f701b7e2e4eda87551becbc7c97505ece1",type:"0xf95b06141ed4a174f239417323bde3f209b972f5930d8521ea38a52aff3a6ddf::suilend::MAIN_POOL",owner_cap_id:"0xf7a4defe0b6566b6a2674a02a0c61c9f99bd012eed21bc741a069eaa82d35927"},{name:"STEAMM LM",slug:"steamm-lm",id:"0xc1888ec1b81a414e427a44829310508352aec38252ee0daa9f8b181b6947de9f",type:"0x0a071f4976abae1a7f722199cf0bfcbe695ef9408a878e7d12a7ca87b7e582a6::lp_rewards::LP_REWARDS",owner_cap_id:"0x55a0f33b24e091830302726c8cfbff8cf8abd2ec1f83a4e6f4bf51c7ba3ad5ab",is_hidden:!0}],lending_market_id:"0x84030d26d85eaa7035084a057f2f11f701b7e2e4eda87551becbc7c97505ece1",lending_market_type:"0xf95b06141ed4a174f239417323bde3f209b972f5930d8521ea38a52aff3a6ddf::suilend::MAIN_POOL",api_url:"https://d10td5ybgrf39v.cloudfront.net"}}};import{CACHE_TIME_5MIN as i1,d as tr,getPackagerConfigs as js}from"@cetusprotocol/common-sdk";import{Transaction as Bs}from"@mysten/sui/transactions";import{addHexPrefix as yd,d as Ut,getObjectFields as Ad}from"@cetusprotocol/common-sdk";import{getNetAprPercent as Yg,getTotalAprPercent as bd,getFilteredRewards as Md}from"@suilend/sdk/lib/liquidityMining";import{Side as kd}from"@suilend/sdk/lib/types";import{parseObligation as e1}from"@suilend/sdk/parsers/obligation";var pu=t=>{let e=Ad(t),{open_permissions_pause:i,close_permissions_pause:r,deposit_permissions_pause:n,withdraw_permissions_pause:o,borrow_permissions_pause:a,repay_permissions_pause:l}=gu(e.permissions.toString(2));return{market_id:e.id.id,base_token:yd(e.base_token.fields.name),quote_token:yd(e.quote_token.fields.name),max_long_leverage:Ut(e.max_long_leverage).div(10**6).toString(),max_short_leverage:Ut(e.max_short_leverage).div(10**6).toString(),open_fee_rate:Ut(e.open_fee_rate).div(10**6).toString(),close_fee_rate:Ut(e.close_fee_rate).div(10**6).toString(),open_permissions_pause:i,close_permissions_pause:r,deposit_permissions_pause:n,withdraw_permissions_pause:o,borrow_permissions_pause:a,repay_permissions_pause:l}},mu=(t,e,i)=>{let r=Ad(t);return{created_at:r.created_ts,position_id:r.id.id,init_deposit_amount:r.init_deposit_amount,is_long:r.is_long,lending_market_id:r.lending_market_id,obligation_owner_cap:r.obligation_owner_cap.fields.obligation_id,market_id:r.market_id,position_cap_id:e,is_tspl_cap:i}},_u=(t,e,i,r,n,o,a,l)=>{let d=e1(e,i),f=Yg(d,l,r,n,o,a);if(!d.deposits||d.deposits.length===0)throw new Error("No deposits found in obligation data");let g=d.deposits[0],v=Ut(g.reserve.config.closeLtvPct).div(100).toString(),y=Ut(g.reserve.config.openLtvPct).div(100).toString(),S=d.depositedAmountUsd.gt(0)?d.borrowedAmountUsd.div(d.depositedAmountUsd).toString():"0",I=Ut(1).div(v).toString(),x=Ut(v).sub(S).toString(),B="0",R="0",j="0",V="0";if(d.borrows&&d.borrows.length>0){let J=d.borrows[0],Y=l[J?.coinType];Y&&(B=bd(kd.BORROW,J?.reserve.borrowAprPercent,Md(Y.borrow)).toString()),j=J.borrowedAmountUsd.toString(),V=J.borrowedAmount.toString()}if(d.deposits&&d.deposits.length>0){let J=d.deposits[0],Y=l[J?.coinType];Y&&(R=bd(kd.DEPOSIT,J?.reserve.depositAprPercent,Md(Y.deposit)).toString())}return{...t,...d,origin_obligation:e,net_apr_percent:f.toString(),supplied_apr:Ut(R).toString(),borrowed_apr:Ut(B).toString(),close_ltv:v,open_ltv:y,cr:S,ltr:I,liquidation_buffer:x,deposited_amount_usd:g.depositedAmountUsd.toString(),borrowed_amount_usd:j,deposited_amount:g.depositedAmount.toString(),borrowed_amount:V}},gu=t=>{let e=t.length,i=t.substring(e-1,e)==="0",r=t.substring(e-2,e-1)==="0",n=t.substring(e-3,e-2)==="0",o=t.substring(e-4,e-3)==="0",a=t.substring(e-5,e-4)==="0",l=t.substring(e-6,e-5)==="0";return{open_permissions_pause:i,close_permissions_pause:r,deposit_permissions_pause:n,withdraw_permissions_pause:a,borrow_permissions_pause:o,repay_permissions_pause:l}};function wu(t){return{created_ts:t.created_ts,entry_price:Ut(t.entry_price).div(1e18).toString(),id:t.id.id,is_long:t.is_long,market_id:t.market_id,next_target_id:t.next_level_id,order_book_id:t.order_book_id,position_cap:t.position_cap.fields.id.id,order_cap:"",position_id:t.position_id,settlements:{id:t.settlements.fields.id.id,size:t.settlements.fields.size},status:t.status,updated_ts:t.updated_ts,tp_targets:t.tp_levels.map(i=>({trigger_price:Ut(i.fields.trigger_price).div(1e18).toString(),execution_price:Ut(i.fields.execution_price).div(1e18).toString(),close_ratio_bps:Ut(i.fields.close_ratio_bps).div(1e4).toString(),target_is_base:i.fields.target_is_base,id:i.fields.id})),sl_targets:t.sl_levels.map(i=>({trigger_price:Ut(i.fields.trigger_price).div(1e18).toString(),execution_price:Ut(i.fields.execution_price).div(1e18).toString(),close_ratio_bps:Ut(i.fields.close_ratio_bps).div(1e4).toString(),target_is_base:i.fields.target_is_base,id:i.fields.id}))}}import{getFilteredRewards as Rr,getStakingYieldAprPercent as Sd,getTotalAprPercent as Fs}from"@suilend/sdk/lib/liquidityMining";import{Side as eo}from"@suilend/sdk/lib/types";import{BaseError as t1}from"@cetusprotocol/common-sdk";var Ls=class extends t1{constructor(e,i,r){super(e,i||"UnknownError",r)}static isCrossSwapErrorCode(e,i){return this.isErrorCode(e,i)}},$t=(t,e,i)=>{let r={...i,stack:e instanceof Error?e.stack:void 0};throw e instanceof Error?new Ls(e.message,t,r):new Ls(e,t,r)};var qs=class{constructor(e){this.createMarket=async e=>{let{package_id:i}=this._sdk.sdkOptions.margin_trading,{versioned_id:r,admin_cap_id:n,markets:o,global_config_id:a}=js(this._sdk.sdkOptions.margin_trading),l=new Bs;return l.moveCall({target:`${i}::market::create_market`,arguments:[l.object(n),l.object(a),l.object(o),l.pure.u64(e.open_fee_rate),l.pure.u64(e.close_fee_rate),l.object(r)],typeArguments:[e.base_token,e.quote_token]}),l};this.updateMarketFeeRate=async e=>{let{package_id:i}=this._sdk.sdkOptions.margin_trading,{versioned_id:r,admin_cap_id:n}=js(this._sdk.sdkOptions.margin_trading),{market_id:o,open_fee_rate:a,close_fee_rate:l}=e,d=new Bs;return d.moveCall({target:`${i}::market::set_fee_rate`,arguments:[d.object(n),d.object(o),d.pure.u64(a),d.pure.u64(l),d.object(r)],typeArguments:[]}),d};this.claimMarketFees=async(e,i)=>{let{package_id:r}=this._sdk.sdkOptions.margin_trading,{versioned_id:n,admin_cap_id:o}=js(this._sdk.sdkOptions.margin_trading),a=i||new Bs,{base_token:l,quote_token:d}=await this._sdk.MarketModules.getMarketInfo(e);return a.moveCall({target:`${r}::market::claim_fees`,arguments:[a.object(o),a.object(e),a.object(n)],typeArguments:[l,d]}),a};this.claimAllMarketFees=async e=>{let i=new Bs;for(let r=0;r<e.length;r++){let n=e[r];this.claimMarketFees(n,i)}return i};this.getMarginTradingConfig=async()=>{let{package_id:e}=this._sdk.sdkOptions.margin_trading;try{let i=await this._sdk.FullClient.queryEventsByPage({MoveEventType:`${e}::versioned::InitEvent`}),r=await this._sdk.FullClient.queryEventsByPage({MoveEventType:`${e}::admin_cap::InitEvent`}),n=await this._sdk.FullClient.queryEventsByPage({MoveEventType:`${e}::config::InitEvent`}),a=(await this._sdk.FullClient.queryEventsByPage({MoveEventType:`${e}::market::InitEvent`})).data[0].parsedJson.markets_id,d=(await this._sdk.FullClient.getObject({id:a,options:{showContent:!0}})).data.content.fields.list.fields.id.id;return{versioned_id:i.data[0].parsedJson.versioned_id,admin_cap_id:r.data[0].parsedJson.admin_cap_id,global_config_id:n.data[0].parsedJson.global_config_id,markets:a,markets_table_id:d}}catch(i){return $t("FetchError",i),{versioned_id:"",admin_cap_id:"",global_config_id:"",markets_table_id:"",markets:""}}};this.getMarketList=async(e=!1)=>{let r=this._sdk.getCache("margin_trading_markets_list",e);if(r)return r;let{package_id:n}=this._sdk.sdkOptions.margin_trading,o=[];try{let a=`${n}::market::CreateMarketEvent`,d=(await this._sdk.FullClient.queryEventsByPage({MoveEventType:a})).data.map(f=>f.parsedJson.market_id);return d.length>0?((await this._sdk.FullClient.batchGetObjects(d,{showContent:!0,showType:!0})).forEach(g=>{let v=pu(g),y=`margin_trading_market_info_${v.market_id}`;this._sdk.updateCache(y,v),o.push(v)}),o):($t("MarketNotFound","Market not found"),[])}catch(a){return $t("FetchError",a),[]}};this.getMarketInfo=async(e,i=!1)=>{let r=`margin_trading_market_info_${e}`,n=this._sdk.getCache(r,i);if(n)return n;try{let o=await this._sdk.FullClient.getObject({id:e,options:{showContent:!0}}),a=pu(o);return this._sdk.updateCache(r,a,i1),a}catch(o){return $t("FetchError",o),{}}};this.getMarketSuilendInfo=async e=>{try{let{base_token:i,quote_token:r}=await this.getMarketInfo(e),{lending_market_id:n}=js(this._sdk.sdkOptions.suilend),o=await this._sdk.SuiLendModule.getLendingMarketData(!0),{allLendingMarketData:a,lstStatsMap:l,sdeUsdAprPercent:d,eThirdAprPercent:f,eEarnAprPercent:g}=o,{base_reserve_map_info:v,quote_reserve_map_info:y}=await this._sdk.SuiLendModule.getSuiLendReserveInfo(i,r,a);console.log("\u{1F680}\u{1F680}\u{1F680} ~ marketModules.ts:188 ~ MarketModules ~ base_reserve_map_info:",v);let S=await this._sdk.SuiLendModule.getInitializeObligations(o,!0),I=S[n].rewardMap[i],x=S[n].rewardMap[r],{depositedAmountUsd:B,borrowedAmountUsd:R,depositAprPercent:j,borrowAprPercent:V,depositedAmount:J,borrowedAmount:Y}=v,{depositLimit:X,borrowLimit:ee}=v.config,{depositedAmountUsd:C,borrowedAmountUsd:E,depositAprPercent:N,borrowAprPercent:D,depositedAmount:O,borrowedAmount:A}=y,{depositLimit:p,borrowLimit:s}=y.config,u=Fs(eo.DEPOSIT,j,Rr(I.deposit),Sd(eo.DEPOSIT,i,l,d,f)),h=Fs(eo.BORROW,V,Rr(I.borrow)),_=Fs(eo.DEPOSIT,N,Rr(x.deposit),Sd(eo.DEPOSIT,i,l,d,f)),w=Fs(eo.BORROW,D,Rr(x.borrow)),M=tr(C.toString()).sub(E.toString()).toString(),b=tr(B.toString()).sub(R.toString()).toString(),m=tr(X.toString()).sub(tr(J.toString())).toString(),c=tr(ee.toString()).sub(tr(Y.toString())).toString(),k=tr(p.toString()).sub(tr(O.toString())).toString(),Z=tr(s.toString()).sub(tr(A.toString())).toString();return{long_liquidity:M,short_liquidity:b,base_total_deposit_apr_percent:u.toString(),base_total_borrow_apr_percent:h.toString(),quote_total_deposit_apr_percent:_.toString(),quote_total_borrow_apr_percent:w.toString(),base_token_available_deposit_amount:m,base_token_available_borrow_amount:c,quote_token_available_deposit_amount:k,quote_token_available_borrow_amount:Z,base_deposit_rewards:Rr(I.deposit),quote_deposit_rewards:Rr(x.deposit),base_borrow_rewards:Rr(I.borrow),quote_borrow_rewards:Rr(x.borrow),base_deposit_apr_percent:j.toString(),base_borrow_apr_percent:V.toString(),quote_deposit_apr_percent:N.toString(),quote_borrow_apr_percent:D.toString(),obligations:S[n],base_reserve_map_info:v,quote_reserve_map_info:y}}catch(i){return $t("FetchError",i),{}}};this._sdk=e}};import{CLOCK_ADDRESS as to,getPackagerConfigs as ai}from"@cetusprotocol/common-sdk";import{Transaction as ri}from"@mysten/sui/transactions";var Us=class{constructor(e){this.queryGlobalPermissions=async()=>{let e=this._sdk.sdkOptions.margin_trading,{global_config_id:i}=ai(e),r=await this._sdk.FullClient.getObject({id:i,options:{showContent:!0}});if(r){let n=r.data.content.fields.permissions.toString(2),{open_permissions_pause:o,close_permissions_pause:a,deposit_permissions_pause:l,withdraw_permissions_pause:d,borrow_permissions_pause:f,repay_permissions_pause:g}=gu(n);return{open_permissions_pause:o,close_permissions_pause:a,deposit_permissions_pause:l,withdraw_permissions_pause:d,borrow_permissions_pause:f,repay_permissions_pause:g}}};this.updateGlobalPermissions=async e=>{let i=new ri;return this.updateGlobalOpenPositionPermissions(e,i),this.updateGlobalClosePositionPermissions(e,i),this.updateGlobalDepositPermissions(e,i),this.updateGlobalBorrowPermissions(e,i),this.updateGlobalWithdrawPermissions(e,i),this.updateGlobalRepayPermissions(e,i),i};this.updateGlobalOpenPositionPermissions=async(e,i)=>{let r=this._sdk.sdkOptions.margin_trading,{global_config_id:n,versioned_id:o,admin_cap_id:a}=ai(r),l=i||new ri;return l.moveCall({target:`${r.published_at}::config::update_global_open_position_permissions`,arguments:[l.object(a),l.object(n),l.pure.bool(e),l.object(to),l.object(o)],typeArguments:[]}),l};this.updateGlobalClosePositionPermissions=async(e,i)=>{let r=this._sdk.sdkOptions.margin_trading,{global_config_id:n,versioned_id:o,admin_cap_id:a}=ai(r),l=i||new ri;return l.moveCall({target:`${r.published_at}::config::update_global_close_position_permissions`,arguments:[l.object(a),l.object(n),l.pure.bool(e),l.object(to),l.object(o)],typeArguments:[]}),l};this.updateGlobalDepositPermissions=async(e,i)=>{let r=this._sdk.sdkOptions.margin_trading,{global_config_id:n,versioned_id:o,admin_cap_id:a}=ai(r),l=i||new ri;return l.moveCall({target:`${r.published_at}::config::update_global_deposit_permissions`,arguments:[l.object(a),l.object(n),l.pure.bool(e),l.object(to),l.object(o)],typeArguments:[]}),l};this.updateGlobalBorrowPermissions=async(e,i)=>{let r=this._sdk.sdkOptions.margin_trading,{global_config_id:n,versioned_id:o,admin_cap_id:a}=ai(r),l=i||new ri;return l.moveCall({target:`${r.published_at}::config::update_global_borrow_permissions`,arguments:[l.object(a),l.object(n),l.pure.bool(e),l.object(to),l.object(o)],typeArguments:[]}),l};this.updateGlobalWithdrawPermissions=async(e,i)=>{let r=this._sdk.sdkOptions.margin_trading,{global_config_id:n,versioned_id:o,admin_cap_id:a}=ai(r),l=i||new ri;return l.moveCall({target:`${r.published_at}::config::update_global_withdraw_permissions`,arguments:[l.object(a),l.object(n),l.pure.bool(e),l.object(to),l.object(o)],typeArguments:[]}),l};this.updateGlobalRepayPermissions=async(e,i)=>{let r=this._sdk.sdkOptions.margin_trading,{global_config_id:n,versioned_id:o,admin_cap_id:a}=ai(r),l=i||new ri;return l.moveCall({target:`${r.published_at}::config::update_global_repay_permissions`,arguments:[l.object(a),l.object(n),l.pure.bool(e),l.object(to),l.object(o)],typeArguments:[]}),l};this.updateMarketCreatePositionPermissions=async(e,i,r)=>{let n=this._sdk.sdkOptions.margin_trading,{versioned_id:o,admin_cap_id:a}=ai(n),l=r||new ri;return l.moveCall({target:`${n.published_at}::market::update_market_open_position_permission`,arguments:[l.object(a),l.object(e),l.pure.bool(i),l.object(o)],typeArguments:[]}),l};this.updateMarketClosePositionPermissions=async(e,i,r)=>{let n=this._sdk.sdkOptions.margin_trading,{versioned_id:o,admin_cap_id:a}=ai(n),l=r||new ri;return l.moveCall({target:`${n.published_at}::market::update_market_close_position_permission`,arguments:[l.object(a),l.object(e),l.pure.bool(i),l.object(o)],typeArguments:[]}),l};this.updateMarketDepositPermissions=async(e,i,r)=>{let n=this._sdk.sdkOptions.margin_trading,{versioned_id:o,admin_cap_id:a}=ai(n),l=r||new ri;return l.moveCall({target:`${n.published_at}::market::update_market_deposit_permission`,arguments:[l.object(a),l.object(e),l.pure.bool(i),l.object(o)],typeArguments:[]}),l};this.updateMarketWithdrawPermissions=async(e,i,r)=>{let n=this._sdk.sdkOptions.margin_trading,{versioned_id:o,admin_cap_id:a}=ai(n),l=r||new ri;return l.moveCall({target:`${n.published_at}::market::update_market_withdraw_permission`,arguments:[l.object(a),l.object(e),l.pure.bool(i),l.object(o)],typeArguments:[]}),l};this.updateMarketBorrowPermissions=async(e,i,r)=>{let n=this._sdk.sdkOptions.margin_trading,{versioned_id:o,admin_cap_id:a}=ai(n),l=r||new ri;return l.moveCall({target:`${n.published_at}::market::update_market_borrow_permission`,arguments:[l.object(a),l.object(e),l.pure.bool(i),l.object(o)],typeArguments:[]}),l};this.updateMarketRepayPermissions=async(e,i,r)=>{let n=this._sdk.sdkOptions.margin_trading,{versioned_id:o,admin_cap_id:a}=ai(n),l=r||new ri;return l.moveCall({target:`${n.published_at}::market::update_market_repay_permission`,arguments:[l.object(a),l.object(e),l.pure.bool(i),l.object(o)],typeArguments:[]}),l};this.updateMarketPermissions=async(e,i,r)=>{let n=r||new ri;return this.updateMarketCreatePositionPermissions(e,i,n),this.updateMarketClosePositionPermissions(e,i,n),this.updateMarketDepositPermissions(e,i,n),this.updateMarketWithdrawPermissions(e,i,n),this.updateMarketBorrowPermissions(e,i,n),this.updateMarketRepayPermissions(e,i,n),n};this._sdk=e}};import{CACHE_TIME_24H as Gd,CLOCK_ADDRESS as fn,CoinAssist as $e,d as ne,DETAILS_KEYS as ta,getObjectFields as ia,getPackagerConfigs as Pt,removeHexPrefix as no,SUI_SYSTEM_STATE_OBJECT_ID as zd,U64_MAX as ra}from"@cetusprotocol/common-sdk";var r1=/^-?(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?$/i,yu=Math.ceil,hi=Math.floor,ni="[BigNumber Error] ",Cd=ni+"Number primitive has more than 15 significant digits: ",qi=1e14,it=14,bu=9007199254740991,Mu=[1,10,100,1e3,1e4,1e5,1e6,1e7,1e8,1e9,1e10,1e11,1e12,1e13],Nr=1e7,Lt=1e9;function Td(t){var e,i,r,n=j.prototype={constructor:j,toString:null,valueOf:null},o=new j(1),a=20,l=4,d=-7,f=21,g=-1e7,v=1e7,y=!1,S=1,I=0,x={prefix:"",groupSize:3,secondaryGroupSize:0,groupSeparator:",",decimalSeparator:".",fractionGroupSize:0,fractionGroupSeparator:"\xA0",suffix:""},B="0123456789abcdefghijklmnopqrstuvwxyz",R=!0;function j(C,E){var N,D,O,A,p,s,u,h,_=this;if(!(_ instanceof j))return new j(C,E);if(E==null){if(C&&C._isBigNumber===!0){_.s=C.s,!C.c||C.e>v?_.c=_.e=null:C.e<g?_.c=[_.e=0]:(_.e=C.e,_.c=C.c.slice());return}if((s=typeof C=="number")&&C*0==0){if(_.s=1/C<0?(C=-C,-1):1,C===~~C){for(A=0,p=C;p>=10;p/=10,A++);A>v?_.c=_.e=null:(_.e=A,_.c=[C]);return}h=String(C)}else{if(!r1.test(h=String(C)))return r(_,h,s);_.s=h.charCodeAt(0)==45?(h=h.slice(1),-1):1}(A=h.indexOf("."))>-1&&(h=h.replace(".","")),(p=h.search(/e/i))>0?(A<0&&(A=p),A+=+h.slice(p+1),h=h.substring(0,p)):A<0&&(A=h.length)}else{if(Et(E,2,B.length,"Base"),E==10&&R)return _=new j(C),X(_,a+_.e+1,l);if(h=String(C),s=typeof C=="number"){if(C*0!=0)return r(_,h,s,E);if(_.s=1/C<0?(h=h.slice(1),-1):1,j.DEBUG&&h.replace(/^0\.0*|\./,"").length>15)throw Error(Cd+C)}else _.s=h.charCodeAt(0)===45?(h=h.slice(1),-1):1;for(N=B.slice(0,E),A=p=0,u=h.length;p<u;p++)if(N.indexOf(D=h.charAt(p))<0){if(D=="."){if(p>A){A=u;continue}}else if(!O&&(h==h.toUpperCase()&&(h=h.toLowerCase())||h==h.toLowerCase()&&(h=h.toUpperCase()))){O=!0,p=-1,A=0;continue}return r(_,String(C),s,E)}s=!1,h=i(h,E,10,_.s),(A=h.indexOf("."))>-1?h=h.replace(".",""):A=h.length}for(p=0;h.charCodeAt(p)===48;p++);for(u=h.length;h.charCodeAt(--u)===48;);if(h=h.slice(p,++u)){if(u-=p,s&&j.DEBUG&&u>15&&(C>bu||C!==hi(C)))throw Error(Cd+_.s*C);if((A=A-p-1)>v)_.c=_.e=null;else if(A<g)_.c=[_.e=0];else{if(_.e=A,_.c=[],p=(A+1)%it,A<0&&(p+=it),p<u){for(p&&_.c.push(+h.slice(0,p)),u-=it;p<u;)_.c.push(+h.slice(p,p+=it));p=it-(h=h.slice(p)).length}else p-=u;for(;p--;h+="0");_.c.push(+h)}}else _.c=[_.e=0]}j.clone=Td,j.ROUND_UP=0,j.ROUND_DOWN=1,j.ROUND_CEIL=2,j.ROUND_FLOOR=3,j.ROUND_HALF_UP=4,j.ROUND_HALF_DOWN=5,j.ROUND_HALF_EVEN=6,j.ROUND_HALF_CEIL=7,j.ROUND_HALF_FLOOR=8,j.EUCLID=9,j.config=j.set=function(C){var E,N;if(C!=null)if(typeof C=="object"){if(C.hasOwnProperty(E="DECIMAL_PLACES")&&(N=C[E],Et(N,0,Lt,E),a=N),C.hasOwnProperty(E="ROUNDING_MODE")&&(N=C[E],Et(N,0,8,E),l=N),C.hasOwnProperty(E="EXPONENTIAL_AT")&&(N=C[E],N&&N.pop?(Et(N[0],-Lt,0,E),Et(N[1],0,Lt,E),d=N[0],f=N[1]):(Et(N,-Lt,Lt,E),d=-(f=N<0?-N:N))),C.hasOwnProperty(E="RANGE"))if(N=C[E],N&&N.pop)Et(N[0],-Lt,-1,E),Et(N[1],1,Lt,E),g=N[0],v=N[1];else if(Et(N,-Lt,Lt,E),N)g=-(v=N<0?-N:N);else throw Error(ni+E+" cannot be zero: "+N);if(C.hasOwnProperty(E="CRYPTO"))if(N=C[E],N===!!N)if(N)if(typeof crypto<"u"&&crypto&&(crypto.getRandomValues||crypto.randomBytes))y=N;else throw y=!N,Error(ni+"crypto unavailable");else y=N;else throw Error(ni+E+" not true or false: "+N);if(C.hasOwnProperty(E="MODULO_MODE")&&(N=C[E],Et(N,0,9,E),S=N),C.hasOwnProperty(E="POW_PRECISION")&&(N=C[E],Et(N,0,Lt,E),I=N),C.hasOwnProperty(E="FORMAT"))if(N=C[E],typeof N=="object")x=N;else throw Error(ni+E+" not an object: "+N);if(C.hasOwnProperty(E="ALPHABET"))if(N=C[E],typeof N=="string"&&!/^.?$|[+\-.\s]|(.).*\1/.test(N))R=N.slice(0,10)=="0123456789",B=N;else throw Error(ni+E+" invalid: "+N)}else throw Error(ni+"Object expected: "+C);return{DECIMAL_PLACES:a,ROUNDING_MODE:l,EXPONENTIAL_AT:[d,f],RANGE:[g,v],CRYPTO:y,MODULO_MODE:S,POW_PRECISION:I,FORMAT:x,ALPHABET:B}},j.isBigNumber=function(C){if(!C||C._isBigNumber!==!0)return!1;if(!j.DEBUG)return!0;var E,N,D=C.c,O=C.e,A=C.s;e:if({}.toString.call(D)=="[object Array]"){if((A===1||A===-1)&&O>=-Lt&&O<=Lt&&O===hi(O)){if(D[0]===0){if(O===0&&D.length===1)return!0;break e}if(E=(O+1)%it,E<1&&(E+=it),String(D[0]).length==E){for(E=0;E<D.length;E++)if(N=D[E],N<0||N>=qi||N!==hi(N))break e;if(N!==0)return!0}}}else if(D===null&&O===null&&(A===null||A===1||A===-1))return!0;throw Error(ni+"Invalid BigNumber: "+C)},j.maximum=j.max=function(){return J(arguments,-1)},j.minimum=j.min=function(){return J(arguments,1)},j.random=(function(){var C=9007199254740992,E=Math.random()*C&2097151?function(){return hi(Math.random()*C)}:function(){return(Math.random()*1073741824|0)*8388608+(Math.random()*8388608|0)};return function(N){var D,O,A,p,s,u=0,h=[],_=new j(o);if(N==null?N=a:Et(N,0,Lt),p=yu(N/it),y)if(crypto.getRandomValues){for(D=crypto.getRandomValues(new Uint32Array(p*=2));u<p;)s=D[u]*131072+(D[u+1]>>>11),s>=9e15?(O=crypto.getRandomValues(new Uint32Array(2)),D[u]=O[0],D[u+1]=O[1]):(h.push(s%1e14),u+=2);u=p/2}else if(crypto.randomBytes){for(D=crypto.randomBytes(p*=7);u<p;)s=(D[u]&31)*281474976710656+D[u+1]*1099511627776+D[u+2]*4294967296+D[u+3]*16777216+(D[u+4]<<16)+(D[u+5]<<8)+D[u+6],s>=9e15?crypto.randomBytes(7).copy(D,u):(h.push(s%1e14),u+=7);u=p/7}else throw y=!1,Error(ni+"crypto unavailable");if(!y)for(;u<p;)s=E(),s<9e15&&(h[u++]=s%1e14);for(p=h[--u],N%=it,p&&N&&(s=Mu[it-N],h[u]=hi(p/s)*s);h[u]===0;h.pop(),u--);if(u<0)h=[A=0];else{for(A=-1;h[0]===0;h.splice(0,1),A-=it);for(u=1,s=h[0];s>=10;s/=10,u++);u<it&&(A-=it-u)}return _.e=A,_.c=h,_}})(),j.sum=function(){for(var C=1,E=arguments,N=new j(E[0]);C<E.length;)N=N.plus(E[C++]);return N},i=(function(){var C="0123456789";function E(N,D,O,A){for(var p,s=[0],u,h=0,_=N.length;h<_;){for(u=s.length;u--;s[u]*=D);for(s[0]+=A.indexOf(N.charAt(h++)),p=0;p<s.length;p++)s[p]>O-1&&(s[p+1]==null&&(s[p+1]=0),s[p+1]+=s[p]/O|0,s[p]%=O)}return s.reverse()}return function(N,D,O,A,p){var s,u,h,_,w,M,b,m,c=N.indexOf("."),k=a,Z=l;for(c>=0&&(_=I,I=0,N=N.replace(".",""),m=new j(D),M=m.pow(N.length-c),I=_,m.c=E(hr(di(M.c),M.e,"0"),10,O,C),m.e=m.c.length),b=E(N,D,O,p?(s=B,C):(s=C,B)),h=_=b.length;b[--_]==0;b.pop());if(!b[0])return s.charAt(0);if(c<0?--h:(M.c=b,M.e=h,M.s=A,M=e(M,m,k,Z,O),b=M.c,w=M.r,h=M.e),u=h+k+1,c=b[u],_=O/2,w=w||u<0||b[u+1]!=null,w=Z<4?(c!=null||w)&&(Z==0||Z==(M.s<0?3:2)):c>_||c==_&&(Z==4||w||Z==6&&b[u-1]&1||Z==(M.s<0?8:7)),u<1||!b[0])N=w?hr(s.charAt(1),-k,s.charAt(0)):s.charAt(0);else{if(b.length=u,w)for(--O;++b[--u]>O;)b[u]=0,u||(++h,b=[1].concat(b));for(_=b.length;!b[--_];);for(c=0,N="";c<=_;N+=s.charAt(b[c++]));N=hr(N,h,s.charAt(0))}return N}})(),e=(function(){function C(D,O,A){var p,s,u,h,_=0,w=D.length,M=O%Nr,b=O/Nr|0;for(D=D.slice();w--;)u=D[w]%Nr,h=D[w]/Nr|0,p=b*u+h*M,s=M*u+p%Nr*Nr+_,_=(s/A|0)+(p/Nr|0)+b*h,D[w]=s%A;return _&&(D=[_].concat(D)),D}function E(D,O,A,p){var s,u;if(A!=p)u=A>p?1:-1;else for(s=u=0;s<A;s++)if(D[s]!=O[s]){u=D[s]>O[s]?1:-1;break}return u}function N(D,O,A,p){for(var s=0;A--;)D[A]-=s,s=D[A]<O[A]?1:0,D[A]=s*p+D[A]-O[A];for(;!D[0]&&D.length>1;D.splice(0,1));}return function(D,O,A,p,s){var u,h,_,w,M,b,m,c,k,Z,W,Q,ie,T,P,L,q,F=D.s==O.s?1:-1,H=D.c,$=O.c;if(!H||!H[0]||!$||!$[0])return new j(!D.s||!O.s||(H?$&&H[0]==$[0]:!$)?NaN:H&&H[0]==0||!$?F*0:F/0);for(c=new j(F),k=c.c=[],h=D.e-O.e,F=A+h+1,s||(s=qi,h=fi(D.e/it)-fi(O.e/it),F=F/it|0),_=0;$[_]==(H[_]||0);_++);if($[_]>(H[_]||0)&&h--,F<0)k.push(1),w=!0;else{for(T=H.length,L=$.length,_=0,F+=2,M=hi(s/($[0]+1)),M>1&&($=C($,M,s),H=C(H,M,s),L=$.length,T=H.length),ie=L,Z=H.slice(0,L),W=Z.length;W<L;Z[W++]=0);q=$.slice(),q=[0].concat(q),P=$[0],$[1]>=s/2&&P++;do{if(M=0,u=E($,Z,L,W),u<0){if(Q=Z[0],L!=W&&(Q=Q*s+(Z[1]||0)),M=hi(Q/P),M>1)for(M>=s&&(M=s-1),b=C($,M,s),m=b.length,W=Z.length;E(b,Z,m,W)==1;)M--,N(b,L<m?q:$,m,s),m=b.length,u=1;else M==0&&(u=M=1),b=$.slice(),m=b.length;if(m<W&&(b=[0].concat(b)),N(Z,b,W,s),W=Z.length,u==-1)for(;E($,Z,L,W)<1;)M++,N(Z,L<W?q:$,W,s),W=Z.length}else u===0&&(M++,Z=[0]);k[_++]=M,Z[0]?Z[W++]=H[ie]||0:(Z=[H[ie]],W=1)}while((ie++<T||Z[0]!=null)&&F--);w=Z[0]!=null,k[0]||k.splice(0,1)}if(s==qi){for(_=1,F=k[0];F>=10;F/=10,_++);X(c,A+(c.e=_+h*it-1)+1,p,w)}else c.e=h,c.r=+w;return c}})();function V(C,E,N,D){var O,A,p,s,u;if(N==null?N=l:Et(N,0,8),!C.c)return C.toString();if(O=C.c[0],p=C.e,E==null)u=di(C.c),u=D==1||D==2&&(p<=d||p>=f)?Vs(u,p):hr(u,p,"0");else if(C=X(new j(C),E,N),A=C.e,u=di(C.c),s=u.length,D==1||D==2&&(E<=A||A<=d)){for(;s<E;u+="0",s++);u=Vs(u,A)}else if(E-=p+(D===2&&A>p),u=hr(u,A,"0"),A+1>s){if(--E>0)for(u+=".";E--;u+="0");}else if(E+=A-s,E>0)for(A+1==s&&(u+=".");E--;u+="0");return C.s<0&&O?"-"+u:u}function J(C,E){for(var N,D,O=1,A=new j(C[0]);O<C.length;O++)D=new j(C[O]),(!D.s||(N=dn(A,D))===E||N===0&&A.s===E)&&(A=D);return A}function Y(C,E,N){for(var D=1,O=E.length;!E[--O];E.pop());for(O=E[0];O>=10;O/=10,D++);return(N=D+N*it-1)>v?C.c=C.e=null:N<g?C.c=[C.e=0]:(C.e=N,C.c=E),C}r=(function(){var C=/^(-?)0([xbo])(?=\w[\w.]*$)/i,E=/^([^.]+)\.$/,N=/^\.([^.]+)$/,D=/^-?(Infinity|NaN)$/,O=/^\s*\+(?=[\w.])|^\s+|\s+$/g;return function(A,p,s,u){var h,_=s?p:p.replace(O,"");if(D.test(_))A.s=isNaN(_)?null:_<0?-1:1;else{if(!s&&(_=_.replace(C,function(w,M,b){return h=(b=b.toLowerCase())=="x"?16:b=="b"?2:8,!u||u==h?M:w}),u&&(h=u,_=_.replace(E,"$1").replace(N,"0.$1")),p!=_))return new j(_,h);if(j.DEBUG)throw Error(ni+"Not a"+(u?" base "+u:"")+" number: "+p);A.s=null}A.c=A.e=null}})();function X(C,E,N,D){var O,A,p,s,u,h,_,w=C.c,M=Mu;if(w){e:{for(O=1,s=w[0];s>=10;s/=10,O++);if(A=E-O,A<0)A+=it,p=E,u=w[h=0],_=hi(u/M[O-p-1]%10);else if(h=yu((A+1)/it),h>=w.length)if(D){for(;w.length<=h;w.push(0));u=_=0,O=1,A%=it,p=A-it+1}else break e;else{for(u=s=w[h],O=1;s>=10;s/=10,O++);A%=it,p=A-it+O,_=p<0?0:hi(u/M[O-p-1]%10)}if(D=D||E<0||w[h+1]!=null||(p<0?u:u%M[O-p-1]),D=N<4?(_||D)&&(N==0||N==(C.s<0?3:2)):_>5||_==5&&(N==4||D||N==6&&(A>0?p>0?u/M[O-p]:0:w[h-1])%10&1||N==(C.s<0?8:7)),E<1||!w[0])return w.length=0,D?(E-=C.e+1,w[0]=M[(it-E%it)%it],C.e=-E||0):w[0]=C.e=0,C;if(A==0?(w.length=h,s=1,h--):(w.length=h+1,s=M[it-A],w[h]=p>0?hi(u/M[O-p]%M[p])*s:0),D)for(;;)if(h==0){for(A=1,p=w[0];p>=10;p/=10,A++);for(p=w[0]+=s,s=1;p>=10;p/=10,s++);A!=s&&(C.e++,w[0]==qi&&(w[0]=1));break}else{if(w[h]+=s,w[h]!=qi)break;w[h--]=0,s=1}for(A=w.length;w[--A]===0;w.pop());}C.e>v?C.c=C.e=null:C.e<g&&(C.c=[C.e=0])}return C}function ee(C){var E,N=C.e;return N===null?C.toString():(E=di(C.c),E=N<=d||N>=f?Vs(E,N):hr(E,N,"0"),C.s<0?"-"+E:E)}return n.absoluteValue=n.abs=function(){var C=new j(this);return C.s<0&&(C.s=1),C},n.comparedTo=function(C,E){return dn(this,new j(C,E))},n.decimalPlaces=n.dp=function(C,E){var N,D,O,A=this;if(C!=null)return Et(C,0,Lt),E==null?E=l:Et(E,0,8),X(new j(A),C+A.e+1,E);if(!(N=A.c))return null;if(D=((O=N.length-1)-fi(this.e/it))*it,O=N[O])for(;O%10==0;O/=10,D--);return D<0&&(D=0),D},n.dividedBy=n.div=function(C,E){return e(this,new j(C,E),a,l)},n.dividedToIntegerBy=n.idiv=function(C,E){return e(this,new j(C,E),0,1)},n.exponentiatedBy=n.pow=function(C,E){var N,D,O,A,p,s,u,h,_,w=this;if(C=new j(C),C.c&&!C.isInteger())throw Error(ni+"Exponent not an integer: "+ee(C));if(E!=null&&(E=new j(E)),s=C.e>14,!w.c||!w.c[0]||w.c[0]==1&&!w.e&&w.c.length==1||!C.c||!C.c[0])return _=new j(Math.pow(+ee(w),s?C.s*(2-$s(C)):+ee(C))),E?_.mod(E):_;if(u=C.s<0,E){if(E.c?!E.c[0]:!E.s)return new j(NaN);D=!u&&w.isInteger()&&E.isInteger(),D&&(w=w.mod(E))}else{if(C.e>9&&(w.e>0||w.e<-1||(w.e==0?w.c[0]>1||s&&w.c[1]>=24e7:w.c[0]<8e13||s&&w.c[0]<=9999975e7)))return A=w.s<0&&$s(C)?-0:0,w.e>-1&&(A=1/A),new j(u?1/A:A);I&&(A=yu(I/it+2))}for(s?(N=new j(.5),u&&(C.s=1),h=$s(C)):(O=Math.abs(+ee(C)),h=O%2),_=new j(o);;){if(h){if(_=_.times(w),!_.c)break;A?_.c.length>A&&(_.c.length=A):D&&(_=_.mod(E))}if(O){if(O=hi(O/2),O===0)break;h=O%2}else if(C=C.times(N),X(C,C.e+1,1),C.e>14)h=$s(C);else{if(O=+ee(C),O===0)break;h=O%2}w=w.times(w),A?w.c&&w.c.length>A&&(w.c.length=A):D&&(w=w.mod(E))}return D?_:(u&&(_=o.div(_)),E?_.mod(E):A?X(_,I,l,p):_)},n.integerValue=function(C){var E=new j(this);return C==null?C=l:Et(C,0,8),X(E,E.e+1,C)},n.isEqualTo=n.eq=function(C,E){return dn(this,new j(C,E))===0},n.isFinite=function(){return!!this.c},n.isGreaterThan=n.gt=function(C,E){return dn(this,new j(C,E))>0},n.isGreaterThanOrEqualTo=n.gte=function(C,E){return(E=dn(this,new j(C,E)))===1||E===0},n.isInteger=function(){return!!this.c&&fi(this.e/it)>this.c.length-2},n.isLessThan=n.lt=function(C,E){return dn(this,new j(C,E))<0},n.isLessThanOrEqualTo=n.lte=function(C,E){return(E=dn(this,new j(C,E)))===-1||E===0},n.isNaN=function(){return!this.s},n.isNegative=function(){return this.s<0},n.isPositive=function(){return this.s>0},n.isZero=function(){return!!this.c&&this.c[0]==0},n.minus=function(C,E){var N,D,O,A,p=this,s=p.s;if(C=new j(C,E),E=C.s,!s||!E)return new j(NaN);if(s!=E)return C.s=-E,p.plus(C);var u=p.e/it,h=C.e/it,_=p.c,w=C.c;if(!u||!h){if(!_||!w)return _?(C.s=-E,C):new j(w?p:NaN);if(!_[0]||!w[0])return w[0]?(C.s=-E,C):new j(_[0]?p:l==3?-0:0)}if(u=fi(u),h=fi(h),_=_.slice(),s=u-h){for((A=s<0)?(s=-s,O=_):(h=u,O=w),O.reverse(),E=s;E--;O.push(0));O.reverse()}else for(D=(A=(s=_.length)<(E=w.length))?s:E,s=E=0;E<D;E++)if(_[E]!=w[E]){A=_[E]<w[E];break}if(A&&(O=_,_=w,w=O,C.s=-C.s),E=(D=w.length)-(N=_.length),E>0)for(;E--;_[N++]=0);for(E=qi-1;D>s;){if(_[--D]<w[D]){for(N=D;N&&!_[--N];_[N]=E);--_[N],_[D]+=qi}_[D]-=w[D]}for(;_[0]==0;_.splice(0,1),--h);return _[0]?Y(C,_,h):(C.s=l==3?-1:1,C.c=[C.e=0],C)},n.modulo=n.mod=function(C,E){var N,D,O=this;return C=new j(C,E),!O.c||!C.s||C.c&&!C.c[0]?new j(NaN):!C.c||O.c&&!O.c[0]?new j(O):(S==9?(D=C.s,C.s=1,N=e(O,C,0,3),C.s=D,N.s*=D):N=e(O,C,0,S),C=O.minus(N.times(C)),!C.c[0]&&S==1&&(C.s=O.s),C)},n.multipliedBy=n.times=function(C,E){var N,D,O,A,p,s,u,h,_,w,M,b,m,c,k,Z=this,W=Z.c,Q=(C=new j(C,E)).c;if(!W||!Q||!W[0]||!Q[0])return!Z.s||!C.s||W&&!W[0]&&!Q||Q&&!Q[0]&&!W?C.c=C.e=C.s=null:(C.s*=Z.s,!W||!Q?C.c=C.e=null:(C.c=[0],C.e=0)),C;for(D=fi(Z.e/it)+fi(C.e/it),C.s*=Z.s,u=W.length,w=Q.length,u<w&&(m=W,W=Q,Q=m,O=u,u=w,w=O),O=u+w,m=[];O--;m.push(0));for(c=qi,k=Nr,O=w;--O>=0;){for(N=0,M=Q[O]%k,b=Q[O]/k|0,p=u,A=O+p;A>O;)h=W[--p]%k,_=W[p]/k|0,s=b*h+_*M,h=M*h+s%k*k+m[A]+N,N=(h/c|0)+(s/k|0)+b*_,m[A--]=h%c;m[A]=N}return N?++D:m.splice(0,1),Y(C,m,D)},n.negated=function(){var C=new j(this);return C.s=-C.s||null,C},n.plus=function(C,E){var N,D=this,O=D.s;if(C=new j(C,E),E=C.s,!O||!E)return new j(NaN);if(O!=E)return C.s=-E,D.minus(C);var A=D.e/it,p=C.e/it,s=D.c,u=C.c;if(!A||!p){if(!s||!u)return new j(O/0);if(!s[0]||!u[0])return u[0]?C:new j(s[0]?D:O*0)}if(A=fi(A),p=fi(p),s=s.slice(),O=A-p){for(O>0?(p=A,N=u):(O=-O,N=s),N.reverse();O--;N.push(0));N.reverse()}for(O=s.length,E=u.length,O-E<0&&(N=u,u=s,s=N,E=O),O=0;E;)O=(s[--E]=s[E]+u[E]+O)/qi|0,s[E]=qi===s[E]?0:s[E]%qi;return O&&(s=[O].concat(s),++p),Y(C,s,p)},n.precision=n.sd=function(C,E){var N,D,O,A=this;if(C!=null&&C!==!!C)return Et(C,1,Lt),E==null?E=l:Et(E,0,8),X(new j(A),C,E);if(!(N=A.c))return null;if(O=N.length-1,D=O*it+1,O=N[O]){for(;O%10==0;O/=10,D--);for(O=N[0];O>=10;O/=10,D++);}return C&&A.e+1>D&&(D=A.e+1),D},n.shiftedBy=function(C){return Et(C,-bu,bu),this.times("1e"+C)},n.squareRoot=n.sqrt=function(){var C,E,N,D,O,A=this,p=A.c,s=A.s,u=A.e,h=a+4,_=new j("0.5");if(s!==1||!p||!p[0])return new j(!s||s<0&&(!p||p[0])?NaN:p?A:1/0);if(s=Math.sqrt(+ee(A)),s==0||s==1/0?(E=di(p),(E.length+u)%2==0&&(E+="0"),s=Math.sqrt(+E),u=fi((u+1)/2)-(u<0||u%2),s==1/0?E="5e"+u:(E=s.toExponential(),E=E.slice(0,E.indexOf("e")+1)+u),N=new j(E)):N=new j(s+""),N.c[0]){for(u=N.e,s=u+h,s<3&&(s=0);;)if(O=N,N=_.times(O.plus(e(A,O,h,1))),di(O.c).slice(0,s)===(E=di(N.c)).slice(0,s))if(N.e<u&&--s,E=E.slice(s-3,s+1),E=="9999"||!D&&E=="4999"){if(!D&&(X(O,O.e+a+2,0),O.times(O).eq(A))){N=O;break}h+=4,s+=4,D=1}else{(!+E||!+E.slice(1)&&E.charAt(0)=="5")&&(X(N,N.e+a+2,1),C=!N.times(N).eq(A));break}}return X(N,N.e+a+1,l,C)},n.toExponential=function(C,E){return C!=null&&(Et(C,0,Lt),C++),V(this,C,E,1)},n.toFixed=function(C,E){return C!=null&&(Et(C,0,Lt),C=C+this.e+1),V(this,C,E)},n.toFormat=function(C,E,N){var D,O=this;if(N==null)C!=null&&E&&typeof E=="object"?(N=E,E=null):C&&typeof C=="object"?(N=C,C=E=null):N=x;else if(typeof N!="object")throw Error(ni+"Argument not an object: "+N);if(D=O.toFixed(C,E),O.c){var A,p=D.split("."),s=+N.groupSize,u=+N.secondaryGroupSize,h=N.groupSeparator||"",_=p[0],w=p[1],M=O.s<0,b=M?_.slice(1):_,m=b.length;if(u&&(A=s,s=u,u=A,m-=A),s>0&&m>0){for(A=m%s||s,_=b.substr(0,A);A<m;A+=s)_+=h+b.substr(A,s);u>0&&(_+=h+b.slice(A)),M&&(_="-"+_)}D=w?_+(N.decimalSeparator||"")+((u=+N.fractionGroupSize)?w.replace(new RegExp("\\d{"+u+"}\\B","g"),"$&"+(N.fractionGroupSeparator||"")):w):_}return(N.prefix||"")+D+(N.suffix||"")},n.toFraction=function(C){var E,N,D,O,A,p,s,u,h,_,w,M,b=this,m=b.c;if(C!=null&&(s=new j(C),!s.isInteger()&&(s.c||s.s!==1)||s.lt(o)))throw Error(ni+"Argument "+(s.isInteger()?"out of range: ":"not an integer: ")+ee(s));if(!m)return new j(b);for(E=new j(o),h=N=new j(o),D=u=new j(o),M=di(m),A=E.e=M.length-b.e-1,E.c[0]=Mu[(p=A%it)<0?it+p:p],C=!C||s.comparedTo(E)>0?A>0?E:h:s,p=v,v=1/0,s=new j(M),u.c[0]=0;_=e(s,E,0,1),O=N.plus(_.times(D)),O.comparedTo(C)!=1;)N=D,D=O,h=u.plus(_.times(O=h)),u=O,E=s.minus(_.times(O=E)),s=O;return O=e(C.minus(N),D,0,1),u=u.plus(O.times(h)),N=N.plus(O.times(D)),u.s=h.s=b.s,A=A*2,w=e(h,D,A,l).minus(b).abs().comparedTo(e(u,N,A,l).minus(b).abs())<1?[h,D]:[u,N],v=p,w},n.toNumber=function(){return+ee(this)},n.toPrecision=function(C,E){return C!=null&&Et(C,1,Lt),V(this,C,E,2)},n.toString=function(C){var E,N=this,D=N.s,O=N.e;return O===null?D?(E="Infinity",D<0&&(E="-"+E)):E="NaN":(C==null?E=O<=d||O>=f?Vs(di(N.c),O):hr(di(N.c),O,"0"):C===10&&R?(N=X(new j(N),a+O+1,l),E=hr(di(N.c),N.e,"0")):(Et(C,2,B.length,"Base"),E=i(hr(di(N.c),O,"0"),10,C,D,!0)),D<0&&N.c[0]&&(E="-"+E)),E},n.valueOf=n.toJSON=function(){return ee(this)},n._isBigNumber=!0,n[Symbol.toStringTag]="BigNumber",n[Symbol.for("nodejs.util.inspect.custom")]=n.valueOf,t!=null&&j.set(t),j}function fi(t){var e=t|0;return t>0||t===e?e:e-1}function di(t){for(var e,i,r=1,n=t.length,o=t[0]+"";r<n;){for(e=t[r++]+"",i=it-e.length;i--;e="0"+e);o+=e}for(n=o.length;o.charCodeAt(--n)===48;);return o.slice(0,n+1||1)}function dn(t,e){var i,r,n=t.c,o=e.c,a=t.s,l=e.s,d=t.e,f=e.e;if(!a||!l)return null;if(i=n&&!n[0],r=o&&!o[0],i||r)return i?r?0:-l:a;if(a!=l)return a;if(i=a<0,r=d==f,!n||!o)return r?0:!n^i?1:-1;if(!r)return d>f^i?1:-1;for(l=(d=n.length)<(f=o.length)?d:f,a=0;a<l;a++)if(n[a]!=o[a])return n[a]>o[a]^i?1:-1;return d==f?0:d>f^i?1:-1}function Et(t,e,i,r){if(t<e||t>i||t!==hi(t))throw Error(ni+(r||"Argument")+(typeof t=="number"?t<e||t>i?" out of range: ":" not an integer: ":" not a primitive number: ")+String(t))}function $s(t){var e=t.c.length-1;return fi(t.e/it)==e&&t.c[e]%2!=0}function Vs(t,e){return(t.length>1?t.charAt(0)+"."+t.slice(1):t)+(e<0?"e":"e+")+e}function hr(t,e,i){var r,n;if(e<0){for(n=i+".";++e;n+=i);t=n+t}else if(r=t.length,++e>r){for(n=i,e-=r;--e;n+=i);t+=n}else e<r&&(t=t.slice(0,e)+"."+t.slice(e));return t}var n1=Td(),dt=n1;import{Transaction as $i}from"@mysten/sui/transactions";import{bcs as aw}from"@mysten/sui/bcs";var io=9e15,Br=1e9,ku="0123456789abcdef",Ws="2.3025850929940456840179914546843642076011014886287729760333279009675726096773524802359972050895982983419677840422862486334095254650828067566662873690987816894829072083255546808437998948262331985283935053089653777326288461633662222876982198867465436674744042432743651550489343149393914796194044002221051017141748003688084012647080685567743216228355220114804663715659121373450747856947683463616792101806445070648000277502684916746550586856935673420670581136429224554405758925724208241314695689016758940256776311356919292033376587141660230105703089634572075440370847469940168269282808481184289314848524948644871927809676271275775397027668605952496716674183485704422507197965004714951050492214776567636938662976979522110718264549734772662425709429322582798502585509785265383207606726317164309505995087807523710333101197857547331541421808427543863591778117054309827482385045648019095610299291824318237525357709750539565187697510374970888692180205189339507238539205144634197265287286965110862571492198849978748873771345686209167058",Gs="3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185950244594553469083026425223082533446850352619311881710100031378387528865875332083814206171776691473035982534904287554687311595628638823537875937519577818577805321712268066130019278766111959092164201989380952572010654858632789",Au={precision:20,rounding:4,modulo:1,toExpNeg:-7,toExpPos:21,minE:-io,maxE:io,crypto:!1},Pd,fr,He=!0,Ks="[DecimalError] ",jr=Ks+"Invalid argument: ",Od=Ks+"Precision limit exceeded",Rd=Ks+"crypto unavailable",Nd="[object Decimal]",Xt=Math.floor,Dt=Math.pow,o1=/^0b([01]+(\.[01]*)?|\.[01]+)(p[+-]?\d+)?$/i,s1=/^0x([0-9a-f]+(\.[0-9a-f]*)?|\.[0-9a-f]+)(p[+-]?\d+)?$/i,a1=/^0o([0-7]+(\.[0-7]*)?|\.[0-7]+)(p[+-]?\d+)?$/i,Dd=/^(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i,Ui=1e7,Fe=7,u1=9007199254740991,l1=Ws.length-1,Su=Gs.length-1,ue={toStringTag:Nd};ue.absoluteValue=ue.abs=function(){var t=new this.constructor(this);return t.s<0&&(t.s=1),Ne(t)};ue.ceil=function(){return Ne(new this.constructor(this),this.e+1,2)};ue.clampedTo=ue.clamp=function(t,e){var i,r=this,n=r.constructor;if(t=new n(t),e=new n(e),!t.s||!e.s)return new n(NaN);if(t.gt(e))throw Error(jr+e);return i=r.cmp(t),i<0?t:r.cmp(e)>0?e:new n(r)};ue.comparedTo=ue.cmp=function(t){var e,i,r,n,o=this,a=o.d,l=(t=new o.constructor(t)).d,d=o.s,f=t.s;if(!a||!l)return!d||!f?NaN:d!==f?d:a===l?0:!a^d<0?1:-1;if(!a[0]||!l[0])return a[0]?d:l[0]?-f:0;if(d!==f)return d;if(o.e!==t.e)return o.e>t.e^d<0?1:-1;for(r=a.length,n=l.length,e=0,i=r<n?r:n;e<i;++e)if(a[e]!==l[e])return a[e]>l[e]^d<0?1:-1;return r===n?0:r>n^d<0?1:-1};ue.cosine=ue.cos=function(){var t,e,i=this,r=i.constructor;return i.d?i.d[0]?(t=r.precision,e=r.rounding,r.precision=t+Math.max(i.e,i.sd())+Fe,r.rounding=1,i=c1(r,qd(r,i)),r.precision=t,r.rounding=e,Ne(fr==2||fr==3?i.neg():i,t,e,!0)):new r(1):new r(NaN)};ue.cubeRoot=ue.cbrt=function(){var t,e,i,r,n,o,a,l,d,f,g=this,v=g.constructor;if(!g.isFinite()||g.isZero())return new v(g);for(He=!1,o=g.s*Dt(g.s*g,1/3),!o||Math.abs(o)==1/0?(i=Vt(g.d),t=g.e,(o=(t-i.length+1)%3)&&(i+=o==1||o==-2?"0":"00"),o=Dt(i,1/3),t=Xt((t+1)/3)-(t%3==(t<0?-1:2)),o==1/0?i="5e"+t:(i=o.toExponential(),i=i.slice(0,i.indexOf("e")+1)+t),r=new v(i),r.s=g.s):r=new v(o.toString()),a=(t=v.precision)+3;;)if(l=r,d=l.times(l).times(l),f=d.plus(g),r=gt(f.plus(g).times(l),f.plus(d),a+2,1),Vt(l.d).slice(0,a)===(i=Vt(r.d)).slice(0,a))if(i=i.slice(a-3,a+1),i=="9999"||!n&&i=="4999"){if(!n&&(Ne(l,t+1,0),l.times(l).times(l).eq(g))){r=l;break}a+=4,n=1}else{(!+i||!+i.slice(1)&&i.charAt(0)=="5")&&(Ne(r,t+1,1),e=!r.times(r).times(r).eq(g));break}return He=!0,Ne(r,t,v.rounding,e)};ue.decimalPlaces=ue.dp=function(){var t,e=this.d,i=NaN;if(e){if(t=e.length-1,i=(t-Xt(this.e/Fe))*Fe,t=e[t],t)for(;t%10==0;t/=10)i--;i<0&&(i=0)}return i};ue.dividedBy=ue.div=function(t){return gt(this,new this.constructor(t))};ue.dividedToIntegerBy=ue.divToInt=function(t){var e=this,i=e.constructor;return Ne(gt(e,new i(t),0,1,1),i.precision,i.rounding)};ue.equals=ue.eq=function(t){return this.cmp(t)===0};ue.floor=function(){return Ne(new this.constructor(this),this.e+1,3)};ue.greaterThan=ue.gt=function(t){return this.cmp(t)>0};ue.greaterThanOrEqualTo=ue.gte=function(t){var e=this.cmp(t);return e==1||e===0};ue.hyperbolicCosine=ue.cosh=function(){var t,e,i,r,n,o=this,a=o.constructor,l=new a(1);if(!o.isFinite())return new a(o.s?1/0:NaN);if(o.isZero())return l;i=a.precision,r=a.rounding,a.precision=i+Math.max(o.e,o.sd())+4,a.rounding=1,n=o.d.length,n<32?(t=Math.ceil(n/3),e=(1/Js(4,t)).toString()):(t=16,e="2.3283064365386962890625e-10"),o=ro(a,1,o.times(e),new a(1),!0);for(var d,f=t,g=new a(8);f--;)d=o.times(o),o=l.minus(d.times(g.minus(d.times(g))));return Ne(o,a.precision=i,a.rounding=r,!0)};ue.hyperbolicSine=ue.sinh=function(){var t,e,i,r,n=this,o=n.constructor;if(!n.isFinite()||n.isZero())return new o(n);if(e=o.precision,i=o.rounding,o.precision=e+Math.max(n.e,n.sd())+4,o.rounding=1,r=n.d.length,r<3)n=ro(o,2,n,n,!0);else{t=1.4*Math.sqrt(r),t=t>16?16:t|0,n=n.times(1/Js(5,t)),n=ro(o,2,n,n,!0);for(var a,l=new o(5),d=new o(16),f=new o(20);t--;)a=n.times(n),n=n.times(l.plus(a.times(d.times(a).plus(f))))}return o.precision=e,o.rounding=i,Ne(n,e,i,!0)};ue.hyperbolicTangent=ue.tanh=function(){var t,e,i=this,r=i.constructor;return i.isFinite()?i.isZero()?new r(i):(t=r.precision,e=r.rounding,r.precision=t+7,r.rounding=1,gt(i.sinh(),i.cosh(),r.precision=t,r.rounding=e)):new r(i.s)};ue.inverseCosine=ue.acos=function(){var t=this,e=t.constructor,i=t.abs().cmp(1),r=e.precision,n=e.rounding;return i!==-1?i===0?t.isNeg()?ir(e,r,n):new e(0):new e(NaN):t.isZero()?ir(e,r+4,n).times(.5):(e.precision=r+6,e.rounding=1,t=new e(1).minus(t).div(t.plus(1)).sqrt().atan(),e.precision=r,e.rounding=n,t.times(2))};ue.inverseHyperbolicCosine=ue.acosh=function(){var t,e,i=this,r=i.constructor;return i.lte(1)?new r(i.eq(1)?0:NaN):i.isFinite()?(t=r.precision,e=r.rounding,r.precision=t+Math.max(Math.abs(i.e),i.sd())+4,r.rounding=1,He=!1,i=i.times(i).minus(1).sqrt().plus(i),He=!0,r.precision=t,r.rounding=e,i.ln()):new r(i)};ue.inverseHyperbolicSine=ue.asinh=function(){var t,e,i=this,r=i.constructor;return!i.isFinite()||i.isZero()?new r(i):(t=r.precision,e=r.rounding,r.precision=t+2*Math.max(Math.abs(i.e),i.sd())+6,r.rounding=1,He=!1,i=i.times(i).plus(1).sqrt().plus(i),He=!0,r.precision=t,r.rounding=e,i.ln())};ue.inverseHyperbolicTangent=ue.atanh=function(){var t,e,i,r,n=this,o=n.constructor;return n.isFinite()?n.e>=0?new o(n.abs().eq(1)?n.s/0:n.isZero()?n:NaN):(t=o.precision,e=o.rounding,r=n.sd(),Math.max(r,t)<2*-n.e-1?Ne(new o(n),t,e,!0):(o.precision=i=r-n.e,n=gt(n.plus(1),new o(1).minus(n),i+t,1),o.precision=t+4,o.rounding=1,n=n.ln(),o.precision=t,o.rounding=e,n.times(.5))):new o(NaN)};ue.inverseSine=ue.asin=function(){var t,e,i,r,n=this,o=n.constructor;return n.isZero()?new o(n):(e=n.abs().cmp(1),i=o.precision,r=o.rounding,e!==-1?e===0?(t=ir(o,i+4,r).times(.5),t.s=n.s,t):new o(NaN):(o.precision=i+6,o.rounding=1,n=n.div(new o(1).minus(n.times(n)).sqrt().plus(1)).atan(),o.precision=i,o.rounding=r,n.times(2)))};ue.inverseTangent=ue.atan=function(){var t,e,i,r,n,o,a,l,d,f=this,g=f.constructor,v=g.precision,y=g.rounding;if(f.isFinite()){if(f.isZero())return new g(f);if(f.abs().eq(1)&&v+4<=Su)return a=ir(g,v+4,y).times(.25),a.s=f.s,a}else{if(!f.s)return new g(NaN);if(v+4<=Su)return a=ir(g,v+4,y).times(.5),a.s=f.s,a}for(g.precision=l=v+10,g.rounding=1,i=Math.min(28,l/Fe+2|0),t=i;t;--t)f=f.div(f.times(f).plus(1).sqrt().plus(1));for(He=!1,e=Math.ceil(l/Fe),r=1,d=f.times(f),a=new g(f),n=f;t!==-1;)if(n=n.times(d),o=a.minus(n.div(r+=2)),n=n.times(d),a=o.plus(n.div(r+=2)),a.d[e]!==void 0)for(t=e;a.d[t]===o.d[t]&&t--;);return i&&(a=a.times(2<<i-1)),He=!0,Ne(a,g.precision=v,g.rounding=y,!0)};ue.isFinite=function(){return!!this.d};ue.isInteger=ue.isInt=function(){return!!this.d&&Xt(this.e/Fe)>this.d.length-2};ue.isNaN=function(){return!this.s};ue.isNegative=ue.isNeg=function(){return this.s<0};ue.isPositive=ue.isPos=function(){return this.s>0};ue.isZero=function(){return!!this.d&&this.d[0]===0};ue.lessThan=ue.lt=function(t){return this.cmp(t)<0};ue.lessThanOrEqualTo=ue.lte=function(t){return this.cmp(t)<1};ue.logarithm=ue.log=function(t){var e,i,r,n,o,a,l,d,f=this,g=f.constructor,v=g.precision,y=g.rounding,S=5;if(t==null)t=new g(10),e=!0;else{if(t=new g(t),i=t.d,t.s<0||!i||!i[0]||t.eq(1))return new g(NaN);e=t.eq(10)}if(i=f.d,f.s<0||!i||!i[0]||f.eq(1))return new g(i&&!i[0]?-1/0:f.s!=1?NaN:i?0:1/0);if(e)if(i.length>1)o=!0;else{for(n=i[0];n%10===0;)n/=10;o=n!==1}if(He=!1,l=v+S,a=Lr(f,l),r=e?zs(g,l+10):Lr(t,l),d=gt(a,r,l,1),xo(d.d,n=v,y))do if(l+=10,a=Lr(f,l),r=e?zs(g,l+10):Lr(t,l),d=gt(a,r,l,1),!o){+Vt(d.d).slice(n+1,n+15)+1==1e14&&(d=Ne(d,v+1,0));break}while(xo(d.d,n+=10,y));return He=!0,Ne(d,v,y)};ue.minus=ue.sub=function(t){var e,i,r,n,o,a,l,d,f,g,v,y,S=this,I=S.constructor;if(t=new I(t),!S.d||!t.d)return!S.s||!t.s?t=new I(NaN):S.d?t.s=-t.s:t=new I(t.d||S.s!==t.s?S:NaN),t;if(S.s!=t.s)return t.s=-t.s,S.plus(t);if(f=S.d,y=t.d,l=I.precision,d=I.rounding,!f[0]||!y[0]){if(y[0])t.s=-t.s;else if(f[0])t=new I(S);else return new I(d===3?-0:0);return He?Ne(t,l,d):t}if(i=Xt(t.e/Fe),g=Xt(S.e/Fe),f=f.slice(),o=g-i,o){for(v=o<0,v?(e=f,o=-o,a=y.length):(e=y,i=g,a=f.length),r=Math.max(Math.ceil(l/Fe),a)+2,o>r&&(o=r,e.length=1),e.reverse(),r=o;r--;)e.push(0);e.reverse()}else{for(r=f.length,a=y.length,v=r<a,v&&(a=r),r=0;r<a;r++)if(f[r]!=y[r]){v=f[r]<y[r];break}o=0}for(v&&(e=f,f=y,y=e,t.s=-t.s),a=f.length,r=y.length-a;r>0;--r)f[a++]=0;for(r=y.length;r>o;){if(f[--r]<y[r]){for(n=r;n&&f[--n]===0;)f[n]=Ui-1;--f[n],f[r]+=Ui}f[r]-=y[r]}for(;f[--a]===0;)f.pop();for(;f[0]===0;f.shift())--i;return f[0]?(t.d=f,t.e=Xs(f,i),He?Ne(t,l,d):t):new I(d===3?-0:0)};ue.modulo=ue.mod=function(t){var e,i=this,r=i.constructor;return t=new r(t),!i.d||!t.s||t.d&&!t.d[0]?new r(NaN):!t.d||i.d&&!i.d[0]?Ne(new r(i),r.precision,r.rounding):(He=!1,r.modulo==9?(e=gt(i,t.abs(),0,3,1),e.s*=t.s):e=gt(i,t,0,r.modulo,1),e=e.times(t),He=!0,i.minus(e))};ue.naturalExponential=ue.exp=function(){return Cu(this)};ue.naturalLogarithm=ue.ln=function(){return Lr(this)};ue.negated=ue.neg=function(){var t=new this.constructor(this);return t.s=-t.s,Ne(t)};ue.plus=ue.add=function(t){var e,i,r,n,o,a,l,d,f,g,v=this,y=v.constructor;if(t=new y(t),!v.d||!t.d)return!v.s||!t.s?t=new y(NaN):v.d||(t=new y(t.d||v.s===t.s?v:NaN)),t;if(v.s!=t.s)return t.s=-t.s,v.minus(t);if(f=v.d,g=t.d,l=y.precision,d=y.rounding,!f[0]||!g[0])return g[0]||(t=new y(v)),He?Ne(t,l,d):t;if(o=Xt(v.e/Fe),r=Xt(t.e/Fe),f=f.slice(),n=o-r,n){for(n<0?(i=f,n=-n,a=g.length):(i=g,r=o,a=f.length),o=Math.ceil(l/Fe),a=o>a?o+1:a+1,n>a&&(n=a,i.length=1),i.reverse();n--;)i.push(0);i.reverse()}for(a=f.length,n=g.length,a-n<0&&(n=a,i=g,g=f,f=i),e=0;n;)e=(f[--n]=f[n]+g[n]+e)/Ui|0,f[n]%=Ui;for(e&&(f.unshift(e),++r),a=f.length;f[--a]==0;)f.pop();return t.d=f,t.e=Xs(f,r),He?Ne(t,l,d):t};ue.precision=ue.sd=function(t){var e,i=this;if(t!==void 0&&t!==!!t&&t!==1&&t!==0)throw Error(jr+t);return i.d?(e=Ld(i.d),t&&i.e+1>e&&(e=i.e+1)):e=NaN,e};ue.round=function(){var t=this,e=t.constructor;return Ne(new e(t),t.e+1,e.rounding)};ue.sine=ue.sin=function(){var t,e,i=this,r=i.constructor;return i.isFinite()?i.isZero()?new r(i):(t=r.precision,e=r.rounding,r.precision=t+Math.max(i.e,i.sd())+Fe,r.rounding=1,i=h1(r,qd(r,i)),r.precision=t,r.rounding=e,Ne(fr>2?i.neg():i,t,e,!0)):new r(NaN)};ue.squareRoot=ue.sqrt=function(){var t,e,i,r,n,o,a=this,l=a.d,d=a.e,f=a.s,g=a.constructor;if(f!==1||!l||!l[0])return new g(!f||f<0&&(!l||l[0])?NaN:l?a:1/0);for(He=!1,f=Math.sqrt(+a),f==0||f==1/0?(e=Vt(l),(e.length+d)%2==0&&(e+="0"),f=Math.sqrt(e),d=Xt((d+1)/2)-(d<0||d%2),f==1/0?e="5e"+d:(e=f.toExponential(),e=e.slice(0,e.indexOf("e")+1)+d),r=new g(e)):r=new g(f.toString()),i=(d=g.precision)+3;;)if(o=r,r=o.plus(gt(a,o,i+2,1)).times(.5),Vt(o.d).slice(0,i)===(e=Vt(r.d)).slice(0,i))if(e=e.slice(i-3,i+1),e=="9999"||!n&&e=="4999"){if(!n&&(Ne(o,d+1,0),o.times(o).eq(a))){r=o;break}i+=4,n=1}else{(!+e||!+e.slice(1)&&e.charAt(0)=="5")&&(Ne(r,d+1,1),t=!r.times(r).eq(a));break}return He=!0,Ne(r,d,g.rounding,t)};ue.tangent=ue.tan=function(){var t,e,i=this,r=i.constructor;return i.isFinite()?i.isZero()?new r(i):(t=r.precision,e=r.rounding,r.precision=t+10,r.rounding=1,i=i.sin(),i.s=1,i=gt(i,new r(1).minus(i.times(i)).sqrt(),t+10,0),r.precision=t,r.rounding=e,Ne(fr==2||fr==4?i.neg():i,t,e,!0)):new r(NaN)};ue.times=ue.mul=function(t){var e,i,r,n,o,a,l,d,f,g=this,v=g.constructor,y=g.d,S=(t=new v(t)).d;if(t.s*=g.s,!y||!y[0]||!S||!S[0])return new v(!t.s||y&&!y[0]&&!S||S&&!S[0]&&!y?NaN:!y||!S?t.s/0:t.s*0);for(i=Xt(g.e/Fe)+Xt(t.e/Fe),d=y.length,f=S.length,d<f&&(o=y,y=S,S=o,a=d,d=f,f=a),o=[],a=d+f,r=a;r--;)o.push(0);for(r=f;--r>=0;){for(e=0,n=d+r;n>r;)l=o[n]+S[r]*y[n-r-1]+e,o[n--]=l%Ui|0,e=l/Ui|0;o[n]=(o[n]+e)%Ui|0}for(;!o[--a];)o.pop();return e?++i:o.shift(),t.d=o,t.e=Xs(o,i),He?Ne(t,v.precision,v.rounding):t};ue.toBinary=function(t,e){return Tu(this,2,t,e)};ue.toDecimalPlaces=ue.toDP=function(t,e){var i=this,r=i.constructor;return i=new r(i),t===void 0?i:(oi(t,0,Br),e===void 0?e=r.rounding:oi(e,0,8),Ne(i,t+i.e+1,e))};ue.toExponential=function(t,e){var i,r=this,n=r.constructor;return t===void 0?i=rr(r,!0):(oi(t,0,Br),e===void 0?e=n.rounding:oi(e,0,8),r=Ne(new n(r),t+1,e),i=rr(r,!0,t+1)),r.isNeg()&&!r.isZero()?"-"+i:i};ue.toFixed=function(t,e){var i,r,n=this,o=n.constructor;return t===void 0?i=rr(n):(oi(t,0,Br),e===void 0?e=o.rounding:oi(e,0,8),r=Ne(new o(n),t+n.e+1,e),i=rr(r,!1,t+r.e+1)),n.isNeg()&&!n.isZero()?"-"+i:i};ue.toFraction=function(t){var e,i,r,n,o,a,l,d,f,g,v,y,S=this,I=S.d,x=S.constructor;if(!I)return new x(S);if(f=i=new x(1),r=d=new x(0),e=new x(r),o=e.e=Ld(I)-S.e-1,a=o%Fe,e.d[0]=Dt(10,a<0?Fe+a:a),t==null)t=o>0?e:f;else{if(l=new x(t),!l.isInt()||l.lt(f))throw Error(jr+l);t=l.gt(e)?o>0?e:f:l}for(He=!1,l=new x(Vt(I)),g=x.precision,x.precision=o=I.length*Fe*2;v=gt(l,e,0,1,1),n=i.plus(v.times(r)),n.cmp(t)!=1;)i=r,r=n,n=f,f=d.plus(v.times(n)),d=n,n=e,e=l.minus(v.times(n)),l=n;return n=gt(t.minus(i),r,0,1,1),d=d.plus(n.times(f)),i=i.plus(n.times(r)),d.s=f.s=S.s,y=gt(f,r,o,1).minus(S).abs().cmp(gt(d,i,o,1).minus(S).abs())<1?[f,r]:[d,i],x.precision=g,He=!0,y};ue.toHexadecimal=ue.toHex=function(t,e){return Tu(this,16,t,e)};ue.toNearest=function(t,e){var i=this,r=i.constructor;if(i=new r(i),t==null){if(!i.d)return i;t=new r(1),e=r.rounding}else{if(t=new r(t),e===void 0?e=r.rounding:oi(e,0,8),!i.d)return t.s?i:t;if(!t.d)return t.s&&(t.s=i.s),t}return t.d[0]?(He=!1,i=gt(i,t,0,e,1).times(t),He=!0,Ne(i)):(t.s=i.s,i=t),i};ue.toNumber=function(){return+this};ue.toOctal=function(t,e){return Tu(this,8,t,e)};ue.toPower=ue.pow=function(t){var e,i,r,n,o,a,l=this,d=l.constructor,f=+(t=new d(t));if(!l.d||!t.d||!l.d[0]||!t.d[0])return new d(Dt(+l,f));if(l=new d(l),l.eq(1))return l;if(r=d.precision,o=d.rounding,t.eq(1))return Ne(l,r,o);if(e=Xt(t.e/Fe),e>=t.d.length-1&&(i=f<0?-f:f)<=u1)return n=jd(d,l,i,r),t.s<0?new d(1).div(n):Ne(n,r,o);if(a=l.s,a<0){if(e<t.d.length-1)return new d(NaN);if((t.d[e]&1)==0&&(a=1),l.e==0&&l.d[0]==1&&l.d.length==1)return l.s=a,l}return i=Dt(+l,f),e=i==0||!isFinite(i)?Xt(f*(Math.log("0."+Vt(l.d))/Math.LN10+l.e+1)):new d(i+"").e,e>d.maxE+1||e<d.minE-1?new d(e>0?a/0:0):(He=!1,d.rounding=l.s=1,i=Math.min(12,(e+"").length),n=Cu(t.times(Lr(l,r+i)),r),n.d&&(n=Ne(n,r+5,1),xo(n.d,r,o)&&(e=r+10,n=Ne(Cu(t.times(Lr(l,e+i)),e),e+5,1),+Vt(n.d).slice(r+1,r+15)+1==1e14&&(n=Ne(n,r+1,0)))),n.s=a,He=!0,d.rounding=o,Ne(n,r,o))};ue.toPrecision=function(t,e){var i,r=this,n=r.constructor;return t===void 0?i=rr(r,r.e<=n.toExpNeg||r.e>=n.toExpPos):(oi(t,1,Br),e===void 0?e=n.rounding:oi(e,0,8),r=Ne(new n(r),t,e),i=rr(r,t<=r.e||r.e<=n.toExpNeg,t)),r.isNeg()&&!r.isZero()?"-"+i:i};ue.toSignificantDigits=ue.toSD=function(t,e){var i=this,r=i.constructor;return t===void 0?(t=r.precision,e=r.rounding):(oi(t,1,Br),e===void 0?e=r.rounding:oi(e,0,8)),Ne(new r(i),t,e)};ue.toString=function(){var t=this,e=t.constructor,i=rr(t,t.e<=e.toExpNeg||t.e>=e.toExpPos);return t.isNeg()&&!t.isZero()?"-"+i:i};ue.truncated=ue.trunc=function(){return Ne(new this.constructor(this),this.e+1,1)};ue.valueOf=ue.toJSON=function(){var t=this,e=t.constructor,i=rr(t,t.e<=e.toExpNeg||t.e>=e.toExpPos);return t.isNeg()?"-"+i:i};function Vt(t){var e,i,r,n=t.length-1,o="",a=t[0];if(n>0){for(o+=a,e=1;e<n;e++)r=t[e]+"",i=Fe-r.length,i&&(o+=Dr(i)),o+=r;a=t[e],r=a+"",i=Fe-r.length,i&&(o+=Dr(i))}else if(a===0)return"0";for(;a%10===0;)a/=10;return o+a}function oi(t,e,i){if(t!==~~t||t<e||t>i)throw Error(jr+t)}function xo(t,e,i,r){var n,o,a,l;for(o=t[0];o>=10;o/=10)--e;return--e<0?(e+=Fe,n=0):(n=Math.ceil((e+1)/Fe),e%=Fe),o=Dt(10,Fe-e),l=t[n]%o|0,r==null?e<3?(e==0?l=l/100|0:e==1&&(l=l/10|0),a=i<4&&l==99999||i>3&&l==49999||l==5e4||l==0):a=(i<4&&l+1==o||i>3&&l+1==o/2)&&(t[n+1]/o/100|0)==Dt(10,e-2)-1||(l==o/2||l==0)&&(t[n+1]/o/100|0)==0:e<4?(e==0?l=l/1e3|0:e==1?l=l/100|0:e==2&&(l=l/10|0),a=(r||i<4)&&l==9999||!r&&i>3&&l==4999):a=((r||i<4)&&l+1==o||!r&&i>3&&l+1==o/2)&&(t[n+1]/o/1e3|0)==Dt(10,e-3)-1,a}function Zs(t,e,i){for(var r,n=[0],o,a=0,l=t.length;a<l;){for(o=n.length;o--;)n[o]*=e;for(n[0]+=ku.indexOf(t.charAt(a++)),r=0;r<n.length;r++)n[r]>i-1&&(n[r+1]===void 0&&(n[r+1]=0),n[r+1]+=n[r]/i|0,n[r]%=i)}return n.reverse()}function c1(t,e){var i,r,n;if(e.isZero())return e;r=e.d.length,r<32?(i=Math.ceil(r/3),n=(1/Js(4,i)).toString()):(i=16,n="2.3283064365386962890625e-10"),t.precision+=i,e=ro(t,1,e.times(n),new t(1));for(var o=i;o--;){var a=e.times(e);e=a.times(a).minus(a).times(8).plus(1)}return t.precision-=i,e}var gt=(function(){function t(r,n,o){var a,l=0,d=r.length;for(r=r.slice();d--;)a=r[d]*n+l,r[d]=a%o|0,l=a/o|0;return l&&r.unshift(l),r}function e(r,n,o,a){var l,d;if(o!=a)d=o>a?1:-1;else for(l=d=0;l<o;l++)if(r[l]!=n[l]){d=r[l]>n[l]?1:-1;break}return d}function i(r,n,o,a){for(var l=0;o--;)r[o]-=l,l=r[o]<n[o]?1:0,r[o]=l*a+r[o]-n[o];for(;!r[0]&&r.length>1;)r.shift()}return function(r,n,o,a,l,d){var f,g,v,y,S,I,x,B,R,j,V,J,Y,X,ee,C,E,N,D,O,A=r.constructor,p=r.s==n.s?1:-1,s=r.d,u=n.d;if(!s||!s[0]||!u||!u[0])return new A(!r.s||!n.s||(s?u&&s[0]==u[0]:!u)?NaN:s&&s[0]==0||!u?p*0:p/0);for(d?(S=1,g=r.e-n.e):(d=Ui,S=Fe,g=Xt(r.e/S)-Xt(n.e/S)),D=u.length,E=s.length,R=new A(p),j=R.d=[],v=0;u[v]==(s[v]||0);v++);if(u[v]>(s[v]||0)&&g--,o==null?(X=o=A.precision,a=A.rounding):l?X=o+(r.e-n.e)+1:X=o,X<0)j.push(1),I=!0;else{if(X=X/S+2|0,v=0,D==1){for(y=0,u=u[0],X++;(v<E||y)&&X--;v++)ee=y*d+(s[v]||0),j[v]=ee/u|0,y=ee%u|0;I=y||v<E}else{for(y=d/(u[0]+1)|0,y>1&&(u=t(u,y,d),s=t(s,y,d),D=u.length,E=s.length),C=D,V=s.slice(0,D),J=V.length;J<D;)V[J++]=0;O=u.slice(),O.unshift(0),N=u[0],u[1]>=d/2&&++N;do y=0,f=e(u,V,D,J),f<0?(Y=V[0],D!=J&&(Y=Y*d+(V[1]||0)),y=Y/N|0,y>1?(y>=d&&(y=d-1),x=t(u,y,d),B=x.length,J=V.length,f=e(x,V,B,J),f==1&&(y--,i(x,D<B?O:u,B,d))):(y==0&&(f=y=1),x=u.slice()),B=x.length,B<J&&x.unshift(0),i(V,x,J,d),f==-1&&(J=V.length,f=e(u,V,D,J),f<1&&(y++,i(V,D<J?O:u,J,d))),J=V.length):f===0&&(y++,V=[0]),j[v++]=y,f&&V[0]?V[J++]=s[C]||0:(V=[s[C]],J=1);while((C++<E||V[0]!==void 0)&&X--);I=V[0]!==void 0}j[0]||j.shift()}if(S==1)R.e=g,Pd=I;else{for(v=1,y=j[0];y>=10;y/=10)v++;R.e=v+g*S-1,Ne(R,l?o+R.e+1:o,a,I)}return R}})();function Ne(t,e,i,r){var n,o,a,l,d,f,g,v,y,S=t.constructor;e:if(e!=null){if(v=t.d,!v)return t;for(n=1,l=v[0];l>=10;l/=10)n++;if(o=e-n,o<0)o+=Fe,a=e,g=v[y=0],d=g/Dt(10,n-a-1)%10|0;else if(y=Math.ceil((o+1)/Fe),l=v.length,y>=l)if(r){for(;l++<=y;)v.push(0);g=d=0,n=1,o%=Fe,a=o-Fe+1}else break e;else{for(g=l=v[y],n=1;l>=10;l/=10)n++;o%=Fe,a=o-Fe+n,d=a<0?0:g/Dt(10,n-a-1)%10|0}if(r=r||e<0||v[y+1]!==void 0||(a<0?g:g%Dt(10,n-a-1)),f=i<4?(d||r)&&(i==0||i==(t.s<0?3:2)):d>5||d==5&&(i==4||r||i==6&&(o>0?a>0?g/Dt(10,n-a):0:v[y-1])%10&1||i==(t.s<0?8:7)),e<1||!v[0])return v.length=0,f?(e-=t.e+1,v[0]=Dt(10,(Fe-e%Fe)%Fe),t.e=-e||0):v[0]=t.e=0,t;if(o==0?(v.length=y,l=1,y--):(v.length=y+1,l=Dt(10,Fe-o),v[y]=a>0?(g/Dt(10,n-a)%Dt(10,a)|0)*l:0),f)for(;;)if(y==0){for(o=1,a=v[0];a>=10;a/=10)o++;for(a=v[0]+=l,l=1;a>=10;a/=10)l++;o!=l&&(t.e++,v[0]==Ui&&(v[0]=1));break}else{if(v[y]+=l,v[y]!=Ui)break;v[y--]=0,l=1}for(o=v.length;v[--o]===0;)v.pop()}return He&&(t.e>S.maxE?(t.d=null,t.e=NaN):t.e<S.minE&&(t.e=0,t.d=[0])),t}function rr(t,e,i){if(!t.isFinite())return Fd(t);var r,n=t.e,o=Vt(t.d),a=o.length;return e?(i&&(r=i-a)>0?o=o.charAt(0)+"."+o.slice(1)+Dr(r):a>1&&(o=o.charAt(0)+"."+o.slice(1)),o=o+(t.e<0?"e":"e+")+t.e):n<0?(o="0."+Dr(-n-1)+o,i&&(r=i-a)>0&&(o+=Dr(r))):n>=a?(o+=Dr(n+1-a),i&&(r=i-n-1)>0&&(o=o+"."+Dr(r))):((r=n+1)<a&&(o=o.slice(0,r)+"."+o.slice(r)),i&&(r=i-a)>0&&(n+1===a&&(o+="."),o+=Dr(r))),o}function Xs(t,e){var i=t[0];for(e*=Fe;i>=10;i/=10)e++;return e}function zs(t,e,i){if(e>l1)throw He=!0,i&&(t.precision=i),Error(Od);return Ne(new t(Ws),e,1,!0)}function ir(t,e,i){if(e>Su)throw Error(Od);return Ne(new t(Gs),e,i,!0)}function Ld(t){var e=t.length-1,i=e*Fe+1;if(e=t[e],e){for(;e%10==0;e/=10)i--;for(e=t[0];e>=10;e/=10)i++}return i}function Dr(t){for(var e="";t--;)e+="0";return e}function jd(t,e,i,r){var n,o=new t(1),a=Math.ceil(r/Fe+4);for(He=!1;;){if(i%2&&(o=o.times(e),xd(o.d,a)&&(n=!0)),i=Xt(i/2),i===0){i=o.d.length-1,n&&o.d[i]===0&&++o.d[i];break}e=e.times(e),xd(e.d,a)}return He=!0,o}function Ed(t){return t.d[t.d.length-1]&1}function Bd(t,e,i){for(var r,n,o=new t(e[0]),a=0;++a<e.length;){if(n=new t(e[a]),!n.s){o=n;break}r=o.cmp(n),(r===i||r===0&&o.s===i)&&(o=n)}return o}function Cu(t,e){var i,r,n,o,a,l,d,f=0,g=0,v=0,y=t.constructor,S=y.rounding,I=y.precision;if(!t.d||!t.d[0]||t.e>17)return new y(t.d?t.d[0]?t.s<0?0:1/0:1:t.s?t.s<0?0:t:NaN);for(e==null?(He=!1,d=I):d=e,l=new y(.03125);t.e>-2;)t=t.times(l),v+=5;for(r=Math.log(Dt(2,v))/Math.LN10*2+5|0,d+=r,i=o=a=new y(1),y.precision=d;;){if(o=Ne(o.times(t),d,1),i=i.times(++g),l=a.plus(gt(o,i,d,1)),Vt(l.d).slice(0,d)===Vt(a.d).slice(0,d)){for(n=v;n--;)a=Ne(a.times(a),d,1);if(e==null)if(f<3&&xo(a.d,d-r,S,f))y.precision=d+=10,i=o=l=new y(1),g=0,f++;else return Ne(a,y.precision=I,S,He=!0);else return y.precision=I,a}a=l}}function Lr(t,e){var i,r,n,o,a,l,d,f,g,v,y,S=1,I=10,x=t,B=x.d,R=x.constructor,j=R.rounding,V=R.precision;if(x.s<0||!B||!B[0]||!x.e&&B[0]==1&&B.length==1)return new R(B&&!B[0]?-1/0:x.s!=1?NaN:B?0:x);if(e==null?(He=!1,g=V):g=e,R.precision=g+=I,i=Vt(B),r=i.charAt(0),Math.abs(o=x.e)<15e14){for(;r<7&&r!=1||r==1&&i.charAt(1)>3;)x=x.times(t),i=Vt(x.d),r=i.charAt(0),S++;o=x.e,r>1?(x=new R("0."+i),o++):x=new R(r+"."+i.slice(1))}else return f=zs(R,g+2,V).times(o+""),x=Lr(new R(r+"."+i.slice(1)),g-I).plus(f),R.precision=V,e==null?Ne(x,V,j,He=!0):x;for(v=x,d=a=x=gt(x.minus(1),x.plus(1),g,1),y=Ne(x.times(x),g,1),n=3;;){if(a=Ne(a.times(y),g,1),f=d.plus(gt(a,new R(n),g,1)),Vt(f.d).slice(0,g)===Vt(d.d).slice(0,g))if(d=d.times(2),o!==0&&(d=d.plus(zs(R,g+2,V).times(o+""))),d=gt(d,new R(S),g,1),e==null)if(xo(d.d,g-I,j,l))R.precision=g+=I,f=a=x=gt(v.minus(1),v.plus(1),g,1),y=Ne(x.times(x),g,1),n=l=1;else return Ne(d,R.precision=V,j,He=!0);else return R.precision=V,d;d=f,n+=2}}function Fd(t){return String(t.s*t.s/0)}function Hs(t,e){var i,r,n;for((i=e.indexOf("."))>-1&&(e=e.replace(".","")),(r=e.search(/e/i))>0?(i<0&&(i=r),i+=+e.slice(r+1),e=e.substring(0,r)):i<0&&(i=e.length),r=0;e.charCodeAt(r)===48;r++);for(n=e.length;e.charCodeAt(n-1)===48;--n);if(e=e.slice(r,n),e){if(n-=r,t.e=i=i-r-1,t.d=[],r=(i+1)%Fe,i<0&&(r+=Fe),r<n){for(r&&t.d.push(+e.slice(0,r)),n-=Fe;r<n;)t.d.push(+e.slice(r,r+=Fe));e=e.slice(r),r=Fe-e.length}else r-=n;for(;r--;)e+="0";t.d.push(+e),He&&(t.e>t.constructor.maxE?(t.d=null,t.e=NaN):t.e<t.constructor.minE&&(t.e=0,t.d=[0]))}else t.e=0,t.d=[0];return t}function d1(t,e){var i,r,n,o,a,l,d,f,g;if(e.indexOf("_")>-1){if(e=e.replace(/(\d)_(?=\d)/g,"$1"),Dd.test(e))return Hs(t,e)}else if(e==="Infinity"||e==="NaN")return+e||(t.s=NaN),t.e=NaN,t.d=null,t;if(s1.test(e))i=16,e=e.toLowerCase();else if(o1.test(e))i=2;else if(a1.test(e))i=8;else throw Error(jr+e);for(o=e.search(/p/i),o>0?(d=+e.slice(o+1),e=e.substring(2,o)):e=e.slice(2),o=e.indexOf("."),a=o>=0,r=t.constructor,a&&(e=e.replace(".",""),l=e.length,o=l-o,n=jd(r,new r(i),o,o*2)),f=Zs(e,i,Ui),g=f.length-1,o=g;f[o]===0;--o)f.pop();return o<0?new r(t.s*0):(t.e=Xs(f,g),t.d=f,He=!1,a&&(t=gt(t,n,l*4)),d&&(t=t.times(Math.abs(d)<54?Dt(2,d):Io.pow(2,d))),He=!0,t)}function h1(t,e){var i,r=e.d.length;if(r<3)return e.isZero()?e:ro(t,2,e,e);i=1.4*Math.sqrt(r),i=i>16?16:i|0,e=e.times(1/Js(5,i)),e=ro(t,2,e,e);for(var n,o=new t(5),a=new t(16),l=new t(20);i--;)n=e.times(e),e=e.times(o.plus(n.times(a.times(n).minus(l))));return e}function ro(t,e,i,r,n){var o,a,l,d,f=1,g=t.precision,v=Math.ceil(g/Fe);for(He=!1,d=i.times(i),l=new t(r);;){if(a=gt(l.times(d),new t(e++*e++),g,1),l=n?r.plus(a):r.minus(a),r=gt(a.times(d),new t(e++*e++),g,1),a=l.plus(r),a.d[v]!==void 0){for(o=v;a.d[o]===l.d[o]&&o--;);if(o==-1)break}o=l,l=r,r=a,a=o,f++}return He=!0,a.d.length=v+1,a}function Js(t,e){for(var i=t;--e;)i*=t;return i}function qd(t,e){var i,r=e.s<0,n=ir(t,t.precision,1),o=n.times(.5);if(e=e.abs(),e.lte(o))return fr=r?4:1,e;if(i=e.divToInt(n),i.isZero())fr=r?3:2;else{if(e=e.minus(i.times(n)),e.lte(o))return fr=Ed(i)?r?2:3:r?4:1,e;fr=Ed(i)?r?1:4:r?3:2}return e.minus(n).abs()}function Tu(t,e,i,r){var n,o,a,l,d,f,g,v,y,S=t.constructor,I=i!==void 0;if(I?(oi(i,1,Br),r===void 0?r=S.rounding:oi(r,0,8)):(i=S.precision,r=S.rounding),!t.isFinite())g=Fd(t);else{for(g=rr(t),a=g.indexOf("."),I?(n=2,e==16?i=i*4-3:e==8&&(i=i*3-2)):n=e,a>=0&&(g=g.replace(".",""),y=new S(1),y.e=g.length-a,y.d=Zs(rr(y),10,n),y.e=y.d.length),v=Zs(g,10,n),o=d=v.length;v[--d]==0;)v.pop();if(!v[0])g=I?"0p+0":"0";else{if(a<0?o--:(t=new S(t),t.d=v,t.e=o,t=gt(t,y,i,r,0,n),v=t.d,o=t.e,f=Pd),a=v[i],l=n/2,f=f||v[i+1]!==void 0,f=r<4?(a!==void 0||f)&&(r===0||r===(t.s<0?3:2)):a>l||a===l&&(r===4||f||r===6&&v[i-1]&1||r===(t.s<0?8:7)),v.length=i,f)for(;++v[--i]>n-1;)v[i]=0,i||(++o,v.unshift(1));for(d=v.length;!v[d-1];--d);for(a=0,g="";a<d;a++)g+=ku.charAt(v[a]);if(I){if(d>1)if(e==16||e==8){for(a=e==16?4:3,--d;d%a;d++)g+="0";for(v=Zs(g,n,e),d=v.length;!v[d-1];--d);for(a=1,g="1.";a<d;a++)g+=ku.charAt(v[a])}else g=g.charAt(0)+"."+g.slice(1);g=g+(o<0?"p":"p+")+o}else if(o<0){for(;++o;)g="0"+g;g="0."+g}else if(++o>d)for(o-=d;o--;)g+="0";else o<d&&(g=g.slice(0,o)+"."+g.slice(o))}g=(e==16?"0x":e==2?"0b":e==8?"0o":"")+g}return t.s<0?"-"+g:g}function xd(t,e){if(t.length>e)return t.length=e,!0}function f1(t){return new this(t).abs()}function p1(t){return new this(t).acos()}function m1(t){return new this(t).acosh()}function _1(t,e){return new this(t).plus(e)}function g1(t){return new this(t).asin()}function w1(t){return new this(t).asinh()}function v1(t){return new this(t).atan()}function y1(t){return new this(t).atanh()}function b1(t,e){t=new this(t),e=new this(e);var i,r=this.precision,n=this.rounding,o=r+4;return!t.s||!e.s?i=new this(NaN):!t.d&&!e.d?(i=ir(this,o,1).times(e.s>0?.25:.75),i.s=t.s):!e.d||t.isZero()?(i=e.s<0?ir(this,r,n):new this(0),i.s=t.s):!t.d||e.isZero()?(i=ir(this,o,1).times(.5),i.s=t.s):e.s<0?(this.precision=o,this.rounding=1,i=this.atan(gt(t,e,o,1)),e=ir(this,o,1),this.precision=r,this.rounding=n,i=t.s<0?i.minus(e):i.plus(e)):i=this.atan(gt(t,e,o,1)),i}function M1(t){return new this(t).cbrt()}function k1(t){return Ne(t=new this(t),t.e+1,2)}function A1(t,e,i){return new this(t).clamp(e,i)}function S1(t){if(!t||typeof t!="object")throw Error(Ks+"Object expected");var e,i,r,n=t.defaults===!0,o=["precision",1,Br,"rounding",0,8,"toExpNeg",-io,0,"toExpPos",0,io,"maxE",0,io,"minE",-io,0,"modulo",0,9];for(e=0;e<o.length;e+=3)if(i=o[e],n&&(this[i]=Au[i]),(r=t[i])!==void 0)if(Xt(r)===r&&r>=o[e+1]&&r<=o[e+2])this[i]=r;else throw Error(jr+i+": "+r);if(i="crypto",n&&(this[i]=Au[i]),(r=t[i])!==void 0)if(r===!0||r===!1||r===0||r===1)if(r)if(typeof crypto<"u"&&crypto&&(crypto.getRandomValues||crypto.randomBytes))this[i]=!0;else throw Error(Rd);else this[i]=!1;else throw Error(jr+i+": "+r);return this}function C1(t){return new this(t).cos()}function T1(t){return new this(t).cosh()}function Ud(t){var e,i,r;function n(o){var a,l,d,f=this;if(!(f instanceof n))return new n(o);if(f.constructor=n,Id(o)){f.s=o.s,He?!o.d||o.e>n.maxE?(f.e=NaN,f.d=null):o.e<n.minE?(f.e=0,f.d=[0]):(f.e=o.e,f.d=o.d.slice()):(f.e=o.e,f.d=o.d?o.d.slice():o.d);return}if(d=typeof o,d==="number"){if(o===0){f.s=1/o<0?-1:1,f.e=0,f.d=[0];return}if(o<0?(o=-o,f.s=-1):f.s=1,o===~~o&&o<1e7){for(a=0,l=o;l>=10;l/=10)a++;He?a>n.maxE?(f.e=NaN,f.d=null):a<n.minE?(f.e=0,f.d=[0]):(f.e=a,f.d=[o]):(f.e=a,f.d=[o]);return}if(o*0!==0){o||(f.s=NaN),f.e=NaN,f.d=null;return}return Hs(f,o.toString())}if(d==="string")return(l=o.charCodeAt(0))===45?(o=o.slice(1),f.s=-1):(l===43&&(o=o.slice(1)),f.s=1),Dd.test(o)?Hs(f,o):d1(f,o);if(d==="bigint")return o<0?(o=-o,f.s=-1):f.s=1,Hs(f,o.toString());throw Error(jr+o)}if(n.prototype=ue,n.ROUND_UP=0,n.ROUND_DOWN=1,n.ROUND_CEIL=2,n.ROUND_FLOOR=3,n.ROUND_HALF_UP=4,n.ROUND_HALF_DOWN=5,n.ROUND_HALF_EVEN=6,n.ROUND_HALF_CEIL=7,n.ROUND_HALF_FLOOR=8,n.EUCLID=9,n.config=n.set=S1,n.clone=Ud,n.isDecimal=Id,n.abs=f1,n.acos=p1,n.acosh=m1,n.add=_1,n.asin=g1,n.asinh=w1,n.atan=v1,n.atanh=y1,n.atan2=b1,n.cbrt=M1,n.ceil=k1,n.clamp=A1,n.cos=C1,n.cosh=T1,n.div=E1,n.exp=x1,n.floor=I1,n.hypot=P1,n.ln=O1,n.log=R1,n.log10=D1,n.log2=N1,n.max=L1,n.min=j1,n.mod=B1,n.mul=F1,n.pow=q1,n.random=U1,n.round=$1,n.sign=V1,n.sin=Z1,n.sinh=H1,n.sqrt=W1,n.sub=G1,n.sum=z1,n.tan=K1,n.tanh=X1,n.trunc=J1,t===void 0&&(t={}),t&&t.defaults!==!0)for(r=["precision","rounding","toExpNeg","toExpPos","maxE","minE","modulo","crypto"],e=0;e<r.length;)t.hasOwnProperty(i=r[e++])||(t[i]=this[i]);return n.config(t),n}function E1(t,e){return new this(t).div(e)}function x1(t){return new this(t).exp()}function I1(t){return Ne(t=new this(t),t.e+1,3)}function P1(){var t,e,i=new this(0);for(He=!1,t=0;t<arguments.length;)if(e=new this(arguments[t++]),e.d)i.d&&(i=i.plus(e.times(e)));else{if(e.s)return He=!0,new this(1/0);i=e}return He=!0,i.sqrt()}function Id(t){return t instanceof Io||t&&t.toStringTag===Nd||!1}function O1(t){return new this(t).ln()}function R1(t,e){return new this(t).log(e)}function N1(t){return new this(t).log(2)}function D1(t){return new this(t).log(10)}function L1(){return Bd(this,arguments,-1)}function j1(){return Bd(this,arguments,1)}function B1(t,e){return new this(t).mod(e)}function F1(t,e){return new this(t).mul(e)}function q1(t,e){return new this(t).pow(e)}function U1(t){var e,i,r,n,o=0,a=new this(1),l=[];if(t===void 0?t=this.precision:oi(t,1,Br),r=Math.ceil(t/Fe),this.crypto)if(crypto.getRandomValues)for(e=crypto.getRandomValues(new Uint32Array(r));o<r;)n=e[o],n>=429e7?e[o]=crypto.getRandomValues(new Uint32Array(1))[0]:l[o++]=n%1e7;else if(crypto.randomBytes){for(e=crypto.randomBytes(r*=4);o<r;)n=e[o]+(e[o+1]<<8)+(e[o+2]<<16)+((e[o+3]&127)<<24),n>=214e7?crypto.randomBytes(4).copy(e,o):(l.push(n%1e7),o+=4);o=r/4}else throw Error(Rd);else for(;o<r;)l[o++]=Math.random()*1e7|0;for(r=l[--o],t%=Fe,r&&t&&(n=Dt(10,Fe-t),l[o]=(r/n|0)*n);l[o]===0;o--)l.pop();if(o<0)i=0,l=[0];else{for(i=-1;l[0]===0;i-=Fe)l.shift();for(r=1,n=l[0];n>=10;n/=10)r++;r<Fe&&(i-=Fe-r)}return a.e=i,a.d=l,a}function $1(t){return Ne(t=new this(t),t.e+1,this.rounding)}function V1(t){return t=new this(t),t.d?t.d[0]?t.s:0*t.s:t.s||NaN}function Z1(t){return new this(t).sin()}function H1(t){return new this(t).sinh()}function W1(t){return new this(t).sqrt()}function G1(t,e){return new this(t).sub(e)}function z1(){var t=0,e=arguments,i=new this(e[t]);for(He=!1;i.s&&++t<e.length;)i=i.plus(e[t]);return He=!0,Ne(i,this.precision,this.rounding)}function K1(t){return new this(t).tan()}function X1(t){return new this(t).tanh()}function J1(t){return Ne(t=new this(t),t.e+1,1)}ue[Symbol.for("nodejs.util.inspect.custom")]=ue.toString;ue[Symbol.toStringTag]="Decimal";var Io=ue.constructor=Ud(Au);Ws=new Io(Ws);Gs=new Io(Gs);var xt=Io;import{compoundDebt as uw}from"@suilend/sdk/utils/simulate";import{linearlyInterpolate as tw}from"@suilend/sdk/utils";import{Side as hn}from"@suilend/sdk/lib/types";import{NORMALIZED_flSUI_COINTYPE as iw,NORMALIZED_jugSUI_COINTYPE as rw,NORMALIZED_LBTC_COINTYPE as nw,formatLtvPercent as ow}from"@suilend/sui-fe";import Q1 from"crypto";var Ys=new Uint8Array(256),Qs=Ys.length;function Eu(){return Qs>Ys.length-16&&(Q1.randomFillSync(Ys),Qs=0),Ys.slice(Qs,Qs+=16)}var Zt=[];for(let t=0;t<256;++t)Zt.push((t+256).toString(16).slice(1));function $d(t,e=0){return Zt[t[e+0]]+Zt[t[e+1]]+Zt[t[e+2]]+Zt[t[e+3]]+"-"+Zt[t[e+4]]+Zt[t[e+5]]+"-"+Zt[t[e+6]]+Zt[t[e+7]]+"-"+Zt[t[e+8]]+Zt[t[e+9]]+"-"+Zt[t[e+10]]+Zt[t[e+11]]+Zt[t[e+12]]+Zt[t[e+13]]+Zt[t[e+14]]+Zt[t[e+15]]}import Y1 from"crypto";var xu={randomUUID:Y1.randomUUID};function ew(t,e,i){if(xu.randomUUID&&!e&&!t)return xu.randomUUID();t=t||{};let r=t.random||(t.rng||Eu)();if(r[6]=r[6]&15|64,r[8]=r[8]&63|128,e){i=i||0;for(let n=0;n<16;++n)e[i+n]=r[n];return e}return $d(r)}var ea=ew;import{getPackagerConfigs as sw}from"@cetusprotocol/common-sdk";var Iu=10n;function Vd(t){return t.depositedAmount.eq(0)?new dt(0):t.borrowedAmount.div(t.depositedAmount).times(100)}function Pu(t){let e=Vd(t);if(!e.gt(100))return tw(t.config.interestRate,"utilPercent","aprPercent",e)}function Zd(t){let e=Vd(t),i=Pu(t);if(!(i===void 0||e.gt(100)))return new dt(e.div(100)).times(i.div(100)).times(1-t.config.spreadFeeBps/1e4).times(100)}function Kb(t,e,i,r){let{api_url:n}=sw(r.sdkOptions.suilend);t===hn.DEPOSIT&&([iw,rw].includes(e.coinType)&&i.push({stats:{id:ea(),isActive:!0,rewardIndex:-1,reserve:e,rewardCoinType:"LIQ_AG",mintDecimals:0,symbol:"LiqAg Points",iconUrl:`${n}/partners/LiqAg.png`,perDay:new dt(.036),side:hn.DEPOSIT},obligationClaims:{}}),e.coinType===nw&&i.push({stats:{id:ea(),isActive:!0,rewardIndex:-1,reserve:e,rewardCoinType:"LOMBARD",mintDecimals:0,symbol:"3x Lombard Lux",iconUrl:`${n}/partners/Lombard Lux.png`,perDay:new dt(0),side:hn.DEPOSIT},obligationClaims:{}}))}function Xb(t,e,i){return{...t,depositedAmount:e===hn.DEPOSIT?dt.max(t.depositedAmount.plus(i),0):t.depositedAmount,borrowedAmount:e===hn.BORROW?dt.max(t.borrowedAmount.plus(i),0):t.borrowedAmount}}function Jb(t,e,i){let r=t===hn.DEPOSIT?e.depositedAmount:e.borrowedAmount,n=t===hn.DEPOSIT?i.depositedAmount:i.borrowedAmount,o=n.eq(0)?new dt(-1):r.div(n);return{multiplier:o,isValid:!o.eq(-1)}}function Qb(t,e,i,r){let n=t.map(a=>({...a,stats:{...a.stats,perDay:r?a.stats.perDay.times(i):void 0}})),o=e.map(a=>({...a,stats:{...a.stats,aprPercent:r?a.stats.aprPercent.times(i):void 0}}));return{newPerDayRewards:n,newAprRewards:o}}function Hd(t,e){if(!Iu)throw new Error("oraclePriceMultiplierDecimal is required");if(t===0n)throw new Error("Invalid oracle price");if(e<0n){let i=10n**(Iu- -e);return t*i}return t/10n**(e+Iu)}function Yb(t){return ow(new dt(t))}function Wd(t,e,i,r,n,o){let a=new dt(t),l=new dt(e),d=new dt(i),f=new dt(r),g=new dt(n),v=new dt(o),y=a.times(f),S=l.times(g),I=y.minus(S),x=d.times(f),B=I.plus(x),V=B.times(v).minus(B).minus(S);if(V.lt(0))throw new Error("Target leverage lower than current leverage");let J=V.div(g),Y=V.div(f),X=a.plus(d).plus(Y),ee=l.plus(J),C=X.times(f),E=ee.times(g),N=C.div(C.minus(E)),D=d.plus(Y),O=x.plus(Y.times(f));return{addBorrowAmount:J.toString(),addBorrowValue:V.toString(),addCollateralFromBorrow:Y.toString(),addCollateralAmount:D.toString(),addCollateralValue:O.toString(),finalCollateralAmount:X.toString(),finalCollateralValue:C.toString(),finalDebtAmount:ee.toString(),finalDebtValue:E.toString(),leverage:N.toString()}}var na=class{constructor(e){this.getPositionList=async(e=this._sdk.getSenderAddress(),i=!1)=>{let{lending_market_id:r,lending_market_type:n}=Pt(this._sdk.sdkOptions.suilend);try{let o=`cap_to_position_mapping_${e}`,a=`order_cap_to_position_mapping_${e}`,l=this._sdk.getCache(o,i),d=this._sdk.getCache(a,i)||new Map,f=`${this._sdk.sdkOptions.tspl.package_id}::order::OrderCap`,g=`${this._sdk.sdkOptions.margin_trading.package_id}::position::PositionCap`,v=await this._sdk.FullClient.getOwnedObjectsByPage(e,{options:{showType:!0,showContent:!0,showOwner:!0},filter:{MatchAny:[{StructType:f},{StructType:g}]}});if(console.log("\u{1F680}\u{1F680}\u{1F680} ~ positionModules.ts:42 ~ PositionModules ~ ownerRes.data.length:",v.data.length),v.data.length===0)return $t("PositionNotFound","Position not found"),[];let y=await this._sdk.SuiLendModule.getSuilendClient(r,n);console.log("\u{1F680}\u{1F680}\u{1F680} ~ positionModules.ts:48 ~ PositionModules ~ suiLendClient:",y);let S=await this._sdk.SuiLendModule.getLendingMarketData(),{allLendingMarketData:I,lstStatsMap:x,sdeUsdAprPercent:B,eThirdAprPercent:R,eEarnAprPercent:j}=S;console.log("\u{1F680}\u{1F680}\u{1F680} ~ positionModules.ts:50 ~ PositionModules ~ allLendingMarketData:",I);let V=I[r].reserveMap;l||(l=new Map);let J=[];for(let C=0;C<v.data.length;C++)if(v.data[C].data.type.includes(f)){let N=ia(v.data[C]);d.set(N.position_id,{id:N.id.id,order_id:N.order_id,position_id:N.position_id}),J.push(N.position_id)}else{let N=ia(v.data[C]);N.position_id&&J.push(N.position_id),N.id.id&&l.set(N.id.id,N.position_id)}this._sdk.updateCache(o,l,Gd),this._sdk.updateCache(a,d,Gd);let Y=await this._sdk.FullClient.batchGetObjects(J,{showContent:!0});console.log("\u{1F680}\u{1F680}\u{1F680} ~ positionModules.ts:73 ~ PositionModules ~ positionRes:",Y);let X=await this._sdk.SuiLendModule.getInitializeObligations(S,!0);console.log("\u{1F680}\u{1F680}\u{1F680} ~ positionModules.ts:75 ~ PositionModules ~ obligations:",X);let ee=[];for(let C=0;C<Y.length;C++){let E=J[C],N="",{capId:D,is_tspl_cap:O}=this.getCapIdByPositionId(E);N=D;let A=mu(Y[C],N,O),p=await y.getObligation(A.obligation_owner_cap);try{let s=_u(A,p,V||{},x||{},B,R,j,X[r].rewardMap),u=this.getObligationRewardsInfo(p,Object.values(V));ee.push({...s,claimable_rewards:u})}catch(s){console.log("\u{1F680}\u{1F680}\u{1F680} ~ positionModules.ts:168 ~ PositionModules ~ error:",s)}}return ee}catch(o){return $t("FetchError",o),[]}};this.getPositionInfo=async(e,i=this._sdk.getSenderAddress(),r=!0)=>{let n=`cap_to_position_mapping_${i}`,o=`order_cap_to_position_mapping_${i}`,a=this._sdk.getCache(n,r),l=this._sdk.getCache(o,r)||new Map;a||(a=new Map);let d=this.getCapIdByPositionId(e,i)||"",f=d?.capId||"",g=d?.is_tspl_cap||!1;if(!f){let O=`${this._sdk.sdkOptions.tspl.package_id}::order::OrderCap`,A=`${this._sdk.sdkOptions.margin_trading.package_id}::position::PositionCap`,p=await this._sdk.FullClient.getOwnedObjectsByPage(i,{options:{showType:!0,showContent:!0,showOwner:!0},filter:{MatchAny:[{StructType:O},{StructType:A}]}});for(let s=0;s<p.data.length;s++)if(p.data[s].data.type.includes(O)){g=!0;let h=ia(p.data[s]);l.set(h.position_id,{id:h.id.id,order_id:h.order_id,position_id:h.position_id}),e=h.position_id,f=h.id.id}else{let h=ia(p.data[s]);h.position_id&&(e=h.position_id),h.id.id&&a.set(h.id.id,h.position_id),f=h.id.id}}let v=await this._sdk.FullClient.batchGetObjects([e],{showContent:!0}),y=mu(v[0],f||"",g),{lending_market_id:S,lending_market_type:I}=Pt(this._sdk.sdkOptions.suilend),x=await this._sdk.SuiLendModule.getSuilendClient(S,I),B=await this._sdk.SuiLendModule.getLendingMarketData(),{allLendingMarketData:R,lstStatsMap:j,sdeUsdAprPercent:V,eThirdAprPercent:J,eEarnAprPercent:Y}=B,X=R[S].reserveMap,ee=await this._sdk.SuiLendModule.getInitializeObligations(B,!0),C=await x.getObligation(y.obligation_owner_cap),E=this.getObligationRewardsInfo(C,Object.values(X));return{..._u(y,C,X||{},j||{},V,J,Y,ee[S].rewardMap),claimable_rewards:E}};this.getCapIdByPositionId=(e,i=this._sdk.getSenderAddress())=>{let r=`cap_to_position_mapping_${i}`,n=`order_cap_to_position_mapping_${i}`,o=this._sdk.getCache(r,!1),a=this._sdk.getCache(n,!1);if(o){for(let[l,d]of o.entries())if(d===e)return{capId:l,is_tspl_cap:!1}}if(a){for(let[l,d]of a.entries())if(e===d.position_id)return{capId:d.id,is_tspl_cap:!0}}return{capId:"",is_tspl_cap:!1}};this.repay=e=>{let{margin_trading:i}=this._sdk.sdkOptions,{lending_market_id:r,lending_market_type:n}=Pt(this._sdk.sdkOptions.suilend),{global_config_id:o,versioned_id:a}=Pt(this._sdk.sdkOptions.margin_trading),{txb:l,repay_amount:d,repay_coin_type:f,repay_coin:g,repay_reserve_array_index:v,market_id:y,position_cap_id:S}=e,I=l||new $i,x=g||$e.buildCoinWithBalance(BigInt(d.toString()),f,I);I.moveCall({target:`${i.published_at}::router::repay`,typeArguments:[n,f],arguments:[I.object(o),I.object(r),I.object(y),I.object(S),x,I.pure.u64(v.toString()),I.object(fn),I.object(a)]})};this.withdrawAsset=(e,i)=>{let{margin_trading:r}=this._sdk.sdkOptions,{lending_market_id:n,lending_market_type:o}=Pt(this._sdk.sdkOptions.suilend),{global_config_id:a,versioned_id:l}=Pt(this._sdk.sdkOptions.margin_trading),{package_id:d}=this._sdk.sdkOptions.suilend,{market_id:f,withdraw_amount:g,withdraw_reserve_array_index:v,withdraw_coin_type:y,position_cap_id:S}=e,[I]=i.moveCall({target:"0x1::option::none",typeArguments:[`${d}::lending_market::RateLimiterExemption<${o}, ${y}>`],arguments:[]});return i.moveCall({target:`${r.published_at}::router::withdraw`,typeArguments:[o,y],arguments:[i.object(a),i.object(n),i.object(f),i.object(S),i.object(I),i.pure.u64(g),i.pure.u64(v),i.object(zd),i.object(fn),i.object(l)]})};this.borrowAsset=(e,i)=>{let{reserve_array_index:r,borrow_amount:n,base_token:o,quote_token:a,lending_market_id:l,is_long:d,market_id:f,position_cap_id:g,position_cap:v}=e,{margin_trading:y}=this._sdk.sdkOptions,{lending_market_type:S}=Pt(this._sdk.sdkOptions.suilend),{global_config_id:I,versioned_id:x}=Pt(this._sdk.sdkOptions.margin_trading);return i.moveCall({target:`${y.published_at}::router::borrow`,typeArguments:[S,d?a:o],arguments:[i.object(I),i.object(l),i.object(f),g?i.object(g):v,i.pure.u64(r),i.pure.u64(n.toString()),i.object(zd),i.object(fn),i.object(x)]})};this.openPosition=async(e,i)=>{let{is_quote:r,is_long:n,amount:o,swap_clmm_pool:a="",slippage:l,leverage:d,market_id:f}=e,{lending_market_id:g}=Pt(this._sdk.sdkOptions.suilend),{base_token:v,quote_token:y}=await this._sdk.MarketModules.getMarketInfo(f),{borrow_amount:S,base_reserve_array_index:I,quote_reserve_array_index:x,reserve:B,has_swap:R,flash_loan_objs:j}=await this.calculatePositionDeposit({is_long:n,is_quote:r,amount:o,swap_clmm_pool:a,leverage:d,slippage:l,market_id:f,base_token:v,quote_token:y,is_submit:!0});await this._sdk.SuiLendModule.refreshReservePrices(i,B);let V=this.createLeveragePosition({leverage:d,market_id:f,base_token:v,quote_token:y,is_long:n,init_deposit_amount:ne(o).toString(),init_coin_type:r?y:v,tx:i}),J=n?I:x;if(j){let{is_flash_a:Y,flash_amount:X,clmm_pool:ee,clmm_pool_coin_type_a:C,clmm_pool_coin_type_b:E,flash_loan_coin:N}=j,{balance_a:D,balance_b:O,receipt:A}=this._sdk.SwapModules.flashLoan({amount:X,clmm_pool:ee,clmm_pool_coin_type_a:C,clmm_pool_coin_type_b:E,flash_loan_coin:N,tx:i}),p=n?y:v,s=n?v:y,u=$e.buildCoinWithBalance(BigInt(o),r?y:v,i),h=$e.fromBalance(D,C,i),_=$e.fromBalance(O,E,i);R&&(console.log("\u{1F680}\u{1F680}\u{1F680} ~ positionModules.ts:515 ~ PositionModules ~ is_flash_a:",Y),i.mergeCoins(u,[Y?h:_]));let w=await this._sdk.SwapModules.handleSwap({from:p,to:s,amount:R?ne(X).add(o).toString():X,input_coin:R?u:Y?h:_,swap_clmm_pool:a,slippage:l,tx:i});w.swap_out_coin&&!R&&i.mergeCoins(w.swap_out_coin,[u]),await this.depositToLeveragePosition({is_long:n,market_id:f,position_cap:V,deposit_reserve_array_index:J,input_coin:w.swap_out_coin,base_token:v,quote_token:y},i);let M=this.borrowAsset({position_cap:V,reserve_array_index:n?x:I,borrow_amount:S,base_token:v,quote_token:y,is_long:n,lending_market_id:g,market_id:f},i),b=$e.mintBalanceZero(Y?E:C,i);this._sdk.SwapModules.repayFlashLoan({tx:i,clmm_pool:ee,repay_base:Y?$e.intoBalance(M,C,i):b,repay_quote:Y?b:$e.intoBalance(M,E,i),receipt:A,clmm_pool_coin_type_a:C,clmm_pool_coin_type_b:E}),$e.destroyBalanceZero(Y?$e.intoBalance(_,E,i):$e.intoBalance(h,C,i),Y?E:C,i)}else{let Y=$e.buildCoinWithBalance(BigInt(o),r?y:v,i),X=n?v:y,ee=n?y:v;R&&(Y=(await this._sdk.SwapModules.handleSwap({from:ee,to:X,amount:o,input_coin:Y,swap_clmm_pool:a,slippage:l,tx:i})).swap_out_coin),await this.depositToLeveragePosition({is_long:n,market_id:f,position_cap:V,deposit_reserve_array_index:J,input_coin:Y,base_token:v,quote_token:y},i);let C=this.borrowAsset({position_cap:V,reserve_array_index:n?x:I,borrow_amount:S,base_token:v,quote_token:y,is_long:n,lending_market_id:g,market_id:f},i),E=await this._sdk.SwapModules.handleSwap({from:ee,to:X,amount:S,input_coin:C,swap_clmm_pool:a,slippage:l,tx:i});await this.depositToLeveragePosition({is_long:n,market_id:f,position_cap:V,deposit_reserve_array_index:J,input_coin:E.swap_out_coin,base_token:v,quote_token:y},i)}return V};this.positionDeposit=async e=>{let{position_id:i,swap_clmm_pool:r="",is_quote:n,amount:o,slippage:a,leverage:l,txb:d}=e,{lending_market_id:f}=Pt(this._sdk.sdkOptions.suilend),{is_long:g,deposits:v,borrows:y,position_cap_id:S,market_id:I}=await this.getPositionInfo(i),{base_token:x,quote_token:B}=await this._sdk.MarketModules.getMarketInfo(I),R=d||new $i,j=v[0].reserveArrayIndex.toString(),V=y[0].reserveArrayIndex.toString(),{borrow_amount:J,flash_loan_objs:Y,reserve:X,has_swap:ee}=await this.calculatePositionDeposit({market_id:I,is_long:g,is_quote:n,amount:o,swap_clmm_pool:r,leverage:l,slippage:a,base_token:x,quote_token:B,position_id:i,is_open:!1});if(await this._sdk.SuiLendModule.refreshReservePrices(R,X),Y){let{is_flash_a:C,flash_amount:E,clmm_pool:N,clmm_pool_coin_type_a:D,clmm_pool_coin_type_b:O,flash_loan_coin:A}=Y,{balance_a:p,balance_b:s,receipt:u}=this._sdk.SwapModules.flashLoan({amount:E,clmm_pool:N,clmm_pool_coin_type_a:D,clmm_pool_coin_type_b:O,flash_loan_coin:A,tx:R}),h=g?B:x,_=g?x:B,w=$e.buildCoinWithBalance(BigInt(o),n?B:x,R),M=$e.fromBalance(p,D,R),b=$e.fromBalance(s,O,R);ee&&R.mergeCoins(w,[C?M:b]);let m=await this._sdk.SwapModules.handleSwap({from:h,to:_,amount:ee?ne(E).add(o).toString():E,input_coin:ee?w:C?M:b,swap_clmm_pool:r,slippage:a,tx:R});m.swap_out_coin&&!ee&&R.mergeCoins(m.swap_out_coin,[w]),await this.depositToLeveragePosition({is_long:g,market_id:I,position_cap_id:S,deposit_reserve_array_index:j,input_coin:m.swap_out_coin,base_token:x,quote_token:B},R);let c=await this.borrowAsset({position_cap_id:S,reserve_array_index:V,borrow_amount:J,base_token:x,quote_token:B,is_long:g,lending_market_id:f,market_id:I},R),k=$e.mintBalanceZero(C?O:D,R);this._sdk.SwapModules.repayFlashLoan({tx:R,clmm_pool:N,repay_base:C?$e.intoBalance(c,D,R):k,repay_quote:C?k:$e.intoBalance(c,O,R),receipt:u,clmm_pool_coin_type_a:D,clmm_pool_coin_type_b:O}),$e.destroyBalanceZero(C?$e.intoBalance(b,O,R):$e.intoBalance(M,D,R),C?O:D,R)}else{let C=$e.buildCoinWithBalance(BigInt(o),n?B:x,R),E=g?x:B,N=g?B:x;ee&&(C=(await this._sdk.SwapModules.handleSwap({from:N,to:E,amount:o,input_coin:C,swap_clmm_pool:r,slippage:a,tx:R})).swap_out_coin),await this.depositToLeveragePosition({is_long:g,market_id:I,position_cap_id:S,deposit_reserve_array_index:j,input_coin:C,base_token:x,quote_token:B},R);let D=this.borrowAsset({position_cap_id:S,reserve_array_index:V,borrow_amount:J,base_token:x,quote_token:B,is_long:g,lending_market_id:f,market_id:I},R),O=await this._sdk.SwapModules.handleSwap({from:N,to:E,amount:J,input_coin:D,swap_clmm_pool:r,slippage:a,tx:R});await this.depositToLeveragePosition({is_long:g,market_id:I,position_cap_id:S,deposit_reserve_array_index:j,input_coin:O.swap_out_coin,base_token:x,quote_token:B},R)}return R};this.positionWithdraw=async e=>{let{amount:i,is_quote:r,txb:n,swap_clmm_pool:o="",slippage:a,position_id:l,leverage:d,withdraw_max:f}=e,g=n||new $i,{withdraw_ctoken_amount:v,repay_amount:y,is_close:S,deposits:I,borrows:x,reserve:B,base_token:R,quote_token:j,clmm_pool:V,clmm_pool_coin_type_a:J,clmm_pool_coin_type_b:Y,position_cap_id:X,market_id:ee,is_long:C,swap_convert_all:E,flash_loan_amount:N,routers:D,repay_flash_loan_amount:O="0",partial_amount_in:A,withdraw_amount:p,has_flash_loan:s,compoundDebtU64:u}=await this.calculatePositionWithdraw({position_id:l,is_quote:r,swap_clmm_pool:o,amount:i,leverage:d,slippage:a,withdraw_max:f});if(S)return this.positionClose({position_id:l,is_quote:r,leverage:d,slippage:a,swap_clmm_pool:o});await this._sdk.SuiLendModule.refreshReservePrices(g,B);let h,_;if(s){let{balance_a:m,balance_b:c,receipt:k,is_loan_a:Z}=this._sdk.SwapModules.flashLoan({tx:g,amount:N,amount_u64:u,flash_loan_coin:x[0].reserve.coinType,clmm_pool:V,clmm_pool_coin_type_a:J,clmm_pool_coin_type_b:Y});h=k,_=Z,$e.destroyBalanceZero(_?c:m,_?Y:J,g);let W=Z?$e.fromBalance(m,J,g):$e.fromBalance(c,Y,g);this.repay({txb:g,position_cap_id:X,repay_reserve_array_index:x[0].reserveArrayIndex.toString(),repay_coin:W,repay_coin_type:C?j:R,repay_amount:"0",market_id:ee}),g.transferObjects([W],this._sdk.getSenderAddress())}let w=this.withdrawAsset({market_id:ee,position_cap_id:X,withdraw_amount:v.toString(),withdraw_reserve_array_index:I[0].reserveArrayIndex.toString(),withdraw_coin_type:C?R:j},g);for(let m=1;m<I.length;m++){let c=this.withdrawAsset({market_id:ee,position_cap_id:X,withdraw_amount:ra.toString(),withdraw_reserve_array_index:I[m].reserveArrayIndex.toString(),withdraw_coin_type:I[m].coinType},g);g.transferObjects([c],this._sdk.getSenderAddress())}let M;if(console.log("\u{1F680}\u{1F680}\u{1F680} ~ positionModules.ts:778 ~ PositionModules ~ swap_convert_all:",{swap_convert_all:E,has_flash_loan:s}),E)M=await this._sdk.SwapModules.routerSwap({router:D?.route_obj,input_coin:w,slippage:a,txb:g});else{let m=g.splitCoins(w,[g.pure.u64(A?.toString()||"0")]);M=await this._sdk.SwapModules.routerSwap({router:D?.route_obj,input_coin:m,slippage:a,txb:g})}let b;if(M&&s&&(b=g.splitCoins(M,[g.pure.u64(O.toString())])),b&&s){let m=$e.mintBalanceZero(_?Y:J,g);this._sdk.SwapModules.repayFlashLoan({tx:g,clmm_pool:V,repay_base:_?$e.intoBalance(b,J,g):m,repay_quote:_?m:$e.intoBalance(b,Y,g),clmm_pool_coin_type_a:J,clmm_pool_coin_type_b:Y,receipt:h})}else if(M){let m=g.splitCoins(M,[g.pure.u64(O.toString())]);this.repay({txb:g,position_cap_id:X,repay_reserve_array_index:x[0].reserveArrayIndex.toString(),repay_coin:m,repay_coin_type:C?j:R,repay_amount:"0",market_id:ee}),g.transferObjects([m],this._sdk.getSenderAddress())}return M&&g.transferObjects([M],this._sdk.getSenderAddress()),E||g.transferObjects([w],this._sdk.getSenderAddress()),g};this.positionClose=async e=>{let{position_id:i,is_quote:r,slippage:n,leverage:o,swap_clmm_pool:a=""}=e,{margin_trading:l}=this._sdk.sdkOptions,{global_config_id:d,versioned_id:f}=Pt(this._sdk.sdkOptions.margin_trading),{lending_market_type:g,lending_market_id:v}=Pt(this._sdk.sdkOptions.suilend),y=new $i,{deposits:S,borrows:I,base_token:x,quote_token:B,clmm_pool:R,clmm_pool_coin_type_a:j,clmm_pool_coin_type_b:V,position_cap_id:J,market_id:Y,swap_convert_all:X,routers:ee,partial_amount_in:C,is_long:E,flash_loan_amount:N,reserve:D,repay_flash_loan_amount:O="0",claimable_rewards:A,compoundDebtU64:p}=await this.calculatePositionWithdraw({tx:y,position_id:i,is_quote:r,swap_clmm_pool:a,amount:ra.toString(),leverage:o,slippage:n,withdraw_max:!0});await this._sdk.SuiLendModule.refreshReservePrices(y,D);let s,u;if(ne(N).gt(0)){let{balance_a:w,balance_b:M,receipt:b,is_loan_a:m}=this._sdk.SwapModules.flashLoan({tx:y,amount:N,amount_u64:p,flash_loan_coin:E?B:x,clmm_pool:R,clmm_pool_coin_type_a:j,clmm_pool_coin_type_b:V});s=b,u=m,$e.destroyBalanceZero(u?M:w,u?V:j,y);let c=u?$e.fromBalance(w,j,y):$e.fromBalance(M,V,y);this.repay({txb:y,position_cap_id:J,repay_reserve_array_index:I[0].reserveArrayIndex.toString(),repay_coin:c,repay_coin_type:I[0].reserve.coinType,repay_amount:"0",market_id:Y}),y.transferObjects([c],this._sdk.getSenderAddress())}let h=this.withdrawAsset({market_id:Y,position_cap_id:J,withdraw_amount:ra.toString(),withdraw_reserve_array_index:S[0].reserveArrayIndex.toString(),withdraw_coin_type:E?x:B},y);await this.buildClaimRewardsMoveCall(A,Y,J,y);for(let w=1;w<S.length;w++){let M=this.withdrawAsset({market_id:Y,position_cap_id:J,withdraw_amount:ra.toString(),withdraw_reserve_array_index:S[w].reserveArrayIndex.toString(),withdraw_coin_type:S[w].coinType},y);y.transferObjects([M],this._sdk.getSenderAddress())}let _;if(console.log("\u{1F680}\u{1F680}\u{1F680} ~ positionModules.ts:895 ~ PositionModules ~ swap_convert_all:",X),X)_=await this._sdk.SwapModules.routerSwap({router:ee?.route_obj,input_coin:h,slippage:n,txb:y});else if(C&&ne(C).gt(0)){let w=y.splitCoins(h,[y.pure.u64(C?.toString()||"0")]);_=await this._sdk.SwapModules.routerSwap({router:ee?.route_obj,input_coin:w,slippage:n,txb:y})}if(_&&s){let w=$e.mintBalanceZero(u?V:j,y),M=y.splitCoins(_,[y.pure.u64(O?.toString()||"0")]);this._sdk.SwapModules.repayFlashLoan({tx:y,clmm_pool:R,repay_base:u?$e.intoBalance(M,j,y):w,repay_quote:u?w:$e.intoBalance(M,V,y),clmm_pool_coin_type_a:j,clmm_pool_coin_type_b:V,receipt:s})}return y.moveCall({target:`${l.published_at}::router::close_position`,typeArguments:[g],arguments:[y.object(d),y.object(v),y.object(Y),y.object(J),y.object(fn),y.object(f)]}),_&&y.transferObjects([_],this._sdk.getSenderAddress()),X||y.transferObjects([h],this._sdk.getSenderAddress()),console.log("\u{1F680}\u{1F680}\u{1F680} ~ positionModules.ts:951 ~ PositionModules ~ tx:",y),y};this.positionLeverageIncrease=async e=>{let{current_leverage:i,target_leverage:r,swap_clmm_pool:n="",slippage:o,position_id:a}=e,{lending_market_id:l}=Pt(this._sdk.sdkOptions.suilend),d=new $i,{flash_loan_amount:f,quote_token:g,base_token:v,reserve:y,deposits:S,borrow_amount:I,routers:x,position_cap_id:B,is_long:R,market_id:j,is_flash_loan:V}=await this.calculatePositionLeverage({position_id:a,current_leverage:i,target_leverage:r,swap_clmm_pool:n,slippage:o}),J=R?g:v;if(await this._sdk.SuiLendModule.refreshReservePrices(d,y),V){let{clmm_pool_coin_type_a:Y,clmm_pool_coin_type_b:X,clmm_pool:ee}=await this._sdk.SwapModules.getFlashLoanPool(J,f?.toString()||""),{balance_a:C,balance_b:E,receipt:N,is_loan_a:D}=this._sdk.SwapModules.flashLoan({tx:d,amount:f?.toString()||"0",clmm_pool:ee,clmm_pool_coin_type_a:Y,clmm_pool_coin_type_b:X,flash_loan_coin:J}),O=await this._sdk.SwapModules.routerSwap({router:x?.route_obj,input_coin:D?$e.fromBalance(C,Y,d):$e.fromBalance(E,X,d),slippage:o,txb:d});this.depositToLeveragePosition({is_long:R,market_id:j,position_cap_id:B,deposit_reserve_array_index:S[0].reserveArrayIndex.toString(),input_coin:O,base_token:v,quote_token:g},d);let A=this.borrowAsset({position_cap_id:B,reserve_array_index:R?y[1].arrayIndex.toString():y[0].arrayIndex.toString(),borrow_amount:I,base_token:v,quote_token:g,is_long:R,lending_market_id:l,market_id:j},d),p=$e.mintBalanceZero(D?X:Y,d);this._sdk.SwapModules.repayFlashLoan({tx:d,clmm_pool:ee,repay_base:D?$e.intoBalance(A,Y,d):p,repay_quote:D?p:$e.intoBalance(A,X,d),receipt:N,clmm_pool_coin_type_a:Y,clmm_pool_coin_type_b:X}),$e.destroyBalanceZero(D?E:C,D?X:Y,d)}else{let Y=this.borrowAsset({position_cap_id:B,reserve_array_index:R?y[1].arrayIndex.toString():y[0].arrayIndex.toString(),borrow_amount:I,base_token:v,quote_token:g,is_long:R,lending_market_id:l,market_id:j},d),X=await this._sdk.SwapModules.routerSwap({router:x?.route_obj,input_coin:Y,slippage:o,txb:d});this.depositToLeveragePosition({is_long:R,market_id:j,position_cap_id:B,deposit_reserve_array_index:S[0].reserveArrayIndex.toString(),input_coin:X,base_token:v,quote_token:g},d)}return d};this.positionLeverageDecrease=async e=>{let{current_leverage:i,target_leverage:r,swap_clmm_pool:n="",slippage:o,position_id:a}=e,{deposits:l,borrows:d,position_cap_id:f,market_id:g,is_long:v}=await this.getPositionInfo(a),{base_token:y,quote_token:S}=await this._sdk.MarketModules.getMarketInfo(g),I=new $i,{withdraw_ctoken_amount:x,routers:B,reserve:R,is_flash_loan:j}=await this.calculatePositionLeverage({position_id:a,current_leverage:i,target_leverage:r,swap_clmm_pool:n,slippage:o});if(await this._sdk.SuiLendModule.refreshReservePrices(I,R),j){let{clmm_pool_coin_type_a:V,clmm_pool_coin_type_b:J,clmm_pool:Y,clmm_fee_tier:X}=await this._sdk.SwapModules.getFlashLoanPool(l[0].reserve.coinType,x.toString()),{balance_a:ee,balance_b:C,receipt:E,is_loan_a:N}=this._sdk.SwapModules.flashLoan({tx:I,amount:x,clmm_pool:Y,clmm_pool_coin_type_a:V,clmm_pool_coin_type_b:J,flash_loan_coin:l[0].reserve.coinType}),D=await this._sdk.SwapModules.routerSwap({router:B?.route_obj,input_coin:N?$e.fromBalance(ee,V,I):$e.fromBalance(C,J,I),slippage:o,txb:I});this.repay({txb:I,market_id:g,position_cap_id:f,repay_reserve_array_index:d[0].reserveArrayIndex.toString(),repay_coin:D,repay_coin_type:v?S:y,repay_amount:"0"}),D&&I.transferObjects([D],this._sdk.getSenderAddress());let O=ne(x).mul(X).toString(),A=ne(x).add(O).toDP(0,xt.ROUND_UP),p=this.withdrawAsset({market_id:g,position_cap_id:f,withdraw_amount:A.toString(),withdraw_reserve_array_index:l[0].reserveArrayIndex.toString(),withdraw_coin_type:v?y:S},I),s=I.splitCoins(p,[A.toString()]);this._sdk.SwapModules.repayFlashLoan({tx:I,clmm_pool:Y,repay_base:N?$e.intoBalance(s,V,I):ee,repay_quote:N?C:$e.intoBalance(s,J,I),receipt:E,clmm_pool_coin_type_a:V,clmm_pool_coin_type_b:J}),I.transferObjects([p],this._sdk.getSenderAddress())}else{let V=this.withdrawAsset({market_id:g,position_cap_id:f,withdraw_amount:x.toString(),withdraw_reserve_array_index:l[0].reserveArrayIndex.toString(),withdraw_coin_type:v?y:S},I),J=await this._sdk.SwapModules.routerSwap({router:B?.route_obj,input_coin:V,slippage:o,txb:I});this.repay({txb:I,market_id:g,position_cap_id:f,repay_reserve_array_index:d[0].reserveArrayIndex.toString(),repay_coin:J,repay_coin_type:v?S:y,repay_amount:"0"}),I.transferObjects([J],this._sdk.getSenderAddress())}return I};this.positionRepay=async e=>{let{position_id:i,amount:r,is_quote:n,slippage:o}=e,{routers:a,repay_coin_type:l,base_token:d,quote_token:f,borrows:g,deposits:v,market_id:y,position_cap_id:S}=await this.calculatePositionRepay({position_id:i,amount:r,is_quote:n}),I=this.extractOtherTokenTypes(v,g,d,f),{reserve:x}=await this._sdk.SuiLendModule.getSuiLendReserveInfo(d,f,void 0,I),B=new $i;await this._sdk.SuiLendModule.refreshReservePrices(B,x);let R=n?f!==l:d!==l,j;if(R){let V=$e.buildCoinWithBalance(BigInt(r.toString()),n?f:d,B);j=await this._sdk.SwapModules.routerSwap({router:a?.route_obj,input_coin:V,slippage:o,txb:B})}else j=$e.buildCoinWithBalance(BigInt(r.toString()),n?f:d,B);return this.repay({txb:B,position_cap_id:S,repay_reserve_array_index:g[0].reserveArrayIndex.toString(),repay_coin:j,repay_coin_type:l,repay_amount:"0",market_id:y}),B.transferObjects([j],this._sdk.getSenderAddress()),B};this.positionTopUpCToken=async e=>{let{position_id:i,amount:r,is_quote:n,swap_clmm_pool:o="",slippage:a}=e,l=new $i,{is_long:d,market_id:f,position_cap_id:g,deposits:v,borrows:y}=await this.getPositionInfo(i),{base_token:S,quote_token:I}=await this._sdk.MarketModules.getMarketInfo(f),x=d&&n||!d&&!n,B=this.extractOtherTokenTypes(v,y,S,I),{base_reserve_array_index:R,quote_reserve_array_index:j,reserve:V}=await this._sdk.SuiLendModule.getSuiLendReserveInfo(S,I,void 0,B);await this._sdk.SuiLendModule.refreshReservePrices(l,V);let J;if(x){let Y=await this._sdk.SwapModules.findRouters(n?I:S,n?S:I,r,!0,[o]),X=$e.buildCoinWithBalance(BigInt(r.toString()),n?I:S,l);J=await this._sdk.SwapModules.routerSwap({router:Y?.route_obj,input_coin:X,slippage:a,txb:l})}else J=$e.buildCoinWithBalance(BigInt(r.toString()),n?I:S,l);return await this.depositToLeveragePosition({is_long:d,market_id:f,position_cap_id:g,deposit_reserve_array_index:d?R:j,input_coin:J,base_token:S,quote_token:I},l),l};this.positionWithdrawCToken=async e=>{let{position_id:i,amount:r,is_quote:n,swap_clmm_pool:o="",slippage:a}=e,l=new $i,{is_long:d,market_id:f,position_cap_id:g,deposits:v,borrows:y}=await this.getPositionInfo(i),{base_token:S,quote_token:I}=await this._sdk.MarketModules.getMarketInfo(f),x=d&&n||!d&&!n,B=this.extractOtherTokenTypes(v,y,S,I),{base_reserve_array_index:R,quote_reserve_array_index:j,reserve:V}=await this._sdk.SuiLendModule.getSuiLendReserveInfo(S,I,void 0,B);await this._sdk.SuiLendModule.refreshReservePrices(l,V);let J=await this._sdk.SuiLendModule.getLatestPriceFeeds(V,!0),Y=J[no(I)]?.price,X=J[no(S)]?.price,ee=d?ne(Y).div(ne(X)).toString():ne(X).div(ne(Y)).toString(),C=V[0].mintDecimals,E=V[1].mintDecimals,N=x?ne(r).mul(ee).div(10**(n?E:C)).mul(10**(d?C:E)).toDP(0,xt.ROUND_DOWN).toString():r.toString(),D=this.withdrawAsset({market_id:f,position_cap_id:g,withdraw_amount:N,withdraw_reserve_array_index:d?R:j,withdraw_coin_type:d?S:I},l);if(x){let O=await this._sdk.SwapModules.findRouters(d?S:I,n?I:S,N,!0,[o]),A=await this._sdk.SwapModules.routerSwap({router:O?.route_obj,input_coin:D,slippage:a,txb:l});A&&l.transferObjects([A],this._sdk.getSenderAddress())}else l.transferObjects([D],this._sdk.getSenderAddress());return l};this.positionClaim=async e=>{let i=new $i,{position_cap_id:r,obligation_owner_cap:n,market_id:o,claimable_rewards:a}=await this.getPositionInfo(e);return console.log("\u{1F680}\u{1F680}\u{1F680} ~ positionModules.ts:1650 ~ PositionModules ~ claimable_rewards:",a),await this.buildClaimRewardsMoveCall(a,o,r,i),i};this.calculatePositionDeposit=async e=>{let{is_quote:i,is_long:r,amount:n,swap_clmm_pool:o="",leverage:a,by_amount_in:l=!0,base_token:d,quote_token:f,is_submit:g=!1,is_open:v=!0,position_id:y,market_id:S}=e,I=[],x=[],B=[],R=this._sdk.getLeverageThresholdForMarket(S),j;if(!v&&y){let{deposits:Q,borrows:ie}=await this.getPositionInfo(y);if(x=Q,B=ie,I=this.extractOtherTokenTypes(x,B,d,f),B.length>0&&x.length>0){let T=B[0].borrowedAmountUsd.toString(),P=x[0].depositedAmountUsd.toString();P&&T&&ne(T).gt(0)&&(j=ne(P).div(ne(P).sub(T)).toString())}}let{reserve:V,base_reserve_array_index:J,quote_reserve_array_index:Y}=await this._sdk.SuiLendModule.getSuiLendReserveInfo(d,f,void 0,I),X=V[0].mintDecimals,ee=V[1].mintDecimals,C=n.toString(),E=r&&i||!r&&!i,N=await this._sdk.SuiLendModule.getLatestPriceFeedsByCoinTypes([d,f]),D=N&&N[f]?.price,O=N&&N[d]?.price;if(!D||!O)throw $t("PriceNotFound","Price not found");if(E&&g){let Q=r?ne(D).div(ne(O)).toString():ne(O).div(ne(D)).toString();C=ne(n).mul(Q).div(10**(i?ee:X)).mul(10**(r?X:ee)).toString(),console.log("\u{1F680}\u{1F680}\u{1F680} ~ positionModules.ts:492 ~ PositionModules ~ initDepositAmount:",{initDepositAmount:C,rate:Q})}else if(E&&!g){let Q=r?f:d,ie=r?d:f;C=(await this._sdk.SwapModules.findRouters(Q,ie,C,!0,[o]))?.amount_out.toString()}else C=n;let A=!1;R?A=r?a>R.long_threshold:a>R.short_threshold:A=!0,j&&ne(j).gt(a)&&(A=!0);let p,s,u,h,_,w,M,b;if(A){let{base_price:Q,quote_price:ie,flash_amount:T,flash_loan_fee:P,flash_loan_coin:L,is_flash_a:q,clmm_pool:F,clmm_fee_tier:H,clmm_pool_coin_type_a:$,clmm_pool_coin_type_b:U}=await this._sdk.SwapModules.calculateFlashLoan({is_long:r,leverage:a,base_token:d,quote_token:f,deposit_amount:C,reserve:V,base_token_decimal:X,quote_token_decimal:ee}),K=await this._sdk.SwapModules.findRouters(r?f:d,r?d:f,T.toString(),!0,[o]);p=ne(C).add(ne(K?.amount_out.toString())).toDP(0,xt.ROUND_DOWN).toString(),s=ne(p).mul(r?Q:ie).toString(),u=ne(T).add(P).toDP(0,xt.ROUND_UP).toString(),h=ne(u).mul(r?ie:Q).toString(),b=K,_={clmm_fee_tier:H,flash_loan_fee:P,flash_loan_coin:L,flash_amount:T,is_flash_a:q,clmm_pool_coin_type_a:$,clmm_pool_coin_type_b:U,clmm_pool:F}}else{let Q=r?X:ee,ie=r?ee:X,T=x.length>0?x[0].depositedAmount.toString():"0",P=B.length>0?B[0].borrowedAmount.toString():"0",L=r?O:D,q=r?D:O,F=ne(C).div(10**Q).toFixed(Q),{addBorrowAmount:H,addBorrowValue:$,addCollateralFromBorrow:U,finalCollateralAmount:K,finalCollateralValue:G,finalDebtAmount:z,finalDebtValue:te,addCollateralAmount:re,addCollateralValue:oe}=Wd(T,P,F,L,q,a.toString());p=ne(re).mul(10**Q).toFixed(0,xt.ROUND_DOWN).toString(),s=ne(oe).mul(10**Q).toString(),u=ne(H).mul(10**ie).toFixed(0,xt.ROUND_UP).toString(),h=ne($).mul(10**ie).toString(),b=await this._sdk.SwapModules.findRouters(r?f:d,r?d:f,p,!0,[])}let m=i?ne(n).div(10**(i?ee:X)).mul(10**X).mul(a).div(O).toDP(0,xt.ROUND_DOWN).toString():ne(n).mul(a).toDP(0,xt.ROUND_DOWN).toString(),c="0",k="0",Z="0",W="0";return!v&&y&&(B&&B.length>0&&(c=ne(B[0].borrowedAmount.toString()).mul(r?10**ee:10**X).add(ne(u)).toString(),k=ne(c).mul(r?D:O).toString()),Z=ne(x[0].depositedAmount.toString()).mul(r?10**X:10**ee).add(ne(p)).toString(),W=ne(Z).mul(r?O:D).toString()),{routers:b,flash_loan_objs:_,quote_price:w,leverageDepositAmount:m,base_price:M,deposit_amount:p,borrow_amount:u,deposit_amount_usd:s,borrow_amount_usd:h,after_borrow_amount:c,after_borrow_amount_usd:k,after_deposit_amount:Z,after_deposit_amount_usd:W,init_deposit_amount:C,base_reserve_array_index:J,quote_reserve_array_index:Y,reserve:V,has_swap:E}};this.calculateCompoundDebt=async(e,i)=>{let{market_id:r,position_cap_id:n,borrow_reserve_array_index:o,borrow_index:a}=e,{margin_trading:l}=this._sdk.sdkOptions,{lending_market_type:d,lending_market_id:f}=Pt(this._sdk.sdkOptions.suilend),g=new $i;g.moveCall({target:`${l.published_at}::router::compound_debt`,typeArguments:[d],arguments:[g.object(f),g.object(r),g.object(n),g.pure.u64(o),g.pure.u64(a)]});let v=i.moveCall({target:`${l.published_at}::router::compound_debt`,typeArguments:[d],arguments:[i.object(f),i.object(r),i.object(n),i.pure.u64(o),i.pure.u64(a)]});try{let y=await this._sdk.FullClient.devInspectTransactionBlock({transactionBlock:g,sender:this._sdk.getSenderAddress()});y.error!=null&&$t("FetchError",new Error(y.error),{[ta.METHOD_NAME]:"calculateCompoundDebt",[ta.REQUEST_PARAMS]:e}),(!y.results||y.results.length===0||!y.results[0].returnValues||y.results[0].returnValues.length===0)&&$t("FetchError",new Error("No return values from compound_debt"),{[ta.METHOD_NAME]:"calculateCompoundDebt",[ta.REQUEST_PARAMS]:e});let S=aw.u64().parse(Uint8Array.from(y?.results?.[0]?.returnValues?.[0]?.[0]||[]));return{compoundDebtU64:v,compoundDebtAmount:S.toString()}}catch{return}};this.calculatePositionWithdraw=async e=>{let{position_id:i,is_quote:r,swap_clmm_pool:n="",amount:o,leverage:a,slippage:l,withdraw_max:d,tx:f}=e,{deposits:g,borrows:v,origin_obligation:y,position_cap_id:S,market_id:I,is_long:x,claimable_rewards:B}=await this.getPositionInfo(i),{base_token:R,quote_token:j}=await this._sdk.MarketModules.getMarketInfo(I),V=i?this.extractOtherTokenTypes(g,v,R,j):[],{reserve:J,base_reserve_map_info:Y,quote_reserve_map_info:X}=await this._sdk.SuiLendModule.getSuiLendReserveInfo(R,j,void 0,V),ee=J[0].mintDecimals,C=J[1].mintDecimals,E=x?Y.cTokenExchangeRate:X.cTokenExchangeRate,N=await this._sdk.SuiLendModule.getLatestPriceFeeds(J,!0),D=N[no(j)]?.price,O=N[no(R)]?.price,A=ne(0),p;x?(A=ne(r?ne(o).mul(D).toString():ne(o).mul(O).toString()).div(r?10**C:10**ee),p=r?ne(o).div(O).div(10**C).mul(10**ee).toString():ne(o)):(A=ne(r?ne(o).mul(D).toString():ne(o).mul(O).toString()).div(r?10**C:10**ee),p=r?ne(o):ne(o).mul(O).div(10**ee).mul(10**C).toString());let s=ne(g[0].depositedAmountUsd.toString()).sub(ne(v&&v.length>0?v[0].borrowedAmountUsd.toString():"0")).toString(),u=A.div(ne(s)),h=d||ne(u).gte(1),_,w=new xt(0);y&&y.borrows&&y.borrows.length>0&&(_=uw(y.borrows[0],x?J[1]:J[0]),w=ne(_.borrowedAmount.value.toString()).div(10**18).toDP(0,xt.ROUND_UP));let M,b=w.mul(h?1.001:u).toDP(0,xt.ROUND_UP).toString(),m=b.toString(),c,k,Z,W,Q,ie;if(ne(b).gt(0)){let{clmm_pool_coin_type_a:oe,clmm_pool_coin_type_b:_e,clmm_fee_tier:ce,clmm_pool:ge}=await this._sdk.SwapModules.getFlashLoanPool(x?j:R,m);Q=oe||"",ie=_e||"",Z=ce||0,W=ge||"",c=ne(m).mul(ce).toString(),k=ne(m).mul(ne(1).add(ce)).toDP(0,xt.ROUND_UP).toString()}let T=x&&r||!x&&!r,P,L;if(T){let oe=ne(g[0].depositedAmount.toString()).mul(10**(x?ee:C)).mul(h?1:u).toDP(0,xt.ROUND_DOWN).toString();P=await this._sdk.SwapModules.findRouters(g[0].reserve.coinType,x?j:R,oe,!0,[n])}else{let _e=R==="0x0041f9f9344cac094454cd574e333c4fdb132d7bcc9379bcd4aab485b2a63942::wbtc::WBTC"||j==="0x0041f9f9344cac094454cd574e333c4fdb132d7bcc9379bcd4aab485b2a63942::wbtc::WBTC"?.01:.0025;L=ne(b).mul(x?D:O).div(10**(x?C:ee)).mul(10**(x?ee:C)).div(x?O:D).mul(ne(1).add(_e)).toDP(0,xt.ROUND_DOWN).toString(),P=await this._sdk.SwapModules.findRouters(g[0].reserve.coinType,x?j:R,L.toString(),!0,[n]),h||(b=ne(P?.amount_out.toString()).mul(ne(1).sub(l)).toDP(0,xt.ROUND_DOWN).toString())}p=ne(p).mul(a).toDP(0,xt.ROUND_DOWN).toString(),A=ne(A).mul(a);let q=w.mul(ne(1).sub(u)).toString(),F=ne(q).mul(x?D:O).toString(),H=ne(g[0].depositedAmount.toString()).mul(x?10**ee:10**C).sub(ne(p)).toString(),$=ne(H).mul(x?O:D).toString(),U=ne(P?.amount_in.toString()).toString(),K=ne(P?.amount_out.toString()).toString(),G=ne(p).div(E.toString()).toDP(0,xt.ROUND_DOWN).toString(),z=ne(F).div(ne(10**(x?C:ee))),te=ne($).div(ne(10**(x?ee:C))),re=!0;if(v.length>0){let oe=ne(v[0].borrowedAmountUsd.toString()),_e=oe.div(te).toString(),ce=ne(g[0].reserve.config.openLtvPct).mul(ne(.95)).div(100).toString();console.log("\u{1F680}\u{1F680}\u{1F680} ~ positionModules.ts:1459 ~ PositionModules ~ afterLTV:",{afterLTV:_e,ltv:ce,afterDepositAmount:H,afterDepositAmountUSD:te,afterBorrowAmount:q,afterBorrowAmountUSD:z,withdrawAmount:p,currentBorrowAmountUSD:oe}),ne(_e).lte(ce)&&(re=!1)}return{compoundDebtU64:M,amount_in:U,amount_out:K,from:g[0].reserve.coinType,to:x?R:j,after_borrow_amount:q,after_borrow_amount_usd:F,after_deposit_amount:H,after_deposit_amount_usd:$,flash_loan_fee:c,clmm_fee_tier:Z,withdraw_amount:p,withdraw_ctoken_amount:G,repay_amount:b,ratio:u,is_close:h,is_long:x,deposits:g,borrows:v,reserve:J,base_token:R,quote_token:j,clmm_pool:W,clmm_pool_coin_type_a:Q,clmm_pool_coin_type_b:ie,position_cap_id:S,market_id:I,swap_convert_all:T,flash_loan_amount:m,routers:P,repay_flash_loan_amount:k,partial_amount_in:L,has_flash_loan:re,claimable_rewards:B}};this.calculatePositionLeverage=async e=>{let{position_id:i,current_leverage:r,target_leverage:n,swap_clmm_pool:o=""}=e,a=ne(n).sub(ne(r)),l=a.gt(0),{borrows:d,deposits:f,is_long:g,position_cap_id:v,market_id:y}=await this.getPositionInfo(i),{base_token:S,quote_token:I}=await this._sdk.MarketModules.getMarketInfo(y),x=this.extractOtherTokenTypes(f,d,S,I),{reserve:B}=await this._sdk.SuiLendModule.getSuiLendReserveInfo(S,I,void 0,x),R=B[0].mintDecimals,j=B[1].mintDecimals,V=await this._sdk.SuiLendModule.getLatestPriceFeeds(B,!0),J=V[no(I)]?.price,Y=V[no(S)]?.price,X=d.length>0,ee=f[0].depositedAmountUsd.toString(),C=f[0].depositedAmount.toString(),E=X?ne(d[0].borrowedAmount.toString()).mul(10**(g?j:R)):ne(0),N=X?d[0].borrowedAmountUsd.toString():ne(0),D=X?ne(d[0].reserve.config.borrowWeightBps.toString()).div(1e4).toString():"1",O=ne(f[0].reserve.config.openLtvPct).mul(ne(.95)).div(100).div(D).toString(),A=ne(ee).sub(ne(N)).mul(O).toString();if(l){let p=ne(ee).div(r).mul(a),s=p.add(N).div(ee).toString(),u=p.div(g?J:Y).mul(10**(g?j:R)).toDP(0,xt.ROUND_UP),h=ne(s).gt(O),_=u,w=g?I:S,M=g?S:I,b=await this._sdk.SwapModules.findRouters(w,M,_.toString(),!0,[o]),m=ne(b?.amount_out.toString()).toString(),c=ne(m).mul(g?Y:J).toString(),k,Z,W,Q,ie,T="0",P="0";if(h){let{clmm_pool_coin_type_a:$,clmm_pool_coin_type_b:U,clmm_pool:K,clmm_fee_tier:G}=await this._sdk.SwapModules.getFlashLoanPool(w,_.toString());W=G,Q=$,ie=U,k=_.mul(W).toString(),Z=g?Q==I:ie==S,T=ne(_).add(k).toDP(0,xt.ROUND_UP).toString(),P=ne(T).mul(g?J:Y).toString()}else T=u.toString(),P=p.toString();let L=ne(C).add(ne(m).div(10**(g?R:j))).toString(),q=ne(L).mul(g?Y:J).toString(),F=ne(E).add(ne(T)).div(10**(g?j:R)).toString(),H=ne(F).mul(g?J:Y).toString();return{amount_in:b?.amount_in.toString(),amount_out:b?.amount_out.toString(),flash_loan_fee:k,deposit_amount:m,borrow_amount:T,deposit_amount_usd:c,borrow_amount_usd:P,flash_loan_amount:_,base_token:S,quote_token:I,reserve:B,deposits:f,borrows:d,clmm_fee_tier:W,is_flash_loan:h,is_loan_a:Z,clmm_pool_coin_type_a:Q,clmm_pool_coin_type_b:ie,after_deposit_amount:L,after_borrow_amount:F,after_deposit_amount_usd:q,after_borrow_amount_usd:H,position_cap_id:v,market_id:y,is_long:g,routers:b}}else{let s=ne(ee).div(r).mul(a.abs()).div(g?J:Y).mul(10**(g?j:R)).toDP(0,xt.ROUND_UP),u=await this._sdk.SwapModules.findRouters(f[0].reserve.coinType,d[0].reserve.coinType,s.toString(),!1,[o]),h=u?.amount_in.toString(),_=ne(h).mul(g?Y:J).div(10**(g?R:j)).toString(),w=ne(ee).mul(O).toString(),M=ne(N).div(ne(ee).sub(ne(_))).toString(),b=ne(M).gt(O),m=s.toString(),c=ne(m).mul(g?J:Y).toString(),k=h,Z=ne(k).mul(g?Y:J).toString(),W,Q="",ie="";if(b){let{clmm_pool_coin_type_a:F,clmm_pool_coin_type_b:H,clmm_pool:$,clmm_fee_tier:U}=await this._sdk.SwapModules.getFlashLoanPool(d[0].reserve.coinType,m.toString());W=U,Q=F,ie=H}let T=ne(C).sub(ne(k).div(10**(g?R:j))).toString(),P=ne(T).mul(g?Y:J).toString(),L=ne(E).sub(ne(m)).div(10**(g?j:R)).toString(),q=ne(L).mul(g?J:Y).toString();return{amount_in:u?.amount_in.toString(),amount_out:u?.amount_out.toString(),deposit_amount:k,borrow_amount:m,deposit_amount_usd:Z,borrow_amount_usd:c,base_token:S,quote_token:I,reserve:B,deposits:f,borrows:d,clmm_fee_tier:W,withdraw_ctoken_amount:h,is_flash_loan:b,clmm_pool_coin_type_a:Q,clmm_pool_coin_type_b:ie,after_deposit_amount:T,after_borrow_amount:L,after_deposit_amount_usd:P,after_borrow_amount_usd:q,position_cap_id:v,market_id:y,is_long:g,routers:u}}};this.calculatePositionRepay=async e=>{let{position_id:i,amount:r,is_quote:n}=e,{borrows:o,deposits:a,is_long:l,market_id:d,position_cap_id:f}=await this._sdk.PositionModules.getPositionInfo(i),g=o[0].reserve.coinType,v=l?a[0].reserve.coinType:o[0].reserve.coinType,y=l?o[0].reserve.coinType:a[0].reserve.coinType,S,I=l?!n:n;return I&&(S=await this._sdk.SwapModules.findRouters(n?y:v,g,r,!0,[])),{routers:S,repay_coin_type:g,base_token:v,quote_token:y,is_long:l,borrows:o,deposits:a,market_id:d,position_cap_id:f,has_swap:I}};this._sdk=e}getObligationRewardsInfo(e,i){let r=[],n=new dt(10).pow(18),o={},a=Date.now();for(let d of i){let f=d.coinType,g=d.arrayIndex.toString(),v=d.depositsPoolRewardManager.poolRewards||[];for(let S of v){if(!S)continue;let I=S.id,x=S.coinType,B=parseInt(S.startTimeMs),R=parseInt(S.endTimeMs),j=a>=B&&a<R,V=S.mintDecimals,J=dt(S.cumulativeRewardsPerShare).times(10**V);o[I]={coinType:x,mintDecimals:V,isActive:j,reserveType:"deposit",reserveArrayIndex:g,reserveCoinType:f,globalCumulativePerShare:J,rewardIndex:S.rewardIndex,reserve:d}}let y=d.borrowsPoolRewardManager.poolRewards||[];for(let S of y){if(!S)continue;let I=S.id,x=S.coinType,B=parseInt(S.startTimeMs),R=parseInt(S.endTimeMs),j=a>=B&&a<R,V=S.mintDecimals,J=dt(S.cumulativeRewardsPerShare).times(10**V);o[I]={coinType:x,mintDecimals:V,isActive:j,reserveType:"borrow",reserveCoinType:f,reserveArrayIndex:g,rewardIndex:S.rewardIndex,globalCumulativePerShare:J,reserve:d}}}let l=e.userRewardManagers;for(let d of l)for(let f=0;f<d.rewards.length;f++){let g=d.rewards[f];if(!g)continue;let v=o[g.poolRewardId];if(!v)continue;let y=v.globalCumulativePerShare,S=new dt(g.cumulativeRewardsPerShare.value.toString()).div(n),I=new dt(d.share).times(y.minus(S)),x=new dt(g.earnedRewards.value).div(n),B=new dt(x).plus(I),R=v.reserve.price,j=B.div(10**v.mintDecimals),V=R?j.times(R).toFixed(12):0;ne(V).gt(0)&&r.push({poolRewardId:g.poolRewardId,coinType:v.coinType,earnedRewards:B.toString(),earnedRewardsUsd:V,earnedRewardsFormatted:j.toFixed(12),isActive:v.isActive,reserveType:v.reserveType,reserveCoinType:v.reserveCoinType,reserveArrayIndex:v.reserveArrayIndex,rewardIndex:v.rewardIndex,rewardInfo:v})}return r}createLeveragePosition(e){let{lending_market_id:i,lending_market_type:r}=Pt(this._sdk.sdkOptions.suilend),{global_config_id:n,versioned_id:o}=Pt(this._sdk.sdkOptions.margin_trading),a=this._sdk.sdkOptions.margin_trading,{leverage:l,market_id:d,base_token:f,quote_token:g,is_long:v,init_deposit_amount:y,tx:S,init_coin_type:I}=e;return S.moveCall({target:`${a.published_at}::router::open_position`,arguments:[S.object(n),S.object(d),S.object(i),S.pure.u64(ne(l).mul(1e4).toString()),S.object(fn),S.object(o)],typeArguments:[r,v?f:g]})}async depositToLeveragePosition(e,i){let{margin_trading:r}=this._sdk.sdkOptions,{lending_market_type:n,lending_market_id:o}=Pt(this._sdk.sdkOptions.suilend),{is_long:a,market_id:l,position_cap_id:d,position_cap:f,deposit_reserve_array_index:g,input_coin:v,base_token:y,quote_token:S}=e,{global_config_id:I,versioned_id:x}=Pt(this._sdk.sdkOptions.margin_trading);return i.moveCall({target:`${r.published_at}::router::deposit`,typeArguments:[n,a?y:S],arguments:[i.object(I),i.object(o),i.object(l),d?i.object(d):f,v,i.pure.u64(g),i.object(fn),i.object(x)]}),i}extractOtherTokenTypes(e,i,r,n){let o=[];return e.forEach(a=>{a.reserve.coinType!==r&&a.reserve.coinType!==n&&o.push(a.reserve.coinType)}),i.forEach(a=>{a.reserve.coinType!==r&&a.reserve.coinType!==n&&o.push(a.reserve.coinType)}),o}async buildClaimRewardsMoveCall(e,i,r,n){let{suilend:o,margin_trading:a}=this._sdk.sdkOptions,l=Pt(o).lending_market_id,d=Pt(o).lending_market_type,{global_config_id:f,versioned_id:g}=Pt(this._sdk.sdkOptions.margin_trading);for(let v=0;v<e.length;v++){let y=n.moveCall({target:`${a.published_at}::router::claim_rewards`,arguments:[n.object(f),n.object(l),n.object(i),n.object(r),n.pure.u64(e[v].reserveArrayIndex.toString()),n.pure.u64(e[v].rewardIndex.toString()),n.pure.bool(e[v].reserveType==="deposit"),n.object(fn),n.object(g)],typeArguments:[d,e[v].coinType]});n.transferObjects([y],this._sdk.getSenderAddress())}}};import{SuilendClient as lw}from"@suilend/sdk/client";import{initializeSuilend as cw,initializeSuilendRewards as dw,initializeObligations as hw}from"@suilend/sdk/lib/initialize";import{formatRewards as fw,getFilteredRewards as pw,getStakingYieldAprPercent as mw,getDedupedPerDayRewards as _w,getDedupedAprRewards as gw,getTotalAprPercent as Kd,getNetAprPercent as ww}from"@suilend/sdk/lib/liquidityMining";import{Side as Fr}from"@suilend/sdk/lib/types";import{d as Ou,getPackagerConfigs as oo,PythPriceModule as vw,removeHexPrefix as oa}from"@cetusprotocol/common-sdk";import{SUI_DECIMALS as yw,toHex as Xd}from"@mysten/sui/utils";var bw=9,sa=class{constructor(e){this.getCoinAprByAmount=async(e,i,r)=>{let n=new dt(i.toString()),o=await this.getLendingMarketData(!1),{allLendingMarketData:a,lstStatsMap:l,sdeUsdAprPercent:d,eThirdAprPercent:f,eEarnAprPercent:g}=o;if(await this.getInitializeObligations(o,!0),!a||!l)throw new Error("lendingMarketCache is not initialized");let v=Object.values(a??{})[0],y=v.lendingMarket.reserves.find(O=>O.coinType===e);if(!y)throw new Error("reserve not found");let I=(this.obligationsCache?.[v.lendingMarket.id]).rewardMap[y.token.coinType]?.[r]??[],x=pw(I),B=mw(r,y.coinType,l,d,f),R=r===Fr.DEPOSIT?y.depositAprPercent:y.borrowAprPercent,j=R,V=new dt(1),J=!0;if(r!==void 0&&n!==void 0&&n.gt(0)){let O={...y,depositedAmount:r===Fr.DEPOSIT?dt.max(y.depositedAmount.plus(r===Fr.DEPOSIT?n:n.negated()),0):y.depositedAmount,borrowedAmount:r===Fr.BORROW?dt.max(y.borrowedAmount.plus(r===Fr.BORROW?n:n.negated()),0):y.borrowedAmount};j=r===Fr.DEPOSIT?Zd(O):Pu(O);let A=r===Fr.DEPOSIT?y.depositedAmount:y.borrowedAmount,p=r===Fr.DEPOSIT?O.depositedAmount:O.borrowedAmount;V=p.eq(0)?new dt(-1):A.div(p),J=!V.eq(-1)}let ee=_w(x).map(O=>({...O,stats:{...O.stats,perDay:J?O.stats.perDay.times(V):void 0}})),E=gw(x).map(O=>({...O,stats:{...O.stats,aprPercent:J?O.stats.aprPercent.times(V):void 0}})),N=Kd(r,R,x,B),D=j===void 0||E.some(O=>O.stats.aprPercent===void 0)?void 0:Kd(r,j,E,B);return console.log("\u{1F680}\u{1F680}\u{1F680} ~ suilendModule.ts:315 ~ SuiLendModule ~ newTotalAprPercent:",D?.toString()),{new_total_apr_percent:D?.toString(),total_apr_percent:N.toString()}};this.refreshReservePrice=async(e,i,r)=>{let{lending_market_id:n,lending_market_type:o}=oo(this.sdk.sdkOptions?.suilend),a=`${n}_${o}`;if(!this.suilendClientCache)throw new Error("suilendClientCache is not initialized");let l=await this.pythPriceModule.getPriceFeedObjectId(i);this.suilendClientCache[a].refreshReservePrices(e,l,r)};this.getLatestPriceFeeds=async(e,i=!1)=>{let{lending_market_id:r,lending_market_type:n}=oo(this.sdk.sdkOptions?.suilend),o={},a=[];if(e.forEach(g=>{let v=this.sdk.getCache(`getLatestPrice_${g.coinType.name}`,i);v&&this.priceCheck(v,60)?o[g.coinType.name]=v:a.push(g.coinType.name)}),a.length==0)return o;let l=`${r}_${n}`;if(!this.suilendClientCache)throw new Error("suilendClient is not initialized");let d=Array.from(new Set(e.map(g=>g?.priceIdentifier?.bytes?Xd(new Uint8Array(g.priceIdentifier.bytes)):oa(g.priceIdentifier.toString()))));return(await this.pythPriceModule.getLatestPriceFeeds(d))?.parsed?.forEach((g,v)=>{if(g){let{price:y,expo:S,publish_time:I}=g.price,x=Ou(y).mul(Ou(10).pow(Ou(S))).toString(),B=e[v],R={coin_type:B.coinType.name||B.coinType,price:x,oracle_price:0n,last_update_time:I};R.oracle_price=Hd(BigInt(y),BigInt(S)),o[B.coinType.name||B.coinType]=R,this.sdk.updateCache(`getLatestPrice_${R.coin_type}`,R)}}),o};this.getLatestPriceFeedsByCoinTypes=async(e,i=!1)=>{try{let{lending_market_id:r}=oo(this.sdk.sdkOptions?.suilend),{allLendingMarketData:n}=await this.getLendingMarketData(!1),o=[];return e.forEach(l=>{let d=n[r].reserveMap[l];o.push(d)}),await this.getLatestPriceFeeds(o,i)}catch(r){$t("FetchError",r);return}};this.getSuiLendReserveInfo=async(e,i,r,n)=>{let{lending_market_id:o}=oo(this.sdk.sdkOptions?.suilend);r||(r=(await this.getLendingMarketData(!1)).allLendingMarketData);let a=r[o].reserveMap[e],l=r[o].reserveMap[i],d=r[o].refreshedRawReserves.filter(S=>S.coinType.name==oa(e)),f=r[o].refreshedRawReserves.filter(S=>S.coinType.name==oa(i)),g=r[o].reserveMap[e],v=r[o].reserveMap[i],y=[];return n&&n.forEach(S=>{let I=r[o].refreshedRawReserves.filter(x=>x.coinType.name==oa(S));y.push(...I)}),{base_reserve_array_index:a.arrayIndex.toString(),quote_reserve_array_index:l.arrayIndex.toString(),reserve:[d[0],f[0],...y],base_reserve_map_info:g,quote_reserve_map_info:v}};this.refreshReservePrices=async(e,i)=>{for(let r=0;r<i.length;r++){let n=Xd(new Uint8Array(i[r].priceIdentifier.bytes));await this.refreshReservePrice(e,n,BigInt(i[r].arrayIndex))}};this.refreshReservePricesV2=async(e,i)=>{for(let r=0;r<i.length;r++){let n=i[r].priceIdentifier.toString();await this.refreshReservePrice(e,n,BigInt(i[r].arrayIndex))}};this.sdk=e,this.pythPriceModule=new vw(this.sdk.FullClient,{pyth_package_id:"0x04e20ddf36af412a4096f9014f4a565af9e812db9a05cc40254846cf6ed0ad91",pyth_published_at:"0x04e20ddf36af412a4096f9014f4a565af9e812db9a05cc40254846cf6ed0ad91",pyth_state_id:"0x1f9310238ee9298fb703c3419030b35b22bb1cc37113e3bb5007c99aec79e5b8",wormhole_state_id:"0xaeab97f96cf9877fee2883315d459552b2b921edc16d7ceac6eab944dd88919c",hermes_service_urls:[]})}async getSuilendClient(e,i){let r=`${e}_${i}`;return this.suilendClientCache||(this.suilendClientCache={}),this.suilendClientCache[r]||(this.suilendClientCache[r]=await lw.initialize(e,i,this.sdk.FullClient,!0)),this.suilendClientCache[r]}async getLendingMarketData(e=!0){let i="lendingMarketData",r=this.sdk.getCache(i,e);if(r)return r;let n=oo(this.sdk.sdkOptions?.suilend)?.lending_market||[];if(console.log("\u{1F680}\u{1F680}\u{1F680} ~ suilendModule.ts:67 ~ SuiLendModule ~ getLendingMarketData ~ lendingMarkets:",n),!n.length)return console.warn("\u26A0\uFE0F No lending markets configured."),{};try{let[o,a,l,d,f]=await Promise.all([(async()=>Object.fromEntries(await Promise.all(n.map(async y=>{let S=await this.getSuilendClient(y.id,y.type),{lendingMarket:I,coinMetadataMap:x,refreshedRawReserves:B,reserveMap:R,reserveCoinTypes:j,reserveCoinMetadataMap:V,rewardCoinTypes:J,activeRewardCoinTypes:Y,rewardCoinMetadataMap:X}=await cw(this.sdk.FullClient,S),{rewardPriceMap:ee}=await dw(R,Y);return[y.id,{suilendClient:S,lendingMarket:I,coinMetadataMap:x,refreshedRawReserves:B,reserveMap:R,reserveCoinTypes:j,reserveCoinMetadataMap:V,rewardPriceMap:ee,rewardCoinTypes:J,activeRewardCoinTypes:Y,rewardCoinMetadataMap:X}]}))))(),(async()=>{try{let v=await fetch(`${this.sdk.sdkOptions?.suilend?.config?.api_url}/springsui/lst-info`),y=await v.json();if(v?.statusCode===500)throw new Error("Failed to fetch SpringSui LSTs");return Object.fromEntries(Object.entries(y).map(([S,{LIQUID_STAKING_INFO:I,liquidStakingInfo:x,weightHook:B,apy:R}])=>{let j=new dt(x.storage.totalSuiSupply.toString()).div(10**yw),V=new dt(x.lstTreasuryCap.totalSupply.value.toString()).div(10**bw),J=V.eq(0)?new dt(1):j.div(V);return[S,{lstToSuiExchangeRate:J,aprPercent:new dt(R)}]}))}catch(v){return console.error(v),{}}})(),(async()=>{})(),(async()=>{try{let v=`${this.sdk.sdkOptions?.suilend?.config?.api_url}/ember/apy`,S=await(await fetch(v)).json();return new dt(S.data.apy).times(100)}catch(v){console.error(v);return}})(),(async()=>{try{return new dt(13.6472884)}catch(v){console.error(v);return}})()]),g={allLendingMarketData:o,lstStatsMap:a,sdeUsdAprPercent:l,eThirdAprPercent:d,eEarnAprPercent:f};return this.sdk.updateCache(i,g,30*1e3),g}catch(o){throw console.log("\u{1F680} getLendingMarketData error:",o),o}}async getInitializeObligations(e,i=!1){if(!i&&this.obligationsCache)return this.obligationsCache;e||(e=await this.getLendingMarketData(!1));let r={};for(let n of Object.values(e.allLendingMarketData)){let{obligationOwnerCaps:o,obligations:a}=await hw(this.sdk.FullClient,n.suilendClient,n.refreshedRawReserves,n.reserveMap,this.sdk.senderAddress);a.length>0&&console.log("\u{1F680}\u{1F680}\u{1F680} ~ suilendModule.ts:181 ~ SuiLendModule ~ getInitializeObligations ~ obligations:",a[0].original.allowedBorrowValueUsd.value.toString());let l=fw(n.reserveMap,n.rewardCoinMetadataMap,n.rewardPriceMap,a);r[n.lendingMarket.id]={obligationOwnerCaps:o,obligations:a,rewardMap:l}}return this.obligationsCache=r,this.obligationsCache}async getSuiLendUserData(e,i=!1){let r=await this.getLendingMarketData(!1),{allLendingMarketData:n,lstStatsMap:o,sdeUsdAprPercent:a,eThirdAprPercent:l,eEarnAprPercent:d}=r,f=await this.getInitializeObligations(r,!1),{lending_market_id:g}=oo(this.sdk.sdkOptions?.suilend),v=f[g];if(!v)throw new Error(`No user data found for lending market: ${g}`);let y=v.obligations.find(I=>I.id===e);if(!y)throw new Error(`Obligation not found: ${e}`);let S=ww(y,v.rewardMap,o??{},a,l);return{obligation:y,netAprPercent:S,deposits:y.deposits,borrowedAmount:y.borrowedAmount,depositedAmount:y.depositedAmount,netValueUsd:y.netValueUsd,rewardMap:v.rewardMap}}priceCheck(e,i=60){let r=Math.floor(Date.now()/1e3);if(!(Math.abs(r-e.last_update_time)>i))return e}};var Du=Lu(Qd(),1);import{Transaction as Mw}from"@mysten/sui/transactions";import{addHexPrefix as kw,CoinAssist as Nu,d as pi,getPackagerConfigs as Yd,removeHexPrefix as eh}from"@cetusprotocol/common-sdk";var aa=class{constructor(e){this.routerSwap=async e=>{let{slippage:i,txb:r,input_coin:n,router:o}=e,a=r||new Mw;if(o)return await this._sdk.AggregatorClient.routerSwap({router:o,inputCoin:n,slippage:i,txb:a})};this.flashLoan=e=>{console.log("\u{1F680}\u{1F680}\u{1F680} ~ swapModules.ts:183 ~ SwapModules ~ params:",e);let{clmm_pool:i}=this._sdk.ClmmSDK.sdkOptions,{global_config_id:r}=Yd(this._sdk.ClmmSDK.sdkOptions.clmm_pool),{amount:n,clmm_pool:o,clmm_pool_coin_type_a:a,clmm_pool_coin_type_b:l,flash_loan_coin:d,tx:f,amount_u64:g}=e,v=kw(a)===d;console.log("\u{1F680}\u{1F680}\u{1F680} ~ swapModules.ts:188 ~ SwapModules ~ isLoanA:",v);let[y,S,I]=f.moveCall({target:`${i.published_at}::pool::flash_loan`,arguments:[f.object(r),f.object(o),f.pure.bool(v),g||f.pure.u64(n.toString())],typeArguments:[a,l]});return{balance_a:y,balance_b:S,receipt:I,is_loan_a:v,loan_coin_type:v?a:l}};this.getFlashLoanPool=async(e,i)=>{console.log("\u{1F680}\u{1F680}\u{1F680} ~ swapModules.ts:201 ~ SwapModules ~ flash_amount:",i,e);try{let r=await fetch(`https://api-sui.cetus.zone/v3/sui/margin_trading/pools?coin_type=${e}&min_amount=${i}`),{data:n}=await r.json();return console.log("\u{1F680}\u{1F680}\u{1F680} ~ swapModules.ts:206 ~ SwapModules ~ data:",n),n&&n.length>0?{clmm_pool_coin_type_a:n[0].coin_type_a,clmm_pool_coin_type_b:n[0].coin_type_b,clmm_pool:n[0].pool_id,clmm_fee_tier:pi(n[0].fee_rate).div(1e6).toString()}:($t("FlashLoanPoolNotFound","FlashLoanPoolNotFound"),{clmm_pool_coin_type_a:"",clmm_pool_coin_type_b:"",clmm_pool:"",clmm_fee_tier:""})}catch(r){return $t("FetchError",r),{clmm_pool_coin_type_a:"",clmm_pool_coin_type_b:"",clmm_pool:"",clmm_fee_tier:""}}};this.repayFlashLoan=e=>{let{clmm_pool:i}=this._sdk.ClmmSDK.sdkOptions,{global_config_id:r}=Yd(this._sdk.ClmmSDK.sdkOptions.clmm_pool),{tx:n,repay_base:o,repay_quote:a,receipt:l,clmm_pool:d,clmm_pool_coin_type_a:f,clmm_pool_coin_type_b:g}=e;return n.moveCall({target:`${i.published_at}::pool::repay_flash_loan`,arguments:[n.object(r),n.object(d),o,a,l],typeArguments:[f,g]}),n};this._sdk=e}async findRouters(e,i,r,n,o){try{let a={from:e,target:i,amount:new Du.default(pi(r).toFixed(0).toString()),byAmountIn:n,depth:3},l=await this._sdk.AggregatorClient.findRouters(a);if(l?.error?.code===10001)return{...l,is_exceed:l.insufficientLiquidity};if(l?.insufficientLiquidity)return{...l,is_exceed:l.insufficientLiquidity};if(!l?.paths||l?.paths?.length===0)throw Error("Aggregator no router");return{amount_in:l.amountIn.toString(),amount_out:l.amountOut.toString(),is_exceed:l.insufficientLiquidity,route_obj:l,by_amount_in:!0,origin_res:l}}catch{try{if(o){let l=await this._sdk.AggregatorClient.swapInPools({from:e,target:i,amount:new Du.default(pi(r).toFixed(0).toString()),byAmountIn:n,pools:o});return l?{amount_in:l.routeData.amountIn.toString(),amount_out:l.routeData.amountOut.toString(),is_exceed:l.isExceed,route_obj:l.routeData,by_amount_in:!0,origin_res:l}:null}return null}catch{return null}}}async handleSwapLogic(e){let{is_long:i,is_quote:r,amount:n,base_token:o,quote_token:a,swap_clmm_pool:l="",slippage:d,tx:f}=e,g=i&&r||!i&&!r,v,y,S=n;if(g){let I=i&&r?a:o,x=i&&r?o:a,B=await this.findRouters(I,x,n,!0,[l]);if(S=B?.amount_out.toString(),B){let R=Nu.buildCoinWithBalance(BigInt(n),I,f);y=await this.routerSwap({router:B.route_obj,slippage:d,input_coin:R,txb:f}),v=y}}else v=Nu.buildCoinWithBalance(BigInt(n.toString()),r?a:o,f);return{has_swap:g,input_coin:v,init_deposit_amount:S}}async handleSwap(e){let{swap_clmm_pool:i="",slippage:r,amount:n,from:o,to:a,tx:l,input_coin:d}=e,f=await this.findRouters(o,a,n,!0,[i]),g=f.amount_out.toString();return{swap_out_coin:await this.routerSwap({router:f.route_obj,slippage:r,input_coin:d||Nu.buildCoinWithBalance(BigInt(n),o,l),txb:l}),amount_out:g}}async calculateFlashLoan(e){let{is_long:i,leverage:r,base_token:n,quote_token:o,deposit_amount:a,reserve:l,base_token_decimal:d,quote_token_decimal:f}=e,g=await this._sdk.SuiLendModule.getLatestPriceFeeds(l),v=g&&g[eh(o)]?.price,y=g&&g[eh(n)]?.price,S=i?pi(y).div(pi(v)).toString():pi(v).div(pi(y)).toString();console.log("\u{1F680}\u{1F680}\u{1F680} ~ swapModules.ts:267 ~ SwapModules ~ calculateFlashLoan ~ deposit_amount:",a,S,d,f);let I=pi(a).mul(pi(r).sub(1)).mul(S).div(10**(i?d:f)).mul(10**(i?f:d)).toDP(0,xt.ROUND_UP).toString();console.log("\u{1F680}\u{1F680}\u{1F680} ~ swapModules.ts:274 ~ SwapModules ~ calculateFlashLoan ~ flashAmount:",pi(a).mul(pi(r).sub(1)).mul(S).div(10**(i?d:f)).mul(10**(i?f:d)).toString(),I);let x=i?o:n,{clmm_pool_coin_type_a:B,clmm_fee_tier:R,clmm_pool:j,clmm_pool_coin_type_b:V}=await this.getFlashLoanPool(x,I),J=B===x,Y=pi(I).mul(R).toString();return{flash_amount:I,rate:S,quote_price:v,base_price:y,flash_loan_coin:x,is_flash_a:J,flash_loan_fee:Y,clmm_pool:j,clmm_pool_coin_type_a:B,clmm_pool_coin_type_b:V,clmm_fee_tier:R}}};import{CLOCK_ADDRESS as ua,d as th,getPackagerConfigs as pn}from"@cetusprotocol/common-sdk";var la=class{constructor(e){this._sdk=e}get config(){return this._sdk.sdkOptions.tspl}get versionedId(){return pn(this.config).versioned_id}target(e){return`${this.config.published_at}::router::${e}`}u128Price18(e,i){return e.pure.u128(th(i).mul(10**18).toFixed(0))}u64CloseRatioBps(e,i){return e.pure.u64(th(i).mul(1e4).toFixed(0))}appendTpslLevel(e,i,r,n,o,a){let{trigger_price:l,execution_price:d,close_ratio_bps:f,target_is_base:g,id:v}=r,y=[e.object(this.versionedId),typeof o=="string"?e.object(o):o,typeof a=="string"?e.object(a):a];if(v)e.moveCall({target:this.target("update_tpsl_level"),typeArguments:n,arguments:[...y,e.pure.u64(v),this.u128Price18(e,l),this.u128Price18(e,d),this.u64CloseRatioBps(e,f),e.pure.bool(g),e.object(ua)]});else{let S=i==="tp"?"add_tp_level":"add_sl_level";e.moveCall({target:this.target(S),typeArguments:n,arguments:[...y,this.u128Price18(e,l),this.u128Price18(e,d),this.u64CloseRatioBps(e,f),e.pure.bool(g),e.object(ua)]})}}async getOrderBookId(e){let i=`getOrderBookId_${e}`,r=this._sdk.getCache(i);if(r)return r;let n=pn(this.config).order_book_registry_handle,a=(await this._sdk.FullClient.getDynamicFieldObject({parentId:n,name:{type:"0x2::object::ID",value:e}})).data.content.fields.value;return a&&this._sdk.updateCache(i,a),a}async getTsplOrderCap(e=this._sdk.getSenderAddress()){let i=[];try{(await this._sdk.FullClient.getOwnedObjectsByPage(e,{filter:{StructType:`${this.config.package_id}::order::OrderCap`},options:{showContent:!0}})).data.forEach(n=>{let o=n.data.content.fields;i.push({id:o.id.id,order_id:o.order_id,position_id:o.position_id})})}catch(r){console.log("\u{1F680}\u{1F680}\u{1F680} ~ tsplModules.ts:82 ~ TsplModules ~ error:",r)}return i}async getTsplOrderList(e){let i=[];try{let r=e.map(n=>n.order_id);r.length>0&&(await this._sdk.FullClient.batchGetObjects(r,{showContent:!0})).forEach((o,a)=>{let l=o.data.content.fields,d=wu(l);d.order_cap=e[a].id,i.push(d)})}catch(r){console.log("\u{1F680}\u{1F680}\u{1F680} ~ tsplModules.ts:82 ~ TsplModules ~ error:",r)}return i}async getTsplOrder(e){try{let r=(await this._sdk.FullClient.getObject({id:e.order_id,options:{showContent:!0}})).data.content.fields,n=wu(r);return n.order_cap=e.id,n}catch(i){console.log("\u{1F680}\u{1F680}\u{1F680} ~ tsplModules.ts:82 ~ TsplModules ~ error:",i)}throw new Error(`Order id ${e.order_id} not found`)}createTpslOrder(e,i){let{order_book_id:r,position_cap_id:n,tp_target:o,sl_target:a,base_coin_type:l,quote_coin_type:d,is_long:f,entry_price:g}=e;if(!o&&!a)throw new Error("tp_target or sl_target is required");let{lending_market_type:v}=pn(this._sdk.sdkOptions.suilend),y=[v,l,d],S,I,x=i.moveCall({target:this.target("create_order"),typeArguments:y,arguments:[i.object(this.versionedId),i.object(r),typeof n=="string"?i.object(n):n,i.pure.bool(f),this.u128Price18(i,g),i.object(ua)]});return S=x[0],I=x[1],o&&this.appendTpslLevel(i,"tp",o,y,S,I),a&&this.appendTpslLevel(i,"sl",a,y,S,I),i.moveCall({target:this.target("share_order"),typeArguments:y,arguments:[i.object(this.versionedId),i.object(r),S]}),i.transferObjects([I],this._sdk.getSenderAddress()),i}updateTpslOrder(e,i){let{order_id:r,order_cap_id:n,target:o,base_coin_type:a,quote_coin_type:l}=e,{lending_market_type:d}=pn(this._sdk.sdkOptions.suilend),f=[d,a,l];if(o.id===void 0)throw new Error("target.id is required");return this.appendTpslLevel(i,"tp",o,f,r,n),i}cancelOrder(e,i){let{order_id:r,order_cap_id:n,base_coin_type:o,quote_coin_type:a,order_book_id:l}=e,{lending_market_type:d}=pn(this._sdk.sdkOptions.suilend);return i.moveCall({target:this.target("cancel_order"),typeArguments:[d,o,a],arguments:[i.object(this.versionedId),i.object(l),i.object(r),i.object(n)]}),i}removeTarget(e,i){let{order_id:r,order_cap_id:n,target_id:o,base_coin_type:a,quote_coin_type:l}=e,{lending_market_type:d}=pn(this._sdk.sdkOptions.suilend);return i.moveCall({target:this.target("remove_tpsl_level"),typeArguments:[d,a,l],arguments:[i.object(this.versionedId),i.object(r),i.object(n),i.pure.u64(o),i.object(ua)]}),i}claimSettlement(e,i){let{order_id:r,order_cap_id:n,base_coin_type:o,quote_coin_type:a}=e,{lending_market_type:l}=pn(this._sdk.sdkOptions.suilend);return i.moveCall({target:this.target("claim_settlement"),typeArguments:[l,o,a],arguments:[i.object(this.versionedId),i.object(r),i.object(n)]}),i}};var ca=class t extends Tw{constructor(i,r){super(i);this._marketLeverageThresholds={};this._permissionModules=new Us(this),this._swapModules=new aa(this),this._tsplModules=new la(this),this._aggregatorClient=new wd({signer:Sw("0x0"),client:i.sui_client||new Aw({url:i.full_rpc_url,network:i.env==="testnet"?"testnet":"mainnet"}),env:i.env==="testnet"?Os.Testnet:Os.Mainnet}),this._clmmSDK=r||Zl.createSDK({env:i.env,full_rpc_url:i.full_rpc_url}),this._pythConnection=new Cw("https://hermes.pyth.network",{timeout:30*1e3}),this.setMarketLeverageThresholds({"0x7c62cbfa1884c02eec32cfa6a1e4325550fb6dda9579b030c3bae3031b80e0e4":{long_threshold:1.65,short_threshold:1.7},"0xe41b1cc8154300743bfd7bb9e6325edc2beea98e957dbe4c68790e7a92a13922":{long_threshold:1.55,short_threshold:1.7},"0x71bc9710e59c3f2c385e1530e16e9aecbcd02a1bab8a557825c73760efd9d0ec":{long_threshold:1.65,short_threshold:1.7}})}get SuiLendModule(){return this._suilendModule||(this._suilendModule=new sa(this)),this._suilendModule}get PermissionModules(){return this._permissionModules}get MarketModules(){return this._marketModules||(this._marketModules=new qs(this)),this._marketModules}get PositionModules(){return this._positionModules||(this._positionModules=new na(this)),this._positionModules}get SwapModules(){return this._swapModules}get TsplModules(){return this._tsplModules}get AggregatorClient(){return this._aggregatorClient}get ClmmSDK(){return this._clmmSDK}get PythConnection(){return this._pythConnection}getMarketLeverageThresholds(){return{...this._marketLeverageThresholds}}getLeverageThresholdForMarket(i){return this._marketLeverageThresholds[i]}setLeverageThresholdForMarket(i,r){this._marketLeverageThresholds[i]=r}setMarketLeverageThresholds(i){this._marketLeverageThresholds={...i}}static createSDK(i){return t.createCustomSDK({...vd,...i})}static createCustomSDK(i){return new t(i)}};var nM=ca;export{ca as CetusMarginTradingSDK,Kb as appendExtraRewards,Wd as calcIncrementalLeverage,Pu as calculateBorrowAprPercent,Zd as calculateDepositAprPercent,Vd as calculateUtilizationPercent,nM as default,Yb as formatLtvPercentValue,Hd as getPriceWithFormattedDecimals,Jb as getRewardsAprMultiplier,Xb as getUpdatedReserve,vd as margin_trading_mainnet,_u as mergePositionData,Iu as oraclePriceMultiplierDecimal,Qb as updateRewardsWithMultiplier,pu as wrapMarketInfo,gu as wrapMarketPermissions,mu as wrapPosition,wu as wrapTsplOrder};
28
28
  /*! Bundled license information:
29
29
 
30
30
  decimal.js/decimal.mjs: