@bitgo-beta/sdk-coin-trx 1.0.2-beta.232 → 1.0.2-beta.2321
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/resources/protobuf/Contract.proto +32 -0
- package/dist/resources/protobuf/tron.d.ts +1478 -214
- package/dist/resources/protobuf/tron.js +6312 -2600
- package/dist/resources/protobuf/tron.proto +6 -0
- package/dist/src/index.js +6 -2
- package/dist/src/lib/accountCreateTxBuilder.d.ts +60 -0
- package/dist/src/lib/accountCreateTxBuilder.d.ts.map +1 -0
- package/dist/src/lib/accountCreateTxBuilder.js +191 -0
- package/dist/src/lib/constants.d.ts +4 -0
- package/dist/src/lib/constants.d.ts.map +1 -0
- package/dist/src/lib/constants.js +7 -0
- package/dist/src/lib/contractCallBuilder.d.ts +1 -35
- package/dist/src/lib/contractCallBuilder.d.ts.map +1 -1
- package/dist/src/lib/contractCallBuilder.js +13 -76
- package/dist/src/lib/delegateResourceTxBuilder.d.ts +27 -0
- package/dist/src/lib/delegateResourceTxBuilder.d.ts.map +1 -0
- package/dist/src/lib/delegateResourceTxBuilder.js +104 -0
- package/dist/src/lib/enum.d.ts +40 -1
- package/dist/src/lib/enum.d.ts.map +1 -1
- package/dist/src/lib/enum.js +44 -4
- package/dist/src/lib/freezeBalanceTxBuilder.d.ts +71 -0
- package/dist/src/lib/freezeBalanceTxBuilder.d.ts.map +1 -0
- package/dist/src/lib/freezeBalanceTxBuilder.js +217 -0
- package/dist/src/lib/iface.d.ts +248 -2
- package/dist/src/lib/iface.d.ts.map +1 -1
- package/dist/src/lib/iface.js +1 -1
- package/dist/src/lib/index.js +23 -9
- package/dist/src/lib/keyPair.d.ts +0 -1
- package/dist/src/lib/keyPair.d.ts.map +1 -1
- package/dist/src/lib/keyPair.js +31 -18
- package/dist/src/lib/resourceManagementTxBuilder.d.ts +72 -0
- package/dist/src/lib/resourceManagementTxBuilder.d.ts.map +1 -0
- package/dist/src/lib/resourceManagementTxBuilder.js +150 -0
- package/dist/src/lib/tokenTransferBuilder.d.ts +1 -1
- package/dist/src/lib/tokenTransferBuilder.d.ts.map +1 -1
- package/dist/src/lib/tokenTransferBuilder.js +5 -3
- package/dist/src/lib/transaction.d.ts +3 -0
- package/dist/src/lib/transaction.d.ts.map +1 -1
- package/dist/src/lib/transaction.js +115 -6
- package/dist/src/lib/transactionBuilder.d.ts +53 -6
- package/dist/src/lib/transactionBuilder.d.ts.map +1 -1
- package/dist/src/lib/transactionBuilder.js +121 -22
- package/dist/src/lib/undelegateResourceTxBuilder.d.ts +27 -0
- package/dist/src/lib/undelegateResourceTxBuilder.d.ts.map +1 -0
- package/dist/src/lib/undelegateResourceTxBuilder.js +104 -0
- package/dist/src/lib/unfreezeBalanceTxBuilder.d.ts +65 -0
- package/dist/src/lib/unfreezeBalanceTxBuilder.d.ts.map +1 -0
- package/dist/src/lib/unfreezeBalanceTxBuilder.js +210 -0
- package/dist/src/lib/utils.d.ts +115 -8
- package/dist/src/lib/utils.d.ts.map +1 -1
- package/dist/src/lib/utils.js +534 -55
- package/dist/src/lib/voteWitnessTxBuilder.d.ts +62 -0
- package/dist/src/lib/voteWitnessTxBuilder.d.ts.map +1 -0
- package/dist/src/lib/voteWitnessTxBuilder.js +219 -0
- package/dist/src/lib/withdrawBuilder.d.ts +49 -0
- package/dist/src/lib/withdrawBuilder.d.ts.map +1 -0
- package/dist/src/lib/withdrawBuilder.js +167 -0
- package/dist/src/lib/withdrawExpireUnfreezeTxBuilder.d.ts +49 -0
- package/dist/src/lib/withdrawExpireUnfreezeTxBuilder.d.ts.map +1 -0
- package/dist/src/lib/withdrawExpireUnfreezeTxBuilder.js +167 -0
- package/dist/src/lib/wrappedBuilder.d.ts +67 -1
- package/dist/src/lib/wrappedBuilder.d.ts.map +1 -1
- package/dist/src/lib/wrappedBuilder.js +114 -4
- package/dist/src/trx.d.ts +146 -8
- package/dist/src/trx.d.ts.map +1 -1
- package/dist/src/trx.js +705 -160
- package/dist/src/trxToken.d.ts +2 -2
- package/dist/src/trxToken.d.ts.map +1 -1
- package/dist/src/trxToken.js +22 -7
- package/dist/test/fixtures.d.ts +40 -0
- package/dist/test/fixtures.d.ts.map +1 -0
- package/dist/test/fixtures.js +46 -0
- package/dist/test/resources.d.ts +614 -0
- package/dist/test/resources.d.ts.map +1 -0
- package/dist/test/resources.js +782 -0
- package/dist/test/unit/index.d.ts +2 -0
- package/dist/test/unit/index.d.ts.map +1 -0
- package/dist/test/unit/index.js +19 -0
- package/dist/test/unit/keyPair.d.ts +2 -0
- package/dist/test/unit/keyPair.d.ts.map +1 -0
- package/dist/test/unit/keyPair.js +163 -0
- package/dist/test/unit/transaction.d.ts +2 -0
- package/dist/test/unit/transaction.d.ts.map +1 -0
- package/dist/test/unit/transaction.js +38 -0
- package/dist/test/unit/transactionBuilder/accountCreateTxBuilder.d.ts +2 -0
- package/dist/test/unit/transactionBuilder/accountCreateTxBuilder.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/accountCreateTxBuilder.js +248 -0
- package/dist/test/unit/transactionBuilder/contractCallBuilder.d.ts +2 -0
- package/dist/test/unit/transactionBuilder/contractCallBuilder.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/contractCallBuilder.js +315 -0
- package/dist/test/unit/transactionBuilder/delegateResourceTxBuilder.d.ts +2 -0
- package/dist/test/unit/transactionBuilder/delegateResourceTxBuilder.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/delegateResourceTxBuilder.js +339 -0
- package/dist/test/unit/transactionBuilder/freezeBalanceTxBuilder.d.ts +2 -0
- package/dist/test/unit/transactionBuilder/freezeBalanceTxBuilder.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/freezeBalanceTxBuilder.js +365 -0
- package/dist/test/unit/transactionBuilder/tokenTransferBuilder.d.ts +2 -0
- package/dist/test/unit/transactionBuilder/tokenTransferBuilder.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/tokenTransferBuilder.js +87 -0
- package/dist/test/unit/transactionBuilder/undelegateResourceTxBuilder.d.ts +2 -0
- package/dist/test/unit/transactionBuilder/undelegateResourceTxBuilder.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/undelegateResourceTxBuilder.js +339 -0
- package/dist/test/unit/transactionBuilder/unfreezeBalanceTxBuilder.d.ts +2 -0
- package/dist/test/unit/transactionBuilder/unfreezeBalanceTxBuilder.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/unfreezeBalanceTxBuilder.js +336 -0
- package/dist/test/unit/transactionBuilder/voteWitnessTxBuilder.d.ts +2 -0
- package/dist/test/unit/transactionBuilder/voteWitnessTxBuilder.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/voteWitnessTxBuilder.js +277 -0
- package/dist/test/unit/transactionBuilder/withdrawBalanceBuilder.d.ts +2 -0
- package/dist/test/unit/transactionBuilder/withdrawBalanceBuilder.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/withdrawBalanceBuilder.js +213 -0
- package/dist/test/unit/transactionBuilder/withdrawExpireUnfreezeTxBuilder.d.ts +2 -0
- package/dist/test/unit/transactionBuilder/withdrawExpireUnfreezeTxBuilder.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/withdrawExpireUnfreezeTxBuilder.js +213 -0
- package/dist/test/unit/transactionBuilder/wrappedBuilder.d.ts +2 -0
- package/dist/test/unit/transactionBuilder/wrappedBuilder.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/wrappedBuilder.js +68 -0
- package/dist/test/unit/transactionBuilder.d.ts +2 -0
- package/dist/test/unit/transactionBuilder.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder.js +178 -0
- package/dist/test/unit/trx.d.ts +2 -0
- package/dist/test/unit/trx.d.ts.map +1 -0
- package/dist/test/unit/trx.js +843 -0
- package/dist/test/unit/trxToken.d.ts +2 -0
- package/dist/test/unit/trxToken.d.ts.map +1 -0
- package/dist/test/unit/trxToken.js +152 -0
- package/dist/test/unit/util.d.ts +2 -0
- package/dist/test/unit/util.d.ts.map +1 -0
- package/dist/test/unit/util.js +156 -0
- package/dist/test/unit/verifyTransaction.d.ts +2 -0
- package/dist/test/unit/verifyTransaction.d.ts.map +1 -0
- package/dist/test/unit/verifyTransaction.js +695 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/package.json +22 -16
- package/.eslintignore +0 -5
- package/.mocharc.yml +0 -8
- package/CHANGELOG.md +0 -118
- package/resources/README.md +0 -31
- package/resources/protobuf/Contract.proto +0 -256
- package/resources/protobuf/Discover.proto +0 -44
- package/resources/protobuf/tron.d.ts +0 -11205
- package/resources/protobuf/tron.js +0 -33480
- package/resources/protobuf/tron.proto +0 -677
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"trxToken.d.ts","sourceRoot":"","sources":["../../../test/unit/trxToken.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const node_assert_1 = __importDefault(require("node:assert"));
|
|
7
|
+
const node_test_1 = require("node:test");
|
|
8
|
+
const sdk_api_1 = require("@bitgo-beta/sdk-api");
|
|
9
|
+
const sdk_test_1 = require("@bitgo-beta/sdk-test");
|
|
10
|
+
const statics_1 = require("@bitgo-beta/statics");
|
|
11
|
+
const trx_1 = require("../../src/trx");
|
|
12
|
+
const trxToken_1 = require("../../src/trxToken");
|
|
13
|
+
const ttrx_1 = require("../../src/ttrx");
|
|
14
|
+
const lib_1 = require("../../src/lib");
|
|
15
|
+
// Real TriggerSmartContract protobuf raw_data_hex encoding a TRC20 transfer:
|
|
16
|
+
// owner: 41c51fbeea78910b15b1d3e8a9b62914ca94d1a4ac
|
|
17
|
+
// contract: 4142a1e39aefa49290f2b3f9ed688d7cecf86cd6e0
|
|
18
|
+
// data: a9059cbb + abi(address=8483618ca85c35a9b923d98bebca718f5a1db279, uint256=100000000)
|
|
19
|
+
const TRC20_RAW_DATA_HEX = '0a02578b22086113bb9ac351432b4088eae7a6de305aae01081f12a9010a31747970652e676f6f676c65617069732e636f6d2f70726f746f636f6c2e54726967676572536d617274436f6e747261637412740a1541c51fbeea78910b15b1d3e8a9b62914ca94d1a4ac12154142a1e39aefa49290f2b3f9ed688d7cecf86cd6e02244a9059cbb0000000000000000000000008483618ca85c35a9b923d98bebca718f5a1db2790000000000000000000000000000000000000000000000000000000005f5e10070888d8ca5de309001c0c39307';
|
|
20
|
+
// Recipient address decoded from the ABI data above (41 prefix → base58)
|
|
21
|
+
const TRC20_RECIPIENT_HEX = '418483618ca85c35a9b923d98bebca718f5a1db279';
|
|
22
|
+
const TRC20_AMOUNT = '100000000';
|
|
23
|
+
(0, node_test_1.describe)('TrxToken verifyTransaction:', function () {
|
|
24
|
+
const bitgo = sdk_test_1.TestBitGo.decorate(sdk_api_1.BitGoAPI, { env: 'test' });
|
|
25
|
+
bitgo.initializeTestVars();
|
|
26
|
+
bitgo.safeRegister('trx', trx_1.Trx.createInstance);
|
|
27
|
+
bitgo.safeRegister('ttrx', ttrx_1.Ttrx.createInstance);
|
|
28
|
+
let tokenCoin;
|
|
29
|
+
(0, node_test_1.before)(function () {
|
|
30
|
+
const usdtConfig = statics_1.tokens.testnet.trx.tokens.find((t) => t.type === 'ttrx:usdt');
|
|
31
|
+
node_assert_1.default.ok(usdtConfig, 'ttrx:usdt token config not found');
|
|
32
|
+
tokenCoin = new trxToken_1.TrxToken(bitgo, usdtConfig);
|
|
33
|
+
});
|
|
34
|
+
(0, node_test_1.describe)('TSS wallet — TriggerSmartContract validation', () => {
|
|
35
|
+
(0, node_test_1.it)('should validate a correct TRC20 transfer', async function () {
|
|
36
|
+
const recipientBase58 = lib_1.Utils.getBase58AddressFromHex(TRC20_RECIPIENT_HEX);
|
|
37
|
+
const result = await tokenCoin.verifyTransaction({
|
|
38
|
+
txPrebuild: { txHex: TRC20_RAW_DATA_HEX },
|
|
39
|
+
txParams: { recipients: [{ address: recipientBase58, amount: TRC20_AMOUNT }] },
|
|
40
|
+
walletType: 'tss',
|
|
41
|
+
});
|
|
42
|
+
node_assert_1.default.strictEqual(result, true);
|
|
43
|
+
});
|
|
44
|
+
(0, node_test_1.it)('should validate when txHex is a serialized JSON (prebuildAndSignTransaction path)', async function () {
|
|
45
|
+
const recipientBase58 = lib_1.Utils.getBase58AddressFromHex(TRC20_RECIPIENT_HEX);
|
|
46
|
+
const serializedTxHex = JSON.stringify({ txID: 'abc', raw_data_hex: TRC20_RAW_DATA_HEX, raw_data: {} });
|
|
47
|
+
const result = await tokenCoin.verifyTransaction({
|
|
48
|
+
txPrebuild: { txHex: serializedTxHex },
|
|
49
|
+
txParams: { recipients: [{ address: recipientBase58, amount: TRC20_AMOUNT }] },
|
|
50
|
+
walletType: 'tss',
|
|
51
|
+
});
|
|
52
|
+
node_assert_1.default.strictEqual(result, true);
|
|
53
|
+
});
|
|
54
|
+
(0, node_test_1.it)('should validate when recipient is supplied as 0x-prefixed hex (COINS-1575)', async function () {
|
|
55
|
+
const recipientEvm = '0x' + TRC20_RECIPIENT_HEX.slice(2).toLowerCase();
|
|
56
|
+
const result = await tokenCoin.verifyTransaction({
|
|
57
|
+
txPrebuild: { txHex: TRC20_RAW_DATA_HEX },
|
|
58
|
+
txParams: { recipients: [{ address: recipientEvm, amount: TRC20_AMOUNT }] },
|
|
59
|
+
walletType: 'tss',
|
|
60
|
+
});
|
|
61
|
+
node_assert_1.default.strictEqual(result, true);
|
|
62
|
+
});
|
|
63
|
+
(0, node_test_1.it)('should validate when recipient is supplied as 41-prefixed hex (COINS-1575)', async function () {
|
|
64
|
+
const result = await tokenCoin.verifyTransaction({
|
|
65
|
+
txPrebuild: { txHex: TRC20_RAW_DATA_HEX },
|
|
66
|
+
txParams: { recipients: [{ address: TRC20_RECIPIENT_HEX, amount: TRC20_AMOUNT }] },
|
|
67
|
+
walletType: 'tss',
|
|
68
|
+
});
|
|
69
|
+
node_assert_1.default.strictEqual(result, true);
|
|
70
|
+
});
|
|
71
|
+
(0, node_test_1.it)('should throw when amount does not match', async function () {
|
|
72
|
+
const recipientBase58 = lib_1.Utils.getBase58AddressFromHex(TRC20_RECIPIENT_HEX);
|
|
73
|
+
await node_assert_1.default.rejects(tokenCoin.verifyTransaction({
|
|
74
|
+
txPrebuild: { txHex: TRC20_RAW_DATA_HEX },
|
|
75
|
+
txParams: { recipients: [{ address: recipientBase58, amount: '999' }] },
|
|
76
|
+
walletType: 'tss',
|
|
77
|
+
}), { message: 'transaction amount in txPrebuild does not match the value given by client' });
|
|
78
|
+
});
|
|
79
|
+
(0, node_test_1.it)('should throw when recipient address does not match', async function () {
|
|
80
|
+
await node_assert_1.default.rejects(tokenCoin.verifyTransaction({
|
|
81
|
+
txPrebuild: { txHex: TRC20_RAW_DATA_HEX },
|
|
82
|
+
txParams: { recipients: [{ address: 'TLWh67P93KgtnZNCtGnEHM1H33Nhq2uvvN', amount: TRC20_AMOUNT }] },
|
|
83
|
+
walletType: 'tss',
|
|
84
|
+
}), { message: 'destination address does not match with the recipient address' });
|
|
85
|
+
});
|
|
86
|
+
(0, node_test_1.it)('should return true when recipients is empty array (consolidation path)', async function () {
|
|
87
|
+
const result = await tokenCoin.verifyTransaction({
|
|
88
|
+
txPrebuild: { txHex: TRC20_RAW_DATA_HEX },
|
|
89
|
+
txParams: { recipients: [] },
|
|
90
|
+
walletType: 'tss',
|
|
91
|
+
});
|
|
92
|
+
node_assert_1.default.strictEqual(result, true);
|
|
93
|
+
});
|
|
94
|
+
(0, node_test_1.it)('should throw when contract type is not TriggerSmartContract', async function () {
|
|
95
|
+
// Use a native TRX Transfer protobuf as txHex — TrxToken only handles TriggerSmartContract
|
|
96
|
+
const recipientBase58 = lib_1.Utils.getBase58AddressFromHex(TRC20_RECIPIENT_HEX);
|
|
97
|
+
const nativeTrxRawDataHex = lib_1.Utils.generateRawDataHex({
|
|
98
|
+
contract: [
|
|
99
|
+
{
|
|
100
|
+
parameter: {
|
|
101
|
+
value: {
|
|
102
|
+
amount: 100000000,
|
|
103
|
+
owner_address: '4173a5993cd182ae152adad8203163f780c65a8aa5',
|
|
104
|
+
to_address: TRC20_RECIPIENT_HEX,
|
|
105
|
+
},
|
|
106
|
+
type_url: 'type.googleapis.com/protocol.TransferContract',
|
|
107
|
+
},
|
|
108
|
+
type: 'TransferContract',
|
|
109
|
+
},
|
|
110
|
+
],
|
|
111
|
+
refBlockBytes: 'c8cf',
|
|
112
|
+
refBlockHash: '89177fd84c5d9196',
|
|
113
|
+
expiration: Date.now() + 3600000,
|
|
114
|
+
timestamp: Date.now(),
|
|
115
|
+
});
|
|
116
|
+
await node_assert_1.default.rejects(tokenCoin.verifyTransaction({
|
|
117
|
+
txPrebuild: { txHex: nativeTrxRawDataHex },
|
|
118
|
+
txParams: { recipients: [{ address: recipientBase58, amount: '100000000' }] },
|
|
119
|
+
walletType: 'tss',
|
|
120
|
+
}), { message: /Expected TriggerSmartContract for TRC20 token transfer/ });
|
|
121
|
+
});
|
|
122
|
+
});
|
|
123
|
+
(0, node_test_1.describe)('non-TSS wallet — builder-based validation (existing path)', () => {
|
|
124
|
+
const txHex = '{"raw_data":{"contractType":2,"contract":[{"parameter":{"value":{"data":"a9059cbb0000000000000000000000008483618ca85c35a9b923d98bebca718f5a1db2790000000000000000000000000000000000000000000000000000000005f5e100","owner_address":"41c51fbeea78910b15b1d3e8a9b62914ca94d1a4ac","contract_address":"4142a1e39aefa49290f2b3f9ed688d7cecf86cd6e0"},"type_url":"type.googleapis.com/protocol.TriggerSmartContract"},"type":"TriggerSmartContract"}],"expiration":1674581767432,"timestamp":1674578167432,"ref_block_bytes":"578b","ref_block_hash":"6113bb9ac351432b","fee_limit":15000000},"raw_data_hex":"0a02578b22086113bb9ac351432b4088eae7a6de305aae01081f12a9010a31747970652e676f6f676c65617069732e636f6d2f70726f746f636f6c2e54726967676572536d617274436f6e747261637412740a1541c51fbeea78910b15b1d3e8a9b62914ca94d1a4ac12154142a1e39aefa49290f2b3f9ed688d7cecf86cd6e02244a9059cbb0000000000000000000000008483618ca85c35a9b923d98bebca718f5a1db2790000000000000000000000000000000000000000000000000000000005f5e10070888d8ca5de309001c0c39307","txID":"fe21c49f4febd9089125e3a006943c145721d8fcb7ab84136f8c6663ff92f8ed","signature":["0775cde302689eb8293883c66a89b31e80d608bfc3ad3c283b64a490ea4cc712c55a2fd2e62c75843dd7e77d8c4cb52e0f371fbb29b332c259f8cb63c2e6195301"]}';
|
|
125
|
+
(0, node_test_1.it)('should validate a correct non-TSS TRC20 transfer using txBuilder', async function () {
|
|
126
|
+
// The non-TSS path uses getBuilder().from(rawTx).build() and checks tx.outputs[0]
|
|
127
|
+
// This test uses the full JSON tx format that the builder understands.
|
|
128
|
+
const recipientBase58 = lib_1.Utils.getBase58AddressFromHex(TRC20_RECIPIENT_HEX);
|
|
129
|
+
const result = await tokenCoin.verifyTransaction({
|
|
130
|
+
txPrebuild: { txHex },
|
|
131
|
+
txParams: { recipients: [{ address: recipientBase58, amount: TRC20_AMOUNT }] },
|
|
132
|
+
});
|
|
133
|
+
node_assert_1.default.strictEqual(result, true);
|
|
134
|
+
});
|
|
135
|
+
(0, node_test_1.it)('should validate when recipient is 0x-prefixed hex (hot wallet sendmany / COINS-1575)', async function () {
|
|
136
|
+
const recipientEvm = '0x' + TRC20_RECIPIENT_HEX.slice(2).toLowerCase();
|
|
137
|
+
const result = await tokenCoin.verifyTransaction({
|
|
138
|
+
txPrebuild: { txHex },
|
|
139
|
+
txParams: { recipients: [{ address: recipientEvm, amount: TRC20_AMOUNT }] },
|
|
140
|
+
});
|
|
141
|
+
node_assert_1.default.strictEqual(result, true);
|
|
142
|
+
});
|
|
143
|
+
(0, node_test_1.it)('should validate when recipient is 41-prefixed hex (hot wallet sendmany / COINS-1575)', async function () {
|
|
144
|
+
const result = await tokenCoin.verifyTransaction({
|
|
145
|
+
txPrebuild: { txHex },
|
|
146
|
+
txParams: { recipients: [{ address: TRC20_RECIPIENT_HEX, amount: TRC20_AMOUNT }] },
|
|
147
|
+
});
|
|
148
|
+
node_assert_1.default.strictEqual(result, true);
|
|
149
|
+
});
|
|
150
|
+
});
|
|
151
|
+
});
|
|
152
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJ4VG9rZW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi90ZXN0L3VuaXQvdHJ4VG9rZW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSw4REFBaUM7QUFDakMseUNBQWlEO0FBQ2pELGlEQUErQztBQUMvQyxtREFBK0Q7QUFDL0QsaURBQTZDO0FBQzdDLHVDQUFvQztBQUNwQyxpREFBOEM7QUFDOUMseUNBQXNDO0FBQ3RDLHVDQUFzQztBQUV0Qyw2RUFBNkU7QUFDN0UseURBQXlEO0FBQ3pELHlEQUF5RDtBQUN6RCxrR0FBa0c7QUFDbEcsTUFBTSxrQkFBa0IsR0FDdEIsd2FBQXdhLENBQUM7QUFFM2EseUVBQXlFO0FBQ3pFLE1BQU0sbUJBQW1CLEdBQUcsNENBQTRDLENBQUM7QUFDekUsTUFBTSxZQUFZLEdBQUcsV0FBVyxDQUFDO0FBRWpDLElBQUEsb0JBQVEsRUFBQyw2QkFBNkIsRUFBRTtJQUN0QyxNQUFNLEtBQUssR0FBaUIsb0JBQVMsQ0FBQyxRQUFRLENBQUMsa0JBQVEsRUFBRSxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDO0lBQzFFLEtBQUssQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO0lBQzNCLEtBQUssQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLFNBQUcsQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUM5QyxLQUFLLENBQUMsWUFBWSxDQUFDLE1BQU0sRUFBRSxXQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7SUFFaEQsSUFBSSxTQUFtQixDQUFDO0lBRXhCLElBQUEsa0JBQU0sRUFBQztRQUNMLE1BQU0sVUFBVSxHQUFHLGdCQUFNLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLFdBQVcsQ0FBQyxDQUFDO1FBQ2pGLHFCQUFNLENBQUMsRUFBRSxDQUFDLFVBQVUsRUFBRSxrQ0FB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LFVBQVUsRUFBRSxFQUFFLEtBQUssRUFBRTtnQkFDckIsUUFBUSxFQUFFLEVBQUUsVUFBVSxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxDQUFDLEVBQUU7YUFDNUUsQ0FBQyxDQUFDO1lBRVYscUJBQU0sQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ25DLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBhc3NlcnQgZnJvbSAnbm9kZTphc3NlcnQnO1xuaW1wb3J0IHsgZGVzY3JpYmUsIGl0LCBiZWZvcmUgfSBmcm9tICdub2RlOnRlc3QnO1xuaW1wb3J0IHsgQml0R29BUEkgfSBmcm9tICdAYml0Z28tYmV0YS9zZGstYXBpJztcbmltcG9ydCB7IFRlc3RCaXRHb0FQSSwgVGVzdEJpdEdvIH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLXRlc3QnO1xuaW1wb3J0IHsgdG9rZW5zIH0gZnJvbSAnQGJpdGdvLWJldGEvc3RhdGljcyc7XG5pbXBvcnQgeyBUcnggfSBmcm9tICcuLi8uLi9zcmMvdHJ4JztcbmltcG9ydCB7IFRyeFRva2VuIH0gZnJvbSAnLi4vLi4vc3JjL3RyeFRva2VuJztcbmltcG9ydCB7IFR0cnggfSBmcm9tICcuLi8uLi9zcmMvdHRyeCc7XG5pbXBvcnQgeyBVdGlscyB9IGZyb20gJy4uLy4uL3NyYy9saWInO1xuXG4vLyBSZWFsIFRyaWdnZXJTbWFydENvbnRyYWN0IHByb3RvYnVmIHJhd19kYXRhX2hleCBlbmNvZGluZyBhIFRSQzIwIHRyYW5zZmVyOlxuLy8gICBvd25lcjogICAgNDFjNTFmYmVlYTc4OTEwYjE1YjFkM2U4YTliNjI5MTRjYTk0ZDFhNGFjXG4vLyAgIGNvbnRyYWN0OiA0MTQyYTFlMzlhZWZhNDkyOTBmMmIzZjllZDY4OGQ3Y2VjZjg2Y2Q2ZTBcbi8vICAgZGF0YTogICAgIGE5MDU5Y2JiICsgYWJpKGFkZHJlc3M9ODQ4MzYxOGNhODVjMzVhOWI5MjNkOThiZWJjYTcxOGY1YTFkYjI3OSwgdWludDI1Nj0xMDAwMDAwMDApXG5jb25zdCBUUkMyMF9SQVdfREFUQV9IRVggPVxuICAnMGEwMjU3OGIyMjA4NjExM2JiOWFjMzUxNDMyYjQwODhlYWU3YTZkZTMwNWFhZTAxMDgxZjEyYTkwMTBhMzE3NDc5NzA2NTJlNjc2ZjZmNjc2YzY1NjE3MDY5NzMyZTYzNmY2ZDJmNzA3MjZmNzQ2ZjYzNmY2YzJlNTQ3MjY5Njc2NzY1NzI1MzZkNjE3Mjc0NDM2ZjZlNzQ3MjYxNjM3NDEyNzQwYTE1NDFjNTFmYmVlYTc4OTEwYjE1YjFkM2U4YTliNjI5MTRjYTk0ZDFhNGFjMTIxNTQxNDJhMWUzOWFlZmE0OTI5MGYyYjNmOWVkNjg4ZDdjZWNmODZjZDZlMDIyNDRhOTA1OWNiYjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDg0ODM2MThjYTg1YzM1YTliOTIzZDk4YmViY2E3MThmNWExZGIyNzkwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA1ZjVlMTAwNzA4ODhkOGNhNWRlMzA5MDAxYzBjMzkzMDcnO1xuXG4vLyBSZWNpcGllbnQgYWRkcmVzcyBkZWNvZGVkIGZyb20gdGhlIEFCSSBkYXRhIGFib3ZlICg0MSBwcmVmaXgg4oaSIGJhc2U1OClcbmNvbnN0IFRSQzIwX1JFQ0lQSUVOVF9IRVggPSAnNDE4NDgzNjE4Y2E4NWMzNWE5YjkyM2Q5OGJlYmNhNzE4ZjVhMWRiMjc5JztcbmNvbnN0IFRSQzIwX0FNT1VOVCA9ICcxMDAwMDAwMDAnO1xuXG5kZXNjcmliZSgnVHJ4VG9rZW4gdmVyaWZ5VHJhbnNhY3Rpb246JywgZnVuY3Rpb24gKCkge1xuICBjb25zdCBiaXRnbzogVGVzdEJpdEdvQVBJID0gVGVzdEJpdEdvLmRlY29yYXRlKEJpdEdvQVBJLCB7IGVudjogJ3Rlc3QnIH0pO1xuICBiaXRnby5pbml0aWFsaXplVGVzdFZhcnMoKTtcbiAgYml0Z28uc2FmZVJlZ2lzdGVyKCd0cngnLCBUcnguY3JlYXRlSW5zdGFuY2UpO1xuICBiaXRnby5zYWZlUmVnaXN0ZXIoJ3R0cngnLCBUdHJ4LmNyZWF0ZUluc3RhbmNlKTtcblxuICBsZXQgdG9rZW5Db2luOiBUcnhUb2tlbjtcblxuICBiZWZvcmUoZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IHVzZHRDb25maWcgPSB0b2tlbnMudGVzdG5ldC50cngudG9rZW5zLmZpbmQoKHQpID0+IHQudHlwZSA9PT0gJ3R0cng6dXNkdCcpO1xuICAgIGFzc2VydC5vayh1c2R0Q29uZmlnLCAndHRyeDp1c2R0IHRva2VuIGNvbmZpZyBub3QgZm91bmQnKTtcbiAgICB0b2tlbkNvaW4gPSBuZXcgVHJ4VG9rZW4oYml0Z28sIHVzZHRDb25maWcpO1xuICB9KTtcblxuICBkZXNjcmliZSgnVFNTIHdhbGxldCDigJQgVHJpZ2dlclNtYXJ0Q29udHJhY3QgdmFsaWRhdGlvbicsICgpID0+IHtcbiAgICBpdCgnc2hvdWxkIHZhbGlkYXRlIGEgY29ycmVjdCBUUkMyMCB0cmFuc2ZlcicsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHJlY2lwaWVudEJhc2U1OCA9IFV0aWxzLmdldEJhc2U1OEFkZHJlc3NGcm9tSGV4KFRSQzIwX1JFQ0lQSUVOVF9IRVgpO1xuXG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0b2tlbkNvaW4udmVyaWZ5VHJhbnNhY3Rpb24oe1xuICAgICAgICB0eFByZWJ1aWxkOiB7IHR4SGV4OiBUUkMyMF9SQVdfREFUQV9IRVggfSxcbiAgICAgICAgdHhQYXJhbXM6IHsgcmVjaXBpZW50czogW3sgYWRkcmVzczogcmVjaXBpZW50QmFzZTU4LCBhbW91bnQ6IFRSQzIwX0FNT1VOVCB9XSB9LFxuICAgICAgICB3YWxsZXRUeXBlOiAndHNzJyxcbiAgICAgIH0gYXMgYW55KTtcblxuICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHJlc3VsdCwgdHJ1ZSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHZhbGlkYXRlIHdoZW4gdHhIZXggaXMgYSBzZXJpYWxpemVkIEpTT04gKHByZWJ1aWxkQW5kU2lnblRyYW5zYWN0aW9uIHBhdGgpJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgcmVjaXBpZW50QmFzZTU4ID0gVXRpbHMuZ2V0QmFzZTU4QWRkcmVzc0Zyb21IZXgoVFJDMjBfUkVDSVBJRU5UX0hFWCk7XG4gICAgICBjb25zdCBzZXJpYWxpemVkVHhIZXggPSBKU09OLnN0cmluZ2lmeSh7IHR4SUQ6ICdhYmMnLCByYXdfZGF0YV9oZXg6IFRSQzIwX1JBV19EQVRBX0hFWCwgcmF3X2RhdGE6IHt9IH0pO1xuXG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0b2tlbkNvaW4udmVyaWZ5VHJhbnNhY3Rpb24oe1xuICAgICAgICB0eFByZWJ1aWxkOiB7IHR4SGV4OiBzZXJpYWxpemVkVHhIZXggfSxcbiAgICAgICAgdHhQYXJhbXM6IHsgcmVjaXBpZW50czogW3sgYWRkcmVzczogcmVjaXBpZW50QmFzZTU4LCBhbW91bnQ6IFRSQzIwX0FNT1VOVCB9XSB9LFxuICAgICAgICB3YWxsZXRUeXBlOiAndHNzJyxcbiAgICAgIH0gYXMgYW55KTtcblxuICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHJlc3VsdCwgdHJ1ZSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHZhbGlkYXRlIHdoZW4gcmVjaXBpZW50IGlzIHN1cHBsaWVkIGFzIDB4LXByZWZpeGVkIGhleCAoQ09JTlMtMTU3NSknLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCByZWNpcGllbnRFdm0gPSAnMHgnICsgVFJDMjBfUkVDSVBJRU5UX0hFWC5zbGljZSgyKS50b0xvd2VyQ2FzZSgpO1xuXG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0b2tlbkNvaW4udmVyaWZ5VHJhbnNhY3Rpb24oe1xuICAgICAgICB0eFByZWJ1aWxkOiB7IHR4SGV4OiBUUkMyMF9SQVdfREFUQV9IRVggfSxcbiAgICAgICAgdHhQYXJhbXM6IHsgcmVjaXBpZW50czogW3sgYWRkcmVzczogcmVjaXBpZW50RXZtLCBhbW91bnQ6IFRSQzIwX0FNT1VOVCB9XSB9LFxuICAgICAgICB3YWxsZXRUeXBlOiAndHNzJyxcbiAgICAgIH0gYXMgYW55KTtcblxuICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHJlc3VsdCwgdHJ1ZSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHZhbGlkYXRlIHdoZW4gcmVjaXBpZW50IGlzIHN1cHBsaWVkIGFzIDQxLXByZWZpeGVkIGhleCAoQ09JTlMtMTU3NSknLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0b2tlbkNvaW4udmVyaWZ5VHJhbnNhY3Rpb24oe1xuICAgICAgICB0eFByZWJ1aWxkOiB7IHR4SGV4OiBUUkMyMF9SQVdfREFUQV9IRVggfSxcbiAgICAgICAgdHhQYXJhbXM6IHsgcmVjaXBpZW50czogW3sgYWRkcmVzczogVFJDMjBfUkVDSVBJRU5UX0hFWCwgYW1vdW50OiBUUkMyMF9BTU9VTlQgfV0gfSxcbiAgICAgICAgd2FsbGV0VHlwZTogJ3RzcycsXG4gICAgICB9IGFzIGFueSk7XG5cbiAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChyZXN1bHQsIHRydWUpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCB0aHJvdyB3aGVuIGFtb3VudCBkb2VzIG5vdCBtYXRjaCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHJlY2lwaWVudEJhc2U1OCA9IFV0aWxzLmdldEJhc2U1OEFkZHJlc3NGcm9tSGV4KFRSQzIwX1JFQ0lQSUVOVF9IRVgpO1xuXG4gICAgICBhd2FpdCBhc3NlcnQucmVqZWN0cyhcbiAgICAgICAgdG9rZW5Db2luLnZlcmlmeVRyYW5zYWN0aW9uKHtcbiAgICAgICAgICB0eFByZWJ1aWxkOiB7IHR4SGV4OiBUUkMyMF9SQVdfREFUQV9IRVggfSxcbiAgICAgICAgICB0eFBhcmFtczogeyByZWNpcGllbnRzOiBbeyBhZGRyZXNzOiByZWNpcGllbnRCYXNlNTgsIGFtb3VudDogJzk5OScgfV0gfSxcbiAgICAgICAgICB3YWxsZXRUeXBlOiAndHNzJyxcbiAgICAgICAgfSBhcyBhbnkpLFxuICAgICAgICB7IG1lc3NhZ2U6ICd0cmFuc2FjdGlvbiBhbW91bnQgaW4gdHhQcmVidWlsZCBkb2VzIG5vdCBtYXRjaCB0aGUgdmFsdWUgZ2l2ZW4gYnkgY2xpZW50JyB9XG4gICAgICApO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCB0aHJvdyB3aGVuIHJlY2lwaWVudCBhZGRyZXNzIGRvZXMgbm90IG1hdGNoJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgYXdhaXQgYXNzZXJ0LnJlamVjdHMoXG4gICAgICAgIHRva2VuQ29pbi52ZXJpZnlUcmFuc2FjdGlvbih7XG4gICAgICAgICAgdHhQcmVidWlsZDogeyB0eEhleDogVFJDMjBfUkFXX0RBVEFfSEVYIH0sXG4gICAgICAgICAgdHhQYXJhbXM6IHsgcmVjaXBpZW50czogW3sgYWRkcmVzczogJ1RMV2g2N1A5M0tndG5aTkN0R25FSE0xSDMzTmhxMnV2dk4nLCBhbW91bnQ6IFRSQzIwX0FNT1VOVCB9XSB9LFxuICAgICAgICAgIHdhbGxldFR5cGU6ICd0c3MnLFxuICAgICAgICB9IGFzIGFueSksXG4gICAgICAgIHsgbWVzc2FnZTogJ2Rlc3RpbmF0aW9uIGFkZHJlc3MgZG9lcyBub3QgbWF0Y2ggd2l0aCB0aGUgcmVjaXBpZW50IGFkZHJlc3MnIH1cbiAgICAgICk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHJldHVybiB0cnVlIHdoZW4gcmVjaXBpZW50cyBpcyBlbXB0eSBhcnJheSAoY29uc29saWRhdGlvbiBwYXRoKScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRva2VuQ29pbi52ZXJpZnlUcmFuc2FjdGlvbih7XG4gICAgICAgIHR4UHJlYnVpbGQ6IHsgdHhIZXg6IFRSQzIwX1JBV19EQVRBX0hFWCB9LFxuICAgICAgICB0eFBhcmFtczogeyByZWNpcGllbnRzOiBbXSB9LFxuICAgICAgICB3YWxsZXRUeXBlOiAndHNzJyxcbiAgICAgIH0gYXMgYW55KTtcbiAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChyZXN1bHQsIHRydWUpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCB0aHJvdyB3aGVuIGNvbnRyYWN0IHR5cGUgaXMgbm90IFRyaWdnZXJTbWFydENvbnRyYWN0JywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgLy8gVXNlIGEgbmF0aXZlIFRSWCBUcmFuc2ZlciBwcm90b2J1ZiBhcyB0eEhleCDigJQgVHJ4VG9rZW4gb25seSBoYW5kbGVzIFRyaWdnZXJTbWFydENvbnRyYWN0XG4gICAgICBjb25zdCByZWNpcGllbnRCYXNlNTggPSBVdGlscy5nZXRCYXNlNThBZGRyZXNzRnJvbUhleChUUkMyMF9SRUNJUElFTlRfSEVYKTtcbiAgICAgIGNvbnN0IG5hdGl2ZVRyeFJhd0RhdGFIZXggPSBVdGlscy5nZW5lcmF0ZVJhd0RhdGFIZXgoe1xuICAgICAgICBjb250cmFjdDogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBhcmFtZXRlcjoge1xuICAgICAgICAgICAgICB2YWx1ZToge1xuICAgICAgICAgICAgICAgIGFtb3VudDogMTAwMDAwMDAwLFxuICAgICAgICAgICAgICAgIG93bmVyX2FkZHJlc3M6ICc0MTczYTU5OTNjZDE4MmFlMTUyYWRhZDgyMDMxNjNmNzgwYzY1YThhYTUnLFxuICAgICAgICAgICAgICAgIHRvX2FkZHJlc3M6IFRSQzIwX1JFQ0lQSUVOVF9IRVgsXG4gICAgICAgICAgICAgIH0gYXMgYW55LFxuICAgICAgICAgICAgICB0eXBlX3VybDogJ3R5cGUuZ29vZ2xlYXBpcy5jb20vcHJvdG9jb2wuVHJhbnNmZXJDb250cmFjdCcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdHlwZTogJ1RyYW5zZmVyQ29udHJhY3QnLFxuICAgICAgICAgIH0gYXMgYW55LFxuICAgICAgICBdLFxuICAgICAgICByZWZCbG9ja0J5dGVzOiAnYzhjZicsXG4gICAgICAgIHJlZkJsb2NrSGFzaDogJzg5MTc3ZmQ4NGM1ZDkxOTYnLFxuICAgICAgICBleHBpcmF0aW9uOiBEYXRlLm5vdygpICsgMzYwMDAwMCxcbiAgICAgICAgdGltZXN0YW1wOiBEYXRlLm5vdygpLFxuICAgICAgfSk7XG5cbiAgICAgIGF3YWl0IGFzc2VydC5yZWplY3RzKFxuICAgICAgICB0b2tlbkNvaW4udmVyaWZ5VHJhbnNhY3Rpb24oe1xuICAgICAgICAgIHR4UHJlYnVpbGQ6IHsgdHhIZXg6IG5hdGl2ZVRyeFJhd0RhdGFIZXggfSxcbiAgICAgICAgICB0eFBhcmFtczogeyByZWNpcGllbnRzOiBbeyBhZGRyZXNzOiByZWNpcGllbnRCYXNlNTgsIGFtb3VudDogJzEwMDAwMDAwMCcgfV0gfSxcbiAgICAgICAgICB3YWxsZXRUeXBlOiAndHNzJyxcbiAgICAgICAgfSBhcyBhbnkpLFxuICAgICAgICB7IG1lc3NhZ2U6IC9FeHBlY3RlZCBUcmlnZ2VyU21hcnRDb250cmFjdCBmb3IgVFJDMjAgdG9rZW4gdHJhbnNmZXIvIH1cbiAgICAgICk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdub24tVFNTIHdhbGxldCDigJQgYnVpbGRlci1iYXNlZCB2YWxpZGF0aW9uIChleGlzdGluZyBwYXRoKScsICgpID0+IHtcbiAgICBjb25zdCB0eEhleCA9XG4gICAgICAne1wicmF3X2RhdGFcIjp7XCJjb250cmFjdFR5cGVcIjoyLFwiY29udHJhY3RcIjpbe1wicGFyYW1ldGVyXCI6e1widmFsdWVcIjp7XCJkYXRhXCI6XCJhOTA1OWNiYjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDg0ODM2MThjYTg1YzM1YTliOTIzZDk4YmViY2E3MThmNWExZGIyNzkwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA1ZjVlMTAwXCIsXCJvd25lcl9hZGRyZXNzXCI6XCI0MWM1MWZiZWVhNzg5MTBiMTViMWQzZThhOWI2MjkxNGNhOTRkMWE0YWNcIixcImNvbnRyYWN0X2FkZHJlc3NcIjpcIjQxNDJhMWUzOWFlZmE0OTI5MGYyYjNmOWVkNjg4ZDdjZWNmODZjZDZlMFwifSxcInR5cGVfdXJsXCI6XCJ0eXBlLmdvb2dsZWFwaXMuY29tL3Byb3RvY29sLlRyaWdnZXJTbWFydENvbnRyYWN0XCJ9LFwidHlwZVwiOlwiVHJpZ2dlclNtYXJ0Q29udHJhY3RcIn1dLFwiZXhwaXJhdGlvblwiOjE2NzQ1ODE3Njc0MzIsXCJ0aW1lc3RhbXBcIjoxNjc0NTc4MTY3NDMyLFwicmVmX2Jsb2NrX2J5dGVzXCI6XCI1NzhiXCIsXCJyZWZfYmxvY2tfaGFzaFwiOlwiNjExM2JiOWFjMzUxNDMyYlwiLFwiZmVlX2xpbWl0XCI6MTUwMDAwMDB9LFwicmF3X2RhdGFfaGV4XCI6XCIwYTAyNTc4YjIyMDg2MTEzYmI5YWMzNTE0MzJiNDA4OGVhZTdhNmRlMzA1YWFlMDEwODFmMTJhOTAxMGEzMTc0Nzk3MDY1MmU2NzZmNmY2NzZjNjU2MTcwNjk3MzJlNjM2ZjZkMmY3MDcyNmY3NDZmNjM2ZjZjMmU1NDcyNjk2NzY3NjU3MjUzNmQ2MTcyNzQ0MzZmNmU3NDcyNjE2Mzc0MTI3NDBhMTU0MWM1MWZiZWVhNzg5MTBiMTViMWQzZThhOWI2MjkxNGNhOTRkMWE0YWMxMjE1NDE0MmExZTM5YWVmYTQ5MjkwZjJiM2Y5ZWQ2ODhkN2NlY2Y4NmNkNmUwMjI0NGE5MDU5Y2JiMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwODQ4MzYxOGNhODVjMzVhOWI5MjNkOThiZWJjYTcxOGY1YTFkYjI3OTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDVmNWUxMDA3MDg4OGQ4Y2E1ZGUzMDkwMDFjMGMzOTMwN1wiLFwidHhJRFwiOlwiZmUyMWM0OWY0ZmViZDkwODkxMjVlM2EwMDY5NDNjMTQ1NzIxZDhmY2I3YWI4NDEzNmY4YzY2NjNmZjkyZjhlZFwiLFwic2lnbmF0dXJlXCI6W1wiMDc3NWNkZTMwMjY4OWViODI5Mzg4M2M2NmE4OWIzMWU4MGQ2MDhiZmMzYWQzYzI4M2I2NGE0OTBlYTRjYzcxMmM1NWEyZmQyZTYyYzc1ODQzZGQ3ZTc3ZDhjNGNiNTJlMGYzNzFmYmIyOWIzMzJjMjU5ZjhjYjYzYzJlNjE5NTMwMVwiXX0nO1xuXG4gICAgaXQoJ3Nob3VsZCB2YWxpZGF0ZSBhIGNvcnJlY3Qgbm9uLVRTUyBUUkMyMCB0cmFuc2ZlciB1c2luZyB0eEJ1aWxkZXInLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAvLyBUaGUgbm9uLVRTUyBwYXRoIHVzZXMgZ2V0QnVpbGRlcigpLmZyb20ocmF3VHgpLmJ1aWxkKCkgYW5kIGNoZWNrcyB0eC5vdXRwdXRzWzBdXG4gICAgICAvLyBUaGlzIHRlc3QgdXNlcyB0aGUgZnVsbCBKU09OIHR4IGZvcm1hdCB0aGF0IHRoZSBidWlsZGVyIHVuZGVyc3RhbmRzLlxuICAgICAgY29uc3QgcmVjaXBpZW50QmFzZTU4ID0gVXRpbHMuZ2V0QmFzZTU4QWRkcmVzc0Zyb21IZXgoVFJDMjBfUkVDSVBJRU5UX0hFWCk7XG5cbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRva2VuQ29pbi52ZXJpZnlUcmFuc2FjdGlvbih7XG4gICAgICAgIHR4UHJlYnVpbGQ6IHsgdHhIZXggfSxcbiAgICAgICAgdHhQYXJhbXM6IHsgcmVjaXBpZW50czogW3sgYWRkcmVzczogcmVjaXBpZW50QmFzZTU4LCBhbW91bnQ6IFRSQzIwX0FNT1VOVCB9XSB9LFxuICAgICAgfSBhcyBhbnkpO1xuXG4gICAgICBhc3NlcnQuc3RyaWN0RXF1YWwocmVzdWx0LCB0cnVlKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgdmFsaWRhdGUgd2hlbiByZWNpcGllbnQgaXMgMHgtcHJlZml4ZWQgaGV4IChob3Qgd2FsbGV0IHNlbmRtYW55IC8gQ09JTlMtMTU3NSknLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCByZWNpcGllbnRFdm0gPSAnMHgnICsgVFJDMjBfUkVDSVBJRU5UX0hFWC5zbGljZSgyKS50b0xvd2VyQ2FzZSgpO1xuXG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0b2tlbkNvaW4udmVyaWZ5VHJhbnNhY3Rpb24oe1xuICAgICAgICB0eFByZWJ1aWxkOiB7IHR4SGV4IH0sXG4gICAgICAgIHR4UGFyYW1zOiB7IHJlY2lwaWVudHM6IFt7IGFkZHJlc3M6IHJlY2lwaWVudEV2bSwgYW1vdW50OiBUUkMyMF9BTU9VTlQgfV0gfSxcbiAgICAgIH0gYXMgYW55KTtcblxuICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHJlc3VsdCwgdHJ1ZSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHZhbGlkYXRlIHdoZW4gcmVjaXBpZW50IGlzIDQxLXByZWZpeGVkIGhleCAoaG90IHdhbGxldCBzZW5kbWFueSAvIENPSU5TLTE1NzUpJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdG9rZW5Db2luLnZlcmlmeVRyYW5zYWN0aW9uKHtcbiAgICAgICAgdHhQcmVidWlsZDogeyB0eEhleCB9LFxuICAgICAgICB0eFBhcmFtczogeyByZWNpcGllbnRzOiBbeyBhZGRyZXNzOiBUUkMyMF9SRUNJUElFTlRfSEVYLCBhbW91bnQ6IFRSQzIwX0FNT1VOVCB9XSB9LFxuICAgICAgfSBhcyBhbnkpO1xuXG4gICAgICBhc3NlcnQuc3RyaWN0RXF1YWwocmVzdWx0LCB0cnVlKTtcbiAgICB9KTtcbiAgfSk7XG59KTtcbiJdfQ==
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../../test/unit/util.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const node_test_1 = require("node:test");
|
|
7
|
+
const assert_1 = __importDefault(require("assert"));
|
|
8
|
+
const src_1 = require("../../src");
|
|
9
|
+
const resources_1 = require("../resources");
|
|
10
|
+
const utils_1 = require("../../src/lib/utils");
|
|
11
|
+
(0, node_test_1.describe)('Util library should', function () {
|
|
12
|
+
// arbitrary text
|
|
13
|
+
const arr = [127, 255, 31, 192, 3, 126, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];
|
|
14
|
+
const hex = '7FFF1FC0037E0000000000000000000000000000000000000000000000000000';
|
|
15
|
+
const txt = 'arbitrary string to sign';
|
|
16
|
+
const signedString = '0x9424113f32c17b6ffbeee024e1a54b6991d756e82f66cca16a41231fdfa270d03b08e833f5dbbd5cc86896c2e5ea6c74d2e292cda21f717164f994fcdf28486d1b';
|
|
17
|
+
// prv-pub-address hex
|
|
18
|
+
const prv = 'FB3AA887E0BE3FAC9D75E661DAFF4A7FE0E91AAB13DA9775CD8586D7CB9B7640';
|
|
19
|
+
const pub = '046EBFB90C396B4A3B992B727CB4714A32E2A6DE43FDB3EC266286AC2246D8FD1E23E12C0DEB752C631A9011BBF8B56E2FBAA20E99D3952F0A558D11F96E7C1C5D';
|
|
20
|
+
const addressHex = '412C2BA4A9FF6C53207DC5B686BFECF75EA7B80577';
|
|
21
|
+
const base58 = 'TDzm1tCXM2YS1PDa3GoXSvxdy4AgwVbBPE';
|
|
22
|
+
const addrBytes = [65, 44, 43, 164, 169, 255, 108, 83, 32, 125, 197, 182, 134, 191, 236, 247, 94, 167, 184, 5, 119];
|
|
23
|
+
// tx information
|
|
24
|
+
(0, node_test_1.it)('be able to convert hex to bytes', () => {
|
|
25
|
+
const ba = src_1.Utils.getByteArrayFromHexAddress(hex);
|
|
26
|
+
assert_1.default.deepStrictEqual(ba, arr);
|
|
27
|
+
});
|
|
28
|
+
(0, node_test_1.it)('be able to convert hex with 0x to bytes ', () => {
|
|
29
|
+
const ba = src_1.Utils.getByteArrayFromHexAddress('0x' + hex);
|
|
30
|
+
assert_1.default.deepStrictEqual(ba, arr);
|
|
31
|
+
});
|
|
32
|
+
(0, node_test_1.it)('be able to convert hex to bytes', () => {
|
|
33
|
+
const hs = src_1.Utils.getHexAddressFromByteArray(arr);
|
|
34
|
+
assert_1.default.equal(hs, hex);
|
|
35
|
+
});
|
|
36
|
+
(0, node_test_1.it)('get a pub from a prv', () => {
|
|
37
|
+
const derivedPub = src_1.Utils.getPubKeyFromPriKey(Buffer.from(prv, 'hex'));
|
|
38
|
+
const derivedPubHex = src_1.Utils.getHexAddressFromByteArray(derivedPub);
|
|
39
|
+
assert_1.default.equal(derivedPubHex, pub);
|
|
40
|
+
});
|
|
41
|
+
(0, node_test_1.it)('get an hex address from a prv', () => {
|
|
42
|
+
const addr = src_1.Utils.getAddressFromPriKey(Buffer.from(prv, 'hex'));
|
|
43
|
+
const hexAddr = src_1.Utils.getHexAddressFromByteArray(addr);
|
|
44
|
+
assert_1.default.equal(hexAddr, addressHex);
|
|
45
|
+
});
|
|
46
|
+
(0, node_test_1.it)('get an base58 address', () => {
|
|
47
|
+
const addr = src_1.Utils.getAddressFromPriKey(Buffer.from(prv, 'hex'));
|
|
48
|
+
const addr58 = src_1.Utils.getBase58AddressFromByteArray(addr);
|
|
49
|
+
assert_1.default.equal(addr58, base58);
|
|
50
|
+
});
|
|
51
|
+
(0, node_test_1.it)('get an base58 address from hex', () => {
|
|
52
|
+
const addr58 = src_1.Utils.getBase58AddressFromHex(addressHex);
|
|
53
|
+
assert_1.default.equal(addr58, base58);
|
|
54
|
+
});
|
|
55
|
+
(0, node_test_1.it)('get hex from base58 address', () => {
|
|
56
|
+
const hexAddr = src_1.Utils.getHexAddressFromBase58Address(base58);
|
|
57
|
+
assert_1.default.equal(hexAddr, addressHex);
|
|
58
|
+
});
|
|
59
|
+
(0, node_test_1.it)('validate a hex string', () => {
|
|
60
|
+
const hex = ['0xaffd', '0x11'];
|
|
61
|
+
hex.map((hex) => {
|
|
62
|
+
assert_1.default.ok(src_1.Utils.isValidHex(hex));
|
|
63
|
+
});
|
|
64
|
+
const invalidHex = ['0xa11', '0xFFdYYY', '0x', ''];
|
|
65
|
+
invalidHex.map((hex) => {
|
|
66
|
+
assert_1.default.strictEqual(src_1.Utils.isValidHex(hex), false);
|
|
67
|
+
});
|
|
68
|
+
});
|
|
69
|
+
(0, node_test_1.it)('sign a string', () => {
|
|
70
|
+
const hexText = Buffer.from(txt).toString('hex');
|
|
71
|
+
const signed = src_1.Utils.signString(hexText, prv);
|
|
72
|
+
assert_1.default.equal(signedString, signed);
|
|
73
|
+
});
|
|
74
|
+
(0, node_test_1.it)('should calculate an address from a pub', () => {
|
|
75
|
+
const pubBytes = src_1.Utils.getByteArrayFromHexAddress(pub);
|
|
76
|
+
const bytes = src_1.Utils.getRawAddressFromPubKey(pubBytes);
|
|
77
|
+
assert_1.default.deepStrictEqual(bytes, addrBytes);
|
|
78
|
+
});
|
|
79
|
+
(0, node_test_1.it)('should verify a signed message', () => {
|
|
80
|
+
const hexEncodedMessage = Buffer.from(txt).toString('hex');
|
|
81
|
+
assert_1.default.strictEqual(src_1.Utils.verifySignature(hexEncodedMessage, base58, signedString, true), true);
|
|
82
|
+
});
|
|
83
|
+
(0, node_test_1.it)('should fail to verify a signed message if the message is not in hex', () => {
|
|
84
|
+
assert_1.default.throws(() => src_1.Utils.verifySignature(txt, base58, signedString, true));
|
|
85
|
+
});
|
|
86
|
+
(0, node_test_1.it)('should fail to verify a signed message if the address is not in base58', () => {
|
|
87
|
+
const hexEncodedString = Buffer.from(txt).toString('hex');
|
|
88
|
+
assert_1.default.throws(() => src_1.Utils.verifySignature(hexEncodedString, addressHex, signedString, true));
|
|
89
|
+
});
|
|
90
|
+
(0, node_test_1.it)('should fail to verify a signed message if the signature is not in hex', () => {
|
|
91
|
+
const hexEncodedString = Buffer.from(txt).toString('hex');
|
|
92
|
+
assert_1.default.throws(() => src_1.Utils.verifySignature(hexEncodedString, base58, 'abc', true));
|
|
93
|
+
});
|
|
94
|
+
(0, node_test_1.it)('should return transaction data', () => {
|
|
95
|
+
const data = src_1.Utils.decodeRawTransaction(resources_1.UnsignedTransferContractTx.tx.raw_data_hex);
|
|
96
|
+
assert_1.default.equal(data.timestamp, resources_1.UnsignedTransferContractTx.tx.raw_data.timestamp);
|
|
97
|
+
assert_1.default.equal(data.expiration, resources_1.UnsignedTransferContractTx.tx.raw_data.expiration);
|
|
98
|
+
assert_1.default.ok(data.contracts);
|
|
99
|
+
});
|
|
100
|
+
(0, node_test_1.it)('should decode a transfer contract', () => {
|
|
101
|
+
const tx = resources_1.UnsignedTransferContractTx.tx;
|
|
102
|
+
const rawTx = src_1.Utils.decodeRawTransaction(tx.raw_data_hex);
|
|
103
|
+
const value = resources_1.UnsignedTransferContractTx.tx.raw_data.contract[0].parameter.value;
|
|
104
|
+
const parsedContract = src_1.Utils.decodeTransferContract(rawTx.contracts[0].parameter.value);
|
|
105
|
+
const toAddress = src_1.Utils.getBase58AddressFromHex(value.to_address);
|
|
106
|
+
const ownerAddress = src_1.Utils.getBase58AddressFromHex(value.owner_address);
|
|
107
|
+
const amount = value.amount;
|
|
108
|
+
assert_1.default.equal(parsedContract[0].parameter.value.to_address, toAddress);
|
|
109
|
+
assert_1.default.equal(parsedContract[0].parameter.value.owner_address, ownerAddress);
|
|
110
|
+
assert_1.default.equal(parsedContract[0].parameter.value.amount, amount);
|
|
111
|
+
});
|
|
112
|
+
(0, node_test_1.it)('should decode an AccountPermissionUpdate Contract', () => {
|
|
113
|
+
const tx = resources_1.SignedAccountPermissionUpdateContractTx;
|
|
114
|
+
const value = tx.raw_data.contract[0].parameter.value;
|
|
115
|
+
const rawTx = src_1.Utils.decodeRawTransaction(tx.raw_data_hex);
|
|
116
|
+
const parsedTx = src_1.Utils.decodeAccountPermissionUpdateContract(rawTx.contracts[0].parameter.value);
|
|
117
|
+
const ownerAddress = src_1.Utils.getBase58AddressFromHex(value.owner_address);
|
|
118
|
+
assert_1.default.equal(parsedTx.ownerAddress, ownerAddress);
|
|
119
|
+
assert_1.default.equal(parsedTx.owner.type, 0);
|
|
120
|
+
assert_1.default.equal(parsedTx.owner.threshold, 2);
|
|
121
|
+
assert_1.default.equal(parsedTx.actives.length, 1);
|
|
122
|
+
assert_1.default.equal(parsedTx.actives[0].type, 2);
|
|
123
|
+
assert_1.default.equal(parsedTx.actives[0].threshold, 2);
|
|
124
|
+
});
|
|
125
|
+
(0, node_test_1.it)('should encode and decode data parameters for transfer', () => {
|
|
126
|
+
const types = ['address', 'uint256'];
|
|
127
|
+
const amount = '2000000000000000000000';
|
|
128
|
+
const values = [addressHex, amount];
|
|
129
|
+
const methodId = '0xa9059cbb';
|
|
130
|
+
const data = src_1.Utils.encodeDataParams(types, values, methodId);
|
|
131
|
+
assert_1.default.equal(data, 'a9059cbb0000000000000000000000002c2ba4a9ff6c53207dc5b686bfecf75ea7b8057700000000000000000000000000000000000000000000006c6b935b8bbd400000');
|
|
132
|
+
const decodedData = src_1.Utils.decodeDataParams(types, 'a9059cbb0000000000000000000000002c2ba4a9ff6c53207dc5b686bfecf75ea7b8057700000000000000000000000000000000000000000000006c6b935b8bbd400000');
|
|
133
|
+
assert_1.default.equal(decodedData[0], addressHex.toLocaleLowerCase());
|
|
134
|
+
assert_1.default.equal(decodedData[1].toString(), amount);
|
|
135
|
+
});
|
|
136
|
+
(0, node_test_1.it)('should correctly map testnet and mainnet tokens', () => {
|
|
137
|
+
assert_1.default.strictEqual(utils_1.tokenMainnetContractAddresses.includes('TSSMHYeV2uE9qYH95DqyoCuNCzEL1NvU3S'), true);
|
|
138
|
+
assert_1.default.strictEqual(utils_1.tokenTestnetContractAddresses.includes('TGkfUshdbAiNj5G1mynp2meq2BfF6XSGPf'), true);
|
|
139
|
+
});
|
|
140
|
+
(0, node_test_1.describe)('getNonBase58Characters', () => {
|
|
141
|
+
(0, node_test_1.it)('returns empty array for valid base58 strings', () => {
|
|
142
|
+
assert_1.default.deepStrictEqual(src_1.Utils.getNonBase58Characters('TGai5uHgBcoLERrzDXMepqZB8Et7D8nV8K'), []);
|
|
143
|
+
assert_1.default.deepStrictEqual(src_1.Utils.getNonBase58Characters(src_1.Utils.BASE58_ALPHABET), []);
|
|
144
|
+
});
|
|
145
|
+
(0, node_test_1.it)('returns invalid characters for non-base58 characters (0, O, I, l)', () => {
|
|
146
|
+
assert_1.default.deepStrictEqual(src_1.Utils.getNonBase58Characters('TGai5uHgBcoLERrzDXMepqZB8Et7D8nV80'), ['0']);
|
|
147
|
+
assert_1.default.deepStrictEqual(src_1.Utils.getNonBase58Characters('TGai5uHgBcoLERrzDXMepqZB8Et7D8nV8O'), ['O']);
|
|
148
|
+
assert_1.default.deepStrictEqual(src_1.Utils.getNonBase58Characters('TGai5uHgBcoLERrzDXMepqZB8Et7D8nV8I'), ['I']);
|
|
149
|
+
assert_1.default.deepStrictEqual(src_1.Utils.getNonBase58Characters('TGai5uHgBcoLERrzDXMepqZB8Et7D8nV8l'), ['l']);
|
|
150
|
+
});
|
|
151
|
+
(0, node_test_1.it)('returns unique non-base58 characters including whitespace and symbols', () => {
|
|
152
|
+
assert_1.default.deepStrictEqual(src_1.Utils.getNonBase58Characters('00OOIIll !!'), ['0', 'O', 'I', 'l', ' ', '!']);
|
|
153
|
+
});
|
|
154
|
+
});
|
|
155
|
+
});
|
|
156
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Rlc3QvdW5pdC91dGlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEseUNBQXlDO0FBQ3pDLG9EQUE0QjtBQUM1QixtQ0FBNkM7QUFFN0MsNENBQW1HO0FBQ25HLCtDQUFtRztBQUVuRyxJQUFBLG9CQUFRLEVBQUMscUJBQXFCLEVBQUU7SUFDOUIsaUJBQWlCO0lBQ2pCLE1BQU0sR0FBRyxHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3RILE1BQU0sR0FBRyxHQUFHLGtFQUFrRSxDQUFDO0lBQy9FLE1BQU0sR0FBRyxHQUFHLDBCQUEwQixDQUFDO0lBQ3ZDLE1BQU0sWUFBWSxHQUNoQixzSUFBc0ksQ0FBQztJQUV6SSxzQkFBc0I7SUFDdEIsTUFBTSxHQUFHLEdBQUcsa0VBQWtFLENBQUM7SUFDL0UsTUFBTSxHQUFHLEdBQ1Asb0lBQW9JLENBQUM7SUFDdkksTUFBTSxVQUFVLEdBQUcsNENBQTRDLENBQUM7SUFDaEUsTUFBTSxNQUFNLEdBQUcsb0NBQW9DLENBQUM7SUFDcEQsTUFBTSxTQUFTLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdB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QUMsV0FBSyxDQUFDLHNCQUFzQixDQUFDLG9DQUFvQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQ2xHLGdCQUFNLENBQUMsZUFBZSxDQUFDLFdBQUssQ0FBQyxzQkFBc0IsQ0FBQyxvQ0FBb0MsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUNwRyxDQUFDLENBQUMsQ0FBQztRQUVILElBQUEsY0FBRSxFQUFDLHVFQUF1RSxFQUFFLEdBQUcsRUFBRTtZQUMvRSxnQkFBTSxDQUFDLGVBQWUsQ0FBQyxXQUFLLENBQUMsc0JBQXNCLENBQUMsY0FBYyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDdkcsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZGVzY3JpYmUsIGl0IH0gZnJvbSAnbm9kZTp0ZXN0JztcbmltcG9ydCBhc3NlcnQgZnJvbSAnYXNzZXJ0JztcbmltcG9ydCB7IEludGVyZmFjZSwgVXRpbHMgfSBmcm9tICcuLi8uLi9zcmMnO1xuXG5pbXBvcnQgeyBVbnNpZ25lZFRyYW5zZmVyQ29udHJhY3RUeCwgU2lnbmVkQWNjb3VudFBlcm1pc3Npb25VcGRhdGVDb250cmFjdFR4IH0gZnJvbSAnLi4vcmVzb3VyY2VzJztcbmltcG9ydCB7IHRva2VuTWFpbm5ldENvbnRyYWN0QWRkcmVzc2VzLCB0b2tlblRlc3RuZXRDb250cmFjdEFkZHJlc3NlcyB9IGZyb20gJy4uLy4uL3NyYy9saWIvdXRpbHMnO1xuXG5kZXNjcmliZSgnVXRpbCBsaWJyYXJ5IHNob3VsZCcsIGZ1bmN0aW9uICgpIHtcbiAgLy8gYXJiaXRyYXJ5IHRleHRcbiAgY29uc3QgYXJyID0gWzEyNywgMjU1LCAzMSwgMTkyLCAzLCAxMjYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDBdO1xuICBjb25zdCBoZXggPSAnN0ZGRjFGQzAwMzdFMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCc7XG4gIGNvbnN0IHR4dCA9ICdhcmJpdHJhcnkgc3RyaW5nIHRvIHNpZ24nO1xuICBjb25zdCBzaWduZWRTdHJpbmcgPVxuICAgICcweDk0MjQxMTNmMzJjMTdiNmZmYmVlZTAyNGUxYTU0YjY5OTFkNzU2ZTgyZjY2Y2NhMTZhNDEyMzFmZGZhMjcwZDAzYjA4ZTgzM2Y1ZGJiZDVjYzg2ODk2YzJlNWVhNmM3NGQyZTI5MmNkYTIxZjcxNzE2NGY5OTRmY2RmMjg0ODZkMWInO1xuXG4gIC8vIHBydi1wdWItYWRkcmVzcyBoZXhcbiAgY29uc3QgcHJ2ID0gJ0ZCM0FBODg3RTBCRTNGQUM5RDc1RTY2MURBRkY0QTdGRTBFOTFBQUIxM0RBOTc3NUNEODU4NkQ3Q0I5Qjc2NDAnO1xuICBjb25zdCBwdWIgPVxuICAgICcwNDZFQkZCOTBDMzk2QjRBM0I5OTJCNzI3Q0I0NzE0QTMyRTJBNkRFNDNGREIzRUMyNjYyODZBQzIyNDZEOEZEMUUyM0UxMkMwREVCNzUyQzYzMUE5MDExQkJGOEI1NkUyRkJBQTIwRTk5RDM5NTJGMEE1NThEMTFGOTZFN0MxQzVEJztcbiAgY29uc3QgYWRkcmVzc0hleCA9ICc0MTJDMkJBNEE5RkY2QzUzMjA3REM1QjY4NkJGRUNGNzVFQTdCODA1NzcnO1xuICBjb25zdCBiYXNlNTggPSAnVER6bTF0Q1hNMllTMVBEYTNHb1hTdnhkeTRBZ3dWYkJQRSc7XG4gIGNvbnN0IGFkZHJCeXRlcyA9IFs2NSwgNDQsIDQzLCAxNjQsIDE2OSwgMjU1LCAxMDgsIDgzLCAzMiwgMTI1LCAxOTcsIDE4MiwgMTM0LCAxOTEsIDIzNiwgMjQ3LCA5NCwgMTY3LCAxODQsIDUsIDExOV07XG5cbiAgLy8gdHggaW5mb3JtYXRpb25cbiAgaXQoJ2JlIGFibGUgdG8gY29udmVydCBoZXggdG8gYnl0ZXMnLCAoKSA9PiB7XG4gICAgY29uc3QgYmEgPSBVdGlscy5nZXRCeXRlQXJyYXlGcm9tSGV4QWRkcmVzcyhoZXgpO1xuICAgIGFzc2VydC5kZWVwU3RyaWN0RXF1YWwoYmEsIGFycik7XG4gIH0pO1xuXG4gIGl0KCdiZSBhYmxlIHRvIGNvbnZlcnQgaGV4IHdpdGggMHggdG8gYnl0ZXMgJywgKCkgPT4ge1xuICAgIGNvbnN0IGJhID0gVXRpbHMuZ2V0Qnl0ZUFycmF5RnJvbUhleEFkZHJlc3MoJzB4JyArIGhleCk7XG4gICAgYXNzZXJ0LmRlZXBTdHJpY3RFcXVhbChiYSwgYXJyKTtcbiAgfSk7XG5cbiAgaXQoJ2JlIGFibGUgdG8gY29udmVydCBoZXggdG8gYnl0ZXMnLCAoKSA9PiB7XG4gICAgY29uc3QgaHMgPSBVdGlscy5nZXRIZXhBZGRyZXNzRnJvbUJ5dGVBcnJheShhcnIpO1xuICAgIGFzc2VydC5lcXVhbChocywgaGV4KTtcbiAgfSk7XG5cbiAgaXQoJ2dldCBhIHB1YiBmcm9tIGEgcHJ2JywgKCkgPT4ge1xuICAgIGNvbnN0IGRlcml2ZWRQdWIgPSBVdGlscy5nZXRQdWJLZXlGcm9tUHJpS2V5KEJ1ZmZlci5mcm9tKHBydiwgJ2hleCcpKTtcbiAgICBjb25zdCBkZXJpdmVkUHViSGV4ID0gVXRpbHMuZ2V0SGV4QWRkcmVzc0Zyb21CeXRlQXJyYXkoZGVyaXZlZFB1Yik7XG4gICAgYXNzZXJ0LmVxdWFsKGRlcml2ZWRQdWJIZXgsIHB1Yik7XG4gIH0pO1xuXG4gIGl0KCdnZXQgYW4gaGV4IGFkZHJlc3MgZnJvbSBhIHBydicsICgpID0+IHtcbiAgICBjb25zdCBhZGRyID0gVXRpbHMuZ2V0QWRkcmVzc0Zyb21QcmlLZXkoQnVmZmVyLmZyb20ocHJ2LCAnaGV4JykpO1xuICAgIGNvbnN0IGhleEFkZHIgPSBVdGlscy5nZXRIZXhBZGRyZXNzRnJvbUJ5dGVBcnJheShhZGRyKTtcbiAgICBhc3NlcnQuZXF1YWwoaGV4QWRkciwgYWRkcmVzc0hleCk7XG4gIH0pO1xuXG4gIGl0KCdnZXQgYW4gYmFzZTU4IGFkZHJlc3MnLCAoKSA9PiB7XG4gICAgY29uc3QgYWRkciA9IFV0aWxzLmdldEFkZHJlc3NGcm9tUHJpS2V5KEJ1ZmZlci5mcm9tKHBydiwgJ2hleCcpKTtcbiAgICBjb25zdCBhZGRyNTggPSBVdGlscy5nZXRCYXNlNThBZGRyZXNzRnJvbUJ5dGVBcnJheShhZGRyKTtcbiAgICBhc3NlcnQuZXF1YWwoYWRkcjU4LCBiYXNlNTgpO1xuICB9KTtcblxuICBpdCgnZ2V0IGFuIGJhc2U1OCBhZGRyZXNzIGZyb20gaGV4JywgKCkgPT4ge1xuICAgIGNvbnN0IGFkZHI1OCA9IFV0aWxzLmdldEJhc2U1OEFkZHJlc3NGcm9tSGV4KGFkZHJlc3NIZXgpO1xuICAgIGFzc2VydC5lcXVhbChhZGRyNTgsIGJhc2U1OCk7XG4gIH0pO1xuXG4gIGl0KCdnZXQgaGV4IGZyb20gYmFzZTU4IGFkZHJlc3MnLCAoKSA9PiB7XG4gICAgY29uc3QgaGV4QWRkciA9IFV0aWxzLmdldEhleEFkZHJlc3NGcm9tQmFzZTU4QWRkcmVzcyhiYXNlNTgpO1xuICAgIGFzc2VydC5lcXVhbChoZXhBZGRyLCBhZGRyZXNzSGV4KTtcbiAgfSk7XG5cbiAgaXQoJ3ZhbGlkYXRlIGEgaGV4IHN0cmluZycsICgpID0+IHtcbiAgICBjb25zdCBoZXggPSBbJzB4YWZmZCcsICcweDExJ107XG4gICAgaGV4Lm1hcCgoaGV4KSA9PiB7XG4gICAgICBhc3NlcnQub2soVXRpbHMuaXNWYWxpZEhleChoZXgpKTtcbiAgICB9KTtcblxuICAgIGNvbnN0IGludmFsaWRIZXggPSBbJzB4YTExJywgJzB4RkZkWVlZJywgJzB4JywgJyddO1xuICAgIGludmFsaWRIZXgubWFwKChoZXgpID0+IHtcbiAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChVdGlscy5pc1ZhbGlkSGV4KGhleCksIGZhbHNlKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgaXQoJ3NpZ24gYSBzdHJpbmcnLCAoKSA9PiB7XG4gICAgY29uc3QgaGV4VGV4dCA9IEJ1ZmZlci5mcm9tKHR4dCkudG9TdHJpbmcoJ2hleCcpO1xuICAgIGNvbnN0IHNpZ25lZCA9IFV0aWxzLnNpZ25TdHJpbmcoaGV4VGV4dCwgcHJ2KTtcblxuICAgIGFzc2VydC5lcXVhbChzaWduZWRTdHJpbmcsIHNpZ25lZCk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgY2FsY3VsYXRlIGFuIGFkZHJlc3MgZnJvbSBhIHB1YicsICgpID0+IHtcbiAgICBjb25zdCBwdWJCeXRlcyA9IFV0aWxzLmdldEJ5dGVBcnJheUZyb21IZXhBZGRyZXNzKHB1Yik7XG4gICAgY29uc3QgYnl0ZXMgPSBVdGlscy5nZXRSYXdBZGRyZXNzRnJvbVB1YktleShwdWJCeXRlcyk7XG4gICAgYXNzZXJ0LmRlZXBTdHJpY3RFcXVhbChieXRlcywgYWRkckJ5dGVzKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCB2ZXJpZnkgYSBzaWduZWQgbWVzc2FnZScsICgpID0+IHtcbiAgICBjb25zdCBoZXhFbmNvZGVkTWVzc2FnZSA9IEJ1ZmZlci5mcm9tKHR4dCkudG9TdHJpbmcoJ2hleCcpO1xuICAgIGFzc2VydC5zdHJpY3RFcXVhbChVdGlscy52ZXJpZnlTaWduYXR1cmUoaGV4RW5jb2RlZE1lc3NhZ2UsIGJhc2U1OCwgc2lnbmVkU3RyaW5nLCB0cnVlKSwgdHJ1ZSk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgZmFpbCB0byB2ZXJpZnkgYSBzaWduZWQgbWVzc2FnZSBpZiB0aGUgbWVzc2FnZSBpcyBub3QgaW4gaGV4JywgKCkgPT4ge1xuICAgIGFzc2VydC50aHJvd3MoKCkgPT4gVXRpbHMudmVyaWZ5U2lnbmF0dXJlKHR4dCwgYmFzZTU4LCBzaWduZWRTdHJpbmcsIHRydWUpKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBmYWlsIHRvIHZlcmlmeSBhIHNpZ25lZCBtZXNzYWdlIGlmIHRoZSBhZGRyZXNzIGlzIG5vdCBpbiBiYXNlNTgnLCAoKSA9PiB7XG4gICAgY29uc3QgaGV4RW5jb2RlZFN0cmluZyA9IEJ1ZmZlci5mcm9tKHR4dCkudG9TdHJpbmcoJ2hleCcpO1xuICAgIGFzc2VydC50aHJvd3MoKCkgPT4gVXRpbHMudmVyaWZ5U2lnbmF0dXJlKGhleEVuY29kZWRTdHJpbmcsIGFkZHJlc3NIZXgsIHNpZ25lZFN0cmluZywgdHJ1ZSkpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGZhaWwgdG8gdmVyaWZ5IGEgc2lnbmVkIG1lc3NhZ2UgaWYgdGhlIHNpZ25hdHVyZSBpcyBub3QgaW4gaGV4JywgKCkgPT4ge1xuICAgIGNvbnN0IGhleEVuY29kZWRTdHJpbmcgPSBCdWZmZXIuZnJvbSh0eHQpLnRvU3RyaW5nKCdoZXgnKTtcbiAgICBhc3NlcnQudGhyb3dzKCgpID0+IFV0aWxzLnZlcmlmeVNpZ25hdHVyZShoZXhFbmNvZGVkU3RyaW5nLCBiYXNlNTgsICdhYmMnLCB0cnVlKSk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgcmV0dXJuIHRyYW5zYWN0aW9uIGRhdGEnLCAoKSA9PiB7XG4gICAgY29uc3QgZGF0YSA9IFV0aWxzLmRlY29kZVJhd1RyYW5zYWN0aW9uKFVuc2lnbmVkVHJhbnNmZXJDb250cmFjdFR4LnR4LnJhd19kYXRhX2hleCk7XG4gICAgYXNzZXJ0LmVxdWFsKGRhdGEudGltZXN0YW1wLCBVbnNpZ25lZFRyYW5zZmVyQ29udHJhY3RUeC50eC5yYXdfZGF0YS50aW1lc3RhbXApO1xuICAgIGFzc2VydC5lcXVhbChkYXRhLmV4cGlyYXRpb24sIFVuc2lnbmVkVHJhbnNmZXJDb250cmFjdFR4LnR4LnJhd19kYXRhLmV4cGlyYXRpb24pO1xuICAgIGFzc2VydC5vayhkYXRhLmNvbnRyYWN0cyk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgZGVjb2RlIGEgdHJhbnNmZXIgY29udHJhY3QnLCAoKSA9PiB7XG4gICAgY29uc3QgdHggPSBVbnNpZ25lZFRyYW5zZmVyQ29udHJhY3RUeC50eDtcbiAgICBjb25zdCByYXdUeCA9IFV0aWxzLmRlY29kZVJhd1RyYW5zYWN0aW9uKHR4LnJhd19kYXRhX2hleCk7XG4gICAgY29uc3QgdmFsdWUgPSBVbnNpZ25lZFRyYW5zZmVyQ29udHJhY3RUeC50eC5yYXdfZGF0YS5jb250cmFjdFswXS5wYXJhbWV0ZXIudmFsdWU7XG4gICAgY29uc3QgcGFyc2VkQ29udHJhY3QgPSBVdGlscy5kZWNvZGVUcmFuc2ZlckNvbnRyYWN0KFxuICAgICAgcmF3VHguY29udHJhY3RzWzBdLnBhcmFtZXRlci52YWx1ZVxuICAgICkgYXMgSW50ZXJmYWNlLlRyYW5zZmVyQ29udHJhY3RbXTtcblxuICAgIGNvbnN0IHRvQWRkcmVzcyA9IFV0aWxzLmdldEJhc2U1OEFkZHJlc3NGcm9tSGV4KHZhbHVlLnRvX2FkZHJlc3MpO1xuICAgIGNvbnN0IG93bmVyQWRkcmVzcyA9IFV0aWxzLmdldEJhc2U1OEFkZHJlc3NGcm9tSGV4KHZhbHVlLm93bmVyX2FkZHJlc3MpO1xuICAgIGNvbnN0IGFtb3VudCA9IHZhbHVlLmFtb3VudDtcblxuICAgIGFzc2VydC5lcXVhbChwYXJzZWRDb250cmFjdFswXS5wYXJhbWV0ZXIudmFsdWUudG9fYWRkcmVzcywgdG9BZGRyZXNzKTtcbiAgICBhc3NlcnQuZXF1YWwocGFyc2VkQ29udHJhY3RbMF0ucGFyYW1ldGVyLnZhbHVlLm93bmVyX2FkZHJlc3MsIG93bmVyQWRkcmVzcyk7XG4gICAgYXNzZXJ0LmVxdWFsKHBhcnNlZENvbnRyYWN0WzBdLnBhcmFtZXRlci52YWx1ZS5hbW91bnQsIGFtb3VudCk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgZGVjb2RlIGFuIEFjY291bnRQZXJtaXNzaW9uVXBkYXRlIENvbnRyYWN0JywgKCkgPT4ge1xuICAgIGNvbnN0IHR4ID0gU2lnbmVkQWNjb3VudFBlcm1pc3Npb25VcGRhdGVDb250cmFjdFR4O1xuICAgIGNvbnN0IHZhbHVlID0gdHgucmF3X2RhdGEuY29udHJhY3RbMF0ucGFyYW1ldGVyLnZhbHVlO1xuICAgIGNvbnN0IHJhd1R4ID0gVXRpbHMuZGVjb2RlUmF3VHJhbnNhY3Rpb24odHgucmF3X2RhdGFfaGV4KTtcbiAgICBjb25zdCBwYXJzZWRUeCA9IFV0aWxzLmRlY29kZUFjY291bnRQZXJtaXNzaW9uVXBkYXRlQ29udHJhY3QoXG4gICAgICByYXdUeC5jb250cmFjdHNbMF0ucGFyYW1ldGVyLnZhbHVlXG4gICAgKSBhcyBJbnRlcmZhY2UuQWNjb3VudFBlcm1pc3Npb25VcGRhdGVDb250cmFjdDtcbiAgICBjb25zdCBvd25lckFkZHJlc3MgPSBVdGlscy5nZXRCYXNlNThBZGRyZXNzRnJvbUhleCh2YWx1ZS5vd25lcl9hZGRyZXNzKTtcbiAgICBhc3NlcnQuZXF1YWwocGFyc2VkVHgub3duZXJBZGRyZXNzLCBvd25lckFkZHJlc3MpO1xuICAgIGFzc2VydC5lcXVhbChwYXJzZWRUeC5vd25lci50eXBlLCAwKTtcbiAgICBhc3NlcnQuZXF1YWwocGFyc2VkVHgub3duZXIudGhyZXNob2xkLCAyKTtcbiAgICBhc3NlcnQuZXF1YWwocGFyc2VkVHguYWN0aXZlcy5sZW5ndGgsIDEpO1xuICAgIGFzc2VydC5lcXVhbChwYXJzZWRUeC5hY3RpdmVzWzBdLnR5cGUsIDIpO1xuICAgIGFzc2VydC5lcXVhbChwYXJzZWRUeC5hY3RpdmVzWzBdLnRocmVzaG9sZCwgMik7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgZW5jb2RlIGFuZCBkZWNvZGUgZGF0YSBwYXJhbWV0ZXJzIGZvciB0cmFuc2ZlcicsICgpID0+IHtcbiAgICBjb25zdCB0eXBlcyA9IFsnYWRkcmVzcycsICd1aW50MjU2J107XG4gICAgY29uc3QgYW1vdW50ID0gJzIwMDAwMDAwMDAwMDAwMDAwMDAwMDAnO1xuICAgIGNvbnN0IHZhbHVlcyA9IFthZGRyZXNzSGV4LCBhbW91bnRdO1xuICAgIGNvbnN0IG1ldGhvZElkID0gJzB4YTkwNTljYmInO1xuICAgIGNvbnN0IGRhdGEgPSBVdGlscy5lbmNvZGVEYXRhUGFyYW1zKHR5cGVzLCB2YWx1ZXMsIG1ldGhvZElkKTtcbiAgICBhc3NlcnQuZXF1YWwoXG4gICAgICBkYXRhLFxuICAgICAgJ2E5MDU5Y2JiMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMmMyYmE0YTlmZjZjNTMyMDdkYzViNjg2YmZlY2Y3NWVhN2I4MDU3NzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA2YzZiOTM1YjhiYmQ0MDAwMDAnXG4gICAgKTtcblxuICAgIGNvbnN0IGRlY29kZWREYXRhID0gVXRpbHMuZGVjb2RlRGF0YVBhcmFtcyhcbiAgICAgIHR5cGVzLFxuICAgICAgJ2E5MDU5Y2JiMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMmMyYmE0YTlmZjZjNTMyMDdkYzViNjg2YmZlY2Y3NWVhN2I4MDU3NzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA2YzZiOTM1YjhiYmQ0MDAwMDAnXG4gICAgKTtcbiAgICBhc3NlcnQuZXF1YWwoZGVjb2RlZERhdGFbMF0sIGFkZHJlc3NIZXgudG9Mb2NhbGVMb3dlckNhc2UoKSk7XG4gICAgYXNzZXJ0LmVxdWFsKGRlY29kZWREYXRhWzFdLnRvU3RyaW5nKCksIGFtb3VudCk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgY29ycmVjdGx5IG1hcCB0ZXN0bmV0IGFuZCBtYWlubmV0IHRva2VucycsICgpID0+IHtcbiAgICBhc3NlcnQuc3RyaWN0RXF1YWwodG9rZW5NYWlubmV0Q29udHJhY3RBZGRyZXNzZXMuaW5jbHVkZXMoJ1RTU01IWWVWMnVFOXFZSDk1RHF5b0N1TkN6RUwxTnZVM1MnKSwgdHJ1ZSk7XG4gICAgYXNzZXJ0LnN0cmljdEVxdWFsKHRva2VuVGVzdG5ldENvbnRyYWN0QWRkcmVzc2VzLmluY2x1ZGVzKCdUR2tmVXNoZGJBaU5qNUcxbXlucDJtZXEyQmZGNlhTR1BmJyksIHRydWUpO1xuICB9KTtcblxuICBkZXNjcmliZSgnZ2V0Tm9uQmFzZTU4Q2hhcmFjdGVycycsICgpID0+IHtcbiAgICBpdCgncmV0dXJucyBlbXB0eSBhcnJheSBmb3IgdmFsaWQgYmFzZTU4IHN0cmluZ3MnLCAoKSA9PiB7XG4gICAgICBhc3NlcnQuZGVlcFN0cmljdEVxdWFsKFV0aWxzLmdldE5vbkJhc2U1OENoYXJhY3RlcnMoJ1RHYWk1dUhnQmNvTEVScnpEWE1lcHFaQjhFdDdEOG5WOEsnKSwgW10pO1xuICAgICAgYXNzZXJ0LmRlZXBTdHJpY3RFcXVhbChVdGlscy5nZXROb25CYXNlNThDaGFyYWN0ZXJzKFV0aWxzLkJBU0U1OF9BTFBIQUJFVCksIFtdKTtcbiAgICB9KTtcblxuICAgIGl0KCdyZXR1cm5zIGludmFsaWQgY2hhcmFjdGVycyBmb3Igbm9uLWJhc2U1OCBjaGFyYWN0ZXJzICgwLCBPLCBJLCBsKScsICgpID0+IHtcbiAgICAgIGFzc2VydC5kZWVwU3RyaWN0RXF1YWwoVXRpbHMuZ2V0Tm9uQmFzZTU4Q2hhcmFjdGVycygnVEdhaTV1SGdCY29MRVJyekRYTWVwcVpCOEV0N0Q4blY4MCcpLCBbJzAnXSk7XG4gICAgICBhc3NlcnQuZGVlcFN0cmljdEVxdWFsKFV0aWxzLmdldE5vbkJhc2U1OENoYXJhY3RlcnMoJ1RHYWk1dUhnQmNvTEVScnpEWE1lcHFaQjhFdDdEOG5WOE8nKSwgWydPJ10pO1xuICAgICAgYXNzZXJ0LmRlZXBTdHJpY3RFcXVhbChVdGlscy5nZXROb25CYXNlNThDaGFyYWN0ZXJzKCdUR2FpNXVIZ0Jjb0xFUnJ6RFhNZXBxWkI4RXQ3RDhuVjhJJyksIFsnSSddKTtcbiAgICAgIGFzc2VydC5kZWVwU3RyaWN0RXF1YWwoVXRpbHMuZ2V0Tm9uQmFzZTU4Q2hhcmFjdGVycygnVEdhaTV1SGdCY29MRVJyekRYTWVwcVpCOEV0N0Q4blY4bCcpLCBbJ2wnXSk7XG4gICAgfSk7XG5cbiAgICBpdCgncmV0dXJucyB1bmlxdWUgbm9uLWJhc2U1OCBjaGFyYWN0ZXJzIGluY2x1ZGluZyB3aGl0ZXNwYWNlIGFuZCBzeW1ib2xzJywgKCkgPT4ge1xuICAgICAgYXNzZXJ0LmRlZXBTdHJpY3RFcXVhbChVdGlscy5nZXROb25CYXNlNThDaGFyYWN0ZXJzKCcwME9PSUlsbCAgISEnKSwgWycwJywgJ08nLCAnSScsICdsJywgJyAnLCAnISddKTtcbiAgICB9KTtcbiAgfSk7XG59KTtcbiJdfQ==
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"verifyTransaction.d.ts","sourceRoot":"","sources":["../../../test/unit/verifyTransaction.ts"],"names":[],"mappings":""}
|