@tonappchain/sdk 0.7.2-scaled-ui-support-2 → 0.7.3-rc1
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/README.md +6 -2
- package/dist/artifacts/dev/index.d.ts +2 -2
- package/dist/artifacts/dev/index.js +2 -1
- package/dist/artifacts/dev/tac/endpoints.d.ts +1 -0
- package/dist/artifacts/dev/tac/endpoints.js +2 -1
- package/dist/artifacts/dev/ton/internal/build/CrossChainLayer.compiled.json +1 -1
- package/dist/artifacts/dev/ton/internal/build/Executor.compiled.json +1 -1
- package/dist/artifacts/dev/ton/internal/build/JettonProxy.compiled.json +1 -1
- package/dist/artifacts/dev/ton/internal/build/JettonWallet.compiled.json +1 -1
- package/dist/artifacts/dev/ton/internal/build/NFTItem.compiled.json +1 -1
- package/dist/artifacts/dev/ton/internal/build/NFTProxy.compiled.json +1 -1
- package/dist/artifacts/dev/ton/internal/build/Settings.compiled.json +1 -1
- package/dist/artifacts/dev/ton/internal/wrappers/CrossChainLayer.d.ts +53 -6
- package/dist/artifacts/dev/ton/internal/wrappers/CrossChainLayer.js +130 -17
- package/dist/artifacts/dev/ton/internal/wrappers/JettonMinter.d.ts +2 -0
- package/dist/artifacts/dev/ton/internal/wrappers/JettonMinter.js +3 -1
- package/dist/artifacts/dev/ton/internal/wrappers/JettonProxy.d.ts +9 -0
- package/dist/artifacts/dev/ton/internal/wrappers/JettonProxy.js +10 -1
- package/dist/artifacts/dev/ton/internal/wrappers/JettonWallet.d.ts +7 -0
- package/dist/artifacts/dev/ton/internal/wrappers/JettonWallet.js +9 -2
- package/dist/artifacts/dev/ton/internal/wrappers/NFTCollection.d.ts +9 -0
- package/dist/artifacts/dev/ton/internal/wrappers/NFTCollection.js +9 -0
- package/dist/artifacts/dev/ton/internal/wrappers/NFTItem.d.ts +7 -0
- package/dist/artifacts/dev/ton/internal/wrappers/NFTItem.js +7 -0
- package/dist/artifacts/dev/ton/internal/wrappers/NFTProxy.d.ts +7 -0
- package/dist/artifacts/dev/ton/internal/wrappers/NFTProxy.js +8 -1
- package/dist/artifacts/dev/ton/internal/wrappers/Settings.d.ts +1 -0
- package/dist/artifacts/dev/ton/internal/wrappers/Settings.js +1 -0
- package/dist/artifacts/dev/ton/internal/wrappers/utils/CrossChainLayerPayload.d.ts +10 -0
- package/dist/artifacts/dev/ton/internal/wrappers/utils/CrossChainLayerPayload.js +24 -0
- package/dist/artifacts/dev/ton/internal/wrappers/utils/MerkleRoots.d.ts +2 -1
- package/dist/artifacts/dev/ton/internal/wrappers/utils/MerkleRoots.js +9 -1
- package/dist/artifacts/mainnet/index.d.ts +2 -2
- package/dist/artifacts/mainnet/index.js +2 -1
- package/dist/artifacts/mainnet/tac/endpoints.d.ts +1 -0
- package/dist/artifacts/mainnet/tac/endpoints.js +2 -1
- package/dist/artifacts/mainnet/ton/endpoints.d.ts +1 -1
- package/dist/artifacts/mainnet/ton/endpoints.js +1 -1
- package/dist/artifacts/mainnet/ton/internal/build/CrossChainLayer.compiled.json +1 -1
- package/dist/artifacts/mainnet/ton/internal/build/Executor.compiled.json +1 -1
- package/dist/artifacts/mainnet/ton/internal/build/JettonMinter.compiled.json +1 -1
- package/dist/artifacts/mainnet/ton/internal/build/JettonProxy.compiled.json +1 -1
- package/dist/artifacts/mainnet/ton/internal/build/JettonWallet.compiled.json +1 -1
- package/dist/artifacts/mainnet/ton/internal/build/NFTItem.compiled.json +1 -1
- package/dist/artifacts/mainnet/ton/internal/build/NFTProxy.compiled.json +1 -1
- package/dist/artifacts/mainnet/ton/internal/wrappers/CrossChainLayer.d.ts +1 -13
- package/dist/artifacts/mainnet/ton/internal/wrappers/CrossChainLayer.js +7 -45
- package/dist/artifacts/mainnet/ton/internal/wrappers/JettonMinter.d.ts +2 -2
- package/dist/artifacts/mainnet/ton/internal/wrappers/JettonMinter.js +2 -2
- package/dist/artifacts/testnet/index.d.ts +2 -2
- package/dist/artifacts/testnet/index.js +2 -1
- package/dist/artifacts/testnet/tac/endpoints.d.ts +1 -0
- package/dist/artifacts/testnet/tac/endpoints.js +2 -1
- package/dist/artifacts/testnet/ton/endpoints.d.ts +1 -1
- package/dist/artifacts/testnet/ton/endpoints.js +1 -1
- package/dist/artifacts/testnet/ton/internal/build/CrossChainLayer.compiled.json +1 -1
- package/dist/artifacts/testnet/ton/internal/build/Executor.compiled.json +1 -1
- package/dist/artifacts/testnet/ton/internal/build/JettonProxy.compiled.json +1 -1
- package/dist/artifacts/testnet/ton/internal/build/JettonWallet.compiled.json +1 -1
- package/dist/artifacts/testnet/ton/internal/build/NFTItem.compiled.json +1 -1
- package/dist/artifacts/testnet/ton/internal/build/NFTProxy.compiled.json +1 -1
- package/dist/artifacts/testnet/ton/internal/build/Settings.compiled.json +1 -1
- package/dist/artifacts/testnet/ton/internal/wrappers/CrossChainLayer.d.ts +53 -6
- package/dist/artifacts/testnet/ton/internal/wrappers/CrossChainLayer.js +130 -17
- package/dist/artifacts/testnet/ton/internal/wrappers/JettonMinter.d.ts +2 -0
- package/dist/artifacts/testnet/ton/internal/wrappers/JettonMinter.js +3 -1
- package/dist/artifacts/testnet/ton/internal/wrappers/JettonProxy.d.ts +9 -0
- package/dist/artifacts/testnet/ton/internal/wrappers/JettonProxy.js +10 -1
- package/dist/artifacts/testnet/ton/internal/wrappers/JettonWallet.d.ts +7 -0
- package/dist/artifacts/testnet/ton/internal/wrappers/JettonWallet.js +9 -2
- package/dist/artifacts/testnet/ton/internal/wrappers/NFTCollection.d.ts +9 -0
- package/dist/artifacts/testnet/ton/internal/wrappers/NFTCollection.js +9 -0
- package/dist/artifacts/testnet/ton/internal/wrappers/NFTItem.d.ts +7 -0
- package/dist/artifacts/testnet/ton/internal/wrappers/NFTItem.js +7 -0
- package/dist/artifacts/testnet/ton/internal/wrappers/NFTProxy.d.ts +7 -0
- package/dist/artifacts/testnet/ton/internal/wrappers/NFTProxy.js +8 -1
- package/dist/artifacts/testnet/ton/internal/wrappers/Settings.d.ts +1 -0
- package/dist/artifacts/testnet/ton/internal/wrappers/Settings.js +1 -0
- package/dist/artifacts/testnet/ton/internal/wrappers/utils/CrossChainLayerPayload.d.ts +10 -0
- package/dist/artifacts/testnet/ton/internal/wrappers/utils/CrossChainLayerPayload.js +24 -0
- package/dist/artifacts/testnet/ton/internal/wrappers/utils/MerkleRoots.d.ts +2 -1
- package/dist/artifacts/testnet/ton/internal/wrappers/utils/MerkleRoots.js +9 -1
- package/dist/src/adapters/BaseContractOpener.d.ts +76 -0
- package/dist/src/adapters/BaseContractOpener.js +443 -0
- package/dist/src/adapters/LiteClientOpener.d.ts +38 -0
- package/dist/src/adapters/LiteClientOpener.js +141 -0
- package/dist/src/adapters/OpenerUtils.d.ts +3 -0
- package/dist/src/adapters/OpenerUtils.js +40 -0
- package/dist/src/adapters/RetryableContractOpener.d.ts +40 -0
- package/dist/src/adapters/RetryableContractOpener.js +290 -0
- package/dist/src/adapters/SandboxOpener.d.ts +15 -0
- package/dist/src/adapters/SandboxOpener.js +35 -0
- package/dist/src/adapters/TonClient4Opener.d.ts +24 -0
- package/dist/src/adapters/TonClient4Opener.js +95 -0
- package/dist/src/adapters/TonClientOpener.d.ts +19 -0
- package/dist/src/adapters/TonClientOpener.js +82 -0
- package/dist/src/adapters/index.d.ts +7 -2
- package/dist/src/adapters/index.js +7 -2
- package/dist/src/assets/AssetCache.d.ts +8 -8
- package/dist/src/assets/AssetCache.js +3 -0
- package/dist/src/assets/AssetFactory.d.ts +4 -1
- package/dist/src/assets/AssetFactory.js +12 -2
- package/dist/src/assets/FT.d.ts +5 -6
- package/dist/src/assets/FT.js +32 -22
- package/dist/src/assets/NFT.d.ts +4 -4
- package/dist/src/assets/NFT.js +11 -5
- package/dist/src/assets/TAC.d.ts +24 -0
- package/dist/src/assets/TAC.js +74 -0
- package/dist/src/assets/TON.d.ts +5 -4
- package/dist/src/assets/TON.js +14 -6
- package/dist/src/assets/index.d.ts +1 -0
- package/dist/src/assets/index.js +3 -1
- package/dist/src/errors/errors.d.ts +12 -1
- package/dist/src/errors/errors.js +66 -2
- package/dist/src/errors/index.d.ts +2 -2
- package/dist/src/errors/index.js +9 -1
- package/dist/src/errors/instances.d.ts +11 -2
- package/dist/src/errors/instances.js +73 -2
- package/dist/src/index.d.ts +3 -1
- package/dist/src/index.js +6 -4
- package/dist/src/interfaces/Asset.d.ts +14 -14
- package/dist/src/interfaces/ContractOpener.d.ts +76 -2
- package/dist/src/interfaces/IConfiguration.d.ts +1 -3
- package/dist/src/interfaces/ILiteSequencerClient.d.ts +9 -1
- package/dist/src/interfaces/IOperationTracker.d.ts +42 -23
- package/dist/src/interfaces/ISimulator.d.ts +9 -1
- package/dist/src/interfaces/ITACTransactionManager.d.ts +19 -1
- package/dist/src/interfaces/ITONTransactionManager.d.ts +20 -1
- package/dist/src/interfaces/ITacExplorerClient.d.ts +8 -0
- package/dist/src/interfaces/ITacExplorerClient.js +2 -0
- package/dist/src/interfaces/ITacSDK.d.ts +53 -8
- package/dist/src/interfaces/ITxFinalizer.d.ts +4 -0
- package/dist/src/interfaces/ITxFinalizer.js +2 -0
- package/dist/src/interfaces/WalletInstanse.d.ts +4 -8
- package/dist/src/interfaces/index.d.ts +1 -0
- package/dist/src/interfaces/index.js +1 -0
- package/dist/src/sdk/Configuration.d.ts +5 -3
- package/dist/src/sdk/Configuration.js +54 -7
- package/dist/src/sdk/Consts.d.ts +22 -1
- package/dist/src/sdk/Consts.js +25 -2
- package/dist/src/sdk/Fees.d.ts +21 -0
- package/dist/src/sdk/Fees.js +201 -0
- package/dist/src/sdk/LiteSequencerClient.d.ts +4 -1
- package/dist/src/sdk/LiteSequencerClient.js +76 -17
- package/dist/src/sdk/OperationTracker.d.ts +15 -12
- package/dist/src/sdk/OperationTracker.js +104 -94
- package/dist/src/sdk/Simulator.d.ts +10 -2
- package/dist/src/sdk/Simulator.js +102 -0
- package/dist/src/sdk/StartTracking.d.ts +12 -7
- package/dist/src/sdk/StartTracking.js +75 -49
- package/dist/src/sdk/TACTransactionManager.d.ts +3 -0
- package/dist/src/sdk/TACTransactionManager.js +170 -34
- package/dist/src/sdk/TONTransactionManager.d.ts +5 -4
- package/dist/src/sdk/TONTransactionManager.js +86 -9
- package/dist/src/sdk/TacExplorerClient.d.ts +8 -0
- package/dist/src/sdk/TacExplorerClient.js +22 -0
- package/dist/src/sdk/TacSdk.d.ts +11 -4
- package/dist/src/sdk/TacSdk.js +31 -4
- package/dist/src/sdk/TxFinalizer.d.ts +4 -3
- package/dist/src/sdk/TxFinalizer.js +41 -41
- package/dist/src/sdk/Utils.d.ts +22 -2
- package/dist/src/sdk/Utils.js +162 -10
- package/dist/src/sender/BatchSender.js +19 -0
- package/dist/src/sender/MockSender.d.ts +2 -0
- package/dist/src/sender/MockSender.js +13 -0
- package/dist/src/sender/RawSender.js +34 -1
- package/dist/src/sender/SenderFactory.js +1 -1
- package/dist/src/sender/TonConnectSender.js +2 -0
- package/dist/src/sender/index.d.ts +1 -0
- package/dist/src/sender/index.js +1 -0
- package/dist/src/structs/InternalStruct.d.ts +133 -5
- package/dist/src/structs/Struct.d.ts +333 -7
- package/dist/src/structs/Struct.js +16 -4
- package/dist/src/wrappers/ContentUtils.d.ts +36 -13
- package/dist/src/wrappers/ContentUtils.js +197 -98
- package/dist/src/wrappers/HighloadWalletV3.d.ts +5 -3
- package/dist/src/wrappers/HighloadWalletV3.js +14 -3
- package/package.json +113 -109
- package/dist/src/adapters/contractOpener.d.ts +0 -20
- package/dist/src/adapters/contractOpener.js +0 -126
- package/dist/src/adapters/retryableContractOpener.d.ts +0 -24
- package/dist/src/adapters/retryableContractOpener.js +0 -111
package/README.md
CHANGED
|
@@ -58,6 +58,8 @@ The TAC SDK enables you to create frontends that:
|
|
|
58
58
|
- [`constructor`](./docs/sdks/operation_tracker.md#constructor): Creates a tracker instance.
|
|
59
59
|
- [`getOperationId`](./docs/sdks/operation_tracker.md#getoperationid): Retrieves the Operation ID from a `TransactionLinker`.
|
|
60
60
|
- [`getStageProfiling`](./docs/sdks/operation_tracker.md#getstageprofiling): Gets detailed timing and status for all stages of an operation.
|
|
61
|
+
- [`getStageProfilingV2`](./docs/sdks/operation_tracker.md#getstageprofilingv2): Gets stage profiling with `finalized`, `status`, and `rollback`.
|
|
62
|
+
- [`getOperationTypeV2`](./docs/sdks/operation_tracker.md#getoperationtypev2): Gets the operation type plus `finalized`.
|
|
61
63
|
- [`getSimplifiedOperationStatus`](./docs/sdks/operation_tracker.md#getsimplifiedoperationstatus): Gets a simplified overall status (Pending, Successful, Failed, Not Found).
|
|
62
64
|
- *(See file for more...)*
|
|
63
65
|
|
|
@@ -81,7 +83,9 @@ The TAC SDK enables you to create frontends that:
|
|
|
81
83
|
- **[`Enums`](./docs/models/enums.md)**: Key enumerations used by the SDK.
|
|
82
84
|
- [`Network`](./docs/models/enums.md#network): `TESTNET` or `MAINNET`.
|
|
83
85
|
- [`SimplifiedStatuses`](./docs/models/enums.md#simplifiedstatuses): `PENDING`, `FAILED`, `SUCCESSFUL`, `OPERATION_ID_NOT_FOUND`.
|
|
84
|
-
- [`OperationType`](./docs/models/enums.md#operationtype): Detailed operation
|
|
86
|
+
- [`OperationType`](./docs/models/enums.md#operationtype): Detailed operation type.
|
|
87
|
+
- [`OperationTypeV2`](./docs/models/enums.md#operationtypev2): Operation type used by `getOperationTypeV2`.
|
|
88
|
+
- [`OperationExecutionStatus`](./docs/models/enums.md#operationexecutionstatus): Top-level operation status (`success` / `failed`).
|
|
85
89
|
- [`StageName`](./docs/models/enums.md#stagename): Identifiers for tracking stages (`COLLECTED_IN_TAC`, `EXECUTED_IN_TAC`, etc.).
|
|
86
90
|
|
|
87
91
|
- **[`Structs`](./docs/models/structs.md)**: Core data structures.
|
|
@@ -196,4 +200,4 @@ For a detailed example, see `tests/uniswap_v2/sendSwap.ts` or `tests/uniswap_v2/
|
|
|
196
200
|
|
|
197
201
|
## License
|
|
198
202
|
|
|
199
|
-
MIT
|
|
203
|
+
MIT
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { DEV_AGNOSTIC_PROXY_ADDRESS as AGNOSTIC_PROXY_ADDRESS, DEV_MULTICALL_3_ADDRESS as MULTICALL_3_ADDRESS, DEV_TAC_SETTINGS_ADDRESS as TAC_SETTINGS_ADDRESS, DEV_TAC_SMART_ACCOUNT_FACTORY_ADDRESS as TAC_SMART_ACCOUNT_FACTORY_ADDRESS } from './tac/addresses';
|
|
2
|
-
import { DEV_PUBLIC_LITE_SEQUENCER_ENDPOINTS as PUBLIC_LITE_SEQUENCER_ENDPOINTS, DEV_TAC_RPC_ENDPOINT as TAC_RPC_ENDPOINT } from "./tac/endpoints";
|
|
2
|
+
import { DEV_PUBLIC_LITE_SEQUENCER_ENDPOINTS as PUBLIC_LITE_SEQUENCER_ENDPOINTS, DEV_TAC_RPC_ENDPOINT as TAC_RPC_ENDPOINT, DEV_TAC_EXPLORER_API_ENDPOINT as TAC_EXPLORER_API_ENDPOINT } from "./tac/endpoints";
|
|
3
3
|
import { DEV_TON_SETTINGS_ADDRESS as TON_SETTINGS_ADDRESS } from './ton/addresses';
|
|
4
4
|
import { DEV_DEFAULT_LITESERVERS as DEFAULT_LITESERVERS, DEV_TON_PUBLIC_RPC_ENDPOINT as TON_PUBLIC_RPC_ENDPOINT, DEV_TON_RPC_ENDPOINT_BY_TAC as TON_RPC_ENDPOINT_BY_TAC } from "./ton/endpoints";
|
|
5
5
|
export * as tac from "./tac";
|
|
6
|
-
export { PUBLIC_LITE_SEQUENCER_ENDPOINTS, TAC_RPC_ENDPOINT };
|
|
6
|
+
export { PUBLIC_LITE_SEQUENCER_ENDPOINTS, TAC_RPC_ENDPOINT, TAC_EXPLORER_API_ENDPOINT };
|
|
7
7
|
export * as ton from "./ton";
|
|
8
8
|
export { DEFAULT_LITESERVERS, TON_PUBLIC_RPC_ENDPOINT, TON_RPC_ENDPOINT_BY_TAC };
|
|
9
9
|
export { AGNOSTIC_PROXY_ADDRESS, MULTICALL_3_ADDRESS, TAC_SETTINGS_ADDRESS, TAC_SMART_ACCOUNT_FACTORY_ADDRESS, TON_SETTINGS_ADDRESS };
|
|
@@ -33,7 +33,7 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
33
33
|
};
|
|
34
34
|
})();
|
|
35
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
-
exports.TON_SETTINGS_ADDRESS = exports.TAC_SMART_ACCOUNT_FACTORY_ADDRESS = exports.TAC_SETTINGS_ADDRESS = exports.MULTICALL_3_ADDRESS = exports.AGNOSTIC_PROXY_ADDRESS = exports.TON_RPC_ENDPOINT_BY_TAC = exports.TON_PUBLIC_RPC_ENDPOINT = exports.DEFAULT_LITESERVERS = exports.ton = exports.TAC_RPC_ENDPOINT = exports.PUBLIC_LITE_SEQUENCER_ENDPOINTS = exports.tac = void 0;
|
|
36
|
+
exports.TON_SETTINGS_ADDRESS = exports.TAC_SMART_ACCOUNT_FACTORY_ADDRESS = exports.TAC_SETTINGS_ADDRESS = exports.MULTICALL_3_ADDRESS = exports.AGNOSTIC_PROXY_ADDRESS = exports.TON_RPC_ENDPOINT_BY_TAC = exports.TON_PUBLIC_RPC_ENDPOINT = exports.DEFAULT_LITESERVERS = exports.ton = exports.TAC_EXPLORER_API_ENDPOINT = exports.TAC_RPC_ENDPOINT = exports.PUBLIC_LITE_SEQUENCER_ENDPOINTS = exports.tac = void 0;
|
|
37
37
|
const addresses_1 = require("./tac/addresses");
|
|
38
38
|
Object.defineProperty(exports, "AGNOSTIC_PROXY_ADDRESS", { enumerable: true, get: function () { return addresses_1.DEV_AGNOSTIC_PROXY_ADDRESS; } });
|
|
39
39
|
Object.defineProperty(exports, "MULTICALL_3_ADDRESS", { enumerable: true, get: function () { return addresses_1.DEV_MULTICALL_3_ADDRESS; } });
|
|
@@ -42,6 +42,7 @@ Object.defineProperty(exports, "TAC_SMART_ACCOUNT_FACTORY_ADDRESS", { enumerable
|
|
|
42
42
|
const endpoints_1 = require("./tac/endpoints");
|
|
43
43
|
Object.defineProperty(exports, "PUBLIC_LITE_SEQUENCER_ENDPOINTS", { enumerable: true, get: function () { return endpoints_1.DEV_PUBLIC_LITE_SEQUENCER_ENDPOINTS; } });
|
|
44
44
|
Object.defineProperty(exports, "TAC_RPC_ENDPOINT", { enumerable: true, get: function () { return endpoints_1.DEV_TAC_RPC_ENDPOINT; } });
|
|
45
|
+
Object.defineProperty(exports, "TAC_EXPLORER_API_ENDPOINT", { enumerable: true, get: function () { return endpoints_1.DEV_TAC_EXPLORER_API_ENDPOINT; } });
|
|
45
46
|
const addresses_2 = require("./ton/addresses");
|
|
46
47
|
Object.defineProperty(exports, "TON_SETTINGS_ADDRESS", { enumerable: true, get: function () { return addresses_2.DEV_TON_SETTINGS_ADDRESS; } });
|
|
47
48
|
const endpoints_2 = require("./ton/endpoints");
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.DEV_PUBLIC_LITE_SEQUENCER_ENDPOINTS = exports.DEV_TAC_RPC_ENDPOINT = void 0;
|
|
3
|
+
exports.DEV_TAC_EXPLORER_API_ENDPOINT = exports.DEV_PUBLIC_LITE_SEQUENCER_ENDPOINTS = exports.DEV_TAC_RPC_ENDPOINT = void 0;
|
|
4
4
|
exports.DEV_TAC_RPC_ENDPOINT = "";
|
|
5
5
|
exports.DEV_PUBLIC_LITE_SEQUENCER_ENDPOINTS = [];
|
|
6
|
+
exports.DEV_TAC_EXPLORER_API_ENDPOINT = "";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{ "hash": "efc72b938535bd03ad462f377afaaa007cd918e06474b420864fa637a994dc94", "hashBase64": "78crk4U1vQOtRi83evqqAHzZGOBkdLQghk+mN6mU3JQ=", "hex": "b5ee9c7241023d010012a7000114ff00f4a413f4bcf2c80b01020120023902014803250168d0eda2edfb20c700925f04e001d0d3030171b0925f04e0fa40fa4031fa0031f401fa0031fa00013170f83a02d31f0101d33f01120401b8ed44d0fa4001f861fa4001f862fa4001f863d401d0d3ff0131f864d401d0fa0001f86dfa0001f86cfa0030f86ed401f86fd430d0d32f01f86bd32f01f867d32f01f868d32f01f869d32f01f86ad30301f865f40430f8665365a1f8460504aef80701830cf94130f8075003a101a6648200a9fa5003a0128209e1338070f8370170f836a066b608a1a6645166a122821048e660b5bae3022282106c582059bae3002282100e50d313bae302303435248210cf6a5da4ba06070d1700c46c71811d6570f8365cbcf2e064f84e59a1a0f86ef846f845c8f84b01cb2ff84701cb2ff84801cb2ff84901cb2ff84a01cb2fcb03f400c9f84fc8f84dfa02f84cfa02f84efa02c9c8f84401cbffc9c8f841cf16f842cf16f843cf16ccccccccc9ed5402fe03d31ffa00f404fa4055302170547000246ec0008e156c3101d0d300fa00fa0023963403fa0030039130e29134e255027f266ec000f84df84c5007a816a05240b915b0927034de5320a022a027a02e81391b70f836a0a052c0be5240b0e30210365f06288014fb02c88210ae7df95b2502cb1fcb3f12cb1f22cf16c9702702080c02fc3339393a3b5266a05008a05008a026a08014fb02f84e5004a0f86ef846f845c8f84b01cb2ff84701cb2ff84801cb2ff84901cb2ff84a01cb2fcb03f400c9f84fc8f84dfa02f84cfa02f84efa02c9c8f84401cbffc9c8f841cf16f842cf16f843cf16ccccccccc9ed54216ec00092316de30d05c8cb1f2101cb3f5003cf16090a001a01c8f400f84dfa02f84cfa02c901fe5003fa0213f40001cf16c982106c582059017f830771800cc8cb03cb01cb0813cbff02957158cb61cc987058cb6101d0cf16e2c98010fb0021d70b01c000b38e3bc88210d53276db5802cb1fcb3fc970018010810082226eb32091719170e2c8500401cb055006cf165004fa02cb6a039358cc019130e201c901fb00915be20b0004db3100748010810082226eb32091719170e2c8500401cb055006cf165004fa02cb6a039358cc019130e201c901fb00f80fc000938100cc928064e2f2f00302da323501fa40d4d4f828f84f52300270705003c85003cf168b02cf16ca00ccc921c8cb0113f40012f400cb00c97001f90074c8cb0212ca07cbffc9d05006c705f2e04701d7393078d721d3ff0131f8468307f40e6fa131f2e0c920d0f404f401fa40fa003020c300935b3234e30d0e1002fe280441381523d70b01c0008e70aa008150bd70f836a0738103b582100966018070f837a0801c8127e08209e1338070f837a0a47020c88210d7b9c06e580802cb1fcb3f23cf165004fa0258cf1671fa0214cb00cb00c9712070c87001ca0014cc13cb0012cb07cb07c9c87001cbff58cf167f01ca0058fa02ccc9c8ccc9e30d310f002c218307f48e6fa56c1291a4923070e201d0028307f41604fc70207f8ff2238307f47c6fa5208fe302d430d0d3ff0130fa40d20001209301fa00927058e2d430d0d20001209301fa00927058e2d4f404069233348e9634029233228e8c03d307d3073001c001f2e0cee24003e2216e8e90c804d014cf162210355980108011db3ce30d5144a004a114a0039132e201b3e6306c125222a11112131401ee7021c000965b705300f8388ee921c0018e2d5b801c8127e08209e1338070f8378208278d00738103b55870f837a08153b370f836a08042815cb270f838a4a08eb421c0028e2d5b8018811c488209e1338070f8377581058e82100966018070f837a08141a070f836a08024814bfa70f838a4a0e30ee2e23500a28e4dc85801cb055005cf165003fa0254712323ed41ed43ed44ed45ed479f5bc85003cf17c913775003cb6bcccced67ed65ed64ed63ed61747fed11987601cb6bcc01cf17ed41edf101f2ffc901fb00db06005c3154233380108011226eb32091719170e2c8500401cb055006cf165004fa02cb6a039358cc019130e201c901fb0001b8c200f2e064f846f845c8f84b01cb2ff84701cb2ff84801cb2ff84901cb2ff84a01cb2fcb03f400c9f84fc8f84dfa02f84cfa02f84efa02c9c8f84401cbffc9c8f841cf16f842cf16f843cf16ccccccccc9ed5482100e50d31350047f150188830771800cc8cb03cb01cb0813cbff02957158cb61cc987058cb6101d0cf16e2c98010fb0014a101a1f84e5210bef2e0658010fb0201fa403020d70b01c000b3915be30d160078c88210d53276db580302cb1fcb3fc970018010810082226eb32091719170e2c8500401cb055006cf165004fa02cb6a039358cc019130e201c901fb0004fe8ffd3403d4f828f84f52300270705003c85003cf168b02cf16ca00ccc921c8cb0113f40012f400cb00c97001f90074c8cb0212ca07cbffc9d05005c705f2e047028014fb0202fa40308210cf6a5da4587f830771800cc8cb03cb01cb0813cbff02957158cb61cc987058cb6101d0cf16e2c98010fb0020d70b01c000b3e30f18193c1a0078c88210ae7df95b580302cb1fcb3fc970018010810082226eb32091719170e2c8500401cb055006cf165004fa02cb6a039358cc019130e201c901fb0000025b02f8e024821074cd76b2ba8e633233f84313c705f2e04801d3ff0131f8648014fb02f846f845c8f84b01cb2ff84701cb2ff84801cb2ff84901cb2ff84a01cb2fcb03f400c9f84fc8f84dfa02f84cfa02f84efa02c9c8f84401cbffc9c8f841cf16f842cf16f843cf16ccccccccc9ed54e0332382101f95f86cbae30231221b1c019a135f03f84ec300f2e0c8c88210f358b6d05802cb1fcb3ff84efa02c9f841f84e58801072226eb32091719170e2c8500401cb055006cf165004fa02cb6a039358cc019130e201c901fb0070f86e3c03f68210063199b7ba8e5c32f84112c705f2e046fa0030f86cf846f845c8f84b01cb2ff84701cb2ff84801cb2ff84901cb2ff84a01cb2fcb03f400c9f84fc8f84dfa02f84cfa02f84efa02c9c8f84401cbffc9c8f841cf16f842cf16f843cf16ccccccccc9ed54e02282103531465cbae3022282105cec6be0bae302221d1e1f00b832f84112c705f2e046fa0030f86df846f845c8f84b01cb2ff84701cb2ff84801cb2ff84901cb2ff84a01cb2fcb03f400c9f84fc8f84dfa02f84cfa02f84efa02c9c8f84401cbffc9c8f841cf16f842cf16f843cf16ccccccccc9ed5400b832f84112c705f2e046fa4030f863f846f845c8f84b01cb2ff84701cb2ff84801cb2ff84901cb2ff84a01cb2fcb03f400c9f84fc8f84dfa02f84cfa02f84efa02c9c8f84401cbffc9c8f841cf16f842cf16f843cf16ccccccccc9ed5402f48210581879bcba8e6532f84112c705f2e046fa4030f862f8428b02c705f2d050f846f845c8f84b01cb2ff84701cb2ff84801cb2ff84901cb2ff84a01cb2fcb03f400c9f84fc8f84dfa02f84cfa02f84efa02c9c8f84401cbffc9c8f841cf16f842cf16f843cf16ccccccccc9ed54e022821060094a1bbae30222202100b66c21f841c705f2e0468b02f862f846f845c8f84b01cb2ff84701cb2ff84801cb2ff84901cb2ff84a01cb2fcb03f400c9f84fc8f84dfa02f84cfa02f84efa02c9c8f84401cbffc9c8f841cf16f842cf16f843cf16ccccccccc9ed5403fc82106a4fbe34ba8e5f6c21f842c705f2e049f842f8618b02f862f846f845c8f84b01cb2ff84701cb2ff84801cb2ff84901cb2ff84a01cb2fcb03f400c9f84fc8f84dfa02f84cfa02f84efa02c9c8f84401cbffc9c8f841cf16f842cf16f843cf16ccccccccc9ed54e022821020faec53bae3022282107ee5a6d0bae30222222324002e32f84112c705f2e046d421fb0401d0ed1eed53d430ed54017c32f84112c705f2e046d430f86f6df86682107ee5a6d0c8c970830771800cc8cb03cb01cb0813cbff02957158cb61cc987058cb6101d0cf16e2c98010fb003c00e88210e97250b7ba8e5d32f84112c705f2e046d32f0131f86bf846f845c8f84b01cb2ff84701cb2ff84801cb2ff84901cb2ff84a01cb2fcb03f400c9f84fc8f84dfa02f84cfa02f84efa02c9c8f84401cbffc9c8f841cf16f842cf16f843cf16ccccccccc9ed54e05b8210d53276dbbadc840ff2f0020120262a020158272800efb444bda89a1f48003f0c3f48003f0c5f48003f0c7a803a1a7fe0263f0c9a803a1f40003f0dbf40003f0d9f40061f0dda803f0dfa861a1a65e03f0d7a65e03f0cfa65e03f0d1a65e03f0d3a65e03f0d5a60603f0cbe80861f0cdf083f085f087f08bf08df08ff091f093f097f095f09bf099f09df09ff089001b3b4817da89a1f48003f0c3f48003f0c5f48003f0c7a803a1a7fe0263f0c9a803a1f40003f0dbf40003f0d9f40061f0dda803f0dfa861a1a65e03f0d7a65e03f0cfa65e03f0d1a65e03f0d3a65e03f0d5a60603f0cbe80861f0cd02900707020f8468307f4866fa5908e1801d32f01315303bc946c2251109130e2f8468307f47c6fa5e810235f03f847f848f849f84af84bf845f8440201202b2d01fbb9685ed44d0fa4001f861fa4001f862fa4001f863d401d0d3ff0131f864d401d0fa0001f86dfa0001f86cfa0030f86ed401f86fd430d0d32f01f86bd32f01f867d32f01f868d32f01f869d32f01f86ad30301f865f40430f866f828f84f120270705003c85003cf168b02cf16ca00ccc921c8cb0113f40012f400cb00c982c0022207001f90074c8cb0212ca07cbffc9d0010201202e3701e1b40f5f00e4b0619f28261f00ea00743f00fda89a1f48003f0c3f48003f0c5f48003f0c7a803a1a7fe0263f0c9a803a1f40003f0dbf40003f0d9f40061f0dda803f0dfa861a1a65e03f0d7a65e03f0cfa65e03f0d1a65e03f0d3a65e03f0d5a60603f0cbe80861f0cc11a1e80860fea68702f03fca60681049658a0820812750070f8375348a0a606536aa0810496a070f838525aa0526ba01a70f83818a07181012070f838a0533470f838aa00a08200fe585003a070f83612a017a08208278d0080648200a9fa5870f837a0810c1c70f836a024c3008e8d70f828541343f83c1024435012926c41e28ae66c21f80758a17030333602fe23d70b01c0008e70aa008150bd70f836a0738103b582100966018070f837a0801c8127e08209e1338070f837a0a47020c88210d7b9c06e580802cb1fcb3f23cf165004fa0258cf1671fa0214cb00cb00c9712070c87001ca0014cc13cb0012cb07cb07c9c87001cbff58cf167f01ca0058fa02ccc9c8ccc9e30d238307f48e3132005c306c22707121c8c9c87f01ca005006fa0215cc14cb0013cb0712cb07c9c87001cbff58cf167001ca00ccc9c8ccc900266fa56c1291a4923070e201d040148307f4160201a251128307f47c6fa5208ec002d430d0d3ff0130fa4031d20001209301fa00927058e2d430d0d2000192fa00927001e2d431f404310394303113a08e8d3101d307d3073001c001f2e0cee2029132e201b3123401fc7021c000965b705300f8388ee921c0018e2d5b801c8127e08209e1338070f8378208278d00738103b55870f837a08153b370f836a08042815cb270f838a4a08eb421c0028e2d5b8018811c488209e1338070f8377581058e82100966018070f837a08141a070f836a08024814bfa70f838a4a0e30ee2e201a170b60913a03500f221c0048e395b8208278d008010811e505870f8378209da9c008019812af85870f837aa00a08170e470f836a08019812af870f83c79810f5a70f838a0a4a08e3801c0038e2e308208278d00800f811d585870f8378209da9c0080198126955870f837a081440e70f836a07281051470f838a4a093f2c0cee2e20006f836a001fbb662dda89a1f48003f0c3f48003f0c5f48003f0c7a803a1a7fe0263f0c9a803a1f40003f0dbf40003f0d9f40061f0dda803f0dfa861a1a65e03f0d7a65e03f0cfa65e03f0d1a65e03f0d3a65e03f0d5a60603f0cbe80861f0cdf051f09e2404e0e0a00790a0079e2d16059e2d940199924391960227e80025e801960193038001e7001f90074c8cb0212ca07cbffc9d001f6f220c7009130e0d31f0182104b19e42abd94840ff2f0de8308d71820f901ed44d0fa4001f861fa4001f862fa4001f863d401d0d3ff0131f864d401d0fa0001f86dfa0001f86cfa0030f86ed401f86fd430d0d32f01f86bd32f01f867d32f01f868d32f01f869d32f01f86ad30301f865f40430f86601d3ff01f8443a01fe5e21f910f2a0f84901d32f0131f869f823f849bef2e0cdf849f84abef2e0cbf800f848f867f823f868f848f84ba0f86af823f845f84ba8a1f8468307f4866fa5908e1c01d32f013122bb9bf84652108307f45b30f866def8468307f47c6fa5e85f03c8f84a01cb2fc9d0f84652308307f416f866c85801cbff0101cb2ff8493b018001cb2ff84701cb2ff84801cb2ff84a01cb2fc982104b19e42a017f830771800cc8cb03cb01cb0813cbff02957158cb61cc987058cb6101d0cf16e2c98010fb003c009cf846f845c8f84b01cb2ff84701cb2ff84801cb2ff84901cb2ff84a01cb2fcb03f400c9f84fc8f84dfa02f84cfa02f84efa02c9c8f84401cbffc9c8f841cf16f842cf16f843cf16ccccccccc9ed541f981837" }
|
|
1
|
+
{ "hash": "85de6d2e111cbc56b64af4ac6e0c705806e37d984440d197ff4b6fb39439b672", "hashBase64": "hd5tLhEcvFa2SvSsbgxwWAbjfZhEQNGX/0tvs5Q5tnI=", "hex": "b5ee9c7241024a010017d4000114ff00f4a413f4bcf2c80b010201200245020148032c02f4d0eda2edfb20c700925f04e001d0d30301ed44d0fa4001f861fa4001f862fa4001f863d401d0fa0001f86dfa0001f86cfa0030f86ed401d0d3ff01f864d430f871d401d0d32f01f86bd32f01f867d32f01f868d32f01f869d32f01f86ad30301f865f40430f866d430d0fa4001f86ffa0030f87071b0e302fa400406010a135f03db3c0501748020d721d31f0101d33f01123020821058d9b21bba9a30fa0030f85001a1f8708e1782100659627fba99fa0030f85001a0f8709430f2c096e2e24904f0fa4031fa0031f401fa0031fa00013170f83a02d31f0101d33f01125365a1f846f80701830cf94130f8075003a101a6668200c02b5003a0128209e1338070f8370170f836a066b6085210a1a6645177a123821048e660b5bae3022382106c582059bae300238210497dae1dbae3023035218210cda6f261ba07080e1900da6c818120ed70f8365cbcf2e064f84e59a1a0f86ec8f84fcf16f850fa02c9f846f845c8f84b01cb2ff84701cb2ff84801cb2ff84901cb2ff84a01cb2fcb03f400c9f851c8f84401cbffccc9c8f84dfa02f84cfa02f84efa02c9c8f841cf16f842cf16f843cf16ccccccccc9ed5402fe04d31ffa00f404fa4055302170547000246ec0008e156c3101d0d300fa00fa0023963403fa0030039130e29134e255027f266ec000f84df84c5007a816a05240b915b0927034de5320a022a027a02f813c9170f836a0a052d0be5240b0e30210365f06298014fb02c88210ae7df95b2602cb1fcb3f12cb1f22cf16c9702802090d02fe333839393a3b5254a05006a05008a021a08014fb02f84e5003a0f86ec8f84fcf16f850fa02c9f846f845c8f84b01cb2ff84701cb2ff84801cb2ff84901cb2ff84a01cb2fcb03f400c9f851c8f84401cbffccc9c8f84dfa02f84cfa02f84efa02c9c8f841cf16f842cf16f843cf16ccccccccc9ed54266ec00092366de30d020a0b001a06c8f400f84dfa02f84cfa02c9019cc8cb1f2601cb3f5003cf1658fa02f40058cf16c982106c582059017f830771800cc8cb03cb01cb0813cbff02957158cb61cc987058cb6101d0cf16e2c98010fb0020d70b01c000b3915be30ddb310c0078c88210d53276db580302cb1fcb3fc970018010810082226eb32091719170e2c8500401cb055006cf165004fa02cb6a039358cc019130e201c901fb0000748010810082226eb32091719170e2c8500401cb055006cf165004fa02cb6a039358cc019130e201c901fb00f80fc000938100cc928064e2f2f00402fe333602fa40d4d4fa403001d0d3ff0101f404f401fa40fa0030f828f8515250027070500370c85004cf168b02cf1612ca000101cbffcb00c921c8cb0113f40012f400cb00c97001f90074c8cb0212ca07cbffc9d0500ac705f2e04704d7393078d721d3ff0131f8468307f40e6fa131f2e0c927c3009438333530e30d5424600f1102fe26044813505923d70b01c0008e6caa0081505d70f836a0738103b582100966018070f837a0801c8127e08209e1338070f837a0a47020c88210d7b9c06e580802cb1fcb3f23cf165004fa0258cf1671fa0214cb00cb00c9712070c87001ca0014cc13cb0012cb07cb07c9c858cf167f01ca0058fa02ccc9c8ccc9e30d2183073d10002af48e6fa56c1291a4923070e201d0028307f416040304fc54557428705470007f097009a1f84ea15007a18fd551898307f47c6fa5208fc402d430d0fa40d20001209301fa00927058e2d430d0d20001209301fa00927058e2d4f404069232348e95342291348e8d3103d307d3073001c001f2e0cee202e201e30f029132e201b319e65b36365b20c2009831f85001a1f8707f9130e21213161702ee7021c000965b705300f8388f6921c0018ee221c0028e5b21c0048e2a5b8209da9c008019812af85870f837aa008170ae70f836a08019812af870f83c79810f5a70f838a0a4a08e2901c0038e1f308209da9c0080198126955870f8378143e470f836a07281051470f838a4a093f2c0cee2e2e30de30de2414202b8f8502ca153e9a129a15330bc22c200b08ec85b5441145033206e8e2b3080108011226eb32091719170e2c8500401cb055006cf165004fa02cb6a039358cc019130e201c901fb008e8cc802d012cf1680108011db3ce214a04313e30d2b1401d428a121a05230bbf2e0665220b608c882103c497a612d02cb1fcb3f2b01cbff21fa0223fa025005cf1613cc12f400c920f80701830cf94130f8075003a1801c813a8a8209e1338070f83781348f58a070f836a00270f838a703a081337270f836a0f84f54200380188011150062226eb32091719170e2c8500401cb055006cf165004fa02cb6a039358cc019130e201c901fb0051a2a0506aa05055a113a0018e5441145033206e8e2b3080108011226eb32091719170e2c8500401cb055006cf165004fa02cb6a039358cc019130e201c901fb008e8cc802d012cf1680108011db3ce215a044142b01e85253a1c200f2e064c8f84fcf16f850fa02c9f846f845c8f84b01cb2ff84701cb2ff84801cb2ff84901cb2ff84a01cb2fcb03f400c9f851c8f84401cbffccc9c8f84dfa02f84cfa02f84efa02c9c8f841cf16f842cf16f843cf16ccccccccc9ed54c8500601cbff0101ca00c98210497dae1d01701800fa830771800cc8cb03cb01cb0813cbff02957158cb61cc987058cb6101d0cf16e2c98010fb005042a158a1f84e5210bef2e0658010fb0221d70b01c000b38e3bc88210d53276db5802cb1fcb3fc970018010810082226eb32091719170e2c8500401cb055006cf165004fa02cb6a039358cc019130e201c901fb00915be204fe8ee031333403d3ff01f828f8515220027070500370c85004cf168b02cf1612ca000101cbffcb00c921c8cb0113f40012f400cb00c97001f90074c8cb0212ca07cbffc9d05005c705f2e047028014fb0201fa4030c82301cbffc98210cda6f261017fe021821074cd76b2bae302352082101f95f86cbae302208210063199b71a1b1c1d01e4830771800cc8cb03cb01cb0813cbff02957158cb61cc987058cb6101d0cf16e2c98010fb0020d70b01c000b38e40c8821086f27385580302cb1fcb3f5801cbffc970018010810082226eb32091719170e2c8500401cb055006cf165004fa02cb6a039358cc019130e201c901fb00925f03e24900de5b3233f84313c705f2e04801d3ff0131f8648014fb02c8f84fcf16f850fa02c9f846f845c8f84b01cb2ff84701cb2ff84801cb2ff84901cb2ff84a01cb2fcb03f400c9f851c8f84401cbffccc9c8f84dfa02f84cfa02f84efa02c9c8f841cf16f842cf16f843cf16ccccccccc9ed54019c10455f05f84ec300f2e0c8c88210f358b6d05802cb1fcb3ff84efa02c9f841f84e58801072226eb32091719170e2c8500401cb055006cf165004fa02cb6a039358cc019130e201c901fb0070f86e4902feba8e69306c2232f841c705f2e046fa0030f86cc8f84fcf16f850fa02c9f846f845c8f84b01cb2ff84701cb2ff84801cb2ff84901cb2ff84a01cb2fcb03f400c9f851c8f84401cbffccc9c8f84dfa02f84cfa02f84efa02c9c8f841cf16f842cf16f843cf16ccccccccc9ed54e02082103531465cbae3022082105cec6be0ba1e1f00d2306c2232f841c705f2e046fa0030f86dc8f84fcf16f850fa02c9f846f845c8f84b01cb2ff84701cb2ff84801cb2ff84901cb2ff84a01cb2fcb03f400c9f851c8f84401cbffccc9c8f84dfa02f84cfa02f84efa02c9c8f841cf16f842cf16f843cf16ccccccccc9ed5402fc8e69306c2232f841c705f2e046fa4030f863c8f84fcf16f850fa02c9f846f845c8f84b01cb2ff84701cb2ff84801cb2ff84901cb2ff84a01cb2fcb03f400c9f851c8f84401cbffccc9c8f84dfa02f84cfa02f84efa02c9c8f841cf16f842cf16f843cf16ccccccccc9ed54e0208210581879bcbae30220821060094a1bba202100e4306c2232f841c705f2e046fa4030f862f8428b02c705f2d050c8f84fcf16f850fa02c9f846f845c8f84b01cb2ff84701cb2ff84801cb2ff84901cb2ff84a01cb2fcb03f400c9f851c8f84401cbffccc9c8f84dfa02f84cfa02f84efa02c9c8f841cf16f842cf16f843cf16ccccccccc9ed5403fe8e6810255f05f841c705f2e0468b02f862c8f84fcf16f850fa02c9f846f845c8f84b01cb2ff84701cb2ff84801cb2ff84901cb2ff84a01cb2fcb03f400c9f851c8f84401cbffccc9c8f84dfa02f84cfa02f84efa02c9c8f841cf16f842cf16f843cf16ccccccccc9ed54e02082106a4fbe34bae3022082106e7145f9bae30222232400d810255f05f842c705f2e049f842f8618b02f862c8f84fcf16f850fa02c9f846f845c8f84b01cb2ff84701cb2ff84801cb2ff84901cb2ff84a01cb2fcb03f400c9f851c8f84401cbffccc9c8f84dfa02f84cfa02f84efa02c9c8f841cf16f842cf16f843cf16ccccccccc9ed540026306c2232f841c705f2e046d401fb04d430ed5404e62082107ee5a6d0ba8ec0306c2232f841c705f2e046d430f8716df86682107ee5a6d0c8c970830771800cc8cb03cb01cb0813cbff02957158cb61cc987058cb6101d0cf16e2c98010fb00e0208210e97250b7bae302208210d53276dbba925f06e020821074db6fbdbae302208210149c7a93ba4925262700d4306c2232f841c705f2e046d32f0131f86bc8f84fcf16f850fa02c9f846f845c8f84b01cb2ff84701cb2ff84801cb2ff84901cb2ff84a01cb2fcb03f400c9f851c8f84401cbffccc9c8f84dfa02f84cfa02f84efa02c9c8f841cf16f842cf16f843cf16ccccccccc9ed5400d2306c2232f841c705f2e046fa4030f86fc8f84fcf16f850fa02c9f846f845c8f84b01cb2ff84701cb2ff84801cb2ff84901cb2ff84a01cb2fcb03f400c9f851c8f84401cbffccc9c8f84dfa02f84cfa02f84efa02c9c8f841cf16f842cf16f843cf16ccccccccc9ed5403f08eda30f84112c705f2e046fa00305033a15220bbf2e0cfc8821058d9b21b5802cb1fcb3f21fa02c9f84f522280188010226eb32091719170e2c8500401cb055006cf165004fa02cb6a039358cc019130e201c901fb00f85001a0f870e0208210461d3038bae3023403821046a47169bae3025f04840ff2f049282901ba303233f84113c705f2e04601fa0030f8505210bbf2e0d0c882100659627f580302cb1fcb3f21fa02c9f84f705880188050226eb32091719170e2c8500401cb055006cf165004fa02cb6a039358cc019130e201c901fb00f85001a1f8704901d8f84fc705f2e04a01f40430206eb38ed8d0d3ff0101fa40fa00d4f40430f84e17a15005a121be8e3e316c22c85801cbff01fa02c9821049e265430170830771800cc8cb03cb01cb0813cbff02957158cb61cc987058cb6101d0cf16e2c98010fb00f80ff2c065e30d925f03e22a01e64034206e8e2b3080108011226eb32091719170e2c8500401cb055006cf165004fa02cb6a039358cc019130e201c901fb008e8cc802d012cf1680108011db3ce2c80101cbffc9821046a471690170830771800cc8cb03cb01cb0813cbff02957158cb61cc987058cb6101d0cf16e2c98010fb002b00a28e4dc85801cb055005cf165003fa0254712323ed41ed43ed44ed45ed479f5bc85003cf17c913775003cb6bcccced67ed65ed64ed63ed61747fed11987601cb6bcc01cf17ed41edf101f2ffc901fb00db060201202d340201202e2f00d3bb769ed44d0fa4001f861fa4001f862fa4001f863d401d0fa0001f86dfa0001f86cfa0030f86ed401d0d3ff01f864d430f871d401d0d32f01f86bd32f01f867d32f01f868d32f01f869d32f01f86ad30301f865f40430f866d430d0fa4001f86ffa0030f870f84ff8508020120303201fbb444bda89a1f48003f0c3f48003f0c5f48003f0c7a803a1f40003f0dbf40003f0d9f40061f0dda803a1a7fe03f0c9a861f0e3a803a1a65e03f0d7a65e03f0cfa65e03f0d1a65e03f0d3a65e03f0d5a60603f0cbe80861f0cda861a1f48003f0dff40061f0e1f083f085f087f08bf08df08ff091f093f097f095f09bf0990310014f84ef851f844f84ff85001cbb4817da89a1f48003f0c3f48003f0c5f48003f0c7a803a1f40003f0dbf40003f0d9f40061f0dda803a1a7fe03f0c9a861f0e3a803a1a65e03f0d7a65e03f0cfa65e03f0d1a65e03f0d3a65e03f0d5a60603f0cbe80861f0cda861a1f48003f0dff40061f0e103300707020f8468307f4866fa5908e1801d32f01315303bc946c2251109130e2f8468307f47c6fa5e810235f03f847f848f849f84af84bf845f8440201203539020120363801d5b6d0bda89a1f48003f0c3f48003f0c5f48003f0c7a803a1f40003f0dbf40003f0d9f40061f0dda803a1a7fe03f0c9a861f0e3a803a1a65e03f0d7a65e03f0cfa65e03f0d1a65e03f0d3a65e03f0d5a60603f0cbe80861f0cda861a1f48003f0dff40061f0e1f051f0a225037006e027070500370c85004cf168b02cf1612ca000101cbffcb00c921c8cb0113f40012f400cb00c9207001f90074c8cb0212ca07cbffc9d001004fb7b17f00e030619f28261f00ea00742034ccd04018056a00740250413c26700e1f06e02e1f06d4100201203a4301fbb40f5f00e4b0619f28261f00ea00743f00fda89a1f48003f0c3f48003f0c5f48003f0c7a803a1f40003f0dbf40003f0d9f40061f0dda803a1a7fe03f0c9a861f0e3a803a1a65e03f0d7a65e03f0cfa65e03f0d1a65e03f0d3a65e03f0d5a60603f0cbe80861f0cda861a1f48003f0dff40061f0e011a1a7fe0261e8086103b02e87f5343a60381037a58a0820812750070f8375348a0a603536aa081037aa070f838525aa0526ba01a70f83818a07181012070f838a0533470f838aa00a082010abd5003a070f83612a017a0810c1c70f836a024c3008e8d70f828541343f83c1024435012926c41e28ae66c21f80758a170f836a03c3f02fe23d70b01c0008e6caa0081505d70f836a0738103b582100966018070f837a0801c8127e08209e1338070f837a0a47020c88210d7b9c06e580802cb1fcb3f23cf165004fa0258cf1671fa0214cb00cb00c9712070c87001ca0014cc13cb0012cb07cb07c9c858cf167f01ca0058fa02ccc9c8ccc9e30d238307f48e6fa56c123d3e0054306c22707121c8c9c87f01ca005006fa0215cc14cb0013cb0712cb07c9c858cf167001ca00ccc9c8ccc9001e91a4923070e201d040148307f41602019a51128307f47c6fa5208ebc02d430d0fa4031d20001209301fa00927058e2d430d0d2000192fa00927001e2d431f404310394303113a08e8d3101d307d3073001c001f2e0cee2029132e201b3124002fc7021c000965b705300f8388f6921c0018ee221c0028e5b21c0048e2a5b8209da9c008019812af85870f837aa008170ae70f836a08019812af870f83c79810f5a70f838a0a4a08e2901c0038e1f308209da9c0080198126955870f8378143e470f836a07281051470f838a4a093f2c0cee2e2e30de30de201a170b60913a04142005a5b8018811c488209e1338070f8377581058e82100966018070f837a08140b570f836a08024814bfa70f838a4a0005a5b801c8127e08209e1338070f8378208278d00738103b55870f837a081535370f836a08042815cb270f838a4a001d5b662dda89a1f48003f0c3f48003f0c5f48003f0c7a803a1f40003f0dbf40003f0d9f40061f0dda803a1a7fe03f0c9a861f0e3a803a1a65e03f0d7a65e03f0cfa65e03f0d1a65e03f0d3a65e03f0d5a60603f0cbe80861f0cda861a1f48003f0dff40061f0e1f051f0a225044006a027070500370c85004cf168b02cf1612ca000101cbffcb00c921c8cb0113f40012f400cb00c97001f90074c8cb0212ca07cbffc9d0013af220c7009130e0d31f840f0282104b19e42abd12f2f28308d71820f9014601faed44d0fa4001f861fa4001f862fa4001f863d401d0fa0001f86dfa0001f86cfa0030f86ed401d0d3ff01f864d430f871d401d0d32f01f86bd32f01f867d32f01f868d32f01f869d32f01f86ad30301f865f40430f866d430d0fa4001f86ffa0030f87001d3ff01f8445e21f910f2a0f84901d32f0131f869f823f849be4701fcf2e0cdf849f84abef2e0cbf800f848f867f823f868f848f84ba0f86af823f845f84ba8a1f8468307f4866fa5908e1c01d32f013122bb9bf84652108307f45b30f866def8468307f47c6fa5e85f03c8f84a01cb2fc9d0f84652308307f416f866c85801cbff0101cb2ff84901cb2ff84701cb2ff84801cb2ff84a01cb2fc948015a82104b19e42a017f830771800cc8cb03cb01cb0813cbff02957158cb61cc987058cb6101d0cf16e2c98010fb004900b2c8f84fcf16f850fa02c9f846f845c8f84b01cb2ff84701cb2ff84801cb2ff84901cb2ff84a01cb2fcb03f400c9f851c8f84401cbffccc9c8f84dfa02f84cfa02f84efa02c9c8f841cf16f842cf16f843cf16ccccccccc9ed5477d5637a" }
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{ "hash": "
|
|
1
|
+
{ "hash": "e1813fc7bc8662bfb7862561f4931ff3edde1b562cd21b0dbed7c11a800034d2", "hashBase64": "4YE/x7yGYr+3hiVh9JMf8+3eG1Ys0hsNvtfBGoAANNI=", "hex": "b5ee9c7241020e010002c1000114ff00f4a413f4bcf2c80b010201620208029cd03221c700925f03e0d0d30301ed44d0fa4001f861fa4001f862d20001f863d3ff01f864f40430f86571b08e843031db3ce0fa403001d31f0101d33f011201821042502ab3bae3025f04840ff2f0030501c28020d721d31f0101d33f0112328210497dae1dbaf2e096f84270f8638b02f8626df865f845c8f841cf16f842cf16f84301ca00f84401cbfff400c9ed54c88210cda6f261580302cb1fcb3ff84401cbff01cf16c97076fb02f8417058801081008204004c226eb32091719170e2c8500401cb055006cf165004fa02cb6a039358cc019130e201c901fb0002cef843f2d0c801d4d4fa40fa4030532501d0d3ff01f864f404f404fa40fa0030f844553010235f03f84458baf2e0cd01f901018307f40e6fa131f2e0cc5ddb3cf80723830cf9413026830cf94130f8075005a15323a60381037a58a0820812750070f8370c54155c0d0601fe7181012070f838506570f838a70314a05970f83ca082010abd58a070f836a08208278d0080668200c02b5870f837a001a0bcb38e362676fb0225706d8010810082226eb32091719170e2c8500401cb055006cf165004fa02cb6a039358cc019130e201c901fb00f80ff230dec88210497dae1d580602cb1fcb3f01cf1612cc0700ba5210cc58cf16c9038010fb02f8417058048018810090226eb32091719170e2c8500401cb055006cf165004fa02cb6a039358cc019130e201c901fb007ff863f862f865f845c8f841cf16f842cf16f84301ca00f84401cbfff400c9ed54020148090a0049ba30bd0d3ff01f864f404f404fa40fa0030f844553010245f0401f901018307f40e6fa13180201200b0c0051b444bda89a1f48003f0c3f48003f0c5a40003f0c7a7fe03f0c9e80861f0cbf083f085f087f08bf0890010bb40adb678ff00d003c01d739f2e0c9d30701c003f2e0cad43001f900018307f40e6fa131f2e0cb9ecd8dfe" }
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{ "hash": "
|
|
1
|
+
{ "hash": "ef238907a22efe60b007b98788d1c9c8e74eca2fcf3df49d708c542528784124", "hashBase64": "7yOJB6Iu/mCwB7mHiNHJyOdOyi/PPfSdcIxUJSh4QSQ=", "hex": "b5ee9c7241020e010003a5000114ff00f4a413f4bcf2c80b01020162020d04f8d020c700925f04e001d0d3030171b0925f04e0fa40fa4031fa0031f401fa0031fa00013170f83a02d31f0101d33f0112ed44d0fa4001f861fa4001f862fa4030f8635165a18010811e508209e1338070f83766b608a15155a12182107362d09cbae302303333218210ae7df95bbae3022182107817b330bae30233200307080a018e3101fa0021c2008ebafa40f40401d0fa00f404f404301034342070547000246ec0008e156c3101d0d300fa00fa0023963403fa0030039130e29134e255023324104b03925f07e20402be04aa015003a001a001a001a081214370f836a0813c9170f836a08115b470f836a08019812af870f83ca0812af870f836a0812ee070f836a08019812af882100966018070f837a080668200c02b8209e1338070f837a015be226eb321b0e30f050600d630c85005cf1624cf1658fa02c9c804103782102906ab024813061582106c582059500502cb1fcb3f12cb1f01fa02f40001cf1613cc12ccc90176fb02f84170588010810082226eb32091719170e2c8500401cb055006cf165004fa02cb6a039358cc019130e201c901fb0000fc32333434443066706d7022c3009430206eb3de20c00091709171e270c882100f8a7ea5580a02cb1fcb3f5006fa025006cf165003cf1615cb005004fa02cb000191cc9131e27001c980108050226eb32091719170e2c8500401cb055006cf165004fa02cb6a039358cc019130e201c901fb00f80f938100c8928064e2f2f0013631f841c705f2e0468020d721d430d0fa40fa40fa0030211034706d09012e31f841c705f2e046fa40fa40fa00fa40fa00f4043010560900d27022c3009430206eb3de20c00091709171e270c882100f8a7ea5580a02cb1fcb3f5006fa025006cf165003cf1615cb005004fa02cb000191cc9131e27001c980108050226eb32091719170e2c8500401cb055006cf165004fa02cb6a039358cc019130e201c901fb0002e08210581879bcba8e2730f84212c705f2e047fa4030f863f8438b02c705f2d050c8f841cf16f842cf16f843cf16c9ed54e020821060094a1bba8e1c5bf842c705f2e0478b02f863c8f841cf16f842cf16f843cf16c9ed54e02082106a4fbe34bae30282106e7145f9bae3025b840ff2f00b0c00525bf843c705f2e048f8438b02c705f2d050f843f8628b02f863c8f841cf16f842cf16f843cf16c9ed54002cf84212c705f2e047d421fb0401d0ed1eed53d430ed540035a0844bda89a1f48003f0c3f48003f0c5f48061f0c7f083f085f0878d032a56" }
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{ "hash": "
|
|
1
|
+
{ "hash": "6233b33325bdd823e75a7ad68e425df6d9fcd28f399bdee5610eb75a055e3599", "hashBase64": "YjOzMyW92CPnWnrWjkJd9tn80o85m97lYQ63WgVeNZk=", "hex": "b5ee9c7241021501000525000114ff00f4a413f4bcf2c80b0102016202140202ca0313020120041204cdd0831c02497c138007434c0c05c6c2544d7c0fc0e383e903e900c7e800c7d007e800c7e80004c5c3e0e80b4c7c048208403e29fa96ea3a14c0d1676cf3808208405e351466ea3a14c0c96b6cf380d4920841657c1ef2ea3a10d1676cf3817c120840153e8d96ea05090e1101da03d33f0101fa00fa4021f0155bed44d0fa0001f861fa4001f862fa4030f863f84123a1f861f8425006c705f2e2c1f841c2fff2e2c2f843f82a7054201314c85003fa0201cf1601cf16c922c8cb0112f400f400cb00c97021f90074c8cb0212ca07cbffc9d005fa40f401fa00200601fc20d70b009bd74bc00101c001b0f2e2c49130e2c88210178d4519580702cb1fcb3f5004fa02f842cf1601cf1622fa025003cf1643152191729171e2f839206e938129ad9120e2216e9431812ca39101e25023a813a07381034f70f83ca00270f83612a00170f836a0738103b582100966018070f837a0bcf2b070401380180701308050db3cf841f842f843c85003fa0201cf1601cf16c9ed540800a28e4dc85801cb055005cf165003fa0254712323ed41ed43ed44ed45ed479f5bc85003cf17c913775003cb6bcccced67ed65ed64ed63ed61747fed11987601cb6bcc01cf17ed41edf101f2ffc901fb00db0603f2ed44d0fa0001f861fa4001f862fa4030f86303d33f0101fa00f84122a0f861fa40fa40f84327c705f843f82a25595970037054201314c85003fa0201cf1601cf16c922c8cb0112f400f400cb00c9f90074c8cb0212ca07cbffc9d05008c70517b1f2e2c305fa0021925f04e30d22d70b01c000b3925f04e30d0a0b0d0140c882107362d09c2602cb1fcb3f5004fa0258cf1658cf16f8425980188011db3c0c015c03a1f82fa0738103b582100966018070f837b60972fb0270c88210d53276db580402cb1fcb3f128010810082db3c0c00988e48c85801cb055004cf1658fa02547120ed41ed43ed44ed45ed479d5bc85003cf17c9127158cb6acced67ed65ed64ed63ed61737fed11977001cb6a01cf17ed41edf101f2ffc901fb00db050028f841f842f843c85003fa0201cf1601cf16c9ed5401f4ed44d0fa0001f861fa4001f862fa4030f86303d33f0101fa00fa40f40430206e2092316d9201d0e221917093fa0001e222916d9401f40459e20392316d9401f40430e2f84125a1f861f8425008c705f2e2c1f841c2fff2e2c2c821fa0212f40016f400c9c882107bdd97de580502cb1fcb3f58fa02f842cf16210f01e8d70b01c0009331f8429101e2cf16f400c94133f839206e938121cd9120e2216e9431812ca39101e203aa0112a00170f836a081287570f836a0813c9170f836a08125b670f836a00170f836a080668200c02b8209e1338070f837a0801c8127e08209e1338070f837a0bcf2b0f843705880188050100074226eb32091719170e2c8500401cb055006cf165004fa02cb6a039358cc019130e201c901fb00f841f842f843c85003fa0201cf1601cf16c9ed5400b08e51ed44d0fa0001f861fa4001f862fa4030f863738103b582100966018070f83770fb02f842706d8010810082226eb32091719170e2c8500401cb055006cf165004fa02cb6a039358cc019130e201c901fb00e0840ff2f00013a2fd2210e0007970a6c0009fae200835c87b51343e80007e187e90007e18be900c3e18f4c7c048208405e351466e8060841ef765f7aeac7cb8b1601035c87e800c3e1040683e187e107e10be10f21400fe808073c58073c5b27b55200039a0f605da89a1f40003f0c3f48003f0c5f48061f0c7f083f085f087f05573909161" }
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{ "hash": "
|
|
1
|
+
{ "hash": "589990451a76a0b1a6c0e1d70f0410905117f05fa6c97a273d6a1e1f26732ebc", "hashBase64": "WJmQRRp2oLGmwOHXDwQQkFEX8F+myXonPWoeHyZzLrw=", "hex": "b5ee9c72410216010004a6000114ff00f4a413f4bcf2c80b0102016202150202ca0314020120041301bdd0cc8b1c02497c0f83434c0c05c6c238f16fb51343480007e1874ffc07e18b500743e90007e18fe90007e19be900c3e193d010c3e19600835c874c7c04c60841b1608166ebcb832dffe187c0e383e903e900c7e800c7d007e800c7e80004c60504a4ed44d0d20001f861d3ff01f862d401d0fa4001f863fa4001f866fa4030f864f40430f86503d31f0101d33f0112218210bd6ea770bae3022182105fcc3d14bae3022182102fcb26a2bae30221820bb390ceba06070a0b00e8313432f841b3f2e0c8f84301c705f2e048fa4001f864d401f8657ff861f0387581058e82100966018070f83772fb02c8821005138d91580302cb1fcb3f8b02cf1601cf16c9f84470588010810082226eb32091719170e2c8500401cb055006cf165004fa02cb6a039358cc019130e201c901fb0002c83110344013f841f2e0c9f84414c705f2e047fa4021f0155bfa40d2000130fa0022d70b01c000b35427272191729171e2f839206e9430812dcade02a812a07581058e82100966018070f837a00170f836a0bcf2b020923034e30d02923031e30df864f03808090084c8821005138d912502cb1fcb3ff844cf165006cf16c9544266801071226eb32091719170e2c8500401cb055006cf165004fa02cb6a039358cc019130e201c901fb00009e22f0155bc88210d53276db5802cb1fcb3fc97581058e82100966018070f83776fb0212700180108306226eb32091719170e2c8500401cb055006cf165004fa02cb6a039358cc019130e201c901fb000096345b32f841f2e0c9c882108b7717355802cb1fcb3ff84201cbfff843cf16c9700180108042226eb32091719170e2c8500401cb055006cf165004fa02cb6a039358cc019130e201c901fb00015e8e873110344013db3ce030316c228210ae7df95bba8e12f841b3f2e0c8f846c705f2e0467ff861f038e030840ff2f00c01a0f841f2e0c9f84414c705f2e047fa40f40401d0fa00f404f404301034342070547000246ec0008e156c3101d0d300fa00fa0023963403fa0030039130e29134e2550233f8465260c70525105b50a443300d04faf839206e9430812d20de5aa058a05003a001aa00a00170f836a0813c9170f836a081121e70f836a080668200c02b8209e1338070f837a07581058e82100966018070f837a0bcf2b0248e123034c88210d53276db580302cb1fcb3ff400e30d70f861f038218e107581058e82100966018070f83776fb02de7022e30f030e0f10110060c88210bcd19310f844102510464303081582106c582059500502cb1fcb3f12cb1f01fa02f40001cf16f844cf1613f400000480180004801001189381009093810082e213db3c1200988e48c85801cb055004cf1658fa02547120ed41ed43ed44ed45ed479d5bc85003cf17c9127158cb6acced67ed65ed64ed63ed61737fed11977001cb6a01cf17ed41edf101f2ffc901fb00db050013a2fd2210e0007970a6c00045ae3e11723e10f3c5be11b3c5be1133c5b2723e104072803e108072fff33d00327b5520007ba11f9fda89a1a40003f0c3a7fe03f0c5a803a1f48003f0c7f48003f0cdf48061f0c9e80861f0cbf08335f083f085f087f089f08bc1f083f085f0871604dbd5959cd1" }
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{ "hash": "
|
|
1
|
+
{ "hash": "66d5b121d746cbeb32c1c7ced5ecfeeaeb4c7d2b7a20ec5dbb9048aa0c3c1cdb", "hashBase64": "ZtWxIddGy+sywcfO1ez+6utMfSt6IOxdu5BIqgw8HNs=", "hex": "b5ee9c7241020d01000381000114ff00f4a413f4bcf2c80b01020162020c04f6d020c700925f04e001d0d3030171b0925f04e0fa40fa4031fa0031f401fa0031fa00013170f83a02d31f0101d33f01125165a1800f811d588209e1338070f83766b608a15155a1ed44d0fa4001f861fa4001f862fa4030f863218210ae7df95bbae3022182107817b330bae30221821005138d91bae302306c33200304050900c05b6c22f84112c705f2e0468020d721fa40fa4030c882105fcc3d14580402cb1fcb3f22cf1658cf167001ca0070fa027001ca00c9700180108050226eb32091719170e2c8500401cb055006cf165004fa02cb6a039358cc019130e201c901fb0000c45b32f841c705f2e046fa40fa40fa0030c882105fcc3d14580602cb1fcb3f21cf1601cf167001ca005003fa027001ca00c90176fb0270018010810082226eb32091719170e2c8500401cb055006cf165004fa02cb6a039358cc019130e201c901fb0001783101fa40f40401d0fa00f404f404301034342070547000246ec0008e156c3101d0d300fa00fa0023963403fa0030039130e29134e255023324104a0306029e04aa015003a001a001a001a0811e0870f836a0813c9170f836a081128170f836a0812dca70f836a0801981269582100966018070f837a080668200c02b8209e1338070f837a014be226eb321b0e30f070800c430c8471382108b0929625120071582106c582059500502cb1fcb3f12cb1f01fa02f40001cf1601cf1601cf1612ccc90176fb02f84170588010810082226eb32091719170e2c8500401cb055006cf165004fa02cb6a039358cc019130e201c901fb0000b835355bc882105fcc3d14580502cb1fcb3f22cf1658cf167001ca0070fa027001ca00c912700180108050226eb32091719170e2c8500401cb055006cf165004fa02cb6a039358cc019130e201c901fb00f80f938100c8928064e2f2f002e08210581879bcba8e2730f84212c705f2e047fa4030f863f8438b02c705f2d050c8f841cf16f842cf16f843cf16c9ed54e020821060094a1bba8e1c5bf842c705f2e0478b02f863c8f841cf16f842cf16f843cf16c9ed54e02082106a4fbe34bae30282106e7145f9bae3025b840ff2f00a0b00525bf843c705f2e048f8438b02c705f2d050f843f8628b02f863c8f841cf16f842cf16f843cf16c9ed54002cf84212c705f2e047d421fb0401d0ed1eed53d430ed540035a0844bda89a1f48003f0c3f48003f0c5f48061f0c7f083f085f087c02234c5" }
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{ "hash": "
|
|
1
|
+
{ "hash": "5f5b34e1aa219ac5e3b92fbe6d4227f4517a2be4ccb13ba6814d72b136e99647", "hashBase64": "X1s04aohmsXjuS++bUIn9FF6K+TMsTumgU1ysTbplkc=", "hex": "b5ee9c72410210010002a6000114ff00f4a413f4bcf2c80b01020162020902f8d020c700925f04e001d0d3030171b0925f04e0fa403001d31f0101d33f0112ed44d0d30701f861fa4001f862fa4001f863f40430f8645154a1f844f80701830cf94130f8075003a170f83601a676820097575003a012821012cc030070f837a066b608a114a1c200f2e064228210245e9406bae302228210581879bc0304005a6c22f84212c705f2e046d3ff0101d430f844128307f417f864f844f841c8cb07f842cf16f843cf16f400c9ed5404feba8e2c6c22f84212c705f2e046fa4030f863f8438b02c705f2d050f844f841c8cb07f842cf16f843cf16f400c9ed54e022821060094a1bba8e22135f03f842c705f2e0468b02f863f844f841c8cb07f842cf16f843cf16f400c9ed54e02282106a4fbe34bae302228210399685b8bae3023001821040148d4abae3025b840f05060708005e135f03f843c705f2e047f8438b02c705f2d050f843f8628b02f863f844f841c8cb07f842cf16f843cf16f400c9ed5400a46c12d3ff013120f8448307f40f6fa130c88210707a28d2580502cb1fcb3f0101cbff12f400c9700180108042226eb32091719170e2c8500401cb055006cf165004fa02cb6a039358cc019130e201c901fb000080f844c88210cf03b318580402cb1fcb3f12f400c9700180108042226eb32091719170e2c8500401cb055006cf165004fa02cb6a039358cc019130e201c901fb000004f2f00201200a0d0201580b0c0043b444bda89a1a60e03f0c3f48003f0c5f48003f0c7e80861f0c9f083f085f087f0890003bb4fffda89a1a60e03f0c3f48003f0c5f48003f0c7e80861f0c9f085f087002016a0e0f0037b3093b513434c1c07e187e90007e18be90007e18fd010c3e193e11200043b10dfb513434c1c07e187e90007e18be90007e18fd010c3e193e1120c1fd03dbe860ec13a82d" }
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { Address, Cell, Contract, ContractProvider, Sender, Slice } from '@ton/core';
|
|
2
2
|
import { StorageStats } from './utils/GasUtils';
|
|
3
3
|
import { MerkleRoot } from './utils/MerkleRoots';
|
|
4
|
+
import { CrossChainLayerPayload } from './utils/CrossChainLayerPayload';
|
|
4
5
|
export type CrossChainLayerConfig = {
|
|
5
6
|
adminAddress: string;
|
|
6
7
|
newAdminAddress?: string;
|
|
@@ -17,6 +18,8 @@ export type CrossChainLayerConfig = {
|
|
|
17
18
|
tacProtocolFee?: number;
|
|
18
19
|
protocolFeeSupply?: number;
|
|
19
20
|
executorCode: Cell;
|
|
21
|
+
stakingAdapterAddress?: string;
|
|
22
|
+
stakedTonSupply?: number;
|
|
20
23
|
};
|
|
21
24
|
export type EpochInfo = {
|
|
22
25
|
lastMerkleRoot: bigint;
|
|
@@ -32,6 +35,10 @@ export type ExecutorData = {
|
|
|
32
35
|
address: Address;
|
|
33
36
|
stateInit: Cell;
|
|
34
37
|
};
|
|
38
|
+
export type StakingInfo = {
|
|
39
|
+
stakingAdapterAddress: Address;
|
|
40
|
+
stakedTonSupply: bigint;
|
|
41
|
+
};
|
|
35
42
|
export declare enum MsgType {
|
|
36
43
|
tonTransfer = 1255570643,
|
|
37
44
|
jettonTransfer = 688302850,
|
|
@@ -41,14 +48,14 @@ export declare enum MsgType {
|
|
|
41
48
|
}
|
|
42
49
|
export declare const CrossChainLayerOpCodes: {
|
|
43
50
|
anyone_tvmMsgToEVM: number;
|
|
44
|
-
|
|
51
|
+
anyone_tvmMsgToEvmErrorNotification: number;
|
|
45
52
|
anyone_excesses: number;
|
|
46
53
|
anyone_addProtocolFee: number;
|
|
47
54
|
anyone_collectProtocolFee: number;
|
|
48
55
|
anyone_collectProtocolFeeNotification: number;
|
|
49
56
|
executor_evmMsgToTVM: number;
|
|
50
|
-
executor_revertSpentParam: number;
|
|
51
57
|
executor_errorNotification: number;
|
|
58
|
+
executor_evmMsgToTvmErrorNotification: number;
|
|
52
59
|
admin_changeAdminAddress: number;
|
|
53
60
|
admin_cancelChangingAdminAddress: number;
|
|
54
61
|
admin_updateCode: number;
|
|
@@ -56,28 +63,44 @@ export declare const CrossChainLayerOpCodes: {
|
|
|
56
63
|
admin_updateEpochDelay: number;
|
|
57
64
|
admin_updateTonProtocolFee: number;
|
|
58
65
|
admin_updateTacProtocolFee: number;
|
|
66
|
+
admin_changeStakingAdapterAddress: number;
|
|
67
|
+
admin_stake: number;
|
|
68
|
+
admin_unstake: number;
|
|
59
69
|
newAdmin_confirmChangingAdminAddress: number;
|
|
60
70
|
sequencerMultisig_changeSequencerMultisigAddress: number;
|
|
61
71
|
sequencerMultisig_updateMerkleRoot: number;
|
|
62
72
|
sequencerMultisig_updateGroupPublicKey: number;
|
|
73
|
+
stakingAdapter_manualUnstakeRequest: number;
|
|
74
|
+
stakingAdapter_automaticUnstakeRequest: number;
|
|
75
|
+
stakingAdapter_stakeRequest: number;
|
|
76
|
+
stakingAdapter_reportUnstakeResult: number;
|
|
77
|
+
stakingAdapter_reportUnstakeResultError: number;
|
|
78
|
+
jettonMinter_mint: number;
|
|
79
|
+
jettonWallet_transferNotification: number;
|
|
80
|
+
jettonWallet_burn: number;
|
|
63
81
|
};
|
|
64
82
|
export declare const CrossChainLayerErrors: {
|
|
65
83
|
noErrors: number;
|
|
84
|
+
invalidSenderSignature: number;
|
|
66
85
|
systemNotEnoughTon: number;
|
|
67
86
|
notFromAdmin: number;
|
|
68
87
|
notFromExecutor: number;
|
|
69
88
|
notFromSequencerMultisig: number;
|
|
70
89
|
notFromNewAdmin: number;
|
|
90
|
+
notFromStakingAdapter: number;
|
|
71
91
|
newAdminAddressIsNone: number;
|
|
72
92
|
notEnoughTon: number;
|
|
73
93
|
insufficientBalance: number;
|
|
94
|
+
insufficientStakedBalance: number;
|
|
74
95
|
zeroFeeSupply: number;
|
|
75
96
|
invalidProof: number;
|
|
76
97
|
votingNotActive: number;
|
|
77
98
|
messageCollectEndTimeLow: number;
|
|
78
99
|
notEnoughProtocolFee: number;
|
|
79
100
|
messageCollectEndTimeHigh: number;
|
|
80
|
-
|
|
101
|
+
feeCalculationUnsupported: number;
|
|
102
|
+
stakeAmountTooHigh: number;
|
|
103
|
+
unstakeAmountTooHigh: number;
|
|
81
104
|
unknownOp: number;
|
|
82
105
|
};
|
|
83
106
|
export declare function crossChainLayerConfigToCell(config: CrossChainLayerConfig): Cell;
|
|
@@ -87,9 +110,14 @@ export declare class CrossChainLayer implements Contract {
|
|
|
87
110
|
code: Cell;
|
|
88
111
|
data: Cell;
|
|
89
112
|
} | undefined;
|
|
113
|
+
static tvmMsgToEvmGasConsumption: bigint;
|
|
114
|
+
static feeMinterGasConsumption: bigint;
|
|
115
|
+
static collectionMintGasConsumption: bigint;
|
|
90
116
|
static minStorageDuration: number;
|
|
91
117
|
static storageStats: StorageStats;
|
|
92
118
|
static addFeeGasConsumption: bigint;
|
|
119
|
+
static reserveFee: bigint;
|
|
120
|
+
static reportUnstakeResultGasConsumption: bigint;
|
|
93
121
|
constructor(address: Address, init?: {
|
|
94
122
|
code: Cell;
|
|
95
123
|
data: Cell;
|
|
@@ -114,7 +142,7 @@ export declare class CrossChainLayer implements Contract {
|
|
|
114
142
|
}): Promise<void>;
|
|
115
143
|
sendErrorNotification(provider: ContractProvider, via: Sender, value: bigint, opts: {
|
|
116
144
|
queryId?: number;
|
|
117
|
-
|
|
145
|
+
operationId: bigint;
|
|
118
146
|
responseAddress: Address;
|
|
119
147
|
}): Promise<void>;
|
|
120
148
|
sendUpdateGroupPublicKey(provider: ContractProvider, via: Sender, value: bigint, opts: {
|
|
@@ -168,9 +196,28 @@ export declare class CrossChainLayer implements Contract {
|
|
|
168
196
|
queryId?: number;
|
|
169
197
|
code: Cell;
|
|
170
198
|
}): Promise<void>;
|
|
199
|
+
sendExcesses(provider: ContractProvider, via: Sender, value: bigint): Promise<void>;
|
|
200
|
+
sendChangeStakingAdapter(provider: ContractProvider, via: Sender, value: bigint, opts: {
|
|
201
|
+
queryId?: number;
|
|
202
|
+
stakingAdapterAddress: string;
|
|
203
|
+
}): Promise<void>;
|
|
204
|
+
sendStake(provider: ContractProvider, via: Sender, value: bigint, opts: {
|
|
205
|
+
queryId?: number;
|
|
206
|
+
stakeAmount: number | bigint;
|
|
207
|
+
}): Promise<void>;
|
|
208
|
+
sendUnstake(provider: ContractProvider, via: Sender, value: bigint, opts: {
|
|
209
|
+
queryId?: number;
|
|
210
|
+
unstakeAmount: number | bigint;
|
|
211
|
+
}): Promise<void>;
|
|
212
|
+
sendReportUnstakeResult(provider: ContractProvider, via: Sender, value: bigint, opts: {
|
|
213
|
+
queryId?: number;
|
|
214
|
+
payload: CrossChainLayerPayload;
|
|
215
|
+
}): Promise<void>;
|
|
171
216
|
getFullData(provider: ContractProvider): Promise<CrossChainLayerConfig>;
|
|
172
217
|
getCurrentEpochInfo(provider: ContractProvider): Promise<EpochInfo>;
|
|
173
|
-
|
|
174
|
-
|
|
218
|
+
getStakingInfo(provider: ContractProvider): Promise<StakingInfo>;
|
|
219
|
+
getExecutorAddress(provider: ContractProvider, operationId: bigint): Promise<Address>;
|
|
220
|
+
getStorageFee(provider: ContractProvider, merkleRoots: Cell): Promise<bigint>;
|
|
221
|
+
getExecutorData(provider: ContractProvider, operationId: bigint): Promise<ExecutorData>;
|
|
175
222
|
getEvmMsgToTvmFees(provider: ContractProvider, payload: Cell, proofBits: bigint, proofCells: bigint, executorFeeAmount: bigint, executorFeeToken: Address): Promise<bigint>;
|
|
176
223
|
}
|
|
@@ -7,6 +7,7 @@ const crypto_1 = require("@ton/crypto");
|
|
|
7
7
|
const Constants_1 = require("./Constants");
|
|
8
8
|
const GasUtils_1 = require("./utils/GasUtils");
|
|
9
9
|
const MerkleRoots_1 = require("./utils/MerkleRoots");
|
|
10
|
+
const CrossChainLayerPayload_1 = require("./utils/CrossChainLayerPayload");
|
|
10
11
|
var MsgType;
|
|
11
12
|
(function (MsgType) {
|
|
12
13
|
MsgType[MsgType["tonTransfer"] = 1255570643] = "tonTransfer";
|
|
@@ -17,43 +18,59 @@ var MsgType;
|
|
|
17
18
|
})(MsgType || (exports.MsgType = MsgType = {}));
|
|
18
19
|
exports.CrossChainLayerOpCodes = {
|
|
19
20
|
anyone_tvmMsgToEVM: 0x6c582059,
|
|
20
|
-
|
|
21
|
+
anyone_tvmMsgToEvmErrorNotification: 0xae7df95b,
|
|
21
22
|
anyone_excesses: 0xd53276db,
|
|
22
23
|
anyone_addProtocolFee: 0x48e660b5,
|
|
23
24
|
anyone_collectProtocolFee: 0x1f95f86c,
|
|
24
25
|
anyone_collectProtocolFeeNotification: 0xf358b6d0,
|
|
25
|
-
executor_evmMsgToTVM:
|
|
26
|
-
|
|
27
|
-
|
|
26
|
+
executor_evmMsgToTVM: 0x497dae1d,
|
|
27
|
+
executor_errorNotification: 0xcda6f261,
|
|
28
|
+
executor_evmMsgToTvmErrorNotification: 0x86f27385,
|
|
28
29
|
admin_changeAdminAddress: 0x581879bc,
|
|
29
30
|
admin_cancelChangingAdminAddress: 0x60094a1b,
|
|
30
|
-
admin_updateCode:
|
|
31
|
+
admin_updateCode: 0x6e7145f9,
|
|
31
32
|
admin_updateExecutorCode: 0x7ee5a6d0,
|
|
32
33
|
admin_updateEpochDelay: 0xe97250b7,
|
|
33
34
|
admin_updateTonProtocolFee: 0x063199b7,
|
|
34
35
|
admin_updateTacProtocolFee: 0x3531465c,
|
|
36
|
+
admin_changeStakingAdapterAddress: 0x74db6fbd,
|
|
37
|
+
admin_stake: 0x149c7a93,
|
|
38
|
+
admin_unstake: 0x461d3038,
|
|
35
39
|
newAdmin_confirmChangingAdminAddress: 0x6a4fbe34,
|
|
36
40
|
sequencerMultisig_changeSequencerMultisigAddress: 0x5cec6be0,
|
|
37
41
|
sequencerMultisig_updateMerkleRoot: 0x4b19e42a,
|
|
38
42
|
sequencerMultisig_updateGroupPublicKey: 0x74cd76b2,
|
|
43
|
+
stakingAdapter_manualUnstakeRequest: 0x0659627f,
|
|
44
|
+
stakingAdapter_automaticUnstakeRequest: 0x3c497a61,
|
|
45
|
+
stakingAdapter_stakeRequest: 0x58d9b21b,
|
|
46
|
+
stakingAdapter_reportUnstakeResult: 0x46a47169,
|
|
47
|
+
stakingAdapter_reportUnstakeResultError: 0x49e26543,
|
|
48
|
+
jettonMinter_mint: 0xd7b9c06e,
|
|
49
|
+
jettonWallet_transferNotification: 0x7362d09c,
|
|
50
|
+
jettonWallet_burn: 0x595f07bc,
|
|
39
51
|
};
|
|
40
52
|
exports.CrossChainLayerErrors = {
|
|
41
53
|
noErrors: 0,
|
|
54
|
+
invalidSenderSignature: 32,
|
|
42
55
|
systemNotEnoughTon: 37,
|
|
43
56
|
notFromAdmin: 70,
|
|
44
57
|
notFromExecutor: 71,
|
|
45
58
|
notFromSequencerMultisig: 72,
|
|
46
59
|
notFromNewAdmin: 73,
|
|
60
|
+
notFromStakingAdapter: 74,
|
|
47
61
|
newAdminAddressIsNone: 80,
|
|
48
62
|
notEnoughTon: 100,
|
|
49
63
|
insufficientBalance: 101,
|
|
64
|
+
insufficientStakedBalance: 102,
|
|
50
65
|
zeroFeeSupply: 200,
|
|
51
66
|
invalidProof: 201,
|
|
52
67
|
votingNotActive: 202,
|
|
53
68
|
messageCollectEndTimeLow: 203,
|
|
54
69
|
notEnoughProtocolFee: 204,
|
|
55
70
|
messageCollectEndTimeHigh: 205,
|
|
56
|
-
|
|
71
|
+
feeCalculationUnsupported: 206,
|
|
72
|
+
stakeAmountTooHigh: 207,
|
|
73
|
+
unstakeAmountTooHigh: 208,
|
|
57
74
|
unknownOp: 0xfffff,
|
|
58
75
|
};
|
|
59
76
|
function crossChainLayerConfigToCell(config) {
|
|
@@ -62,14 +79,14 @@ function crossChainLayerConfigToCell(config) {
|
|
|
62
79
|
.storeAddress(config.newAdminAddress ? core_1.Address.parse(config.newAdminAddress) : null)
|
|
63
80
|
.storeAddress(core_1.Address.parse(config.sequencerMultisigAddress))
|
|
64
81
|
.storeRef((0, core_1.beginCell)()
|
|
65
|
-
.storeUint(config.groupPublicKey ? config.groupPublicKey : 0n, Constants_1.Params.bitsize.hash)
|
|
66
|
-
.endCell())
|
|
67
|
-
.storeRef((0, core_1.beginCell)()
|
|
68
82
|
.storeCoins(config.tacProtocolFee ? (0, core_1.toNano)(config.tacProtocolFee.toFixed(9)) : 0)
|
|
69
83
|
.storeCoins(config.tonProtocolFee ? (0, core_1.toNano)(config.tonProtocolFee.toFixed(9)) : 0)
|
|
70
84
|
.storeCoins(config.protocolFeeSupply ? (0, core_1.toNano)(config.protocolFeeSupply.toFixed(9)) : 0)
|
|
71
85
|
.endCell())
|
|
86
|
+
.storeRef((0, core_1.beginCell)()
|
|
87
|
+
.storeUint(config.groupPublicKey ? config.groupPublicKey : 0n, Constants_1.Params.bitsize.hash)
|
|
72
88
|
.storeRef(config.executorCode)
|
|
89
|
+
.endCell())
|
|
73
90
|
.storeRef((0, core_1.beginCell)()
|
|
74
91
|
.storeUint(config.epochDelay, Constants_1.Params.bitsize.time)
|
|
75
92
|
.storeUint(config.prevEpoch ? config.prevEpoch : 0, Constants_1.Params.bitsize.time)
|
|
@@ -77,7 +94,11 @@ function crossChainLayerConfigToCell(config) {
|
|
|
77
94
|
.storeUint(config.messageCollectEndTime ? config.messageCollectEndTime : 0, Constants_1.Params.bitsize.time)
|
|
78
95
|
.storeUint(config.nextVotingTime ? config.nextVotingTime : 0, Constants_1.Params.bitsize.time)
|
|
79
96
|
.storeUint(config.maxRootsSize, 4)
|
|
80
|
-
.storeDict((0, MerkleRoots_1.
|
|
97
|
+
.storeDict((0, MerkleRoots_1.arrayToDict)(config.merkleRoots ?? []))
|
|
98
|
+
.endCell())
|
|
99
|
+
.storeRef((0, core_1.beginCell)()
|
|
100
|
+
.storeAddress(config.stakingAdapterAddress ? core_1.Address.parse(config.stakingAdapterAddress) : null)
|
|
101
|
+
.storeCoins(config.stakedTonSupply ? (0, core_1.toNano)(config.stakedTonSupply.toFixed(9)) : 0)
|
|
81
102
|
.endCell())
|
|
82
103
|
.endCell();
|
|
83
104
|
}
|
|
@@ -137,7 +158,7 @@ class CrossChainLayer {
|
|
|
137
158
|
body: (0, core_1.beginCell)()
|
|
138
159
|
.storeUint(exports.CrossChainLayerOpCodes.executor_errorNotification, 32)
|
|
139
160
|
.storeUint(opts.queryId || 0, 64)
|
|
140
|
-
.
|
|
161
|
+
.storeUint(opts.operationId, Constants_1.Params.bitsize.hash)
|
|
141
162
|
.storeAddress(opts.responseAddress)
|
|
142
163
|
.endCell(),
|
|
143
164
|
});
|
|
@@ -288,6 +309,71 @@ class CrossChainLayer {
|
|
|
288
309
|
.endCell(),
|
|
289
310
|
});
|
|
290
311
|
}
|
|
312
|
+
async sendExcesses(provider, via, value) {
|
|
313
|
+
await provider.internal(via, {
|
|
314
|
+
value,
|
|
315
|
+
sendMode: core_1.SendMode.PAY_GAS_SEPARATELY,
|
|
316
|
+
body: (0, core_1.beginCell)().endCell(),
|
|
317
|
+
});
|
|
318
|
+
}
|
|
319
|
+
async sendChangeStakingAdapter(provider, via, value, opts) {
|
|
320
|
+
await provider.internal(via, {
|
|
321
|
+
value,
|
|
322
|
+
sendMode: core_1.SendMode.PAY_GAS_SEPARATELY,
|
|
323
|
+
body: (0, core_1.beginCell)()
|
|
324
|
+
.storeUint(exports.CrossChainLayerOpCodes.admin_changeStakingAdapterAddress, Constants_1.Params.bitsize.op)
|
|
325
|
+
.storeUint(opts.queryId || 0, Constants_1.Params.bitsize.queryId)
|
|
326
|
+
.storeAddress(core_1.Address.parse(opts.stakingAdapterAddress))
|
|
327
|
+
.endCell(),
|
|
328
|
+
});
|
|
329
|
+
}
|
|
330
|
+
async sendStake(provider, via, value, opts) {
|
|
331
|
+
let stakeAmount;
|
|
332
|
+
if (typeof opts.stakeAmount === 'bigint') {
|
|
333
|
+
stakeAmount = opts.stakeAmount;
|
|
334
|
+
}
|
|
335
|
+
else {
|
|
336
|
+
stakeAmount = (0, core_1.toNano)(opts.stakeAmount.toFixed(9));
|
|
337
|
+
}
|
|
338
|
+
await provider.internal(via, {
|
|
339
|
+
value,
|
|
340
|
+
sendMode: core_1.SendMode.PAY_GAS_SEPARATELY,
|
|
341
|
+
body: (0, core_1.beginCell)()
|
|
342
|
+
.storeUint(exports.CrossChainLayerOpCodes.admin_stake, Constants_1.Params.bitsize.op)
|
|
343
|
+
.storeUint(opts.queryId || 0, Constants_1.Params.bitsize.queryId)
|
|
344
|
+
.storeCoins(stakeAmount)
|
|
345
|
+
.endCell(),
|
|
346
|
+
});
|
|
347
|
+
}
|
|
348
|
+
async sendUnstake(provider, via, value, opts) {
|
|
349
|
+
let unstakeAmount;
|
|
350
|
+
if (typeof opts.unstakeAmount === 'bigint') {
|
|
351
|
+
unstakeAmount = opts.unstakeAmount;
|
|
352
|
+
}
|
|
353
|
+
else {
|
|
354
|
+
unstakeAmount = (0, core_1.toNano)(opts.unstakeAmount.toFixed(9));
|
|
355
|
+
}
|
|
356
|
+
await provider.internal(via, {
|
|
357
|
+
value,
|
|
358
|
+
sendMode: core_1.SendMode.PAY_GAS_SEPARATELY,
|
|
359
|
+
body: (0, core_1.beginCell)()
|
|
360
|
+
.storeUint(exports.CrossChainLayerOpCodes.admin_unstake, Constants_1.Params.bitsize.op)
|
|
361
|
+
.storeUint(opts.queryId || 0, Constants_1.Params.bitsize.queryId)
|
|
362
|
+
.storeCoins(unstakeAmount)
|
|
363
|
+
.endCell(),
|
|
364
|
+
});
|
|
365
|
+
}
|
|
366
|
+
async sendReportUnstakeResult(provider, via, value, opts) {
|
|
367
|
+
await provider.internal(via, {
|
|
368
|
+
value,
|
|
369
|
+
sendMode: core_1.SendMode.PAY_GAS_SEPARATELY,
|
|
370
|
+
body: (0, core_1.beginCell)()
|
|
371
|
+
.storeUint(exports.CrossChainLayerOpCodes.stakingAdapter_reportUnstakeResult, Constants_1.Params.bitsize.op)
|
|
372
|
+
.storeUint(opts.queryId || 0, Constants_1.Params.bitsize.queryId)
|
|
373
|
+
.storeMaybeRef((0, CrossChainLayerPayload_1.CrossChainLayerPayloadToCell)(opts.payload))
|
|
374
|
+
.endCell(),
|
|
375
|
+
});
|
|
376
|
+
}
|
|
291
377
|
async getFullData(provider) {
|
|
292
378
|
const result = await provider.get('get_full_data', []);
|
|
293
379
|
const adminAddress = result.stack.readAddress().toString();
|
|
@@ -305,6 +391,12 @@ class CrossChainLayer {
|
|
|
305
391
|
const protocolFeeSupply = Number((0, core_1.fromNano)(result.stack.readNumber()));
|
|
306
392
|
const executorCode = result.stack.readCell();
|
|
307
393
|
const groupPublicKey = result.stack.readBigNumber();
|
|
394
|
+
let stakingAdapterAddress;
|
|
395
|
+
let stakedTonSupply;
|
|
396
|
+
if (result.stack.remaining > 0) {
|
|
397
|
+
stakingAdapterAddress = result.stack.readAddressOpt()?.toString();
|
|
398
|
+
stakedTonSupply = Number((0, core_1.fromNano)(result.stack.readBigNumber()));
|
|
399
|
+
}
|
|
308
400
|
return {
|
|
309
401
|
adminAddress,
|
|
310
402
|
newAdminAddress,
|
|
@@ -321,6 +413,8 @@ class CrossChainLayer {
|
|
|
321
413
|
tonProtocolFee,
|
|
322
414
|
protocolFeeSupply,
|
|
323
415
|
executorCode,
|
|
416
|
+
stakingAdapterAddress,
|
|
417
|
+
stakedTonSupply,
|
|
324
418
|
};
|
|
325
419
|
}
|
|
326
420
|
async getCurrentEpochInfo(provider) {
|
|
@@ -344,12 +438,25 @@ class CrossChainLayer {
|
|
|
344
438
|
groupPublicKey,
|
|
345
439
|
};
|
|
346
440
|
}
|
|
347
|
-
async
|
|
348
|
-
const result = await provider.get('
|
|
441
|
+
async getStakingInfo(provider) {
|
|
442
|
+
const result = await provider.get('get_staking_info', []);
|
|
443
|
+
const stakingAdapterAddress = result.stack.readAddress();
|
|
444
|
+
const stakedTonSupply = result.stack.readBigNumber();
|
|
445
|
+
return {
|
|
446
|
+
stakingAdapterAddress,
|
|
447
|
+
stakedTonSupply,
|
|
448
|
+
};
|
|
449
|
+
}
|
|
450
|
+
async getExecutorAddress(provider, operationId) {
|
|
451
|
+
const result = await provider.get('get_executor_address', [{ type: 'int', value: operationId }]);
|
|
349
452
|
return result.stack.readAddress();
|
|
350
453
|
}
|
|
351
|
-
async
|
|
352
|
-
const result = await provider.get('
|
|
454
|
+
async getStorageFee(provider, merkleRoots) {
|
|
455
|
+
const result = await provider.get('get_ccl_storage_fee', [{ type: 'cell', cell: merkleRoots }]);
|
|
456
|
+
return result.stack.readBigNumber();
|
|
457
|
+
}
|
|
458
|
+
async getExecutorData(provider, operationId) {
|
|
459
|
+
const result = await provider.get('get_executor_data', [{ type: 'int', value: operationId }]);
|
|
353
460
|
const address = result.stack.readAddress();
|
|
354
461
|
const stateInit = result.stack.readCell();
|
|
355
462
|
return {
|
|
@@ -369,6 +476,12 @@ class CrossChainLayer {
|
|
|
369
476
|
}
|
|
370
477
|
}
|
|
371
478
|
exports.CrossChainLayer = CrossChainLayer;
|
|
479
|
+
CrossChainLayer.tvmMsgToEvmGasConsumption = 15505n;
|
|
480
|
+
CrossChainLayer.feeMinterGasConsumption = 9904n;
|
|
481
|
+
CrossChainLayer.collectionMintGasConsumption = 9018n;
|
|
372
482
|
CrossChainLayer.minStorageDuration = 365 * 24 * 3600; //1 year
|
|
373
|
-
CrossChainLayer.storageStats = new GasUtils_1.StorageStats(
|
|
374
|
-
|
|
483
|
+
CrossChainLayer.storageStats = new GasUtils_1.StorageStats(49195n, 102n);
|
|
484
|
+
// Gas consumption constants from contracts/imports/precompiled_gas_const/ccl_gas_utils.fc
|
|
485
|
+
CrossChainLayer.addFeeGasConsumption = 8429n;
|
|
486
|
+
CrossChainLayer.reserveFee = 100n;
|
|
487
|
+
CrossChainLayer.reportUnstakeResultGasConsumption = 13170n;
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { Address, Cell, Contract, ContractProvider, Sender } from '@ton/ton';
|
|
2
2
|
import { Maybe } from '@ton/core/dist/utils/maybe';
|
|
3
|
+
import { StorageStats } from './utils/GasUtils';
|
|
3
4
|
export declare const JettonMinterOpCodes: {
|
|
4
5
|
mint: number;
|
|
5
6
|
changeAdmin: number;
|
|
@@ -39,6 +40,7 @@ export declare class JettonMinter implements Contract {
|
|
|
39
40
|
code: Cell;
|
|
40
41
|
data: Cell;
|
|
41
42
|
} | undefined;
|
|
43
|
+
static storageStats: StorageStats;
|
|
42
44
|
constructor(address: Address, init?: {
|
|
43
45
|
code: Cell;
|
|
44
46
|
data: Cell;
|
|
@@ -6,6 +6,7 @@ exports.jettonMinterConfigToCell = jettonMinterConfigToCell;
|
|
|
6
6
|
const ton_1 = require("@ton/ton");
|
|
7
7
|
const CrossChainLayer_1 = require("./CrossChainLayer");
|
|
8
8
|
const Constants_1 = require("./Constants");
|
|
9
|
+
const GasUtils_1 = require("./utils/GasUtils");
|
|
9
10
|
exports.JettonMinterOpCodes = {
|
|
10
11
|
mint: 0xd7b9c06e,
|
|
11
12
|
changeAdmin: 0x581879bc,
|
|
@@ -58,7 +59,7 @@ class JettonMinter {
|
|
|
58
59
|
value,
|
|
59
60
|
sendMode: ton_1.SendMode.PAY_GAS_SEPARATELY,
|
|
60
61
|
body: (0, ton_1.beginCell)()
|
|
61
|
-
.storeUint(CrossChainLayer_1.CrossChainLayerOpCodes.
|
|
62
|
+
.storeUint(CrossChainLayer_1.CrossChainLayerOpCodes.anyone_tvmMsgToEvmErrorNotification, 32)
|
|
62
63
|
.storeUint(params.queryId || 0, 64)
|
|
63
64
|
.storeUint(params.operation || CrossChainLayer_1.MsgType.jettonBurn, 32)
|
|
64
65
|
.storeAddress(params.jettonOwnerAddress)
|
|
@@ -207,3 +208,4 @@ class JettonMinter {
|
|
|
207
208
|
}
|
|
208
209
|
}
|
|
209
210
|
exports.JettonMinter = JettonMinter;
|
|
211
|
+
JettonMinter.storageStats = new GasUtils_1.StorageStats(10208n, 28n);
|