@paraswap/dex-lib 2.12.10 → 2.12.11

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.
Files changed (41) hide show
  1. package/build/abi/maverick/pool.json +913 -0
  2. package/build/abi/maverick/router.json +703 -0
  3. package/build/dex/aave-v3/tokens.js +3 -0
  4. package/build/dex/aave-v3/tokens.js.map +1 -1
  5. package/build/dex/maverick/config.d.ts +4 -0
  6. package/build/dex/maverick/config.js +20 -0
  7. package/build/dex/maverick/config.js.map +1 -0
  8. package/build/dex/maverick/maverick-math/maverick-pool-math.d.ts +67 -0
  9. package/build/dex/maverick/maverick-math/maverick-pool-math.js +406 -0
  10. package/build/dex/maverick/maverick-math/maverick-pool-math.js.map +1 -0
  11. package/build/dex/maverick/maverick-math/maverick-sol-math.d.ts +17 -0
  12. package/build/dex/maverick/maverick-math/maverick-sol-math.js +139 -0
  13. package/build/dex/maverick/maverick-math/maverick-sol-math.js.map +1 -0
  14. package/build/dex/maverick/maverick-pool.d.ts +41 -0
  15. package/build/dex/maverick/maverick-pool.js +130 -0
  16. package/build/dex/maverick/maverick-pool.js.map +1 -0
  17. package/build/dex/maverick/maverick.d.ts +42 -0
  18. package/build/dex/maverick/maverick.js +174 -0
  19. package/build/dex/maverick/maverick.js.map +1 -0
  20. package/build/dex/maverick/subgraph-queries.d.ts +4 -0
  21. package/build/dex/maverick/subgraph-queries.js +114 -0
  22. package/build/dex/maverick/subgraph-queries.js.map +1 -0
  23. package/build/dex/maverick/types.d.ts +46 -0
  24. package/build/dex/maverick/types.js +3 -0
  25. package/build/dex/maverick/types.js.map +1 -0
  26. package/package.json +1 -1
  27. package/src/dex/aave-v3/tokens.ts +4 -0
  28. package/.idea/aws.xml +0 -17
  29. package/.idea/codeStyles/Project.xml +0 -19
  30. package/.idea/codeStyles/codeStyleConfig.xml +0 -5
  31. package/.idea/inspectionProfiles/Project_Default.xml +0 -6
  32. package/.idea/misc.xml +0 -6
  33. package/.idea/modules.xml +0 -8
  34. package/.idea/paraswap-dex-lib.iml +0 -9
  35. package/.idea/runConfigurations.xml +0 -10
  36. package/.idea/vcs.xml +0 -6
  37. package/build/dex/aave-v3/tokens/arbitrum.json +0 -50
  38. package/build/dex/aave-v3/tokens/avalanche.json +0 -74
  39. package/build/dex/aave-v3/tokens/fantom.json +0 -62
  40. package/build/dex/aave-v3/tokens/optimism.json +0 -50
  41. package/build/dex/aave-v3/tokens/polygon.json +0 -116
