@bitgo-beta/sdk-coin-atom 1.1.2-alpha.9 → 1.1.2-alpha.91
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/CHANGELOG.md +528 -0
- package/dist/src/atom.d.ts +12 -38
- package/dist/src/atom.d.ts.map +1 -1
- package/dist/src/atom.js +20 -161
- package/dist/src/index.js +6 -2
- package/dist/src/lib/constants.d.ts +3 -6
- package/dist/src/lib/constants.d.ts.map +1 -1
- package/dist/src/lib/constants.js +7 -10
- package/dist/src/lib/index.d.ts +3 -5
- package/dist/src/lib/index.d.ts.map +1 -1
- package/dist/src/lib/index.js +16 -11
- package/dist/src/lib/keyPair.d.ts +3 -12
- package/dist/src/lib/keyPair.d.ts.map +1 -1
- package/dist/src/lib/keyPair.js +6 -50
- package/dist/src/lib/transactionBuilderFactory.d.ts +8 -11
- package/dist/src/lib/transactionBuilderFactory.d.ts.map +1 -1
- package/dist/src/lib/transactionBuilderFactory.js +21 -11
- package/dist/src/lib/utils.d.ts +5 -158
- package/dist/src/lib/utils.d.ts.map +1 -1
- package/dist/src/lib/utils.js +15 -477
- package/dist/src/tatom.d.ts +0 -8
- package/dist/src/tatom.d.ts.map +1 -1
- package/dist/src/tatom.js +1 -13
- package/package.json +10 -13
- package/dist/src/lib/StakingActivateBuilder.d.ts +0 -11
- package/dist/src/lib/StakingActivateBuilder.d.ts.map +0 -1
- package/dist/src/lib/StakingActivateBuilder.js +0 -31
- package/dist/src/lib/StakingDeactivateBuilder.d.ts +0 -11
- package/dist/src/lib/StakingDeactivateBuilder.d.ts.map +0 -1
- package/dist/src/lib/StakingDeactivateBuilder.js +0 -31
- package/dist/src/lib/StakingWithdrawRewardsBuilder.d.ts +0 -11
- package/dist/src/lib/StakingWithdrawRewardsBuilder.d.ts.map +0 -1
- package/dist/src/lib/StakingWithdrawRewardsBuilder.js +0 -31
- package/dist/src/lib/iface.d.ts +0 -45
- package/dist/src/lib/iface.d.ts.map +0 -1
- package/dist/src/lib/iface.js +0 -3
- package/dist/src/lib/transaction.d.ts +0 -57
- package/dist/src/lib/transaction.d.ts.map +0 -1
- package/dist/src/lib/transaction.js +0 -202
- package/dist/src/lib/transactionBuilder.d.ts +0 -76
- package/dist/src/lib/transactionBuilder.d.ts.map +0 -1
- package/dist/src/lib/transactionBuilder.js +0 -173
- package/dist/src/lib/transferBuilder.d.ts +0 -11
- package/dist/src/lib/transferBuilder.d.ts.map +0 -1
- package/dist/src/lib/transferBuilder.js +0 -31
|
@@ -1,76 +0,0 @@
|
|
|
1
|
-
/// <reference types="node" />
|
|
2
|
-
import { BaseAddress, BaseKey, BaseTransactionBuilder, PublicKey as BasePublicKey, TransactionType } from '@bitgo-beta/sdk-core';
|
|
3
|
-
import { BaseCoin as CoinConfig } from '@bitgo-beta/statics';
|
|
4
|
-
import BigNumber from 'bignumber.js';
|
|
5
|
-
import { DelegateOrUndelegeteMessage, FeeData, MessageData, SendMessage, WithdrawDelegatorRewardsMessage } from './iface';
|
|
6
|
-
import { Transaction } from './transaction';
|
|
7
|
-
export declare abstract class TransactionBuilder extends BaseTransactionBuilder {
|
|
8
|
-
protected _transaction: Transaction;
|
|
9
|
-
protected _sequence: number;
|
|
10
|
-
protected _messages: MessageData[];
|
|
11
|
-
protected _gasBudget: FeeData;
|
|
12
|
-
private _accountNumber?;
|
|
13
|
-
private _signature;
|
|
14
|
-
private _chainId?;
|
|
15
|
-
private _publicKey?;
|
|
16
|
-
private _signer;
|
|
17
|
-
constructor(_coinConfig: Readonly<CoinConfig>);
|
|
18
|
-
/**
|
|
19
|
-
* The transaction type.
|
|
20
|
-
*/
|
|
21
|
-
protected abstract get transactionType(): TransactionType;
|
|
22
|
-
/** @inheritdoc */
|
|
23
|
-
protected get transaction(): Transaction;
|
|
24
|
-
/** @inheritdoc */
|
|
25
|
-
protected set transaction(transaction: Transaction);
|
|
26
|
-
/** @inheritDoc */
|
|
27
|
-
addSignature(publicKey: BasePublicKey, signature: Buffer): void;
|
|
28
|
-
/**
|
|
29
|
-
* Sets gas budget of this transaction
|
|
30
|
-
* Gas budget consist of fee amount and gas limit. Division feeAmount/gasLimit represents
|
|
31
|
-
* the gas-fee and it should be more than minimum required gas-fee to process the transaction
|
|
32
|
-
* @param {FeeData} gasBudget
|
|
33
|
-
* @returns {TransactionBuilder} this transaction builder
|
|
34
|
-
*/
|
|
35
|
-
gasBudget(gasBudget: FeeData): this;
|
|
36
|
-
/**
|
|
37
|
-
* Sets sequence of this transaction.
|
|
38
|
-
* @param {number} sequence - sequence data for tx signer
|
|
39
|
-
* @returns {TransactionBuilder} This transaction builder
|
|
40
|
-
*/
|
|
41
|
-
sequence(sequence: number): this;
|
|
42
|
-
/**
|
|
43
|
-
* Sets messages to the transaction body. Message type will be different based on the transaction type
|
|
44
|
-
* - For @see TransactionType.StakingActivate required type is @see DelegateOrUndelegeteMessage
|
|
45
|
-
* - For @see TransactionType.StakingDeactivate required type is @see DelegateOrUndelegeteMessage
|
|
46
|
-
* - For @see TransactionType.Send required type is @see SendMessage
|
|
47
|
-
* - For @see TransactionType.StakingWithdraw required type is @see WithdrawDelegatorRewardsMessage
|
|
48
|
-
* @param {(SendMessage | DelegateOrUndelegeteMessage | WithdrawDelegatorRewardsMessage)[]} messages
|
|
49
|
-
* @returns {TransactionBuilder} This transaction builder
|
|
50
|
-
*/
|
|
51
|
-
abstract messages(messages: (SendMessage | DelegateOrUndelegeteMessage | WithdrawDelegatorRewardsMessage)[]): this;
|
|
52
|
-
publicKey(publicKey: string | undefined): this;
|
|
53
|
-
accountNumber(accountNumber: number | undefined): this;
|
|
54
|
-
chainId(chainId: string | undefined): this;
|
|
55
|
-
/**
|
|
56
|
-
* Initialize the transaction builder fields using the decoded transaction data
|
|
57
|
-
* @param {Transaction} tx the transaction data
|
|
58
|
-
*/
|
|
59
|
-
initBuilder(tx: Transaction): void;
|
|
60
|
-
/** @inheritdoc */
|
|
61
|
-
protected fromImplementation(rawTransaction: string): Transaction;
|
|
62
|
-
/** @inheritdoc */
|
|
63
|
-
protected buildImplementation(): Promise<Transaction>;
|
|
64
|
-
/** @inheritdoc */
|
|
65
|
-
protected signImplementation(key: BaseKey): Transaction;
|
|
66
|
-
validateAddress(address: BaseAddress, addressFormat?: string): void;
|
|
67
|
-
/** @inheritdoc */
|
|
68
|
-
validateValue(value: BigNumber): void;
|
|
69
|
-
/** @inheritdoc */
|
|
70
|
-
validateKey(key: BaseKey): void;
|
|
71
|
-
/** @inheritdoc */
|
|
72
|
-
validateRawTransaction(rawTransaction: string): void;
|
|
73
|
-
/** @inheritdoc */
|
|
74
|
-
validateTransaction(transaction: Transaction): void;
|
|
75
|
-
}
|
|
76
|
-
//# sourceMappingURL=transactionBuilder.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"transactionBuilder.d.ts","sourceRoot":"","sources":["../../../src/lib/transactionBuilder.ts"],"names":[],"mappings":";AAAA,OAAO,EACL,WAAW,EACX,OAAO,EACP,sBAAsB,EAGtB,SAAS,IAAI,aAAa,EAE1B,eAAe,EAChB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAG7D,OAAO,SAAS,MAAM,cAAc,CAAC;AAErC,OAAO,EACL,2BAA2B,EAC3B,OAAO,EACP,WAAW,EACX,WAAW,EACX,+BAA+B,EAChC,MAAM,SAAS,CAAC;AAEjB,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAG5C,8BAAsB,kBAAmB,SAAQ,sBAAsB;IACrE,SAAS,CAAC,YAAY,EAAE,WAAW,CAAC;IACpC,SAAS,CAAC,SAAS,EAAE,MAAM,CAAC;IAC5B,SAAS,CAAC,SAAS,EAAE,WAAW,EAAE,CAAC;IACnC,SAAS,CAAC,UAAU,EAAE,OAAO,CAAC;IAC9B,OAAO,CAAC,cAAc,CAAC,CAAS;IAChC,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,QAAQ,CAAC,CAAS;IAC1B,OAAO,CAAC,UAAU,CAAC,CAAS;IAC5B,OAAO,CAAC,OAAO,CAAU;gBAEb,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAK7C;;OAEG;IACH,SAAS,CAAC,QAAQ,KAAK,eAAe,IAAI,eAAe,CAAC;IAE1D,kBAAkB;IAClB,SAAS,KAAK,WAAW,IAAI,WAAW,CAEvC;IAED,kBAAkB;IAClB,SAAS,KAAK,WAAW,CAAC,WAAW,EAAE,WAAW,EAEjD;IAED,kBAAkB;IAClB,YAAY,CAAC,SAAS,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI;IAK/D;;;;;;OAMG;IACH,SAAS,CAAC,SAAS,EAAE,OAAO,GAAG,IAAI;IAMnC;;;;OAIG;IACH,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAMhC;;;;;;;;OAQG;IACH,QAAQ,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,WAAW,GAAG,2BAA2B,GAAG,+BAA+B,CAAC,EAAE,GAAG,IAAI;IAElH,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI;IAK9C,aAAa,CAAC,aAAa,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI;IAKtD,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI;IAK1C;;;OAGG;IACH,WAAW,CAAC,EAAE,EAAE,WAAW,GAAG,IAAI;IAkBlC,kBAAkB;IAClB,SAAS,CAAC,kBAAkB,CAAC,cAAc,EAAE,MAAM,GAAG,WAAW;IAOjE,kBAAkB;cACF,mBAAmB,IAAI,OAAO,CAAC,WAAW,CAAC;IAqC3D,kBAAkB;IAClB,SAAS,CAAC,kBAAkB,CAAC,GAAG,EAAE,OAAO,GAAG,WAAW;IAavD,eAAe,CAAC,OAAO,EAAE,WAAW,EAAE,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI;IAMnE,kBAAkB;IAClB,aAAa,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI;IAMrC,kBAAkB;IAClB,WAAW,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI;IAQ/B,kBAAkB;IAClB,sBAAsB,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI;IAYpD,kBAAkB;IAClB,mBAAmB,CAAC,WAAW,EAAE,WAAW,GAAG,IAAI;CAQpD"}
|
|
@@ -1,173 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.TransactionBuilder = void 0;
|
|
7
|
-
const sdk_core_1 = require("@bitgo-beta/sdk-core");
|
|
8
|
-
const crypto_1 = require("@cosmjs/crypto");
|
|
9
|
-
const proto_signing_1 = require("@cosmjs/proto-signing");
|
|
10
|
-
const keyPair_1 = require("./keyPair");
|
|
11
|
-
const transaction_1 = require("./transaction");
|
|
12
|
-
const utils_1 = __importDefault(require("./utils"));
|
|
13
|
-
class TransactionBuilder extends sdk_core_1.BaseTransactionBuilder {
|
|
14
|
-
constructor(_coinConfig) {
|
|
15
|
-
super(_coinConfig);
|
|
16
|
-
this._transaction = new transaction_1.Transaction(_coinConfig);
|
|
17
|
-
}
|
|
18
|
-
/** @inheritdoc */
|
|
19
|
-
get transaction() {
|
|
20
|
-
return this._transaction;
|
|
21
|
-
}
|
|
22
|
-
/** @inheritdoc */
|
|
23
|
-
set transaction(transaction) {
|
|
24
|
-
this._transaction = transaction;
|
|
25
|
-
}
|
|
26
|
-
/** @inheritDoc */
|
|
27
|
-
addSignature(publicKey, signature) {
|
|
28
|
-
this._signature = signature;
|
|
29
|
-
this._publicKey = publicKey.pub;
|
|
30
|
-
}
|
|
31
|
-
/**
|
|
32
|
-
* Sets gas budget of this transaction
|
|
33
|
-
* Gas budget consist of fee amount and gas limit. Division feeAmount/gasLimit represents
|
|
34
|
-
* the gas-fee and it should be more than minimum required gas-fee to process the transaction
|
|
35
|
-
* @param {FeeData} gasBudget
|
|
36
|
-
* @returns {TransactionBuilder} this transaction builder
|
|
37
|
-
*/
|
|
38
|
-
gasBudget(gasBudget) {
|
|
39
|
-
utils_1.default.validateGasBudget(gasBudget);
|
|
40
|
-
this._gasBudget = gasBudget;
|
|
41
|
-
return this;
|
|
42
|
-
}
|
|
43
|
-
/**
|
|
44
|
-
* Sets sequence of this transaction.
|
|
45
|
-
* @param {number} sequence - sequence data for tx signer
|
|
46
|
-
* @returns {TransactionBuilder} This transaction builder
|
|
47
|
-
*/
|
|
48
|
-
sequence(sequence) {
|
|
49
|
-
utils_1.default.validateSequence(sequence);
|
|
50
|
-
this._sequence = sequence;
|
|
51
|
-
return this;
|
|
52
|
-
}
|
|
53
|
-
publicKey(publicKey) {
|
|
54
|
-
this._publicKey = publicKey;
|
|
55
|
-
return this;
|
|
56
|
-
}
|
|
57
|
-
accountNumber(accountNumber) {
|
|
58
|
-
this._accountNumber = accountNumber;
|
|
59
|
-
return this;
|
|
60
|
-
}
|
|
61
|
-
chainId(chainId) {
|
|
62
|
-
this._chainId = chainId;
|
|
63
|
-
return this;
|
|
64
|
-
}
|
|
65
|
-
/**
|
|
66
|
-
* Initialize the transaction builder fields using the decoded transaction data
|
|
67
|
-
* @param {Transaction} tx the transaction data
|
|
68
|
-
*/
|
|
69
|
-
initBuilder(tx) {
|
|
70
|
-
this._transaction = tx;
|
|
71
|
-
const txData = tx.toJson();
|
|
72
|
-
this.gasBudget(txData.gasBudget);
|
|
73
|
-
this.messages(txData.sendMessages.map((message) => {
|
|
74
|
-
return message.value;
|
|
75
|
-
}));
|
|
76
|
-
this.sequence(txData.sequence);
|
|
77
|
-
this.publicKey(txData.publicKey);
|
|
78
|
-
this.accountNumber(txData.accountNumber);
|
|
79
|
-
this.chainId(txData.chainId);
|
|
80
|
-
if (tx.signature && tx.signature.length > 0) {
|
|
81
|
-
this.addSignature({ pub: txData.publicKey }, Buffer.from(tx.signature[0], 'hex'));
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
/** @inheritdoc */
|
|
85
|
-
fromImplementation(rawTransaction) {
|
|
86
|
-
const tx = new transaction_1.Transaction(this._coinConfig);
|
|
87
|
-
tx.enrichTransactionDetailsFromRawTransaction(rawTransaction);
|
|
88
|
-
this.initBuilder(tx);
|
|
89
|
-
return this.transaction;
|
|
90
|
-
}
|
|
91
|
-
/** @inheritdoc */
|
|
92
|
-
async buildImplementation() {
|
|
93
|
-
var _a;
|
|
94
|
-
this.transaction.transactionType(this.transactionType);
|
|
95
|
-
if (this._accountNumber) {
|
|
96
|
-
this.transaction.accountNumber = this._accountNumber;
|
|
97
|
-
}
|
|
98
|
-
if (this._chainId) {
|
|
99
|
-
this.transaction.chainId = this._chainId;
|
|
100
|
-
}
|
|
101
|
-
this.transaction.atomTransaction = utils_1.default.createAtomTransaction(this._sequence, this._messages, this._gasBudget, this._publicKey);
|
|
102
|
-
const privateKey = (_a = this._signer) === null || _a === void 0 ? void 0 : _a.getPrivateKey();
|
|
103
|
-
if (privateKey !== undefined && this.transaction.atomTransaction.publicKey !== undefined) {
|
|
104
|
-
const signDoc = utils_1.default.createSignDoc(this.transaction.atomTransaction, this._accountNumber, this._chainId);
|
|
105
|
-
const txnHash = crypto_1.sha256(proto_signing_1.makeSignBytes(signDoc));
|
|
106
|
-
const signature = await crypto_1.Secp256k1.createSignature(txnHash, privateKey);
|
|
107
|
-
const compressedSig = Buffer.concat([signature.r(), signature.s()]);
|
|
108
|
-
this.addSignature({ pub: this.transaction.atomTransaction.publicKey }, compressedSig);
|
|
109
|
-
}
|
|
110
|
-
if (this._signature !== undefined) {
|
|
111
|
-
this.transaction.addSignature(this._signature.toString('hex'));
|
|
112
|
-
this.transaction.atomTransaction = utils_1.default.createAtomTransactionWithHash(this._sequence, this._messages, this._gasBudget, this._publicKey, this._signature);
|
|
113
|
-
}
|
|
114
|
-
return this.transaction;
|
|
115
|
-
}
|
|
116
|
-
/** @inheritdoc */
|
|
117
|
-
signImplementation(key) {
|
|
118
|
-
this.validateKey(key);
|
|
119
|
-
if (this._accountNumber === undefined) {
|
|
120
|
-
throw new sdk_core_1.SigningError('accountNumber is required before signing');
|
|
121
|
-
}
|
|
122
|
-
if (this._chainId === undefined) {
|
|
123
|
-
throw new sdk_core_1.SigningError('chainId is required before signing');
|
|
124
|
-
}
|
|
125
|
-
this._signer = new keyPair_1.KeyPair({ prv: key.key });
|
|
126
|
-
this._publicKey = this._signer.getKeys().pub;
|
|
127
|
-
return this.transaction;
|
|
128
|
-
}
|
|
129
|
-
validateAddress(address, addressFormat) {
|
|
130
|
-
if (!(utils_1.default.isValidAddress(address.address) || utils_1.default.isValidValidatorAddress(address.address))) {
|
|
131
|
-
throw new sdk_core_1.BuildTransactionError('transactionBuilder: address isValidAddress check failed: ' + address.address);
|
|
132
|
-
}
|
|
133
|
-
}
|
|
134
|
-
/** @inheritdoc */
|
|
135
|
-
validateValue(value) {
|
|
136
|
-
if (value.isLessThan(0)) {
|
|
137
|
-
throw new sdk_core_1.BuildTransactionError('Value cannot be less than zero');
|
|
138
|
-
}
|
|
139
|
-
}
|
|
140
|
-
/** @inheritdoc */
|
|
141
|
-
validateKey(key) {
|
|
142
|
-
try {
|
|
143
|
-
new keyPair_1.KeyPair({ prv: key.key });
|
|
144
|
-
}
|
|
145
|
-
catch {
|
|
146
|
-
throw new sdk_core_1.BuildTransactionError(`Key validation failed`);
|
|
147
|
-
}
|
|
148
|
-
}
|
|
149
|
-
/** @inheritdoc */
|
|
150
|
-
validateRawTransaction(rawTransaction) {
|
|
151
|
-
if (!rawTransaction) {
|
|
152
|
-
throw new sdk_core_1.InvalidTransactionError('Invalid raw transaction: Undefined rawTransaction');
|
|
153
|
-
}
|
|
154
|
-
try {
|
|
155
|
-
}
|
|
156
|
-
catch (e) {
|
|
157
|
-
throw new sdk_core_1.InvalidTransactionError('Invalid raw transaction: ' + e.message);
|
|
158
|
-
}
|
|
159
|
-
const atomTransaction = utils_1.default.deserializeAtomTransaction(rawTransaction);
|
|
160
|
-
utils_1.default.validateAtomTransaction(atomTransaction);
|
|
161
|
-
}
|
|
162
|
-
/** @inheritdoc */
|
|
163
|
-
validateTransaction(transaction) {
|
|
164
|
-
utils_1.default.validateAtomTransaction({
|
|
165
|
-
sequence: this._sequence,
|
|
166
|
-
sendMessages: this._messages,
|
|
167
|
-
gasBudget: this._gasBudget,
|
|
168
|
-
publicKey: this._publicKey,
|
|
169
|
-
});
|
|
170
|
-
}
|
|
171
|
-
}
|
|
172
|
-
exports.TransactionBuilder = TransactionBuilder;
|
|
173
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb25CdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi90cmFuc2FjdGlvbkJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsbURBUzhCO0FBRTlCLDJDQUFtRDtBQUNuRCx5REFBc0Q7QUFVdEQsdUNBQW9DO0FBQ3BDLCtDQUE0QztBQUM1QyxvREFBNEI7QUFFNUIsTUFBc0Isa0JBQW1CLFNBQVEsaUNBQXNCO0lBV3JFLFlBQVksV0FBaUM7UUFDM0MsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ25CLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSx5QkFBVyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ25ELENBQUM7SUFPRCxrQkFBa0I7SUFDbEIsSUFBYyxXQUFXO1FBQ3ZCLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQztJQUMzQixDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLElBQWMsV0FBVyxDQUFDLFdBQXdCO1FBQ2hELElBQUksQ0FBQyxZQUFZLEdBQUcsV0FBVyxDQUFDO0lBQ2xDLENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsWUFBWSxDQUFDLFNBQXdCLEVBQUUsU0FBaUI7UUFDdEQsSUFBSSxDQUFDLFVBQVUsR0FBRyxTQUFTLENBQUM7UUFDNUIsSUFBSSxDQUFDLFVBQVUsR0FBRyxTQUFTLENBQUMsR0FBRyxDQUFDO0lBQ2xDLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxTQUFTLENBQUMsU0FBa0I7UUFDMUIsZUFBSyxDQUFDLGlCQUFpQixDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ25DLElBQUksQ0FBQyxVQUFVLEdBQUcsU0FBUyxDQUFDO1FBQzVCLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxRQUFRLENBQUMsUUFBZ0I7UUFDdkIsZUFBSyxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ2pDLElBQUksQ0FBQyxT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LGdDQUFxQixDQUFDLHVCQUF1QixDQUFDLENBQUM7U0FDMUQ7SUFDSCxDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLHNCQUFzQixDQUFDLGNBQXNCO1FBQzNDLElBQUksQ0FBQyxjQUFjLEVBQUU7WUFDbkIsTUFBTSxJQUFJLGtDQUF1QixDQUFDLG1EQUFtRCxDQUFDLENBQUM7U0FDeEY7UUFDRCxJQUFJO1NBQ0g7UUFBQyxPQUFPLENBQUMsRUFBRTtZQUNWLE1BQU0sSUFBSSxrQ0FBdUIsQ0FBQywyQkFBMkIsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUM7U0FDNUU7UUFDRCxNQUFNLGVBQWUsR0FBRyxlQUFLLENBQUMsMEJBQTBCLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDekUsZUFBSyxDQUFDLHVCQUF1QixDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBQ2pELENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsbUJBQW1CLENBQUMsV0FBd0I7UUFDMUMsZUFBSyxDQUFDLHVCQUF1QixDQUFDO1lBQzVCLFFBQVEsRUFBRSxJQUFJLENBQUMsU0FBUztZQUN4QixZQUFZLEVBQUUsSUFBSSxDQUFDLFNBQVM7WUFDNUIsU0FBUyxFQUFFLElBQUksQ0FBQyxVQUFVO1lBQzFCLFNBQVMsRUFBRSxJQUFJLENBQUMsVUFBVTtTQUMzQixDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0Y7QUFyTkQsZ0RBcU5DIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQmFzZUFkZHJlc3MsXG4gIEJhc2VLZXksXG4gIEJhc2VUcmFuc2FjdGlvbkJ1aWxkZXIsXG4gIEJ1aWxkVHJhbnNhY3Rpb25FcnJvcixcbiAgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IsXG4gIFB1YmxpY0tleSBhcyBCYXNlUHVibGljS2V5LFxuICBTaWduaW5nRXJyb3IsXG4gIFRyYW5zYWN0aW9uVHlwZSxcbn0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuaW1wb3J0IHsgQmFzZUNvaW4gYXMgQ29pbkNvbmZpZyB9IGZyb20gJ0BiaXRnby1iZXRhL3N0YXRpY3MnO1xuaW1wb3J0IHsgU2VjcDI1NmsxLCBzaGEyNTYgfSBmcm9tICdAY29zbWpzL2NyeXB0byc7XG5pbXBvcnQgeyBtYWtlU2lnbkJ5dGVzIH0gZnJvbSAnQGNvc21qcy9wcm90by1zaWduaW5nJztcbmltcG9ydCBCaWdOdW1iZXIgZnJvbSAnYmlnbnVtYmVyLmpzJztcblxuaW1wb3J0IHtcbiAgRGVsZWdhdGVPclVuZGVsZWdldGVNZXNzYWdlLFxuICBGZWVEYXRhLFxuICBNZXNzYWdlRGF0YSxcbiAgU2VuZE1lc3NhZ2UsXG4gIFdpdGhkcmF3RGVsZWdhdG9yUmV3YXJkc01lc3NhZ2UsXG59IGZyb20gJy4vaWZhY2UnO1xuaW1wb3J0IHsgS2V5UGFpciB9IGZyb20gJy4va2V5UGFpcic7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbiB9IGZyb20gJy4vdHJhbnNhY3Rpb24nO1xuaW1wb3J0IHV0aWxzIGZyb20gJy4vdXRpbHMnO1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgVHJhbnNhY3Rpb25CdWlsZGVyIGV4dGVuZHMgQmFzZVRyYW5zYWN0aW9uQnVpbGRlciB7XG4gIHByb3RlY3RlZCBfdHJhbnNhY3Rpb246IFRyYW5zYWN0aW9uO1xuICBwcm90ZWN0ZWQgX3NlcXVlbmNlOiBudW1iZXI7XG4gIHByb3RlY3RlZCBfbWVzc2FnZXM6IE1lc3NhZ2VEYXRhW107XG4gIHByb3RlY3RlZCBfZ2FzQnVkZ2V0OiBGZWVEYXRhO1xuICBwcml2YXRlIF9hY2NvdW50TnVtYmVyPzogbnVtYmVyO1xuICBwcml2YXRlIF9zaWduYXR1cmU6IEJ1ZmZlcjtcbiAgcHJpdmF0ZSBfY2hhaW5JZD86IHN0cmluZztcbiAgcHJpdmF0ZSBfcHVibGljS2V5Pzogc3RyaW5nO1xuICBwcml2YXRlIF9zaWduZXI6IEtleVBhaXI7XG5cbiAgY29uc3RydWN0b3IoX2NvaW5Db25maWc6IFJlYWRvbmx5PENvaW5Db25maWc+KSB7XG4gICAgc3VwZXIoX2NvaW5Db25maWcpO1xuICAgIHRoaXMuX3RyYW5zYWN0aW9uID0gbmV3IFRyYW5zYWN0aW9uKF9jb2luQ29uZmlnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgdHJhbnNhY3Rpb24gdHlwZS5cbiAgICovXG4gIHByb3RlY3RlZCBhYnN0cmFjdCBnZXQgdHJhbnNhY3Rpb25UeXBlKCk6IFRyYW5zYWN0aW9uVHlwZTtcblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgcHJvdGVjdGVkIGdldCB0cmFuc2FjdGlvbigpOiBUcmFuc2FjdGlvbiB7XG4gICAgcmV0dXJuIHRoaXMuX3RyYW5zYWN0aW9uO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHByb3RlY3RlZCBzZXQgdHJhbnNhY3Rpb24odHJhbnNhY3Rpb246IFRyYW5zYWN0aW9uKSB7XG4gICAgdGhpcy5fdHJhbnNhY3Rpb24gPSB0cmFuc2FjdGlvbjtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdERvYyAqL1xuICBhZGRTaWduYXR1cmUocHVibGljS2V5OiBCYXNlUHVibGljS2V5LCBzaWduYXR1cmU6IEJ1ZmZlcik6IHZvaWQge1xuICAgIHRoaXMuX3NpZ25hdHVyZSA9IHNpZ25hdHVyZTtcbiAgICB0aGlzLl9wdWJsaWNLZXkgPSBwdWJsaWNLZXkucHViO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgZ2FzIGJ1ZGdldCBvZiB0aGlzIHRyYW5zYWN0aW9uXG4gICAqIEdhcyBidWRnZXQgY29uc2lzdCBvZiBmZWUgYW1vdW50IGFuZCBnYXMgbGltaXQuIERpdmlzaW9uIGZlZUFtb3VudC9nYXNMaW1pdCByZXByZXNlbnRzXG4gICAqIHRoZSBnYXMtZmVlIGFuZCBpdCBzaG91bGQgYmUgbW9yZSB0aGFuIG1pbmltdW0gcmVxdWlyZWQgZ2FzLWZlZSB0byBwcm9jZXNzIHRoZSB0cmFuc2FjdGlvblxuICAgKiBAcGFyYW0ge0ZlZURhdGF9IGdhc0J1ZGdldFxuICAgKiBAcmV0dXJucyB7VHJhbnNhY3Rpb25CdWlsZGVyfSB0aGlzIHRyYW5zYWN0aW9uIGJ1aWxkZXJcbiAgICovXG4gIGdhc0J1ZGdldChnYXNCdWRnZXQ6IEZlZURhdGEpOiB0aGlzIHtcbiAgICB1dGlscy52YWxpZGF0ZUdhc0J1ZGdldChnYXNCdWRnZXQpO1xuICAgIHRoaXMuX2dhc0J1ZGdldCA9IGdhc0J1ZGdldDtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHNlcXVlbmNlIG9mIHRoaXMgdHJhbnNhY3Rpb24uXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBzZXF1ZW5jZSAtIHNlcXVlbmNlIGRhdGEgZm9yIHR4IHNpZ25lclxuICAgKiBAcmV0dXJucyB7VHJhbnNhY3Rpb25CdWlsZGVyfSBUaGlzIHRyYW5zYWN0aW9uIGJ1aWxkZXJcbiAgICovXG4gIHNlcXVlbmNlKHNlcXVlbmNlOiBudW1iZXIpOiB0aGlzIHtcbiAgICB1dGlscy52YWxpZGF0ZVNlcXVlbmNlKHNlcXVlbmNlKTtcbiAgICB0aGlzLl9zZXF1ZW5jZSA9IHNlcXVlbmNlO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgbWVzc2FnZXMgdG8gdGhlIHRyYW5zYWN0aW9uIGJvZHkuIE1lc3NhZ2UgdHlwZSB3aWxsIGJlIGRpZmZlcmVudCBiYXNlZCBvbiB0aGUgdHJhbnNhY3Rpb24gdHlwZVxuICAgKiAtIEZvciBAc2VlIFRyYW5zYWN0aW9uVHlwZS5TdGFraW5nQWN0aXZhdGUgcmVxdWlyZWQgdHlwZSBpcyBAc2VlIERlbGVnYXRlT3JVbmRlbGVnZXRlTWVzc2FnZVxuICAgKiAtIEZvciBAc2VlIFRyYW5zYWN0aW9uVHlwZS5TdGFraW5nRGVhY3RpdmF0ZSByZXF1aXJlZCB0eXBlIGlzIEBzZWUgRGVsZWdhdGVPclVuZGVsZWdldGVNZXNzYWdlXG4gICAqIC0gRm9yIEBzZWUgVHJhbnNhY3Rpb25UeXBlLlNlbmQgcmVxdWlyZWQgdHlwZSBpcyBAc2VlIFNlbmRNZXNzYWdlXG4gICAqIC0gRm9yIEBzZWUgVHJhbnNhY3Rpb25UeXBlLlN0YWtpbmdXaXRoZHJhdyByZXF1aXJlZCB0eXBlIGlzIEBzZWUgV2l0aGRyYXdEZWxlZ2F0b3JSZXdhcmRzTWVzc2FnZVxuICAgKiBAcGFyYW0geyhTZW5kTWVzc2FnZSB8IERlbGVnYXRlT3JVbmRlbGVnZXRlTWVzc2FnZSB8IFdpdGhkcmF3RGVsZWdhdG9yUmV3YXJkc01lc3NhZ2UpW119IG1lc3NhZ2VzXG4gICAqIEByZXR1cm5zIHtUcmFuc2FjdGlvbkJ1aWxkZXJ9IFRoaXMgdHJhbnNhY3Rpb24gYnVpbGRlclxuICAgKi9cbiAgYWJzdHJhY3QgbWVzc2FnZXMobWVzc2FnZXM6IChTZW5kTWVzc2FnZSB8IERlbGVnYXRlT3JVbmRlbGVnZXRlTWVzc2FnZSB8IFdpdGhkcmF3RGVsZWdhdG9yUmV3YXJkc01lc3NhZ2UpW10pOiB0aGlzO1xuXG4gIHB1YmxpY0tleShwdWJsaWNLZXk6IHN0cmluZyB8IHVuZGVmaW5lZCk6IHRoaXMge1xuICAgIHRoaXMuX3B1YmxpY0tleSA9IHB1YmxpY0tleTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGFjY291bnROdW1iZXIoYWNjb3VudE51bWJlcjogbnVtYmVyIHwgdW5kZWZpbmVkKTogdGhpcyB7XG4gICAgdGhpcy5fYWNjb3VudE51bWJlciA9IGFjY291bnROdW1iZXI7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBjaGFpbklkKGNoYWluSWQ6IHN0cmluZyB8IHVuZGVmaW5lZCk6IHRoaXMge1xuICAgIHRoaXMuX2NoYWluSWQgPSBjaGFpbklkO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIEluaXRpYWxpemUgdGhlIHRyYW5zYWN0aW9uIGJ1aWxkZXIgZmllbGRzIHVzaW5nIHRoZSBkZWNvZGVkIHRyYW5zYWN0aW9uIGRhdGFcbiAgICogQHBhcmFtIHtUcmFuc2FjdGlvbn0gdHggdGhlIHRyYW5zYWN0aW9uIGRhdGFcbiAgICovXG4gIGluaXRCdWlsZGVyKHR4OiBUcmFuc2FjdGlvbik6IHZvaWQge1xuICAgIHRoaXMuX3RyYW5zYWN0aW9uID0gdHg7XG4gICAgY29uc3QgdHhEYXRhID0gdHgudG9Kc29uKCk7XG4gICAgdGhpcy5nYXNCdWRnZXQodHhEYXRhLmdhc0J1ZGdldCk7XG4gICAgdGhpcy5tZXNzYWdlcyhcbiAgICAgIHR4RGF0YS5zZW5kTWVzc2FnZXMubWFwKChtZXNzYWdlKSA9PiB7XG4gICAgICAgIHJldHVybiBtZXNzYWdlLnZhbHVlO1xuICAgICAgfSlcbiAgICApO1xuICAgIHRoaXMuc2VxdWVuY2UodHhEYXRhLnNlcXVlbmNlKTtcbiAgICB0aGlzLnB1YmxpY0tleSh0eERhdGEucHVibGljS2V5KTtcbiAgICB0aGlzLmFjY291bnROdW1iZXIodHhEYXRhLmFjY291bnROdW1iZXIpO1xuICAgIHRoaXMuY2hhaW5JZCh0eERhdGEuY2hhaW5JZCk7XG4gICAgaWYgKHR4LnNpZ25hdHVyZSAmJiB0eC5zaWduYXR1cmUubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5hZGRTaWduYXR1cmUoeyBwdWI6IHR4RGF0YS5wdWJsaWNLZXkgfSBhcyBhbnksIEJ1ZmZlci5mcm9tKHR4LnNpZ25hdHVyZVswXSwgJ2hleCcpKTtcbiAgICB9XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgcHJvdGVjdGVkIGZyb21JbXBsZW1lbnRhdGlvbihyYXdUcmFuc2FjdGlvbjogc3RyaW5nKTogVHJhbnNhY3Rpb24ge1xuICAgIGNvbnN0IHR4ID0gbmV3IFRyYW5zYWN0aW9uKHRoaXMuX2NvaW5Db25maWcpO1xuICAgIHR4LmVucmljaFRyYW5zYWN0aW9uRGV0YWlsc0Zyb21SYXdUcmFuc2FjdGlvbihyYXdUcmFuc2FjdGlvbik7XG4gICAgdGhpcy5pbml0QnVpbGRlcih0eCk7XG4gICAgcmV0dXJuIHRoaXMudHJhbnNhY3Rpb247XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgcHJvdGVjdGVkIGFzeW5jIGJ1aWxkSW1wbGVtZW50YXRpb24oKTogUHJvbWlzZTxUcmFuc2FjdGlvbj4ge1xuICAgIHRoaXMudHJhbnNhY3Rpb24udHJhbnNhY3Rpb25UeXBlKHRoaXMudHJhbnNhY3Rpb25UeXBlKTtcbiAgICBpZiAodGhpcy5fYWNjb3VudE51bWJlcikge1xuICAgICAgdGhpcy50cmFuc2FjdGlvbi5hY2NvdW50TnVtYmVyID0gdGhpcy5fYWNjb3VudE51bWJlcjtcbiAgICB9XG4gICAgaWYgKHRoaXMuX2NoYWluSWQpIHtcbiAgICAgIHRoaXMudHJhbnNhY3Rpb24uY2hhaW5JZCA9IHRoaXMuX2NoYWluSWQ7XG4gICAgfVxuICAgIHRoaXMudHJhbnNhY3Rpb24uYXRvbVRyYW5zYWN0aW9uID0gdXRpbHMuY3JlYXRlQXRvbVRyYW5zYWN0aW9uKFxuICAgICAgdGhpcy5fc2VxdWVuY2UsXG4gICAgICB0aGlzLl9tZXNzYWdlcyxcbiAgICAgIHRoaXMuX2dhc0J1ZGdldCxcbiAgICAgIHRoaXMuX3B1YmxpY0tleVxuICAgICk7XG5cbiAgICBjb25zdCBwcml2YXRlS2V5ID0gdGhpcy5fc2lnbmVyPy5nZXRQcml2YXRlS2V5KCk7XG4gICAgaWYgKHByaXZhdGVLZXkgIT09IHVuZGVmaW5lZCAmJiB0aGlzLnRyYW5zYWN0aW9uLmF0b21UcmFuc2FjdGlvbi5wdWJsaWNLZXkgIT09IHVuZGVmaW5lZCkge1xuICAgICAgY29uc3Qgc2lnbkRvYyA9IHV0aWxzLmNyZWF0ZVNpZ25Eb2ModGhpcy50cmFuc2FjdGlvbi5hdG9tVHJhbnNhY3Rpb24sIHRoaXMuX2FjY291bnROdW1iZXIsIHRoaXMuX2NoYWluSWQpO1xuICAgICAgY29uc3QgdHhuSGFzaCA9IHNoYTI1NihtYWtlU2lnbkJ5dGVzKHNpZ25Eb2MpKTtcbiAgICAgIGNvbnN0IHNpZ25hdHVyZSA9IGF3YWl0IFNlY3AyNTZrMS5jcmVhdGVTaWduYXR1cmUodHhuSGFzaCwgcHJpdmF0ZUtleSk7XG4gICAgICBjb25zdCBjb21wcmVzc2VkU2lnID0gQnVmZmVyLmNvbmNhdChbc2lnbmF0dXJlLnIoKSwgc2lnbmF0dXJlLnMoKV0pO1xuICAgICAgdGhpcy5hZGRTaWduYXR1cmUoeyBwdWI6IHRoaXMudHJhbnNhY3Rpb24uYXRvbVRyYW5zYWN0aW9uLnB1YmxpY0tleSB9LCBjb21wcmVzc2VkU2lnKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5fc2lnbmF0dXJlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMudHJhbnNhY3Rpb24uYWRkU2lnbmF0dXJlKHRoaXMuX3NpZ25hdHVyZS50b1N0cmluZygnaGV4JykpO1xuICAgICAgdGhpcy50cmFuc2FjdGlvbi5hdG9tVHJhbnNhY3Rpb24gPSB1dGlscy5jcmVhdGVBdG9tVHJhbnNhY3Rpb25XaXRoSGFzaChcbiAgICAgICAgdGhpcy5fc2VxdWVuY2UsXG4gICAgICAgIHRoaXMuX21lc3NhZ2VzLFxuICAgICAgICB0aGlzLl9nYXNCdWRnZXQsXG4gICAgICAgIHRoaXMuX3B1YmxpY0tleSxcbiAgICAgICAgdGhpcy5fc2lnbmF0dXJlXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy50cmFuc2FjdGlvbjtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBwcm90ZWN0ZWQgc2lnbkltcGxlbWVudGF0aW9uKGtleTogQmFzZUtleSk6IFRyYW5zYWN0aW9uIHtcbiAgICB0aGlzLnZhbGlkYXRlS2V5KGtleSk7XG4gICAgaWYgKHRoaXMuX2FjY291bnROdW1iZXIgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhyb3cgbmV3IFNpZ25pbmdFcnJvcignYWNjb3VudE51bWJlciBpcyByZXF1aXJlZCBiZWZvcmUgc2lnbmluZycpO1xuICAgIH1cbiAgICBpZiAodGhpcy5fY2hhaW5JZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aHJvdyBuZXcgU2lnbmluZ0Vycm9yKCdjaGFpbklkIGlzIHJlcXVpcmVkIGJlZm9yZSBzaWduaW5nJyk7XG4gICAgfVxuICAgIHRoaXMuX3NpZ25lciA9IG5ldyBLZXlQYWlyKHsgcHJ2OiBrZXkua2V5IH0pO1xuICAgIHRoaXMuX3B1YmxpY0tleSA9IHRoaXMuX3NpZ25lci5nZXRLZXlzKCkucHViO1xuICAgIHJldHVybiB0aGlzLnRyYW5zYWN0aW9uO1xuICB9XG5cbiAgdmFsaWRhdGVBZGRyZXNzKGFkZHJlc3M6IEJhc2VBZGRyZXNzLCBhZGRyZXNzRm9ybWF0Pzogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKCEodXRpbHMuaXNWYWxpZEFkZHJlc3MoYWRkcmVzcy5hZGRyZXNzKSB8fCB1dGlscy5pc1ZhbGlkVmFsaWRhdG9yQWRkcmVzcyhhZGRyZXNzLmFkZHJlc3MpKSkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcigndHJhbnNhY3Rpb25CdWlsZGVyOiBhZGRyZXNzIGlzVmFsaWRBZGRyZXNzIGNoZWNrIGZhaWxlZDogJyArIGFkZHJlc3MuYWRkcmVzcyk7XG4gICAgfVxuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHZhbGlkYXRlVmFsdWUodmFsdWU6IEJpZ051bWJlcik6IHZvaWQge1xuICAgIGlmICh2YWx1ZS5pc0xlc3NUaGFuKDApKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdWYWx1ZSBjYW5ub3QgYmUgbGVzcyB0aGFuIHplcm8nKTtcbiAgICB9XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgdmFsaWRhdGVLZXkoa2V5OiBCYXNlS2V5KTogdm9pZCB7XG4gICAgdHJ5IHtcbiAgICAgIG5ldyBLZXlQYWlyKHsgcHJ2OiBrZXkua2V5IH0pO1xuICAgIH0gY2F0Y2gge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcihgS2V5IHZhbGlkYXRpb24gZmFpbGVkYCk7XG4gICAgfVxuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHZhbGlkYXRlUmF3VHJhbnNhY3Rpb24ocmF3VHJhbnNhY3Rpb246IHN0cmluZyk6IHZvaWQge1xuICAgIGlmICghcmF3VHJhbnNhY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcignSW52YWxpZCByYXcgdHJhbnNhY3Rpb246IFVuZGVmaW5lZCByYXdUcmFuc2FjdGlvbicpO1xuICAgIH1cbiAgICB0cnkge1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcignSW52YWxpZCByYXcgdHJhbnNhY3Rpb246ICcgKyBlLm1lc3NhZ2UpO1xuICAgIH1cbiAgICBjb25zdCBhdG9tVHJhbnNhY3Rpb24gPSB1dGlscy5kZXNlcmlhbGl6ZUF0b21UcmFuc2FjdGlvbihyYXdUcmFuc2FjdGlvbik7XG4gICAgdXRpbHMudmFsaWRhdGVBdG9tVHJhbnNhY3Rpb24oYXRvbVRyYW5zYWN0aW9uKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICB2YWxpZGF0ZVRyYW5zYWN0aW9uKHRyYW5zYWN0aW9uOiBUcmFuc2FjdGlvbik6IHZvaWQge1xuICAgIHV0aWxzLnZhbGlkYXRlQXRvbVRyYW5zYWN0aW9uKHtcbiAgICAgIHNlcXVlbmNlOiB0aGlzLl9zZXF1ZW5jZSxcbiAgICAgIHNlbmRNZXNzYWdlczogdGhpcy5fbWVzc2FnZXMsXG4gICAgICBnYXNCdWRnZXQ6IHRoaXMuX2dhc0J1ZGdldCxcbiAgICAgIHB1YmxpY0tleTogdGhpcy5fcHVibGljS2V5LFxuICAgIH0pO1xuICB9XG59XG4iXX0=
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import { TransactionType } from '@bitgo-beta/sdk-core';
|
|
2
|
-
import { BaseCoin as CoinConfig } from '@bitgo-beta/statics';
|
|
3
|
-
import { SendMessage } from './iface';
|
|
4
|
-
import { TransactionBuilder } from './transactionBuilder';
|
|
5
|
-
export declare class TransferBuilder extends TransactionBuilder {
|
|
6
|
-
constructor(_coinConfig: Readonly<CoinConfig>);
|
|
7
|
-
protected get transactionType(): TransactionType;
|
|
8
|
-
/** @inheritdoc */
|
|
9
|
-
messages(sendMessages: SendMessage[]): this;
|
|
10
|
-
}
|
|
11
|
-
//# sourceMappingURL=transferBuilder.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"transferBuilder.d.ts","sourceRoot":"","sources":["../../../src/lib/transferBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAG7D,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AACtC,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAG1D,qBAAa,eAAgB,SAAQ,kBAAkB;gBACzC,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAI7C,SAAS,KAAK,eAAe,IAAI,eAAe,CAE/C;IAED,kBAAkB;IAClB,QAAQ,CAAC,YAAY,EAAE,WAAW,EAAE,GAAG,IAAI;CAU5C"}
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.TransferBuilder = void 0;
|
|
7
|
-
const sdk_core_1 = require("@bitgo-beta/sdk-core");
|
|
8
|
-
const constants_1 = require("./constants");
|
|
9
|
-
const transactionBuilder_1 = require("./transactionBuilder");
|
|
10
|
-
const utils_1 = __importDefault(require("./utils"));
|
|
11
|
-
class TransferBuilder extends transactionBuilder_1.TransactionBuilder {
|
|
12
|
-
constructor(_coinConfig) {
|
|
13
|
-
super(_coinConfig);
|
|
14
|
-
}
|
|
15
|
-
get transactionType() {
|
|
16
|
-
return sdk_core_1.TransactionType.Send;
|
|
17
|
-
}
|
|
18
|
-
/** @inheritdoc */
|
|
19
|
-
messages(sendMessages) {
|
|
20
|
-
this._messages = sendMessages.map((sendMessage) => {
|
|
21
|
-
utils_1.default.validateSendMessage(sendMessage);
|
|
22
|
-
return {
|
|
23
|
-
typeUrl: constants_1.sendMsgTypeUrl,
|
|
24
|
-
value: sendMessage,
|
|
25
|
-
};
|
|
26
|
-
});
|
|
27
|
-
return this;
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
exports.TransferBuilder = TransferBuilder;
|
|
31
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNmZXJCdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi90cmFuc2ZlckJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsbURBQXVEO0FBR3ZELDJDQUE2QztBQUU3Qyw2REFBMEQ7QUFDMUQsb0RBQTRCO0FBRTVCLE1BQWEsZUFBZ0IsU0FBUSx1Q0FBa0I7SUFDckQsWUFBWSxXQUFpQztRQUMzQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDckIsQ0FBQztJQUVELElBQWMsZUFBZTtRQUMzQixPQUFPLDBCQUFlLENBQUMsSUFBSSxDQUFDO0lBQzlCLENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsUUFBUSxDQUFDLFlBQTJCO1FBQ2xDLElBQUksQ0FBQyxTQUFTLEdBQUcsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFdBQVcsRUFBRSxFQUFFO1lBQ2hELGVBQUssQ0FBQyxtQkFBbUIsQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUN2QyxPQUFPO2dCQUNMLE9BQU8sRUFBRSwwQkFBYztnQkFDdkIsS0FBSyxFQUFFLFdBQVc7YUFDbkIsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0NBQ0Y7QUFwQkQsMENBb0JDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVHJhbnNhY3Rpb25UeXBlIH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuaW1wb3J0IHsgQmFzZUNvaW4gYXMgQ29pbkNvbmZpZyB9IGZyb20gJ0BiaXRnby1iZXRhL3N0YXRpY3MnO1xuXG5pbXBvcnQgeyBzZW5kTXNnVHlwZVVybCB9IGZyb20gJy4vY29uc3RhbnRzJztcbmltcG9ydCB7IFNlbmRNZXNzYWdlIH0gZnJvbSAnLi9pZmFjZSc7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbkJ1aWxkZXIgfSBmcm9tICcuL3RyYW5zYWN0aW9uQnVpbGRlcic7XG5pbXBvcnQgdXRpbHMgZnJvbSAnLi91dGlscyc7XG5cbmV4cG9ydCBjbGFzcyBUcmFuc2ZlckJ1aWxkZXIgZXh0ZW5kcyBUcmFuc2FjdGlvbkJ1aWxkZXIge1xuICBjb25zdHJ1Y3RvcihfY29pbkNvbmZpZzogUmVhZG9ubHk8Q29pbkNvbmZpZz4pIHtcbiAgICBzdXBlcihfY29pbkNvbmZpZyk7XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0IHRyYW5zYWN0aW9uVHlwZSgpOiBUcmFuc2FjdGlvblR5cGUge1xuICAgIHJldHVybiBUcmFuc2FjdGlvblR5cGUuU2VuZDtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBtZXNzYWdlcyhzZW5kTWVzc2FnZXM6IFNlbmRNZXNzYWdlW10pOiB0aGlzIHtcbiAgICB0aGlzLl9tZXNzYWdlcyA9IHNlbmRNZXNzYWdlcy5tYXAoKHNlbmRNZXNzYWdlKSA9PiB7XG4gICAgICB1dGlscy52YWxpZGF0ZVNlbmRNZXNzYWdlKHNlbmRNZXNzYWdlKTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHR5cGVVcmw6IHNlbmRNc2dUeXBlVXJsLFxuICAgICAgICB2YWx1ZTogc2VuZE1lc3NhZ2UsXG4gICAgICB9O1xuICAgIH0pO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG59XG4iXX0=
|