@sonarwatch/portfolio-plugins 0.14.87 → 0.14.89
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/CHANGELOG.md +8 -0
- package/package.json +4 -4
- package/src/plugins/exponent/liquidityFetcher.js +10 -3
- package/src/plugins/exponent/liquidityFetcher.js.map +1 -1
- package/src/plugins/exponent/marketsJob.js +27 -3
- package/src/plugins/exponent/marketsJob.js.map +1 -1
- package/src/plugins/exponent/ptPricesJob.js +16 -13
- package/src/plugins/exponent/ptPricesJob.js.map +1 -1
- package/src/plugins/exponent/tradeFetcher.js +4 -1
- package/src/plugins/exponent/tradeFetcher.js.map +1 -1
- package/src/plugins/jupiter/governance/constants.d.ts +1 -0
- package/src/plugins/jupiter/governance/constants.js +9 -1
- package/src/plugins/jupiter/governance/constants.js.map +1 -1
- package/src/plugins/jupiter/governance/jupuary2025AirdropFetcher.d.ts +2 -0
- package/src/plugins/jupiter/governance/jupuary2025AirdropFetcher.js +37 -0
- package/src/plugins/jupiter/governance/jupuary2025AirdropFetcher.js.map +1 -0
- package/src/plugins/jupiter/index.js +2 -0
- package/src/plugins/jupiter/index.js.map +1 -1
package/CHANGELOG.md
CHANGED
@@ -2,6 +2,14 @@
|
|
2
2
|
|
3
3
|
This file was generated using [@jscutlery/semver](https://github.com/jscutlery/semver).
|
4
4
|
|
5
|
+
## [0.14.89](https://github.com/sonarwatch/portfolio/compare/plugins-0.14.88...plugins-0.14.89) (2025-01-16)
|
6
|
+
|
7
|
+
|
8
|
+
|
9
|
+
## [0.14.88](https://github.com/sonarwatch/portfolio/compare/plugins-0.14.87...plugins-0.14.88) (2025-01-16)
|
10
|
+
|
11
|
+
|
12
|
+
|
5
13
|
## [0.14.87](https://github.com/sonarwatch/portfolio/compare/plugins-0.14.86...plugins-0.14.87) (2025-01-14)
|
6
14
|
|
7
15
|
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@sonarwatch/portfolio-plugins",
|
3
|
-
"version": "0.14.
|
3
|
+
"version": "0.14.89",
|
4
4
|
"type": "commonjs",
|
5
5
|
"types": "./src/index.d.ts",
|
6
6
|
"peerDependencies": {
|
@@ -25,12 +25,12 @@
|
|
25
25
|
"@mysten/sui": "^1.12.0",
|
26
26
|
"@onsol/tldparser": "^0.6.1",
|
27
27
|
"@project-serum/anchor": "^0.26.0",
|
28
|
-
"@sei-js/core": "^3.
|
29
|
-
"@sei-js/proto": "^3.0
|
28
|
+
"@sei-js/core": "^3.2.1",
|
29
|
+
"@sei-js/proto": "^3.1.0",
|
30
30
|
"@solana/web3.js": "^1.91.8",
|
31
31
|
"@solanafm/explorer-kit": "^1.1.3",
|
32
32
|
"@solanafm/explorer-kit-idls": "^1.1.3",
|
33
|
-
"axios": "^1.7.
|
33
|
+
"axios": "^1.7.9",
|
34
34
|
"bignumber.js": "^9.1.2",
|
35
35
|
"bn.js": "^5.2.1",
|
36
36
|
"buffer": "6.0.1",
|
@@ -32,14 +32,21 @@ const executor = (owner, cache) => __awaiter(void 0, void 0, void 0, function* (
|
|
32
32
|
const market = markets.find((m) => m.id === account.market.toString());
|
33
33
|
if (!market)
|
34
34
|
return;
|
35
|
+
const maturity = new Date((market.vault.start + market.vault.duration) * 1000);
|
35
36
|
const element = elementRegistry.addElementLiquidity({
|
36
37
|
label: 'Vault',
|
37
|
-
name: `${market.vault.platform} ${
|
38
|
+
name: `${market.vault.platform} ${maturity.toLocaleString('en-US', {
|
39
|
+
month: 'short',
|
40
|
+
})} ${maturity.getDate()} ${maturity.getFullYear().toString()}`,
|
38
41
|
});
|
39
42
|
const liquidity = element.addLiquidity();
|
40
43
|
liquidity.addAsset({
|
41
|
-
address: market.vault.
|
42
|
-
amount: account.lp_balance.multipliedBy(market.stats.
|
44
|
+
address: market.vault.mintSy,
|
45
|
+
amount: account.lp_balance.multipliedBy(market.stats.syAmountPerLpShare),
|
46
|
+
});
|
47
|
+
liquidity.addAsset({
|
48
|
+
address: market.vault.mintPt,
|
49
|
+
amount: account.lp_balance.multipliedBy(market.stats.ptAmountPerLpShare),
|
43
50
|
});
|
44
51
|
const apy = (0, helpers_1.calculateWeightedAPY)(market.stats);
|
45
52
|
liquidity.addYield({
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"liquidityFetcher.js","sourceRoot":"","sources":["../../../../../../packages/plugins/src/plugins/exponent/liquidityFetcher.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,+DAAiE;AAEjE,2CAA2E;AAE3E,gFAA6E;AAC7E,+CAA8D;AAC9D,iDAAsD;AACtD,uCAA6C;AAC7C,uCAAiD;AAEjD,MAAM,QAAQ,GAAoB,CAAO,KAAa,EAAE,KAAY,EAAE,EAAE;IACtE,MAAM,UAAU,GAAG,IAAA,yBAAe,GAAE,CAAC;IAErC,MAAM,QAAQ,GAAG,MAAM,IAAA,iCAAwB,EAC7C,UAAU,EACV,0BAAgB,EAChB,+BAAmB,EACnB;QACE,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE;QACnD,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE;KACxC,CACF,CAAC;IAEF,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAErC,MAAM,OAAO,GAAG,MAAM,uBAAW,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACjD,IAAI,CAAC,OAAO;QAAE,OAAO,EAAE,CAAC;IAExB,MAAM,eAAe,GAAG,IAAI,iCAAe,CAAC,0BAAS,CAAC,MAAM,EAAE,sBAAU,CAAC,CAAC;IAE1E,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC3B,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;QACvE,IAAI,CAAC,MAAM;YAAE,OAAO;QAEpB,MAAM,OAAO,GAAG,eAAe,CAAC,mBAAmB,CAAC;YAClD,KAAK,EAAE,OAAO;YACd,IAAI,EAAE,GAAG,MAAM,CAAC,KAAK,CAAC,QAAQ,IAAI,
|
1
|
+
{"version":3,"file":"liquidityFetcher.js","sourceRoot":"","sources":["../../../../../../packages/plugins/src/plugins/exponent/liquidityFetcher.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,+DAAiE;AAEjE,2CAA2E;AAE3E,gFAA6E;AAC7E,+CAA8D;AAC9D,iDAAsD;AACtD,uCAA6C;AAC7C,uCAAiD;AAEjD,MAAM,QAAQ,GAAoB,CAAO,KAAa,EAAE,KAAY,EAAE,EAAE;IACtE,MAAM,UAAU,GAAG,IAAA,yBAAe,GAAE,CAAC;IAErC,MAAM,QAAQ,GAAG,MAAM,IAAA,iCAAwB,EAC7C,UAAU,EACV,0BAAgB,EAChB,+BAAmB,EACnB;QACE,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE;QACnD,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE;KACxC,CACF,CAAC;IAEF,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAErC,MAAM,OAAO,GAAG,MAAM,uBAAW,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACjD,IAAI,CAAC,OAAO;QAAE,OAAO,EAAE,CAAC;IAExB,MAAM,eAAe,GAAG,IAAI,iCAAe,CAAC,0BAAS,CAAC,MAAM,EAAE,sBAAU,CAAC,CAAC;IAE1E,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC3B,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;QACvE,IAAI,CAAC,MAAM;YAAE,OAAO;QAEpB,MAAM,QAAQ,GAAG,IAAI,IAAI,CACvB,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,IAAI,CACpD,CAAC;QAEF,MAAM,OAAO,GAAG,eAAe,CAAC,mBAAmB,CAAC;YAClD,KAAK,EAAE,OAAO;YACd,IAAI,EAAE,GAAG,MAAM,CAAC,KAAK,CAAC,QAAQ,IAAI,QAAQ,CAAC,cAAc,CAAC,OAAO,EAAE;gBACjE,KAAK,EAAE,OAAO;aACf,CAAC,IAAI,QAAQ,CAAC,OAAO,EAAE,IAAI,QAAQ,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE,EAAE;SAChE,CAAC,CAAC;QAEH,MAAM,SAAS,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;QAEzC,SAAS,CAAC,QAAQ,CAAC;YACjB,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM;YAC5B,MAAM,EAAE,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,kBAAkB,CAAC;SACzE,CAAC,CAAC;QAEH,SAAS,CAAC,QAAQ,CAAC;YACjB,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM;YAC5B,MAAM,EAAE,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,kBAAkB,CAAC;SACzE,CAAC,CAAC;QAEH,MAAM,GAAG,GAAG,IAAA,8BAAoB,EAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAE/C,SAAS,CAAC,QAAQ,CAAC;YACjB,GAAG;YACH,GAAG,EAAE,IAAA,yBAAQ,EAAC,GAAG,CAAC;SACnB,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,OAAO,eAAe,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;AAC5C,CAAC,CAAA,CAAC;AAEF,MAAM,OAAO,GAAY;IACvB,EAAE,EAAE,GAAG,sBAAU,YAAY;IAC7B,SAAS,EAAE,0BAAS,CAAC,MAAM;IAC3B,QAAQ;CACT,CAAC;AAEF,kBAAe,OAAO,CAAC"}
|
@@ -14,13 +14,37 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
14
14
|
Object.defineProperty(exports, "__esModule", { value: true });
|
15
15
|
const axios_1 = __importDefault(require("axios"));
|
16
16
|
const portfolio_core_1 = require("@sonarwatch/portfolio-core");
|
17
|
+
const bignumber_js_1 = __importDefault(require("bignumber.js"));
|
17
18
|
const constants_1 = require("./constants");
|
18
19
|
const executor = (cache) => __awaiter(void 0, void 0, void 0, function* () {
|
19
20
|
const res = yield axios_1.default.get(constants_1.marketsApiUrl);
|
20
|
-
|
21
|
-
|
22
|
-
|
21
|
+
const tokenPriceSources = [];
|
22
|
+
const tokenPrices = yield cache.getTokenPricesAsMap(res.data.data.map((market) => market.vault.mintAsset), portfolio_core_1.NetworkId.solana);
|
23
|
+
res.data.data.forEach((market) => {
|
24
|
+
const tokenPriceMintAsset = tokenPrices.get(market.vault.mintAsset);
|
25
|
+
if (!tokenPriceMintAsset)
|
26
|
+
return;
|
27
|
+
const price = new bignumber_js_1.default(tokenPriceMintAsset.price)
|
28
|
+
.multipliedBy(market.stats.syPriceInAsset)
|
29
|
+
.toNumber();
|
30
|
+
tokenPriceSources.push({
|
31
|
+
address: market.vault.mintSy,
|
32
|
+
decimals: market.vault.decimals,
|
33
|
+
id: market.vault.id,
|
34
|
+
networkId: portfolio_core_1.NetworkId.solana,
|
35
|
+
platformId: constants_1.platformId,
|
36
|
+
price,
|
37
|
+
timestamp: Date.now(),
|
38
|
+
weight: 1,
|
39
|
+
});
|
23
40
|
});
|
41
|
+
yield Promise.all([
|
42
|
+
cache.setItem(constants_1.marketsCacheKey, res.data.data, {
|
43
|
+
prefix: constants_1.platformId,
|
44
|
+
networkId: portfolio_core_1.NetworkId.solana,
|
45
|
+
}),
|
46
|
+
cache.setTokenPriceSources(tokenPriceSources),
|
47
|
+
]);
|
24
48
|
});
|
25
49
|
const job = {
|
26
50
|
id: `${constants_1.platformId}-markets`,
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"marketsJob.js","sourceRoot":"","sources":["../../../../../../packages/plugins/src/plugins/exponent/marketsJob.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAAA,kDAA6C;AAC7C,+
|
1
|
+
{"version":3,"file":"marketsJob.js","sourceRoot":"","sources":["../../../../../../packages/plugins/src/plugins/exponent/marketsJob.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAAA,kDAA6C;AAC7C,+DAAyE;AACzE,gEAAqC;AAGrC,2CAAyE;AAGzE,MAAM,QAAQ,GAAgB,CAAO,KAAY,EAAE,EAAE;IACnD,MAAM,GAAG,GAEJ,MAAM,eAAK,CAAC,GAAG,CAAC,yBAAa,CAAC,CAAC;IAEpC,MAAM,iBAAiB,GAAuB,EAAE,CAAC;IAEjD,MAAM,WAAW,GAAG,MAAM,KAAK,CAAC,mBAAmB,CACjD,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,EACrD,0BAAS,CAAC,MAAM,CACjB,CAAC;IAEF,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;QAC/B,MAAM,mBAAmB,GAAG,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QACpE,IAAI,CAAC,mBAAmB;YAAE,OAAO;QACjC,MAAM,KAAK,GAAG,IAAI,sBAAS,CAAC,mBAAmB,CAAC,KAAK,CAAC;aACnD,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC;aACzC,QAAQ,EAAE,CAAC;QAEd,iBAAiB,CAAC,IAAI,CAAC;YACrB,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM;YAC5B,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC,QAAQ;YAC/B,EAAE,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE;YACnB,SAAS,EAAE,0BAAS,CAAC,MAAM;YAC3B,UAAU,EAAV,sBAAU;YACV,KAAK;YACL,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;YACrB,MAAM,EAAE,CAAC;SACV,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,MAAM,OAAO,CAAC,GAAG,CAAC;QAChB,KAAK,CAAC,OAAO,CAAC,2BAAe,EAAE,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE;YAC5C,MAAM,EAAE,sBAAU;YAClB,SAAS,EAAE,0BAAS,CAAC,MAAM;SAC5B,CAAC;QACF,KAAK,CAAC,oBAAoB,CAAC,iBAAiB,CAAC;KAC9C,CAAC,CAAC;AACL,CAAC,CAAA,CAAC;AAEF,MAAM,GAAG,GAAQ;IACf,EAAE,EAAE,GAAG,sBAAU,UAAU;IAC3B,QAAQ;IACR,KAAK,EAAE,QAAQ;CAChB,CAAC;AAEF,kBAAe,GAAG,CAAC"}
|
@@ -17,10 +17,13 @@ const portfolio_core_1 = require("@sonarwatch/portfolio-core");
|
|
17
17
|
const constants_1 = require("./constants");
|
18
18
|
const executor = (cache) => __awaiter(void 0, void 0, void 0, function* () {
|
19
19
|
const res = yield axios_1.default.get(constants_1.ptTokensApiUrl);
|
20
|
-
const tokenPrices =
|
20
|
+
/* const tokenPrices = await cache.getTokenPricesAsMap(
|
21
|
+
res.data.data.map((ptToken) => ptToken.baseAssetMint),
|
22
|
+
NetworkId.solana
|
23
|
+
); */
|
21
24
|
const tokenPriceSources = [];
|
22
25
|
res.data.data.forEach((ptToken) => {
|
23
|
-
const baseTokenPrice = tokenPrices.get(ptToken.baseAssetMint);
|
26
|
+
// const baseTokenPrice = tokenPrices.get(ptToken.baseAssetMint);
|
24
27
|
const tokenPriceSource = {
|
25
28
|
address: ptToken.mint,
|
26
29
|
decimals: ptToken.decimals,
|
@@ -32,17 +35,17 @@ const executor = (cache) => __awaiter(void 0, void 0, void 0, function* () {
|
|
32
35
|
weight: 1,
|
33
36
|
elementName: 'Income',
|
34
37
|
};
|
35
|
-
if (baseTokenPrice) {
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
}
|
38
|
+
/* if (baseTokenPrice) {
|
39
|
+
tokenPriceSource.underlyings = [
|
40
|
+
{
|
41
|
+
address: ptToken.baseAssetMint,
|
42
|
+
amountPerLp: ptToken.priceInBaseAsset,
|
43
|
+
decimals: baseTokenPrice.decimals,
|
44
|
+
networkId: baseTokenPrice.networkId,
|
45
|
+
price: baseTokenPrice.price,
|
46
|
+
},
|
47
|
+
];
|
48
|
+
} */
|
46
49
|
tokenPriceSources.push(tokenPriceSource);
|
47
50
|
});
|
48
51
|
yield cache.setTokenPriceSources(tokenPriceSources);
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"ptPricesJob.js","sourceRoot":"","sources":["../../../../../../packages/plugins/src/plugins/exponent/ptPricesJob.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAAA,kDAA6C;AAC7C,+DAAyE;AAGzE,2CAAyD;AAGzD,MAAM,QAAQ,GAAgB,CAAO,KAAY,EAAE,EAAE;IACnD,MAAM,GAAG,GAEJ,MAAM,eAAK,CAAC,GAAG,CAAC,0BAAc,CAAC,CAAC;IAErC
|
1
|
+
{"version":3,"file":"ptPricesJob.js","sourceRoot":"","sources":["../../../../../../packages/plugins/src/plugins/exponent/ptPricesJob.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAAA,kDAA6C;AAC7C,+DAAyE;AAGzE,2CAAyD;AAGzD,MAAM,QAAQ,GAAgB,CAAO,KAAY,EAAE,EAAE;IACnD,MAAM,GAAG,GAEJ,MAAM,eAAK,CAAC,GAAG,CAAC,0BAAc,CAAC,CAAC;IAErC;;;SAGK;IAEL,MAAM,iBAAiB,GAAuB,EAAE,CAAC;IAEjD,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAChC,iEAAiE;QACjE,MAAM,gBAAgB,GAAqB;YACzC,OAAO,EAAE,OAAO,CAAC,IAAI;YACrB,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,EAAE,EAAE,OAAO,CAAC,aAAa;YACzB,SAAS,EAAE,0BAAS,CAAC,MAAM;YAC3B,UAAU,EAAV,sBAAU;YACV,KAAK,EAAE,OAAO,CAAC,UAAU;YACzB,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;YACrB,MAAM,EAAE,CAAC;YACT,WAAW,EAAE,QAAQ;SACtB,CAAC;QACF;;;;;;;;;;YAUI;QAEJ,iBAAiB,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IAC3C,CAAC,CAAC,CAAC;IAEH,MAAM,KAAK,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,CAAC;AACtD,CAAC,CAAA,CAAC;AAEF,MAAM,GAAG,GAAQ;IACf,EAAE,EAAE,GAAG,sBAAU,YAAY;IAC7B,QAAQ;IACR,KAAK,EAAE,QAAQ;CAChB,CAAC;AAEF,kBAAe,GAAG,CAAC"}
|
@@ -31,9 +31,12 @@ const executor = (owner, cache) => __awaiter(void 0, void 0, void 0, function* (
|
|
31
31
|
const market = markets.find((m) => m.vault.id === account.vault.toString());
|
32
32
|
if (!market)
|
33
33
|
return;
|
34
|
+
const maturity = new Date((market.vault.start + market.vault.duration) * 1000);
|
34
35
|
const element = elementRegistry.addElementMultiple({
|
35
36
|
label: 'Deposit',
|
36
|
-
name: `${market.vault.platform} ${
|
37
|
+
name: `${market.vault.platform} ${maturity.toLocaleString('en-US', {
|
38
|
+
month: 'short',
|
39
|
+
})} ${maturity.getDate()} ${maturity.getFullYear().toString()}`,
|
37
40
|
});
|
38
41
|
element.addAsset({
|
39
42
|
address: market.vault.mintAsset,
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"tradeFetcher.js","sourceRoot":"","sources":["../../../../../../packages/plugins/src/plugins/exponent/tradeFetcher.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,+DAAuD;AAEvD,2CAA2E;AAE3E,gFAA6E;AAC7E,+CAA8D;AAC9D,iDAAsD;AACtD,uCAA6C;AAE7C,MAAM,QAAQ,GAAoB,CAAO,KAAa,EAAE,KAAY,EAAE,EAAE;IACtE,MAAM,UAAU,GAAG,IAAA,yBAAe,GAAE,CAAC;IAErC,MAAM,QAAQ,GAAG,MAAM,IAAA,iCAAwB,EAC7C,UAAU,EACV,0BAAgB,EAChB,+BAAmB,EACnB;QACE,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE;QAC/C,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE;KACxC,CACF,CAAC;IAEF,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAErC,MAAM,OAAO,GAAG,MAAM,uBAAW,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACjD,IAAI,CAAC,OAAO;QAAE,OAAO,EAAE,CAAC;IAExB,MAAM,eAAe,GAAG,IAAI,iCAAe,CAAC,0BAAS,CAAC,MAAM,EAAE,sBAAU,CAAC,CAAC;IAE1E,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC3B,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,KAAK,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC5E,IAAI,CAAC,MAAM;YAAE,OAAO;QAEpB,MAAM,OAAO,GAAG,eAAe,CAAC,kBAAkB,CAAC;YACjD,KAAK,EAAE,SAAS;YAChB,IAAI,EAAE,GAAG,MAAM,CAAC,KAAK,CAAC,QAAQ,IAAI,
|
1
|
+
{"version":3,"file":"tradeFetcher.js","sourceRoot":"","sources":["../../../../../../packages/plugins/src/plugins/exponent/tradeFetcher.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,+DAAuD;AAEvD,2CAA2E;AAE3E,gFAA6E;AAC7E,+CAA8D;AAC9D,iDAAsD;AACtD,uCAA6C;AAE7C,MAAM,QAAQ,GAAoB,CAAO,KAAa,EAAE,KAAY,EAAE,EAAE;IACtE,MAAM,UAAU,GAAG,IAAA,yBAAe,GAAE,CAAC;IAErC,MAAM,QAAQ,GAAG,MAAM,IAAA,iCAAwB,EAC7C,UAAU,EACV,0BAAgB,EAChB,+BAAmB,EACnB;QACE,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE;QAC/C,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE;KACxC,CACF,CAAC;IAEF,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAErC,MAAM,OAAO,GAAG,MAAM,uBAAW,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACjD,IAAI,CAAC,OAAO;QAAE,OAAO,EAAE,CAAC;IAExB,MAAM,eAAe,GAAG,IAAI,iCAAe,CAAC,0BAAS,CAAC,MAAM,EAAE,sBAAU,CAAC,CAAC;IAE1E,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC3B,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,KAAK,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC5E,IAAI,CAAC,MAAM;YAAE,OAAO;QAEpB,MAAM,QAAQ,GAAG,IAAI,IAAI,CACvB,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,IAAI,CACpD,CAAC;QAEF,MAAM,OAAO,GAAG,eAAe,CAAC,kBAAkB,CAAC;YACjD,KAAK,EAAE,SAAS;YAChB,IAAI,EAAE,GAAG,MAAM,CAAC,KAAK,CAAC,QAAQ,IAAI,QAAQ,CAAC,cAAc,CAAC,OAAO,EAAE;gBACjE,KAAK,EAAE,OAAO;aACf,CAAC,IAAI,QAAQ,CAAC,OAAO,EAAE,IAAI,QAAQ,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE,EAAE;SAChE,CAAC,CAAC;QAEH,OAAO,CAAC,QAAQ,CAAC;YACf,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,SAAS;YAC/B,MAAM,EAAE,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC;SACzE,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,OAAO,eAAe,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;AAC5C,CAAC,CAAA,CAAC;AAEF,MAAM,OAAO,GAAY;IACvB,EAAE,EAAE,GAAG,sBAAU,QAAQ;IACzB,SAAS,EAAE,0BAAS,CAAC,MAAM;IAC3B,QAAQ;CACT,CAAC;AAEF,kBAAe,OAAO,CAAC"}
|
@@ -5,6 +5,7 @@ export declare const jupDisProgram = "Dis2TfkFnXFkrtvAktEkw37sdb7qwJgY6H7YZJwk51
|
|
5
5
|
export declare const platform: Platform;
|
6
6
|
export declare const asr1Statics: AirdropStatics;
|
7
7
|
export declare const asr2Statics: AirdropStatics;
|
8
|
+
export declare const jupuaryStatics: AirdropStatics;
|
8
9
|
export type AsrItems = Map<string, {
|
9
10
|
label: string;
|
10
11
|
decimals: number;
|
@@ -1,6 +1,6 @@
|
|
1
1
|
"use strict";
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
-
exports.asr2Config = exports.asr1Config = exports.asr2Statics = exports.asr1Statics = exports.platform = exports.jupDisProgram = exports.platformId = void 0;
|
3
|
+
exports.asr2Config = exports.asr1Config = exports.jupuaryStatics = exports.asr2Statics = exports.asr1Statics = exports.platform = exports.jupDisProgram = exports.platformId = void 0;
|
4
4
|
const constants_1 = require("../launchpad/constants");
|
5
5
|
exports.platformId = 'jupiter-governance';
|
6
6
|
const platformName = 'Jupiter Governance';
|
@@ -34,6 +34,14 @@ exports.asr2Statics = {
|
|
34
34
|
claimEnd: 1732190400000,
|
35
35
|
name: 'ASR #2',
|
36
36
|
};
|
37
|
+
exports.jupuaryStatics = {
|
38
|
+
id: 'jup-jupuary',
|
39
|
+
claimLink: 'https://jupuary.jup.ag',
|
40
|
+
image: platformImage,
|
41
|
+
emitterLink: platformWebsite,
|
42
|
+
emitterName: 'Jupiter',
|
43
|
+
name: 'Jupuary 2025',
|
44
|
+
};
|
37
45
|
exports.asr1Config = {
|
38
46
|
statics: exports.asr1Statics,
|
39
47
|
items: new Map([
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../../../../../packages/plugins/src/plugins/jupiter/governance/constants.ts"],"names":[],"mappings":";;;AAEA,sDAAiD;AAEpC,QAAA,UAAU,GAAG,oBAAoB,CAAC;AAC/C,MAAM,YAAY,GAAG,oBAAoB,CAAC;AAC1C,MAAM,aAAa,GAAG,gDAAgD,CAAC;AACvE,MAAM,eAAe,GAAG,sBAAsB,CAAC;AAElC,QAAA,aAAa,GAAG,8CAA8C,CAAC;AAC/D,QAAA,QAAQ,GAAa;IAChC,EAAE,EAAE,kBAAU;IACd,IAAI,EAAE,YAAY;IAClB,KAAK,EAAE,aAAa;IACpB,OAAO,EAAE,eAAe;IACxB,OAAO,EAAE,qCAAqC;CAC/C,CAAC;AAEW,QAAA,WAAW,GAAmB;IACzC,EAAE,EAAE,WAAW;IACf,SAAS,EAAE,yBAAyB;IACpC,KAAK,EAAE,aAAa;IACpB,WAAW,EAAE,eAAe;IAC5B,WAAW,EAAE,SAAS;IACtB,UAAU,EAAE,aAAa;IACzB,QAAQ,EAAE,aAAa;IACvB,IAAI,EAAE,QAAQ;CACf,CAAC;AACW,QAAA,WAAW,GAAmB;IACzC,EAAE,EAAE,WAAW;IACf,SAAS,EAAE,yBAAyB;IACpC,KAAK,EAAE,aAAa;IACpB,WAAW,EAAE,eAAe;IAC5B,WAAW,EAAE,SAAS;IACtB,UAAU,EAAE,aAAa;IACzB,QAAQ,EAAE,aAAa;IACvB,IAAI,EAAE,QAAQ;CACf,CAAC;AAeW,QAAA,UAAU,GAAc;IACnC,OAAO,EAAE,mBAAW;IACpB,KAAK,EAAE,IAAI,GAAG,CAAC;QACb,CAAC,mBAAO,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC;QACxC;YACE,6CAA6C;YAC7C,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,EAAE;SAC/B;QACD;YACE,6CAA6C;YAC7C,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,EAAE;SAC9B;QACD;YACE,6CAA6C;YAC7C,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,EAAE;SAC9B;QACD;YACE,6CAA6C;YAC7C,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,EAAE;SAChC;KACF,CAAC;IACF,GAAG,EAAE,CAAC,KAAa,EAAE,EAAE,CACrB,uDAAuD,KAAK,EAAE;CACjE,CAAC;AAEW,QAAA,UAAU,GAAc;IACnC,OAAO,EAAE,mBAAW;IACpB,KAAK,EAAE,IAAI,GAAG,CAAC;QACb,CAAC,mBAAO,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC;QACxC;YACE,8CAA8C;YAC9C,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,EAAE;SAChC;KACF,CAAC;IACF,GAAG,EAAE,CAAC,KAAa,EAAE,EAAE,CACrB,yCAAyC,KAAK,wHAAwH;CACzK,CAAC"}
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../../../../../packages/plugins/src/plugins/jupiter/governance/constants.ts"],"names":[],"mappings":";;;AAEA,sDAAiD;AAEpC,QAAA,UAAU,GAAG,oBAAoB,CAAC;AAC/C,MAAM,YAAY,GAAG,oBAAoB,CAAC;AAC1C,MAAM,aAAa,GAAG,gDAAgD,CAAC;AACvE,MAAM,eAAe,GAAG,sBAAsB,CAAC;AAElC,QAAA,aAAa,GAAG,8CAA8C,CAAC;AAC/D,QAAA,QAAQ,GAAa;IAChC,EAAE,EAAE,kBAAU;IACd,IAAI,EAAE,YAAY;IAClB,KAAK,EAAE,aAAa;IACpB,OAAO,EAAE,eAAe;IACxB,OAAO,EAAE,qCAAqC;CAC/C,CAAC;AAEW,QAAA,WAAW,GAAmB;IACzC,EAAE,EAAE,WAAW;IACf,SAAS,EAAE,yBAAyB;IACpC,KAAK,EAAE,aAAa;IACpB,WAAW,EAAE,eAAe;IAC5B,WAAW,EAAE,SAAS;IACtB,UAAU,EAAE,aAAa;IACzB,QAAQ,EAAE,aAAa;IACvB,IAAI,EAAE,QAAQ;CACf,CAAC;AACW,QAAA,WAAW,GAAmB;IACzC,EAAE,EAAE,WAAW;IACf,SAAS,EAAE,yBAAyB;IACpC,KAAK,EAAE,aAAa;IACpB,WAAW,EAAE,eAAe;IAC5B,WAAW,EAAE,SAAS;IACtB,UAAU,EAAE,aAAa;IACzB,QAAQ,EAAE,aAAa;IACvB,IAAI,EAAE,QAAQ;CACf,CAAC;AACW,QAAA,cAAc,GAAmB;IAC5C,EAAE,EAAE,aAAa;IACjB,SAAS,EAAE,wBAAwB;IACnC,KAAK,EAAE,aAAa;IACpB,WAAW,EAAE,eAAe;IAC5B,WAAW,EAAE,SAAS;IACtB,IAAI,EAAE,cAAc;CACrB,CAAC;AAeW,QAAA,UAAU,GAAc;IACnC,OAAO,EAAE,mBAAW;IACpB,KAAK,EAAE,IAAI,GAAG,CAAC;QACb,CAAC,mBAAO,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC;QACxC;YACE,6CAA6C;YAC7C,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,EAAE;SAC/B;QACD;YACE,6CAA6C;YAC7C,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,EAAE;SAC9B;QACD;YACE,6CAA6C;YAC7C,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,EAAE;SAC9B;QACD;YACE,6CAA6C;YAC7C,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,EAAE;SAChC;KACF,CAAC;IACF,GAAG,EAAE,CAAC,KAAa,EAAE,EAAE,CACrB,uDAAuD,KAAK,EAAE;CACjE,CAAC;AAEW,QAAA,UAAU,GAAc;IACnC,OAAO,EAAE,mBAAW;IACpB,KAAK,EAAE,IAAI,GAAG,CAAC;QACb,CAAC,mBAAO,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC;QACxC;YACE,8CAA8C;YAC9C,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,EAAE;SAChC;KACF,CAAC;IACF,GAAG,EAAE,CAAC,KAAa,EAAE,EAAE,CACrB,yCAAyC,KAAK,wHAAwH;CACzK,CAAC"}
|
@@ -0,0 +1,37 @@
|
|
1
|
+
"use strict";
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
9
|
+
});
|
10
|
+
};
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
12
|
+
exports.airdropFetcher = void 0;
|
13
|
+
const portfolio_core_1 = require("@sonarwatch/portfolio-core");
|
14
|
+
const AirdropFetcher_1 = require("../../../AirdropFetcher");
|
15
|
+
const constants_1 = require("../launchpad/constants");
|
16
|
+
const constants_2 = require("./constants");
|
17
|
+
const executor = (owner) => __awaiter(void 0, void 0, void 0, function* () {
|
18
|
+
const res = yield fetch(`https://jupuary.jup.ag/api/allocation?wallet=${owner}`);
|
19
|
+
const response = yield res.json();
|
20
|
+
return (0, AirdropFetcher_1.getAirdropRaw)({
|
21
|
+
statics: constants_2.jupuaryStatics,
|
22
|
+
items: [
|
23
|
+
{
|
24
|
+
amount: response.data.total_allocated,
|
25
|
+
isClaimed: false,
|
26
|
+
label: 'JUPUARY',
|
27
|
+
address: constants_1.jupMint,
|
28
|
+
},
|
29
|
+
],
|
30
|
+
});
|
31
|
+
});
|
32
|
+
exports.airdropFetcher = {
|
33
|
+
id: constants_2.jupuaryStatics.id,
|
34
|
+
networkId: portfolio_core_1.NetworkId.solana,
|
35
|
+
executor,
|
36
|
+
};
|
37
|
+
//# sourceMappingURL=jupuary2025AirdropFetcher.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"jupuary2025AirdropFetcher.js","sourceRoot":"","sources":["../../../../../../../packages/plugins/src/plugins/jupiter/governance/jupuary2025AirdropFetcher.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,+DAAuD;AACvD,4DAIiC;AAEjC,sDAAiD;AACjD,2CAA6C;AAE7C,MAAM,QAAQ,GAA2B,CAAO,KAAa,EAAE,EAAE;IAC/D,MAAM,GAAG,GAAG,MAAM,KAAK,CACrB,gDAAgD,KAAK,EAAE,CACxD,CAAC;IACF,MAAM,QAAQ,GAA0C,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;IAEzE,OAAO,IAAA,8BAAa,EAAC;QACnB,OAAO,EAAE,0BAAc;QACvB,KAAK,EAAE;YACL;gBACE,MAAM,EAAE,QAAQ,CAAC,IAAI,CAAC,eAAe;gBACrC,SAAS,EAAE,KAAK;gBAChB,KAAK,EAAE,SAAS;gBAChB,OAAO,EAAE,mBAAO;aACjB;SACF;KACF,CAAC,CAAC;AACL,CAAC,CAAA,CAAC;AAEW,QAAA,cAAc,GAAmB;IAC5C,EAAE,EAAE,0BAAc,CAAC,EAAE;IACrB,SAAS,EAAE,0BAAS,CAAC,MAAM;IAC3B,QAAQ;CACT,CAAC"}
|
@@ -16,6 +16,7 @@ const constants_2 = require("./governance/constants");
|
|
16
16
|
const pricingJob_1 = __importDefault(require("./pricingJob"));
|
17
17
|
const constants_3 = require("./exchange/constants");
|
18
18
|
const governance_1 = require("./governance");
|
19
|
+
const jupuary2025AirdropFetcher_1 = require("./governance/jupuary2025AirdropFetcher");
|
19
20
|
const launchpad_1 = require("./launchpad");
|
20
21
|
exports.platforms = [
|
21
22
|
constants_1.platform,
|
@@ -38,5 +39,6 @@ exports.airdropFetchers = [
|
|
38
39
|
governance_1.asr1AirdropFetcher,
|
39
40
|
governance_1.asr2AirdropFetcher,
|
40
41
|
...launchpad_1.lfgAirdropFetchers,
|
42
|
+
jupuary2025AirdropFetcher_1.airdropFetcher,
|
41
43
|
];
|
42
44
|
//# sourceMappingURL=index.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../packages/plugins/src/plugins/jupiter/index.ts"],"names":[],"mappings":";;;;;;AAGA,mFAA2D;AAC3D,yFAAiE;AACjE,2EAAmD;AACnD,uEAA+C;AAC/C,yEAAiD;AACjD,2EAAmD;AAEnD,qDAAsE;AACtE,2EAAmD;AACnD,sDAAwE;AACxE,8DAAsC;AACtC,oDAAoE;AAEpE,6CAKsB;AACtB,2CAA8D;AAEjD,QAAA,SAAS,GAAe;IACnC,oBAAiB;IACjB,oBAAkB;IAClB,oBAAgB;CACjB,CAAC;AACW,QAAA,IAAI,GAAU,CAAC,sBAAY,EAAE,oBAAU,CAAC,CAAC;AACzC,QAAA,QAAQ,GAAc;IACjC,0BAAgB;IAChB,6BAAmB;IACnB,sBAAY;IACZ,oBAAU;IACV,qBAAW;IACX,qBAAW;IACX,wBAAW;IACX,wBAAW;IACX,GAAG,uBAAW;CACf,CAAC;AACW,QAAA,eAAe,GAAqB;IAC/C,+BAAkB;IAClB,+BAAkB;IAClB,GAAG,8BAAkB;CACtB,CAAC"}
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../packages/plugins/src/plugins/jupiter/index.ts"],"names":[],"mappings":";;;;;;AAGA,mFAA2D;AAC3D,yFAAiE;AACjE,2EAAmD;AACnD,uEAA+C;AAC/C,yEAAiD;AACjD,2EAAmD;AAEnD,qDAAsE;AACtE,2EAAmD;AACnD,sDAAwE;AACxE,8DAAsC;AACtC,oDAAoE;AAEpE,6CAKsB;AACtB,sFAAiG;AACjG,2CAA8D;AAEjD,QAAA,SAAS,GAAe;IACnC,oBAAiB;IACjB,oBAAkB;IAClB,oBAAgB;CACjB,CAAC;AACW,QAAA,IAAI,GAAU,CAAC,sBAAY,EAAE,oBAAU,CAAC,CAAC;AACzC,QAAA,QAAQ,GAAc;IACjC,0BAAgB;IAChB,6BAAmB;IACnB,sBAAY;IACZ,oBAAU;IACV,qBAAW;IACX,qBAAW;IACX,wBAAW;IACX,wBAAW;IACX,GAAG,uBAAW;CACf,CAAC;AACW,QAAA,eAAe,GAAqB;IAC/C,+BAAkB;IAClB,+BAAkB;IAClB,GAAG,8BAAkB;IACrB,0CAAqB;CACtB,CAAC"}
|