@bitgo-beta/sdk-coin-vet 1.0.1-beta.425 → 1.0.1-beta.427

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.
@@ -0,0 +1,73 @@
1
+ import { BaseCoin as CoinConfig } from '@bitgo-beta/statics';
2
+ import { TransactionType } from '@bitgo-beta/sdk-core';
3
+ import { TransactionClause } from '@vechain/sdk-core';
4
+ import { TransactionBuilder } from './transactionBuilder';
5
+ import { Transaction } from '../transaction/transaction';
6
+ import { StakeClauseTransaction } from '../transaction/stakeClauseTransaction';
7
+ export declare class StakeClauseTxnBuilder extends TransactionBuilder {
8
+ /**
9
+ * Creates a new StakingBuilder instance.
10
+ *
11
+ * @param {Readonly<CoinConfig>} _coinConfig - The coin configuration object
12
+ */
13
+ constructor(_coinConfig: Readonly<CoinConfig>);
14
+ /**
15
+ * Initializes the builder with an existing StakingTransaction.
16
+ *
17
+ * @param {StakingTransaction} tx - The transaction to initialize the builder with
18
+ */
19
+ initBuilder(tx: StakeClauseTransaction): void;
20
+ /**
21
+ * Gets the staking transaction instance.
22
+ *
23
+ * @returns {StakingTransaction} The staking transaction
24
+ */
25
+ get stakingTransaction(): StakeClauseTransaction;
26
+ /**
27
+ * Gets the transaction type for staking.
28
+ *
29
+ * @returns {TransactionType} The transaction type
30
+ */
31
+ protected get transactionType(): TransactionType;
32
+ /**
33
+ * Validates the transaction clauses for staking transaction.
34
+ * @param {TransactionClause[]} clauses - The transaction clauses to validate.
35
+ * @returns {boolean} - Returns true if the clauses are valid, false otherwise.
36
+ */
37
+ protected isValidTransactionClauses(clauses: TransactionClause[]): boolean;
38
+ /**
39
+ * Sets the staking contract address for this staking tx.
40
+ * The address must be explicitly provided to ensure the correct contract is used.
41
+ *
42
+ * @param {string} address - The staking contract address (required)
43
+ * @returns {StakingBuilder} This transaction builder
44
+ * @throws {Error} If no address is provided
45
+ */
46
+ stakingContractAddress(address: string): this;
47
+ /**
48
+ * Sets the level ID for this staking tx.
49
+ *
50
+ * @param {number} levelId - The level ID for staking
51
+ * @returns {StakingBuilder} This transaction builder
52
+ */
53
+ levelId(levelId: number): this;
54
+ /**
55
+ * Sets the amount to stake for this staking tx (VET amount being sent).
56
+ *
57
+ * @param {string} amount - The amount to stake in wei
58
+ * @returns {StakingBuilder} This transaction builder
59
+ */
60
+ amountToStake(amount: string): this;
61
+ /**
62
+ * Sets the transaction data for this staking tx.
63
+ *
64
+ * @param {string} data - The transaction data
65
+ * @returns {StakingBuilder} This transaction builder
66
+ */
67
+ transactionData(data: string): this;
68
+ /** @inheritdoc */
69
+ validateTransaction(transaction?: StakeClauseTransaction): void;
70
+ /** @inheritdoc */
71
+ protected buildImplementation(): Promise<Transaction>;
72
+ }
73
+ //# sourceMappingURL=stakeClauseTxnBuilder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stakeClauseTxnBuilder.d.ts","sourceRoot":"","sources":["../../../../src/lib/transactionBuilder/stakeClauseTxnBuilder.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAEtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,EAAE,sBAAsB,EAAE,MAAM,uCAAuC,CAAC;AAG/E,qBAAa,qBAAsB,SAAQ,kBAAkB;IAC3D;;;;OAIG;gBACS,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAK7C;;;;OAIG;IACH,WAAW,CAAC,EAAE,EAAE,sBAAsB,GAAG,IAAI;IAI7C;;;;OAIG;IACH,IAAI,kBAAkB,IAAI,sBAAsB,CAE/C;IAED;;;;OAIG;IACH,SAAS,KAAK,eAAe,IAAI,eAAe,CAE/C;IAED;;;;OAIG;IACH,SAAS,CAAC,yBAAyB,CAAC,OAAO,EAAE,iBAAiB,EAAE,GAAG,OAAO;IAuB1E;;;;;;;OAOG;IACH,sBAAsB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAS7C;;;;;OAKG;IACH,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAK9B;;;;;OAKG;IACH,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAKnC;;;;;OAKG;IACH,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAKnC,kBAAkB;IAClB,mBAAmB,CAAC,WAAW,CAAC,EAAE,sBAAsB,GAAG,IAAI;IAuB/D,kBAAkB;cACF,mBAAmB,IAAI,OAAO,CAAC,WAAW,CAAC;CAK5D"}
@@ -0,0 +1,146 @@
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.StakeClauseTxnBuilder = void 0;
7
+ const assert_1 = __importDefault(require("assert"));
8
+ const sdk_core_1 = require("@bitgo-beta/sdk-core");
9
+ const transactionBuilder_1 = require("./transactionBuilder");
10
+ const stakeClauseTransaction_1 = require("../transaction/stakeClauseTransaction");
11
+ const utils_1 = __importDefault(require("../utils"));
12
+ class StakeClauseTxnBuilder extends transactionBuilder_1.TransactionBuilder {
13
+ /**
14
+ * Creates a new StakingBuilder instance.
15
+ *
16
+ * @param {Readonly<CoinConfig>} _coinConfig - The coin configuration object
17
+ */
18
+ constructor(_coinConfig) {
19
+ super(_coinConfig);
20
+ this._transaction = new stakeClauseTransaction_1.StakeClauseTransaction(_coinConfig);
21
+ }
22
+ /**
23
+ * Initializes the builder with an existing StakingTransaction.
24
+ *
25
+ * @param {StakingTransaction} tx - The transaction to initialize the builder with
26
+ */
27
+ initBuilder(tx) {
28
+ this._transaction = tx;
29
+ }
30
+ /**
31
+ * Gets the staking transaction instance.
32
+ *
33
+ * @returns {StakingTransaction} The staking transaction
34
+ */
35
+ get stakingTransaction() {
36
+ return this._transaction;
37
+ }
38
+ /**
39
+ * Gets the transaction type for staking.
40
+ *
41
+ * @returns {TransactionType} The transaction type
42
+ */
43
+ get transactionType() {
44
+ return sdk_core_1.TransactionType.StakingActivate;
45
+ }
46
+ /**
47
+ * Validates the transaction clauses for staking transaction.
48
+ * @param {TransactionClause[]} clauses - The transaction clauses to validate.
49
+ * @returns {boolean} - Returns true if the clauses are valid, false otherwise.
50
+ */
51
+ isValidTransactionClauses(clauses) {
52
+ try {
53
+ if (!clauses || !Array.isArray(clauses) || clauses.length === 0) {
54
+ return false;
55
+ }
56
+ const clause = clauses[0];
57
+ if (!clause.to || !utils_1.default.isValidAddress(clause.to)) {
58
+ return false;
59
+ }
60
+ // For staking transactions, value must be greater than 0
61
+ if (!clause.value || clause.value === '0x0' || clause.value === '0') {
62
+ return false;
63
+ }
64
+ return true;
65
+ }
66
+ catch (e) {
67
+ return false;
68
+ }
69
+ }
70
+ /**
71
+ * Sets the staking contract address for this staking tx.
72
+ * The address must be explicitly provided to ensure the correct contract is used.
73
+ *
74
+ * @param {string} address - The staking contract address (required)
75
+ * @returns {StakingBuilder} This transaction builder
76
+ * @throws {Error} If no address is provided
77
+ */
78
+ stakingContractAddress(address) {
79
+ if (!address) {
80
+ throw new Error('Staking contract address is required');
81
+ }
82
+ this.validateAddress({ address });
83
+ this.stakingTransaction.stakingContractAddress = address;
84
+ return this;
85
+ }
86
+ /**
87
+ * Sets the level ID for this staking tx.
88
+ *
89
+ * @param {number} levelId - The level ID for staking
90
+ * @returns {StakingBuilder} This transaction builder
91
+ */
92
+ levelId(levelId) {
93
+ this.stakingTransaction.levelId = levelId;
94
+ return this;
95
+ }
96
+ /**
97
+ * Sets the amount to stake for this staking tx (VET amount being sent).
98
+ *
99
+ * @param {string} amount - The amount to stake in wei
100
+ * @returns {StakingBuilder} This transaction builder
101
+ */
102
+ amountToStake(amount) {
103
+ this.stakingTransaction.amountToStake = amount;
104
+ return this;
105
+ }
106
+ /**
107
+ * Sets the transaction data for this staking tx.
108
+ *
109
+ * @param {string} data - The transaction data
110
+ * @returns {StakingBuilder} This transaction builder
111
+ */
112
+ transactionData(data) {
113
+ this.stakingTransaction.transactionData = data;
114
+ return this;
115
+ }
116
+ /** @inheritdoc */
117
+ validateTransaction(transaction) {
118
+ if (!transaction) {
119
+ throw new Error('transaction not defined');
120
+ }
121
+ (0, assert_1.default)(transaction.stakingContractAddress, 'Staking contract address is required');
122
+ (0, assert_1.default)(transaction.amountToStake, 'Amount to stake is required');
123
+ // Validate amount is a valid number string
124
+ if (transaction.amountToStake) {
125
+ try {
126
+ const bn = new (require('bignumber.js'))(transaction.amountToStake);
127
+ if (!bn.isFinite() || bn.isNaN()) {
128
+ throw new Error('Invalid character');
129
+ }
130
+ }
131
+ catch (e) {
132
+ throw new Error('Invalid character');
133
+ }
134
+ }
135
+ (0, assert_1.default)(transaction.levelId, 'Level ID is required');
136
+ this.validateAddress({ address: transaction.stakingContractAddress });
137
+ }
138
+ /** @inheritdoc */
139
+ async buildImplementation() {
140
+ this.transaction.type = this.transactionType;
141
+ await this.stakingTransaction.build();
142
+ return this.transaction;
143
+ }
144
+ }
145
+ exports.StakeClauseTxnBuilder = StakeClauseTxnBuilder;
146
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3Rha2VDbGF1c2VUeG5CdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi90cmFuc2FjdGlvbkJ1aWxkZXIvc3Rha2VDbGF1c2VUeG5CdWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLG9EQUE0QjtBQUU1QixtREFBdUQ7QUFHdkQsNkRBQTBEO0FBRTFELGtGQUErRTtBQUMvRSxxREFBNkI7QUFFN0IsTUFBYSxxQkFBc0IsU0FBUSx1Q0FBa0I7SUFDM0Q7Ozs7T0FJRztJQUNILFlBQVksV0FBaUM7UUFDM0MsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ25CLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSwrQ0FBc0IsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUM5RCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILFdBQVcsQ0FBQyxFQUEwQjtRQUNwQyxJQUFJLENBQUMsWUFBWSxHQUFHLEVBQUUsQ0FBQztJQUN6QixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILElBQUksa0JBQWtCO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLFlBQXNDLENBQUM7SUFDckQsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxJQUFjLGVBQWU7UUFDM0IsT0FBTywwQkFBZSxDQUFDLGVBQWUsQ0FBQztJQUN6QyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNPLHlCQUF5QixDQUFDLE9BQTRCO1FBQzlELElBQUksQ0FBQztZQUNILElBQUksQ0FBQyxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLE9BQU8sQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7Z0JBQ2hFLE9BQU8sS0FBSyxDQUFDO1lBQ2YsQ0FBQztZQUVELE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUUxQixJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsSUFBSSxDQUFDLGVBQUssQ0FBQyxj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O1FBQ3RDLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUMxQixDQUFDO0NBQ0Y7QUFsSkQsc0RBa0pDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGFzc2VydCBmcm9tICdhc3NlcnQnO1xuaW1wb3J0IHsgQmFzZUNvaW4gYXMgQ29pbkNvbmZpZyB9IGZyb20gJ0BiaXRnby1iZXRhL3N0YXRpY3MnO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb25UeXBlIH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb25DbGF1c2UgfSBmcm9tICdAdmVjaGFpbi9zZGstY29yZSc7XG5cbmltcG9ydCB7IFRyYW5zYWN0aW9uQnVpbGRlciB9IGZyb20gJy4vdHJhbnNhY3Rpb25CdWlsZGVyJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uIH0gZnJvbSAnLi4vdHJhbnNhY3Rpb24vdHJhbnNhY3Rpb24nO1xuaW1wb3J0IHsgU3Rha2VDbGF1c2VUcmFuc2FjdGlvbiB9IGZyb20gJy4uL3RyYW5zYWN0aW9uL3N0YWtlQ2xhdXNlVHJhbnNhY3Rpb24nO1xuaW1wb3J0IHV0aWxzIGZyb20gJy4uL3V0aWxzJztcblxuZXhwb3J0IGNsYXNzIFN0YWtlQ2xhdXNlVHhuQnVpbGRlciBleHRlbmRzIFRyYW5zYWN0aW9uQnVpbGRlciB7XG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgbmV3IFN0YWtpbmdCdWlsZGVyIGluc3RhbmNlLlxuICAgKlxuICAgKiBAcGFyYW0ge1JlYWRvbmx5PENvaW5Db25maWc+fSBfY29pbkNvbmZpZyAtIFRoZSBjb2luIGNvbmZpZ3VyYXRpb24gb2JqZWN0XG4gICAqL1xuICBjb25zdHJ1Y3RvcihfY29pbkNvbmZpZzogUmVhZG9ubHk8Q29pbkNvbmZpZz4pIHtcbiAgICBzdXBlcihfY29pbkNvbmZpZyk7XG4gICAgdGhpcy5fdHJhbnNhY3Rpb24gPSBuZXcgU3Rha2VDbGF1c2VUcmFuc2FjdGlvbihfY29pbkNvbmZpZyk7XG4gIH1cblxuICAvKipcbiAgICogSW5pdGlhbGl6ZXMgdGhlIGJ1aWxkZXIgd2l0aCBhbiBleGlzdGluZyBTdGFraW5nVHJhbnNhY3Rpb24uXG4gICAqXG4gICAqIEBwYXJhbSB7U3Rha2luZ1RyYW5zYWN0aW9ufSB0eCAtIFRoZSB0cmFuc2FjdGlvbiB0byBpbml0aWFsaXplIHRoZSBidWlsZGVyIHdpdGhcbiAgICovXG4gIGluaXRCdWlsZGVyKHR4OiBTdGFrZUNsYXVzZVRyYW5zYWN0aW9uKTogdm9pZCB7XG4gICAgdGhpcy5fdHJhbnNhY3Rpb24gPSB0eDtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSBzdGFraW5nIHRyYW5zYWN0aW9uIGluc3RhbmNlLlxuICAgKlxuICAgKiBAcmV0dXJucyB7U3Rha2luZ1RyYW5zYWN0aW9ufSBUaGUgc3Rha2luZyB0cmFuc2FjdGlvblxuICAgKi9cbiAgZ2V0IHN0YWtpbmdUcmFuc2FjdGlvbigpOiBTdGFrZUNsYXVzZVRyYW5zYWN0aW9uIHtcbiAgICByZXR1cm4gdGhpcy5fdHJhbnNhY3Rpb24gYXMgU3Rha2VDbGF1c2VUcmFuc2FjdGlvbjtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSB0cmFuc2FjdGlvbiB0eXBlIGZvciBzdGFraW5nLlxuICAgKlxuICAgKiBAcmV0dXJucyB7VHJhbnNhY3Rpb25UeXBlfSBUaGUgdHJhbnNhY3Rpb24gdHlwZVxuICAgKi9cbiAgcHJvdGVjdGVkIGdldCB0cmFuc2FjdGlvblR5cGUoKTogVHJhbnNhY3Rpb25UeXBlIHtcbiAgICByZXR1cm4gVHJhbnNhY3Rpb25UeXBlLlN0YWtpbmdBY3RpdmF0ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZXMgdGhlIHRyYW5zYWN0aW9uIGNsYXVzZXMgZm9yIHN0YWtpbmcgdHJhbnNhY3Rpb24uXG4gICAqIEBwYXJhbSB7VHJhbnNhY3Rpb25DbGF1c2VbXX0gY2xhdXNlcyAtIFRoZSB0cmFuc2FjdGlvbiBjbGF1c2VzIHRvIHZhbGlkYXRlLlxuICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSBSZXR1cm5zIHRydWUgaWYgdGhlIGNsYXVzZXMgYXJlIHZhbGlkLCBmYWxzZSBvdGhlcndpc2UuXG4gICAqL1xuICBwcm90ZWN0ZWQgaXNWYWxpZFRyYW5zYWN0aW9uQ2xhdXNlcyhjbGF1c2VzOiBUcmFuc2FjdGlvbkNsYXVzZVtdKTogYm9vbGVhbiB7XG4gICAgdHJ5IHtcbiAgICAgIGlmICghY2xhdXNlcyB8fCAhQXJyYXkuaXNBcnJheShjbGF1c2VzKSB8fCBjbGF1c2VzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGNsYXVzZSA9IGNsYXVzZXNbMF07XG5cbiAgICAgIGlmICghY2xhdXNlLnRvIHx8ICF1dGlscy5pc1ZhbGlkQWRkcmVzcyhjbGF1c2UudG8pKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cblxuICAgICAgLy8gRm9yIHN0YWtpbmcgdHJhbnNhY3Rpb25zLCB2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAwXG4gICAgICBpZiAoIWNsYXVzZS52YWx1ZSB8fCBjbGF1c2UudmFsdWUgPT09ICcweDAnIHx8IGNsYXVzZS52YWx1ZSA9PT0gJzAnKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBzdGFraW5nIGNvbnRyYWN0IGFkZHJlc3MgZm9yIHRoaXMgc3Rha2luZyB0eC5cbiAgICogVGhlIGFkZHJlc3MgbXVzdCBiZSBleHBsaWNpdGx5IHByb3ZpZGVkIHRvIGVuc3VyZSB0aGUgY29ycmVjdCBjb250cmFjdCBpcyB1c2VkLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gYWRkcmVzcyAtIFRoZSBzdGFraW5nIGNvbnRyYWN0IGFkZHJlc3MgKHJlcXVpcmVkKVxuICAgKiBAcmV0dXJucyB7U3Rha2luZ0J1aWxkZXJ9IFRoaXMgdHJhbnNhY3Rpb24gYnVpbGRlclxuICAgKiBAdGhyb3dzIHtFcnJvcn0gSWYgbm8gYWRkcmVzcyBpcyBwcm92aWRlZFxuICAgKi9cbiAgc3Rha2luZ0NvbnRyYWN0QWRkcmVzcyhhZGRyZXNzOiBzdHJpbmcpOiB0aGlzIHtcbiAgICBpZiAoIWFkZHJlc3MpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignU3Rha2luZyBjb250cmFjdCBhZGRyZXNzIGlzIHJlcXVpcmVkJyk7XG4gICAgfVxuICAgIHRoaXMudmFsaWRhdGVBZGRyZXNzKHsgYWRkcmVzcyB9KTtcbiAgICB0aGlzLnN0YWtpbmdUcmFuc2FjdGlvbi5zdGFraW5nQ29udHJhY3RBZGRyZXNzID0gYWRkcmVzcztcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBsZXZlbCBJRCBmb3IgdGhpcyBzdGFraW5nIHR4LlxuICAgKlxuICAgKiBAcGFyYW0ge251bWJlcn0gbGV2ZWxJZCAtIFRoZSBsZXZlbCBJRCBmb3Igc3Rha2luZ1xuICAgKiBAcmV0dXJucyB7U3Rha2luZ0J1aWxkZXJ9IFRoaXMgdHJhbnNhY3Rpb24gYnVpbGRlclxuICAgKi9cbiAgbGV2ZWxJZChsZXZlbElkOiBudW1iZXIpOiB0aGlzIHtcbiAgICB0aGlzLnN0YWtpbmdUcmFuc2FjdGlvbi5sZXZlbElkID0gbGV2ZWxJZDtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBhbW91bnQgdG8gc3Rha2UgZm9yIHRoaXMgc3Rha2luZyB0eCAoVkVUIGFtb3VudCBiZWluZyBzZW50KS5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IGFtb3VudCAtIFRoZSBhbW91bnQgdG8gc3Rha2UgaW4gd2VpXG4gICAqIEByZXR1cm5zIHtTdGFraW5nQnVpbGRlcn0gVGhpcyB0cmFuc2FjdGlvbiBidWlsZGVyXG4gICAqL1xuICBhbW91bnRUb1N0YWtlKGFtb3VudDogc3RyaW5nKTogdGhpcyB7XG4gICAgdGhpcy5zdGFraW5nVHJhbnNhY3Rpb24uYW1vdW50VG9TdGFrZSA9IGFtb3VudDtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSB0cmFuc2FjdGlvbiBkYXRhIGZvciB0aGlzIHN0YWtpbmcgdHguXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBkYXRhIC0gVGhlIHRyYW5zYWN0aW9uIGRhdGFcbiAgICogQHJldHVybnMge1N0YWtpbmdCdWlsZGVyfSBUaGlzIHRyYW5zYWN0aW9uIGJ1aWxkZXJcbiAgICovXG4gIHRyYW5zYWN0aW9uRGF0YShkYXRhOiBzdHJpbmcpOiB0aGlzIHtcbiAgICB0aGlzLnN0YWtpbmdUcmFuc2FjdGlvbi50cmFuc2FjdGlvbkRhdGEgPSBkYXRhO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHZhbGlkYXRlVHJhbnNhY3Rpb24odHJhbnNhY3Rpb24/OiBTdGFrZUNsYXVzZVRyYW5zYWN0aW9uKTogdm9pZCB7XG4gICAgaWYgKCF0cmFuc2FjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCd0cmFuc2FjdGlvbiBub3QgZGVmaW5lZCcpO1xuICAgIH1cbiAgICBhc3NlcnQodHJhbnNhY3Rpb24uc3Rha2luZ0NvbnRyYWN0QWRkcmVzcywgJ1N0YWtpbmcgY29udHJhY3QgYWRkcmVzcyBpcyByZXF1aXJlZCcpO1xuICAgIGFzc2VydCh0cmFuc2FjdGlvbi5hbW91bnRUb1N0YWtlLCAnQW1vdW50IHRvIHN0YWtlIGlzIHJlcXVpcmVkJyk7XG5cbiAgICAvLyBWYWxpZGF0ZSBhbW91bnQgaXMgYSB2YWxpZCBudW1iZXIgc3RyaW5nXG4gICAgaWYgKHRyYW5zYWN0aW9uLmFtb3VudFRvU3Rha2UpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IGJuID0gbmV3IChyZXF1aXJlKCdiaWdudW1iZXIuanMnKSkodHJhbnNhY3Rpb24uYW1vdW50VG9TdGFrZSk7XG4gICAgICAgIGlmICghYm4uaXNGaW5pdGUoKSB8fCBibi5pc05hTigpKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGNoYXJhY3RlcicpO1xuICAgICAgICB9XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBjaGFyYWN0ZXInKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBhc3NlcnQodHJhbnNhY3Rpb24ubGV2ZWxJZCwgJ0xldmVsIElEIGlzIHJlcXVpcmVkJyk7XG4gICAgdGhpcy52YWxpZGF0ZUFkZHJlc3MoeyBhZGRyZXNzOiB0cmFuc2FjdGlvbi5zdGFraW5nQ29udHJhY3RBZGRyZXNzIH0pO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHByb3RlY3RlZCBhc3luYyBidWlsZEltcGxlbWVudGF0aW9uKCk6IFByb21pc2U8VHJhbnNhY3Rpb24+IHtcbiAgICB0aGlzLnRyYW5zYWN0aW9uLnR5cGUgPSB0aGlzLnRyYW5zYWN0aW9uVHlwZTtcbiAgICBhd2FpdCB0aGlzLnN0YWtpbmdUcmFuc2FjdGlvbi5idWlsZCgpO1xuICAgIHJldHVybiB0aGlzLnRyYW5zYWN0aW9uO1xuICB9XG59XG4iXX0=
@@ -18,6 +18,8 @@ import { TokenTransactionBuilder } from './transactionBuilder/tokenTransactionBu
18
18
  import { StakingBuilder } from './transactionBuilder/stakingBuilder';
