@fairmint/canton-node-sdk 0.0.57 → 0.0.58
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/build/src/clients/index.d.ts +1 -0
- package/build/src/clients/index.d.ts.map +1 -1
- package/build/src/clients/index.js +1 -0
- package/build/src/clients/index.js.map +1 -1
- package/build/src/clients/lighthouse-api/LighthouseApiClient.d.ts +9 -0
- package/build/src/clients/lighthouse-api/LighthouseApiClient.d.ts.map +1 -0
- package/build/src/clients/lighthouse-api/LighthouseApiClient.js +15 -0
- package/build/src/clients/lighthouse-api/LighthouseApiClient.js.map +1 -0
- package/build/src/clients/lighthouse-api/index.d.ts +3 -0
- package/build/src/clients/lighthouse-api/index.d.ts.map +1 -0
- package/build/src/clients/lighthouse-api/index.js +21 -0
- package/build/src/clients/lighthouse-api/index.js.map +1 -0
- package/build/src/clients/lighthouse-api/operations/get-transfer-agent.d.ts +64 -0
- package/build/src/clients/lighthouse-api/operations/get-transfer-agent.d.ts.map +1 -0
- package/build/src/clients/lighthouse-api/operations/get-transfer-agent.js +26 -0
- package/build/src/clients/lighthouse-api/operations/get-transfer-agent.js.map +1 -0
- package/build/src/clients/lighthouse-api/types.d.ts +74 -0
- package/build/src/clients/lighthouse-api/types.d.ts.map +1 -0
- package/build/src/clients/lighthouse-api/types.js +49 -0
- package/build/src/clients/lighthouse-api/types.js.map +1 -0
- package/build/src/clients/register.d.ts.map +1 -1
- package/build/src/clients/register.js +3 -0
- package/build/src/clients/register.js.map +1 -1
- package/build/src/clients/validator-api/ValidatorApiClient.d.ts +3 -2
- package/build/src/clients/validator-api/ValidatorApiClient.d.ts.map +1 -1
- package/build/src/clients/validator-api/ValidatorApiClient.js +2 -0
- package/build/src/clients/validator-api/ValidatorApiClient.js.map +1 -1
- package/build/src/clients/validator-api/operations/v0/scan-proxy/get-member-traffic-status.d.ts +16 -21
- package/build/src/clients/validator-api/operations/v0/scan-proxy/get-member-traffic-status.d.ts.map +1 -1
- package/build/src/clients/validator-api/operations/v0/scan-proxy/get-member-traffic-status.js +23 -10
- package/build/src/clients/validator-api/operations/v0/scan-proxy/get-member-traffic-status.js.map +1 -1
- package/build/src/clients/validator-api/operations/v0/wallet/buy-traffic-requests/create.js +1 -1
- package/build/src/clients/validator-api/operations/v0/wallet/buy-traffic-requests/create.js.map +1 -1
- package/build/src/clients/validator-api/schemas/operations/scan-proxy.d.ts +2 -2
- package/build/src/clients/validator-api/schemas/operations/scan-proxy.js +2 -2
- package/build/src/clients/validator-api/schemas/operations/scan-proxy.js.map +1 -1
- package/build/src/core/BaseClient.d.ts +26 -2
- package/build/src/core/BaseClient.d.ts.map +1 -1
- package/build/src/core/BaseClient.js +54 -2
- package/build/src/core/BaseClient.js.map +1 -1
- package/build/src/core/ClientFactory.d.ts +3 -3
- package/build/src/core/ClientFactory.d.ts.map +1 -1
- package/build/src/core/ClientFactory.js.map +1 -1
- package/build/src/core/config/EnvLoader.d.ts.map +1 -1
- package/build/src/core/config/EnvLoader.js +52 -10
- package/build/src/core/config/EnvLoader.js.map +1 -1
- package/build/src/core/operations/ApiOperation.d.ts +22 -1
- package/build/src/core/operations/ApiOperation.d.ts.map +1 -1
- package/build/src/core/operations/ApiOperation.js +37 -1
- package/build/src/core/operations/ApiOperation.js.map +1 -1
- package/build/src/core/operations/ApiOperationFactory.d.ts +29 -1
- package/build/src/core/operations/ApiOperationFactory.d.ts.map +1 -1
- package/build/src/core/operations/ApiOperationFactory.js +34 -0
- package/build/src/core/operations/ApiOperationFactory.js.map +1 -1
- package/build/src/core/types.d.ts +6 -2
- package/build/src/core/types.d.ts.map +1 -1
- package/build/src/utils/contracts/contract-monitor.d.ts +23 -0
- package/build/src/utils/contracts/contract-monitor.d.ts.map +1 -0
- package/build/src/utils/contracts/contract-monitor.js +54 -0
- package/build/src/utils/contracts/contract-monitor.js.map +1 -0
- package/build/src/utils/contracts/index.d.ts +1 -0
- package/build/src/utils/contracts/index.d.ts.map +1 -1
- package/build/src/utils/contracts/index.js +1 -0
- package/build/src/utils/contracts/index.js.map +1 -1
- package/build/src/utils/mining/mining-rounds.d.ts +9 -0
- package/build/src/utils/mining/mining-rounds.d.ts.map +1 -1
- package/build/src/utils/mining/mining-rounds.js +13 -0
- package/build/src/utils/mining/mining-rounds.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { LedgerJsonApiClient } from '../../clients/ledger-json-api';
|
|
2
|
+
/**
|
|
3
|
+
* Options for waiting for contract archival
|
|
4
|
+
*/
|
|
5
|
+
export interface WaitForContractArchivalOptions {
|
|
6
|
+
/** Maximum time to wait in milliseconds (default: 300000 = 5 minutes) */
|
|
7
|
+
maxWaitTimeMs?: number;
|
|
8
|
+
/** Interval between checks in milliseconds (default: 5000 = 5 seconds) */
|
|
9
|
+
checkIntervalMs?: number;
|
|
10
|
+
/** Whether to enable verbose logging */
|
|
11
|
+
verbose?: boolean;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Waits for a contract to be archived by periodically checking active contracts
|
|
15
|
+
*
|
|
16
|
+
* @param ledgerJsonApiClient - The Ledger JSON API client instance
|
|
17
|
+
* @param contractId - The ID of the contract to monitor
|
|
18
|
+
* @param options - Configuration options for the wait operation
|
|
19
|
+
* @returns Promise that resolves when the contract is archived or rejects on timeout
|
|
20
|
+
* @throws Error if the contract is not archived within the specified timeout
|
|
21
|
+
*/
|
|
22
|
+
export declare function waitForContractToBeArchived(ledgerJsonApiClient: LedgerJsonApiClient, contractId: string, options?: WaitForContractArchivalOptions): Promise<void>;
|
|
23
|
+
//# sourceMappingURL=contract-monitor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"contract-monitor.d.ts","sourceRoot":"","sources":["../../../../src/utils/contracts/contract-monitor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AAEpE;;GAEG;AACH,MAAM,WAAW,8BAA8B;IAC7C,yEAAyE;IACzE,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,0EAA0E;IAC1E,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,wCAAwC;IACxC,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;;;;;;;GAQG;AACH,wBAAsB,2BAA2B,CAC/C,mBAAmB,EAAE,mBAAmB,EACxC,UAAU,EAAE,MAAM,EAClB,OAAO,GAAE,8BAAmC,GAC3C,OAAO,CAAC,IAAI,CAAC,CAiDf"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.waitForContractToBeArchived = waitForContractToBeArchived;
|
|
4
|
+
/**
|
|
5
|
+
* Waits for a contract to be archived by periodically checking active contracts
|
|
6
|
+
*
|
|
7
|
+
* @param ledgerJsonApiClient - The Ledger JSON API client instance
|
|
8
|
+
* @param contractId - The ID of the contract to monitor
|
|
9
|
+
* @param options - Configuration options for the wait operation
|
|
10
|
+
* @returns Promise that resolves when the contract is archived or rejects on timeout
|
|
11
|
+
* @throws Error if the contract is not archived within the specified timeout
|
|
12
|
+
*/
|
|
13
|
+
async function waitForContractToBeArchived(ledgerJsonApiClient, contractId, options = {}) {
|
|
14
|
+
const { maxWaitTimeMs = 300000, // 5 minutes default
|
|
15
|
+
checkIntervalMs = 5000, // 5 seconds default
|
|
16
|
+
verbose = true } = options;
|
|
17
|
+
const startTime = Date.now();
|
|
18
|
+
if (verbose) {
|
|
19
|
+
console.log(`⏳ Waiting for contract ${contractId} to be archived...`);
|
|
20
|
+
}
|
|
21
|
+
while (Date.now() - startTime < maxWaitTimeMs) {
|
|
22
|
+
try {
|
|
23
|
+
// Get active contracts to check if our contract is still active
|
|
24
|
+
const activeContracts = await ledgerJsonApiClient.getActiveContracts({
|
|
25
|
+
filter: { filtersByParty: { [ledgerJsonApiClient.getPartyId()]: {} } },
|
|
26
|
+
verbose: true,
|
|
27
|
+
activeAtOffset: (await ledgerJsonApiClient.getLedgerEnd(undefined)).offset,
|
|
28
|
+
});
|
|
29
|
+
// Check if our contract is still in the active contracts list
|
|
30
|
+
const isStillActive = Array.isArray(activeContracts) &&
|
|
31
|
+
activeContracts.some((contract) => {
|
|
32
|
+
const createdEvent = contract?.contractEntry?.JsActiveContract?.createdEvent;
|
|
33
|
+
return createdEvent?.contractId === contractId;
|
|
34
|
+
});
|
|
35
|
+
if (!isStillActive) {
|
|
36
|
+
if (verbose) {
|
|
37
|
+
console.log(`✅ Contract ${contractId} has been archived successfully`);
|
|
38
|
+
}
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
41
|
+
if (verbose) {
|
|
42
|
+
console.log(`⏳ Contract ${contractId} is still active, waiting...`);
|
|
43
|
+
}
|
|
44
|
+
await new Promise(resolve => setTimeout(resolve, checkIntervalMs));
|
|
45
|
+
}
|
|
46
|
+
catch (error) {
|
|
47
|
+
console.error('❌ Error checking contract status:', error instanceof Error ? error.message : 'Unknown error');
|
|
48
|
+
// Continue waiting even if there's an error checking status
|
|
49
|
+
await new Promise(resolve => setTimeout(resolve, checkIntervalMs));
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
throw new Error(`Timeout waiting for contract ${contractId} to be archived after ${maxWaitTimeMs / 1000} seconds`);
|
|
53
|
+
}
|
|
54
|
+
//# sourceMappingURL=contract-monitor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"contract-monitor.js","sourceRoot":"","sources":["../../../../src/utils/contracts/contract-monitor.ts"],"names":[],"mappings":";;AAuBA,kEAqDC;AA9DD;;;;;;;;GAQG;AACI,KAAK,UAAU,2BAA2B,CAC/C,mBAAwC,EACxC,UAAkB,EAClB,UAA0C,EAAE;IAE5C,MAAM,EACJ,aAAa,GAAG,MAAM,EAAE,oBAAoB;IAC5C,eAAe,GAAG,IAAI,EAAE,oBAAoB;IAC5C,OAAO,GAAG,IAAI,EACf,GAAG,OAAO,CAAC;IAEZ,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAE7B,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO,CAAC,GAAG,CAAC,0BAA0B,UAAU,oBAAoB,CAAC,CAAC;IACxE,CAAC;IAED,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,GAAG,aAAa,EAAE,CAAC;QAC9C,IAAI,CAAC;YACH,gEAAgE;YAChE,MAAM,eAAe,GAAG,MAAM,mBAAmB,CAAC,kBAAkB,CAAC;gBACnE,MAAM,EAAE,EAAE,cAAc,EAAE,EAAE,CAAC,mBAAmB,CAAC,UAAU,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE;gBACtE,OAAO,EAAE,IAAI;gBACb,cAAc,EAAE,CAAC,MAAM,mBAAmB,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM;aAC3E,CAAC,CAAC;YAEH,8DAA8D;YAC9D,MAAM,aAAa,GAAG,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC;gBAClD,eAAe,CAAC,IAAI,CAAC,CAAC,QAAa,EAAE,EAAE;oBACrC,MAAM,YAAY,GAAG,QAAQ,EAAE,aAAa,EAAE,gBAAgB,EAAE,YAAY,CAAC;oBAC7E,OAAO,YAAY,EAAE,UAAU,KAAK,UAAU,CAAC;gBACjD,CAAC,CAAC,CAAC;YAEL,IAAI,CAAC,aAAa,EAAE,CAAC;gBACnB,IAAI,OAAO,EAAE,CAAC;oBACZ,OAAO,CAAC,GAAG,CAAC,cAAc,UAAU,iCAAiC,CAAC,CAAC;gBACzE,CAAC;gBACD,OAAO;YACT,CAAC;YAED,IAAI,OAAO,EAAE,CAAC;gBACZ,OAAO,CAAC,GAAG,CAAC,cAAc,UAAU,8BAA8B,CAAC,CAAC;YACtE,CAAC;YACD,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC,CAAC;QAErE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,mCAAmC,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC;YAC7G,4DAA4D;YAC5D,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC,CAAC;QACrE,CAAC;IACH,CAAC;IAED,MAAM,IAAI,KAAK,CAAC,gCAAgC,UAAU,yBAAyB,aAAa,GAAG,IAAI,UAAU,CAAC,CAAC;AACrH,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/utils/contracts/index.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/utils/contracts/index.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAC;AACtC,cAAc,oBAAoB,CAAC"}
|
|
@@ -15,4 +15,5 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
17
|
__exportStar(require("./disclosed-contracts"), exports);
|
|
18
|
+
__exportStar(require("./contract-monitor"), exports);
|
|
18
19
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/utils/contracts/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,wDAAsC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/utils/contracts/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,wDAAsC;AACtC,qDAAmC"}
|
|
@@ -21,4 +21,13 @@ export interface MiningRoundContext {
|
|
|
21
21
|
* @throws Error if no mining round satisfies the criteria
|
|
22
22
|
*/
|
|
23
23
|
export declare function getCurrentMiningRoundContext(validatorClient: ValidatorApiClient): Promise<MiningRoundContext>;
|
|
24
|
+
/**
|
|
25
|
+
* Gets the domain ID from the current mining round context.
|
|
26
|
+
* This is useful for operations that need to automatically determine the domain ID.
|
|
27
|
+
*
|
|
28
|
+
* @param validatorClient - Validator API client for getting mining round information
|
|
29
|
+
* @returns Promise resolving to the domain ID string
|
|
30
|
+
* @throws Error if no mining round satisfies the criteria
|
|
31
|
+
*/
|
|
32
|
+
export declare function getCurrentMiningRoundDomainId(validatorClient: ValidatorApiClient): Promise<string>;
|
|
24
33
|
//# sourceMappingURL=mining-rounds.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mining-rounds.d.ts","sourceRoot":"","sources":["../../../../src/utils/mining/mining-rounds.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAC;AAChE,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AAEjE;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,oEAAoE;IACpE,eAAe,EAAE,MAAM,CAAC;IACxB,8EAA8E;IAC9E,uBAAuB,EAAE,YAAY,CAAC;IACtC,4DAA4D;IAC5D,mBAAmB,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACnE;AAED;;;;;GAKG;AACH,wBAAsB,4BAA4B,CAChD,eAAe,EAAE,kBAAkB,GAClC,OAAO,CAAC,kBAAkB,CAAC,CA2C7B"}
|
|
1
|
+
{"version":3,"file":"mining-rounds.d.ts","sourceRoot":"","sources":["../../../../src/utils/mining/mining-rounds.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAC;AAChE,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AAEjE;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,oEAAoE;IACpE,eAAe,EAAE,MAAM,CAAC;IACxB,8EAA8E;IAC9E,uBAAuB,EAAE,YAAY,CAAC;IACtC,4DAA4D;IAC5D,mBAAmB,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACnE;AAED;;;;;GAKG;AACH,wBAAsB,4BAA4B,CAChD,eAAe,EAAE,kBAAkB,GAClC,OAAO,CAAC,kBAAkB,CAAC,CA2C7B;AAED;;;;;;;GAOG;AACH,wBAAsB,6BAA6B,CACjD,eAAe,EAAE,kBAAkB,GAClC,OAAO,CAAC,MAAM,CAAC,CAGjB"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.getCurrentMiningRoundContext = getCurrentMiningRoundContext;
|
|
4
|
+
exports.getCurrentMiningRoundDomainId = getCurrentMiningRoundDomainId;
|
|
4
5
|
/**
|
|
5
6
|
* Finds the latest mining round that is currently open (\`opensAt\` is in the past)
|
|
6
7
|
* and returns useful context information.
|
|
@@ -44,4 +45,16 @@ async function getCurrentMiningRoundContext(validatorClient) {
|
|
|
44
45
|
issuingMiningRounds,
|
|
45
46
|
};
|
|
46
47
|
}
|
|
48
|
+
/**
|
|
49
|
+
* Gets the domain ID from the current mining round context.
|
|
50
|
+
* This is useful for operations that need to automatically determine the domain ID.
|
|
51
|
+
*
|
|
52
|
+
* @param validatorClient - Validator API client for getting mining round information
|
|
53
|
+
* @returns Promise resolving to the domain ID string
|
|
54
|
+
* @throws Error if no mining round satisfies the criteria
|
|
55
|
+
*/
|
|
56
|
+
async function getCurrentMiningRoundDomainId(validatorClient) {
|
|
57
|
+
const miningRoundContext = await getCurrentMiningRoundContext(validatorClient);
|
|
58
|
+
return miningRoundContext.openMiningRoundContract.synchronizerId;
|
|
59
|
+
}
|
|
47
60
|
//# sourceMappingURL=mining-rounds.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mining-rounds.js","sourceRoot":"","sources":["../../../../src/utils/mining/mining-rounds.ts"],"names":[],"mappings":";;AAsBA,oEA6CC;
|
|
1
|
+
{"version":3,"file":"mining-rounds.js","sourceRoot":"","sources":["../../../../src/utils/mining/mining-rounds.ts"],"names":[],"mappings":";;AAsBA,oEA6CC;AAUD,sEAKC;AAlED;;;;;GAKG;AACI,KAAK,UAAU,4BAA4B,CAChD,eAAmC;IAEnC,MAAM,oBAAoB,GACxB,MAAM,eAAe,CAAC,6BAA6B,EAAE,CAAC;IAExD,8DAA8D;IAC9D,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;IACvB,MAAM,eAAe,GAAG,oBAAoB,CAAC,kBAAkB,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;QAC7E,IAAI,CAAC;YACH,MAAM,UAAU,GAAI,KAAa,EAAE,QAAQ,EAAE,OAAO,EAAE,OAA6B,CAAC;YACpF,IAAI,CAAC,UAAU;gBAAE,OAAO,KAAK,CAAC;YAC9B,MAAM,OAAO,GAAG,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC;YACrC,OAAO,OAAO,IAAI,GAAG,CAAC;QACxB,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACjC,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;IACrE,CAAC;IAED,kEAAkE;IAClE,MAAM,aAAa,GAAG,eAAe,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,CAAQ,CAAC;IAEzE,MAAM,uBAAuB,GAAiB;QAC5C,UAAU,EAAE,aAAa,CAAC,QAAQ,CAAC,WAAW;QAC9C,UAAU,EAAE,aAAa,CAAC,QAAQ,CAAC,WAAW;QAC9C,gBAAgB,EAAE,aAAa,CAAC,QAAQ,CAAC,kBAAkB;QAC3D,cAAc,EAAE,aAAa,CAAC,SAAS,EAAE,sDAAsD;KAChG,CAAC;IAEF,MAAM,mBAAmB,GAAG,CAAC,oBAAoB,CAAC,qBAAqB,IAAI,EAAE,CAAC,CAAC,GAAG,CAChF,CAAC,KAAU,EAAE,EAAE,CAAC,CAAC;QACf,KAAK,EAAE,KAAK,CAAC,YAAsB;QACnC,UAAU,EAAE,CAAC,KAAK,CAAC,WAAW,IAAI,KAAK,CAAC,QAAQ,EAAE,WAAW,CAAW;KACzE,CAAC,CACH,CAAC;IAEF,OAAO;QACL,eAAe,EAAE,uBAAuB,CAAC,UAAU;QACnD,uBAAuB;QACvB,mBAAmB;KACpB,CAAC;AACJ,CAAC;AAED;;;;;;;GAOG;AACI,KAAK,UAAU,6BAA6B,CACjD,eAAmC;IAEnC,MAAM,kBAAkB,GAAG,MAAM,4BAA4B,CAAC,eAAe,CAAC,CAAC;IAC/E,OAAO,kBAAkB,CAAC,uBAAuB,CAAC,cAAc,CAAC;AACnE,CAAC"}
|