@bitgo-beta/sdk-coin-ada 2.3.14-beta.185 → 2.3.14-beta.1850
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/ada.d.ts +15 -13
- package/dist/src/ada.d.ts.map +1 -1
- package/dist/src/ada.js +124 -42
- package/dist/src/adaToken.d.ts +16 -11
- package/dist/src/adaToken.d.ts.map +1 -1
- package/dist/src/adaToken.js +109 -3
- package/dist/src/index.js +6 -2
- package/dist/src/lib/index.d.ts +3 -1
- package/dist/src/lib/index.d.ts.map +1 -1
- package/dist/src/lib/index.js +29 -9
- package/dist/src/lib/keyPair.js +29 -16
- package/dist/src/lib/messages/cip8/cip8Message.d.ts +25 -0
- package/dist/src/lib/messages/cip8/cip8Message.d.ts.map +1 -0
- package/dist/src/lib/messages/cip8/cip8Message.js +140 -0
- package/dist/src/lib/messages/cip8/cip8MessageBuilder.d.ts +19 -0
- package/dist/src/lib/messages/cip8/cip8MessageBuilder.d.ts.map +1 -0
- package/dist/src/lib/messages/cip8/cip8MessageBuilder.js +27 -0
- package/dist/src/lib/messages/cip8/index.d.ts +4 -0
- package/dist/src/lib/messages/cip8/index.d.ts.map +1 -0
- package/dist/src/lib/messages/cip8/index.js +20 -0
- package/dist/src/lib/messages/cip8/utils.d.ts +24 -0
- package/dist/src/lib/messages/cip8/utils.d.ts.map +1 -0
- package/dist/src/lib/messages/cip8/utils.js +73 -0
- package/dist/src/lib/messages/index.d.ts +3 -0
- package/dist/src/lib/messages/index.d.ts.map +1 -0
- package/dist/src/lib/messages/index.js +19 -0
- package/dist/src/lib/messages/messageBuilderFactory.d.ts +7 -0
- package/dist/src/lib/messages/messageBuilderFactory.d.ts.map +1 -0
- package/dist/src/lib/messages/messageBuilderFactory.js +20 -0
- package/dist/src/lib/stakingActivateBuilder.d.ts +1 -1
- package/dist/src/lib/stakingActivateBuilder.d.ts.map +1 -1
- package/dist/src/lib/stakingActivateBuilder.js +30 -10
- package/dist/src/lib/stakingDeactivateBuilder.js +24 -10
- package/dist/src/lib/transaction.d.ts +24 -7
- package/dist/src/lib/transaction.d.ts.map +1 -1
- package/dist/src/lib/transaction.js +81 -17
- package/dist/src/lib/transactionBuilder.d.ts +114 -3
- package/dist/src/lib/transactionBuilder.d.ts.map +1 -1
- package/dist/src/lib/transactionBuilder.js +464 -20
- package/dist/src/lib/transactionBuilderFactory.d.ts +2 -0
- package/dist/src/lib/transactionBuilderFactory.d.ts.map +1 -1
- package/dist/src/lib/transactionBuilderFactory.js +7 -1
- package/dist/src/lib/utils.d.ts +22 -0
- package/dist/src/lib/utils.d.ts.map +1 -1
- package/dist/src/lib/utils.js +152 -17
- package/dist/src/lib/voteDelegationBuilder.d.ts +24 -0
- package/dist/src/lib/voteDelegationBuilder.d.ts.map +1 -0
- package/dist/src/lib/voteDelegationBuilder.js +84 -0
- package/dist/test/resources/cip8Resources.d.ts +25 -0
- package/dist/test/resources/cip8Resources.d.ts.map +1 -0
- package/dist/test/resources/cip8Resources.js +76 -0
- package/dist/test/resources/index.d.ts +458 -0
- package/dist/test/resources/index.d.ts.map +1 -0
- package/dist/test/resources/index.js +659 -0
- package/dist/test/unit/StakingActivateBuilder.d.ts +2 -0
- package/dist/test/unit/StakingActivateBuilder.d.ts.map +1 -0
- package/dist/test/unit/StakingActivateBuilder.js +213 -0
- package/dist/test/unit/StakingDeactivateBuilder.d.ts +2 -0
- package/dist/test/unit/StakingDeactivateBuilder.d.ts.map +1 -0
- package/dist/test/unit/StakingDeactivateBuilder.js +158 -0
- package/dist/test/unit/ada.d.ts +5 -0
- package/dist/test/unit/ada.d.ts.map +1 -0
- package/dist/test/unit/ada.js +1430 -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/index.d.ts +2 -0
- package/dist/test/unit/index.d.ts.map +1 -0
- package/dist/test/unit/index.js +32 -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 +88 -0
- package/dist/test/unit/messages/cip8/cip8Message.d.ts +2 -0
- package/dist/test/unit/messages/cip8/cip8Message.d.ts.map +1 -0
- package/dist/test/unit/messages/cip8/cip8Message.js +131 -0
- package/dist/test/unit/messages/cip8/cip8MessageBuilder.d.ts +2 -0
- package/dist/test/unit/messages/cip8/cip8MessageBuilder.d.ts.map +1 -0
- package/dist/test/unit/messages/cip8/cip8MessageBuilder.js +132 -0
- package/dist/test/unit/messages/cip8/utils.d.ts +2 -0
- package/dist/test/unit/messages/cip8/utils.d.ts.map +1 -0
- package/dist/test/unit/messages/cip8/utils.js +127 -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 +35 -0
- package/dist/test/unit/stakingClaimRewardsBuilder.d.ts +2 -0
- package/dist/test/unit/stakingClaimRewardsBuilder.d.ts.map +1 -0
- package/dist/test/unit/stakingClaimRewardsBuilder.js +70 -0
- package/dist/test/unit/stakingPledgeBuilder.d.ts +2 -0
- package/dist/test/unit/stakingPledgeBuilder.d.ts.map +1 -0
- package/dist/test/unit/stakingPledgeBuilder.js +141 -0
- package/dist/test/unit/stakingWithdrawBuilder.d.ts +2 -0
- package/dist/test/unit/stakingWithdrawBuilder.d.ts.map +1 -0
- package/dist/test/unit/stakingWithdrawBuilder.js +167 -0
- package/dist/test/unit/tokenWithdrawal.d.ts +2 -0
- package/dist/test/unit/tokenWithdrawal.d.ts.map +1 -0
- package/dist/test/unit/tokenWithdrawal.js +959 -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 +100 -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 +545 -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 +138 -0
- package/dist/test/unit/voteDelegationBuilder.d.ts +2 -0
- package/dist/test/unit/voteDelegationBuilder.d.ts.map +1 -0
- package/dist/test/unit/voteDelegationBuilder.js +96 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/package.json +18 -13
- package/.eslintignore +0 -5
- package/.mocharc.yml +0 -8
- package/CHANGELOG.md +0 -470
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StakingActivateBuilder.d.ts","sourceRoot":"","sources":["../../../test/unit/StakingActivateBuilder.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,213 @@
|
|
|
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 sdk_core_1 = require("@bitgo-beta/sdk-core");
|
|
41
|
+
const testData = __importStar(require("../resources"));
|
|
42
|
+
const src_1 = require("../../src");
|
|
43
|
+
const statics_1 = require("@bitgo-beta/statics");
|
|
44
|
+
const transaction_1 = require("../../src/lib/transaction");
|
|
45
|
+
const Utils = __importStar(require("../../src/lib/utils"));
|
|
46
|
+
describe('ADA Staking Activate Transaction Builder', async () => {
|
|
47
|
+
const factory = new src_1.TransactionBuilderFactory(statics_1.coins.get('tada'));
|
|
48
|
+
it('start and build an unsigned staking activate tx', async () => {
|
|
49
|
+
const keyPairStake = new src_1.KeyPair({ prv: testData.privateKeys.prvKey2 });
|
|
50
|
+
const txBuilder = factory.getStakingActivateBuilder();
|
|
51
|
+
txBuilder.input({
|
|
52
|
+
transaction_id: '3677e75c7ba699bfdc6cd57d42f246f86f63aefd76025006ac78313fad2bba21',
|
|
53
|
+
transaction_index: 1,
|
|
54
|
+
});
|
|
55
|
+
const totalInput = '4000000';
|
|
56
|
+
txBuilder.changeAddress('addr1q8rm9z7w4yx5gz652kn2q238efvms6t0qelur9nlglun8eu4tr5knj4fu4adelzqhxg8adu5xca4jra0gtllfrpcawyq9psz23', totalInput);
|
|
57
|
+
txBuilder.stakingCredential(keyPairStake.getKeys().pub, '7a623c48348501c2380e60ac2307fcd1b67df4218f819930821a15b3', 'always-abstain');
|
|
58
|
+
txBuilder.ttl(800000000);
|
|
59
|
+
const tx = (await txBuilder.build());
|
|
60
|
+
should_1.default.equal(tx.type, sdk_core_1.TransactionType.StakingActivate);
|
|
61
|
+
const txData = tx.toJson();
|
|
62
|
+
const fee = tx.getFee;
|
|
63
|
+
txData.certs.length.should.equal(3);
|
|
64
|
+
txData.certs[0].type.should.equal(0);
|
|
65
|
+
txData.certs[1].type.should.equal(1);
|
|
66
|
+
txData.certs[2].type.should.equal(transaction_1.CertType.VoteDelegation);
|
|
67
|
+
txData.outputs.length.should.equal(1);
|
|
68
|
+
txData.outputs[0].amount.should.equal((Number(totalInput) - 2000000 - Number(fee)).toString());
|
|
69
|
+
fee.should.equal('171529');
|
|
70
|
+
tx.toBroadcastFormat().should.equal(testData.rawTx.unsignedStakingActiveTx);
|
|
71
|
+
should_1.default.equal(tx.id, testData.rawTx.unsignedStakingActiveTxHash);
|
|
72
|
+
});
|
|
73
|
+
it('should explain a tx', async () => {
|
|
74
|
+
const keyPairStake = new src_1.KeyPair({ prv: testData.privateKeys.prvKey2 });
|
|
75
|
+
const txBuilder = factory.getStakingActivateBuilder();
|
|
76
|
+
txBuilder.input({
|
|
77
|
+
transaction_id: '3677e75c7ba699bfdc6cd57d42f246f86f63aefd76025006ac78313fad2bba21',
|
|
78
|
+
transaction_index: 1,
|
|
79
|
+
});
|
|
80
|
+
const totalInput = '4000000';
|
|
81
|
+
txBuilder.changeAddress('addr1q8rm9z7w4yx5gz652kn2q238efvms6t0qelur9nlglun8eu4tr5knj4fu4adelzqhxg8adu5xca4jra0gtllfrpcawyq9psz23', totalInput);
|
|
82
|
+
txBuilder.stakingCredential(keyPairStake.getKeys().pub, '7a623c48348501c2380e60ac2307fcd1b67df4218f819930821a15b3', 'always-abstain');
|
|
83
|
+
txBuilder.ttl(800000000);
|
|
84
|
+
const tx = (await txBuilder.build());
|
|
85
|
+
should_1.default.equal(tx.type, sdk_core_1.TransactionType.StakingActivate);
|
|
86
|
+
tx.explainTransaction();
|
|
87
|
+
});
|
|
88
|
+
// it('build a stakingActivate from rawTx', async () => {
|
|
89
|
+
// const txBuilder = factory.from(testData.rawTx.unsignedStakingActiveTx);
|
|
90
|
+
// const builtTx = (await txBuilder.build()) as Transaction;
|
|
91
|
+
// should.equal(builtTx.type, TransactionType.StakingActivate);
|
|
92
|
+
// should.equal(builtTx.id, testData.rawTx.unsignedStakingActiveTxHash);
|
|
93
|
+
// const txData = builtTx.toJson();
|
|
94
|
+
// const fee = builtTx.getFee;
|
|
95
|
+
// txData.certs.length.should.equal(2);
|
|
96
|
+
// txData.certs[0].type.should.equal(0);
|
|
97
|
+
// txData.certs[1].type.should.equal(1);
|
|
98
|
+
//
|
|
99
|
+
// txData.outputs.length.should.equal(1);
|
|
100
|
+
// const totalInput = '4000000';
|
|
101
|
+
// txData.outputs[0].amount.should.equal((Number(totalInput) - 2000000 - Number(fee)).toString());
|
|
102
|
+
// fee.should.equal('174389');
|
|
103
|
+
// });
|
|
104
|
+
// it('should submit a staking activate transaction', async () => {
|
|
105
|
+
// const keyPair = new KeyPair({ prv: testData.privateKeys.prvKey9 });
|
|
106
|
+
// const keyPairStaking = new KeyPair({ prv: testData.privateKeys.prvKey10 });
|
|
107
|
+
// const senderAddress = Utils.default.createBaseAddressWithStakeAndPaymentKey(
|
|
108
|
+
// keyPairStaking,
|
|
109
|
+
// keyPair,
|
|
110
|
+
// AddressFormat.testnet
|
|
111
|
+
// );
|
|
112
|
+
// const axiosConfig = {
|
|
113
|
+
// headers: {
|
|
114
|
+
// 'Content-Type': 'application/cbor',
|
|
115
|
+
// },
|
|
116
|
+
// timeout: 10000,
|
|
117
|
+
// };
|
|
118
|
+
//
|
|
119
|
+
// const txBuilder = factory.getStakingActivateBuilder();
|
|
120
|
+
// const utxoData = await axios.get('https://testnet.koios.rest/api/v0/address_info?_address=' + senderAddress);
|
|
121
|
+
// const senderBalance = utxoData.data[0].balance;
|
|
122
|
+
// txBuilder.changeAddress(senderAddress, senderBalance);
|
|
123
|
+
// const utxoSet = utxoData.data[0].utxo_set;
|
|
124
|
+
// for (const utxo of utxoSet) {
|
|
125
|
+
// txBuilder.input({ transaction_id: utxo.tx_hash, transaction_index: utxo.tx_index });
|
|
126
|
+
// }
|
|
127
|
+
//
|
|
128
|
+
// txBuilder.ttl(800000000);
|
|
129
|
+
// txBuilder.stakingCredential(
|
|
130
|
+
// keyPairStaking.getKeys().pub,
|
|
131
|
+
// '7a623c48348501c2380e60ac2307fcd1b67df4218f819930821a15b3'
|
|
132
|
+
// );
|
|
133
|
+
// txBuilder.sign({ key: keyPair.getKeys().prv });
|
|
134
|
+
// txBuilder.sign({ key: keyPairStaking.getKeys().prv });
|
|
135
|
+
//
|
|
136
|
+
// const tx = await txBuilder.build();
|
|
137
|
+
// const serializedTx = tx.toBroadcastFormat();
|
|
138
|
+
// const bytes = Uint8Array.from(Buffer.from(serializedTx, 'hex'));
|
|
139
|
+
//
|
|
140
|
+
// try {
|
|
141
|
+
// const res = await axios.post('https://testnet.koios.rest/api/v0/submittx', bytes, axiosConfig);
|
|
142
|
+
// console.log(res);
|
|
143
|
+
// } catch (err) {
|
|
144
|
+
// console.log(err);
|
|
145
|
+
// }
|
|
146
|
+
// });
|
|
147
|
+
it('should submit a staking transaction using signature interface', async () => {
|
|
148
|
+
const keyPairPayment = new src_1.KeyPair({ prv: testData.privateKeys.prvKey9 });
|
|
149
|
+
const keyPairStake = new src_1.KeyPair({ prv: testData.privateKeys.prvKey10 });
|
|
150
|
+
const senderAddress = Utils.default.createBaseAddressWithStakeAndPaymentKey(keyPairStake, keyPairPayment, sdk_core_1.AddressFormat.testnet);
|
|
151
|
+
const txBuilder = factory.getStakingActivateBuilder();
|
|
152
|
+
const senderBalance = '22122071';
|
|
153
|
+
txBuilder.changeAddress(senderAddress, senderBalance);
|
|
154
|
+
txBuilder.stakingCredential(keyPairStake.getKeys().pub, '7a623c48348501c2380e60ac2307fcd1b67df4218f819930821a15b3', 'always-no-confidence');
|
|
155
|
+
txBuilder.input({
|
|
156
|
+
transaction_id: '0a4f80d83ba9ce1f83306a79252909241308d7eff317d04c9ea018966d687fe3',
|
|
157
|
+
transaction_index: 0,
|
|
158
|
+
});
|
|
159
|
+
txBuilder.ttl(900000000);
|
|
160
|
+
const unsignedTx = await txBuilder.build();
|
|
161
|
+
const signableHex = unsignedTx.signablePayload.toString('hex');
|
|
162
|
+
const serializedTx = unsignedTx.toBroadcastFormat();
|
|
163
|
+
txBuilder.sign({ key: keyPairPayment.getKeys().prv });
|
|
164
|
+
txBuilder.sign({ key: keyPairStake.getKeys().prv });
|
|
165
|
+
const signedTransaction = await txBuilder.build();
|
|
166
|
+
const serializedTransaction = signedTransaction.toBroadcastFormat();
|
|
167
|
+
const txBuilder2 = factory.from(serializedTx);
|
|
168
|
+
const tx = await txBuilder2.build();
|
|
169
|
+
tx.type.should.equal(sdk_core_1.TransactionType.StakingActivate);
|
|
170
|
+
const signableHex2 = tx.signablePayload.toString('hex');
|
|
171
|
+
signableHex.should.equal(signableHex2);
|
|
172
|
+
const signaturePayment = keyPairPayment.signMessage(signableHex2);
|
|
173
|
+
const signatureStake = keyPairStake.signMessage(signableHex2);
|
|
174
|
+
txBuilder2.addSignature({ pub: keyPairPayment.getKeys().pub }, Buffer.from(signaturePayment));
|
|
175
|
+
txBuilder2.addSignature({ pub: keyPairStake.getKeys().pub }, Buffer.from(signatureStake));
|
|
176
|
+
const signedTransaction2 = await txBuilder2.build();
|
|
177
|
+
signedTransaction.id.should.equal(tx.id);
|
|
178
|
+
const serializedTransaction2 = signedTransaction2.toBroadcastFormat();
|
|
179
|
+
serializedTransaction2.should.equal(serializedTransaction);
|
|
180
|
+
});
|
|
181
|
+
it('should submit a staking transaction using one signature', async () => {
|
|
182
|
+
const keyPairPayment = new src_1.KeyPair({ prv: testData.privateKeys.prvKey9 });
|
|
183
|
+
const keyPairStake = keyPairPayment;
|
|
184
|
+
const senderAddress = Utils.default.createBaseAddressWithStakeAndPaymentKey(keyPairStake, keyPairPayment, sdk_core_1.AddressFormat.testnet);
|
|
185
|
+
const txBuilder = factory.getStakingActivateBuilder();
|
|
186
|
+
const senderBalance = '22122071';
|
|
187
|
+
txBuilder.changeAddress(senderAddress, senderBalance);
|
|
188
|
+
txBuilder.stakingCredential(keyPairStake.getKeys().pub, '7a623c48348501c2380e60ac2307fcd1b67df4218f819930821a15b3', 'always-no-confidence');
|
|
189
|
+
txBuilder.input({
|
|
190
|
+
transaction_id: '0a4f80d83ba9ce1f83306a79252909241308d7eff317d04c9ea018966d687fe3',
|
|
191
|
+
transaction_index: 0,
|
|
192
|
+
});
|
|
193
|
+
txBuilder.ttl(900000000);
|
|
194
|
+
const unsignedTx = await txBuilder.build();
|
|
195
|
+
const signableHex = unsignedTx.signablePayload.toString('hex');
|
|
196
|
+
const serializedTx = unsignedTx.toBroadcastFormat();
|
|
197
|
+
txBuilder.sign({ key: keyPairPayment.getKeys().prv });
|
|
198
|
+
const signedTransaction = await txBuilder.build();
|
|
199
|
+
const serializedTransaction = signedTransaction.toBroadcastFormat();
|
|
200
|
+
const txBuilder2 = factory.from(serializedTx);
|
|
201
|
+
const tx = await txBuilder2.build();
|
|
202
|
+
tx.type.should.equal(sdk_core_1.TransactionType.StakingActivate);
|
|
203
|
+
const signableHex2 = tx.signablePayload.toString('hex');
|
|
204
|
+
signableHex.should.equal(signableHex2);
|
|
205
|
+
const signaturePayment = keyPairPayment.signMessage(signableHex2);
|
|
206
|
+
txBuilder2.addSignature({ pub: keyPairPayment.getKeys().pub }, Buffer.from(signaturePayment));
|
|
207
|
+
const signedTransaction2 = await txBuilder2.build();
|
|
208
|
+
signedTransaction.id.should.equal(tx.id);
|
|
209
|
+
const serializedTransaction2 = signedTransaction2.toBroadcastFormat();
|
|
210
|
+
serializedTransaction2.should.equal(serializedTransaction);
|
|
211
|
+
});
|
|
212
|
+
});
|
|
213
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU3Rha2luZ0FjdGl2YXRlQnVpbGRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Rlc3QvdW5pdC9TdGFraW5nQWN0aXZhdGVCdWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsb0RBQTRCO0FBQzVCLG1EQUFzRTtBQUN0RSx1REFBeUM7QUFDekMsbUNBQStEO0FBQy9ELGlEQUE0QztBQUM1QywyREFBa0U7QUFDbEUsMkRBQTZDO0FBRTdDLFFBQVEsQ0FBQywwQ0FBMEMsRUFBRSxLQUFLLElBQUksRUFBRTtJQUM5RCxNQUFNLE9BQU8sR0FBRyxJQUFJLCtCQUF5QixDQUFDLGVBQUssQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUVqRSxFQUFFLENBQUMsaURBQWlELEVBQUUsS0FBSyxJQUFJLEVBQUU7UUFDL0QsTUFBTSxZQUFZLEdBQUcsSUFBSSxhQUFPLENBQUMsRUFBRSxHQUFHLEVBQUUsUUFBUSxDQUFDLFdBQVcsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO1FBQ3hFLE1BQU0sU0FBUyxHQUFHLE9BQU8sQ0FBQyx5QkFBeUIsRUFBRSxDQUFDO1FBQ3RELFNBQVMsQ0FBQyxLQUFLLENBQUM7WUFDZCxjQUFjLEVBQUUsa0VBQWtFO1lBQ2xGLGlCQUFpQixFQUFFLENBQUM7U0FDckIsQ0FBQyxDQUFDO1FBQ0gsTUFBTSxVQUFVLEdBQUcsU0FBUyxDQUFDO1FBQzdCLFNBQVMsQ0FBQyxhQUFhLENBQ3JCLHlHQUF5RyxFQUN6RyxVQUFVLENBQ1gsQ0FBQztRQUNGLFNBQVMsQ0FBQyxpQkFBaUIsQ0FDekIsWUFBWSxDQUFDLE9BQU8sRUFBRSxDQUFDLEdBQUcsRUFDMUIsMERBQTBELEVBQzFELGdCQUFnQixDQUNqQixDQUFDO1FBQ0YsU0FBUyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUN6QixNQUFNLEVBQUUs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QUFDLGlCQUFpQixFQUFFLENBQUM7UUFFcEUsTUFBTSxVQUFVLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUM5QyxNQUFNLEVBQUUsR0FBRyxNQUFNLFVBQVUsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNwQyxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsMEJBQWUsQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUN0RCxNQUFNLFlBQVksR0FBRyxFQUFFLENBQUMsZUFBZSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN4RCxXQUFXLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUN2QyxNQUFNLGdCQUFnQixHQUFHLGNBQWMsQ0FBQyxXQUFXLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDbEUsVUFBVSxDQUFDLFlBQVksQ0FBQyxFQUFFLEdBQUcsRUFBRSxjQUFjLENBQUMsT0FBTyxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUM7UUFDOUYsTUFBTSxrQkFBa0IsR0FBRyxNQUFNLFVBQVUsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNwRCxpQkFBaUIsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDekMsTUFBTSxzQkFBc0IsR0FBRyxrQkFBa0IsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1FBQ3RFLHNCQUFzQixDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMscUJBQXFCLENBQUMsQ0FBQztJQUM3RCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHNob3VsZCBmcm9tICdzaG91bGQnO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb25UeXBlLCBBZGRyZXNzRm9ybWF0IH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuaW1wb3J0ICogYXMgdGVzdERhdGEgZnJvbSAnLi4vcmVzb3VyY2VzJztcbmltcG9ydCB7IEtleVBhaXIsIFRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnkgfSBmcm9tICcuLi8uLi9zcmMnO1xuaW1wb3J0IHsgY29pbnMgfSBmcm9tICdAYml0Z28tYmV0YS9zdGF0aWNzJztcbmltcG9ydCB7IENlcnRUeXBlLCBUcmFuc2FjdGlvbiB9IGZyb20gJy4uLy4uL3NyYy9saWIvdHJhbnNhY3Rpb24nO1xuaW1wb3J0ICogYXMgVXRpbHMgZnJvbSAnLi4vLi4vc3JjL2xpYi91dGlscyc7XG5cbmRlc2NyaWJlKCdBREEgU3Rha2luZyBBY3RpdmF0ZSBUcmFuc2FjdGlvbiBCdWlsZGVyJywgYXN5bmMgKCkgPT4ge1xuICBjb25zdCBmYWN0b3J5ID0gbmV3IFRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnkoY29pbnMuZ2V0KCd0YWRhJykpO1xuXG4gIGl0KCdzdGFydCBhbmQgYnVpbGQgYW4gdW5zaWduZWQgc3Rha2luZyBhY3RpdmF0ZSB0eCcsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCBrZXlQYWlyU3Rha2UgPSBuZXcgS2V5UGFpcih7IHBydjogdGVzdERhdGEucHJpdmF0ZUtleXMucHJ2S2V5MiB9KTtcbiAgICBjb25zdCB0eEJ1aWxkZXIgPSBmYWN0b3J5LmdldFN0YWtpbmdBY3RpdmF0ZUJ1aWxkZXIoKTtcbiAgICB0eEJ1aWxkZXIuaW5wdXQoe1xuICAgICAgdHJhbnNhY3Rpb25faWQ6ICczNjc3ZTc1YzdiYTY5OWJmZGM2Y2Q1N2Q0MmYyNDZmODZmNjNhZWZkNzYwMjUwMDZhYzc4MzEzZmFkMmJiYTIxJyxcbiAgICAgIHRyYW5zYWN0aW9uX2luZGV4OiAxLFxuICAgIH0pO1xuICAgIGNvbnN0IHRvdGFsSW5wdXQgPSAnNDAwMDAwMCc7XG4gICAgdHhCdWlsZGVyLmNoYW5nZUFkZHJlc3MoXG4gICAgICAnYWRkcjFxOHJtOXo3dzR5eDVnejY1MmtuMnEyMzhlZnZtczZ0MHFlbHVyOW5sZ2x1bjhldTR0cjVrbmo0ZnU0YWRlbHpxaHhnOGFkdTV4Y2E0anJhMGd0bGxmcnBjYXd5cTlwc3oyMycsXG4gICAgICB0b3RhbElucHV0XG4gICAgKTtcbiAgICB0eEJ1aWxkZXIuc3Rha2luZ0NyZWRlbnRpYWwoXG4gICAgICBrZXlQYWlyU3Rha2UuZ2V0S2V5cygpLnB1YixcbiAgICAgICc3YTYyM2M0ODM0ODUwMWMyMzgwZTYwYWMyMzA3ZmNkMWI2N2RmNDIxOGY4MTk5MzA4MjFhMTViMycsXG4gICAgICAnYWx3YXlzLWFic3RhaW4nXG4gICAgKTtcbiAgICB0eEJ1aWxkZXIudHRsKDgwMDAwMDAwMCk7XG4gICAgY29uc3QgdHggPSAoYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCkpIGFzIFRyYW5zYWN0aW9uO1xuICAgIHNob3VsZC5lcXVhbCh0eC50eXBlLCBUcmFuc2FjdGlvblR5cGUuU3Rha2luZ0FjdGl2YXRlKTtcbiAgICBjb25zdCB0eERhdGEgPSB0eC50b0pzb24oKTtcbiAgICBjb25zdCBmZWUgPSB0eC5nZXRGZWU7XG4gICAgdHhEYXRhLmNlcnRzLmxlbmd0aC5zaG91bGQuZXF1YWwoMyk7XG4gICAgdHhEYXRhLmNlcnRzWzBdLnR5cGUuc2hvdWxkLmVxdWFsKDApO1xuICAgIHR4RGF0YS5jZXJ0c1sxXS50eXBlLnNob3VsZC5lcXVhbCgxKTtcbiAgICB0eERhdGEuY2VydHNbMl0udHlwZS5zaG91bGQuZXF1YWwoQ2VydFR5cGUuVm90ZURlbGVnYXRpb24pO1xuXG4gICAgdHhEYXRhLm91dHB1dHMubGVuZ3RoLnNob3VsZC5lcXVhbCgxKTtcbiAgICB0eERhdGEub3V0cHV0c1swXS5hbW91bnQuc2hvdWxkLmVxdWFsKChOdW1iZXIodG90YWxJbnB1dCkgLSAyMDAwMDAwIC0gTnVtYmVyKGZlZSkpLnRvU3RyaW5nKCkpO1xuICAgIGZlZS5zaG91bGQuZXF1YWwoJzE3MTUyOScpO1xuICAgIHR4LnRvQnJvYWRjYXN0Rm9ybWF0KCkuc2hvdWxkLmVxdWFsKHRlc3REYXRhLnJhd1R4LnVuc2lnbmVkU3Rha2luZ0FjdGl2ZVR4KTtcbiAgICBzaG91bGQuZXF1YWwodHguaWQsIHRlc3REYXRhLnJhd1R4LnVuc2lnbmVkU3Rha2luZ0FjdGl2ZVR4SGFzaCk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgZXhwbGFpbiBhIHR4JywgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IGtleVBhaXJTdGFrZSA9IG5ldyBLZXlQYWlyKHsgcHJ2OiB0ZXN0RGF0YS5wcml2YXRlS2V5cy5wcnZLZXkyIH0pO1xuICAgIGNvbnN0IHR4QnVpbGRlciA9IGZhY3RvcnkuZ2V0U3Rha2luZ0FjdGl2YXRlQnVpbGRlcigpO1xuICAgIHR4QnVpbGRlci5pbnB1dCh7XG4gICAgICB0cmFuc2FjdGlvbl9pZDogJzM2NzdlNzVjN2JhNjk5YmZkYzZjZDU3ZDQyZjI0NmY4NmY2M2FlZmQ3NjAyNTAwNmFjNzgzMTNmYWQyYmJhMjEnLFxuICAgICAgdHJhbnNhY3Rpb25faW5kZXg6IDEsXG4gICAgfSk7XG4gICAgY29uc3QgdG90YWxJbnB1dCA9ICc0MDAwMDAwJztcbiAgICB0eEJ1aWxkZXIuY2hhbmdlQWRkcmVzcyhcbiAgICAgICdhZGRyMXE4cm05ejd3NHl4NWd6NjUya24ycTIzOGVmdm1zNnQwcWVsdXI5bmxnbHVuOGV1NHRyNWtuajRmdTRhZGVsenFoeGc4YWR1NXhjYTRqcmEwZ3RsbGZycGNhd3lxOXBzejIzJyxcbiAgICAgIHRvdGFsSW5wdXRcbiAgICApO1xuICAgIHR4QnVpbGRlci5zdGFraW5nQ3JlZGVudGlhbChcbiAgICAgIGtleVBhaXJTdGFrZS5nZXRLZXlzKCkucHViLFxuICAgICAgJzdhNjIzYzQ4MzQ4NTAxYzIzODBlNjBhYzIzMDdmY2QxYjY3ZGY0MjE4ZjgxOTkzMDgyMWExNWIzJyxcbiAgICAgICdhbHdheXMtYWJzdGFpbidcbiAgICApO1xuICAgIHR4QnVpbGRlci50dGwoODAwMDAwMDAwKTtcbiAgICBjb25zdCB0eCA9IChhd2FpdCB0eEJ1aWxkZXIuYnVpbGQoKSkgYXMgVHJhbnNhY3Rpb247XG4gICAgc2hvdWxkLmVxdWFsKHR4LnR5cGUsIFRyYW5zYWN0aW9uVHlwZS5TdGFraW5nQWN0aXZhdGUpO1xuICAgIHR4LmV4cGxhaW5UcmFuc2FjdGlvbigpO1xuICB9KTtcblxuICAvLyBpdCgnYnVpbGQgYSBzdGFraW5nQWN0aXZhdGUgZnJvbSByYXdUeCcsIGFzeW5jICgpID0+IHtcbiAgLy8gICBjb25zdCB0eEJ1aWxkZXIgPSBmYWN0b3J5LmZyb20odGVzdERhdGEucmF3VHgudW5zaWduZWRTdGFraW5nQWN0aXZlVHgpO1xuICAvLyAgIGNvbnN0IGJ1aWx0VHggPSAoYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCkpIGFzIFRyYW5zYWN0aW9uO1xuICAvLyAgIHNob3VsZC5lcXVhbChidWlsdFR4LnR5cGUsIFRyYW5zYWN0aW9uVHlwZS5TdGFraW5nQWN0aXZhdGUpO1xuICAvLyAgIHNob3VsZC5lcXVhbChidWlsdFR4LmlkLCB0ZXN0RGF0YS5yYXdUeC51bnNpZ25lZFN0YWtpbmdBY3RpdmVUeEhhc2gpO1xuICAvLyAgIGNvbnN0IHR4RGF0YSA9IGJ1aWx0VHgudG9Kc29uKCk7XG4gIC8vICAgY29uc3QgZmVlID0gYnVpbHRUeC5nZXRGZWU7XG4gIC8vICAgdHhEYXRhLmNlcnRzLmxlbmd0aC5zaG91bGQuZXF1YWwoMik7XG4gIC8vICAgdHhEYXRhLmNlcnRzWzBdLnR5cGUuc2hvdWxkLmVxdWFsKDApO1xuICAvLyAgIHR4RGF0YS5jZXJ0c1sxXS50eXBlLnNob3VsZC5lcXVhbCgxKTtcbiAgLy9cbiAgLy8gICB0eERhdGEub3V0cHV0cy5sZW5ndGguc2hvdWxkLmVxdWFsKDEpO1xuICAvLyAgIGNvbnN0IHRvdGFsSW5wdXQgPSAnNDAwMDAwMCc7XG4gIC8vICAgdHhEYXRhLm91dHB1dHNbMF0uYW1vdW50LnNob3VsZC5lcXVhbCgoTnVtYmVyKHRvdGFsSW5wdXQpIC0gMjAwMDAwMCAtIE51bWJlcihmZWUpKS50b1N0cmluZygpKTtcbiAgLy8gICBmZWUuc2hvdWxkLmVxdWFsKCcxNzQzODknKTtcbiAgLy8gfSk7XG5cbiAgLy8gaXQoJ3Nob3VsZCBzdWJtaXQgYSBzdGFraW5nIGFjdGl2YXRlIHRyYW5zYWN0aW9uJywgYXN5bmMgKCkgPT4ge1xuICAvLyAgIGNvbnN0IGtleVBhaXIgPSBuZXcgS2V5UGFpcih7IHBydjogdGVzdERhdGEucHJpdmF0ZUtleXMucHJ2S2V5OSB9KTtcbiAgLy8gICBjb25zdCBrZXlQYWlyU3Rha2luZyA9IG5ldyBLZXlQYWlyKHsgcHJ2OiB0ZXN0RGF0YS5wcml2YXRlS2V5cy5wcnZLZXkxMCB9KTtcbiAgLy8gICBjb25zdCBzZW5kZXJBZGRyZXNzID0gVXRpbHMuZGVmYXVsdC5jcmVhdGVCYXNlQWRkcmVzc1dpdGhTdGFrZUFuZFBheW1lbnRLZXkoXG4gIC8vICAgICBrZXlQYWlyU3Rha2luZyxcbiAgLy8gICAgIGtleVBhaXIsXG4gIC8vICAgICBBZGRyZXNzRm9ybWF0LnRlc3RuZXRcbiAgLy8gICApO1xuICAvLyAgIGNvbnN0IGF4aW9zQ29uZmlnID0ge1xuICAvLyAgICAgaGVhZGVyczoge1xuICAvLyAgICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2Nib3InLFxuICAvLyAgICAgfSxcbiAgLy8gICAgIHRpbWVvdXQ6IDEwMDAwLFxuICAvLyAgIH07XG4gIC8vXG4gIC8vICAgY29uc3QgdHhCdWlsZGVyID0gZmFjdG9yeS5nZXRTdGFraW5nQWN0aXZhdGVCdWlsZGVyKCk7XG4gIC8vICAgY29uc3QgdXR4b0RhdGEgPSBhd2FpdCBheGlvcy5nZXQoJ2h0dHBzOi8vdGVzdG5ldC5rb2lvcy5yZXN0L2FwaS92MC9hZGRyZXNzX2luZm8/X2FkZHJlc3M9JyArIHNlbmRlckFkZHJlc3MpO1xuICAvLyAgIGNvbnN0IHNlbmRlckJhbGFuY2UgPSB1dHhvRGF0YS5kYXRhWzBdLmJhbGFuY2U7XG4gIC8vICAgdHhCdWlsZGVyLmNoYW5nZUFkZHJlc3Moc2VuZGVyQWRkcmVzcywgc2VuZGVyQmFsYW5jZSk7XG4gIC8vICAgY29uc3QgdXR4b1NldCA9IHV0eG9EYXRhLmRhdGFbMF0udXR4b19zZXQ7XG4gIC8vICAgZm9yIChjb25zdCB1dHhvIG9mIHV0eG9TZXQpIHtcbiAgLy8gICAgIHR4QnVpbGRlci5pbnB1dCh7IHRyYW5zYWN0aW9uX2lkOiB1dHhvLnR4X2hhc2gsIHRyYW5zYWN0aW9uX2luZGV4OiB1dHhvLnR4X2luZGV4IH0pO1xuICAvLyAgIH1cbiAgLy9cbiAgLy8gICB0eEJ1aWxkZXIudHRsKDgwMDAwMDAwMCk7XG4gIC8vICAgdHhCdWlsZGVyLnN0YWtpbmdDcmVkZW50aWFsKFxuICAvLyAgICAga2V5UGFpclN0YWtpbmcuZ2V0S2V5cygpLnB1YixcbiAgLy8gICAgICc3YTYyM2M0ODM0ODUwMWMyMzgwZTYwYWMyMzA3ZmNkMWI2N2RmNDIxOGY4MTk5MzA4MjFhMTViMydcbiAgLy8gICApO1xuICAvLyAgIHR4QnVpbGRlci5zaWduKHsga2V5OiBrZXlQYWlyLmdldEtleXMoKS5wcnYgfSk7XG4gIC8vICAgdHhCdWlsZGVyLnNpZ24oeyBrZXk6IGtleVBhaXJTdGFraW5nLmdldEtleXMoKS5wcnYgfSk7XG4gIC8vXG4gIC8vICAgY29uc3QgdHggPSBhd2FpdCB0eEJ1aWxkZXIuYnVpbGQoKTtcbiAgLy8gICBjb25zdCBzZXJpYWxpemVkVHggPSB0eC50b0Jyb2FkY2FzdEZvcm1hdCgpO1xuICAvLyAgIGNvbnN0IGJ5dGVzID0gVWludDhBcnJheS5mcm9tKEJ1ZmZlci5mcm9tKHNlcmlhbGl6ZWRUeCwgJ2hleCcpKTtcbiAgLy9cbiAgLy8gICB0cnkge1xuICAvLyAgICAgY29uc3QgcmVzID0gYXdhaXQgYXhpb3MucG9zdCgnaHR0cHM6Ly90ZXN0bmV0LmtvaW9zLnJlc3QvYXBpL3YwL3N1Ym1pdHR4JywgYnl0ZXMsIGF4aW9zQ29uZmlnKTtcbiAgLy8gICAgIGNvbnNvbGUubG9nKHJlcyk7XG4gIC8vICAgfSBjYXRjaCAoZXJyKSB7XG4gIC8vICAgICBjb25zb2xlLmxvZyhlcnIpO1xuICAvLyAgIH1cbiAgLy8gfSk7XG5cbiAgaXQoJ3Nob3VsZCBzdWJtaXQgYSBzdGFraW5nIHRyYW5zYWN0aW9uIHVzaW5nIHNpZ25hdHVyZSBpbnRlcmZhY2UnLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3Qga2V5UGFpclBheW1lbnQgPSBuZXcgS2V5UGFpcih7IHBydjogdGVzdERhdGEucHJpdmF0ZUtleXMucHJ2S2V5OSB9KTtcbiAgICBjb25zdCBrZXlQYWlyU3Rha2UgPSBuZXcgS2V5UGFpcih7IHBydjogdGVzdERhdGEucHJpdmF0ZUtleXMucHJ2S2V5MTAgfSk7XG4gICAgY29uc3Qgc2VuZGVyQWRkcmVzcyA9IFV0aWxzLmRlZmF1bHQuY3JlYXRlQmFzZUFkZHJlc3NXaXRoU3Rha2VBbmRQYXltZW50S2V5KFxuICAgICAga2V5UGFpclN0YWtlLFxuICAgICAga2V5UGFpclBheW1lbnQsXG4gICAgICBBZGRyZXNzRm9ybWF0LnRlc3RuZXRcbiAgICApO1xuICAgIGNvbnN0IHR4QnVpbGRlciA9IGZhY3RvcnkuZ2V0U3Rha2luZ0FjdGl2YXRlQnVpbGRlcigpO1xuICAgIGNvbnN0IHNlbmRlckJhbGFuY2UgPSAnMjIxMjIwNzEnO1xuICAgIHR4QnVpbGRlci5jaGFuZ2VBZGRyZXNzKHNlbmRlckFkZHJlc3MsIHNlbmRlckJhbGFuY2UpO1xuICAgIHR4QnVpbGRlci5zdGFraW5nQ3JlZGVudGlhbChcbiAgICAgIGtleVBhaXJTdGFrZS5nZXRLZXlzKCkucHViLFxuICAgICAgJzdhNjIzYzQ4MzQ4NTAxYzIzODBlNjBhYzIzMDdmY2QxYjY3ZGY0MjE4ZjgxOTkzMDgyMWExNWIzJyxcbiAgICAgICdhbHdheXMtbm8tY29uZmlkZW5jZSdcbiAgICApO1xuXG4gICAgdHhCdWlsZGVyLmlucHV0KHtcbiAgICAgIHRyYW5zYWN0aW9uX2lkOiAnMGE0ZjgwZDgzYmE5Y2UxZjgzMzA2YTc5MjUyOTA5MjQxMzA4ZDdlZmYzMTdkMDRjOWVhMDE4OTY2ZDY4N2ZlMycsXG4gICAgICB0cmFuc2FjdGlvbl9pbmRleDogMCxcbiAgICB9KTtcblxuICAgIHR4QnVpbGRlci50dGwoOTAwMDAwMDAwKTtcblxuICAgIGNvbnN0IHVuc2lnbmVkVHggPSBhd2FpdCB0eEJ1aWxkZXIuYnVpbGQoKTtcbiAgICBjb25zdCBzaWduYWJsZUhleCA9IHVuc2lnbmVkVHguc2lnbmFibGVQYXlsb2FkLnRvU3RyaW5nKCdoZXgnKTtcbiAgICBjb25zdCBzZXJpYWxpemVkVHggPSB1bnNpZ25lZFR4LnRvQnJvYWRjYXN0Rm9ybWF0KCk7XG4gICAgdHhCdWlsZGVyLnNpZ24oeyBrZXk6IGtleVBhaXJQYXltZW50LmdldEtleXMoKS5wcnYgfSk7XG4gICAgdHhCdWlsZGVyLnNpZ24oeyBrZXk6IGtleVBhaXJTdGFrZS5nZXRLZXlzKCkucHJ2IH0pO1xuICAgIGNvbnN0IHNpZ25lZFRyYW5zYWN0aW9uID0gYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCk7XG4gICAgY29uc3Qgc2VyaWFsaXplZFRyYW5zYWN0aW9uID0gc2lnbmVkVHJhbnNhY3Rpb24udG9Ccm9hZGNhc3RGb3JtYXQoKTtcblxuICAgIGNvbnN0IHR4QnVpbGRlcjIgPSBmYWN0b3J5LmZyb20oc2VyaWFsaXplZFR4KTtcbiAgICBjb25zdCB0eCA9IGF3YWl0IHR4QnVpbGRlcjIuYnVpbGQoKTtcbiAgICB0eC50eXBlLnNob3VsZC5lcXVhbChUcmFuc2FjdGlvblR5cGUuU3Rha2luZ0FjdGl2YXRlKTtcbiAgICBjb25zdCBzaWduYWJsZUhleDIgPSB0eC5zaWduYWJsZVBheWxvYWQudG9TdHJpbmcoJ2hleCcpO1xuICAgIHNpZ25hYmxlSGV4LnNob3VsZC5lcXVhbChzaWduYWJsZUhleDIpO1xuICAgIGNvbnN0IHNpZ25hdHVyZVBheW1lbnQgPSBrZXlQYWlyUGF5bWVudC5zaWduTWVzc2FnZShzaWduYWJsZUhleDIpO1xuICAgIGNvbnN0IHNpZ25hdHVyZVN0YWtlID0ga2V5UGFpclN0YWtlLnNpZ25NZXNzYWdlKHNpZ25hYmxlSGV4Mik7XG4gICAgdHhCdWlsZGVyMi5hZGRTaWduYXR1cmUoeyBwdWI6IGtleVBhaXJQYXltZW50LmdldEtleXMoKS5wdWIgfSwgQnVmZmVyLmZyb20oc2lnbmF0dXJlUGF5bWVudCkpO1xuICAgIHR4QnVpbGRlcjIuYWRkU2lnbmF0dXJlKHsgcHViOiBrZXlQYWlyU3Rha2UuZ2V0S2V5cygpLnB1YiB9LCBCdWZmZXIuZnJvbShzaWduYXR1cmVTdGFrZSkpO1xuICAgIGNvbnN0IHNpZ25lZFRyYW5zYWN0aW9uMiA9IGF3YWl0IHR4QnVpbGRlcjIuYnVpbGQoKTtcbiAgICBzaWduZWRUcmFuc2FjdGlvbi5pZC5zaG91bGQuZXF1YWwodHguaWQpO1xuICAgIGNvbnN0IHNlcmlhbGl6ZWRUcmFuc2FjdGlvbjIgPSBzaWduZWRUcmFuc2FjdGlvbjIudG9Ccm9hZGNhc3RGb3JtYXQoKTtcbiAgICBzZXJpYWxpemVkVHJhbnNhY3Rpb24yLnNob3VsZC5lcXVhbChzZXJpYWxpemVkVHJhbnNhY3Rpb24pO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIHN1Ym1pdCBhIHN0YWtpbmcgdHJhbnNhY3Rpb24gdXNpbmcgb25lIHNpZ25hdHVyZScsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCBrZXlQYWlyUGF5bWVudCA9IG5ldyBLZXlQYWlyKHsgcHJ2OiB0ZXN0RGF0YS5wcml2YXRlS2V5cy5wcnZLZXk5IH0pO1xuICAgIGNvbnN0IGtleVBhaXJTdGFrZSA9IGtleVBhaXJQYXltZW50O1xuICAgIGNvbnN0IHNlbmRlckFkZHJlc3MgPSBVdGlscy5kZWZhdWx0LmNyZWF0ZUJhc2VBZGRyZXNzV2l0aFN0YWtlQW5kUGF5bWVudEtleShcbiAgICAgIGtleVBhaXJTdGFrZSxcbiAgICAgIGtleVBhaXJQYXltZW50LFxuICAgICAgQWRkcmVzc0Zvcm1hdC50ZXN0bmV0XG4gICAgKTtcbiAgICBjb25zdCB0eEJ1aWxkZXIgPSBmYWN0b3J5LmdldFN0YWtpbmdBY3RpdmF0ZUJ1aWxkZXIoKTtcbiAgICBjb25zdCBzZW5kZXJCYWxhbmNlID0gJzIyMTIyMDcxJztcbiAgICB0eEJ1aWxkZXIuY2hhbmdlQWRkcmVzcyhzZW5kZXJBZGRyZXNzLCBzZW5kZXJCYWxhbmNlKTtcbiAgICB0eEJ1aWxkZXIuc3Rha2luZ0NyZWRlbnRpYWwoXG4gICAgICBrZXlQYWlyU3Rha2UuZ2V0S2V5cygpLnB1YixcbiAgICAgICc3YTYyM2M0ODM0ODUwMWMyMzgwZTYwYWMyMzA3ZmNkMWI2N2RmNDIxOGY4MTk5MzA4MjFhMTViMycsXG4gICAgICAnYWx3YXlzLW5vLWNvbmZpZGVuY2UnXG4gICAgKTtcblxuICAgIHR4QnVpbGRlci5pbnB1dCh7XG4gICAgICB0cmFuc2FjdGlvbl9pZDogJzBhNGY4MGQ4M2JhOWNlMWY4MzMwNmE3OTI1MjkwOTI0MTMwOGQ3ZWZmMzE3ZDA0YzllYTAxODk2NmQ2ODdmZTMnLFxuICAgICAgdHJhbnNhY3Rpb25faW5kZXg6IDAsXG4gICAgfSk7XG5cbiAgICB0eEJ1aWxkZXIudHRsKDkwMDAwMDAwMCk7XG5cbiAgICBjb25zdCB1bnNpZ25lZFR4ID0gYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCk7XG4gICAgY29uc3Qgc2lnbmFibGVIZXggPSB1bnNpZ25lZFR4LnNpZ25hYmxlUGF5bG9hZC50b1N0cmluZygnaGV4Jyk7XG4gICAgY29uc3Qgc2VyaWFsaXplZFR4ID0gdW5zaWduZWRUeC50b0Jyb2FkY2FzdEZvcm1hdCgpO1xuICAgIHR4QnVpbGRlci5zaWduKHsga2V5OiBrZXlQYWlyUGF5bWVudC5nZXRLZXlzKCkucHJ2IH0pO1xuICAgIGNvbnN0IHNpZ25lZFRyYW5zYWN0aW9uID0gYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCk7XG4gICAgY29uc3Qgc2VyaWFsaXplZFRyYW5zYWN0aW9uID0gc2lnbmVkVHJhbnNhY3Rpb24udG9Ccm9hZGNhc3RGb3JtYXQoKTtcblxuICAgIGNvbnN0IHR4QnVpbGRlcjIgPSBmYWN0b3J5LmZyb20oc2VyaWFsaXplZFR4KTtcbiAgICBjb25zdCB0eCA9IGF3YWl0IHR4QnVpbGRlcjIuYnVpbGQoKTtcbiAgICB0eC50eXBlLnNob3VsZC5lcXVhbChUcmFuc2FjdGlvblR5cGUuU3Rha2luZ0FjdGl2YXRlKTtcbiAgICBjb25zdCBzaWduYWJsZUhleDIgPSB0eC5zaWduYWJsZVBheWxvYWQudG9TdHJpbmcoJ2hleCcpO1xuICAgIHNpZ25hYmxlSGV4LnNob3VsZC5lcXVhbChzaWduYWJsZUhleDIpO1xuICAgIGNvbnN0IHNpZ25hdHVyZVBheW1lbnQgPSBrZXlQYWlyUGF5bWVudC5zaWduTWVzc2FnZShzaWduYWJsZUhleDIpO1xuICAgIHR4QnVpbGRlcjIuYWRkU2lnbmF0dXJlKHsgcHViOiBrZXlQYWlyUGF5bWVudC5nZXRLZXlzKCkucHViIH0sIEJ1ZmZlci5mcm9tKHNpZ25hdHVyZVBheW1lbnQpKTtcbiAgICBjb25zdCBzaWduZWRUcmFuc2FjdGlvbjIgPSBhd2FpdCB0eEJ1aWxkZXIyLmJ1aWxkKCk7XG4gICAgc2lnbmVkVHJhbnNhY3Rpb24uaWQuc2hvdWxkLmVxdWFsKHR4LmlkKTtcbiAgICBjb25zdCBzZXJpYWxpemVkVHJhbnNhY3Rpb24yID0gc2lnbmVkVHJhbnNhY3Rpb24yLnRvQnJvYWRjYXN0Rm9ybWF0KCk7XG4gICAgc2VyaWFsaXplZFRyYW5zYWN0aW9uMi5zaG91bGQuZXF1YWwoc2VyaWFsaXplZFRyYW5zYWN0aW9uKTtcbiAgfSk7XG59KTtcbiJdfQ==
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StakingDeactivateBuilder.d.ts","sourceRoot":"","sources":["../../../test/unit/StakingDeactivateBuilder.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,158 @@
|
|
|
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 sdk_core_1 = require("@bitgo-beta/sdk-core");
|
|
41
|
+
const testData = __importStar(require("../resources"));
|
|
42
|
+
const src_1 = require("../../src");
|
|
43
|
+
const statics_1 = require("@bitgo-beta/statics");
|
|
44
|
+
describe('ADA Staking Deactivate Transaction Builder', async () => {
|
|
45
|
+
const factory = new src_1.TransactionBuilderFactory(statics_1.coins.get('tada'));
|
|
46
|
+
it('start and build an unsigned staking deactivate tx', async () => {
|
|
47
|
+
const keyPairStake = new src_1.KeyPair({ prv: testData.privateKeys.prvKey2 });
|
|
48
|
+
const txBuilder = factory.getStakingDeactivateBuilder();
|
|
49
|
+
txBuilder.input({
|
|
50
|
+
transaction_id: '3677e75c7ba699bfdc6cd57d42f246f86f63aefd76025006ac78313fad2bba21',
|
|
51
|
+
transaction_index: 1,
|
|
52
|
+
});
|
|
53
|
+
const totalInput = '4000000';
|
|
54
|
+
txBuilder.changeAddress('addr1q8rm9z7w4yx5gz652kn2q238efvms6t0qelur9nlglun8eu4tr5knj4fu4adelzqhxg8adu5xca4jra0gtllfrpcawyq9psz23', totalInput);
|
|
55
|
+
txBuilder.stakingCredential(keyPairStake.getKeys().pub);
|
|
56
|
+
txBuilder.ttl(800000000);
|
|
57
|
+
const tx = (await txBuilder.build());
|
|
58
|
+
should_1.default.equal(tx.type, sdk_core_1.TransactionType.StakingDeactivate);
|
|
59
|
+
const txData = tx.toJson();
|
|
60
|
+
const fee = tx.getFee;
|
|
61
|
+
txData.certs.length.should.equal(1);
|
|
62
|
+
txData.certs[0].type.should.equal(2);
|
|
63
|
+
txData.outputs.length.should.equal(1);
|
|
64
|
+
txData.outputs[0].amount.should.equal((Number(totalInput) + 2000000 - Number(fee)).toString());
|
|
65
|
+
fee.should.equal('167129');
|
|
66
|
+
tx.toBroadcastFormat().should.equal(testData.rawTx.unsignedStakingDeactiveTx);
|
|
67
|
+
should_1.default.equal(tx.id, testData.rawTx.unsignedStakingDeactiveTxHash);
|
|
68
|
+
});
|
|
69
|
+
it('build a staingDEactivate from rawTx', async () => {
|
|
70
|
+
const txBuilder = factory.from(testData.rawTx.unsignedStakingDeactiveTx);
|
|
71
|
+
const builtTx = (await txBuilder.build());
|
|
72
|
+
should_1.default.equal(builtTx.type, sdk_core_1.TransactionType.StakingDeactivate);
|
|
73
|
+
should_1.default.equal(builtTx.id, testData.rawTx.unsignedStakingDeactiveTxHash);
|
|
74
|
+
const txData = builtTx.toJson();
|
|
75
|
+
const fee = builtTx.getFee;
|
|
76
|
+
txData.certs.length.should.equal(1);
|
|
77
|
+
txData.certs[0].type.should.equal(2);
|
|
78
|
+
txData.outputs.length.should.equal(1);
|
|
79
|
+
const totalInput = '4000000';
|
|
80
|
+
txData.outputs[0].amount.should.equal((Number(totalInput) + 2000000 - Number(fee)).toString());
|
|
81
|
+
fee.should.equal('167129');
|
|
82
|
+
});
|
|
83
|
+
// xit('should submit a staking deactivate transaction', async () => {
|
|
84
|
+
// const keyPair = new KeyPair({ prv: testData.privateKeys.prvKey9 });
|
|
85
|
+
// const keyPairStaking = new KeyPair({ prv: testData.privateKeys.prvKey10 });
|
|
86
|
+
// const senderAddress = Utils.default.createBaseAddressWithStakeAndPaymentKey(
|
|
87
|
+
// keyPairStaking,
|
|
88
|
+
// keyPair,
|
|
89
|
+
// AddressFormat.testnet
|
|
90
|
+
// );
|
|
91
|
+
// const axiosConfig = {
|
|
92
|
+
// headers: {
|
|
93
|
+
// 'Content-Type': 'application/cbor',
|
|
94
|
+
// },
|
|
95
|
+
// timeout: 10000,
|
|
96
|
+
// };
|
|
97
|
+
//
|
|
98
|
+
// const txBuilder = factory.getStakingDeactivateBuilder();
|
|
99
|
+
// const utxoData = await axios.get('https://testnet.koios.rest/api/v0/address_info?_address=' + senderAddress);
|
|
100
|
+
// const senderBalance = utxoData.data[0].balance;
|
|
101
|
+
// txBuilder.changeAddress(senderAddress, senderBalance);
|
|
102
|
+
// const utxoSet = utxoData.data[0].utxo_set;
|
|
103
|
+
// for (const utxo of utxoSet) {
|
|
104
|
+
// txBuilder.input({ transaction_id: utxo.tx_hash, transaction_index: utxo.tx_index });
|
|
105
|
+
// }
|
|
106
|
+
//
|
|
107
|
+
// txBuilder.ttl(800000000);
|
|
108
|
+
// txBuilder.stakingCredential(keyPairStaking.getKeys().pub);
|
|
109
|
+
// txBuilder.sign({ key: keyPair.getKeys().prv });
|
|
110
|
+
// txBuilder.sign({ key: keyPairStaking.getKeys().prv });
|
|
111
|
+
//
|
|
112
|
+
// const tx = await txBuilder.build();
|
|
113
|
+
// const serializedTx = tx.toBroadcastFormat();
|
|
114
|
+
// const bytes = Uint8Array.from(Buffer.from(serializedTx, 'hex'));
|
|
115
|
+
//
|
|
116
|
+
// try {
|
|
117
|
+
// const res = await axios.post('https://testnet.koios.rest/api/v0/submittx', bytes, axiosConfig);
|
|
118
|
+
// console.log(res);
|
|
119
|
+
// } catch (err) {
|
|
120
|
+
// console.log(err);
|
|
121
|
+
// }
|
|
122
|
+
// });
|
|
123
|
+
it('should submit a staking transaction using signature interface', async () => {
|
|
124
|
+
const keyPairPayment = new src_1.KeyPair({ prv: testData.privateKeys.prvKey9 });
|
|
125
|
+
const keyPairStake = new src_1.KeyPair({ prv: testData.privateKeys.prvKey10 });
|
|
126
|
+
const senderAddress = src_1.Utils.default.createBaseAddressWithStakeAndPaymentKey(keyPairStake, keyPairPayment, sdk_core_1.AddressFormat.testnet);
|
|
127
|
+
const txBuilder = factory.getStakingDeactivateBuilder();
|
|
128
|
+
const senderBalance = '22122071';
|
|
129
|
+
txBuilder.changeAddress(senderAddress, senderBalance);
|
|
130
|
+
txBuilder.stakingCredential(keyPairStake.getKeys().pub);
|
|
131
|
+
txBuilder.input({
|
|
132
|
+
transaction_id: '0a4f80d83ba9ce1f83306a79252909241308d7eff317d04c9ea018966d687fe3',
|
|
133
|
+
transaction_index: 0,
|
|
134
|
+
});
|
|
135
|
+
txBuilder.ttl(900000000);
|
|
136
|
+
const unsignedTx = await txBuilder.build();
|
|
137
|
+
const signableHex = unsignedTx.signablePayload.toString('hex');
|
|
138
|
+
const serializedTx = unsignedTx.toBroadcastFormat();
|
|
139
|
+
txBuilder.sign({ key: keyPairPayment.getKeys().prv });
|
|
140
|
+
txBuilder.sign({ key: keyPairStake.getKeys().prv });
|
|
141
|
+
const signedTransaction = await txBuilder.build();
|
|
142
|
+
const serializedTransaction = signedTransaction.toBroadcastFormat();
|
|
143
|
+
const txBuilder2 = factory.from(serializedTx);
|
|
144
|
+
const tx = await txBuilder2.build();
|
|
145
|
+
tx.type.should.equal(sdk_core_1.TransactionType.StakingDeactivate);
|
|
146
|
+
const signableHex2 = tx.signablePayload.toString('hex');
|
|
147
|
+
signableHex.should.equal(signableHex2);
|
|
148
|
+
const signaturePayment = keyPairPayment.signMessage(signableHex2);
|
|
149
|
+
const signatureStake = keyPairStake.signMessage(signableHex2);
|
|
150
|
+
txBuilder2.addSignature({ pub: keyPairPayment.getKeys().pub }, Buffer.from(signaturePayment));
|
|
151
|
+
txBuilder2.addSignature({ pub: keyPairStake.getKeys().pub }, Buffer.from(signatureStake));
|
|
152
|
+
const signedTransaction2 = await txBuilder2.build();
|
|
153
|
+
signedTransaction.id.should.equal(tx.id);
|
|
154
|
+
const serializedTransaction2 = signedTransaction2.toBroadcastFormat();
|
|
155
|
+
serializedTransaction2.should.equal(serializedTransaction);
|
|
156
|
+
});
|
|
157
|
+
});
|
|
158
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU3Rha2luZ0RlYWN0aXZhdGVCdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vdGVzdC91bml0L1N0YWtpbmdEZWFjdGl2YXRlQnVpbGRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLG9EQUE0QjtBQUM1QixtREFBc0U7QUFDdEUsdURBQXlDO0FBQ3pDLG1DQUFzRTtBQUN0RSxpREFBNEM7QUFHNUMsUUFBUSxDQUFDLDRDQUE0QyxFQUFFLEtBQUssSUFBSSxFQUFFO0lBQ2hFLE1BQU0sT0FBTyxHQUFHLElBQUksK0JBQXlCLENBQUMsZUFBSyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBRWpFLEVBQUUsQ0FBQyxtREFBbUQsRUFBRSxLQUFLLElBQUksRUFBRTtRQUNqRSxNQUFNLFlBQVksR0FBRyxJQUFJLGFBQU8sQ0FBQyxFQUFFLEdBQUcsRUFBRSxRQUFRLENBQUMsV0FBVyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7UUFDeEUsTUFBTSxTQUFTLEdBQUcsT0FBTyxDQUFDLDJCQUEyQixFQUFFLENBQUM7UUFDeEQsU0FBUyxDQUFDLEtBQUssQ0FBQztZQUNkLGNBQWMsRUFBRSxrRUFBa0U7WUFDbEYsaUJBQWlCLEVBQUUsQ0FBQztTQUNyQixDQUFDLENBQUM7UUFDSCxNQUFNLFVBQVUsR0FBRyxTQUFTLENBQUM7UUFDN0IsU0FBUyxDQUFDLGFBQWEsQ0FDckIseUdBQXlHLEVBQ3pHLFVBQVUsQ0FDWCxDQUFDO1FBQ0YsU0FBUyxDQUFDLGlCQUFpQixDQUFDLFlBQVksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN4RCxTQUFTLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3pCLE1BQU0sRUFBRSxHQUFHLENBQUMsTUFBTSxTQUFTLENBQUMsS0FBSyxFQUFFLENBQWdCLENBQUM7UUFD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QUFnQixHQUFHLGNBQWMsQ0FBQyxXQUFXLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDbEUsTUFBTSxjQUFjLEdBQUcsWUFBWSxDQUFDLFdBQVcsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUM5RCxVQUFVLENBQUMsWUFBWSxDQUFDLEVBQUUsR0FBRyxFQUFFLGNBQWMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQztRQUM5RixVQUFVLENBQUMsWUFBWSxDQUFDLEVBQUUsR0FBRyxFQUFFLFlBQVksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUM7UUFDMUYsTUFBTSxrQkFBa0IsR0FBRyxNQUFNLFVBQVUsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNwRCxpQkFBaUIsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDekMsTUFBTSxzQkFBc0IsR0FBRyxrQkFBa0IsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1FBQ3RFLHNCQUFzQixDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMscUJBQXFCLENBQUMsQ0FBQztJQUM3RCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHNob3VsZCBmcm9tICdzaG91bGQnO1xuaW1wb3J0IHsgQWRkcmVzc0Zvcm1hdCwgVHJhbnNhY3Rpb25UeXBlIH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuaW1wb3J0ICogYXMgdGVzdERhdGEgZnJvbSAnLi4vcmVzb3VyY2VzJztcbmltcG9ydCB7IEtleVBhaXIsIFRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnksIFV0aWxzIH0gZnJvbSAnLi4vLi4vc3JjJztcbmltcG9ydCB7IGNvaW5zIH0gZnJvbSAnQGJpdGdvLWJldGEvc3RhdGljcyc7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbiB9IGZyb20gJy4uLy4uL3NyYy9saWIvdHJhbnNhY3Rpb24nO1xuXG5kZXNjcmliZSgnQURBIFN0YWtpbmcgRGVhY3RpdmF0ZSBUcmFuc2FjdGlvbiBCdWlsZGVyJywgYXN5bmMgKCkgPT4ge1xuICBjb25zdCBmYWN0b3J5ID0gbmV3IFRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnkoY29pbnMuZ2V0KCd0YWRhJykpO1xuXG4gIGl0KCdzdGFydCBhbmQgYnVpbGQgYW4gdW5zaWduZWQgc3Rha2luZyBkZWFjdGl2YXRlIHR4JywgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IGtleVBhaXJTdGFrZSA9IG5ldyBLZXlQYWlyKHsgcHJ2OiB0ZXN0RGF0YS5wcml2YXRlS2V5cy5wcnZLZXkyIH0pO1xuICAgIGNvbnN0IHR4QnVpbGRlciA9IGZhY3RvcnkuZ2V0U3Rha2luZ0RlYWN0aXZhdGVCdWlsZGVyKCk7XG4gICAgdHhCdWlsZGVyLmlucHV0KHtcbiAgICAgIHRyYW5zYWN0aW9uX2lkOiAnMzY3N2U3NWM3YmE2OTliZmRjNmNkNTdkNDJmMjQ2Zjg2ZjYzYWVmZDc2MDI1MDA2YWM3ODMxM2ZhZDJiYmEyMScsXG4gICAgICB0cmFuc2FjdGlvbl9pbmRleDogMSxcbiAgICB9KTtcbiAgICBjb25zdCB0b3RhbElucHV0ID0gJzQwMDAwMDAnO1xuICAgIHR4QnVpbGRlci5jaGFuZ2VBZGRyZXNzKFxuICAgICAgJ2FkZHIxcThybTl6N3c0eXg1Z3o2NTJrbjJxMjM4ZWZ2bXM2dDBxZWx1cjlubGdsdW44ZXU0dHI1a25qNGZ1NGFkZWx6cWh4ZzhhZHU1eGNhNGpyYTBndGxsZnJwY2F3eXE5cHN6MjMnLFxuICAgICAgdG90YWxJbnB1dFxuICAgICk7XG4gICAgdHhCdWlsZGVyLnN0YWtpbmdDcmVkZW50aWFsKGtleVBhaXJTdGFrZS5nZXRLZXlzKCkucHViKTtcbiAgICB0eEJ1aWxkZXIudHRsKDgwMDAwMDAwMCk7XG4gICAgY29uc3QgdHggPSAoYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCkpIGFzIFRyYW5zYWN0aW9uO1xuICAgIHNob3VsZC5lcXVhbCh0eC50eXBlLCBUcmFuc2FjdGlvblR5cGUuU3Rha2luZ0RlYWN0aXZhdGUpO1xuICAgIGNvbnN0IHR4RGF0YSA9IHR4LnRvSnNvbigpO1xuICAgIGNvbnN0IGZlZSA9IHR4LmdldEZlZTtcbiAgICB0eERhdGEuY2VydHMubGVuZ3RoLnNob3VsZC5lcXVhbCgxKTtcbiAgICB0eERhdGEuY2VydHNbMF0udHlwZS5zaG91bGQuZXF1YWwoMik7XG5cbiAgICB0eERhdGEub3V0cHV0cy5sZW5ndGguc2hvdWxkLmVxdWFsKDEpO1xuICAgIHR4RGF0YS5vdXRwdXRzWzBdLmFtb3VudC5zaG91bGQuZXF1YWwoKE51bWJlcih0b3RhbElucHV0KSArIDIwMDAwMDAgLSBOdW1iZXIoZmVlKSkudG9TdHJpbmcoKSk7XG4gICAgZmVlLnNob3VsZC5lcXVhbCgnMTY3MTI5Jyk7XG4gICAgdHgudG9Ccm9hZGNhc3RGb3JtYXQoKS5zaG91bGQuZXF1YWwodGVzdERhdGEucmF3VHgudW5zaWduZWRTdGFraW5nRGVhY3RpdmVUeCk7XG4gICAgc2hvdWxkLmVxdWFsKHR4LmlkLCB0ZXN0RGF0YS5yYXdUeC51bnNpZ25lZFN0YWtpbmdEZWFjdGl2ZVR4SGFzaCk7XG4gIH0pO1xuXG4gIGl0KCdidWlsZCBhIHN0YWluZ0RFYWN0aXZhdGUgZnJvbSByYXdUeCcsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCB0eEJ1aWxkZXIgPSBmYWN0b3J5LmZyb20odGVzdERhdGEucmF3VHgudW5zaWduZWRTdGFraW5nRGVhY3RpdmVUeCk7XG4gICAgY29uc3QgYnVpbHRUeCA9IChhd2FpdCB0eEJ1aWxkZXIuYnVpbGQoKSkgYXMgVHJhbnNhY3Rpb247XG4gICAgc2hvdWxkLmVxdWFsKGJ1aWx0VHgudHlwZSwgVHJhbnNhY3Rpb25UeXBlLlN0YWtpbmdEZWFjdGl2YXRlKTtcbiAgICBzaG91bGQuZXF1YWwoYnVpbHRUeC5pZCwgdGVzdERhdGEucmF3VHgudW5zaWduZWRTdGFraW5nRGVhY3RpdmVUeEhhc2gpO1xuICAgIGNvbnN0IHR4RGF0YSA9IGJ1aWx0VHgudG9Kc29uKCk7XG4gICAgY29uc3QgZmVlID0gYnVpbHRUeC5nZXRGZWU7XG4gICAgdHhEYXRhLmNlcnRzLmxlbmd0aC5zaG91bGQuZXF1YWwoMSk7XG4gICAgdHhEYXRhLmNlcnRzWzBdLnR5cGUuc2hvdWxkLmVxdWFsKDIpO1xuXG4gICAgdHhEYXRhLm91dHB1dHMubGVuZ3RoLnNob3VsZC5lcXVhbCgxKTtcbiAgICBjb25zdCB0b3RhbElucHV0ID0gJzQwMDAwMDAnO1xuICAgIHR4RGF0YS5vdXRwdXRzWzBdLmFtb3VudC5zaG91bGQuZXF1YWwoKE51bWJlcih0b3RhbElucHV0KSArIDIwMDAwMDAgLSBOdW1iZXIoZmVlKSkudG9TdHJpbmcoKSk7XG4gICAgZmVlLnNob3VsZC5lcXVhbCgnMTY3MTI5Jyk7XG4gIH0pO1xuXG4gIC8vIHhpdCgnc2hvdWxkIHN1Ym1pdCBhIHN0YWtpbmcgZGVhY3RpdmF0ZSB0cmFuc2FjdGlvbicsIGFzeW5jICgpID0+IHtcbiAgLy8gICBjb25zdCBrZXlQYWlyID0gbmV3IEtleVBhaXIoeyBwcnY6IHRlc3REYXRhLnByaXZhdGVLZXlzLnBydktleTkgfSk7XG4gIC8vICAgY29uc3Qga2V5UGFpclN0YWtpbmcgPSBuZXcgS2V5UGFpcih7IHBydjogdGVzdERhdGEucHJpdmF0ZUtleXMucHJ2S2V5MTAgfSk7XG4gIC8vICAgY29uc3Qgc2VuZGVyQWRkcmVzcyA9IFV0aWxzLmRlZmF1bHQuY3JlYXRlQmFzZUFkZHJlc3NXaXRoU3Rha2VBbmRQYXltZW50S2V5KFxuICAvLyAgICAga2V5UGFpclN0YWtpbmcsXG4gIC8vICAgICBrZXlQYWlyLFxuICAvLyAgICAgQWRkcmVzc0Zvcm1hdC50ZXN0bmV0XG4gIC8vICAgKTtcbiAgLy8gICBjb25zdCBheGlvc0NvbmZpZyA9IHtcbiAgLy8gICAgIGhlYWRlcnM6IHtcbiAgLy8gICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9jYm9yJyxcbiAgLy8gICAgIH0sXG4gIC8vICAgICB0aW1lb3V0OiAxMDAwMCxcbiAgLy8gICB9O1xuICAvL1xuICAvLyAgIGNvbnN0IHR4QnVpbGRlciA9IGZhY3RvcnkuZ2V0U3Rha2luZ0RlYWN0aXZhdGVCdWlsZGVyKCk7XG4gIC8vICAgY29uc3QgdXR4b0RhdGEgPSBhd2FpdCBheGlvcy5nZXQoJ2h0dHBzOi8vdGVzdG5ldC5rb2lvcy5yZXN0L2FwaS92MC9hZGRyZXNzX2luZm8/X2FkZHJlc3M9JyArIHNlbmRlckFkZHJlc3MpO1xuICAvLyAgIGNvbnN0IHNlbmRlckJhbGFuY2UgPSB1dHhvRGF0YS5kYXRhWzBdLmJhbGFuY2U7XG4gIC8vICAgdHhCdWlsZGVyLmNoYW5nZUFkZHJlc3Moc2VuZGVyQWRkcmVzcywgc2VuZGVyQmFsYW5jZSk7XG4gIC8vICAgY29uc3QgdXR4b1NldCA9IHV0eG9EYXRhLmRhdGFbMF0udXR4b19zZXQ7XG4gIC8vICAgZm9yIChjb25zdCB1dHhvIG9mIHV0eG9TZXQpIHtcbiAgLy8gICAgIHR4QnVpbGRlci5pbnB1dCh7IHRyYW5zYWN0aW9uX2lkOiB1dHhvLnR4X2hhc2gsIHRyYW5zYWN0aW9uX2luZGV4OiB1dHhvLnR4X2luZGV4IH0pO1xuICAvLyAgIH1cbiAgLy9cbiAgLy8gICB0eEJ1aWxkZXIudHRsKDgwMDAwMDAwMCk7XG4gIC8vICAgdHhCdWlsZGVyLnN0YWtpbmdDcmVkZW50aWFsKGtleVBhaXJTdGFraW5nLmdldEtleXMoKS5wdWIpO1xuICAvLyAgIHR4QnVpbGRlci5zaWduKHsga2V5OiBrZXlQYWlyLmdldEtleXMoKS5wcnYgfSk7XG4gIC8vICAgdHhCdWlsZGVyLnNpZ24oeyBrZXk6IGtleVBhaXJTdGFraW5nLmdldEtleXMoKS5wcnYgfSk7XG4gIC8vXG4gIC8vICAgY29uc3QgdHggPSBhd2FpdCB0eEJ1aWxkZXIuYnVpbGQoKTtcbiAgLy8gICBjb25zdCBzZXJpYWxpemVkVHggPSB0eC50b0Jyb2FkY2FzdEZvcm1hdCgpO1xuICAvLyAgIGNvbnN0IGJ5dGVzID0gVWludDhBcnJheS5mcm9tKEJ1ZmZlci5mcm9tKHNlcmlhbGl6ZWRUeCwgJ2hleCcpKTtcbiAgLy9cbiAgLy8gICB0cnkge1xuICAvLyAgICAgY29uc3QgcmVzID0gYXdhaXQgYXhpb3MucG9zdCgnaHR0cHM6Ly90ZXN0bmV0LmtvaW9zLnJlc3QvYXBpL3YwL3N1Ym1pdHR4JywgYnl0ZXMsIGF4aW9zQ29uZmlnKTtcbiAgLy8gICAgIGNvbnNvbGUubG9nKHJlcyk7XG4gIC8vICAgfSBjYXRjaCAoZXJyKSB7XG4gIC8vICAgICBjb25zb2xlLmxvZyhlcnIpO1xuICAvLyAgIH1cbiAgLy8gfSk7XG5cbiAgaXQoJ3Nob3VsZCBzdWJtaXQgYSBzdGFraW5nIHRyYW5zYWN0aW9uIHVzaW5nIHNpZ25hdHVyZSBpbnRlcmZhY2UnLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3Qga2V5UGFpclBheW1lbnQgPSBuZXcgS2V5UGFpcih7IHBydjogdGVzdERhdGEucHJpdmF0ZUtleXMucHJ2S2V5OSB9KTtcbiAgICBjb25zdCBrZXlQYWlyU3Rha2UgPSBuZXcgS2V5UGFpcih7IHBydjogdGVzdERhdGEucHJpdmF0ZUtleXMucHJ2S2V5MTAgfSk7XG4gICAgY29uc3Qgc2VuZGVyQWRkcmVzcyA9IFV0aWxzLmRlZmF1bHQuY3JlYXRlQmFzZUFkZHJlc3NXaXRoU3Rha2VBbmRQYXltZW50S2V5KFxuICAgICAga2V5UGFpclN0YWtlLFxuICAgICAga2V5UGFpclBheW1lbnQsXG4gICAgICBBZGRyZXNzRm9ybWF0LnRlc3RuZXRcbiAgICApO1xuICAgIGNvbnN0IHR4QnVpbGRlciA9IGZhY3RvcnkuZ2V0U3Rha2luZ0RlYWN0aXZhdGVCdWlsZGVyKCk7XG4gICAgY29uc3Qgc2VuZGVyQmFsYW5jZSA9ICcyMjEyMjA3MSc7XG4gICAgdHhCdWlsZGVyLmNoYW5nZUFkZHJlc3Moc2VuZGVyQWRkcmVzcywgc2VuZGVyQmFsYW5jZSk7XG4gICAgdHhCdWlsZGVyLnN0YWtpbmdDcmVkZW50aWFsKGtleVBhaXJTdGFrZS5nZXRLZXlzKCkucHViKTtcblxuICAgIHR4QnVpbGRlci5pbnB1dCh7XG4gICAgICB0cmFuc2FjdGlvbl9pZDogJzBhNGY4MGQ4M2JhOWNlMWY4MzMwNmE3OTI1MjkwOTI0MTMwOGQ3ZWZmMzE3ZDA0YzllYTAxODk2NmQ2ODdmZTMnLFxuICAgICAgdHJhbnNhY3Rpb25faW5kZXg6IDAsXG4gICAgfSk7XG5cbiAgICB0eEJ1aWxkZXIudHRsKDkwMDAwMDAwMCk7XG5cbiAgICBjb25zdCB1bnNpZ25lZFR4ID0gYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCk7XG4gICAgY29uc3Qgc2lnbmFibGVIZXggPSB1bnNpZ25lZFR4LnNpZ25hYmxlUGF5bG9hZC50b1N0cmluZygnaGV4Jyk7XG4gICAgY29uc3Qgc2VyaWFsaXplZFR4ID0gdW5zaWduZWRUeC50b0Jyb2FkY2FzdEZvcm1hdCgpO1xuICAgIHR4QnVpbGRlci5zaWduKHsga2V5OiBrZXlQYWlyUGF5bWVudC5nZXRLZXlzKCkucHJ2IH0pO1xuICAgIHR4QnVpbGRlci5zaWduKHsga2V5OiBrZXlQYWlyU3Rha2UuZ2V0S2V5cygpLnBydiB9KTtcbiAgICBjb25zdCBzaWduZWRUcmFuc2FjdGlvbiA9IGF3YWl0IHR4QnVpbGRlci5idWlsZCgpO1xuICAgIGNvbnN0IHNlcmlhbGl6ZWRUcmFuc2FjdGlvbiA9IHNpZ25lZFRyYW5zYWN0aW9uLnRvQnJvYWRjYXN0Rm9ybWF0KCk7XG5cbiAgICBjb25zdCB0eEJ1aWxkZXIyID0gZmFjdG9yeS5mcm9tKHNlcmlhbGl6ZWRUeCk7XG4gICAgY29uc3QgdHggPSBhd2FpdCB0eEJ1aWxkZXIyLmJ1aWxkKCk7XG4gICAgdHgudHlwZS5zaG91bGQuZXF1YWwoVHJhbnNhY3Rpb25UeXBlLlN0YWtpbmdEZWFjdGl2YXRlKTtcbiAgICBjb25zdCBzaWduYWJsZUhleDIgPSB0eC5zaWduYWJsZVBheWxvYWQudG9TdHJpbmcoJ2hleCcpO1xuICAgIHNpZ25hYmxlSGV4LnNob3VsZC5lcXVhbChzaWduYWJsZUhleDIpO1xuICAgIGNvbnN0IHNpZ25hdHVyZVBheW1lbnQgPSBrZXlQYWlyUGF5bWVudC5zaWduTWVzc2FnZShzaWduYWJsZUhleDIpO1xuICAgIGNvbnN0IHNpZ25hdHVyZVN0YWtlID0ga2V5UGFpclN0YWtlLnNpZ25NZXNzYWdlKHNpZ25hYmxlSGV4Mik7XG4gICAgdHhCdWlsZGVyMi5hZGRTaWduYXR1cmUoeyBwdWI6IGtleVBhaXJQYXltZW50LmdldEtleXMoKS5wdWIgfSwgQnVmZmVyLmZyb20oc2lnbmF0dXJlUGF5bWVudCkpO1xuICAgIHR4QnVpbGRlcjIuYWRkU2lnbmF0dXJlKHsgcHViOiBrZXlQYWlyU3Rha2UuZ2V0S2V5cygpLnB1YiB9LCBCdWZmZXIuZnJvbShzaWduYXR1cmVTdGFrZSkpO1xuICAgIGNvbnN0IHNpZ25lZFRyYW5zYWN0aW9uMiA9IGF3YWl0IHR4QnVpbGRlcjIuYnVpbGQoKTtcbiAgICBzaWduZWRUcmFuc2FjdGlvbi5pZC5zaG91bGQuZXF1YWwodHguaWQpO1xuICAgIGNvbnN0IHNlcmlhbGl6ZWRUcmFuc2FjdGlvbjIgPSBzaWduZWRUcmFuc2FjdGlvbjIudG9Ccm9hZGNhc3RGb3JtYXQoKTtcbiAgICBzZXJpYWxpemVkVHJhbnNhY3Rpb24yLnNob3VsZC5lcXVhbChzZXJpYWxpemVkVHJhbnNhY3Rpb24pO1xuICB9KTtcbn0pO1xuIl19
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ada.d.ts","sourceRoot":"","sources":["../../../test/unit/ada.ts"],"names":[],"mappings":"AAAA;;GAEG"}
|