@stackone/transport 2.12.0 → 2.13.0

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.cjs CHANGED
@@ -94,14 +94,14 @@ var e=Object.create,t=Object.defineProperty,__name=(e,n)=>t(e,`name`,{value:n,co
94
94
 
95
95
  redis.call('publish', nextItemKey, nextItem)
96
96
  end
97
- `};var ConcurrencyManager=class extends ScriptManager{constructor(...e){super(...e),this.hasValidRedisConfig=!1,this.subscriptionManager=null,this.queueManager=null,this.name=`ConcurrencyManager`}async additionalInitialization(e){if(this.generateUUID=e??o.generateRequestId,this.subscriptionManager=new SubscriptionManager({config:this.redisClientConfig,logger:this.logger,instantiator:this.name,subscriptionTTL:12e4,truncateThreshold:1e4,truncationPercentage:1}),await this.subscriptionManager?.initialize(),this.hasValidRedisConfig=await this.checkRedisEventsEmit(),!this.hasValidRedisConfig)throw Error(`Failed to validate Redis configuration for ConcurrencyManager`);if((0,o.isMissing)(this.getSingleton))throw Error(`getSingleton method not available`);this.queueManager=this.getSingleton?.(QueueManager)}async addTestSubscription(e,t,n,r){return(0,o.isMissing)(this.subscriptionManager)?!1:this.subscriptionManager.subscribe(e,async(i,a)=>{a===e&&i.includes(t)&&(n.push(a),n.includes(ye)&&n.includes(be)&&n.includes(A)&&(r(),n.length=0))})}async checkRedisEventsEmit(){let e=[],t=Date.now(),checkHandler=async(n,r)=>{let checkCallback=()=>{let r=Date.now()-t;this.logger?.info({category:this.name,message:`All Redis events received successfully.`,context:{receivedEventCount:e.length,elapsedTimeMs:r}}),n(!0)},i=`config_check_test_key:${this.generateUUID()}`;if(!(await Promise.all(Ce.map(async t=>this.addTestSubscription(t,i,e,checkCallback)))).every(Boolean))return r(Error(`Failed to subscribe to event channels.`));await this.cacheClient?.setData({key:i,value:`test`,cacheTTL:1}),setTimeout(()=>{let e=Date.now()-t;r(Error(`Timeout waiting for Redis events to emit after ${e}ms.`))},2e4)};try{return await new Promise(checkHandler)}catch(n){let r=Date.now()-t;return this.logger?.error({category:this.name,message:`Redis events failed to emit.`,context:{receivedEventCount:e.length,elapsedTimeMs:r,reason:n?.message},error:n,code:j.ConcurrencyManagerRedisEventsEmitError}),!1}}isRedisConfigured(){return this.hasValidRedisConfig}async subscribeToLeaseExpiry(e,t){return await this.subscriptionManager?.subscribe(A,async(n,r)=>{if(r===A&&n.includes(t)&&n.includes(e))try{await this.releaseRequest(e,t)}catch(n){this.logger?.error({message:`Failed to release request on lease expiry - Redis may not be ready`,category:this.name,context:{requestId:e,targetConcurrencyKey:t},error:n,code:j.ConcurrencyManagerReleaseRequestFailed})}})??!1}async subscribeToSetRemoval(e,t){return await this.subscriptionManager?.subscribe(xe,async(n,r)=>{if(r===xe&&n.includes(e))try{await this.executeScript(M.publishNextItem,[t],[])}catch(n){this.logger?.error({message:`Failed to publish next item from queue - Redis may not be ready`,category:this.name,context:{queueKey:t,targetConcurrencyKey:e},error:n,code:j.ConcurrencyManagerPublishNextItemFailed})}})??!1}async registerRequest(e,t,n,r){let i=`concurrency:${e}`,a=`queue:${e}`,s=t.subPools?.find(e=>e.urlPattern instanceof RegExp?e.urlPattern.test(r??``):r?.includes(e.urlPattern))?.subPoolKey,c=(0,o.notMissing)(s)?`${i}-${s}`:i,{mainMaxConcurrency:l,subPools:u}=t,d=[{key:i,maxConcurrency:l},...u?.map(e=>{let{subPoolKey:t,maxConcurrency:n}=e;return{key:`${i}-${t}`,maxConcurrency:n}})??[]],f=d.map(e=>e.key),p=d.map(e=>e.maxConcurrency),[m,h]=await Promise.all([this.subscribeToLeaseExpiry(n,c),this.subscribeToSetRemoval(c,a)]),g={requestId:n,targetConcurrencyKey:c,leaseSubscription:m,setRemovalSubscription:h,queueKey:a},_=await this.executeScript(M.tryConcurrency,[n,c,a,...f],[`60`,l.toString(),`90`,...p.map(String)]);if((0,o.notMissing)(_)&&_[0])return{...g,joinCondition:`optimistic`,failureReason:_[1]};let v=0,y=[];for(;v<5;){let e=v>1,t=await this.queueManager?.joinAndWaitTurn(a,n,e,async(e,t)=>await this.executeScript(M.tryConcurrency,[n,c,a,...f],[`60`,l.toString(),`90`,...p.map(String)]),!1),r=(0,o.notMissing)(t)?t[0]:!1,i=(0,o.notMissing)(t)?t[1]:``;if((0,o.notMissing)(i)&&i!==``&&y.push(i),v++,r)return v>1&&this.logger?.warning({category:this.name,message:`Register request succeeded after ${v} attempts.`,context:{...g,registerAttempts:v,joinCondition:`attempts`,failureMessages:y}}),{...g,joinCondition:`attempts`};await(0,o.delay)((0,o.exponentialBackoffInMS)(v,100))}return this.logger?.error({category:this.name,message:`Failed to register request after ${v} attempts.`,context:{...g,registerAttempts:v,joinCondition:`failed`,failureMessages:y},code:j.ConcurrencyManagerRegistrationFailed}),{...g,joinCondition:`failed`}}async releaseRequest(e,t){return(0,o.isString)(t)&&(0,o.isString)(e)?!!await this.executeScript(M.removeFromSet,[t],[e]):!1}isReady(){return this.subscriptionManager!==null&&this.cacheClient!==null&&this.scriptMap!==null&&this.scriptMap.size>0&&this.hasValidRedisConfig}close(){this.subscriptionManager?.close(),this.queueManager?.close(),this.scriptMap?.clear(),this.hasValidRedisConfig=!1}};const Oe={100:`Continue`,101:`Switching Protocols`,102:`Processing`,200:`OK`,201:`Created`,202:`Accepted`,203:`Non-Authoritative Information`,204:`No Content`,205:`Reset Content`,206:`Partial Content`,207:`Multi-Status`,208:`Already Reported`,226:`IM Used`,300:`Multiple Choices`,301:`Moved Permanently`,302:`Found`,303:`See Other`,304:`Not Modified`,305:`Use Proxy`,307:`Temporary Redirect`,308:`Permanent Redirect`,400:`Bad request`,401:`Unauthorized`,402:`Payment Required`,403:`Forbidden`,404:`Not Found`,405:`Method Not Allowed`,406:`Not Acceptable`,407:`Proxy Authentication Required`,408:`Request Timeout`,409:`Conflict`,410:`Gone`,411:`Length Required`,412:`Precondition Failed`,413:`Payload Too Large`,414:`URI Too Long`,415:`Unsupported Media Type`,416:`Range Not Satisfiable`,417:`Expectation Failed`,418:`I'm a teapot`,421:`Misdirected Request`,422:`Unprocessable Entity`,423:`Locked`,424:`Failed Dependency`,425:`Too Early`,426:`Upgrade Required`,428:`Precondition Required`,429:`Too many Requests`,431:`Request Header Fields Too Large`,451:`Unavailable For Legal Reasons`,499:`Client Closed Request`,500:`Internal server error`,501:`Not Implemented`,502:`Bad Gateway`,503:`Unavailable`,504:`Gateway Timeout`,505:`HTTP Version Not Supported`,506:`Variant Also Negotiates`,507:`Insufficient Storage`,508:`Loop Detected`,510:`Not Extended`,511:`Network Authentication Required`},translateCustomError=(e,t)=>{if((0,o.isMissing)(t)||t?.length===0||(0,o.isMissing)(e))return{data:e.data,status:e.status,headers:e.headers,requestUrl:e.requestUrl,responseType:e.responseType,responseTime:e.responseTime,message:e.message};let n=t?.filter(t=>t.receivedStatus===e.status);if(n?.length)for(let t of n){let n=t.condition,r=(0,c.safeEvaluate)(n,e)===!0;if((0,o.isMissing)(n)||r)return{data:e.data,headers:e.headers,requestUrl:e.requestUrl,responseType:e.responseType,responseTime:e.responseTime,status:t.targetStatus,message:t?.message??Oe[t.targetStatus]??`Unknown error`}}return e},ke=(0,o.zStrictObject)({receivedStatus:o.z.number(),targetStatus:o.z.number(),message:o.z.string().optional(),condition:o.z.string().optional()});var N=class HttpResponseError extends Error{constructor(e,t){super(t),this.name=`HttpResponseError`,this.response=e,this.message=t??`HTTP error: ${e.status}`,Error.captureStackTrace&&Error.captureStackTrace(this,HttpResponseError)}toString(){let e=this.message?`: ${this.message}`:``;return`${this.name} [${this.response.status}]${e}`}};const isHttpResponseError=e=>e instanceof Error&&e.name===`HttpResponseError`&&`response`in e&&typeof e.response==`object`&&e.response!==null,safeSerialize=(e,t=new WeakSet)=>{if(typeof e!=`object`||!e)return typeof e==`bigint`?e.toString():e;if(t.has(e))return`[Circular Reference]`;if(e instanceof Date)return e.toISOString();if(Array.isArray(e)){t.add(e);let n=e.map(e=>safeSerialize(e,t));return t.delete(e),n}let n=e,r={};t.add(n);for(let[e,i]of Object.entries(n))r[e]=safeSerialize(i,t);return t.delete(n),r},serializeHttpResponseError=e=>{if(isHttpResponseError(e)){let t=e.response;return{name:e.name,message:e.message,stack:e.stack,response:safeSerialize(t)}}return e instanceof Error?{name:e.name,message:e.message,stack:e.stack}:{error:String(e)}};var HttpTransportFactory=class{static createInstance({interceptors:e,instanceConfig:t,httpsAgentConfig:n,logger:r,context:i,requestConfig:a,concurrencyManager:o,rateLimitManager:s}){let c=new u.default.Agent(n),d=l.default.create({...t,httpsAgent:c});if(e){let t={axiosInstance:d,logger:r,context:i,requestConfig:a,concurrencyManager:o,rateLimitManager:s};this.applyInterceptors(d,e,t)}return d}static applyInterceptors(e,t,n){let{requestConfigs:r=[],responseConfigs:i=[]}=t;[{type:`request`,configs:r},{type:`response`,configs:i}].forEach(t=>{let{configs:r,type:i}=t;r.forEach(t=>{let{onFulfilled:r,onRejected:a,options:o}=t;if(i===`request`){let t=[this.resolveInterceptorInstance(r,n),this.resolveInterceptorInstance(a,n),o];e.interceptors.request.use(...t)}if(i===`response`){let t=[this.resolveInterceptorInstance(r,n),this.resolveInterceptorInstance(a,n)];e.interceptors.response.use(...t)}})})}static resolveInterceptorInstance(e,t){return(0,o.notMissing)(e)&&(0,o.isFunction)(e)&&typeof e(t)==`function`?e(t):e??null}};const Ae=300;var P=class InstanceManager{static{this.instance=null}static{this.logger=null}constructor(e){this.dataStore=null,this.initialize(e)}static getInstance(e){return(0,o.isMissing)(InstanceManager.instance)&&(InstanceManager.instance=new InstanceManager(e)),InstanceManager.instance}initialize(e){this.dataStore=new MemoryStore({instantiator:InstanceManager.name,logger:e,typeGuard:e=>(0,o.notMissing)(e)}),InstanceManager.logger=e??null,InstanceManager.logger?.info({category:InstanceManager.name,message:`InstanceManager initialized.`})}async get(e){return this.ensureReady(),await InstanceManager.getInstance().dataStore?.getData(e)??null}async set(e,t,n){return this.ensureReady(),await InstanceManager.getInstance().dataStore?.setData({key:e,value:t,cacheTTL:(0,o.notMissing)(n)?n:300})??!1}ensureReady(){this.isReady()||this.initialize()}isReady(){return(0,o.notMissing)(this?.dataStore)}close(){let e=this.dataStore;InstanceManager.instance=null,this.dataStore=null,e?.close?.()}};const je=P.getInstance(),abortErrorInterceptor=()=>__name(e=>{let{response:t}=e;return e?.code===`ERR_CANCELED`&&(e.response={...t,status:499,statusText:`Request aborted`}),Promise.reject(e)},`abortErrorInterceptor`),Me=7.5,Ne={mainRatelimit:25};let Pe=function(e){return e.incr=`incr`,e}({}),F=function(e){return e.RateLimiterReleaseRequestFailed=`RateLimiterReleaseRequestFailed`,e.RateLimitOrConcurrencyManagerNotInitialized=`RateLimitOrConcurrencyManagerNotInitialized`,e.InterceptorContextNotPresent=`InterceptorContextNotPresent`,e.InterceptorMaxWaitTimeExceeded=`InterceptorMaxWaitTimeExceeded`,e}({});const createAxiosError=(e,t,n,r)=>{let i=Error(e);return i.config={...t,headers:{}},i.code=n,i.response=r,i.isAxiosError=!0,i},abortableDelay=(e,t,n)=>{let r=t.signal;return r?r.aborted?Promise.reject(createAxiosError(`Request aborted`,t,`ERR_CANCELED`,n)):new Promise((i,a)=>{let o=!1,s,c=createAxiosError(`Request aborted`,t,`ERR_CANCELED`,n),cleanup=()=>{if(!o){o=!0,s&&(0,f.clearTimeout)(s);try{r.removeEventListener?.(`abort`,onAbort)}catch{}}},onAbort=()=>{cleanup(),a(c)},onTimeout=()=>{cleanup(),i()};try{r.addEventListener?.(`abort`,onAbort,{once:!0})}catch{s=setTimeout(()=>{i()},e);return}if(r.aborted){cleanup(),a(c);return}s=setTimeout(onTimeout,e)}):new Promise(t=>setTimeout(t,e))},Fe=`checkConcurrencyInterceptor`,checkConcurrencyInterceptor=({logger:e,context:t,requestConfig:n,concurrencyManager:r,rateLimitManager:i})=>__name(async a=>{if(a.signal?.aborted)return Promise.reject(createAxiosError(`Request aborted`,a,`ERR_CANCELED`));if((0,o.isMissing)(t))e?.warning({category:`HttpClient`,message:`No context for this request - that doesn't seem right.`,context:{interceptor:Fe,...a,httpsAgent:void 0,headers:void 0,hasContext:(0,o.notMissing)(t),hasConfig:(0,o.notMissing)(a)},code:F.InterceptorContextNotPresent});else if((0,o.isMissing)(i)||(0,o.isMissing)(r))e?.error({category:`HttpClient`,message:`RateLimitManager or ConcurrencyManager is not initialized`,context:{interceptor:Fe,...a,httpsAgent:void 0,headers:void 0,rateLimitManagerInitialized:(0,o.notMissing)(i),concurrencyManagerInitialized:(0,o.notMissing)(r)},code:F.RateLimitOrConcurrencyManagerNotInitialized});else if((0,o.notMissing)(t.provider)&&(0,o.notMissing)(t.accountSecureId)){let o=(0,d.randomUUID)(),{provider:s,accountSecureId:c}=t,l=n?.rateLimits??Ne,u=n?.concurrency??Ee,f=await i.getDynamicMaxWaitTime(l,u,a.url),register=async()=>r.registerRequest(`${c}-${s}`,u,o,a.url),p,m=0;for(;m<=f;){let n=Math.floor(Date.now()/1e3),r=await i.getWaitTime(`${c}-${s}`,l,a.url)??0,o=Math.max(r-n,0);if(r===0){p=await register();break}if(await abortableDelay(o*1e3,a),m+=o,m>=f){p=await register(),e?.warning({category:`HttpClient`,message:`Max Wait Time Exceeded for ${s} - Account: ${c}`,context:{...t,interceptor:Fe,...a,httpsAgent:void 0,headers:void 0,dynamicMaxWaitTime:f},code:F.InterceptorMaxWaitTimeExceeded});break}}return{...a,requestMetadata:p}}return a},`checkConcurrencyInterceptor`),Ie=1,Le=10,Re=5,ze=3250368e4,I=1e3,Be=/^\d+(\.\d+)?$/,Ve=1e3,adjustUnixTimestamp=e=>e<3250368e4?e*I:e;var He=__commonJSMin(((e,t)=>{function _extends(){return t.exports=_extends=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)({}).hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},t.exports.__esModule=!0,t.exports.default=t.exports,_extends.apply(null,arguments)}t.exports=_extends,t.exports.__esModule=!0,t.exports.default=t.exports})),Ue={epsilon:1e-12,matrix:`Matrix`,number:`number`,precision:64,predictable:!1,randomSeed:null};function isNumber$1(e){return typeof e==`number`}__name(isNumber$1,`isNumber`);function isBigNumber(e){return!e||typeof e!=`object`||typeof e.constructor!=`function`?!1:e.isBigNumber===!0&&typeof e.constructor.prototype==`object`&&e.constructor.prototype.isBigNumber===!0||typeof e.constructor.isDecimal==`function`&&e.constructor.isDecimal(e)===!0}function isComplex(e){return e&&typeof e==`object`&&Object.getPrototypeOf(e).isComplex===!0||!1}function isFraction(e){return e&&typeof e==`object`&&Object.getPrototypeOf(e).isFraction===!0||!1}function isUnit(e){return e&&e.constructor.prototype.isUnit===!0||!1}function isString(e){return typeof e==`string`}var L=Array.isArray;function isMatrix(e){return e&&e.constructor.prototype.isMatrix===!0||!1}function isCollection(e){return Array.isArray(e)||isMatrix(e)}function isDenseMatrix(e){return e&&e.isDenseMatrix&&e.constructor.prototype.isMatrix===!0||!1}function isSparseMatrix(e){return e&&e.isSparseMatrix&&e.constructor.prototype.isMatrix===!0||!1}function isRange(e){return e&&e.constructor.prototype.isRange===!0||!1}function isIndex(e){return e&&e.constructor.prototype.isIndex===!0||!1}function isBoolean(e){return typeof e==`boolean`}function isResultSet(e){return e&&e.constructor.prototype.isResultSet===!0||!1}function isHelp(e){return e&&e.constructor.prototype.isHelp===!0||!1}function isFunction(e){return typeof e==`function`}function isDate(e){return e instanceof Date}function isRegExp(e){return e instanceof RegExp}function isObject$2(e){return!!(e&&typeof e==`object`&&e.constructor===Object&&!isComplex(e)&&!isFraction(e))}__name(isObject$2,`isObject`);function isNull(e){return e===null}function isUndefined(e){return e===void 0}function isAccessorNode(e){return e&&e.isAccessorNode===!0&&e.constructor.prototype.isNode===!0||!1}function isArrayNode(e){return e&&e.isArrayNode===!0&&e.constructor.prototype.isNode===!0||!1}function isAssignmentNode(e){return e&&e.isAssignmentNode===!0&&e.constructor.prototype.isNode===!0||!1}function isBlockNode(e){return e&&e.isBlockNode===!0&&e.constructor.prototype.isNode===!0||!1}function isConditionalNode(e){return e&&e.isConditionalNode===!0&&e.constructor.prototype.isNode===!0||!1}function isConstantNode(e){return e&&e.isConstantNode===!0&&e.constructor.prototype.isNode===!0||!1}function isFunctionAssignmentNode(e){return e&&e.isFunctionAssignmentNode===!0&&e.constructor.prototype.isNode===!0||!1}function isFunctionNode(e){return e&&e.isFunctionNode===!0&&e.constructor.prototype.isNode===!0||!1}function isIndexNode(e){return e&&e.isIndexNode===!0&&e.constructor.prototype.isNode===!0||!1}function isNode(e){return e&&e.isNode===!0&&e.constructor.prototype.isNode===!0||!1}function isObjectNode(e){return e&&e.isObjectNode===!0&&e.constructor.prototype.isNode===!0||!1}function isOperatorNode(e){return e&&e.isOperatorNode===!0&&e.constructor.prototype.isNode===!0||!1}function isParenthesisNode(e){return e&&e.isParenthesisNode===!0&&e.constructor.prototype.isNode===!0||!1}function isRangeNode(e){return e&&e.isRangeNode===!0&&e.constructor.prototype.isNode===!0||!1}function isRelationalNode(e){return e&&e.isRelationalNode===!0&&e.constructor.prototype.isNode===!0||!1}function isSymbolNode(e){return e&&e.isSymbolNode===!0&&e.constructor.prototype.isNode===!0||!1}function isChain(e){return e&&e.constructor.prototype.isChain===!0||!1}function typeOf(e){var t=typeof e;return t===`object`?e===null?`null`:isBigNumber(e)?`BigNumber`:e.constructor&&e.constructor.name?e.constructor.name:`Object`:t}function clone$2(e){var t=typeof e;if(t===`number`||t===`string`||t===`boolean`||e==null)return e;if(typeof e.clone==`function`)return e.clone();if(Array.isArray(e))return e.map(function(e){return clone$2(e)});if(e instanceof Date)return new Date(e.valueOf());if(isBigNumber(e))return e;if(isObject$2(e))return mapObject(e,clone$2);throw TypeError(`Cannot clone: unknown type of value (value: ${e})`)}__name(clone$2,`clone`);function mapObject(e,t){var n={};for(var r in e)hasOwnProperty(e,r)&&(n[r]=t(e[r]));return n}function deepStrictEqual(e,t){var n,r,i;if(Array.isArray(e)){if(!Array.isArray(t)||e.length!==t.length)return!1;for(r=0,i=e.length;r<i;r++)if(!deepStrictEqual(e[r],t[r]))return!1;return!0}else if(typeof e==`function`)return e===t;else if(e instanceof Object){if(Array.isArray(t)||!(t instanceof Object))return!1;for(n in e)if(!(n in t)||!deepStrictEqual(e[n],t[n]))return!1;for(n in t)if(!(n in e))return!1;return!0}else return e===t}function hasOwnProperty(e,t){return e&&Object.hasOwnProperty.call(e,t)}function pickShallow(e,t){for(var n={},r=0;r<t.length;r++){var i=t[r],a=e[i];a!==void 0&&(n[i]=a)}return n}var We=[`Matrix`,`Array`],Ge=[`number`,`BigNumber`,`Fraction`],Ke=__toESM(He(),1),qe=__name(function config$2(e){if(e)throw Error(`The global config is readonly.
97
+ `};var ConcurrencyManager=class extends ScriptManager{constructor(...e){super(...e),this.hasValidRedisConfig=!1,this.subscriptionManager=null,this.queueManager=null,this.name=`ConcurrencyManager`}async additionalInitialization(e){if(this.generateUUID=e??o.generateRequestId,this.subscriptionManager=new SubscriptionManager({config:this.redisClientConfig,logger:this.logger,instantiator:this.name,subscriptionTTL:12e4,truncateThreshold:1e4,truncationPercentage:1}),await this.subscriptionManager?.initialize(),this.hasValidRedisConfig=await this.checkRedisEventsEmit(),!this.hasValidRedisConfig)throw Error(`Failed to validate Redis configuration for ConcurrencyManager`);if((0,o.isMissing)(this.getSingleton))throw Error(`getSingleton method not available`);this.queueManager=this.getSingleton?.(QueueManager)}async addTestSubscription(e,t,n,r){return(0,o.isMissing)(this.subscriptionManager)?!1:this.subscriptionManager.subscribe(e,async(i,a)=>{a===e&&i.includes(t)&&(n.push(a),n.includes(ye)&&n.includes(be)&&n.includes(A)&&(r(),n.length=0))})}async checkRedisEventsEmit(){let e=[],t=Date.now(),checkHandler=async(n,r)=>{let checkCallback=()=>{let r=Date.now()-t;this.logger?.info({category:this.name,message:`All Redis events received successfully.`,context:{receivedEventCount:e.length,elapsedTimeMs:r}}),n(!0)},i=`config_check_test_key:${this.generateUUID()}`;if(!(await Promise.all(Ce.map(async t=>this.addTestSubscription(t,i,e,checkCallback)))).every(Boolean))return r(Error(`Failed to subscribe to event channels.`));await this.cacheClient?.setData({key:i,value:`test`,cacheTTL:1}),setTimeout(()=>{let e=Date.now()-t;r(Error(`Timeout waiting for Redis events to emit after ${e}ms.`))},2e4)};try{return await new Promise(checkHandler)}catch(n){let r=Date.now()-t;return this.logger?.error({category:this.name,message:`Redis events failed to emit.`,context:{receivedEventCount:e.length,elapsedTimeMs:r,reason:n?.message},error:n,code:j.ConcurrencyManagerRedisEventsEmitError}),!1}}isRedisConfigured(){return this.hasValidRedisConfig}async subscribeToLeaseExpiry(e,t){return await this.subscriptionManager?.subscribe(A,async(n,r)=>{if(r===A&&n.includes(t)&&n.includes(e))try{await this.releaseRequest(e,t)}catch(n){this.logger?.error({message:`Failed to release request on lease expiry - Redis may not be ready`,category:this.name,context:{requestId:e,targetConcurrencyKey:t},error:n,code:j.ConcurrencyManagerReleaseRequestFailed})}})??!1}async subscribeToSetRemoval(e,t){return await this.subscriptionManager?.subscribe(xe,async(n,r)=>{if(r===xe&&n.includes(e))try{await this.executeScript(M.publishNextItem,[t],[])}catch(n){this.logger?.error({message:`Failed to publish next item from queue - Redis may not be ready`,category:this.name,context:{queueKey:t,targetConcurrencyKey:e},error:n,code:j.ConcurrencyManagerPublishNextItemFailed})}})??!1}async registerRequest(e,t,n,r){let i=`concurrency:${e}`,a=`queue:${e}`,s=t.subPools?.find(e=>e.urlPattern instanceof RegExp?e.urlPattern.test(r??``):r?.includes(e.urlPattern))?.subPoolKey,c=(0,o.notMissing)(s)?`${i}-${s}`:i,{mainMaxConcurrency:l,subPools:u}=t,d=[{key:i,maxConcurrency:l},...u?.map(e=>{let{subPoolKey:t,maxConcurrency:n}=e;return{key:`${i}-${t}`,maxConcurrency:n}})??[]],f=d.map(e=>e.key),p=d.map(e=>e.maxConcurrency),[m,h]=await Promise.all([this.subscribeToLeaseExpiry(n,c),this.subscribeToSetRemoval(c,a)]),g={requestId:n,targetConcurrencyKey:c,leaseSubscription:m,setRemovalSubscription:h,queueKey:a},_=await this.executeScript(M.tryConcurrency,[n,c,a,...f],[`60`,l.toString(),`90`,...p.map(String)]);if((0,o.notMissing)(_)&&_[0])return{...g,joinCondition:`optimistic`,failureReason:_[1]};let v=0,y=[];for(;v<5;){let e=v>1,t=await this.queueManager?.joinAndWaitTurn(a,n,e,async(e,t)=>await this.executeScript(M.tryConcurrency,[n,c,a,...f],[`60`,l.toString(),`90`,...p.map(String)]),!1),r=(0,o.notMissing)(t)?t[0]:!1,i=(0,o.notMissing)(t)?t[1]:``;if((0,o.notMissing)(i)&&i!==``&&y.push(i),v++,r)return v>1&&this.logger?.warning({category:this.name,message:`Register request succeeded after ${v} attempts.`,context:{...g,registerAttempts:v,joinCondition:`attempts`,failureMessages:y}}),{...g,joinCondition:`attempts`};await(0,o.delay)((0,o.exponentialBackoffInMS)(v,100))}return this.logger?.error({category:this.name,message:`Failed to register request after ${v} attempts.`,context:{...g,registerAttempts:v,joinCondition:`failed`,failureMessages:y},code:j.ConcurrencyManagerRegistrationFailed}),{...g,joinCondition:`failed`}}async releaseRequest(e,t){return(0,o.isString)(t)&&(0,o.isString)(e)?!!await this.executeScript(M.removeFromSet,[t],[e]):!1}isReady(){return this.subscriptionManager!==null&&this.cacheClient!==null&&this.scriptMap!==null&&this.scriptMap.size>0&&this.hasValidRedisConfig}close(){this.subscriptionManager?.close(),this.queueManager?.close(),this.scriptMap?.clear(),this.hasValidRedisConfig=!1}};const Oe={100:`Continue`,101:`Switching Protocols`,102:`Processing`,200:`OK`,201:`Created`,202:`Accepted`,203:`Non-Authoritative Information`,204:`No Content`,205:`Reset Content`,206:`Partial Content`,207:`Multi-Status`,208:`Already Reported`,226:`IM Used`,300:`Multiple Choices`,301:`Moved Permanently`,302:`Found`,303:`See Other`,304:`Not Modified`,305:`Use Proxy`,307:`Temporary Redirect`,308:`Permanent Redirect`,400:`Bad request`,401:`Unauthorized`,402:`Payment Required`,403:`Forbidden`,404:`Not Found`,405:`Method Not Allowed`,406:`Not Acceptable`,407:`Proxy Authentication Required`,408:`Request Timeout`,409:`Conflict`,410:`Gone`,411:`Length Required`,412:`Precondition Failed`,413:`Payload Too Large`,414:`URI Too Long`,415:`Unsupported Media Type`,416:`Range Not Satisfiable`,417:`Expectation Failed`,418:`I'm a teapot`,421:`Misdirected Request`,422:`Unprocessable Entity`,423:`Locked`,424:`Failed Dependency`,425:`Too Early`,426:`Upgrade Required`,428:`Precondition Required`,429:`Too many Requests`,431:`Request Header Fields Too Large`,451:`Unavailable For Legal Reasons`,499:`Client Closed Request`,500:`Internal server error`,501:`Not Implemented`,502:`Bad Gateway`,503:`Unavailable`,504:`Gateway Timeout`,505:`HTTP Version Not Supported`,506:`Variant Also Negotiates`,507:`Insufficient Storage`,508:`Loop Detected`,510:`Not Extended`,511:`Network Authentication Required`},translateCustomError=(e,t)=>{if((0,o.isMissing)(t)||t?.length===0||(0,o.isMissing)(e))return{data:e.data,status:e.status,headers:e.headers,requestUrl:e.requestUrl,responseType:e.responseType,responseTime:e.responseTime,message:e.message};let n=t?.filter(t=>t.receivedStatus===e.status);if(n?.length)for(let t of n){let n=t.condition,r=(0,c.safeEvaluate)(n,e)===!0;if((0,o.isMissing)(n)||r)return{data:e.data,headers:e.headers,requestUrl:e.requestUrl,responseType:e.responseType,responseTime:e.responseTime,status:t.targetStatus,message:t?.message??Oe[t.targetStatus]??`Unknown error`}}return e},ke=(0,o.zStrictObject)({receivedStatus:o.z.number(),targetStatus:o.z.number(),message:o.z.string().optional(),condition:o.z.string().optional()});var N=class HttpResponseError extends Error{constructor(e,t){super(t),this.name=`HttpResponseError`,this.response=e,this.message=t??`HTTP error: ${e.status}`,Error.captureStackTrace&&Error.captureStackTrace(this,HttpResponseError)}toString(){let e=this.message?`: ${this.message}`:``;return`${this.name} [${this.response.status}]${e}`}};const isHttpResponseError=e=>e instanceof Error&&e.name===`HttpResponseError`&&`response`in e&&typeof e.response==`object`&&e.response!==null,safeSerialize=(e,t=new WeakSet)=>{if(typeof e!=`object`||!e)return typeof e==`bigint`?e.toString():e;if(t.has(e))return`[Circular Reference]`;if(e instanceof Date)return e.toISOString();if(Array.isArray(e)){t.add(e);let n=e.map(e=>safeSerialize(e,t));return t.delete(e),n}let n=e,r={};t.add(n);for(let[e,i]of Object.entries(n))r[e]=safeSerialize(i,t);return t.delete(n),r},serializeHttpResponseError=e=>{if(isHttpResponseError(e)){let t=e.response;return{name:e.name,message:e.message,stack:e.stack,response:safeSerialize(t)}}return e instanceof Error?{name:e.name,message:e.message,stack:e.stack}:{error:String(e)}};var HttpTransportFactory=class{static createInstance({interceptors:e,instanceConfig:t,httpsAgentConfig:n,logger:r,context:i,requestConfig:a,concurrencyManager:o,rateLimitManager:s}){let c=new u.default.Agent(n),d=l.default.create({...t,httpsAgent:c});if(e){let t={axiosInstance:d,logger:r,context:i,requestConfig:a,concurrencyManager:o,rateLimitManager:s};this.applyInterceptors(d,e,t)}return d}static applyInterceptors(e,t,n){let{requestConfigs:r=[],responseConfigs:i=[]}=t;[{type:`request`,configs:r},{type:`response`,configs:i}].forEach(t=>{let{configs:r,type:i}=t;r.forEach(t=>{let{onFulfilled:r,onRejected:a,options:o}=t;if(i===`request`){let t=[this.resolveInterceptorInstance(r,n),this.resolveInterceptorInstance(a,n),o];e.interceptors.request.use(...t)}if(i===`response`){let t=[this.resolveInterceptorInstance(r,n),this.resolveInterceptorInstance(a,n)];e.interceptors.response.use(...t)}})})}static resolveInterceptorInstance(e,t){return(0,o.notMissing)(e)&&(0,o.isFunction)(e)&&typeof e(t)==`function`?e(t):e??null}};const Ae=300;var P=class InstanceManager{static{this.instance=null}static{this.logger=null}constructor(e){this.dataStore=null,this.initialize(e)}static getInstance(e){return(0,o.isMissing)(InstanceManager.instance)&&(InstanceManager.instance=new InstanceManager(e)),InstanceManager.instance}initialize(e){this.dataStore=new MemoryStore({instantiator:InstanceManager.name,logger:e,typeGuard:e=>(0,o.notMissing)(e)}),InstanceManager.logger=e??null,InstanceManager.logger?.info({category:InstanceManager.name,message:`InstanceManager initialized.`})}async get(e){return this.ensureReady(),await InstanceManager.getInstance().dataStore?.getData(e)??null}async set(e,t,n){return this.ensureReady(),await InstanceManager.getInstance().dataStore?.setData({key:e,value:t,cacheTTL:(0,o.notMissing)(n)?n:300})??!1}ensureReady(){this.isReady()||this.initialize()}isReady(){return(0,o.notMissing)(this?.dataStore)}close(){let e=this.dataStore;InstanceManager.instance=null,this.dataStore=null,e?.close?.()}};const je=P.getInstance(),abortErrorInterceptor=()=>__name(e=>{let{response:t}=e;return e?.code===`ERR_CANCELED`&&(e.response={...t,status:499,statusText:`Request aborted`}),Promise.reject(e)},`abortErrorInterceptor`),Me=7.5,Ne={mainRatelimit:25};let Pe=function(e){return e.incr=`incr`,e}({}),F=function(e){return e.RateLimiterReleaseRequestFailed=`RateLimiterReleaseRequestFailed`,e.RateLimitOrConcurrencyManagerNotInitialized=`RateLimitOrConcurrencyManagerNotInitialized`,e.InterceptorContextNotPresent=`InterceptorContextNotPresent`,e.InterceptorMaxWaitTimeExceeded=`InterceptorMaxWaitTimeExceeded`,e}({});const createAxiosError=(e,t,n,r)=>{let i=Error(e);return i.config={...t,headers:{}},i.code=n,i.response=r,i.isAxiosError=!0,i},abortableDelay=(e,t,n)=>{let r=t.signal;return r?r.aborted?Promise.reject(createAxiosError(`Request aborted`,t,`ERR_CANCELED`,n)):new Promise((i,a)=>{let o=!1,s,c=createAxiosError(`Request aborted`,t,`ERR_CANCELED`,n),cleanup=()=>{if(!o){o=!0,s&&(0,f.clearTimeout)(s);try{r.removeEventListener?.(`abort`,onAbort)}catch{}}},onAbort=()=>{cleanup(),a(c)},onTimeout=()=>{cleanup(),i()};try{r.addEventListener?.(`abort`,onAbort,{once:!0})}catch{s=setTimeout(()=>{i()},e);return}if(r.aborted){cleanup(),a(c);return}s=setTimeout(onTimeout,e)}):new Promise(t=>setTimeout(t,e))},Fe=`checkConcurrencyInterceptor`,checkConcurrencyInterceptor=({logger:e,context:t,requestConfig:n,concurrencyManager:r,rateLimitManager:i})=>__name(async a=>{if(a.signal?.aborted)return Promise.reject(createAxiosError(`Request aborted`,a,`ERR_CANCELED`));if((0,o.isMissing)(t))e?.warning({category:`HttpClient`,message:`No context for this request - that doesn't seem right.`,context:{interceptor:Fe,...a,httpsAgent:void 0,headers:void 0,hasContext:(0,o.notMissing)(t),hasConfig:(0,o.notMissing)(a)},code:F.InterceptorContextNotPresent});else if((0,o.isMissing)(i)||(0,o.isMissing)(r))e?.error({category:`HttpClient`,message:`RateLimitManager or ConcurrencyManager is not initialized`,context:{interceptor:Fe,...a,httpsAgent:void 0,headers:void 0,rateLimitManagerInitialized:(0,o.notMissing)(i),concurrencyManagerInitialized:(0,o.notMissing)(r)},code:F.RateLimitOrConcurrencyManagerNotInitialized});else if((0,o.notMissing)(t.provider)&&(0,o.notMissing)(t.accountSecureId)){let o=(0,d.randomUUID)(),{provider:s,accountSecureId:c}=t,l=n?.rateLimits??Ne,u=n?.concurrency??Ee,f=await i.getDynamicMaxWaitTime(l,u,a.url),register=async()=>r.registerRequest(`${c}-${s}`,u,o,a.url),p,m=0;for(;m<=f;){let n=Math.floor(Date.now()/1e3),r=await i.getWaitTime(`${c}-${s}`,l,a.url)??0,o=Math.max(r-n,0);if(r===0){p=await register();break}if(await abortableDelay(o*1e3,a),m+=o,m>=f){p=await register(),e?.warning({category:`HttpClient`,message:`Max Wait Time Exceeded for ${s} - Account: ${c}`,context:{...t,interceptor:Fe,...a,httpsAgent:void 0,headers:void 0,dynamicMaxWaitTime:f},code:F.InterceptorMaxWaitTimeExceeded});break}}return{...a,requestMetadata:p}}return a},`checkConcurrencyInterceptor`),Ie=1,Le=10,Re=5,ze=3250368e4,I=1e3,Be=/^\d+(\.\d+)?$/,Ve=1e3,adjustUnixTimestamp=e=>e<3250368e4?e*I:e;var He=__commonJSMin(((e,t)=>{function _extends(){return t.exports=_extends=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)({}).hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},t.exports.__esModule=!0,t.exports.default=t.exports,_extends.apply(null,arguments)}t.exports=_extends,t.exports.__esModule=!0,t.exports.default=t.exports})),Ue={epsilon:1e-12,matrix:`Matrix`,number:`number`,precision:64,predictable:!1,randomSeed:null};function isNumber$1(e){return typeof e==`number`}__name(isNumber$1,`isNumber`);function isBigNumber(e){return!e||typeof e!=`object`||typeof e.constructor!=`function`?!1:e.isBigNumber===!0&&typeof e.constructor.prototype==`object`&&e.constructor.prototype.isBigNumber===!0||typeof e.constructor.isDecimal==`function`&&e.constructor.isDecimal(e)===!0}function isComplex(e){return e&&typeof e==`object`&&Object.getPrototypeOf(e).isComplex===!0||!1}function isFraction(e){return e&&typeof e==`object`&&Object.getPrototypeOf(e).isFraction===!0||!1}function isUnit(e){return e&&e.constructor.prototype.isUnit===!0||!1}function isString$1(e){return typeof e==`string`}__name(isString$1,`isString`);var L=Array.isArray;function isMatrix(e){return e&&e.constructor.prototype.isMatrix===!0||!1}function isCollection(e){return Array.isArray(e)||isMatrix(e)}function isDenseMatrix(e){return e&&e.isDenseMatrix&&e.constructor.prototype.isMatrix===!0||!1}function isSparseMatrix(e){return e&&e.isSparseMatrix&&e.constructor.prototype.isMatrix===!0||!1}function isRange(e){return e&&e.constructor.prototype.isRange===!0||!1}function isIndex(e){return e&&e.constructor.prototype.isIndex===!0||!1}function isBoolean(e){return typeof e==`boolean`}function isResultSet(e){return e&&e.constructor.prototype.isResultSet===!0||!1}function isHelp(e){return e&&e.constructor.prototype.isHelp===!0||!1}function isFunction(e){return typeof e==`function`}function isDate(e){return e instanceof Date}function isRegExp(e){return e instanceof RegExp}function isObject$2(e){return!!(e&&typeof e==`object`&&e.constructor===Object&&!isComplex(e)&&!isFraction(e))}__name(isObject$2,`isObject`);function isNull(e){return e===null}function isUndefined(e){return e===void 0}function isAccessorNode(e){return e&&e.isAccessorNode===!0&&e.constructor.prototype.isNode===!0||!1}function isArrayNode(e){return e&&e.isArrayNode===!0&&e.constructor.prototype.isNode===!0||!1}function isAssignmentNode(e){return e&&e.isAssignmentNode===!0&&e.constructor.prototype.isNode===!0||!1}function isBlockNode(e){return e&&e.isBlockNode===!0&&e.constructor.prototype.isNode===!0||!1}function isConditionalNode(e){return e&&e.isConditionalNode===!0&&e.constructor.prototype.isNode===!0||!1}function isConstantNode(e){return e&&e.isConstantNode===!0&&e.constructor.prototype.isNode===!0||!1}function isFunctionAssignmentNode(e){return e&&e.isFunctionAssignmentNode===!0&&e.constructor.prototype.isNode===!0||!1}function isFunctionNode(e){return e&&e.isFunctionNode===!0&&e.constructor.prototype.isNode===!0||!1}function isIndexNode(e){return e&&e.isIndexNode===!0&&e.constructor.prototype.isNode===!0||!1}function isNode(e){return e&&e.isNode===!0&&e.constructor.prototype.isNode===!0||!1}function isObjectNode(e){return e&&e.isObjectNode===!0&&e.constructor.prototype.isNode===!0||!1}function isOperatorNode(e){return e&&e.isOperatorNode===!0&&e.constructor.prototype.isNode===!0||!1}function isParenthesisNode(e){return e&&e.isParenthesisNode===!0&&e.constructor.prototype.isNode===!0||!1}function isRangeNode(e){return e&&e.isRangeNode===!0&&e.constructor.prototype.isNode===!0||!1}function isRelationalNode(e){return e&&e.isRelationalNode===!0&&e.constructor.prototype.isNode===!0||!1}function isSymbolNode(e){return e&&e.isSymbolNode===!0&&e.constructor.prototype.isNode===!0||!1}function isChain(e){return e&&e.constructor.prototype.isChain===!0||!1}function typeOf(e){var t=typeof e;return t===`object`?e===null?`null`:isBigNumber(e)?`BigNumber`:e.constructor&&e.constructor.name?e.constructor.name:`Object`:t}function clone$2(e){var t=typeof e;if(t===`number`||t===`string`||t===`boolean`||e==null)return e;if(typeof e.clone==`function`)return e.clone();if(Array.isArray(e))return e.map(function(e){return clone$2(e)});if(e instanceof Date)return new Date(e.valueOf());if(isBigNumber(e))return e;if(isObject$2(e))return mapObject(e,clone$2);throw TypeError(`Cannot clone: unknown type of value (value: ${e})`)}__name(clone$2,`clone`);function mapObject(e,t){var n={};for(var r in e)hasOwnProperty(e,r)&&(n[r]=t(e[r]));return n}function deepStrictEqual(e,t){var n,r,i;if(Array.isArray(e)){if(!Array.isArray(t)||e.length!==t.length)return!1;for(r=0,i=e.length;r<i;r++)if(!deepStrictEqual(e[r],t[r]))return!1;return!0}else if(typeof e==`function`)return e===t;else if(e instanceof Object){if(Array.isArray(t)||!(t instanceof Object))return!1;for(n in e)if(!(n in t)||!deepStrictEqual(e[n],t[n]))return!1;for(n in t)if(!(n in e))return!1;return!0}else return e===t}function hasOwnProperty(e,t){return e&&Object.hasOwnProperty.call(e,t)}function pickShallow(e,t){for(var n={},r=0;r<t.length;r++){var i=t[r],a=e[i];a!==void 0&&(n[i]=a)}return n}var We=[`Matrix`,`Array`],Ge=[`number`,`BigNumber`,`Fraction`],Ke=__toESM(He(),1),qe=__name(function config$2(e){if(e)throw Error(`The global config is readonly.
98
98
  Please create a mathjs instance if you want to change the default configuration.
99
99
  Example:
100
100
 
101
101
  import { create, all } from 'mathjs';
102
102
  const mathjs = create(all);
103
103
  mathjs.config({ number: 'BigNumber' });
104
- `);return Object.freeze(Ue)},`config`);(0,Ke.default)(qe,Ue,{MATRIX_OPTIONS:We,NUMBER_OPTIONS:Ge});var Je=__commonJSMin(((e,t)=>{(function(n,r){typeof e==`object`&&t!==void 0?t.exports=r():typeof define==`function`&&define.amd?define(r):(n=typeof globalThis<`u`?globalThis:n||self,n.typed=r())})(e,(function(){"use strict";function ok(){return!0}function notOk(){return!1}function undef(){}let e=`Argument is not a typed-function.`;function create(){function isPlainObject$1(e){return typeof e==`object`&&!!e&&e.constructor===Object}__name(isPlainObject$1,`isPlainObject`);let t=[{name:`number`,test:function(e){return typeof e==`number`}},{name:`string`,test:function(e){return typeof e==`string`}},{name:`boolean`,test:function(e){return typeof e==`boolean`}},{name:`Function`,test:function(e){return typeof e==`function`}},{name:`Array`,test:Array.isArray},{name:`Date`,test:function(e){return e instanceof Date}},{name:`RegExp`,test:function(e){return e instanceof RegExp}},{name:`Object`,test:isPlainObject$1},{name:`null`,test:function(e){return e===null}},{name:`undefined`,test:function(e){return e===void 0}}],n={name:`any`,test:ok,isAny:!0},r,i,a=0,o={createCount:0};function findType(e){let t=r.get(e);if(t)return t;let n=`Unknown type "`+e+`"`,a=e.toLowerCase(),o;for(o of i)if(o.toLowerCase()===a){n+=`. Did you mean "`+o+`" ?`;break}throw TypeError(n)}function addTypes(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:`any`,n=t?findType(t).index:i.length,a=[];for(let t=0;t<e.length;++t){if(!e[t]||typeof e[t].name!=`string`||typeof e[t].test!=`function`)throw TypeError(`Object with properties {name: string, test: function} expected`);let i=e[t].name;if(r.has(i))throw TypeError(`Duplicate type name "`+i+`"`);a.push(i),r.set(i,{name:i,test:e[t].test,isAny:e[t].isAny,index:n+t,conversionsTo:[]})}let o=i.slice(n);i=i.slice(0,n).concat(a).concat(o);for(let e=n+a.length;e<i.length;++e)r.get(i[e]).index=e}function clear(){r=new Map,i=[],a=0,addTypes([n],!1)}clear(),addTypes(t);function clearConversions(){let e;for(e of i)r.get(e).conversionsTo=[];a=0}function findTypeNames(e){let t=i.filter(t=>{let n=r.get(t);return!n.isAny&&n.test(e)});return t.length?t:[`any`]}function isTypedFunction(e){return e&&typeof e==`function`&&`_typedFunctionData`in e}function findSignature(t,n,r){if(!isTypedFunction(t))throw TypeError(e);let i=r&&r.exact,a=parseSignature(Array.isArray(n)?n.join(`,`):n),o=stringifyParams(a);if(!i||o in t.signatures){let e=t._typedFunctionData.signatureMap.get(o);if(e)return e}let s=a.length,c;if(i){c=[];let e;for(e in t.signatures)c.push(t._typedFunctionData.signatureMap.get(e))}else c=t._typedFunctionData.signatures;for(let e=0;e<s;++e){let t=a[e],n=[],r;for(r of c){let i=getParamAtIndex(r.params,e);if(!(!i||t.restParam&&!i.restParam)){if(!i.hasAny){let e=paramTypeSet(i);if(t.types.some(t=>!e.has(t.name)))continue}n.push(r)}}if(c=n,c.length===0)break}let l;for(l of c)if(l.params.length<=s)return l;throw TypeError(`Signature not found (signature: `+(t.name||`unnamed`)+`(`+stringifyParams(a,`, `)+`))`)}function find(e,t,n){return findSignature(e,t,n).implementation}function convert(e,t){let n=findType(t);if(n.test(e))return e;let r=n.conversionsTo;if(r.length===0)throw Error(`There are no conversions to `+t+` defined.`);for(let t=0;t<r.length;t++)if(findType(r[t].from).test(e))return r[t].convert(e);throw Error(`Cannot convert `+e+` to `+t)}function stringifyParams(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:`,`;return e.map(e=>e.name).join(t)}function parseParam(e){let t=e.indexOf(`...`)===0,n=(t?e.length>3?e.slice(3):`any`:e).split(`|`).map(e=>findType(e.trim())),r=!1,i=t?`...`:``;return{types:n.map(function(e){return r=e.isAny||r,i+=e.name+`|`,{name:e.name,typeIndex:e.index,test:e.test,isAny:e.isAny,conversion:null,conversionIndex:-1}}),name:i.slice(0,-1),hasAny:r,hasConversion:!1,restParam:t}}function expandParam(e){let t=availableConversions(e.types.map(e=>e.name)),n=e.hasAny,r=e.name,i=t.map(function(e){let t=findType(e.from);return n=t.isAny||n,r+=`|`+e.from,{name:e.from,typeIndex:t.index,test:t.test,isAny:t.isAny,conversion:e,conversionIndex:e.index}});return{types:e.types.concat(i),name:r,hasAny:n,hasConversion:i.length>0,restParam:e.restParam}}function paramTypeSet(e){return e.typeSet||(e.typeSet=new Set,e.types.forEach(t=>e.typeSet.add(t.name))),e.typeSet}function parseSignature(e){let t=[];if(typeof e!=`string`)throw TypeError(`Signatures must be strings`);let n=e.trim();if(n===``)return t;let r=n.split(`,`);for(let e=0;e<r.length;++e){let n=parseParam(r[e].trim());if(n.restParam&&e!==r.length-1)throw SyntaxError(`Unexpected rest parameter "`+r[e]+`": only allowed for the last parameter`);if(n.types.length===0)return null;t.push(n)}return t}function hasRestParam(e){let t=last(e);return t?t.restParam:!1}function compileTest(e){if(!e||e.types.length===0)return ok;if(e.types.length===1)return findType(e.types[0].name).test;if(e.types.length===2){let t=findType(e.types[0].name).test,n=findType(e.types[1].name).test;return function or(e){return t(e)||n(e)}}else{let t=e.types.map(function(e){return findType(e.name).test});return function or(e){for(let n=0;n<t.length;n++)if(t[n](e))return!0;return!1}}}function compileTests(e){let t,n,r;if(hasRestParam(e)){t=initial(e).map(compileTest);let n=t.length,r=compileTest(last(e)),testRestParam=function(e){for(let t=n;t<e.length;t++)if(!r(e[t]))return!1;return!0};return function testArgs(e){for(let n=0;n<t.length;n++)if(!t[n](e[n]))return!1;return testRestParam(e)&&e.length>=n+1}}else if(e.length===0)return function testArgs(e){return e.length===0};else if(e.length===1)return n=compileTest(e[0]),function testArgs(e){return n(e[0])&&e.length===1};else if(e.length===2)return n=compileTest(e[0]),r=compileTest(e[1]),function testArgs(e){return n(e[0])&&r(e[1])&&e.length===2};else return t=e.map(compileTest),function testArgs(e){for(let n=0;n<t.length;n++)if(!t[n](e[n]))return!1;return e.length===t.length}}function getParamAtIndex(e,t){return t<e.length?e[t]:hasRestParam(e)?last(e):null}function getTypeSetAtIndex(e,t){let n=getParamAtIndex(e,t);return n?paramTypeSet(n):new Set}function isExactType(e){return e.conversion===null||e.conversion===void 0}function mergeExpectedParams(e,t){let n=new Set;return e.forEach(e=>{let r=getTypeSetAtIndex(e.params,t),i;for(i of r)n.add(i)}),n.has(`any`)?[`any`]:Array.from(n)}function createError(e,t,n){let r,i,a=e||`unnamed`,o=n,s;for(s=0;s<t.length;s++){let e=[];if(o.forEach(n=>{let r=compileTest(getParamAtIndex(n.params,s));(s<n.params.length||hasRestParam(n.params))&&r(t[s])&&e.push(n)}),e.length===0){if(i=mergeExpectedParams(o,s),i.length>0){let e=findTypeNames(t[s]);return r=TypeError(`Unexpected type of argument in function `+a+` (expected: `+i.join(` or `)+`, actual: `+e.join(` | `)+`, index: `+s+`)`),r.data={category:`wrongType`,fn:a,index:s,actual:e,expected:i},r}}else o=e}let c=o.map(function(e){return hasRestParam(e.params)?1/0:e.params.length});if(t.length<Math.min.apply(null,c))return i=mergeExpectedParams(o,s),r=TypeError(`Too few arguments in function `+a+` (expected: `+i.join(` or `)+`, index: `+t.length+`)`),r.data={category:`tooFewArgs`,fn:a,index:t.length,expected:i},r;let l=Math.max.apply(null,c);if(t.length>l)return r=TypeError(`Too many arguments in function `+a+` (expected: `+l+`, actual: `+t.length+`)`),r.data={category:`tooManyArgs`,fn:a,index:t.length,expectedLength:l},r;let u=[];for(let e=0;e<t.length;++e)u.push(findTypeNames(t[e]).join(`|`));return r=TypeError(`Arguments of type "`+u.join(`, `)+`" do not match any of the defined signatures of function `+a+`.`),r.data={category:`mismatch`,actual:u},r}function getLowestTypeIndex(e){let t=i.length+1;for(let n=0;n<e.types.length;n++)t=Math.min(t,e.types[n].typeIndex);return t}function getLowestConversionIndex(e){let t=a+1;for(let n=0;n<e.types.length;n++)isExactType(e.types[n])||(t=Math.min(t,e.types[n].conversionIndex));return t}function compareParams(e,t){if(e.hasAny){if(!t.hasAny)return .1}else if(t.hasAny)return-.1;if(e.restParam){if(!t.restParam)return .01}else if(t.restParam)return-.01;let n=getLowestTypeIndex(e)-getLowestTypeIndex(t);if(n<0)return-.001;if(n>0)return .001;let r=getLowestConversionIndex(e),i=getLowestConversionIndex(t);if(e.hasConversion){if(!t.hasConversion)return(1+r)*1e-6}else if(t.hasConversion)return-(1+i)*1e-6;let a=r-i;return a<0?-1e-7:a>0?1e-7:0}function compareSignatures(e,t){let n=e.params,r=t.params,i=last(n),a=last(r),o=hasRestParam(n),s=hasRestParam(r);if(o&&i.hasAny){if(!s||!a.hasAny)return 1e7}else if(s&&a.hasAny)return-1e7;let c=0,l=0,u;for(u of n)u.hasAny&&++c,u.hasConversion&&++l;let d=0,f=0;for(u of r)u.hasAny&&++d,u.hasConversion&&++f;if(c!==d)return(c-d)*1e6;if(o&&i.hasConversion){if(!s||!a.hasConversion)return 1e5}else if(s&&a.hasConversion)return-1e5;if(l!==f)return(l-f)*1e4;if(o){if(!s)return 1e3}else if(s)return-1e3;let p=(n.length-r.length)*(o?-100:100);if(p!==0)return p;let m=[],h=0;for(let e=0;e<n.length;++e){let t=compareParams(n[e],r[e]);m.push(t),h+=t}if(h!==0)return(h<0?-10:10)+h;let g,_=9,v=_/(m.length+1);for(g of m){if(g!==0)return(g<0?-_:_)+g;_-=v}return 0}function availableConversions(e){if(e.length===0)return[];let t=e.map(findType);if(e.length===1)return t[0].conversionsTo;let n=new Set(e),r=new Set;for(let e=0;e<t.length;++e)for(let i of t[e].conversionsTo)n.has(i.from)||r.add(i.from);let i=[];for(let e of r){let n=a+1,r=null;for(let i=0;i<t.length;++i)for(let a of t[i].conversionsTo)a.from===e&&a.index<n&&(n=a.index,r=a);i.push(r)}return i}function compileArgsPreprocessing(e,t){let n=t,r=``;if(e.some(e=>e.hasConversion)){let i=hasRestParam(e),a=e.map(compileArgConversion);r=a.map(e=>e.name).join(`;`),n=function convertArgs(){let e=[],n=i?arguments.length-1:arguments.length;for(let t=0;t<n;t++)e[t]=a[t](arguments[t]);return i&&(e[n]=arguments[n].map(a[n])),t.apply(this,e)}}let i=n;if(hasRestParam(e)){let t=e.length-1;i=function preprocessRestParams(){return n.apply(this,slice(arguments,0,t).concat([slice(arguments,t)]))}}return r&&Object.defineProperty(i,`name`,{value:r}),i}function compileArgConversion(e){let t,n,r,i,a=[],o=[],s=``;e.types.forEach(function(e){e.conversion&&(s+=e.conversion.from+`~>`+e.conversion.to+`,`,a.push(findType(e.conversion.from).test),o.push(e.conversion.convert))}),s=s?s.slice(0,-1):`pass`;let convertor=e=>e;switch(o.length){case 0:break;case 1:t=a[0],r=o[0],convertor=function convertArg(e){return t(e)?r(e):e};break;case 2:t=a[0],n=a[1],r=o[0],i=o[1],convertor=function convertArg(e){return t(e)?r(e):n(e)?i(e):e};break;default:convertor=function convertArg(e){for(let t=0;t<o.length;t++)if(a[t](e))return o[t](e);return e}}return Object.defineProperty(convertor,`name`,{value:s}),convertor}function splitParams(e){function _splitParams(e,t,n){if(t<e.length){let r=e[t],i=[];if(r.restParam){let e=r.types.filter(isExactType);e.length<r.types.length&&i.push({types:e,name:`...`+e.map(e=>e.name).join(`|`),hasAny:e.some(e=>e.isAny),hasConversion:!1,restParam:!0}),i.push(r)}else i=r.types.map(function(e){return{types:[e],name:e.name,hasAny:e.isAny,hasConversion:e.conversion,restParam:!1}});return flatMap(i,function(r){return _splitParams(e,t+1,n.concat([r]))})}else return[n]}return _splitParams(e,0,[])}function conflicting(e,t){let n=Math.max(e.length,t.length);for(let r=0;r<n;r++){let n=getTypeSetAtIndex(e,r),i=getTypeSetAtIndex(t,r),a=!1,o;for(o of i)if(n.has(o)){a=!0;break}if(!a)return!1}let r=e.length,i=t.length,a=hasRestParam(e),o=hasRestParam(t);return a?o?r===i:i>=r:o?r>=i:r===i}function clearResolutions(e){return e.map(e=>isReferToSelf(e)?referToSelf(e.referToSelf.callback):isReferTo(e)?makeReferTo(e.referTo.references,e.referTo.callback):e)}function collectResolutions(e,t,n){let r=[],i;for(i of e){let e=n[i];if(typeof e!=`number`)throw TypeError(`No definition for referenced signature "`+i+`"`);if(e=t[e],typeof e!=`function`)return!1;r.push(e)}return r}function resolveReferences(e,t,n){let r=clearResolutions(e),i=Array(r.length).fill(!1),a=!0;for(;a;){a=!1;let e=!0;for(let o=0;o<r.length;++o){if(i[o])continue;let s=r[o];if(isReferToSelf(s))r[o]=s.referToSelf.callback(n),r[o].referToSelf=s.referToSelf,i[o]=!0,e=!1;else if(isReferTo(s)){let n=collectResolutions(s.referTo.references,r,t);n?(r[o]=s.referTo.callback.apply(this,n),r[o].referTo=s.referTo,i[o]=!0,e=!1):a=!0}}if(e&&a)throw SyntaxError(`Circular reference detected in resolving typed.referTo`)}return r}function validateDeprecatedThis(e){let t=/\bthis(\(|\.signatures\b)/;Object.keys(e).forEach(n=>{let r=e[n];if(t.test(r.toString()))throw SyntaxError("Using `this` to self-reference a function is deprecated since typed-function@3. Use typed.referTo and typed.referToSelf instead.")})}function createTypedFunction(e,t){if(o.createCount++,Object.keys(t).length===0)throw SyntaxError(`No signatures provided`);o.warnAgainstDeprecatedThis&&validateDeprecatedThis(t);let n=[],r=[],i={},a=[],s;for(s in t){if(!Object.prototype.hasOwnProperty.call(t,s))continue;let e=parseSignature(s);if(!e)continue;n.forEach(function(t){if(conflicting(t,e))throw TypeError(`Conflicting signatures "`+stringifyParams(t)+`" and "`+stringifyParams(e)+`".`)}),n.push(e);let o=r.length;r.push(t[s]);let c=e.map(expandParam),l;for(l of splitParams(c)){let e=stringifyParams(l);a.push({params:l,name:e,fn:o}),l.every(e=>!e.hasConversion)&&(i[e]=o)}}a.sort(compareSignatures);let c=resolveReferences(r,i,theTypedFn),l;for(l in i)Object.prototype.hasOwnProperty.call(i,l)&&(i[l]=c[i[l]]);let u=[],d=new Map;for(l of a)d.has(l.name)||(l.fn=c[l.fn],u.push(l),d.set(l.name,l));let f=u[0]&&u[0].params.length<=2&&!hasRestParam(u[0].params),p=u[1]&&u[1].params.length<=2&&!hasRestParam(u[1].params),m=u[2]&&u[2].params.length<=2&&!hasRestParam(u[2].params),h=u[3]&&u[3].params.length<=2&&!hasRestParam(u[3].params),g=u[4]&&u[4].params.length<=2&&!hasRestParam(u[4].params),_=u[5]&&u[5].params.length<=2&&!hasRestParam(u[5].params),v=f&&p&&m&&h&&g&&_;for(let e=0;e<u.length;++e)u[e].test=compileTests(u[e].params);let y=f?compileTest(u[0].params[0]):notOk,b=p?compileTest(u[1].params[0]):notOk,x=m?compileTest(u[2].params[0]):notOk,S=h?compileTest(u[3].params[0]):notOk,ee=g?compileTest(u[4].params[0]):notOk,C=_?compileTest(u[5].params[0]):notOk,w=f?compileTest(u[0].params[1]):notOk,T=p?compileTest(u[1].params[1]):notOk,E=m?compileTest(u[2].params[1]):notOk,D=h?compileTest(u[3].params[1]):notOk,O=g?compileTest(u[4].params[1]):notOk,te=_?compileTest(u[5].params[1]):notOk;for(let e=0;e<u.length;++e)u[e].implementation=compileArgsPreprocessing(u[e].params,u[e].fn);let ne=f?u[0].implementation:undef,re=p?u[1].implementation:undef,ie=m?u[2].implementation:undef,ae=h?u[3].implementation:undef,oe=g?u[4].implementation:undef,se=_?u[5].implementation:undef,ce=f?u[0].params.length:-1,le=p?u[1].params.length:-1,ue=m?u[2].params.length:-1,de=h?u[3].params.length:-1,k=g?u[4].params.length:-1,fe=_?u[5].params.length:-1,pe=v?6:0,me=u.length,he=u.map(e=>e.test),ge=u.map(e=>e.implementation),_e=function generic$1(){for(let e=pe;e<me;e++)if(he[e](arguments))return ge[e].apply(this,arguments);return o.onMismatch(e,arguments,u)};function theTypedFn(e,t){return arguments.length===ce&&y(e)&&w(t)?ne.apply(this,arguments):arguments.length===le&&b(e)&&T(t)?re.apply(this,arguments):arguments.length===ue&&x(e)&&E(t)?ie.apply(this,arguments):arguments.length===de&&S(e)&&D(t)?ae.apply(this,arguments):arguments.length===k&&ee(e)&&O(t)?oe.apply(this,arguments):arguments.length===fe&&C(e)&&te(t)?se.apply(this,arguments):_e.apply(this,arguments)}try{Object.defineProperty(theTypedFn,`name`,{value:e})}catch{}return theTypedFn.signatures=i,theTypedFn._typedFunctionData={signatures:u,signatureMap:d},theTypedFn}function _onMismatch(e,t,n){throw createError(e,t,n)}function initial(e){return slice(e,0,e.length-1)}function last(e){return e[e.length-1]}function slice(e,t,n){return Array.prototype.slice.call(e,t,n)}function findInArray(e,t){for(let n=0;n<e.length;n++)if(t(e[n]))return e[n]}function flatMap(e,t){return Array.prototype.concat.apply([],e.map(t))}function referTo(){let e=initial(arguments).map(e=>stringifyParams(parseSignature(e))),t=last(arguments);if(typeof t!=`function`)throw TypeError(`Callback function expected as last argument`);return makeReferTo(e,t)}function makeReferTo(e,t){return{referTo:{references:e,callback:t}}}function referToSelf(e){if(typeof e!=`function`)throw TypeError(`Callback function expected as first argument`);return{referToSelf:{callback:e}}}function isReferTo(e){return e&&typeof e.referTo==`object`&&Array.isArray(e.referTo.references)&&typeof e.referTo.callback==`function`}function isReferToSelf(e){return e&&typeof e.referToSelf==`object`&&typeof e.referToSelf.callback==`function`}function checkName(e,t){if(!e)return t;if(t&&t!==e){let n=Error(`Function names do not match (expected: `+e+`, actual: `+t+`)`);throw n.data={actual:t,expected:e},n}return e}function getObjectName(e){let t;for(let n in e)Object.prototype.hasOwnProperty.call(e,n)&&(isTypedFunction(e[n])||typeof e[n].signature==`string`)&&(t=checkName(t,e[n].name));return t}function mergeSignatures(e,t){let n;for(n in t)if(Object.prototype.hasOwnProperty.call(t,n)){if(n in e&&t[n]!==e[n]){let r=Error(`Signature "`+n+`" is defined twice`);throw r.data={signature:n,sourceFunction:t[n],destFunction:e[n]},r}e[n]=t[n]}}let s=o;o=__name(function(e){let t=typeof e==`string`,n=t?1:0,r=t?e:``,i={};for(let e=n;e<arguments.length;++e){let n=arguments[e],a={},o;if(typeof n==`function`?(o=n.name,typeof n.signature==`string`?a[n.signature]=n:isTypedFunction(n)&&(a=n.signatures)):isPlainObject$1(n)&&(a=n,t||(o=getObjectName(n))),Object.keys(a).length===0){let t=TypeError(`Argument to 'typed' at index `+e+` is not a (typed) function, nor an object with signatures as keys and functions as values.`);throw t.data={index:e,argument:n},t}t||(r=checkName(r,o)),mergeSignatures(i,a)}return createTypedFunction(r||``,i)},`typed`),o.create=create,o.createCount=s.createCount,o.onMismatch=_onMismatch,o.throwMismatchError=_onMismatch,o.createError=createError,o.clear=clear,o.clearConversions=clearConversions,o.addTypes=addTypes,o._findType=findType,o.referTo=referTo,o.referToSelf=referToSelf,o.convert=convert,o.findSignature=findSignature,o.find=find,o.isTypedFunction=isTypedFunction,o.warnAgainstDeprecatedThis=!0,o.addType=function(e,t){let n=`any`;t!==!1&&r.has(`Object`)&&(n=`Object`),o.addTypes([e],n)};function _validateConversion(e){if(!e||typeof e.from!=`string`||typeof e.to!=`string`||typeof e.convert!=`function`)throw TypeError(`Object with properties {from: string, to: string, convert: function} expected`);if(e.to===e.from)throw SyntaxError(`Illegal to define conversion from "`+e.from+`" to itself.`)}return o.addConversion=function(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{override:!1};_validateConversion(e);let n=findType(e.to),r=n.conversionsTo.find(t=>t.from===e.from);if(r)if(t&&t.override)o.removeConversion({from:r.from,to:e.to,convert:r.convert});else throw Error(`There is already a conversion from "`+e.from+`" to "`+n.name+`"`);n.conversionsTo.push({from:e.from,to:n.name,convert:e.convert,index:a++})},o.addConversions=function(e,t){e.forEach(e=>o.addConversion(e,t))},o.removeConversion=function(e){_validateConversion(e);let t=findType(e.to),n=findInArray(t.conversionsTo,t=>t.from===e.from);if(!n)throw Error(`Attempt to remove nonexistent conversion from `+e.from+` to `+e.to);if(n.convert!==e.convert)throw Error(`Conversion to remove does not match existing conversion`);let r=t.conversionsTo.indexOf(n);t.conversionsTo.splice(r,1)},o.resolve=function(t,n){if(!isTypedFunction(t))throw TypeError(e);let r=t._typedFunctionData.signatures;for(let e=0;e<r.length;++e)if(r[e].test(n))return r[e];return null},o}return create()}))}));function isInteger(e){return typeof e==`boolean`?!0:isFinite(e)?e===Math.round(e):!1}function formatNumberToBase(e,t,n){var r={2:`0b`,8:`0o`,16:`0x`}[t],i=``;if(n){if(n<1)throw Error(`size must be in greater than 0`);if(!isInteger(n))throw Error(`size must be an integer`);if(e>2**(n-1)-1||e<-(2**(n-1)))throw Error(`Value must be in range [-2^${n-1}, 2^${n-1}-1]`);if(!isInteger(e))throw Error(`Value must be an integer`);e<0&&(e+=2**n),i=`i${n}`}var a=``;return e<0&&(e=-e,a=`-`),`${a}${r}${e.toString(t)}${i}`}function format$2(e,t){if(typeof t==`function`)return t(e);if(e===1/0)return`Infinity`;if(e===-1/0)return`-Infinity`;if(isNaN(e))return`NaN`;var n=`auto`,r,i;if(t&&(t.notation&&(n=t.notation),isNumber$1(t)?r=t:isNumber$1(t.precision)&&(r=t.precision),t.wordSize&&(i=t.wordSize,typeof i!=`number`)))throw Error(`Option "wordSize" must be a number`);switch(n){case`fixed`:return toFixed$1(e,r);case`exponential`:return toExponential$1(e,r);case`engineering`:return toEngineering$1(e,r);case`bin`:return formatNumberToBase(e,2,i);case`oct`:return formatNumberToBase(e,8,i);case`hex`:return formatNumberToBase(e,16,i);case`auto`:return toPrecision(e,r,t&&t).replace(/((\.\d*?)(0+))($|e)/,function(){var e=arguments[2],t=arguments[4];return e===`.`?t:e+t});default:throw Error(`Unknown notation "`+n+`". Choose "auto", "exponential", "fixed", "bin", "oct", or "hex.`)}}__name(format$2,`format`);function splitNumber(e){var t=String(e).toLowerCase().match(/^(-?)(\d+\.?\d*)(e([+-]?\d+))?$/);if(!t)throw SyntaxError(`Invalid number `+e);var n=t[1],r=t[2],i=parseFloat(t[4]||`0`),a=r.indexOf(`.`);i+=a===-1?r.length-1:a-1;var o=r.replace(`.`,``).replace(/^0*/,function(e){return i-=e.length,``}).replace(/0*$/,``).split(``).map(function(e){return parseInt(e)});return o.length===0&&(o.push(0),i++),{sign:n,coefficients:o,exponent:i}}function toEngineering$1(e,t){if(isNaN(e)||!isFinite(e))return String(e);var n=roundDigits(splitNumber(e),t),r=n.exponent,i=n.coefficients,a=r%3==0?r:r<0?r-3-r%3:r-r%3;if(isNumber$1(t))for(;t>i.length||r-a+1>i.length;)i.push(0);else for(var o=Math.abs(r-a)-(i.length-1),s=0;s<o;s++)i.push(0);for(var c=Math.abs(r-a),l=1;c>0;)l++,c--;var u=i.slice(l).join(``),d=isNumber$1(t)&&u.length||u.match(/[1-9]/)?`.`+u:``,f=i.slice(0,l).join(``)+d+`e`+(r>=0?`+`:``)+a.toString();return n.sign+f}__name(toEngineering$1,`toEngineering`);function toFixed$1(e,t){if(isNaN(e)||!isFinite(e))return String(e);var n=splitNumber(e),r=typeof t==`number`?roundDigits(n,n.exponent+1+t):n,i=r.coefficients,a=r.exponent+1,o=a+(t||0);return i.length<o&&(i=i.concat(zeros(o-i.length))),a<0&&(i=zeros(-a+1).concat(i),a=1),a<i.length&&i.splice(a,0,a===0?`0.`:`.`),r.sign+i.join(``)}__name(toFixed$1,`toFixed`);function toExponential$1(e,t){if(isNaN(e)||!isFinite(e))return String(e);var n=splitNumber(e),r=t?roundDigits(n,t):n,i=r.coefficients,a=r.exponent;i.length<t&&(i=i.concat(zeros(t-i.length)));var o=i.shift();return r.sign+o+(i.length>0?`.`+i.join(``):``)+`e`+(a>=0?`+`:``)+a}__name(toExponential$1,`toExponential`);function toPrecision(e,t,n){if(isNaN(e)||!isFinite(e))return String(e);var r=n&&n.lowerExp!==void 0?n.lowerExp:-3,i=n&&n.upperExp!==void 0?n.upperExp:5,a=splitNumber(e),o=t?roundDigits(a,t):a;if(o.exponent<r||o.exponent>=i)return toExponential$1(e,t);var s=o.coefficients,c=o.exponent;s.length<t&&(s=s.concat(zeros(t-s.length))),s=s.concat(zeros(c-s.length+1+(s.length<t?t-s.length:0))),s=zeros(-c).concat(s);var l=c>0?c:0;return l<s.length-1&&s.splice(l+1,0,`.`),o.sign+s.join(``)}function roundDigits(e,t){for(var n={sign:e.sign,coefficients:e.coefficients,exponent:e.exponent},r=n.coefficients;t<=0;)r.unshift(0),n.exponent++,t++;if(r.length>t&&r.splice(t,r.length-t)[0]>=5){var i=t-1;for(r[i]++;r[i]===10;)r.pop(),i===0&&(r.unshift(0),n.exponent++,i++),i--,r[i]++}return n}function zeros(e){for(var t=[],n=0;n<e;n++)t.push(0);return t}function digits(e){return e.toExponential().replace(/e.*$/,``).replace(/^0\.?0*|\./,``).length}var Ye=2**-52||2220446049250313e-31;function formatBigNumberToBase(e,t,n){var r=e.constructor,i=new r(2),a=``;if(n){if(n<1)throw Error(`size must be in greater than 0`);if(!isInteger(n))throw Error(`size must be an integer`);if(e.greaterThan(i.pow(n-1).sub(1))||e.lessThan(i.pow(n-1).mul(-1)))throw Error(`Value must be in range [-2^${n-1}, 2^${n-1}-1]`);if(!e.isInteger())throw Error(`Value must be an integer`);e.lessThan(0)&&(e=e.add(i.pow(n))),a=`i${n}`}switch(t){case 2:return`${e.toBinary()}${a}`;case 8:return`${e.toOctal()}${a}`;case 16:return`${e.toHexadecimal()}${a}`;default:throw Error(`Base ${t} not supported `)}}function format$1(e,t){if(typeof t==`function`)return t(e);if(!e.isFinite())return e.isNaN()?`NaN`:e.gt(0)?`Infinity`:`-Infinity`;var n=`auto`,r,i;if(t!==void 0&&(t.notation&&(n=t.notation),typeof t==`number`?r=t:t.precision!==void 0&&(r=t.precision),t.wordSize&&(i=t.wordSize,typeof i!=`number`)))throw Error(`Option "wordSize" must be a number`);switch(n){case`fixed`:return toFixed(e,r);case`exponential`:return toExponential(e,r);case`engineering`:return toEngineering(e,r);case`bin`:return formatBigNumberToBase(e,2,i);case`oct`:return formatBigNumberToBase(e,8,i);case`hex`:return formatBigNumberToBase(e,16,i);case`auto`:var a=t&&t.lowerExp!==void 0?t.lowerExp:-3,o=t&&t.upperExp!==void 0?t.upperExp:5;if(e.isZero())return`0`;var s,c=e.toSignificantDigits(r),l=c.e;return s=l>=a&&l<o?c.toFixed():toExponential(e,r),s.replace(/((\.\d*?)(0+))($|e)/,function(){var e=arguments[2],t=arguments[4];return e===`.`?t:e+t});default:throw Error(`Unknown notation "`+n+`". Choose "auto", "exponential", "fixed", "bin", "oct", or "hex.`)}}__name(format$1,`format`);function toEngineering(e,t){var n=e.e,r=n%3==0?n:n<0?n-3-n%3:n-n%3,i=e.mul(10**-r).toPrecision(t);if(i.indexOf(`e`)!==-1){var a=e.constructor;i=new a(i).toFixed()}return i+`e`+(n>=0?`+`:``)+r.toString()}function toExponential(e,t){return t===void 0?e.toExponential():e.toExponential(t-1)}function toFixed(e,t){return e.toFixed(t)}function format(e,t){var n=_format(e,t);return t&&typeof t==`object`&&`truncate`in t&&n.length>t.truncate?n.substring(0,t.truncate-3)+`...`:n}function _format(e,t){return typeof e==`number`?format$2(e,t):isBigNumber(e)?format$1(e,t):looksLikeFraction(e)?!t||t.fraction!==`decimal`?e.s*e.n+`/`+e.d:e.toString():Array.isArray(e)?formatArray(e,t):isString(e)?stringify(e):typeof e==`function`?e.syntax?String(e.syntax):`function`:e&&typeof e==`object`?typeof e.format==`function`?e.format(t):e&&e.toString(t)!=={}.toString()?e.toString(t):`{`+Object.keys(e).map(n=>stringify(n)+`: `+format(e[n],t)).join(`, `)+`}`:String(e)}function stringify(e){for(var t=String(e),n=``,r=0;r<t.length;){var i=t.charAt(r);n+=i in Xe?Xe[i]:i,r++}return`"`+n+`"`}var Xe={'"':`\\"`,"\\":`\\\\`,"\b":`\\b`,"\f":`\\f`,"\n":`\\n`,"\r":`\\r`," ":`\\t`};function formatArray(e,t){if(Array.isArray(e)){for(var n=`[`,r=e.length,i=0;i<r;i++)i!==0&&(n+=`, `),n+=formatArray(e[i],t);return n+=`]`,n}else return format(e,t)}function looksLikeFraction(e){return e&&typeof e==`object`&&typeof e.s==`number`&&typeof e.n==`number`&&typeof e.d==`number`||!1}function DimensionError(e,t,n){if(!(this instanceof DimensionError))throw SyntaxError(`Constructor must be called with the new operator`);this.actual=e,this.expected=t,this.relation=n,this.message=`Dimension mismatch (`+(Array.isArray(e)?`[`+e.join(`, `)+`]`:e)+` `+(this.relation||`!=`)+` `+(Array.isArray(t)?`[`+t.join(`, `)+`]`:t)+`)`,this.stack=Error().stack}DimensionError.prototype=RangeError(),DimensionError.prototype.constructor=RangeError,DimensionError.prototype.name=`DimensionError`,DimensionError.prototype.isDimensionError=!0;function IndexError(e,t,n){if(!(this instanceof IndexError))throw SyntaxError(`Constructor must be called with the new operator`);this.index=e,arguments.length<3?(this.min=0,this.max=t):(this.min=t,this.max=n),this.min!==void 0&&this.index<this.min?this.message=`Index out of range (`+this.index+` < `+this.min+`)`:this.max!==void 0&&this.index>=this.max?this.message=`Index out of range (`+this.index+` > `+(this.max-1)+`)`:this.message=`Index out of range (`+this.index+`)`,this.stack=Error().stack}IndexError.prototype=RangeError(),IndexError.prototype.constructor=RangeError,IndexError.prototype.name=`IndexError`,IndexError.prototype.isIndexError=!0;function arraySize(e){for(var t=[];Array.isArray(e);)t.push(e.length),e=e[0];return t}function _validate(e,t,n){var r,i=e.length;if(i!==t[n])throw new DimensionError(i,t[n]);if(n<t.length-1){var a=n+1;for(r=0;r<i;r++){var o=e[r];if(!Array.isArray(o))throw new DimensionError(t.length-1,t.length,`<`);_validate(e[r],t,a)}}else for(r=0;r<i;r++)if(Array.isArray(e[r]))throw new DimensionError(t.length+1,t.length,`>`)}function validate$1(e,t){if(t.length===0){if(Array.isArray(e))throw new DimensionError(e.length,0)}else _validate(e,t,0)}__name(validate$1,`validate`);function validateIndex(e,t){if(e!==void 0){if(!isNumber$1(e)||!isInteger(e))throw TypeError(`Index must be an integer (value: `+e+`)`);if(e<0||typeof t==`number`&&e>=t)throw new IndexError(e,t)}}function resize(e,t,n){if(!Array.isArray(t))throw TypeError(`Array expected`);if(t.length===0)throw Error(`Resizing to scalar is not supported`);return t.forEach(function(e){if(!isNumber$1(e)||!isInteger(e)||e<0)throw TypeError(`Invalid size, must contain positive integers (size: `+format(t)+`)`)}),(isNumber$1(e)||isBigNumber(e))&&(e=[e]),_resize(e,t,0,n===void 0?0:n),e}function _resize(e,t,n,r){var i,a,o=e.length,s=t[n],c=Math.min(o,s);if(e.length=s,n<t.length-1){var l=n+1;for(i=0;i<c;i++)a=e[i],Array.isArray(a)||(a=[a],e[i]=a),_resize(a,t,l,r);for(i=c;i<s;i++)a=[],e[i]=a,_resize(a,t,l,r)}else{for(i=0;i<c;i++)for(;Array.isArray(e[i]);)e[i]=e[i][0];for(i=c;i<s;i++)e[i]=r}}function reshape(e,t){var n=flatten(e),r=n.length;if(!Array.isArray(e)||!Array.isArray(t))throw TypeError(`Array expected`);if(t.length===0)throw new DimensionError(0,r,`!=`);t=processSizesWildcard(t,r);var i=product(t);if(r!==i)throw new DimensionError(i,r,`!=`);try{return _reshape(n,t)}catch(e){throw e instanceof DimensionError?new DimensionError(i,r,`!=`):e}}function processSizesWildcard(e,t){var n=product(e),r=e.slice(),i=-1,a=e.indexOf(i);if(e.indexOf(i,a+1)>=0)throw Error(`More than one wildcard in sizes`);var o=a>=0,s=t%n===0;if(o)if(s)r[a]=-t/n;else throw Error(`Could not replace wildcard, since `+t+` is no multiple of `+-n);return r}function product(e){return e.reduce((e,t)=>e*t,1)}function _reshape(e,t){for(var n=e,r,i=t.length-1;i>0;i--){var a=t[i];r=[];for(var o=n.length/a,s=0;s<o;s++)r.push(n.slice(s*a,(s+1)*a));n=r}return n}function unsqueeze(e,t,n,r){var i=r||arraySize(e);if(n)for(var a=0;a<n;a++)e=[e],i.unshift(1);for(e=_unsqueeze(e,t,0);i.length<t;)i.push(1);return e}function _unsqueeze(e,t,n){var r,i;if(Array.isArray(e)){var a=n+1;for(r=0,i=e.length;r<i;r++)e[r]=_unsqueeze(e[r],t,a)}else for(var o=n;o<t;o++)e=[e];return e}function flatten(e){if(!Array.isArray(e))return e;var t=[];return e.forEach(function callback(e){Array.isArray(e)?e.forEach(callback):t.push(e)}),t}function getArrayDataType(e,t){for(var n,r=0,i=0;i<e.length;i++){var a=e[i],o=Array.isArray(a);if(i===0&&o&&(r=a.length),o&&a.length!==r)return;var s=o?getArrayDataType(a,t):t(a);if(n===void 0)n=s;else if(n!==s)return`mixed`}return n}function concatRecursive(e,t,n,r){if(r<n){if(e.length!==t.length)throw new DimensionError(e.length,t.length);for(var i=[],a=0;a<e.length;a++)i[a]=concatRecursive(e[a],t[a],n,r+1);return i}else return e.concat(t)}function concat(){var e=Array.prototype.slice.call(arguments,0,-1),t=Array.prototype.slice.call(arguments,-1);if(e.length===1)return e[0];if(e.length>1)return e.slice(1).reduce(function(e,n){return concatRecursive(e,n,t,0)},e[0]);throw Error(`Wrong number of arguments in function concat`)}function broadcastSizes(){for(var e=arguments.length,t=Array(e),n=0;n<e;n++)t[n]=arguments[n];for(var r=t.map(e=>e.length),i=Math.max(...r),a=Array(i).fill(null),o=0;o<t.length;o++)for(var s=t[o],c=r[o],l=0;l<c;l++){var u=i-c+l;s[l]>a[u]&&(a[u]=s[l])}for(var d=0;d<t.length;d++)checkBroadcastingRules(t[d],a);return a}function checkBroadcastingRules(e,t){for(var n=t.length,r=e.length,i=0;i<r;i++){var a=n-r+i;if(e[i]<t[a]&&e[i]>1||e[i]>t[a])throw Error(`shape missmatch: missmatch is found in arg with shape (${e}) not possible to broadcast dimension ${r} with size ${e[i]} to size ${t[a]}`)}}function broadcastTo(e,t){var n=arraySize(e);if(deepStrictEqual(n,t))return e;checkBroadcastingRules(n,t);var r=broadcastSizes(n,t),i=r.length,a=[...Array(i-n.length).fill(1),...n],o=clone$1(e);n.length<i&&(o=reshape(o,a),n=arraySize(o));for(var s=0;s<i;s++)n[s]<r[s]&&(o=stretch(o,r[s],s),n=arraySize(o));return o}function stretch(e,t,n){return concat(...Array(t).fill(e),n)}function clone$1(e){return(0,Ke.default)([],e)}__name(clone$1,`clone`);function factory(e,t,n,r){function assertAndCreate(r){var i=pickShallow(r,t.map(stripOptionalNotation));return assertDependencies(e,t,r),n(i)}return assertAndCreate.isFactory=!0,assertAndCreate.fn=e,assertAndCreate.dependencies=t.slice().sort(),r&&(assertAndCreate.meta=r),assertAndCreate}function assertDependencies(e,t,n){if(!t.filter(e=>!isOptionalDependency(e)).every(e=>n[e]!==void 0)){var r=t.filter(e=>n[e]===void 0);throw Error(`Cannot create function "${e}", some dependencies are missing: ${r.map(e=>`"${e}"`).join(`, `)}.`)}}function isOptionalDependency(e){return e&&e[0]===`?`}function stripOptionalNotation(e){return e&&e[0]===`?`?e.slice(1):e}function getSafeProperty(e,t){if(isPlainObject(e)&&isSafeProperty(e,t))return e[t];throw typeof e[t]==`function`&&isSafeMethod(e,t)?Error(`Cannot access method "`+t+`" as a property`):Error(`No access to property "`+t+`"`)}function setSafeProperty(e,t,n){if(isPlainObject(e)&&isSafeProperty(e,t))return e[t]=n,n;throw Error(`No access to property "`+t+`"`)}function hasSafeProperty(e,t){return t in e}function isSafeProperty(e,t){return!e||typeof e!=`object`?!1:hasOwnProperty(Ze,t)?!0:!(t in Object.prototype||t in Function.prototype)}function isSafeMethod(e,t){return e==null||typeof e[t]!=`function`||hasOwnProperty(e,t)&&Object.getPrototypeOf&&t in Object.getPrototypeOf(e)?!1:hasOwnProperty(Qe,t)?!0:!(t in Object.prototype||t in Function.prototype)}function isPlainObject(e){return typeof e==`object`&&e&&e.constructor===Object}var Ze={length:!0,name:!0},Qe={toString:!0,valueOf:!0,toLocaleString:!0},ObjectWrappingMap=class{constructor(e){this.wrappedObject=e}keys(){return Object.keys(this.wrappedObject)}get(e){return getSafeProperty(this.wrappedObject,e)}set(e,t){return setSafeProperty(this.wrappedObject,e,t),this}has(e){return hasSafeProperty(this.wrappedObject,e)}};function isMap(e){return e?e instanceof Map||e instanceof ObjectWrappingMap||typeof e.set==`function`&&typeof e.get==`function`&&typeof e.keys==`function`&&typeof e.has==`function`:!1}var $e=__toESM(Je(),1),et=function _createTyped(){return et=$e.default.create,$e.default},tt=[`?BigNumber`,`?Complex`,`?DenseMatrix`,`?Fraction`],nt=factory(`typed`,tt,function createTyped$1(e){var{BigNumber:t,Complex:n,DenseMatrix:r,Fraction:i}=e,a=et();return a.clear(),a.addTypes([{name:`number`,test:isNumber$1},{name:`Complex`,test:isComplex},{name:`BigNumber`,test:isBigNumber},{name:`Fraction`,test:isFraction},{name:`Unit`,test:isUnit},{name:`identifier`,test:e=>isString&&/^(?:[A-Za-z\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0560-\u0588\u05D0-\u05EA\u05EF-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u0860-\u086A\u0870-\u0887\u0889-\u088E\u08A0-\u08C9\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u09FC\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C5D\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D04-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E86-\u0E8A\u0E8C-\u0EA3\u0EA5\u0EA7-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16F1-\u16F8\u1700-\u1711\u171F-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1878\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4C\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C88\u1C90-\u1CBA\u1CBD-\u1CBF\u1CE9-\u1CEC\u1CEE-\u1CF3\u1CF5\u1CF6\u1CFA\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184\u2C00-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312F\u3131-\u318E\u31A0-\u31BF\u31F0-\u31FF\u3400-\u4DBF\u4E00-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788\uA78B-\uA7CA\uA7D0\uA7D1\uA7D3\uA7D5-\uA7D9\uA7F2-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA8FE\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB69\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF2D-\uDF40\uDF42-\uDF49\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF]|\uD801[\uDC00-\uDC9D\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDD70-\uDD7A\uDD7C-\uDD8A\uDD8C-\uDD92\uDD94\uDD95\uDD97-\uDDA1\uDDA3-\uDDB1\uDDB3-\uDDB9\uDDBB\uDDBC\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67\uDF80-\uDF85\uDF87-\uDFB0\uDFB2-\uDFBA]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE35\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2\uDD00-\uDD23\uDE80-\uDEA9\uDEB0\uDEB1\uDF00-\uDF1C\uDF27\uDF30-\uDF45\uDF70-\uDF81\uDFB0-\uDFC4\uDFE0-\uDFF6]|\uD804[\uDC03-\uDC37\uDC71\uDC72\uDC75\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD44\uDD47\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE2B\uDE3F\uDE40\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61]|\uD805[\uDC00-\uDC34\uDC47-\uDC4A\uDC5F-\uDC61\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE80-\uDEAA\uDEB8\uDF00-\uDF1A\uDF40-\uDF46]|\uD806[\uDC00-\uDC2B\uDCA0-\uDCDF\uDCFF-\uDD06\uDD09\uDD0C-\uDD13\uDD15\uDD16\uDD18-\uDD2F\uDD3F\uDD41\uDDA0-\uDDA7\uDDAA-\uDDD0\uDDE1\uDDE3\uDE00\uDE0B-\uDE32\uDE3A\uDE50\uDE5C-\uDE89\uDE9D\uDEB0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC2E\uDC40\uDC72-\uDC8F\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD30\uDD46\uDD60-\uDD65\uDD67\uDD68\uDD6A-\uDD89\uDD98\uDEE0-\uDEF2\uDF02\uDF04-\uDF10\uDF12-\uDF33\uDFB0]|\uD808[\uDC00-\uDF99]|\uD809[\uDC80-\uDD43]|\uD80B[\uDF90-\uDFF0]|[\uD80C\uD81C-\uD820\uD822\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879\uD880-\uD883\uD885-\uD887][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2F\uDC41-\uDC46]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE70-\uDEBE\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDE40-\uDE7F\uDF00-\uDF4A\uDF50\uDF93-\uDF9F\uDFE0\uDFE1\uDFE3]|\uD821[\uDC00-\uDFF7]|\uD823[\uDC00-\uDCD5\uDD00-\uDD08]|\uD82B[\uDFF0-\uDFF3\uDFF5-\uDFFB\uDFFD\uDFFE]|\uD82C[\uDC00-\uDD22\uDD32\uDD50-\uDD52\uDD55\uDD64-\uDD67\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD837[\uDF00-\uDF1E\uDF25-\uDF2A]|\uD838[\uDC30-\uDC6D\uDD00-\uDD2C\uDD37-\uDD3D\uDD4E\uDE90-\uDEAD\uDEC0-\uDEEB]|\uD839[\uDCD0-\uDCEB\uDFE0-\uDFE6\uDFE8-\uDFEB\uDFED\uDFEE\uDFF0-\uDFFE]|\uD83A[\uDC00-\uDCC4\uDD00-\uDD43\uDD4B]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDEDF\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF39\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]|\uD884[\uDC00-\uDF4A\uDF50-\uDFFF]|\uD888[\uDC00-\uDFAF])(?:[0-9A-Za-z\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0560-\u0588\u05D0-\u05EA\u05EF-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u0860-\u086A\u0870-\u0887\u0889-\u088E\u08A0-\u08C9\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u09FC\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C5D\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D04-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E86-\u0E8A\u0E8C-\u0EA3\u0EA5\u0EA7-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16F1-\u16F8\u1700-\u1711\u171F-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1878\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4C\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C88\u1C90-\u1CBA\u1CBD-\u1CBF\u1CE9-\u1CEC\u1CEE-\u1CF3\u1CF5\u1CF6\u1CFA\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184\u2C00-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312F\u3131-\u318E\u31A0-\u31BF\u31F0-\u31FF\u3400-\u4DBF\u4E00-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788\uA78B-\uA7CA\uA7D0\uA7D1\uA7D3\uA7D5-\uA7D9\uA7F2-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA8FE\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB69\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF2D-\uDF40\uDF42-\uDF49\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF]|\uD801[\uDC00-\uDC9D\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDD70-\uDD7A\uDD7C-\uDD8A\uDD8C-\uDD92\uDD94\uDD95\uDD97-\uDDA1\uDDA3-\uDDB1\uDDB3-\uDDB9\uDDBB\uDDBC\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67\uDF80-\uDF85\uDF87-\uDFB0\uDFB2-\uDFBA]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE35\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2\uDD00-\uDD23\uDE80-\uDEA9\uDEB0\uDEB1\uDF00-\uDF1C\uDF27\uDF30-\uDF45\uDF70-\uDF81\uDFB0-\uDFC4\uDFE0-\uDFF6]|\uD804[\uDC03-\uDC37\uDC71\uDC72\uDC75\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD44\uDD47\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE2B\uDE3F\uDE40\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61]|\uD805[\uDC00-\uDC34\uDC47-\uDC4A\uDC5F-\uDC61\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE80-\uDEAA\uDEB8\uDF00-\uDF1A\uDF40-\uDF46]|\uD806[\uDC00-\uDC2B\uDCA0-\uDCDF\uDCFF-\uDD06\uDD09\uDD0C-\uDD13\uDD15\uDD16\uDD18-\uDD2F\uDD3F\uDD41\uDDA0-\uDDA7\uDDAA-\uDDD0\uDDE1\uDDE3\uDE00\uDE0B-\uDE32\uDE3A\uDE50\uDE5C-\uDE89\uDE9D\uDEB0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC2E\uDC40\uDC72-\uDC8F\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD30\uDD46\uDD60-\uDD65\uDD67\uDD68\uDD6A-\uDD89\uDD98\uDEE0-\uDEF2\uDF02\uDF04-\uDF10\uDF12-\uDF33\uDFB0]|\uD808[\uDC00-\uDF99]|\uD809[\uDC80-\uDD43]|\uD80B[\uDF90-\uDFF0]|[\uD80C\uD81C-\uD820\uD822\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879\uD880-\uD883\uD885-\uD887][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2F\uDC41-\uDC46]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE70-\uDEBE\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDE40-\uDE7F\uDF00-\uDF4A\uDF50\uDF93-\uDF9F\uDFE0\uDFE1\uDFE3]|\uD821[\uDC00-\uDFF7]|\uD823[\uDC00-\uDCD5\uDD00-\uDD08]|\uD82B[\uDFF0-\uDFF3\uDFF5-\uDFFB\uDFFD\uDFFE]|\uD82C[\uDC00-\uDD22\uDD32\uDD50-\uDD52\uDD55\uDD64-\uDD67\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD837[\uDF00-\uDF1E\uDF25-\uDF2A]|\uD838[\uDC30-\uDC6D\uDD00-\uDD2C\uDD37-\uDD3D\uDD4E\uDE90-\uDEAD\uDEC0-\uDEEB]|\uD839[\uDCD0-\uDCEB\uDFE0-\uDFE6\uDFE8-\uDFEB\uDFED\uDFEE\uDFF0-\uDFFE]|\uD83A[\uDC00-\uDCC4\uDD00-\uDD43\uDD4B]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDEDF\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF39\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]|\uD884[\uDC00-\uDF4A\uDF50-\uDFFF]|\uD888[\uDC00-\uDFAF])*$/.test(e)},{name:`string`,test:isString},{name:`Chain`,test:isChain},{name:`Array`,test:L},{name:`Matrix`,test:isMatrix},{name:`DenseMatrix`,test:isDenseMatrix},{name:`SparseMatrix`,test:isSparseMatrix},{name:`Range`,test:isRange},{name:`Index`,test:isIndex},{name:`boolean`,test:isBoolean},{name:`ResultSet`,test:isResultSet},{name:`Help`,test:isHelp},{name:`function`,test:isFunction},{name:`Date`,test:isDate},{name:`RegExp`,test:isRegExp},{name:`null`,test:isNull},{name:`undefined`,test:isUndefined},{name:`AccessorNode`,test:isAccessorNode},{name:`ArrayNode`,test:isArrayNode},{name:`AssignmentNode`,test:isAssignmentNode},{name:`BlockNode`,test:isBlockNode},{name:`ConditionalNode`,test:isConditionalNode},{name:`ConstantNode`,test:isConstantNode},{name:`FunctionNode`,test:isFunctionNode},{name:`FunctionAssignmentNode`,test:isFunctionAssignmentNode},{name:`IndexNode`,test:isIndexNode},{name:`Node`,test:isNode},{name:`ObjectNode`,test:isObjectNode},{name:`OperatorNode`,test:isOperatorNode},{name:`ParenthesisNode`,test:isParenthesisNode},{name:`RangeNode`,test:isRangeNode},{name:`RelationalNode`,test:isRelationalNode},{name:`SymbolNode`,test:isSymbolNode},{name:`Map`,test:isMap},{name:`Object`,test:isObject$2}]),a.addConversions([{from:`number`,to:`BigNumber`,convert:function convert(e){if(t||throwNoBignumber(e),digits(e)>15)throw TypeError(`Cannot implicitly convert a number with >15 significant digits to BigNumber (value: `+e+`). Use function bignumber(x) to convert to BigNumber.`);return new t(e)}},{from:`number`,to:`Complex`,convert:function convert(e){return n||throwNoComplex(e),new n(e,0)}},{from:`BigNumber`,to:`Complex`,convert:function convert(e){return n||throwNoComplex(e),new n(e.toNumber(),0)}},{from:`Fraction`,to:`BigNumber`,convert:function convert(e){throw TypeError(`Cannot implicitly convert a Fraction to BigNumber or vice versa. Use function bignumber(x) to convert to BigNumber or fraction(x) to convert to Fraction.`)}},{from:`Fraction`,to:`Complex`,convert:function convert(e){return n||throwNoComplex(e),new n(e.valueOf(),0)}},{from:`number`,to:`Fraction`,convert:function convert(e){i||throwNoFraction(e);var t=new i(e);if(t.valueOf()!==e)throw TypeError(`Cannot implicitly convert a number to a Fraction when there will be a loss of precision (value: `+e+`). Use function fraction(x) to convert to Fraction.`);return t}},{from:`string`,to:`number`,convert:function convert(e){var t=Number(e);if(isNaN(t))throw Error(`Cannot convert "`+e+`" to a number`);return t}},{from:`string`,to:`BigNumber`,convert:function convert(e){t||throwNoBignumber(e);try{return new t(e)}catch{throw Error(`Cannot convert "`+e+`" to BigNumber`)}}},{from:`string`,to:`Fraction`,convert:function convert(e){i||throwNoFraction(e);try{return new i(e)}catch{throw Error(`Cannot convert "`+e+`" to Fraction`)}}},{from:`string`,to:`Complex`,convert:function convert(e){n||throwNoComplex(e);try{return new n(e)}catch{throw Error(`Cannot convert "`+e+`" to Complex`)}}},{from:`boolean`,to:`number`,convert:function convert(e){return+e}},{from:`boolean`,to:`BigNumber`,convert:function convert(e){return t||throwNoBignumber(e),new t(+e)}},{from:`boolean`,to:`Fraction`,convert:function convert(e){return i||throwNoFraction(e),new i(+e)}},{from:`boolean`,to:`string`,convert:function convert(e){return String(e)}},{from:`Array`,to:`Matrix`,convert:function convert(e){return r||throwNoMatrix(),new r(e)}},{from:`Matrix`,to:`Array`,convert:function convert(e){return e.valueOf()}}]),a.onMismatch=(e,t,n)=>{var r=a.createError(e,t,n);if([`wrongType`,`mismatch`].includes(r.data.category)&&t.length===1&&isCollection(t[0])&&n.some(e=>!e.params.includes(`,`))){var i=TypeError(`Function '${e}' doesn't apply to matrices. To call it elementwise on a matrix 'M', try 'map(M, ${e})'.`);throw i.data=r.data,i}throw r},a.onMismatch=(e,t,n)=>{var r=a.createError(e,t,n);if([`wrongType`,`mismatch`].includes(r.data.category)&&t.length===1&&isCollection(t[0])&&n.some(e=>!e.params.includes(`,`))){var i=TypeError(`Function '${e}' doesn't apply to matrices. To call it elementwise on a matrix 'M', try 'map(M, ${e})'.`);throw i.data=r.data,i}throw r},a});function throwNoBignumber(e){throw Error(`Cannot convert value ${e} into a BigNumber: no class 'BigNumber' provided`)}function throwNoComplex(e){throw Error(`Cannot convert value ${e} into a Complex number: no class 'Complex' provided`)}function throwNoMatrix(){throw Error(`Cannot convert array into a Matrix: no class 'DenseMatrix' provided`)}function throwNoFraction(e){throw Error(`Cannot convert value ${e} into a Fraction, no class 'Fraction' provided.`)}var R=9e15,z=1e9,rt=`0123456789abcdef`,it=`2.3025850929940456840179914546843642076011014886287729760333279009675726096773524802359972050895982983419677840422862486334095254650828067566662873690987816894829072083255546808437998948262331985283935053089653777326288461633662222876982198867465436674744042432743651550489343149393914796194044002221051017141748003688084012647080685567743216228355220114804663715659121373450747856947683463616792101806445070648000277502684916746550586856935673420670581136429224554405758925724208241314695689016758940256776311356919292033376587141660230105703089634572075440370847469940168269282808481184289314848524948644871927809676271275775397027668605952496716674183485704422507197965004714951050492214776567636938662976979522110718264549734772662425709429322582798502585509785265383207606726317164309505995087807523710333101197857547331541421808427543863591778117054309827482385045648019095610299291824318237525357709750539565187697510374970888692180205189339507238539205144634197265287286965110862571492198849978748873771345686209167058`,at=`3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185950244594553469083026425223082533446850352619311881710100031378387528865875332083814206171776691473035982534904287554687311595628638823537875937519577818577805321712268066130019278766111959092164201989380952572010654858632789`,ot={precision:20,rounding:4,modulo:1,toExpNeg:-7,toExpPos:21,minE:-R,maxE:R,crypto:!1},st,B,V=!0,H=`[DecimalError] `,U=H+`Invalid argument: `,ct=H+`Precision limit exceeded`,lt=H+`crypto unavailable`,ut=`[object Decimal]`,W=Math.floor,G=Math.pow,dt=/^0b([01]+(\.[01]*)?|\.[01]+)(p[+-]?\d+)?$/i,ft=/^0x([0-9a-f]+(\.[0-9a-f]*)?|\.[0-9a-f]+)(p[+-]?\d+)?$/i,pt=/^0o([0-7]+(\.[0-7]*)?|\.[0-7]+)(p[+-]?\d+)?$/i,mt=/^(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i,K=1e7,q=7,ht=9007199254740991,gt=it.length-1,_t=at.length-1,J={toStringTag:ut};J.absoluteValue=J.abs=function(){var e=new this.constructor(this);return e.s<0&&(e.s=1),finalise(e)},J.ceil=function(){return finalise(new this.constructor(this),this.e+1,2)},J.clampedTo=J.clamp=function(e,t){var n,r=this,i=r.constructor;if(e=new i(e),t=new i(t),!e.s||!t.s)return new i(NaN);if(e.gt(t))throw Error(U+t);return n=r.cmp(e),n<0?e:r.cmp(t)>0?t:new i(r)},J.comparedTo=J.cmp=function(e){var t,n,r,i,a=this,o=a.d,s=(e=new a.constructor(e)).d,c=a.s,l=e.s;if(!o||!s)return!c||!l?NaN:c===l?o===s?0:!o^c<0?1:-1:c;if(!o[0]||!s[0])return o[0]?c:s[0]?-l:0;if(c!==l)return c;if(a.e!==e.e)return a.e>e.e^c<0?1:-1;for(r=o.length,i=s.length,t=0,n=r<i?r:i;t<n;++t)if(o[t]!==s[t])return o[t]>s[t]^c<0?1:-1;return r===i?0:r>i^c<0?1:-1},J.cosine=J.cos=function(){var e,t,n=this,r=n.constructor;return n.d?n.d[0]?(e=r.precision,t=r.rounding,r.precision=e+Math.max(n.e,n.sd())+q,r.rounding=1,n=cosine(r,toLessThanHalfPi(r,n)),r.precision=e,r.rounding=t,finalise(B==2||B==3?n.neg():n,e,t,!0)):new r(1):new r(NaN)},J.cubeRoot=J.cbrt=function(){var e,t,n,r,i,a,o,s,c,l,u=this,d=u.constructor;if(!u.isFinite()||u.isZero())return new d(u);for(V=!1,a=u.s*G(u.s*u,1/3),!a||Math.abs(a)==1/0?(n=digitsToString(u.d),e=u.e,(a=(e-n.length+1)%3)&&(n+=a==1||a==-2?`0`:`00`),a=G(n,1/3),e=W((e+1)/3)-(e%3==(e<0?-1:2)),a==1/0?n=`5e`+e:(n=a.toExponential(),n=n.slice(0,n.indexOf(`e`)+1)+e),r=new d(n),r.s=u.s):r=new d(a.toString()),o=(e=d.precision)+3;;)if(s=r,c=s.times(s).times(s),l=c.plus(u),r=Y(l.plus(u).times(s),l.plus(c),o+2,1),digitsToString(s.d).slice(0,o)===(n=digitsToString(r.d)).slice(0,o))if(n=n.slice(o-3,o+1),n==`9999`||!i&&n==`4999`){if(!i&&(finalise(s,e+1,0),s.times(s).times(s).eq(u))){r=s;break}o+=4,i=1}else{(!+n||!+n.slice(1)&&n.charAt(0)==`5`)&&(finalise(r,e+1,1),t=!r.times(r).times(r).eq(u));break}return V=!0,finalise(r,e,d.rounding,t)},J.decimalPlaces=J.dp=function(){var e,t=this.d,n=NaN;if(t){if(e=t.length-1,n=(e-W(this.e/q))*q,e=t[e],e)for(;e%10==0;e/=10)n--;n<0&&(n=0)}return n},J.dividedBy=J.div=function(e){return Y(this,new this.constructor(e))},J.dividedToIntegerBy=J.divToInt=function(e){var t=this,n=t.constructor;return finalise(Y(t,new n(e),0,1,1),n.precision,n.rounding)},J.equals=J.eq=function(e){return this.cmp(e)===0},J.floor=function(){return finalise(new this.constructor(this),this.e+1,3)},J.greaterThan=J.gt=function(e){return this.cmp(e)>0},J.greaterThanOrEqualTo=J.gte=function(e){var t=this.cmp(e);return t==1||t===0},J.hyperbolicCosine=J.cosh=function(){var e,t,n,r,i,a=this,o=a.constructor,s=new o(1);if(!a.isFinite())return new o(a.s?1/0:NaN);if(a.isZero())return s;n=o.precision,r=o.rounding,o.precision=n+Math.max(a.e,a.sd())+4,o.rounding=1,i=a.d.length,i<32?(e=Math.ceil(i/3),t=(1/tinyPow(4,e)).toString()):(e=16,t=`2.3283064365386962890625e-10`),a=taylorSeries(o,1,a.times(t),new o(1),!0);for(var c,l=e,u=new o(8);l--;)c=a.times(a),a=s.minus(c.times(u.minus(c.times(u))));return finalise(a,o.precision=n,o.rounding=r,!0)},J.hyperbolicSine=J.sinh=function(){var e,t,n,r,i=this,a=i.constructor;if(!i.isFinite()||i.isZero())return new a(i);if(t=a.precision,n=a.rounding,a.precision=t+Math.max(i.e,i.sd())+4,a.rounding=1,r=i.d.length,r<3)i=taylorSeries(a,2,i,i,!0);else{e=1.4*Math.sqrt(r),e=e>16?16:e|0,i=i.times(1/tinyPow(5,e)),i=taylorSeries(a,2,i,i,!0);for(var o,s=new a(5),c=new a(16),l=new a(20);e--;)o=i.times(i),i=i.times(s.plus(o.times(c.times(o).plus(l))))}return a.precision=t,a.rounding=n,finalise(i,t,n,!0)},J.hyperbolicTangent=J.tanh=function(){var e,t,n=this,r=n.constructor;return n.isFinite()?n.isZero()?new r(n):(e=r.precision,t=r.rounding,r.precision=e+7,r.rounding=1,Y(n.sinh(),n.cosh(),r.precision=e,r.rounding=t)):new r(n.s)},J.inverseCosine=J.acos=function(){var e=this,t=e.constructor,n=e.abs().cmp(1),r=t.precision,i=t.rounding;return n===-1?e.isZero()?getPi(t,r+4,i).times(.5):(t.precision=r+6,t.rounding=1,e=new t(1).minus(e).div(e.plus(1)).sqrt().atan(),t.precision=r,t.rounding=i,e.times(2)):n===0?e.isNeg()?getPi(t,r,i):new t(0):new t(NaN)},J.inverseHyperbolicCosine=J.acosh=function(){var e,t,n=this,r=n.constructor;return n.lte(1)?new r(n.eq(1)?0:NaN):n.isFinite()?(e=r.precision,t=r.rounding,r.precision=e+Math.max(Math.abs(n.e),n.sd())+4,r.rounding=1,V=!1,n=n.times(n).minus(1).sqrt().plus(n),V=!0,r.precision=e,r.rounding=t,n.ln()):new r(n)},J.inverseHyperbolicSine=J.asinh=function(){var e,t,n=this,r=n.constructor;return!n.isFinite()||n.isZero()?new r(n):(e=r.precision,t=r.rounding,r.precision=e+2*Math.max(Math.abs(n.e),n.sd())+6,r.rounding=1,V=!1,n=n.times(n).plus(1).sqrt().plus(n),V=!0,r.precision=e,r.rounding=t,n.ln())},J.inverseHyperbolicTangent=J.atanh=function(){var e,t,n,r,i=this,a=i.constructor;return i.isFinite()?i.e>=0?new a(i.abs().eq(1)?i.s/0:i.isZero()?i:NaN):(e=a.precision,t=a.rounding,r=i.sd(),Math.max(r,e)<2*-i.e-1?finalise(new a(i),e,t,!0):(a.precision=n=r-i.e,i=Y(i.plus(1),new a(1).minus(i),n+e,1),a.precision=e+4,a.rounding=1,i=i.ln(),a.precision=e,a.rounding=t,i.times(.5))):new a(NaN)},J.inverseSine=J.asin=function(){var e,t,n,r,i=this,a=i.constructor;return i.isZero()?new a(i):(t=i.abs().cmp(1),n=a.precision,r=a.rounding,t===-1?(a.precision=n+6,a.rounding=1,i=i.div(new a(1).minus(i.times(i)).sqrt().plus(1)).atan(),a.precision=n,a.rounding=r,i.times(2)):t===0?(e=getPi(a,n+4,r).times(.5),e.s=i.s,e):new a(NaN))},J.inverseTangent=J.atan=function(){var e,t,n,r,i,a,o,s,c,l=this,u=l.constructor,d=u.precision,f=u.rounding;if(l.isFinite()){if(l.isZero())return new u(l);if(l.abs().eq(1)&&d+4<=_t)return o=getPi(u,d+4,f).times(.25),o.s=l.s,o}else{if(!l.s)return new u(NaN);if(d+4<=_t)return o=getPi(u,d+4,f).times(.5),o.s=l.s,o}for(u.precision=s=d+10,u.rounding=1,n=Math.min(28,s/q+2|0),e=n;e;--e)l=l.div(l.times(l).plus(1).sqrt().plus(1));for(V=!1,t=Math.ceil(s/q),r=1,c=l.times(l),o=new u(l),i=l;e!==-1;)if(i=i.times(c),a=o.minus(i.div(r+=2)),i=i.times(c),o=a.plus(i.div(r+=2)),o.d[t]!==void 0)for(e=t;o.d[e]===a.d[e]&&e--;);return n&&(o=o.times(2<<n-1)),V=!0,finalise(o,u.precision=d,u.rounding=f,!0)},J.isFinite=function(){return!!this.d},J.isInteger=J.isInt=function(){return!!this.d&&W(this.e/q)>this.d.length-2},J.isNaN=function(){return!this.s},J.isNegative=J.isNeg=function(){return this.s<0},J.isPositive=J.isPos=function(){return this.s>0},J.isZero=function(){return!!this.d&&this.d[0]===0},J.lessThan=J.lt=function(e){return this.cmp(e)<0},J.lessThanOrEqualTo=J.lte=function(e){return this.cmp(e)<1},J.logarithm=J.log=function(e){var t,n,r,i,a,o,s,c,l=this,u=l.constructor,d=u.precision,f=u.rounding,p=5;if(e==null)e=new u(10),t=!0;else{if(e=new u(e),n=e.d,e.s<0||!n||!n[0]||e.eq(1))return new u(NaN);t=e.eq(10)}if(n=l.d,l.s<0||!n||!n[0]||l.eq(1))return new u(n&&!n[0]?-1/0:l.s==1?n?0:1/0:NaN);if(t)if(n.length>1)a=!0;else{for(i=n[0];i%10==0;)i/=10;a=i!==1}if(V=!1,s=d+p,o=naturalLogarithm(l,s),r=t?getLn10(u,s+10):naturalLogarithm(e,s),c=Y(o,r,s,1),checkRoundingDigits(c.d,i=d,f))do if(s+=10,o=naturalLogarithm(l,s),r=t?getLn10(u,s+10):naturalLogarithm(e,s),c=Y(o,r,s,1),!a){+digitsToString(c.d).slice(i+1,i+15)+1==0x5af3107a4000&&(c=finalise(c,d+1,0));break}while(checkRoundingDigits(c.d,i+=10,f));return V=!0,finalise(c,d,f)},J.minus=J.sub=function(e){var t,n,r,i,a,o,s,c,l,u,d,f,p=this,m=p.constructor;if(e=new m(e),!p.d||!e.d)return!p.s||!e.s?e=new m(NaN):p.d?e.s=-e.s:e=new m(e.d||p.s!==e.s?p:NaN),e;if(p.s!=e.s)return e.s=-e.s,p.plus(e);if(l=p.d,f=e.d,s=m.precision,c=m.rounding,!l[0]||!f[0]){if(f[0])e.s=-e.s;else if(l[0])e=new m(p);else return new m(c===3?-0:0);return V?finalise(e,s,c):e}if(n=W(e.e/q),u=W(p.e/q),l=l.slice(),a=u-n,a){for(d=a<0,d?(t=l,a=-a,o=f.length):(t=f,n=u,o=l.length),r=Math.max(Math.ceil(s/q),o)+2,a>r&&(a=r,t.length=1),t.reverse(),r=a;r--;)t.push(0);t.reverse()}else{for(r=l.length,o=f.length,d=r<o,d&&(o=r),r=0;r<o;r++)if(l[r]!=f[r]){d=l[r]<f[r];break}a=0}for(d&&(t=l,l=f,f=t,e.s=-e.s),o=l.length,r=f.length-o;r>0;--r)l[o++]=0;for(r=f.length;r>a;){if(l[--r]<f[r]){for(i=r;i&&l[--i]===0;)l[i]=K-1;--l[i],l[r]+=K}l[r]-=f[r]}for(;l[--o]===0;)l.pop();for(;l[0]===0;l.shift())--n;return l[0]?(e.d=l,e.e=getBase10Exponent(l,n),V?finalise(e,s,c):e):new m(c===3?-0:0)},J.modulo=J.mod=function(e){var t,n=this,r=n.constructor;return e=new r(e),!n.d||!e.s||e.d&&!e.d[0]?new r(NaN):!e.d||n.d&&!n.d[0]?finalise(new r(n),r.precision,r.rounding):(V=!1,r.modulo==9?(t=Y(n,e.abs(),0,3,1),t.s*=e.s):t=Y(n,e,0,r.modulo,1),t=t.times(e),V=!0,n.minus(t))},J.naturalExponential=J.exp=function(){return naturalExponential(this)},J.naturalLogarithm=J.ln=function(){return naturalLogarithm(this)},J.negated=J.neg=function(){var e=new this.constructor(this);return e.s=-e.s,finalise(e)},J.plus=J.add=function(e){var t,n,r,i,a,o,s,c,l,u,d=this,f=d.constructor;if(e=new f(e),!d.d||!e.d)return!d.s||!e.s?e=new f(NaN):d.d||(e=new f(e.d||d.s===e.s?d:NaN)),e;if(d.s!=e.s)return e.s=-e.s,d.minus(e);if(l=d.d,u=e.d,s=f.precision,c=f.rounding,!l[0]||!u[0])return u[0]||(e=new f(d)),V?finalise(e,s,c):e;if(a=W(d.e/q),r=W(e.e/q),l=l.slice(),i=a-r,i){for(i<0?(n=l,i=-i,o=u.length):(n=u,r=a,o=l.length),a=Math.ceil(s/q),o=a>o?a+1:o+1,i>o&&(i=o,n.length=1),n.reverse();i--;)n.push(0);n.reverse()}for(o=l.length,i=u.length,o-i<0&&(i=o,n=u,u=l,l=n),t=0;i;)t=(l[--i]=l[i]+u[i]+t)/K|0,l[i]%=K;for(t&&(l.unshift(t),++r),o=l.length;l[--o]==0;)l.pop();return e.d=l,e.e=getBase10Exponent(l,r),V?finalise(e,s,c):e},J.precision=J.sd=function(e){var t,n=this;if(e!==void 0&&e!==!!e&&e!==1&&e!==0)throw Error(U+e);return n.d?(t=getPrecision(n.d),e&&n.e+1>t&&(t=n.e+1)):t=NaN,t},J.round=function(){var e=this,t=e.constructor;return finalise(new t(e),e.e+1,t.rounding)},J.sine=J.sin=function(){var e,t,n=this,r=n.constructor;return n.isFinite()?n.isZero()?new r(n):(e=r.precision,t=r.rounding,r.precision=e+Math.max(n.e,n.sd())+q,r.rounding=1,n=sine(r,toLessThanHalfPi(r,n)),r.precision=e,r.rounding=t,finalise(B>2?n.neg():n,e,t,!0)):new r(NaN)},J.squareRoot=J.sqrt=function(){var e,t,n,r,i,a,o=this,s=o.d,c=o.e,l=o.s,u=o.constructor;if(l!==1||!s||!s[0])return new u(!l||l<0&&(!s||s[0])?NaN:s?o:1/0);for(V=!1,l=Math.sqrt(+o),l==0||l==1/0?(t=digitsToString(s),(t.length+c)%2==0&&(t+=`0`),l=Math.sqrt(t),c=W((c+1)/2)-(c<0||c%2),l==1/0?t=`5e`+c:(t=l.toExponential(),t=t.slice(0,t.indexOf(`e`)+1)+c),r=new u(t)):r=new u(l.toString()),n=(c=u.precision)+3;;)if(a=r,r=a.plus(Y(o,a,n+2,1)).times(.5),digitsToString(a.d).slice(0,n)===(t=digitsToString(r.d)).slice(0,n))if(t=t.slice(n-3,n+1),t==`9999`||!i&&t==`4999`){if(!i&&(finalise(a,c+1,0),a.times(a).eq(o))){r=a;break}n+=4,i=1}else{(!+t||!+t.slice(1)&&t.charAt(0)==`5`)&&(finalise(r,c+1,1),e=!r.times(r).eq(o));break}return V=!0,finalise(r,c,u.rounding,e)},J.tangent=J.tan=function(){var e,t,n=this,r=n.constructor;return n.isFinite()?n.isZero()?new r(n):(e=r.precision,t=r.rounding,r.precision=e+10,r.rounding=1,n=n.sin(),n.s=1,n=Y(n,new r(1).minus(n.times(n)).sqrt(),e+10,0),r.precision=e,r.rounding=t,finalise(B==2||B==4?n.neg():n,e,t,!0)):new r(NaN)},J.times=J.mul=function(e){var t,n,r,i,a,o,s,c,l,u=this,d=u.constructor,f=u.d,p=(e=new d(e)).d;if(e.s*=u.s,!f||!f[0]||!p||!p[0])return new d(!e.s||f&&!f[0]&&!p||p&&!p[0]&&!f?NaN:!f||!p?e.s/0:e.s*0);for(n=W(u.e/q)+W(e.e/q),c=f.length,l=p.length,c<l&&(a=f,f=p,p=a,o=c,c=l,l=o),a=[],o=c+l,r=o;r--;)a.push(0);for(r=l;--r>=0;){for(t=0,i=c+r;i>r;)s=a[i]+p[r]*f[i-r-1]+t,a[i--]=s%K|0,t=s/K|0;a[i]=(a[i]+t)%K|0}for(;!a[--o];)a.pop();return t?++n:a.shift(),e.d=a,e.e=getBase10Exponent(a,n),V?finalise(e,d.precision,d.rounding):e},J.toBinary=function(e,t){return toStringBinary(this,2,e,t)},J.toDecimalPlaces=J.toDP=function(e,t){var n=this,r=n.constructor;return n=new r(n),e===void 0?n:(checkInt32(e,0,z),t===void 0?t=r.rounding:checkInt32(t,0,8),finalise(n,e+n.e+1,t))},J.toExponential=function(e,t){var n,r=this,i=r.constructor;return e===void 0?n=finiteToString(r,!0):(checkInt32(e,0,z),t===void 0?t=i.rounding:checkInt32(t,0,8),r=finalise(new i(r),e+1,t),n=finiteToString(r,!0,e+1)),r.isNeg()&&!r.isZero()?`-`+n:n},J.toFixed=function(e,t){var n,r,i=this,a=i.constructor;return e===void 0?n=finiteToString(i):(checkInt32(e,0,z),t===void 0?t=a.rounding:checkInt32(t,0,8),r=finalise(new a(i),e+i.e+1,t),n=finiteToString(r,!1,e+r.e+1)),i.isNeg()&&!i.isZero()?`-`+n:n},J.toFraction=function(e){var t,n,r,i,a,o,s,c,l,u,d,f,p=this,m=p.d,h=p.constructor;if(!m)return new h(p);if(l=n=new h(1),r=c=new h(0),t=new h(r),a=t.e=getPrecision(m)-p.e-1,o=a%q,t.d[0]=G(10,o<0?q+o:o),e==null)e=a>0?t:l;else{if(s=new h(e),!s.isInt()||s.lt(l))throw Error(U+s);e=s.gt(t)?a>0?t:l:s}for(V=!1,s=new h(digitsToString(m)),u=h.precision,h.precision=a=m.length*q*2;d=Y(s,t,0,1,1),i=n.plus(d.times(r)),i.cmp(e)!=1;)n=r,r=i,i=l,l=c.plus(d.times(i)),c=i,i=t,t=s.minus(d.times(i)),s=i;return i=Y(e.minus(n),r,0,1,1),c=c.plus(i.times(l)),n=n.plus(i.times(r)),c.s=l.s=p.s,f=Y(l,r,a,1).minus(p).abs().cmp(Y(c,n,a,1).minus(p).abs())<1?[l,r]:[c,n],h.precision=u,V=!0,f},J.toHexadecimal=J.toHex=function(e,t){return toStringBinary(this,16,e,t)},J.toNearest=function(e,t){var n=this,r=n.constructor;if(n=new r(n),e==null){if(!n.d)return n;e=new r(1),t=r.rounding}else{if(e=new r(e),t===void 0?t=r.rounding:checkInt32(t,0,8),!n.d)return e.s?n:e;if(!e.d)return e.s&&=n.s,e}return e.d[0]?(V=!1,n=Y(n,e,0,t,1).times(e),V=!0,finalise(n)):(e.s=n.s,n=e),n},J.toNumber=function(){return+this},J.toOctal=function(e,t){return toStringBinary(this,8,e,t)},J.toPower=J.pow=function(e){var t,n,r,i,a,o,s=this,c=s.constructor,l=+(e=new c(e));if(!s.d||!e.d||!s.d[0]||!e.d[0])return new c(G(+s,l));if(s=new c(s),s.eq(1))return s;if(r=c.precision,a=c.rounding,e.eq(1))return finalise(s,r,a);if(t=W(e.e/q),t>=e.d.length-1&&(n=l<0?-l:l)<=ht)return i=intPow(c,s,n,r),e.s<0?new c(1).div(i):finalise(i,r,a);if(o=s.s,o<0){if(t<e.d.length-1)return new c(NaN);if(e.d[t]&1||(o=1),s.e==0&&s.d[0]==1&&s.d.length==1)return s.s=o,s}return n=G(+s,l),t=n==0||!isFinite(n)?W(l*(Math.log(`0.`+digitsToString(s.d))/Math.LN10+s.e+1)):new c(n+``).e,t>c.maxE+1||t<c.minE-1?new c(t>0?o/0:0):(V=!1,c.rounding=s.s=1,n=Math.min(12,(t+``).length),i=naturalExponential(e.times(naturalLogarithm(s,r+n)),r),i.d&&(i=finalise(i,r+5,1),checkRoundingDigits(i.d,r,a)&&(t=r+10,i=finalise(naturalExponential(e.times(naturalLogarithm(s,t+n)),t),t+5,1),+digitsToString(i.d).slice(r+1,r+15)+1==0x5af3107a4000&&(i=finalise(i,r+1,0)))),i.s=o,V=!0,c.rounding=a,finalise(i,r,a))},J.toPrecision=function(e,t){var n,r=this,i=r.constructor;return e===void 0?n=finiteToString(r,r.e<=i.toExpNeg||r.e>=i.toExpPos):(checkInt32(e,1,z),t===void 0?t=i.rounding:checkInt32(t,0,8),r=finalise(new i(r),e,t),n=finiteToString(r,e<=r.e||r.e<=i.toExpNeg,e)),r.isNeg()&&!r.isZero()?`-`+n:n},J.toSignificantDigits=J.toSD=function(e,t){var n=this,r=n.constructor;return e===void 0?(e=r.precision,t=r.rounding):(checkInt32(e,1,z),t===void 0?t=r.rounding:checkInt32(t,0,8)),finalise(new r(n),e,t)},J.toString=function(){var e=this,t=e.constructor,n=finiteToString(e,e.e<=t.toExpNeg||e.e>=t.toExpPos);return e.isNeg()&&!e.isZero()?`-`+n:n},J.truncated=J.trunc=function(){return finalise(new this.constructor(this),this.e+1,1)},J.valueOf=J.toJSON=function(){var e=this,t=e.constructor,n=finiteToString(e,e.e<=t.toExpNeg||e.e>=t.toExpPos);return e.isNeg()?`-`+n:n};function digitsToString(e){var t,n,r,i=e.length-1,a=``,o=e[0];if(i>0){for(a+=o,t=1;t<i;t++)r=e[t]+``,n=q-r.length,n&&(a+=getZeroString(n)),a+=r;o=e[t],r=o+``,n=q-r.length,n&&(a+=getZeroString(n))}else if(o===0)return`0`;for(;o%10==0;)o/=10;return a+o}function checkInt32(e,t,n){if(e!==~~e||e<t||e>n)throw Error(U+e)}function checkRoundingDigits(e,t,n,r){var i,a,o,s;for(a=e[0];a>=10;a/=10)--t;return--t<0?(t+=q,i=0):(i=Math.ceil((t+1)/q),t%=q),a=G(10,q-t),s=e[i]%a|0,r==null?t<3?(t==0?s=s/100|0:t==1&&(s=s/10|0),o=n<4&&s==99999||n>3&&s==49999||s==5e4||s==0):o=(n<4&&s+1==a||n>3&&s+1==a/2)&&(e[i+1]/a/100|0)==G(10,t-2)-1||(s==a/2||s==0)&&(e[i+1]/a/100|0)==0:t<4?(t==0?s=s/1e3|0:t==1?s=s/100|0:t==2&&(s=s/10|0),o=(r||n<4)&&s==9999||!r&&n>3&&s==4999):o=((r||n<4)&&s+1==a||!r&&n>3&&s+1==a/2)&&(e[i+1]/a/1e3|0)==G(10,t-3)-1,o}function convertBase(e,t,n){for(var r,i=[0],a,o=0,s=e.length;o<s;){for(a=i.length;a--;)i[a]*=t;for(i[0]+=rt.indexOf(e.charAt(o++)),r=0;r<i.length;r++)i[r]>n-1&&(i[r+1]===void 0&&(i[r+1]=0),i[r+1]+=i[r]/n|0,i[r]%=n)}return i.reverse()}function cosine(e,t){var n,r,i;if(t.isZero())return t;r=t.d.length,r<32?(n=Math.ceil(r/3),i=(1/tinyPow(4,n)).toString()):(n=16,i=`2.3283064365386962890625e-10`),e.precision+=n,t=taylorSeries(e,1,t.times(i),new e(1));for(var a=n;a--;){var o=t.times(t);t=o.times(o).minus(o).times(8).plus(1)}return e.precision-=n,t}var Y=(function(){function multiplyInteger(e,t,n){var r,i=0,a=e.length;for(e=e.slice();a--;)r=e[a]*t+i,e[a]=r%n|0,i=r/n|0;return i&&e.unshift(i),e}function compare(e,t,n,r){var i,a;if(n!=r)a=n>r?1:-1;else for(i=a=0;i<n;i++)if(e[i]!=t[i]){a=e[i]>t[i]?1:-1;break}return a}function subtract(e,t,n,r){for(var i=0;n--;)e[n]-=i,i=e[n]<t[n]?1:0,e[n]=i*r+e[n]-t[n];for(;!e[0]&&e.length>1;)e.shift()}return function(e,t,n,r,i,a){var o,s,c,l,u,d,f,p,m,h,g,_,v,y,b,x,S,ee,C,w,T=e.constructor,E=e.s==t.s?1:-1,D=e.d,O=t.d;if(!D||!D[0]||!O||!O[0])return new T(!e.s||!t.s||(D?O&&D[0]==O[0]:!O)?NaN:D&&D[0]==0||!O?E*0:E/0);for(a?(u=1,s=e.e-t.e):(a=K,u=q,s=W(e.e/u)-W(t.e/u)),C=O.length,S=D.length,m=new T(E),h=m.d=[],c=0;O[c]==(D[c]||0);c++);if(O[c]>(D[c]||0)&&s--,n==null?(y=n=T.precision,r=T.rounding):y=i?n+(e.e-t.e)+1:n,y<0)h.push(1),d=!0;else{if(y=y/u+2|0,c=0,C==1){for(l=0,O=O[0],y++;(c<S||l)&&y--;c++)b=l*a+(D[c]||0),h[c]=b/O|0,l=b%O|0;d=l||c<S}else{for(l=a/(O[0]+1)|0,l>1&&(O=multiplyInteger(O,l,a),D=multiplyInteger(D,l,a),C=O.length,S=D.length),x=C,g=D.slice(0,C),_=g.length;_<C;)g[_++]=0;w=O.slice(),w.unshift(0),ee=O[0],O[1]>=a/2&&++ee;do l=0,o=compare(O,g,C,_),o<0?(v=g[0],C!=_&&(v=v*a+(g[1]||0)),l=v/ee|0,l>1?(l>=a&&(l=a-1),f=multiplyInteger(O,l,a),p=f.length,_=g.length,o=compare(f,g,p,_),o==1&&(l--,subtract(f,C<p?w:O,p,a))):(l==0&&(o=l=1),f=O.slice()),p=f.length,p<_&&f.unshift(0),subtract(g,f,_,a),o==-1&&(_=g.length,o=compare(O,g,C,_),o<1&&(l++,subtract(g,C<_?w:O,_,a))),_=g.length):o===0&&(l++,g=[0]),h[c++]=l,o&&g[0]?g[_++]=D[x]||0:(g=[D[x]],_=1);while((x++<S||g[0]!==void 0)&&y--);d=g[0]!==void 0}h[0]||h.shift()}if(u==1)m.e=s,st=d;else{for(c=1,l=h[0];l>=10;l/=10)c++;m.e=c+s*u-1,finalise(m,i?n+m.e+1:n,r,d)}return m}})();function finalise(e,t,n,r){var i,a,o,s,c,l,u,d,f,p=e.constructor;out:if(t!=null){if(d=e.d,!d)return e;for(i=1,s=d[0];s>=10;s/=10)i++;if(a=t-i,a<0)a+=q,o=t,u=d[f=0],c=u/G(10,i-o-1)%10|0;else if(f=Math.ceil((a+1)/q),s=d.length,f>=s)if(r){for(;s++<=f;)d.push(0);u=c=0,i=1,a%=q,o=a-q+1}else break out;else{for(u=s=d[f],i=1;s>=10;s/=10)i++;a%=q,o=a-q+i,c=o<0?0:u/G(10,i-o-1)%10|0}if(r=r||t<0||d[f+1]!==void 0||(o<0?u:u%G(10,i-o-1)),l=n<4?(c||r)&&(n==0||n==(e.s<0?3:2)):c>5||c==5&&(n==4||r||n==6&&(a>0?o>0?u/G(10,i-o):0:d[f-1])%10&1||n==(e.s<0?8:7)),t<1||!d[0])return d.length=0,l?(t-=e.e+1,d[0]=G(10,(q-t%q)%q),e.e=-t||0):d[0]=e.e=0,e;if(a==0?(d.length=f,s=1,f--):(d.length=f+1,s=G(10,q-a),d[f]=o>0?(u/G(10,i-o)%G(10,o)|0)*s:0),l)for(;;)if(f==0){for(a=1,o=d[0];o>=10;o/=10)a++;for(o=d[0]+=s,s=1;o>=10;o/=10)s++;a!=s&&(e.e++,d[0]==K&&(d[0]=1));break}else{if(d[f]+=s,d[f]!=K)break;d[f--]=0,s=1}for(a=d.length;d[--a]===0;)d.pop()}return V&&(e.e>p.maxE?(e.d=null,e.e=NaN):e.e<p.minE&&(e.e=0,e.d=[0])),e}function finiteToString(e,t,n){if(!e.isFinite())return nonFiniteToString(e);var r,i=e.e,a=digitsToString(e.d),o=a.length;return t?(n&&(r=n-o)>0?a=a.charAt(0)+`.`+a.slice(1)+getZeroString(r):o>1&&(a=a.charAt(0)+`.`+a.slice(1)),a=a+(e.e<0?`e`:`e+`)+e.e):i<0?(a=`0.`+getZeroString(-i-1)+a,n&&(r=n-o)>0&&(a+=getZeroString(r))):i>=o?(a+=getZeroString(i+1-o),n&&(r=n-i-1)>0&&(a=a+`.`+getZeroString(r))):((r=i+1)<o&&(a=a.slice(0,r)+`.`+a.slice(r)),n&&(r=n-o)>0&&(i+1===o&&(a+=`.`),a+=getZeroString(r))),a}function getBase10Exponent(e,t){var n=e[0];for(t*=q;n>=10;n/=10)t++;return t}function getLn10(e,t,n){if(t>gt)throw V=!0,n&&(e.precision=n),Error(ct);return finalise(new e(it),t,1,!0)}function getPi(e,t,n){if(t>_t)throw Error(ct);return finalise(new e(at),t,n,!0)}function getPrecision(e){var t=e.length-1,n=t*q+1;if(t=e[t],t){for(;t%10==0;t/=10)n--;for(t=e[0];t>=10;t/=10)n++}return n}function getZeroString(e){for(var t=``;e--;)t+=`0`;return t}function intPow(e,t,n,r){var i,a=new e(1),o=Math.ceil(r/q+4);for(V=!1;;){if(n%2&&(a=a.times(t),truncate(a.d,o)&&(i=!0)),n=W(n/2),n===0){n=a.d.length-1,i&&a.d[n]===0&&++a.d[n];break}t=t.times(t),truncate(t.d,o)}return V=!0,a}function isOdd(e){return e.d[e.d.length-1]&1}function maxOrMin(e,t,n){for(var r,i,a=new e(t[0]),o=0;++o<t.length;){if(i=new e(t[o]),!i.s){a=i;break}r=a.cmp(i),(r===n||r===0&&a.s===n)&&(a=i)}return a}function naturalExponential(e,t){var n,r,i,a,o,s,c,l=0,u=0,d=0,f=e.constructor,p=f.rounding,m=f.precision;if(!e.d||!e.d[0]||e.e>17)return new f(e.d?e.d[0]?e.s<0?0:1/0:1:e.s?e.s<0?0:e:NaN);for(t==null?(V=!1,c=m):c=t,s=new f(.03125);e.e>-2;)e=e.times(s),d+=5;for(r=Math.log(G(2,d))/Math.LN10*2+5|0,c+=r,n=a=o=new f(1),f.precision=c;;){if(a=finalise(a.times(e),c,1),n=n.times(++u),s=o.plus(Y(a,n,c,1)),digitsToString(s.d).slice(0,c)===digitsToString(o.d).slice(0,c)){for(i=d;i--;)o=finalise(o.times(o),c,1);if(t==null)if(l<3&&checkRoundingDigits(o.d,c-r,p,l))f.precision=c+=10,n=a=s=new f(1),u=0,l++;else return finalise(o,f.precision=m,p,V=!0);else return f.precision=m,o}o=s}}function naturalLogarithm(e,t){var n,r,i,a,o,s,c,l,u,d,f,p=1,m=10,h=e,g=h.d,_=h.constructor,v=_.rounding,y=_.precision;if(h.s<0||!g||!g[0]||!h.e&&g[0]==1&&g.length==1)return new _(g&&!g[0]?-1/0:h.s==1?g?0:h:NaN);if(t==null?(V=!1,u=y):u=t,_.precision=u+=m,n=digitsToString(g),r=n.charAt(0),Math.abs(a=h.e)<0x5543df729c000){for(;r<7&&r!=1||r==1&&n.charAt(1)>3;)h=h.times(e),n=digitsToString(h.d),r=n.charAt(0),p++;a=h.e,r>1?(h=new _(`0.`+n),a++):h=new _(r+`.`+n.slice(1))}else return l=getLn10(_,u+2,y).times(a+``),h=naturalLogarithm(new _(r+`.`+n.slice(1)),u-m).plus(l),_.precision=y,t==null?finalise(h,y,v,V=!0):h;for(d=h,c=o=h=Y(h.minus(1),h.plus(1),u,1),f=finalise(h.times(h),u,1),i=3;;){if(o=finalise(o.times(f),u,1),l=c.plus(Y(o,new _(i),u,1)),digitsToString(l.d).slice(0,u)===digitsToString(c.d).slice(0,u))if(c=c.times(2),a!==0&&(c=c.plus(getLn10(_,u+2,y).times(a+``))),c=Y(c,new _(p),u,1),t==null)if(checkRoundingDigits(c.d,u-m,v,s))_.precision=u+=m,l=o=h=Y(d.minus(1),d.plus(1),u,1),f=finalise(h.times(h),u,1),i=s=1;else return finalise(c,_.precision=y,v,V=!0);else return _.precision=y,c;c=l,i+=2}}function nonFiniteToString(e){return String(e.s*e.s/0)}function parseDecimal(e,t){var n,r,i;for((n=t.indexOf(`.`))>-1&&(t=t.replace(`.`,``)),(r=t.search(/e/i))>0?(n<0&&(n=r),n+=+t.slice(r+1),t=t.substring(0,r)):n<0&&(n=t.length),r=0;t.charCodeAt(r)===48;r++);for(i=t.length;t.charCodeAt(i-1)===48;--i);if(t=t.slice(r,i),t){if(i-=r,e.e=n=n-r-1,e.d=[],r=(n+1)%q,n<0&&(r+=q),r<i){for(r&&e.d.push(+t.slice(0,r)),i-=q;r<i;)e.d.push(+t.slice(r,r+=q));t=t.slice(r),r=q-t.length}else r-=i;for(;r--;)t+=`0`;e.d.push(+t),V&&(e.e>e.constructor.maxE?(e.d=null,e.e=NaN):e.e<e.constructor.minE&&(e.e=0,e.d=[0]))}else e.e=0,e.d=[0];return e}function parseOther(e,t){var n,r,i,a,o,s,c,l,u;if(t.indexOf(`_`)>-1){if(t=t.replace(/(\d)_(?=\d)/g,`$1`),mt.test(t))return parseDecimal(e,t)}else if(t===`Infinity`||t===`NaN`)return+t||(e.s=NaN),e.e=NaN,e.d=null,e;if(ft.test(t))n=16,t=t.toLowerCase();else if(dt.test(t))n=2;else if(pt.test(t))n=8;else throw Error(U+t);for(a=t.search(/p/i),a>0?(c=+t.slice(a+1),t=t.substring(2,a)):t=t.slice(2),a=t.indexOf(`.`),o=a>=0,r=e.constructor,o&&(t=t.replace(`.`,``),s=t.length,a=s-a,i=intPow(r,new r(n),a,a*2)),l=convertBase(t,n,K),u=l.length-1,a=u;l[a]===0;--a)l.pop();return a<0?new r(e.s*0):(e.e=getBase10Exponent(l,u),e.d=l,V=!1,o&&(e=Y(e,i,s*4)),c&&(e=e.times(Math.abs(c)<54?G(2,c):X.pow(2,c))),V=!0,e)}function sine(e,t){var n,r=t.d.length;if(r<3)return t.isZero()?t:taylorSeries(e,2,t,t);n=1.4*Math.sqrt(r),n=n>16?16:n|0,t=t.times(1/tinyPow(5,n)),t=taylorSeries(e,2,t,t);for(var i,a=new e(5),o=new e(16),s=new e(20);n--;)i=t.times(t),t=t.times(a.plus(i.times(o.times(i).minus(s))));return t}function taylorSeries(e,t,n,r,i){var a,o,s,c,l=1,u=e.precision,d=Math.ceil(u/q);for(V=!1,c=n.times(n),s=new e(r);;){if(o=Y(s.times(c),new e(t++*t++),u,1),s=i?r.plus(o):r.minus(o),r=Y(o.times(c),new e(t++*t++),u,1),o=s.plus(r),o.d[d]!==void 0){for(a=d;o.d[a]===s.d[a]&&a--;);if(a==-1)break}a=s,s=r,r=o,o=a,l++}return V=!0,o.d.length=d+1,o}function tinyPow(e,t){for(var n=e;--t;)n*=e;return n}function toLessThanHalfPi(e,t){var n,r=t.s<0,i=getPi(e,e.precision,1),a=i.times(.5);if(t=t.abs(),t.lte(a))return B=r?4:1,t;if(n=t.divToInt(i),n.isZero())B=r?3:2;else{if(t=t.minus(n.times(i)),t.lte(a))return B=isOdd(n)?r?2:3:r?4:1,t;B=isOdd(n)?r?1:4:r?3:2}return t.minus(i).abs()}function toStringBinary(e,t,n,r){var i,a,o,s,c,l,u,d,f,p=e.constructor,m=n!==void 0;if(m?(checkInt32(n,1,z),r===void 0?r=p.rounding:checkInt32(r,0,8)):(n=p.precision,r=p.rounding),!e.isFinite())u=nonFiniteToString(e);else{for(u=finiteToString(e),o=u.indexOf(`.`),m?(i=2,t==16?n=n*4-3:t==8&&(n=n*3-2)):i=t,o>=0&&(u=u.replace(`.`,``),f=new p(1),f.e=u.length-o,f.d=convertBase(finiteToString(f),10,i),f.e=f.d.length),d=convertBase(u,10,i),a=c=d.length;d[--c]==0;)d.pop();if(!d[0])u=m?`0p+0`:`0`;else{if(o<0?a--:(e=new p(e),e.d=d,e.e=a,e=Y(e,f,n,r,0,i),d=e.d,a=e.e,l=st),o=d[n],s=i/2,l||=d[n+1]!==void 0,l=r<4?(o!==void 0||l)&&(r===0||r===(e.s<0?3:2)):o>s||o===s&&(r===4||l||r===6&&d[n-1]&1||r===(e.s<0?8:7)),d.length=n,l)for(;++d[--n]>i-1;)d[n]=0,n||(++a,d.unshift(1));for(c=d.length;!d[c-1];--c);for(o=0,u=``;o<c;o++)u+=rt.charAt(d[o]);if(m){if(c>1)if(t==16||t==8){for(o=t==16?4:3,--c;c%o;c++)u+=`0`;for(d=convertBase(u,i,t),c=d.length;!d[c-1];--c);for(o=1,u=`1.`;o<c;o++)u+=rt.charAt(d[o])}else u=u.charAt(0)+`.`+u.slice(1);u=u+(a<0?`p`:`p+`)+a}else if(a<0){for(;++a;)u=`0`+u;u=`0.`+u}else if(++a>c)for(a-=c;a--;)u+=`0`;else a<c&&(u=u.slice(0,a)+`.`+u.slice(a))}u=(t==16?`0x`:t==2?`0b`:t==8?`0o`:``)+u}return e.s<0?`-`+u:u}function truncate(e,t){if(e.length>t)return e.length=t,!0}function abs(e){return new this(e).abs()}function acos(e){return new this(e).acos()}function acosh(e){return new this(e).acosh()}function add(e,t){return new this(e).plus(t)}function asin(e){return new this(e).asin()}function asinh(e){return new this(e).asinh()}function atan(e){return new this(e).atan()}function atanh(e){return new this(e).atanh()}function atan2(e,t){e=new this(e),t=new this(t);var n,r=this.precision,i=this.rounding,a=r+4;return!e.s||!t.s?n=new this(NaN):!e.d&&!t.d?(n=getPi(this,a,1).times(t.s>0?.25:.75),n.s=e.s):!t.d||e.isZero()?(n=t.s<0?getPi(this,r,i):new this(0),n.s=e.s):!e.d||t.isZero()?(n=getPi(this,a,1).times(.5),n.s=e.s):t.s<0?(this.precision=a,this.rounding=1,n=this.atan(Y(e,t,a,1)),t=getPi(this,a,1),this.precision=r,this.rounding=i,n=e.s<0?n.minus(t):n.plus(t)):n=this.atan(Y(e,t,a,1)),n}function cbrt(e){return new this(e).cbrt()}function ceil(e){return finalise(e=new this(e),e.e+1,2)}function clamp(e,t,n){return new this(e).clamp(t,n)}function config(e){if(!e||typeof e!=`object`)throw Error(H+`Object expected`);var t,n,r,i=e.defaults===!0,a=[`precision`,1,z,`rounding`,0,8,`toExpNeg`,-R,0,`toExpPos`,0,R,`maxE`,0,R,`minE`,-R,0,`modulo`,0,9];for(t=0;t<a.length;t+=3)if(n=a[t],i&&(this[n]=ot[n]),(r=e[n])!==void 0)if(W(r)===r&&r>=a[t+1]&&r<=a[t+2])this[n]=r;else throw Error(U+n+`: `+r);if(n=`crypto`,i&&(this[n]=ot[n]),(r=e[n])!==void 0)if(r===!0||r===!1||r===0||r===1)if(r)if(typeof crypto<`u`&&crypto&&(crypto.getRandomValues||crypto.randomBytes))this[n]=!0;else throw Error(lt);else this[n]=!1;else throw Error(U+n+`: `+r);return this}function cos(e){return new this(e).cos()}function cosh$1(e){return new this(e).cosh()}__name(cosh$1,`cosh`);function clone(e){var t,n,r;function Decimal$1(e){var t,n,r,i=this;if(!(i instanceof Decimal$1))return new Decimal$1(e);if(i.constructor=Decimal$1,isDecimalInstance(e)){i.s=e.s,V?!e.d||e.e>Decimal$1.maxE?(i.e=NaN,i.d=null):e.e<Decimal$1.minE?(i.e=0,i.d=[0]):(i.e=e.e,i.d=e.d.slice()):(i.e=e.e,i.d=e.d?e.d.slice():e.d);return}if(r=typeof e,r===`number`){if(e===0){i.s=1/e<0?-1:1,i.e=0,i.d=[0];return}if(e<0?(e=-e,i.s=-1):i.s=1,e===~~e&&e<1e7){for(t=0,n=e;n>=10;n/=10)t++;V?t>Decimal$1.maxE?(i.e=NaN,i.d=null):t<Decimal$1.minE?(i.e=0,i.d=[0]):(i.e=t,i.d=[e]):(i.e=t,i.d=[e]);return}if(e*0!=0){e||(i.s=NaN),i.e=NaN,i.d=null;return}return parseDecimal(i,e.toString())}if(r===`string`)return(n=e.charCodeAt(0))===45?(e=e.slice(1),i.s=-1):(n===43&&(e=e.slice(1)),i.s=1),mt.test(e)?parseDecimal(i,e):parseOther(i,e);if(r===`bigint`)return e<0?(e=-e,i.s=-1):i.s=1,parseDecimal(i,e.toString());throw Error(U+e)}if(__name(Decimal$1,`Decimal`),Decimal$1.prototype=J,Decimal$1.ROUND_UP=0,Decimal$1.ROUND_DOWN=1,Decimal$1.ROUND_CEIL=2,Decimal$1.ROUND_FLOOR=3,Decimal$1.ROUND_HALF_UP=4,Decimal$1.ROUND_HALF_DOWN=5,Decimal$1.ROUND_HALF_EVEN=6,Decimal$1.ROUND_HALF_CEIL=7,Decimal$1.ROUND_HALF_FLOOR=8,Decimal$1.EUCLID=9,Decimal$1.config=Decimal$1.set=config,Decimal$1.clone=clone,Decimal$1.isDecimal=isDecimalInstance,Decimal$1.abs=abs,Decimal$1.acos=acos,Decimal$1.acosh=acosh,Decimal$1.add=add,Decimal$1.asin=asin,Decimal$1.asinh=asinh,Decimal$1.atan=atan,Decimal$1.atanh=atanh,Decimal$1.atan2=atan2,Decimal$1.cbrt=cbrt,Decimal$1.ceil=ceil,Decimal$1.clamp=clamp,Decimal$1.cos=cos,Decimal$1.cosh=cosh$1,Decimal$1.div=div,Decimal$1.exp=exp,Decimal$1.floor=floor,Decimal$1.hypot=hypot$1,Decimal$1.ln=ln,Decimal$1.log=log,Decimal$1.log10=log10,Decimal$1.log2=log2,Decimal$1.max=max,Decimal$1.min=min,Decimal$1.mod=mod,Decimal$1.mul=mul,Decimal$1.pow=pow,Decimal$1.random=random,Decimal$1.round=round,Decimal$1.sign=sign,Decimal$1.sin=sin,Decimal$1.sinh=sinh$1,Decimal$1.sqrt=sqrt,Decimal$1.sub=sub,Decimal$1.sum=sum,Decimal$1.tan=tan,Decimal$1.tanh=tanh,Decimal$1.trunc=trunc,e===void 0&&(e={}),e&&e.defaults!==!0)for(r=[`precision`,`rounding`,`toExpNeg`,`toExpPos`,`maxE`,`minE`,`modulo`,`crypto`],t=0;t<r.length;)e.hasOwnProperty(n=r[t++])||(e[n]=this[n]);return Decimal$1.config(e),Decimal$1}function div(e,t){return new this(e).div(t)}function exp(e){return new this(e).exp()}function floor(e){return finalise(e=new this(e),e.e+1,3)}function hypot$1(){var e,t,n=new this(0);for(V=!1,e=0;e<arguments.length;)if(t=new this(arguments[e++]),t.d)n.d&&(n=n.plus(t.times(t)));else{if(t.s)return V=!0,new this(1/0);n=t}return V=!0,n.sqrt()}__name(hypot$1,`hypot`);function isDecimalInstance(e){return e instanceof X||e&&e.toStringTag===ut||!1}function ln(e){return new this(e).ln()}function log(e,t){return new this(e).log(t)}function log2(e){return new this(e).log(2)}function log10(e){return new this(e).log(10)}function max(){return maxOrMin(this,arguments,-1)}function min(){return maxOrMin(this,arguments,1)}function mod(e,t){return new this(e).mod(t)}function mul(e,t){return new this(e).mul(t)}function pow(e,t){return new this(e).pow(t)}function random(e){var t,n,r,i,a=0,o=new this(1),s=[];if(e===void 0?e=this.precision:checkInt32(e,1,z),r=Math.ceil(e/q),this.crypto)if(crypto.getRandomValues)for(t=crypto.getRandomValues(new Uint32Array(r));a<r;)i=t[a],i>=429e7?t[a]=crypto.getRandomValues(new Uint32Array(1))[0]:s[a++]=i%1e7;else if(crypto.randomBytes){for(t=crypto.randomBytes(r*=4);a<r;)i=t[a]+(t[a+1]<<8)+(t[a+2]<<16)+((t[a+3]&127)<<24),i>=214e7?crypto.randomBytes(4).copy(t,a):(s.push(i%1e7),a+=4);a=r/4}else throw Error(lt);else for(;a<r;)s[a++]=Math.random()*1e7|0;for(r=s[--a],e%=q,r&&e&&(i=G(10,q-e),s[a]=(r/i|0)*i);s[a]===0;a--)s.pop();if(a<0)n=0,s=[0];else{for(n=-1;s[0]===0;n-=q)s.shift();for(r=1,i=s[0];i>=10;i/=10)r++;r<q&&(n-=q-r)}return o.e=n,o.d=s,o}function round(e){return finalise(e=new this(e),e.e+1,this.rounding)}function sign(e){return e=new this(e),e.d?e.d[0]?e.s:0*e.s:e.s||NaN}function sin(e){return new this(e).sin()}function sinh$1(e){return new this(e).sinh()}__name(sinh$1,`sinh`);function sqrt(e){return new this(e).sqrt()}function sub(e,t){return new this(e).sub(t)}function sum(){var e=0,t=arguments,n=new this(t[e]);for(V=!1;n.s&&++e<t.length;)n=n.plus(t[e]);return V=!0,finalise(n,this.precision,this.rounding)}function tan(e){return new this(e).tan()}function tanh(e){return new this(e).tanh()}function trunc(e){return finalise(e=new this(e),e.e+1,1)}J[Symbol.for(`nodejs.util.inspect.custom`)]=J.toString,J[Symbol.toStringTag]=`Decimal`;var X=J.constructor=clone(ot);it=new X(it),at=new X(at);var vt=X,yt=`BigNumber`,bt=[`?on`,`config`],xt=factory(yt,bt,e=>{var{on:t,config:n}=e,r=vt.clone({precision:n.precision,modulo:vt.EUCLID});return r.prototype=Object.create(r.prototype),r.prototype.type=`BigNumber`,r.prototype.isBigNumber=!0,r.prototype.toJSON=function(){return{mathjs:`BigNumber`,value:this.toString()}},r.fromJSON=function(e){return new r(e.value)},t&&t(`config`,function(e,t){e.precision!==t.precision&&r.config({precision:e.precision})}),r},{isClass:!0});const Z=Math.cosh||function(e){return Math.abs(e)<1e-9?1-e:(Math.exp(e)+Math.exp(-e))*.5},Q=Math.sinh||function(e){return Math.abs(e)<1e-9?e:(Math.exp(e)-Math.exp(-e))*.5},cosm1=e=>{let t=Math.sin(.5*e);return-2*t*t},hypot=function(e,t){return e=Math.abs(e),t=Math.abs(t),e<t&&([e,t]=[t,e]),e<1e8?Math.sqrt(e*e+t*t):(t/=e,e*Math.sqrt(1+t*t))},parser_exit=function(){throw SyntaxError(`Invalid Param`)};function logHypot(e,t){let n=Math.abs(e),r=Math.abs(t);return e===0?Math.log(r):t===0?Math.log(n):n<3e3&&r<3e3?Math.log(e*e+t*t)*.5:(e*=.5,t*=.5,.5*Math.log(e*e+t*t)+Math.LN2)}const St={re:0,im:0},parse=function(e,t){let n=St;if(e==null)n.re=n.im=0;else if(t!==void 0)n.re=e,n.im=t;else switch(typeof e){case`object`:if(`im`in e&&`re`in e)n.re=e.re,n.im=e.im;else if(`abs`in e&&`arg`in e){if(!isFinite(e.abs)&&isFinite(e.arg))return Complex$1.INFINITY;n.re=e.abs*Math.cos(e.arg),n.im=e.abs*Math.sin(e.arg)}else if(`r`in e&&`phi`in e){if(!isFinite(e.r)&&isFinite(e.phi))return Complex$1.INFINITY;n.re=e.r*Math.cos(e.phi),n.im=e.r*Math.sin(e.phi)}else e.length===2?(n.re=e[0],n.im=e[1]):parser_exit();break;case`string`:n.im=n.re=0;let t=e.replace(/_/g,``).match(/\d+\.?\d*e[+-]?\d+|\d+\.?\d*|\.\d+|./g),r=1,i=0;t===null&&parser_exit();for(let e=0;e<t.length;e++){let a=t[e];a===` `||a===` `||a===`
104
+ `);return Object.freeze(Ue)},`config`);(0,Ke.default)(qe,Ue,{MATRIX_OPTIONS:We,NUMBER_OPTIONS:Ge});var Je=__commonJSMin(((e,t)=>{(function(n,r){typeof e==`object`&&t!==void 0?t.exports=r():typeof define==`function`&&define.amd?define(r):(n=typeof globalThis<`u`?globalThis:n||self,n.typed=r())})(e,(function(){"use strict";function ok(){return!0}function notOk(){return!1}function undef(){}let e=`Argument is not a typed-function.`;function create(){function isPlainObject$1(e){return typeof e==`object`&&!!e&&e.constructor===Object}__name(isPlainObject$1,`isPlainObject`);let t=[{name:`number`,test:function(e){return typeof e==`number`}},{name:`string`,test:function(e){return typeof e==`string`}},{name:`boolean`,test:function(e){return typeof e==`boolean`}},{name:`Function`,test:function(e){return typeof e==`function`}},{name:`Array`,test:Array.isArray},{name:`Date`,test:function(e){return e instanceof Date}},{name:`RegExp`,test:function(e){return e instanceof RegExp}},{name:`Object`,test:isPlainObject$1},{name:`null`,test:function(e){return e===null}},{name:`undefined`,test:function(e){return e===void 0}}],n={name:`any`,test:ok,isAny:!0},r,i,a=0,o={createCount:0};function findType(e){let t=r.get(e);if(t)return t;let n=`Unknown type "`+e+`"`,a=e.toLowerCase(),o;for(o of i)if(o.toLowerCase()===a){n+=`. Did you mean "`+o+`" ?`;break}throw TypeError(n)}function addTypes(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:`any`,n=t?findType(t).index:i.length,a=[];for(let t=0;t<e.length;++t){if(!e[t]||typeof e[t].name!=`string`||typeof e[t].test!=`function`)throw TypeError(`Object with properties {name: string, test: function} expected`);let i=e[t].name;if(r.has(i))throw TypeError(`Duplicate type name "`+i+`"`);a.push(i),r.set(i,{name:i,test:e[t].test,isAny:e[t].isAny,index:n+t,conversionsTo:[]})}let o=i.slice(n);i=i.slice(0,n).concat(a).concat(o);for(let e=n+a.length;e<i.length;++e)r.get(i[e]).index=e}function clear(){r=new Map,i=[],a=0,addTypes([n],!1)}clear(),addTypes(t);function clearConversions(){let e;for(e of i)r.get(e).conversionsTo=[];a=0}function findTypeNames(e){let t=i.filter(t=>{let n=r.get(t);return!n.isAny&&n.test(e)});return t.length?t:[`any`]}function isTypedFunction(e){return e&&typeof e==`function`&&`_typedFunctionData`in e}function findSignature(t,n,r){if(!isTypedFunction(t))throw TypeError(e);let i=r&&r.exact,a=parseSignature(Array.isArray(n)?n.join(`,`):n),o=stringifyParams(a);if(!i||o in t.signatures){let e=t._typedFunctionData.signatureMap.get(o);if(e)return e}let s=a.length,c;if(i){c=[];let e;for(e in t.signatures)c.push(t._typedFunctionData.signatureMap.get(e))}else c=t._typedFunctionData.signatures;for(let e=0;e<s;++e){let t=a[e],n=[],r;for(r of c){let i=getParamAtIndex(r.params,e);if(!(!i||t.restParam&&!i.restParam)){if(!i.hasAny){let e=paramTypeSet(i);if(t.types.some(t=>!e.has(t.name)))continue}n.push(r)}}if(c=n,c.length===0)break}let l;for(l of c)if(l.params.length<=s)return l;throw TypeError(`Signature not found (signature: `+(t.name||`unnamed`)+`(`+stringifyParams(a,`, `)+`))`)}function find(e,t,n){return findSignature(e,t,n).implementation}function convert(e,t){let n=findType(t);if(n.test(e))return e;let r=n.conversionsTo;if(r.length===0)throw Error(`There are no conversions to `+t+` defined.`);for(let t=0;t<r.length;t++)if(findType(r[t].from).test(e))return r[t].convert(e);throw Error(`Cannot convert `+e+` to `+t)}function stringifyParams(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:`,`;return e.map(e=>e.name).join(t)}function parseParam(e){let t=e.indexOf(`...`)===0,n=(t?e.length>3?e.slice(3):`any`:e).split(`|`).map(e=>findType(e.trim())),r=!1,i=t?`...`:``;return{types:n.map(function(e){return r=e.isAny||r,i+=e.name+`|`,{name:e.name,typeIndex:e.index,test:e.test,isAny:e.isAny,conversion:null,conversionIndex:-1}}),name:i.slice(0,-1),hasAny:r,hasConversion:!1,restParam:t}}function expandParam(e){let t=availableConversions(e.types.map(e=>e.name)),n=e.hasAny,r=e.name,i=t.map(function(e){let t=findType(e.from);return n=t.isAny||n,r+=`|`+e.from,{name:e.from,typeIndex:t.index,test:t.test,isAny:t.isAny,conversion:e,conversionIndex:e.index}});return{types:e.types.concat(i),name:r,hasAny:n,hasConversion:i.length>0,restParam:e.restParam}}function paramTypeSet(e){return e.typeSet||(e.typeSet=new Set,e.types.forEach(t=>e.typeSet.add(t.name))),e.typeSet}function parseSignature(e){let t=[];if(typeof e!=`string`)throw TypeError(`Signatures must be strings`);let n=e.trim();if(n===``)return t;let r=n.split(`,`);for(let e=0;e<r.length;++e){let n=parseParam(r[e].trim());if(n.restParam&&e!==r.length-1)throw SyntaxError(`Unexpected rest parameter "`+r[e]+`": only allowed for the last parameter`);if(n.types.length===0)return null;t.push(n)}return t}function hasRestParam(e){let t=last(e);return t?t.restParam:!1}function compileTest(e){if(!e||e.types.length===0)return ok;if(e.types.length===1)return findType(e.types[0].name).test;if(e.types.length===2){let t=findType(e.types[0].name).test,n=findType(e.types[1].name).test;return function or(e){return t(e)||n(e)}}else{let t=e.types.map(function(e){return findType(e.name).test});return function or(e){for(let n=0;n<t.length;n++)if(t[n](e))return!0;return!1}}}function compileTests(e){let t,n,r;if(hasRestParam(e)){t=initial(e).map(compileTest);let n=t.length,r=compileTest(last(e)),testRestParam=function(e){for(let t=n;t<e.length;t++)if(!r(e[t]))return!1;return!0};return function testArgs(e){for(let n=0;n<t.length;n++)if(!t[n](e[n]))return!1;return testRestParam(e)&&e.length>=n+1}}else if(e.length===0)return function testArgs(e){return e.length===0};else if(e.length===1)return n=compileTest(e[0]),function testArgs(e){return n(e[0])&&e.length===1};else if(e.length===2)return n=compileTest(e[0]),r=compileTest(e[1]),function testArgs(e){return n(e[0])&&r(e[1])&&e.length===2};else return t=e.map(compileTest),function testArgs(e){for(let n=0;n<t.length;n++)if(!t[n](e[n]))return!1;return e.length===t.length}}function getParamAtIndex(e,t){return t<e.length?e[t]:hasRestParam(e)?last(e):null}function getTypeSetAtIndex(e,t){let n=getParamAtIndex(e,t);return n?paramTypeSet(n):new Set}function isExactType(e){return e.conversion===null||e.conversion===void 0}function mergeExpectedParams(e,t){let n=new Set;return e.forEach(e=>{let r=getTypeSetAtIndex(e.params,t),i;for(i of r)n.add(i)}),n.has(`any`)?[`any`]:Array.from(n)}function createError(e,t,n){let r,i,a=e||`unnamed`,o=n,s;for(s=0;s<t.length;s++){let e=[];if(o.forEach(n=>{let r=compileTest(getParamAtIndex(n.params,s));(s<n.params.length||hasRestParam(n.params))&&r(t[s])&&e.push(n)}),e.length===0){if(i=mergeExpectedParams(o,s),i.length>0){let e=findTypeNames(t[s]);return r=TypeError(`Unexpected type of argument in function `+a+` (expected: `+i.join(` or `)+`, actual: `+e.join(` | `)+`, index: `+s+`)`),r.data={category:`wrongType`,fn:a,index:s,actual:e,expected:i},r}}else o=e}let c=o.map(function(e){return hasRestParam(e.params)?1/0:e.params.length});if(t.length<Math.min.apply(null,c))return i=mergeExpectedParams(o,s),r=TypeError(`Too few arguments in function `+a+` (expected: `+i.join(` or `)+`, index: `+t.length+`)`),r.data={category:`tooFewArgs`,fn:a,index:t.length,expected:i},r;let l=Math.max.apply(null,c);if(t.length>l)return r=TypeError(`Too many arguments in function `+a+` (expected: `+l+`, actual: `+t.length+`)`),r.data={category:`tooManyArgs`,fn:a,index:t.length,expectedLength:l},r;let u=[];for(let e=0;e<t.length;++e)u.push(findTypeNames(t[e]).join(`|`));return r=TypeError(`Arguments of type "`+u.join(`, `)+`" do not match any of the defined signatures of function `+a+`.`),r.data={category:`mismatch`,actual:u},r}function getLowestTypeIndex(e){let t=i.length+1;for(let n=0;n<e.types.length;n++)t=Math.min(t,e.types[n].typeIndex);return t}function getLowestConversionIndex(e){let t=a+1;for(let n=0;n<e.types.length;n++)isExactType(e.types[n])||(t=Math.min(t,e.types[n].conversionIndex));return t}function compareParams(e,t){if(e.hasAny){if(!t.hasAny)return .1}else if(t.hasAny)return-.1;if(e.restParam){if(!t.restParam)return .01}else if(t.restParam)return-.01;let n=getLowestTypeIndex(e)-getLowestTypeIndex(t);if(n<0)return-.001;if(n>0)return .001;let r=getLowestConversionIndex(e),i=getLowestConversionIndex(t);if(e.hasConversion){if(!t.hasConversion)return(1+r)*1e-6}else if(t.hasConversion)return-(1+i)*1e-6;let a=r-i;return a<0?-1e-7:a>0?1e-7:0}function compareSignatures(e,t){let n=e.params,r=t.params,i=last(n),a=last(r),o=hasRestParam(n),s=hasRestParam(r);if(o&&i.hasAny){if(!s||!a.hasAny)return 1e7}else if(s&&a.hasAny)return-1e7;let c=0,l=0,u;for(u of n)u.hasAny&&++c,u.hasConversion&&++l;let d=0,f=0;for(u of r)u.hasAny&&++d,u.hasConversion&&++f;if(c!==d)return(c-d)*1e6;if(o&&i.hasConversion){if(!s||!a.hasConversion)return 1e5}else if(s&&a.hasConversion)return-1e5;if(l!==f)return(l-f)*1e4;if(o){if(!s)return 1e3}else if(s)return-1e3;let p=(n.length-r.length)*(o?-100:100);if(p!==0)return p;let m=[],h=0;for(let e=0;e<n.length;++e){let t=compareParams(n[e],r[e]);m.push(t),h+=t}if(h!==0)return(h<0?-10:10)+h;let g,_=9,v=_/(m.length+1);for(g of m){if(g!==0)return(g<0?-_:_)+g;_-=v}return 0}function availableConversions(e){if(e.length===0)return[];let t=e.map(findType);if(e.length===1)return t[0].conversionsTo;let n=new Set(e),r=new Set;for(let e=0;e<t.length;++e)for(let i of t[e].conversionsTo)n.has(i.from)||r.add(i.from);let i=[];for(let e of r){let n=a+1,r=null;for(let i=0;i<t.length;++i)for(let a of t[i].conversionsTo)a.from===e&&a.index<n&&(n=a.index,r=a);i.push(r)}return i}function compileArgsPreprocessing(e,t){let n=t,r=``;if(e.some(e=>e.hasConversion)){let i=hasRestParam(e),a=e.map(compileArgConversion);r=a.map(e=>e.name).join(`;`),n=function convertArgs(){let e=[],n=i?arguments.length-1:arguments.length;for(let t=0;t<n;t++)e[t]=a[t](arguments[t]);return i&&(e[n]=arguments[n].map(a[n])),t.apply(this,e)}}let i=n;if(hasRestParam(e)){let t=e.length-1;i=function preprocessRestParams(){return n.apply(this,slice(arguments,0,t).concat([slice(arguments,t)]))}}return r&&Object.defineProperty(i,`name`,{value:r}),i}function compileArgConversion(e){let t,n,r,i,a=[],o=[],s=``;e.types.forEach(function(e){e.conversion&&(s+=e.conversion.from+`~>`+e.conversion.to+`,`,a.push(findType(e.conversion.from).test),o.push(e.conversion.convert))}),s=s?s.slice(0,-1):`pass`;let convertor=e=>e;switch(o.length){case 0:break;case 1:t=a[0],r=o[0],convertor=function convertArg(e){return t(e)?r(e):e};break;case 2:t=a[0],n=a[1],r=o[0],i=o[1],convertor=function convertArg(e){return t(e)?r(e):n(e)?i(e):e};break;default:convertor=function convertArg(e){for(let t=0;t<o.length;t++)if(a[t](e))return o[t](e);return e}}return Object.defineProperty(convertor,`name`,{value:s}),convertor}function splitParams(e){function _splitParams(e,t,n){if(t<e.length){let r=e[t],i=[];if(r.restParam){let e=r.types.filter(isExactType);e.length<r.types.length&&i.push({types:e,name:`...`+e.map(e=>e.name).join(`|`),hasAny:e.some(e=>e.isAny),hasConversion:!1,restParam:!0}),i.push(r)}else i=r.types.map(function(e){return{types:[e],name:e.name,hasAny:e.isAny,hasConversion:e.conversion,restParam:!1}});return flatMap(i,function(r){return _splitParams(e,t+1,n.concat([r]))})}else return[n]}return _splitParams(e,0,[])}function conflicting(e,t){let n=Math.max(e.length,t.length);for(let r=0;r<n;r++){let n=getTypeSetAtIndex(e,r),i=getTypeSetAtIndex(t,r),a=!1,o;for(o of i)if(n.has(o)){a=!0;break}if(!a)return!1}let r=e.length,i=t.length,a=hasRestParam(e),o=hasRestParam(t);return a?o?r===i:i>=r:o?r>=i:r===i}function clearResolutions(e){return e.map(e=>isReferToSelf(e)?referToSelf(e.referToSelf.callback):isReferTo(e)?makeReferTo(e.referTo.references,e.referTo.callback):e)}function collectResolutions(e,t,n){let r=[],i;for(i of e){let e=n[i];if(typeof e!=`number`)throw TypeError(`No definition for referenced signature "`+i+`"`);if(e=t[e],typeof e!=`function`)return!1;r.push(e)}return r}function resolveReferences(e,t,n){let r=clearResolutions(e),i=Array(r.length).fill(!1),a=!0;for(;a;){a=!1;let e=!0;for(let o=0;o<r.length;++o){if(i[o])continue;let s=r[o];if(isReferToSelf(s))r[o]=s.referToSelf.callback(n),r[o].referToSelf=s.referToSelf,i[o]=!0,e=!1;else if(isReferTo(s)){let n=collectResolutions(s.referTo.references,r,t);n?(r[o]=s.referTo.callback.apply(this,n),r[o].referTo=s.referTo,i[o]=!0,e=!1):a=!0}}if(e&&a)throw SyntaxError(`Circular reference detected in resolving typed.referTo`)}return r}function validateDeprecatedThis(e){let t=/\bthis(\(|\.signatures\b)/;Object.keys(e).forEach(n=>{let r=e[n];if(t.test(r.toString()))throw SyntaxError("Using `this` to self-reference a function is deprecated since typed-function@3. Use typed.referTo and typed.referToSelf instead.")})}function createTypedFunction(e,t){if(o.createCount++,Object.keys(t).length===0)throw SyntaxError(`No signatures provided`);o.warnAgainstDeprecatedThis&&validateDeprecatedThis(t);let n=[],r=[],i={},a=[],s;for(s in t){if(!Object.prototype.hasOwnProperty.call(t,s))continue;let e=parseSignature(s);if(!e)continue;n.forEach(function(t){if(conflicting(t,e))throw TypeError(`Conflicting signatures "`+stringifyParams(t)+`" and "`+stringifyParams(e)+`".`)}),n.push(e);let o=r.length;r.push(t[s]);let c=e.map(expandParam),l;for(l of splitParams(c)){let e=stringifyParams(l);a.push({params:l,name:e,fn:o}),l.every(e=>!e.hasConversion)&&(i[e]=o)}}a.sort(compareSignatures);let c=resolveReferences(r,i,theTypedFn),l;for(l in i)Object.prototype.hasOwnProperty.call(i,l)&&(i[l]=c[i[l]]);let u=[],d=new Map;for(l of a)d.has(l.name)||(l.fn=c[l.fn],u.push(l),d.set(l.name,l));let f=u[0]&&u[0].params.length<=2&&!hasRestParam(u[0].params),p=u[1]&&u[1].params.length<=2&&!hasRestParam(u[1].params),m=u[2]&&u[2].params.length<=2&&!hasRestParam(u[2].params),h=u[3]&&u[3].params.length<=2&&!hasRestParam(u[3].params),g=u[4]&&u[4].params.length<=2&&!hasRestParam(u[4].params),_=u[5]&&u[5].params.length<=2&&!hasRestParam(u[5].params),v=f&&p&&m&&h&&g&&_;for(let e=0;e<u.length;++e)u[e].test=compileTests(u[e].params);let y=f?compileTest(u[0].params[0]):notOk,b=p?compileTest(u[1].params[0]):notOk,x=m?compileTest(u[2].params[0]):notOk,S=h?compileTest(u[3].params[0]):notOk,ee=g?compileTest(u[4].params[0]):notOk,C=_?compileTest(u[5].params[0]):notOk,w=f?compileTest(u[0].params[1]):notOk,T=p?compileTest(u[1].params[1]):notOk,E=m?compileTest(u[2].params[1]):notOk,D=h?compileTest(u[3].params[1]):notOk,O=g?compileTest(u[4].params[1]):notOk,te=_?compileTest(u[5].params[1]):notOk;for(let e=0;e<u.length;++e)u[e].implementation=compileArgsPreprocessing(u[e].params,u[e].fn);let ne=f?u[0].implementation:undef,re=p?u[1].implementation:undef,ie=m?u[2].implementation:undef,ae=h?u[3].implementation:undef,oe=g?u[4].implementation:undef,se=_?u[5].implementation:undef,ce=f?u[0].params.length:-1,le=p?u[1].params.length:-1,ue=m?u[2].params.length:-1,de=h?u[3].params.length:-1,k=g?u[4].params.length:-1,fe=_?u[5].params.length:-1,pe=v?6:0,me=u.length,he=u.map(e=>e.test),ge=u.map(e=>e.implementation),_e=function generic$1(){for(let e=pe;e<me;e++)if(he[e](arguments))return ge[e].apply(this,arguments);return o.onMismatch(e,arguments,u)};function theTypedFn(e,t){return arguments.length===ce&&y(e)&&w(t)?ne.apply(this,arguments):arguments.length===le&&b(e)&&T(t)?re.apply(this,arguments):arguments.length===ue&&x(e)&&E(t)?ie.apply(this,arguments):arguments.length===de&&S(e)&&D(t)?ae.apply(this,arguments):arguments.length===k&&ee(e)&&O(t)?oe.apply(this,arguments):arguments.length===fe&&C(e)&&te(t)?se.apply(this,arguments):_e.apply(this,arguments)}try{Object.defineProperty(theTypedFn,`name`,{value:e})}catch{}return theTypedFn.signatures=i,theTypedFn._typedFunctionData={signatures:u,signatureMap:d},theTypedFn}function _onMismatch(e,t,n){throw createError(e,t,n)}function initial(e){return slice(e,0,e.length-1)}function last(e){return e[e.length-1]}function slice(e,t,n){return Array.prototype.slice.call(e,t,n)}function findInArray(e,t){for(let n=0;n<e.length;n++)if(t(e[n]))return e[n]}function flatMap(e,t){return Array.prototype.concat.apply([],e.map(t))}function referTo(){let e=initial(arguments).map(e=>stringifyParams(parseSignature(e))),t=last(arguments);if(typeof t!=`function`)throw TypeError(`Callback function expected as last argument`);return makeReferTo(e,t)}function makeReferTo(e,t){return{referTo:{references:e,callback:t}}}function referToSelf(e){if(typeof e!=`function`)throw TypeError(`Callback function expected as first argument`);return{referToSelf:{callback:e}}}function isReferTo(e){return e&&typeof e.referTo==`object`&&Array.isArray(e.referTo.references)&&typeof e.referTo.callback==`function`}function isReferToSelf(e){return e&&typeof e.referToSelf==`object`&&typeof e.referToSelf.callback==`function`}function checkName(e,t){if(!e)return t;if(t&&t!==e){let n=Error(`Function names do not match (expected: `+e+`, actual: `+t+`)`);throw n.data={actual:t,expected:e},n}return e}function getObjectName(e){let t;for(let n in e)Object.prototype.hasOwnProperty.call(e,n)&&(isTypedFunction(e[n])||typeof e[n].signature==`string`)&&(t=checkName(t,e[n].name));return t}function mergeSignatures(e,t){let n;for(n in t)if(Object.prototype.hasOwnProperty.call(t,n)){if(n in e&&t[n]!==e[n]){let r=Error(`Signature "`+n+`" is defined twice`);throw r.data={signature:n,sourceFunction:t[n],destFunction:e[n]},r}e[n]=t[n]}}let s=o;o=__name(function(e){let t=typeof e==`string`,n=t?1:0,r=t?e:``,i={};for(let e=n;e<arguments.length;++e){let n=arguments[e],a={},o;if(typeof n==`function`?(o=n.name,typeof n.signature==`string`?a[n.signature]=n:isTypedFunction(n)&&(a=n.signatures)):isPlainObject$1(n)&&(a=n,t||(o=getObjectName(n))),Object.keys(a).length===0){let t=TypeError(`Argument to 'typed' at index `+e+` is not a (typed) function, nor an object with signatures as keys and functions as values.`);throw t.data={index:e,argument:n},t}t||(r=checkName(r,o)),mergeSignatures(i,a)}return createTypedFunction(r||``,i)},`typed`),o.create=create,o.createCount=s.createCount,o.onMismatch=_onMismatch,o.throwMismatchError=_onMismatch,o.createError=createError,o.clear=clear,o.clearConversions=clearConversions,o.addTypes=addTypes,o._findType=findType,o.referTo=referTo,o.referToSelf=referToSelf,o.convert=convert,o.findSignature=findSignature,o.find=find,o.isTypedFunction=isTypedFunction,o.warnAgainstDeprecatedThis=!0,o.addType=function(e,t){let n=`any`;t!==!1&&r.has(`Object`)&&(n=`Object`),o.addTypes([e],n)};function _validateConversion(e){if(!e||typeof e.from!=`string`||typeof e.to!=`string`||typeof e.convert!=`function`)throw TypeError(`Object with properties {from: string, to: string, convert: function} expected`);if(e.to===e.from)throw SyntaxError(`Illegal to define conversion from "`+e.from+`" to itself.`)}return o.addConversion=function(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{override:!1};_validateConversion(e);let n=findType(e.to),r=n.conversionsTo.find(t=>t.from===e.from);if(r)if(t&&t.override)o.removeConversion({from:r.from,to:e.to,convert:r.convert});else throw Error(`There is already a conversion from "`+e.from+`" to "`+n.name+`"`);n.conversionsTo.push({from:e.from,to:n.name,convert:e.convert,index:a++})},o.addConversions=function(e,t){e.forEach(e=>o.addConversion(e,t))},o.removeConversion=function(e){_validateConversion(e);let t=findType(e.to),n=findInArray(t.conversionsTo,t=>t.from===e.from);if(!n)throw Error(`Attempt to remove nonexistent conversion from `+e.from+` to `+e.to);if(n.convert!==e.convert)throw Error(`Conversion to remove does not match existing conversion`);let r=t.conversionsTo.indexOf(n);t.conversionsTo.splice(r,1)},o.resolve=function(t,n){if(!isTypedFunction(t))throw TypeError(e);let r=t._typedFunctionData.signatures;for(let e=0;e<r.length;++e)if(r[e].test(n))return r[e];return null},o}return create()}))}));function isInteger(e){return typeof e==`boolean`?!0:isFinite(e)?e===Math.round(e):!1}function formatNumberToBase(e,t,n){var r={2:`0b`,8:`0o`,16:`0x`}[t],i=``;if(n){if(n<1)throw Error(`size must be in greater than 0`);if(!isInteger(n))throw Error(`size must be an integer`);if(e>2**(n-1)-1||e<-(2**(n-1)))throw Error(`Value must be in range [-2^${n-1}, 2^${n-1}-1]`);if(!isInteger(e))throw Error(`Value must be an integer`);e<0&&(e+=2**n),i=`i${n}`}var a=``;return e<0&&(e=-e,a=`-`),`${a}${r}${e.toString(t)}${i}`}function format$2(e,t){if(typeof t==`function`)return t(e);if(e===1/0)return`Infinity`;if(e===-1/0)return`-Infinity`;if(isNaN(e))return`NaN`;var n=`auto`,r,i;if(t&&(t.notation&&(n=t.notation),isNumber$1(t)?r=t:isNumber$1(t.precision)&&(r=t.precision),t.wordSize&&(i=t.wordSize,typeof i!=`number`)))throw Error(`Option "wordSize" must be a number`);switch(n){case`fixed`:return toFixed$1(e,r);case`exponential`:return toExponential$1(e,r);case`engineering`:return toEngineering$1(e,r);case`bin`:return formatNumberToBase(e,2,i);case`oct`:return formatNumberToBase(e,8,i);case`hex`:return formatNumberToBase(e,16,i);case`auto`:return toPrecision(e,r,t&&t).replace(/((\.\d*?)(0+))($|e)/,function(){var e=arguments[2],t=arguments[4];return e===`.`?t:e+t});default:throw Error(`Unknown notation "`+n+`". Choose "auto", "exponential", "fixed", "bin", "oct", or "hex.`)}}__name(format$2,`format`);function splitNumber(e){var t=String(e).toLowerCase().match(/^(-?)(\d+\.?\d*)(e([+-]?\d+))?$/);if(!t)throw SyntaxError(`Invalid number `+e);var n=t[1],r=t[2],i=parseFloat(t[4]||`0`),a=r.indexOf(`.`);i+=a===-1?r.length-1:a-1;var o=r.replace(`.`,``).replace(/^0*/,function(e){return i-=e.length,``}).replace(/0*$/,``).split(``).map(function(e){return parseInt(e)});return o.length===0&&(o.push(0),i++),{sign:n,coefficients:o,exponent:i}}function toEngineering$1(e,t){if(isNaN(e)||!isFinite(e))return String(e);var n=roundDigits(splitNumber(e),t),r=n.exponent,i=n.coefficients,a=r%3==0?r:r<0?r-3-r%3:r-r%3;if(isNumber$1(t))for(;t>i.length||r-a+1>i.length;)i.push(0);else for(var o=Math.abs(r-a)-(i.length-1),s=0;s<o;s++)i.push(0);for(var c=Math.abs(r-a),l=1;c>0;)l++,c--;var u=i.slice(l).join(``),d=isNumber$1(t)&&u.length||u.match(/[1-9]/)?`.`+u:``,f=i.slice(0,l).join(``)+d+`e`+(r>=0?`+`:``)+a.toString();return n.sign+f}__name(toEngineering$1,`toEngineering`);function toFixed$1(e,t){if(isNaN(e)||!isFinite(e))return String(e);var n=splitNumber(e),r=typeof t==`number`?roundDigits(n,n.exponent+1+t):n,i=r.coefficients,a=r.exponent+1,o=a+(t||0);return i.length<o&&(i=i.concat(zeros(o-i.length))),a<0&&(i=zeros(-a+1).concat(i),a=1),a<i.length&&i.splice(a,0,a===0?`0.`:`.`),r.sign+i.join(``)}__name(toFixed$1,`toFixed`);function toExponential$1(e,t){if(isNaN(e)||!isFinite(e))return String(e);var n=splitNumber(e),r=t?roundDigits(n,t):n,i=r.coefficients,a=r.exponent;i.length<t&&(i=i.concat(zeros(t-i.length)));var o=i.shift();return r.sign+o+(i.length>0?`.`+i.join(``):``)+`e`+(a>=0?`+`:``)+a}__name(toExponential$1,`toExponential`);function toPrecision(e,t,n){if(isNaN(e)||!isFinite(e))return String(e);var r=n&&n.lowerExp!==void 0?n.lowerExp:-3,i=n&&n.upperExp!==void 0?n.upperExp:5,a=splitNumber(e),o=t?roundDigits(a,t):a;if(o.exponent<r||o.exponent>=i)return toExponential$1(e,t);var s=o.coefficients,c=o.exponent;s.length<t&&(s=s.concat(zeros(t-s.length))),s=s.concat(zeros(c-s.length+1+(s.length<t?t-s.length:0))),s=zeros(-c).concat(s);var l=c>0?c:0;return l<s.length-1&&s.splice(l+1,0,`.`),o.sign+s.join(``)}function roundDigits(e,t){for(var n={sign:e.sign,coefficients:e.coefficients,exponent:e.exponent},r=n.coefficients;t<=0;)r.unshift(0),n.exponent++,t++;if(r.length>t&&r.splice(t,r.length-t)[0]>=5){var i=t-1;for(r[i]++;r[i]===10;)r.pop(),i===0&&(r.unshift(0),n.exponent++,i++),i--,r[i]++}return n}function zeros(e){for(var t=[],n=0;n<e;n++)t.push(0);return t}function digits(e){return e.toExponential().replace(/e.*$/,``).replace(/^0\.?0*|\./,``).length}var Ye=2**-52||2220446049250313e-31;function formatBigNumberToBase(e,t,n){var r=e.constructor,i=new r(2),a=``;if(n){if(n<1)throw Error(`size must be in greater than 0`);if(!isInteger(n))throw Error(`size must be an integer`);if(e.greaterThan(i.pow(n-1).sub(1))||e.lessThan(i.pow(n-1).mul(-1)))throw Error(`Value must be in range [-2^${n-1}, 2^${n-1}-1]`);if(!e.isInteger())throw Error(`Value must be an integer`);e.lessThan(0)&&(e=e.add(i.pow(n))),a=`i${n}`}switch(t){case 2:return`${e.toBinary()}${a}`;case 8:return`${e.toOctal()}${a}`;case 16:return`${e.toHexadecimal()}${a}`;default:throw Error(`Base ${t} not supported `)}}function format$1(e,t){if(typeof t==`function`)return t(e);if(!e.isFinite())return e.isNaN()?`NaN`:e.gt(0)?`Infinity`:`-Infinity`;var n=`auto`,r,i;if(t!==void 0&&(t.notation&&(n=t.notation),typeof t==`number`?r=t:t.precision!==void 0&&(r=t.precision),t.wordSize&&(i=t.wordSize,typeof i!=`number`)))throw Error(`Option "wordSize" must be a number`);switch(n){case`fixed`:return toFixed(e,r);case`exponential`:return toExponential(e,r);case`engineering`:return toEngineering(e,r);case`bin`:return formatBigNumberToBase(e,2,i);case`oct`:return formatBigNumberToBase(e,8,i);case`hex`:return formatBigNumberToBase(e,16,i);case`auto`:var a=t&&t.lowerExp!==void 0?t.lowerExp:-3,o=t&&t.upperExp!==void 0?t.upperExp:5;if(e.isZero())return`0`;var s,c=e.toSignificantDigits(r),l=c.e;return s=l>=a&&l<o?c.toFixed():toExponential(e,r),s.replace(/((\.\d*?)(0+))($|e)/,function(){var e=arguments[2],t=arguments[4];return e===`.`?t:e+t});default:throw Error(`Unknown notation "`+n+`". Choose "auto", "exponential", "fixed", "bin", "oct", or "hex.`)}}__name(format$1,`format`);function toEngineering(e,t){var n=e.e,r=n%3==0?n:n<0?n-3-n%3:n-n%3,i=e.mul(10**-r).toPrecision(t);if(i.indexOf(`e`)!==-1){var a=e.constructor;i=new a(i).toFixed()}return i+`e`+(n>=0?`+`:``)+r.toString()}function toExponential(e,t){return t===void 0?e.toExponential():e.toExponential(t-1)}function toFixed(e,t){return e.toFixed(t)}function format(e,t){var n=_format(e,t);return t&&typeof t==`object`&&`truncate`in t&&n.length>t.truncate?n.substring(0,t.truncate-3)+`...`:n}function _format(e,t){return typeof e==`number`?format$2(e,t):isBigNumber(e)?format$1(e,t):looksLikeFraction(e)?!t||t.fraction!==`decimal`?e.s*e.n+`/`+e.d:e.toString():Array.isArray(e)?formatArray(e,t):isString$1(e)?stringify(e):typeof e==`function`?e.syntax?String(e.syntax):`function`:e&&typeof e==`object`?typeof e.format==`function`?e.format(t):e&&e.toString(t)!=={}.toString()?e.toString(t):`{`+Object.keys(e).map(n=>stringify(n)+`: `+format(e[n],t)).join(`, `)+`}`:String(e)}function stringify(e){for(var t=String(e),n=``,r=0;r<t.length;){var i=t.charAt(r);n+=i in Xe?Xe[i]:i,r++}return`"`+n+`"`}var Xe={'"':`\\"`,"\\":`\\\\`,"\b":`\\b`,"\f":`\\f`,"\n":`\\n`,"\r":`\\r`," ":`\\t`};function formatArray(e,t){if(Array.isArray(e)){for(var n=`[`,r=e.length,i=0;i<r;i++)i!==0&&(n+=`, `),n+=formatArray(e[i],t);return n+=`]`,n}else return format(e,t)}function looksLikeFraction(e){return e&&typeof e==`object`&&typeof e.s==`number`&&typeof e.n==`number`&&typeof e.d==`number`||!1}function DimensionError(e,t,n){if(!(this instanceof DimensionError))throw SyntaxError(`Constructor must be called with the new operator`);this.actual=e,this.expected=t,this.relation=n,this.message=`Dimension mismatch (`+(Array.isArray(e)?`[`+e.join(`, `)+`]`:e)+` `+(this.relation||`!=`)+` `+(Array.isArray(t)?`[`+t.join(`, `)+`]`:t)+`)`,this.stack=Error().stack}DimensionError.prototype=RangeError(),DimensionError.prototype.constructor=RangeError,DimensionError.prototype.name=`DimensionError`,DimensionError.prototype.isDimensionError=!0;function IndexError(e,t,n){if(!(this instanceof IndexError))throw SyntaxError(`Constructor must be called with the new operator`);this.index=e,arguments.length<3?(this.min=0,this.max=t):(this.min=t,this.max=n),this.min!==void 0&&this.index<this.min?this.message=`Index out of range (`+this.index+` < `+this.min+`)`:this.max!==void 0&&this.index>=this.max?this.message=`Index out of range (`+this.index+` > `+(this.max-1)+`)`:this.message=`Index out of range (`+this.index+`)`,this.stack=Error().stack}IndexError.prototype=RangeError(),IndexError.prototype.constructor=RangeError,IndexError.prototype.name=`IndexError`,IndexError.prototype.isIndexError=!0;function arraySize(e){for(var t=[];Array.isArray(e);)t.push(e.length),e=e[0];return t}function _validate(e,t,n){var r,i=e.length;if(i!==t[n])throw new DimensionError(i,t[n]);if(n<t.length-1){var a=n+1;for(r=0;r<i;r++){var o=e[r];if(!Array.isArray(o))throw new DimensionError(t.length-1,t.length,`<`);_validate(e[r],t,a)}}else for(r=0;r<i;r++)if(Array.isArray(e[r]))throw new DimensionError(t.length+1,t.length,`>`)}function validate$1(e,t){if(t.length===0){if(Array.isArray(e))throw new DimensionError(e.length,0)}else _validate(e,t,0)}__name(validate$1,`validate`);function validateIndex(e,t){if(e!==void 0){if(!isNumber$1(e)||!isInteger(e))throw TypeError(`Index must be an integer (value: `+e+`)`);if(e<0||typeof t==`number`&&e>=t)throw new IndexError(e,t)}}function resize(e,t,n){if(!Array.isArray(t))throw TypeError(`Array expected`);if(t.length===0)throw Error(`Resizing to scalar is not supported`);return t.forEach(function(e){if(!isNumber$1(e)||!isInteger(e)||e<0)throw TypeError(`Invalid size, must contain positive integers (size: `+format(t)+`)`)}),(isNumber$1(e)||isBigNumber(e))&&(e=[e]),_resize(e,t,0,n===void 0?0:n),e}function _resize(e,t,n,r){var i,a,o=e.length,s=t[n],c=Math.min(o,s);if(e.length=s,n<t.length-1){var l=n+1;for(i=0;i<c;i++)a=e[i],Array.isArray(a)||(a=[a],e[i]=a),_resize(a,t,l,r);for(i=c;i<s;i++)a=[],e[i]=a,_resize(a,t,l,r)}else{for(i=0;i<c;i++)for(;Array.isArray(e[i]);)e[i]=e[i][0];for(i=c;i<s;i++)e[i]=r}}function reshape(e,t){var n=flatten(e),r=n.length;if(!Array.isArray(e)||!Array.isArray(t))throw TypeError(`Array expected`);if(t.length===0)throw new DimensionError(0,r,`!=`);t=processSizesWildcard(t,r);var i=product(t);if(r!==i)throw new DimensionError(i,r,`!=`);try{return _reshape(n,t)}catch(e){throw e instanceof DimensionError?new DimensionError(i,r,`!=`):e}}function processSizesWildcard(e,t){var n=product(e),r=e.slice(),i=-1,a=e.indexOf(i);if(e.indexOf(i,a+1)>=0)throw Error(`More than one wildcard in sizes`);var o=a>=0,s=t%n===0;if(o)if(s)r[a]=-t/n;else throw Error(`Could not replace wildcard, since `+t+` is no multiple of `+-n);return r}function product(e){return e.reduce((e,t)=>e*t,1)}function _reshape(e,t){for(var n=e,r,i=t.length-1;i>0;i--){var a=t[i];r=[];for(var o=n.length/a,s=0;s<o;s++)r.push(n.slice(s*a,(s+1)*a));n=r}return n}function unsqueeze(e,t,n,r){var i=r||arraySize(e);if(n)for(var a=0;a<n;a++)e=[e],i.unshift(1);for(e=_unsqueeze(e,t,0);i.length<t;)i.push(1);return e}function _unsqueeze(e,t,n){var r,i;if(Array.isArray(e)){var a=n+1;for(r=0,i=e.length;r<i;r++)e[r]=_unsqueeze(e[r],t,a)}else for(var o=n;o<t;o++)e=[e];return e}function flatten(e){if(!Array.isArray(e))return e;var t=[];return e.forEach(function callback(e){Array.isArray(e)?e.forEach(callback):t.push(e)}),t}function getArrayDataType(e,t){for(var n,r=0,i=0;i<e.length;i++){var a=e[i],o=Array.isArray(a);if(i===0&&o&&(r=a.length),o&&a.length!==r)return;var s=o?getArrayDataType(a,t):t(a);if(n===void 0)n=s;else if(n!==s)return`mixed`}return n}function concatRecursive(e,t,n,r){if(r<n){if(e.length!==t.length)throw new DimensionError(e.length,t.length);for(var i=[],a=0;a<e.length;a++)i[a]=concatRecursive(e[a],t[a],n,r+1);return i}else return e.concat(t)}function concat(){var e=Array.prototype.slice.call(arguments,0,-1),t=Array.prototype.slice.call(arguments,-1);if(e.length===1)return e[0];if(e.length>1)return e.slice(1).reduce(function(e,n){return concatRecursive(e,n,t,0)},e[0]);throw Error(`Wrong number of arguments in function concat`)}function broadcastSizes(){for(var e=arguments.length,t=Array(e),n=0;n<e;n++)t[n]=arguments[n];for(var r=t.map(e=>e.length),i=Math.max(...r),a=Array(i).fill(null),o=0;o<t.length;o++)for(var s=t[o],c=r[o],l=0;l<c;l++){var u=i-c+l;s[l]>a[u]&&(a[u]=s[l])}for(var d=0;d<t.length;d++)checkBroadcastingRules(t[d],a);return a}function checkBroadcastingRules(e,t){for(var n=t.length,r=e.length,i=0;i<r;i++){var a=n-r+i;if(e[i]<t[a]&&e[i]>1||e[i]>t[a])throw Error(`shape missmatch: missmatch is found in arg with shape (${e}) not possible to broadcast dimension ${r} with size ${e[i]} to size ${t[a]}`)}}function broadcastTo(e,t){var n=arraySize(e);if(deepStrictEqual(n,t))return e;checkBroadcastingRules(n,t);var r=broadcastSizes(n,t),i=r.length,a=[...Array(i-n.length).fill(1),...n],o=clone$1(e);n.length<i&&(o=reshape(o,a),n=arraySize(o));for(var s=0;s<i;s++)n[s]<r[s]&&(o=stretch(o,r[s],s),n=arraySize(o));return o}function stretch(e,t,n){return concat(...Array(t).fill(e),n)}function clone$1(e){return(0,Ke.default)([],e)}__name(clone$1,`clone`);function factory(e,t,n,r){function assertAndCreate(r){var i=pickShallow(r,t.map(stripOptionalNotation));return assertDependencies(e,t,r),n(i)}return assertAndCreate.isFactory=!0,assertAndCreate.fn=e,assertAndCreate.dependencies=t.slice().sort(),r&&(assertAndCreate.meta=r),assertAndCreate}function assertDependencies(e,t,n){if(!t.filter(e=>!isOptionalDependency(e)).every(e=>n[e]!==void 0)){var r=t.filter(e=>n[e]===void 0);throw Error(`Cannot create function "${e}", some dependencies are missing: ${r.map(e=>`"${e}"`).join(`, `)}.`)}}function isOptionalDependency(e){return e&&e[0]===`?`}function stripOptionalNotation(e){return e&&e[0]===`?`?e.slice(1):e}function getSafeProperty(e,t){if(isPlainObject(e)&&isSafeProperty(e,t))return e[t];throw typeof e[t]==`function`&&isSafeMethod(e,t)?Error(`Cannot access method "`+t+`" as a property`):Error(`No access to property "`+t+`"`)}function setSafeProperty(e,t,n){if(isPlainObject(e)&&isSafeProperty(e,t))return e[t]=n,n;throw Error(`No access to property "`+t+`"`)}function hasSafeProperty(e,t){return t in e}function isSafeProperty(e,t){return!e||typeof e!=`object`?!1:hasOwnProperty(Ze,t)?!0:!(t in Object.prototype||t in Function.prototype)}function isSafeMethod(e,t){return e==null||typeof e[t]!=`function`||hasOwnProperty(e,t)&&Object.getPrototypeOf&&t in Object.getPrototypeOf(e)?!1:hasOwnProperty(Qe,t)?!0:!(t in Object.prototype||t in Function.prototype)}function isPlainObject(e){return typeof e==`object`&&e&&e.constructor===Object}var Ze={length:!0,name:!0},Qe={toString:!0,valueOf:!0,toLocaleString:!0},ObjectWrappingMap=class{constructor(e){this.wrappedObject=e}keys(){return Object.keys(this.wrappedObject)}get(e){return getSafeProperty(this.wrappedObject,e)}set(e,t){return setSafeProperty(this.wrappedObject,e,t),this}has(e){return hasSafeProperty(this.wrappedObject,e)}};function isMap(e){return e?e instanceof Map||e instanceof ObjectWrappingMap||typeof e.set==`function`&&typeof e.get==`function`&&typeof e.keys==`function`&&typeof e.has==`function`:!1}var $e=__toESM(Je(),1),et=function _createTyped(){return et=$e.default.create,$e.default},tt=[`?BigNumber`,`?Complex`,`?DenseMatrix`,`?Fraction`],nt=factory(`typed`,tt,function createTyped$1(e){var{BigNumber:t,Complex:n,DenseMatrix:r,Fraction:i}=e,a=et();return a.clear(),a.addTypes([{name:`number`,test:isNumber$1},{name:`Complex`,test:isComplex},{name:`BigNumber`,test:isBigNumber},{name:`Fraction`,test:isFraction},{name:`Unit`,test:isUnit},{name:`identifier`,test:e=>isString$1&&/^(?:[A-Za-z\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0560-\u0588\u05D0-\u05EA\u05EF-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u0860-\u086A\u0870-\u0887\u0889-\u088E\u08A0-\u08C9\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u09FC\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C5D\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D04-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E86-\u0E8A\u0E8C-\u0EA3\u0EA5\u0EA7-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16F1-\u16F8\u1700-\u1711\u171F-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1878\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4C\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C88\u1C90-\u1CBA\u1CBD-\u1CBF\u1CE9-\u1CEC\u1CEE-\u1CF3\u1CF5\u1CF6\u1CFA\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184\u2C00-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312F\u3131-\u318E\u31A0-\u31BF\u31F0-\u31FF\u3400-\u4DBF\u4E00-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788\uA78B-\uA7CA\uA7D0\uA7D1\uA7D3\uA7D5-\uA7D9\uA7F2-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA8FE\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB69\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF2D-\uDF40\uDF42-\uDF49\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF]|\uD801[\uDC00-\uDC9D\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDD70-\uDD7A\uDD7C-\uDD8A\uDD8C-\uDD92\uDD94\uDD95\uDD97-\uDDA1\uDDA3-\uDDB1\uDDB3-\uDDB9\uDDBB\uDDBC\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67\uDF80-\uDF85\uDF87-\uDFB0\uDFB2-\uDFBA]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE35\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2\uDD00-\uDD23\uDE80-\uDEA9\uDEB0\uDEB1\uDF00-\uDF1C\uDF27\uDF30-\uDF45\uDF70-\uDF81\uDFB0-\uDFC4\uDFE0-\uDFF6]|\uD804[\uDC03-\uDC37\uDC71\uDC72\uDC75\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD44\uDD47\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE2B\uDE3F\uDE40\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61]|\uD805[\uDC00-\uDC34\uDC47-\uDC4A\uDC5F-\uDC61\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE80-\uDEAA\uDEB8\uDF00-\uDF1A\uDF40-\uDF46]|\uD806[\uDC00-\uDC2B\uDCA0-\uDCDF\uDCFF-\uDD06\uDD09\uDD0C-\uDD13\uDD15\uDD16\uDD18-\uDD2F\uDD3F\uDD41\uDDA0-\uDDA7\uDDAA-\uDDD0\uDDE1\uDDE3\uDE00\uDE0B-\uDE32\uDE3A\uDE50\uDE5C-\uDE89\uDE9D\uDEB0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC2E\uDC40\uDC72-\uDC8F\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD30\uDD46\uDD60-\uDD65\uDD67\uDD68\uDD6A-\uDD89\uDD98\uDEE0-\uDEF2\uDF02\uDF04-\uDF10\uDF12-\uDF33\uDFB0]|\uD808[\uDC00-\uDF99]|\uD809[\uDC80-\uDD43]|\uD80B[\uDF90-\uDFF0]|[\uD80C\uD81C-\uD820\uD822\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879\uD880-\uD883\uD885-\uD887][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2F\uDC41-\uDC46]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE70-\uDEBE\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDE40-\uDE7F\uDF00-\uDF4A\uDF50\uDF93-\uDF9F\uDFE0\uDFE1\uDFE3]|\uD821[\uDC00-\uDFF7]|\uD823[\uDC00-\uDCD5\uDD00-\uDD08]|\uD82B[\uDFF0-\uDFF3\uDFF5-\uDFFB\uDFFD\uDFFE]|\uD82C[\uDC00-\uDD22\uDD32\uDD50-\uDD52\uDD55\uDD64-\uDD67\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD837[\uDF00-\uDF1E\uDF25-\uDF2A]|\uD838[\uDC30-\uDC6D\uDD00-\uDD2C\uDD37-\uDD3D\uDD4E\uDE90-\uDEAD\uDEC0-\uDEEB]|\uD839[\uDCD0-\uDCEB\uDFE0-\uDFE6\uDFE8-\uDFEB\uDFED\uDFEE\uDFF0-\uDFFE]|\uD83A[\uDC00-\uDCC4\uDD00-\uDD43\uDD4B]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDEDF\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF39\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]|\uD884[\uDC00-\uDF4A\uDF50-\uDFFF]|\uD888[\uDC00-\uDFAF])(?:[0-9A-Za-z\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0560-\u0588\u05D0-\u05EA\u05EF-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u0860-\u086A\u0870-\u0887\u0889-\u088E\u08A0-\u08C9\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u09FC\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C5D\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D04-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E86-\u0E8A\u0E8C-\u0EA3\u0EA5\u0EA7-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16F1-\u16F8\u1700-\u1711\u171F-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1878\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4C\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C88\u1C90-\u1CBA\u1CBD-\u1CBF\u1CE9-\u1CEC\u1CEE-\u1CF3\u1CF5\u1CF6\u1CFA\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184\u2C00-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312F\u3131-\u318E\u31A0-\u31BF\u31F0-\u31FF\u3400-\u4DBF\u4E00-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788\uA78B-\uA7CA\uA7D0\uA7D1\uA7D3\uA7D5-\uA7D9\uA7F2-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA8FE\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB69\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF2D-\uDF40\uDF42-\uDF49\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF]|\uD801[\uDC00-\uDC9D\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDD70-\uDD7A\uDD7C-\uDD8A\uDD8C-\uDD92\uDD94\uDD95\uDD97-\uDDA1\uDDA3-\uDDB1\uDDB3-\uDDB9\uDDBB\uDDBC\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67\uDF80-\uDF85\uDF87-\uDFB0\uDFB2-\uDFBA]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE35\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2\uDD00-\uDD23\uDE80-\uDEA9\uDEB0\uDEB1\uDF00-\uDF1C\uDF27\uDF30-\uDF45\uDF70-\uDF81\uDFB0-\uDFC4\uDFE0-\uDFF6]|\uD804[\uDC03-\uDC37\uDC71\uDC72\uDC75\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD44\uDD47\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE2B\uDE3F\uDE40\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61]|\uD805[\uDC00-\uDC34\uDC47-\uDC4A\uDC5F-\uDC61\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE80-\uDEAA\uDEB8\uDF00-\uDF1A\uDF40-\uDF46]|\uD806[\uDC00-\uDC2B\uDCA0-\uDCDF\uDCFF-\uDD06\uDD09\uDD0C-\uDD13\uDD15\uDD16\uDD18-\uDD2F\uDD3F\uDD41\uDDA0-\uDDA7\uDDAA-\uDDD0\uDDE1\uDDE3\uDE00\uDE0B-\uDE32\uDE3A\uDE50\uDE5C-\uDE89\uDE9D\uDEB0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC2E\uDC40\uDC72-\uDC8F\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD30\uDD46\uDD60-\uDD65\uDD67\uDD68\uDD6A-\uDD89\uDD98\uDEE0-\uDEF2\uDF02\uDF04-\uDF10\uDF12-\uDF33\uDFB0]|\uD808[\uDC00-\uDF99]|\uD809[\uDC80-\uDD43]|\uD80B[\uDF90-\uDFF0]|[\uD80C\uD81C-\uD820\uD822\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879\uD880-\uD883\uD885-\uD887][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2F\uDC41-\uDC46]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE70-\uDEBE\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDE40-\uDE7F\uDF00-\uDF4A\uDF50\uDF93-\uDF9F\uDFE0\uDFE1\uDFE3]|\uD821[\uDC00-\uDFF7]|\uD823[\uDC00-\uDCD5\uDD00-\uDD08]|\uD82B[\uDFF0-\uDFF3\uDFF5-\uDFFB\uDFFD\uDFFE]|\uD82C[\uDC00-\uDD22\uDD32\uDD50-\uDD52\uDD55\uDD64-\uDD67\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD837[\uDF00-\uDF1E\uDF25-\uDF2A]|\uD838[\uDC30-\uDC6D\uDD00-\uDD2C\uDD37-\uDD3D\uDD4E\uDE90-\uDEAD\uDEC0-\uDEEB]|\uD839[\uDCD0-\uDCEB\uDFE0-\uDFE6\uDFE8-\uDFEB\uDFED\uDFEE\uDFF0-\uDFFE]|\uD83A[\uDC00-\uDCC4\uDD00-\uDD43\uDD4B]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDEDF\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF39\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]|\uD884[\uDC00-\uDF4A\uDF50-\uDFFF]|\uD888[\uDC00-\uDFAF])*$/.test(e)},{name:`string`,test:isString$1},{name:`Chain`,test:isChain},{name:`Array`,test:L},{name:`Matrix`,test:isMatrix},{name:`DenseMatrix`,test:isDenseMatrix},{name:`SparseMatrix`,test:isSparseMatrix},{name:`Range`,test:isRange},{name:`Index`,test:isIndex},{name:`boolean`,test:isBoolean},{name:`ResultSet`,test:isResultSet},{name:`Help`,test:isHelp},{name:`function`,test:isFunction},{name:`Date`,test:isDate},{name:`RegExp`,test:isRegExp},{name:`null`,test:isNull},{name:`undefined`,test:isUndefined},{name:`AccessorNode`,test:isAccessorNode},{name:`ArrayNode`,test:isArrayNode},{name:`AssignmentNode`,test:isAssignmentNode},{name:`BlockNode`,test:isBlockNode},{name:`ConditionalNode`,test:isConditionalNode},{name:`ConstantNode`,test:isConstantNode},{name:`FunctionNode`,test:isFunctionNode},{name:`FunctionAssignmentNode`,test:isFunctionAssignmentNode},{name:`IndexNode`,test:isIndexNode},{name:`Node`,test:isNode},{name:`ObjectNode`,test:isObjectNode},{name:`OperatorNode`,test:isOperatorNode},{name:`ParenthesisNode`,test:isParenthesisNode},{name:`RangeNode`,test:isRangeNode},{name:`RelationalNode`,test:isRelationalNode},{name:`SymbolNode`,test:isSymbolNode},{name:`Map`,test:isMap},{name:`Object`,test:isObject$2}]),a.addConversions([{from:`number`,to:`BigNumber`,convert:function convert(e){if(t||throwNoBignumber(e),digits(e)>15)throw TypeError(`Cannot implicitly convert a number with >15 significant digits to BigNumber (value: `+e+`). Use function bignumber(x) to convert to BigNumber.`);return new t(e)}},{from:`number`,to:`Complex`,convert:function convert(e){return n||throwNoComplex(e),new n(e,0)}},{from:`BigNumber`,to:`Complex`,convert:function convert(e){return n||throwNoComplex(e),new n(e.toNumber(),0)}},{from:`Fraction`,to:`BigNumber`,convert:function convert(e){throw TypeError(`Cannot implicitly convert a Fraction to BigNumber or vice versa. Use function bignumber(x) to convert to BigNumber or fraction(x) to convert to Fraction.`)}},{from:`Fraction`,to:`Complex`,convert:function convert(e){return n||throwNoComplex(e),new n(e.valueOf(),0)}},{from:`number`,to:`Fraction`,convert:function convert(e){i||throwNoFraction(e);var t=new i(e);if(t.valueOf()!==e)throw TypeError(`Cannot implicitly convert a number to a Fraction when there will be a loss of precision (value: `+e+`). Use function fraction(x) to convert to Fraction.`);return t}},{from:`string`,to:`number`,convert:function convert(e){var t=Number(e);if(isNaN(t))throw Error(`Cannot convert "`+e+`" to a number`);return t}},{from:`string`,to:`BigNumber`,convert:function convert(e){t||throwNoBignumber(e);try{return new t(e)}catch{throw Error(`Cannot convert "`+e+`" to BigNumber`)}}},{from:`string`,to:`Fraction`,convert:function convert(e){i||throwNoFraction(e);try{return new i(e)}catch{throw Error(`Cannot convert "`+e+`" to Fraction`)}}},{from:`string`,to:`Complex`,convert:function convert(e){n||throwNoComplex(e);try{return new n(e)}catch{throw Error(`Cannot convert "`+e+`" to Complex`)}}},{from:`boolean`,to:`number`,convert:function convert(e){return+e}},{from:`boolean`,to:`BigNumber`,convert:function convert(e){return t||throwNoBignumber(e),new t(+e)}},{from:`boolean`,to:`Fraction`,convert:function convert(e){return i||throwNoFraction(e),new i(+e)}},{from:`boolean`,to:`string`,convert:function convert(e){return String(e)}},{from:`Array`,to:`Matrix`,convert:function convert(e){return r||throwNoMatrix(),new r(e)}},{from:`Matrix`,to:`Array`,convert:function convert(e){return e.valueOf()}}]),a.onMismatch=(e,t,n)=>{var r=a.createError(e,t,n);if([`wrongType`,`mismatch`].includes(r.data.category)&&t.length===1&&isCollection(t[0])&&n.some(e=>!e.params.includes(`,`))){var i=TypeError(`Function '${e}' doesn't apply to matrices. To call it elementwise on a matrix 'M', try 'map(M, ${e})'.`);throw i.data=r.data,i}throw r},a.onMismatch=(e,t,n)=>{var r=a.createError(e,t,n);if([`wrongType`,`mismatch`].includes(r.data.category)&&t.length===1&&isCollection(t[0])&&n.some(e=>!e.params.includes(`,`))){var i=TypeError(`Function '${e}' doesn't apply to matrices. To call it elementwise on a matrix 'M', try 'map(M, ${e})'.`);throw i.data=r.data,i}throw r},a});function throwNoBignumber(e){throw Error(`Cannot convert value ${e} into a BigNumber: no class 'BigNumber' provided`)}function throwNoComplex(e){throw Error(`Cannot convert value ${e} into a Complex number: no class 'Complex' provided`)}function throwNoMatrix(){throw Error(`Cannot convert array into a Matrix: no class 'DenseMatrix' provided`)}function throwNoFraction(e){throw Error(`Cannot convert value ${e} into a Fraction, no class 'Fraction' provided.`)}var R=9e15,z=1e9,rt=`0123456789abcdef`,it=`2.3025850929940456840179914546843642076011014886287729760333279009675726096773524802359972050895982983419677840422862486334095254650828067566662873690987816894829072083255546808437998948262331985283935053089653777326288461633662222876982198867465436674744042432743651550489343149393914796194044002221051017141748003688084012647080685567743216228355220114804663715659121373450747856947683463616792101806445070648000277502684916746550586856935673420670581136429224554405758925724208241314695689016758940256776311356919292033376587141660230105703089634572075440370847469940168269282808481184289314848524948644871927809676271275775397027668605952496716674183485704422507197965004714951050492214776567636938662976979522110718264549734772662425709429322582798502585509785265383207606726317164309505995087807523710333101197857547331541421808427543863591778117054309827482385045648019095610299291824318237525357709750539565187697510374970888692180205189339507238539205144634197265287286965110862571492198849978748873771345686209167058`,at=`3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185950244594553469083026425223082533446850352619311881710100031378387528865875332083814206171776691473035982534904287554687311595628638823537875937519577818577805321712268066130019278766111959092164201989380952572010654858632789`,ot={precision:20,rounding:4,modulo:1,toExpNeg:-7,toExpPos:21,minE:-R,maxE:R,crypto:!1},st,B,V=!0,H=`[DecimalError] `,U=H+`Invalid argument: `,ct=H+`Precision limit exceeded`,lt=H+`crypto unavailable`,ut=`[object Decimal]`,W=Math.floor,G=Math.pow,dt=/^0b([01]+(\.[01]*)?|\.[01]+)(p[+-]?\d+)?$/i,ft=/^0x([0-9a-f]+(\.[0-9a-f]*)?|\.[0-9a-f]+)(p[+-]?\d+)?$/i,pt=/^0o([0-7]+(\.[0-7]*)?|\.[0-7]+)(p[+-]?\d+)?$/i,mt=/^(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i,K=1e7,q=7,ht=9007199254740991,gt=it.length-1,_t=at.length-1,J={toStringTag:ut};J.absoluteValue=J.abs=function(){var e=new this.constructor(this);return e.s<0&&(e.s=1),finalise(e)},J.ceil=function(){return finalise(new this.constructor(this),this.e+1,2)},J.clampedTo=J.clamp=function(e,t){var n,r=this,i=r.constructor;if(e=new i(e),t=new i(t),!e.s||!t.s)return new i(NaN);if(e.gt(t))throw Error(U+t);return n=r.cmp(e),n<0?e:r.cmp(t)>0?t:new i(r)},J.comparedTo=J.cmp=function(e){var t,n,r,i,a=this,o=a.d,s=(e=new a.constructor(e)).d,c=a.s,l=e.s;if(!o||!s)return!c||!l?NaN:c===l?o===s?0:!o^c<0?1:-1:c;if(!o[0]||!s[0])return o[0]?c:s[0]?-l:0;if(c!==l)return c;if(a.e!==e.e)return a.e>e.e^c<0?1:-1;for(r=o.length,i=s.length,t=0,n=r<i?r:i;t<n;++t)if(o[t]!==s[t])return o[t]>s[t]^c<0?1:-1;return r===i?0:r>i^c<0?1:-1},J.cosine=J.cos=function(){var e,t,n=this,r=n.constructor;return n.d?n.d[0]?(e=r.precision,t=r.rounding,r.precision=e+Math.max(n.e,n.sd())+q,r.rounding=1,n=cosine(r,toLessThanHalfPi(r,n)),r.precision=e,r.rounding=t,finalise(B==2||B==3?n.neg():n,e,t,!0)):new r(1):new r(NaN)},J.cubeRoot=J.cbrt=function(){var e,t,n,r,i,a,o,s,c,l,u=this,d=u.constructor;if(!u.isFinite()||u.isZero())return new d(u);for(V=!1,a=u.s*G(u.s*u,1/3),!a||Math.abs(a)==1/0?(n=digitsToString(u.d),e=u.e,(a=(e-n.length+1)%3)&&(n+=a==1||a==-2?`0`:`00`),a=G(n,1/3),e=W((e+1)/3)-(e%3==(e<0?-1:2)),a==1/0?n=`5e`+e:(n=a.toExponential(),n=n.slice(0,n.indexOf(`e`)+1)+e),r=new d(n),r.s=u.s):r=new d(a.toString()),o=(e=d.precision)+3;;)if(s=r,c=s.times(s).times(s),l=c.plus(u),r=Y(l.plus(u).times(s),l.plus(c),o+2,1),digitsToString(s.d).slice(0,o)===(n=digitsToString(r.d)).slice(0,o))if(n=n.slice(o-3,o+1),n==`9999`||!i&&n==`4999`){if(!i&&(finalise(s,e+1,0),s.times(s).times(s).eq(u))){r=s;break}o+=4,i=1}else{(!+n||!+n.slice(1)&&n.charAt(0)==`5`)&&(finalise(r,e+1,1),t=!r.times(r).times(r).eq(u));break}return V=!0,finalise(r,e,d.rounding,t)},J.decimalPlaces=J.dp=function(){var e,t=this.d,n=NaN;if(t){if(e=t.length-1,n=(e-W(this.e/q))*q,e=t[e],e)for(;e%10==0;e/=10)n--;n<0&&(n=0)}return n},J.dividedBy=J.div=function(e){return Y(this,new this.constructor(e))},J.dividedToIntegerBy=J.divToInt=function(e){var t=this,n=t.constructor;return finalise(Y(t,new n(e),0,1,1),n.precision,n.rounding)},J.equals=J.eq=function(e){return this.cmp(e)===0},J.floor=function(){return finalise(new this.constructor(this),this.e+1,3)},J.greaterThan=J.gt=function(e){return this.cmp(e)>0},J.greaterThanOrEqualTo=J.gte=function(e){var t=this.cmp(e);return t==1||t===0},J.hyperbolicCosine=J.cosh=function(){var e,t,n,r,i,a=this,o=a.constructor,s=new o(1);if(!a.isFinite())return new o(a.s?1/0:NaN);if(a.isZero())return s;n=o.precision,r=o.rounding,o.precision=n+Math.max(a.e,a.sd())+4,o.rounding=1,i=a.d.length,i<32?(e=Math.ceil(i/3),t=(1/tinyPow(4,e)).toString()):(e=16,t=`2.3283064365386962890625e-10`),a=taylorSeries(o,1,a.times(t),new o(1),!0);for(var c,l=e,u=new o(8);l--;)c=a.times(a),a=s.minus(c.times(u.minus(c.times(u))));return finalise(a,o.precision=n,o.rounding=r,!0)},J.hyperbolicSine=J.sinh=function(){var e,t,n,r,i=this,a=i.constructor;if(!i.isFinite()||i.isZero())return new a(i);if(t=a.precision,n=a.rounding,a.precision=t+Math.max(i.e,i.sd())+4,a.rounding=1,r=i.d.length,r<3)i=taylorSeries(a,2,i,i,!0);else{e=1.4*Math.sqrt(r),e=e>16?16:e|0,i=i.times(1/tinyPow(5,e)),i=taylorSeries(a,2,i,i,!0);for(var o,s=new a(5),c=new a(16),l=new a(20);e--;)o=i.times(i),i=i.times(s.plus(o.times(c.times(o).plus(l))))}return a.precision=t,a.rounding=n,finalise(i,t,n,!0)},J.hyperbolicTangent=J.tanh=function(){var e,t,n=this,r=n.constructor;return n.isFinite()?n.isZero()?new r(n):(e=r.precision,t=r.rounding,r.precision=e+7,r.rounding=1,Y(n.sinh(),n.cosh(),r.precision=e,r.rounding=t)):new r(n.s)},J.inverseCosine=J.acos=function(){var e=this,t=e.constructor,n=e.abs().cmp(1),r=t.precision,i=t.rounding;return n===-1?e.isZero()?getPi(t,r+4,i).times(.5):(t.precision=r+6,t.rounding=1,e=new t(1).minus(e).div(e.plus(1)).sqrt().atan(),t.precision=r,t.rounding=i,e.times(2)):n===0?e.isNeg()?getPi(t,r,i):new t(0):new t(NaN)},J.inverseHyperbolicCosine=J.acosh=function(){var e,t,n=this,r=n.constructor;return n.lte(1)?new r(n.eq(1)?0:NaN):n.isFinite()?(e=r.precision,t=r.rounding,r.precision=e+Math.max(Math.abs(n.e),n.sd())+4,r.rounding=1,V=!1,n=n.times(n).minus(1).sqrt().plus(n),V=!0,r.precision=e,r.rounding=t,n.ln()):new r(n)},J.inverseHyperbolicSine=J.asinh=function(){var e,t,n=this,r=n.constructor;return!n.isFinite()||n.isZero()?new r(n):(e=r.precision,t=r.rounding,r.precision=e+2*Math.max(Math.abs(n.e),n.sd())+6,r.rounding=1,V=!1,n=n.times(n).plus(1).sqrt().plus(n),V=!0,r.precision=e,r.rounding=t,n.ln())},J.inverseHyperbolicTangent=J.atanh=function(){var e,t,n,r,i=this,a=i.constructor;return i.isFinite()?i.e>=0?new a(i.abs().eq(1)?i.s/0:i.isZero()?i:NaN):(e=a.precision,t=a.rounding,r=i.sd(),Math.max(r,e)<2*-i.e-1?finalise(new a(i),e,t,!0):(a.precision=n=r-i.e,i=Y(i.plus(1),new a(1).minus(i),n+e,1),a.precision=e+4,a.rounding=1,i=i.ln(),a.precision=e,a.rounding=t,i.times(.5))):new a(NaN)},J.inverseSine=J.asin=function(){var e,t,n,r,i=this,a=i.constructor;return i.isZero()?new a(i):(t=i.abs().cmp(1),n=a.precision,r=a.rounding,t===-1?(a.precision=n+6,a.rounding=1,i=i.div(new a(1).minus(i.times(i)).sqrt().plus(1)).atan(),a.precision=n,a.rounding=r,i.times(2)):t===0?(e=getPi(a,n+4,r).times(.5),e.s=i.s,e):new a(NaN))},J.inverseTangent=J.atan=function(){var e,t,n,r,i,a,o,s,c,l=this,u=l.constructor,d=u.precision,f=u.rounding;if(l.isFinite()){if(l.isZero())return new u(l);if(l.abs().eq(1)&&d+4<=_t)return o=getPi(u,d+4,f).times(.25),o.s=l.s,o}else{if(!l.s)return new u(NaN);if(d+4<=_t)return o=getPi(u,d+4,f).times(.5),o.s=l.s,o}for(u.precision=s=d+10,u.rounding=1,n=Math.min(28,s/q+2|0),e=n;e;--e)l=l.div(l.times(l).plus(1).sqrt().plus(1));for(V=!1,t=Math.ceil(s/q),r=1,c=l.times(l),o=new u(l),i=l;e!==-1;)if(i=i.times(c),a=o.minus(i.div(r+=2)),i=i.times(c),o=a.plus(i.div(r+=2)),o.d[t]!==void 0)for(e=t;o.d[e]===a.d[e]&&e--;);return n&&(o=o.times(2<<n-1)),V=!0,finalise(o,u.precision=d,u.rounding=f,!0)},J.isFinite=function(){return!!this.d},J.isInteger=J.isInt=function(){return!!this.d&&W(this.e/q)>this.d.length-2},J.isNaN=function(){return!this.s},J.isNegative=J.isNeg=function(){return this.s<0},J.isPositive=J.isPos=function(){return this.s>0},J.isZero=function(){return!!this.d&&this.d[0]===0},J.lessThan=J.lt=function(e){return this.cmp(e)<0},J.lessThanOrEqualTo=J.lte=function(e){return this.cmp(e)<1},J.logarithm=J.log=function(e){var t,n,r,i,a,o,s,c,l=this,u=l.constructor,d=u.precision,f=u.rounding,p=5;if(e==null)e=new u(10),t=!0;else{if(e=new u(e),n=e.d,e.s<0||!n||!n[0]||e.eq(1))return new u(NaN);t=e.eq(10)}if(n=l.d,l.s<0||!n||!n[0]||l.eq(1))return new u(n&&!n[0]?-1/0:l.s==1?n?0:1/0:NaN);if(t)if(n.length>1)a=!0;else{for(i=n[0];i%10==0;)i/=10;a=i!==1}if(V=!1,s=d+p,o=naturalLogarithm(l,s),r=t?getLn10(u,s+10):naturalLogarithm(e,s),c=Y(o,r,s,1),checkRoundingDigits(c.d,i=d,f))do if(s+=10,o=naturalLogarithm(l,s),r=t?getLn10(u,s+10):naturalLogarithm(e,s),c=Y(o,r,s,1),!a){+digitsToString(c.d).slice(i+1,i+15)+1==0x5af3107a4000&&(c=finalise(c,d+1,0));break}while(checkRoundingDigits(c.d,i+=10,f));return V=!0,finalise(c,d,f)},J.minus=J.sub=function(e){var t,n,r,i,a,o,s,c,l,u,d,f,p=this,m=p.constructor;if(e=new m(e),!p.d||!e.d)return!p.s||!e.s?e=new m(NaN):p.d?e.s=-e.s:e=new m(e.d||p.s!==e.s?p:NaN),e;if(p.s!=e.s)return e.s=-e.s,p.plus(e);if(l=p.d,f=e.d,s=m.precision,c=m.rounding,!l[0]||!f[0]){if(f[0])e.s=-e.s;else if(l[0])e=new m(p);else return new m(c===3?-0:0);return V?finalise(e,s,c):e}if(n=W(e.e/q),u=W(p.e/q),l=l.slice(),a=u-n,a){for(d=a<0,d?(t=l,a=-a,o=f.length):(t=f,n=u,o=l.length),r=Math.max(Math.ceil(s/q),o)+2,a>r&&(a=r,t.length=1),t.reverse(),r=a;r--;)t.push(0);t.reverse()}else{for(r=l.length,o=f.length,d=r<o,d&&(o=r),r=0;r<o;r++)if(l[r]!=f[r]){d=l[r]<f[r];break}a=0}for(d&&(t=l,l=f,f=t,e.s=-e.s),o=l.length,r=f.length-o;r>0;--r)l[o++]=0;for(r=f.length;r>a;){if(l[--r]<f[r]){for(i=r;i&&l[--i]===0;)l[i]=K-1;--l[i],l[r]+=K}l[r]-=f[r]}for(;l[--o]===0;)l.pop();for(;l[0]===0;l.shift())--n;return l[0]?(e.d=l,e.e=getBase10Exponent(l,n),V?finalise(e,s,c):e):new m(c===3?-0:0)},J.modulo=J.mod=function(e){var t,n=this,r=n.constructor;return e=new r(e),!n.d||!e.s||e.d&&!e.d[0]?new r(NaN):!e.d||n.d&&!n.d[0]?finalise(new r(n),r.precision,r.rounding):(V=!1,r.modulo==9?(t=Y(n,e.abs(),0,3,1),t.s*=e.s):t=Y(n,e,0,r.modulo,1),t=t.times(e),V=!0,n.minus(t))},J.naturalExponential=J.exp=function(){return naturalExponential(this)},J.naturalLogarithm=J.ln=function(){return naturalLogarithm(this)},J.negated=J.neg=function(){var e=new this.constructor(this);return e.s=-e.s,finalise(e)},J.plus=J.add=function(e){var t,n,r,i,a,o,s,c,l,u,d=this,f=d.constructor;if(e=new f(e),!d.d||!e.d)return!d.s||!e.s?e=new f(NaN):d.d||(e=new f(e.d||d.s===e.s?d:NaN)),e;if(d.s!=e.s)return e.s=-e.s,d.minus(e);if(l=d.d,u=e.d,s=f.precision,c=f.rounding,!l[0]||!u[0])return u[0]||(e=new f(d)),V?finalise(e,s,c):e;if(a=W(d.e/q),r=W(e.e/q),l=l.slice(),i=a-r,i){for(i<0?(n=l,i=-i,o=u.length):(n=u,r=a,o=l.length),a=Math.ceil(s/q),o=a>o?a+1:o+1,i>o&&(i=o,n.length=1),n.reverse();i--;)n.push(0);n.reverse()}for(o=l.length,i=u.length,o-i<0&&(i=o,n=u,u=l,l=n),t=0;i;)t=(l[--i]=l[i]+u[i]+t)/K|0,l[i]%=K;for(t&&(l.unshift(t),++r),o=l.length;l[--o]==0;)l.pop();return e.d=l,e.e=getBase10Exponent(l,r),V?finalise(e,s,c):e},J.precision=J.sd=function(e){var t,n=this;if(e!==void 0&&e!==!!e&&e!==1&&e!==0)throw Error(U+e);return n.d?(t=getPrecision(n.d),e&&n.e+1>t&&(t=n.e+1)):t=NaN,t},J.round=function(){var e=this,t=e.constructor;return finalise(new t(e),e.e+1,t.rounding)},J.sine=J.sin=function(){var e,t,n=this,r=n.constructor;return n.isFinite()?n.isZero()?new r(n):(e=r.precision,t=r.rounding,r.precision=e+Math.max(n.e,n.sd())+q,r.rounding=1,n=sine(r,toLessThanHalfPi(r,n)),r.precision=e,r.rounding=t,finalise(B>2?n.neg():n,e,t,!0)):new r(NaN)},J.squareRoot=J.sqrt=function(){var e,t,n,r,i,a,o=this,s=o.d,c=o.e,l=o.s,u=o.constructor;if(l!==1||!s||!s[0])return new u(!l||l<0&&(!s||s[0])?NaN:s?o:1/0);for(V=!1,l=Math.sqrt(+o),l==0||l==1/0?(t=digitsToString(s),(t.length+c)%2==0&&(t+=`0`),l=Math.sqrt(t),c=W((c+1)/2)-(c<0||c%2),l==1/0?t=`5e`+c:(t=l.toExponential(),t=t.slice(0,t.indexOf(`e`)+1)+c),r=new u(t)):r=new u(l.toString()),n=(c=u.precision)+3;;)if(a=r,r=a.plus(Y(o,a,n+2,1)).times(.5),digitsToString(a.d).slice(0,n)===(t=digitsToString(r.d)).slice(0,n))if(t=t.slice(n-3,n+1),t==`9999`||!i&&t==`4999`){if(!i&&(finalise(a,c+1,0),a.times(a).eq(o))){r=a;break}n+=4,i=1}else{(!+t||!+t.slice(1)&&t.charAt(0)==`5`)&&(finalise(r,c+1,1),e=!r.times(r).eq(o));break}return V=!0,finalise(r,c,u.rounding,e)},J.tangent=J.tan=function(){var e,t,n=this,r=n.constructor;return n.isFinite()?n.isZero()?new r(n):(e=r.precision,t=r.rounding,r.precision=e+10,r.rounding=1,n=n.sin(),n.s=1,n=Y(n,new r(1).minus(n.times(n)).sqrt(),e+10,0),r.precision=e,r.rounding=t,finalise(B==2||B==4?n.neg():n,e,t,!0)):new r(NaN)},J.times=J.mul=function(e){var t,n,r,i,a,o,s,c,l,u=this,d=u.constructor,f=u.d,p=(e=new d(e)).d;if(e.s*=u.s,!f||!f[0]||!p||!p[0])return new d(!e.s||f&&!f[0]&&!p||p&&!p[0]&&!f?NaN:!f||!p?e.s/0:e.s*0);for(n=W(u.e/q)+W(e.e/q),c=f.length,l=p.length,c<l&&(a=f,f=p,p=a,o=c,c=l,l=o),a=[],o=c+l,r=o;r--;)a.push(0);for(r=l;--r>=0;){for(t=0,i=c+r;i>r;)s=a[i]+p[r]*f[i-r-1]+t,a[i--]=s%K|0,t=s/K|0;a[i]=(a[i]+t)%K|0}for(;!a[--o];)a.pop();return t?++n:a.shift(),e.d=a,e.e=getBase10Exponent(a,n),V?finalise(e,d.precision,d.rounding):e},J.toBinary=function(e,t){return toStringBinary(this,2,e,t)},J.toDecimalPlaces=J.toDP=function(e,t){var n=this,r=n.constructor;return n=new r(n),e===void 0?n:(checkInt32(e,0,z),t===void 0?t=r.rounding:checkInt32(t,0,8),finalise(n,e+n.e+1,t))},J.toExponential=function(e,t){var n,r=this,i=r.constructor;return e===void 0?n=finiteToString(r,!0):(checkInt32(e,0,z),t===void 0?t=i.rounding:checkInt32(t,0,8),r=finalise(new i(r),e+1,t),n=finiteToString(r,!0,e+1)),r.isNeg()&&!r.isZero()?`-`+n:n},J.toFixed=function(e,t){var n,r,i=this,a=i.constructor;return e===void 0?n=finiteToString(i):(checkInt32(e,0,z),t===void 0?t=a.rounding:checkInt32(t,0,8),r=finalise(new a(i),e+i.e+1,t),n=finiteToString(r,!1,e+r.e+1)),i.isNeg()&&!i.isZero()?`-`+n:n},J.toFraction=function(e){var t,n,r,i,a,o,s,c,l,u,d,f,p=this,m=p.d,h=p.constructor;if(!m)return new h(p);if(l=n=new h(1),r=c=new h(0),t=new h(r),a=t.e=getPrecision(m)-p.e-1,o=a%q,t.d[0]=G(10,o<0?q+o:o),e==null)e=a>0?t:l;else{if(s=new h(e),!s.isInt()||s.lt(l))throw Error(U+s);e=s.gt(t)?a>0?t:l:s}for(V=!1,s=new h(digitsToString(m)),u=h.precision,h.precision=a=m.length*q*2;d=Y(s,t,0,1,1),i=n.plus(d.times(r)),i.cmp(e)!=1;)n=r,r=i,i=l,l=c.plus(d.times(i)),c=i,i=t,t=s.minus(d.times(i)),s=i;return i=Y(e.minus(n),r,0,1,1),c=c.plus(i.times(l)),n=n.plus(i.times(r)),c.s=l.s=p.s,f=Y(l,r,a,1).minus(p).abs().cmp(Y(c,n,a,1).minus(p).abs())<1?[l,r]:[c,n],h.precision=u,V=!0,f},J.toHexadecimal=J.toHex=function(e,t){return toStringBinary(this,16,e,t)},J.toNearest=function(e,t){var n=this,r=n.constructor;if(n=new r(n),e==null){if(!n.d)return n;e=new r(1),t=r.rounding}else{if(e=new r(e),t===void 0?t=r.rounding:checkInt32(t,0,8),!n.d)return e.s?n:e;if(!e.d)return e.s&&=n.s,e}return e.d[0]?(V=!1,n=Y(n,e,0,t,1).times(e),V=!0,finalise(n)):(e.s=n.s,n=e),n},J.toNumber=function(){return+this},J.toOctal=function(e,t){return toStringBinary(this,8,e,t)},J.toPower=J.pow=function(e){var t,n,r,i,a,o,s=this,c=s.constructor,l=+(e=new c(e));if(!s.d||!e.d||!s.d[0]||!e.d[0])return new c(G(+s,l));if(s=new c(s),s.eq(1))return s;if(r=c.precision,a=c.rounding,e.eq(1))return finalise(s,r,a);if(t=W(e.e/q),t>=e.d.length-1&&(n=l<0?-l:l)<=ht)return i=intPow(c,s,n,r),e.s<0?new c(1).div(i):finalise(i,r,a);if(o=s.s,o<0){if(t<e.d.length-1)return new c(NaN);if(e.d[t]&1||(o=1),s.e==0&&s.d[0]==1&&s.d.length==1)return s.s=o,s}return n=G(+s,l),t=n==0||!isFinite(n)?W(l*(Math.log(`0.`+digitsToString(s.d))/Math.LN10+s.e+1)):new c(n+``).e,t>c.maxE+1||t<c.minE-1?new c(t>0?o/0:0):(V=!1,c.rounding=s.s=1,n=Math.min(12,(t+``).length),i=naturalExponential(e.times(naturalLogarithm(s,r+n)),r),i.d&&(i=finalise(i,r+5,1),checkRoundingDigits(i.d,r,a)&&(t=r+10,i=finalise(naturalExponential(e.times(naturalLogarithm(s,t+n)),t),t+5,1),+digitsToString(i.d).slice(r+1,r+15)+1==0x5af3107a4000&&(i=finalise(i,r+1,0)))),i.s=o,V=!0,c.rounding=a,finalise(i,r,a))},J.toPrecision=function(e,t){var n,r=this,i=r.constructor;return e===void 0?n=finiteToString(r,r.e<=i.toExpNeg||r.e>=i.toExpPos):(checkInt32(e,1,z),t===void 0?t=i.rounding:checkInt32(t,0,8),r=finalise(new i(r),e,t),n=finiteToString(r,e<=r.e||r.e<=i.toExpNeg,e)),r.isNeg()&&!r.isZero()?`-`+n:n},J.toSignificantDigits=J.toSD=function(e,t){var n=this,r=n.constructor;return e===void 0?(e=r.precision,t=r.rounding):(checkInt32(e,1,z),t===void 0?t=r.rounding:checkInt32(t,0,8)),finalise(new r(n),e,t)},J.toString=function(){var e=this,t=e.constructor,n=finiteToString(e,e.e<=t.toExpNeg||e.e>=t.toExpPos);return e.isNeg()&&!e.isZero()?`-`+n:n},J.truncated=J.trunc=function(){return finalise(new this.constructor(this),this.e+1,1)},J.valueOf=J.toJSON=function(){var e=this,t=e.constructor,n=finiteToString(e,e.e<=t.toExpNeg||e.e>=t.toExpPos);return e.isNeg()?`-`+n:n};function digitsToString(e){var t,n,r,i=e.length-1,a=``,o=e[0];if(i>0){for(a+=o,t=1;t<i;t++)r=e[t]+``,n=q-r.length,n&&(a+=getZeroString(n)),a+=r;o=e[t],r=o+``,n=q-r.length,n&&(a+=getZeroString(n))}else if(o===0)return`0`;for(;o%10==0;)o/=10;return a+o}function checkInt32(e,t,n){if(e!==~~e||e<t||e>n)throw Error(U+e)}function checkRoundingDigits(e,t,n,r){var i,a,o,s;for(a=e[0];a>=10;a/=10)--t;return--t<0?(t+=q,i=0):(i=Math.ceil((t+1)/q),t%=q),a=G(10,q-t),s=e[i]%a|0,r==null?t<3?(t==0?s=s/100|0:t==1&&(s=s/10|0),o=n<4&&s==99999||n>3&&s==49999||s==5e4||s==0):o=(n<4&&s+1==a||n>3&&s+1==a/2)&&(e[i+1]/a/100|0)==G(10,t-2)-1||(s==a/2||s==0)&&(e[i+1]/a/100|0)==0:t<4?(t==0?s=s/1e3|0:t==1?s=s/100|0:t==2&&(s=s/10|0),o=(r||n<4)&&s==9999||!r&&n>3&&s==4999):o=((r||n<4)&&s+1==a||!r&&n>3&&s+1==a/2)&&(e[i+1]/a/1e3|0)==G(10,t-3)-1,o}function convertBase(e,t,n){for(var r,i=[0],a,o=0,s=e.length;o<s;){for(a=i.length;a--;)i[a]*=t;for(i[0]+=rt.indexOf(e.charAt(o++)),r=0;r<i.length;r++)i[r]>n-1&&(i[r+1]===void 0&&(i[r+1]=0),i[r+1]+=i[r]/n|0,i[r]%=n)}return i.reverse()}function cosine(e,t){var n,r,i;if(t.isZero())return t;r=t.d.length,r<32?(n=Math.ceil(r/3),i=(1/tinyPow(4,n)).toString()):(n=16,i=`2.3283064365386962890625e-10`),e.precision+=n,t=taylorSeries(e,1,t.times(i),new e(1));for(var a=n;a--;){var o=t.times(t);t=o.times(o).minus(o).times(8).plus(1)}return e.precision-=n,t}var Y=(function(){function multiplyInteger(e,t,n){var r,i=0,a=e.length;for(e=e.slice();a--;)r=e[a]*t+i,e[a]=r%n|0,i=r/n|0;return i&&e.unshift(i),e}function compare(e,t,n,r){var i,a;if(n!=r)a=n>r?1:-1;else for(i=a=0;i<n;i++)if(e[i]!=t[i]){a=e[i]>t[i]?1:-1;break}return a}function subtract(e,t,n,r){for(var i=0;n--;)e[n]-=i,i=e[n]<t[n]?1:0,e[n]=i*r+e[n]-t[n];for(;!e[0]&&e.length>1;)e.shift()}return function(e,t,n,r,i,a){var o,s,c,l,u,d,f,p,m,h,g,_,v,y,b,x,S,ee,C,w,T=e.constructor,E=e.s==t.s?1:-1,D=e.d,O=t.d;if(!D||!D[0]||!O||!O[0])return new T(!e.s||!t.s||(D?O&&D[0]==O[0]:!O)?NaN:D&&D[0]==0||!O?E*0:E/0);for(a?(u=1,s=e.e-t.e):(a=K,u=q,s=W(e.e/u)-W(t.e/u)),C=O.length,S=D.length,m=new T(E),h=m.d=[],c=0;O[c]==(D[c]||0);c++);if(O[c]>(D[c]||0)&&s--,n==null?(y=n=T.precision,r=T.rounding):y=i?n+(e.e-t.e)+1:n,y<0)h.push(1),d=!0;else{if(y=y/u+2|0,c=0,C==1){for(l=0,O=O[0],y++;(c<S||l)&&y--;c++)b=l*a+(D[c]||0),h[c]=b/O|0,l=b%O|0;d=l||c<S}else{for(l=a/(O[0]+1)|0,l>1&&(O=multiplyInteger(O,l,a),D=multiplyInteger(D,l,a),C=O.length,S=D.length),x=C,g=D.slice(0,C),_=g.length;_<C;)g[_++]=0;w=O.slice(),w.unshift(0),ee=O[0],O[1]>=a/2&&++ee;do l=0,o=compare(O,g,C,_),o<0?(v=g[0],C!=_&&(v=v*a+(g[1]||0)),l=v/ee|0,l>1?(l>=a&&(l=a-1),f=multiplyInteger(O,l,a),p=f.length,_=g.length,o=compare(f,g,p,_),o==1&&(l--,subtract(f,C<p?w:O,p,a))):(l==0&&(o=l=1),f=O.slice()),p=f.length,p<_&&f.unshift(0),subtract(g,f,_,a),o==-1&&(_=g.length,o=compare(O,g,C,_),o<1&&(l++,subtract(g,C<_?w:O,_,a))),_=g.length):o===0&&(l++,g=[0]),h[c++]=l,o&&g[0]?g[_++]=D[x]||0:(g=[D[x]],_=1);while((x++<S||g[0]!==void 0)&&y--);d=g[0]!==void 0}h[0]||h.shift()}if(u==1)m.e=s,st=d;else{for(c=1,l=h[0];l>=10;l/=10)c++;m.e=c+s*u-1,finalise(m,i?n+m.e+1:n,r,d)}return m}})();function finalise(e,t,n,r){var i,a,o,s,c,l,u,d,f,p=e.constructor;out:if(t!=null){if(d=e.d,!d)return e;for(i=1,s=d[0];s>=10;s/=10)i++;if(a=t-i,a<0)a+=q,o=t,u=d[f=0],c=u/G(10,i-o-1)%10|0;else if(f=Math.ceil((a+1)/q),s=d.length,f>=s)if(r){for(;s++<=f;)d.push(0);u=c=0,i=1,a%=q,o=a-q+1}else break out;else{for(u=s=d[f],i=1;s>=10;s/=10)i++;a%=q,o=a-q+i,c=o<0?0:u/G(10,i-o-1)%10|0}if(r=r||t<0||d[f+1]!==void 0||(o<0?u:u%G(10,i-o-1)),l=n<4?(c||r)&&(n==0||n==(e.s<0?3:2)):c>5||c==5&&(n==4||r||n==6&&(a>0?o>0?u/G(10,i-o):0:d[f-1])%10&1||n==(e.s<0?8:7)),t<1||!d[0])return d.length=0,l?(t-=e.e+1,d[0]=G(10,(q-t%q)%q),e.e=-t||0):d[0]=e.e=0,e;if(a==0?(d.length=f,s=1,f--):(d.length=f+1,s=G(10,q-a),d[f]=o>0?(u/G(10,i-o)%G(10,o)|0)*s:0),l)for(;;)if(f==0){for(a=1,o=d[0];o>=10;o/=10)a++;for(o=d[0]+=s,s=1;o>=10;o/=10)s++;a!=s&&(e.e++,d[0]==K&&(d[0]=1));break}else{if(d[f]+=s,d[f]!=K)break;d[f--]=0,s=1}for(a=d.length;d[--a]===0;)d.pop()}return V&&(e.e>p.maxE?(e.d=null,e.e=NaN):e.e<p.minE&&(e.e=0,e.d=[0])),e}function finiteToString(e,t,n){if(!e.isFinite())return nonFiniteToString(e);var r,i=e.e,a=digitsToString(e.d),o=a.length;return t?(n&&(r=n-o)>0?a=a.charAt(0)+`.`+a.slice(1)+getZeroString(r):o>1&&(a=a.charAt(0)+`.`+a.slice(1)),a=a+(e.e<0?`e`:`e+`)+e.e):i<0?(a=`0.`+getZeroString(-i-1)+a,n&&(r=n-o)>0&&(a+=getZeroString(r))):i>=o?(a+=getZeroString(i+1-o),n&&(r=n-i-1)>0&&(a=a+`.`+getZeroString(r))):((r=i+1)<o&&(a=a.slice(0,r)+`.`+a.slice(r)),n&&(r=n-o)>0&&(i+1===o&&(a+=`.`),a+=getZeroString(r))),a}function getBase10Exponent(e,t){var n=e[0];for(t*=q;n>=10;n/=10)t++;return t}function getLn10(e,t,n){if(t>gt)throw V=!0,n&&(e.precision=n),Error(ct);return finalise(new e(it),t,1,!0)}function getPi(e,t,n){if(t>_t)throw Error(ct);return finalise(new e(at),t,n,!0)}function getPrecision(e){var t=e.length-1,n=t*q+1;if(t=e[t],t){for(;t%10==0;t/=10)n--;for(t=e[0];t>=10;t/=10)n++}return n}function getZeroString(e){for(var t=``;e--;)t+=`0`;return t}function intPow(e,t,n,r){var i,a=new e(1),o=Math.ceil(r/q+4);for(V=!1;;){if(n%2&&(a=a.times(t),truncate(a.d,o)&&(i=!0)),n=W(n/2),n===0){n=a.d.length-1,i&&a.d[n]===0&&++a.d[n];break}t=t.times(t),truncate(t.d,o)}return V=!0,a}function isOdd(e){return e.d[e.d.length-1]&1}function maxOrMin(e,t,n){for(var r,i,a=new e(t[0]),o=0;++o<t.length;){if(i=new e(t[o]),!i.s){a=i;break}r=a.cmp(i),(r===n||r===0&&a.s===n)&&(a=i)}return a}function naturalExponential(e,t){var n,r,i,a,o,s,c,l=0,u=0,d=0,f=e.constructor,p=f.rounding,m=f.precision;if(!e.d||!e.d[0]||e.e>17)return new f(e.d?e.d[0]?e.s<0?0:1/0:1:e.s?e.s<0?0:e:NaN);for(t==null?(V=!1,c=m):c=t,s=new f(.03125);e.e>-2;)e=e.times(s),d+=5;for(r=Math.log(G(2,d))/Math.LN10*2+5|0,c+=r,n=a=o=new f(1),f.precision=c;;){if(a=finalise(a.times(e),c,1),n=n.times(++u),s=o.plus(Y(a,n,c,1)),digitsToString(s.d).slice(0,c)===digitsToString(o.d).slice(0,c)){for(i=d;i--;)o=finalise(o.times(o),c,1);if(t==null)if(l<3&&checkRoundingDigits(o.d,c-r,p,l))f.precision=c+=10,n=a=s=new f(1),u=0,l++;else return finalise(o,f.precision=m,p,V=!0);else return f.precision=m,o}o=s}}function naturalLogarithm(e,t){var n,r,i,a,o,s,c,l,u,d,f,p=1,m=10,h=e,g=h.d,_=h.constructor,v=_.rounding,y=_.precision;if(h.s<0||!g||!g[0]||!h.e&&g[0]==1&&g.length==1)return new _(g&&!g[0]?-1/0:h.s==1?g?0:h:NaN);if(t==null?(V=!1,u=y):u=t,_.precision=u+=m,n=digitsToString(g),r=n.charAt(0),Math.abs(a=h.e)<0x5543df729c000){for(;r<7&&r!=1||r==1&&n.charAt(1)>3;)h=h.times(e),n=digitsToString(h.d),r=n.charAt(0),p++;a=h.e,r>1?(h=new _(`0.`+n),a++):h=new _(r+`.`+n.slice(1))}else return l=getLn10(_,u+2,y).times(a+``),h=naturalLogarithm(new _(r+`.`+n.slice(1)),u-m).plus(l),_.precision=y,t==null?finalise(h,y,v,V=!0):h;for(d=h,c=o=h=Y(h.minus(1),h.plus(1),u,1),f=finalise(h.times(h),u,1),i=3;;){if(o=finalise(o.times(f),u,1),l=c.plus(Y(o,new _(i),u,1)),digitsToString(l.d).slice(0,u)===digitsToString(c.d).slice(0,u))if(c=c.times(2),a!==0&&(c=c.plus(getLn10(_,u+2,y).times(a+``))),c=Y(c,new _(p),u,1),t==null)if(checkRoundingDigits(c.d,u-m,v,s))_.precision=u+=m,l=o=h=Y(d.minus(1),d.plus(1),u,1),f=finalise(h.times(h),u,1),i=s=1;else return finalise(c,_.precision=y,v,V=!0);else return _.precision=y,c;c=l,i+=2}}function nonFiniteToString(e){return String(e.s*e.s/0)}function parseDecimal(e,t){var n,r,i;for((n=t.indexOf(`.`))>-1&&(t=t.replace(`.`,``)),(r=t.search(/e/i))>0?(n<0&&(n=r),n+=+t.slice(r+1),t=t.substring(0,r)):n<0&&(n=t.length),r=0;t.charCodeAt(r)===48;r++);for(i=t.length;t.charCodeAt(i-1)===48;--i);if(t=t.slice(r,i),t){if(i-=r,e.e=n=n-r-1,e.d=[],r=(n+1)%q,n<0&&(r+=q),r<i){for(r&&e.d.push(+t.slice(0,r)),i-=q;r<i;)e.d.push(+t.slice(r,r+=q));t=t.slice(r),r=q-t.length}else r-=i;for(;r--;)t+=`0`;e.d.push(+t),V&&(e.e>e.constructor.maxE?(e.d=null,e.e=NaN):e.e<e.constructor.minE&&(e.e=0,e.d=[0]))}else e.e=0,e.d=[0];return e}function parseOther(e,t){var n,r,i,a,o,s,c,l,u;if(t.indexOf(`_`)>-1){if(t=t.replace(/(\d)_(?=\d)/g,`$1`),mt.test(t))return parseDecimal(e,t)}else if(t===`Infinity`||t===`NaN`)return+t||(e.s=NaN),e.e=NaN,e.d=null,e;if(ft.test(t))n=16,t=t.toLowerCase();else if(dt.test(t))n=2;else if(pt.test(t))n=8;else throw Error(U+t);for(a=t.search(/p/i),a>0?(c=+t.slice(a+1),t=t.substring(2,a)):t=t.slice(2),a=t.indexOf(`.`),o=a>=0,r=e.constructor,o&&(t=t.replace(`.`,``),s=t.length,a=s-a,i=intPow(r,new r(n),a,a*2)),l=convertBase(t,n,K),u=l.length-1,a=u;l[a]===0;--a)l.pop();return a<0?new r(e.s*0):(e.e=getBase10Exponent(l,u),e.d=l,V=!1,o&&(e=Y(e,i,s*4)),c&&(e=e.times(Math.abs(c)<54?G(2,c):X.pow(2,c))),V=!0,e)}function sine(e,t){var n,r=t.d.length;if(r<3)return t.isZero()?t:taylorSeries(e,2,t,t);n=1.4*Math.sqrt(r),n=n>16?16:n|0,t=t.times(1/tinyPow(5,n)),t=taylorSeries(e,2,t,t);for(var i,a=new e(5),o=new e(16),s=new e(20);n--;)i=t.times(t),t=t.times(a.plus(i.times(o.times(i).minus(s))));return t}function taylorSeries(e,t,n,r,i){var a,o,s,c,l=1,u=e.precision,d=Math.ceil(u/q);for(V=!1,c=n.times(n),s=new e(r);;){if(o=Y(s.times(c),new e(t++*t++),u,1),s=i?r.plus(o):r.minus(o),r=Y(o.times(c),new e(t++*t++),u,1),o=s.plus(r),o.d[d]!==void 0){for(a=d;o.d[a]===s.d[a]&&a--;);if(a==-1)break}a=s,s=r,r=o,o=a,l++}return V=!0,o.d.length=d+1,o}function tinyPow(e,t){for(var n=e;--t;)n*=e;return n}function toLessThanHalfPi(e,t){var n,r=t.s<0,i=getPi(e,e.precision,1),a=i.times(.5);if(t=t.abs(),t.lte(a))return B=r?4:1,t;if(n=t.divToInt(i),n.isZero())B=r?3:2;else{if(t=t.minus(n.times(i)),t.lte(a))return B=isOdd(n)?r?2:3:r?4:1,t;B=isOdd(n)?r?1:4:r?3:2}return t.minus(i).abs()}function toStringBinary(e,t,n,r){var i,a,o,s,c,l,u,d,f,p=e.constructor,m=n!==void 0;if(m?(checkInt32(n,1,z),r===void 0?r=p.rounding:checkInt32(r,0,8)):(n=p.precision,r=p.rounding),!e.isFinite())u=nonFiniteToString(e);else{for(u=finiteToString(e),o=u.indexOf(`.`),m?(i=2,t==16?n=n*4-3:t==8&&(n=n*3-2)):i=t,o>=0&&(u=u.replace(`.`,``),f=new p(1),f.e=u.length-o,f.d=convertBase(finiteToString(f),10,i),f.e=f.d.length),d=convertBase(u,10,i),a=c=d.length;d[--c]==0;)d.pop();if(!d[0])u=m?`0p+0`:`0`;else{if(o<0?a--:(e=new p(e),e.d=d,e.e=a,e=Y(e,f,n,r,0,i),d=e.d,a=e.e,l=st),o=d[n],s=i/2,l||=d[n+1]!==void 0,l=r<4?(o!==void 0||l)&&(r===0||r===(e.s<0?3:2)):o>s||o===s&&(r===4||l||r===6&&d[n-1]&1||r===(e.s<0?8:7)),d.length=n,l)for(;++d[--n]>i-1;)d[n]=0,n||(++a,d.unshift(1));for(c=d.length;!d[c-1];--c);for(o=0,u=``;o<c;o++)u+=rt.charAt(d[o]);if(m){if(c>1)if(t==16||t==8){for(o=t==16?4:3,--c;c%o;c++)u+=`0`;for(d=convertBase(u,i,t),c=d.length;!d[c-1];--c);for(o=1,u=`1.`;o<c;o++)u+=rt.charAt(d[o])}else u=u.charAt(0)+`.`+u.slice(1);u=u+(a<0?`p`:`p+`)+a}else if(a<0){for(;++a;)u=`0`+u;u=`0.`+u}else if(++a>c)for(a-=c;a--;)u+=`0`;else a<c&&(u=u.slice(0,a)+`.`+u.slice(a))}u=(t==16?`0x`:t==2?`0b`:t==8?`0o`:``)+u}return e.s<0?`-`+u:u}function truncate(e,t){if(e.length>t)return e.length=t,!0}function abs(e){return new this(e).abs()}function acos(e){return new this(e).acos()}function acosh(e){return new this(e).acosh()}function add(e,t){return new this(e).plus(t)}function asin(e){return new this(e).asin()}function asinh(e){return new this(e).asinh()}function atan(e){return new this(e).atan()}function atanh(e){return new this(e).atanh()}function atan2(e,t){e=new this(e),t=new this(t);var n,r=this.precision,i=this.rounding,a=r+4;return!e.s||!t.s?n=new this(NaN):!e.d&&!t.d?(n=getPi(this,a,1).times(t.s>0?.25:.75),n.s=e.s):!t.d||e.isZero()?(n=t.s<0?getPi(this,r,i):new this(0),n.s=e.s):!e.d||t.isZero()?(n=getPi(this,a,1).times(.5),n.s=e.s):t.s<0?(this.precision=a,this.rounding=1,n=this.atan(Y(e,t,a,1)),t=getPi(this,a,1),this.precision=r,this.rounding=i,n=e.s<0?n.minus(t):n.plus(t)):n=this.atan(Y(e,t,a,1)),n}function cbrt(e){return new this(e).cbrt()}function ceil(e){return finalise(e=new this(e),e.e+1,2)}function clamp(e,t,n){return new this(e).clamp(t,n)}function config(e){if(!e||typeof e!=`object`)throw Error(H+`Object expected`);var t,n,r,i=e.defaults===!0,a=[`precision`,1,z,`rounding`,0,8,`toExpNeg`,-R,0,`toExpPos`,0,R,`maxE`,0,R,`minE`,-R,0,`modulo`,0,9];for(t=0;t<a.length;t+=3)if(n=a[t],i&&(this[n]=ot[n]),(r=e[n])!==void 0)if(W(r)===r&&r>=a[t+1]&&r<=a[t+2])this[n]=r;else throw Error(U+n+`: `+r);if(n=`crypto`,i&&(this[n]=ot[n]),(r=e[n])!==void 0)if(r===!0||r===!1||r===0||r===1)if(r)if(typeof crypto<`u`&&crypto&&(crypto.getRandomValues||crypto.randomBytes))this[n]=!0;else throw Error(lt);else this[n]=!1;else throw Error(U+n+`: `+r);return this}function cos(e){return new this(e).cos()}function cosh$1(e){return new this(e).cosh()}__name(cosh$1,`cosh`);function clone(e){var t,n,r;function Decimal$1(e){var t,n,r,i=this;if(!(i instanceof Decimal$1))return new Decimal$1(e);if(i.constructor=Decimal$1,isDecimalInstance(e)){i.s=e.s,V?!e.d||e.e>Decimal$1.maxE?(i.e=NaN,i.d=null):e.e<Decimal$1.minE?(i.e=0,i.d=[0]):(i.e=e.e,i.d=e.d.slice()):(i.e=e.e,i.d=e.d?e.d.slice():e.d);return}if(r=typeof e,r===`number`){if(e===0){i.s=1/e<0?-1:1,i.e=0,i.d=[0];return}if(e<0?(e=-e,i.s=-1):i.s=1,e===~~e&&e<1e7){for(t=0,n=e;n>=10;n/=10)t++;V?t>Decimal$1.maxE?(i.e=NaN,i.d=null):t<Decimal$1.minE?(i.e=0,i.d=[0]):(i.e=t,i.d=[e]):(i.e=t,i.d=[e]);return}if(e*0!=0){e||(i.s=NaN),i.e=NaN,i.d=null;return}return parseDecimal(i,e.toString())}if(r===`string`)return(n=e.charCodeAt(0))===45?(e=e.slice(1),i.s=-1):(n===43&&(e=e.slice(1)),i.s=1),mt.test(e)?parseDecimal(i,e):parseOther(i,e);if(r===`bigint`)return e<0?(e=-e,i.s=-1):i.s=1,parseDecimal(i,e.toString());throw Error(U+e)}if(__name(Decimal$1,`Decimal`),Decimal$1.prototype=J,Decimal$1.ROUND_UP=0,Decimal$1.ROUND_DOWN=1,Decimal$1.ROUND_CEIL=2,Decimal$1.ROUND_FLOOR=3,Decimal$1.ROUND_HALF_UP=4,Decimal$1.ROUND_HALF_DOWN=5,Decimal$1.ROUND_HALF_EVEN=6,Decimal$1.ROUND_HALF_CEIL=7,Decimal$1.ROUND_HALF_FLOOR=8,Decimal$1.EUCLID=9,Decimal$1.config=Decimal$1.set=config,Decimal$1.clone=clone,Decimal$1.isDecimal=isDecimalInstance,Decimal$1.abs=abs,Decimal$1.acos=acos,Decimal$1.acosh=acosh,Decimal$1.add=add,Decimal$1.asin=asin,Decimal$1.asinh=asinh,Decimal$1.atan=atan,Decimal$1.atanh=atanh,Decimal$1.atan2=atan2,Decimal$1.cbrt=cbrt,Decimal$1.ceil=ceil,Decimal$1.clamp=clamp,Decimal$1.cos=cos,Decimal$1.cosh=cosh$1,Decimal$1.div=div,Decimal$1.exp=exp,Decimal$1.floor=floor,Decimal$1.hypot=hypot$1,Decimal$1.ln=ln,Decimal$1.log=log,Decimal$1.log10=log10,Decimal$1.log2=log2,Decimal$1.max=max,Decimal$1.min=min,Decimal$1.mod=mod,Decimal$1.mul=mul,Decimal$1.pow=pow,Decimal$1.random=random,Decimal$1.round=round,Decimal$1.sign=sign,Decimal$1.sin=sin,Decimal$1.sinh=sinh$1,Decimal$1.sqrt=sqrt,Decimal$1.sub=sub,Decimal$1.sum=sum,Decimal$1.tan=tan,Decimal$1.tanh=tanh,Decimal$1.trunc=trunc,e===void 0&&(e={}),e&&e.defaults!==!0)for(r=[`precision`,`rounding`,`toExpNeg`,`toExpPos`,`maxE`,`minE`,`modulo`,`crypto`],t=0;t<r.length;)e.hasOwnProperty(n=r[t++])||(e[n]=this[n]);return Decimal$1.config(e),Decimal$1}function div(e,t){return new this(e).div(t)}function exp(e){return new this(e).exp()}function floor(e){return finalise(e=new this(e),e.e+1,3)}function hypot$1(){var e,t,n=new this(0);for(V=!1,e=0;e<arguments.length;)if(t=new this(arguments[e++]),t.d)n.d&&(n=n.plus(t.times(t)));else{if(t.s)return V=!0,new this(1/0);n=t}return V=!0,n.sqrt()}__name(hypot$1,`hypot`);function isDecimalInstance(e){return e instanceof X||e&&e.toStringTag===ut||!1}function ln(e){return new this(e).ln()}function log(e,t){return new this(e).log(t)}function log2(e){return new this(e).log(2)}function log10(e){return new this(e).log(10)}function max(){return maxOrMin(this,arguments,-1)}function min(){return maxOrMin(this,arguments,1)}function mod(e,t){return new this(e).mod(t)}function mul(e,t){return new this(e).mul(t)}function pow(e,t){return new this(e).pow(t)}function random(e){var t,n,r,i,a=0,o=new this(1),s=[];if(e===void 0?e=this.precision:checkInt32(e,1,z),r=Math.ceil(e/q),this.crypto)if(crypto.getRandomValues)for(t=crypto.getRandomValues(new Uint32Array(r));a<r;)i=t[a],i>=429e7?t[a]=crypto.getRandomValues(new Uint32Array(1))[0]:s[a++]=i%1e7;else if(crypto.randomBytes){for(t=crypto.randomBytes(r*=4);a<r;)i=t[a]+(t[a+1]<<8)+(t[a+2]<<16)+((t[a+3]&127)<<24),i>=214e7?crypto.randomBytes(4).copy(t,a):(s.push(i%1e7),a+=4);a=r/4}else throw Error(lt);else for(;a<r;)s[a++]=Math.random()*1e7|0;for(r=s[--a],e%=q,r&&e&&(i=G(10,q-e),s[a]=(r/i|0)*i);s[a]===0;a--)s.pop();if(a<0)n=0,s=[0];else{for(n=-1;s[0]===0;n-=q)s.shift();for(r=1,i=s[0];i>=10;i/=10)r++;r<q&&(n-=q-r)}return o.e=n,o.d=s,o}function round(e){return finalise(e=new this(e),e.e+1,this.rounding)}function sign(e){return e=new this(e),e.d?e.d[0]?e.s:0*e.s:e.s||NaN}function sin(e){return new this(e).sin()}function sinh$1(e){return new this(e).sinh()}__name(sinh$1,`sinh`);function sqrt(e){return new this(e).sqrt()}function sub(e,t){return new this(e).sub(t)}function sum(){var e=0,t=arguments,n=new this(t[e]);for(V=!1;n.s&&++e<t.length;)n=n.plus(t[e]);return V=!0,finalise(n,this.precision,this.rounding)}function tan(e){return new this(e).tan()}function tanh(e){return new this(e).tanh()}function trunc(e){return finalise(e=new this(e),e.e+1,1)}J[Symbol.for(`nodejs.util.inspect.custom`)]=J.toString,J[Symbol.toStringTag]=`Decimal`;var X=J.constructor=clone(ot);it=new X(it),at=new X(at);var vt=X,yt=`BigNumber`,bt=[`?on`,`config`],xt=factory(yt,bt,e=>{var{on:t,config:n}=e,r=vt.clone({precision:n.precision,modulo:vt.EUCLID});return r.prototype=Object.create(r.prototype),r.prototype.type=`BigNumber`,r.prototype.isBigNumber=!0,r.prototype.toJSON=function(){return{mathjs:`BigNumber`,value:this.toString()}},r.fromJSON=function(e){return new r(e.value)},t&&t(`config`,function(e,t){e.precision!==t.precision&&r.config({precision:e.precision})}),r},{isClass:!0});const Z=Math.cosh||function(e){return Math.abs(e)<1e-9?1-e:(Math.exp(e)+Math.exp(-e))*.5},Q=Math.sinh||function(e){return Math.abs(e)<1e-9?e:(Math.exp(e)-Math.exp(-e))*.5},cosm1=e=>{let t=Math.sin(.5*e);return-2*t*t},hypot=function(e,t){return e=Math.abs(e),t=Math.abs(t),e<t&&([e,t]=[t,e]),e<1e8?Math.sqrt(e*e+t*t):(t/=e,e*Math.sqrt(1+t*t))},parser_exit=function(){throw SyntaxError(`Invalid Param`)};function logHypot(e,t){let n=Math.abs(e),r=Math.abs(t);return e===0?Math.log(r):t===0?Math.log(n):n<3e3&&r<3e3?Math.log(e*e+t*t)*.5:(e*=.5,t*=.5,.5*Math.log(e*e+t*t)+Math.LN2)}const St={re:0,im:0},parse=function(e,t){let n=St;if(e==null)n.re=n.im=0;else if(t!==void 0)n.re=e,n.im=t;else switch(typeof e){case`object`:if(`im`in e&&`re`in e)n.re=e.re,n.im=e.im;else if(`abs`in e&&`arg`in e){if(!isFinite(e.abs)&&isFinite(e.arg))return Complex$1.INFINITY;n.re=e.abs*Math.cos(e.arg),n.im=e.abs*Math.sin(e.arg)}else if(`r`in e&&`phi`in e){if(!isFinite(e.r)&&isFinite(e.phi))return Complex$1.INFINITY;n.re=e.r*Math.cos(e.phi),n.im=e.r*Math.sin(e.phi)}else e.length===2?(n.re=e[0],n.im=e[1]):parser_exit();break;case`string`:n.im=n.re=0;let t=e.replace(/_/g,``).match(/\d+\.?\d*e[+-]?\d+|\d+\.?\d*|\.\d+|./g),r=1,i=0;t===null&&parser_exit();for(let e=0;e<t.length;e++){let a=t[e];a===` `||a===` `||a===`
105
105
  `||(a===`+`?r++:a===`-`?i++:a===`i`||a===`I`?(r+i===0&&parser_exit(),t[e+1]!==` `&&!isNaN(t[e+1])?(n.im+=parseFloat((i%2?`-`:``)+t[e+1]),e++):n.im+=parseFloat((i%2?`-`:``)+`1`),r=i=0):((r+i===0||isNaN(a))&&parser_exit(),t[e+1]===`i`||t[e+1]===`I`?(n.im+=parseFloat((i%2?`-`:``)+a),e++):n.re+=parseFloat((i%2?`-`:``)+a),r=i=0))}r+i>0&&parser_exit();break;case`number`:n.im=0,n.re=e;break;default:parser_exit()}return isNaN(n.re)||isNaN(n.im),n};function Complex$1(e,t){if(!(this instanceof Complex$1))return new Complex$1(e,t);let n=parse(e,t);this.re=n.re,this.im=n.im}__name(Complex$1,`Complex`),Complex$1.prototype={re:0,im:0,sign:function(){let e=hypot(this.re,this.im);return new Complex$1(this.re/e,this.im/e)},add:function(e,t){let n=parse(e,t),r=this.isInfinite(),i=!(isFinite(n.re)&&isFinite(n.im));return r||i?r&&i?Complex$1.NAN:Complex$1.INFINITY:new Complex$1(this.re+n.re,this.im+n.im)},sub:function(e,t){let n=parse(e,t),r=this.isInfinite(),i=!(isFinite(n.re)&&isFinite(n.im));return r||i?r&&i?Complex$1.NAN:Complex$1.INFINITY:new Complex$1(this.re-n.re,this.im-n.im)},mul:function(e,t){let n=parse(e,t),r=this.isInfinite(),i=!(isFinite(n.re)&&isFinite(n.im)),a=this.re===0&&this.im===0,o=n.re===0&&n.im===0;return r&&o||i&&a?Complex$1.NAN:r||i?Complex$1.INFINITY:n.im===0&&this.im===0?new Complex$1(this.re*n.re,0):new Complex$1(this.re*n.re-this.im*n.im,this.re*n.im+this.im*n.re)},div:function(e,t){let n=parse(e,t),r=this.isInfinite(),i=!(isFinite(n.re)&&isFinite(n.im)),a=this.re===0&&this.im===0,o=n.re===0&&n.im===0;if(a&&o||r&&i)return Complex$1.NAN;if(o||r)return Complex$1.INFINITY;if(a||i)return Complex$1.ZERO;if(n.im===0)return new Complex$1(this.re/n.re,this.im/n.re);if(Math.abs(n.re)<Math.abs(n.im)){let e=n.re/n.im,t=n.re*e+n.im;return new Complex$1((this.re*e+this.im)/t,(this.im*e-this.re)/t)}else{let e=n.im/n.re,t=n.im*e+n.re;return new Complex$1((this.re+this.im*e)/t,(this.im-this.re*e)/t)}},pow:function(e,t){let n=parse(e,t),r=this.re===0&&this.im===0;if(n.re===0&&n.im===0)return Complex$1.ONE;if(n.im===0){if(this.im===0&&this.re>0)return new Complex$1(this.re**+n.re,0);if(this.re===0)switch((n.re%4+4)%4){case 0:return new Complex$1(this.im**+n.re,0);case 1:return new Complex$1(0,this.im**+n.re);case 2:return new Complex$1(-(this.im**+n.re),0);case 3:return new Complex$1(0,-(this.im**+n.re))}}if(r&&n.re>0)return Complex$1.ZERO;let i=Math.atan2(this.im,this.re),a=logHypot(this.re,this.im),o=Math.exp(n.re*a-n.im*i),s=n.im*a+n.re*i;return new Complex$1(o*Math.cos(s),o*Math.sin(s))},sqrt:function(){let e=this.re,t=this.im;if(t===0)return e>=0?new Complex$1(Math.sqrt(e),0):new Complex$1(0,Math.sqrt(-e));let n=hypot(e,t),r=Math.sqrt(.5*(n+Math.abs(e))),i=Math.abs(t)/(2*r);return e>=0?new Complex$1(r,t<0?-i:i):new Complex$1(i,t<0?-r:r)},exp:function(){let e=Math.exp(this.re);return this.im===0?new Complex$1(e,0):new Complex$1(e*Math.cos(this.im),e*Math.sin(this.im))},expm1:function(){let e=this.re,t=this.im;return new Complex$1(Math.expm1(e)*Math.cos(t)+cosm1(t),Math.exp(e)*Math.sin(t))},log:function(){let e=this.re,t=this.im;return t===0&&e>0?new Complex$1(Math.log(e),0):new Complex$1(logHypot(e,t),Math.atan2(t,e))},abs:function(){return hypot(this.re,this.im)},arg:function(){return Math.atan2(this.im,this.re)},sin:function(){let e=this.re,t=this.im;return new Complex$1(Math.sin(e)*Z(t),Math.cos(e)*Q(t))},cos:function(){let e=this.re,t=this.im;return new Complex$1(Math.cos(e)*Z(t),-Math.sin(e)*Q(t))},tan:function(){let e=2*this.re,t=2*this.im,n=Math.cos(e)+Z(t);return new Complex$1(Math.sin(e)/n,Q(t)/n)},cot:function(){let e=2*this.re,t=2*this.im,n=Math.cos(e)-Z(t);return new Complex$1(-Math.sin(e)/n,Q(t)/n)},sec:function(){let e=this.re,t=this.im,n=.5*Z(2*t)+.5*Math.cos(2*e);return new Complex$1(Math.cos(e)*Z(t)/n,Math.sin(e)*Q(t)/n)},csc:function(){let e=this.re,t=this.im,n=.5*Z(2*t)-.5*Math.cos(2*e);return new Complex$1(Math.sin(e)*Z(t)/n,-Math.cos(e)*Q(t)/n)},asin:function(){let e=this.re,t=this.im,n=new Complex$1(t*t-e*e+1,-2*e*t).sqrt(),r=new Complex$1(n.re-t,n.im+e).log();return new Complex$1(r.im,-r.re)},acos:function(){let e=this.re,t=this.im,n=new Complex$1(t*t-e*e+1,-2*e*t).sqrt(),r=new Complex$1(n.re-t,n.im+e).log();return new Complex$1(Math.PI/2-r.im,r.re)},atan:function(){let e=this.re,t=this.im;if(e===0){if(t===1)return new Complex$1(0,1/0);if(t===-1)return new Complex$1(0,-1/0)}let n=e*e+(1-t)*(1-t),r=new Complex$1((1-t*t-e*e)/n,-2*e/n).log();return new Complex$1(-.5*r.im,.5*r.re)},acot:function(){let e=this.re,t=this.im;if(t===0)return new Complex$1(Math.atan2(1,e),0);let n=e*e+t*t;return n===0?new Complex$1(e===0?0:e/0,t===0?0:-t/0).atan():new Complex$1(e/n,-t/n).atan()},asec:function(){let e=this.re,t=this.im;if(e===0&&t===0)return new Complex$1(0,1/0);let n=e*e+t*t;return n===0?new Complex$1(e===0?0:e/0,t===0?0:-t/0).acos():new Complex$1(e/n,-t/n).acos()},acsc:function(){let e=this.re,t=this.im;if(e===0&&t===0)return new Complex$1(Math.PI/2,1/0);let n=e*e+t*t;return n===0?new Complex$1(e===0?0:e/0,t===0?0:-t/0).asin():new Complex$1(e/n,-t/n).asin()},sinh:function(){let e=this.re,t=this.im;return new Complex$1(Q(e)*Math.cos(t),Z(e)*Math.sin(t))},cosh:function(){let e=this.re,t=this.im;return new Complex$1(Z(e)*Math.cos(t),Q(e)*Math.sin(t))},tanh:function(){let e=2*this.re,t=2*this.im,n=Z(e)+Math.cos(t);return new Complex$1(Q(e)/n,Math.sin(t)/n)},coth:function(){let e=2*this.re,t=2*this.im,n=Z(e)-Math.cos(t);return new Complex$1(Q(e)/n,-Math.sin(t)/n)},csch:function(){let e=this.re,t=this.im,n=Math.cos(2*t)-Z(2*e);return new Complex$1(-2*Q(e)*Math.cos(t)/n,2*Z(e)*Math.sin(t)/n)},sech:function(){let e=this.re,t=this.im,n=Math.cos(2*t)+Z(2*e);return new Complex$1(2*Z(e)*Math.cos(t)/n,-2*Q(e)*Math.sin(t)/n)},asinh:function(){let e=this.re,t=this.im;if(t===0){if(e===0)return new Complex$1(0,0);let t=Math.abs(e),n=Math.log(t+Math.sqrt(t*t+1));return new Complex$1(e<0?-n:n,0)}let n=new Complex$1(e*e-t*t+1,2*e*t).sqrt();return new Complex$1(e+n.re,t+n.im).log()},acosh:function(){let e=this.re,t=this.im;if(t===0){if(e>1)return new Complex$1(Math.log(e+Math.sqrt(e-1)*Math.sqrt(e+1)),0);if(e<-1){let t=Math.sqrt(e*e-1);return new Complex$1(Math.log(-e+t),Math.PI)}return new Complex$1(0,Math.acos(e))}let n=new Complex$1(e-1,t).sqrt(),r=new Complex$1(e+1,t).sqrt();return new Complex$1(e+n.re*r.re-n.im*r.im,t+n.re*r.im+n.im*r.re).log()},atanh:function(){let e=this.re,t=this.im;if(t===0){if(e===0)return new Complex$1(0,0);if(e===1)return new Complex$1(1/0,0);if(e===-1)return new Complex$1(-1/0,0);if(-1<e&&e<1)return new Complex$1(.5*Math.log((1+e)/(1-e)),0);if(e>1){let t=(e+1)/(e-1);return new Complex$1(.5*Math.log(t),-Math.PI/2)}let t=(1+e)/(1-e);return new Complex$1(.5*Math.log(-t),Math.PI/2)}let n=1-e,r=1+e,i=n*n+t*t;if(i===0)return new Complex$1(e===-1?0:e/0,t===0?0:t/0);let a=(r*n-t*t)/i,o=(t*n+r*t)/i;return new Complex$1(logHypot(a,o)/2,Math.atan2(o,a)/2)},acoth:function(){let e=this.re,t=this.im;if(e===0&&t===0)return new Complex$1(0,Math.PI/2);let n=e*e+t*t;return n===0?new Complex$1(e===0?0:e/0,t===0?0:-t/0).atanh():new Complex$1(e/n,-t/n).atanh()},acsch:function(){let e=this.re,t=this.im;if(t===0){if(e===0)return new Complex$1(1/0,0);let t=1/e;return new Complex$1(Math.log(t+Math.sqrt(t*t+1)),0)}let n=e*e+t*t;return n===0?new Complex$1(e===0?0:e/0,t===0?0:-t/0).asinh():new Complex$1(e/n,-t/n).asinh()},asech:function(){let e=this.re,t=this.im;if(this.isZero())return Complex$1.INFINITY;let n=e*e+t*t;return n===0?new Complex$1(e===0?0:e/0,t===0?0:-t/0).acosh():new Complex$1(e/n,-t/n).acosh()},inverse:function(){if(this.isZero())return Complex$1.INFINITY;if(this.isInfinite())return Complex$1.ZERO;let e=this.re,t=this.im,n=e*e+t*t;return new Complex$1(e/n,-t/n)},conjugate:function(){return new Complex$1(this.re,-this.im)},neg:function(){return new Complex$1(-this.re,-this.im)},ceil:function(e){return e=10**(e||0),new Complex$1(Math.ceil(this.re*e)/e,Math.ceil(this.im*e)/e)},floor:function(e){return e=10**(e||0),new Complex$1(Math.floor(this.re*e)/e,Math.floor(this.im*e)/e)},round:function(e){return e=10**(e||0),new Complex$1(Math.round(this.re*e)/e,Math.round(this.im*e)/e)},equals:function(e,t){let n=parse(e,t);return Math.abs(n.re-this.re)<=Complex$1.EPSILON&&Math.abs(n.im-this.im)<=Complex$1.EPSILON},clone:function(){return new Complex$1(this.re,this.im)},toString:function(){let e=this.re,t=this.im,n=``;return this.isNaN()?`NaN`:this.isInfinite()?`Infinity`:(Math.abs(e)<Complex$1.EPSILON&&(e=0),Math.abs(t)<Complex$1.EPSILON&&(t=0),t===0?n+e:(e===0?t<0&&(t=-t,n+=`-`):(n+=e,n+=` `,t<0?(t=-t,n+=`-`):n+=`+`,n+=` `),t!==1&&(n+=t),n+`i`))},toVector:function(){return[this.re,this.im]},valueOf:function(){return this.im===0?this.re:null},isNaN:function(){return isNaN(this.re)||isNaN(this.im)},isZero:function(){return this.im===0&&this.re===0},isFinite:function(){return isFinite(this.re)&&isFinite(this.im)},isInfinite:function(){return!this.isFinite()}},Complex$1.ZERO=new Complex$1(0,0),Complex$1.ONE=new Complex$1(1,0),Complex$1.I=new Complex$1(0,1),Complex$1.PI=new Complex$1(Math.PI,0),Complex$1.E=new Complex$1(Math.E,0),Complex$1.INFINITY=new Complex$1(1/0,1/0),Complex$1.NAN=new Complex$1(NaN,NaN),Complex$1.EPSILON=1e-15;var Ct=`Complex`,wt=[],Tt=factory(Ct,wt,()=>(Object.defineProperty(Complex$1,`name`,{value:`Complex`}),Complex$1.prototype.constructor=Complex$1,Complex$1.prototype.type=`Complex`,Complex$1.prototype.isComplex=!0,Complex$1.prototype.toJSON=function(){return{mathjs:`Complex`,re:this.re,im:this.im}},Complex$1.prototype.toPolar=function(){return{r:this.abs(),phi:this.arg()}},Complex$1.prototype.format=function(e){var t=``,n=this.im,r=this.re,i=format$2(this.re,e),a=format$2(this.im,e),o=isNumber$1(e)?e:e?e.precision:null;if(o!==null){var s=10**-o;Math.abs(r/n)<s&&(r=0),Math.abs(n/r)<s&&(n=0)}return t=n===0?i:r===0?n===1?`i`:n===-1?`-i`:a+`i`:n<0?n===-1?i+` - i`:i+` - `+a.substring(1)+`i`:n===1?i+` + i`:i+` + `+a+`i`,t},Complex$1.fromPolar=function(e){switch(arguments.length){case 1:var t=arguments[0];if(typeof t==`object`)return Complex$1(t);throw TypeError(`Input has to be an object with r and phi keys.`);case 2:var n=arguments[0],r=arguments[1];if(isNumber$1(n)){if(isUnit(r)&&r.hasBase(`ANGLE`)&&(r=r.toNumber(`rad`)),isNumber$1(r))return new Complex$1({r:n,phi:r});throw TypeError(`Phi is not a number nor an angle unit.`)}else throw TypeError(`Radius r is not a number.`);default:throw SyntaxError(`Wrong number of arguments in function fromPolar`)}},Complex$1.prototype.valueOf=Complex$1.prototype.toString,Complex$1.fromJSON=function(e){return new Complex$1(e)},Complex$1.compare=function(e,t){return e.re>t.re?1:e.re<t.re?-1:e.im>t.im?1:e.im<t.im?-1:0},Complex$1),{isClass:!0}),Et=__commonJSMin(((e,t)=>{
106
106
  /**
107
107
  * @license Fraction.js v4.3.0 20/08/2023
@@ -110,7 +110,7 @@ Example:
110
110
  * Copyright (c) 2023, Robert Eisele (robert@raw.org)
111
111
  * Dual licensed under the MIT or GPL Version 2 licenses.
112
112
  **/
113
- (function(n){"use strict";var r=2e3,i={s:1,n:0,d:1};function assign(e,t){if(isNaN(e=parseInt(e,10)))throw InvalidParameter();return e*t}function newFraction(e,t){if(t===0)throw DivisionByZero();var n=Object.create(Fraction$2.prototype);n.s=e<0?-1:1,e=e<0?-e:e;var r=gcd(e,t);return n.n=e/r,n.d=t/r,n}function factorize(e){for(var t={},n=e,r=2,i=4;i<=n;){for(;n%r===0;)n/=r,t[r]=(t[r]||0)+1;i+=1+2*r++}return n===e?t[e]=(t[e]||0)+1:n>1&&(t[n]=(t[n]||0)+1),t}var a=__name(function(e,t){var n=0,r=1,a=1,o=0,s=0,c=0,l=1,u=1,d=0,f=1,p=1,m=1,h=1e7,g;if(e!=null)if(t!==void 0){if(n=e,r=t,a=n*r,n%1!=0||r%1!=0)throw NonIntegerParameter()}else switch(typeof e){case`object`:if(`d`in e&&`n`in e)n=e.n,r=e.d,`s`in e&&(n*=e.s);else if(0 in e)n=e[0],1 in e&&(r=e[1]);else throw InvalidParameter();a=n*r;break;case`number`:if(e<0&&(a=e,e=-e),e%1==0)n=e;else if(e>0){for(e>=1&&(u=10**Math.floor(1+Math.log(e)/Math.LN10),e/=u);f<=h&&m<=h;)if(g=(d+p)/(f+m),e===g){f+m<=h?(n=d+p,r=f+m):m>f?(n=p,r=m):(n=d,r=f);break}else e>g?(d+=p,f+=m):(p+=d,m+=f),f>h?(n=p,r=m):(n=d,r=f);n*=u}else (isNaN(e)||isNaN(t))&&(r=n=NaN);break;case`string`:if(f=e.match(/\d+|./g),f===null)throw InvalidParameter();if(f[d]===`-`?(a=-1,d++):f[d]===`+`&&d++,f.length===d+1?s=assign(f[d++],a):f[d+1]===`.`||f[d]===`.`?(f[d]!==`.`&&(o=assign(f[d++],a)),d++,(d+1===f.length||f[d+1]===`(`&&f[d+3]===`)`||f[d+1]===`'`&&f[d+3]===`'`)&&(s=assign(f[d],a),l=10**f[d].length,d++),(f[d]===`(`&&f[d+2]===`)`||f[d]===`'`&&f[d+2]===`'`)&&(c=assign(f[d+1],a),u=10**f[d+1].length-1,d+=3)):f[d+1]===`/`||f[d+1]===`:`?(s=assign(f[d],a),l=assign(f[d+2],1),d+=3):f[d+3]===`/`&&f[d+1]===` `&&(o=assign(f[d],a),s=assign(f[d+2],a),l=assign(f[d+4],1),d+=5),f.length<=d){r=l*u,a=n=c+r*o+u*s;break}default:throw InvalidParameter()}if(r===0)throw DivisionByZero();i.s=a<0?-1:1,i.n=Math.abs(n),i.d=Math.abs(r)},`parse`);function modpow(e,t,n){for(var r=1;t>0;e=e*e%n,t>>=1)t&1&&(r=r*e%n);return r}function cycleLen(e,t){for(;t%2==0;t/=2);for(;t%5==0;t/=5);if(t===1)return 0;for(var n=10%t,i=1;n!==1;i++)if(n=n*10%t,i>r)return 0;return i}function cycleStart(e,t,n){for(var r=1,i=modpow(10,n,t),a=0;a<300;a++){if(r===i)return a;r=r*10%t,i=i*10%t}return 0}function gcd(e,t){if(!e)return t;if(!t)return e;for(;;){if(e%=t,!e)return t;if(t%=e,!t)return e}}function Fraction$2(e,t){if(a(e,t),this instanceof Fraction$2)e=gcd(i.d,i.n),this.s=i.s,this.n=i.n/e,this.d=i.d/e;else return newFraction(i.s*i.n,i.d)}__name(Fraction$2,`Fraction`);var DivisionByZero=function(){return Error(`Division by Zero`)},InvalidParameter=function(){return Error(`Invalid argument`)},NonIntegerParameter=function(){return Error(`Parameters must be integer`)};Fraction$2.prototype={s:1,n:0,d:1,abs:function(){return newFraction(this.n,this.d)},neg:function(){return newFraction(-this.s*this.n,this.d)},add:function(e,t){return a(e,t),newFraction(this.s*this.n*i.d+i.s*this.d*i.n,this.d*i.d)},sub:function(e,t){return a(e,t),newFraction(this.s*this.n*i.d-i.s*this.d*i.n,this.d*i.d)},mul:function(e,t){return a(e,t),newFraction(this.s*i.s*this.n*i.n,this.d*i.d)},div:function(e,t){return a(e,t),newFraction(this.s*i.s*this.n*i.d,this.d*i.n)},clone:function(){return newFraction(this.s*this.n,this.d)},mod:function(e,t){if(isNaN(this.n)||isNaN(this.d))return new Fraction$2(NaN);if(e===void 0)return newFraction(this.s*this.n%this.d,1);if(a(e,t),i.n===0&&this.d===0)throw DivisionByZero();return newFraction(this.s*(i.d*this.n)%(i.n*this.d),i.d*this.d)},gcd:function(e,t){return a(e,t),newFraction(gcd(i.n,this.n)*gcd(i.d,this.d),i.d*this.d)},lcm:function(e,t){return a(e,t),i.n===0&&this.n===0?newFraction(0,1):newFraction(i.n*this.n,gcd(i.n,this.n)*gcd(i.d,this.d))},ceil:function(e){return e=10**(e||0),isNaN(this.n)||isNaN(this.d)?new Fraction$2(NaN):newFraction(Math.ceil(e*this.s*this.n/this.d),e)},floor:function(e){return e=10**(e||0),isNaN(this.n)||isNaN(this.d)?new Fraction$2(NaN):newFraction(Math.floor(e*this.s*this.n/this.d),e)},round:function(e){return e=10**(e||0),isNaN(this.n)||isNaN(this.d)?new Fraction$2(NaN):newFraction(Math.round(e*this.s*this.n/this.d),e)},inverse:function(){return newFraction(this.s*this.d,this.n)},pow:function(e,t){if(a(e,t),i.d===1)return i.s<0?newFraction((this.s*this.d)**+i.n,this.n**+i.n):newFraction((this.s*this.n)**+i.n,this.d**+i.n);if(this.s<0)return null;var n=factorize(this.n),r=factorize(this.d),o=1,s=1;for(var c in n)if(c!==`1`){if(c===`0`){o=0;break}if(n[c]*=i.n,n[c]%i.d===0)n[c]/=i.d;else return null;o*=c**+n[c]}for(var c in r)if(c!==`1`){if(r[c]*=i.n,r[c]%i.d===0)r[c]/=i.d;else return null;s*=c**+r[c]}return i.s<0?newFraction(s,o):newFraction(o,s)},equals:function(e,t){return a(e,t),this.s*this.n*i.d===i.s*i.n*this.d},compare:function(e,t){a(e,t);var n=this.s*this.n*i.d-i.s*i.n*this.d;return(0<n)-(n<0)},simplify:function(e){if(isNaN(this.n)||isNaN(this.d))return this;e||=.001;for(var t=this.abs(),n=t.toContinued(),r=1;r<n.length;r++){for(var i=newFraction(n[r-1],1),a=r-2;a>=0;a--)i=i.inverse().add(n[a]);if(Math.abs(i.sub(t).valueOf())<e)return i.mul(this.s)}return this},divisible:function(e,t){return a(e,t),!(!(i.n*this.d)||this.n*i.d%(i.n*this.d))},valueOf:function(){return this.s*this.n/this.d},toFraction:function(e){var t,n=``,r=this.n,i=this.d;return this.s<0&&(n+=`-`),i===1?n+=r:(e&&(t=Math.floor(r/i))>0&&(n+=t,n+=` `,r%=i),n+=r,n+=`/`,n+=i),n},toLatex:function(e){var t,n=``,r=this.n,i=this.d;return this.s<0&&(n+=`-`),i===1?n+=r:(e&&(t=Math.floor(r/i))>0&&(n+=t,r%=i),n+=`\\frac{`,n+=r,n+=`}{`,n+=i,n+=`}`),n},toContinued:function(){var e,t=this.n,n=this.d,r=[];if(isNaN(t)||isNaN(n))return r;do r.push(Math.floor(t/n)),e=t%n,t=n,n=e;while(t!==1);return r},toString:function(e){var t=this.n,n=this.d;if(isNaN(t)||isNaN(n))return`NaN`;e||=15;var r=cycleLen(t,n),i=cycleStart(t,n,r),a=this.s<0?`-`:``;if(a+=t/n|0,t%=n,t*=10,t&&(a+=`.`),r){for(var o=i;o--;)a+=t/n|0,t%=n,t*=10;a+=`(`;for(var o=r;o--;)a+=t/n|0,t%=n,t*=10;a+=`)`}else for(var o=e;t&&o--;)a+=t/n|0,t%=n,t*=10;return a}},typeof e==`object`?(Object.defineProperty(Fraction$2,`__esModule`,{value:!0}),Fraction$2.default=Fraction$2,Fraction$2.Fraction=Fraction$2,t.exports=Fraction$2):n.Fraction=Fraction$2})(e)})),$=__toESM(Et(),1),Dt=`Fraction`,Ot=[],kt=factory(Dt,Ot,()=>(Object.defineProperty($.default,`name`,{value:`Fraction`}),$.default.prototype.constructor=$.default,$.default.prototype.type=`Fraction`,$.default.prototype.isFraction=!0,$.default.prototype.toJSON=function(){return{mathjs:`Fraction`,n:this.s*this.n,d:this.d}},$.default.fromJSON=function(e){return new $.default(e)},$.default),{isClass:!0}),At=`Matrix`,jt=[],Mt=factory(At,jt,()=>{function Matrix$1(){if(!(this instanceof Matrix$1))throw SyntaxError(`Constructor must be called with the new operator`)}return __name(Matrix$1,`Matrix`),Matrix$1.prototype.type=`Matrix`,Matrix$1.prototype.isMatrix=!0,Matrix$1.prototype.storage=function(){throw Error(`Cannot invoke storage on a Matrix interface`)},Matrix$1.prototype.datatype=function(){throw Error(`Cannot invoke datatype on a Matrix interface`)},Matrix$1.prototype.create=function(e,t){throw Error(`Cannot invoke create on a Matrix interface`)},Matrix$1.prototype.subset=function(e,t,n){throw Error(`Cannot invoke subset on a Matrix interface`)},Matrix$1.prototype.get=function(e){throw Error(`Cannot invoke get on a Matrix interface`)},Matrix$1.prototype.set=function(e,t,n){throw Error(`Cannot invoke set on a Matrix interface`)},Matrix$1.prototype.resize=function(e,t){throw Error(`Cannot invoke resize on a Matrix interface`)},Matrix$1.prototype.reshape=function(e,t){throw Error(`Cannot invoke reshape on a Matrix interface`)},Matrix$1.prototype.clone=function(){throw Error(`Cannot invoke clone on a Matrix interface`)},Matrix$1.prototype.size=function(){throw Error(`Cannot invoke size on a Matrix interface`)},Matrix$1.prototype.map=function(e,t){throw Error(`Cannot invoke map on a Matrix interface`)},Matrix$1.prototype.forEach=function(e){throw Error(`Cannot invoke forEach on a Matrix interface`)},Matrix$1.prototype[Symbol.iterator]=function(){throw Error(`Cannot iterate a Matrix interface`)},Matrix$1.prototype.toArray=function(){throw Error(`Cannot invoke toArray on a Matrix interface`)},Matrix$1.prototype.valueOf=function(){throw Error(`Cannot invoke valueOf on a Matrix interface`)},Matrix$1.prototype.format=function(e){throw Error(`Cannot invoke format on a Matrix interface`)},Matrix$1.prototype.toString=function(){throw Error(`Cannot invoke toString on a Matrix interface`)},Matrix$1},{isClass:!0});function maxArgumentCount(e){return Object.keys(e.signatures||{}).reduce(function(e,t){var n=(t.match(/,/g)||[]).length+1;return Math.max(e,n)},-1)}var Nt=`DenseMatrix`,Pt=[`Matrix`],Ft=factory(Nt,Pt,e=>{var{Matrix:t}=e;function DenseMatrix$1(e,t){if(!(this instanceof DenseMatrix$1))throw SyntaxError(`Constructor must be called with the new operator`);if(t&&!isString(t))throw Error(`Invalid datatype: `+t);if(isMatrix(e))e.type===`DenseMatrix`?(this._data=clone$2(e._data),this._size=clone$2(e._size),this._datatype=t||e._datatype):(this._data=e.toArray(),this._size=e.size(),this._datatype=t||e._datatype);else if(e&&L(e.data)&&L(e.size))this._data=e.data,this._size=e.size,validate$1(this._data,this._size),this._datatype=t||e.datatype;else if(L(e))this._data=preprocess(e),this._size=arraySize(this._data),validate$1(this._data,this._size),this._datatype=t;else if(e)throw TypeError(`Unsupported type of data (`+typeOf(e)+`)`);else this._data=[],this._size=[0],this._datatype=t}__name(DenseMatrix$1,`DenseMatrix`),DenseMatrix$1.prototype=new t,DenseMatrix$1.prototype.createDenseMatrix=function(e,t){return new DenseMatrix$1(e,t)},Object.defineProperty(DenseMatrix$1,`name`,{value:`DenseMatrix`}),DenseMatrix$1.prototype.constructor=DenseMatrix$1,DenseMatrix$1.prototype.type=`DenseMatrix`,DenseMatrix$1.prototype.isDenseMatrix=!0,DenseMatrix$1.prototype.getDataType=function(){return getArrayDataType(this._data,typeOf)},DenseMatrix$1.prototype.storage=function(){return`dense`},DenseMatrix$1.prototype.datatype=function(){return this._datatype},DenseMatrix$1.prototype.create=function(e,t){return new DenseMatrix$1(e,t)},DenseMatrix$1.prototype.subset=function(e,t,n){switch(arguments.length){case 1:return _get(this,e);case 2:case 3:return _set(this,e,t,n);default:throw SyntaxError(`Wrong number of arguments`)}},DenseMatrix$1.prototype.get=function(e){if(!L(e))throw TypeError(`Array expected`);if(e.length!==this._size.length)throw new DimensionError(e.length,this._size.length);for(var t=0;t<e.length;t++)validateIndex(e[t],this._size[t]);for(var n=this._data,r=0,i=e.length;r<i;r++){var a=e[r];validateIndex(a,n.length),n=n[a]}return n},DenseMatrix$1.prototype.set=function(e,t,n){if(!L(e))throw TypeError(`Array expected`);if(e.length<this._size.length)throw new DimensionError(e.length,this._size.length,`<`);var r,i,a,o=e.map(function(e){return e+1});_fit(this,o,n);var s=this._data;for(r=0,i=e.length-1;r<i;r++)a=e[r],validateIndex(a,s.length),s=s[a];return a=e[e.length-1],validateIndex(a,s.length),s[a]=t,this};function _get(e,t){if(!isIndex(t))throw TypeError(`Invalid index`);if(t.isScalar())return e.get(t.min());var n=t.size();if(n.length!==e._size.length)throw new DimensionError(n.length,e._size.length);for(var r=t.min(),i=t.max(),a=0,o=e._size.length;a<o;a++)validateIndex(r[a],e._size[a]),validateIndex(i[a],e._size[a]);return new DenseMatrix$1(_getSubmatrix(e._data,t,n.length,0),e._datatype)}function _getSubmatrix(e,t,n,r){var i=r===n-1,a=t.dimension(r);return i?a.map(function(t){return validateIndex(t,e.length),e[t]}).valueOf():a.map(function(i){validateIndex(i,e.length);var a=e[i];return _getSubmatrix(a,t,n,r+1)}).valueOf()}function _set(e,t,n,r){if(!t||t.isIndex!==!0)throw TypeError(`Invalid index`);var i=t.size(),a=t.isScalar(),o;if(isMatrix(n)?(o=n.size(),n=n.valueOf()):o=arraySize(n),a){if(o.length!==0)throw TypeError(`Scalar expected`);e.set(t.min(),n,r)}else{if(!deepStrictEqual(o,i))try{n=o.length===0?broadcastTo([n],i):broadcastTo(n,i),o=arraySize(n)}catch{}if(i.length<e._size.length)throw new DimensionError(i.length,e._size.length,`<`);if(o.length<i.length){for(var s=0,c=0;i[s]===1&&o[s]===1;)s++;for(;i[s]===1;)c++,s++;n=unsqueeze(n,i.length,c,o)}if(!deepStrictEqual(i,o))throw new DimensionError(i,o,`>`);_fit(e,t.max().map(function(e){return e+1}),r);var l=i.length;_setSubmatrix(e._data,t,n,l,0)}return e}function _setSubmatrix(e,t,n,r,i){var a=i===r-1,o=t.dimension(i);a?o.forEach(function(t,r){validateIndex(t),e[t]=n[r[0]]}):o.forEach(function(a,o){validateIndex(a),_setSubmatrix(e[a],t,n[o[0]],r,i+1)})}DenseMatrix$1.prototype.resize=function(e,t,n){if(!isCollection(e))throw TypeError(`Array or Matrix expected`);var r=e.valueOf().map(e=>Array.isArray(e)&&e.length===1?e[0]:e);return _resize$1(n?this.clone():this,r,t)};function _resize$1(e,t,n){if(t.length===0){for(var r=e._data;L(r);)r=r[0];return r}return e._size=t.slice(0),e._data=resize(e._data,e._size,n),e}__name(_resize$1,`_resize`),DenseMatrix$1.prototype.reshape=function(e,t){var n=t?this.clone():this;return n._data=reshape(n._data,e),n._size=processSizesWildcard(e,n._size.reduce((e,t)=>e*t)),n};function _fit(e,t,n){for(var r=e._size.slice(0),i=!1;r.length<t.length;)r.push(0),i=!0;for(var a=0,o=t.length;a<o;a++)t[a]>r[a]&&(r[a]=t[a],i=!0);i&&_resize$1(e,r,n)}DenseMatrix$1.prototype.clone=function(){return new DenseMatrix$1({data:clone$2(this._data),size:clone$2(this._size),datatype:this._datatype})},DenseMatrix$1.prototype.size=function(){return this._size.slice(0)},DenseMatrix$1.prototype.map=function(e){var t=this,n=maxArgumentCount(e),r=function recurse(r,i){return L(r)?r.map(function(e,t){return recurse(e,i.concat(t))}):n===1?e(r):n===2?e(r,i):e(r,i,t)}(this._data,[]);return new DenseMatrix$1(r,this._datatype===void 0?void 0:getArrayDataType(r,typeOf))},DenseMatrix$1.prototype.forEach=function(e){var t=this;(function recurse(n,r){L(n)?n.forEach(function(e,t){recurse(e,r.concat(t))}):e(n,r,t)})(this._data,[])},DenseMatrix$1.prototype[Symbol.iterator]=function*(){yield*function*recurse(e,t){if(L(e))for(var n=0;n<e.length;n++)yield*recurse(e[n],t.concat(n));else yield{value:e,index:t}}(this._data,[])},DenseMatrix$1.prototype.rows=function(){var e=[];if(this.size().length!==2)throw TypeError(`Rows can only be returned for a 2D matrix.`);for(var t of this._data)e.push(new DenseMatrix$1([t],this._datatype));return e},DenseMatrix$1.prototype.columns=function(){var e=this,t=[],n=this.size();if(n.length!==2)throw TypeError(`Rows can only be returned for a 2D matrix.`);for(var r=this._data,i=function _loop$1(n){var i=r.map(e=>[e[n]]);t.push(new DenseMatrix$1(i,e._datatype))},a=0;a<n[1];a++)i(a);return t},DenseMatrix$1.prototype.toArray=function(){return clone$2(this._data)},DenseMatrix$1.prototype.valueOf=function(){return this._data},DenseMatrix$1.prototype.format=function(e){return format(this._data,e)},DenseMatrix$1.prototype.toString=function(){return format(this._data)},DenseMatrix$1.prototype.toJSON=function(){return{mathjs:`DenseMatrix`,data:this._data,size:this._size,datatype:this._datatype}},DenseMatrix$1.prototype.diagonal=function(e){if(e){if(isBigNumber(e)&&(e=e.toNumber()),!isNumber$1(e)||!isInteger(e))throw TypeError(`The parameter k must be an integer number`)}else e=0;for(var t=e>0?e:0,n=e<0?-e:0,r=this._size[0],i=this._size[1],a=Math.min(r-n,i-t),o=[],s=0;s<a;s++)o[s]=this._data[s+n][s+t];return new DenseMatrix$1({data:o,size:[a],datatype:this._datatype})},DenseMatrix$1.diagonal=function(e,t,n,r){if(!L(e))throw TypeError(`Array expected, size parameter`);if(e.length!==2)throw Error(`Only two dimensions matrix are supported`);if(e=e.map(function(e){if(isBigNumber(e)&&(e=e.toNumber()),!isNumber$1(e)||!isInteger(e)||e<1)throw Error(`Size values must be positive integers`);return e}),n){if(isBigNumber(n)&&(n=n.toNumber()),!isNumber$1(n)||!isInteger(n))throw TypeError(`The parameter k must be an integer number`)}else n=0;var i=n>0?n:0,a=n<0?-n:0,o=e[0],s=e[1],c=Math.min(o-a,s-i),l;if(L(t)){if(t.length!==c)throw Error(`Invalid value array length`);l=function _value$1(e){return t[e]}}else if(isMatrix(t)){var u=t.size();if(u.length!==1||u[0]!==c)throw Error(`Invalid matrix length`);l=function _value$1(e){return t.get([e])}}else l=function _value$1(){return t};r||=isBigNumber(l(0))?l(0).mul(0):0;var d=[];if(e.length>0){d=resize(d,e,r);for(var f=0;f<c;f++)d[f+a][f+i]=l(f)}return new DenseMatrix$1({data:d,size:[o,s]})},DenseMatrix$1.fromJSON=function(e){return new DenseMatrix$1(e)},DenseMatrix$1.prototype.swapRows=function(e,t){if(!isNumber$1(e)||!isInteger(e)||!isNumber$1(t)||!isInteger(t))throw Error(`Row index must be positive integers`);if(this._size.length!==2)throw Error(`Only two dimensional matrix is supported`);return validateIndex(e,this._size[0]),validateIndex(t,this._size[0]),DenseMatrix$1._swapRows(e,t,this._data),this},DenseMatrix$1._swapRows=function(e,t,n){var r=n[e];n[e]=n[t],n[t]=r};function preprocess(e){return isMatrix(e)?preprocess(e.valueOf()):L(e)?e.map(preprocess):e}return DenseMatrix$1},{isClass:!0});function deepMap(e,t,n){return e&&typeof e.map==`function`?e.map(function(e){return deepMap(e,t,n)}):t(e)}var It=`isNumeric`,Lt=[`typed`],Rt=factory(It,Lt,e=>{var{typed:t}=e;return t(It,{"number | BigNumber | Fraction | boolean":()=>!0,"Complex | Unit | string | null | undefined | Node":()=>!1,"Array | Matrix":t.referToSelf(e=>t=>deepMap(t,e))})}),zt=`hasNumericValue`,Bt=[`typed`,`isNumeric`],Vt=factory(zt,Bt,e=>{var{typed:t,isNumeric:n}=e;return t(zt,{boolean:()=>!0,string:function string(e){return e.trim().length>0&&!isNaN(Number(e))},any:function any(e){return n(e)}})}),Ht=xt({config:qe}),Ut=Tt({}),Wt=kt({}),Gt=Mt({}),Kt=Ft({Matrix:Gt}),qt=nt({BigNumber:Ht,Complex:Ut,DenseMatrix:Kt,Fraction:Wt}),Jt=Rt({typed:qt}),Yt=Vt({isNumeric:Jt,typed:qt});const shortTimePeriodIsMilliseconds=e=>{let t=Number(e);return Number.isNaN(t)?!1:t>=120&&t<=36e4},resolveWaitTimeMs=e=>{let t=Number(e),n=Date.now();return Number.isNaN(t)?n+1e3:!shortTimePeriodIsMilliseconds(t)&&(0,o.isFutureUnixTimestamp)(t)?adjustUnixTimestamp(t):shortTimePeriodIsMilliseconds(t)?n+t:n+t*I},Xt=`ratelimitlimit`,Zt=`ratelimitremaining`,Qt=`ratelimitreset`,$t=`ratelimitconcurrencylimit`,en=`ratelimitconcurrencyremaining`,tn=`ratelimitconcurrencyreset`,superNormalizeHeaders=e=>{let t={};for(let[n,r]of Object.entries(e)){let e=n.toLowerCase().replace(/^x-/,``).replace(/concurren.+-/g,`concurrency-`).replace(/-/g,``);t[e]=Yt(r)?Number(r):null}return t},extractRateLimitHeaders=e=>{let t=superNormalizeHeaders(e);return{rateLimitLimit:t.ratelimitlimit,rateLimitRemaining:t.ratelimitremaining,rateLimitReset:resolveWaitTimeMs(t.ratelimitreset),concurrencyLimit:t.ratelimitconcurrencylimit,concurrencyRemaining:t.ratelimitconcurrencyremaining,concurrencyReset:resolveWaitTimeMs(t.ratelimitconcurrencyreset)}},generateRequestKey=e=>{let{accountSecureId:t,service:n,resource:r,subResource:i,childResource:a,action:s,behaviours:c}=e??{};return[t,n,r,s].some(o.isMissing)?null:[t,n,r,i,a,s,...c??[]].filter(Boolean).join(`-`)},getRetryAfterWaitTime=(e,t=10,n=1)=>{let r=Date.now();return(0,o.isFutureUnixTimestamp)(e)||(0,o.isNumber)(e)?evaluateRetryAfterNumber(Number(e),r,t,n):isString(e)&&e!==``?evaluateRetryAfterString(e,r,t,n):n},evaluateRetryAfterNumber=(e,t,n=10,r=1)=>{if(e<n)return e;let i=adjustUnixTimestamp(e);if(i>t){let e=Math.floor((i-t)/I);return e>0&&e<n?e:r}return r},evaluateRetryAfterString=(e,t,n=10,r=1)=>{if(Be.test(e)){let t=parseFloat(e);return t>0&&t<n?t:r}let i=new Date(e);if(Number.isNaN(i.getTime()))return r;let a=i.getTime();if(a>t){let e=Math.floor((a-t)/I);return e>0&&e<n?e:r}return r},retryErrorInterceptor=({axiosInstance:e,logger:t,requestConfig:n,context:r})=>__name(async i=>{let{response:a,config:s}=i;if(s?.signal?.aborted)return Promise.reject(createAxiosError(`Request aborted`,s,`ERR_CANCELED`,a));let{status:c,retryAfter:l}=convertError(a,r,n,t);if(c===429&&(0,o.notMissing)(s)){let n=getRetryAfterWaitTime(l);if(s._retryCount>=5)return t?.warning({category:`http-transport`,message:`Max retries exceeded for ${s?.url}. Aborting.`,context:{...r??{},retryAfterHeader:l,retryAfterAsNumber:n}}),Promise.reject(i);let c=s._retryCount??0,u={...s,_retryCount:c+1},d=l?n*I:(0,o.exponentialBackoffInMS)(u._retryCount);return t?.debug({category:`http-transport`,message:`Received 429 error from ${s?.url}`,context:{...r??{},retryAfterHeader:l,calculatedRetryAfter:d}}),await abortableDelay(d,s,a),e?.request(u)}return Promise.reject(i)},`retryErrorInterceptor`),convertError=(e,t,n,r)=>{let{provider:i}=t??{},{status:a,headers:s,data:c}=e??{},{retryafter:l}=superNormalizeHeaders(s??{});if((0,o.isMissing)(i)||(0,o.isMissing)(e))return r?.warning({category:`http-transport`,message:`Invalid parameters for convertError`,context:{...t,responseIsMissing:(0,o.isMissing)(e),providerIsMissing:(0,o.isMissing)(i),status:e?.status??`undefined`,statusText:e?.statusText??`undefined`,retryafter:l??`undefined`}}),{status:a,retryAfter:l};let u=n?.rateLimits?.mappedRateLimitErrors;if((0,o.notMissing)(u)&&(0,o.notMissing)(c))for(let e of u){let{errorStatus:t,errorMessagePath:n,errorMessage:r,retryAfterPath:i,retryAfterUnit:u,retryAfterValue:d}=e;if(t!==a)continue;let f=n??`message`,m=testMessage((0,o.isObject)(c)?(0,p.JSONPath)({path:f,json:c})[0]:c,r);if(t===a&&m){let e=convertRetryAfter(d??extractRetryAfter(s,i),u);return{status:429,retryAfter:l??e}}}return{status:a,retryAfter:l}},testMessage=(e,t)=>t instanceof RegExp?t.test(e??``):e?.includes(t)??!1,extractRetryAfter=(e,t)=>(0,o.notMissing)(t)&&(0,o.notMissing)(e)?(0,p.JSONPath)({path:t,json:e})[0]:null,convertRetryAfter=(e,t=`seconds`)=>(0,o.notMissing)(e)?transformToSeconds(e,t):null,transformToSeconds=(e,t)=>{if(t===`seconds`)return typeof e==`string`?parseFloat(e):e;if(t===`milliseconds`)return(typeof e==`string`?parseFloat(e):e)/I;if(t===`date`){let t=typeof e==`string`&&!isNaN(Number(e))?parseFloat(e):e,n=new Date(t);if(isNaN(n.getTime()))throw Error(`Invalid date value`);return n.getTime()}throw Error(`Invalid type`)},nn=`rateLimitErrorInterceptor`,rateLimitErrorInterceptor=({axiosInstance:e,logger:t,requestConfig:n,context:r,concurrencyManager:i})=>__name(async a=>{let{response:s,config:c}=a,l=c?.signal;if((0,o.isMissing)(r)||(0,o.isMissing)(c))return t?.warning({category:`HttpClient`,message:`No context or config for this response - that doesn't seem right.`,context:{interceptor:nn,...c,httpsAgent:void 0,headers:void 0,hasContext:(0,o.notMissing)(r),hasConfig:(0,o.notMissing)(c)},code:F.InterceptorContextNotPresent}),Promise.reject(a);if((0,o.isMissing)(i))return t?.error({category:`HttpClient`,message:`ConcurrencyManager is not initialized`,context:{interceptor:nn,...c,httpsAgent:void 0,headers:void 0,concurrencyManagerInitialized:(0,o.notMissing)(i)},code:F.RateLimitOrConcurrencyManagerNotInitialized}),Promise.reject(a);let{requestId:u,targetConcurrencyKey:d,leaseSubscription:f,setRemovalSubscription:p}=c?.requestMetadata??{};if(!((0,o.notMissing)(u)&&(0,o.notMissing)(d)&&await i.releaseRequest(u,d))&&(0,o.notMissing)(c?.requestMetadata)&&t?.error({category:`HttpClient`,message:`Failed to release request from concurrency manager`,context:{...r,interceptor:nn,requestId:u,targetConcurrencyKey:d,leaseSubscription:f,setRemovalSubscription:p},code:F.RateLimiterReleaseRequestFailed}),l?.aborted)return Promise.reject(createAxiosError(`Request aborted`,c,`ERR_CANCELED`,s));let{status:m,retryAfter:h}=convertError(s,r,n,t);if(m===429&&(0,o.notMissing)(c)){let n=getRetryAfterWaitTime(h);if(c._retryCount>=5)return t?.warning({category:`HttpClient`,message:`Max retries exceeded for ${c.url}. Aborting.`,context:{...r??{},...c.requestMetadata??{},retryAfterHeader:h,retryAfterAsNumber:n}}),Promise.reject(a);let i=c?._retryCount??0,l={...c,_retryCount:i+1},u=h?n*I:(0,o.exponentialBackoffInMS)(l._retryCount);return t?.debug({category:`HttpClient`,message:`Received 429 error from ${c.url}`,context:{...r,retryAfterHeader:h,calculatedRetryAfter:u}}),await abortableDelay(u,c,s),e?.request(l)}return Promise.reject(a)},`rateLimitErrorInterceptor`),rn=`rateLimitResponseInterceptor`,rateLimitResponseInterceptor=({logger:e,context:t,concurrencyManager:n})=>__name(async r=>{let i=r?.config,a=i?.signal;if((0,o.isMissing)(t))e?.warning({category:`HttpClient`,message:`No context for this response - that doesn't seem right.`,context:{interceptor:rn,...i,httpsAgent:void 0,headers:void 0}});else if((0,o.isMissing)(n))return e?.error({category:`HttpClient`,message:`ConcurrencyManager is not initialized`,context:{interceptor:rn,...i,httpsAgent:void 0,headers:void 0,concurrencyManagerInitialized:(0,o.notMissing)(n)},code:F.RateLimitOrConcurrencyManagerNotInitialized}),r;else if((0,o.notMissing)(t.provider)&&(0,o.notMissing)(t.accountSecureId)){let t=r?.headers;if((0,o.notMissing)(t)){let n=extractRateLimitHeaders(t);e?.debug({category:`HttpClient`,message:`Rate limit headers extracted`,context:{interceptor:rn,rateLimitHeaders:n}})}let{requestId:s,targetConcurrencyKey:c,leaseSubscription:l,setRemovalSubscription:u}=i?.requestMetadata??{};if(await n.releaseRequest(s,c)||e?.error({category:`HttpClient`,message:`Failed to release request from concurrency manager`,context:{interceptor:rn,requestId:s,targetConcurrencyKey:c,leaseSubscription:l,setRemovalSubscription:u},code:F.RateLimiterReleaseRequestFailed}),a?.aborted)return Promise.reject(createAxiosError(`Request aborted`,i,`ERR_CANCELED`,r))}return r},`rateLimitResponseInterceptor`),validateRequestInterceptor=e=>(e.validateStatus??=e=>e>=200&&e<300,e),an=[{onFulfilled:validateRequestInterceptor,onRejected:null,options:void 0}],on=[{onFulfilled:null,onRejected:retryErrorInterceptor},{onFulfilled:null,onRejected:abortErrorInterceptor}],sn=[{onFulfilled:validateRequestInterceptor,onRejected:null,options:void 0},{onFulfilled:checkConcurrencyInterceptor,onRejected:null,options:void 0}],cn=[{onFulfilled:rateLimitResponseInterceptor,onRejected:rateLimitErrorInterceptor},{onFulfilled:null,onRejected:abortErrorInterceptor}],un=1,dn=1e3,fn=0,pn=59,mn=.8,hn=500;var RateLimitManager=class extends ScriptManager{constructor(...e){super(...e),this.name=`RateLimitManager`}async additionalInitialization(){}getDynamicMaxWaitTime(e,t,n,r=59,i=.8,a=500){this.readyCheck();let o=e.subPools?.find(e=>e.urlPattern instanceof RegExp?e.urlPattern.test(n??``):n?.includes(e.urlPattern))?.rateLimit??e.mainRatelimit;if(o<=0)throw Error(`Requests per second (rps) must be greater than 0.`);let s=t.subPools?.find(e=>e.urlPattern instanceof RegExp?e.urlPattern.test(n??``):n?.includes(e.urlPattern))?.maxConcurrency??t.mainMaxConcurrency;if(s<=0)throw Error(`Concurrency must be greater than 0.`);let c=r*i,l=1/Math.min(o,s/(a/1e3)),u=Math.max(7.5,c*l);return Math.min(c,u)}async getWaitTime(e,t,n){this.readyCheck();let r=`rateLimit:${e}`,i=t.subPools?.find(e=>e.urlPattern instanceof RegExp?e.urlPattern.test(n??``):n?.includes(e.urlPattern))?.subPoolKey,a=(0,o.notMissing)(i)?`${r}-${i}`:r,{mainRatelimit:s,subPools:c}=t,l=[{key:r,rateLimit:s},...c?.map(e=>{let{subPoolKey:t,rateLimit:n}=e;return{key:`${r}-${t}`,rateLimit:n}})??[]],u=l.map(e=>e.key),d=l.map(e=>e.rateLimit);return await this.executeScript(Pe.incr,[a,...u],[s.toString(),...d.map(String)])}readyCheck(){if(!this.cacheClient||!this.scriptMap?.size)throw Error(`RateLimitManager not ready`)}isReady(){return!!this?.cacheClient&&!!this?.scriptMap?.size}close(){this.scriptMap?.clear(),this.reset()}},SingletonManager=class{static{this.instances=new Map}static async prepare(e,t,...n){if(!this.instances.has(e)){let t=new e;t.getSingleton=e=>{let t=this.instances.get(e);if((0,o.isMissing)(t))throw Error(`Singleton ${e.name} not prepared yet`);if(t.hasInitFailed?.())throw Error(`${e.name} initialization failed`);let n=t.getInstanceIfReady?.();if((0,o.notMissing)(n))return n;throw Error(`${e.name} not ready`)},this.instances.set(e,t)}let r=this.instances.get(e);try{return await r.getInstance(t,...n)}catch(t){throw r.hasInitFailed?.()&&this.instances.delete(e),t}}static getIfReady(e){return this.instances.get(e)?.getInstanceIfReady?.()??null}static reset(e){this.instances.get(e)?.reset?.(),this.instances.delete(e)}static cleanupFailed(){let e=0;for(let[t,n]of this.instances){let r=n;r?.hasInitFailed?.()&&(r?.reset?.(),this.instances.delete(t),e++)}return e}};let gn=function(e){return e.HttpTransportInstanceCreateError=`HttpTransportInstanceCreateError`,e}({});const getTransportInstance=async({logger:e,redisClientConfig:t,context:n,requestConfig:r,httpsAgentConfig:i}={})=>{let a,{NODE_ENV:s}=process.env,c=n?.behaviours??[`CONCURRENCY`,`RETRY`];try{if(a=c.includes(`RETRY`)?createDefaultRetryInstance(e,n):createDefaultInstance(e,n),(0,o.isMissing)(n?.service)||(0,o.isMissing)(n?.organizationId)||s===`test`||(0,o.isMissing)(t)||(0,o.isMissing)(e))return a;let l=SingletonManager.getIfReady(RateLimitManager)??void 0,u=SingletonManager.getIfReady(ConcurrencyManager)??void 0,d=l?.isReady(),f=u?.isRedisConfigured(),p=[],m=[];if(c.includes(`CONCURRENCY`)){if(!f)throw Error(`Concurrency Manager cannot connect to Redis. Cannot create advanced transport instance.`);if(!d)throw Error(`RateLimitManager is not ready. Cannot create advanced transport instance.`);p.push(...sn),m.push(...cn)}let h=generateRequestKey(n);if((0,o.isMissing)(h))return e?.warning({category:`http-transport`,message:`Unable to create a key for transport instance - Invalid state. Using base default instance.`,context:{...n,defaultInstanceInitialized:(0,o.notMissing)(a)}}),a;let g=await je.get(h);if((0,o.notMissing)(g))return g;let _={interceptors:{requestConfigs:p,responseConfigs:m},instanceConfig:{maxBodyLength:1/0},logger:e,context:n,requestConfig:r,httpsAgentConfig:i,concurrencyManager:u,rateLimitManager:l},v=HttpTransportFactory.createInstance(_);return e?.debug({category:`http-transport`,message:`Creating new Axios instance and caching it for key: [${h}]`,context:{...n}}),await je.set(h,v),v}catch(t){return e?.error({category:`http-transport`,message:`Failed to create advanced transport instance. Using default instance.`,context:{...n,usingDefaultInstance:(0,o.notMissing)(a)},error:t,code:gn.HttpTransportInstanceCreateError}),(0,o.notMissing)(a)?a:createAxiosInstance()}},createDefaultInstance=(e,t)=>{let n={instanceConfig:{maxBodyLength:1/0},logger:e,context:t};return HttpTransportFactory.createInstance(n)??createAxiosInstance()},createDefaultRetryInstance=(e,t)=>{let n={interceptors:{requestConfigs:an,responseConfigs:on},instanceConfig:{maxBodyLength:1/0},logger:e,context:t};return HttpTransportFactory.createInstance(n)??createAxiosInstance()},createAxiosInstance=()=>l.default.create({maxBodyLength:1/0});var HttpClient=class{#e;#t;#n;#r;#i;#a;constructor({transportFactory:e=getTransportInstance,getRedisClient:t=buildRedisClientInstance,logger:n,redisClientConfig:r,errorMappingFn:i}={}){this.name=`HttpClient`,this.#e=e,this.#t=t,this.#n=n,this.#r=r,this.#i=i}#o({url:e,payload:t,method:n,context:r}){if(!r?.accountSecureId||r.accountSecureId.length<20||!e||!n)return null;let i=t?(0,o.getContentHash)(t):``;return`${r.accountSecureId}-${n.toUpperCase()}${i}-${e}`}async#s({url:e,payload:t,method:n,cacheTTL:r,context:i}){if(!this.#a||!r||r<=0)return null;let a=this.#o({url:e,payload:t,method:n,context:i});if(!a)return null;let o=await this.#a.getData(a);return o?(this.#n?.debug({category:this.name,message:`Cache hit for key [${a}].`}),o):(this.#n?.debug({category:this.name,message:`Cache miss for key [${a}].`}),null)}async#c({url:e,payload:t,method:n,cacheTTL:r,context:i,response:a}){if(!this.#a||!r||r<=0)return!1;let o=this.#o({url:e,payload:t,method:n,context:i});return o?(this.#n?.debug({category:this.name,message:`Caching result for key [${o}].`}),this.#a.setData({key:o,value:a,cacheTTL:r*60})):!1}async request({headers:e={},url:t,method:n=`get`,queryParams:r,maxRedirects:i=0,responseType:a,cacheTTL:s,context:c,traceId:l,payload:u,httpsAgent:d,httpAgent:f,requestConfig:p,httpsAgentConfig:h}){try{(0,o.notMissing)(this.#r)&&(0,o.isMissing)(this.#a)&&(this.#a=await this.#t(this.#r,this.#n,`HttpClient`));let m=this.#_(t,r),g=this.#l(e),_=this.#m(u,e),v=await this.#s({url:m,payload:_,method:n,cacheTTL:s,context:c});if(v)return{...v,responseTime:new Date};let y=P.getInstance(),b=((0,o.notMissing)(l)?await y.get(l):null)?.signal,x=await(await this.#e({redisClientConfig:this.#r,logger:this.#n,context:c,requestConfig:p,httpsAgentConfig:h})).request({headers:g,url:m,method:n,maxRedirects:i,responseType:a,data:_,httpsAgent:d,httpAgent:f,signal:b}),S={data:x.data,status:x.status,body:_,method:n,headers:this.#u(x.headers),requestUrl:t,responseType:x?.config?.responseType,responseTime:new Date};return await this.#c({url:m,payload:_,method:n,cacheTTL:s,context:c,response:S}),S}catch(e){let r=e;r.url=(0,m.redactUrl)(t),this.#n?.warning({category:this.name,message:`Request error [${n?.toUpperCase()} ${r.url}]: ${r.message}.`,error:r});let i=this.#h(r);throw(0,o.notMissing)(i)?i:e}}async get({headers:e,url:t,queryParams:n,maxRedirects:r,cacheTTL:i,context:a,traceId:o,requestConfig:s}){return this.request({url:t,method:`get`,queryParams:n,headers:e,maxRedirects:r,cacheTTL:i,context:a,traceId:o,requestConfig:s})}async post({headers:e,url:t,maxRedirects:n,cacheTTL:r,context:i,traceId:a,payload:o,requestConfig:s}){return this.request({url:t,method:`post`,headers:e,maxRedirects:n,cacheTTL:r,context:i,traceId:a,payload:o,requestConfig:s})}async requestStream({headers:e={},url:t,method:n=`get`,queryParams:r,maxRedirects:i=0,context:a,traceId:s,payload:c,httpsAgent:l,httpAgent:u,requestConfig:d,httpsAgentConfig:f}){try{let p=this.#_(t,r),m=this.#l(e),h=this.#m(c,e),g=P.getInstance(),_=((0,o.notMissing)(s)?await g.get(s):null)?.signal,v=await(await this.#e({redisClientConfig:this.#r,logger:this.#n,context:a,requestConfig:d,httpsAgentConfig:f})).request({headers:m,url:p,method:n,maxRedirects:i,responseType:`stream`,data:h,httpsAgent:l,httpAgent:u,signal:_});return{status:v.status,headers:this.#u(v.headers),stream:v.data,requestUrl:t}}catch(e){let r=e;r.url=(0,m.redactUrl)(t),this.#n?.warning({category:this.name,message:`Stream request error [${n?.toUpperCase()} ${r.url}]: ${r.message}.`,error:r});let i=this.#h(r);throw(0,o.notMissing)(i)?i:e}}#l(e){if(!e)return{};let t={};return Object.keys(e).forEach(n=>{t[n.toLowerCase()]=e[n]||``}),t}#u(e){if(!e)return{};let t={};return Object.keys(e).forEach(n=>{t[n]=e[n]||``}),t}#d(e){return e[`content-type`]===`application/x-www-form-urlencoded`}#f(e){return e[`content-type`]?.startsWith(`multipart/form-data`)??!1}#p(e){return(0,o.isMissing)(e)||typeof e!=`object`||!e?!1:`pipe`in e&&typeof e.pipe==`function`}#m(e,t){if(!((0,o.isMissing)(e)||(0,o.isObject)(e)&&Object.keys(e).length===0))return this.#f(t)||this.#p(e)?e:this.#d(t)?h.default.stringify(e):e}#h(e){if((0,l.isAxiosError)(e)&&this.#i)return this.#i(e)}#g(e){return typeof e==`object`&&!!e&&`value`in e&&(typeof e.value==`string`||Array.isArray(e.value))}#_(e,t){if((0,o.isMissing)(t)||Object.keys(t).length===0)return e;let n={},r={},i={},a={};for(let[e,o]of Object.entries(t))if(this.#g(o)){let t=o.arrayFormat,s=o.value;t===`repeat`?r[e]=Array.isArray(s)?s:[s]:t===`brackets`?i[e]=Array.isArray(s)?s:[s]:t===`comma`?a[e]=Array.isArray(s)?s:[s]:n[e]=s}else n[e]=o;let s=[];Object.keys(n).length>0&&s.push(h.default.stringify(n)),Object.keys(r).length>0&&s.push(h.default.stringify(r,{arrayFormat:`repeat`})),Object.keys(i).length>0&&s.push(h.default.stringify(i,{arrayFormat:`brackets`})),Object.keys(a).length>0&&s.push(h.default.stringify(a,{arrayFormat:`comma`}));let c=s.join(`&`);return(0,o.notMissing)(c)?`${e}?${c}`:e}};const buildHttpClientInstance=(e,t,n)=>new HttpClient({redisClientConfig:e,logger:t,errorMappingFn:n});var HttpClientManager=class{static{this.httpClientInstance=null}static async getInstance({redisClientConfig:e,logger:t,errorMappingFn:n,getHttpClient:r=buildHttpClientInstance}){return this.httpClientInstance??=r(e,t,n),this.httpClientInstance}static resetInstance(){this.httpClientInstance=null}};const _n=[`get`,`post`,`put`,`delete`,`patch`],vn={[k.rPush]:`
113
+ (function(n){"use strict";var r=2e3,i={s:1,n:0,d:1};function assign(e,t){if(isNaN(e=parseInt(e,10)))throw InvalidParameter();return e*t}function newFraction(e,t){if(t===0)throw DivisionByZero();var n=Object.create(Fraction$2.prototype);n.s=e<0?-1:1,e=e<0?-e:e;var r=gcd(e,t);return n.n=e/r,n.d=t/r,n}function factorize(e){for(var t={},n=e,r=2,i=4;i<=n;){for(;n%r===0;)n/=r,t[r]=(t[r]||0)+1;i+=1+2*r++}return n===e?t[e]=(t[e]||0)+1:n>1&&(t[n]=(t[n]||0)+1),t}var a=__name(function(e,t){var n=0,r=1,a=1,o=0,s=0,c=0,l=1,u=1,d=0,f=1,p=1,m=1,h=1e7,g;if(e!=null)if(t!==void 0){if(n=e,r=t,a=n*r,n%1!=0||r%1!=0)throw NonIntegerParameter()}else switch(typeof e){case`object`:if(`d`in e&&`n`in e)n=e.n,r=e.d,`s`in e&&(n*=e.s);else if(0 in e)n=e[0],1 in e&&(r=e[1]);else throw InvalidParameter();a=n*r;break;case`number`:if(e<0&&(a=e,e=-e),e%1==0)n=e;else if(e>0){for(e>=1&&(u=10**Math.floor(1+Math.log(e)/Math.LN10),e/=u);f<=h&&m<=h;)if(g=(d+p)/(f+m),e===g){f+m<=h?(n=d+p,r=f+m):m>f?(n=p,r=m):(n=d,r=f);break}else e>g?(d+=p,f+=m):(p+=d,m+=f),f>h?(n=p,r=m):(n=d,r=f);n*=u}else (isNaN(e)||isNaN(t))&&(r=n=NaN);break;case`string`:if(f=e.match(/\d+|./g),f===null)throw InvalidParameter();if(f[d]===`-`?(a=-1,d++):f[d]===`+`&&d++,f.length===d+1?s=assign(f[d++],a):f[d+1]===`.`||f[d]===`.`?(f[d]!==`.`&&(o=assign(f[d++],a)),d++,(d+1===f.length||f[d+1]===`(`&&f[d+3]===`)`||f[d+1]===`'`&&f[d+3]===`'`)&&(s=assign(f[d],a),l=10**f[d].length,d++),(f[d]===`(`&&f[d+2]===`)`||f[d]===`'`&&f[d+2]===`'`)&&(c=assign(f[d+1],a),u=10**f[d+1].length-1,d+=3)):f[d+1]===`/`||f[d+1]===`:`?(s=assign(f[d],a),l=assign(f[d+2],1),d+=3):f[d+3]===`/`&&f[d+1]===` `&&(o=assign(f[d],a),s=assign(f[d+2],a),l=assign(f[d+4],1),d+=5),f.length<=d){r=l*u,a=n=c+r*o+u*s;break}default:throw InvalidParameter()}if(r===0)throw DivisionByZero();i.s=a<0?-1:1,i.n=Math.abs(n),i.d=Math.abs(r)},`parse`);function modpow(e,t,n){for(var r=1;t>0;e=e*e%n,t>>=1)t&1&&(r=r*e%n);return r}function cycleLen(e,t){for(;t%2==0;t/=2);for(;t%5==0;t/=5);if(t===1)return 0;for(var n=10%t,i=1;n!==1;i++)if(n=n*10%t,i>r)return 0;return i}function cycleStart(e,t,n){for(var r=1,i=modpow(10,n,t),a=0;a<300;a++){if(r===i)return a;r=r*10%t,i=i*10%t}return 0}function gcd(e,t){if(!e)return t;if(!t)return e;for(;;){if(e%=t,!e)return t;if(t%=e,!t)return e}}function Fraction$2(e,t){if(a(e,t),this instanceof Fraction$2)e=gcd(i.d,i.n),this.s=i.s,this.n=i.n/e,this.d=i.d/e;else return newFraction(i.s*i.n,i.d)}__name(Fraction$2,`Fraction`);var DivisionByZero=function(){return Error(`Division by Zero`)},InvalidParameter=function(){return Error(`Invalid argument`)},NonIntegerParameter=function(){return Error(`Parameters must be integer`)};Fraction$2.prototype={s:1,n:0,d:1,abs:function(){return newFraction(this.n,this.d)},neg:function(){return newFraction(-this.s*this.n,this.d)},add:function(e,t){return a(e,t),newFraction(this.s*this.n*i.d+i.s*this.d*i.n,this.d*i.d)},sub:function(e,t){return a(e,t),newFraction(this.s*this.n*i.d-i.s*this.d*i.n,this.d*i.d)},mul:function(e,t){return a(e,t),newFraction(this.s*i.s*this.n*i.n,this.d*i.d)},div:function(e,t){return a(e,t),newFraction(this.s*i.s*this.n*i.d,this.d*i.n)},clone:function(){return newFraction(this.s*this.n,this.d)},mod:function(e,t){if(isNaN(this.n)||isNaN(this.d))return new Fraction$2(NaN);if(e===void 0)return newFraction(this.s*this.n%this.d,1);if(a(e,t),i.n===0&&this.d===0)throw DivisionByZero();return newFraction(this.s*(i.d*this.n)%(i.n*this.d),i.d*this.d)},gcd:function(e,t){return a(e,t),newFraction(gcd(i.n,this.n)*gcd(i.d,this.d),i.d*this.d)},lcm:function(e,t){return a(e,t),i.n===0&&this.n===0?newFraction(0,1):newFraction(i.n*this.n,gcd(i.n,this.n)*gcd(i.d,this.d))},ceil:function(e){return e=10**(e||0),isNaN(this.n)||isNaN(this.d)?new Fraction$2(NaN):newFraction(Math.ceil(e*this.s*this.n/this.d),e)},floor:function(e){return e=10**(e||0),isNaN(this.n)||isNaN(this.d)?new Fraction$2(NaN):newFraction(Math.floor(e*this.s*this.n/this.d),e)},round:function(e){return e=10**(e||0),isNaN(this.n)||isNaN(this.d)?new Fraction$2(NaN):newFraction(Math.round(e*this.s*this.n/this.d),e)},inverse:function(){return newFraction(this.s*this.d,this.n)},pow:function(e,t){if(a(e,t),i.d===1)return i.s<0?newFraction((this.s*this.d)**+i.n,this.n**+i.n):newFraction((this.s*this.n)**+i.n,this.d**+i.n);if(this.s<0)return null;var n=factorize(this.n),r=factorize(this.d),o=1,s=1;for(var c in n)if(c!==`1`){if(c===`0`){o=0;break}if(n[c]*=i.n,n[c]%i.d===0)n[c]/=i.d;else return null;o*=c**+n[c]}for(var c in r)if(c!==`1`){if(r[c]*=i.n,r[c]%i.d===0)r[c]/=i.d;else return null;s*=c**+r[c]}return i.s<0?newFraction(s,o):newFraction(o,s)},equals:function(e,t){return a(e,t),this.s*this.n*i.d===i.s*i.n*this.d},compare:function(e,t){a(e,t);var n=this.s*this.n*i.d-i.s*i.n*this.d;return(0<n)-(n<0)},simplify:function(e){if(isNaN(this.n)||isNaN(this.d))return this;e||=.001;for(var t=this.abs(),n=t.toContinued(),r=1;r<n.length;r++){for(var i=newFraction(n[r-1],1),a=r-2;a>=0;a--)i=i.inverse().add(n[a]);if(Math.abs(i.sub(t).valueOf())<e)return i.mul(this.s)}return this},divisible:function(e,t){return a(e,t),!(!(i.n*this.d)||this.n*i.d%(i.n*this.d))},valueOf:function(){return this.s*this.n/this.d},toFraction:function(e){var t,n=``,r=this.n,i=this.d;return this.s<0&&(n+=`-`),i===1?n+=r:(e&&(t=Math.floor(r/i))>0&&(n+=t,n+=` `,r%=i),n+=r,n+=`/`,n+=i),n},toLatex:function(e){var t,n=``,r=this.n,i=this.d;return this.s<0&&(n+=`-`),i===1?n+=r:(e&&(t=Math.floor(r/i))>0&&(n+=t,r%=i),n+=`\\frac{`,n+=r,n+=`}{`,n+=i,n+=`}`),n},toContinued:function(){var e,t=this.n,n=this.d,r=[];if(isNaN(t)||isNaN(n))return r;do r.push(Math.floor(t/n)),e=t%n,t=n,n=e;while(t!==1);return r},toString:function(e){var t=this.n,n=this.d;if(isNaN(t)||isNaN(n))return`NaN`;e||=15;var r=cycleLen(t,n),i=cycleStart(t,n,r),a=this.s<0?`-`:``;if(a+=t/n|0,t%=n,t*=10,t&&(a+=`.`),r){for(var o=i;o--;)a+=t/n|0,t%=n,t*=10;a+=`(`;for(var o=r;o--;)a+=t/n|0,t%=n,t*=10;a+=`)`}else for(var o=e;t&&o--;)a+=t/n|0,t%=n,t*=10;return a}},typeof e==`object`?(Object.defineProperty(Fraction$2,`__esModule`,{value:!0}),Fraction$2.default=Fraction$2,Fraction$2.Fraction=Fraction$2,t.exports=Fraction$2):n.Fraction=Fraction$2})(e)})),$=__toESM(Et(),1),Dt=`Fraction`,Ot=[],kt=factory(Dt,Ot,()=>(Object.defineProperty($.default,`name`,{value:`Fraction`}),$.default.prototype.constructor=$.default,$.default.prototype.type=`Fraction`,$.default.prototype.isFraction=!0,$.default.prototype.toJSON=function(){return{mathjs:`Fraction`,n:this.s*this.n,d:this.d}},$.default.fromJSON=function(e){return new $.default(e)},$.default),{isClass:!0}),At=`Matrix`,jt=[],Mt=factory(At,jt,()=>{function Matrix$1(){if(!(this instanceof Matrix$1))throw SyntaxError(`Constructor must be called with the new operator`)}return __name(Matrix$1,`Matrix`),Matrix$1.prototype.type=`Matrix`,Matrix$1.prototype.isMatrix=!0,Matrix$1.prototype.storage=function(){throw Error(`Cannot invoke storage on a Matrix interface`)},Matrix$1.prototype.datatype=function(){throw Error(`Cannot invoke datatype on a Matrix interface`)},Matrix$1.prototype.create=function(e,t){throw Error(`Cannot invoke create on a Matrix interface`)},Matrix$1.prototype.subset=function(e,t,n){throw Error(`Cannot invoke subset on a Matrix interface`)},Matrix$1.prototype.get=function(e){throw Error(`Cannot invoke get on a Matrix interface`)},Matrix$1.prototype.set=function(e,t,n){throw Error(`Cannot invoke set on a Matrix interface`)},Matrix$1.prototype.resize=function(e,t){throw Error(`Cannot invoke resize on a Matrix interface`)},Matrix$1.prototype.reshape=function(e,t){throw Error(`Cannot invoke reshape on a Matrix interface`)},Matrix$1.prototype.clone=function(){throw Error(`Cannot invoke clone on a Matrix interface`)},Matrix$1.prototype.size=function(){throw Error(`Cannot invoke size on a Matrix interface`)},Matrix$1.prototype.map=function(e,t){throw Error(`Cannot invoke map on a Matrix interface`)},Matrix$1.prototype.forEach=function(e){throw Error(`Cannot invoke forEach on a Matrix interface`)},Matrix$1.prototype[Symbol.iterator]=function(){throw Error(`Cannot iterate a Matrix interface`)},Matrix$1.prototype.toArray=function(){throw Error(`Cannot invoke toArray on a Matrix interface`)},Matrix$1.prototype.valueOf=function(){throw Error(`Cannot invoke valueOf on a Matrix interface`)},Matrix$1.prototype.format=function(e){throw Error(`Cannot invoke format on a Matrix interface`)},Matrix$1.prototype.toString=function(){throw Error(`Cannot invoke toString on a Matrix interface`)},Matrix$1},{isClass:!0});function maxArgumentCount(e){return Object.keys(e.signatures||{}).reduce(function(e,t){var n=(t.match(/,/g)||[]).length+1;return Math.max(e,n)},-1)}var Nt=`DenseMatrix`,Pt=[`Matrix`],Ft=factory(Nt,Pt,e=>{var{Matrix:t}=e;function DenseMatrix$1(e,t){if(!(this instanceof DenseMatrix$1))throw SyntaxError(`Constructor must be called with the new operator`);if(t&&!isString$1(t))throw Error(`Invalid datatype: `+t);if(isMatrix(e))e.type===`DenseMatrix`?(this._data=clone$2(e._data),this._size=clone$2(e._size),this._datatype=t||e._datatype):(this._data=e.toArray(),this._size=e.size(),this._datatype=t||e._datatype);else if(e&&L(e.data)&&L(e.size))this._data=e.data,this._size=e.size,validate$1(this._data,this._size),this._datatype=t||e.datatype;else if(L(e))this._data=preprocess(e),this._size=arraySize(this._data),validate$1(this._data,this._size),this._datatype=t;else if(e)throw TypeError(`Unsupported type of data (`+typeOf(e)+`)`);else this._data=[],this._size=[0],this._datatype=t}__name(DenseMatrix$1,`DenseMatrix`),DenseMatrix$1.prototype=new t,DenseMatrix$1.prototype.createDenseMatrix=function(e,t){return new DenseMatrix$1(e,t)},Object.defineProperty(DenseMatrix$1,`name`,{value:`DenseMatrix`}),DenseMatrix$1.prototype.constructor=DenseMatrix$1,DenseMatrix$1.prototype.type=`DenseMatrix`,DenseMatrix$1.prototype.isDenseMatrix=!0,DenseMatrix$1.prototype.getDataType=function(){return getArrayDataType(this._data,typeOf)},DenseMatrix$1.prototype.storage=function(){return`dense`},DenseMatrix$1.prototype.datatype=function(){return this._datatype},DenseMatrix$1.prototype.create=function(e,t){return new DenseMatrix$1(e,t)},DenseMatrix$1.prototype.subset=function(e,t,n){switch(arguments.length){case 1:return _get(this,e);case 2:case 3:return _set(this,e,t,n);default:throw SyntaxError(`Wrong number of arguments`)}},DenseMatrix$1.prototype.get=function(e){if(!L(e))throw TypeError(`Array expected`);if(e.length!==this._size.length)throw new DimensionError(e.length,this._size.length);for(var t=0;t<e.length;t++)validateIndex(e[t],this._size[t]);for(var n=this._data,r=0,i=e.length;r<i;r++){var a=e[r];validateIndex(a,n.length),n=n[a]}return n},DenseMatrix$1.prototype.set=function(e,t,n){if(!L(e))throw TypeError(`Array expected`);if(e.length<this._size.length)throw new DimensionError(e.length,this._size.length,`<`);var r,i,a,o=e.map(function(e){return e+1});_fit(this,o,n);var s=this._data;for(r=0,i=e.length-1;r<i;r++)a=e[r],validateIndex(a,s.length),s=s[a];return a=e[e.length-1],validateIndex(a,s.length),s[a]=t,this};function _get(e,t){if(!isIndex(t))throw TypeError(`Invalid index`);if(t.isScalar())return e.get(t.min());var n=t.size();if(n.length!==e._size.length)throw new DimensionError(n.length,e._size.length);for(var r=t.min(),i=t.max(),a=0,o=e._size.length;a<o;a++)validateIndex(r[a],e._size[a]),validateIndex(i[a],e._size[a]);return new DenseMatrix$1(_getSubmatrix(e._data,t,n.length,0),e._datatype)}function _getSubmatrix(e,t,n,r){var i=r===n-1,a=t.dimension(r);return i?a.map(function(t){return validateIndex(t,e.length),e[t]}).valueOf():a.map(function(i){validateIndex(i,e.length);var a=e[i];return _getSubmatrix(a,t,n,r+1)}).valueOf()}function _set(e,t,n,r){if(!t||t.isIndex!==!0)throw TypeError(`Invalid index`);var i=t.size(),a=t.isScalar(),o;if(isMatrix(n)?(o=n.size(),n=n.valueOf()):o=arraySize(n),a){if(o.length!==0)throw TypeError(`Scalar expected`);e.set(t.min(),n,r)}else{if(!deepStrictEqual(o,i))try{n=o.length===0?broadcastTo([n],i):broadcastTo(n,i),o=arraySize(n)}catch{}if(i.length<e._size.length)throw new DimensionError(i.length,e._size.length,`<`);if(o.length<i.length){for(var s=0,c=0;i[s]===1&&o[s]===1;)s++;for(;i[s]===1;)c++,s++;n=unsqueeze(n,i.length,c,o)}if(!deepStrictEqual(i,o))throw new DimensionError(i,o,`>`);_fit(e,t.max().map(function(e){return e+1}),r);var l=i.length;_setSubmatrix(e._data,t,n,l,0)}return e}function _setSubmatrix(e,t,n,r,i){var a=i===r-1,o=t.dimension(i);a?o.forEach(function(t,r){validateIndex(t),e[t]=n[r[0]]}):o.forEach(function(a,o){validateIndex(a),_setSubmatrix(e[a],t,n[o[0]],r,i+1)})}DenseMatrix$1.prototype.resize=function(e,t,n){if(!isCollection(e))throw TypeError(`Array or Matrix expected`);var r=e.valueOf().map(e=>Array.isArray(e)&&e.length===1?e[0]:e);return _resize$1(n?this.clone():this,r,t)};function _resize$1(e,t,n){if(t.length===0){for(var r=e._data;L(r);)r=r[0];return r}return e._size=t.slice(0),e._data=resize(e._data,e._size,n),e}__name(_resize$1,`_resize`),DenseMatrix$1.prototype.reshape=function(e,t){var n=t?this.clone():this;return n._data=reshape(n._data,e),n._size=processSizesWildcard(e,n._size.reduce((e,t)=>e*t)),n};function _fit(e,t,n){for(var r=e._size.slice(0),i=!1;r.length<t.length;)r.push(0),i=!0;for(var a=0,o=t.length;a<o;a++)t[a]>r[a]&&(r[a]=t[a],i=!0);i&&_resize$1(e,r,n)}DenseMatrix$1.prototype.clone=function(){return new DenseMatrix$1({data:clone$2(this._data),size:clone$2(this._size),datatype:this._datatype})},DenseMatrix$1.prototype.size=function(){return this._size.slice(0)},DenseMatrix$1.prototype.map=function(e){var t=this,n=maxArgumentCount(e),r=function recurse(r,i){return L(r)?r.map(function(e,t){return recurse(e,i.concat(t))}):n===1?e(r):n===2?e(r,i):e(r,i,t)}(this._data,[]);return new DenseMatrix$1(r,this._datatype===void 0?void 0:getArrayDataType(r,typeOf))},DenseMatrix$1.prototype.forEach=function(e){var t=this;(function recurse(n,r){L(n)?n.forEach(function(e,t){recurse(e,r.concat(t))}):e(n,r,t)})(this._data,[])},DenseMatrix$1.prototype[Symbol.iterator]=function*(){yield*function*recurse(e,t){if(L(e))for(var n=0;n<e.length;n++)yield*recurse(e[n],t.concat(n));else yield{value:e,index:t}}(this._data,[])},DenseMatrix$1.prototype.rows=function(){var e=[];if(this.size().length!==2)throw TypeError(`Rows can only be returned for a 2D matrix.`);for(var t of this._data)e.push(new DenseMatrix$1([t],this._datatype));return e},DenseMatrix$1.prototype.columns=function(){var e=this,t=[],n=this.size();if(n.length!==2)throw TypeError(`Rows can only be returned for a 2D matrix.`);for(var r=this._data,i=function _loop$1(n){var i=r.map(e=>[e[n]]);t.push(new DenseMatrix$1(i,e._datatype))},a=0;a<n[1];a++)i(a);return t},DenseMatrix$1.prototype.toArray=function(){return clone$2(this._data)},DenseMatrix$1.prototype.valueOf=function(){return this._data},DenseMatrix$1.prototype.format=function(e){return format(this._data,e)},DenseMatrix$1.prototype.toString=function(){return format(this._data)},DenseMatrix$1.prototype.toJSON=function(){return{mathjs:`DenseMatrix`,data:this._data,size:this._size,datatype:this._datatype}},DenseMatrix$1.prototype.diagonal=function(e){if(e){if(isBigNumber(e)&&(e=e.toNumber()),!isNumber$1(e)||!isInteger(e))throw TypeError(`The parameter k must be an integer number`)}else e=0;for(var t=e>0?e:0,n=e<0?-e:0,r=this._size[0],i=this._size[1],a=Math.min(r-n,i-t),o=[],s=0;s<a;s++)o[s]=this._data[s+n][s+t];return new DenseMatrix$1({data:o,size:[a],datatype:this._datatype})},DenseMatrix$1.diagonal=function(e,t,n,r){if(!L(e))throw TypeError(`Array expected, size parameter`);if(e.length!==2)throw Error(`Only two dimensions matrix are supported`);if(e=e.map(function(e){if(isBigNumber(e)&&(e=e.toNumber()),!isNumber$1(e)||!isInteger(e)||e<1)throw Error(`Size values must be positive integers`);return e}),n){if(isBigNumber(n)&&(n=n.toNumber()),!isNumber$1(n)||!isInteger(n))throw TypeError(`The parameter k must be an integer number`)}else n=0;var i=n>0?n:0,a=n<0?-n:0,o=e[0],s=e[1],c=Math.min(o-a,s-i),l;if(L(t)){if(t.length!==c)throw Error(`Invalid value array length`);l=function _value$1(e){return t[e]}}else if(isMatrix(t)){var u=t.size();if(u.length!==1||u[0]!==c)throw Error(`Invalid matrix length`);l=function _value$1(e){return t.get([e])}}else l=function _value$1(){return t};r||=isBigNumber(l(0))?l(0).mul(0):0;var d=[];if(e.length>0){d=resize(d,e,r);for(var f=0;f<c;f++)d[f+a][f+i]=l(f)}return new DenseMatrix$1({data:d,size:[o,s]})},DenseMatrix$1.fromJSON=function(e){return new DenseMatrix$1(e)},DenseMatrix$1.prototype.swapRows=function(e,t){if(!isNumber$1(e)||!isInteger(e)||!isNumber$1(t)||!isInteger(t))throw Error(`Row index must be positive integers`);if(this._size.length!==2)throw Error(`Only two dimensional matrix is supported`);return validateIndex(e,this._size[0]),validateIndex(t,this._size[0]),DenseMatrix$1._swapRows(e,t,this._data),this},DenseMatrix$1._swapRows=function(e,t,n){var r=n[e];n[e]=n[t],n[t]=r};function preprocess(e){return isMatrix(e)?preprocess(e.valueOf()):L(e)?e.map(preprocess):e}return DenseMatrix$1},{isClass:!0});function deepMap(e,t,n){return e&&typeof e.map==`function`?e.map(function(e){return deepMap(e,t,n)}):t(e)}var It=`isNumeric`,Lt=[`typed`],Rt=factory(It,Lt,e=>{var{typed:t}=e;return t(It,{"number | BigNumber | Fraction | boolean":()=>!0,"Complex | Unit | string | null | undefined | Node":()=>!1,"Array | Matrix":t.referToSelf(e=>t=>deepMap(t,e))})}),zt=`hasNumericValue`,Bt=[`typed`,`isNumeric`],Vt=factory(zt,Bt,e=>{var{typed:t,isNumeric:n}=e;return t(zt,{boolean:()=>!0,string:function string(e){return e.trim().length>0&&!isNaN(Number(e))},any:function any(e){return n(e)}})}),Ht=xt({config:qe}),Ut=Tt({}),Wt=kt({}),Gt=Mt({}),Kt=Ft({Matrix:Gt}),qt=nt({BigNumber:Ht,Complex:Ut,DenseMatrix:Kt,Fraction:Wt}),Jt=Rt({typed:qt}),Yt=Vt({isNumeric:Jt,typed:qt});const shortTimePeriodIsMilliseconds=e=>{let t=Number(e);return Number.isNaN(t)?!1:t>=120&&t<=36e4},resolveWaitTimeMs=e=>{let t=Number(e),n=Date.now();return Number.isNaN(t)?n+1e3:!shortTimePeriodIsMilliseconds(t)&&(0,o.isFutureUnixTimestamp)(t)?adjustUnixTimestamp(t):shortTimePeriodIsMilliseconds(t)?n+t:n+t*I},Xt=`ratelimitlimit`,Zt=`ratelimitremaining`,Qt=`ratelimitreset`,$t=`ratelimitconcurrencylimit`,en=`ratelimitconcurrencyremaining`,tn=`ratelimitconcurrencyreset`,superNormalizeHeaders=e=>{let t={};for(let[n,r]of Object.entries(e)){let e=n.toLowerCase().replace(/^x-/,``).replace(/concurren.+-/g,`concurrency-`).replace(/-/g,``);t[e]=Yt(r)?Number(r):null}return t},extractRateLimitHeaders=e=>{let t=superNormalizeHeaders(e);return{rateLimitLimit:t.ratelimitlimit,rateLimitRemaining:t.ratelimitremaining,rateLimitReset:resolveWaitTimeMs(t.ratelimitreset),concurrencyLimit:t.ratelimitconcurrencylimit,concurrencyRemaining:t.ratelimitconcurrencyremaining,concurrencyReset:resolveWaitTimeMs(t.ratelimitconcurrencyreset)}},generateRequestKey=e=>{let{accountSecureId:t,service:n,resource:r,subResource:i,childResource:a,action:s,behaviours:c}=e??{};return[t,n,r,s].some(o.isMissing)?null:[t,n,r,i,a,s,...c??[]].filter(Boolean).join(`-`)},getRetryAfterWaitTime=(e,t=10,n=1)=>{let r=Date.now();return(0,o.isFutureUnixTimestamp)(e)||(0,o.isNumber)(e)?evaluateRetryAfterNumber(Number(e),r,t,n):isString$1(e)&&e!==``?evaluateRetryAfterString(e,r,t,n):n},evaluateRetryAfterNumber=(e,t,n=10,r=1)=>{if(e<n)return e;let i=adjustUnixTimestamp(e);if(i>t){let e=Math.floor((i-t)/I);return e>0&&e<n?e:r}return r},evaluateRetryAfterString=(e,t,n=10,r=1)=>{if(Be.test(e)){let t=parseFloat(e);return t>0&&t<n?t:r}let i=new Date(e);if(Number.isNaN(i.getTime()))return r;let a=i.getTime();if(a>t){let e=Math.floor((a-t)/I);return e>0&&e<n?e:r}return r},retryErrorInterceptor=({axiosInstance:e,logger:t,requestConfig:n,context:r})=>__name(async i=>{let{response:a,config:s}=i;if(s?.signal?.aborted)return Promise.reject(createAxiosError(`Request aborted`,s,`ERR_CANCELED`,a));let{status:c,retryAfter:l}=convertError(a,r,n,t);if(c===429&&(0,o.notMissing)(s)){let n=getRetryAfterWaitTime(l);if(s._retryCount>=5)return t?.warning({category:`http-transport`,message:`Max retries exceeded for ${s?.url}. Aborting.`,context:{...r??{},retryAfterHeader:l,retryAfterAsNumber:n}}),Promise.reject(i);let c=s._retryCount??0,u={...s,_retryCount:c+1},d=l?n*I:(0,o.exponentialBackoffInMS)(u._retryCount);return t?.debug({category:`http-transport`,message:`Received 429 error from ${s?.url}`,context:{...r??{},retryAfterHeader:l,calculatedRetryAfter:d}}),await abortableDelay(d,s,a),e?.request(u)}return Promise.reject(i)},`retryErrorInterceptor`),convertError=(e,t,n,r)=>{let{provider:i}=t??{},{status:a,headers:s,data:c}=e??{},{retryafter:l}=superNormalizeHeaders(s??{});if((0,o.isMissing)(i)||(0,o.isMissing)(e))return r?.warning({category:`http-transport`,message:`Invalid parameters for convertError`,context:{...t,responseIsMissing:(0,o.isMissing)(e),providerIsMissing:(0,o.isMissing)(i),status:e?.status??`undefined`,statusText:e?.statusText??`undefined`,retryafter:l??`undefined`}}),{status:a,retryAfter:l};let u=n?.rateLimits?.mappedRateLimitErrors;if((0,o.notMissing)(u)&&(0,o.notMissing)(c))for(let e of u){let{errorStatus:t,errorMessagePath:n,errorMessage:r,retryAfterPath:i,retryAfterUnit:u,retryAfterValue:d}=e;if(t!==a)continue;let f=n??`message`,m=testMessage((0,o.isObject)(c)?(0,p.JSONPath)({path:f,json:c})[0]:c,r);if(t===a&&m){let e=convertRetryAfter(d??extractRetryAfter(s,i),u);return{status:429,retryAfter:l??e}}}return{status:a,retryAfter:l}},testMessage=(e,t)=>t instanceof RegExp?t.test(e??``):e?.includes(t)??!1,extractRetryAfter=(e,t)=>(0,o.notMissing)(t)&&(0,o.notMissing)(e)?(0,p.JSONPath)({path:t,json:e})[0]:null,convertRetryAfter=(e,t=`seconds`)=>(0,o.notMissing)(e)?transformToSeconds(e,t):null,transformToSeconds=(e,t)=>{if(t===`seconds`)return typeof e==`string`?parseFloat(e):e;if(t===`milliseconds`)return(typeof e==`string`?parseFloat(e):e)/I;if(t===`date`){let t=typeof e==`string`&&!isNaN(Number(e))?parseFloat(e):e,n=new Date(t);if(isNaN(n.getTime()))throw Error(`Invalid date value`);return n.getTime()}throw Error(`Invalid type`)},nn=`rateLimitErrorInterceptor`,rateLimitErrorInterceptor=({axiosInstance:e,logger:t,requestConfig:n,context:r,concurrencyManager:i})=>__name(async a=>{let{response:s,config:c}=a,l=c?.signal;if((0,o.isMissing)(r)||(0,o.isMissing)(c))return t?.warning({category:`HttpClient`,message:`No context or config for this response - that doesn't seem right.`,context:{interceptor:nn,...c,httpsAgent:void 0,headers:void 0,hasContext:(0,o.notMissing)(r),hasConfig:(0,o.notMissing)(c)},code:F.InterceptorContextNotPresent}),Promise.reject(a);if((0,o.isMissing)(i))return t?.error({category:`HttpClient`,message:`ConcurrencyManager is not initialized`,context:{interceptor:nn,...c,httpsAgent:void 0,headers:void 0,concurrencyManagerInitialized:(0,o.notMissing)(i)},code:F.RateLimitOrConcurrencyManagerNotInitialized}),Promise.reject(a);let{requestId:u,targetConcurrencyKey:d,leaseSubscription:f,setRemovalSubscription:p}=c?.requestMetadata??{};if(!((0,o.notMissing)(u)&&(0,o.notMissing)(d)&&await i.releaseRequest(u,d))&&(0,o.notMissing)(c?.requestMetadata)&&t?.error({category:`HttpClient`,message:`Failed to release request from concurrency manager`,context:{...r,interceptor:nn,requestId:u,targetConcurrencyKey:d,leaseSubscription:f,setRemovalSubscription:p},code:F.RateLimiterReleaseRequestFailed}),l?.aborted)return Promise.reject(createAxiosError(`Request aborted`,c,`ERR_CANCELED`,s));let{status:m,retryAfter:h}=convertError(s,r,n,t);if(m===429&&(0,o.notMissing)(c)){let n=getRetryAfterWaitTime(h);if(c._retryCount>=5)return t?.warning({category:`HttpClient`,message:`Max retries exceeded for ${c.url}. Aborting.`,context:{...r??{},...c.requestMetadata??{},retryAfterHeader:h,retryAfterAsNumber:n}}),Promise.reject(a);let i=c?._retryCount??0,l={...c,_retryCount:i+1},u=h?n*I:(0,o.exponentialBackoffInMS)(l._retryCount);return t?.debug({category:`HttpClient`,message:`Received 429 error from ${c.url}`,context:{...r,retryAfterHeader:h,calculatedRetryAfter:u}}),await abortableDelay(u,c,s),e?.request(l)}return Promise.reject(a)},`rateLimitErrorInterceptor`),rn=`rateLimitResponseInterceptor`,rateLimitResponseInterceptor=({logger:e,context:t,concurrencyManager:n})=>__name(async r=>{let i=r?.config,a=i?.signal;if((0,o.isMissing)(t))e?.warning({category:`HttpClient`,message:`No context for this response - that doesn't seem right.`,context:{interceptor:rn,...i,httpsAgent:void 0,headers:void 0}});else if((0,o.isMissing)(n))return e?.error({category:`HttpClient`,message:`ConcurrencyManager is not initialized`,context:{interceptor:rn,...i,httpsAgent:void 0,headers:void 0,concurrencyManagerInitialized:(0,o.notMissing)(n)},code:F.RateLimitOrConcurrencyManagerNotInitialized}),r;else if((0,o.notMissing)(t.provider)&&(0,o.notMissing)(t.accountSecureId)){let t=r?.headers;if((0,o.notMissing)(t)){let n=extractRateLimitHeaders(t);e?.debug({category:`HttpClient`,message:`Rate limit headers extracted`,context:{interceptor:rn,rateLimitHeaders:n}})}let{requestId:s,targetConcurrencyKey:c,leaseSubscription:l,setRemovalSubscription:u}=i?.requestMetadata??{};if(await n.releaseRequest(s,c)||e?.error({category:`HttpClient`,message:`Failed to release request from concurrency manager`,context:{interceptor:rn,requestId:s,targetConcurrencyKey:c,leaseSubscription:l,setRemovalSubscription:u},code:F.RateLimiterReleaseRequestFailed}),a?.aborted)return Promise.reject(createAxiosError(`Request aborted`,i,`ERR_CANCELED`,r))}return r},`rateLimitResponseInterceptor`),validateRequestInterceptor=e=>(e.validateStatus??=e=>e>=200&&e<300,e),an=[{onFulfilled:validateRequestInterceptor,onRejected:null,options:void 0}],on=[{onFulfilled:null,onRejected:retryErrorInterceptor},{onFulfilled:null,onRejected:abortErrorInterceptor}],sn=[{onFulfilled:validateRequestInterceptor,onRejected:null,options:void 0},{onFulfilled:checkConcurrencyInterceptor,onRejected:null,options:void 0}],cn=[{onFulfilled:rateLimitResponseInterceptor,onRejected:rateLimitErrorInterceptor},{onFulfilled:null,onRejected:abortErrorInterceptor}],un=1,dn=1e3,fn=0,pn=59,mn=.8,hn=500;var RateLimitManager=class extends ScriptManager{constructor(...e){super(...e),this.name=`RateLimitManager`}async additionalInitialization(){}getDynamicMaxWaitTime(e,t,n,r=59,i=.8,a=500){this.readyCheck();let o=e.subPools?.find(e=>e.urlPattern instanceof RegExp?e.urlPattern.test(n??``):n?.includes(e.urlPattern))?.rateLimit??e.mainRatelimit;if(o<=0)throw Error(`Requests per second (rps) must be greater than 0.`);let s=t.subPools?.find(e=>e.urlPattern instanceof RegExp?e.urlPattern.test(n??``):n?.includes(e.urlPattern))?.maxConcurrency??t.mainMaxConcurrency;if(s<=0)throw Error(`Concurrency must be greater than 0.`);let c=r*i,l=1/Math.min(o,s/(a/1e3)),u=Math.max(7.5,c*l);return Math.min(c,u)}async getWaitTime(e,t,n){this.readyCheck();let r=`rateLimit:${e}`,i=t.subPools?.find(e=>e.urlPattern instanceof RegExp?e.urlPattern.test(n??``):n?.includes(e.urlPattern))?.subPoolKey,a=(0,o.notMissing)(i)?`${r}-${i}`:r,{mainRatelimit:s,subPools:c}=t,l=[{key:r,rateLimit:s},...c?.map(e=>{let{subPoolKey:t,rateLimit:n}=e;return{key:`${r}-${t}`,rateLimit:n}})??[]],u=l.map(e=>e.key),d=l.map(e=>e.rateLimit);return await this.executeScript(Pe.incr,[a,...u],[s.toString(),...d.map(String)])}readyCheck(){if(!this.cacheClient||!this.scriptMap?.size)throw Error(`RateLimitManager not ready`)}isReady(){return!!this?.cacheClient&&!!this?.scriptMap?.size}close(){this.scriptMap?.clear(),this.reset()}},SingletonManager=class{static{this.instances=new Map}static async prepare(e,t,...n){if(!this.instances.has(e)){let t=new e;t.getSingleton=e=>{let t=this.instances.get(e);if((0,o.isMissing)(t))throw Error(`Singleton ${e.name} not prepared yet`);if(t.hasInitFailed?.())throw Error(`${e.name} initialization failed`);let n=t.getInstanceIfReady?.();if((0,o.notMissing)(n))return n;throw Error(`${e.name} not ready`)},this.instances.set(e,t)}let r=this.instances.get(e);try{return await r.getInstance(t,...n)}catch(t){throw r.hasInitFailed?.()&&this.instances.delete(e),t}}static getIfReady(e){return this.instances.get(e)?.getInstanceIfReady?.()??null}static reset(e){this.instances.get(e)?.reset?.(),this.instances.delete(e)}static cleanupFailed(){let e=0;for(let[t,n]of this.instances){let r=n;r?.hasInitFailed?.()&&(r?.reset?.(),this.instances.delete(t),e++)}return e}};let gn=function(e){return e.HttpTransportInstanceCreateError=`HttpTransportInstanceCreateError`,e}({});const getTransportInstance=async({logger:e,redisClientConfig:t,context:n,requestConfig:r,httpsAgentConfig:i}={})=>{let a,{NODE_ENV:s}=process.env,c=n?.behaviours??[`CONCURRENCY`,`RETRY`];try{if(a=c.includes(`RETRY`)?createDefaultRetryInstance(e,n):createDefaultInstance(e,n),(0,o.isMissing)(n?.service)||(0,o.isMissing)(n?.organizationId)||s===`test`||(0,o.isMissing)(t)||(0,o.isMissing)(e))return a;let l=SingletonManager.getIfReady(RateLimitManager)??void 0,u=SingletonManager.getIfReady(ConcurrencyManager)??void 0,d=l?.isReady(),f=u?.isRedisConfigured(),p=[],m=[];if(c.includes(`CONCURRENCY`)){if(!f)throw Error(`Concurrency Manager cannot connect to Redis. Cannot create advanced transport instance.`);if(!d)throw Error(`RateLimitManager is not ready. Cannot create advanced transport instance.`);p.push(...sn),m.push(...cn)}let h=generateRequestKey(n);if((0,o.isMissing)(h))return e?.warning({category:`http-transport`,message:`Unable to create a key for transport instance - Invalid state. Using base default instance.`,context:{...n,defaultInstanceInitialized:(0,o.notMissing)(a)}}),a;let g=await je.get(h);if((0,o.notMissing)(g))return g;let _={interceptors:{requestConfigs:p,responseConfigs:m},instanceConfig:{maxBodyLength:1/0},logger:e,context:n,requestConfig:r,httpsAgentConfig:i,concurrencyManager:u,rateLimitManager:l},v=HttpTransportFactory.createInstance(_);return e?.debug({category:`http-transport`,message:`Creating new Axios instance and caching it for key: [${h}]`,context:{...n}}),await je.set(h,v),v}catch(t){return e?.error({category:`http-transport`,message:`Failed to create advanced transport instance. Using default instance.`,context:{...n,usingDefaultInstance:(0,o.notMissing)(a)},error:t,code:gn.HttpTransportInstanceCreateError}),(0,o.notMissing)(a)?a:createAxiosInstance()}},createDefaultInstance=(e,t)=>{let n={instanceConfig:{maxBodyLength:1/0},logger:e,context:t};return HttpTransportFactory.createInstance(n)??createAxiosInstance()},createDefaultRetryInstance=(e,t)=>{let n={interceptors:{requestConfigs:an,responseConfigs:on},instanceConfig:{maxBodyLength:1/0},logger:e,context:t};return HttpTransportFactory.createInstance(n)??createAxiosInstance()},createAxiosInstance=()=>l.default.create({maxBodyLength:1/0});var HttpClient=class{#e;#t;#n;#r;#i;#a;constructor({transportFactory:e=getTransportInstance,getRedisClient:t=buildRedisClientInstance,logger:n,redisClientConfig:r,errorMappingFn:i}={}){this.name=`HttpClient`,this.#e=e,this.#t=t,this.#n=n,this.#r=r,this.#i=i}#o({url:e,payload:t,method:n,context:r}){if(!r?.accountSecureId||r.accountSecureId.length<20||!e||!n)return null;let i=t?(0,o.getContentHash)(t):``;return`${r.accountSecureId}-${n.toUpperCase()}${i}-${e}`}async#s({url:e,payload:t,method:n,cacheTTL:r,context:i}){if(!this.#a||!r||r<=0)return null;let a=this.#o({url:e,payload:t,method:n,context:i});if(!a)return null;let o=await this.#a.getData(a);return o?(this.#n?.debug({category:this.name,message:`Cache hit for key [${a}].`}),o):(this.#n?.debug({category:this.name,message:`Cache miss for key [${a}].`}),null)}async#c({url:e,payload:t,method:n,cacheTTL:r,context:i,response:a}){if(!this.#a||!r||r<=0)return!1;let o=this.#o({url:e,payload:t,method:n,context:i});return o?(this.#n?.debug({category:this.name,message:`Caching result for key [${o}].`}),this.#a.setData({key:o,value:a,cacheTTL:r*60})):!1}async request({headers:e={},url:t,method:n=`get`,queryParams:r,maxRedirects:i=0,responseType:a,cacheTTL:s,context:c,traceId:l,payload:u,httpsAgent:d,httpAgent:f,requestConfig:p,httpsAgentConfig:h}){try{(0,o.notMissing)(this.#r)&&(0,o.isMissing)(this.#a)&&(this.#a=await this.#t(this.#r,this.#n,`HttpClient`));let m=this.#_(t,r),g=this.#l(e),_=this.#m(u,e),v=await this.#s({url:m,payload:_,method:n,cacheTTL:s,context:c});if(v)return{...v,responseTime:new Date};let y=P.getInstance(),b=((0,o.notMissing)(l)?await y.get(l):null)?.signal,x=await(await this.#e({redisClientConfig:this.#r,logger:this.#n,context:c,requestConfig:p,httpsAgentConfig:h})).request({headers:g,url:m,method:n,maxRedirects:i,responseType:a,data:_,httpsAgent:d,httpAgent:f,signal:b}),S={data:x.data,status:x.status,body:_,method:n,headers:this.#u(x.headers),requestUrl:t,responseType:x?.config?.responseType,responseTime:new Date};return await this.#c({url:m,payload:_,method:n,cacheTTL:s,context:c,response:S}),S}catch(e){let r=e;r.url=(0,m.redactUrl)(t),this.#n?.warning({category:this.name,message:`Request error [${n?.toUpperCase()} ${r.url}]: ${r.message}.`,error:r});let i=this.#h(r);throw(0,o.notMissing)(i)?i:e}}async get({headers:e,url:t,queryParams:n,maxRedirects:r,cacheTTL:i,context:a,traceId:o,requestConfig:s}){return this.request({url:t,method:`get`,queryParams:n,headers:e,maxRedirects:r,cacheTTL:i,context:a,traceId:o,requestConfig:s})}async post({headers:e,url:t,maxRedirects:n,cacheTTL:r,context:i,traceId:a,payload:o,requestConfig:s}){return this.request({url:t,method:`post`,headers:e,maxRedirects:n,cacheTTL:r,context:i,traceId:a,payload:o,requestConfig:s})}async requestStream({headers:e={},url:t,method:n=`get`,queryParams:r,maxRedirects:i=0,context:a,traceId:s,payload:c,httpsAgent:l,httpAgent:u,requestConfig:d,httpsAgentConfig:f}){try{let p=this.#_(t,r),m=this.#l(e),h=this.#m(c,e),g=P.getInstance(),_=((0,o.notMissing)(s)?await g.get(s):null)?.signal,v=await(await this.#e({redisClientConfig:this.#r,logger:this.#n,context:a,requestConfig:d,httpsAgentConfig:f})).request({headers:m,url:p,method:n,maxRedirects:i,responseType:`stream`,data:h,httpsAgent:l,httpAgent:u,signal:_});return{status:v.status,headers:this.#u(v.headers),stream:v.data,requestUrl:t}}catch(e){let r=e;r.url=(0,m.redactUrl)(t),this.#n?.warning({category:this.name,message:`Stream request error [${n?.toUpperCase()} ${r.url}]: ${r.message}.`,error:r});let i=this.#h(r);throw(0,o.notMissing)(i)?i:e}}#l(e){if(!e)return{};let t={};return Object.keys(e).forEach(n=>{t[n.toLowerCase()]=e[n]||``}),t}#u(e){if(!e)return{};let t={};return Object.keys(e).forEach(n=>{t[n]=e[n]||``}),t}#d(e){return e[`content-type`]===`application/x-www-form-urlencoded`}#f(e){return(0,o.isString)(e[`content-type`])?e[`content-type`]?.startsWith(`multipart/form-data`)??!1:!1}#p(e){return(0,o.isMissing)(e)||typeof e!=`object`||!e?!1:`pipe`in e&&typeof e.pipe==`function`}#m(e,t){if(!((0,o.isMissing)(e)||(0,o.isObject)(e)&&Object.keys(e).length===0))return this.#f(t)||this.#p(e)?e:this.#d(t)?h.default.stringify(e):e}#h(e){if((0,l.isAxiosError)(e)&&this.#i)return this.#i(e)}#g(e){return typeof e==`object`&&!!e&&`value`in e&&(typeof e.value==`string`||Array.isArray(e.value))}#_(e,t){if((0,o.isMissing)(t)||Object.keys(t).length===0)return e;let n={},r={},i={},a={};for(let[e,o]of Object.entries(t))if(this.#g(o)){let t=o.arrayFormat,s=o.value;t===`repeat`?r[e]=Array.isArray(s)?s:[s]:t===`brackets`?i[e]=Array.isArray(s)?s:[s]:t===`comma`?a[e]=Array.isArray(s)?s:[s]:n[e]=s}else n[e]=o;let s=[];Object.keys(n).length>0&&s.push(h.default.stringify(n)),Object.keys(r).length>0&&s.push(h.default.stringify(r,{arrayFormat:`repeat`})),Object.keys(i).length>0&&s.push(h.default.stringify(i,{arrayFormat:`brackets`})),Object.keys(a).length>0&&s.push(h.default.stringify(a,{arrayFormat:`comma`}));let c=s.join(`&`);return(0,o.notMissing)(c)?`${e}?${c}`:e}};const buildHttpClientInstance=(e,t,n)=>new HttpClient({redisClientConfig:e,logger:t,errorMappingFn:n});var HttpClientManager=class{static{this.httpClientInstance=null}static async getInstance({redisClientConfig:e,logger:t,errorMappingFn:n,getHttpClient:r=buildHttpClientInstance}){return this.httpClientInstance??=r(e,t,n),this.httpClientInstance}static resetInstance(){this.httpClientInstance=null}};const _n=[`get`,`post`,`put`,`delete`,`patch`],vn={[k.rPush]:`
114
114
  local queueLength = redis.call('RPUSH', KEYS[1], ARGV[1])
115
115
 
116
116
  redis.call('PEXPIRE', KEYS[1], ARGV[2])
package/dist/index.d.cts CHANGED
@@ -1,5 +1,5 @@
1
1
  import * as redis from "redis";
2
- import { AxiosError, AxiosInstance, AxiosInterceptorOptions, AxiosResponse, CreateAxiosDefaults, InternalAxiosRequestConfig } from "axios";
2
+ import { AxiosError, AxiosInstance, AxiosInterceptorManager, AxiosInterceptorOptions, AxiosResponse, CreateAxiosDefaults, InternalAxiosRequestConfig } from "axios";
3
3
  import http, { AgentOptions } from "node:http";
4
4
  import https from "node:https";
5
5
  import { Readable } from "node:stream";
@@ -378,6 +378,7 @@ type AxiosErrorWithRequestMetadata = AxiosErrorWithRetryCount & {
378
378
  type RequestInterceptor = (value: InternalAxiosRequestConfig<unknown>) => InternalAxiosRequestConfig<unknown> | Promise<InternalAxiosRequestConfig<unknown>>;
379
379
  type ResponseInterceptor = (value: AxiosResponse<unknown, unknown>) => AxiosResponse<unknown, unknown> | Promise<AxiosResponse<unknown, unknown>>;
380
380
  type ErrorInterceptor = (error: unknown) => unknown;
381
+ type OnFulfilledInterceptors = RequestInterceptor | ResponseInterceptor | null;
381
382
  type Interceptor = RequestInterceptor | ResponseInterceptor | ErrorInterceptor | null;
382
383
  interface InterceptorDependencies {
383
384
  axiosInstance?: AxiosInstance;
@@ -407,8 +408,9 @@ type RequestParameter = {
407
408
  };
408
409
  //#endregion
409
410
  //#region src/httpClient/types.d.ts
411
+ type HttpHeader = string | string[];
410
412
  type HttpHeaders = {
411
- [key: string]: string;
413
+ [key: string]: HttpHeader;
412
414
  };
413
415
  type HttpQueryParamValue = {
414
416
  value: string | string[];
@@ -419,7 +421,7 @@ type HttpQueryParams = {
419
421
  };
420
422
  declare const HttpMethods: readonly ["get", "post", "put", "delete", "patch"];
421
423
  type HttpMethod = (typeof HttpMethods)[number];
422
- type HttpResponse<T = any> = {
424
+ type HttpResponse<T = any, P = any> = {
423
425
  data: T;
424
426
  status: number;
425
427
  headers: HttpHeaders;
@@ -427,6 +429,7 @@ type HttpResponse<T = any> = {
427
429
  responseType?: string;
428
430
  responseTime?: Date;
429
431
  message?: string;
432
+ body?: P;
430
433
  };
431
434
  type StreamHttpResponse = {
432
435
  status: number;
@@ -813,6 +816,8 @@ declare class HttpClientManager {
813
816
  }
814
817
  //#endregion
815
818
  //#region src/httpTransportFactory/types.d.ts
819
+ type RequestInterceptorTuple = [RequestInterceptor | null, ErrorInterceptor | null, AxiosInterceptorOptions | undefined];
820
+ type ResponseInterceptorTuple = [ResponseInterceptor | null, ErrorInterceptor | null];
816
821
  type InterceptorDependencyInjector<T extends Interceptor> = (dependencies: InterceptorDependencies) => T;
817
822
  type RequestInterceptorConfig = {
818
823
  onFulfilled: InterceptorDependencyInjector<RequestInterceptor> | RequestInterceptor | null;
@@ -837,6 +842,10 @@ type HttpTransportInstanceConfig = {
837
842
  concurrencyManager?: ConcurrencyManager;
838
843
  rateLimitManager?: RateLimitManager;
839
844
  };
845
+ interface InterceptorManager<V> extends AxiosInterceptorManager<V> {
846
+ forEach(fn: (handler: any) => unknown): void;
847
+ handlers: [];
848
+ }
840
849
  //#endregion
841
850
  //#region src/httpTransportFactory/index.d.ts
842
851
  declare class HttpTransportFactory {
@@ -1044,4 +1053,4 @@ type LockEntry = {
1044
1053
  unlock: Unlock;
1045
1054
  };
1046
1055
  //#endregion
1047
- export { type AxiosErrorWithRequestMetadata, type AxiosErrorWithRetryCount, CUSTOM_ERROR_CONFIG_SCHEMA, type ConcurrencyConfig, ConcurrencyManager, type CustomErrorConfig, type ErrorMappingFn, EventClient, HttpClient, HttpClientManager, HttpErrorMessages, type HttpHeaders, type HttpMethod, HttpMethods, type HttpParameters, type HttpQueryParamValue, type HttpQueryParams, type HttpResponse, HttpResponseError, HttpTransportFactory, type ICacheClient, type IHttpClient, type IRequestClient, type InitializedTransportManagers, InstanceManager, type Lock, type LockEntry, LockManager, MemoryStore, type MemoryStoreConfig, type PruneCount, type PubSubListener, type QueryArrayFormat, QueryArrayFormats, QueueManager, type RateLimitConfig, RateLimitManager, RedisClient, type RedisClientConfig, type RedisClientType, RequestClientFactory, type RequestConfig, type RequestContext, type RequestParameter, RequestParameterLocations, ScriptManager, type StreamHttpResponse, SubscriptionManager, type TransportInitializationOptions, type Unlock, buildHttpClientInstance, convertError, createAuthorizationHeaders, getRetryAfterWaitTime, getTransportInstance, getTransportManagers, initializeTransportSystem, isFailedStatusCode, isInfoStatusCode, isSuccessStatusCode, isTransportSystemReady, parseRequestParameters, serializeHttpResponseError, shutdownTransportSystem, superNormalizeHeaders, translateCustomError };
1056
+ export { type AxiosErrorWithRequestMetadata, type AxiosErrorWithRetryCount, CUSTOM_ERROR_CONFIG_SCHEMA, type ConcurrencyConfig, ConcurrencyManager, type CustomErrorConfig, type ErrorInterceptor, type ErrorMappingFn, EventClient, HttpClient, HttpClientManager, HttpErrorMessages, type HttpHeader, type HttpHeaders, type HttpMethod, HttpMethods, type HttpParameters, type HttpQueryParamValue, type HttpQueryParams, type HttpResponse, HttpResponseError, HttpTransportFactory, type HttpTransportInstanceConfig, type ICacheClient, type IHttpClient, type IRequestClient, type InitializedTransportManagers, InstanceManager, type Interceptor, type InterceptorConfigs, type InterceptorDependencies, type InterceptorDependencyInjector, type InterceptorManager, type Lock, type LockEntry, LockManager, MemoryStore, type MemoryStoreConfig, type OnFulfilledInterceptors, type PruneCount, type PubSubListener, type QueryArrayFormat, QueryArrayFormats, QueueManager, type RateLimitConfig, RateLimitManager, RedisClient, type RedisClientConfig, type RedisClientType, RequestClientFactory, type RequestConfig, type RequestContext, type RequestInterceptor, type RequestInterceptorConfig, type RequestInterceptorTuple, type RequestParameter, RequestParameterLocations, type ResponseInterceptor, type ResponseInterceptorConfig, type ResponseInterceptorTuple, ScriptManager, type StreamHttpResponse, SubscriptionManager, type TransportInitializationOptions, type Unlock, buildHttpClientInstance, convertError, createAuthorizationHeaders, getRetryAfterWaitTime, getTransportInstance, getTransportManagers, initializeTransportSystem, isFailedStatusCode, isInfoStatusCode, isSuccessStatusCode, isTransportSystemReady, parseRequestParameters, serializeHttpResponseError, shutdownTransportSystem, superNormalizeHeaders, translateCustomError };
package/dist/index.d.mts CHANGED
@@ -1,7 +1,7 @@
1
1
  import { n as __name } from "./chunk-hhuvQGXm.mjs";
2
2
  import { z } from "@stackone/utils";
3
3
  import * as redis from "redis";
4
- import { AxiosError, AxiosInstance, AxiosInterceptorOptions, AxiosResponse, CreateAxiosDefaults, InternalAxiosRequestConfig } from "axios";
4
+ import { AxiosError, AxiosInstance, AxiosInterceptorManager, AxiosInterceptorOptions, AxiosResponse, CreateAxiosDefaults, InternalAxiosRequestConfig } from "axios";
5
5
  import https from "node:https";
6
6
  import http, { AgentOptions } from "node:http";
7
7
  import { Readable } from "node:stream";
@@ -377,6 +377,7 @@ type AxiosErrorWithRequestMetadata = AxiosErrorWithRetryCount & {
377
377
  type RequestInterceptor = (value: InternalAxiosRequestConfig<unknown>) => InternalAxiosRequestConfig<unknown> | Promise<InternalAxiosRequestConfig<unknown>>;
378
378
  type ResponseInterceptor = (value: AxiosResponse<unknown, unknown>) => AxiosResponse<unknown, unknown> | Promise<AxiosResponse<unknown, unknown>>;
379
379
  type ErrorInterceptor = (error: unknown) => unknown;
380
+ type OnFulfilledInterceptors = RequestInterceptor | ResponseInterceptor | null;
380
381
  type Interceptor = RequestInterceptor | ResponseInterceptor | ErrorInterceptor | null;
381
382
  interface InterceptorDependencies {
382
383
  axiosInstance?: AxiosInstance;
@@ -406,8 +407,9 @@ type RequestParameter = {
406
407
  };
407
408
  //#endregion
408
409
  //#region src/httpClient/types.d.ts
410
+ type HttpHeader = string | string[];
409
411
  type HttpHeaders = {
410
- [key: string]: string;
412
+ [key: string]: HttpHeader;
411
413
  };
412
414
  type HttpQueryParamValue = {
413
415
  value: string | string[];
@@ -418,7 +420,7 @@ type HttpQueryParams = {
418
420
  };
419
421
  declare const HttpMethods: readonly ["get", "post", "put", "delete", "patch"];
420
422
  type HttpMethod = (typeof HttpMethods)[number];
421
- type HttpResponse<T = any> = {
423
+ type HttpResponse<T = any, P = any> = {
422
424
  data: T;
423
425
  status: number;
424
426
  headers: HttpHeaders;
@@ -426,6 +428,7 @@ type HttpResponse<T = any> = {
426
428
  responseType?: string;
427
429
  responseTime?: Date;
428
430
  message?: string;
431
+ body?: P;
429
432
  };
430
433
  type StreamHttpResponse = {
431
434
  status: number;
@@ -812,6 +815,8 @@ declare class HttpClientManager {
812
815
  }
813
816
  //#endregion
814
817
  //#region src/httpTransportFactory/types.d.ts
818
+ type RequestInterceptorTuple = [RequestInterceptor | null, ErrorInterceptor | null, AxiosInterceptorOptions | undefined];
819
+ type ResponseInterceptorTuple = [ResponseInterceptor | null, ErrorInterceptor | null];
815
820
  type InterceptorDependencyInjector<T extends Interceptor> = (dependencies: InterceptorDependencies) => T;
816
821
  type RequestInterceptorConfig = {
817
822
  onFulfilled: InterceptorDependencyInjector<RequestInterceptor> | RequestInterceptor | null;
@@ -836,6 +841,10 @@ type HttpTransportInstanceConfig = {
836
841
  concurrencyManager?: ConcurrencyManager;
837
842
  rateLimitManager?: RateLimitManager;
838
843
  };
844
+ interface InterceptorManager<V> extends AxiosInterceptorManager<V> {
845
+ forEach(fn: (handler: any) => unknown): void;
846
+ handlers: [];
847
+ }
839
848
  //#endregion
840
849
  //#region src/httpTransportFactory/index.d.ts
841
850
  declare class HttpTransportFactory {
@@ -1043,4 +1052,4 @@ type LockEntry = {
1043
1052
  unlock: Unlock;
1044
1053
  };
1045
1054
  //#endregion
1046
- export { type AxiosErrorWithRequestMetadata, type AxiosErrorWithRetryCount, CUSTOM_ERROR_CONFIG_SCHEMA, type ConcurrencyConfig, ConcurrencyManager, type CustomErrorConfig, type ErrorMappingFn, EventClient, HttpClient, HttpClientManager, HttpErrorMessages, type HttpHeaders, type HttpMethod, HttpMethods, type HttpParameters, type HttpQueryParamValue, type HttpQueryParams, type HttpResponse, HttpResponseError, HttpTransportFactory, type ICacheClient, type IHttpClient, type IRequestClient, type InitializedTransportManagers, InstanceManager, type Lock, type LockEntry, LockManager, MemoryStore, type MemoryStoreConfig, type PruneCount, type PubSubListener, type QueryArrayFormat, QueryArrayFormats, QueueManager, type RateLimitConfig, RateLimitManager, RedisClient, type RedisClientConfig, type RedisClientType, RequestClientFactory, type RequestConfig, type RequestContext, type RequestParameter, RequestParameterLocations, ScriptManager, type StreamHttpResponse, SubscriptionManager, type TransportInitializationOptions, type Unlock, buildHttpClientInstance, convertError, createAuthorizationHeaders, getRetryAfterWaitTime, getTransportInstance, getTransportManagers, initializeTransportSystem, isFailedStatusCode, isInfoStatusCode, isSuccessStatusCode, isTransportSystemReady, parseRequestParameters, serializeHttpResponseError, shutdownTransportSystem, superNormalizeHeaders, translateCustomError };
1055
+ export { type AxiosErrorWithRequestMetadata, type AxiosErrorWithRetryCount, CUSTOM_ERROR_CONFIG_SCHEMA, type ConcurrencyConfig, ConcurrencyManager, type CustomErrorConfig, type ErrorInterceptor, type ErrorMappingFn, EventClient, HttpClient, HttpClientManager, HttpErrorMessages, type HttpHeader, type HttpHeaders, type HttpMethod, HttpMethods, type HttpParameters, type HttpQueryParamValue, type HttpQueryParams, type HttpResponse, HttpResponseError, HttpTransportFactory, type HttpTransportInstanceConfig, type ICacheClient, type IHttpClient, type IRequestClient, type InitializedTransportManagers, InstanceManager, type Interceptor, type InterceptorConfigs, type InterceptorDependencies, type InterceptorDependencyInjector, type InterceptorManager, type Lock, type LockEntry, LockManager, MemoryStore, type MemoryStoreConfig, type OnFulfilledInterceptors, type PruneCount, type PubSubListener, type QueryArrayFormat, QueryArrayFormats, QueueManager, type RateLimitConfig, RateLimitManager, RedisClient, type RedisClientConfig, type RedisClientType, RequestClientFactory, type RequestConfig, type RequestContext, type RequestInterceptor, type RequestInterceptorConfig, type RequestInterceptorTuple, type RequestParameter, RequestParameterLocations, type ResponseInterceptor, type ResponseInterceptorConfig, type ResponseInterceptorTuple, ScriptManager, type StreamHttpResponse, SubscriptionManager, type TransportInitializationOptions, type Unlock, buildHttpClientInstance, convertError, createAuthorizationHeaders, getRetryAfterWaitTime, getTransportInstance, getTransportManagers, initializeTransportSystem, isFailedStatusCode, isInfoStatusCode, isSuccessStatusCode, isTransportSystemReady, parseRequestParameters, serializeHttpResponseError, shutdownTransportSystem, superNormalizeHeaders, translateCustomError };
package/dist/index.mjs CHANGED
@@ -110,7 +110,7 @@ Example:
110
110
  * Copyright (c) 2023, Robert Eisele (robert@raw.org)
111
111
  * Dual licensed under the MIT or GPL Version 2 licenses.
112
112
  **/
113
- (function(r){var i=2e3,a={s:1,n:0,d:1};function assign(e,t){if(isNaN(e=parseInt(e,10)))throw InvalidParameter();return e*t}function newFraction(e,t){if(t===0)throw DivisionByZero();var n=Object.create(Fraction$2.prototype);n.s=e<0?-1:1,e=e<0?-e:e;var r=gcd(e,t);return n.n=e/r,n.d=t/r,n}function factorize(e){for(var t={},n=e,r=2,i=4;i<=n;){for(;n%r===0;)n/=r,t[r]=(t[r]||0)+1;i+=1+2*r++}return n===e?t[e]=(t[e]||0)+1:n>1&&(t[n]=(t[n]||0)+1),t}var o=e(function(e,t){var n=0,r=1,i=1,o=0,s=0,c=0,l=1,u=1,d=0,f=1,p=1,m=1,h=1e7,g;if(e!=null)if(t!==void 0){if(n=e,r=t,i=n*r,n%1!=0||r%1!=0)throw NonIntegerParameter()}else switch(typeof e){case`object`:if(`d`in e&&`n`in e)n=e.n,r=e.d,`s`in e&&(n*=e.s);else if(0 in e)n=e[0],1 in e&&(r=e[1]);else throw InvalidParameter();i=n*r;break;case`number`:if(e<0&&(i=e,e=-e),e%1==0)n=e;else if(e>0){for(e>=1&&(u=10**Math.floor(1+Math.log(e)/Math.LN10),e/=u);f<=h&&m<=h;)if(g=(d+p)/(f+m),e===g){f+m<=h?(n=d+p,r=f+m):m>f?(n=p,r=m):(n=d,r=f);break}else e>g?(d+=p,f+=m):(p+=d,m+=f),f>h?(n=p,r=m):(n=d,r=f);n*=u}else (isNaN(e)||isNaN(t))&&(r=n=NaN);break;case`string`:if(f=e.match(/\d+|./g),f===null)throw InvalidParameter();if(f[d]===`-`?(i=-1,d++):f[d]===`+`&&d++,f.length===d+1?s=assign(f[d++],i):f[d+1]===`.`||f[d]===`.`?(f[d]!==`.`&&(o=assign(f[d++],i)),d++,(d+1===f.length||f[d+1]===`(`&&f[d+3]===`)`||f[d+1]===`'`&&f[d+3]===`'`)&&(s=assign(f[d],i),l=10**f[d].length,d++),(f[d]===`(`&&f[d+2]===`)`||f[d]===`'`&&f[d+2]===`'`)&&(c=assign(f[d+1],i),u=10**f[d+1].length-1,d+=3)):f[d+1]===`/`||f[d+1]===`:`?(s=assign(f[d],i),l=assign(f[d+2],1),d+=3):f[d+3]===`/`&&f[d+1]===` `&&(o=assign(f[d],i),s=assign(f[d+2],i),l=assign(f[d+4],1),d+=5),f.length<=d){r=l*u,i=n=c+r*o+u*s;break}default:throw InvalidParameter()}if(r===0)throw DivisionByZero();a.s=i<0?-1:1,a.n=Math.abs(n),a.d=Math.abs(r)},`parse`);function modpow(e,t,n){for(var r=1;t>0;e=e*e%n,t>>=1)t&1&&(r=r*e%n);return r}function cycleLen(e,t){for(;t%2==0;t/=2);for(;t%5==0;t/=5);if(t===1)return 0;for(var n=10%t,r=1;n!==1;r++)if(n=n*10%t,r>i)return 0;return r}function cycleStart(e,t,n){for(var r=1,i=modpow(10,n,t),a=0;a<300;a++){if(r===i)return a;r=r*10%t,i=i*10%t}return 0}function gcd(e,t){if(!e)return t;if(!t)return e;for(;;){if(e%=t,!e)return t;if(t%=e,!t)return e}}function Fraction$2(e,t){if(o(e,t),this instanceof Fraction$2)e=gcd(a.d,a.n),this.s=a.s,this.n=a.n/e,this.d=a.d/e;else return newFraction(a.s*a.n,a.d)}e(Fraction$2,`Fraction`);var DivisionByZero=function(){return Error(`Division by Zero`)},InvalidParameter=function(){return Error(`Invalid argument`)},NonIntegerParameter=function(){return Error(`Parameters must be integer`)};Fraction$2.prototype={s:1,n:0,d:1,abs:function(){return newFraction(this.n,this.d)},neg:function(){return newFraction(-this.s*this.n,this.d)},add:function(e,t){return o(e,t),newFraction(this.s*this.n*a.d+a.s*this.d*a.n,this.d*a.d)},sub:function(e,t){return o(e,t),newFraction(this.s*this.n*a.d-a.s*this.d*a.n,this.d*a.d)},mul:function(e,t){return o(e,t),newFraction(this.s*a.s*this.n*a.n,this.d*a.d)},div:function(e,t){return o(e,t),newFraction(this.s*a.s*this.n*a.d,this.d*a.n)},clone:function(){return newFraction(this.s*this.n,this.d)},mod:function(e,t){if(isNaN(this.n)||isNaN(this.d))return new Fraction$2(NaN);if(e===void 0)return newFraction(this.s*this.n%this.d,1);if(o(e,t),a.n===0&&this.d===0)throw DivisionByZero();return newFraction(this.s*(a.d*this.n)%(a.n*this.d),a.d*this.d)},gcd:function(e,t){return o(e,t),newFraction(gcd(a.n,this.n)*gcd(a.d,this.d),a.d*this.d)},lcm:function(e,t){return o(e,t),a.n===0&&this.n===0?newFraction(0,1):newFraction(a.n*this.n,gcd(a.n,this.n)*gcd(a.d,this.d))},ceil:function(e){return e=10**(e||0),isNaN(this.n)||isNaN(this.d)?new Fraction$2(NaN):newFraction(Math.ceil(e*this.s*this.n/this.d),e)},floor:function(e){return e=10**(e||0),isNaN(this.n)||isNaN(this.d)?new Fraction$2(NaN):newFraction(Math.floor(e*this.s*this.n/this.d),e)},round:function(e){return e=10**(e||0),isNaN(this.n)||isNaN(this.d)?new Fraction$2(NaN):newFraction(Math.round(e*this.s*this.n/this.d),e)},inverse:function(){return newFraction(this.s*this.d,this.n)},pow:function(e,t){if(o(e,t),a.d===1)return a.s<0?newFraction((this.s*this.d)**+a.n,this.n**+a.n):newFraction((this.s*this.n)**+a.n,this.d**+a.n);if(this.s<0)return null;var n=factorize(this.n),r=factorize(this.d),i=1,s=1;for(var c in n)if(c!==`1`){if(c===`0`){i=0;break}if(n[c]*=a.n,n[c]%a.d===0)n[c]/=a.d;else return null;i*=c**+n[c]}for(var c in r)if(c!==`1`){if(r[c]*=a.n,r[c]%a.d===0)r[c]/=a.d;else return null;s*=c**+r[c]}return a.s<0?newFraction(s,i):newFraction(i,s)},equals:function(e,t){return o(e,t),this.s*this.n*a.d===a.s*a.n*this.d},compare:function(e,t){o(e,t);var n=this.s*this.n*a.d-a.s*a.n*this.d;return(0<n)-(n<0)},simplify:function(e){if(isNaN(this.n)||isNaN(this.d))return this;e||=.001;for(var t=this.abs(),n=t.toContinued(),r=1;r<n.length;r++){for(var i=newFraction(n[r-1],1),a=r-2;a>=0;a--)i=i.inverse().add(n[a]);if(Math.abs(i.sub(t).valueOf())<e)return i.mul(this.s)}return this},divisible:function(e,t){return o(e,t),!(!(a.n*this.d)||this.n*a.d%(a.n*this.d))},valueOf:function(){return this.s*this.n/this.d},toFraction:function(e){var t,n=``,r=this.n,i=this.d;return this.s<0&&(n+=`-`),i===1?n+=r:(e&&(t=Math.floor(r/i))>0&&(n+=t,n+=` `,r%=i),n+=r,n+=`/`,n+=i),n},toLatex:function(e){var t,n=``,r=this.n,i=this.d;return this.s<0&&(n+=`-`),i===1?n+=r:(e&&(t=Math.floor(r/i))>0&&(n+=t,r%=i),n+=`\\frac{`,n+=r,n+=`}{`,n+=i,n+=`}`),n},toContinued:function(){var e,t=this.n,n=this.d,r=[];if(isNaN(t)||isNaN(n))return r;do r.push(Math.floor(t/n)),e=t%n,t=n,n=e;while(t!==1);return r},toString:function(e){var t=this.n,n=this.d;if(isNaN(t)||isNaN(n))return`NaN`;e||=15;var r=cycleLen(t,n),i=cycleStart(t,n,r),a=this.s<0?`-`:``;if(a+=t/n|0,t%=n,t*=10,t&&(a+=`.`),r){for(var o=i;o--;)a+=t/n|0,t%=n,t*=10;a+=`(`;for(var o=r;o--;)a+=t/n|0,t%=n,t*=10;a+=`)`}else for(var o=e;t&&o--;)a+=t/n|0,t%=n,t*=10;return a}},typeof t==`object`?(Object.defineProperty(Fraction$2,`__esModule`,{value:!0}),Fraction$2.default=Fraction$2,Fraction$2.Fraction=Fraction$2,n.exports=Fraction$2):r.Fraction=Fraction$2})(t)}))(),1),$e=factory(`Fraction`,[],()=>(Object.defineProperty($.default,`name`,{value:`Fraction`}),$.default.prototype.constructor=$.default,$.default.prototype.type=`Fraction`,$.default.prototype.isFraction=!0,$.default.prototype.toJSON=function(){return{mathjs:`Fraction`,n:this.s*this.n,d:this.d}},$.default.fromJSON=function(e){return new $.default(e)},$.default),{isClass:!0}),et=factory(`Matrix`,[],()=>{function Matrix$1(){if(!(this instanceof Matrix$1))throw SyntaxError(`Constructor must be called with the new operator`)}return e(Matrix$1,`Matrix`),Matrix$1.prototype.type=`Matrix`,Matrix$1.prototype.isMatrix=!0,Matrix$1.prototype.storage=function(){throw Error(`Cannot invoke storage on a Matrix interface`)},Matrix$1.prototype.datatype=function(){throw Error(`Cannot invoke datatype on a Matrix interface`)},Matrix$1.prototype.create=function(e,t){throw Error(`Cannot invoke create on a Matrix interface`)},Matrix$1.prototype.subset=function(e,t,n){throw Error(`Cannot invoke subset on a Matrix interface`)},Matrix$1.prototype.get=function(e){throw Error(`Cannot invoke get on a Matrix interface`)},Matrix$1.prototype.set=function(e,t,n){throw Error(`Cannot invoke set on a Matrix interface`)},Matrix$1.prototype.resize=function(e,t){throw Error(`Cannot invoke resize on a Matrix interface`)},Matrix$1.prototype.reshape=function(e,t){throw Error(`Cannot invoke reshape on a Matrix interface`)},Matrix$1.prototype.clone=function(){throw Error(`Cannot invoke clone on a Matrix interface`)},Matrix$1.prototype.size=function(){throw Error(`Cannot invoke size on a Matrix interface`)},Matrix$1.prototype.map=function(e,t){throw Error(`Cannot invoke map on a Matrix interface`)},Matrix$1.prototype.forEach=function(e){throw Error(`Cannot invoke forEach on a Matrix interface`)},Matrix$1.prototype[Symbol.iterator]=function(){throw Error(`Cannot iterate a Matrix interface`)},Matrix$1.prototype.toArray=function(){throw Error(`Cannot invoke toArray on a Matrix interface`)},Matrix$1.prototype.valueOf=function(){throw Error(`Cannot invoke valueOf on a Matrix interface`)},Matrix$1.prototype.format=function(e){throw Error(`Cannot invoke format on a Matrix interface`)},Matrix$1.prototype.toString=function(){throw Error(`Cannot invoke toString on a Matrix interface`)},Matrix$1},{isClass:!0});function maxArgumentCount(e){return Object.keys(e.signatures||{}).reduce(function(e,t){var n=(t.match(/,/g)||[]).length+1;return Math.max(e,n)},-1)}var tt=factory(`DenseMatrix`,[`Matrix`],t=>{var{Matrix:n}=t;function DenseMatrix$1(e,t){if(!(this instanceof DenseMatrix$1))throw SyntaxError(`Constructor must be called with the new operator`);if(t&&!isString$1(t))throw Error(`Invalid datatype: `+t);if(isMatrix(e))e.type===`DenseMatrix`?(this._data=clone$2(e._data),this._size=clone$2(e._size),this._datatype=t||e._datatype):(this._data=e.toArray(),this._size=e.size(),this._datatype=t||e._datatype);else if(e&&L(e.data)&&L(e.size))this._data=e.data,this._size=e.size,validate$1(this._data,this._size),this._datatype=t||e.datatype;else if(L(e))this._data=preprocess(e),this._size=arraySize(this._data),validate$1(this._data,this._size),this._datatype=t;else if(e)throw TypeError(`Unsupported type of data (`+typeOf(e)+`)`);else this._data=[],this._size=[0],this._datatype=t}e(DenseMatrix$1,`DenseMatrix`),DenseMatrix$1.prototype=new n,DenseMatrix$1.prototype.createDenseMatrix=function(e,t){return new DenseMatrix$1(e,t)},Object.defineProperty(DenseMatrix$1,`name`,{value:`DenseMatrix`}),DenseMatrix$1.prototype.constructor=DenseMatrix$1,DenseMatrix$1.prototype.type=`DenseMatrix`,DenseMatrix$1.prototype.isDenseMatrix=!0,DenseMatrix$1.prototype.getDataType=function(){return getArrayDataType(this._data,typeOf)},DenseMatrix$1.prototype.storage=function(){return`dense`},DenseMatrix$1.prototype.datatype=function(){return this._datatype},DenseMatrix$1.prototype.create=function(e,t){return new DenseMatrix$1(e,t)},DenseMatrix$1.prototype.subset=function(e,t,n){switch(arguments.length){case 1:return _get(this,e);case 2:case 3:return _set(this,e,t,n);default:throw SyntaxError(`Wrong number of arguments`)}},DenseMatrix$1.prototype.get=function(e){if(!L(e))throw TypeError(`Array expected`);if(e.length!==this._size.length)throw new DimensionError(e.length,this._size.length);for(var t=0;t<e.length;t++)validateIndex(e[t],this._size[t]);for(var n=this._data,r=0,i=e.length;r<i;r++){var a=e[r];validateIndex(a,n.length),n=n[a]}return n},DenseMatrix$1.prototype.set=function(e,t,n){if(!L(e))throw TypeError(`Array expected`);if(e.length<this._size.length)throw new DimensionError(e.length,this._size.length,`<`);var r,i,a,o=e.map(function(e){return e+1});_fit(this,o,n);var s=this._data;for(r=0,i=e.length-1;r<i;r++)a=e[r],validateIndex(a,s.length),s=s[a];return a=e[e.length-1],validateIndex(a,s.length),s[a]=t,this};function _get(e,t){if(!isIndex(t))throw TypeError(`Invalid index`);if(t.isScalar())return e.get(t.min());var n=t.size();if(n.length!==e._size.length)throw new DimensionError(n.length,e._size.length);for(var r=t.min(),i=t.max(),a=0,o=e._size.length;a<o;a++)validateIndex(r[a],e._size[a]),validateIndex(i[a],e._size[a]);return new DenseMatrix$1(_getSubmatrix(e._data,t,n.length,0),e._datatype)}function _getSubmatrix(e,t,n,r){var i=r===n-1,a=t.dimension(r);return i?a.map(function(t){return validateIndex(t,e.length),e[t]}).valueOf():a.map(function(i){validateIndex(i,e.length);var a=e[i];return _getSubmatrix(a,t,n,r+1)}).valueOf()}function _set(e,t,n,r){if(!t||t.isIndex!==!0)throw TypeError(`Invalid index`);var i=t.size(),a=t.isScalar(),o;if(isMatrix(n)?(o=n.size(),n=n.valueOf()):o=arraySize(n),a){if(o.length!==0)throw TypeError(`Scalar expected`);e.set(t.min(),n,r)}else{if(!deepStrictEqual(o,i))try{n=o.length===0?broadcastTo([n],i):broadcastTo(n,i),o=arraySize(n)}catch{}if(i.length<e._size.length)throw new DimensionError(i.length,e._size.length,`<`);if(o.length<i.length){for(var s=0,c=0;i[s]===1&&o[s]===1;)s++;for(;i[s]===1;)c++,s++;n=unsqueeze(n,i.length,c,o)}if(!deepStrictEqual(i,o))throw new DimensionError(i,o,`>`);_fit(e,t.max().map(function(e){return e+1}),r);var l=i.length;_setSubmatrix(e._data,t,n,l,0)}return e}function _setSubmatrix(e,t,n,r,i){var a=i===r-1,o=t.dimension(i);a?o.forEach(function(t,r){validateIndex(t),e[t]=n[r[0]]}):o.forEach(function(a,o){validateIndex(a),_setSubmatrix(e[a],t,n[o[0]],r,i+1)})}DenseMatrix$1.prototype.resize=function(e,t,n){if(!isCollection(e))throw TypeError(`Array or Matrix expected`);var r=e.valueOf().map(e=>Array.isArray(e)&&e.length===1?e[0]:e);return _resize$1(n?this.clone():this,r,t)};function _resize$1(e,t,n){if(t.length===0){for(var r=e._data;L(r);)r=r[0];return r}return e._size=t.slice(0),e._data=resize(e._data,e._size,n),e}e(_resize$1,`_resize`),DenseMatrix$1.prototype.reshape=function(e,t){var n=t?this.clone():this;return n._data=reshape(n._data,e),n._size=processSizesWildcard(e,n._size.reduce((e,t)=>e*t)),n};function _fit(e,t,n){for(var r=e._size.slice(0),i=!1;r.length<t.length;)r.push(0),i=!0;for(var a=0,o=t.length;a<o;a++)t[a]>r[a]&&(r[a]=t[a],i=!0);i&&_resize$1(e,r,n)}DenseMatrix$1.prototype.clone=function(){return new DenseMatrix$1({data:clone$2(this._data),size:clone$2(this._size),datatype:this._datatype})},DenseMatrix$1.prototype.size=function(){return this._size.slice(0)},DenseMatrix$1.prototype.map=function(e){var t=this,n=maxArgumentCount(e),r=function recurse(r,i){return L(r)?r.map(function(e,t){return recurse(e,i.concat(t))}):n===1?e(r):n===2?e(r,i):e(r,i,t)}(this._data,[]);return new DenseMatrix$1(r,this._datatype===void 0?void 0:getArrayDataType(r,typeOf))},DenseMatrix$1.prototype.forEach=function(e){var t=this;(function recurse(n,r){L(n)?n.forEach(function(e,t){recurse(e,r.concat(t))}):e(n,r,t)})(this._data,[])},DenseMatrix$1.prototype[Symbol.iterator]=function*(){yield*function*recurse(e,t){if(L(e))for(var n=0;n<e.length;n++)yield*recurse(e[n],t.concat(n));else yield{value:e,index:t}}(this._data,[])},DenseMatrix$1.prototype.rows=function(){var e=[];if(this.size().length!==2)throw TypeError(`Rows can only be returned for a 2D matrix.`);for(var t of this._data)e.push(new DenseMatrix$1([t],this._datatype));return e},DenseMatrix$1.prototype.columns=function(){var e=this,t=[],n=this.size();if(n.length!==2)throw TypeError(`Rows can only be returned for a 2D matrix.`);for(var r=this._data,i=function _loop$1(n){var i=r.map(e=>[e[n]]);t.push(new DenseMatrix$1(i,e._datatype))},a=0;a<n[1];a++)i(a);return t},DenseMatrix$1.prototype.toArray=function(){return clone$2(this._data)},DenseMatrix$1.prototype.valueOf=function(){return this._data},DenseMatrix$1.prototype.format=function(e){return format(this._data,e)},DenseMatrix$1.prototype.toString=function(){return format(this._data)},DenseMatrix$1.prototype.toJSON=function(){return{mathjs:`DenseMatrix`,data:this._data,size:this._size,datatype:this._datatype}},DenseMatrix$1.prototype.diagonal=function(e){if(e){if(isBigNumber(e)&&(e=e.toNumber()),!isNumber$1(e)||!isInteger(e))throw TypeError(`The parameter k must be an integer number`)}else e=0;for(var t=e>0?e:0,n=e<0?-e:0,r=this._size[0],i=this._size[1],a=Math.min(r-n,i-t),o=[],s=0;s<a;s++)o[s]=this._data[s+n][s+t];return new DenseMatrix$1({data:o,size:[a],datatype:this._datatype})},DenseMatrix$1.diagonal=function(e,t,n,r){if(!L(e))throw TypeError(`Array expected, size parameter`);if(e.length!==2)throw Error(`Only two dimensions matrix are supported`);if(e=e.map(function(e){if(isBigNumber(e)&&(e=e.toNumber()),!isNumber$1(e)||!isInteger(e)||e<1)throw Error(`Size values must be positive integers`);return e}),n){if(isBigNumber(n)&&(n=n.toNumber()),!isNumber$1(n)||!isInteger(n))throw TypeError(`The parameter k must be an integer number`)}else n=0;var i=n>0?n:0,a=n<0?-n:0,o=e[0],s=e[1],c=Math.min(o-a,s-i),l;if(L(t)){if(t.length!==c)throw Error(`Invalid value array length`);l=function _value$1(e){return t[e]}}else if(isMatrix(t)){var u=t.size();if(u.length!==1||u[0]!==c)throw Error(`Invalid matrix length`);l=function _value$1(e){return t.get([e])}}else l=function _value$1(){return t};r||=isBigNumber(l(0))?l(0).mul(0):0;var d=[];if(e.length>0){d=resize(d,e,r);for(var f=0;f<c;f++)d[f+a][f+i]=l(f)}return new DenseMatrix$1({data:d,size:[o,s]})},DenseMatrix$1.fromJSON=function(e){return new DenseMatrix$1(e)},DenseMatrix$1.prototype.swapRows=function(e,t){if(!isNumber$1(e)||!isInteger(e)||!isNumber$1(t)||!isInteger(t))throw Error(`Row index must be positive integers`);if(this._size.length!==2)throw Error(`Only two dimensional matrix is supported`);return validateIndex(e,this._size[0]),validateIndex(t,this._size[0]),DenseMatrix$1._swapRows(e,t,this._data),this},DenseMatrix$1._swapRows=function(e,t,n){var r=n[e];n[e]=n[t],n[t]=r};function preprocess(e){return isMatrix(e)?preprocess(e.valueOf()):L(e)?e.map(preprocess):e}return DenseMatrix$1},{isClass:!0});function deepMap(e,t,n){return e&&typeof e.map==`function`?e.map(function(e){return deepMap(e,t,n)}):t(e)}var nt=`isNumeric`,rt=factory(nt,[`typed`],e=>{var{typed:t}=e;return t(nt,{"number | BigNumber | Fraction | boolean":()=>!0,"Complex | Unit | string | null | undefined | Node":()=>!1,"Array | Matrix":t.referToSelf(e=>t=>deepMap(t,e))})}),it=`hasNumericValue`,at=factory(it,[`typed`,`isNumeric`],e=>{var{typed:t,isNumeric:n}=e;return t(it,{boolean:()=>!0,string:function string(e){return e.trim().length>0&&!isNaN(Number(e))},any:function any(e){return n(e)}})}),ot=Ne({BigNumber:Xe({config:Ee}),Complex:Qe({}),DenseMatrix:tt({Matrix:et({})}),Fraction:$e({})}),st=at({isNumeric:rt({typed:ot}),typed:ot});const shortTimePeriodIsMilliseconds=e=>{let t=Number(e);return Number.isNaN(t)?!1:t>=120&&t<=36e4},resolveWaitTimeMs=e=>{let t=Number(e),n=Date.now();return Number.isNaN(t)?n+1e3:!shortTimePeriodIsMilliseconds(t)&&c(t)?adjustUnixTimestamp(t):shortTimePeriodIsMilliseconds(t)?n+t:n+t*I},superNormalizeHeaders=e=>{let t={};for(let[n,r]of Object.entries(e)){let e=n.toLowerCase().replace(/^x-/,``).replace(/concurren.+-/g,`concurrency-`).replace(/-/g,``);t[e]=st(r)?Number(r):null}return t},extractRateLimitHeaders=e=>{let t=superNormalizeHeaders(e);return{rateLimitLimit:t.ratelimitlimit,rateLimitRemaining:t.ratelimitremaining,rateLimitReset:resolveWaitTimeMs(t.ratelimitreset),concurrencyLimit:t.ratelimitconcurrencylimit,concurrencyRemaining:t.ratelimitconcurrencyremaining,concurrencyReset:resolveWaitTimeMs(t.ratelimitconcurrencyreset)}},generateRequestKey=e=>{let{accountSecureId:t,service:n,resource:r,subResource:i,childResource:a,action:o,behaviours:s}=e??{};return[t,n,r,o].some(l)?null:[t,n,r,i,a,o,...s??[]].filter(Boolean).join(`-`)},getRetryAfterWaitTime=(e,t=10,n=1)=>{let r=Date.now();return c(e)||u(e)?evaluateRetryAfterNumber(Number(e),r,t,n):isString$1(e)&&e!==``?evaluateRetryAfterString(e,r,t,n):n},evaluateRetryAfterNumber=(e,t,n=10,r=1)=>{if(e<n)return e;let i=adjustUnixTimestamp(e);if(i>t){let e=Math.floor((i-t)/I);return e>0&&e<n?e:r}return r},evaluateRetryAfterString=(e,t,n=10,r=1)=>{if(be.test(e)){let t=parseFloat(e);return t>0&&t<n?t:r}let i=new Date(e);if(Number.isNaN(i.getTime()))return r;let a=i.getTime();if(a>t){let e=Math.floor((a-t)/I);return e>0&&e<n?e:r}return r},retryErrorInterceptor=({axiosInstance:t,logger:n,requestConfig:r,context:a})=>e(async e=>{let{response:o,config:s}=e;if(s?.signal?.aborted)return Promise.reject(createAxiosError(`Request aborted`,s,`ERR_CANCELED`,o));let{status:c,retryAfter:l}=convertError(o,a,r,n);if(c===429&&p(s)){let r=getRetryAfterWaitTime(l);if(s._retryCount>=5)return n?.warning({category:`http-transport`,message:`Max retries exceeded for ${s?.url}. Aborting.`,context:{...a??{},retryAfterHeader:l,retryAfterAsNumber:r}}),Promise.reject(e);let c=s._retryCount??0,u={...s,_retryCount:c+1},d=l?r*I:i(u._retryCount);return n?.debug({category:`http-transport`,message:`Received 429 error from ${s?.url}`,context:{...a??{},retryAfterHeader:l,calculatedRetryAfter:d}}),await abortableDelay(d,s,o),t?.request(u)}return Promise.reject(e)},`retryErrorInterceptor`),convertError=(e,t,n,r)=>{let{provider:i}=t??{},{status:a,headers:o,data:s}=e??{},{retryafter:c}=superNormalizeHeaders(o??{});if(l(i)||l(e))return r?.warning({category:`http-transport`,message:`Invalid parameters for convertError`,context:{...t,responseIsMissing:l(e),providerIsMissing:l(i),status:e?.status??`undefined`,statusText:e?.statusText??`undefined`,retryafter:c??`undefined`}}),{status:a,retryAfter:c};let u=n?.rateLimits?.mappedRateLimitErrors;if(p(u)&&p(s))for(let e of u){let{errorStatus:t,errorMessagePath:n,errorMessage:r,retryAfterPath:i,retryAfterUnit:l,retryAfterValue:u}=e;if(t!==a)continue;let f=n??`message`,p=testMessage(d(s)?w({path:f,json:s})[0]:s,r);if(t===a&&p){let e=convertRetryAfter(u??extractRetryAfter(o,i),l);return{status:429,retryAfter:c??e}}}return{status:a,retryAfter:c}},testMessage=(e,t)=>t instanceof RegExp?t.test(e??``):e?.includes(t)??!1,extractRetryAfter=(e,t)=>p(t)&&p(e)?w({path:t,json:e})[0]:null,convertRetryAfter=(e,t=`seconds`)=>p(e)?transformToSeconds(e,t):null,transformToSeconds=(e,t)=>{if(t===`seconds`)return typeof e==`string`?parseFloat(e):e;if(t===`milliseconds`)return(typeof e==`string`?parseFloat(e):e)/I;if(t===`date`){let t=typeof e==`string`&&!isNaN(Number(e))?parseFloat(e):e,n=new Date(t);if(isNaN(n.getTime()))throw Error(`Invalid date value`);return n.getTime()}throw Error(`Invalid type`)},ct=`rateLimitErrorInterceptor`,rateLimitErrorInterceptor=({axiosInstance:t,logger:n,requestConfig:r,context:a,concurrencyManager:o})=>e(async e=>{let{response:s,config:c}=e,u=c?.signal;if(l(a)||l(c))return n?.warning({category:`HttpClient`,message:`No context or config for this response - that doesn't seem right.`,context:{interceptor:ct,...c,httpsAgent:void 0,headers:void 0,hasContext:p(a),hasConfig:p(c)},code:F.InterceptorContextNotPresent}),Promise.reject(e);if(l(o))return n?.error({category:`HttpClient`,message:`ConcurrencyManager is not initialized`,context:{interceptor:ct,...c,httpsAgent:void 0,headers:void 0,concurrencyManagerInitialized:p(o)},code:F.RateLimitOrConcurrencyManagerNotInitialized}),Promise.reject(e);let{requestId:d,targetConcurrencyKey:f,leaseSubscription:m,setRemovalSubscription:h}=c?.requestMetadata??{};if(!(p(d)&&p(f)&&await o.releaseRequest(d,f))&&p(c?.requestMetadata)&&n?.error({category:`HttpClient`,message:`Failed to release request from concurrency manager`,context:{...a,interceptor:ct,requestId:d,targetConcurrencyKey:f,leaseSubscription:m,setRemovalSubscription:h},code:F.RateLimiterReleaseRequestFailed}),u?.aborted)return Promise.reject(createAxiosError(`Request aborted`,c,`ERR_CANCELED`,s));let{status:g,retryAfter:_}=convertError(s,a,r,n);if(g===429&&p(c)){let r=getRetryAfterWaitTime(_);if(c._retryCount>=5)return n?.warning({category:`HttpClient`,message:`Max retries exceeded for ${c.url}. Aborting.`,context:{...a??{},...c.requestMetadata??{},retryAfterHeader:_,retryAfterAsNumber:r}}),Promise.reject(e);let o=c?._retryCount??0,l={...c,_retryCount:o+1},u=_?r*I:i(l._retryCount);return n?.debug({category:`HttpClient`,message:`Received 429 error from ${c.url}`,context:{...a,retryAfterHeader:_,calculatedRetryAfter:u}}),await abortableDelay(u,c,s),t?.request(l)}return Promise.reject(e)},`rateLimitErrorInterceptor`),lt=`rateLimitResponseInterceptor`,rateLimitResponseInterceptor=({logger:t,context:n,concurrencyManager:r})=>e(async e=>{let i=e?.config,a=i?.signal;if(l(n))t?.warning({category:`HttpClient`,message:`No context for this response - that doesn't seem right.`,context:{interceptor:lt,...i,httpsAgent:void 0,headers:void 0}});else if(l(r))return t?.error({category:`HttpClient`,message:`ConcurrencyManager is not initialized`,context:{interceptor:lt,...i,httpsAgent:void 0,headers:void 0,concurrencyManagerInitialized:p(r)},code:F.RateLimitOrConcurrencyManagerNotInitialized}),e;else if(p(n.provider)&&p(n.accountSecureId)){let n=e?.headers;if(p(n)){let e=extractRateLimitHeaders(n);t?.debug({category:`HttpClient`,message:`Rate limit headers extracted`,context:{interceptor:lt,rateLimitHeaders:e}})}let{requestId:o,targetConcurrencyKey:s,leaseSubscription:c,setRemovalSubscription:l}=i?.requestMetadata??{};if(await r.releaseRequest(o,s)||t?.error({category:`HttpClient`,message:`Failed to release request from concurrency manager`,context:{interceptor:lt,requestId:o,targetConcurrencyKey:s,leaseSubscription:c,setRemovalSubscription:l},code:F.RateLimiterReleaseRequestFailed}),a?.aborted)return Promise.reject(createAxiosError(`Request aborted`,i,`ERR_CANCELED`,e))}return e},`rateLimitResponseInterceptor`),validateRequestInterceptor=e=>(e.validateStatus??=e=>e>=200&&e<300,e),ut=[{onFulfilled:validateRequestInterceptor,onRejected:null,options:void 0}],dt=[{onFulfilled:null,onRejected:retryErrorInterceptor},{onFulfilled:null,onRejected:abortErrorInterceptor}],ft=[{onFulfilled:validateRequestInterceptor,onRejected:null,options:void 0},{onFulfilled:checkConcurrencyInterceptor,onRejected:null,options:void 0}],pt=[{onFulfilled:rateLimitResponseInterceptor,onRejected:rateLimitErrorInterceptor},{onFulfilled:null,onRejected:abortErrorInterceptor}];var RateLimitManager=class extends ScriptManager{constructor(...e){super(...e),this.name=`RateLimitManager`}async additionalInitialization(){}getDynamicMaxWaitTime(e,t,n,r=59,i=.8,a=500){this.readyCheck();let o=e.subPools?.find(e=>e.urlPattern instanceof RegExp?e.urlPattern.test(n??``):n?.includes(e.urlPattern))?.rateLimit??e.mainRatelimit;if(o<=0)throw Error(`Requests per second (rps) must be greater than 0.`);let s=t.subPools?.find(e=>e.urlPattern instanceof RegExp?e.urlPattern.test(n??``):n?.includes(e.urlPattern))?.maxConcurrency??t.mainMaxConcurrency;if(s<=0)throw Error(`Concurrency must be greater than 0.`);let c=r*i,l=1/Math.min(o,s/(a/1e3)),u=Math.max(7.5,c*l);return Math.min(c,u)}async getWaitTime(e,t,n){this.readyCheck();let r=`rateLimit:${e}`,i=t.subPools?.find(e=>e.urlPattern instanceof RegExp?e.urlPattern.test(n??``):n?.includes(e.urlPattern))?.subPoolKey,a=p(i)?`${r}-${i}`:r,{mainRatelimit:o,subPools:s}=t,c=[{key:r,rateLimit:o},...s?.map(e=>{let{subPoolKey:t,rateLimit:n}=e;return{key:`${r}-${t}`,rateLimit:n}})??[]],l=c.map(e=>e.key),u=c.map(e=>e.rateLimit);return await this.executeScript(ve.incr,[a,...l],[o.toString(),...u.map(String)])}readyCheck(){if(!this.cacheClient||!this.scriptMap?.size)throw Error(`RateLimitManager not ready`)}isReady(){return!!this?.cacheClient&&!!this?.scriptMap?.size}close(){this.scriptMap?.clear(),this.reset()}},SingletonManager=class{static{this.instances=new Map}static async prepare(e,t,...n){if(!this.instances.has(e)){let t=new e;t.getSingleton=e=>{let t=this.instances.get(e);if(l(t))throw Error(`Singleton ${e.name} not prepared yet`);if(t.hasInitFailed?.())throw Error(`${e.name} initialization failed`);let n=t.getInstanceIfReady?.();if(p(n))return n;throw Error(`${e.name} not ready`)},this.instances.set(e,t)}let r=this.instances.get(e);try{return await r.getInstance(t,...n)}catch(t){throw r.hasInitFailed?.()&&this.instances.delete(e),t}}static getIfReady(e){return this.instances.get(e)?.getInstanceIfReady?.()??null}static reset(e){this.instances.get(e)?.reset?.(),this.instances.delete(e)}static cleanupFailed(){let e=0;for(let[t,n]of this.instances){let r=n;r?.hasInitFailed?.()&&(r?.reset?.(),this.instances.delete(t),e++)}return e}};let mt=function(e){return e.HttpTransportInstanceCreateError=`HttpTransportInstanceCreateError`,e}({});const getTransportInstance=async({logger:e,redisClientConfig:t,context:n,requestConfig:r,httpsAgentConfig:i}={})=>{let a,{NODE_ENV:o}=process.env,s=n?.behaviours??[`CONCURRENCY`,`RETRY`];try{if(a=s.includes(`RETRY`)?createDefaultRetryInstance(e,n):createDefaultInstance(e,n),l(n?.service)||l(n?.organizationId)||o===`test`||l(t)||l(e))return a;let c=SingletonManager.getIfReady(RateLimitManager)??void 0,u=SingletonManager.getIfReady(ConcurrencyManager)??void 0,d=c?.isReady(),f=u?.isRedisConfigured(),m=[],h=[];if(s.includes(`CONCURRENCY`)){if(!f)throw Error(`Concurrency Manager cannot connect to Redis. Cannot create advanced transport instance.`);if(!d)throw Error(`RateLimitManager is not ready. Cannot create advanced transport instance.`);m.push(...ft),h.push(...pt)}let g=generateRequestKey(n);if(l(g))return e?.warning({category:`http-transport`,message:`Unable to create a key for transport instance - Invalid state. Using base default instance.`,context:{...n,defaultInstanceInitialized:p(a)}}),a;let _=await ge.get(g);if(p(_))return _;let v={interceptors:{requestConfigs:m,responseConfigs:h},instanceConfig:{maxBodyLength:1/0},logger:e,context:n,requestConfig:r,httpsAgentConfig:i,concurrencyManager:u,rateLimitManager:c},y=HttpTransportFactory.createInstance(v);return e?.debug({category:`http-transport`,message:`Creating new Axios instance and caching it for key: [${g}]`,context:{...n}}),await ge.set(g,y),y}catch(t){return e?.error({category:`http-transport`,message:`Failed to create advanced transport instance. Using default instance.`,context:{...n,usingDefaultInstance:p(a)},error:t,code:mt.HttpTransportInstanceCreateError}),p(a)?a:createAxiosInstance()}},createDefaultInstance=(e,t)=>{let n={instanceConfig:{maxBodyLength:1/0},logger:e,context:t};return HttpTransportFactory.createInstance(n)??createAxiosInstance()},createDefaultRetryInstance=(e,t)=>{let n={interceptors:{requestConfigs:ut,responseConfigs:dt},instanceConfig:{maxBodyLength:1/0},logger:e,context:t};return HttpTransportFactory.createInstance(n)??createAxiosInstance()},createAxiosInstance=()=>y.create({maxBodyLength:1/0});var HttpClient=class{#e;#t;#n;#r;#i;#a;constructor({transportFactory:e=getTransportInstance,getRedisClient:t=buildRedisClientInstance,logger:n,redisClientConfig:r,errorMappingFn:i}={}){this.name=`HttpClient`,this.#e=e,this.#t=t,this.#n=n,this.#r=r,this.#i=i}#o({url:e,payload:t,method:n,context:r}){if(!r?.accountSecureId||r.accountSecureId.length<20||!e||!n)return null;let i=t?o(t):``;return`${r.accountSecureId}-${n.toUpperCase()}${i}-${e}`}async#s({url:e,payload:t,method:n,cacheTTL:r,context:i}){if(!this.#a||!r||r<=0)return null;let a=this.#o({url:e,payload:t,method:n,context:i});if(!a)return null;let o=await this.#a.getData(a);return o?(this.#n?.debug({category:this.name,message:`Cache hit for key [${a}].`}),o):(this.#n?.debug({category:this.name,message:`Cache miss for key [${a}].`}),null)}async#c({url:e,payload:t,method:n,cacheTTL:r,context:i,response:a}){if(!this.#a||!r||r<=0)return!1;let o=this.#o({url:e,payload:t,method:n,context:i});return o?(this.#n?.debug({category:this.name,message:`Caching result for key [${o}].`}),this.#a.setData({key:o,value:a,cacheTTL:r*60})):!1}async request({headers:e={},url:t,method:n=`get`,queryParams:r,maxRedirects:i=0,responseType:a,cacheTTL:o,context:s,traceId:c,payload:u,httpsAgent:d,httpAgent:f,requestConfig:m,httpsAgentConfig:h}){try{p(this.#r)&&l(this.#a)&&(this.#a=await this.#t(this.#r,this.#n,`HttpClient`));let g=this.#_(t,r),_=this.#l(e),v=this.#m(u,e),y=await this.#s({url:g,payload:v,method:n,cacheTTL:o,context:s});if(y)return{...y,responseTime:new Date};let b=he.getInstance(),x=(p(c)?await b.get(c):null)?.signal,S=await(await this.#e({redisClientConfig:this.#r,logger:this.#n,context:s,requestConfig:m,httpsAgentConfig:h})).request({headers:_,url:g,method:n,maxRedirects:i,responseType:a,data:v,httpsAgent:d,httpAgent:f,signal:x}),C={data:S.data,status:S.status,body:v,method:n,headers:this.#u(S.headers),requestUrl:t,responseType:S?.config?.responseType,responseTime:new Date};return await this.#c({url:g,payload:v,method:n,cacheTTL:o,context:s,response:C}),C}catch(e){let r=e;r.url=T(t),this.#n?.warning({category:this.name,message:`Request error [${n?.toUpperCase()} ${r.url}]: ${r.message}.`,error:r});let i=this.#h(r);throw p(i)?i:e}}async get({headers:e,url:t,queryParams:n,maxRedirects:r,cacheTTL:i,context:a,traceId:o,requestConfig:s}){return this.request({url:t,method:`get`,queryParams:n,headers:e,maxRedirects:r,cacheTTL:i,context:a,traceId:o,requestConfig:s})}async post({headers:e,url:t,maxRedirects:n,cacheTTL:r,context:i,traceId:a,payload:o,requestConfig:s}){return this.request({url:t,method:`post`,headers:e,maxRedirects:n,cacheTTL:r,context:i,traceId:a,payload:o,requestConfig:s})}async requestStream({headers:e={},url:t,method:n=`get`,queryParams:r,maxRedirects:i=0,context:a,traceId:o,payload:s,httpsAgent:c,httpAgent:l,requestConfig:u,httpsAgentConfig:d}){try{let f=this.#_(t,r),m=this.#l(e),h=this.#m(s,e),g=he.getInstance(),_=(p(o)?await g.get(o):null)?.signal,v=await(await this.#e({redisClientConfig:this.#r,logger:this.#n,context:a,requestConfig:u,httpsAgentConfig:d})).request({headers:m,url:f,method:n,maxRedirects:i,responseType:`stream`,data:h,httpsAgent:c,httpAgent:l,signal:_});return{status:v.status,headers:this.#u(v.headers),stream:v.data,requestUrl:t}}catch(e){let r=e;r.url=T(t),this.#n?.warning({category:this.name,message:`Stream request error [${n?.toUpperCase()} ${r.url}]: ${r.message}.`,error:r});let i=this.#h(r);throw p(i)?i:e}}#l(e){if(!e)return{};let t={};return Object.keys(e).forEach(n=>{t[n.toLowerCase()]=e[n]||``}),t}#u(e){if(!e)return{};let t={};return Object.keys(e).forEach(n=>{t[n]=e[n]||``}),t}#d(e){return e[`content-type`]===`application/x-www-form-urlencoded`}#f(e){return e[`content-type`]?.startsWith(`multipart/form-data`)??!1}#p(e){return l(e)||typeof e!=`object`||!e?!1:`pipe`in e&&typeof e.pipe==`function`}#m(e,t){if(!(l(e)||d(e)&&Object.keys(e).length===0))return this.#f(t)||this.#p(e)?e:this.#d(t)?E.stringify(e):e}#h(e){if(b(e)&&this.#i)return this.#i(e)}#g(e){return typeof e==`object`&&!!e&&`value`in e&&(typeof e.value==`string`||Array.isArray(e.value))}#_(e,t){if(l(t)||Object.keys(t).length===0)return e;let n={},r={},i={},a={};for(let[e,o]of Object.entries(t))if(this.#g(o)){let t=o.arrayFormat,s=o.value;t===`repeat`?r[e]=Array.isArray(s)?s:[s]:t===`brackets`?i[e]=Array.isArray(s)?s:[s]:t===`comma`?a[e]=Array.isArray(s)?s:[s]:n[e]=s}else n[e]=o;let o=[];Object.keys(n).length>0&&o.push(E.stringify(n)),Object.keys(r).length>0&&o.push(E.stringify(r,{arrayFormat:`repeat`})),Object.keys(i).length>0&&o.push(E.stringify(i,{arrayFormat:`brackets`})),Object.keys(a).length>0&&o.push(E.stringify(a,{arrayFormat:`comma`}));let s=o.join(`&`);return p(s)?`${e}?${s}`:e}};const buildHttpClientInstance=(e,t,n)=>new HttpClient({redisClientConfig:e,logger:t,errorMappingFn:n});var HttpClientManager=class{static{this.httpClientInstance=null}static async getInstance({redisClientConfig:e,logger:t,errorMappingFn:n,getHttpClient:r=buildHttpClientInstance}){return this.httpClientInstance??=r(e,t,n),this.httpClientInstance}static resetInstance(){this.httpClientInstance=null}};const ht=[`get`,`post`,`put`,`delete`,`patch`],gt={[A.rPush]:`
113
+ (function(r){var i=2e3,a={s:1,n:0,d:1};function assign(e,t){if(isNaN(e=parseInt(e,10)))throw InvalidParameter();return e*t}function newFraction(e,t){if(t===0)throw DivisionByZero();var n=Object.create(Fraction$2.prototype);n.s=e<0?-1:1,e=e<0?-e:e;var r=gcd(e,t);return n.n=e/r,n.d=t/r,n}function factorize(e){for(var t={},n=e,r=2,i=4;i<=n;){for(;n%r===0;)n/=r,t[r]=(t[r]||0)+1;i+=1+2*r++}return n===e?t[e]=(t[e]||0)+1:n>1&&(t[n]=(t[n]||0)+1),t}var o=e(function(e,t){var n=0,r=1,i=1,o=0,s=0,c=0,l=1,u=1,d=0,f=1,p=1,m=1,h=1e7,g;if(e!=null)if(t!==void 0){if(n=e,r=t,i=n*r,n%1!=0||r%1!=0)throw NonIntegerParameter()}else switch(typeof e){case`object`:if(`d`in e&&`n`in e)n=e.n,r=e.d,`s`in e&&(n*=e.s);else if(0 in e)n=e[0],1 in e&&(r=e[1]);else throw InvalidParameter();i=n*r;break;case`number`:if(e<0&&(i=e,e=-e),e%1==0)n=e;else if(e>0){for(e>=1&&(u=10**Math.floor(1+Math.log(e)/Math.LN10),e/=u);f<=h&&m<=h;)if(g=(d+p)/(f+m),e===g){f+m<=h?(n=d+p,r=f+m):m>f?(n=p,r=m):(n=d,r=f);break}else e>g?(d+=p,f+=m):(p+=d,m+=f),f>h?(n=p,r=m):(n=d,r=f);n*=u}else (isNaN(e)||isNaN(t))&&(r=n=NaN);break;case`string`:if(f=e.match(/\d+|./g),f===null)throw InvalidParameter();if(f[d]===`-`?(i=-1,d++):f[d]===`+`&&d++,f.length===d+1?s=assign(f[d++],i):f[d+1]===`.`||f[d]===`.`?(f[d]!==`.`&&(o=assign(f[d++],i)),d++,(d+1===f.length||f[d+1]===`(`&&f[d+3]===`)`||f[d+1]===`'`&&f[d+3]===`'`)&&(s=assign(f[d],i),l=10**f[d].length,d++),(f[d]===`(`&&f[d+2]===`)`||f[d]===`'`&&f[d+2]===`'`)&&(c=assign(f[d+1],i),u=10**f[d+1].length-1,d+=3)):f[d+1]===`/`||f[d+1]===`:`?(s=assign(f[d],i),l=assign(f[d+2],1),d+=3):f[d+3]===`/`&&f[d+1]===` `&&(o=assign(f[d],i),s=assign(f[d+2],i),l=assign(f[d+4],1),d+=5),f.length<=d){r=l*u,i=n=c+r*o+u*s;break}default:throw InvalidParameter()}if(r===0)throw DivisionByZero();a.s=i<0?-1:1,a.n=Math.abs(n),a.d=Math.abs(r)},`parse`);function modpow(e,t,n){for(var r=1;t>0;e=e*e%n,t>>=1)t&1&&(r=r*e%n);return r}function cycleLen(e,t){for(;t%2==0;t/=2);for(;t%5==0;t/=5);if(t===1)return 0;for(var n=10%t,r=1;n!==1;r++)if(n=n*10%t,r>i)return 0;return r}function cycleStart(e,t,n){for(var r=1,i=modpow(10,n,t),a=0;a<300;a++){if(r===i)return a;r=r*10%t,i=i*10%t}return 0}function gcd(e,t){if(!e)return t;if(!t)return e;for(;;){if(e%=t,!e)return t;if(t%=e,!t)return e}}function Fraction$2(e,t){if(o(e,t),this instanceof Fraction$2)e=gcd(a.d,a.n),this.s=a.s,this.n=a.n/e,this.d=a.d/e;else return newFraction(a.s*a.n,a.d)}e(Fraction$2,`Fraction`);var DivisionByZero=function(){return Error(`Division by Zero`)},InvalidParameter=function(){return Error(`Invalid argument`)},NonIntegerParameter=function(){return Error(`Parameters must be integer`)};Fraction$2.prototype={s:1,n:0,d:1,abs:function(){return newFraction(this.n,this.d)},neg:function(){return newFraction(-this.s*this.n,this.d)},add:function(e,t){return o(e,t),newFraction(this.s*this.n*a.d+a.s*this.d*a.n,this.d*a.d)},sub:function(e,t){return o(e,t),newFraction(this.s*this.n*a.d-a.s*this.d*a.n,this.d*a.d)},mul:function(e,t){return o(e,t),newFraction(this.s*a.s*this.n*a.n,this.d*a.d)},div:function(e,t){return o(e,t),newFraction(this.s*a.s*this.n*a.d,this.d*a.n)},clone:function(){return newFraction(this.s*this.n,this.d)},mod:function(e,t){if(isNaN(this.n)||isNaN(this.d))return new Fraction$2(NaN);if(e===void 0)return newFraction(this.s*this.n%this.d,1);if(o(e,t),a.n===0&&this.d===0)throw DivisionByZero();return newFraction(this.s*(a.d*this.n)%(a.n*this.d),a.d*this.d)},gcd:function(e,t){return o(e,t),newFraction(gcd(a.n,this.n)*gcd(a.d,this.d),a.d*this.d)},lcm:function(e,t){return o(e,t),a.n===0&&this.n===0?newFraction(0,1):newFraction(a.n*this.n,gcd(a.n,this.n)*gcd(a.d,this.d))},ceil:function(e){return e=10**(e||0),isNaN(this.n)||isNaN(this.d)?new Fraction$2(NaN):newFraction(Math.ceil(e*this.s*this.n/this.d),e)},floor:function(e){return e=10**(e||0),isNaN(this.n)||isNaN(this.d)?new Fraction$2(NaN):newFraction(Math.floor(e*this.s*this.n/this.d),e)},round:function(e){return e=10**(e||0),isNaN(this.n)||isNaN(this.d)?new Fraction$2(NaN):newFraction(Math.round(e*this.s*this.n/this.d),e)},inverse:function(){return newFraction(this.s*this.d,this.n)},pow:function(e,t){if(o(e,t),a.d===1)return a.s<0?newFraction((this.s*this.d)**+a.n,this.n**+a.n):newFraction((this.s*this.n)**+a.n,this.d**+a.n);if(this.s<0)return null;var n=factorize(this.n),r=factorize(this.d),i=1,s=1;for(var c in n)if(c!==`1`){if(c===`0`){i=0;break}if(n[c]*=a.n,n[c]%a.d===0)n[c]/=a.d;else return null;i*=c**+n[c]}for(var c in r)if(c!==`1`){if(r[c]*=a.n,r[c]%a.d===0)r[c]/=a.d;else return null;s*=c**+r[c]}return a.s<0?newFraction(s,i):newFraction(i,s)},equals:function(e,t){return o(e,t),this.s*this.n*a.d===a.s*a.n*this.d},compare:function(e,t){o(e,t);var n=this.s*this.n*a.d-a.s*a.n*this.d;return(0<n)-(n<0)},simplify:function(e){if(isNaN(this.n)||isNaN(this.d))return this;e||=.001;for(var t=this.abs(),n=t.toContinued(),r=1;r<n.length;r++){for(var i=newFraction(n[r-1],1),a=r-2;a>=0;a--)i=i.inverse().add(n[a]);if(Math.abs(i.sub(t).valueOf())<e)return i.mul(this.s)}return this},divisible:function(e,t){return o(e,t),!(!(a.n*this.d)||this.n*a.d%(a.n*this.d))},valueOf:function(){return this.s*this.n/this.d},toFraction:function(e){var t,n=``,r=this.n,i=this.d;return this.s<0&&(n+=`-`),i===1?n+=r:(e&&(t=Math.floor(r/i))>0&&(n+=t,n+=` `,r%=i),n+=r,n+=`/`,n+=i),n},toLatex:function(e){var t,n=``,r=this.n,i=this.d;return this.s<0&&(n+=`-`),i===1?n+=r:(e&&(t=Math.floor(r/i))>0&&(n+=t,r%=i),n+=`\\frac{`,n+=r,n+=`}{`,n+=i,n+=`}`),n},toContinued:function(){var e,t=this.n,n=this.d,r=[];if(isNaN(t)||isNaN(n))return r;do r.push(Math.floor(t/n)),e=t%n,t=n,n=e;while(t!==1);return r},toString:function(e){var t=this.n,n=this.d;if(isNaN(t)||isNaN(n))return`NaN`;e||=15;var r=cycleLen(t,n),i=cycleStart(t,n,r),a=this.s<0?`-`:``;if(a+=t/n|0,t%=n,t*=10,t&&(a+=`.`),r){for(var o=i;o--;)a+=t/n|0,t%=n,t*=10;a+=`(`;for(var o=r;o--;)a+=t/n|0,t%=n,t*=10;a+=`)`}else for(var o=e;t&&o--;)a+=t/n|0,t%=n,t*=10;return a}},typeof t==`object`?(Object.defineProperty(Fraction$2,`__esModule`,{value:!0}),Fraction$2.default=Fraction$2,Fraction$2.Fraction=Fraction$2,n.exports=Fraction$2):r.Fraction=Fraction$2})(t)}))(),1),$e=factory(`Fraction`,[],()=>(Object.defineProperty($.default,`name`,{value:`Fraction`}),$.default.prototype.constructor=$.default,$.default.prototype.type=`Fraction`,$.default.prototype.isFraction=!0,$.default.prototype.toJSON=function(){return{mathjs:`Fraction`,n:this.s*this.n,d:this.d}},$.default.fromJSON=function(e){return new $.default(e)},$.default),{isClass:!0}),et=factory(`Matrix`,[],()=>{function Matrix$1(){if(!(this instanceof Matrix$1))throw SyntaxError(`Constructor must be called with the new operator`)}return e(Matrix$1,`Matrix`),Matrix$1.prototype.type=`Matrix`,Matrix$1.prototype.isMatrix=!0,Matrix$1.prototype.storage=function(){throw Error(`Cannot invoke storage on a Matrix interface`)},Matrix$1.prototype.datatype=function(){throw Error(`Cannot invoke datatype on a Matrix interface`)},Matrix$1.prototype.create=function(e,t){throw Error(`Cannot invoke create on a Matrix interface`)},Matrix$1.prototype.subset=function(e,t,n){throw Error(`Cannot invoke subset on a Matrix interface`)},Matrix$1.prototype.get=function(e){throw Error(`Cannot invoke get on a Matrix interface`)},Matrix$1.prototype.set=function(e,t,n){throw Error(`Cannot invoke set on a Matrix interface`)},Matrix$1.prototype.resize=function(e,t){throw Error(`Cannot invoke resize on a Matrix interface`)},Matrix$1.prototype.reshape=function(e,t){throw Error(`Cannot invoke reshape on a Matrix interface`)},Matrix$1.prototype.clone=function(){throw Error(`Cannot invoke clone on a Matrix interface`)},Matrix$1.prototype.size=function(){throw Error(`Cannot invoke size on a Matrix interface`)},Matrix$1.prototype.map=function(e,t){throw Error(`Cannot invoke map on a Matrix interface`)},Matrix$1.prototype.forEach=function(e){throw Error(`Cannot invoke forEach on a Matrix interface`)},Matrix$1.prototype[Symbol.iterator]=function(){throw Error(`Cannot iterate a Matrix interface`)},Matrix$1.prototype.toArray=function(){throw Error(`Cannot invoke toArray on a Matrix interface`)},Matrix$1.prototype.valueOf=function(){throw Error(`Cannot invoke valueOf on a Matrix interface`)},Matrix$1.prototype.format=function(e){throw Error(`Cannot invoke format on a Matrix interface`)},Matrix$1.prototype.toString=function(){throw Error(`Cannot invoke toString on a Matrix interface`)},Matrix$1},{isClass:!0});function maxArgumentCount(e){return Object.keys(e.signatures||{}).reduce(function(e,t){var n=(t.match(/,/g)||[]).length+1;return Math.max(e,n)},-1)}var tt=factory(`DenseMatrix`,[`Matrix`],t=>{var{Matrix:n}=t;function DenseMatrix$1(e,t){if(!(this instanceof DenseMatrix$1))throw SyntaxError(`Constructor must be called with the new operator`);if(t&&!isString$1(t))throw Error(`Invalid datatype: `+t);if(isMatrix(e))e.type===`DenseMatrix`?(this._data=clone$2(e._data),this._size=clone$2(e._size),this._datatype=t||e._datatype):(this._data=e.toArray(),this._size=e.size(),this._datatype=t||e._datatype);else if(e&&L(e.data)&&L(e.size))this._data=e.data,this._size=e.size,validate$1(this._data,this._size),this._datatype=t||e.datatype;else if(L(e))this._data=preprocess(e),this._size=arraySize(this._data),validate$1(this._data,this._size),this._datatype=t;else if(e)throw TypeError(`Unsupported type of data (`+typeOf(e)+`)`);else this._data=[],this._size=[0],this._datatype=t}e(DenseMatrix$1,`DenseMatrix`),DenseMatrix$1.prototype=new n,DenseMatrix$1.prototype.createDenseMatrix=function(e,t){return new DenseMatrix$1(e,t)},Object.defineProperty(DenseMatrix$1,`name`,{value:`DenseMatrix`}),DenseMatrix$1.prototype.constructor=DenseMatrix$1,DenseMatrix$1.prototype.type=`DenseMatrix`,DenseMatrix$1.prototype.isDenseMatrix=!0,DenseMatrix$1.prototype.getDataType=function(){return getArrayDataType(this._data,typeOf)},DenseMatrix$1.prototype.storage=function(){return`dense`},DenseMatrix$1.prototype.datatype=function(){return this._datatype},DenseMatrix$1.prototype.create=function(e,t){return new DenseMatrix$1(e,t)},DenseMatrix$1.prototype.subset=function(e,t,n){switch(arguments.length){case 1:return _get(this,e);case 2:case 3:return _set(this,e,t,n);default:throw SyntaxError(`Wrong number of arguments`)}},DenseMatrix$1.prototype.get=function(e){if(!L(e))throw TypeError(`Array expected`);if(e.length!==this._size.length)throw new DimensionError(e.length,this._size.length);for(var t=0;t<e.length;t++)validateIndex(e[t],this._size[t]);for(var n=this._data,r=0,i=e.length;r<i;r++){var a=e[r];validateIndex(a,n.length),n=n[a]}return n},DenseMatrix$1.prototype.set=function(e,t,n){if(!L(e))throw TypeError(`Array expected`);if(e.length<this._size.length)throw new DimensionError(e.length,this._size.length,`<`);var r,i,a,o=e.map(function(e){return e+1});_fit(this,o,n);var s=this._data;for(r=0,i=e.length-1;r<i;r++)a=e[r],validateIndex(a,s.length),s=s[a];return a=e[e.length-1],validateIndex(a,s.length),s[a]=t,this};function _get(e,t){if(!isIndex(t))throw TypeError(`Invalid index`);if(t.isScalar())return e.get(t.min());var n=t.size();if(n.length!==e._size.length)throw new DimensionError(n.length,e._size.length);for(var r=t.min(),i=t.max(),a=0,o=e._size.length;a<o;a++)validateIndex(r[a],e._size[a]),validateIndex(i[a],e._size[a]);return new DenseMatrix$1(_getSubmatrix(e._data,t,n.length,0),e._datatype)}function _getSubmatrix(e,t,n,r){var i=r===n-1,a=t.dimension(r);return i?a.map(function(t){return validateIndex(t,e.length),e[t]}).valueOf():a.map(function(i){validateIndex(i,e.length);var a=e[i];return _getSubmatrix(a,t,n,r+1)}).valueOf()}function _set(e,t,n,r){if(!t||t.isIndex!==!0)throw TypeError(`Invalid index`);var i=t.size(),a=t.isScalar(),o;if(isMatrix(n)?(o=n.size(),n=n.valueOf()):o=arraySize(n),a){if(o.length!==0)throw TypeError(`Scalar expected`);e.set(t.min(),n,r)}else{if(!deepStrictEqual(o,i))try{n=o.length===0?broadcastTo([n],i):broadcastTo(n,i),o=arraySize(n)}catch{}if(i.length<e._size.length)throw new DimensionError(i.length,e._size.length,`<`);if(o.length<i.length){for(var s=0,c=0;i[s]===1&&o[s]===1;)s++;for(;i[s]===1;)c++,s++;n=unsqueeze(n,i.length,c,o)}if(!deepStrictEqual(i,o))throw new DimensionError(i,o,`>`);_fit(e,t.max().map(function(e){return e+1}),r);var l=i.length;_setSubmatrix(e._data,t,n,l,0)}return e}function _setSubmatrix(e,t,n,r,i){var a=i===r-1,o=t.dimension(i);a?o.forEach(function(t,r){validateIndex(t),e[t]=n[r[0]]}):o.forEach(function(a,o){validateIndex(a),_setSubmatrix(e[a],t,n[o[0]],r,i+1)})}DenseMatrix$1.prototype.resize=function(e,t,n){if(!isCollection(e))throw TypeError(`Array or Matrix expected`);var r=e.valueOf().map(e=>Array.isArray(e)&&e.length===1?e[0]:e);return _resize$1(n?this.clone():this,r,t)};function _resize$1(e,t,n){if(t.length===0){for(var r=e._data;L(r);)r=r[0];return r}return e._size=t.slice(0),e._data=resize(e._data,e._size,n),e}e(_resize$1,`_resize`),DenseMatrix$1.prototype.reshape=function(e,t){var n=t?this.clone():this;return n._data=reshape(n._data,e),n._size=processSizesWildcard(e,n._size.reduce((e,t)=>e*t)),n};function _fit(e,t,n){for(var r=e._size.slice(0),i=!1;r.length<t.length;)r.push(0),i=!0;for(var a=0,o=t.length;a<o;a++)t[a]>r[a]&&(r[a]=t[a],i=!0);i&&_resize$1(e,r,n)}DenseMatrix$1.prototype.clone=function(){return new DenseMatrix$1({data:clone$2(this._data),size:clone$2(this._size),datatype:this._datatype})},DenseMatrix$1.prototype.size=function(){return this._size.slice(0)},DenseMatrix$1.prototype.map=function(e){var t=this,n=maxArgumentCount(e),r=function recurse(r,i){return L(r)?r.map(function(e,t){return recurse(e,i.concat(t))}):n===1?e(r):n===2?e(r,i):e(r,i,t)}(this._data,[]);return new DenseMatrix$1(r,this._datatype===void 0?void 0:getArrayDataType(r,typeOf))},DenseMatrix$1.prototype.forEach=function(e){var t=this;(function recurse(n,r){L(n)?n.forEach(function(e,t){recurse(e,r.concat(t))}):e(n,r,t)})(this._data,[])},DenseMatrix$1.prototype[Symbol.iterator]=function*(){yield*function*recurse(e,t){if(L(e))for(var n=0;n<e.length;n++)yield*recurse(e[n],t.concat(n));else yield{value:e,index:t}}(this._data,[])},DenseMatrix$1.prototype.rows=function(){var e=[];if(this.size().length!==2)throw TypeError(`Rows can only be returned for a 2D matrix.`);for(var t of this._data)e.push(new DenseMatrix$1([t],this._datatype));return e},DenseMatrix$1.prototype.columns=function(){var e=this,t=[],n=this.size();if(n.length!==2)throw TypeError(`Rows can only be returned for a 2D matrix.`);for(var r=this._data,i=function _loop$1(n){var i=r.map(e=>[e[n]]);t.push(new DenseMatrix$1(i,e._datatype))},a=0;a<n[1];a++)i(a);return t},DenseMatrix$1.prototype.toArray=function(){return clone$2(this._data)},DenseMatrix$1.prototype.valueOf=function(){return this._data},DenseMatrix$1.prototype.format=function(e){return format(this._data,e)},DenseMatrix$1.prototype.toString=function(){return format(this._data)},DenseMatrix$1.prototype.toJSON=function(){return{mathjs:`DenseMatrix`,data:this._data,size:this._size,datatype:this._datatype}},DenseMatrix$1.prototype.diagonal=function(e){if(e){if(isBigNumber(e)&&(e=e.toNumber()),!isNumber$1(e)||!isInteger(e))throw TypeError(`The parameter k must be an integer number`)}else e=0;for(var t=e>0?e:0,n=e<0?-e:0,r=this._size[0],i=this._size[1],a=Math.min(r-n,i-t),o=[],s=0;s<a;s++)o[s]=this._data[s+n][s+t];return new DenseMatrix$1({data:o,size:[a],datatype:this._datatype})},DenseMatrix$1.diagonal=function(e,t,n,r){if(!L(e))throw TypeError(`Array expected, size parameter`);if(e.length!==2)throw Error(`Only two dimensions matrix are supported`);if(e=e.map(function(e){if(isBigNumber(e)&&(e=e.toNumber()),!isNumber$1(e)||!isInteger(e)||e<1)throw Error(`Size values must be positive integers`);return e}),n){if(isBigNumber(n)&&(n=n.toNumber()),!isNumber$1(n)||!isInteger(n))throw TypeError(`The parameter k must be an integer number`)}else n=0;var i=n>0?n:0,a=n<0?-n:0,o=e[0],s=e[1],c=Math.min(o-a,s-i),l;if(L(t)){if(t.length!==c)throw Error(`Invalid value array length`);l=function _value$1(e){return t[e]}}else if(isMatrix(t)){var u=t.size();if(u.length!==1||u[0]!==c)throw Error(`Invalid matrix length`);l=function _value$1(e){return t.get([e])}}else l=function _value$1(){return t};r||=isBigNumber(l(0))?l(0).mul(0):0;var d=[];if(e.length>0){d=resize(d,e,r);for(var f=0;f<c;f++)d[f+a][f+i]=l(f)}return new DenseMatrix$1({data:d,size:[o,s]})},DenseMatrix$1.fromJSON=function(e){return new DenseMatrix$1(e)},DenseMatrix$1.prototype.swapRows=function(e,t){if(!isNumber$1(e)||!isInteger(e)||!isNumber$1(t)||!isInteger(t))throw Error(`Row index must be positive integers`);if(this._size.length!==2)throw Error(`Only two dimensional matrix is supported`);return validateIndex(e,this._size[0]),validateIndex(t,this._size[0]),DenseMatrix$1._swapRows(e,t,this._data),this},DenseMatrix$1._swapRows=function(e,t,n){var r=n[e];n[e]=n[t],n[t]=r};function preprocess(e){return isMatrix(e)?preprocess(e.valueOf()):L(e)?e.map(preprocess):e}return DenseMatrix$1},{isClass:!0});function deepMap(e,t,n){return e&&typeof e.map==`function`?e.map(function(e){return deepMap(e,t,n)}):t(e)}var nt=`isNumeric`,rt=factory(nt,[`typed`],e=>{var{typed:t}=e;return t(nt,{"number | BigNumber | Fraction | boolean":()=>!0,"Complex | Unit | string | null | undefined | Node":()=>!1,"Array | Matrix":t.referToSelf(e=>t=>deepMap(t,e))})}),it=`hasNumericValue`,at=factory(it,[`typed`,`isNumeric`],e=>{var{typed:t,isNumeric:n}=e;return t(it,{boolean:()=>!0,string:function string(e){return e.trim().length>0&&!isNaN(Number(e))},any:function any(e){return n(e)}})}),ot=Ne({BigNumber:Xe({config:Ee}),Complex:Qe({}),DenseMatrix:tt({Matrix:et({})}),Fraction:$e({})}),st=at({isNumeric:rt({typed:ot}),typed:ot});const shortTimePeriodIsMilliseconds=e=>{let t=Number(e);return Number.isNaN(t)?!1:t>=120&&t<=36e4},resolveWaitTimeMs=e=>{let t=Number(e),n=Date.now();return Number.isNaN(t)?n+1e3:!shortTimePeriodIsMilliseconds(t)&&c(t)?adjustUnixTimestamp(t):shortTimePeriodIsMilliseconds(t)?n+t:n+t*I},superNormalizeHeaders=e=>{let t={};for(let[n,r]of Object.entries(e)){let e=n.toLowerCase().replace(/^x-/,``).replace(/concurren.+-/g,`concurrency-`).replace(/-/g,``);t[e]=st(r)?Number(r):null}return t},extractRateLimitHeaders=e=>{let t=superNormalizeHeaders(e);return{rateLimitLimit:t.ratelimitlimit,rateLimitRemaining:t.ratelimitremaining,rateLimitReset:resolveWaitTimeMs(t.ratelimitreset),concurrencyLimit:t.ratelimitconcurrencylimit,concurrencyRemaining:t.ratelimitconcurrencyremaining,concurrencyReset:resolveWaitTimeMs(t.ratelimitconcurrencyreset)}},generateRequestKey=e=>{let{accountSecureId:t,service:n,resource:r,subResource:i,childResource:a,action:o,behaviours:s}=e??{};return[t,n,r,o].some(l)?null:[t,n,r,i,a,o,...s??[]].filter(Boolean).join(`-`)},getRetryAfterWaitTime=(e,t=10,n=1)=>{let r=Date.now();return c(e)||u(e)?evaluateRetryAfterNumber(Number(e),r,t,n):isString$1(e)&&e!==``?evaluateRetryAfterString(e,r,t,n):n},evaluateRetryAfterNumber=(e,t,n=10,r=1)=>{if(e<n)return e;let i=adjustUnixTimestamp(e);if(i>t){let e=Math.floor((i-t)/I);return e>0&&e<n?e:r}return r},evaluateRetryAfterString=(e,t,n=10,r=1)=>{if(be.test(e)){let t=parseFloat(e);return t>0&&t<n?t:r}let i=new Date(e);if(Number.isNaN(i.getTime()))return r;let a=i.getTime();if(a>t){let e=Math.floor((a-t)/I);return e>0&&e<n?e:r}return r},retryErrorInterceptor=({axiosInstance:t,logger:n,requestConfig:r,context:a})=>e(async e=>{let{response:o,config:s}=e;if(s?.signal?.aborted)return Promise.reject(createAxiosError(`Request aborted`,s,`ERR_CANCELED`,o));let{status:c,retryAfter:l}=convertError(o,a,r,n);if(c===429&&p(s)){let r=getRetryAfterWaitTime(l);if(s._retryCount>=5)return n?.warning({category:`http-transport`,message:`Max retries exceeded for ${s?.url}. Aborting.`,context:{...a??{},retryAfterHeader:l,retryAfterAsNumber:r}}),Promise.reject(e);let c=s._retryCount??0,u={...s,_retryCount:c+1},d=l?r*I:i(u._retryCount);return n?.debug({category:`http-transport`,message:`Received 429 error from ${s?.url}`,context:{...a??{},retryAfterHeader:l,calculatedRetryAfter:d}}),await abortableDelay(d,s,o),t?.request(u)}return Promise.reject(e)},`retryErrorInterceptor`),convertError=(e,t,n,r)=>{let{provider:i}=t??{},{status:a,headers:o,data:s}=e??{},{retryafter:c}=superNormalizeHeaders(o??{});if(l(i)||l(e))return r?.warning({category:`http-transport`,message:`Invalid parameters for convertError`,context:{...t,responseIsMissing:l(e),providerIsMissing:l(i),status:e?.status??`undefined`,statusText:e?.statusText??`undefined`,retryafter:c??`undefined`}}),{status:a,retryAfter:c};let u=n?.rateLimits?.mappedRateLimitErrors;if(p(u)&&p(s))for(let e of u){let{errorStatus:t,errorMessagePath:n,errorMessage:r,retryAfterPath:i,retryAfterUnit:l,retryAfterValue:u}=e;if(t!==a)continue;let f=n??`message`,p=testMessage(d(s)?w({path:f,json:s})[0]:s,r);if(t===a&&p){let e=convertRetryAfter(u??extractRetryAfter(o,i),l);return{status:429,retryAfter:c??e}}}return{status:a,retryAfter:c}},testMessage=(e,t)=>t instanceof RegExp?t.test(e??``):e?.includes(t)??!1,extractRetryAfter=(e,t)=>p(t)&&p(e)?w({path:t,json:e})[0]:null,convertRetryAfter=(e,t=`seconds`)=>p(e)?transformToSeconds(e,t):null,transformToSeconds=(e,t)=>{if(t===`seconds`)return typeof e==`string`?parseFloat(e):e;if(t===`milliseconds`)return(typeof e==`string`?parseFloat(e):e)/I;if(t===`date`){let t=typeof e==`string`&&!isNaN(Number(e))?parseFloat(e):e,n=new Date(t);if(isNaN(n.getTime()))throw Error(`Invalid date value`);return n.getTime()}throw Error(`Invalid type`)},ct=`rateLimitErrorInterceptor`,rateLimitErrorInterceptor=({axiosInstance:t,logger:n,requestConfig:r,context:a,concurrencyManager:o})=>e(async e=>{let{response:s,config:c}=e,u=c?.signal;if(l(a)||l(c))return n?.warning({category:`HttpClient`,message:`No context or config for this response - that doesn't seem right.`,context:{interceptor:ct,...c,httpsAgent:void 0,headers:void 0,hasContext:p(a),hasConfig:p(c)},code:F.InterceptorContextNotPresent}),Promise.reject(e);if(l(o))return n?.error({category:`HttpClient`,message:`ConcurrencyManager is not initialized`,context:{interceptor:ct,...c,httpsAgent:void 0,headers:void 0,concurrencyManagerInitialized:p(o)},code:F.RateLimitOrConcurrencyManagerNotInitialized}),Promise.reject(e);let{requestId:d,targetConcurrencyKey:f,leaseSubscription:m,setRemovalSubscription:h}=c?.requestMetadata??{};if(!(p(d)&&p(f)&&await o.releaseRequest(d,f))&&p(c?.requestMetadata)&&n?.error({category:`HttpClient`,message:`Failed to release request from concurrency manager`,context:{...a,interceptor:ct,requestId:d,targetConcurrencyKey:f,leaseSubscription:m,setRemovalSubscription:h},code:F.RateLimiterReleaseRequestFailed}),u?.aborted)return Promise.reject(createAxiosError(`Request aborted`,c,`ERR_CANCELED`,s));let{status:g,retryAfter:_}=convertError(s,a,r,n);if(g===429&&p(c)){let r=getRetryAfterWaitTime(_);if(c._retryCount>=5)return n?.warning({category:`HttpClient`,message:`Max retries exceeded for ${c.url}. Aborting.`,context:{...a??{},...c.requestMetadata??{},retryAfterHeader:_,retryAfterAsNumber:r}}),Promise.reject(e);let o=c?._retryCount??0,l={...c,_retryCount:o+1},u=_?r*I:i(l._retryCount);return n?.debug({category:`HttpClient`,message:`Received 429 error from ${c.url}`,context:{...a,retryAfterHeader:_,calculatedRetryAfter:u}}),await abortableDelay(u,c,s),t?.request(l)}return Promise.reject(e)},`rateLimitErrorInterceptor`),lt=`rateLimitResponseInterceptor`,rateLimitResponseInterceptor=({logger:t,context:n,concurrencyManager:r})=>e(async e=>{let i=e?.config,a=i?.signal;if(l(n))t?.warning({category:`HttpClient`,message:`No context for this response - that doesn't seem right.`,context:{interceptor:lt,...i,httpsAgent:void 0,headers:void 0}});else if(l(r))return t?.error({category:`HttpClient`,message:`ConcurrencyManager is not initialized`,context:{interceptor:lt,...i,httpsAgent:void 0,headers:void 0,concurrencyManagerInitialized:p(r)},code:F.RateLimitOrConcurrencyManagerNotInitialized}),e;else if(p(n.provider)&&p(n.accountSecureId)){let n=e?.headers;if(p(n)){let e=extractRateLimitHeaders(n);t?.debug({category:`HttpClient`,message:`Rate limit headers extracted`,context:{interceptor:lt,rateLimitHeaders:e}})}let{requestId:o,targetConcurrencyKey:s,leaseSubscription:c,setRemovalSubscription:l}=i?.requestMetadata??{};if(await r.releaseRequest(o,s)||t?.error({category:`HttpClient`,message:`Failed to release request from concurrency manager`,context:{interceptor:lt,requestId:o,targetConcurrencyKey:s,leaseSubscription:c,setRemovalSubscription:l},code:F.RateLimiterReleaseRequestFailed}),a?.aborted)return Promise.reject(createAxiosError(`Request aborted`,i,`ERR_CANCELED`,e))}return e},`rateLimitResponseInterceptor`),validateRequestInterceptor=e=>(e.validateStatus??=e=>e>=200&&e<300,e),ut=[{onFulfilled:validateRequestInterceptor,onRejected:null,options:void 0}],dt=[{onFulfilled:null,onRejected:retryErrorInterceptor},{onFulfilled:null,onRejected:abortErrorInterceptor}],ft=[{onFulfilled:validateRequestInterceptor,onRejected:null,options:void 0},{onFulfilled:checkConcurrencyInterceptor,onRejected:null,options:void 0}],pt=[{onFulfilled:rateLimitResponseInterceptor,onRejected:rateLimitErrorInterceptor},{onFulfilled:null,onRejected:abortErrorInterceptor}];var RateLimitManager=class extends ScriptManager{constructor(...e){super(...e),this.name=`RateLimitManager`}async additionalInitialization(){}getDynamicMaxWaitTime(e,t,n,r=59,i=.8,a=500){this.readyCheck();let o=e.subPools?.find(e=>e.urlPattern instanceof RegExp?e.urlPattern.test(n??``):n?.includes(e.urlPattern))?.rateLimit??e.mainRatelimit;if(o<=0)throw Error(`Requests per second (rps) must be greater than 0.`);let s=t.subPools?.find(e=>e.urlPattern instanceof RegExp?e.urlPattern.test(n??``):n?.includes(e.urlPattern))?.maxConcurrency??t.mainMaxConcurrency;if(s<=0)throw Error(`Concurrency must be greater than 0.`);let c=r*i,l=1/Math.min(o,s/(a/1e3)),u=Math.max(7.5,c*l);return Math.min(c,u)}async getWaitTime(e,t,n){this.readyCheck();let r=`rateLimit:${e}`,i=t.subPools?.find(e=>e.urlPattern instanceof RegExp?e.urlPattern.test(n??``):n?.includes(e.urlPattern))?.subPoolKey,a=p(i)?`${r}-${i}`:r,{mainRatelimit:o,subPools:s}=t,c=[{key:r,rateLimit:o},...s?.map(e=>{let{subPoolKey:t,rateLimit:n}=e;return{key:`${r}-${t}`,rateLimit:n}})??[]],l=c.map(e=>e.key),u=c.map(e=>e.rateLimit);return await this.executeScript(ve.incr,[a,...l],[o.toString(),...u.map(String)])}readyCheck(){if(!this.cacheClient||!this.scriptMap?.size)throw Error(`RateLimitManager not ready`)}isReady(){return!!this?.cacheClient&&!!this?.scriptMap?.size}close(){this.scriptMap?.clear(),this.reset()}},SingletonManager=class{static{this.instances=new Map}static async prepare(e,t,...n){if(!this.instances.has(e)){let t=new e;t.getSingleton=e=>{let t=this.instances.get(e);if(l(t))throw Error(`Singleton ${e.name} not prepared yet`);if(t.hasInitFailed?.())throw Error(`${e.name} initialization failed`);let n=t.getInstanceIfReady?.();if(p(n))return n;throw Error(`${e.name} not ready`)},this.instances.set(e,t)}let r=this.instances.get(e);try{return await r.getInstance(t,...n)}catch(t){throw r.hasInitFailed?.()&&this.instances.delete(e),t}}static getIfReady(e){return this.instances.get(e)?.getInstanceIfReady?.()??null}static reset(e){this.instances.get(e)?.reset?.(),this.instances.delete(e)}static cleanupFailed(){let e=0;for(let[t,n]of this.instances){let r=n;r?.hasInitFailed?.()&&(r?.reset?.(),this.instances.delete(t),e++)}return e}};let mt=function(e){return e.HttpTransportInstanceCreateError=`HttpTransportInstanceCreateError`,e}({});const getTransportInstance=async({logger:e,redisClientConfig:t,context:n,requestConfig:r,httpsAgentConfig:i}={})=>{let a,{NODE_ENV:o}=process.env,s=n?.behaviours??[`CONCURRENCY`,`RETRY`];try{if(a=s.includes(`RETRY`)?createDefaultRetryInstance(e,n):createDefaultInstance(e,n),l(n?.service)||l(n?.organizationId)||o===`test`||l(t)||l(e))return a;let c=SingletonManager.getIfReady(RateLimitManager)??void 0,u=SingletonManager.getIfReady(ConcurrencyManager)??void 0,d=c?.isReady(),f=u?.isRedisConfigured(),m=[],h=[];if(s.includes(`CONCURRENCY`)){if(!f)throw Error(`Concurrency Manager cannot connect to Redis. Cannot create advanced transport instance.`);if(!d)throw Error(`RateLimitManager is not ready. Cannot create advanced transport instance.`);m.push(...ft),h.push(...pt)}let g=generateRequestKey(n);if(l(g))return e?.warning({category:`http-transport`,message:`Unable to create a key for transport instance - Invalid state. Using base default instance.`,context:{...n,defaultInstanceInitialized:p(a)}}),a;let _=await ge.get(g);if(p(_))return _;let v={interceptors:{requestConfigs:m,responseConfigs:h},instanceConfig:{maxBodyLength:1/0},logger:e,context:n,requestConfig:r,httpsAgentConfig:i,concurrencyManager:u,rateLimitManager:c},y=HttpTransportFactory.createInstance(v);return e?.debug({category:`http-transport`,message:`Creating new Axios instance and caching it for key: [${g}]`,context:{...n}}),await ge.set(g,y),y}catch(t){return e?.error({category:`http-transport`,message:`Failed to create advanced transport instance. Using default instance.`,context:{...n,usingDefaultInstance:p(a)},error:t,code:mt.HttpTransportInstanceCreateError}),p(a)?a:createAxiosInstance()}},createDefaultInstance=(e,t)=>{let n={instanceConfig:{maxBodyLength:1/0},logger:e,context:t};return HttpTransportFactory.createInstance(n)??createAxiosInstance()},createDefaultRetryInstance=(e,t)=>{let n={interceptors:{requestConfigs:ut,responseConfigs:dt},instanceConfig:{maxBodyLength:1/0},logger:e,context:t};return HttpTransportFactory.createInstance(n)??createAxiosInstance()},createAxiosInstance=()=>y.create({maxBodyLength:1/0});var HttpClient=class{#e;#t;#n;#r;#i;#a;constructor({transportFactory:e=getTransportInstance,getRedisClient:t=buildRedisClientInstance,logger:n,redisClientConfig:r,errorMappingFn:i}={}){this.name=`HttpClient`,this.#e=e,this.#t=t,this.#n=n,this.#r=r,this.#i=i}#o({url:e,payload:t,method:n,context:r}){if(!r?.accountSecureId||r.accountSecureId.length<20||!e||!n)return null;let i=t?o(t):``;return`${r.accountSecureId}-${n.toUpperCase()}${i}-${e}`}async#s({url:e,payload:t,method:n,cacheTTL:r,context:i}){if(!this.#a||!r||r<=0)return null;let a=this.#o({url:e,payload:t,method:n,context:i});if(!a)return null;let o=await this.#a.getData(a);return o?(this.#n?.debug({category:this.name,message:`Cache hit for key [${a}].`}),o):(this.#n?.debug({category:this.name,message:`Cache miss for key [${a}].`}),null)}async#c({url:e,payload:t,method:n,cacheTTL:r,context:i,response:a}){if(!this.#a||!r||r<=0)return!1;let o=this.#o({url:e,payload:t,method:n,context:i});return o?(this.#n?.debug({category:this.name,message:`Caching result for key [${o}].`}),this.#a.setData({key:o,value:a,cacheTTL:r*60})):!1}async request({headers:e={},url:t,method:n=`get`,queryParams:r,maxRedirects:i=0,responseType:a,cacheTTL:o,context:s,traceId:c,payload:u,httpsAgent:d,httpAgent:f,requestConfig:m,httpsAgentConfig:h}){try{p(this.#r)&&l(this.#a)&&(this.#a=await this.#t(this.#r,this.#n,`HttpClient`));let g=this.#_(t,r),_=this.#l(e),v=this.#m(u,e),y=await this.#s({url:g,payload:v,method:n,cacheTTL:o,context:s});if(y)return{...y,responseTime:new Date};let b=he.getInstance(),x=(p(c)?await b.get(c):null)?.signal,S=await(await this.#e({redisClientConfig:this.#r,logger:this.#n,context:s,requestConfig:m,httpsAgentConfig:h})).request({headers:_,url:g,method:n,maxRedirects:i,responseType:a,data:v,httpsAgent:d,httpAgent:f,signal:x}),C={data:S.data,status:S.status,body:v,method:n,headers:this.#u(S.headers),requestUrl:t,responseType:S?.config?.responseType,responseTime:new Date};return await this.#c({url:g,payload:v,method:n,cacheTTL:o,context:s,response:C}),C}catch(e){let r=e;r.url=T(t),this.#n?.warning({category:this.name,message:`Request error [${n?.toUpperCase()} ${r.url}]: ${r.message}.`,error:r});let i=this.#h(r);throw p(i)?i:e}}async get({headers:e,url:t,queryParams:n,maxRedirects:r,cacheTTL:i,context:a,traceId:o,requestConfig:s}){return this.request({url:t,method:`get`,queryParams:n,headers:e,maxRedirects:r,cacheTTL:i,context:a,traceId:o,requestConfig:s})}async post({headers:e,url:t,maxRedirects:n,cacheTTL:r,context:i,traceId:a,payload:o,requestConfig:s}){return this.request({url:t,method:`post`,headers:e,maxRedirects:n,cacheTTL:r,context:i,traceId:a,payload:o,requestConfig:s})}async requestStream({headers:e={},url:t,method:n=`get`,queryParams:r,maxRedirects:i=0,context:a,traceId:o,payload:s,httpsAgent:c,httpAgent:l,requestConfig:u,httpsAgentConfig:d}){try{let f=this.#_(t,r),m=this.#l(e),h=this.#m(s,e),g=he.getInstance(),_=(p(o)?await g.get(o):null)?.signal,v=await(await this.#e({redisClientConfig:this.#r,logger:this.#n,context:a,requestConfig:u,httpsAgentConfig:d})).request({headers:m,url:f,method:n,maxRedirects:i,responseType:`stream`,data:h,httpsAgent:c,httpAgent:l,signal:_});return{status:v.status,headers:this.#u(v.headers),stream:v.data,requestUrl:t}}catch(e){let r=e;r.url=T(t),this.#n?.warning({category:this.name,message:`Stream request error [${n?.toUpperCase()} ${r.url}]: ${r.message}.`,error:r});let i=this.#h(r);throw p(i)?i:e}}#l(e){if(!e)return{};let t={};return Object.keys(e).forEach(n=>{t[n.toLowerCase()]=e[n]||``}),t}#u(e){if(!e)return{};let t={};return Object.keys(e).forEach(n=>{t[n]=e[n]||``}),t}#d(e){return e[`content-type`]===`application/x-www-form-urlencoded`}#f(e){return f(e[`content-type`])?e[`content-type`]?.startsWith(`multipart/form-data`)??!1:!1}#p(e){return l(e)||typeof e!=`object`||!e?!1:`pipe`in e&&typeof e.pipe==`function`}#m(e,t){if(!(l(e)||d(e)&&Object.keys(e).length===0))return this.#f(t)||this.#p(e)?e:this.#d(t)?E.stringify(e):e}#h(e){if(b(e)&&this.#i)return this.#i(e)}#g(e){return typeof e==`object`&&!!e&&`value`in e&&(typeof e.value==`string`||Array.isArray(e.value))}#_(e,t){if(l(t)||Object.keys(t).length===0)return e;let n={},r={},i={},a={};for(let[e,o]of Object.entries(t))if(this.#g(o)){let t=o.arrayFormat,s=o.value;t===`repeat`?r[e]=Array.isArray(s)?s:[s]:t===`brackets`?i[e]=Array.isArray(s)?s:[s]:t===`comma`?a[e]=Array.isArray(s)?s:[s]:n[e]=s}else n[e]=o;let o=[];Object.keys(n).length>0&&o.push(E.stringify(n)),Object.keys(r).length>0&&o.push(E.stringify(r,{arrayFormat:`repeat`})),Object.keys(i).length>0&&o.push(E.stringify(i,{arrayFormat:`brackets`})),Object.keys(a).length>0&&o.push(E.stringify(a,{arrayFormat:`comma`}));let s=o.join(`&`);return p(s)?`${e}?${s}`:e}};const buildHttpClientInstance=(e,t,n)=>new HttpClient({redisClientConfig:e,logger:t,errorMappingFn:n});var HttpClientManager=class{static{this.httpClientInstance=null}static async getInstance({redisClientConfig:e,logger:t,errorMappingFn:n,getHttpClient:r=buildHttpClientInstance}){return this.httpClientInstance??=r(e,t,n),this.httpClientInstance}static resetInstance(){this.httpClientInstance=null}};const ht=[`get`,`post`,`put`,`delete`,`patch`],gt={[A.rPush]:`
114
114
  local queueLength = redis.call('RPUSH', KEYS[1], ARGV[1])
115
115
 
116
116
  redis.call('PEXPIRE', KEYS[1], ARGV[2])
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@stackone/transport",
3
- "version": "2.12.0",
3
+ "version": "2.13.0",
4
4
  "description": "",
5
5
  "main": "dist/index.cjs",
6
6
  "module": "dist/index.mjs",