@bitgo-beta/sdk-coin-sol 2.4.3-beta.998 → 7.6.3
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/src/bigint-buffer-guard.d.ts +1 -0
- package/dist/src/bigint-buffer-guard.d.ts.map +1 -0
- package/dist/src/bigint-buffer-guard.js +29 -0
- package/dist/src/config/token2022StaticConfig.d.ts +3 -0
- package/dist/src/config/token2022StaticConfig.d.ts.map +1 -0
- package/dist/src/config/token2022StaticConfig.js +50 -0
- package/dist/src/index.d.ts +1 -0
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +2 -1
- package/dist/src/lib/constants.d.ts +35 -2
- package/dist/src/lib/constants.d.ts.map +1 -1
- package/dist/src/lib/constants.js +41 -2
- package/dist/src/lib/customInstructionBuilder.d.ts +72 -0
- package/dist/src/lib/customInstructionBuilder.d.ts.map +1 -0
- package/dist/src/lib/customInstructionBuilder.js +289 -0
- package/dist/src/lib/iface.d.ts +79 -5
- package/dist/src/lib/iface.d.ts.map +1 -1
- package/dist/src/lib/iface.js +1 -1
- package/dist/src/lib/index.d.ts +1 -0
- package/dist/src/lib/index.d.ts.map +1 -1
- package/dist/src/lib/index.js +4 -2
- package/dist/src/lib/instructionParamsFactory.d.ts.map +1 -1
- package/dist/src/lib/instructionParamsFactory.js +364 -78
- package/dist/src/lib/jitoStakePoolOperations.d.ts +113 -0
- package/dist/src/lib/jitoStakePoolOperations.d.ts.map +1 -0
- package/dist/src/lib/jitoStakePoolOperations.js +200 -0
- package/dist/src/lib/solInstructionFactory.d.ts.map +1 -1
- package/dist/src/lib/solInstructionFactory.js +266 -69
- package/dist/src/lib/stakingActivateBuilder.d.ts +16 -5
- package/dist/src/lib/stakingActivateBuilder.d.ts.map +1 -1
- package/dist/src/lib/stakingActivateBuilder.js +23 -10
- package/dist/src/lib/stakingDeactivateBuilder.d.ts +16 -5
- package/dist/src/lib/stakingDeactivateBuilder.d.ts.map +1 -1
- package/dist/src/lib/stakingDeactivateBuilder.js +43 -20
- package/dist/src/lib/token2022Config.d.ts +44 -0
- package/dist/src/lib/token2022Config.d.ts.map +1 -0
- package/dist/src/lib/token2022Config.js +27 -0
- package/dist/src/lib/tokenTransferBuilder.js +7 -7
- package/dist/src/lib/transaction.d.ts +31 -4
- package/dist/src/lib/transaction.d.ts.map +1 -1
- package/dist/src/lib/transaction.js +134 -46
- package/dist/src/lib/transactionBuilder.d.ts +18 -2
- package/dist/src/lib/transactionBuilder.d.ts.map +1 -1
- package/dist/src/lib/transactionBuilder.js +78 -2
- package/dist/src/lib/transactionBuilderFactory.d.ts +5 -0
- package/dist/src/lib/transactionBuilderFactory.d.ts.map +1 -1
- package/dist/src/lib/transactionBuilderFactory.js +10 -1
- package/dist/src/lib/utils.d.ts +34 -1
- package/dist/src/lib/utils.d.ts.map +1 -1
- package/dist/src/lib/utils.js +88 -24
- package/dist/src/sol.d.ts +36 -13
- package/dist/src/sol.d.ts.map +1 -1
- package/dist/src/sol.js +230 -38
- package/dist/test/fixtures/sol.d.ts +1152 -0
- package/dist/test/fixtures/sol.d.ts.map +1 -0
- package/dist/test/fixtures/sol.js +1433 -0
- package/dist/test/resources/sol.d.ts +238 -0
- package/dist/test/resources/sol.d.ts.map +1 -0
- package/dist/test/resources/sol.js +320 -0
- package/dist/test/unit/fixtures/solBackupKey.d.ts +5 -0
- package/dist/test/unit/fixtures/solBackupKey.d.ts.map +1 -0
- package/dist/test/unit/fixtures/solBackupKey.js +8 -0
- package/dist/test/unit/getBuilderFactory.d.ts +3 -0
- package/dist/test/unit/getBuilderFactory.d.ts.map +1 -0
- package/dist/test/unit/getBuilderFactory.js +10 -0
- package/dist/test/unit/instructionParamsFactory.d.ts +2 -0
- package/dist/test/unit/instructionParamsFactory.d.ts.map +1 -0
- package/dist/test/unit/instructionParamsFactory.js +412 -0
- package/dist/test/unit/instructionParamsFactory.staking.d.ts +2 -0
- package/dist/test/unit/instructionParamsFactory.staking.d.ts.map +1 -0
- package/dist/test/unit/instructionParamsFactory.staking.js +1059 -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 +177 -0
- package/dist/test/unit/messages/messageBuilderFactory.d.ts +2 -0
- package/dist/test/unit/messages/messageBuilderFactory.d.ts.map +1 -0
- package/dist/test/unit/messages/messageBuilderFactory.js +118 -0
- package/dist/test/unit/messages/simpleMessageBuilder.d.ts +2 -0
- package/dist/test/unit/messages/simpleMessageBuilder.d.ts.map +1 -0
- package/dist/test/unit/messages/simpleMessageBuilder.js +194 -0
- package/dist/test/unit/sol.d.ts +2 -0
- package/dist/test/unit/sol.d.ts.map +1 -0
- package/dist/test/unit/sol.js +3108 -0
- package/dist/test/unit/solInstructionFactory.d.ts +2 -0
- package/dist/test/unit/solInstructionFactory.d.ts.map +1 -0
- package/dist/test/unit/solInstructionFactory.js +454 -0
- package/dist/test/unit/solToken.d.ts +2 -0
- package/dist/test/unit/solToken.d.ts.map +1 -0
- package/dist/test/unit/solToken.js +31 -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 +983 -0
- package/dist/test/unit/transactionBuilder/StakingWithdrawBuilder.d.ts +2 -0
- package/dist/test/unit/transactionBuilder/StakingWithdrawBuilder.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/StakingWithdrawBuilder.js +202 -0
- package/dist/test/unit/transactionBuilder/ataInitBuilder.d.ts +2 -0
- package/dist/test/unit/transactionBuilder/ataInitBuilder.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/ataInitBuilder.js +471 -0
- package/dist/test/unit/transactionBuilder/customInstructionBuilder.d.ts +2 -0
- package/dist/test/unit/transactionBuilder/customInstructionBuilder.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/customInstructionBuilder.js +413 -0
- package/dist/test/unit/transactionBuilder/stakingActivateBuilder.d.ts +2 -0
- package/dist/test/unit/transactionBuilder/stakingActivateBuilder.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/stakingActivateBuilder.js +430 -0
- package/dist/test/unit/transactionBuilder/stakingAuthorizeBuilder.d.ts +2 -0
- package/dist/test/unit/transactionBuilder/stakingAuthorizeBuilder.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/stakingAuthorizeBuilder.js +157 -0
- package/dist/test/unit/transactionBuilder/stakingDeactivateBuilder.d.ts +2 -0
- package/dist/test/unit/transactionBuilder/stakingDeactivateBuilder.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/stakingDeactivateBuilder.js +384 -0
- package/dist/test/unit/transactionBuilder/stakingDelegateBuilder.d.ts +2 -0
- package/dist/test/unit/transactionBuilder/stakingDelegateBuilder.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/stakingDelegateBuilder.js +224 -0
- package/dist/test/unit/transactionBuilder/stakingRawMsgAuthorizeBuilder.d.ts +2 -0
- package/dist/test/unit/transactionBuilder/stakingRawMsgAuthorizeBuilder.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/stakingRawMsgAuthorizeBuilder.js +259 -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 +787 -0
- package/dist/test/unit/transactionBuilder/transactionBuilder.d.ts +2 -0
- package/dist/test/unit/transactionBuilder/transactionBuilder.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/transactionBuilder.js +495 -0
- package/dist/test/unit/transactionBuilder/transferBuilder.d.ts +2 -0
- package/dist/test/unit/transactionBuilder/transferBuilder.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/transferBuilder.js +286 -0
- package/dist/test/unit/transactionBuilder/transferBuilderV2.d.ts +2 -0
- package/dist/test/unit/transactionBuilder/transferBuilderV2.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/transferBuilderV2.js +862 -0
- package/dist/test/unit/transactionBuilder/walletInitBuilder.d.ts +2 -0
- package/dist/test/unit/transactionBuilder/walletInitBuilder.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/walletInitBuilder.js +259 -0
- package/dist/test/unit/utils.d.ts +2 -0
- package/dist/test/unit/utils.d.ts.map +1 -0
- package/dist/test/unit/utils.js +505 -0
- package/dist/test/unit/versionedTransaction.d.ts +2 -0
- package/dist/test/unit/versionedTransaction.d.ts.map +1 -0
- package/dist/test/unit/versionedTransaction.js +207 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/package.json +14 -9
- package/.eslintignore +0 -5
- package/.mocharc.yml +0 -8
- package/CHANGELOG.md +0 -1223
|
@@ -0,0 +1,224 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
+
};
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
const should_1 = __importDefault(require("should"));
|
|
40
|
+
const getBuilderFactory_1 = require("../getBuilderFactory");
|
|
41
|
+
const src_1 = require("../../../src");
|
|
42
|
+
const testData = __importStar(require("../../resources/sol"));
|
|
43
|
+
const sdk_core_1 = require("@bitgo-beta/sdk-core");
|
|
44
|
+
const bs58 = __importStar(require("bs58"));
|
|
45
|
+
describe('Sol Staking Delegate Builder', () => {
|
|
46
|
+
const factory = (0, getBuilderFactory_1.getBuilderFactory)('tsol');
|
|
47
|
+
const walletKeyPair = new src_1.KeyPair(testData.authAccount);
|
|
48
|
+
const wallet = walletKeyPair.getKeys();
|
|
49
|
+
const stakeAccount = new src_1.KeyPair(testData.stakeAccount).getKeys();
|
|
50
|
+
const splitAccount = new src_1.KeyPair(testData.splitStakeAccount).getKeys();
|
|
51
|
+
const recentBlockHash = 'GHtXQBsoZHVnNFa9YevAzFr17DJjgHXk3ycTKD5xD3Zi';
|
|
52
|
+
const invalidPubKey = testData.pubKeys.invalidPubKeys[0];
|
|
53
|
+
const validator = testData.validator;
|
|
54
|
+
describe('Should succeed', () => {
|
|
55
|
+
it('building a staking delegate tx', async () => {
|
|
56
|
+
const txBuilder = factory.getStakingDelegateBuilder();
|
|
57
|
+
txBuilder.sender(wallet.pub).stakingAddress(stakeAccount.pub).nonce(recentBlockHash).validator(validator.pub);
|
|
58
|
+
const txUnsigned = await txBuilder.build();
|
|
59
|
+
txBuilder.sign({ key: wallet.prv });
|
|
60
|
+
const tx = await txBuilder.build();
|
|
61
|
+
const txJson = tx.toJson();
|
|
62
|
+
const rawTx = tx.toBroadcastFormat();
|
|
63
|
+
should_1.default.equal(src_1.Utils.isValidRawTransaction(rawTx), true);
|
|
64
|
+
txJson.instructionsData.should.deepEqual([
|
|
65
|
+
{
|
|
66
|
+
type: 'Delegate',
|
|
67
|
+
params: {
|
|
68
|
+
fromAddress: wallet.pub,
|
|
69
|
+
stakingAddress: stakeAccount.pub,
|
|
70
|
+
validator: validator.pub,
|
|
71
|
+
},
|
|
72
|
+
},
|
|
73
|
+
]);
|
|
74
|
+
should_1.default.equal(rawTx, testData.STAKING_DELEGATE_SIGNED_TX);
|
|
75
|
+
const tx2 = await factory.from(txUnsigned.toBroadcastFormat()).build();
|
|
76
|
+
const signed = tx.signature[0];
|
|
77
|
+
should_1.default.equal(tx2.toBroadcastFormat(), txUnsigned.toBroadcastFormat());
|
|
78
|
+
should_1.default.equal(tx2.signablePayload.toString('hex'), txUnsigned.signablePayload.toString('hex'));
|
|
79
|
+
const txBuilder2 = factory.getStakingDelegateBuilder();
|
|
80
|
+
txBuilder2.sender(wallet.pub).stakingAddress(stakeAccount.pub).nonce(recentBlockHash).validator(validator.pub);
|
|
81
|
+
await txBuilder2.addSignature({ pub: wallet.pub }, Buffer.from(bs58.decode(signed)));
|
|
82
|
+
const signedTx = await txBuilder2.build();
|
|
83
|
+
should_1.default.equal(signedTx.type, sdk_core_1.TransactionType.StakingDelegate);
|
|
84
|
+
const rawSignedTx = signedTx.toBroadcastFormat();
|
|
85
|
+
should_1.default.equal(rawSignedTx, testData.STAKING_DELEGATE_SIGNED_TX);
|
|
86
|
+
});
|
|
87
|
+
it('building a staking multi delegate tx', async () => {
|
|
88
|
+
const txBuilder = factory.getStakingDelegateBuilder();
|
|
89
|
+
txBuilder
|
|
90
|
+
.sender(wallet.pub)
|
|
91
|
+
.stakingAddresses([stakeAccount.pub, splitAccount.pub])
|
|
92
|
+
.nonce(recentBlockHash)
|
|
93
|
+
.validator(validator.pub);
|
|
94
|
+
const txUnsigned = await txBuilder.build();
|
|
95
|
+
txBuilder.sign({ key: wallet.prv });
|
|
96
|
+
const tx = await txBuilder.build();
|
|
97
|
+
const txJson = tx.toJson();
|
|
98
|
+
const rawTx = tx.toBroadcastFormat();
|
|
99
|
+
should_1.default.equal(src_1.Utils.isValidRawTransaction(rawTx), true);
|
|
100
|
+
txJson.instructionsData.should.deepEqual([
|
|
101
|
+
{
|
|
102
|
+
type: 'Delegate',
|
|
103
|
+
params: {
|
|
104
|
+
fromAddress: wallet.pub,
|
|
105
|
+
stakingAddress: stakeAccount.pub,
|
|
106
|
+
validator: validator.pub,
|
|
107
|
+
},
|
|
108
|
+
},
|
|
109
|
+
{
|
|
110
|
+
type: 'Delegate',
|
|
111
|
+
params: {
|
|
112
|
+
fromAddress: wallet.pub,
|
|
113
|
+
stakingAddress: splitAccount.pub,
|
|
114
|
+
validator: validator.pub,
|
|
115
|
+
},
|
|
116
|
+
},
|
|
117
|
+
]);
|
|
118
|
+
should_1.default.equal(rawTx, testData.STAKING_MULTI_DELEGATE_SIGNED_TX);
|
|
119
|
+
should_1.default.equal(src_1.Utils.isValidRawTransaction(rawTx), true);
|
|
120
|
+
const tx2 = await factory.from(txUnsigned.toBroadcastFormat()).build();
|
|
121
|
+
const signed = tx.signature[0];
|
|
122
|
+
should_1.default.equal(tx2.toBroadcastFormat(), txUnsigned.toBroadcastFormat());
|
|
123
|
+
should_1.default.equal(tx2.signablePayload.toString('hex'), txUnsigned.signablePayload.toString('hex'));
|
|
124
|
+
const txBuilder2 = factory.getStakingDelegateBuilder();
|
|
125
|
+
txBuilder2
|
|
126
|
+
.sender(wallet.pub)
|
|
127
|
+
.stakingAddresses([stakeAccount.pub, splitAccount.pub])
|
|
128
|
+
.nonce(recentBlockHash)
|
|
129
|
+
.validator(validator.pub);
|
|
130
|
+
await txBuilder2.addSignature({ pub: wallet.pub }, Buffer.from(bs58.decode(signed)));
|
|
131
|
+
const signedTx = await txBuilder2.build();
|
|
132
|
+
should_1.default.equal(signedTx.type, sdk_core_1.TransactionType.StakingDelegate);
|
|
133
|
+
const rawSignedTx = signedTx.toBroadcastFormat();
|
|
134
|
+
should_1.default.equal(rawSignedTx, testData.STAKING_MULTI_DELEGATE_SIGNED_TX);
|
|
135
|
+
});
|
|
136
|
+
it('building a staking multi single delegate tx', async () => {
|
|
137
|
+
const txBuilder = factory.getStakingDelegateBuilder();
|
|
138
|
+
txBuilder.sender(wallet.pub).stakingAddresses([stakeAccount.pub]).nonce(recentBlockHash).validator(validator.pub);
|
|
139
|
+
const txUnsigned = await txBuilder.build();
|
|
140
|
+
txBuilder.sign({ key: wallet.prv });
|
|
141
|
+
const tx = await txBuilder.build();
|
|
142
|
+
const txJson = tx.toJson();
|
|
143
|
+
const rawTx = tx.toBroadcastFormat();
|
|
144
|
+
should_1.default.equal(src_1.Utils.isValidRawTransaction(rawTx), true);
|
|
145
|
+
txJson.instructionsData.should.deepEqual([
|
|
146
|
+
{
|
|
147
|
+
type: 'Delegate',
|
|
148
|
+
params: {
|
|
149
|
+
fromAddress: wallet.pub,
|
|
150
|
+
stakingAddress: stakeAccount.pub,
|
|
151
|
+
validator: validator.pub,
|
|
152
|
+
},
|
|
153
|
+
},
|
|
154
|
+
]);
|
|
155
|
+
should_1.default.equal(rawTx, testData.STAKING_MULTI_DEACTIVATE_UNSIGNED_TX_single);
|
|
156
|
+
should_1.default.equal(src_1.Utils.isValidRawTransaction(rawTx), true);
|
|
157
|
+
const tx2 = await factory.from(txUnsigned.toBroadcastFormat()).build();
|
|
158
|
+
const signed = tx.signature[0];
|
|
159
|
+
should_1.default.equal(tx2.toBroadcastFormat(), txUnsigned.toBroadcastFormat());
|
|
160
|
+
should_1.default.equal(tx2.signablePayload.toString('hex'), txUnsigned.signablePayload.toString('hex'));
|
|
161
|
+
const txBuilder2 = factory.getStakingDelegateBuilder();
|
|
162
|
+
txBuilder2
|
|
163
|
+
.sender(wallet.pub)
|
|
164
|
+
.stakingAddresses([stakeAccount.pub])
|
|
165
|
+
.nonce(recentBlockHash)
|
|
166
|
+
.validator(validator.pub);
|
|
167
|
+
await txBuilder2.addSignature({ pub: wallet.pub }, Buffer.from(bs58.decode(signed)));
|
|
168
|
+
const signedTx = await txBuilder2.build();
|
|
169
|
+
should_1.default.equal(signedTx.type, sdk_core_1.TransactionType.StakingDelegate);
|
|
170
|
+
const rawSignedTx = signedTx.toBroadcastFormat();
|
|
171
|
+
should_1.default.equal(rawSignedTx, testData.STAKING_MULTI_DEACTIVATE_UNSIGNED_TX_single);
|
|
172
|
+
});
|
|
173
|
+
});
|
|
174
|
+
describe('Should fail', () => {
|
|
175
|
+
describe('delegate single', () => {
|
|
176
|
+
it('building a staking delegate tx without validator address', async () => {
|
|
177
|
+
const txBuilder = factory.getStakingDelegateBuilder();
|
|
178
|
+
txBuilder.sender(wallet.pub).nonce(recentBlockHash);
|
|
179
|
+
txBuilder.sign({ key: wallet.prv });
|
|
180
|
+
await txBuilder.build().should.be.rejectedWith('Validator must be set before building the transaction');
|
|
181
|
+
});
|
|
182
|
+
it('building a staking delegate tx without staking address', async () => {
|
|
183
|
+
const txBuilder = factory.getStakingDelegateBuilder();
|
|
184
|
+
txBuilder.sender(wallet.pub).nonce(recentBlockHash).validator(validator.pub);
|
|
185
|
+
txBuilder.sign({ key: wallet.prv });
|
|
186
|
+
await txBuilder.build().should.be.rejectedWith('Staking Address must be set before building the transaction');
|
|
187
|
+
});
|
|
188
|
+
it('building a staking delegate tx staking address', async () => {
|
|
189
|
+
const txBuilder = factory.getStakingDelegateBuilder();
|
|
190
|
+
txBuilder.sender(wallet.pub).nonce(recentBlockHash).validator(validator.pub).stakingAddress(wallet.pub);
|
|
191
|
+
txBuilder.sign({ key: wallet.prv });
|
|
192
|
+
await txBuilder.build().should.be.rejectedWith('Sender address cannot be the same as the Staking address');
|
|
193
|
+
});
|
|
194
|
+
it('building a staking delegate tx with a wrong staking address', async () => {
|
|
195
|
+
const txBuilder = factory.getStakingDelegateBuilder();
|
|
196
|
+
txBuilder.sender(wallet.pub).nonce(recentBlockHash);
|
|
197
|
+
(0, should_1.default)(() => txBuilder.stakingAddress(invalidPubKey)).throwError(`Invalid or missing stakingAddress, got: ${invalidPubKey}`);
|
|
198
|
+
});
|
|
199
|
+
});
|
|
200
|
+
describe('delegate multi', () => {
|
|
201
|
+
it('building a staking delegate tx with empty list', async () => {
|
|
202
|
+
const txBuilder = factory.getStakingDelegateBuilder();
|
|
203
|
+
txBuilder.sender(wallet.pub).nonce(recentBlockHash).validator(validator.pub);
|
|
204
|
+
(0, should_1.default)(() => txBuilder.stakingAddresses([])).throwError(`stakingAddresses must not be empty`);
|
|
205
|
+
});
|
|
206
|
+
it('building a staking delegate tx staking addresses cannot be same as wallet address', async () => {
|
|
207
|
+
const txBuilder = factory.getStakingDelegateBuilder();
|
|
208
|
+
txBuilder
|
|
209
|
+
.sender(wallet.pub)
|
|
210
|
+
.nonce(recentBlockHash)
|
|
211
|
+
.validator(validator.pub)
|
|
212
|
+
.stakingAddresses([splitAccount.pub, wallet.pub]);
|
|
213
|
+
txBuilder.sign({ key: wallet.prv });
|
|
214
|
+
await txBuilder.build().should.be.rejectedWith('Sender address cannot be the same as the Staking address');
|
|
215
|
+
});
|
|
216
|
+
it('building a staking delegate tx with a wrong staking address', async () => {
|
|
217
|
+
const txBuilder = factory.getStakingDelegateBuilder();
|
|
218
|
+
txBuilder.sender(wallet.pub).nonce(recentBlockHash);
|
|
219
|
+
(0, should_1.default)(() => txBuilder.stakingAddresses([invalidPubKey])).throwError(`Invalid or missing stakingAddress, got: ${invalidPubKey}`);
|
|
220
|
+
});
|
|
221
|
+
});
|
|
222
|
+
});
|
|
223
|
+
});
|
|
224
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3Rha2luZ0RlbGVnYXRlQnVpbGRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Rlc3QvdW5pdC90cmFuc2FjdGlvbkJ1aWxkZXIvc3Rha2luZ0RlbGVnYXRlQnVpbGRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLG9EQUE0QjtBQUU1Qiw0REFBeUQ7QUFDekQsc0NBQThDO0FBQzlDLDhEQUFnRDtBQUNoRCxtREFBdUQ7QUFDdkQsMkNBQTZCO0FBRTdCLFFBQVEsQ0FBQyw4QkFBOEIsRUFBRSxHQUFHLEVBQUU7SUFDNUMsTUFBTSxPQUFPLEdBQUcsSUFBQSxxQ0FBaUIsRUFBQyxNQUFNLENBQUMsQ0FBQztJQUUxQyxNQUFNLGFBQWEsR0FBRyxJQUFJLGFBQU8sQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDeEQsTUFBTSxNQUFNLEdBQUcsYUFBYSxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ3ZDLE1BQU0sWUFBWSxHQUFHLElBQUksYUFBTyxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUNsRSxNQUFNLFlBQVksR0FBRyxJQUFJLGFBQU8sQ0FBQyxRQUFRLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUN2RSxNQUFNLGVBQWUsR0FBRyw4Q0FBOEMsQ0FBQztJQUN2RSxNQUFNLGFBQWEsR0FBRyxRQUFRLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN6RCxNQUFNLFNBQVMsR0FBRyxRQUFRLENBQUMsU0FBUyxDQUFDO0lBRXJDLFFBQVEsQ0FBQyxnQkFBZ0IsRUFBRSxHQUFHLEVBQUU7UUFDOUIsRUFBRSxDQUFDLGdDQUFnQyxFQUFFLEtBQUssSUFBSSxFQUFFO1lBQzlDLE1BQU0sU0FBUyxHQUFHLE9BQU8sQ0FBQyx5QkFBeUIsRUFBRSxD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QUFDLENBQUM7WUFDN0csQ0FBQyxDQUFDLENBQUM7WUFFSCxFQUFFLENBQUMsNkRBQTZELEVBQUUsS0FBSyxJQUFJLEVBQUU7Z0JBQzNFLE1BQU0sU0FBUyxHQUFHLE9BQU8sQ0FBQyx5QkFBeUIsRUFBRSxDQUFDO2dCQUN0RCxTQUFTLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsZUFBZSxDQUFDLENBQUM7Z0JBQ3BELElBQUEsZ0JBQU0sRUFBQyxHQUFHLEVBQUUsQ0FBQyxTQUFTLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUNsRSwyQ0FBMkMsYUFBYSxFQUFFLENBQzNELENBQUM7WUFDSixDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBzaG91bGQgZnJvbSAnc2hvdWxkJztcblxuaW1wb3J0IHsgZ2V0QnVpbGRlckZhY3RvcnkgfSBmcm9tICcuLi9nZXRCdWlsZGVyRmFjdG9yeSc7XG5pbXBvcnQgeyBLZXlQYWlyLCBVdGlscyB9IGZyb20gJy4uLy4uLy4uL3NyYyc7XG5pbXBvcnQgKiBhcyB0ZXN0RGF0YSBmcm9tICcuLi8uLi9yZXNvdXJjZXMvc29sJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uVHlwZSB9IGZyb20gJ0BiaXRnby1iZXRhL3Nkay1jb3JlJztcbmltcG9ydCAqIGFzIGJzNTggZnJvbSAnYnM1OCc7XG5cbmRlc2NyaWJlKCdTb2wgU3Rha2luZyBEZWxlZ2F0ZSBCdWlsZGVyJywgKCkgPT4ge1xuICBjb25zdCBmYWN0b3J5ID0gZ2V0QnVpbGRlckZhY3RvcnkoJ3Rzb2wnKTtcblxuICBjb25zdCB3YWxsZXRLZXlQYWlyID0gbmV3IEtleVBhaXIodGVzdERhdGEuYXV0aEFjY291bnQpO1xuICBjb25zdCB3YWxsZXQgPSB3YWxsZXRLZXlQYWlyLmdldEtleXMoKTtcbiAgY29uc3Qgc3Rha2VBY2NvdW50ID0gbmV3IEtleVBhaXIodGVzdERhdGEuc3Rha2VBY2NvdW50KS5nZXRLZXlzKCk7XG4gIGNvbnN0IHNwbGl0QWNjb3VudCA9IG5ldyBLZXlQYWlyKHRlc3REYXRhLnNwbGl0U3Rha2VBY2NvdW50KS5nZXRLZXlzKCk7XG4gIGNvbnN0IHJlY2VudEJsb2NrSGFzaCA9ICdHSHRYUUJzb1pIVm5ORmE5WWV2QXpGcjE3REpqZ0hYazN5Y1RLRDV4RDNaaSc7XG4gIGNvbnN0IGludmFsaWRQdWJLZXkgPSB0ZXN0RGF0YS5wdWJLZXlzLmludmFsaWRQdWJLZXlzWzBdO1xuICBjb25zdCB2YWxpZGF0b3IgPSB0ZXN0RGF0YS52YWxpZGF0b3I7XG5cbiAgZGVzY3JpYmUoJ1Nob3VsZCBzdWNjZWVkJywgKCkgPT4ge1xuICAgIGl0KCdidWlsZGluZyBhIHN0YWtpbmcgZGVsZWdhdGUgdHgnLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCB0eEJ1aWxkZXIgPSBmYWN0b3J5LmdldFN0YWtpbmdEZWxlZ2F0ZUJ1aWxkZXIoKTtcbiAgICAgIHR4QnVpbGRlci5zZW5kZXIod2FsbGV0LnB1Yikuc3Rha2luZ0FkZHJlc3Moc3Rha2VBY2NvdW50LnB1Yikubm9uY2UocmVjZW50QmxvY2tIYXNoKS52YWxpZGF0b3IodmFsaWRhdG9yLnB1Yik7XG4gICAgICBjb25zdCB0eFVuc2lnbmVkID0gYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCk7XG4gICAgICB0eEJ1aWxkZXIuc2lnbih7IGtleTogd2FsbGV0LnBydiB9KTtcbiAgICAgIGNvbnN0IHR4ID0gYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCk7XG4gICAgICBjb25zdCB0eEpzb24gPSB0eC50b0pzb24oKTtcbiAgICAgIGNvbnN0IHJhd1R4ID0gdHgudG9Ccm9hZGNhc3RGb3JtYXQoKTtcbiAgICAgIHNob3VsZC5lcXVhbChVdGlscy5pc1ZhbGlkUmF3VHJhbnNhY3Rpb24ocmF3VHgpLCB0cnVlKTtcbiAgICAgIHR4SnNvbi5pbnN0cnVjdGlvbnNEYXRhLnNob3VsZC5kZWVwRXF1YWwoW1xuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogJ0RlbGVnYXRlJyxcbiAgICAgICAgICBwYXJhbXM6IHtcbiAgICAgICAgICAgIGZyb21BZGRyZXNzOiB3YWxsZXQucHViLFxuICAgICAgICAgICAgc3Rha2luZ0FkZHJlc3M6IHN0YWtlQWNjb3VudC5wdWIsXG4gICAgICAgICAgICB2YWxpZGF0b3I6IHZhbGlkYXRvci5wdWIsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIF0pO1xuICAgICAgc2hvdWxkLmVxdWFsKHJhd1R4LCB0ZXN0RGF0YS5TVEFLSU5HX0RFTEVHQVRFX1NJR05FRF9UWCk7XG5cbiAgICAgIGNvbnN0IHR4MiA9IGF3YWl0IGZhY3RvcnkuZnJvbSh0eFVuc2lnbmVkLnRvQnJvYWRjYXN0Rm9ybWF0KCkpLmJ1aWxkKCk7XG4gICAgICBjb25zdCBzaWduZWQgPSB0eC5zaWduYXR1cmVbMF07XG5cbiAgICAgIHNob3VsZC5lcXVhbCh0eDIudG9Ccm9hZGNhc3RGb3JtYXQoKSwgdHhVbnNpZ25lZC50b0Jyb2FkY2FzdEZvcm1hdCgpKTtcbiAgICAgIHNob3VsZC5lcXVhbCh0eDIuc2lnbmFibGVQYXlsb2FkLnRvU3RyaW5nKCdoZXgnKSwgdHhVbnNpZ25lZC5zaWduYWJsZVBheWxvYWQudG9TdHJpbmcoJ2hleCcpKTtcblxuICAgICAgY29uc3QgdHhCdWlsZGVyMiA9IGZhY3RvcnkuZ2V0U3Rha2luZ0RlbGVnYXRlQnVpbGRlcigpO1xuICAgICAgdHhCdWlsZGVyMi5zZW5kZXIod2FsbGV0LnB1Yikuc3Rha2luZ0FkZHJlc3Moc3Rha2VBY2NvdW50LnB1Yikubm9uY2UocmVjZW50QmxvY2tIYXNoKS52YWxpZGF0b3IodmFsaWRhdG9yLnB1Yik7XG4gICAgICBhd2FpdCB0eEJ1aWxkZXIyLmFkZFNpZ25hdHVyZSh7IHB1Yjogd2FsbGV0LnB1YiB9LCBCdWZmZXIuZnJvbShiczU4LmRlY29kZShzaWduZWQpKSk7XG4gICAgICBjb25zdCBzaWduZWRUeCA9IGF3YWl0IHR4QnVpbGRlcjIuYnVpbGQoKTtcbiAgICAgIHNob3VsZC5lcXVhbChzaWduZWRUeC50eXBlLCBUcmFuc2FjdGlvblR5cGUuU3Rha2luZ0RlbGVnYXRlKTtcblxuICAgICAgY29uc3QgcmF3U2lnbmVkVHggPSBzaWduZWRUeC50b0Jyb2FkY2FzdEZvcm1hdCgpO1xuICAgICAgc2hvdWxkLmVxdWFsKHJhd1NpZ25lZFR4LCB0ZXN0RGF0YS5TVEFLSU5HX0RFTEVHQVRFX1NJR05FRF9UWCk7XG4gICAgfSk7XG5cbiAgICBpdCgnYnVpbGRpbmcgYSBzdGFraW5nIG11bHRpIGRlbGVnYXRlIHR4JywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgdHhCdWlsZGVyID0gZmFjdG9yeS5nZXRTdGFraW5nRGVsZWdhdGVCdWlsZGVyKCk7XG4gICAgICB0eEJ1aWxkZXJcbiAgICAgICAgLnNlbmRlcih3YWxsZXQucHViKVxuICAgICAgICAuc3Rha2luZ0FkZHJlc3Nlcyhbc3Rha2VBY2NvdW50LnB1Yiwgc3BsaXRBY2NvdW50LnB1Yl0pXG4gICAgICAgIC5ub25jZShyZWNlbnRCbG9ja0hhc2gpXG4gICAgICAgIC52YWxpZGF0b3IodmFsaWRhdG9yLnB1Yik7XG4gICAgICBjb25zdCB0eFVuc2lnbmVkID0gYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCk7XG4gICAgICB0eEJ1aWxkZXIuc2lnbih7IGtleTogd2FsbGV0LnBydiB9KTtcbiAgICAgIGNvbnN0IHR4ID0gYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCk7XG4gICAgICBjb25zdCB0eEpzb24gPSB0eC50b0pzb24oKTtcbiAgICAgIGNvbnN0IHJhd1R4ID0gdHgudG9Ccm9hZGNhc3RGb3JtYXQoKTtcbiAgICAgIHNob3VsZC5lcXVhbChVdGlscy5pc1ZhbGlkUmF3VHJhbnNhY3Rpb24ocmF3VHgpLCB0cnVlKTtcbiAgICAgIHR4SnNvbi5pbnN0cnVjdGlvbnNEYXRhLnNob3VsZC5kZWVwRXF1YWwoW1xuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogJ0RlbGVnYXRlJyxcbiAgICAgICAgICBwYXJhbXM6IHtcbiAgICAgICAgICAgIGZyb21BZGRyZXNzOiB3YWxsZXQucHViLFxuICAgICAgICAgICAgc3Rha2luZ0FkZHJlc3M6IHN0YWtlQWNjb3VudC5wdWIsXG4gICAgICAgICAgICB2YWxpZGF0b3I6IHZhbGlkYXRvci5wdWIsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6ICdEZWxlZ2F0ZScsXG4gICAgICAgICAgcGFyYW1zOiB7XG4gICAgICAgICAgICBmcm9tQWRkcmVzczogd2FsbGV0LnB1YixcbiAgICAgICAgICAgIHN0YWtpbmdBZGRyZXNzOiBzcGxpdEFjY291bnQucHViLFxuICAgICAgICAgICAgdmFsaWRhdG9yOiB2YWxpZGF0b3IucHViLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICBdKTtcbiAgICAgIHNob3VsZC5lcXVhbChyYXdUeCwgdGVzdERhdGEuU1RBS0lOR19NVUxUSV9ERUxFR0FURV9TSUdORURfVFgpO1xuICAgICAgc2hvdWxkLmVxdWFsKFV0aWxzLmlzVmFsaWRSYXdUcmFuc2FjdGlvbihyYXdUeCksIHRydWUpO1xuXG4gICAgICBjb25zdCB0eDIgPSBhd2FpdCBmYWN0b3J5LmZyb20odHhVbnNpZ25lZC50b0Jyb2FkY2FzdEZvcm1hdCgpKS5idWlsZCgpO1xuICAgICAgY29uc3Qgc2lnbmVkID0gdHguc2lnbmF0dXJlWzBdO1xuICAgICAgc2hvdWxkLmVxdWFsKHR4Mi50b0Jyb2FkY2FzdEZvcm1hdCgpLCB0eFVuc2lnbmVkLnRvQnJvYWRjYXN0Rm9ybWF0KCkpO1xuICAgICAgc2hvdWxkLmVxdWFsKHR4Mi5zaWduYWJsZVBheWxvYWQudG9TdHJpbmcoJ2hleCcpLCB0eFVuc2lnbmVkLnNpZ25hYmxlUGF5bG9hZC50b1N0cmluZygnaGV4JykpO1xuXG4gICAgICBjb25zdCB0eEJ1aWxkZXIyID0gZmFjdG9yeS5nZXRTdGFraW5nRGVsZWdhdGVCdWlsZGVyKCk7XG4gICAgICB0eEJ1aWxkZXIyXG4gICAgICAgIC5zZW5kZXIod2FsbGV0LnB1YilcbiAgICAgICAgLnN0YWtpbmdBZGRyZXNzZXMoW3N0YWtlQWNjb3VudC5wdWIsIHNwbGl0QWNjb3VudC5wdWJdKVxuICAgICAgICAubm9uY2UocmVjZW50QmxvY2tIYXNoKVxuICAgICAgICAudmFsaWRhdG9yKHZhbGlkYXRvci5wdWIpO1xuICAgICAgYXdhaXQgdHhCdWlsZGVyMi5hZGRTaWduYXR1cmUoeyBwdWI6IHdhbGxldC5wdWIgfSwgQnVmZmVyLmZyb20oYnM1OC5kZWNvZGUoc2lnbmVkKSkpO1xuICAgICAgY29uc3Qgc2lnbmVkVHggPSBhd2FpdCB0eEJ1aWxkZXIyLmJ1aWxkKCk7XG4gICAgICBzaG91bGQuZXF1YWwoc2lnbmVkVHgudHlwZSwgVHJhbnNhY3Rpb25UeXBlLlN0YWtpbmdEZWxlZ2F0ZSk7XG5cbiAgICAgIGNvbnN0IHJhd1NpZ25lZFR4ID0gc2lnbmVkVHgudG9Ccm9hZGNhc3RGb3JtYXQoKTtcbiAgICAgIHNob3VsZC5lcXVhbChyYXdTaWduZWRUeCwgdGVzdERhdGEuU1RBS0lOR19NVUxUSV9ERUxFR0FURV9TSUdORURfVFgpO1xuICAgIH0pO1xuXG4gICAgaXQoJ2J1aWxkaW5nIGEgc3Rha2luZyBtdWx0aSBzaW5nbGUgZGVsZWdhdGUgdHgnLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCB0eEJ1aWxkZXIgPSBmYWN0b3J5LmdldFN0YWtpbmdEZWxlZ2F0ZUJ1aWxkZXIoKTtcbiAgICAgIHR4QnVpbGRlci5zZW5kZXIod2FsbGV0LnB1Yikuc3Rha2luZ0FkZHJlc3Nlcyhbc3Rha2VBY2NvdW50LnB1Yl0pLm5vbmNlKHJlY2VudEJsb2NrSGFzaCkudmFsaWRhdG9yKHZhbGlkYXRvci5wdWIpO1xuICAgICAgY29uc3QgdHhVbnNpZ25lZCA9IGF3YWl0IHR4QnVpbGRlci5idWlsZCgpO1xuICAgICAgdHhCdWlsZGVyLnNpZ24oeyBrZXk6IHdhbGxldC5wcnYgfSk7XG4gICAgICBjb25zdCB0eCA9IGF3YWl0IHR4QnVpbGRlci5idWlsZCgpO1xuICAgICAgY29uc3QgdHhKc29uID0gdHgudG9Kc29uKCk7XG4gICAgICBjb25zdCByYXdUeCA9IHR4LnRvQnJvYWRjYXN0Rm9ybWF0KCk7XG4gICAgICBzaG91bGQuZXF1YWwoVXRpbHMuaXNWYWxpZFJhd1RyYW5zYWN0aW9uKHJhd1R4KSwgdHJ1ZSk7XG4gICAgICB0eEpzb24uaW5zdHJ1Y3Rpb25zRGF0YS5zaG91bGQuZGVlcEVxdWFsKFtcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6ICdEZWxlZ2F0ZScsXG4gICAgICAgICAgcGFyYW1zOiB7XG4gICAgICAgICAgICBmcm9tQWRkcmVzczogd2FsbGV0LnB1YixcbiAgICAgICAgICAgIHN0YWtpbmdBZGRyZXNzOiBzdGFrZUFjY291bnQucHViLFxuICAgICAgICAgICAgdmFsaWRhdG9yOiB2YWxpZGF0b3IucHViLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICBdKTtcbiAgICAgIHNob3VsZC5lcXVhbChyYXdUeCwgdGVzdERhdGEuU1RBS0lOR19NVUxUSV9ERUFDVElWQVRFX1VOU0lHTkVEX1RYX3NpbmdsZSk7XG4gICAgICBzaG91bGQuZXF1YWwoVXRpbHMuaXNWYWxpZFJhd1RyYW5zYWN0aW9uKHJhd1R4KSwgdHJ1ZSk7XG5cbiAgICAgIGNvbnN0IHR4MiA9IGF3YWl0IGZhY3RvcnkuZnJvbSh0eFVuc2lnbmVkLnRvQnJvYWRjYXN0Rm9ybWF0KCkpLmJ1aWxkKCk7XG4gICAgICBjb25zdCBzaWduZWQgPSB0eC5zaWduYXR1cmVbMF07XG4gICAgICBzaG91bGQuZXF1YWwodHgyLnRvQnJvYWRjYXN0Rm9ybWF0KCksIHR4VW5zaWduZWQudG9Ccm9hZGNhc3RGb3JtYXQoKSk7XG4gICAgICBzaG91bGQuZXF1YWwodHgyLnNpZ25hYmxlUGF5bG9hZC50b1N0cmluZygnaGV4JyksIHR4VW5zaWduZWQuc2lnbmFibGVQYXlsb2FkLnRvU3RyaW5nKCdoZXgnKSk7XG5cbiAgICAgIGNvbnN0IHR4QnVpbGRlcjIgPSBmYWN0b3J5LmdldFN0YWtpbmdEZWxlZ2F0ZUJ1aWxkZXIoKTtcbiAgICAgIHR4QnVpbGRlcjJcbiAgICAgICAgLnNlbmRlcih3YWxsZXQucHViKVxuICAgICAgICAuc3Rha2luZ0FkZHJlc3Nlcyhbc3Rha2VBY2NvdW50LnB1Yl0pXG4gICAgICAgIC5ub25jZShyZWNlbnRCbG9ja0hhc2gpXG4gICAgICAgIC52YWxpZGF0b3IodmFsaWRhdG9yLnB1Yik7XG4gICAgICBhd2FpdCB0eEJ1aWxkZXIyLmFkZFNpZ25hdHVyZSh7IHB1Yjogd2FsbGV0LnB1YiB9LCBCdWZmZXIuZnJvbShiczU4LmRlY29kZShzaWduZWQpKSk7XG4gICAgICBjb25zdCBzaWduZWRUeCA9IGF3YWl0IHR4QnVpbGRlcjIuYnVpbGQoKTtcbiAgICAgIHNob3VsZC5lcXVhbChzaWduZWRUeC50eXBlLCBUcmFuc2FjdGlvblR5cGUuU3Rha2luZ0RlbGVnYXRlKTtcblxuICAgICAgY29uc3QgcmF3U2lnbmVkVHggPSBzaWduZWRUeC50b0Jyb2FkY2FzdEZvcm1hdCgpO1xuICAgICAgc2hvdWxkLmVxdWFsKHJhd1NpZ25lZFR4LCB0ZXN0RGF0YS5TVEFLSU5HX01VTFRJX0RFQUNUSVZBVEVfVU5TSUdORURfVFhfc2luZ2xlKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ1Nob3VsZCBmYWlsJywgKCkgPT4ge1xuICAgIGRlc2NyaWJlKCdkZWxlZ2F0ZSBzaW5nbGUnLCAoKSA9PiB7XG4gICAgICBpdCgnYnVpbGRpbmcgYSBzdGFraW5nIGRlbGVnYXRlIHR4IHdpdGhvdXQgdmFsaWRhdG9yIGFkZHJlc3MnLCBhc3luYyAoKSA9PiB7XG4gICAgICAgIGNvbnN0IHR4QnVpbGRlciA9IGZhY3RvcnkuZ2V0U3Rha2luZ0RlbGVnYXRlQnVpbGRlcigpO1xuICAgICAgICB0eEJ1aWxkZXIuc2VuZGVyKHdhbGxldC5wdWIpLm5vbmNlKHJlY2VudEJsb2NrSGFzaCk7XG4gICAgICAgIHR4QnVpbGRlci5zaWduKHsga2V5OiB3YWxsZXQucHJ2IH0pO1xuICAgICAgICBhd2FpdCB0eEJ1aWxkZXIuYnVpbGQoKS5zaG91bGQuYmUucmVqZWN0ZWRXaXRoKCdWYWxpZGF0b3IgbXVzdCBiZSBzZXQgYmVmb3JlIGJ1aWxkaW5nIHRoZSB0cmFuc2FjdGlvbicpO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KCdidWlsZGluZyBhIHN0YWtpbmcgZGVsZWdhdGUgdHggd2l0aG91dCBzdGFraW5nIGFkZHJlc3MnLCBhc3luYyAoKSA9PiB7XG4gICAgICAgIGNvbnN0IHR4QnVpbGRlciA9IGZhY3RvcnkuZ2V0U3Rha2luZ0RlbGVnYXRlQnVpbGRlcigpO1xuICAgICAgICB0eEJ1aWxkZXIuc2VuZGVyKHdhbGxldC5wdWIpLm5vbmNlKHJlY2VudEJsb2NrSGFzaCkudmFsaWRhdG9yKHZhbGlkYXRvci5wdWIpO1xuICAgICAgICB0eEJ1aWxkZXIuc2lnbih7IGtleTogd2FsbGV0LnBydiB9KTtcbiAgICAgICAgYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCkuc2hvdWxkLmJlLnJlamVjdGVkV2l0aCgnU3Rha2luZyBBZGRyZXNzIG11c3QgYmUgc2V0IGJlZm9yZSBidWlsZGluZyB0aGUgdHJhbnNhY3Rpb24nKTtcbiAgICAgIH0pO1xuXG4gICAgICBpdCgnYnVpbGRpbmcgYSBzdGFraW5nIGRlbGVnYXRlIHR4IHN0YWtpbmcgYWRkcmVzcycsIGFzeW5jICgpID0+IHtcbiAgICAgICAgY29uc3QgdHhCdWlsZGVyID0gZmFjdG9yeS5nZXRTdGFraW5nRGVsZWdhdGVCdWlsZGVyKCk7XG4gICAgICAgIHR4QnVpbGRlci5zZW5kZXIod2FsbGV0LnB1Yikubm9uY2UocmVjZW50QmxvY2tIYXNoKS52YWxpZGF0b3IodmFsaWRhdG9yLnB1Yikuc3Rha2luZ0FkZHJlc3Mod2FsbGV0LnB1Yik7XG4gICAgICAgIHR4QnVpbGRlci5zaWduKHsga2V5OiB3YWxsZXQucHJ2IH0pO1xuICAgICAgICBhd2FpdCB0eEJ1aWxkZXIuYnVpbGQoKS5zaG91bGQuYmUucmVqZWN0ZWRXaXRoKCdTZW5kZXIgYWRkcmVzcyBjYW5ub3QgYmUgdGhlIHNhbWUgYXMgdGhlIFN0YWtpbmcgYWRkcmVzcycpO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KCdidWlsZGluZyBhIHN0YWtpbmcgZGVsZWdhdGUgdHggd2l0aCBhIHdyb25nIHN0YWtpbmcgYWRkcmVzcycsIGFzeW5jICgpID0+IHtcbiAgICAgICAgY29uc3QgdHhCdWlsZGVyID0gZmFjdG9yeS5nZXRTdGFraW5nRGVsZWdhdGVCdWlsZGVyKCk7XG4gICAgICAgIHR4QnVpbGRlci5zZW5kZXIod2FsbGV0LnB1Yikubm9uY2UocmVjZW50QmxvY2tIYXNoKTtcbiAgICAgICAgc2hvdWxkKCgpID0+IHR4QnVpbGRlci5zdGFraW5nQWRkcmVzcyhpbnZhbGlkUHViS2V5KSkudGhyb3dFcnJvcihcbiAgICAgICAgICBgSW52YWxpZCBvciBtaXNzaW5nIHN0YWtpbmdBZGRyZXNzLCBnb3Q6ICR7aW52YWxpZFB1YktleX1gXG4gICAgICAgICk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGRlc2NyaWJlKCdkZWxlZ2F0ZSBtdWx0aScsICgpID0+IHtcbiAgICAgIGl0KCdidWlsZGluZyBhIHN0YWtpbmcgZGVsZWdhdGUgdHggd2l0aCBlbXB0eSBsaXN0JywgYXN5bmMgKCkgPT4ge1xuICAgICAgICBjb25zdCB0eEJ1aWxkZXIgPSBmYWN0b3J5LmdldFN0YWtpbmdEZWxlZ2F0ZUJ1aWxkZXIoKTtcbiAgICAgICAgdHhCdWlsZGVyLnNlbmRlcih3YWxsZXQucHViKS5ub25jZShyZWNlbnRCbG9ja0hhc2gpLnZhbGlkYXRvcih2YWxpZGF0b3IucHViKTtcbiAgICAgICAgc2hvdWxkKCgpID0+IHR4QnVpbGRlci5zdGFraW5nQWRkcmVzc2VzKFtdKSkudGhyb3dFcnJvcihgc3Rha2luZ0FkZHJlc3NlcyBtdXN0IG5vdCBiZSBlbXB0eWApO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KCdidWlsZGluZyBhIHN0YWtpbmcgZGVsZWdhdGUgdHggc3Rha2luZyBhZGRyZXNzZXMgY2Fubm90IGJlIHNhbWUgYXMgd2FsbGV0IGFkZHJlc3MnLCBhc3luYyAoKSA9PiB7XG4gICAgICAgIGNvbnN0IHR4QnVpbGRlciA9IGZhY3RvcnkuZ2V0U3Rha2luZ0RlbGVnYXRlQnVpbGRlcigpO1xuICAgICAgICB0eEJ1aWxkZXJcbiAgICAgICAgICAuc2VuZGVyKHdhbGxldC5wdWIpXG4gICAgICAgICAgLm5vbmNlKHJlY2VudEJsb2NrSGFzaClcbiAgICAgICAgICAudmFsaWRhdG9yKHZhbGlkYXRvci5wdWIpXG4gICAgICAgICAgLnN0YWtpbmdBZGRyZXNzZXMoW3NwbGl0QWNjb3VudC5wdWIsIHdhbGxldC5wdWJdKTtcbiAgICAgICAgdHhCdWlsZGVyLnNpZ24oeyBrZXk6IHdhbGxldC5wcnYgfSk7XG4gICAgICAgIGF3YWl0IHR4QnVpbGRlci5idWlsZCgpLnNob3VsZC5iZS5yZWplY3RlZFdpdGgoJ1NlbmRlciBhZGRyZXNzIGNhbm5vdCBiZSB0aGUgc2FtZSBhcyB0aGUgU3Rha2luZyBhZGRyZXNzJyk7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ2J1aWxkaW5nIGEgc3Rha2luZyBkZWxlZ2F0ZSB0eCB3aXRoIGEgd3Jvbmcgc3Rha2luZyBhZGRyZXNzJywgYXN5bmMgKCkgPT4ge1xuICAgICAgICBjb25zdCB0eEJ1aWxkZXIgPSBmYWN0b3J5LmdldFN0YWtpbmdEZWxlZ2F0ZUJ1aWxkZXIoKTtcbiAgICAgICAgdHhCdWlsZGVyLnNlbmRlcih3YWxsZXQucHViKS5ub25jZShyZWNlbnRCbG9ja0hhc2gpO1xuICAgICAgICBzaG91bGQoKCkgPT4gdHhCdWlsZGVyLnN0YWtpbmdBZGRyZXNzZXMoW2ludmFsaWRQdWJLZXldKSkudGhyb3dFcnJvcihcbiAgICAgICAgICBgSW52YWxpZCBvciBtaXNzaW5nIHN0YWtpbmdBZGRyZXNzLCBnb3Q6ICR7aW52YWxpZFB1YktleX1gXG4gICAgICAgICk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG59KTtcbiJdfQ==
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stakingRawMsgAuthorizeBuilder.d.ts","sourceRoot":"","sources":["../../../../test/unit/transactionBuilder/stakingRawMsgAuthorizeBuilder.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,259 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
+
};
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
const should_1 = __importDefault(require("should"));
|
|
40
|
+
const testData = __importStar(require("../../resources/sol"));
|
|
41
|
+
const getBuilderFactory_1 = require("../getBuilderFactory");
|
|
42
|
+
const src_1 = require("../../../src");
|
|
43
|
+
describe('Sol Staking Raw Message Authorize Builder', () => {
|
|
44
|
+
const factory = (0, getBuilderFactory_1.getBuilderFactory)('tsol');
|
|
45
|
+
it('should build a create staking authorization unsigned tx', async () => {
|
|
46
|
+
const txBuilder = factory.getStakingRawMsgAuthorizeBuilder();
|
|
47
|
+
txBuilder.transactionMessage(testData.STAKING_AUTHORIZE_RAW_MSG);
|
|
48
|
+
const tx = await txBuilder.build();
|
|
49
|
+
tx.inputs.length.should.equal(0);
|
|
50
|
+
tx.outputs.length.should.equal(0);
|
|
51
|
+
const rawTx = tx.toBroadcastFormat();
|
|
52
|
+
should_1.default.equal(src_1.Utils.isValidRawTransaction(rawTx), true);
|
|
53
|
+
should_1.default.equal(rawTx, testData.STAKING_AUTHORIZE_RAW_MSG_TXN);
|
|
54
|
+
const explain = tx.explainTransaction();
|
|
55
|
+
should_1.default.equal(explain.type, 'StakingAuthorizeRaw');
|
|
56
|
+
should_1.default.equal(explain.blockhash, '35zHbmNtFNB9ADux97UbdY1bQSobfYR2SUmuCnqVfpUB');
|
|
57
|
+
should_1.default.deepEqual(explain.durableNonce, {
|
|
58
|
+
walletNonceAddress: 'J8cECxcT6Q6H4fcQCvd4LbhmmSjsHL63kpJtrUcrF74Q',
|
|
59
|
+
authWalletAddress: '5uUQw7ZtTRYduT6MrsPQeGKAavRek2VzxAqgUxQE2szv',
|
|
60
|
+
});
|
|
61
|
+
should_1.default.deepEqual(explain.stakingAuthorize, {
|
|
62
|
+
stakingAddress: 'J8cECxcT6Q6H4fcQCvd4LbhmmSjsHL63kpJtrUcrF74Q',
|
|
63
|
+
oldWithdrawAddress: '6xgesG4vajCYfAQpknodrarD49ZCnXGvYA4H1DLuGV7Y',
|
|
64
|
+
newWithdrawAddress: '4p1VdN6BngTAbWR7Q5JPpbB6dc4k4y8wn1knmmWEjc9i',
|
|
65
|
+
custodianAddress: 'DHCVjKy7kN6D6vM69nHcEeEeS685qtonFbiFNBW5bGiq',
|
|
66
|
+
});
|
|
67
|
+
});
|
|
68
|
+
it('should build a create staking authorization unsigned tx to change staking authority', async () => {
|
|
69
|
+
const txBuilder = factory.getStakingRawMsgAuthorizeBuilder();
|
|
70
|
+
txBuilder.transactionMessage(testData.STAKING_AUTHORIZE_RAW_MSG2);
|
|
71
|
+
const tx = await txBuilder.build();
|
|
72
|
+
tx.inputs.length.should.equal(0);
|
|
73
|
+
tx.outputs.length.should.equal(0);
|
|
74
|
+
const rawTx = tx.toBroadcastFormat();
|
|
75
|
+
should_1.default.equal(src_1.Utils.isValidRawTransaction(rawTx), true);
|
|
76
|
+
should_1.default.equal(rawTx, testData.STAKING_AUTHORIZE_RAW_MSG_TXN2);
|
|
77
|
+
const explain = tx.explainTransaction();
|
|
78
|
+
should_1.default.equal(explain.type, 'StakingAuthorizeRaw');
|
|
79
|
+
should_1.default.equal(explain.blockhash, '8RfZkx3guikmKR8Wi1ikx5m7SkmLyn12D3SkimK1f1SE');
|
|
80
|
+
should_1.default.deepEqual(explain.durableNonce, {
|
|
81
|
+
walletNonceAddress: 'Fb3xp4p3b3mu7gQNDDphMUuW9NHjUk7wAgtmFgZx4Ysf',
|
|
82
|
+
authWalletAddress: 'CGAEgUMaCW4T94RKKEQ4PnMDayWNYxB8vuLNA7TEC1th',
|
|
83
|
+
});
|
|
84
|
+
should_1.default.deepEqual(explain.stakingAuthorize, {
|
|
85
|
+
stakingAddress: '3Huxg6259FBzwaoBxAdGaEwjgSYgrrg5qd9kX6chsf4K',
|
|
86
|
+
oldWithdrawAddress: '',
|
|
87
|
+
newWithdrawAddress: '',
|
|
88
|
+
oldStakingAuthorityAddress: 'G62LeCBehaarj5iVh58s7QTC61upEJiJhuK3BCQ2GqW6',
|
|
89
|
+
newStakingAuthorityAddress: 'EEjayTmZjNyFmA44fbPxFxsW18Ku5SVj1g5VVCpefbVn',
|
|
90
|
+
});
|
|
91
|
+
});
|
|
92
|
+
it('should build the same signable from serialized', async () => {
|
|
93
|
+
const txBuilder = factory.getStakingRawMsgAuthorizeBuilder();
|
|
94
|
+
const txMessage = testData.STAKING_AUTHORIZE_RAW_MSG;
|
|
95
|
+
txBuilder.transactionMessage(txMessage);
|
|
96
|
+
const tx = await txBuilder.build();
|
|
97
|
+
tx.inputs.length.should.equal(0);
|
|
98
|
+
tx.outputs.length.should.equal(0);
|
|
99
|
+
const rawTx = tx.toBroadcastFormat();
|
|
100
|
+
const signable = tx.signablePayload;
|
|
101
|
+
const signableHex = signable.toString('base64');
|
|
102
|
+
should_1.default.equal(signableHex, txMessage);
|
|
103
|
+
should_1.default.equal(src_1.Utils.isValidRawTransaction(rawTx), true);
|
|
104
|
+
const unsignedTxHex = Buffer.from(rawTx, 'base64').toString('hex');
|
|
105
|
+
const txBuilder2 = factory.from(Buffer.from(unsignedTxHex, 'hex').toString('base64'));
|
|
106
|
+
const tx2 = await txBuilder2.build();
|
|
107
|
+
const signable2 = tx2.signablePayload;
|
|
108
|
+
should_1.default.equal(signable2.toString('base64'), txMessage);
|
|
109
|
+
});
|
|
110
|
+
it('should build the same signable from serialized for change staking authority', async () => {
|
|
111
|
+
const txBuilder = factory.getStakingRawMsgAuthorizeBuilder();
|
|
112
|
+
const txMessage = testData.STAKING_AUTHORIZE_RAW_MSG2;
|
|
113
|
+
txBuilder.transactionMessage(txMessage);
|
|
114
|
+
const tx = await txBuilder.build();
|
|
115
|
+
tx.inputs.length.should.equal(0);
|
|
116
|
+
tx.outputs.length.should.equal(0);
|
|
117
|
+
const rawTx = tx.toBroadcastFormat();
|
|
118
|
+
const signable = tx.signablePayload;
|
|
119
|
+
const signableHex = signable.toString('base64');
|
|
120
|
+
should_1.default.equal(signableHex, txMessage);
|
|
121
|
+
should_1.default.equal(src_1.Utils.isValidRawTransaction(rawTx), true);
|
|
122
|
+
const unsignedTxHex = Buffer.from(rawTx, 'base64').toString('hex');
|
|
123
|
+
const txBuilder2 = factory.from(Buffer.from(unsignedTxHex, 'hex').toString('base64'));
|
|
124
|
+
const tx2 = await txBuilder2.build();
|
|
125
|
+
const signable2 = tx2.signablePayload;
|
|
126
|
+
should_1.default.equal(signable2.toString('base64'), txMessage);
|
|
127
|
+
});
|
|
128
|
+
it('should build the same signable from serialized for change staking authority with only old staking authority', async () => {
|
|
129
|
+
const txBuilder = factory.getStakingRawMsgAuthorizeBuilder();
|
|
130
|
+
const txMessage = 'AwIECbZUs4LtRe9+UioPSy2m6K6F7iQd8/mBQo4UkcsRoWu7xKyh5llTYqoyu1i2FxsS0OLrLADlMByubjb3WCU27a3j0nRBRADfmtBBJQtQo/SchIvD5HD+7+z6yOE5VfQ2r8bppEBr0RwuVORQTtBPznEMy+u9+wstd8sIxiCk71VMyGLRKRwyNmh40eeGFTuqIhRwuGxh38mmSeTpsSEn+FsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAah2BeRN1QqmDQ3vf4qerJVf1NcinhyK2ikncAAAAAABqfVFxjHdMkoVmOYaR1etoteuKObS21cc1VbIQAAAAAGp9UXGSxWjuCKhF9z0peIzwNcMUWyGrNE2AYuqUAAAPjn5uoR7/6SxOU7WPigQNKFTZcdrQNRCAmkevrN7G+3AgUDAwgABAQAAAAGBAQHAQIICgAAAAAAAAA=';
|
|
131
|
+
txBuilder.transactionMessage(txMessage);
|
|
132
|
+
const tx = await txBuilder.build();
|
|
133
|
+
tx.inputs.length.should.equal(0);
|
|
134
|
+
tx.outputs.length.should.equal(0);
|
|
135
|
+
const rawTx = tx.toBroadcastFormat();
|
|
136
|
+
const signable = tx.signablePayload;
|
|
137
|
+
const signableHex = signable.toString('base64');
|
|
138
|
+
should_1.default.equal(signableHex, txMessage);
|
|
139
|
+
should_1.default.equal(src_1.Utils.isValidRawTransaction(rawTx), true);
|
|
140
|
+
const unsignedTxHex = Buffer.from(rawTx, 'base64').toString('hex');
|
|
141
|
+
const txBuilder2 = factory.from(Buffer.from(unsignedTxHex, 'hex').toString('base64'));
|
|
142
|
+
const tx2 = await txBuilder2.build();
|
|
143
|
+
const signable2 = tx2.signablePayload;
|
|
144
|
+
should_1.default.equal(signable2.toString('base64'), txMessage);
|
|
145
|
+
});
|
|
146
|
+
it('should build the same signable from serialized for change staking and withdraw authority with custodial authority', async () => {
|
|
147
|
+
const txBuilder = factory.getStakingRawMsgAuthorizeBuilder();
|
|
148
|
+
const txMessage = 'BAMECrZUs4LtRe9+UioPSy2m6K6F7iQd8/mBQo4UkcsRoWu7BUdHZ+Tx/Eaem+0Vb6TThw9npPPveW2WCR3KCfOulqPErKHmWVNiqjK7WLYXGxLQ4ussAOUwHK5uNvdYJTbtrePSdEFEAN+a0EElC1Cj9JyEi8PkcP7v7PrI4TlV9DavxumkQGvRHC5U5FBO0E/OcQzL6737Cy13ywjGIKTvVUzIYtEpHDI2aHjR54YVO6oiFHC4bGHfyaZJ5OmxISf4WwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABqHYF5E3VCqYNDe9/ip6slV/U1yKeHIraKSdwAAAAAAGp9UXGMd0yShWY5hpHV62i164o5tLbVxzVVshAAAAAAan1RcZLFaO4IqEX3PSl4jPA1wxRbIas0TYBi6pQAAA+Ofm6hHv/pLE5TtY+KBA0oVNlx2tA1EICaR6+s3sb7cDBgMECQAEBAAAAAcFBQgCAwEICgAAAAAAAAAHBQUIAgMBCAoAAAABAAAA';
|
|
149
|
+
txBuilder.transactionMessage(txMessage);
|
|
150
|
+
const tx = await txBuilder.build();
|
|
151
|
+
tx.inputs.length.should.equal(0);
|
|
152
|
+
tx.outputs.length.should.equal(0);
|
|
153
|
+
const rawTx = tx.toBroadcastFormat();
|
|
154
|
+
const signable = tx.signablePayload;
|
|
155
|
+
const signableHex = signable.toString('base64');
|
|
156
|
+
should_1.default.equal(signableHex, txMessage);
|
|
157
|
+
should_1.default.equal(src_1.Utils.isValidRawTransaction(rawTx), true);
|
|
158
|
+
const unsignedTxHex = Buffer.from(rawTx, 'base64').toString('hex');
|
|
159
|
+
const txBuilder2 = factory.from(Buffer.from(unsignedTxHex, 'hex').toString('base64'));
|
|
160
|
+
const tx2 = await txBuilder2.build();
|
|
161
|
+
const signable2 = tx2.signablePayload;
|
|
162
|
+
should_1.default.equal(signable2.toString('base64'), txMessage);
|
|
163
|
+
});
|
|
164
|
+
it('should build the same signable from serialized for change staking and withdraw authority without custodial authority', async () => {
|
|
165
|
+
const txBuilder = factory.getStakingRawMsgAuthorizeBuilder();
|
|
166
|
+
const txMessage = 'AwIECbZUs4LtRe9+UioPSy2m6K6F7iQd8/mBQo4UkcsRoWu7xKyh5llTYqoyu1i2FxsS0OLrLADlMByubjb3WCU27a3j0nRBRADfmtBBJQtQo/SchIvD5HD+7+z6yOE5VfQ2r8bppEBr0RwuVORQTtBPznEMy+u9+wstd8sIxiCk71VMyGLRKRwyNmh40eeGFTuqIhRwuGxh38mmSeTpsSEn+FsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAah2BeRN1QqmDQ3vf4qerJVf1NcinhyK2ikncAAAAAABqfVFxjHdMkoVmOYaR1etoteuKObS21cc1VbIQAAAAAGp9UXGSxWjuCKhF9z0peIzwNcMUWyGrNE2AYuqUAAAPjn5uoR7/6SxOU7WPigQNKFTZcdrQNRCAmkevrN7G+3AwUDAwgABAQAAAAGBAQHAQIICgAAAAAAAAAGBAQHAQIICgAAAAEAAAA=';
|
|
167
|
+
txBuilder.transactionMessage(txMessage);
|
|
168
|
+
const tx = await txBuilder.build();
|
|
169
|
+
tx.inputs.length.should.equal(0);
|
|
170
|
+
tx.outputs.length.should.equal(0);
|
|
171
|
+
const rawTx = tx.toBroadcastFormat();
|
|
172
|
+
const signable = tx.signablePayload;
|
|
173
|
+
const signableHex = signable.toString('base64');
|
|
174
|
+
should_1.default.equal(signableHex, txMessage);
|
|
175
|
+
should_1.default.equal(src_1.Utils.isValidRawTransaction(rawTx), true);
|
|
176
|
+
const unsignedTxHex = Buffer.from(rawTx, 'base64').toString('hex');
|
|
177
|
+
const txBuilder2 = factory.from(Buffer.from(unsignedTxHex, 'hex').toString('base64'));
|
|
178
|
+
const tx2 = await txBuilder2.build();
|
|
179
|
+
const signable2 = tx2.signablePayload;
|
|
180
|
+
should_1.default.equal(signable2.toString('base64'), txMessage);
|
|
181
|
+
});
|
|
182
|
+
it('should build from an unsigned transaction', async () => {
|
|
183
|
+
const txBuilder = factory.from(testData.STAKING_AUTHORIZE_RAW_MSG_TXN);
|
|
184
|
+
const tx = await txBuilder.build();
|
|
185
|
+
tx.inputs.length.should.equal(0);
|
|
186
|
+
tx.outputs.length.should.equal(0);
|
|
187
|
+
const rawTx = tx.toBroadcastFormat();
|
|
188
|
+
const signable = tx.signablePayload.toString('base64');
|
|
189
|
+
should_1.default.equal(signable, testData.STAKING_AUTHORIZE_RAW_MSG);
|
|
190
|
+
should_1.default.equal(src_1.Utils.isValidRawTransaction(rawTx), true);
|
|
191
|
+
should_1.default.equal(rawTx, testData.STAKING_AUTHORIZE_RAW_MSG_TXN);
|
|
192
|
+
});
|
|
193
|
+
it('should build from an unsigned transaction for nwe staking authority', async () => {
|
|
194
|
+
const txBuilder = factory.from(testData.STAKING_AUTHORIZE_RAW_MSG_TXN2);
|
|
195
|
+
const tx = await txBuilder.build();
|
|
196
|
+
tx.inputs.length.should.equal(0);
|
|
197
|
+
tx.outputs.length.should.equal(0);
|
|
198
|
+
const rawTx = tx.toBroadcastFormat();
|
|
199
|
+
const signable = tx.signablePayload.toString('base64');
|
|
200
|
+
should_1.default.equal(signable, testData.STAKING_AUTHORIZE_RAW_MSG2);
|
|
201
|
+
should_1.default.equal(src_1.Utils.isValidRawTransaction(rawTx), true);
|
|
202
|
+
should_1.default.equal(rawTx, testData.STAKING_AUTHORIZE_RAW_MSG_TXN2);
|
|
203
|
+
});
|
|
204
|
+
it('should explain a transaction', async () => {
|
|
205
|
+
const txBuilder = factory.from(testData.STAKING_AUTHORIZE_RAW_MSG_TXN);
|
|
206
|
+
const tx = await txBuilder.build();
|
|
207
|
+
const explain = tx.explainTransaction();
|
|
208
|
+
should_1.default.equal(explain.type, 'StakingAuthorizeRaw');
|
|
209
|
+
should_1.default.equal(explain.blockhash, '35zHbmNtFNB9ADux97UbdY1bQSobfYR2SUmuCnqVfpUB');
|
|
210
|
+
should_1.default.deepEqual(explain.durableNonce, {
|
|
211
|
+
walletNonceAddress: 'J8cECxcT6Q6H4fcQCvd4LbhmmSjsHL63kpJtrUcrF74Q',
|
|
212
|
+
authWalletAddress: '5uUQw7ZtTRYduT6MrsPQeGKAavRek2VzxAqgUxQE2szv',
|
|
213
|
+
});
|
|
214
|
+
should_1.default.deepEqual(explain.stakingAuthorize, {
|
|
215
|
+
stakingAddress: 'J8cECxcT6Q6H4fcQCvd4LbhmmSjsHL63kpJtrUcrF74Q',
|
|
216
|
+
oldWithdrawAddress: '6xgesG4vajCYfAQpknodrarD49ZCnXGvYA4H1DLuGV7Y',
|
|
217
|
+
newWithdrawAddress: '4p1VdN6BngTAbWR7Q5JPpbB6dc4k4y8wn1knmmWEjc9i',
|
|
218
|
+
custodianAddress: 'DHCVjKy7kN6D6vM69nHcEeEeS685qtonFbiFNBW5bGiq',
|
|
219
|
+
});
|
|
220
|
+
});
|
|
221
|
+
it('should generate json from transaction', async () => {
|
|
222
|
+
const txBuilder = factory.from(testData.STAKING_AUTHORIZE_RAW_MSG_TXN);
|
|
223
|
+
const tx = await txBuilder.build();
|
|
224
|
+
const txJson = tx.toJson();
|
|
225
|
+
should_1.default.deepEqual(txJson.durableNonce, {
|
|
226
|
+
walletNonceAddress: 'J8cECxcT6Q6H4fcQCvd4LbhmmSjsHL63kpJtrUcrF74Q',
|
|
227
|
+
authWalletAddress: '5uUQw7ZtTRYduT6MrsPQeGKAavRek2VzxAqgUxQE2szv',
|
|
228
|
+
});
|
|
229
|
+
should_1.default.equal(txJson.instructionsData.length, 2);
|
|
230
|
+
should_1.default.deepEqual(txJson.instructionsData[1].params, {
|
|
231
|
+
stakingAddress: 'J8cECxcT6Q6H4fcQCvd4LbhmmSjsHL63kpJtrUcrF74Q',
|
|
232
|
+
oldAuthorizeAddress: '6xgesG4vajCYfAQpknodrarD49ZCnXGvYA4H1DLuGV7Y',
|
|
233
|
+
newAuthorizeAddress: '4p1VdN6BngTAbWR7Q5JPpbB6dc4k4y8wn1knmmWEjc9i',
|
|
234
|
+
custodianAddress: 'DHCVjKy7kN6D6vM69nHcEeEeS685qtonFbiFNBW5bGiq',
|
|
235
|
+
});
|
|
236
|
+
});
|
|
237
|
+
it('should validate raw transaction', async () => {
|
|
238
|
+
const txBuilder = factory.getStakingRawMsgAuthorizeBuilder();
|
|
239
|
+
txBuilder.validateRawTransaction(testData.STAKING_AUTHORIZE_RAW_MSG_TXN);
|
|
240
|
+
(0, should_1.default)(() => txBuilder.validateRawTransaction(testData.STAKING_AUTHORIZE_UNSIGNED_TX)).throwError('Invalid staking instruction data: 0100000064c9ead9aa6b65445acf4fa526080bcf53baaad5e0bdb99578c9fc233f9c1df500000000');
|
|
241
|
+
should_1.default.throws(() => txBuilder.validateRawTransaction(testData.ATA_INIT_SIGNED_DIFF_OWNER_TX));
|
|
242
|
+
should_1.default.throws(() => txBuilder.validateRawTransaction(testData.TRANSFER_SIGNED_TX_WITH_MEMO_AND_DURABLE_NONCE));
|
|
243
|
+
should_1.default.throws(() => txBuilder.validateRawTransaction(testData.TRANSFER_UNSIGNED_TX_WITHOUT_MEMO));
|
|
244
|
+
});
|
|
245
|
+
it('should fail wrong transaction message data', async () => {
|
|
246
|
+
const txBuilder = factory.getStakingRawMsgAuthorizeBuilder();
|
|
247
|
+
should_1.default.throws(() => txBuilder.transactionMessage('wrong data'));
|
|
248
|
+
const txBuilder2 = factory.from(testData.TRANSFER_UNSIGNED_TX_WITH_MEMO);
|
|
249
|
+
const msg = (await txBuilder2.build()).signablePayload.toString('base64');
|
|
250
|
+
should_1.default.throws(() => txBuilder.transactionMessage(msg));
|
|
251
|
+
});
|
|
252
|
+
it('should fail from transaction data', async () => {
|
|
253
|
+
const txBuilder = factory.getStakingRawMsgAuthorizeBuilder();
|
|
254
|
+
should_1.default.throws(() => txBuilder.from(testData.ATA_INIT_SIGNED_DIFF_OWNER_TX));
|
|
255
|
+
should_1.default.throws(() => txBuilder.from(testData.TRANSFER_SIGNED_TX_WITH_MEMO_AND_DURABLE_NONCE));
|
|
256
|
+
should_1.default.throws(() => txBuilder.from(testData.TRANSFER_UNSIGNED_TX_WITHOUT_MEMO));
|
|
257
|
+
});
|
|
258
|
+
});
|
|
259
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3Rha2luZ1Jhd01zZ0F1dGhvcml6ZUJ1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi90ZXN0L3VuaXQvdHJhbnNhY3Rpb25CdWlsZGVyL3N0YWtpbmdSYXdNc2dBdXRob3JpemVCdWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsb0RBQTRCO0FBQzVCLDhEQUFnRDtBQUNoRCw0REFBeUQ7QUFDekQsc0NBQWtEO0FBRWxELFFBQVEsQ0FBQywyQ0FBMkMsRUFBRSxHQUFHLEVBQUU7SUFDekQsTUFBTSxPQUFPLEdBQUcsSUFBQSxxQ0FBaUIsRUFBQyxNQUFNLENBQUMsQ0FBQztJQUUxQyxFQUFFLENBQUMseURBQXlELEVBQUUsS0FBSyxJQUFJLEVBQUU7UUFDdkUsTUFBTSxTQUFTLEdBQUcsT0FBTyxDQUFDLGdDQUFnQyxFQUFFLENBQUM7UUFDN0QsU0FBUyxDQUFDLGtCQUFrQixDQUFDLFFBQVEsQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO1FBQ2pFLE1BQU0sRUFBRSxHQUFHLE1BQU0sU0FBUyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ25DLEVBQUUsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDakMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNsQyxNQUFNLEtBQUssR0FBRyxFQUFFLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztRQUNyQyxnQkFBTSxDQUFDLEtBQUssQ0FBQyxXQUFLLENBQUMscUJBQXFCLENBQUMsS0FBSyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDdkQsZ0JBQU0sQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDO1FBQzVELE1BQU0sT0FBTyxHQUFHLEVBQUUsQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBQ3hDLGdCQUFNLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUscUJBQXFCLENBQUMsQ0FBQztRQUNsRCxnQkFBTSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLDhDQUE4QyxDQUFDLENBQUM7UUFDaEYsZ0JBQU0sQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLFlBQVksRUFBRTtZQUNyQyxrQkFBa0IsRUFBRSw4Q0FBOEM7WUFDbEUsaUJBQWlCLEVBQUUsOENBQThDO1NBQ2xFLENBQUMsQ0FBQztRQUNILGdCQUFNLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsRUFBRTtZQUN6QyxjQUFjLEVBQUUsOENBQThDO1lBQzlELGtCQUFrQixFQUFFLDhDQUE4QztZQUNsRSxrQkFBa0IsRUFBRSw4Q0FBOEM7WUFDbEUsZ0JBQWdCLEVBQUUsOENBQThDO1NBQ2pFLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0lBRUgsRUFBRSxDQUFDLHFGQUFxRixFQUFFLEtBQUssSUFBSSxFQUFFO1FBQ25HLE1BQU0sU0FBUyxHQUFHLE9BQU8sQ0FBQyxnQ0FBZ0MsRUFBRSxDQUFDO1FBQzdELFNBQVMsQ0FBQyxrQkFBa0IsQ0FBQyxRQUFRLENBQUMsMEJBQTBCLENBQUMsQ0FBQztRQUNsRSxNQUFNLEVBQUUsR0FBRyxNQUFNLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNuQyxFQUFFLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2pDLEVBQUUsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDbEMsTUFBTSxLQUFLLEdBQUcsRUFBRSxDQUFDLGlCQUFpQixFQUFFLENBQUM7UUFDckMsZ0JBQU0sQ0FBQyxLQUFLLENBQUMsV0FBSyxDQUFDLHFCQUFxQixDQUFDLEtBQUssQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ3ZELGdCQUFNLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxRQUFRLENBQUMsOEJBQThCLENBQUMsQ0FBQztRQUM3RCxNQUFNLE9BQU8sR0FBRyxFQUFFLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztRQUN4QyxnQkFBTSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLHFCQUFxQixDQUFDLENBQUM7UUFDbEQsZ0JBQU0sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSw4Q0FBOEMsQ0FBQyxDQUFDO1FBQ2hGLGdCQUFNLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxZQUFZLEVBQUU7WUFDckMsa0JBQWtCLEVBQUUsOENBQThDO1lBQ2xFLGlCQUFpQixFQUFFLDhDQUE4QztTQUNsRSxDQUFDLENBQUM7UUFDSCxnQkFBTSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLEVBQUU7WUFDekMsY0FBYyxFQUFFLDhDQUE4QztZQUM5RCxrQkFBa0IsRUFBRSxFQUFFO1lBQ3RCLGtCQUFrQixFQUFFLEVBQUU7WUFDdEIsMEJBQTBCLEVBQUUsOENBQThDO1lBQzFFLDBCQUEwQixFQUFFLDhDQUE4QztTQUMzRSxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztJQUVILEVBQUUsQ0FBQyxnREFBZ0QsRUFBRSxLQUFLLElBQUksRUFBRTtRQUM5RCxNQUFNLFNBQVMsR0FBRyxPQUFPLENBQUMsZ0NBQWdDLEVBQUUsQ0FBQztRQUM3RCxNQUFNLFNBQVMsR0FBRyxRQUFRLENBQUMseUJBQXlCLENBQUM7UUFDckQsU0FBUyxDQUFDLGtCQUFrQixDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3hDLE1BQU0sRUFBRSxHQUFHLE1BQU0sU0FBUyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ25DLEVBQUUsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDakMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNsQyxNQUFNLEtBQUssR0FBRyxFQUFFLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztRQUNyQyxNQUFNLFFBQVEsR0FBRyxFQUFFLENBQUMsZUFBZSxDQUFDO1FBQ3BDLE1BQU0sV0FBVyxHQUFHLFFBQVEsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDaEQsZ0JBQU0sQ0FBQyxLQUFLLENBQUMsV0FBVyxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBQ3JDLGdCQUFNLENBQUMsS0FBSyxDQUFDLFdBQUssQ0FBQyxxQkFBcUIsQ0FBQyxLQUFLLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUN2RCxNQUFNLGFBQWEsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFbkUsTUFBTSxVQUFVLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxLQUFLLENBQUMsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztRQUN0RixNQUFNLEdBQUcsR0FBRyxNQUFNLFVBQVUsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUVyQyxNQUFNLFNBQVMsR0FBRyxHQUFHLENBQUMsZUFBZSxDQUFDO1FBQ3RDLGdCQUFNLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFDeEQsQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsNkVBQTZFLEVBQUUsS0FBSyxJQUFJLEVBQUU7UUFDM0YsTUFBTSxTQUFTLEdBQUcsT0FBTyxDQUFDLGdDQUFnQyxFQUFFLENBQUM7UUFDN0QsTUFBTSxTQUFTLEdBQUcsUUFBUSxDQUFDLDBCQUEwQixDQUFDO1FBQ3RELFNBQVMsQ0FBQyxrQkFBa0IsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUN4QyxNQUFNLEVBQUUsR0FBRyxNQUFNLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNuQyxFQUFFLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2pDLEVBQUUsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDbEMsTUFBTSxLQUFLLEdBQUcsRUFBRSxDQUFDLGlCQUFpQixFQUFFLENBQUM7UUFDckMsTUFBTSxRQUFRLEdBQUcsRUFBRSxDQUFDLGVBQWUsQ0FBQztRQUNwQyxNQUFNLFdBQVcsR0FBRyxRQUFRLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ2hELGdCQUFNLENBQUMsS0FBSyxDQUFDLFdBQVcsRUFBRSxTQUFTLENBQUMsQ0FBQztRQUNyQyxnQkFBTSxDQUFDLEtBQUssQ0FBQyxXQUFLLENBQUMscUJBQXFCLENBQUMsS0FBSyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDdkQsTUFBTSxhQUFhLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRW5FLE1BQU0sVUFBVSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsS0FBSyxDQUFDLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7UUFDdEYsTUFBTSxHQUFHLEdBQUcsTUFBTSxVQUFVLENBQUMsS0FBSyxFQUFFLENBQUM7UUFFckMsTUFBTSxTQUFTLEdBQUcsR0FBRyxDQUFDLGVBQWUsQ0FBQztRQUN0QyxnQkFBTSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQ3hELENBQUMsQ0FBQyxDQUFDO0lBRUgsRUFBRSxDQUFDLDZHQUE2RyxFQUFFLEtBQUssSUFBSSxFQUFFO1FBQzNILE1BQU0sU0FBUyxHQUFHLE9BQU8sQ0FBQyxnQ0FBZ0MsRUFBRSxDQUFDO1FBQzdELE1BQU0sU0FBUyxHQUNiLHNkQUFzZCxDQUFDO1FBQ3pkLFNBQVMsQ0FBQyxrQkFBa0IsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUN4QyxNQUFNLEVBQUUsR0FBRyxNQUFNLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNuQyxFQUFFLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2pDLEVBQUUsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDbEMsTUFBTSxLQUFLLEdBQUcsRUFBRSxDQUFDLGlCQUFpQixFQUFFLENBQUM7UUFDckMsTUFBTSxRQUFRLEdBQUcsRUFBRSxDQUFDLGVBQWUsQ0FBQztRQUNwQyxNQUFNLFdBQVcsR0FBRyxRQUFRLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ2hELGdCQUFNLENBQUMsS0FBSyxDQUFDLFdBQVcsRUFBRSxTQUFTLENBQUMsQ0FBQztRQUNyQyxnQkFBTSxDQUFDLEtBQUssQ0FBQyxXQUFLLENBQUMscUJBQXFCLENBQUMsS0FBSyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDdkQsTUFBTSxhQUFhLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRW5FLE1BQU0sVUFBVSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsS0FBSyxDQUFDLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7UUFDdEYsTUFBTSxHQUFHLEdBQUcsTUFBTSxVQUFVLENBQUMsS0FBSyxFQUFFLENBQUM7UUFFckMsTUFBTSxTQUFTLEdBQUcsR0FBRyxDQUFDLGVBQWUsQ0FBQztRQUN0QyxnQkFBTSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQ3hELENBQUMsQ0FBQyxDQUFDO0lBRUgsRUFBRSxDQUFDLG1IQUFtSCxFQUFFLEtBQUssSUFBSSxFQUFFO1FBQ2pJLE1BQU0sU0FBUyxHQUFHLE9BQU8sQ0FBQyxnQ0FBZ0MsRUFBRSxDQUFDO1FBQzdELE1BQU0sU0FBUyxHQUNiLHNoQkFBc2hCLENBQUM7UUFDemhCLFNBQVMsQ0FBQyxrQkFBa0IsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUN4QyxNQUFNLEVBQUUsR0FBRyxNQUFNLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNuQyxFQUFFLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2pDLEVBQUUsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDbEMsTUFBTSxLQUFLLEdBQUcsRUFBRSxDQUFDLGlCQUFpQixFQUFFLENBQUM7UUFDckMsTUFBTSxRQUFRLEdBQUcsRUFBRSxDQUFDLGVBQWUsQ0FBQztRQUNwQyxNQUFNLFdBQVcsR0FBRyxRQUFRLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ2hELGdCQUFNLENBQUMsS0FBSyxDQUFDLFdBQVcsRUFBRSxTQUFTLENBQUMsQ0FBQztRQUNyQyxnQkFBTSxDQUFDLEtBQUssQ0FBQyxXQUFLLENBQUMscUJBQXFCLENBQUMsS0FBSyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDdkQsTUFBTSxhQUFhLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRW5FLE1BQU0sVUFBVSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsS0FBSyxDQUFDLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7UUFDdEYsTUFBTSxHQUFHLEdBQUcsTUFBTSxVQUFVLENBQUMsS0FBSyxFQUFFLENBQUM7UUFFckMsTUFBTSxTQUFTLEdBQUcsR0FBRyxDQUFDLGVBQWUsQ0FBQztRQUN0QyxnQkFBTSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQ3hELENBQUMsQ0FBQyxDQUFDO0lBRUgsRUFBRSxDQUFDLHNIQUFzSCxFQUFFLEtBQUssSUFBSSxFQUFFO1FBQ3BJLE1BQU0sU0FBUyxHQUFHLE9BQU8sQ0FBQyxnQ0FBZ0MsRUFBRSxDQUFDO1FBQzdELE1BQU0sU0FBUyxHQUNiLDBlQUEwZSxDQUFDO1FBQzdlLFNBQVMsQ0FBQyxrQkFBa0IsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUN4QyxNQUFNLEVBQUUsR0FBRyxNQUFNLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNuQyxFQUFFLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2pDLEVBQUUsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDbEMsTUFBTSxLQUFLLEdBQUcsRUFBRSxDQUFDLGlCQUFpQixFQUFFLENBQUM7UUFDckMsTUFBTSxRQUFRLEdBQUcsRUFBRSxDQUFDLGVBQWUsQ0FBQztRQUNwQyxNQUFNLFdBQVcsR0FBRyxRQUFRLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ2hELGdCQUFNLENBQUMsS0FBSyxDQUFDLFdBQVcsRUFBRSxTQUFTLENBQUMsQ0FBQztRQUNyQyxnQkFBTSxDQUFDLEtBQUssQ0FBQyxXQUFLLENBQUMscUJBQXFCLENBQUMsS0FBSyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDdkQsTUFBTSxhQUFhLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRW5FLE1BQU0sVUFBVSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsS0FBSyxDQUFDLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7UUFDdEYsTUFBTSxHQUFHLEdBQUcsTUFBTSxVQUFVLENBQUMsS0FBSyxFQUFFLENBQUM7UUFFckMsTUFBTSxTQUFTLEdBQUcsR0FBRyxDQUFDLGVBQWUsQ0FBQztRQUN0QyxnQkFBTSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQ3hELENBQUMsQ0FBQyxDQUFDO0lBRUgsRUFBRSxDQUFDLDJDQUEyQyxFQUFFLEtBQUssSUFBSSxFQUFFO1FBQ3pELE1BQU0sU0FBUyxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLDZCQUE2QixDQUFDLENBQUM7UUFDdkUsTUFBTSxFQUFFLEdBQUcsTUFBTSxTQUFTLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDbkMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNqQyxFQUFFLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2xDLE1BQU0sS0FBSyxHQUFHLEVBQUUsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1FBQ3JDLE1BQU0sUUFBUSxHQUFHLEVBQUUsQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3ZELGdCQUFNLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMseUJBQXlCLENBQUMsQ0FBQztRQUMzRCxnQkFBTSxDQUFDLEtBQUssQ0FBQyxXQUFLLENBQUMscUJBQXFCLENBQUMsS0FBSyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDdkQsZ0JBQU0sQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDO0lBQzlELENBQUMsQ0FBQyxDQUFDO0lBRUgsRUFBRSxDQUFDLHFFQUFxRSxFQUFFLEtBQUssSUFBSSxFQUFFO1FBQ25GLE1BQU0sU0FBUyxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLDhCQUE4QixDQUFDLENBQUM7UUFDeEUsTUFBTSxFQUFFLEdBQUcsTUFBTSxTQUFTLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDbkMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNqQyxFQUFFLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2xDLE1BQU0sS0FBSyxHQUFHLEVBQUUsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1FBQ3JDLE1BQU0sUUFBUSxHQUFHLEVBQUUsQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3ZELGdCQUFNLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsMEJBQTBCLENBQUMsQ0FBQztRQUM1RCxnQkFBTSxDQUFDLEtBQUssQ0FBQyxXQUFLLENBQUMscUJBQXFCLENBQUMsS0FBSyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDdkQsZ0JBQU0sQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQyw4QkFBOEIsQ0FBQyxDQUFDO0lBQy9ELENBQUMsQ0FBQyxDQUFDO0lBRUgsRUFBRSxDQUFDLDhCQUE4QixFQUFFLEtBQUssSUFBSSxFQUFFO1FBQzVDLE1BQU0sU0FBUyxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLDZCQUE2QixDQUFDLENBQUM7UUFDdkUsTUFBTSxFQUFFLEdBQUcsTUFBTSxTQUFTLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDbkMsTUFBTSxPQUFPLEdBQUcsRUFBRSxDQUFDLGtCQUFrQixFQUFFLENBQUM7UUFDeEMsZ0JBQU0sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxxQkFBcUIsQ0FBQyxDQUFDO1FBQ2xELGdCQUFNLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsOENBQThDLENBQUMsQ0FBQztRQUNoRixnQkFBTSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsWUFBWSxFQUFFO1lBQ3JDLGtCQUFrQixFQUFFLDhDQUE4QztZQUNsRSxpQkFBaUIsRUFBRSw4Q0FBOEM7U0FDbEUsQ0FBQyxDQUFDO1FBQ0gsZ0JBQU0sQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLGdCQUFnQixFQUFFO1lBQ3pDLGNBQWMsRUFBRSw4Q0FBOEM7WUFDOUQsa0JBQWtCLEVBQUUsOENBQThDO1lBQ2xFLGtCQUFrQixFQUFFLDhDQUE4QztZQUNsRSxnQkFBZ0IsRUFBRSw4Q0FBOEM7U0FDakUsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsdUNBQXVDLEVBQUUsS0FBSyxJQUFJLEVBQUU7UUFDckQsTUFBTSxTQUFTLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsNkJBQTZCLENBQUMsQ0FBQztRQUN2RSxNQUFNLEVBQUUsR0FBRyxNQUFNLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNuQyxNQUFNLE1BQU0sR0FBRyxFQUFFLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDM0IsZ0JBQU0sQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLFlBQVksRUFBRTtZQUNwQyxrQkFBa0IsRUFBRSw4Q0FBOEM7WUFDbEUsaUJBQWlCLEVBQUUsOENBQThDO1NBQ2xFLENBQUMsQ0FBQztRQUNILGdCQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDaEQsZ0JBQU0sQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRTtZQUNsRCxjQUFjLEVBQUUsOENBQThDO1lBQzlELG1CQUFtQixFQUFFLDhDQUE4QztZQUNuRSxtQkFBbUIsRUFBRSw4Q0FBOEM7WUFDbkUsZ0JBQWdCLEVBQUUsOENBQThDO1NBQ2pFLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0lBRUgsRUFBRSxDQUFDLGlDQUFpQyxFQUFFLEtBQUssSUFBSSxFQUFFO1FBQy9DLE1BQU0sU0FBUyxHQUFHLE9BQU8sQ0FBQyxnQ0FBZ0MsRUFBRSxDQUFDO1FBQzdELFNBQVMsQ0FBQyxzQkFBc0IsQ0FBQyxRQUFRLENBQUMsNkJBQTZCLENBQUMsQ0FBQztRQUN6RSxJQUFBLGdCQUFNLEVBQUMsR0FBRyxFQUFFLENBQUMsU0FBUyxDQUFDLHNCQUFzQixDQUFDLFFBQVEsQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUMvRixvSEFBb0gsQ0FDckgsQ0FBQztRQUNGLGdCQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxzQkFBc0IsQ0FBQyxRQUFRLENBQUMsNkJBQTZCLENBQUMsQ0FBQyxDQUFDO1FBQzlGLGdCQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxzQkFBc0IsQ0FBQyxRQUFRLENBQUMsOENBQThDLENBQUMsQ0FBQyxDQUFDO1FBQy9HLGdCQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxzQkFBc0IsQ0FBQyxRQUFRLENBQUMsaUNBQWlDLENBQUMsQ0FBQyxDQUFDO0lBQ3BHLENBQUMsQ0FBQyxDQUFDO0lBRUgsRUFBRSxDQUFDLDRDQUE0QyxFQUFFLEtBQUssSUFBSSxFQUFFO1FBQzFELE1BQU0sU0FBUyxHQUFHLE9BQU8sQ0FBQyxnQ0FBZ0MsRUFBRSxDQUFDO1FBQzdELGdCQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxrQkFBa0IsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDO1FBQ2hFLE1BQU0sVUFBVSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLDhCQUE4QixDQUFDLENBQUM7UUFDekUsTUFBTSxHQUFHLEdBQUksQ0FBQyxNQUFNLFVBQVUsQ0FBQyxLQUFLLEVBQUUsQ0FBaUIsQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzNGLGdCQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ3pELENBQUMsQ0FBQyxDQUFDO0lBRUgsRUFBRSxDQUFDLG1DQUFtQyxFQUFFLEtBQUssSUFBSSxFQUFFO1FBQ2pELE1BQU0sU0FBUyxHQUFHLE9BQU8sQ0FBQyxnQ0FBZ0MsRUFBRSxDQUFDO1FBQzdELGdCQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLDZCQUE2QixDQUFDLENBQUMsQ0FBQztRQUM1RSxnQkFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyw4Q0FBOEMsQ0FBQyxDQUFDLENBQUM7UUFDN0YsZ0JBQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsaUNBQWlDLENBQUMsQ0FBQyxDQUFDO0lBQ2xGLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgc2hvdWxkIGZyb20gJ3Nob3VsZCc7XG5pbXBvcnQgKiBhcyB0ZXN0RGF0YSBmcm9tICcuLi8uLi9yZXNvdXJjZXMvc29sJztcbmltcG9ydCB7IGdldEJ1aWxkZXJGYWN0b3J5IH0gZnJvbSAnLi4vZ2V0QnVpbGRlckZhY3RvcnknO1xuaW1wb3J0IHsgVXRpbHMsIFRyYW5zYWN0aW9uIH0gZnJvbSAnLi4vLi4vLi4vc3JjJztcblxuZGVzY3JpYmUoJ1NvbCBTdGFraW5nIFJhdyBNZXNzYWdlIEF1dGhvcml6ZSBCdWlsZGVyJywgKCkgPT4ge1xuICBjb25zdCBmYWN0b3J5ID0gZ2V0QnVpbGRlckZhY3RvcnkoJ3Rzb2wnKTtcblxuICBpdCgnc2hvdWxkIGJ1aWxkIGEgY3JlYXRlIHN0YWtpbmcgYXV0aG9yaXphdGlvbiB1bnNpZ25lZCB0eCcsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCB0eEJ1aWxkZXIgPSBmYWN0b3J5LmdldFN0YWtpbmdSYXdNc2dBdXRob3JpemVCdWlsZGVyKCk7XG4gICAgdHhCdWlsZGVyLnRyYW5zYWN0aW9uTWVzc2FnZSh0ZXN0RGF0YS5TVEFLSU5HX0FVVEhPUklaRV9SQVdfTVNHKTtcbiAgICBjb25zdCB0eCA9IGF3YWl0IHR4QnVpbGRlci5idWlsZCgpO1xuICAgIHR4LmlucHV0cy5sZW5ndGguc2hvdWxkLmVxdWFsKDApO1xuICAgIHR4Lm91dHB1dHMubGVuZ3RoLnNob3VsZC5lcXVhbCgwKTtcbiAgICBjb25zdCByYXdUeCA9IHR4LnRvQnJvYWRjYXN0Rm9ybWF0KCk7XG4gICAgc2hvdWxkLmVxdWFsKFV0aWxzLmlzVmFsaWRSYXdUcmFuc2FjdGlvbihyYXdUeCksIHRydWUpO1xuICAgIHNob3VsZC5lcXVhbChyYXdUeCwgdGVzdERhdGEuU1RBS0lOR19BVVRIT1JJWkVfUkFXX01TR19UWE4pO1xuICAgIGNvbnN0IGV4cGxhaW4gPSB0eC5leHBsYWluVHJhbnNhY3Rpb24oKTtcbiAgICBzaG91bGQuZXF1YWwoZXhwbGFpbi50eXBlLCAnU3Rha2luZ0F1dGhvcml6ZVJhdycpO1xuICAgIHNob3VsZC5lcXVhbChleHBsYWluLmJsb2NraGFzaCwgJzM1ekhibU50Rk5COUFEdXg5N1ViZFkxYlFTb2JmWVIyU1VtdUNucVZmcFVCJyk7XG4gICAgc2hvdWxkLmRlZXBFcXVhbChleHBsYWluLmR1cmFibGVOb25jZSwge1xuICAgICAgd2FsbGV0Tm9uY2VBZGRyZXNzOiAnSjhjRUN4Y1Q2UTZINGZjUUN2ZDRMYmhtbVNqc0hMNjNrcEp0clVjckY3NFEnLFxuICAgICAgYXV0aFdhbGxldEFkZHJlc3M6ICc1dVVRdzdadFRSWWR1VDZNcnNQUWVHS0FhdlJlazJWenhBcWdVeFFFMnN6dicsXG4gICAgfSk7XG4gICAgc2hvdWxkLmRlZXBFcXVhbChleHBsYWluLnN0YWtpbmdBdXRob3JpemUsIHtcbiAgICAgIHN0YWtpbmdBZGRyZXNzOiAnSjhjRUN4Y1Q2UTZINGZjUUN2ZDRMYmhtbVNqc0hMNjNrcEp0clVjckY3NFEnLFxuICAgICAgb2xkV2l0aGRyYXdBZGRyZXNzOiAnNnhnZXNHNHZhakNZZkFRcGtub2RyYXJENDlaQ25YR3ZZQTRIMURMdUdWN1knLFxuICAgICAgbmV3V2l0aGRyYXdBZGRyZXNzOiAnNHAxVmRONkJuZ1RBYldSN1E1SlBwYkI2ZGM0azR5OHduMWtubW1XRWpjOWknLFxuICAgICAgY3VzdG9kaWFuQWRkcmVzczogJ0RIQ1ZqS3k3a042RDZ2TTY5bkhjRWVFZVM2ODVxdG9uRmJpRk5CVzViR2lxJyxcbiAgICB9KTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBidWlsZCBhIGNyZWF0ZSBzdGFraW5nIGF1dGhvcml6YXRpb24gdW5zaWduZWQgdHggdG8gY2hhbmdlIHN0YWtpbmcgYXV0aG9yaXR5JywgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IHR4QnVpbGRlciA9IGZhY3RvcnkuZ2V0U3Rha2luZ1Jhd01zZ0F1dGhvcml6ZUJ1aWxkZXIoKTtcbiAgICB0eEJ1aWxkZXIudHJhbnNhY3Rpb25NZXNzYWdlKHRlc3REYXRhLlNUQUtJTkdfQVVUSE9SSVpFX1JBV19NU0cyKTtcbiAgICBjb25zdCB0eCA9IGF3YWl0IHR4QnVpbGRlci5idWlsZCgpO1xuICAgIHR4LmlucHV0cy5sZW5ndGguc2hvdWxkLmVxdWFsKDApO1xuICAgIHR4Lm91dHB1dHMubGVuZ3RoLnNob3VsZC5lcXVhbCgwKTtcbiAgICBjb25zdCByYXdUeCA9IHR4LnRvQnJvYWRjYXN0Rm9ybWF0KCk7XG4gICAgc2hvdWxkLmVxdWFsKFV0aWxzLmlzVmFsaWRSYXdUcmFuc2FjdGlvbihyYXdUeCksIHRydWUpO1xuICAgIHNob3VsZC5lcXVhbChyYXdUeCwgdGVzdERhdGEuU1RBS0lOR19BVVRIT1JJWkVfUkFXX01TR19UWE4yKTtcbiAgICBjb25zdCBleHBsYWluID0gdHguZXhwbGFpblRyYW5zYWN0aW9uKCk7XG4gICAgc2hvdWxkLmVxdWFsKGV4cGxhaW4udHlwZSwgJ1N0YWtpbmdBdXRob3JpemVSYXcnKTtcbiAgICBzaG91bGQuZXF1YWwoZXhwbGFpbi5ibG9ja2hhc2gsICc4UmZaa3gzZ3Vpa21LUjhXaTFpa3g1bTdTa21MeW4xMkQzU2tpbUsxZjFTRScpO1xuICAgIHNob3VsZC5kZWVwRXF1YWwoZXhwbGFpbi5kdXJhYmxlTm9uY2UsIHtcbiAgICAgIHdhbGxldE5vbmNlQWRkcmVzczogJ0ZiM3hwNHAzYjNtdTdnUU5ERHBoTVV1VzlOSGpVazd3QWd0bUZnWng0WXNmJyxcbiAgICAgIGF1dGhXYWxsZXRBZGRyZXNzOiAnQ0dBRWdVTWFDVzRUOTRSS0tFUTRQbk1EYXlXTll4Qjh2dUxOQTdURUMxdGgnLFxuICAgIH0pO1xuICAgIHNob3VsZC5kZWVwRXF1YWwoZXhwbGFpbi5zdGFraW5nQXV0aG9yaXplLCB7XG4gICAgICBzdGFraW5nQWRkcmVzczogJzNIdXhnNjI1OUZCendhb0J4QWRHYUV3amdTWWdycmc1cWQ5a1g2Y2hzZjRLJyxcbiAgICAgIG9sZFdpdGhkcmF3QWRkcmVzczogJycsXG4gICAgICBuZXdXaXRoZHJhd0FkZHJlc3M6ICcnLFxuICAgICAgb2xkU3Rha2luZ0F1dGhvcml0eUFkZHJlc3M6ICdHNjJMZUNCZWhhYXJqNWlWaDU4czdRVEM2MXVwRUppSmh1SzNCQ1EyR3FXNicsXG4gICAgICBuZXdTdGFraW5nQXV0aG9yaXR5QWRkcmVzczogJ0VFamF5VG1aak55Rm1BNDRmYlB4RnhzVzE4S3U1U1ZqMWc1VlZDcGVmYlZuJyxcbiAgICB9KTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBidWlsZCB0aGUgc2FtZSBzaWduYWJsZSBmcm9tIHNlcmlhbGl6ZWQnLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgdHhCdWlsZGVyID0gZmFjdG9yeS5nZXRTdGFraW5nUmF3TXNnQXV0aG9yaXplQnVpbGRlcigpO1xuICAgIGNvbnN0IHR4TWVzc2FnZSA9IHRlc3REYXRhLlNUQUtJTkdfQVVUSE9SSVpFX1JBV19NU0c7XG4gICAgdHhCdWlsZGVyLnRyYW5zYWN0aW9uTWVzc2FnZSh0eE1lc3NhZ2UpO1xuICAgIGNvbnN0IHR4ID0gYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCk7XG4gICAgdHguaW5wdXRzLmxlbmd0aC5zaG91bGQuZXF1YWwoMCk7XG4gICAgdHgub3V0cHV0cy5sZW5ndGguc2hvdWxkLmVxdWFsKDApO1xuICAgIGNvbnN0IHJhd1R4ID0gdHgudG9Ccm9hZGNhc3RGb3JtYXQoKTtcbiAgICBjb25zdCBzaWduYWJsZSA9IHR4LnNpZ25hYmxlUGF5bG9hZDtcbiAgICBjb25zdCBzaWduYWJsZUhleCA9IHNpZ25hYmxlLnRvU3RyaW5nKCdiYXNlNjQnKTtcbiAgICBzaG91bGQuZXF1YWwoc2lnbmFibGVIZXgsIHR4TWVzc2FnZSk7XG4gICAgc2hvdWxkLmVxdWFsKFV0aWxzLmlzVmFsaWRSYXdUcmFuc2FjdGlvbihyYXdUeCksIHRydWUpO1xuICAgIGNvbnN0IHVuc2lnbmVkVHhIZXggPSBCdWZmZXIuZnJvbShyYXdUeCwgJ2Jhc2U2NCcpLnRvU3RyaW5nKCdoZXgnKTtcblxuICAgIGNvbnN0IHR4QnVpbGRlcjIgPSBmYWN0b3J5LmZyb20oQnVmZmVyLmZyb20odW5zaWduZWRUeEhleCwgJ2hleCcpLnRvU3RyaW5nKCdiYXNlNjQnKSk7XG4gICAgY29uc3QgdHgyID0gYXdhaXQgdHhCdWlsZGVyMi5idWlsZCgpO1xuXG4gICAgY29uc3Qgc2lnbmFibGUyID0gdHgyLnNpZ25hYmxlUGF5bG9hZDtcbiAgICBzaG91bGQuZXF1YWwoc2lnbmFibGUyLnRvU3RyaW5nKCdiYXNlNjQnKSwgdHhNZXNzYWdlKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBidWlsZCB0aGUgc2FtZSBzaWduYWJsZSBmcm9tIHNlcmlhbGl6ZWQgZm9yIGNoYW5nZSBzdGFraW5nIGF1dGhvcml0eScsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCB0eEJ1aWxkZXIgPSBmYWN0b3J5LmdldFN0YWtpbmdSYXdNc2dBdXRob3JpemVCdWlsZGVyKCk7XG4gICAgY29uc3QgdHhNZXNzYWdlID0gdGVzdERhdGEuU1RBS0lOR19BVVRIT1JJWkVfUkFXX01TRzI7XG4gICAgdHhCdWlsZGVyLnRyYW5zYWN0aW9uTWVzc2FnZSh0eE1lc3NhZ2UpO1xuICAgIGNvbnN0IHR4ID0gYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCk7XG4gICAgdHguaW5wdXRzLmxlbmd0aC5zaG91bGQuZXF1YWwoMCk7XG4gICAgdHgub3V0cHV0cy5sZW5ndGguc2hvdWxkLmVxdWFsKDApO1xuICAgIGNvbnN0IHJhd1R4ID0gdHgudG9Ccm9hZGNhc3RGb3JtYXQoKTtcbiAgICBjb25zdCBzaWduYWJsZSA9IHR4LnNpZ25hYmxlUGF5bG9hZDtcbiAgICBjb25zdCBzaWduYWJsZUhleCA9IHNpZ25hYmxlLnRvU3RyaW5nKCdiYXNlNjQnKTtcbiAgICBzaG91bGQuZXF1YWwoc2lnbmFibGVIZXgsIHR4TWVzc2FnZSk7XG4gICAgc2hvdWxkLmVxdWFsKFV0aWxzLmlzVmFsaWRSYXdUcmFuc2FjdGlvbihyYXdUeCksIHRydWUpO1xuICAgIGNvbnN0IHVuc2lnbmVkVHhIZXggPSBCdWZmZXIuZnJvbShyYXdUeCwgJ2Jhc2U2NCcpLnRvU3RyaW5nKCdoZXgnKTtcblxuICAgIGNvbnN0IHR4QnVpbGRlcjIgPSBmYWN0b3J5LmZyb20oQnVmZmVyLmZyb20odW5zaWduZWRUeEhleCwgJ2hleCcpLnRvU3RyaW5nKCdiYXNlNjQnKSk7XG4gICAgY29uc3QgdHgyID0gYXdhaXQgdHhCdWlsZGVyMi5idWlsZCgpO1xuXG4gICAgY29uc3Qgc2lnbmFibGUyID0gdHgyLnNpZ25hYmxlUGF5bG9hZDtcbiAgICBzaG91bGQuZXF1YWwoc2lnbmFibGUyLnRvU3RyaW5nKCdiYXNlNjQnKSwgdHhNZXNzYWdlKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBidWlsZCB0aGUgc2FtZSBzaWduYWJsZSBmcm9tIHNlcmlhbGl6ZWQgZm9yIGNoYW5nZSBzdGFraW5nIGF1dGhvcml0eSB3aXRoIG9ubHkgb2xkIHN0YWtpbmcgYXV0aG9yaXR5JywgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IHR4QnVpbGRlciA9IGZhY3RvcnkuZ2V0U3Rha2luZ1Jhd01zZ0F1dGhvcml6ZUJ1aWxkZXIoKTtcbiAgICBjb25zdCB0eE1lc3NhZ2UgPVxuICAgICAgJ0F3SUVDYlpVczRMdFJlOStVaW9QU3kybTZLNkY3aVFkOC9tQlFvNFVrY3NSb1d1N3hLeWg1bGxUWXFveXUxaTJGeHNTME9MckxBRGxNQnl1YmpiM1dDVTI3YTNqMG5SQlJBRGZtdEJCSlF0UW8vU2NoSXZENUhEKzcrejZ5T0U1VmZRMnI4YnBwRUJyMFJ3dVZPUlFUdEJQem5FTXkrdTkrd3N0ZDhzSXhpQ2s3MVZNeUdMUktSd3lObWg0MGVlR0ZUdXFJaFJ3dUd4aDM4bW1TZVRwc1NFbitGc0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFhaDJCZVJOMVFxbURRM3ZmNHFlckpWZjFOY2luaHlLMmlrbmNBQUFBQUFCcWZWRnhqSGRNa29WbU9ZYVIxZXRvdGV1S09iUzIxY2MxVmJJUUFBQUFBR3A5VVhHU3hXanVDS2hGOXowcGVJendOY01VV3lHck5FMkFZdXFVQUFBUGpuNXVvUjcvNlN4T1U3V1BpZ1FOS0ZUWmNkclFOUkNBbWtldnJON0crM0FnVURBd2dBQkFRQUFBQUdCQVFIQVFJSUNnQUFBQUFBQUFBPSc7XG4gICAgdHhCdWlsZGVyLnRyYW5zYWN0aW9uTWVzc2FnZSh0eE1lc3NhZ2UpO1xuICAgIGNvbnN0IHR4ID0gYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCk7XG4gICAgdHguaW5wdXRzLmxlbmd0aC5zaG91bGQuZXF1YWwoMCk7XG4gICAgdHgub3V0cHV0cy5sZW5ndGguc2hvdWxkLmVxdWFsKDApO1xuICAgIGNvbnN0IHJhd1R4ID0gdHgudG9Ccm9hZGNhc3RGb3JtYXQoKTtcbiAgICBjb25zdCBzaWduYWJsZSA9IHR4LnNpZ25hYmxlUGF5bG9hZDtcbiAgICBjb25zdCBzaWduYWJsZUhleCA9IHNpZ25hYmxlLnRvU3RyaW5nKCdiYXNlNjQnKTtcbiAgICBzaG91bGQuZXF1YWwoc2lnbmFibGVIZXgsIHR4TWVzc2FnZSk7XG4gICAgc2hvdWxkLmVxdWFsKFV0aWxzLmlzVmFsaWRSYXdUcmFuc2FjdGlvbihyYXdUeCksIHRydWUpO1xuICAgIGNvbnN0IHVuc2lnbmVkVHhIZXggPSBCdWZmZXIuZnJvbShyYXdUeCwgJ2Jhc2U2NCcpLnRvU3RyaW5nKCdoZXgnKTtcblxuICAgIGNvbnN0IHR4QnVpbGRlcjIgPSBmYWN0b3J5LmZyb20oQnVmZmVyLmZyb20odW5zaWduZWRUeEhleCwgJ2hleCcpLnRvU3RyaW5nKCdiYXNlNjQnKSk7XG4gICAgY29uc3QgdHgyID0gYXdhaXQgdHhCdWlsZGVyMi5idWlsZCgpO1xuXG4gICAgY29uc3Qgc2lnbmFibGUyID0gdHgyLnNpZ25hYmxlUGF5bG9hZDtcbiAgICBzaG91bGQuZXF1YWwoc2lnbmFibGUyLnRvU3RyaW5nKCdiYXNlNjQnKSwgdHhNZXNzYWdlKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBidWlsZCB0aGUgc2FtZSBzaWduYWJsZSBmcm9tIHNlcmlhbGl6ZWQgZm9yIGNoYW5nZSBzdGFraW5nIGFuZCB3aXRoZHJhdyBhdXRob3JpdHkgd2l0aCBjdXN0b2RpYWwgYXV0aG9yaXR5JywgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IHR4QnVpbGRlciA9IGZhY3RvcnkuZ2V0U3Rha2luZ1Jhd01zZ0F1dGhvcml6ZUJ1aWxkZXIoKTtcbiAgICBjb25zdCB0eE1lc3NhZ2UgPVxuICAgICAgJ0JBTUVDclpVczRMdFJlOStVaW9QU3kybTZLNkY3aVFkOC9tQlFvNFVrY3NSb1d1N0JVZEhaK1R4L0VhZW0rMFZiNlRUaHc5bnBQUHZlVzJXQ1IzS0NmT3VscVBFcktIbVdWTmlxaks3V0xZWEd4TFE0dXNzQU9Vd0hLNXVOdmRZSlRidHJlUFNkRUZFQU4rYTBFRWxDMUNqOUp5RWk4UGtjUDd2N1BySTRUbFY5RGF2eHVta1FHdlJIQzVVNUZCTzBFL09jUXpMNjczN0N5MTN5d2pHSUtUdlZVeklZdEVwSERJMmFIalI1NFlWTzZvaUZIQzRiR0hmeWFaSjVPbXhJU2Y0V3dBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCcUhZRjVFM1ZDcVlORGU5L2lwNnNsVi9VMXlLZUhJcmFLU2R3QUFBQUFBR3A5VVhHTWQweVNoV1k1aHBIVjYyaTE2NG81dExiVnh6VlZzaEFBQUFBQWFuMVJjWkxGYU80SXFFWDNQU2w0alBBMXd4UmJJYXMwVFlCaTZwUUFBQStPZm02aEh2L3BMRTVUdFkrS0JBMG9WTmx4MnRBMUVJQ2FSNitzM3NiN2NEQmdNRUNRQUVCQUFBQUFjRkJRZ0NBd0VJQ2dBQUFBQUFBQUFIQlFVSUFnTUJDQW9BQUFBQkFBQUEnO1xuICAgIHR4QnVpbGRlci50cmFuc2FjdGlvbk1lc3NhZ2UodHhNZXNzYWdlKTtcbiAgICBjb25zdCB0eCA9IGF3YWl0IHR4QnVpbGRlci5idWlsZCgpO1xuICAgIHR4LmlucHV0cy5sZW5ndGguc2hvdWxkLmVxdWFsKDApO1xuICAgIHR4Lm91dHB1dHMubGVuZ3RoLnNob3VsZC5lcXVhbCgwKTtcbiAgICBjb25zdCByYXdUeCA9IHR4LnRvQnJvYWRjYXN0Rm9ybWF0KCk7XG4gICAgY29uc3Qgc2lnbmFibGUgPSB0eC5zaWduYWJsZVBheWxvYWQ7XG4gICAgY29uc3Qgc2lnbmFibGVIZXggPSBzaWduYWJsZS50b1N0cmluZygnYmFzZTY0Jyk7XG4gICAgc2hvdWxkLmVxdWFsKHNpZ25hYmxlSGV4LCB0eE1lc3NhZ2UpO1xuICAgIHNob3VsZC5lcXVhbChVdGlscy5pc1ZhbGlkUmF3VHJhbnNhY3Rpb24ocmF3VHgpLCB0cnVlKTtcbiAgICBjb25zdCB1bnNpZ25lZFR4SGV4ID0gQnVmZmVyLmZyb20ocmF3VHgsICdiYXNlNjQnKS50b1N0cmluZygnaGV4Jyk7XG5cbiAgICBjb25zdCB0eEJ1aWxkZXIyID0gZmFjdG9yeS5mcm9tKEJ1ZmZlci5mcm9tKHVuc2lnbmVkVHhIZXgsICdoZXgnKS50b1N0cmluZygnYmFzZTY0JykpO1xuICAgIGNvbnN0IHR4MiA9IGF3YWl0IHR4QnVpbGRlcjIuYnVpbGQoKTtcblxuICAgIGNvbnN0IHNpZ25hYmxlMiA9IHR4Mi5zaWduYWJsZVBheWxvYWQ7XG4gICAgc2hvdWxkLmVxdWFsKHNpZ25hYmxlMi50b1N0cmluZygnYmFzZTY0JyksIHR4TWVzc2FnZSk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgYnVpbGQgdGhlIHNhbWUgc2lnbmFibGUgZnJvbSBzZXJpYWxpemVkIGZvciBjaGFuZ2Ugc3Rha2luZyBhbmQgd2l0aGRyYXcgYXV0aG9yaXR5IHdpdGhvdXQgY3VzdG9kaWFsIGF1dGhvcml0eScsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCB0eEJ1aWxkZXIgPSBmYWN0b3J5LmdldFN0YWtpbmdSYXdNc2dBdXRob3JpemVCdWlsZGVyKCk7XG4gICAgY29uc3QgdHhNZXNzYWdlID1cbiAgICAgICdBd0lFQ2JaVXM0THRSZTkrVWlvUFN5Mm02SzZGN2lRZDgvbUJRbzRVa2NzUm9XdTd4S3loNWxsVFlxb3l1MWkyRnhzUzBPTHJMQURsTUJ5dWJqYjNXQ1UyN2EzajBuUkJSQURmbXRCQkpRdFFvL1NjaEl2RDVIRCs3K3o2eU9FNVZmUTJyOGJwcEVCcjBSd3VWT1JRVHRCUHpuRU15K3U5K3dzdGQ4c0l4aUNrNzFWTXlHTFJLUnd5Tm1oNDBlZUdGVHVxSWhSd3VHeGgzOG1tU2VUcHNTRW4rRnNBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBYWgyQmVSTjFRcW1EUTN2ZjRxZXJKVmYxTmNpbmh5SzJpa25jQUFBQUFBQnFmVkZ4akhkTWtvVm1PWWFSMWV0b3RldUtPYlMyMWNjMVZiSVFBQUFBQUdwOVVYR1N4V2p1Q0toRjl6MHBlSXp3TmNNVVd5R3JORTJBWXVxVUFBQVBqbjV1b1I3LzZTeE9VN1dQaWdRTktGVFpjZHJRTlJDQW1rZXZyTjdHKzNBd1VEQXdnQUJBUUFBQUFHQkFRSEFRSUlDZ0FBQUFBQUFBQUdCQVFIQVFJSUNnQUFBQUVBQUFBPSc7XG4gICAgdHhCdWlsZGVyLnRyYW5zYWN0aW9uTWVzc2FnZSh0eE1lc3NhZ2UpO1xuICAgIGNvbnN0IHR4ID0gYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCk7XG4gICAgdHguaW5wdXRzLmxlbmd0aC5zaG91bGQuZXF1YWwoMCk7XG4gICAgdHgub3V0cHV0cy5sZW5ndGguc2hvdWxkLmVxdWFsKDApO1xuICAgIGNvbnN0IHJhd1R4ID0gdHgudG9Ccm9hZGNhc3RGb3JtYXQoKTtcbiAgICBjb25zdCBzaWduYWJsZSA9IHR4LnNpZ25hYmxlUGF5bG9hZDtcbiAgICBjb25zdCBzaWduYWJsZUhleCA9IHNpZ25hYmxlLnRvU3RyaW5nKCdiYXNlNjQnKTtcbiAgICBzaG91bGQuZXF1YWwoc2lnbmFibGVIZXgsIHR4TWVzc2FnZSk7XG4gICAgc2hvdWxkLmVxdWFsKFV0aWxzLmlzVmFsaWRSYXdUcmFuc2FjdGlvbihyYXdUeCksIHRydWUpO1xuICAgIGNvbnN0IHVuc2lnbmVkVHhIZXggPSBCdWZmZXIuZnJvbShyYXdUeCwgJ2Jhc2U2NCcpLnRvU3RyaW5nKCdoZXgnKTtcblxuICAgIGNvbnN0IHR4QnVpbGRlcjIgPSBmYWN0b3J5LmZyb20oQnVmZmVyLmZyb20odW5zaWduZWRUeEhleCwgJ2hleCcpLnRvU3RyaW5nKCdiYXNlNjQnKSk7XG4gICAgY29uc3QgdHgyID0gYXdhaXQgdHhCdWlsZGVyMi5idWlsZCgpO1xuXG4gICAgY29uc3Qgc2lnbmFibGUyID0gdHgyLnNpZ25hYmxlUGF5bG9hZDtcbiAgICBzaG91bGQuZXF1YWwoc2lnbmFibGUyLnRvU3RyaW5nKCdiYXNlNjQnKSwgdHhNZXNzYWdlKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBidWlsZCBmcm9tIGFuIHVuc2lnbmVkIHRyYW5zYWN0aW9uJywgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IHR4QnVpbGRlciA9IGZhY3RvcnkuZnJvbSh0ZXN0RGF0YS5TVEFLSU5HX0FVVEhPUklaRV9SQVdfTVNHX1RYTik7XG4gICAgY29uc3QgdHggPSBhd2FpdCB0eEJ1aWxkZXIuYnVpbGQoKTtcbiAgICB0eC5pbnB1dHMubGVuZ3RoLnNob3VsZC5lcXVhbCgwKTtcbiAgICB0eC5vdXRwdXRzLmxlbmd0aC5zaG91bGQuZXF1YWwoMCk7XG4gICAgY29uc3QgcmF3VHggPSB0eC50b0Jyb2FkY2FzdEZvcm1hdCgpO1xuICAgIGNvbnN0IHNpZ25hYmxlID0gdHguc2lnbmFibGVQYXlsb2FkLnRvU3RyaW5nKCdiYXNlNjQnKTtcbiAgICBzaG91bGQuZXF1YWwoc2lnbmFibGUsIHRlc3REYXRhLlNUQUtJTkdfQVVUSE9SSVpFX1JBV19NU0cpO1xuICAgIHNob3VsZC5lcXVhbChVdGlscy5pc1ZhbGlkUmF3VHJhbnNhY3Rpb24ocmF3VHgpLCB0cnVlKTtcbiAgICBzaG91bGQuZXF1YWwocmF3VHgsIHRlc3REYXRhLlNUQUtJTkdfQVVUSE9SSVpFX1JBV19NU0dfVFhOKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBidWlsZCBmcm9tIGFuIHVuc2lnbmVkIHRyYW5zYWN0aW9uIGZvciBud2Ugc3Rha2luZyBhdXRob3JpdHknLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgdHhCdWlsZGVyID0gZmFjdG9yeS5mcm9tKHRlc3REYXRhLlNUQUtJTkdfQVVUSE9SSVpFX1JBV19NU0dfVFhOMik7XG4gICAgY29uc3QgdHggPSBhd2FpdCB0eEJ1aWxkZXIuYnVpbGQoKTtcbiAgICB0eC5pbnB1dHMubGVuZ3RoLnNob3VsZC5lcXVhbCgwKTtcbiAgICB0eC5vdXRwdXRzLmxlbmd0aC5zaG91bGQuZXF1YWwoMCk7XG4gICAgY29uc3QgcmF3VHggPSB0eC50b0Jyb2FkY2FzdEZvcm1hdCgpO1xuICAgIGNvbnN0IHNpZ25hYmxlID0gdHguc2lnbmFibGVQYXlsb2FkLnRvU3RyaW5nKCdiYXNlNjQnKTtcbiAgICBzaG91bGQuZXF1YWwoc2lnbmFibGUsIHRlc3REYXRhLlNUQUtJTkdfQVVUSE9SSVpFX1JBV19NU0cyKTtcbiAgICBzaG91bGQuZXF1YWwoVXRpbHMuaXNWYWxpZFJhd1RyYW5zYWN0aW9uKHJhd1R4KSwgdHJ1ZSk7XG4gICAgc2hvdWxkLmVxdWFsKHJhd1R4LCB0ZXN0RGF0YS5TVEFLSU5HX0FVVEhPUklaRV9SQVdfTVNHX1RYTjIpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGV4cGxhaW4gYSB0cmFuc2FjdGlvbicsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCB0eEJ1aWxkZXIgPSBmYWN0b3J5LmZyb20odGVzdERhdGEuU1RBS0lOR19BVVRIT1JJWkVfUkFXX01TR19UWE4pO1xuICAgIGNvbnN0IHR4ID0gYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCk7XG4gICAgY29uc3QgZXhwbGFpbiA9IHR4LmV4cGxhaW5UcmFuc2FjdGlvbigpO1xuICAgIHNob3VsZC5lcXVhbChleHBsYWluLnR5cGUsICdTdGFraW5nQXV0aG9yaXplUmF3Jyk7XG4gICAgc2hvdWxkLmVxdWFsKGV4cGxhaW4uYmxvY2toYXNoLCAnMzV6SGJtTnRGTkI5QUR1eDk3VWJkWTFiUVNvYmZZUjJTVW11Q25xVmZwVUInKTtcbiAgICBzaG91bGQuZGVlcEVxdWFsKGV4cGxhaW4uZHVyYWJsZU5vbmNlLCB7XG4gICAgICB3YWxsZXROb25jZUFkZHJlc3M6ICdKOGNFQ3hjVDZRNkg0ZmNRQ3ZkNExiaG1tU2pzSEw2M2twSnRyVWNyRjc0UScsXG4gICAgICBhdXRoV2FsbGV0QWRkcmVzczogJzV1VVF3N1p0VFJZZHVUNk1yc1BRZUdLQWF2UmVrMlZ6eEFxZ1V4UUUyc3p2JyxcbiAgICB9KTtcbiAgICBzaG91bGQuZGVlcEVxdWFsKGV4cGxhaW4uc3Rha2luZ0F1dGhvcml6ZSwge1xuICAgICAgc3Rha2luZ0FkZHJlc3M6ICdKOGNFQ3hjVDZRNkg0ZmNRQ3ZkNExiaG1tU2pzSEw2M2twSnRyVWNyRjc0UScsXG4gICAgICBvbGRXaXRoZHJhd0FkZHJlc3M6ICc2eGdlc0c0dmFqQ1lmQVFwa25vZHJhckQ0OVpDblhHdllBNEgxREx1R1Y3WScsXG4gICAgICBuZXdXaXRoZHJhd0FkZHJlc3M6ICc0cDFWZE42Qm5nVEFiV1I3UTVKUHBiQjZkYzRrNHk4d24xa25tbVdFamM5aScsXG4gICAgICBjdXN0b2RpYW5BZGRyZXNzOiAnREhDVmpLeTdrTjZENnZNNjluSGNFZUVlUzY4NXF0b25GYmlGTkJXNWJHaXEnLFxuICAgIH0pO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGdlbmVyYXRlIGpzb24gZnJvbSB0cmFuc2FjdGlvbicsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCB0eEJ1aWxkZXIgPSBmYWN0b3J5LmZyb20odGVzdERhdGEuU1RBS0lOR19BVVRIT1JJWkVfUkFXX01TR19UWE4pO1xuICAgIGNvbnN0IHR4ID0gYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCk7XG4gICAgY29uc3QgdHhKc29uID0gdHgudG9Kc29uKCk7XG4gICAgc2hvdWxkLmRlZXBFcXVhbCh0eEpzb24uZHVyYWJsZU5vbmNlLCB7XG4gICAgICB3YWxsZXROb25jZUFkZHJlc3M6ICdKOGNFQ3hjVDZRNkg0ZmNRQ3ZkNExiaG1tU2pzSEw2M2twSnRyVWNyRjc0UScsXG4gICAgICBhdXRoV2FsbGV0QWRkcmVzczogJzV1VVF3N1p0VFJZZHVUNk1yc1BRZUdLQWF2UmVrMlZ6eEFxZ1V4UUUyc3p2JyxcbiAgICB9KTtcbiAgICBzaG91bGQuZXF1YWwodHhKc29uLmluc3RydWN0aW9uc0RhdGEubGVuZ3RoLCAyKTtcbiAgICBzaG91bGQuZGVlcEVxdWFsKHR4SnNvbi5pbnN0cnVjdGlvbnNEYXRhWzFdLnBhcmFtcywge1xuICAgICAgc3Rha2luZ0FkZHJlc3M6ICdKOGNFQ3hjVDZRNkg0ZmNRQ3ZkNExiaG1tU2pzSEw2M2twSnRyVWNyRjc0UScsXG4gICAgICBvbGRBdXRob3JpemVBZGRyZXNzOiAnNnhnZXNHNHZhakNZZkFRcGtub2RyYXJENDlaQ25YR3ZZQTRIMURMdUdWN1knLFxuICAgICAgbmV3QXV0aG9yaXplQWRkcmVzczogJzRwMVZkTjZCbmdUQWJXUjdRNUpQcGJCNmRjNGs0eTh3bjFrbm1tV0VqYzlpJyxcbiAgICAgIGN1c3RvZGlhbkFkZHJlc3M6ICdESENWakt5N2tONkQ2dk02OW5IY0VlRWVTNjg1cXRvbkZiaUZOQlc1YkdpcScsXG4gICAgfSk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgdmFsaWRhdGUgcmF3IHRyYW5zYWN0aW9uJywgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IHR4QnVpbGRlciA9IGZhY3RvcnkuZ2V0U3Rha2luZ1Jhd01zZ0F1dGhvcml6ZUJ1aWxkZXIoKTtcbiAgICB0eEJ1aWxkZXIudmFsaWRhdGVSYXdUcmFuc2FjdGlvbih0ZXN0RGF0YS5TVEFLSU5HX0FVVEhPUklaRV9SQVdfTVNHX1RYTik7XG4gICAgc2hvdWxkKCgpID0+IHR4QnVpbGRlci52YWxpZGF0ZVJhd1RyYW5zYWN0aW9uKHRlc3REYXRhLlNUQUtJTkdfQVVUSE9SSVpFX1VOU0lHTkVEX1RYKSkudGhyb3dFcnJvcihcbiAgICAgICdJbnZhbGlkIHN0YWtpbmcgaW5zdHJ1Y3Rpb24gZGF0YTogMDEwMDAwMDA2NGM5ZWFkOWFhNmI2NTQ0NWFjZjRmYTUyNjA4MGJjZjUzYmFhYWQ1ZTBiZGI5OTU3OGM5ZmMyMzNmOWMxZGY1MDAwMDAwMDAnXG4gICAgKTtcbiAgICBzaG91bGQudGhyb3dzKCgpID0+IHR4QnVpbGRlci52YWxpZGF0ZVJhd1RyYW5zYWN0aW9uKHRlc3REYXRhLkFUQV9JTklUX1NJR05FRF9ESUZGX09XTkVSX1RYKSk7XG4gICAgc2hvdWxkLnRocm93cygoKSA9PiB0eEJ1aWxkZXIudmFsaWRhdGVSYXdUcmFuc2FjdGlvbih0ZXN0RGF0YS5UUkFOU0ZFUl9TSUdORURfVFhfV0lUSF9NRU1PX0FORF9EVVJBQkxFX05PTkNFKSk7XG4gICAgc2hvdWxkLnRocm93cygoKSA9PiB0eEJ1aWxkZXIudmFsaWRhdGVSYXdUcmFuc2FjdGlvbih0ZXN0RGF0YS5UUkFOU0ZFUl9VTlNJR05FRF9UWF9XSVRIT1VUX01FTU8pKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBmYWlsIHdyb25nIHRyYW5zYWN0aW9uIG1lc3NhZ2UgZGF0YScsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCB0eEJ1aWxkZXIgPSBmYWN0b3J5LmdldFN0YWtpbmdSYXdNc2dBdXRob3JpemVCdWlsZGVyKCk7XG4gICAgc2hvdWxkLnRocm93cygoKSA9PiB0eEJ1aWxkZXIudHJhbnNhY3Rpb25NZXNzYWdlKCd3cm9uZyBkYXRhJykpO1xuICAgIGNvbnN0IHR4QnVpbGRlcjIgPSBmYWN0b3J5LmZyb20odGVzdERhdGEuVFJBTlNGRVJfVU5TSUdORURfVFhfV0lUSF9NRU1PKTtcbiAgICBjb25zdCBtc2cgPSAoKGF3YWl0IHR4QnVpbGRlcjIuYnVpbGQoKSkgYXMgVHJhbnNhY3Rpb24pLnNpZ25hYmxlUGF5bG9hZC50b1N0cmluZygnYmFzZTY0Jyk7XG4gICAgc2hvdWxkLnRocm93cygoKSA9PiB0eEJ1aWxkZXIudHJhbnNhY3Rpb25NZXNzYWdlKG1zZykpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGZhaWwgZnJvbSB0cmFuc2FjdGlvbiBkYXRhJywgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IHR4QnVpbGRlciA9IGZhY3RvcnkuZ2V0U3Rha2luZ1Jhd01zZ0F1dGhvcml6ZUJ1aWxkZXIoKTtcbiAgICBzaG91bGQudGhyb3dzKCgpID0+IHR4QnVpbGRlci5mcm9tKHRlc3REYXRhLkFUQV9JTklUX1NJR05FRF9ESUZGX09XTkVSX1RYKSk7XG4gICAgc2hvdWxkLnRocm93cygoKSA9PiB0eEJ1aWxkZXIuZnJvbSh0ZXN0RGF0YS5UUkFOU0ZFUl9TSUdORURfVFhfV0lUSF9NRU1PX0FORF9EVVJBQkxFX05PTkNFKSk7XG4gICAgc2hvdWxkLnRocm93cygoKSA9PiB0eEJ1aWxkZXIuZnJvbSh0ZXN0RGF0YS5UUkFOU0ZFUl9VTlNJR05FRF9UWF9XSVRIT1VUX01FTU8pKTtcbiAgfSk7XG59KTtcbiJdfQ==
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tokenTransferBuilder.d.ts","sourceRoot":"","sources":["../../../../test/unit/transactionBuilder/tokenTransferBuilder.ts"],"names":[],"mappings":""}
|