@@ -7,6 +7,9 @@ const TokensByAddress = {};
7
7
  function getATokenIfAaveV3Pair(network, src, dst) {
8
8
  const srcAddr = src.address.toLowerCase();
9
9
  const dstAddr = dst.address.toLowerCase();
10
+ if (srcAddr === dstAddr) {
11
+ return null;
12
+ }
10
13
  const _src = TokensByAddress[network][srcAddr];
11
14
  const _dst = TokensByAddress[network][dstAddr];
12
15
  if (_src && _src.address.toLowerCase() == dstAddr) {
@@ -1 +1 @@
1
- {"version":3,"file":"tokens.js","sourceRoot":"","sources":["../../../src/dex/aave-v3/tokens.ts"],"names":[],"mappings":";;;AAKa,QAAA,MAAM,GAAwD,EAAE,CAAC;AAE9E,MAAM,eAAe,GACnB,EAAE,CAAC;AAEL,sEAAsE;AACtE,SAAgB,qBAAqB,CACnC,OAAe,EACf,GAAU,EACV,GAAU;IAEV,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;IAC1C,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;IAE1C,MAAM,IAAI,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC;IAC/C,MAAM,IAAI,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC;IAE/C,IAAI,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,IAAI,OAAO,EAAE;QACjD,OAAO,GAAG,CAAC;KACZ;IAED,IAAI,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,IAAI,OAAO,EAAE;QACjD,OAAO,GAAG,CAAC;KACZ;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AApBD,sDAoBC;AAED,SAAgB,mBAAmB,CACjC,OAAe,EACf,MAAc;IAEd,MAAM,MAAM,GAAG,cAAM,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC;IAEvC,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IAEzB,OAAO;QACL,OAAO,EAAE,MAAM,CAAC,QAAQ;QACxB,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,MAAM,EAAE,MAAM,CAAC,OAAO;KACvB,CAAC;AACJ,CAAC;AAbD,kDAaC;AAED,SAAgB,kBAAkB,CAAC,OAAgB,EAAE,MAAmB;IACtE,KAAK,IAAI,KAAK,IAAI,MAAM,EAAE;QACxB,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;QAC5C,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC;QAE9C,IAAI,cAAM,CAAC,OAAO,CAAC,KAAK,SAAS,EAAE;YACjC,cAAM,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;SACtB;QACD,IAAI,eAAe,CAAC,OAAO,CAAC,KAAK,SAAS,EAAE;YAC1C,eAAe,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;SAC/B;QACD,cAAM,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,KAAK,CAAC;QACvC,eAAe,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,KAAK,CAAC;QACjD,eAAe,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,KAAK,CAAC;KACjD;AACH,CAAC;AAfD,gDAeC"}
1
+ {"version":3,"file":"tokens.js","sourceRoot":"","sources":["../../../src/dex/aave-v3/tokens.ts"],"names":[],"mappings":";;;AAKa,QAAA,MAAM,GAAwD,EAAE,CAAC;AAE9E,MAAM,eAAe,GACnB,EAAE,CAAC;AAEL,sEAAsE;AACtE,SAAgB,qBAAqB,CACnC,OAAe,EACf,GAAU,EACV,GAAU;IAEV,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;IAC1C,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;IAE1C,IAAI,OAAO,KAAK,OAAO,EAAE;QACvB,OAAO,IAAI,CAAC;KACb;IAED,MAAM,IAAI,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC;IAC/C,MAAM,IAAI,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC;IAE/C,IAAI,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,IAAI,OAAO,EAAE;QACjD,OAAO,GAAG,CAAC;KACZ;IAED,IAAI,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,IAAI,OAAO,EAAE;QACjD,OAAO,GAAG,CAAC;KACZ;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAxBD,sDAwBC;AAED,SAAgB,mBAAmB,CACjC,OAAe,EACf,MAAc;IAEd,MAAM,MAAM,GAAG,cAAM,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC;IAEvC,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IAEzB,OAAO;QACL,OAAO,EAAE,MAAM,CAAC,QAAQ;QACxB,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,MAAM,EAAE,MAAM,CAAC,OAAO;KACvB,CAAC;AACJ,CAAC;AAbD,kDAaC;AAED,SAAgB,kBAAkB,CAAC,OAAgB,EAAE,MAAmB;IACtE,KAAK,IAAI,KAAK,IAAI,MAAM,EAAE;QACxB,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;QAC5C,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC;QAE9C,IAAI,cAAM,CAAC,OAAO,CAAC,KAAK,SAAS,EAAE;YACjC,cAAM,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;SACtB;QACD,IAAI,eAAe,CAAC,OAAO,CAAC,KAAK,SAAS,EAAE;YAC1C,eAAe,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;SAC/B;QACD,cAAM,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,KAAK,CAAC;QACvC,eAAe,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,KAAK,CAAC;QACjD,eAAe,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,KAAK,CAAC;KACjD;AACH,CAAC;AAfD,gDAeC"}
@@ -0,0 +1,4 @@
1
+ import { DexParams } from './types';
2
+ import { AdapterMappings, DexConfigMap } from '../../types';
3
+ export declare const MaverickConfig: DexConfigMap<DexParams>;
4
+ export declare const Adapters: Record<number, AdapterMappings>;
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Adapters = exports.MaverickConfig = void 0;
4
+ const constants_1 = require("../../constants");
5
+ exports.MaverickConfig = {
6
+ Maverick: {
7
+ [constants_1.Network.POLYGON]: {
8
+ subgraphURL: 'https://api.thegraph.com/subgraphs/name/maverickprotocol/swap-polygon',
9
+ factoryAddress: '0x09d267428cA6D221c64f343B3Af07446603F22C2',
10
+ routerAddress: '0x6F9014366DccAd9323247DA44518212C0572C80A',
11
+ estimatorAddress: '0x631b13a4C20705c067Fe5Cd1867C955B0D19C636',
12
+ },
13
+ },
14
+ };
15
+ exports.Adapters = {
16
+ [constants_1.Network.POLYGON]: {
17
+ [constants_1.SwapSide.SELL]: [{ name: 'PolygonAdapter02', index: 5 }],
18
+ },
19
+ };
20
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/dex/maverick/config.ts"],"names":[],"mappings":";;;AAEA,+CAAoD;AAEvC,QAAA,cAAc,GAA4B;IACrD,QAAQ,EAAE;QACR,CAAC,mBAAO,CAAC,OAAO,CAAC,EAAE;YACjB,WAAW,EACT,uEAAuE;YACzE,cAAc,EAAE,4CAA4C;YAC5D,aAAa,EAAE,4CAA4C;YAC3D,gBAAgB,EAAE,4CAA4C;SAC/D;KACF;CACF,CAAC;AAEW,QAAA,QAAQ,GAAoC;IACvD,CAAC,mBAAO,CAAC,OAAO,CAAC,EAAE;QACjB,CAAC,oBAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,kBAAkB,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;KAC1D;CACF,CAAC"}
@@ -0,0 +1,67 @@
1
+ import { MaverickPoolState } from '../types';
2
+ declare type ComputeInfo = {
3
+ quoteDelta: bigint;
4
+ baseDelta: bigint;
5
+ excess: bigint;
6
+ newPrice: bigint;
7
+ };
8
+ export declare class MaverickPoolMath {
9
+ private dexKey;
10
+ private epsilon;
11
+ private fee;
12
+ private protocolFeeRatio;
13
+ private spreadFeeMultiplier;
14
+ private twauLookback;
15
+ private uShiftMultiplier;
16
+ w: bigint;
17
+ k: bigint;
18
+ h: bigint;
19
+ maxSpreadFee: bigint;
20
+ lamb_w: bigint;
21
+ lamb2_w: bigint;
22
+ lam2_kw: bigint;
23
+ ind_0_a2: bigint;
24
+ ind_1_a2: bigint;
25
+ ind_2_a2: bigint;
26
+ lambdas: bigint[];
27
+ gammas: bigint[];
28
+ binThreshold: bigint;
29
+ lambda_bar: bigint;
30
+ gamma_bar: bigint;
31
+ sk: bigint;
32
+ sw: bigint;
33
+ gam2_k: bigint;
34
+ gam_w: bigint;
35
+ state: MaverickPoolState;
36
+ timestamp: bigint;
37
+ constructor(dexKey: string, epsilon: bigint, fee: bigint, protocolFeeRatio: bigint, spreadFeeMultiplier: bigint, twauLookback: bigint, uShiftMultiplier: bigint, w: bigint, k: bigint, h: bigint);
38
+ swap(state: MaverickPoolState, timestamp: bigint, amount: bigint, swapForBase: boolean): bigint;
39
+ _spreadFee(): bigint;
40
+ _getTimestamp(): bigint;
41
+ _calculateTwau(newU: bigint): bigint;
42
+ _addFeeToEscrow(amount: bigint, isQuote: boolean): bigint;
43
+ _quadraticRoots(a: bigint, b: bigint, c: bigint): bigint;
44
+ _getActiveInd(): 1 | 0 | 2;
45
+ _getAssetsInActiveBin(): {
46
+ base: bigint[];
47
+ quote: bigint[];
48
+ L: bigint;
49
+ activeInd: number;
50
+ };
51
+ _computeQuoteForBaseBin(quoteIn: bigint, binInd: number, assetInfo: any): {
52
+ quoteDelta: bigint;
53
+ baseDelta: bigint;
54
+ excess: bigint;
55
+ newPrice: bigint;
56
+ };
57
+ _computeBaseForQuoteBin(baseIn: bigint, binInd: number, assetInfo: any): ComputeInfo;
58
+ _boundaryCheck(assetInfo: any, swapInfo: any, currentInd: number, isQuote: boolean): {
59
+ check: boolean;
60
+ alpha: bigint;
61
+ };
62
+ _swapQuoteForBase(quoteIn: bigint, doUUpdate: boolean): bigint;
63
+ _swapBaseForQuote(amount: bigint, doUUpdate: boolean): bigint;
64
+ _executeSwap(swapInfo: any): void;
65
+ _updateU(newU: bigint): void;
66
+ }
67
+ export {};
@@ -0,0 +1,406 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MaverickPoolMath = void 0;
4
+ const maverick_sol_math_1 = require("./maverick-sol-math");
5
+ const bigint_constants_1 = require("../../../bigint-constants");
6
+ class MaverickPoolMath {
7
+ constructor(dexKey, epsilon, fee, protocolFeeRatio, spreadFeeMultiplier, twauLookback, uShiftMultiplier, w, k, h) {
8
+ this.dexKey = dexKey;
9
+ this.epsilon = epsilon;
10
+ this.fee = fee;
11
+ this.protocolFeeRatio = protocolFeeRatio;
12
+ this.spreadFeeMultiplier = spreadFeeMultiplier;
13
+ this.twauLookback = twauLookback;
14
+ this.uShiftMultiplier = uShiftMultiplier;
15
+ this.w = w;
16
+ this.k = k;
17
+ this.h = h;
18
+ this.timestamp = 0n;
19
+ this.maxSpreadFee = BigInt(0.99e18) - this.fee;
20
+ this.sk = maverick_sol_math_1.MMath.sqrt(k);
21
+ this.sw = maverick_sol_math_1.MMath.sqrt(w);
22
+ this.state = {
23
+ quoteBalance: 0n,
24
+ baseBalance: 0n,
25
+ u: 0n,
26
+ twau: 0n,
27
+ lastTimestamp: 0n,
28
+ };
29
+ this.gammas = [
30
+ maverick_sol_math_1.MMath.div(bigint_constants_1.BI_POWS[18], maverick_sol_math_1.MMath.mul(this.sk, this.sw) - this.sw),
31
+ maverick_sol_math_1.MMath.div(this.sw, this.w - bigint_constants_1.BI_POWS[18]),
32
+ maverick_sol_math_1.MMath.div(maverick_sol_math_1.MMath.mul(this.sw, this.sk), this.sk - bigint_constants_1.BI_POWS[18]),
33
+ ];
34
+ this.lambdas = [this.gammas[2], this.gammas[1], this.gammas[0]];
35
+ const gamma_h = bigint_constants_1.BI_POWS[18] + maverick_sol_math_1.MMath.div(maverick_sol_math_1.MMath.mul(h, this.gammas[2]), this.gammas[1]);
36
+ this.binThreshold = maverick_sol_math_1.MMath.div(this.gammas[2], maverick_sol_math_1.MMath.mul(this.lambdas[0], gamma_h));
37
+ this.lamb_w = maverick_sol_math_1.MMath.div(maverick_sol_math_1.MMath.mul(this.h, this.lambdas[0]), this.sw);
38
+ this.lamb2_w = maverick_sol_math_1.MMath.mul(maverick_sol_math_1.MMath.mul(maverick_sol_math_1.MMath.mul(this.lambdas[0], this.lambdas[0]), maverick_sol_math_1.MMath.div(bigint_constants_1.BI_POWS[18], this.w) - bigint_constants_1.BI_POWS[18]), maverick_sol_math_1.MMath.mul(this.h, this.h));
39
+ this.ind_1_a2 = bigint_constants_1.BI_POWS[18] - maverick_sol_math_1.MMath.sMul(2n, this.lamb_w) + this.lamb2_w;
40
+ this.gamma_bar = maverick_sol_math_1.MMath.div(this.gammas[2], bigint_constants_1.BI_POWS[18] +
41
+ maverick_sol_math_1.MMath.div(maverick_sol_math_1.MMath.mul(this.h, this.gammas[2]), this.gammas[1]));
42
+ this.gam_w = maverick_sol_math_1.MMath.div(maverick_sol_math_1.MMath.div(this.gamma_bar, this.sw), this.sk);
43
+ this.gam2_k = maverick_sol_math_1.MMath.mul(maverick_sol_math_1.MMath.mul(this.gamma_bar, this.gamma_bar), maverick_sol_math_1.MMath.div(bigint_constants_1.BI_POWS[18], this.sk) - bigint_constants_1.BI_POWS[18]);
44
+ this.ind_0_a2 = this.gam2_k - this.gam_w;
45
+ this.lambda_bar = maverick_sol_math_1.MMath.div(bigint_constants_1.BI_POWS[18], maverick_sol_math_1.MMath.div(bigint_constants_1.BI_POWS[18], this.lambdas[0]) +
46
+ maverick_sol_math_1.MMath.div(this.h, this.lambdas[1]));
47
+ this.lam2_kw = maverick_sol_math_1.MMath.mul(maverick_sol_math_1.MMath.mul(maverick_sol_math_1.MMath.mul(this.lambda_bar, this.lambda_bar), this.sw), bigint_constants_1.BI_POWS[18] - this.sk);
48
+ this.ind_2_a2 = -this.lambda_bar + this.lam2_kw;
49
+ }
50
+ swap(state, timestamp, amount, swapForBase) {
51
+ if (state.quoteBalance == 0n || state.baseBalance == 0n) {
52
+ return 0n;
53
+ }
54
+ this.state = state;
55
+ this.timestamp = timestamp;
56
+ if (swapForBase) {
57
+ return this._swapQuoteForBase(amount, true);
58
+ }
59
+ else {
60
+ return this._swapBaseForQuote(amount, true);
61
+ }
62
+ }
63
+ _spreadFee() {
64
+ const _twau = this._calculateTwau(this.state.u);
65
+ if (this.state.u > _twau) {
66
+ return maverick_sol_math_1.MMath.min(this.maxSpreadFee, maverick_sol_math_1.MMath.mul(bigint_constants_1.BI_POWS[18] - maverick_sol_math_1.MMath.div(_twau, this.state.u), this.spreadFeeMultiplier));
67
+ }
68
+ else {
69
+ return maverick_sol_math_1.MMath.max(-this.maxSpreadFee, maverick_sol_math_1.MMath.mul(maverick_sol_math_1.MMath.div(this.state.u, _twau) - bigint_constants_1.BI_POWS[18], this.spreadFeeMultiplier));
70
+ }
71
+ }
72
+ _getTimestamp() {
73
+ if (this.timestamp > 0n) {
74
+ return this.timestamp;
75
+ }
76
+ return BigInt(parseInt((new Date().getTime() / 1000).toFixed(0)));
77
+ }
78
+ _calculateTwau(newU) {
79
+ const timeDiff = this._getTimestamp() - this.state.lastTimestamp;
80
+ if ((timeDiff == 0n && this.state.twau == 0n) ||
81
+ timeDiff >= this.twauLookback) {
82
+ return newU;
83
+ }
84
+ const a = maverick_sol_math_1.MMath.div(this.twauLookback - timeDiff, this.twauLookback);
85
+ return maverick_sol_math_1.MMath.mul(a, this.state.twau) + maverick_sol_math_1.MMath.mul(bigint_constants_1.BI_POWS[18] - a, newU);
86
+ }
87
+ _addFeeToEscrow(amount, isQuote) {
88
+ const spreadFee = this._spreadFee();
89
+ let txFee;
90
+ let assetFee;
91
+ if (isQuote) {
92
+ if (spreadFee < 0) {
93
+ txFee = this.fee - spreadFee;
94
+ }
95
+ else {
96
+ txFee = this.fee;
97
+ }
98
+ txFee = maverick_sol_math_1.MMath.min(BigInt(0.999e18), txFee);
99
+ assetFee = maverick_sol_math_1.MMath.mul(amount, txFee);
100
+ const protocolFee = maverick_sol_math_1.MMath.mul(assetFee, this.protocolFeeRatio);
101
+ this.state.quoteBalance += assetFee - protocolFee;
102
+ }
103
+ else {
104
+ if (spreadFee > 0) {
105
+ txFee = this.fee + spreadFee;
106
+ }
107
+ else {
108
+ txFee = this.fee;
109
+ }
110
+ txFee = maverick_sol_math_1.MMath.min(BigInt(0.999e18), txFee);
111
+ assetFee = maverick_sol_math_1.MMath.mul(amount, txFee);
112
+ const protocolFee = maverick_sol_math_1.MMath.mul(assetFee, this.protocolFeeRatio);
113
+ this.state.baseBalance += assetFee - protocolFee;
114
+ }
115
+ return amount - assetFee;
116
+ }
117
+ _quadraticRoots(a, b, c) {
118
+ const d = maverick_sol_math_1.MMath.div(maverick_sol_math_1.MMath.sqrt(maverick_sol_math_1.MMath.mul(b, b) - maverick_sol_math_1.MMath.sMul(4n, maverick_sol_math_1.MMath.mul(a, c))), maverick_sol_math_1.MMath.sMul(2n, a));
119
+ return maverick_sol_math_1.MMath.max(0n, maverick_sol_math_1.MMath.div(-b, maverick_sol_math_1.MMath.sMul(2n, a)) + d);
120
+ }
121
+ _getActiveInd() {
122
+ if (this.state.quoteBalance <=
123
+ maverick_sol_math_1.MMath.mul(maverick_sol_math_1.MMath.mul(this.state.baseBalance, this.state.u), this.binThreshold)) {
124
+ return 0;
125
+ }
126
+ if (maverick_sol_math_1.MMath.mul(this.state.baseBalance, this.state.u) <=
127
+ maverick_sol_math_1.MMath.mul(this.state.quoteBalance, this.binThreshold)) {
128
+ return 2;
129
+ }
130
+ return 1;
131
+ }
132
+ _getAssetsInActiveBin() {
133
+ const activeInd = this._getActiveInd();
134
+ const su = maverick_sol_math_1.MMath.sqrt(this.state.u);
135
+ let activeInfo = {};
136
+ if (activeInd == 1) {
137
+ const _lamb_w = this.lamb_w;
138
+ const quotelamb = maverick_sol_math_1.MMath.mul(this.state.quoteBalance, this.lamb2_w);
139
+ activeInfo.c =
140
+ maverick_sol_math_1.MMath.mul(this.state.u, this.state.baseBalance) -
141
+ this.state.quoteBalance;
142
+ activeInfo.a0 = maverick_sol_math_1.MMath.mul(this.state.quoteBalance, maverick_sol_math_1.MMath.mul(_lamb_w, activeInfo.c) + quotelamb);
143
+ activeInfo.a1 =
144
+ activeInfo.c +
145
+ maverick_sol_math_1.MMath.mul(_lamb_w, maverick_sol_math_1.MMath.sMul(2n, this.state.quoteBalance) - activeInfo.c) -
146
+ maverick_sol_math_1.MMath.sMul(2n, quotelamb);
147
+ activeInfo.q1 = this._quadraticRoots(this.ind_1_a2, activeInfo.a1, activeInfo.a0);
148
+ activeInfo.q0 = this.state.quoteBalance - activeInfo.q1;
149
+ activeInfo.q2 = 0n;
150
+ activeInfo.b2 = maverick_sol_math_1.MMath.div(activeInfo.q0, this.state.u);
151
+ activeInfo.b1 = this.state.baseBalance - activeInfo.b2;
152
+ activeInfo.b0 = 0n;
153
+ activeInfo.L = maverick_sol_math_1.MMath.div(maverick_sol_math_1.MMath.mul(activeInfo.q0, this.lambdas[0]), su);
154
+ }
155
+ else if (activeInd == 0) {
156
+ activeInfo.a0 = maverick_sol_math_1.MMath.mul(this.state.baseBalance, maverick_sol_math_1.MMath.div(maverick_sol_math_1.MMath.mul(maverick_sol_math_1.MMath.mul(this.gamma_bar, this.state.quoteBalance), this.sw), this.state.u) + maverick_sol_math_1.MMath.mul(this.state.baseBalance, this.gam2_k));
157
+ activeInfo.a1 =
158
+ maverick_sol_math_1.MMath.mul(maverick_sol_math_1.MMath.div(this.state.quoteBalance, this.state.u), bigint_constants_1.BI_POWS[18] - maverick_sol_math_1.MMath.mul(this.sw, this.gamma_bar)) +
159
+ maverick_sol_math_1.MMath.mul(this.state.baseBalance, this.gam_w - maverick_sol_math_1.MMath.sMul(2n, this.gam2_k));
160
+ activeInfo.b0 = this._quadraticRoots(this.ind_0_a2, activeInfo.a1, activeInfo.a0);
161
+ activeInfo.L = maverick_sol_math_1.MMath.mul(this.state.baseBalance - activeInfo.b0, maverick_sol_math_1.MMath.mul(this.gamma_bar, su));
162
+ activeInfo.b1 = maverick_sol_math_1.MMath.div(maverick_sol_math_1.MMath.div(maverick_sol_math_1.MMath.mul(this.h, activeInfo.L), su), this.gammas[1]);
163
+ activeInfo.b2 = this.state.baseBalance - activeInfo.b0 - activeInfo.b1;
164
+ activeInfo.q0 = this.state.quoteBalance;
165
+ activeInfo.q1 = 0n;
166
+ activeInfo.q2 = 0n;
167
+ }
168
+ else {
169
+ activeInfo.a0 = maverick_sol_math_1.MMath.mul(this.state.quoteBalance, maverick_sol_math_1.MMath.mul(maverick_sol_math_1.MMath.mul(maverick_sol_math_1.MMath.mul(maverick_sol_math_1.MMath.mul(this.state.baseBalance, this.state.u), this.w), this.lambda_bar), this.sk) + maverick_sol_math_1.MMath.mul(this.state.quoteBalance, this.lam2_kw));
170
+ activeInfo.a1 =
171
+ maverick_sol_math_1.MMath.mul(maverick_sol_math_1.MMath.mul(this.state.baseBalance, this.state.u), maverick_sol_math_1.MMath.mul(this.sk, this.sw - maverick_sol_math_1.MMath.mul(this.w, this.lambda_bar))) +
172
+ maverick_sol_math_1.MMath.mul(this.state.quoteBalance, this.lambda_bar - maverick_sol_math_1.MMath.mul(bigint_constants_1.BI_POWS[18] + bigint_constants_1.BI_POWS[18], this.lam2_kw));
173
+ activeInfo.q2 = this._quadraticRoots(this.ind_2_a2, activeInfo.a1, activeInfo.a0);
174
+ activeInfo.L = maverick_sol_math_1.MMath.div(maverick_sol_math_1.MMath.mul(this.state.quoteBalance - activeInfo.q2, this.lambda_bar), su);
175
+ activeInfo.q0 = maverick_sol_math_1.MMath.div(maverick_sol_math_1.MMath.mul(activeInfo.L, su), this.lambdas[0]);
176
+ activeInfo.q1 = this.state.quoteBalance - activeInfo.q0 - activeInfo.q2;
177
+ activeInfo.b0 = 0n;
178
+ activeInfo.b1 = 0n;
179
+ activeInfo.b2 = this.state.baseBalance;
180
+ }
181
+ return {
182
+ base: [activeInfo.b0, activeInfo.b1, activeInfo.b2],
183
+ quote: [activeInfo.q0, activeInfo.q1, activeInfo.q2],
184
+ L: activeInfo.L,
185
+ activeInd: activeInd,
186
+ };
187
+ }
188
+ _computeQuoteForBaseBin(quoteIn, binInd, assetInfo) {
189
+ if (quoteIn < 0) {
190
+ throw new Error(`Error_${this.dexKey}_Pool: Negative Swap`);
191
+ }
192
+ let binBase = assetInfo.base[binInd];
193
+ let binQuote = assetInfo.quote[binInd];
194
+ let L = assetInfo.L;
195
+ if (binInd == 1) {
196
+ L = maverick_sol_math_1.MMath.mul(L, this.h);
197
+ }
198
+ let spHigh;
199
+ let spLow;
200
+ if (binInd == 0) {
201
+ spHigh = maverick_sol_math_1.MMath.sqrt(maverick_sol_math_1.MMath.div(this.state.u, this.w));
202
+ spLow = maverick_sol_math_1.MMath.sqrt(maverick_sol_math_1.MMath.div(maverick_sol_math_1.MMath.div(this.state.u, this.w), this.k));
203
+ }
204
+ else if (binInd == 1) {
205
+ spHigh = maverick_sol_math_1.MMath.sqrt(maverick_sol_math_1.MMath.mul(this.state.u, this.w));
206
+ spLow = maverick_sol_math_1.MMath.sqrt(maverick_sol_math_1.MMath.div(this.state.u, this.w));
207
+ }
208
+ else {
209
+ spHigh = maverick_sol_math_1.MMath.sqrt(maverick_sol_math_1.MMath.mul(maverick_sol_math_1.MMath.mul(this.state.u, this.w), this.k));
210
+ spLow = maverick_sol_math_1.MMath.sqrt(maverick_sol_math_1.MMath.mul(this.state.u, this.w));
211
+ }
212
+ let qo = maverick_sol_math_1.MMath.mul(L, spLow);
213
+ let bo = maverick_sol_math_1.MMath.div(L, spHigh);
214
+ let maxQuote = maverick_sol_math_1.MMath.mul(L, spHigh) - qo;
215
+ let excessQuote = maverick_sol_math_1.MMath.max(0n, quoteIn + binQuote - maxQuote);
216
+ let newPrice;
217
+ let baseOut;
218
+ if (excessQuote > 0n) {
219
+ baseOut = binBase;
220
+ newPrice = 0n;
221
+ }
222
+ else {
223
+ const B = bo + binBase;
224
+ const Q = binQuote + qo + quoteIn;
225
+ baseOut = maverick_sol_math_1.MMath.div(maverick_sol_math_1.MMath.mul(B, quoteIn), Q);
226
+ newPrice = maverick_sol_math_1.MMath.div(Q, B - baseOut);
227
+ }
228
+ return {
229
+ quoteDelta: quoteIn - excessQuote,
230
+ baseDelta: -baseOut,
231
+ excess: excessQuote,
232
+ newPrice: newPrice,
233
+ };
234
+ }
235
+ _computeBaseForQuoteBin(baseIn, binInd, assetInfo) {
236
+ if (baseIn < 0) {
237
+ throw new Error(`Error_${this.dexKey}_Pool: Negative Swap`);
238
+ }
239
+ let binBase = assetInfo.base[binInd];
240
+ let binQuote = assetInfo.quote[binInd];
241
+ let L = assetInfo.L;
242
+ if (binInd == 1) {
243
+ L = maverick_sol_math_1.MMath.mul(L, this.h);
244
+ }
245
+ let spHigh;
246
+ let spLow;
247
+ if (binInd == 0) {
248
+ spHigh = maverick_sol_math_1.MMath.sqrt(maverick_sol_math_1.MMath.div(this.state.u, this.w));
249
+ spLow = maverick_sol_math_1.MMath.sqrt(maverick_sol_math_1.MMath.div(maverick_sol_math_1.MMath.div(this.state.u, this.w), this.k));
250
+ }
251
+ else if (binInd == 1) {
252
+ spHigh = maverick_sol_math_1.MMath.sqrt(maverick_sol_math_1.MMath.mul(this.state.u, this.w));
253
+ spLow = maverick_sol_math_1.MMath.sqrt(maverick_sol_math_1.MMath.div(this.state.u, this.w));
254
+ }
255
+ else {
256
+ spHigh = maverick_sol_math_1.MMath.sqrt(maverick_sol_math_1.MMath.mul(maverick_sol_math_1.MMath.mul(this.state.u, this.w), this.k));
257
+ spLow = maverick_sol_math_1.MMath.sqrt(maverick_sol_math_1.MMath.mul(this.state.u, this.w));
258
+ }
259
+ let qo = maverick_sol_math_1.MMath.mul(L, spLow);
260
+ let bo = maverick_sol_math_1.MMath.div(L, spHigh);
261
+ let maxBase = maverick_sol_math_1.MMath.div(L, spLow) - bo;
262
+ let excessBase = maverick_sol_math_1.MMath.max(0n, baseIn + binBase - maxBase);
263
+ let newPrice;
264
+ let quoteOut;
265
+ if (excessBase > 0) {
266
+ quoteOut = binQuote;
267
+ newPrice = 0n;
268
+ }
269
+ else {
270
+ const B = bo + binBase + baseIn;
271
+ const Q = binQuote + qo;
272
+ quoteOut = maverick_sol_math_1.MMath.div(maverick_sol_math_1.MMath.mul(Q, baseIn), B);
273
+ newPrice = maverick_sol_math_1.MMath.div(Q - quoteOut, B);
274
+ }
275
+ return {
276
+ quoteDelta: -quoteOut,
277
+ baseDelta: baseIn - excessBase,
278
+ excess: excessBase,
279
+ newPrice: newPrice,
280
+ };
281
+ }
282
+ _boundaryCheck(assetInfo, swapInfo, currentInd, isQuote) {
283
+ let alpha = bigint_constants_1.BI_POWS[18] + maverick_sol_math_1.MMath.mul(this.epsilon, this.w - bigint_constants_1.BI_POWS[18]);
284
+ if (isQuote) {
285
+ const upperSlip = maverick_sol_math_1.MMath.div(maverick_sol_math_1.MMath.mul(this.h, alpha - bigint_constants_1.BI_POWS[18]), this.sw);
286
+ const check = currentInd == 2 ||
287
+ (currentInd == 1 &&
288
+ assetInfo.quote[1] +
289
+ swapInfo.quoteDelta -
290
+ maverick_sol_math_1.MMath.mul(maverick_sol_math_1.MMath.mul(assetInfo.base[1] + swapInfo.baseDelta, this.state.u), alpha) >
291
+ maverick_sol_math_1.MMath.mul(maverick_sol_math_1.MMath.mul(upperSlip, assetInfo.L), maverick_sol_math_1.MMath.sqrt(this.state.u)));
292
+ return { check, alpha };
293
+ }
294
+ else {
295
+ const lowerSlip = maverick_sol_math_1.MMath.mul(this.h, maverick_sol_math_1.MMath.div(maverick_sol_math_1.MMath.div(bigint_constants_1.BI_POWS[18], alpha) - bigint_constants_1.BI_POWS[18], this.sw));
296
+ const check = currentInd == 0 ||
297
+ (currentInd == 1 &&
298
+ assetInfo.quote[1] +
299
+ swapInfo.quoteDelta -
300
+ maverick_sol_math_1.MMath.div(maverick_sol_math_1.MMath.mul(assetInfo.base[1] + swapInfo.baseDelta, this.state.u), alpha) <
301
+ maverick_sol_math_1.MMath.mul(maverick_sol_math_1.MMath.mul(lowerSlip, assetInfo.L), maverick_sol_math_1.MMath.sqrt(this.state.u)));
302
+ return { check, alpha };
303
+ }
304
+ }
305
+ _swapQuoteForBase(quoteIn, doUUpdate) {
306
+ if (quoteIn < 0) {
307
+ throw new Error(`Error_${this.dexKey}_Pool: Insufficient Swap`);
308
+ }
309
+ if (doUUpdate) {
310
+ quoteIn = this._addFeeToEscrow(quoteIn, true);
311
+ }
312
+ const assetInfo = this._getAssetsInActiveBin();
313
+ let currentInd = assetInfo.activeInd;
314
+ const swapInfo = [
315
+ this._computeQuoteForBaseBin(quoteIn, currentInd, assetInfo),
316
+ ];
317
+ let baseOut = -swapInfo[0].baseDelta;
318
+ let counter = 0;
319
+ while (true) {
320
+ if (swapInfo[counter].excess == 0n) {
321
+ break;
322
+ }
323
+ counter++;
324
+ currentInd++;
325
+ if (currentInd > 2) {
326
+ throw new Error(`Error_${this.dexKey}_Pool: Not enough base`);
327
+ }
328
+ swapInfo[counter] = this._computeQuoteForBaseBin(swapInfo[counter - 1].excess, currentInd, assetInfo);
329
+ baseOut -= swapInfo[counter].baseDelta;
330
+ }
331
+ if (doUUpdate && this.uShiftMultiplier > 0) {
332
+ let { check, alpha } = this._boundaryCheck(assetInfo, swapInfo[counter], currentInd, true);
333
+ if (check) {
334
+ let edgePrice = maverick_sol_math_1.MMath.mul(this.state.u, alpha);
335
+ let newU = maverick_sol_math_1.MMath.mul(bigint_constants_1.BI_POWS[18] +
336
+ maverick_sol_math_1.MMath.mul(maverick_sol_math_1.MMath.div(swapInfo[counter].newPrice - edgePrice, edgePrice), this.uShiftMultiplier), this.state.u);
337
+ this._updateU(newU);
338
+ return this._swapQuoteForBase(quoteIn, false);
339
+ }
340
+ }
341
+ this._executeSwap(swapInfo);
342
+ return baseOut;
343
+ }
344
+ _swapBaseForQuote(amount, doUUpdate) {
345
+ if (doUUpdate) {
346
+ amount = this._addFeeToEscrow(amount, false);
347
+ }
348
+ const assetInfo = this._getAssetsInActiveBin();
349
+ let currentInd = assetInfo.activeInd;
350
+ const swapInfo = [
351
+ this._computeBaseForQuoteBin(amount, currentInd, assetInfo),
352
+ ];
353
+ let quoteOut = -swapInfo[0].quoteDelta;
354
+ let counter = 0;
355
+ while (true) {
356
+ if (swapInfo[counter].excess == 0n) {
357
+ break;
358
+ }
359
+ if (currentInd <= 0) {
360
+ throw new Error(`Error_${this.dexKey}_Pool: Not enough quote`);
361
+ }
362
+ counter++;
363
+ currentInd -= 1;
364
+ swapInfo[counter] = this._computeBaseForQuoteBin(swapInfo[counter - 1].excess, currentInd, assetInfo);
365
+ quoteOut -= swapInfo[counter].quoteDelta;
366
+ }
367
+ if (doUUpdate && this.uShiftMultiplier > 0) {
368
+ let { check, alpha } = this._boundaryCheck(assetInfo, swapInfo[counter], currentInd, false);
369
+ if (check) {
370
+ let edgePrice = maverick_sol_math_1.MMath.div(this.state.u, alpha);
371
+ let newU = maverick_sol_math_1.MMath.mul(bigint_constants_1.BI_POWS[18] +
372
+ maverick_sol_math_1.MMath.mul(maverick_sol_math_1.MMath.div(swapInfo[counter].newPrice - edgePrice, edgePrice), this.uShiftMultiplier), this.state.u);
373
+ this._updateU(newU);
374
+ return this._swapBaseForQuote(amount, false);
375
+ }
376
+ }
377
+ this._executeSwap(swapInfo);
378
+ return quoteOut;
379
+ }
380
+ _executeSwap(swapInfo) {
381
+ let _baseBalance = this.state.baseBalance;
382
+ let _quoteBalance = this.state.quoteBalance;
383
+ for (let i = 0; i < swapInfo.length; i++) {
384
+ const swapInfoInstance = swapInfo[i];
385
+ _baseBalance += swapInfoInstance.baseDelta;
386
+ _quoteBalance += swapInfoInstance.quoteDelta;
387
+ }
388
+ this.state.baseBalance = _baseBalance;
389
+ this.state.quoteBalance = _quoteBalance;
390
+ }
391
+ _updateU(newU) {
392
+ if (newU <= 0) {
393
+ throw new Error(`Error_${this.dexKey}_Pool: u out of bounds`);
394
+ }
395
+ if (this.state.lastTimestamp == 0n) {
396
+ this.state.twau = newU;
397
+ }
398
+ else {
399
+ this.state.twau = this._calculateTwau(this.state.u);
400
+ }
401
+ this.state.lastTimestamp = this.timestamp;
402
+ this.state.u = newU;
403
+ }
404
+ }
405
+ exports.MaverickPoolMath = MaverickPoolMath;
406
+ //# sourceMappingURL=maverick-pool-math.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"maverick-pool-math.js","sourceRoot":"","sources":["../../../../src/dex/maverick/maverick-math/maverick-pool-math.ts"],"names":[],"mappings":";;;AACA,2DAA4C;AAC5C,gEAAoD;AAsBpD,MAAa,gBAAgB;IAoB3B,YACU,MAAc,EACd,OAAe,EACf,GAAW,EACX,gBAAwB,EACxB,mBAA2B,EAC3B,YAAoB,EACpB,gBAAwB,EACzB,CAAS,EACT,CAAS,EACT,CAAS;QATR,WAAM,GAAN,MAAM,CAAQ;QACd,YAAO,GAAP,OAAO,CAAQ;QACf,QAAG,GAAH,GAAG,CAAQ;QACX,qBAAgB,GAAhB,gBAAgB,CAAQ;QACxB,wBAAmB,GAAnB,mBAAmB,CAAQ;QAC3B,iBAAY,GAAZ,YAAY,CAAQ;QACpB,qBAAgB,GAAhB,gBAAgB,CAAQ;QACzB,MAAC,GAAD,CAAC,CAAQ;QACT,MAAC,GAAD,CAAC,CAAQ;QACT,MAAC,GAAD,CAAC,CAAQ;QAEhB,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;QACpB,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC;QAC/C,IAAI,CAAC,EAAE,GAAG,yBAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACxB,IAAI,CAAC,EAAE,GAAG,yBAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACxB,IAAI,CAAC,KAAK,GAAG;YACX,YAAY,EAAE,EAAE;YAChB,WAAW,EAAE,EAAE;YACf,CAAC,EAAE,EAAE;YACL,IAAI,EAAE,EAAE;YACR,aAAa,EAAE,EAAE;SAClB,CAAC;QACF,IAAI,CAAC,MAAM,GAAG;YACZ,yBAAK,CAAC,GAAG,CAAC,0BAAO,CAAC,EAAE,CAAC,EAAE,yBAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC;YAC7D,yBAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,GAAG,0BAAO,CAAC,EAAE,CAAC,CAAC;YACxC,yBAAK,CAAC,GAAG,CAAC,yBAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,EAAE,GAAG,0BAAO,CAAC,EAAE,CAAC,CAAC;SAC9D,CAAC;QACF,IAAI,CAAC,OAAO,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QAEhE,MAAM,OAAO,GACX,0BAAO,CAAC,EAAE,CAAC,GAAG,yBAAK,CAAC,GAAG,CAAC,yBAAK,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QAExE,IAAI,CAAC,YAAY,GAAG,yBAAK,CAAC,GAAG,CAC3B,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EACd,yBAAK,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CACpC,CAAC;QACF,IAAI,CAAC,MAAM,GAAG,yBAAK,CAAC,GAAG,CAAC,yBAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;QACrE,IAAI,CAAC,OAAO,GAAG,yBAAK,CAAC,GAAG,CACtB,yBAAK,CAAC,GAAG,CACP,yBAAK,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAC3C,yBAAK,CAAC,GAAG,CAAC,0BAAO,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,GAAG,0BAAO,CAAC,EAAE,CAAC,CAC7C,EACD,yBAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAC1B,CAAC;QACF,IAAI,CAAC,QAAQ,GAAG,0BAAO,CAAC,EAAE,CAAC,GAAG,yBAAK,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC;QACzE,IAAI,CAAC,SAAS,GAAG,yBAAK,CAAC,GAAG,CACxB,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EACd,0BAAO,CAAC,EAAE,CAAC;YACT,yBAAK,CAAC,GAAG,CAAC,yBAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAC/D,CAAC;QACF,IAAI,CAAC,KAAK,GAAG,yBAAK,CAAC,GAAG,CAAC,yBAAK,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;QACpE,IAAI,CAAC,MAAM,GAAG,yBAAK,CAAC,GAAG,CACrB,yBAAK,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,EACzC,yBAAK,CAAC,GAAG,CAAC,0BAAO,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,0BAAO,CAAC,EAAE,CAAC,CAC9C,CAAC;QAEF,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC;QACzC,IAAI,CAAC,UAAU,GAAG,yBAAK,CAAC,GAAG,CACzB,0BAAO,CAAC,EAAE,CAAC,EACX,yBAAK,CAAC,GAAG,CAAC,0BAAO,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YACrC,yBAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CACrC,CAAC;QACF,IAAI,CAAC,OAAO,GAAG,yBAAK,CAAC,GAAG,CACtB,yBAAK,CAAC,GAAG,CAAC,yBAAK,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,EAC/D,0BAAO,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,CACtB,CAAC;QACF,IAAI,CAAC,QAAQ,GAAG,CAAC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC;IAClD,CAAC;IAED,IAAI,CACF,KAAwB,EACxB,SAAiB,EACjB,MAAc,EACd,WAAoB;QAEpB,IAAI,KAAK,CAAC,YAAY,IAAI,EAAE,IAAI,KAAK,CAAC,WAAW,IAAI,EAAE,EAAE;YACvD,OAAO,EAAE,CAAC;SACX;QACD,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,WAAW,EAAE;YACf,OAAO,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;SAC7C;aAAM;YACL,OAAO,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;SAC7C;IACH,CAAC;IAED,UAAU;QACR,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAChD,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,EAAE;YACxB,OAAO,yBAAK,CAAC,GAAG,CACd,IAAI,CAAC,YAAY,EACjB,yBAAK,CAAC,GAAG,CACP,0BAAO,CAAC,EAAE,CAAC,GAAG,yBAAK,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAC5C,IAAI,CAAC,mBAAmB,CACzB,CACF,CAAC;SACH;aAAM;YACL,OAAO,yBAAK,CAAC,GAAG,CACd,CAAC,IAAI,CAAC,YAAY,EAClB,yBAAK,CAAC,GAAG,CACP,yBAAK,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,0BAAO,CAAC,EAAE,CAAC,EAC5C,IAAI,CAAC,mBAAmB,CACzB,CACF,CAAC;SACH;IACH,CAAC;IAED,aAAa;QACX,IAAI,IAAI,CAAC,SAAS,GAAG,EAAE,EAAE;YACvB,OAAO,IAAI,CAAC,SAAS,CAAC;SACvB;QACD,OAAO,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACpE,CAAC;IAED,cAAc,CAAC,IAAY;QACzB,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC;QAEjE,IACE,CAAC,QAAQ,IAAI,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC;YACzC,QAAQ,IAAI,IAAI,CAAC,YAAY,EAC7B;YACA,OAAO,IAAI,CAAC;SACb;QACD,MAAM,CAAC,GAAG,yBAAK,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,GAAG,QAAQ,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;QAErE,OAAO,yBAAK,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,yBAAK,CAAC,GAAG,CAAC,0BAAO,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC;IAC1E,CAAC;IAED,eAAe,CAAC,MAAc,EAAE,OAAgB;QAC9C,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QACpC,IAAI,KAAK,CAAC;QACV,IAAI,QAAQ,CAAC;QAEb,IAAI,OAAO,EAAE;YACX,IAAI,SAAS,GAAG,CAAC,EAAE;gBACjB,KAAK,GAAG,IAAI,CAAC,GAAG,GAAG,SAAS,CAAC;aAC9B;iBAAM;gBACL,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC;aAClB;YACD,KAAK,GAAG,yBAAK,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,KAAK,CAAC,CAAC;YAC3C,QAAQ,GAAG,yBAAK,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;YACpC,MAAM,WAAW,GAAG,yBAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;YAC/D,IAAI,CAAC,KAAK,CAAC,YAAY,IAAI,QAAQ,GAAG,WAAW,CAAC;SACnD;aAAM;YACL,IAAI,SAAS,GAAG,CAAC,EAAE;gBACjB,KAAK,GAAG,IAAI,CAAC,GAAG,GAAG,SAAS,CAAC;aAC9B;iBAAM;gBACL,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC;aAClB;YACD,KAAK,GAAG,yBAAK,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,KAAK,CAAC,CAAC;YAC3C,QAAQ,GAAG,yBAAK,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;YACpC,MAAM,WAAW,GAAG,yBAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;YAC/D,IAAI,CAAC,KAAK,CAAC,WAAW,IAAI,QAAQ,GAAG,WAAW,CAAC;SAClD;QACD,OAAO,MAAM,GAAG,QAAQ,CAAC;IAC3B,CAAC;IAED,eAAe,CAAC,CAAS,EAAE,CAAS,EAAE,CAAS;QAC7C,MAAM,CAAC,GAAG,yBAAK,CAAC,GAAG,CACjB,yBAAK,CAAC,IAAI,CAAC,yBAAK,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,yBAAK,CAAC,IAAI,CAAC,EAAE,EAAE,yBAAK,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAC7D,yBAAK,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,CAClB,CAAC;QACF,OAAO,yBAAK,CAAC,GAAG,CAAC,EAAE,EAAE,yBAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,yBAAK,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAC7D,CAAC;IAED,aAAa;QACX,IACE,IAAI,CAAC,KAAK,CAAC,YAAY;YACvB,yBAAK,CAAC,GAAG,CACP,yBAAK,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAC/C,IAAI,CAAC,YAAY,CAClB,EACD;YACA,OAAO,CAAC,CAAC;SACV;QAED,IACE,yBAAK,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;YAC/C,yBAAK,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,IAAI,CAAC,YAAY,CAAC,EACrD;YACA,OAAO,CAAC,CAAC;SACV;QAED,OAAO,CAAC,CAAC;IACX,CAAC;IAED,qBAAqB;QACnB,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;QACvC,MAAM,EAAE,GAAG,yBAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACpC,IAAI,UAAU,GAAe,EAAE,CAAC;QAEhC,IAAI,SAAS,IAAI,CAAC,EAAE;YAClB,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC;YAC5B,MAAM,SAAS,GAAG,yBAAK,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;YACnE,UAAU,CAAC,CAAC;gBACV,yBAAK,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC;oBAC/C,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC;YAC1B,UAAU,CAAC,EAAE,GAAG,yBAAK,CAAC,GAAG,CACvB,IAAI,CAAC,KAAK,CAAC,YAAY,EACvB,yBAAK,CAAC,GAAG,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC,GAAG,SAAS,CAC7C,CAAC;YAEF,UAAU,CAAC,EAAE;gBACX,UAAU,CAAC,CAAC;oBACZ,yBAAK,CAAC,GAAG,CACP,OAAO,EACP,yBAAK,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,GAAG,UAAU,CAAC,CAAC,CACvD;oBACD,yBAAK,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;YAE5B,UAAU,CAAC,EAAE,GAAG,IAAI,CAAC,eAAe,CAClC,IAAI,CAAC,QAAQ,EACb,UAAU,CAAC,EAAE,EACb,UAAU,CAAC,EAAE,CACd,CAAC;YAEF,UAAU,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,UAAU,CAAC,EAAE,CAAC;YACxD,UAAU,CAAC,EAAE,GAAG,EAAE,CAAC;YACnB,UAAU,CAAC,EAAE,GAAG,yBAAK,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YACvD,UAAU,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,GAAG,UAAU,CAAC,EAAE,CAAC;YACvD,UAAU,CAAC,EAAE,GAAG,EAAE,CAAC;YACnB,UAAU,CAAC,CAAC,GAAG,yBAAK,CAAC,GAAG,CAAC,yBAAK,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;SACzE;aAAM,IAAI,SAAS,IAAI,CAAC,EAAE;YACzB,UAAU,CAAC,EAAE,GAAG,yBAAK,CAAC,GAAG,CACvB,IAAI,CAAC,KAAK,CAAC,WAAW,EACtB,yBAAK,CAAC,GAAG,CACP,yBAAK,CAAC,GAAG,CACP,yBAAK,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,EAClD,IAAI,CAAC,EAAE,CACR,EACD,IAAI,CAAC,KAAK,CAAC,CAAC,CACb,GAAG,yBAAK,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,CACnD,CAAC;YAEF,UAAU,CAAC,EAAE;gBACX,yBAAK,CAAC,GAAG,CACP,yBAAK,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAChD,0BAAO,CAAC,EAAE,CAAC,GAAG,yBAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,SAAS,CAAC,CACjD;oBACD,yBAAK,CAAC,GAAG,CACP,IAAI,CAAC,KAAK,CAAC,WAAW,EACtB,IAAI,CAAC,KAAK,GAAG,yBAAK,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,CACzC,CAAC;YACJ,UAAU,CAAC,EAAE,GAAG,IAAI,CAAC,eAAe,CAClC,IAAI,CAAC,QAAQ,EACb,UAAU,CAAC,EAAE,EACb,UAAU,CAAC,EAAE,CACd,CAAC;YACF,UAAU,CAAC,CAAC,GAAG,yBAAK,CAAC,GAAG,CACtB,IAAI,CAAC,KAAK,CAAC,WAAW,GAAG,UAAU,CAAC,EAAE,EACtC,yBAAK,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,CAAC,CAC9B,CAAC;YACF,UAAU,CAAC,EAAE,GAAG,yBAAK,CAAC,GAAG,CACvB,yBAAK,CAAC,GAAG,CAAC,yBAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAC9C,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CACf,CAAC;YACF,UAAU,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,GAAG,UAAU,CAAC,EAAE,GAAG,UAAU,CAAC,EAAE,CAAC;YACvE,UAAU,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC;YACxC,UAAU,CAAC,EAAE,GAAG,EAAE,CAAC;YACnB,UAAU,CAAC,EAAE,GAAG,EAAE,CAAC;SACpB;aAAM;YACL,UAAU,CAAC,EAAE,GAAG,yBAAK,CAAC,GAAG,CACvB,IAAI,CAAC,KAAK,CAAC,YAAY,EACvB,yBAAK,CAAC,GAAG,CACP,yBAAK,CAAC,GAAG,CACP,yBAAK,CAAC,GAAG,CAAC,yBAAK,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,EAClE,IAAI,CAAC,UAAU,CAChB,EACD,IAAI,CAAC,EAAE,CACR,GAAG,yBAAK,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,IAAI,CAAC,OAAO,CAAC,CACrD,CAAC;YACF,UAAU,CAAC,EAAE;gBACX,yBAAK,CAAC,GAAG,CACP,yBAAK,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAC/C,yBAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,GAAG,yBAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,CACjE;oBACD,yBAAK,CAAC,GAAG,CACP,IAAI,CAAC,KAAK,CAAC,YAAY,EACvB,IAAI,CAAC,UAAU,GAAG,yBAAK,CAAC,GAAG,CAAC,0BAAO,CAAC,EAAE,CAAC,GAAG,0BAAO,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,CACrE,CAAC;YACJ,UAAU,CAAC,EAAE,GAAG,IAAI,CAAC,eAAe,CAClC,IAAI,CAAC,QAAQ,EACb,UAAU,CAAC,EAAE,EACb,UAAU,CAAC,EAAE,CACd,CAAC;YACF,UAAU,CAAC,CAAC,GAAG,yBAAK,CAAC,GAAG,CACtB,yBAAK,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,UAAU,CAAC,EAAE,EAAE,IAAI,CAAC,UAAU,CAAC,EACnE,EAAE,CACH,CAAC;YACF,UAAU,CAAC,EAAE,GAAG,yBAAK,CAAC,GAAG,CAAC,yBAAK,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;YACxE,UAAU,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,UAAU,CAAC,EAAE,GAAG,UAAU,CAAC,EAAE,CAAC;YACxE,UAAU,CAAC,EAAE,GAAG,EAAE,CAAC;YACnB,UAAU,CAAC,EAAE,GAAG,EAAE,CAAC;YACnB,UAAU,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC;SACxC;QAED,OAAO;YACL,IAAI,EAAE,CAAC,UAAU,CAAC,EAAE,EAAE,UAAU,CAAC,EAAE,EAAE,UAAU,CAAC,EAAE,CAAC;YACnD,KAAK,EAAE,CAAC,UAAU,CAAC,EAAE,EAAE,UAAU,CAAC,EAAE,EAAE,UAAU,CAAC,EAAE,CAAC;YACpD,CAAC,EAAE,UAAU,CAAC,CAAC;YACf,SAAS,EAAE,SAAS;SACrB,CAAC;IACJ,CAAC;IAED,uBAAuB,CAAC,OAAe,EAAE,MAAc,EAAE,SAAc;QACrE,IAAI,OAAO,GAAG,CAAC,EAAE;YACf,MAAM,IAAI,KAAK,CAAC,SAAS,IAAI,CAAC,MAAM,sBAAsB,CAAC,CAAC;SAC7D;QACD,IAAI,OAAO,GAAW,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC7C,IAAI,QAAQ,GAAG,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACvC,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC;QAEpB,IAAI,MAAM,IAAI,CAAC,EAAE;YACf,CAAC,GAAG,yBAAK,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;SAC1B;QAED,IAAI,MAAc,CAAC;QACnB,IAAI,KAAa,CAAC;QAElB,IAAI,MAAM,IAAI,CAAC,EAAE;YACf,MAAM,GAAG,yBAAK,CAAC,IAAI,CAAC,yBAAK,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YACrD,KAAK,GAAG,yBAAK,CAAC,IAAI,CAAC,yBAAK,CAAC,GAAG,CAAC,yBAAK,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;SACxE;aAAM,IAAI,MAAM,IAAI,CAAC,EAAE;YACtB,MAAM,GAAG,yBAAK,CAAC,IAAI,CAAC,yBAAK,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YACrD,KAAK,GAAG,yBAAK,CAAC,IAAI,CAAC,yBAAK,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;SACrD;aAAM;YACL,MAAM,GAAG,yBAAK,CAAC,IAAI,CAAC,yBAAK,CAAC,GAAG,CAAC,yBAAK,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YACxE,KAAK,GAAG,yBAAK,CAAC,IAAI,CAAC,yBAAK,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;SACrD;QAED,IAAI,EAAE,GAAG,yBAAK,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QAC7B,IAAI,EAAE,GAAG,yBAAK,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;QAC9B,IAAI,QAAQ,GAAW,yBAAK,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,GAAG,EAAE,CAAC;QACjD,IAAI,WAAW,GAAG,yBAAK,CAAC,GAAG,CAAC,EAAE,EAAE,OAAO,GAAG,QAAQ,GAAG,QAAQ,CAAC,CAAC;QAC/D,IAAI,QAAgB,CAAC;QACrB,IAAI,OAAe,CAAC;QAEpB,IAAI,WAAW,GAAG,EAAE,EAAE;YACpB,OAAO,GAAG,OAAO,CAAC;YAClB,QAAQ,GAAG,EAAE,CAAC;SACf;aAAM;YACL,MAAM,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC;YACvB,MAAM,CAAC,GAAG,QAAQ,GAAG,EAAE,GAAG,OAAO,CAAC;YAClC,OAAO,GAAG,yBAAK,CAAC,GAAG,CAAC,yBAAK,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;YAC9C,QAAQ,GAAG,yBAAK,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC;SACtC;QAED,OAAO;YACL,UAAU,EAAE,OAAO,GAAG,WAAW;YACjC,SAAS,EAAE,CAAC,OAAO;YACnB,MAAM,EAAE,WAAW;YACnB,QAAQ,EAAE,QAAQ;SACnB,CAAC;IACJ,CAAC;IAED,uBAAuB,CACrB,MAAc,EACd,MAAc,EACd,SAAc;QAEd,IAAI,MAAM,GAAG,CAAC,EAAE;YACd,MAAM,IAAI,KAAK,CAAC,SAAS,IAAI,CAAC,MAAM,sBAAsB,CAAC,CAAC;SAC7D;QACD,IAAI,OAAO,GAAW,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC7C,IAAI,QAAQ,GAAG,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACvC,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC;QACpB,IAAI,MAAM,IAAI,CAAC,EAAE;YACf,CAAC,GAAG,yBAAK,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;SAC1B;QACD,IAAI,MAAc,CAAC;QACnB,IAAI,KAAa,CAAC;QAElB,IAAI,MAAM,IAAI,CAAC,EAAE;YACf,MAAM,GAAG,yBAAK,CAAC,IAAI,CAAC,yBAAK,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YACrD,KAAK,GAAG,yBAAK,CAAC,IAAI,CAAC,yBAAK,CAAC,GAAG,CAAC,yBAAK,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;SACxE;aAAM,IAAI,MAAM,IAAI,CAAC,EAAE;YACtB,MAAM,GAAG,yBAAK,CAAC,IAAI,CAAC,yBAAK,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YACrD,KAAK,GAAG,yBAAK,CAAC,IAAI,CAAC,yBAAK,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;SACrD;aAAM;YACL,MAAM,GAAG,yBAAK,CAAC,IAAI,CAAC,yBAAK,CAAC,GAAG,CAAC,yBAAK,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YACxE,KAAK,GAAG,yBAAK,CAAC,IAAI,CAAC,yBAAK,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;SACrD;QAED,IAAI,EAAE,GAAG,yBAAK,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QAC7B,IAAI,EAAE,GAAG,yBAAK,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;QAC9B,IAAI,OAAO,GAAW,yBAAK,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC;QAC/C,IAAI,UAAU,GAAG,yBAAK,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,GAAG,OAAO,CAAC,CAAC;QAC3D,IAAI,QAAgB,CAAC;QACrB,IAAI,QAAgB,CAAC;QAErB,IAAI,UAAU,GAAG,CAAC,EAAE;YAClB,QAAQ,GAAG,QAAQ,CAAC;YACpB,QAAQ,GAAG,EAAE,CAAC;SACf;aAAM;YACL,MAAM,CAAC,GAAG,EAAE,GAAG,OAAO,GAAG,MAAM,CAAC;YAChC,MAAM,CAAC,GAAG,QAAQ,GAAG,EAAE,CAAC;YACxB,QAAQ,GAAG,yBAAK,CAAC,GAAG,CAAC,yBAAK,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;YAC9C,QAAQ,GAAG,yBAAK,CAAC,GAAG,CAAC,CAAC,GAAG,QAAQ,EAAE,CAAC,CAAC,CAAC;SACvC;QAED,OAAO;YACL,UAAU,EAAE,CAAC,QAAQ;YACrB,SAAS,EAAE,MAAM,GAAG,UAAU;YAC9B,MAAM,EAAE,UAAU;YAClB,QAAQ,EAAE,QAAQ;SACnB,CAAC;IACJ,CAAC;IAED,cAAc,CACZ,SAAc,EACd,QAAa,EACb,UAAkB,EAClB,OAAgB;QAEhB,IAAI,KAAK,GAAG,0BAAO,CAAC,EAAE,CAAC,GAAG,yBAAK,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,GAAG,0BAAO,CAAC,EAAE,CAAC,CAAC,CAAC;QAExE,IAAI,OAAO,EAAE;YACX,MAAM,SAAS,GAAG,yBAAK,CAAC,GAAG,CACzB,yBAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,GAAG,0BAAO,CAAC,EAAE,CAAC,CAAC,EACtC,IAAI,CAAC,EAAE,CACR,CAAC;YACF,MAAM,KAAK,GACT,UAAU,IAAI,CAAC;gBACf,CAAC,UAAU,IAAI,CAAC;oBACd,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;wBAChB,QAAQ,CAAC,UAAU;wBACnB,yBAAK,CAAC,GAAG,CACP,yBAAK,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAC/D,KAAK,CACN;wBACD,yBAAK,CAAC,GAAG,CACP,yBAAK,CAAC,GAAG,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,EACjC,yBAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CACzB,CAAC,CAAC;YACT,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;SACzB;aAAM;YACL,MAAM,SAAS,GAAG,yBAAK,CAAC,GAAG,CACzB,IAAI,CAAC,CAAC,EACN,yBAAK,CAAC,GAAG,CAAC,yBAAK,CAAC,GAAG,CAAC,0BAAO,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,GAAG,0BAAO,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,CAChE,CAAC;YACF,MAAM,KAAK,GACT,UAAU,IAAI,CAAC;gBACf,CAAC,UAAU,IAAI,CAAC;oBACd,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;wBAChB,QAAQ,CAAC,UAAU;wBACnB,yBAAK,CAAC,GAAG,CACP,yBAAK,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAC/D,KAAK,CACN;wBACD,yBAAK,CAAC,GAAG,CACP,yBAAK,CAAC,GAAG,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,EACjC,yBAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CACzB,CAAC,CAAC;YACT,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;SACzB;IACH,CAAC;IAED,iBAAiB,CAAC,OAAe,EAAE,SAAkB;QACnD,IAAI,OAAO,GAAG,CAAC,EAAE;YACf,MAAM,IAAI,KAAK,CAAC,SAAS,IAAI,CAAC,MAAM,0BAA0B,CAAC,CAAC;SACjE;QACD,IAAI,SAAS,EAAE;YACb,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;SAC/C;QAED,MAAM,SAAS,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAC/C,IAAI,UAAU,GAAG,SAAS,CAAC,SAAS,CAAC;QACrC,MAAM,QAAQ,GAAG;YACf,IAAI,CAAC,uBAAuB,CAAC,OAAO,EAAE,UAAU,EAAE,SAAS,CAAC;SAC7D,CAAC;QACF,IAAI,OAAO,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACrC,IAAI,OAAO,GAAG,CAAC,CAAC;QAEhB,OAAO,IAAI,EAAE;YACX,IAAI,QAAQ,CAAC,OAAO,CAAC,CAAC,MAAM,IAAI,EAAE,EAAE;gBAClC,MAAM;aACP;YACD,OAAO,EAAE,CAAC;YACV,UAAU,EAAE,CAAC;YACb,IAAI,UAAU,GAAG,CAAC,EAAE;gBAClB,MAAM,IAAI,KAAK,CAAC,SAAS,IAAI,CAAC,MAAM,wBAAwB,CAAC,CAAC;aAC/D;YAED,QAAQ,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,uBAAuB,CAC9C,QAAQ,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,MAAM,EAC5B,UAAU,EACV,SAAS,CACV,CAAC;YACF,OAAO,IAAI,QAAQ,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC;SACxC;QAED,IAAI,SAAS,IAAI,IAAI,CAAC,gBAAgB,GAAG,CAAC,EAAE;YAC1C,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,cAAc,CACxC,SAAS,EACT,QAAQ,CAAC,OAAO,CAAC,EACjB,UAAU,EACV,IAAI,CACL,CAAC;YAEF,IAAI,KAAK,EAAE;gBACT,IAAI,SAAS,GAAG,yBAAK,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;gBAC/C,IAAI,IAAI,GAAG,yBAAK,CAAC,GAAG,CAClB,0BAAO,CAAC,EAAE,CAAC;oBACT,yBAAK,CAAC,GAAG,CACP,yBAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,QAAQ,GAAG,SAAS,EAAE,SAAS,CAAC,EAC5D,IAAI,CAAC,gBAAgB,CACtB,EACH,IAAI,CAAC,KAAK,CAAC,CAAC,CACb,CAAC;gBACF,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;gBACpB,OAAO,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;aAC/C;SACF;QACD,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;QAC5B,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,iBAAiB,CAAC,MAAc,EAAE,SAAkB;QAClD,IAAI,SAAS,EAAE;YACb,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;SAC9C;QAED,MAAM,SAAS,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAC/C,IAAI,UAAU,GAAG,SAAS,CAAC,SAAS,CAAC;QACrC,MAAM,QAAQ,GAAG;YACf,IAAI,CAAC,uBAAuB,CAAC,MAAM,EAAE,UAAU,EAAE,SAAS,CAAC;SAC5D,CAAC;QACF,IAAI,QAAQ,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC;QACvC,IAAI,OAAO,GAAG,CAAC,CAAC;QAEhB,OAAO,IAAI,EAAE;YACX,IAAI,QAAQ,CAAC,OAAO,CAAC,CAAC,MAAM,IAAI,EAAE,EAAE;gBAClC,MAAM;aACP;YACD,IAAI,UAAU,IAAI,CAAC,EAAE;gBACnB,MAAM,IAAI,KAAK,CAAC,SAAS,IAAI,CAAC,MAAM,yBAAyB,CAAC,CAAC;aAChE;YACD,OAAO,EAAE,CAAC;YACV,UAAU,IAAI,CAAC,CAAC;YAEhB,QAAQ,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,uBAAuB,CAC9C,QAAQ,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,MAAM,EAC5B,UAAU,EACV,SAAS,CACV,CAAC;YAEF,QAAQ,IAAI,QAAQ,CAAC,OAAO,CAAC,CAAC,UAAU,CAAC;SAC1C;QAED,IAAI,SAAS,IAAI,IAAI,CAAC,gBAAgB,GAAG,CAAC,EAAE;YAC1C,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,cAAc,CACxC,SAAS,EACT,QAAQ,CAAC,OAAO,CAAC,EACjB,UAAU,EACV,KAAK,CACN,CAAC;YAEF,IAAI,KAAK,EAAE;gBACT,IAAI,SAAS,GAAG,yBAAK,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;gBAC/C,IAAI,IAAI,GAAG,yBAAK,CAAC,GAAG,CAClB,0BAAO,CAAC,EAAE,CAAC;oBACT,yBAAK,CAAC,GAAG,CACP,yBAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,QAAQ,GAAG,SAAS,EAAE,SAAS,CAAC,EAC5D,IAAI,CAAC,gBAAgB,CACtB,EACH,IAAI,CAAC,KAAK,CAAC,CAAC,CACb,CAAC;gBACF,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;gBACpB,OAAO,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;aAC9C;SACF;QACD,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;QAC5B,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,YAAY,CAAC,QAAa;QACxB,IAAI,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC;QAC1C,IAAI,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC;QAE5C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACxC,MAAM,gBAAgB,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;YACrC,YAAY,IAAI,gBAAgB,CAAC,SAAS,CAAC;YAC3C,aAAa,IAAI,gBAAgB,CAAC,UAAU,CAAC;SAC9C;QAED,IAAI,CAAC,KAAK,CAAC,WAAW,GAAG,YAAY,CAAC;QACtC,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,aAAa,CAAC;IAC1C,CAAC;IAED,QAAQ,CAAC,IAAY;QACnB,IAAI,IAAI,IAAI,CAAC,EAAE;YACb,MAAM,IAAI,KAAK,CAAC,SAAS,IAAI,CAAC,MAAM,wBAAwB,CAAC,CAAC;SAC/D;QACD,IAAI,IAAI,CAAC,KAAK,CAAC,aAAa,IAAI,EAAE,EAAE;YAClC,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC;SACxB;aAAM;YACL,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;SACrD;QACD,IAAI,CAAC,KAAK,CAAC,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC;QAC1C,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC;IACtB,CAAC;CACF;AA/mBD,4CA+mBC"}
@@ -0,0 +1,17 @@
1
+ export declare class MMath {
2
+ static ONE: bigint;
3
+ static MAX_POW_RELATIVE_ERROR: bigint;
4
+ static abs(x: bigint): bigint;
5
+ static min(a: bigint, b: bigint): bigint;
6
+ static max(a: bigint, b: bigint): bigint;
7
+ static add(a: bigint, b: bigint): bigint;
8
+ static sub(a: bigint, b: bigint): bigint;
9
+ static mul(a: bigint, b: bigint): bigint;
10
+ static mulUpFixed(a: bigint, b: bigint): bigint;
11
+ static div(a: bigint, b: bigint): bigint;
12
+ static sqrt(x: bigint): bigint;
13
+ static sDivDownFixed(a: bigint, b: bigint): bigint;
14
+ static sMulUpFixed(a: bigint, b: bigint): bigint;
15
+ static sMul(a: bigint, b: bigint): bigint;
16
+ static sMulDownFixed(a: bigint, b: bigint): bigint;
17
+ }