19
19
  import { StakingTransaction } from './transaction/stakingTransaction';
20
20
  import { NFTTransactionBuilder } from './transactionBuilder/nftTransactionBuilder';
21
+ import { StakeClauseTransaction } from './transaction/stakeClauseTransaction';
22
+ import { StakeClauseTxnBuilder } from './transactionBuilder/stakeClauseTxnBuilder';
21
23
  export declare class TransactionBuilderFactory extends BaseTransactionBuilderFactory {
22
24
  constructor(_coinConfig: Readonly<CoinConfig>);
23
25
  /** @inheritdoc */
@@ -28,6 +30,7 @@ export declare class TransactionBuilderFactory extends BaseTransactionBuilderFac
28
30
  getFlushTokenTransactionBuilder(tx?: FlushTokenTransaction): FlushTokenTransactionBuilder;
29
31
  getTokenTransactionBuilder(tx?: Transaction): TokenTransactionBuilder;
30
32
  getStakingBuilder(tx?: StakingTransaction): StakingBuilder;
33
+ getStakingActivateBuilder(tx?: StakeClauseTransaction): StakeClauseTxnBuilder;
31
34
  /**
32
35
  * Gets an nft transaction builder.
33
36
  *
@@ -1 +1 @@
1
- {"version":3,"file":"transactionBuilderFactory.d.ts","sourceRoot":"","sources":["../../../src/lib/transactionBuilderFactory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,IAAI,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAClE,OAAO,EAAE,6BAA6B,EAA2B,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC/G,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,yCAAyC,CAAC;AAC7E,OAAO,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AACvE,OAAO,EAAE,4BAA4B,EAAE,MAAM,mDAAmD,CAAC;AACjG,OAAO,EAAE,4BAA4B,EAAE,MAAM,mDAAmD,CAAC;AACjG,OAAO,EAAE,qBAAqB,EAAE,MAAM,4CAA4C,CAAC;AACnF,OAAO,EAAE,cAAc,EAAE,MAAM,qCAAqC,CAAC;AACrE,OAAO,EAAE,mBAAmB,EAAE,MAAM,0CAA0C,CAAC;AAC/E,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAExD,OAAO,EAAE,gCAAgC,EAAE,MAAM,gDAAgD,CAAC;AAClG,OAAO,EAAE,qBAAqB,EAAE,MAAM,qCAAqC,CAAC;AAC5E,OAAO,EAAE,yBAAyB,EAAE,MAAM,8BAA8B,CAAC;AACzE,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AACtE,OAAO,EAAE,uBAAuB,EAAE,MAAM,4BAA4B,CAAC;AACrE,OAAO,EAAE,uBAAuB,EAAE,MAAM,8CAA8C,CAAC;AAEvF,OAAO,EAAE,cAAc,EAAE,MAAM,qCAAqC,CAAC;AACrE,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AACtE,OAAO,EAAE,qBAAqB,EAAE,MAAM,4CAA4C,CAAC;AAGnF,qBAAa,yBAA0B,SAAQ,6BAA6B;gBAC9D,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAI7C,kBAAkB;IAClB,IAAI,CAAC,WAAW,EAAE,MAAM,GAAG,kBAAkB;IAiD7C,kBAAkB;IAClB,kBAAkB,CAAC,EAAE,CAAC,EAAE,WAAW,GAAG,eAAe;IAIrD,+BAA+B,CAAC,EAAE,CAAC,EAAE,gCAAgC,GAAG,4BAA4B;IAIpG,+BAA+B,CAAC,EAAE,CAAC,EAAE,qBAAqB,GAAG,4BAA4B;IAIzF,0BAA0B,CAAC,EAAE,CAAC,EAAE,WAAW,GAAG,uBAAuB;IAIrE,iBAAiB,CAAC,EAAE,CAAC,EAAE,kBAAkB,GAAG,cAAc;IAI1D;;;;;OAKG;IACH,wBAAwB,CAAC,EAAE,CAAC,EAAE,WAAW,GAAG,qBAAqB;IAIjE;;;;;OAKG;IACH,wBAAwB,CAAC,EAAE,CAAC,EAAE,yBAAyB,GAAG,qBAAqB;IAI/E;;;;;OAKG;IACH,iBAAiB,CAAC,EAAE,CAAC,EAAE,kBAAkB,GAAG,cAAc;IAI1D;;;;;OAKG;IACH,sBAAsB,CAAC,EAAE,CAAC,EAAE,uBAAuB,GAAG,mBAAmB;IAIzE,kBAAkB;IAClB,8BAA8B,IAAI,IAAI;IAItC,+BAA+B,CAAC,SAAS,EAAE,cAAc,GAAG,eAAe;IAI3E;;;;;;OAMG;IACH,OAAO,CAAC,iBAAiB;CAM1B"}
1
+ {"version":3,"file":"transactionBuilderFactory.d.ts","sourceRoot":"","sources":["../../../src/lib/transactionBuilderFactory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,IAAI,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAClE,OAAO,EAAE,6BAA6B,EAA2B,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC/G,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,yCAAyC,CAAC;AAC7E,OAAO,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AACvE,OAAO,EAAE,4BAA4B,EAAE,MAAM,mDAAmD,CAAC;AACjG,OAAO,EAAE,4BAA4B,EAAE,MAAM,mDAAmD,CAAC;AACjG,OAAO,EAAE,qBAAqB,EAAE,MAAM,4CAA4C,CAAC;AACnF,OAAO,EAAE,cAAc,EAAE,MAAM,qCAAqC,CAAC;AACrE,OAAO,EAAE,mBAAmB,EAAE,MAAM,0CAA0C,CAAC;AAC/E,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAExD,OAAO,EAAE,gCAAgC,EAAE,MAAM,gDAAgD,CAAC;AAClG,OAAO,EAAE,qBAAqB,EAAE,MAAM,qCAAqC,CAAC;AAC5E,OAAO,EAAE,yBAAyB,EAAE,MAAM,8BAA8B,CAAC;AACzE,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AACtE,OAAO,EAAE,uBAAuB,EAAE,MAAM,4BAA4B,CAAC;AACrE,OAAO,EAAE,uBAAuB,EAAE,MAAM,8CAA8C,CAAC;AAEvF,OAAO,EAAE,cAAc,EAAE,MAAM,qCAAqC,CAAC;AACrE,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AACtE,OAAO,EAAE,qBAAqB,EAAE,MAAM,4CAA4C,CAAC;AAEnF,OAAO,EAAE,sBAAsB,EAAE,MAAM,sCAAsC,CAAC;AAC9E,OAAO,EAAE,qBAAqB,EAAE,MAAM,4CAA4C,CAAC;AAEnF,qBAAa,yBAA0B,SAAQ,6BAA6B;gBAC9D,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAI7C,kBAAkB;IAClB,IAAI,CAAC,WAAW,EAAE,MAAM,GAAG,kBAAkB;IAqD7C,kBAAkB;IAClB,kBAAkB,CAAC,EAAE,CAAC,EAAE,WAAW,GAAG,eAAe;IAIrD,+BAA+B,CAAC,EAAE,CAAC,EAAE,gCAAgC,GAAG,4BAA4B;IAIpG,+BAA+B,CAAC,EAAE,CAAC,EAAE,qBAAqB,GAAG,4BAA4B;IAIzF,0BAA0B,CAAC,EAAE,CAAC,EAAE,WAAW,GAAG,uBAAuB;IAIrE,iBAAiB,CAAC,EAAE,CAAC,EAAE,kBAAkB,GAAG,cAAc;IAI1D,yBAAyB,CAAC,EAAE,CAAC,EAAE,sBAAsB,GAAG,qBAAqB;IAI7E;;;;;OAKG;IACH,wBAAwB,CAAC,EAAE,CAAC,EAAE,WAAW,GAAG,qBAAqB;IAIjE;;;;;OAKG;IACH,wBAAwB,CAAC,EAAE,CAAC,EAAE,yBAAyB,GAAG,qBAAqB;IAI/E;;;;;OAKG;IACH,iBAAiB,CAAC,EAAE,CAAC,EAAE,kBAAkB,GAAG,cAAc;IAI1D;;;;;OAKG;IACH,sBAAsB,CAAC,EAAE,CAAC,EAAE,uBAAuB,GAAG,mBAAmB;IAIzE,kBAAkB;IAClB,8BAA8B,IAAI,IAAI;IAItC,+BAA+B,CAAC,SAAS,EAAE,cAAc,GAAG,eAAe;IAI3E;;;;;;OAMG;IACH,OAAO,CAAC,iBAAiB;CAM1B"}
@@ -24,6 +24,8 @@ const stakingBuilder_1 = require("./transactionBuilder/stakingBuilder");
24
24
  const stakingTransaction_1 = require("./transaction/stakingTransaction");
25
25
  const nftTransactionBuilder_1 = require("./transactionBuilder/nftTransactionBuilder");
26
26
  const nftTransaction_1 = require("./transaction/nftTransaction");
27
+ const stakeClauseTransaction_1 = require("./transaction/stakeClauseTransaction");
28
+ const stakeClauseTxnBuilder_1 = require("./transactionBuilder/stakeClauseTxnBuilder");
27
29
  class TransactionBuilderFactory extends sdk_core_1.BaseTransactionBuilderFactory {
28
30
  constructor(_coinConfig) {
29
31
  super(_coinConfig);
@@ -58,6 +60,10 @@ class TransactionBuilderFactory extends sdk_core_1.BaseTransactionBuilderFactory
58
60
  const stakingTx = new stakingTransaction_1.StakingTransaction(this._coinConfig);
59
61
  stakingTx.fromDeserializedSignedTransaction(signedTx);
60
62
  return this.getStakingBuilder(stakingTx);
63
+ case sdk_core_1.TransactionType.StakingActivate:
64
+ const stakeClauseTx = new stakeClauseTransaction_1.StakeClauseTransaction(this._coinConfig);
65
+ stakeClauseTx.fromDeserializedSignedTransaction(signedTx);
66
+ return this.getStakingActivateBuilder(stakeClauseTx);
61
67
  case sdk_core_1.TransactionType.StakingUnlock:
62
68
  const exitDelegationTx = new exitDelegation_1.ExitDelegationTransaction(this._coinConfig);
63
69
  exitDelegationTx.fromDeserializedSignedTransaction(signedTx);
@@ -94,6 +100,9 @@ class TransactionBuilderFactory extends sdk_core_1.BaseTransactionBuilderFactory
94
100
  getStakingBuilder(tx) {
95
101
  return this.initializeBuilder(tx, new stakingBuilder_1.StakingBuilder(this._coinConfig));
96
102
  }
103
+ getStakingActivateBuilder(tx) {
104
+ return this.initializeBuilder(tx, new stakeClauseTxnBuilder_1.StakeClauseTxnBuilder(this._coinConfig));
105
+ }
97
106
  /**
98
107
  * Gets an nft transaction builder.
99
108
  *
@@ -152,4 +161,4 @@ class TransactionBuilderFactory extends sdk_core_1.BaseTransactionBuilderFactory
152
161
  }
153
162
  }
154
163
  exports.TransactionBuilderFactory = TransactionBuilderFactory;
155
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvdHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFDQSxtREFBK0c7QUFHL0csMEVBQXVFO0FBQ3ZFLG9HQUFpRztBQUNqRyxvR0FBaUc7QUFDakcsc0ZBQW1GO0FBQ25GLHdFQUFxRTtBQUNyRSxrRkFBK0U7QUFDL0UsMkRBQXdEO0FBQ3hELG9EQUE0QjtBQUM1QixxR0FBa0c7QUFDbEcsK0VBQTRFO0FBQzVFLGlFQUF5RTtBQUN6RSx5RUFBc0U7QUFDdEUsNkRBQXFFO0FBQ3JFLDBGQUF1RjtBQUN2RixxRUFBa0U7QUFDbEUsd0VBQXFFO0FBQ3JFLHlFQUFzRTtBQUN0RSxzRkFBbUY7QUFDbkYsaUVBQThEO0FBRTlELE1BQWEseUJBQTBCLFNBQVEsd0NBQTZCO0lBQzFFLFlBQVksV0FBaUM7UUFDM0MsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ3JCLENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsSUFBSSxDQUFDLFdBQW1CO1FBQ3RCLElBQUksQ0FBQztZQUNILE1BQU0sUUFBUSxHQUFHLHlCQUFXLENBQUMsc0JBQXNCLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDakUsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLCtCQUErQixDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQzVELFFBQVEsSUFBSSxFQUFFLENBQUM7Z0JBQ2IsS0FBSywwQkFBZSxDQUFDLElBQUk7b0JBQ3ZCLE1BQU0sVUFBVSxHQUFHLElBQUkseUJBQVcsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7b0JBQ3JELFVBQVUsQ0FBQyxpQ0FBaUMsQ0FBQyxRQUFRLENBQUMsQ0FBQztvQkFDdkQsT0FBTyxJQUFJLENBQUMsa0JBQWtCLENBQUMsVUFBVSxDQUFDLENBQUM7Z0JBQzdDLEtBQUssMEJBQWUsQ0FB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TyxJQUFJLENBQUMsaUJBQWlCLENBQUMsRUFBRSxFQUFFLElBQUkseUNBQW1CLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7SUFDL0UsQ0FBQztJQUVELGtCQUFrQjtJQUNsQiw4QkFBOEI7UUFDNUIsTUFBTSxJQUFJLEtBQUssQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFFRCwrQkFBK0IsQ0FBQyxTQUF5QjtRQUN2RCxPQUFPLGVBQUssQ0FBQyw0QkFBNEIsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3BFLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSyxpQkFBaUIsQ0FBK0IsRUFBMkIsRUFBRSxPQUFVO1FBQzdGLElBQUksRUFBRSxFQUFFLENBQUM7WUFDUCxPQUFPLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzFCLENBQUM7UUFDRCxPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDO0NBQ0Y7QUExSUQsOERBMElDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVHJhbnNhY3Rpb24gYXMgVmV0VHJhbnNhY3Rpb24gfSBmcm9tICdAdmVjaGFpbi9zZGstY29yZSc7XG5pbXBvcnQgeyBCYXNlVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeSwgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IsIFRyYW5zYWN0aW9uVHlwZSB9IGZyb20gJ0BiaXRnby1iZXRhL3Nkay1jb3JlJztcbmltcG9ydCB7IEJhc2VDb2luIGFzIENvaW5Db25maWcgfSBmcm9tICdAYml0Z28tYmV0YS9zdGF0aWNzJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uQnVpbGRlciB9IGZyb20gJy4vdHJhbnNhY3Rpb25CdWlsZGVyL3RyYW5zYWN0aW9uQnVpbGRlcic7XG5pbXBvcnQgeyBUcmFuc2ZlckJ1aWxkZXIgfSBmcm9tICcuL3RyYW5zYWN0aW9uQnVpbGRlci90cmFuc2ZlckJ1aWxkZXInO1xuaW1wb3J0IHsgQWRkcmVzc0luaXRpYWxpemF0aW9uQnVpbGRlciB9IGZyb20gJy4vdHJhbnNhY3Rpb25CdWlsZGVyL2FkZHJlc3NJbml0aWFsaXphdGlvbkJ1aWxkZXInO1xuaW1wb3J0IHsgRmx1c2hUb2tlblRyYW5zYWN0aW9uQnVpbGRlciB9IGZyb20gJy4vdHJhbnNhY3Rpb25CdWlsZGVyL2ZsdXNoVG9rZW5UcmFuc2FjdGlvbkJ1aWxkZXInO1xuaW1wb3J0IHsgRXhpdERlbGVnYXRpb25CdWlsZGVyIH0gZnJvbSAnLi90cmFuc2FjdGlvbkJ1aWxkZXIvZXhpdERlbGVnYXRpb25CdWlsZGVyJztcbmltcG9ydCB7IEJ1cm5OZnRCdWlsZGVyIH0gZnJvbSAnLi90cmFuc2FjdGlvbkJ1aWxkZXIvYnVybk5mdEJ1aWxkZXInO1xuaW1wb3J0IHsgQ2xhaW1SZXdhcmRzQnVpbGRlciB9IGZyb20gJy4vdHJhbnNhY3Rpb25CdWlsZGVyL2NsYWltUmV3YXJkc0J1aWxkZXInO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb24gfSBmcm9tICcuL3RyYW5zYWN0aW9uL3RyYW5zYWN0aW9uJztcbmltcG9ydCB1dGlscyBmcm9tICcuL3V0aWxzJztcbmltcG9ydCB7IEFkZHJlc3NJbml0aWFsaXphdGlvblRyYW5zYWN0aW9uIH0gZnJvbSAnLi90cmFuc2FjdGlvbi9hZGRyZXNzSW5pdGlhbGl6YXRpb25UcmFuc2FjdGlvbic7XG5pbXBvcnQgeyBGbHVzaFRva2VuVHJhbnNhY3Rpb24gfSBmcm9tICcuL3RyYW5zYWN0aW9uL2ZsdXNoVG9rZW5UcmFuc2FjdGlvbic7XG5pbXBvcnQgeyBFeGl0RGVsZWdhdGlvblRyYW5zYWN0aW9uIH0gZnJvbSAnLi90cmFuc2FjdGlvbi9leGl0RGVsZWdhdGlvbic7XG5pbXBvcnQgeyBCdXJuTmZ0VHJhbnNhY3Rpb24gfSBmcm9tICcuL3RyYW5zYWN0aW9uL2J1cm5OZnRUcmFuc2FjdGlvbic7XG5pbXBvcnQgeyBDbGFpbVJld2FyZHNUcmFuc2FjdGlvbiB9IGZyb20gJy4vdHJhbnNhY3Rpb24vY2xhaW1SZXdhcmRzJztcbmltcG9ydCB7IFRva2VuVHJhbnNhY3Rpb25CdWlsZGVyIH0gZnJvbSAnLi90cmFuc2FjdGlvbkJ1aWxkZXIvdG9rZW5UcmFuc2FjdGlvbkJ1aWxkZXInO1xuaW1wb3J0IHsgVG9rZW5UcmFuc2FjdGlvbiB9IGZyb20gJy4vdHJhbnNhY3Rpb24vdG9rZW5UcmFuc2FjdGlvbic7XG5pbXBvcnQgeyBTdGFraW5nQnVpbGRlciB9IGZyb20gJy4vdHJhbnNhY3Rpb25CdWlsZGVyL3N0YWtpbmdCdWlsZGVyJztcbmltcG9ydCB7IFN0YWtpbmdUcmFuc2FjdGlvbiB9IGZyb20gJy4vdHJhbnNhY3Rpb24vc3Rha2luZ1RyYW5zYWN0aW9uJztcbmltcG9ydCB7IE5GVFRyYW5zYWN0aW9uQnVpbGRlciB9IGZyb20gJy4vdHJhbnNhY3Rpb25CdWlsZGVyL25mdFRyYW5zYWN0aW9uQnVpbGRlcic7XG5pbXBvcnQgeyBORlRUcmFuc2FjdGlvbiB9IGZyb20gJy4vdHJhbnNhY3Rpb24vbmZ0VHJhbnNhY3Rpb24nO1xuXG5leHBvcnQgY2xhc3MgVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeSBleHRlbmRzIEJhc2VUcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5IHtcbiAgY29uc3RydWN0b3IoX2NvaW5Db25maWc6IFJlYWRvbmx5PENvaW5Db25maWc+KSB7XG4gICAgc3VwZXIoX2NvaW5Db25maWcpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIGZyb20oc2lnbmVkUmF3VHg6IHN0cmluZyk6IFRyYW5zYWN0aW9uQnVpbGRlciB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHNpZ25lZFR4ID0gVHJhbnNhY3Rpb24uZGVzZXJpYWxpemVUcmFuc2FjdGlvbihzaWduZWRSYXdUeCk7XG4gICAgICBjb25zdCB0eXBlID0gdGhpcy5nZXRUcmFuc2FjdGlvblR5cGVGcm9tU2lnbmVkVHhuKHNpZ25lZFR4KTtcbiAgICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgICBjYXNlIFRyYW5zYWN0aW9uVHlwZS5TZW5kOlxuICAgICAgICAgIGNvbnN0IHRyYW5zZmVyVHggPSBuZXcgVHJhbnNhY3Rpb24odGhpcy5fY29pbkNvbmZpZyk7XG4gICAgICAgICAgdHJhbnNmZXJUeC5mcm9tRGVzZXJpYWxpemVkU2lnbmVkVHJhbnNhY3Rpb24oc2lnbmVkVHgpO1xuICAgICAgICAgIHJldHVybiB0aGlzLmdldFRyYW5zZmVyQnVpbGRlcih0cmFuc2ZlclR4KTtcbiAgICAgICAgY2FzZSBUcmFuc2FjdGlvblR5cGUuQWRkcmVzc0luaXRpYWxpemF0aW9uOlxuICAgICAgICAgIGNvbnN0IGFkZHJlc3NJbml0aWFsaXphdGlvblR4ID0gbmV3IEFkZHJlc3NJbml0aWFsaXphdGlvblRyYW5zYWN0aW9uKHRoaXMuX2NvaW5Db25maWcpO1xuICAgICAgICAgIGFkZHJlc3NJbml0aWFsaXphdGlvblR4LmZyb21EZXNlcmlhbGl6ZWRTaWduZWRUcmFuc2FjdGlvbihzaWduZWRUeCk7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0QWRkcmVzc0luaXRpYWxpemF0aW9uQnVpbGRlcihhZGRyZXNzSW5pdGlhbGl6YXRpb25UeCk7XG4gICAgICAgIGNhc2UgVHJhbnNhY3Rpb25UeXBlLkZsdXNoVG9rZW5zOlxuICAgICAgICAgIGNvbnN0IGZsdXNoVG9rZW5UeCA9IG5ldyBGbHVzaFRva2VuVHJhbnNhY3Rpb24odGhpcy5fY29pbkNvbmZpZyk7XG4gICAgICAgICAgZmx1c2hUb2tlblR4LmZyb21EZXNlcmlhbGl6ZWRTaWduZWRUcmFuc2FjdGlvbihzaWduZWRUeCk7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0Rmx1c2hUb2tlblRyYW5zYWN0aW9uQnVpbGRlcihmbHVzaFRva2VuVHgpO1xuICAgICAgICBjYXNlIFRyYW5zYWN0aW9uVHlwZS5TZW5kVG9rZW46XG4gICAgICAgICAgY29uc3QgdG9rZW5UcmFuc2ZlclR4ID0gbmV3IFRva2VuVHJhbnNhY3Rpb24odGhpcy5fY29pbkNvbmZpZyk7XG4gICAgICAgICAgdG9rZW5UcmFuc2ZlclR4LmZyb21EZXNlcmlhbGl6ZWRTaWduZWRUcmFuc2FjdGlvbihzaWduZWRUeCk7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0VG9rZW5UcmFuc2FjdGlvbkJ1aWxkZXIodG9rZW5UcmFuc2ZlclR4KTtcbiAgICAgICAgY2FzZSBUcmFuc2FjdGlvblR5cGUuU2VuZE5GVDpcbiAgICAgICAgICBjb25zdCBuZnRUcmFuc2ZlclR4ID0gbmV3IE5GVFRyYW5zYWN0aW9uKHRoaXMuX2NvaW5Db25maWcpO1xuICAgICAgICAgIG5mdFRyYW5zZmVyVHguZnJvbURlc2VyaWFsaXplZFNpZ25lZFRyYW5zYWN0aW9uKHNpZ25lZFR4KTtcbiAgICAgICAgICByZXR1cm4gdGhpcy5nZXRORlRUcmFuc2FjdGlvbkJ1aWxkZXIobmZ0VHJhbnNmZXJUeCk7XG4gICAgICAgIGNhc2UgVHJhbnNhY3Rpb25UeXBlLkNvbnRyYWN0Q2FsbDpcbiAgICAgICAgICBjb25zdCBzdGFraW5nVHggPSBuZXcgU3Rha2luZ1RyYW5zYWN0aW9uKHRoaXMuX2NvaW5Db25maWcpO1xuICAgICAgICAgIHN0YWtpbmdUeC5mcm9tRGVzZXJpYWxpemVkU2lnbmVkVHJhbnNhY3Rpb24oc2lnbmVkVHgpO1xuICAgICAgICAgIHJldHVybiB0aGlzLmdldFN0YWtpbmdCdWlsZGVyKHN0YWtpbmdUeCk7XG4gICAgICAgIGNhc2UgVHJhbnNhY3Rpb25UeXBlLlN0YWtpbmdVbmxvY2s6XG4gICAgICAgICAgY29uc3QgZXhpdERlbGVnYXRpb25UeCA9IG5ldyBFeGl0RGVsZWdhdGlvblRyYW5zYWN0aW9uKHRoaXMuX2NvaW5Db25maWcpO1xuICAgICAgICAgIGV4aXREZWxlZ2F0aW9uVHguZnJvbURlc2VyaWFsaXplZFNpZ25lZFRyYW5zYWN0aW9uKHNpZ25lZFR4KTtcbiAgICAgICAgICByZXR1cm4gdGhpcy5nZXRFeGl0RGVsZWdhdGlvbkJ1aWxkZXIoZXhpdERlbGVnYXRpb25UeCk7XG4gICAgICAgIGNhc2UgVHJhbnNhY3Rpb25UeXBlLlN0YWtpbmdXaXRoZHJhdzpcbiAgICAgICAgICBjb25zdCBidXJuTmZ0VHggPSBuZXcgQnVybk5mdFRyYW5zYWN0aW9uKHRoaXMuX2NvaW5Db25maWcpO1xuICAgICAgICAgIGJ1cm5OZnRUeC5mcm9tRGVzZXJpYWxpemVkU2lnbmVkVHJhbnNhY3Rpb24oc2lnbmVkVHgpO1xuICAgICAgICAgIHJldHVybiB0aGlzLmdldEJ1cm5OZnRCdWlsZGVyKGJ1cm5OZnRUeCk7XG4gICAgICAgIGNhc2UgVHJhbnNhY3Rpb25UeXBlLlN0YWtpbmdDbGFpbTpcbiAgICAgICAgICBjb25zdCBjbGFpbVJld2FyZHNUeCA9IG5ldyBDbGFpbVJld2FyZHNUcmFuc2FjdGlvbih0aGlzLl9jb2luQ29uZmlnKTtcbiAgICAgICAgICBjbGFpbVJld2FyZHNUeC5mcm9tRGVzZXJpYWxpemVkU2lnbmVkVHJhbnNhY3Rpb24oc2lnbmVkVHgpO1xuICAgICAgICAgIHJldHVybiB0aGlzLmdldENsYWltUmV3YXJkc0J1aWxkZXIoY2xhaW1SZXdhcmRzVHgpO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcignSW52YWxpZCB0cmFuc2FjdGlvbiB0eXBlJyk7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhyb3cgZTtcbiAgICB9XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgZ2V0VHJhbnNmZXJCdWlsZGVyKHR4PzogVHJhbnNhY3Rpb24pOiBUcmFuc2ZlckJ1aWxkZXIge1xuICAgIHJldHVybiB0aGlzLmluaXRpYWxpemVCdWlsZGVyKHR4LCBuZXcgVHJhbnNmZXJCdWlsZGVyKHRoaXMuX2NvaW5Db25maWcpKTtcbiAgfVxuXG4gIGdldEFkZHJlc3NJbml0aWFsaXphdGlvbkJ1aWxkZXIodHg/OiBBZGRyZXNzSW5pdGlhbGl6YXRpb25UcmFuc2FjdGlvbik6IEFkZHJlc3NJbml0aWFsaXphdGlvbkJ1aWxkZXIge1xuICAgIHJldHVybiB0aGlzLmluaXRpYWxpemVCdWlsZGVyKHR4LCBuZXcgQWRkcmVzc0luaXRpYWxpemF0aW9uQnVpbGRlcih0aGlzLl9jb2luQ29uZmlnKSk7XG4gIH1cblxuICBnZXRGbHVzaFRva2VuVHJhbnNhY3Rpb25CdWlsZGVyKHR4PzogRmx1c2hUb2tlblRyYW5zYWN0aW9uKTogRmx1c2hUb2tlblRyYW5zYWN0aW9uQnVpbGRlciB7XG4gICAgcmV0dXJuIHRoaXMuaW5pdGlhbGl6ZUJ1aWxkZXIodHgsIG5ldyBGbHVzaFRva2VuVHJhbnNhY3Rpb25CdWlsZGVyKHRoaXMuX2NvaW5Db25maWcpKTtcbiAgfVxuXG4gIGdldFRva2VuVHJhbnNhY3Rpb25CdWlsZGVyKHR4PzogVHJhbnNhY3Rpb24pOiBUb2tlblRyYW5zYWN0aW9uQnVpbGRlciB7XG4gICAgcmV0dXJuIHRoaXMuaW5pdGlhbGl6ZUJ1aWxkZXIodHgsIG5ldyBUb2tlblRyYW5zYWN0aW9uQnVpbGRlcih0aGlzLl9jb2luQ29uZmlnKSk7XG4gIH1cblxuICBnZXRTdGFraW5nQnVpbGRlcih0eD86IFN0YWtpbmdUcmFuc2FjdGlvbik6IFN0YWtpbmdCdWlsZGVyIHtcbiAgICByZXR1cm4gdGhpcy5pbml0aWFsaXplQnVpbGRlcih0eCwgbmV3IFN0YWtpbmdCdWlsZGVyKHRoaXMuX2NvaW5Db25maWcpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIGFuIG5mdCB0cmFuc2FjdGlvbiBidWlsZGVyLlxuICAgKlxuICAgKiBAcGFyYW0ge05GVFRyYW5zYWN0aW9ufSB0eCAtIFRoZSBuZnQgdHJhbnNhY3Rpb24gdG8gdXNlXG4gICAqIEByZXR1cm5zIHtORlRUcmFuc2FjdGlvbkJ1aWxkZXJ9IFRoZSBuZnQgdHJhbnNhY3Rpb24gYnVpbGRlclxuICAgKi9cbiAgZ2V0TkZUVHJhbnNhY3Rpb25CdWlsZGVyKHR4PzogVHJhbnNhY3Rpb24pOiBORlRUcmFuc2FjdGlvbkJ1aWxkZXIge1xuICAgIHJldHVybiB0aGlzLmluaXRpYWxpemVCdWlsZGVyKHR4LCBuZXcgTkZUVHJhbnNhY3Rpb25CdWlsZGVyKHRoaXMuX2NvaW5Db25maWcpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIGFuIGV4aXQgZGVsZWdhdGlvbiB0cmFuc2FjdGlvbiBidWlsZGVyLlxuICAgKlxuICAgKiBAcGFyYW0ge0V4aXREZWxlZ2F0aW9uVHJhbnNhY3Rpb259IHR4IC0gVGhlIGV4aXQgZGVsZWdhdGlvbiB0cmFuc2FjdGlvbiB0byB1c2VcbiAgICogQHJldHVybnMge0V4aXREZWxlZ2F0aW9uQnVpbGRlcn0gVGhlIGV4aXQgZGVsZWdhdGlvbiB0cmFuc2FjdGlvbiBidWlsZGVyXG4gICAqL1xuICBnZXRFeGl0RGVsZWdhdGlvbkJ1aWxkZXIodHg/OiBFeGl0RGVsZWdhdGlvblRyYW5zYWN0aW9uKTogRXhpdERlbGVnYXRpb25CdWlsZGVyIHtcbiAgICByZXR1cm4gdGhpcy5pbml0aWFsaXplQnVpbGRlcih0eCwgbmV3IEV4aXREZWxlZ2F0aW9uQnVpbGRlcih0aGlzLl9jb2luQ29uZmlnKSk7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyBhIGJ1cm4gTkZUIHRyYW5zYWN0aW9uIGJ1aWxkZXIuXG4gICAqXG4gICAqIEBwYXJhbSB7QnVybk5mdFRyYW5zYWN0aW9ufSB0eCAtIFRoZSBidXJuIE5GVCB0cmFuc2FjdGlvbiB0byB1c2VcbiAgICogQHJldHVybnMge0J1cm5OZnRCdWlsZGVyfSBUaGUgYnVybiBORlQgdHJhbnNhY3Rpb24gYnVpbGRlclxuICAgKi9cbiAgZ2V0QnVybk5mdEJ1aWxkZXIodHg/OiBCdXJuTmZ0VHJhbnNhY3Rpb24pOiBCdXJuTmZ0QnVpbGRlciB7XG4gICAgcmV0dXJuIHRoaXMuaW5pdGlhbGl6ZUJ1aWxkZXIodHgsIG5ldyBCdXJuTmZ0QnVpbGRlcih0aGlzLl9jb2luQ29uZmlnKSk7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyBhIGNsYWltIHJld2FyZHMgdHJhbnNhY3Rpb24gYnVpbGRlci5cbiAgICpcbiAgICogQHBhcmFtIHtDbGFpbVJld2FyZHNUcmFuc2FjdGlvbn0gdHggLSBUaGUgY2xhaW0gcmV3YXJkcyB0cmFuc2FjdGlvbiB0byB1c2VcbiAgICogQHJldHVybnMge0NsYWltUmV3YXJkc0J1aWxkZXJ9IFRoZSBjbGFpbSByZXdhcmRzIHRyYW5zYWN0aW9uIGJ1aWxkZXJcbiAgICovXG4gIGdldENsYWltUmV3YXJkc0J1aWxkZXIodHg/OiBDbGFpbVJld2FyZHNUcmFuc2FjdGlvbik6IENsYWltUmV3YXJkc0J1aWxkZXIge1xuICAgIHJldHVybiB0aGlzLmluaXRpYWxpemVCdWlsZGVyKHR4LCBuZXcgQ2xhaW1SZXdhcmRzQnVpbGRlcih0aGlzLl9jb2luQ29uZmlnKSk7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgZ2V0V2FsbGV0SW5pdGlhbGl6YXRpb25CdWlsZGVyKCk6IHZvaWQge1xuICAgIHRocm93IG5ldyBFcnJvcignTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC4nKTtcbiAgfVxuXG4gIGdldFRyYW5zYWN0aW9uVHlwZUZyb21TaWduZWRUeG4oc2lnbmVkVHhuOiBWZXRUcmFuc2FjdGlvbik6IFRyYW5zYWN0aW9uVHlwZSB7XG4gICAgcmV0dXJuIHV0aWxzLmdldFRyYW5zYWN0aW9uVHlwZUZyb21DbGF1c2Uoc2lnbmVkVHhuLmJvZHkuY2xhdXNlcyk7XG4gIH1cblxuICAvKipcbiAgICogSW5pdGlhbGl6ZSB0aGUgYnVpbGRlciB3aXRoIHRoZSBnaXZlbiB0cmFuc2FjdGlvblxuICAgKlxuICAgKiBAcGFyYW0ge1RyYW5zYWN0aW9uIHwgdW5kZWZpbmVkfSB0eCAtIHRoZSB0cmFuc2FjdGlvbiB1c2VkIHRvIGluaXRpYWxpemUgdGhlIGJ1aWxkZXJcbiAgICogQHBhcmFtIHtUcmFuc2FjdGlvbkJ1aWxkZXJ9IGJ1aWxkZXIgLSB0aGUgYnVpbGRlciB0byBiZSBpbml0aWFsaXplZFxuICAgKiBAcmV0dXJucyB7VHJhbnNhY3Rpb25CdWlsZGVyfSB0aGUgYnVpbGRlciBpbml0aWFsaXplZFxuICAgKi9cbiAgcHJpdmF0ZSBpbml0aWFsaXplQnVpbGRlcjxUIGV4dGVuZHMgVHJhbnNhY3Rpb25CdWlsZGVyPih0eDogVHJhbnNhY3Rpb24gfCB1bmRlZmluZWQsIGJ1aWxkZXI6IFQpOiBUIHtcbiAgICBpZiAodHgpIHtcbiAgICAgIGJ1aWxkZXIuaW5pdEJ1aWxkZXIodHgpO1xuICAgIH1cbiAgICByZXR1cm4gYnVpbGRlcjtcbiAgfVxufVxuIl19
164
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvdHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFDQSxtREFBK0c7QUFHL0csMEVBQXVFO0FBQ3ZFLG9HQUFpRztBQUNqRyxvR0FBaUc7QUFDakcsc0ZBQW1GO0FBQ25GLHdFQUFxRTtBQUNyRSxrRkFBK0U7QUFDL0UsMkRBQXdEO0FBQ3hELG9EQUE0QjtBQUM1QixxR0FBa0c7QUFDbEcsK0VBQTRFO0FBQzVFLGlFQUF5RTtBQUN6RSx5RUFBc0U7QUFDdEUsNkRBQXFFO0FBQ3JFLDBGQUF1RjtBQUN2RixxRUFBa0U7QUFDbEUsd0VBQXFFO0FBQ3JFLHlFQUFzRTtBQUN0RSxzRkFBbUY7QUFDbkYsaUVBQThEO0FBQzlELGlGQUE4RTtBQUM5RSxzRkFBbUY7QUFFbkYsTUFBYSx5QkFBMEIsU0FBUSx3Q0FBNkI7SUFDMUUsWUFBWSxXQUFpQztRQUMzQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDckIsQ0FBQztJQUVELGtCQUFrQjtJQUNsQixJQUFJLENBQUMsV0FBbUI7UUFDdEIsSUFBSSxDQUFDO1lBQ0gsTUFBTSxRQUFRLEdBQUcseUJBQVcsQ0FBQyxzQkFBc0IsQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUNqRSxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsK0JBQStCLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDNUQsUUFBUSxJQUFJLEVBQUUsQ0FBQztnQkFDYixLQUFLLDBCQUFlLENBQUMsSUFBSTtvQkFDdkIsTUFBTSxVQUFVLEdBQUcsSUFBSSx5QkFBVyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztvQkFDckQsVUFBVSxDQUFDLGlDQUFpQyxDQUFDLFFBQVEsQ0FBQyxDQUFDO29CQUN2RCxPQUFPLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxVQUFVLENBQUMs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QUM7SUFDakYsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsd0JBQXdCLENBQUMsRUFBOEI7UUFDckQsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUMsRUFBRSxFQUFFLElBQUksNkNBQXFCLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7SUFDakYsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsaUJBQWlCLENBQUMsRUFBdUI7UUFDdkMsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUMsRUFBRSxFQUFFLElBQUksK0JBQWMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztJQUMxRSxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxzQkFBc0IsQ0FBQyxFQUE0QjtRQUNqRCxPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLEVBQUUsSUFBSSx5Q0FBbUIsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztJQUMvRSxDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLDhCQUE4QjtRQUM1QixNQUFNLElBQUksS0FBSyxDQUFDLHlCQUF5QixDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVELCtCQUErQixDQUFDLFNBQXlCO1FBQ3ZELE9BQU8sZUFBSyxDQUFDLDRCQUE0QixDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDcEUsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNLLGlCQUFpQixDQUErQixFQUEyQixFQUFFLE9BQVU7UUFDN0YsSUFBSSxFQUFFLEVBQUUsQ0FBQztZQUNQLE9BQU8sQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDMUIsQ0FBQztRQUNELE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7Q0FDRjtBQWxKRCw4REFrSkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUcmFuc2FjdGlvbiBhcyBWZXRUcmFuc2FjdGlvbiB9IGZyb20gJ0B2ZWNoYWluL3Nkay1jb3JlJztcbmltcG9ydCB7IEJhc2VUcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5LCBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvciwgVHJhbnNhY3Rpb25UeXBlIH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuaW1wb3J0IHsgQmFzZUNvaW4gYXMgQ29pbkNvbmZpZyB9IGZyb20gJ0BiaXRnby1iZXRhL3N0YXRpY3MnO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb25CdWlsZGVyIH0gZnJvbSAnLi90cmFuc2FjdGlvbkJ1aWxkZXIvdHJhbnNhY3Rpb25CdWlsZGVyJztcbmltcG9ydCB7IFRyYW5zZmVyQnVpbGRlciB9IGZyb20gJy4vdHJhbnNhY3Rpb25CdWlsZGVyL3RyYW5zZmVyQnVpbGRlcic7XG5pbXBvcnQgeyBBZGRyZXNzSW5pdGlhbGl6YXRpb25CdWlsZGVyIH0gZnJvbSAnLi90cmFuc2FjdGlvbkJ1aWxkZXIvYWRkcmVzc0luaXRpYWxpemF0aW9uQnVpbGRlcic7XG5pbXBvcnQgeyBGbHVzaFRva2VuVHJhbnNhY3Rpb25CdWlsZGVyIH0gZnJvbSAnLi90cmFuc2FjdGlvbkJ1aWxkZXIvZmx1c2hUb2tlblRyYW5zYWN0aW9uQnVpbGRlcic7XG5pbXBvcnQgeyBFeGl0RGVsZWdhdGlvbkJ1aWxkZXIgfSBmcm9tICcuL3RyYW5zYWN0aW9uQnVpbGRlci9leGl0RGVsZWdhdGlvbkJ1aWxkZXInO1xuaW1wb3J0IHsgQnVybk5mdEJ1aWxkZXIgfSBmcm9tICcuL3RyYW5zYWN0aW9uQnVpbGRlci9idXJuTmZ0QnVpbGRlcic7XG5pbXBvcnQgeyBDbGFpbVJld2FyZHNCdWlsZGVyIH0gZnJvbSAnLi90cmFuc2FjdGlvbkJ1aWxkZXIvY2xhaW1SZXdhcmRzQnVpbGRlcic7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbiB9IGZyb20gJy4vdHJhbnNhY3Rpb24vdHJhbnNhY3Rpb24nO1xuaW1wb3J0IHV0aWxzIGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IHsgQWRkcmVzc0luaXRpYWxpemF0aW9uVHJhbnNhY3Rpb24gfSBmcm9tICcuL3RyYW5zYWN0aW9uL2FkZHJlc3NJbml0aWFsaXphdGlvblRyYW5zYWN0aW9uJztcbmltcG9ydCB7IEZsdXNoVG9rZW5UcmFuc2FjdGlvbiB9IGZyb20gJy4vdHJhbnNhY3Rpb24vZmx1c2hUb2tlblRyYW5zYWN0aW9uJztcbmltcG9ydCB7IEV4aXREZWxlZ2F0aW9uVHJhbnNhY3Rpb24gfSBmcm9tICcuL3RyYW5zYWN0aW9uL2V4aXREZWxlZ2F0aW9uJztcbmltcG9ydCB7IEJ1cm5OZnRUcmFuc2FjdGlvbiB9IGZyb20gJy4vdHJhbnNhY3Rpb24vYnVybk5mdFRyYW5zYWN0aW9uJztcbmltcG9ydCB7IENsYWltUmV3YXJkc1RyYW5zYWN0aW9uIH0gZnJvbSAnLi90cmFuc2FjdGlvbi9jbGFpbVJld2FyZHMnO1xuaW1wb3J0IHsgVG9rZW5UcmFuc2FjdGlvbkJ1aWxkZXIgfSBmcm9tICcuL3RyYW5zYWN0aW9uQnVpbGRlci90b2tlblRyYW5zYWN0aW9uQnVpbGRlcic7XG5pbXBvcnQgeyBUb2tlblRyYW5zYWN0aW9uIH0gZnJvbSAnLi90cmFuc2FjdGlvbi90b2tlblRyYW5zYWN0aW9uJztcbmltcG9ydCB7IFN0YWtpbmdCdWlsZGVyIH0gZnJvbSAnLi90cmFuc2FjdGlvbkJ1aWxkZXIvc3Rha2luZ0J1aWxkZXInO1xuaW1wb3J0IHsgU3Rha2luZ1RyYW5zYWN0aW9uIH0gZnJvbSAnLi90cmFuc2FjdGlvbi9zdGFraW5nVHJhbnNhY3Rpb24nO1xuaW1wb3J0IHsgTkZUVHJhbnNhY3Rpb25CdWlsZGVyIH0gZnJvbSAnLi90cmFuc2FjdGlvbkJ1aWxkZXIvbmZ0VHJhbnNhY3Rpb25CdWlsZGVyJztcbmltcG9ydCB7IE5GVFRyYW5zYWN0aW9uIH0gZnJvbSAnLi90cmFuc2FjdGlvbi9uZnRUcmFuc2FjdGlvbic7XG5pbXBvcnQgeyBTdGFrZUNsYXVzZVRyYW5zYWN0aW9uIH0gZnJvbSAnLi90cmFuc2FjdGlvbi9zdGFrZUNsYXVzZVRyYW5zYWN0aW9uJztcbmltcG9ydCB7IFN0YWtlQ2xhdXNlVHhuQnVpbGRlciB9IGZyb20gJy4vdHJhbnNhY3Rpb25CdWlsZGVyL3N0YWtlQ2xhdXNlVHhuQnVpbGRlcic7XG5cbmV4cG9ydCBjbGFzcyBUcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5IGV4dGVuZHMgQmFzZVRyYW5zYWN0aW9uQnVpbGRlckZhY3Rvcnkge1xuICBjb25zdHJ1Y3RvcihfY29pbkNvbmZpZzogUmVhZG9ubHk8Q29pbkNvbmZpZz4pIHtcbiAgICBzdXBlcihfY29pbkNvbmZpZyk7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgZnJvbShzaWduZWRSYXdUeDogc3RyaW5nKTogVHJhbnNhY3Rpb25CdWlsZGVyIHtcbiAgICB0cnkge1xuICAgICAgY29uc3Qgc2lnbmVkVHggPSBUcmFuc2FjdGlvbi5kZXNlcmlhbGl6ZVRyYW5zYWN0aW9uKHNpZ25lZFJhd1R4KTtcbiAgICAgIGNvbnN0IHR5cGUgPSB0aGlzLmdldFRyYW5zYWN0aW9uVHlwZUZyb21TaWduZWRUeG4oc2lnbmVkVHgpO1xuICAgICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICAgIGNhc2UgVHJhbnNhY3Rpb25UeXBlLlNlbmQ6XG4gICAgICAgICAgY29uc3QgdHJhbnNmZXJUeCA9IG5ldyBUcmFuc2FjdGlvbih0aGlzLl9jb2luQ29uZmlnKTtcbiAgICAgICAgICB0cmFuc2ZlclR4LmZyb21EZXNlcmlhbGl6ZWRTaWduZWRUcmFuc2FjdGlvbihzaWduZWRUeCk7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0VHJhbnNmZXJCdWlsZGVyKHRyYW5zZmVyVHgpO1xuICAgICAgICBjYXNlIFRyYW5zYWN0aW9uVHlwZS5BZGRyZXNzSW5pdGlhbGl6YXRpb246XG4gICAgICAgICAgY29uc3QgYWRkcmVzc0luaXRpYWxpemF0aW9uVHggPSBuZXcgQWRkcmVzc0luaXRpYWxpemF0aW9uVHJhbnNhY3Rpb24odGhpcy5fY29pbkNvbmZpZyk7XG4gICAgICAgICAgYWRkcmVzc0luaXRpYWxpemF0aW9uVHguZnJvbURlc2VyaWFsaXplZFNpZ25lZFRyYW5zYWN0aW9uKHNpZ25lZFR4KTtcbiAgICAgICAgICByZXR1cm4gdGhpcy5nZXRBZGRyZXNzSW5pdGlhbGl6YXRpb25CdWlsZGVyKGFkZHJlc3NJbml0aWFsaXphdGlvblR4KTtcbiAgICAgICAgY2FzZSBUcmFuc2FjdGlvblR5cGUuRmx1c2hUb2tlbnM6XG4gICAgICAgICAgY29uc3QgZmx1c2hUb2tlblR4ID0gbmV3IEZsdXNoVG9rZW5UcmFuc2FjdGlvbih0aGlzLl9jb2luQ29uZmlnKTtcbiAgICAgICAgICBmbHVzaFRva2VuVHguZnJvbURlc2VyaWFsaXplZFNpZ25lZFRyYW5zYWN0aW9uKHNpZ25lZFR4KTtcbiAgICAgICAgICByZXR1cm4gdGhpcy5nZXRGbHVzaFRva2VuVHJhbnNhY3Rpb25CdWlsZGVyKGZsdXNoVG9rZW5UeCk7XG4gICAgICAgIGNhc2UgVHJhbnNhY3Rpb25UeXBlLlNlbmRUb2tlbjpcbiAgICAgICAgICBjb25zdCB0b2tlblRyYW5zZmVyVHggPSBuZXcgVG9rZW5UcmFuc2FjdGlvbih0aGlzLl9jb2luQ29uZmlnKTtcbiAgICAgICAgICB0b2tlblRyYW5zZmVyVHguZnJvbURlc2VyaWFsaXplZFNpZ25lZFRyYW5zYWN0aW9uKHNpZ25lZFR4KTtcbiAgICAgICAgICByZXR1cm4gdGhpcy5nZXRUb2tlblRyYW5zYWN0aW9uQnVpbGRlcih0b2tlblRyYW5zZmVyVHgpO1xuICAgICAgICBjYXNlIFRyYW5zYWN0aW9uVHlwZS5TZW5kTkZUOlxuICAgICAgICAgIGNvbnN0IG5mdFRyYW5zZmVyVHggPSBuZXcgTkZUVHJhbnNhY3Rpb24odGhpcy5fY29pbkNvbmZpZyk7XG4gICAgICAgICAgbmZ0VHJhbnNmZXJUeC5mcm9tRGVzZXJpYWxpemVkU2lnbmVkVHJhbnNhY3Rpb24oc2lnbmVkVHgpO1xuICAgICAgICAgIHJldHVybiB0aGlzLmdldE5GVFRyYW5zYWN0aW9uQnVpbGRlcihuZnRUcmFuc2ZlclR4KTtcbiAgICAgICAgY2FzZSBUcmFuc2FjdGlvblR5cGUuQ29udHJhY3RDYWxsOlxuICAgICAgICAgIGNvbnN0IHN0YWtpbmdUeCA9IG5ldyBTdGFraW5nVHJhbnNhY3Rpb24odGhpcy5fY29pbkNvbmZpZyk7XG4gICAgICAgICAgc3Rha2luZ1R4LmZyb21EZXNlcmlhbGl6ZWRTaWduZWRUcmFuc2FjdGlvbihzaWduZWRUeCk7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0U3Rha2luZ0J1aWxkZXIoc3Rha2luZ1R4KTtcbiAgICAgICAgY2FzZSBUcmFuc2FjdGlvblR5cGUuU3Rha2luZ0FjdGl2YXRlOlxuICAgICAgICAgIGNvbnN0IHN0YWtlQ2xhdXNlVHggPSBuZXcgU3Rha2VDbGF1c2VUcmFuc2FjdGlvbih0aGlzLl9jb2luQ29uZmlnKTtcbiAgICAgICAgICBzdGFrZUNsYXVzZVR4LmZyb21EZXNlcmlhbGl6ZWRTaWduZWRUcmFuc2FjdGlvbihzaWduZWRUeCk7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0U3Rha2luZ0FjdGl2YXRlQnVpbGRlcihzdGFrZUNsYXVzZVR4KTtcbiAgICAgICAgY2FzZSBUcmFuc2FjdGlvblR5cGUuU3Rha2luZ1VubG9jazpcbiAgICAgICAgICBjb25zdCBleGl0RGVsZWdhdGlvblR4ID0gbmV3IEV4aXREZWxlZ2F0aW9uVHJhbnNhY3Rpb24odGhpcy5fY29pbkNvbmZpZyk7XG4gICAgICAgICAgZXhpdERlbGVnYXRpb25UeC5mcm9tRGVzZXJpYWxpemVkU2lnbmVkVHJhbnNhY3Rpb24oc2lnbmVkVHgpO1xuICAgICAgICAgIHJldHVybiB0aGlzLmdldEV4aXREZWxlZ2F0aW9uQnVpbGRlcihleGl0RGVsZWdhdGlvblR4KTtcbiAgICAgICAgY2FzZSBUcmFuc2FjdGlvblR5cGUuU3Rha2luZ1dpdGhkcmF3OlxuICAgICAgICAgIGNvbnN0IGJ1cm5OZnRUeCA9IG5ldyBCdXJuTmZ0VHJhbnNhY3Rpb24odGhpcy5fY29pbkNvbmZpZyk7XG4gICAgICAgICAgYnVybk5mdFR4LmZyb21EZXNlcmlhbGl6ZWRTaWduZWRUcmFuc2FjdGlvbihzaWduZWRUeCk7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0QnVybk5mdEJ1aWxkZXIoYnVybk5mdFR4KTtcbiAgICAgICAgY2FzZSBUcmFuc2FjdGlvblR5cGUuU3Rha2luZ0NsYWltOlxuICAgICAgICAgIGNvbnN0IGNsYWltUmV3YXJkc1R4ID0gbmV3IENsYWltUmV3YXJkc1RyYW5zYWN0aW9uKHRoaXMuX2NvaW5Db25maWcpO1xuICAgICAgICAgIGNsYWltUmV3YXJkc1R4LmZyb21EZXNlcmlhbGl6ZWRTaWduZWRUcmFuc2FjdGlvbihzaWduZWRUeCk7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0Q2xhaW1SZXdhcmRzQnVpbGRlcihjbGFpbVJld2FyZHNUeCk7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKCdJbnZhbGlkIHRyYW5zYWN0aW9uIHR5cGUnKTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aHJvdyBlO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBnZXRUcmFuc2ZlckJ1aWxkZXIodHg/OiBUcmFuc2FjdGlvbik6IFRyYW5zZmVyQnVpbGRlciB7XG4gICAgcmV0dXJuIHRoaXMuaW5pdGlhbGl6ZUJ1aWxkZXIodHgsIG5ldyBUcmFuc2ZlckJ1aWxkZXIodGhpcy5fY29pbkNvbmZpZykpO1xuICB9XG5cbiAgZ2V0QWRkcmVzc0luaXRpYWxpemF0aW9uQnVpbGRlcih0eD86IEFkZHJlc3NJbml0aWFsaXphdGlvblRyYW5zYWN0aW9uKTogQWRkcmVzc0luaXRpYWxpemF0aW9uQnVpbGRlciB7XG4gICAgcmV0dXJuIHRoaXMuaW5pdGlhbGl6ZUJ1aWxkZXIodHgsIG5ldyBBZGRyZXNzSW5pdGlhbGl6YXRpb25CdWlsZGVyKHRoaXMuX2NvaW5Db25maWcpKTtcbiAgfVxuXG4gIGdldEZsdXNoVG9rZW5UcmFuc2FjdGlvbkJ1aWxkZXIodHg/OiBGbHVzaFRva2VuVHJhbnNhY3Rpb24pOiBGbHVzaFRva2VuVHJhbnNhY3Rpb25CdWlsZGVyIHtcbiAgICByZXR1cm4gdGhpcy5pbml0aWFsaXplQnVpbGRlcih0eCwgbmV3IEZsdXNoVG9rZW5UcmFuc2FjdGlvbkJ1aWxkZXIodGhpcy5fY29pbkNvbmZpZykpO1xuICB9XG5cbiAgZ2V0VG9rZW5UcmFuc2FjdGlvbkJ1aWxkZXIodHg/OiBUcmFuc2FjdGlvbik6IFRva2VuVHJhbnNhY3Rpb25CdWlsZGVyIHtcbiAgICByZXR1cm4gdGhpcy5pbml0aWFsaXplQnVpbGRlcih0eCwgbmV3IFRva2VuVHJhbnNhY3Rpb25CdWlsZGVyKHRoaXMuX2NvaW5Db25maWcpKTtcbiAgfVxuXG4gIGdldFN0YWtpbmdCdWlsZGVyKHR4PzogU3Rha2luZ1RyYW5zYWN0aW9uKTogU3Rha2luZ0J1aWxkZXIge1xuICAgIHJldHVybiB0aGlzLmluaXRpYWxpemVCdWlsZGVyKHR4LCBuZXcgU3Rha2luZ0J1aWxkZXIodGhpcy5fY29pbkNvbmZpZykpO1xuICB9XG5cbiAgZ2V0U3Rha2luZ0FjdGl2YXRlQnVpbGRlcih0eD86IFN0YWtlQ2xhdXNlVHJhbnNhY3Rpb24pOiBTdGFrZUNsYXVzZVR4bkJ1aWxkZXIge1xuICAgIHJldHVybiB0aGlzLmluaXRpYWxpemVCdWlsZGVyKHR4LCBuZXcgU3Rha2VDbGF1c2VUeG5CdWlsZGVyKHRoaXMuX2NvaW5Db25maWcpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIGFuIG5mdCB0cmFuc2FjdGlvbiBidWlsZGVyLlxuICAgKlxuICAgKiBAcGFyYW0ge05GVFRyYW5zYWN0aW9ufSB0eCAtIFRoZSBuZnQgdHJhbnNhY3Rpb24gdG8gdXNlXG4gICAqIEByZXR1cm5zIHtORlRUcmFuc2FjdGlvbkJ1aWxkZXJ9IFRoZSBuZnQgdHJhbnNhY3Rpb24gYnVpbGRlclxuICAgKi9cbiAgZ2V0TkZUVHJhbnNhY3Rpb25CdWlsZGVyKHR4PzogVHJhbnNhY3Rpb24pOiBORlRUcmFuc2FjdGlvbkJ1aWxkZXIge1xuICAgIHJldHVybiB0aGlzLmluaXRpYWxpemVCdWlsZGVyKHR4LCBuZXcgTkZUVHJhbnNhY3Rpb25CdWlsZGVyKHRoaXMuX2NvaW5Db25maWcpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIGFuIGV4aXQgZGVsZWdhdGlvbiB0cmFuc2FjdGlvbiBidWlsZGVyLlxuICAgKlxuICAgKiBAcGFyYW0ge0V4aXREZWxlZ2F0aW9uVHJhbnNhY3Rpb259IHR4IC0gVGhlIGV4aXQgZGVsZWdhdGlvbiB0cmFuc2FjdGlvbiB0byB1c2VcbiAgICogQHJldHVybnMge0V4aXREZWxlZ2F0aW9uQnVpbGRlcn0gVGhlIGV4aXQgZGVsZWdhdGlvbiB0cmFuc2FjdGlvbiBidWlsZGVyXG4gICAqL1xuICBnZXRFeGl0RGVsZWdhdGlvbkJ1aWxkZXIodHg/OiBFeGl0RGVsZWdhdGlvblRyYW5zYWN0aW9uKTogRXhpdERlbGVnYXRpb25CdWlsZGVyIHtcbiAgICByZXR1cm4gdGhpcy5pbml0aWFsaXplQnVpbGRlcih0eCwgbmV3IEV4aXREZWxlZ2F0aW9uQnVpbGRlcih0aGlzLl9jb2luQ29uZmlnKSk7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyBhIGJ1cm4gTkZUIHRyYW5zYWN0aW9uIGJ1aWxkZXIuXG4gICAqXG4gICAqIEBwYXJhbSB7QnVybk5mdFRyYW5zYWN0aW9ufSB0eCAtIFRoZSBidXJuIE5GVCB0cmFuc2FjdGlvbiB0byB1c2VcbiAgICogQHJldHVybnMge0J1cm5OZnRCdWlsZGVyfSBUaGUgYnVybiBORlQgdHJhbnNhY3Rpb24gYnVpbGRlclxuICAgKi9cbiAgZ2V0QnVybk5mdEJ1aWxkZXIodHg/OiBCdXJuTmZ0VHJhbnNhY3Rpb24pOiBCdXJuTmZ0QnVpbGRlciB7XG4gICAgcmV0dXJuIHRoaXMuaW5pdGlhbGl6ZUJ1aWxkZXIodHgsIG5ldyBCdXJuTmZ0QnVpbGRlcih0aGlzLl9jb2luQ29uZmlnKSk7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyBhIGNsYWltIHJld2FyZHMgdHJhbnNhY3Rpb24gYnVpbGRlci5cbiAgICpcbiAgICogQHBhcmFtIHtDbGFpbVJld2FyZHNUcmFuc2FjdGlvbn0gdHggLSBUaGUgY2xhaW0gcmV3YXJkcyB0cmFuc2FjdGlvbiB0byB1c2VcbiAgICogQHJldHVybnMge0NsYWltUmV3YXJkc0J1aWxkZXJ9IFRoZSBjbGFpbSByZXdhcmRzIHRyYW5zYWN0aW9uIGJ1aWxkZXJcbiAgICovXG4gIGdldENsYWltUmV3YXJkc0J1aWxkZXIodHg/OiBDbGFpbVJld2FyZHNUcmFuc2FjdGlvbik6IENsYWltUmV3YXJkc0J1aWxkZXIge1xuICAgIHJldHVybiB0aGlzLmluaXRpYWxpemVCdWlsZGVyKHR4LCBuZXcgQ2xhaW1SZXdhcmRzQnVpbGRlcih0aGlzLl9jb2luQ29uZmlnKSk7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgZ2V0V2FsbGV0SW5pdGlhbGl6YXRpb25CdWlsZGVyKCk6IHZvaWQge1xuICAgIHRocm93IG5ldyBFcnJvcignTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC4nKTtcbiAgfVxuXG4gIGdldFRyYW5zYWN0aW9uVHlwZUZyb21TaWduZWRUeG4oc2lnbmVkVHhuOiBWZXRUcmFuc2FjdGlvbik6IFRyYW5zYWN0aW9uVHlwZSB7XG4gICAgcmV0dXJuIHV0aWxzLmdldFRyYW5zYWN0aW9uVHlwZUZyb21DbGF1c2Uoc2lnbmVkVHhuLmJvZHkuY2xhdXNlcyk7XG4gIH1cblxuICAvKipcbiAgICogSW5pdGlhbGl6ZSB0aGUgYnVpbGRlciB3aXRoIHRoZSBnaXZlbiB0cmFuc2FjdGlvblxuICAgKlxuICAgKiBAcGFyYW0ge1RyYW5zYWN0aW9uIHwgdW5kZWZpbmVkfSB0eCAtIHRoZSB0cmFuc2FjdGlvbiB1c2VkIHRvIGluaXRpYWxpemUgdGhlIGJ1aWxkZXJcbiAgICogQHBhcmFtIHtUcmFuc2FjdGlvbkJ1aWxkZXJ9IGJ1aWxkZXIgLSB0aGUgYnVpbGRlciB0byBiZSBpbml0aWFsaXplZFxuICAgKiBAcmV0dXJucyB7VHJhbnNhY3Rpb25CdWlsZGVyfSB0aGUgYnVpbGRlciBpbml0aWFsaXplZFxuICAgKi9cbiAgcHJpdmF0ZSBpbml0aWFsaXplQnVpbGRlcjxUIGV4dGVuZHMgVHJhbnNhY3Rpb25CdWlsZGVyPih0eDogVHJhbnNhY3Rpb24gfCB1bmRlZmluZWQsIGJ1aWxkZXI6IFQpOiBUIHtcbiAgICBpZiAodHgpIHtcbiAgICAgIGJ1aWxkZXIuaW5pdEJ1aWxkZXIodHgpO1xuICAgIH1cbiAgICByZXR1cm4gYnVpbGRlcjtcbiAgfVxufVxuIl19
@@ -23,6 +23,15 @@ export declare class Utils implements BaseUtils {
23
23
  levelId: number;
24
24
  autorenew: boolean;
25
25
  };
26
+ /**
27
+ * Decodes staking transaction data to extract levelId and autorenew
28
+ *
29
+ * @param {string} data - The encoded transaction data
30
+ * @returns {object} - Object containing levelId and autorenew
31
+ */
32
+ decodeStakeClauseData(data: string): {
33
+ levelId: number;
34
+ };
26
35
  decodeTransferTokenData(data: string): TransactionRecipient;
27
36
  decodeTransferNFTData(data: string): {
28
37
  recipients: TransactionRecipient[];
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/lib/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,WAAW,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAG5E,OAAO,EAAE,SAAS,EAAE,oBAAoB,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAwBxF,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAE7D,qBAAa,KAAM,YAAW,SAAS;IACrC,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAIxC,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAIrC,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IASvC,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAStC,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAI5C,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAI3C,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO;IAKlD,sBAAsB,CAAC,qBAAqB,EAAE,MAAM,GAAG,WAAW;IAalE,4BAA4B,CAAC,OAAO,EAAE,iBAAiB,EAAE,GAAG,eAAe;IA2B3E,oBAAoB,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM;IAWlE,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM;IAWrE;;;;;OAKG;IACH,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,OAAO,CAAA;KAAE;IAgBxE,uBAAuB,CAAC,IAAI,EAAE,MAAM,GAAG,oBAAoB;IAY3D,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG;QACnC,UAAU,EAAE,oBAAoB,EAAE,CAAC;QACnC,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,EAAE,MAAM,CAAC;KACjB;IAmBD;;;;;OAKG;IACH,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAgB5C;;;;;OAKG;IACH,wBAAwB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAc9C;;;;;OAKG;IACH,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAcvC;;;;OAIG;IACH,2BAA2B,CAAC,UAAU,EAAE,QAAQ,CAAC,UAAU,CAAC,GAAG,MAAM;IAKrE;;;;OAIG;IACH,wBAAwB,CAAC,UAAU,EAAE,QAAQ,CAAC,UAAU,CAAC,GAAG,MAAM;IAKlE;;;;OAIG;IACH,2BAA2B,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAQrD;;;;OAIG;IACH,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAO9C;;;;;OAKG;IACH,8BAA8B,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,CAAC,UAAU,CAAC,GAAG,IAAI;IASvF;;;;;OAKG;IACH,iCAAiC,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,CAAC,UAAU,CAAC,GAAG,IAAI;CAQ3F;AAED,QAAA,MAAM,KAAK,OAAc,CAAC;AAE1B,eAAe,KAAK,CAAC"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/lib/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,WAAW,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAG5E,OAAO,EAAE,SAAS,EAAE,oBAAoB,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAyBxF,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAE7D,qBAAa,KAAM,YAAW,SAAS;IACrC,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAIxC,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAIrC,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IASvC,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAStC,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAI5C,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAI3C,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO;IAKlD,sBAAsB,CAAC,qBAAqB,EAAE,MAAM,GAAG,WAAW;IAalE,4BAA4B,CAAC,OAAO,EAAE,iBAAiB,EAAE,GAAG,eAAe;IA6B3E,oBAAoB,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM;IAWlE,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM;IAWrE;;;;;OAKG;IACH,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,OAAO,CAAA;KAAE;IAgBxE;;;;;OAKG;IACH,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE;IAexD,uBAAuB,CAAC,IAAI,EAAE,MAAM,GAAG,oBAAoB;IAY3D,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG;QACnC,UAAU,EAAE,oBAAoB,EAAE,CAAC;QACnC,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,EAAE,MAAM,CAAC;KACjB;IAmBD;;;;;OAKG;IACH,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAgB5C;;;;;OAKG;IACH,wBAAwB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAc9C;;;;;OAKG;IACH,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAcvC;;;;OAIG;IACH,2BAA2B,CAAC,UAAU,EAAE,QAAQ,CAAC,UAAU,CAAC,GAAG,MAAM;IAKrE;;;;OAIG;IACH,wBAAwB,CAAC,UAAU,EAAE,QAAQ,CAAC,UAAU,CAAC,GAAG,MAAM;IAKlE;;;;OAIG;IACH,2BAA2B,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAQrD;;;;OAIG;IACH,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAO9C;;;;;OAKG;IACH,8BAA8B,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,CAAC,UAAU,CAAC,GAAG,IAAI;IASvF;;;;;OAKG;IACH,iCAAiC,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,CAAC,UAAU,CAAC,GAAG,IAAI;CAQ3F;AAED,QAAA,MAAM,KAAK,OAAc,CAAC;AAE1B,eAAe,KAAK,CAAC"}
@@ -75,6 +75,9 @@ class Utils {
75
75
  else if (clauses[0].data.startsWith(constants_1.STAKING_METHOD_ID)) {
76
76
  return sdk_core_2.TransactionType.ContractCall;
77
77
  }
78
+ else if (clauses[0].data.startsWith(constants_1.STAKE_CLAUSE_METHOD_ID)) {
79
+ return sdk_core_2.TransactionType.StakingActivate;
80
+ }
78
81
  else if (clauses[0].data.startsWith(constants_1.EXIT_DELEGATION_METHOD_ID)) {
79
82
  return sdk_core_2.TransactionType.StakingUnlock;
80
83
  }
@@ -128,6 +131,25 @@ class Utils {
128
131
  throw new Error(`Failed to decode staking data: ${error.message}`);
129
132
  }
130
133
  }
134
+ /**
135
+ * Decodes staking transaction data to extract levelId and autorenew
136
+ *
137
+ * @param {string} data - The encoded transaction data
138
+ * @returns {object} - Object containing levelId and autorenew
139
+ */
140
+ decodeStakeClauseData(data) {
141
+ try {
142
+ const parameters = data.slice(10);
143
+ // Decode using ethereumjs-abi directly
144
+ const decoded = ethereumjs_abi_1.default.rawDecode(['uint8'], Buffer.from(parameters, 'hex'));
145
+ return {
146
+ levelId: Number(decoded[0]),
147
+ };
148
+ }
149
+ catch (error) {
150
+ throw new Error(`Failed to decode staking data: ${error.message}`);
151
+ }
152
+ }
131
153
  decodeTransferTokenData(data) {
132
154
  const [address, amount] = (0, abstract_eth_1.getRawDecoded)(['address', 'uint256'], (0, abstract_eth_1.getBufferedByteCode)(constants_1.TRANSFER_TOKEN_METHOD_ID, data));
133
155
  const recipientAddress = (0, ethereumjs_util_1.addHexPrefix)(address.toString()).toLowerCase();
@@ -274,4 +296,4 @@ class Utils {
274
296
  exports.Utils = Utils;
275
297
  const utils = new Utils();
276
298
  exports.default = utils;
277
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLGdEQUE0RTtBQUM1RSxvRUFBeUM7QUFDekMscURBQW1EO0FBQ25ELG1EQUF3RjtBQUN4RiwyREFLa0M7QUFDbEMsMkNBZXFCO0FBQ3JCLHVDQUFvQztBQUdwQyxNQUFhLEtBQUs7SUFDaEIsY0FBYyxDQUFDLE9BQWU7UUFDNUIsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sRUFBRSw4QkFBa0IsQ0FBQyxDQUFDO0lBQ3RELENBQUM7SUFFRCxjQUFjLENBQUMsSUFBWTtRQUN6QixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLCtCQUFtQixDQUFDLENBQUM7SUFDcEQsQ0FBQztJQUVELGlCQUFpQixDQUFDLEdBQVc7UUFDM0IsSUFBSSxDQUFDO1lBQ0gsSUFBSSxpQkFBTyxDQUFDLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7WUFDMUIsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO1FBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUNYLE9BQU8sS0FBSyxDQUFDO1FBQ2YsQ0FBQztJQUNILENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxHQUFXO1FBQzFCLElBQUksQ0FBQztZQUNILElBQUksaUJBQU8sQ0FBQyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO1lBQzFCLE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztRQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDWCxPQUFPLEtBQUssQ0FBQztRQUNmLENBQUM7SUFDSCxDQUFDO0lBRUQsZ0JBQWdCLENBQUMsU0FBaUI7UUFDaEMsTUFBTSxJQUFJLEtBQUssQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO0lBQzVDLENBQUM7SUFFRCxvQkFBb0IsQ0FBQyxJQUFZO1FBQy9CLE9BQU8sSUFBSSxDQUFD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QVMsT0FBTyxFQUFFLENBQy9HLENBQUM7UUFDSixDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsaUNBQWlDLENBQUMsT0FBZSxFQUFFLFVBQWdDO1FBQ2pGLE1BQU0sZUFBZSxHQUFHLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNyRSxJQUFJLE9BQU8sQ0FBQyxXQUFXLEVBQUUsS0FBSyxlQUFlLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FBQztZQUM1RCxNQUFNLElBQUksS0FBSyxDQUNiLGlEQUFpRCxlQUFlLFFBQVEsVUFBVSxDQUFDLE9BQU8sQ0FBQyxJQUFJLFNBQVMsT0FBTyxFQUFFLENBQ2xILENBQUM7UUFDSixDQUFDO0lBQ0gsQ0FBQztDQUNGO0FBdlNELHNCQXVTQztBQUVELE1BQU0sS0FBSyxHQUFHLElBQUksS0FBSyxFQUFFLENBQUM7QUFFMUIsa0JBQWUsS0FBSyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSGV4VUludCwgVHJhbnNhY3Rpb24sIFRyYW5zYWN0aW9uQ2xhdXNlIH0gZnJvbSAnQHZlY2hhaW4vc2RrLWNvcmUnO1xuaW1wb3J0IEV0aGVyZXVtQWJpIGZyb20gJ2V0aGVyZXVtanMtYWJpJztcbmltcG9ydCB7IGFkZEhleFByZWZpeCwgQk4gfSBmcm9tICdldGhlcmV1bWpzLXV0aWwnO1xuaW1wb3J0IHsgQmFzZVV0aWxzLCBUcmFuc2FjdGlvblJlY2lwaWVudCwgVHJhbnNhY3Rpb25UeXBlIH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuaW1wb3J0IHtcbiAgdjRDcmVhdGVGb3J3YXJkZXJNZXRob2RJZCxcbiAgZmx1c2hGb3J3YXJkZXJUb2tlbnNNZXRob2RJZFY0LFxuICBnZXRSYXdEZWNvZGVkLFxuICBnZXRCdWZmZXJlZEJ5dGVDb2RlLFxufSBmcm9tICdAYml0Z28tYmV0YS9hYnN0cmFjdC1ldGgnO1xuaW1wb3J0IHtcbiAgVFJBTlNGRVJfVE9LRU5fTUVUSE9EX0lELFxuICBTVEFLSU5HX01FVEhPRF9JRCxcbiAgRVhJVF9ERUxFR0FUSU9OX01FVEhPRF9JRCxcbiAgQlVSTl9ORlRfTUVUSE9EX0lELFxuICBWRVRfQUREUkVTU19MRU5HVEgsXG4gIFZFVF9CTE9DS19JRF9MRU5HVEgsXG4gIFZFVF9UUkFOU0FDVElPTl9JRF9MRU5HVEgsXG4gIFRSQU5TRkVSX05GVF9NRVRIT0RfSUQsXG4gIENMQUlNX0JBU0VfUkVXQVJEU19NRVRIT0RfSUQsXG4gIENMQUlNX1NUQUtJTkdfUkVXQVJEU19NRVRIT0RfSUQsXG4gIFNUQVJHQVRFX05GVF9BRERSRVNTLFxuICBTVEFSR0FURV9ORlRfQUREUkVTU19URVNUTkVULFxuICBTVEFSR0FURV9ERUxFR0FUSU9OX0FERFJFU1MsXG4gIFNUQVJHQVRFX0RFTEVHQVRJT05fQUREUkVTU19URVNUTkVULFxufSBmcm9tICcuL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBLZXlQYWlyIH0gZnJvbSAnLi9rZXlQYWlyJztcbmltcG9ydCB7IEJhc2VDb2luIGFzIENvaW5Db25maWcgfSBmcm9tICdAYml0Z28tYmV0YS9zdGF0aWNzJztcblxuZXhwb3J0IGNsYXNzIFV0aWxzIGltcGxlbWVudHMgQmFzZVV0aWxzIHtcbiAgaXNWYWxpZEFkZHJlc3MoYWRkcmVzczogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaXNWYWxpZEhleChhZGRyZXNzLCBWRVRfQUREUkVTU19MRU5HVEgpO1xuICB9XG5cbiAgaXNWYWxpZEJsb2NrSWQoaGFzaDogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaXNWYWxpZEhleChoYXNoLCBWRVRfQkxPQ0tfSURfTEVOR1RIKTtcbiAgfVxuXG4gIGlzVmFsaWRQcml2YXRlS2V5KGtleTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgdHJ5IHtcbiAgICAgIG5ldyBLZXlQYWlyKHsgcHJ2OiBrZXkgfSk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgaXNWYWxpZFB1YmxpY0tleShrZXk6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHRyeSB7XG4gICAgICBuZXcgS2V5UGFpcih7IHB1Yjoga2V5IH0pO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIGlzVmFsaWRTaWduYXR1cmUoc2lnbmF0dXJlOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ01ldGhvZCBub3QgaW1wbGVtZW50ZWQnKTtcbiAgfVxuXG4gIGlzVmFsaWRUcmFuc2FjdGlvbklkKHR4SWQ6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmlzVmFsaWRIZXgodHhJZCwgVkVUX1RSQU5TQUNUSU9OX0lEX0xFTkdUSCk7XG4gIH1cblxuICBpc1ZhbGlkSGV4KHZhbHVlOiBzdHJpbmcsIGxlbmd0aDogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgY29uc3QgcmVnZXggPSBuZXcgUmVnRXhwKGBeKDB4fDBYKVthLWZBLUYwLTldeyR7bGVuZ3RofX0kYCk7XG4gICAgcmV0dXJuIHJlZ2V4LnRlc3QodmFsdWUpO1xuICB9XG5cbiAgZGVzZXJpYWxpemVUcmFuc2FjdGlvbihzZXJpYWxpemVkVHJhbnNhY3Rpb246IHN0cmluZyk6IFRyYW5zYWN0aW9uIHtcbiAgICBjb25zdCB0eEJ5dGVzID0gSGV4VUludC5vZihzZXJpYWxpemVkVHJhbnNhY3Rpb24pLmJ5dGVzO1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gVHJhbnNhY3Rpb24uZGVjb2RlKHR4Qnl0ZXMsIGZhbHNlKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGlmIChlcnIubWVzc2FnZT8uaW5jbHVkZXMoJ0V4cGVjdGVkIDkgaXRlbXMsIGJ1dCBnb3QgMTAnKSkge1xuICAgICAgICAvLyBMaWtlbHkgc2lnbmVkLCBzbyByZXRyeSB3aXRoIGlzU2lnbmVkID0gdHJ1ZVxuICAgICAgICByZXR1cm4gVHJhbnNhY3Rpb24uZGVjb2RlKHR4Qnl0ZXMsIHRydWUpO1xuICAgICAgfVxuICAgICAgdGhyb3cgZXJyO1xuICAgIH1cbiAgfVxuXG4gIGdldFRyYW5zYWN0aW9uVHlwZUZyb21DbGF1c2UoY2xhdXNlczogVHJhbnNhY3Rpb25DbGF1c2VbXSk6IFRyYW5zYWN0aW9uVHlwZSB7XG4gICAgaWYgKGNsYXVzZXNbMF0uZGF0YSA9PT0gJzB4Jykge1xuICAgICAgcmV0dXJuIFRyYW5zYWN0aW9uVHlwZS5TZW5kO1xuICAgIH0gZWxzZSBpZiAoY2xhdXNlc1swXS5kYXRhLnN0YXJ0c1dpdGgodjRDcmVhdGVGb3J3YXJkZXJNZXRob2RJZCkpIHtcbiAgICAgIHJldHVybiBUcmFuc2FjdGlvblR5cGUuQWRkcmVzc0luaXRpYWxpemF0aW9uO1xuICAgIH0gZWxzZSBpZiAoY2xhdXNlc1swXS5kYXRhLnN0YXJ0c1dpdGgoZmx1c2hGb3J3YXJkZXJUb2tlbnNNZXRob2RJZFY0KSkge1xuICAgICAgcmV0dXJuIFRyYW5zYWN0aW9uVHlwZS5GbHVzaFRva2VucztcbiAgICB9IGVsc2UgaWYgKGNsYXVzZXNbMF0uZGF0YS5zdGFydHNXaXRoKFRSQU5TRkVSX1RPS0VOX01FVEhPRF9JRCkpIHtcbiAgICAgIHJldHVybiBUcmFuc2FjdGlvblR5cGUuU2VuZFRva2VuO1xuICAgIH0gZWxzZSBpZiAoY2xhdXNlc1swXS5kYXRhLnN0YXJ0c1dpdGgoU1RBS0lOR19NRVRIT0RfSUQpKSB7XG4gICAgICByZXR1cm4gVHJhbnNhY3Rpb25UeXBlLkNvbnRyYWN0Q2FsbDtcbiAgICB9IGVsc2UgaWYgKGNsYXVzZXNbMF0uZGF0YS5zdGFydHNXaXRoKEVYSVRfREVMRUdBVElPTl9NRVRIT0RfSUQpKSB7XG4gICAgICByZXR1cm4gVHJhbnNhY3Rpb25UeXBlLlN0YWtpbmdVbmxvY2s7XG4gICAgfSBlbHNlIGlmIChjbGF1c2VzWzBdLmRhdGEuc3RhcnRzV2l0aChCVVJOX05GVF9NRVRIT0RfSUQpKSB7XG4gICAgICByZXR1cm4gVHJhbnNhY3Rpb25UeXBlLlN0YWtpbmdXaXRoZHJhdztcbiAgICB9IGVsc2UgaWYgKFxuICAgICAgY2xhdXNlc1swXS5kYXRhLnN0YXJ0c1dpdGgoQ0xBSU1fQkFTRV9SRVdBUkRTX01FVEhPRF9JRCkgfHxcbiAgICAgIGNsYXVzZXNbMF0uZGF0YS5zdGFydHNXaXRoKENMQUlNX1NUQUtJTkdfUkVXQVJEU19NRVRIT0RfSUQpXG4gICAgKSB7XG4gICAgICByZXR1cm4gVHJhbnNhY3Rpb25UeXBlLlN0YWtpbmdDbGFpbTtcbiAgICB9IGVsc2UgaWYgKGNsYXVzZXNbMF0uZGF0YS5zdGFydHNXaXRoKFRSQU5TRkVSX05GVF9NRVRIT0RfSUQpKSB7XG4gICAgICByZXR1cm4gVHJhbnNhY3Rpb25UeXBlLlNlbmRORlQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBUcmFuc2FjdGlvblR5cGUuU2VuZFRva2VuO1xuICAgIH1cbiAgfVxuXG4gIGdldFRyYW5zZmVyVG9rZW5EYXRhKHRvQWRkcmVzczogc3RyaW5nLCBhbW91bnRXZWk6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3QgbWV0aG9kTmFtZSA9ICd0cmFuc2Zlcic7XG4gICAgY29uc3QgdHlwZXMgPSBbJ2FkZHJlc3MnLCAndWludDI1NiddO1xuICAgIGNvbnN0IHBhcmFtcyA9IFt0b0FkZHJlc3MsIG5ldyBCTihhbW91bnRXZWkpXTtcblxuICAgIGNvbnN0IG1ldGhvZCA9IEV0aGVyZXVtQWJpLm1ldGhvZElEKG1ldGhvZE5hbWUsIHR5cGVzKTtcbiAgICBjb25zdCBhcmdzID0gRXRoZXJldW1BYmkucmF3RW5jb2RlKHR5cGVzLCBwYXJhbXMpO1xuXG4gICAgcmV0dXJuIGFkZEhleFByZWZpeChCdWZmZXIuY29uY2F0KFttZXRob2QsIGFyZ3NdKS50b1N0cmluZygnaGV4JykpO1xuICB9XG5cbiAgZ2V0VHJhbnNmZXJORlREYXRhKGZyb206IHN0cmluZywgdG86IHN0cmluZywgdG9rZW5JZDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBjb25zdCBtZXRob2ROYW1lID0gJ3RyYW5zZmVyRnJvbSc7XG4gICAgY29uc3QgdHlwZXMgPSBbJ2FkZHJlc3MnLCAnYWRkcmVzcycsICd1aW50MjU2J107XG4gICAgY29uc3QgcGFyYW1zID0gW2Zyb20sIHRvLCBuZXcgQk4odG9rZW5JZCldO1xuXG4gICAgY29uc3QgbWV0aG9kID0gRXRoZXJldW1BYmkubWV0aG9kSUQobWV0aG9kTmFtZSwgdHlwZXMpO1xuICAgIGNvbnN0IGFyZ3MgPSBFdGhlcmV1bUFiaS5yYXdFbmNvZGUodHlwZXMsIHBhcmFtcyk7XG5cbiAgICByZXR1cm4gYWRkSGV4UHJlZml4KEJ1ZmZlci5jb25jYXQoW21ldGhvZCwgYXJnc10pLnRvU3RyaW5nKCdoZXgnKSk7XG4gIH1cblxuICAvKipcbiAgICogRGVjb2RlcyBzdGFraW5nIHRyYW5zYWN0aW9uIGRhdGEgdG8gZXh0cmFjdCBsZXZlbElkIGFuZCBhdXRvcmVuZXdcbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IGRhdGEgLSBUaGUgZW5jb2RlZCB0cmFuc2FjdGlvbiBkYXRhXG4gICAqIEByZXR1cm5zIHtvYmplY3R9IC0gT2JqZWN0IGNvbnRhaW5pbmcgbGV2ZWxJZCBhbmQgYXV0b3JlbmV3XG4gICAqL1xuICBkZWNvZGVTdGFraW5nRGF0YShkYXRhOiBzdHJpbmcpOiB7IGxldmVsSWQ6IG51bWJlcjsgYXV0b3JlbmV3OiBib29sZWFuIH0ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBwYXJhbWV0ZXJzID0gZGF0YS5zbGljZSgxMCk7XG5cbiAgICAgIC8vIERlY29kZSB1c2luZyBldGhlcmV1bWpzLWFiaSBkaXJlY3RseVxuICAgICAgY29uc3QgZGVjb2RlZCA9IEV0aGVyZXVtQWJpLnJhd0RlY29kZShbJ3VpbnQ4JywgJ2Jvb2wnXSwgQnVmZmVyLmZyb20ocGFyYW1ldGVycywgJ2hleCcpKTtcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgbGV2ZWxJZDogTnVtYmVyKGRlY29kZWRbMF0pLFxuICAgICAgICBhdXRvcmVuZXc6IEJvb2xlYW4oZGVjb2RlZFsxXSksXG4gICAgICB9O1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEZhaWxlZCB0byBkZWNvZGUgc3Rha2luZyBkYXRhOiAke2Vycm9yLm1lc3NhZ2V9YCk7XG4gICAgfVxuICB9XG5cbiAgZGVjb2RlVHJhbnNmZXJUb2tlbkRhdGEoZGF0YTogc3RyaW5nKTogVHJhbnNhY3Rpb25SZWNpcGllbnQge1xuICAgIGNvbnN0IFthZGRyZXNzLCBhbW91bnRdID0gZ2V0UmF3RGVjb2RlZChcbiAgICAgIFsnYWRkcmVzcycsICd1aW50MjU2J10sXG4gICAgICBnZXRCdWZmZXJlZEJ5dGVDb2RlKFRSQU5TRkVSX1RPS0VOX01FVEhPRF9JRCwgZGF0YSlcbiAgICApO1xuICAgIGNvbnN0IHJlY2lwaWVudEFkZHJlc3MgPSBhZGRIZXhQcmVmaXgoYWRkcmVzcy50b1N0cmluZygpKS50b0xvd2VyQ2FzZSgpO1xuICAgIHJldHVybiB7XG4gICAgICBhZGRyZXNzOiByZWNpcGllbnRBZGRyZXNzLFxuICAgICAgYW1vdW50OiBhbW91bnQudG9TdHJpbmcoKSxcbiAgICB9O1xuICB9XG5cbiAgZGVjb2RlVHJhbnNmZXJORlREYXRhKGRhdGE6IHN0cmluZyk6IHtcbiAgICByZWNpcGllbnRzOiBUcmFuc2FjdGlvblJlY2lwaWVudFtdO1xuICAgIHNlbmRlcjogc3RyaW5nO1xuICAgIHRva2VuSWQ6IHN0cmluZztcbiAgfSB7XG4gICAgY29uc3QgW2Zyb20sIHRvLCB0b2tlbklkQk5dID0gZ2V0UmF3RGVjb2RlZChcbiAgICAgIFsnYWRkcmVzcycsICdhZGRyZXNzJywgJ3VpbnQyNTYnXSxcbiAgICAgIGdldEJ1ZmZlcmVkQnl0ZUNvZGUoVFJBTlNGRVJfTkZUX01FVEhPRF9JRCwgZGF0YSlcbiAgICApO1xuICAgIGNvbnN0IHJlY2lwaWVudEFkZHJlc3MgPSBhZGRIZXhQcmVmaXgodG8udG9TdHJpbmcoKSkudG9Mb3dlckNhc2UoKTtcbiAgICBjb25zdCByZWNpcGllbnQ6IFRyYW5zYWN0aW9uUmVjaXBpZW50ID0ge1xuICAgICAgYWRkcmVzczogcmVjaXBpZW50QWRkcmVzcyxcbiAgICAgIGFtb3VudDogJzEnLFxuICAgIH07XG4gICAgY29uc3Qgc2VuZGVyID0gYWRkSGV4UHJlZml4KGZyb20udG9TdHJpbmcoKSkudG9Mb3dlckNhc2UoKTtcbiAgICBjb25zdCB0b2tlbklkID0gdG9rZW5JZEJOLnRvU3RyaW5nKCk7XG4gICAgcmV0dXJuIHtcbiAgICAgIHJlY2lwaWVudHM6IFtyZWNpcGllbnRdLFxuICAgICAgc2VuZGVyLFxuICAgICAgdG9rZW5JZCxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIERlY29kZXMgY2xhaW0gcmV3YXJkcyB0cmFuc2FjdGlvbiBkYXRhIHRvIGV4dHJhY3QgdG9rZW5JZFxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gZGF0YSAtIFRoZSBlbmNvZGVkIGNsYWltIHJld2FyZHMgbWV0aG9kIGNhbGwgZGF0YVxuICAgKiBAcmV0dXJucyB7c3RyaW5nfSAtIFRoZSB0b2tlbklkIGFzIGEgc3RyaW5nXG4gICAqL1xuICBkZWNvZGVDbGFpbVJld2FyZHNEYXRhKGRhdGE6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgdHJ5IHtcbiAgICAgIC8vIFJlbW92ZSBtZXRob2QgSUQgKGZpcnN0IDEwIGNoYXJhY3RlcnM6ICcweCcgKyA0LWJ5dGUgbWV0aG9kIElEKVxuICAgICAgY29uc3QgbWV0aG9kRGF0YSA9IGRhdGEuc2xpY2UoMTApO1xuXG4gICAgICAvLyBFeHRyYWN0IHRva2VuSWQgZnJvbSBmaXJzdCAzMi1ieXRlIHNsb3RcbiAgICAgIC8vIFRoZSB0b2tlbklkIGlzIGEgdWludDI1Niwgc28gd2UgdGFrZSB0aGUgZnVsbCA2NCBoZXggY2hhcmFjdGVyc1xuICAgICAgY29uc3QgdG9rZW5JZEhleCA9IG1ldGhvZERhdGEuc2xpY2UoMCwgNjQpO1xuXG4gICAgICAvLyBDb252ZXJ0IGhleCB0byBkZWNpbWFsIHN0cmluZ1xuICAgICAgcmV0dXJuIEJpZ0ludCgnMHgnICsgdG9rZW5JZEhleCkudG9TdHJpbmcoKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBGYWlsZWQgdG8gZGVjb2RlIGNsYWltIHJld2FyZHMgZGF0YTogJHtlcnJvci5tZXNzYWdlfWApO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBEZWNvZGVzIGV4aXQgZGVsZWdhdGlvbiB0cmFuc2FjdGlvbiBkYXRhIHRvIGV4dHJhY3QgdG9rZW5JZFxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gZGF0YSAtIFRoZSBlbmNvZGVkIGV4aXQgZGVsZWdhdGlvbiBtZXRob2QgY2FsbCBkYXRhXG4gICAqIEByZXR1cm5zIHtzdHJpbmd9IC0gVGhlIHRva2VuSWQgYXMgYSBzdHJpbmdcbiAgICovXG4gIGRlY29kZUV4aXREZWxlZ2F0aW9uRGF0YShkYXRhOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHRyeSB7XG4gICAgICBpZiAoIWRhdGEuc3RhcnRzV2l0aChFWElUX0RFTEVHQVRJT05fTUVUSE9EX0lEKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgZXhpdCBkZWxlZ2F0aW9uIG1ldGhvZCBkYXRhJyk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHRva2VuSWRIZXggPSBkYXRhLnNsaWNlKEVYSVRfREVMRUdBVElPTl9NRVRIT0RfSUQubGVuZ3RoKTtcbiAgICAgIC8vIENvbnZlcnQgaGV4IHRvIGRlY2ltYWwgKG1hdGNoaW5nIG9yaWdpbmFsIHBhcnNlSW50IGxvZ2ljKVxuICAgICAgcmV0dXJuIHBhcnNlSW50KHRva2VuSWRIZXgsIDE2KS50b1N0cmluZygpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEZhaWxlZCB0byBkZWNvZGUgZXhpdCBkZWxlZ2F0aW9uIGRhdGE6ICR7ZXJyb3IubWVzc2FnZX1gKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogRGVjb2RlcyBidXJuIE5GVCB0cmFuc2FjdGlvbiBkYXRhIHRvIGV4dHJhY3QgdG9rZW5JZFxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gZGF0YSAtIFRoZSBlbmNvZGVkIGJ1cm4gTkZUIG1ldGhvZCBjYWxsIGRhdGFcbiAgICogQHJldHVybnMge3N0cmluZ30gLSBUaGUgdG9rZW5JZCBhcyBhIHN0cmluZ1xuICAgKi9cbiAgZGVjb2RlQnVybk5mdERhdGEoZGF0YTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICB0cnkge1xuICAgICAgaWYgKCFkYXRhLnN0YXJ0c1dpdGgoQlVSTl9ORlRfTUVUSE9EX0lEKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgYnVybiBORlQgbWV0aG9kIGRhdGEnKTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgdG9rZW5JZEhleCA9IGRhdGEuc2xpY2UoQlVSTl9ORlRfTUVUSE9EX0lELmxlbmd0aCk7XG4gICAgICAvLyBDb252ZXJ0IGhleCB0byBkZWNpbWFsIChtYXRjaGluZyBvcmlnaW5hbCBwYXJzZUludCBsb2dpYylcbiAgICAgIHJldHVybiBwYXJzZUludCh0b2tlbklkSGV4LCAxNikudG9TdHJpbmcoKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBGYWlsZWQgdG8gZGVjb2RlIGJ1cm4gTkZUIGRhdGE6ICR7ZXJyb3IubWVzc2FnZX1gKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBuZXR3b3JrLWFwcHJvcHJpYXRlIGRlbGVnYXRpb24gY29udHJhY3QgYWRkcmVzc1xuICAgKiBAcGFyYW0ge0NvaW5Db25maWd9IGNvaW5Db25maWcgLSBUaGUgY29pbiBjb25maWd1cmF0aW9uIG9iamVjdFxuICAgKiBAcmV0dXJucyB7c3RyaW5nfSBUaGUgZGVsZWdhdGlvbiBjb250cmFjdCBhZGRyZXNzIGZvciB0aGUgbmV0d29ya1xuICAgKi9cbiAgZ2V0RGVmYXVsdERlbGVnYXRpb25BZGRyZXNzKGNvaW5Db25maWc6IFJlYWRvbmx5PENvaW5Db25maWc+KTogc3RyaW5nIHtcbiAgICBjb25zdCBpc1Rlc3RuZXQgPSBjb2luQ29uZmlnLm5ldHdvcmsudHlwZSA9PT0gJ3Rlc3RuZXQnO1xuICAgIHJldHVybiBpc1Rlc3RuZXQgPyBTVEFSR0FURV9ERUxFR0FUSU9OX0FERFJFU1NfVEVTVE5FVCA6IFNUQVJHQVRFX0RFTEVHQVRJT05fQUREUkVTUztcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIG5ldHdvcmstYXBwcm9wcmlhdGUgc3Rha2luZyBjb250cmFjdCBhZGRyZXNzXG4gICAqIEBwYXJhbSB7Q29pbkNvbmZpZ30gY29pbkNvbmZpZyAtIFRoZSBjb2luIGNvbmZpZ3VyYXRpb24gb2JqZWN0XG4gICAqIEByZXR1cm5zIHtzdHJpbmd9IFRoZSBzdGFraW5nIGNvbnRyYWN0IGFkZHJlc3MgZm9yIHRoZSBuZXR3b3JrXG4gICAqL1xuICBnZXREZWZhdWx0U3Rha2luZ0FkZHJlc3MoY29pbkNvbmZpZzogUmVhZG9ubHk8Q29pbkNvbmZpZz4pOiBzdHJpbmcge1xuICAgIGNvbnN0IGlzVGVzdG5ldCA9IGNvaW5Db25maWcubmV0d29yay50eXBlID09PSAndGVzdG5ldCc7XG4gICAgcmV0dXJuIGlzVGVzdG5ldCA/IFNUQVJHQVRFX05GVF9BRERSRVNTX1RFU1RORVQgOiBTVEFSR0FURV9ORlRfQUREUkVTUztcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVjayBpZiBhbiBhZGRyZXNzIGlzIGEgdmFsaWQgZGVsZWdhdGlvbiBjb250cmFjdCBhZGRyZXNzIGZvciBhbnkgbmV0d29ya1xuICAgKiBAcGFyYW0ge3N0cmluZ30gYWRkcmVzcyAtIFRoZSBhZGRyZXNzIHRvIGNoZWNrXG4gICAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIHRoZSBhZGRyZXNzIGlzIGEgZGVsZWdhdGlvbiBjb250cmFjdCBhZGRyZXNzXG4gICAqL1xuICBpc0RlbGVnYXRpb25Db250cmFjdEFkZHJlc3MoYWRkcmVzczogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgY29uc3QgbG93ZXJBZGRyZXNzID0gYWRkcmVzcy50b0xvd2VyQ2FzZSgpO1xuICAgIHJldHVybiAoXG4gICAgICBsb3dlckFkZHJlc3MgPT09IFNUQVJHQVRFX0RFTEVHQVRJT05fQUREUkVTUy50b0xvd2VyQ2FzZSgpIHx8XG4gICAgICBsb3dlckFkZHJlc3MgPT09IFNUQVJHQVRFX0RFTEVHQVRJT05fQUREUkVTU19URVNUTkVULnRvTG93ZXJDYXNlKClcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrIGlmIGFuIGFkZHJlc3MgaXMgYSB2YWxpZCBORlQgY29udHJhY3QgYWRkcmVzcyBmb3IgYW55IG5ldHdvcmtcbiAgICogQHBhcmFtIHtzdHJpbmd9IGFkZHJlc3MgLSBUaGUgYWRkcmVzcyB0byBjaGVja1xuICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiB0aGUgYWRkcmVzcyBpcyBhbiBORlQgY29udHJhY3QgYWRkcmVzc1xuICAgKi9cbiAgaXNOZnRDb250cmFjdEFkZHJlc3MoYWRkcmVzczogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgY29uc3QgbG93ZXJBZGRyZXNzID0gYWRkcmVzcy50b0xvd2VyQ2FzZSgpO1xuICAgIHJldHVybiAoXG4gICAgICBsb3dlckFkZHJlc3MgPT09IFNUQVJHQVRFX05GVF9BRERSRVNTLnRvTG93ZXJDYXNlKCkgfHwgbG93ZXJBZGRyZXNzID09PSBTVEFSR0FURV9ORlRfQUREUkVTU19URVNUTkVULnRvTG93ZXJDYXNlKClcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlIHRoYXQgYSBjb250cmFjdCBhZGRyZXNzIG1hdGNoZXMgdGhlIGV4cGVjdGVkIE5GVC9zdGFraW5nIGNvbnRyYWN0IGZvciB0aGUgbmV0d29ya1xuICAgKiBAcGFyYW0ge3N0cmluZ30gYWRkcmVzcyAtIFRoZSBjb250cmFjdCBhZGRyZXNzIHRvIHZhbGlkYXRlXG4gICAqIEBwYXJhbSB7Q29pbkNvbmZpZ30gY29pbkNvbmZpZyAtIFRoZSBjb2luIGNvbmZpZ3VyYXRpb24gb2JqZWN0XG4gICAqIEB0aHJvd3Mge0Vycm9yfSBJZiB0aGUgYWRkcmVzcyBkb2Vzbid0IG1hdGNoIHRoZSBleHBlY3RlZCBORlQgY29udHJhY3QgYWRkcmVzc1xuICAgKi9cbiAgdmFsaWRhdGVTdGFraW5nQ29udHJhY3RBZGRyZXNzKGFkZHJlc3M6IHN0cmluZywgY29pbkNvbmZpZzogUmVhZG9ubHk8Q29pbkNvbmZpZz4pOiB2b2lkIHtcbiAgICBjb25zdCBleHBlY3RlZEFkZHJlc3MgPSB0aGlzLmdldERlZmF1bHRTdGFraW5nQWRkcmVzcyhjb2luQ29uZmlnKTtcbiAgICBpZiAoYWRkcmVzcy50b0xvd2VyQ2FzZSgpICE9PSBleHBlY3RlZEFkZHJlc3MudG9Mb3dlckNhc2UoKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgSW52YWxpZCBzdGFraW5nIGNvbnRyYWN0IGFkZHJlc3MuIEV4cGVjdGVkICR7ZXhwZWN0ZWRBZGRyZXNzfSBmb3IgJHtjb2luQ29uZmlnLm5ldHdvcmsudHlwZX0sIGdvdCAke2FkZHJlc3N9YFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVmFsaWRhdGUgdGhhdCBhIGNvbnRyYWN0IGFkZHJlc3MgbWF0Y2hlcyB0aGUgZXhwZWN0ZWQgZGVsZWdhdGlvbiBjb250cmFjdCBmb3IgdGhlIG5ldHdvcmtcbiAgICogQHBhcmFtIHtzdHJpbmd9IGFkZHJlc3MgLSBUaGUgY29udHJhY3QgYWRkcmVzcyB0byB2YWxpZGF0ZVxuICAgKiBAcGFyYW0ge0NvaW5Db25maWd9IGNvaW5Db25maWcgLSBUaGUgY29pbiBjb25maWd1cmF0aW9uIG9iamVjdFxuICAgKiBAdGhyb3dzIHtFcnJvcn0gSWYgdGhlIGFkZHJlc3MgZG9lc24ndCBtYXRjaCB0aGUgZXhwZWN0ZWQgZGVsZWdhdGlvbiBjb250cmFjdCBhZGRyZXNzXG4gICAqL1xuICB2YWxpZGF0ZURlbGVnYXRpb25Db250cmFjdEFkZHJlc3MoYWRkcmVzczogc3RyaW5nLCBjb2luQ29uZmlnOiBSZWFkb25seTxDb2luQ29uZmlnPik6IHZvaWQge1xuICAgIGNvbnN0IGV4cGVjdGVkQWRkcmVzcyA9IHRoaXMuZ2V0RGVmYXVsdERlbGVnYXRpb25BZGRyZXNzKGNvaW5Db25maWcpO1xuICAgIGlmIChhZGRyZXNzLnRvTG93ZXJDYXNlKCkgIT09IGV4cGVjdGVkQWRkcmVzcy50b0xvd2VyQ2FzZSgpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGBJbnZhbGlkIGRlbGVnYXRpb24gY29udHJhY3QgYWRkcmVzcy4gRXhwZWN0ZWQgJHtleHBlY3RlZEFkZHJlc3N9IGZvciAke2NvaW5Db25maWcubmV0d29yay50eXBlfSwgZ290ICR7YWRkcmVzc31gXG4gICAgICApO1xuICAgIH1cbiAgfVxufVxuXG5jb25zdCB1dGlscyA9IG5ldyBVdGlscygpO1xuXG5leHBvcnQgZGVmYXVsdCB1dGlscztcbiJdfQ==
299
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLGdEQUE0RTtBQUM1RSxvRUFBeUM7QUFDekMscURBQW1EO0FBQ25ELG1EQUF3RjtBQUN4RiwyREFLa0M7QUFDbEMsMkNBZ0JxQjtBQUNyQix1Q0FBb0M7QUFHcEMsTUFBYSxLQUFLO0lBQ2hCLGNBQWMsQ0FBQyxPQUFlO1FBQzVCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLEVBQUUsOEJBQWtCLENBQUMsQ0FBQztJQUN0RCxDQUFDO0lBRUQsY0FBYyxDQUFDLElBQVk7UUFDekIsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSwrQkFBbUIsQ0FBQyxDQUFDO0lBQ3BELENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxHQUFXO1FBQzNCLElBQUksQ0FBQztZQUNILElBQUksaUJBQU8sQ0FBQyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO1lBQzFCLE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztRQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDWCxPQUFPLEtBQUssQ0FBQztRQUNmLENBQUM7SUFDSCxDQUFDO0lBRUQsZ0JBQWdCLENBQUMsR0FBVztRQUMxQixJQUFJLENBQUM7WUFDSCxJQUFJLGlCQUFPLENBQUMsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztZQUMxQixPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7UUFBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQ1gsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO0lBQ0gsQ0FBQztJQUVELGdCQUFnQixDQUFDLFNBQWlCO1FBQ2hDLE1BQU0sSUFBSSxLQUFLLENBQUMsd0JBQXdCLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBRUQsb0JBQW9CLENBQUMsSUFBWTtRQUMvQixPQUFPLElBQUksQ0FB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LEtBQUssR0FBRyxJQUFJLEtBQUssRUFBRSxDQUFDO0FBRTFCLGtCQUFlLEtBQUssQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEhleFVJbnQsIFRyYW5zYWN0aW9uLCBUcmFuc2FjdGlvbkNsYXVzZSB9IGZyb20gJ0B2ZWNoYWluL3Nkay1jb3JlJztcbmltcG9ydCBFdGhlcmV1bUFiaSBmcm9tICdldGhlcmV1bWpzLWFiaSc7XG5pbXBvcnQgeyBhZGRIZXhQcmVmaXgsIEJOIH0gZnJvbSAnZXRoZXJldW1qcy11dGlsJztcbmltcG9ydCB7IEJhc2VVdGlscywgVHJhbnNhY3Rpb25SZWNpcGllbnQsIFRyYW5zYWN0aW9uVHlwZSB9IGZyb20gJ0BiaXRnby1iZXRhL3Nkay1jb3JlJztcbmltcG9ydCB7XG4gIHY0Q3JlYXRlRm9yd2FyZGVyTWV0aG9kSWQsXG4gIGZsdXNoRm9yd2FyZGVyVG9rZW5zTWV0aG9kSWRWNCxcbiAgZ2V0UmF3RGVjb2RlZCxcbiAgZ2V0QnVmZmVyZWRCeXRlQ29kZSxcbn0gZnJvbSAnQGJpdGdvLWJldGEvYWJzdHJhY3QtZXRoJztcbmltcG9ydCB7XG4gIFRSQU5TRkVSX1RPS0VOX01FVEhPRF9JRCxcbiAgU1RBS0lOR19NRVRIT0RfSUQsXG4gIFNUQUtFX0NMQVVTRV9NRVRIT0RfSUQsXG4gIEVYSVRfREVMRUdBVElPTl9NRVRIT0RfSUQsXG4gIEJVUk5fTkZUX01FVEhPRF9JRCxcbiAgVkVUX0FERFJFU1NfTEVOR1RILFxuICBWRVRfQkxPQ0tfSURfTEVOR1RILFxuICBWRVRfVFJBTlNBQ1RJT05fSURfTEVOR1RILFxuICBUUkFOU0ZFUl9ORlRfTUVUSE9EX0lELFxuICBDTEFJTV9CQVNFX1JFV0FSRFNfTUVUSE9EX0lELFxuICBDTEFJTV9TVEFLSU5HX1JFV0FSRFNfTUVUSE9EX0lELFxuICBTVEFSR0FURV9ORlRfQUREUkVTUyxcbiAgU1RBUkdBVEVfTkZUX0FERFJFU1NfVEVTVE5FVCxcbiAgU1RBUkdBVEVfREVMRUdBVElPTl9BRERSRVNTLFxuICBTVEFSR0FURV9ERUxFR0FUSU9OX0FERFJFU1NfVEVTVE5FVCxcbn0gZnJvbSAnLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgS2V5UGFpciB9IGZyb20gJy4va2V5UGFpcic7XG5pbXBvcnQgeyBCYXNlQ29pbiBhcyBDb2luQ29uZmlnIH0gZnJvbSAnQGJpdGdvLWJldGEvc3RhdGljcyc7XG5cbmV4cG9ydCBjbGFzcyBVdGlscyBpbXBsZW1lbnRzIEJhc2VVdGlscyB7XG4gIGlzVmFsaWRBZGRyZXNzKGFkZHJlc3M6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmlzVmFsaWRIZXgoYWRkcmVzcywgVkVUX0FERFJFU1NfTEVOR1RIKTtcbiAgfVxuXG4gIGlzVmFsaWRCbG9ja0lkKGhhc2g6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmlzVmFsaWRIZXgoaGFzaCwgVkVUX0JMT0NLX0lEX0xFTkdUSCk7XG4gIH1cblxuICBpc1ZhbGlkUHJpdmF0ZUtleShrZXk6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHRyeSB7XG4gICAgICBuZXcgS2V5UGFpcih7IHBydjoga2V5IH0pO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIGlzVmFsaWRQdWJsaWNLZXkoa2V5OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICB0cnkge1xuICAgICAgbmV3IEtleVBhaXIoeyBwdWI6IGtleSB9KTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBpc1ZhbGlkU2lnbmF0dXJlKHNpZ25hdHVyZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdNZXRob2Qgbm90IGltcGxlbWVudGVkJyk7XG4gIH1cblxuICBpc1ZhbGlkVHJhbnNhY3Rpb25JZCh0eElkOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5pc1ZhbGlkSGV4KHR4SWQsIFZFVF9UUkFOU0FDVElPTl9JRF9MRU5HVEgpO1xuICB9XG5cbiAgaXNWYWxpZEhleCh2YWx1ZTogc3RyaW5nLCBsZW5ndGg6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHJlZ2V4ID0gbmV3IFJlZ0V4cChgXigweHwwWClbYS1mQS1GMC05XXske2xlbmd0aH19JGApO1xuICAgIHJldHVybiByZWdleC50ZXN0KHZhbHVlKTtcbiAgfVxuXG4gIGRlc2VyaWFsaXplVHJhbnNhY3Rpb24oc2VyaWFsaXplZFRyYW5zYWN0aW9uOiBzdHJpbmcpOiBUcmFuc2FjdGlvbiB7XG4gICAgY29uc3QgdHhCeXRlcyA9IEhleFVJbnQub2Yoc2VyaWFsaXplZFRyYW5zYWN0aW9uKS5ieXRlcztcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIFRyYW5zYWN0aW9uLmRlY29kZSh0eEJ5dGVzLCBmYWxzZSk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBpZiAoZXJyLm1lc3NhZ2U/LmluY2x1ZGVzKCdFeHBlY3RlZCA5IGl0ZW1zLCBidXQgZ290IDEwJykpIHtcbiAgICAgICAgLy8gTGlrZWx5IHNpZ25lZCwgc28gcmV0cnkgd2l0aCBpc1NpZ25lZCA9IHRydWVcbiAgICAgICAgcmV0dXJuIFRyYW5zYWN0aW9uLmRlY29kZSh0eEJ5dGVzLCB0cnVlKTtcbiAgICAgIH1cbiAgICAgIHRocm93IGVycjtcbiAgICB9XG4gIH1cblxuICBnZXRUcmFuc2FjdGlvblR5cGVGcm9tQ2xhdXNlKGNsYXVzZXM6IFRyYW5zYWN0aW9uQ2xhdXNlW10pOiBUcmFuc2FjdGlvblR5cGUge1xuICAgIGlmIChjbGF1c2VzWzBdLmRhdGEgPT09ICcweCcpIHtcbiAgICAgIHJldHVybiBUcmFuc2FjdGlvblR5cGUuU2VuZDtcbiAgICB9IGVsc2UgaWYgKGNsYXVzZXNbMF0uZGF0YS5zdGFydHNXaXRoKHY0Q3JlYXRlRm9yd2FyZGVyTWV0aG9kSWQpKSB7XG4gICAgICByZXR1cm4gVHJhbnNhY3Rpb25UeXBlLkFkZHJlc3NJbml0aWFsaXphdGlvbjtcbiAgICB9IGVsc2UgaWYgKGNsYXVzZXNbMF0uZGF0YS5zdGFydHNXaXRoKGZsdXNoRm9yd2FyZGVyVG9rZW5zTWV0aG9kSWRWNCkpIHtcbiAgICAgIHJldHVybiBUcmFuc2FjdGlvblR5cGUuRmx1c2hUb2tlbnM7XG4gICAgfSBlbHNlIGlmIChjbGF1c2VzWzBdLmRhdGEuc3RhcnRzV2l0aChUUkFOU0ZFUl9UT0tFTl9NRVRIT0RfSUQpKSB7XG4gICAgICByZXR1cm4gVHJhbnNhY3Rpb25UeXBlLlNlbmRUb2tlbjtcbiAgICB9IGVsc2UgaWYgKGNsYXVzZXNbMF0uZGF0YS5zdGFydHNXaXRoKFNUQUtJTkdfTUVUSE9EX0lEKSkge1xuICAgICAgcmV0dXJuIFRyYW5zYWN0aW9uVHlwZS5Db250cmFjdENhbGw7XG4gICAgfSBlbHNlIGlmIChjbGF1c2VzWzBdLmRhdGEuc3RhcnRzV2l0aChTVEFLRV9DTEFVU0VfTUVUSE9EX0lEKSkge1xuICAgICAgcmV0dXJuIFRyYW5zYWN0aW9uVHlwZS5TdGFraW5nQWN0aXZhdGU7XG4gICAgfSBlbHNlIGlmIChjbGF1c2VzWzBdLmRhdGEuc3RhcnRzV2l0aChFWElUX0RFTEVHQVRJT05fTUVUSE9EX0lEKSkge1xuICAgICAgcmV0dXJuIFRyYW5zYWN0aW9uVHlwZS5TdGFraW5nVW5sb2NrO1xuICAgIH0gZWxzZSBpZiAoY2xhdXNlc1swXS5kYXRhLnN0YXJ0c1dpdGgoQlVSTl9ORlRfTUVUSE9EX0lEKSkge1xuICAgICAgcmV0dXJuIFRyYW5zYWN0aW9uVHlwZS5TdGFraW5nV2l0aGRyYXc7XG4gICAgfSBlbHNlIGlmIChcbiAgICAgIGNsYXVzZXNbMF0uZGF0YS5zdGFydHNXaXRoKENMQUlNX0JBU0VfUkVXQVJEU19NRVRIT0RfSUQpIHx8XG4gICAgICBjbGF1c2VzWzBdLmRhdGEuc3RhcnRzV2l0aChDTEFJTV9TVEFLSU5HX1JFV0FSRFNfTUVUSE9EX0lEKVxuICAgICkge1xuICAgICAgcmV0dXJuIFRyYW5zYWN0aW9uVHlwZS5TdGFraW5nQ2xhaW07XG4gICAgfSBlbHNlIGlmIChjbGF1c2VzWzBdLmRhdGEuc3RhcnRzV2l0aChUUkFOU0ZFUl9ORlRfTUVUSE9EX0lEKSkge1xuICAgICAgcmV0dXJuIFRyYW5zYWN0aW9uVHlwZS5TZW5kTkZUO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gVHJhbnNhY3Rpb25UeXBlLlNlbmRUb2tlbjtcbiAgICB9XG4gIH1cblxuICBnZXRUcmFuc2ZlclRva2VuRGF0YSh0b0FkZHJlc3M6IHN0cmluZywgYW1vdW50V2VpOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGNvbnN0IG1ldGhvZE5hbWUgPSAndHJhbnNmZXInO1xuICAgIGNvbnN0IHR5cGVzID0gWydhZGRyZXNzJywgJ3VpbnQyNTYnXTtcbiAgICBjb25zdCBwYXJhbXMgPSBbdG9BZGRyZXNzLCBuZXcgQk4oYW1vdW50V2VpKV07XG5cbiAgICBjb25zdCBtZXRob2QgPSBFdGhlcmV1bUFiaS5tZXRob2RJRChtZXRob2ROYW1lLCB0eXBlcyk7XG4gICAgY29uc3QgYXJncyA9IEV0aGVyZXVtQWJpLnJhd0VuY29kZSh0eXBlcywgcGFyYW1zKTtcblxuICAgIHJldHVybiBhZGRIZXhQcmVmaXgoQnVmZmVyLmNvbmNhdChbbWV0aG9kLCBhcmdzXSkudG9TdHJpbmcoJ2hleCcpKTtcbiAgfVxuXG4gIGdldFRyYW5zZmVyTkZURGF0YShmcm9tOiBzdHJpbmcsIHRvOiBzdHJpbmcsIHRva2VuSWQ6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3QgbWV0aG9kTmFtZSA9ICd0cmFuc2ZlckZyb20nO1xuICAgIGNvbnN0IHR5cGVzID0gWydhZGRyZXNzJywgJ2FkZHJlc3MnLCAndWludDI1NiddO1xuICAgIGNvbnN0IHBhcmFtcyA9IFtmcm9tLCB0bywgbmV3IEJOKHRva2VuSWQpXTtcblxuICAgIGNvbnN0IG1ldGhvZCA9IEV0aGVyZXVtQWJpLm1ldGhvZElEKG1ldGhvZE5hbWUsIHR5cGVzKTtcbiAgICBjb25zdCBhcmdzID0gRXRoZXJldW1BYmkucmF3RW5jb2RlKHR5cGVzLCBwYXJhbXMpO1xuXG4gICAgcmV0dXJuIGFkZEhleFByZWZpeChCdWZmZXIuY29uY2F0KFttZXRob2QsIGFyZ3NdKS50b1N0cmluZygnaGV4JykpO1xuICB9XG5cbiAgLyoqXG4gICAqIERlY29kZXMgc3Rha2luZyB0cmFuc2FjdGlvbiBkYXRhIHRvIGV4dHJhY3QgbGV2ZWxJZCBhbmQgYXV0b3JlbmV3XG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBkYXRhIC0gVGhlIGVuY29kZWQgdHJhbnNhY3Rpb24gZGF0YVxuICAgKiBAcmV0dXJucyB7b2JqZWN0fSAtIE9iamVjdCBjb250YWluaW5nIGxldmVsSWQgYW5kIGF1dG9yZW5ld1xuICAgKi9cbiAgZGVjb2RlU3Rha2luZ0RhdGEoZGF0YTogc3RyaW5nKTogeyBsZXZlbElkOiBudW1iZXI7IGF1dG9yZW5ldzogYm9vbGVhbiB9IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgcGFyYW1ldGVycyA9IGRhdGEuc2xpY2UoMTApO1xuXG4gICAgICAvLyBEZWNvZGUgdXNpbmcgZXRoZXJldW1qcy1hYmkgZGlyZWN0bHlcbiAgICAgIGNvbnN0IGRlY29kZWQgPSBFdGhlcmV1bUFiaS5yYXdEZWNvZGUoWyd1aW50OCcsICdib29sJ10sIEJ1ZmZlci5mcm9tKHBhcmFtZXRlcnMsICdoZXgnKSk7XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIGxldmVsSWQ6IE51bWJlcihkZWNvZGVkWzBdKSxcbiAgICAgICAgYXV0b3JlbmV3OiBCb29sZWFuKGRlY29kZWRbMV0pLFxuICAgICAgfTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBGYWlsZWQgdG8gZGVjb2RlIHN0YWtpbmcgZGF0YTogJHtlcnJvci5tZXNzYWdlfWApO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBEZWNvZGVzIHN0YWtpbmcgdHJhbnNhY3Rpb24gZGF0YSB0byBleHRyYWN0IGxldmVsSWQgYW5kIGF1dG9yZW5ld1xuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gZGF0YSAtIFRoZSBlbmNvZGVkIHRyYW5zYWN0aW9uIGRhdGFcbiAgICogQHJldHVybnMge29iamVjdH0gLSBPYmplY3QgY29udGFpbmluZyBsZXZlbElkIGFuZCBhdXRvcmVuZXdcbiAgICovXG4gIGRlY29kZVN0YWtlQ2xhdXNlRGF0YShkYXRhOiBzdHJpbmcpOiB7IGxldmVsSWQ6IG51bWJlciB9IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgcGFyYW1ldGVycyA9IGRhdGEuc2xpY2UoMTApO1xuXG4gICAgICAvLyBEZWNvZGUgdXNpbmcgZXRoZXJldW1qcy1hYmkgZGlyZWN0bHlcbiAgICAgIGNvbnN0IGRlY29kZWQgPSBFdGhlcmV1bUFiaS5yYXdEZWNvZGUoWyd1aW50OCddLCBCdWZmZXIuZnJvbShwYXJhbWV0ZXJzLCAnaGV4JykpO1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBsZXZlbElkOiBOdW1iZXIoZGVjb2RlZFswXSksXG4gICAgICB9O1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEZhaWxlZCB0byBkZWNvZGUgc3Rha2luZyBkYXRhOiAke2Vycm9yLm1lc3NhZ2V9YCk7XG4gICAgfVxuICB9XG5cbiAgZGVjb2RlVHJhbnNmZXJUb2tlbkRhdGEoZGF0YTogc3RyaW5nKTogVHJhbnNhY3Rpb25SZWNpcGllbnQge1xuICAgIGNvbnN0IFthZGRyZXNzLCBhbW91bnRdID0gZ2V0UmF3RGVjb2RlZChcbiAgICAgIFsnYWRkcmVzcycsICd1aW50MjU2J10sXG4gICAgICBnZXRCdWZmZXJlZEJ5dGVDb2RlKFRSQU5TRkVSX1RPS0VOX01FVEhPRF9JRCwgZGF0YSlcbiAgICApO1xuICAgIGNvbnN0IHJlY2lwaWVudEFkZHJlc3MgPSBhZGRIZXhQcmVmaXgoYWRkcmVzcy50b1N0cmluZygpKS50b0xvd2VyQ2FzZSgpO1xuICAgIHJldHVybiB7XG4gICAgICBhZGRyZXNzOiByZWNpcGllbnRBZGRyZXNzLFxuICAgICAgYW1vdW50OiBhbW91bnQudG9TdHJpbmcoKSxcbiAgICB9O1xuICB9XG5cbiAgZGVjb2RlVHJhbnNmZXJORlREYXRhKGRhdGE6IHN0cmluZyk6IHtcbiAgICByZWNpcGllbnRzOiBUcmFuc2FjdGlvblJlY2lwaWVudFtdO1xuICAgIHNlbmRlcjogc3RyaW5nO1xuICAgIHRva2VuSWQ6IHN0cmluZztcbiAgfSB7XG4gICAgY29uc3QgW2Zyb20sIHRvLCB0b2tlbklkQk5dID0gZ2V0UmF3RGVjb2RlZChcbiAgICAgIFsnYWRkcmVzcycsICdhZGRyZXNzJywgJ3VpbnQyNTYnXSxcbiAgICAgIGdldEJ1ZmZlcmVkQnl0ZUNvZGUoVFJBTlNGRVJfTkZUX01FVEhPRF9JRCwgZGF0YSlcbiAgICApO1xuICAgIGNvbnN0IHJlY2lwaWVudEFkZHJlc3MgPSBhZGRIZXhQcmVmaXgodG8udG9TdHJpbmcoKSkudG9Mb3dlckNhc2UoKTtcbiAgICBjb25zdCByZWNpcGllbnQ6IFRyYW5zYWN0aW9uUmVjaXBpZW50ID0ge1xuICAgICAgYWRkcmVzczogcmVjaXBpZW50QWRkcmVzcyxcbiAgICAgIGFtb3VudDogJzEnLFxuICAgIH07XG4gICAgY29uc3Qgc2VuZGVyID0gYWRkSGV4UHJlZml4KGZyb20udG9TdHJpbmcoKSkudG9Mb3dlckNhc2UoKTtcbiAgICBjb25zdCB0b2tlbklkID0gdG9rZW5JZEJOLnRvU3RyaW5nKCk7XG4gICAgcmV0dXJuIHtcbiAgICAgIHJlY2lwaWVudHM6IFtyZWNpcGllbnRdLFxuICAgICAgc2VuZGVyLFxuICAgICAgdG9rZW5JZCxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIERlY29kZXMgY2xhaW0gcmV3YXJkcyB0cmFuc2FjdGlvbiBkYXRhIHRvIGV4dHJhY3QgdG9rZW5JZFxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gZGF0YSAtIFRoZSBlbmNvZGVkIGNsYWltIHJld2FyZHMgbWV0aG9kIGNhbGwgZGF0YVxuICAgKiBAcmV0dXJucyB7c3RyaW5nfSAtIFRoZSB0b2tlbklkIGFzIGEgc3RyaW5nXG4gICAqL1xuICBkZWNvZGVDbGFpbVJld2FyZHNEYXRhKGRhdGE6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgdHJ5IHtcbiAgICAgIC8vIFJlbW92ZSBtZXRob2QgSUQgKGZpcnN0IDEwIGNoYXJhY3RlcnM6ICcweCcgKyA0LWJ5dGUgbWV0aG9kIElEKVxuICAgICAgY29uc3QgbWV0aG9kRGF0YSA9IGRhdGEuc2xpY2UoMTApO1xuXG4gICAgICAvLyBFeHRyYWN0IHRva2VuSWQgZnJvbSBmaXJzdCAzMi1ieXRlIHNsb3RcbiAgICAgIC8vIFRoZSB0b2tlbklkIGlzIGEgdWludDI1Niwgc28gd2UgdGFrZSB0aGUgZnVsbCA2NCBoZXggY2hhcmFjdGVyc1xuICAgICAgY29uc3QgdG9rZW5JZEhleCA9IG1ldGhvZERhdGEuc2xpY2UoMCwgNjQpO1xuXG4gICAgICAvLyBDb252ZXJ0IGhleCB0byBkZWNpbWFsIHN0cmluZ1xuICAgICAgcmV0dXJuIEJpZ0ludCgnMHgnICsgdG9rZW5JZEhleCkudG9TdHJpbmcoKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBGYWlsZWQgdG8gZGVjb2RlIGNsYWltIHJld2FyZHMgZGF0YTogJHtlcnJvci5tZXNzYWdlfWApO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBEZWNvZGVzIGV4aXQgZGVsZWdhdGlvbiB0cmFuc2FjdGlvbiBkYXRhIHRvIGV4dHJhY3QgdG9rZW5JZFxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gZGF0YSAtIFRoZSBlbmNvZGVkIGV4aXQgZGVsZWdhdGlvbiBtZXRob2QgY2FsbCBkYXRhXG4gICAqIEByZXR1cm5zIHtzdHJpbmd9IC0gVGhlIHRva2VuSWQgYXMgYSBzdHJpbmdcbiAgICovXG4gIGRlY29kZUV4aXREZWxlZ2F0aW9uRGF0YShkYXRhOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHRyeSB7XG4gICAgICBpZiAoIWRhdGEuc3RhcnRzV2l0aChFWElUX0RFTEVHQVRJT05fTUVUSE9EX0lEKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgZXhpdCBkZWxlZ2F0aW9uIG1ldGhvZCBkYXRhJyk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHRva2VuSWRIZXggPSBkYXRhLnNsaWNlKEVYSVRfREVMRUdBVElPTl9NRVRIT0RfSUQubGVuZ3RoKTtcbiAgICAgIC8vIENvbnZlcnQgaGV4IHRvIGRlY2ltYWwgKG1hdGNoaW5nIG9yaWdpbmFsIHBhcnNlSW50IGxvZ2ljKVxuICAgICAgcmV0dXJuIHBhcnNlSW50KHRva2VuSWRIZXgsIDE2KS50b1N0cmluZygpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEZhaWxlZCB0byBkZWNvZGUgZXhpdCBkZWxlZ2F0aW9uIGRhdGE6ICR7ZXJyb3IubWVzc2FnZX1gKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogRGVjb2RlcyBidXJuIE5GVCB0cmFuc2FjdGlvbiBkYXRhIHRvIGV4dHJhY3QgdG9rZW5JZFxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gZGF0YSAtIFRoZSBlbmNvZGVkIGJ1cm4gTkZUIG1ldGhvZCBjYWxsIGRhdGFcbiAgICogQHJldHVybnMge3N0cmluZ30gLSBUaGUgdG9rZW5JZCBhcyBhIHN0cmluZ1xuICAgKi9cbiAgZGVjb2RlQnVybk5mdERhdGEoZGF0YTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICB0cnkge1xuICAgICAgaWYgKCFkYXRhLnN0YXJ0c1dpdGgoQlVSTl9ORlRfTUVUSE9EX0lEKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgYnVybiBORlQgbWV0aG9kIGRhdGEnKTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgdG9rZW5JZEhleCA9IGRhdGEuc2xpY2UoQlVSTl9ORlRfTUVUSE9EX0lELmxlbmd0aCk7XG4gICAgICAvLyBDb252ZXJ0IGhleCB0byBkZWNpbWFsIChtYXRjaGluZyBvcmlnaW5hbCBwYXJzZUludCBsb2dpYylcbiAgICAgIHJldHVybiBwYXJzZUludCh0b2tlbklkSGV4LCAxNikudG9TdHJpbmcoKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBGYWlsZWQgdG8gZGVjb2RlIGJ1cm4gTkZUIGRhdGE6ICR7ZXJyb3IubWVzc2FnZX1gKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBuZXR3b3JrLWFwcHJvcHJpYXRlIGRlbGVnYXRpb24gY29udHJhY3QgYWRkcmVzc1xuICAgKiBAcGFyYW0ge0NvaW5Db25maWd9IGNvaW5Db25maWcgLSBUaGUgY29pbiBjb25maWd1cmF0aW9uIG9iamVjdFxuICAgKiBAcmV0dXJucyB7c3RyaW5nfSBUaGUgZGVsZWdhdGlvbiBjb250cmFjdCBhZGRyZXNzIGZvciB0aGUgbmV0d29ya1xuICAgKi9cbiAgZ2V0RGVmYXVsdERlbGVnYXRpb25BZGRyZXNzKGNvaW5Db25maWc6IFJlYWRvbmx5PENvaW5Db25maWc+KTogc3RyaW5nIHtcbiAgICBjb25zdCBpc1Rlc3RuZXQgPSBjb2luQ29uZmlnLm5ldHdvcmsudHlwZSA9PT0gJ3Rlc3RuZXQnO1xuICAgIHJldHVybiBpc1Rlc3RuZXQgPyBTVEFSR0FURV9ERUxFR0FUSU9OX0FERFJFU1NfVEVTVE5FVCA6IFNUQVJHQVRFX0RFTEVHQVRJT05fQUREUkVTUztcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIG5ldHdvcmstYXBwcm9wcmlhdGUgc3Rha2luZyBjb250cmFjdCBhZGRyZXNzXG4gICAqIEBwYXJhbSB7Q29pbkNvbmZpZ30gY29pbkNvbmZpZyAtIFRoZSBjb2luIGNvbmZpZ3VyYXRpb24gb2JqZWN0XG4gICAqIEByZXR1cm5zIHtzdHJpbmd9IFRoZSBzdGFraW5nIGNvbnRyYWN0IGFkZHJlc3MgZm9yIHRoZSBuZXR3b3JrXG4gICAqL1xuICBnZXREZWZhdWx0U3Rha2luZ0FkZHJlc3MoY29pbkNvbmZpZzogUmVhZG9ubHk8Q29pbkNvbmZpZz4pOiBzdHJpbmcge1xuICAgIGNvbnN0IGlzVGVzdG5ldCA9IGNvaW5Db25maWcubmV0d29yay50eXBlID09PSAndGVzdG5ldCc7XG4gICAgcmV0dXJuIGlzVGVzdG5ldCA/IFNUQVJHQVRFX05GVF9BRERSRVNTX1RFU1RORVQgOiBTVEFSR0FURV9ORlRfQUREUkVTUztcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVjayBpZiBhbiBhZGRyZXNzIGlzIGEgdmFsaWQgZGVsZWdhdGlvbiBjb250cmFjdCBhZGRyZXNzIGZvciBhbnkgbmV0d29ya1xuICAgKiBAcGFyYW0ge3N0cmluZ30gYWRkcmVzcyAtIFRoZSBhZGRyZXNzIHRvIGNoZWNrXG4gICAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIHRoZSBhZGRyZXNzIGlzIGEgZGVsZWdhdGlvbiBjb250cmFjdCBhZGRyZXNzXG4gICAqL1xuICBpc0RlbGVnYXRpb25Db250cmFjdEFkZHJlc3MoYWRkcmVzczogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgY29uc3QgbG93ZXJBZGRyZXNzID0gYWRkcmVzcy50b0xvd2VyQ2FzZSgpO1xuICAgIHJldHVybiAoXG4gICAgICBsb3dlckFkZHJlc3MgPT09IFNUQVJHQVRFX0RFTEVHQVRJT05fQUREUkVTUy50b0xvd2VyQ2FzZSgpIHx8XG4gICAgICBsb3dlckFkZHJlc3MgPT09IFNUQVJHQVRFX0RFTEVHQVRJT05fQUREUkVTU19URVNUTkVULnRvTG93ZXJDYXNlKClcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrIGlmIGFuIGFkZHJlc3MgaXMgYSB2YWxpZCBORlQgY29udHJhY3QgYWRkcmVzcyBmb3IgYW55IG5ldHdvcmtcbiAgICogQHBhcmFtIHtzdHJpbmd9IGFkZHJlc3MgLSBUaGUgYWRkcmVzcyB0byBjaGVja1xuICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiB0aGUgYWRkcmVzcyBpcyBhbiBORlQgY29udHJhY3QgYWRkcmVzc1xuICAgKi9cbiAgaXNOZnRDb250cmFjdEFkZHJlc3MoYWRkcmVzczogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgY29uc3QgbG93ZXJBZGRyZXNzID0gYWRkcmVzcy50b0xvd2VyQ2FzZSgpO1xuICAgIHJldHVybiAoXG4gICAgICBsb3dlckFkZHJlc3MgPT09IFNUQVJHQVRFX05GVF9BRERSRVNTLnRvTG93ZXJDYXNlKCkgfHwgbG93ZXJBZGRyZXNzID09PSBTVEFSR0FURV9ORlRfQUREUkVTU19URVNUTkVULnRvTG93ZXJDYXNlKClcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlIHRoYXQgYSBjb250cmFjdCBhZGRyZXNzIG1hdGNoZXMgdGhlIGV4cGVjdGVkIE5GVC9zdGFraW5nIGNvbnRyYWN0IGZvciB0aGUgbmV0d29ya1xuICAgKiBAcGFyYW0ge3N0cmluZ30gYWRkcmVzcyAtIFRoZSBjb250cmFjdCBhZGRyZXNzIHRvIHZhbGlkYXRlXG4gICAqIEBwYXJhbSB7Q29pbkNvbmZpZ30gY29pbkNvbmZpZyAtIFRoZSBjb2luIGNvbmZpZ3VyYXRpb24gb2JqZWN0XG4gICAqIEB0aHJvd3Mge0Vycm9yfSBJZiB0aGUgYWRkcmVzcyBkb2Vzbid0IG1hdGNoIHRoZSBleHBlY3RlZCBORlQgY29udHJhY3QgYWRkcmVzc1xuICAgKi9cbiAgdmFsaWRhdGVTdGFraW5nQ29udHJhY3RBZGRyZXNzKGFkZHJlc3M6IHN0cmluZywgY29pbkNvbmZpZzogUmVhZG9ubHk8Q29pbkNvbmZpZz4pOiB2b2lkIHtcbiAgICBjb25zdCBleHBlY3RlZEFkZHJlc3MgPSB0aGlzLmdldERlZmF1bHRTdGFraW5nQWRkcmVzcyhjb2luQ29uZmlnKTtcbiAgICBpZiAoYWRkcmVzcy50b0xvd2VyQ2FzZSgpICE9PSBleHBlY3RlZEFkZHJlc3MudG9Mb3dlckNhc2UoKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgSW52YWxpZCBzdGFraW5nIGNvbnRyYWN0IGFkZHJlc3MuIEV4cGVjdGVkICR7ZXhwZWN0ZWRBZGRyZXNzfSBmb3IgJHtjb2luQ29uZmlnLm5ldHdvcmsudHlwZX0sIGdvdCAke2FkZHJlc3N9YFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVmFsaWRhdGUgdGhhdCBhIGNvbnRyYWN0IGFkZHJlc3MgbWF0Y2hlcyB0aGUgZXhwZWN0ZWQgZGVsZWdhdGlvbiBjb250cmFjdCBmb3IgdGhlIG5ldHdvcmtcbiAgICogQHBhcmFtIHtzdHJpbmd9IGFkZHJlc3MgLSBUaGUgY29udHJhY3QgYWRkcmVzcyB0byB2YWxpZGF0ZVxuICAgKiBAcGFyYW0ge0NvaW5Db25maWd9IGNvaW5Db25maWcgLSBUaGUgY29pbiBjb25maWd1cmF0aW9uIG9iamVjdFxuICAgKiBAdGhyb3dzIHtFcnJvcn0gSWYgdGhlIGFkZHJlc3MgZG9lc24ndCBtYXRjaCB0aGUgZXhwZWN0ZWQgZGVsZWdhdGlvbiBjb250cmFjdCBhZGRyZXNzXG4gICAqL1xuICB2YWxpZGF0ZURlbGVnYXRpb25Db250cmFjdEFkZHJlc3MoYWRkcmVzczogc3RyaW5nLCBjb2luQ29uZmlnOiBSZWFkb25seTxDb2luQ29uZmlnPik6IHZvaWQge1xuICAgIGNvbnN0IGV4cGVjdGVkQWRkcmVzcyA9IHRoaXMuZ2V0RGVmYXVsdERlbGVnYXRpb25BZGRyZXNzKGNvaW5Db25maWcpO1xuICAgIGlmIChhZGRyZXNzLnRvTG93ZXJDYXNlKCkgIT09IGV4cGVjdGVkQWRkcmVzcy50b0xvd2VyQ2FzZSgpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGBJbnZhbGlkIGRlbGVnYXRpb24gY29udHJhY3QgYWRkcmVzcy4gRXhwZWN0ZWQgJHtleHBlY3RlZEFkZHJlc3N9IGZvciAke2NvaW5Db25maWcubmV0d29yay50eXBlfSwgZ290ICR7YWRkcmVzc31gXG4gICAgICApO1xuICAgIH1cbiAgfVxufVxuXG5jb25zdCB1dGlscyA9IG5ldyBVdGlscygpO1xuXG5leHBvcnQgZGVmYXVsdCB1dGlscztcbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=stakeClauseTransactionBuilder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stakeClauseTransactionBuilder.d.ts","sourceRoot":"","sources":["../../../test/transactionBuilder/stakeClauseTransactionBuilder.ts"],"names":[],"mappings":""}