@bitgo-beta/sdk-coin-flrp 1.0.1-beta.28 → 1.0.1-beta.281

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.
Files changed (112) hide show
  1. package/dist/src/flrp.d.ts +6 -75
  2. package/dist/src/flrp.d.ts.map +1 -1
  3. package/dist/src/flrp.js +13 -298
  4. package/dist/src/index.d.ts +0 -1
  5. package/dist/src/index.d.ts.map +1 -1
  6. package/dist/src/index.js +1 -2
  7. package/dist/src/lib/ExportInCTxBuilder.d.ts +50 -0
  8. package/dist/src/lib/ExportInCTxBuilder.d.ts.map +1 -0
  9. package/dist/src/lib/ExportInCTxBuilder.js +187 -0
  10. package/dist/src/lib/ExportInPTxBuilder.d.ts +47 -0
  11. package/dist/src/lib/ExportInPTxBuilder.d.ts.map +1 -0
  12. package/dist/src/lib/ExportInPTxBuilder.js +330 -0
  13. package/dist/src/lib/ImportInCTxBuilder.d.ts +47 -0
  14. package/dist/src/lib/ImportInCTxBuilder.d.ts.map +1 -0
  15. package/dist/src/lib/ImportInCTxBuilder.js +213 -0
  16. package/dist/src/lib/ImportInPTxBuilder.d.ts +33 -0
  17. package/dist/src/lib/ImportInPTxBuilder.d.ts.map +1 -0
  18. package/dist/src/lib/ImportInPTxBuilder.js +197 -0
  19. package/dist/src/lib/atomicInCTransactionBuilder.d.ts +18 -16
  20. package/dist/src/lib/atomicInCTransactionBuilder.d.ts.map +1 -1
  21. package/dist/src/lib/atomicInCTransactionBuilder.js +38 -36
  22. package/dist/src/lib/atomicTransactionBuilder.d.ts +42 -76
  23. package/dist/src/lib/atomicTransactionBuilder.d.ts.map +1 -1
  24. package/dist/src/lib/atomicTransactionBuilder.js +141 -218
  25. package/dist/src/lib/iface.d.ts +50 -51
  26. package/dist/src/lib/iface.d.ts.map +1 -1
  27. package/dist/src/lib/iface.js +22 -10
  28. package/dist/src/lib/index.d.ts +4 -0
  29. package/dist/src/lib/index.d.ts.map +1 -1
  30. package/dist/src/lib/index.js +10 -2
  31. package/dist/src/lib/keyPair.d.ts +5 -5
  32. package/dist/src/lib/keyPair.d.ts.map +1 -1
  33. package/dist/src/lib/keyPair.js +17 -9
  34. package/dist/src/lib/permissionlessValidatorTxBuilder.d.ts +46 -0
  35. package/dist/src/lib/permissionlessValidatorTxBuilder.d.ts.map +1 -0
  36. package/dist/src/lib/permissionlessValidatorTxBuilder.js +134 -0
  37. package/dist/src/lib/transaction.d.ts +8 -73
  38. package/dist/src/lib/transaction.d.ts.map +1 -1
  39. package/dist/src/lib/transaction.js +139 -207
  40. package/dist/src/lib/transactionBuilder.d.ts +107 -0
  41. package/dist/src/lib/transactionBuilder.d.ts.map +1 -0
  42. package/dist/src/lib/transactionBuilder.js +210 -0
  43. package/dist/src/lib/transactionBuilderFactory.d.ts +27 -30
  44. package/dist/src/lib/transactionBuilderFactory.d.ts.map +1 -1
  45. package/dist/src/lib/transactionBuilderFactory.js +84 -75
  46. package/dist/src/lib/utils.d.ts +98 -147
  47. package/dist/src/lib/utils.d.ts.map +1 -1
  48. package/dist/src/lib/utils.js +346 -319
  49. package/dist/test/resources/account.d.ts +49 -0
  50. package/dist/test/resources/account.d.ts.map +1 -0
  51. package/dist/test/resources/account.js +52 -0
  52. package/dist/test/resources/transactionData/exportInC.d.ts +20 -0
  53. package/dist/test/resources/transactionData/exportInC.d.ts.map +1 -0
  54. package/dist/test/resources/transactionData/exportInC.js +34 -0
  55. package/dist/test/resources/transactionData/exportInP.d.ts +69 -0
  56. package/dist/test/resources/transactionData/exportInP.d.ts.map +1 -0
  57. package/dist/test/resources/transactionData/exportInP.js +140 -0
  58. package/dist/test/resources/transactionData/importInP.d.ts +35 -0
  59. package/dist/test/resources/transactionData/importInP.d.ts.map +1 -0
  60. package/dist/test/resources/transactionData/importInP.js +58 -0
  61. package/dist/test/unit/lib/exportInCTxBuilder.d.ts +2 -0
  62. package/dist/test/unit/lib/exportInCTxBuilder.d.ts.map +1 -0
  63. package/dist/test/unit/lib/exportInCTxBuilder.js +166 -0
  64. package/dist/test/unit/lib/exportInPTxBuilder.d.ts +2 -0
  65. package/dist/test/unit/lib/exportInPTxBuilder.d.ts.map +1 -0
  66. package/dist/test/unit/lib/exportInPTxBuilder.js +121 -0
  67. package/dist/test/unit/lib/importInPTxBuilder.d.ts +2 -0
  68. package/dist/test/unit/lib/importInPTxBuilder.d.ts.map +1 -0
  69. package/dist/test/unit/lib/importInPTxBuilder.js +73 -0
  70. package/dist/test/unit/lib/keyPair.d.ts +2 -0
  71. package/dist/test/unit/lib/keyPair.d.ts.map +1 -0
  72. package/dist/test/unit/lib/keyPair.js +158 -0
  73. package/dist/test/unit/lib/signFlowTestSuit.d.ts +20 -0
  74. package/dist/test/unit/lib/signFlowTestSuit.d.ts.map +1 -0
  75. package/dist/test/unit/lib/signFlowTestSuit.js +93 -0
  76. package/dist/test/unit/lib/utils.js +29 -223
  77. package/dist/tsconfig.tsbuildinfo +1 -1
  78. package/package.json +16 -13
  79. package/.eslintignore +0 -5
  80. package/.eslintrc.json +0 -7
  81. package/.mocharc.yml +0 -8
  82. package/CHANGELOG.md +0 -0
  83. package/dist/src/iface.d.ts +0 -25
  84. package/dist/src/iface.d.ts.map +0 -1
  85. package/dist/src/iface.js +0 -3
  86. package/dist/src/lib/constants.d.ts +0 -11
  87. package/dist/src/lib/constants.d.ts.map +0 -1
  88. package/dist/src/lib/constants.js +0 -17
  89. package/dist/src/lib/errors.d.ts +0 -8
  90. package/dist/src/lib/errors.d.ts.map +0 -1
  91. package/dist/src/lib/errors.js +0 -19
  92. package/dist/src/lib/exportInCTxBuilder.d.ts +0 -77
  93. package/dist/src/lib/exportInCTxBuilder.d.ts.map +0 -1
  94. package/dist/src/lib/exportInCTxBuilder.js +0 -170
  95. package/dist/src/lib/exportInPTxBuilder.d.ts +0 -30
  96. package/dist/src/lib/exportInPTxBuilder.d.ts.map +0 -1
  97. package/dist/src/lib/exportInPTxBuilder.js +0 -56
  98. package/dist/test/unit/flrp.d.ts +0 -2
  99. package/dist/test/unit/flrp.d.ts.map +0 -1
  100. package/dist/test/unit/flrp.js +0 -118
  101. package/dist/test/unit/lib/atomicTransactionBuilder.d.ts +0 -2
  102. package/dist/test/unit/lib/atomicTransactionBuilder.d.ts.map +0 -1
  103. package/dist/test/unit/lib/atomicTransactionBuilder.js +0 -222
  104. package/dist/test/unit/lib/exportTxBuilder.d.ts +0 -2
  105. package/dist/test/unit/lib/exportTxBuilder.d.ts.map +0 -1
  106. package/dist/test/unit/lib/exportTxBuilder.js +0 -45
  107. package/dist/test/unit/lib/transaction.d.ts +0 -2
  108. package/dist/test/unit/lib/transaction.d.ts.map +0 -1
  109. package/dist/test/unit/lib/transaction.js +0 -460
  110. package/dist/test/unit/smoke.d.ts +0 -2
  111. package/dist/test/unit/smoke.d.ts.map +0 -1
  112. package/dist/test/unit/smoke.js +0 -23
@@ -0,0 +1,107 @@
1
+ import { BaseTransactionBuilder, BaseKey, BaseAddress } from '@bitgo-beta/sdk-core';
2
+ import { BaseCoin as CoinConfig } from '@bitgo-beta/statics';
3
+ import { DecodedUtxoObj, Tx } from './iface';
4
+ import { KeyPair } from './keyPair';
5
+ import { Transaction } from './transaction';
6
+ import BigNumber from 'bignumber.js';
7
+ export declare abstract class TransactionBuilder extends BaseTransactionBuilder {
8
+ protected _transaction: Transaction;
9
+ protected recoverSigner: boolean;
10
+ _signer: KeyPair[];
11
+ constructor(_coinConfig: Readonly<CoinConfig>);
12
+ /**
13
+ * Initialize the transaction builder fields using the decoded transaction data
14
+ *
15
+ * @param {Transaction} tx the transaction data
16
+ * @returns itself
17
+ */
18
+ initBuilder(tx: Tx): this;
19
+ /**
20
+ * Validates the threshold for multi-signature transactions
21
+ * @param threshold - Number of required signatures
22
+ */
23
+ validateThreshold(threshold: number): void;
24
+ /**
25
+ * Validates a single UTXO object
26
+ * @param value - UTXO to validate
27
+ */
28
+ validateUtxo(value: DecodedUtxoObj): void;
29
+ /**
30
+ * Validates an array of UTXOs
31
+ * @param values - Array of UTXOs to validate
32
+ */
33
+ validateUtxos(values: DecodedUtxoObj[]): void;
34
+ /**
35
+ * Validates the locktime value
36
+ * @param locktime - Timestamp after which the output can be spent
37
+ */
38
+ validateLocktime(locktime: bigint): void;
39
+ /**
40
+ * Sets the threshold for multi-signature transactions
41
+ * @param value - Number of required signatures
42
+ */
43
+ threshold(value: number): this;
44
+ /**
45
+ * Sets the locktime for the transaction
46
+ * @param value - Timestamp after which the output can be spent
47
+ */
48
+ locktime(value: string | number): this;
49
+ /**
50
+ * Enables recovery mode for the transaction
51
+ * @param recoverSigner - Whether to use recovery signing
52
+ */
53
+ recoverMode(recoverSigner?: boolean): this;
54
+ /**
55
+ * Sets the sender's public key(s)
56
+ * @param senderPubKey - Public key or array of public keys
57
+ */
58
+ fromPubKey(senderPubKey: string | string[]): this;
59
+ /**
60
+ * Sets the UTXOs for the transaction
61
+ * @param value - Array of UTXOs to use
62
+ */
63
+ utxos(value: DecodedUtxoObj[]): this;
64
+ /** @inheritdoc */
65
+ protected fromImplementation(rawTransaction: string): Transaction;
66
+ /**
67
+ * Abstract method to be implemented by specific transaction builders
68
+ * Builds the actual transaction based on the builder's configuration
69
+ */
70
+ protected abstract buildImplementation(): Promise<Transaction>;
71
+ /**
72
+ * Check the buffer has 32 byte long.
73
+ * @param chainID
74
+ */
75
+ validateChainId(chainID: Buffer): void;
76
+ /** @inheritdoc */
77
+ protected get transaction(): Transaction;
78
+ protected set transaction(transaction: Transaction);
79
+ /**
80
+ * Check that fee is greater than 0.
81
+ * @param {bigint} fee
82
+ */
83
+ validateFee(fee: bigint): void;
84
+ /** @inheritdoc */
85
+ validateKey({ key }: BaseKey): void;
86
+ /** @inheritdoc */
87
+ validateTransaction(transaction?: Transaction): void;
88
+ /** @inheritdoc */
89
+ validateValue(value: BigNumber): void;
90
+ /** @inheritdoc */
91
+ validateAddress(address: BaseAddress, addressFormat?: string): void;
92
+ /**
93
+ * Check the raw transaction has a valid format in the blockchain context, throw otherwise.
94
+ *
95
+ * @param rawTransaction Transaction in any format
96
+ */
97
+ validateRawTransaction(rawTransaction: string): void;
98
+ /** @inheritdoc */
99
+ protected signImplementation({ key }: BaseKey): Transaction;
100
+ hasSigner(): boolean;
101
+ /**
102
+ * Check the amount is positive.
103
+ * @param amount
104
+ */
105
+ validateAmount(amount: bigint): void;
106
+ }
107
+ //# sourceMappingURL=transactionBuilder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transactionBuilder.d.ts","sourceRoot":"","sources":["../../../src/lib/transactionBuilder.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,sBAAsB,EAAyB,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAC3G,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,EAAE,EAAE,MAAM,SAAS,CAAC;AAC7C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,OAAO,SAAS,MAAM,cAAc,CAAC;AAErC,8BAAsB,kBAAmB,SAAQ,sBAAsB;IACrE,SAAS,CAAC,YAAY,EAAE,WAAW,CAAC;IACpC,SAAS,CAAC,aAAa,UAAS;IACzB,OAAO,EAAE,OAAO,EAAE,CAAM;gBAEnB,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAK7C;;;;;OAKG;IACH,WAAW,CAAC,EAAE,EAAE,EAAE,GAAG,IAAI;IAgBzB;;;OAGG;IACH,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAM1C;;;OAGG;IACH,YAAY,CAAC,KAAK,EAAE,cAAc,GAAG,IAAI;IASzC;;;OAGG;IACH,aAAa,CAAC,MAAM,EAAE,cAAc,EAAE,GAAG,IAAI;IAO7C;;;OAGG;IACH,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAOxC;;;OAGG;IACH,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAM9B;;;OAGG;IACH,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAMtC;;;OAGG;IACH,WAAW,CAAC,aAAa,UAAO,GAAG,IAAI;IAKvC;;;OAGG;IACH,UAAU,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI;IAMjD;;;OAGG;IACH,KAAK,CAAC,KAAK,EAAE,cAAc,EAAE,GAAG,IAAI;IAMpC,kBAAkB;IAClB,SAAS,CAAC,kBAAkB,CAAC,cAAc,EAAE,MAAM,GAAG,WAAW;IAcjE;;;OAGG;IACH,SAAS,CAAC,QAAQ,CAAC,mBAAmB,IAAI,OAAO,CAAC,WAAW,CAAC;IAE9D;;;OAGG;IACH,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAMtC,kBAAkB;IAClB,SAAS,KAAK,WAAW,IAAI,WAAW,CAEvC;IAED,SAAS,KAAK,WAAW,CAAC,WAAW,EAAE,WAAW,EAEjD;IAED;;;OAGG;IACH,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAM9B,kBAAkB;IAClB,WAAW,CAAC,EAAE,GAAG,EAAE,EAAE,OAAO,GAAG,IAAI;IAQnC,kBAAkB;IAClB,mBAAmB,CAAC,WAAW,CAAC,EAAE,WAAW,GAAG,IAAI;IAIpD,kBAAkB;IAClB,aAAa,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI;IAMrC,kBAAkB;IAClB,eAAe,CAAC,OAAO,EAAE,WAAW,EAAE,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI;IAMnE;;;;OAIG;IACH,sBAAsB,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI;IAIpD,kBAAkB;IAClB,SAAS,CAAC,kBAAkB,CAAC,EAAE,GAAG,EAAE,EAAE,OAAO,GAAG,WAAW;IAK3D,SAAS,IAAI,OAAO;IAIpB;;;OAGG;IACH,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;CAKrC"}
@@ -0,0 +1,210 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.TransactionBuilder = void 0;
7
+ const flarejs_1 = require("@flarenetwork/flarejs");
8
+ const sdk_core_1 = require("@bitgo-beta/sdk-core");
9
+ const keyPair_1 = require("./keyPair");
10
+ const transaction_1 = require("./transaction");
11
+ const utils_1 = __importDefault(require("./utils"));
12
+ class TransactionBuilder extends sdk_core_1.BaseTransactionBuilder {
13
+ constructor(_coinConfig) {
14
+ super(_coinConfig);
15
+ this.recoverSigner = false;
16
+ this._signer = [];
17
+ this._transaction = new transaction_1.Transaction(_coinConfig);
18
+ }
19
+ /**
20
+ * Initialize the transaction builder fields using the decoded transaction data
21
+ *
22
+ * @param {Transaction} tx the transaction data
23
+ * @returns itself
24
+ */
25
+ initBuilder(tx) {
26
+ const baseTx = tx.tx.baseTx;
27
+ // Validate network and blockchain IDs match
28
+ if (baseTx.NetworkId.value() !== this._transaction._networkID ||
29
+ baseTx.BlockchainId.value() !== this._transaction._blockchainID) {
30
+ throw new Error('Network or blockchain ID mismatch');
31
+ }
32
+ this._transaction.setTransaction(tx);
33
+ return this;
34
+ }
35
+ // region Validators
36
+ /**
37
+ * Validates the threshold for multi-signature transactions
38
+ * @param threshold - Number of required signatures
39
+ */
40
+ validateThreshold(threshold) {
41
+ if (!threshold || threshold !== 2) {
42
+ throw new sdk_core_1.BuildTransactionError('Invalid transaction: threshold must be set to 2');
43
+ }
44
+ }
45
+ /**
46
+ * Validates a single UTXO object
47
+ * @param value - UTXO to validate
48
+ */
49
+ validateUtxo(value) {
50
+ const requiredFields = ['outputID', 'amount', 'txid', 'outputidx'];
51
+ for (const field of requiredFields) {
52
+ if (!value.hasOwnProperty(field)) {
53
+ throw new sdk_core_1.BuildTransactionError(`UTXO missing required field: ${field}`);
54
+ }
55
+ }
56
+ }
57
+ /**
58
+ * Validates an array of UTXOs
59
+ * @param values - Array of UTXOs to validate
60
+ */
61
+ validateUtxos(values) {
62
+ if (values.length === 0) {
63
+ throw new sdk_core_1.BuildTransactionError('UTXOs array cannot be empty');
64
+ }
65
+ values.forEach(this.validateUtxo);
66
+ }
67
+ /**
68
+ * Validates the locktime value
69
+ * @param locktime - Timestamp after which the output can be spent
70
+ */
71
+ validateLocktime(locktime) {
72
+ if (locktime < BigInt(0)) {
73
+ throw new sdk_core_1.BuildTransactionError('Invalid transaction: locktime must be 0 or higher');
74
+ }
75
+ }
76
+ // endregion
77
+ /**
78
+ * Sets the threshold for multi-signature transactions
79
+ * @param value - Number of required signatures
80
+ */
81
+ threshold(value) {
82
+ this.validateThreshold(value);
83
+ this._transaction._threshold = value;
84
+ return this;
85
+ }
86
+ /**
87
+ * Sets the locktime for the transaction
88
+ * @param value - Timestamp after which the output can be spent
89
+ */
90
+ locktime(value) {
91
+ this.validateLocktime(BigInt(value));
92
+ this._transaction._locktime = BigInt(value);
93
+ return this;
94
+ }
95
+ /**
96
+ * Enables recovery mode for the transaction
97
+ * @param recoverSigner - Whether to use recovery signing
98
+ */
99
+ recoverMode(recoverSigner = true) {
100
+ this.recoverSigner = recoverSigner;
101
+ return this;
102
+ }
103
+ /**
104
+ * Sets the sender's public key(s)
105
+ * @param senderPubKey - Public key or array of public keys
106
+ */
107
+ fromPubKey(senderPubKey) {
108
+ const pubKeys = Array.isArray(senderPubKey) ? senderPubKey : [senderPubKey];
109
+ this._transaction._fromAddresses = pubKeys.map((addr) => utils_1.default.parseAddress(addr));
110
+ return this;
111
+ }
112
+ /**
113
+ * Sets the UTXOs for the transaction
114
+ * @param value - Array of UTXOs to use
115
+ */
116
+ utxos(value) {
117
+ this.validateUtxos(value);
118
+ this._transaction._utxos = value;
119
+ return this;
120
+ }
121
+ /** @inheritdoc */
122
+ fromImplementation(rawTransaction) {
123
+ try {
124
+ // Parse the raw transaction using Flare's PVM serialization
125
+ const [tx] = flarejs_1.pvmSerial.AddPermissionlessValidatorTx.fromBytes(Buffer.from(rawTransaction, 'hex'), flarejs_1.avmSerial.getAVMManager().getDefaultCodec());
126
+ this.initBuilder(tx);
127
+ return this._transaction;
128
+ }
129
+ catch (e) {
130
+ throw new sdk_core_1.BuildTransactionError(`Failed to parse raw transaction: ${e.message}`);
131
+ }
132
+ }
133
+ /**
134
+ * Check the buffer has 32 byte long.
135
+ * @param chainID
136
+ */
137
+ validateChainId(chainID) {
138
+ if (chainID.length !== 32) {
139
+ throw new sdk_core_1.BuildTransactionError('Chain id are 32 byte size');
140
+ }
141
+ }
142
+ /** @inheritdoc */
143
+ get transaction() {
144
+ return this._transaction;
145
+ }
146
+ set transaction(transaction) {
147
+ this._transaction = transaction;
148
+ }
149
+ /**
150
+ * Check that fee is greater than 0.
151
+ * @param {bigint} fee
152
+ */
153
+ validateFee(fee) {
154
+ if (fee <= BigInt(0)) {
155
+ throw new sdk_core_1.BuildTransactionError('Fee must be greater than 0');
156
+ }
157
+ }
158
+ /** @inheritdoc */
159
+ validateKey({ key }) {
160
+ try {
161
+ new keyPair_1.KeyPair({ prv: key });
162
+ }
163
+ catch (e) {
164
+ throw new sdk_core_1.BuildTransactionError('Invalid key');
165
+ }
166
+ }
167
+ /** @inheritdoc */
168
+ validateTransaction(transaction) {
169
+ // throw new NotImplementedError('validateTransaction not implemented');
170
+ }
171
+ /** @inheritdoc */
172
+ validateValue(value) {
173
+ if (value.isLessThan(0)) {
174
+ throw new sdk_core_1.BuildTransactionError('Value cannot be less than zero');
175
+ }
176
+ }
177
+ /** @inheritdoc */
178
+ validateAddress(address, addressFormat) {
179
+ if (!utils_1.default.isValidAddress(address.address)) {
180
+ throw new sdk_core_1.BuildTransactionError('Invalid address');
181
+ }
182
+ }
183
+ /**
184
+ * Check the raw transaction has a valid format in the blockchain context, throw otherwise.
185
+ *
186
+ * @param rawTransaction Transaction in any format
187
+ */
188
+ validateRawTransaction(rawTransaction) {
189
+ utils_1.default.validateRawTransaction(rawTransaction);
190
+ }
191
+ /** @inheritdoc */
192
+ signImplementation({ key }) {
193
+ this._signer.push(new keyPair_1.KeyPair({ prv: key }));
194
+ return this.transaction;
195
+ }
196
+ hasSigner() {
197
+ return this._signer !== undefined && this._signer.length > 0;
198
+ }
199
+ /**
200
+ * Check the amount is positive.
201
+ * @param amount
202
+ */
203
+ validateAmount(amount) {
204
+ if (amount <= BigInt(0)) {
205
+ throw new sdk_core_1.BuildTransactionError('Amount must be greater than 0');
206
+ }
207
+ }
208
+ }
209
+ exports.TransactionBuilder = TransactionBuilder;
210
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb25CdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi90cmFuc2FjdGlvbkJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsbURBQXlFO0FBQ3pFLG1EQUEyRztBQUczRyx1Q0FBb0M7QUFDcEMsK0NBQTRDO0FBQzVDLG9EQUE0QjtBQUc1QixNQUFzQixrQkFBbUIsU0FBUSxpQ0FBc0I7SUFLckUsWUFBWSxXQUFpQztRQUMzQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7UUFKWCxrQkFBYSxHQUFHLEtBQUssQ0FBQztRQUN6QixZQUFPLEdBQWMsRUFBRSxDQUFDO1FBSTdCLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSx5QkFBVyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ25ELENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILFdBQVcsQ0FBQyxFQUFNO1FBQ2hCLE1BQU0sTUFBTSxHQUFLLEVBQWlCLENBQUMsRUFBNkMsQ0FBQyxNQUFNLENBQUM7UUFFeEYsNENBQTRDO1FBQzVDLElBQ0UsTUFBTSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxJQUFJLENBQUMsWUFBWSxDQUFDLFVBQVU7WUFDekQsTUFBTSxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsS0FBSyxJQUFJLENBQUMsWUFBWSxDQUFDLGFBQWEsRUFDL0QsQ0FBQztZQUNELE1BQU0sSUFBSSxLQUFLLENBQUMsbUNBQW1DLENBQUMsQ0FBQztRQUN2RCxDQUFDO1FBRUQsSUFBSSxDQUFDLFlBQVksQ0FBQyxjQUFjLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDckMsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsb0JBQW9CO0lBQ3BCOzs7T0FHRztJQUNILGlCQUFpQixDQUFDLFNBQWlCO1FBQ2pDLElBQUksQ0FBQyxTQUFTLElBQUksU0FBUyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ2xDLE1BQU0sSUFB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YXZtU2VyaWFsLCBwdm1TZXJpYWwsIFVuc2lnbmVkVHggfSBmcm9tICdAZmxhcmVuZXR3b3JrL2ZsYXJlanMnO1xuaW1wb3J0IHsgQmFzZVRyYW5zYWN0aW9uQnVpbGRlciwgQnVpbGRUcmFuc2FjdGlvbkVycm9yLCBCYXNlS2V5LCBCYXNlQWRkcmVzcyB9IGZyb20gJ0BiaXRnby1iZXRhL3Nkay1jb3JlJztcbmltcG9ydCB7IEJhc2VDb2luIGFzIENvaW5Db25maWcgfSBmcm9tICdAYml0Z28tYmV0YS9zdGF0aWNzJztcbmltcG9ydCB7IERlY29kZWRVdHhvT2JqLCBUeCB9IGZyb20gJy4vaWZhY2UnO1xuaW1wb3J0IHsgS2V5UGFpciB9IGZyb20gJy4va2V5UGFpcic7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbiB9IGZyb20gJy4vdHJhbnNhY3Rpb24nO1xuaW1wb3J0IHV0aWxzIGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IEJpZ051bWJlciBmcm9tICdiaWdudW1iZXIuanMnO1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgVHJhbnNhY3Rpb25CdWlsZGVyIGV4dGVuZHMgQmFzZVRyYW5zYWN0aW9uQnVpbGRlciB7XG4gIHByb3RlY3RlZCBfdHJhbnNhY3Rpb246IFRyYW5zYWN0aW9uO1xuICBwcm90ZWN0ZWQgcmVjb3ZlclNpZ25lciA9IGZhbHNlO1xuICBwdWJsaWMgX3NpZ25lcjogS2V5UGFpcltdID0gW107XG5cbiAgY29uc3RydWN0b3IoX2NvaW5Db25maWc6IFJlYWRvbmx5PENvaW5Db25maWc+KSB7XG4gICAgc3VwZXIoX2NvaW5Db25maWcpO1xuICAgIHRoaXMuX3RyYW5zYWN0aW9uID0gbmV3IFRyYW5zYWN0aW9uKF9jb2luQ29uZmlnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbml0aWFsaXplIHRoZSB0cmFuc2FjdGlvbiBidWlsZGVyIGZpZWxkcyB1c2luZyB0aGUgZGVjb2RlZCB0cmFuc2FjdGlvbiBkYXRhXG4gICAqXG4gICAqIEBwYXJhbSB7VHJhbnNhY3Rpb259IHR4IHRoZSB0cmFuc2FjdGlvbiBkYXRhXG4gICAqIEByZXR1cm5zIGl0c2VsZlxuICAgKi9cbiAgaW5pdEJ1aWxkZXIodHg6IFR4KTogdGhpcyB7XG4gICAgY29uc3QgYmFzZVR4ID0gKCh0eCBhcyBVbnNpZ25lZFR4KS50eCBhcyBwdm1TZXJpYWwuQWRkUGVybWlzc2lvbmxlc3NWYWxpZGF0b3JUeCkuYmFzZVR4O1xuXG4gICAgLy8gVmFsaWRhdGUgbmV0d29yayBhbmQgYmxvY2tjaGFpbiBJRHMgbWF0Y2hcbiAgICBpZiAoXG4gICAgICBiYXNlVHguTmV0d29ya0lkLnZhbHVlKCkgIT09IHRoaXMuX3RyYW5zYWN0aW9uLl9uZXR3b3JrSUQgfHxcbiAgICAgIGJhc2VUeC5CbG9ja2NoYWluSWQudmFsdWUoKSAhPT0gdGhpcy5fdHJhbnNhY3Rpb24uX2Jsb2NrY2hhaW5JRFxuICAgICkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdOZXR3b3JrIG9yIGJsb2NrY2hhaW4gSUQgbWlzbWF0Y2gnKTtcbiAgICB9XG5cbiAgICB0aGlzLl90cmFuc2FjdGlvbi5zZXRUcmFuc2FjdGlvbih0eCk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvLyByZWdpb24gVmFsaWRhdG9yc1xuICAvKipcbiAgICogVmFsaWRhdGVzIHRoZSB0aHJlc2hvbGQgZm9yIG11bHRpLXNpZ25hdHVyZSB0cmFuc2FjdGlvbnNcbiAgICogQHBhcmFtIHRocmVzaG9sZCAtIE51bWJlciBvZiByZXF1aXJlZCBzaWduYXR1cmVzXG4gICAqL1xuICB2YWxpZGF0ZVRocmVzaG9sZCh0aHJlc2hvbGQ6IG51bWJlcik6IHZvaWQge1xuICAgIGlmICghdGhyZXNob2xkIHx8IHRocmVzaG9sZCAhPT0gMikge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignSW52YWxpZCB0cmFuc2FjdGlvbjogdGhyZXNob2xkIG11c3QgYmUgc2V0IHRvIDInKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVmFsaWRhdGVzIGEgc2luZ2xlIFVUWE8gb2JqZWN0XG4gICAqIEBwYXJhbSB2YWx1ZSAtIFVUWE8gdG8gdmFsaWRhdGVcbiAgICovXG4gIHZhbGlkYXRlVXR4byh2YWx1ZTogRGVjb2RlZFV0eG9PYmopOiB2b2lkIHtcbiAgICBjb25zdCByZXF1aXJlZEZpZWxkcyA9IFsnb3V0cHV0SUQnLCAnYW1vdW50JywgJ3R4aWQnLCAnb3V0cHV0aWR4J107XG4gICAgZm9yIChjb25zdCBmaWVsZCBvZiByZXF1aXJlZEZpZWxkcykge1xuICAgICAgaWYgKCF2YWx1ZS5oYXNPd25Qcm9wZXJ0eShmaWVsZCkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcihgVVRYTyBtaXNzaW5nIHJlcXVpcmVkIGZpZWxkOiAke2ZpZWxkfWApO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZXMgYW4gYXJyYXkgb2YgVVRYT3NcbiAgICogQHBhcmFtIHZhbHVlcyAtIEFycmF5IG9mIFVUWE9zIHRvIHZhbGlkYXRlXG4gICAqL1xuICB2YWxpZGF0ZVV0eG9zKHZhbHVlczogRGVjb2RlZFV0eG9PYmpbXSk6IHZvaWQge1xuICAgIGlmICh2YWx1ZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdVVFhPcyBhcnJheSBjYW5ub3QgYmUgZW1wdHknKTtcbiAgICB9XG4gICAgdmFsdWVzLmZvckVhY2godGhpcy52YWxpZGF0ZVV0eG8pO1xuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlcyB0aGUgbG9ja3RpbWUgdmFsdWVcbiAgICogQHBhcmFtIGxvY2t0aW1lIC0gVGltZXN0YW1wIGFmdGVyIHdoaWNoIHRoZSBvdXRwdXQgY2FuIGJlIHNwZW50XG4gICAqL1xuICB2YWxpZGF0ZUxvY2t0aW1lKGxvY2t0aW1lOiBiaWdpbnQpOiB2b2lkIHtcbiAgICBpZiAobG9ja3RpbWUgPCBCaWdJbnQoMCkpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0ludmFsaWQgdHJhbnNhY3Rpb246IGxvY2t0aW1lIG11c3QgYmUgMCBvciBoaWdoZXInKTtcbiAgICB9XG4gIH1cbiAgLy8gZW5kcmVnaW9uXG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIHRocmVzaG9sZCBmb3IgbXVsdGktc2lnbmF0dXJlIHRyYW5zYWN0aW9uc1xuICAgKiBAcGFyYW0gdmFsdWUgLSBOdW1iZXIgb2YgcmVxdWlyZWQgc2lnbmF0dXJlc1xuICAgKi9cbiAgdGhyZXNob2xkKHZhbHVlOiBudW1iZXIpOiB0aGlzIHtcbiAgICB0aGlzLnZhbGlkYXRlVGhyZXNob2xkKHZhbHVlKTtcbiAgICB0aGlzLl90cmFuc2FjdGlvbi5fdGhyZXNob2xkID0gdmFsdWU7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgbG9ja3RpbWUgZm9yIHRoZSB0cmFuc2FjdGlvblxuICAgKiBAcGFyYW0gdmFsdWUgLSBUaW1lc3RhbXAgYWZ0ZXIgd2hpY2ggdGhlIG91dHB1dCBjYW4gYmUgc3BlbnRcbiAgICovXG4gIGxvY2t0aW1lKHZhbHVlOiBzdHJpbmcgfCBudW1iZXIpOiB0aGlzIHtcbiAgICB0aGlzLnZhbGlkYXRlTG9ja3RpbWUoQmlnSW50KHZhbHVlKSk7XG4gICAgdGhpcy5fdHJhbnNhY3Rpb24uX2xvY2t0aW1lID0gQmlnSW50KHZhbHVlKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBFbmFibGVzIHJlY292ZXJ5IG1vZGUgZm9yIHRoZSB0cmFuc2FjdGlvblxuICAgKiBAcGFyYW0gcmVjb3ZlclNpZ25lciAtIFdoZXRoZXIgdG8gdXNlIHJlY292ZXJ5IHNpZ25pbmdcbiAgICovXG4gIHJlY292ZXJNb2RlKHJlY292ZXJTaWduZXIgPSB0cnVlKTogdGhpcyB7XG4gICAgdGhpcy5yZWNvdmVyU2lnbmVyID0gcmVjb3ZlclNpZ25lcjtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBzZW5kZXIncyBwdWJsaWMga2V5KHMpXG4gICAqIEBwYXJhbSBzZW5kZXJQdWJLZXkgLSBQdWJsaWMga2V5IG9yIGFycmF5IG9mIHB1YmxpYyBrZXlzXG4gICAqL1xuICBmcm9tUHViS2V5KHNlbmRlclB1YktleTogc3RyaW5nIHwgc3RyaW5nW10pOiB0aGlzIHtcbiAgICBjb25zdCBwdWJLZXlzID0gQXJyYXkuaXNBcnJheShzZW5kZXJQdWJLZXkpID8gc2VuZGVyUHViS2V5IDogW3NlbmRlclB1YktleV07XG4gICAgdGhpcy5fdHJhbnNhY3Rpb24uX2Zyb21BZGRyZXNzZXMgPSBwdWJLZXlzLm1hcCgoYWRkcikgPT4gdXRpbHMucGFyc2VBZGRyZXNzKGFkZHIpKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBVVFhPcyBmb3IgdGhlIHRyYW5zYWN0aW9uXG4gICAqIEBwYXJhbSB2YWx1ZSAtIEFycmF5IG9mIFVUWE9zIHRvIHVzZVxuICAgKi9cbiAgdXR4b3ModmFsdWU6IERlY29kZWRVdHhvT2JqW10pOiB0aGlzIHtcbiAgICB0aGlzLnZhbGlkYXRlVXR4b3ModmFsdWUpO1xuICAgIHRoaXMuX3RyYW5zYWN0aW9uLl91dHhvcyA9IHZhbHVlO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHByb3RlY3RlZCBmcm9tSW1wbGVtZW50YXRpb24ocmF3VHJhbnNhY3Rpb246IHN0cmluZyk6IFRyYW5zYWN0aW9uIHtcbiAgICB0cnkge1xuICAgICAgLy8gUGFyc2UgdGhlIHJhdyB0cmFuc2FjdGlvbiB1c2luZyBGbGFyZSdzIFBWTSBzZXJpYWxpemF0aW9uXG4gICAgICBjb25zdCBbdHhdID0gcHZtU2VyaWFsLkFkZFBlcm1pc3Npb25sZXNzVmFsaWRhdG9yVHguZnJvbUJ5dGVzKFxuICAgICAgICBCdWZmZXIuZnJvbShyYXdUcmFuc2FjdGlvbiwgJ2hleCcpLFxuICAgICAgICBhdm1TZXJpYWwuZ2V0QVZNTWFuYWdlcigpLmdldERlZmF1bHRDb2RlYygpXG4gICAgICApO1xuICAgICAgdGhpcy5pbml0QnVpbGRlcih0eCk7XG4gICAgICByZXR1cm4gdGhpcy5fdHJhbnNhY3Rpb247XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcihgRmFpbGVkIHRvIHBhcnNlIHJhdyB0cmFuc2FjdGlvbjogJHtlLm1lc3NhZ2V9YCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEFic3RyYWN0IG1ldGhvZCB0byBiZSBpbXBsZW1lbnRlZCBieSBzcGVjaWZpYyB0cmFuc2FjdGlvbiBidWlsZGVyc1xuICAgKiBCdWlsZHMgdGhlIGFjdHVhbCB0cmFuc2FjdGlvbiBiYXNlZCBvbiB0aGUgYnVpbGRlcidzIGNvbmZpZ3VyYXRpb25cbiAgICovXG4gIHByb3RlY3RlZCBhYnN0cmFjdCBidWlsZEltcGxlbWVudGF0aW9uKCk6IFByb21pc2U8VHJhbnNhY3Rpb24+O1xuXG4gIC8qKlxuICAgKiBDaGVjayB0aGUgYnVmZmVyIGhhcyAzMiBieXRlIGxvbmcuXG4gICAqIEBwYXJhbSBjaGFpbklEXG4gICAqL1xuICB2YWxpZGF0ZUNoYWluSWQoY2hhaW5JRDogQnVmZmVyKTogdm9pZCB7XG4gICAgaWYgKGNoYWluSUQubGVuZ3RoICE9PSAzMikge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignQ2hhaW4gaWQgYXJlIDMyIGJ5dGUgc2l6ZScpO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBwcm90ZWN0ZWQgZ2V0IHRyYW5zYWN0aW9uKCk6IFRyYW5zYWN0aW9uIHtcbiAgICByZXR1cm4gdGhpcy5fdHJhbnNhY3Rpb247XG4gIH1cblxuICBwcm90ZWN0ZWQgc2V0IHRyYW5zYWN0aW9uKHRyYW5zYWN0aW9uOiBUcmFuc2FjdGlvbikge1xuICAgIHRoaXMuX3RyYW5zYWN0aW9uID0gdHJhbnNhY3Rpb247XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2sgdGhhdCBmZWUgaXMgZ3JlYXRlciB0aGFuIDAuXG4gICAqIEBwYXJhbSB7YmlnaW50fSBmZWVcbiAgICovXG4gIHZhbGlkYXRlRmVlKGZlZTogYmlnaW50KTogdm9pZCB7XG4gICAgaWYgKGZlZSA8PSBCaWdJbnQoMCkpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0ZlZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAwJyk7XG4gICAgfVxuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHZhbGlkYXRlS2V5KHsga2V5IH06IEJhc2VLZXkpOiB2b2lkIHtcbiAgICB0cnkge1xuICAgICAgbmV3IEtleVBhaXIoeyBwcnY6IGtleSB9KTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdJbnZhbGlkIGtleScpO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICB2YWxpZGF0ZVRyYW5zYWN0aW9uKHRyYW5zYWN0aW9uPzogVHJhbnNhY3Rpb24pOiB2b2lkIHtcbiAgICAvLyB0aHJvdyBuZXcgTm90SW1wbGVtZW50ZWRFcnJvcigndmFsaWRhdGVUcmFuc2FjdGlvbiBub3QgaW1wbGVtZW50ZWQnKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICB2YWxpZGF0ZVZhbHVlKHZhbHVlOiBCaWdOdW1iZXIpOiB2b2lkIHtcbiAgICBpZiAodmFsdWUuaXNMZXNzVGhhbigwKSkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignVmFsdWUgY2Fubm90IGJlIGxlc3MgdGhhbiB6ZXJvJyk7XG4gICAgfVxuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHZhbGlkYXRlQWRkcmVzcyhhZGRyZXNzOiBCYXNlQWRkcmVzcywgYWRkcmVzc0Zvcm1hdD86IHN0cmluZyk6IHZvaWQge1xuICAgIGlmICghdXRpbHMuaXNWYWxpZEFkZHJlc3MoYWRkcmVzcy5hZGRyZXNzKSkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignSW52YWxpZCBhZGRyZXNzJyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrIHRoZSByYXcgdHJhbnNhY3Rpb24gaGFzIGEgdmFsaWQgZm9ybWF0IGluIHRoZSBibG9ja2NoYWluIGNvbnRleHQsIHRocm93IG90aGVyd2lzZS5cbiAgICpcbiAgICogQHBhcmFtIHJhd1RyYW5zYWN0aW9uIFRyYW5zYWN0aW9uIGluIGFueSBmb3JtYXRcbiAgICovXG4gIHZhbGlkYXRlUmF3VHJhbnNhY3Rpb24ocmF3VHJhbnNhY3Rpb246IHN0cmluZyk6IHZvaWQge1xuICAgIHV0aWxzLnZhbGlkYXRlUmF3VHJhbnNhY3Rpb24ocmF3VHJhbnNhY3Rpb24pO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHByb3RlY3RlZCBzaWduSW1wbGVtZW50YXRpb24oeyBrZXkgfTogQmFzZUtleSk6IFRyYW5zYWN0aW9uIHtcbiAgICB0aGlzLl9zaWduZXIucHVzaChuZXcgS2V5UGFpcih7IHBydjoga2V5IH0pKTtcbiAgICByZXR1cm4gdGhpcy50cmFuc2FjdGlvbjtcbiAgfVxuXG4gIGhhc1NpZ25lcigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fc2lnbmVyICE9PSB1bmRlZmluZWQgJiYgdGhpcy5fc2lnbmVyLmxlbmd0aCA+IDA7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2sgdGhlIGFtb3VudCBpcyBwb3NpdGl2ZS5cbiAgICogQHBhcmFtIGFtb3VudFxuICAgKi9cbiAgdmFsaWRhdGVBbW91bnQoYW1vdW50OiBiaWdpbnQpOiB2b2lkIHtcbiAgICBpZiAoYW1vdW50IDw9IEJpZ0ludCgwKSkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignQW1vdW50IG11c3QgYmUgZ3JlYXRlciB0aGFuIDAnKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
@@ -1,37 +1,34 @@
1
+ import { BaseTransactionBuilderFactory } from '@bitgo-beta/sdk-core';
1
2
  import { BaseCoin as CoinConfig } from '@bitgo-beta/statics';
2
- import { TransactionType } from '@bitgo-beta/sdk-core';
3
- import { AtomicTransactionBuilder } from './atomicTransactionBuilder';
4
- export declare class ExportTxBuilder extends AtomicTransactionBuilder {
5
- protected get transactionType(): TransactionType;
6
- constructor(coinConfig: Readonly<CoinConfig>);
7
- }
8
- export declare class ImportTxBuilder extends AtomicTransactionBuilder {
9
- protected get transactionType(): TransactionType;
10
- constructor(coinConfig: Readonly<CoinConfig>);
11
- }
12
- export declare class ValidatorTxBuilder extends AtomicTransactionBuilder {
13
- protected get transactionType(): TransactionType;
14
- constructor(coinConfig: Readonly<CoinConfig>);
15
- }
16
- export declare class DelegatorTxBuilder extends AtomicTransactionBuilder {
17
- protected get transactionType(): TransactionType;
18
- constructor(coinConfig: Readonly<CoinConfig>);
19
- }
20
- /**
21
- * Factory for Flare P-chain transaction builders
22
- */
23
- export declare class TransactionBuilderFactory {
24
- protected _coinConfig: Readonly<CoinConfig>;
25
- constructor(coinConfig: Readonly<CoinConfig>);
3
+ import { TransactionBuilder } from './transactionBuilder';
4
+ import { ExportInPTxBuilder } from './ExportInPTxBuilder';
5
+ import { ImportInPTxBuilder } from './ImportInPTxBuilder';
6
+ import { ExportInCTxBuilder } from './ExportInCTxBuilder';
7
+ import { ImportInCTxBuilder } from './ImportInCTxBuilder';
8
+ export declare class TransactionBuilderFactory extends BaseTransactionBuilderFactory {
9
+ protected recoverSigner: boolean;
10
+ constructor(_coinConfig: Readonly<CoinConfig>);
11
+ /** @inheritdoc */
12
+ from(raw: string): TransactionBuilder;
13
+ /** @inheritdoc */
14
+ getTransferBuilder(): TransactionBuilder;
15
+ /**
16
+ * Export Cross chain transfer
17
+ */
18
+ getExportInPBuilder(): ExportInPTxBuilder;
19
+ /**
20
+ * Import Cross chain transfer
21
+ */
22
+ getImportInPBuilder(): ImportInPTxBuilder;
26
23
  /**
27
- * Create a transaction builder from a hex string
28
- * @param txHex - Transaction hex string
24
+ * Import in C chain Cross chain transfer
29
25
  */
30
- from(txHex: string): AtomicTransactionBuilder;
26
+ getImportInCBuilder(): ImportInCTxBuilder;
31
27
  /**
32
- * Create a transaction builder for a specific type
33
- * @param type - Transaction type
28
+ * Export in C chain Cross chain transfer
34
29
  */
35
- getBuilder(type: TransactionType): AtomicTransactionBuilder;
30
+ getExportInCBuilder(): ExportInCTxBuilder;
31
+ /** @inheritdoc */
32
+ getWalletInitializationBuilder(): TransactionBuilder;
36
33
  }
37
34
  //# sourceMappingURL=transactionBuilderFactory.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"transactionBuilderFactory.d.ts","sourceRoot":"","sources":["../../../src/lib/transactionBuilderFactory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAuB,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC5E,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AAGtE,qBAAa,eAAgB,SAAQ,wBAAwB;IAC3D,SAAS,KAAK,eAAe,IAAI,eAAe,CAE/C;gBAEW,UAAU,EAAE,QAAQ,CAAC,UAAU,CAAC;CAI7C;AAED,qBAAa,eAAgB,SAAQ,wBAAwB;IAC3D,SAAS,KAAK,eAAe,IAAI,eAAe,CAE/C;gBAEW,UAAU,EAAE,QAAQ,CAAC,UAAU,CAAC;CAI7C;AAED,qBAAa,kBAAmB,SAAQ,wBAAwB;IAC9D,SAAS,KAAK,eAAe,IAAI,eAAe,CAE/C;gBAEW,UAAU,EAAE,QAAQ,CAAC,UAAU,CAAC;CAI7C;AAED,qBAAa,kBAAmB,SAAQ,wBAAwB;IAC9D,SAAS,KAAK,eAAe,IAAI,eAAe,CAE/C;gBAEW,UAAU,EAAE,QAAQ,CAAC,UAAU,CAAC;CAI7C;AAED;;GAEG;AACH,qBAAa,yBAAyB;IACpC,SAAS,CAAC,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAC;gBAEhC,UAAU,EAAE,QAAQ,CAAC,UAAU,CAAC;IAI5C;;;OAGG;IACH,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,wBAAwB;IAiB7C;;;OAGG;IACH,UAAU,CAAC,IAAI,EAAE,eAAe,GAAG,wBAAwB;CAc5D"}
1
+ {"version":3,"file":"transactionBuilderFactory.d.ts","sourceRoot":"","sources":["../../../src/lib/transactionBuilderFactory.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,6BAA6B,EAAgB,MAAM,sBAAsB,CAAC;AACnF,OAAO,EAAgB,QAAQ,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC3E,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAG1D,qBAAa,yBAA0B,SAAQ,6BAA6B;IAC1E,SAAS,CAAC,aAAa,UAAS;gBAEpB,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAI7C,kBAAkB;IAClB,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,kBAAkB;IAgDrC,kBAAkB;IAClB,kBAAkB,IAAI,kBAAkB;IAIxC;;OAEG;IACH,mBAAmB,IAAI,kBAAkB;IAIzC;;OAEG;IACH,mBAAmB,IAAI,kBAAkB;IAIzC;;OAEG;IACH,mBAAmB,IAAI,kBAAkB;IAIzC;;OAEG;IACH,mBAAmB,IAAI,kBAAkB;IAIzC,kBAAkB;IAClB,8BAA8B,IAAI,kBAAkB;CAGrD"}
@@ -1,91 +1,100 @@
1
1
  "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
2
5
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.TransactionBuilderFactory = exports.DelegatorTxBuilder = exports.ValidatorTxBuilder = exports.ImportTxBuilder = exports.ExportTxBuilder = void 0;
6
+ exports.TransactionBuilderFactory = void 0;
7
+ const flarejs_1 = require("@flarenetwork/flarejs");
4
8
  const sdk_core_1 = require("@bitgo-beta/sdk-core");
5
- const atomicTransactionBuilder_1 = require("./atomicTransactionBuilder");
6
- // Placeholder builders - basic implementations for testing
7
- class ExportTxBuilder extends atomicTransactionBuilder_1.AtomicTransactionBuilder {
8
- get transactionType() {
9
- return sdk_core_1.TransactionType.Export;
9
+ const ExportInPTxBuilder_1 = require("./ExportInPTxBuilder");
10
+ const ImportInPTxBuilder_1 = require("./ImportInPTxBuilder");
11
+ const ExportInCTxBuilder_1 = require("./ExportInCTxBuilder");
12
+ const ImportInCTxBuilder_1 = require("./ImportInCTxBuilder");
13
+ const utils_1 = __importDefault(require("./utils"));
14
+ class TransactionBuilderFactory extends sdk_core_1.BaseTransactionBuilderFactory {
15
+ constructor(_coinConfig) {
16
+ super(_coinConfig);
17
+ this.recoverSigner = false;
10
18
  }
11
- constructor(coinConfig) {
12
- super(coinConfig);
13
- // Don't throw error, allow placeholder functionality
14
- }
15
- }
16
- exports.ExportTxBuilder = ExportTxBuilder;
17
- class ImportTxBuilder extends atomicTransactionBuilder_1.AtomicTransactionBuilder {
18
- get transactionType() {
19
- return sdk_core_1.TransactionType.Import;
20
- }
21
- constructor(coinConfig) {
22
- super(coinConfig);
23
- // Don't throw error, allow placeholder functionality
24
- }
25
- }
26
- exports.ImportTxBuilder = ImportTxBuilder;
27
- class ValidatorTxBuilder extends atomicTransactionBuilder_1.AtomicTransactionBuilder {
28
- get transactionType() {
29
- return sdk_core_1.TransactionType.AddValidator;
19
+ /** @inheritdoc */
20
+ from(raw) {
21
+ utils_1.default.validateRawTransaction(raw);
22
+ const rawNoHex = utils_1.default.removeHexPrefix(raw);
23
+ const rawBuffer = Buffer.from(rawNoHex, 'hex');
24
+ let txSource;
25
+ const network = this._coinConfig.network;
26
+ let tx;
27
+ try {
28
+ txSource = 'EVM';
29
+ const evmManager = flarejs_1.utils.getManagerForVM('EVM');
30
+ tx = evmManager.unpackTransaction(rawBuffer);
31
+ const blockchainId = tx.getBlockchainId();
32
+ if (blockchainId === network.cChainBlockchainID) {
33
+ console.log('Parsed as EVM transaction on C-Chain');
34
+ }
35
+ }
36
+ catch (e) {
37
+ txSource = 'PVM';
38
+ const pvmManager = flarejs_1.utils.getManagerForVM('PVM');
39
+ tx = pvmManager.unpackTransaction(rawBuffer);
40
+ const blockchainId = tx.getBlockchainId();
41
+ if (blockchainId === network.blockchainID) {
42
+ console.log('Parsed as PVM transaction on P-Chain');
43
+ }
44
+ }
45
+ if (txSource === 'EVM') {
46
+ if (ExportInCTxBuilder_1.ExportInCTxBuilder.verifyTxType(tx._type)) {
47
+ const exportBuilder = this.getExportInCBuilder();
48
+ exportBuilder.initBuilder(tx, rawBuffer);
49
+ return exportBuilder;
50
+ }
51
+ }
52
+ else if (txSource === 'PVM') {
53
+ if (ImportInPTxBuilder_1.ImportInPTxBuilder.verifyTxType(tx._type)) {
54
+ const importBuilder = this.getImportInPBuilder();
55
+ importBuilder.initBuilder(tx, rawBuffer);
56
+ return importBuilder;
57
+ }
58
+ else if (ExportInPTxBuilder_1.ExportInPTxBuilder.verifyTxType(tx._type)) {
59
+ const exportBuilder = this.getExportInPBuilder();
60
+ exportBuilder.initBuilder(tx, rawBuffer);
61
+ return exportBuilder;
62
+ }
63
+ }
64
+ throw new sdk_core_1.NotSupported('Transaction type not supported');
30
65
  }
31
- constructor(coinConfig) {
32
- super(coinConfig);
33
- // Don't throw error, allow placeholder functionality
66
+ /** @inheritdoc */
67
+ getTransferBuilder() {
68
+ throw new sdk_core_1.NotSupported('Transfer is not supported in P Chain');
34
69
  }
35
- }
36
- exports.ValidatorTxBuilder = ValidatorTxBuilder;
37
- class DelegatorTxBuilder extends atomicTransactionBuilder_1.AtomicTransactionBuilder {
38
- get transactionType() {
39
- return sdk_core_1.TransactionType.AddDelegator;
40
- }
41
- constructor(coinConfig) {
42
- super(coinConfig);
43
- // Don't throw error, allow placeholder functionality
70
+ /**
71
+ * Export Cross chain transfer
72
+ */
73
+ getExportInPBuilder() {
74
+ return new ExportInPTxBuilder_1.ExportInPTxBuilder(this._coinConfig);
44
75
  }
45
- }
46
- exports.DelegatorTxBuilder = DelegatorTxBuilder;
47
- /**
48
- * Factory for Flare P-chain transaction builders
49
- */
50
- class TransactionBuilderFactory {
51
- constructor(coinConfig) {
52
- this._coinConfig = coinConfig;
76
+ /**
77
+ * Import Cross chain transfer
78
+ */
79
+ getImportInPBuilder() {
80
+ return new ImportInPTxBuilder_1.ImportInPTxBuilder(this._coinConfig);
53
81
  }
54
82
  /**
55
- * Create a transaction builder from a hex string
56
- * @param txHex - Transaction hex string
83
+ * Import in C chain Cross chain transfer
57
84
  */
58
- from(txHex) {
59
- // TODO: Parse the hex and determine transaction type, then return appropriate builder
60
- // For now, return a basic export builder as that's the most common use case
61
- if (!txHex) {
62
- throw new Error('Transaction hex is required');
63
- }
64
- // Create a mock export builder for now
65
- // In the future, this will parse the transaction and determine the correct type
66
- const builder = new ExportTxBuilder(this._coinConfig);
67
- // Initialize with the hex data (placeholder)
68
- builder.initBuilder({ txHex });
69
- return builder;
85
+ getImportInCBuilder() {
86
+ return new ImportInCTxBuilder_1.ImportInCTxBuilder(this._coinConfig);
70
87
  }
71
88
  /**
72
- * Create a transaction builder for a specific type
73
- * @param type - Transaction type
89
+ * Export in C chain Cross chain transfer
74
90
  */
75
- getBuilder(type) {
76
- switch (type) {
77
- case sdk_core_1.TransactionType.Export:
78
- return new ExportTxBuilder(this._coinConfig);
79
- case sdk_core_1.TransactionType.Import:
80
- return new ImportTxBuilder(this._coinConfig);
81
- case sdk_core_1.TransactionType.AddValidator:
82
- return new ValidatorTxBuilder(this._coinConfig);
83
- case sdk_core_1.TransactionType.AddDelegator:
84
- return new DelegatorTxBuilder(this._coinConfig);
85
- default:
86
- throw new sdk_core_1.NotImplementedError(`Transaction type ${type} not supported`);
87
- }
91
+ getExportInCBuilder() {
92
+ return new ExportInCTxBuilder_1.ExportInCTxBuilder(this._coinConfig);
93
+ }
94
+ /** @inheritdoc */
95
+ getWalletInitializationBuilder() {
96
+ throw new sdk_core_1.NotSupported('Wallet initialization is not needed');
88
97
  }
89
98
  }
90
99
  exports.TransactionBuilderFactory = TransactionBuilderFactory;
91
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvdHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSxtREFBNEU7QUFDNUUseUVBQXNFO0FBRXRFLDJEQUEyRDtBQUMzRCxNQUFhLGVBQWdCLFNBQVEsbURBQXdCO0lBQzNELElBQWMsZUFBZTtRQUMzQixPQUFPLDBCQUFlLENBQUMsTUFBTSxDQUFDO0lBQ2hDLENBQUM7SUFFRCxZQUFZLFVBQWdDO1FBQzFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNsQixxREFBcUQ7SUFDdkQsQ0FBQztDQUNGO0FBVEQsMENBU0M7QUFFRCxNQUFhLGVBQWdCLFNBQVEsbURBQXdCO0lBQzNELElBQWMsZUFBZTtRQUMzQixPQUFPLDBCQUFlLENBQUMsTUFBTSxDQUFDO0lBQ2hDLENBQUM7SUFFRCxZQUFZLFVBQWdDO1FBQzFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNsQixxREFBcUQ7SUFDdkQsQ0FBQztDQUNGO0FBVEQsMENBU0M7QUFFRCxNQUFhLGtCQUFtQixTQUFRLG1EQUF3QjtJQUM5RCxJQUFjLGVBQWU7UUFDM0IsT0FBTywwQkFBZSxDQUFDLFlBQVksQ0FBQztJQUN0QyxDQUFDO0lBRUQsWUFBWSxVQUFnQztRQUMxQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDbEIscURBQXFEO0lBQ3ZELENBQUM7Q0FDRjtBQVRELGdEQVNDO0FBRUQsTUFBYSxrQkFBbUIsU0FBUSxtREFBd0I7SUFDOUQsSUFBYyxlQUFlO1FBQzNCLE9BQU8sMEJBQWUsQ0FBQyxZQUFZLENBQUM7SUFDdEMsQ0FBQztJQUVELFlBQVksVUFBZ0M7UUFDMUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ2xCLHFEQUFxRDtJQUN2RCxDQUFDO0NBQ0Y7QUFURCxnREFTQztBQUVEOztHQUVHO0FBQ0gsTUFBYSx5QkFBeUI7SUFHcEMsWUFBWSxVQUFnQztRQUMxQyxJQUFJLENBQUMsV0FBVyxHQUFHLFVBQVUsQ0FBQztJQUNoQyxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsSUFBSSxDQUFDLEtBQWE7UUFDaEIsc0ZBQXNGO1FBQ3RGLDRFQUE0RTtRQUM1RSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDWCxNQUFNLElBQUksS0FBSyxDQUFDLDZCQUE2QixDQUFDLENBQUM7UUFDakQsQ0FBQztRQUVELHVDQUF1QztRQUN2QyxnRkFBZ0Y7UUFDaEYsTUFBTSxPQUFPLEdBQUcsSUFBSSxlQUFlLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBRXRELDZDQUE2QztRQUM3QyxPQUFPLENBQUMsV0FBVyxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztRQUUvQixPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsVUFBVSxDQUFDLElBQXFCO1FBQzlCLFFBQVEsSUFBSSxFQUFFLENBQUM7WUFDYixLQUFLLDBCQUFlLENBQUMsTUFBTTtnQkFDekIsT0FBTyxJQUFJLGVBQWUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDL0MsS0FBSywwQkFBZSxDQUFDLE1BQU07Z0JBQ3pCLE9BQU8sSUFBSSxlQUFlLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQy9DLEtBQUssMEJBQWUsQ0FBQyxZQUFZO2dCQUMvQixPQUFPLElBQUksa0JBQWtCLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQ2xELEtBQUssMEJBQWUsQ0FBQyxZQUFZO2dCQUMvQixPQUFPLElBQUksa0JBQWtCLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQ2xEO2dCQUNFLE1BQU0sSUFBSSw4QkFBbUIsQ0FBQyxvQkFBb0IsSUFBSSxnQkFBZ0IsQ0FBQyxDQUFDO1FBQzVFLENBQUM7SUFDSCxDQUFDO0NBQ0Y7QUE5Q0QsOERBOENDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQmFzZUNvaW4gYXMgQ29pbkNvbmZpZyB9IGZyb20gJ0BiaXRnby1iZXRhL3N0YXRpY3MnO1xuaW1wb3J0IHsgTm90SW1wbGVtZW50ZWRFcnJvciwgVHJhbnNhY3Rpb25UeXBlIH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuaW1wb3J0IHsgQXRvbWljVHJhbnNhY3Rpb25CdWlsZGVyIH0gZnJvbSAnLi9hdG9taWNUcmFuc2FjdGlvbkJ1aWxkZXInO1xuXG4vLyBQbGFjZWhvbGRlciBidWlsZGVycyAtIGJhc2ljIGltcGxlbWVudGF0aW9ucyBmb3IgdGVzdGluZ1xuZXhwb3J0IGNsYXNzIEV4cG9ydFR4QnVpbGRlciBleHRlbmRzIEF0b21pY1RyYW5zYWN0aW9uQnVpbGRlciB7XG4gIHByb3RlY3RlZCBnZXQgdHJhbnNhY3Rpb25UeXBlKCk6IFRyYW5zYWN0aW9uVHlwZSB7XG4gICAgcmV0dXJuIFRyYW5zYWN0aW9uVHlwZS5FeHBvcnQ7XG4gIH1cblxuICBjb25zdHJ1Y3Rvcihjb2luQ29uZmlnOiBSZWFkb25seTxDb2luQ29uZmlnPikge1xuICAgIHN1cGVyKGNvaW5Db25maWcpO1xuICAgIC8vIERvbid0IHRocm93IGVycm9yLCBhbGxvdyBwbGFjZWhvbGRlciBmdW5jdGlvbmFsaXR5XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEltcG9ydFR4QnVpbGRlciBleHRlbmRzIEF0b21pY1RyYW5zYWN0aW9uQnVpbGRlciB7XG4gIHByb3RlY3RlZCBnZXQgdHJhbnNhY3Rpb25UeXBlKCk6IFRyYW5zYWN0aW9uVHlwZSB7XG4gICAgcmV0dXJuIFRyYW5zYWN0aW9uVHlwZS5JbXBvcnQ7XG4gIH1cblxuICBjb25zdHJ1Y3Rvcihjb2luQ29uZmlnOiBSZWFkb25seTxDb2luQ29uZmlnPikge1xuICAgIHN1cGVyKGNvaW5Db25maWcpO1xuICAgIC8vIERvbid0IHRocm93IGVycm9yLCBhbGxvdyBwbGFjZWhvbGRlciBmdW5jdGlvbmFsaXR5XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFZhbGlkYXRvclR4QnVpbGRlciBleHRlbmRzIEF0b21pY1RyYW5zYWN0aW9uQnVpbGRlciB7XG4gIHByb3RlY3RlZCBnZXQgdHJhbnNhY3Rpb25UeXBlKCk6IFRyYW5zYWN0aW9uVHlwZSB7XG4gICAgcmV0dXJuIFRyYW5zYWN0aW9uVHlwZS5BZGRWYWxpZGF0b3I7XG4gIH1cblxuICBjb25zdHJ1Y3Rvcihjb2luQ29uZmlnOiBSZWFkb25seTxDb2luQ29uZmlnPikge1xuICAgIHN1cGVyKGNvaW5Db25maWcpO1xuICAgIC8vIERvbid0IHRocm93IGVycm9yLCBhbGxvdyBwbGFjZWhvbGRlciBmdW5jdGlvbmFsaXR5XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIERlbGVnYXRvclR4QnVpbGRlciBleHRlbmRzIEF0b21pY1RyYW5zYWN0aW9uQnVpbGRlciB7XG4gIHByb3RlY3RlZCBnZXQgdHJhbnNhY3Rpb25UeXBlKCk6IFRyYW5zYWN0aW9uVHlwZSB7XG4gICAgcmV0dXJuIFRyYW5zYWN0aW9uVHlwZS5BZGREZWxlZ2F0b3I7XG4gIH1cblxuICBjb25zdHJ1Y3Rvcihjb2luQ29uZmlnOiBSZWFkb25seTxDb2luQ29uZmlnPikge1xuICAgIHN1cGVyKGNvaW5Db25maWcpO1xuICAgIC8vIERvbid0IHRocm93IGVycm9yLCBhbGxvdyBwbGFjZWhvbGRlciBmdW5jdGlvbmFsaXR5XG4gIH1cbn1cblxuLyoqXG4gKiBGYWN0b3J5IGZvciBGbGFyZSBQLWNoYWluIHRyYW5zYWN0aW9uIGJ1aWxkZXJzXG4gKi9cbmV4cG9ydCBjbGFzcyBUcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5IHtcbiAgcHJvdGVjdGVkIF9jb2luQ29uZmlnOiBSZWFkb25seTxDb2luQ29uZmlnPjtcblxuICBjb25zdHJ1Y3Rvcihjb2luQ29uZmlnOiBSZWFkb25seTxDb2luQ29uZmlnPikge1xuICAgIHRoaXMuX2NvaW5Db25maWcgPSBjb2luQ29uZmlnO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIHRyYW5zYWN0aW9uIGJ1aWxkZXIgZnJvbSBhIGhleCBzdHJpbmdcbiAgICogQHBhcmFtIHR4SGV4IC0gVHJhbnNhY3Rpb24gaGV4IHN0cmluZ1xuICAgKi9cbiAgZnJvbSh0eEhleDogc3RyaW5nKTogQXRvbWljVHJhbnNhY3Rpb25CdWlsZGVyIHtcbiAgICAvLyBUT0RPOiBQYXJzZSB0aGUgaGV4IGFuZCBkZXRlcm1pbmUgdHJhbnNhY3Rpb24gdHlwZSwgdGhlbiByZXR1cm4gYXBwcm9wcmlhdGUgYnVpbGRlclxuICAgIC8vIEZvciBub3csIHJldHVybiBhIGJhc2ljIGV4cG9ydCBidWlsZGVyIGFzIHRoYXQncyB0aGUgbW9zdCBjb21tb24gdXNlIGNhc2VcbiAgICBpZiAoIXR4SGV4KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1RyYW5zYWN0aW9uIGhleCBpcyByZXF1aXJlZCcpO1xuICAgIH1cblxuICAgIC8vIENyZWF0ZSBhIG1vY2sgZXhwb3J0IGJ1aWxkZXIgZm9yIG5vd1xuICAgIC8vIEluIHRoZSBmdXR1cmUsIHRoaXMgd2lsbCBwYXJzZSB0aGUgdHJhbnNhY3Rpb24gYW5kIGRldGVybWluZSB0aGUgY29ycmVjdCB0eXBlXG4gICAgY29uc3QgYnVpbGRlciA9IG5ldyBFeHBvcnRUeEJ1aWxkZXIodGhpcy5fY29pbkNvbmZpZyk7XG5cbiAgICAvLyBJbml0aWFsaXplIHdpdGggdGhlIGhleCBkYXRhIChwbGFjZWhvbGRlcilcbiAgICBidWlsZGVyLmluaXRCdWlsZGVyKHsgdHhIZXggfSk7XG5cbiAgICByZXR1cm4gYnVpbGRlcjtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSB0cmFuc2FjdGlvbiBidWlsZGVyIGZvciBhIHNwZWNpZmljIHR5cGVcbiAgICogQHBhcmFtIHR5cGUgLSBUcmFuc2FjdGlvbiB0eXBlXG4gICAqL1xuICBnZXRCdWlsZGVyKHR5cGU6IFRyYW5zYWN0aW9uVHlwZSk6IEF0b21pY1RyYW5zYWN0aW9uQnVpbGRlciB7XG4gICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICBjYXNlIFRyYW5zYWN0aW9uVHlwZS5FeHBvcnQ6XG4gICAgICAgIHJldHVybiBuZXcgRXhwb3J0VHhCdWlsZGVyKHRoaXMuX2NvaW5Db25maWcpO1xuICAgICAgY2FzZSBUcmFuc2FjdGlvblR5cGUuSW1wb3J0OlxuICAgICAgICByZXR1cm4gbmV3IEltcG9ydFR4QnVpbGRlcih0aGlzLl9jb2luQ29uZmlnKTtcbiAgICAgIGNhc2UgVHJhbnNhY3Rpb25UeXBlLkFkZFZhbGlkYXRvcjpcbiAgICAgICAgcmV0dXJuIG5ldyBWYWxpZGF0b3JUeEJ1aWxkZXIodGhpcy5fY29pbkNvbmZpZyk7XG4gICAgICBjYXNlIFRyYW5zYWN0aW9uVHlwZS5BZGREZWxlZ2F0b3I6XG4gICAgICAgIHJldHVybiBuZXcgRGVsZWdhdG9yVHhCdWlsZGVyKHRoaXMuX2NvaW5Db25maWcpO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhyb3cgbmV3IE5vdEltcGxlbWVudGVkRXJyb3IoYFRyYW5zYWN0aW9uIHR5cGUgJHt0eXBlfSBub3Qgc3VwcG9ydGVkYCk7XG4gICAgfVxuICB9XG59XG4iXX0=
100
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvdHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxtREFBa0Y7QUFDbEYsbURBQW1GO0FBR25GLDZEQUEwRDtBQUMxRCw2REFBMEQ7QUFDMUQsNkRBQTBEO0FBQzFELDZEQUEwRDtBQUMxRCxvREFBNEI7QUFFNUIsTUFBYSx5QkFBMEIsU0FBUSx3Q0FBNkI7SUFHMUUsWUFBWSxXQUFpQztRQUMzQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7UUFIWCxrQkFBYSxHQUFHLEtBQUssQ0FBQztJQUloQyxDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLElBQUksQ0FBQyxHQUFXO1FBQ2QsZUFBSyxDQUFDLHNCQUFzQixDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2xDLE1BQU0sUUFBUSxHQUFHLGVBQUssQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDNUMsTUFBTSxTQUFTLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDL0MsSUFBSSxRQUF1QixDQUFDO1FBRTVCLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBdUIsQ0FBQztRQUN6RCxJQUFJLEVBQU8sQ0FBQztRQUNaLElBQUksQ0FBQztZQUNILFFBQVEsR0FBRyxLQUFLLENBQUM7WUFDakIsTUFBTSxVQUFVLEdBQUcsZUFBVSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNyRCxFQUFFLEdBQUcsVUFBVSxDQUFDLGlCQUFpQixDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQzdDLE1BQU0sWUFBWSxHQUFHLEVBQUUsQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUUxQyxJQUFJLFlBQVksS0FBSyxPQUFPLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztnQkFDaEQsT0FBTyxDQUFDLEdBQUcsQ0FBQyxzQ0FBc0MsQ0FBQyxDQUFDO1lBQ3RELENBQUM7UUFDSCxDQUFDO1FBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUNYLFFBQVEsR0FBRyxLQUFLLENBQUM7WUFDakIsTUFBTSxVQUFVLEdBQUcsZUFBVSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNyRCxFQUFFLEdBQUcsVUFBVSxDQUFDLGlCQUFpQixDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQzdDLE1BQU0sWUFBWSxHQUFHLEVBQUUsQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUUxQyxJQUFJLFlBQVksS0FBSyxPQUFPLENBQUMsWUFBWSxFQUFFLENBQUM7Z0JBQzFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsc0NBQXNDLENBQUMsQ0FBQztZQUN0RCxDQUFDO1FBQ0gsQ0FBQztRQUVELElBQUksUUFBUSxLQUFLLEtBQUssRUFBRSxDQUFDO1lBQ3ZCLElBQUksdUNBQWtCLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO2dCQUM5QyxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztnQkFDakQsYUFBYSxDQUFDLFdBQVcsQ0FBQyxFQUF3QixFQUFFLFNBQVMsQ0FBQyxDQUFDO2dCQUMvRCxPQUFPLGFBQWEsQ0FBQztZQUN2QixDQUFDO1FBQ0gsQ0FBQzthQUFNLElBQUksUUFBUSxLQUFLLEtBQUssRUFBRSxDQUFDO1lBQzlCLElBQUksdUNBQWtCLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO2dCQUM5QyxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztnQkFDakQsYUFBYSxDQUFDLFdBQVcsQ0FBQyxFQUF3QixFQUFFLFNBQVMsQ0FBQyxDQUFDO2dCQUMvRCxPQUFPLGFBQWEsQ0FBQztZQUN2QixDQUFDO2lCQUFNLElBQUksdUNBQWtCLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO2dCQUNyRCxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztnQkFDakQsYUFBYSxDQUFDLFdBQVcsQ0FBQyxFQUF3QixFQUFFLFNBQVMsQ0FBQyxDQUFDO2dCQUMvRCxPQUFPLGFBQWEsQ0FBQztZQUN2QixDQUFDO1FBQ0gsQ0FBQztRQUNELE1BQU0sSUFBSSx1QkFBWSxDQUFDLGdDQUFnQyxDQUFDLENBQUM7SUFDM0QsQ0FBQztJQUVELGtCQUFrQjtJQUNsQixrQkFBa0I7UUFDaEIsTUFBTSxJQUFJLHVCQUFZLENBQUMsc0NBQXNDLENBQUMsQ0FBQztJQUNqRSxDQUFDO0lBRUQ7O09BRUc7SUFDSCxtQkFBbUI7UUFDakIsT0FBTyxJQUFJLHVDQUFrQixDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNsRCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxtQkFBbUI7UUFDakIsT0FBTyxJQUFJLHVDQUFrQixDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNsRCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxtQkFBbUI7UUFDakIsT0FBTyxJQUFJLHVDQUFrQixDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNsRCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxtQkFBbUI7UUFDakIsT0FBTyxJQUFJLHVDQUFrQixDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNsRCxDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLDhCQUE4QjtRQUM1QixNQUFNLElBQUksdUJBQVksQ0FBQyxxQ0FBcUMsQ0FBQyxDQUFDO0lBQ2hFLENBQUM7Q0FDRjtBQTdGRCw4REE2RkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB1dGlscyBhcyBGbGFyZVV0aWxzLCBldm1TZXJpYWwsIHB2bVNlcmlhbCB9IGZyb20gJ0BmbGFyZW5ldHdvcmsvZmxhcmVqcyc7XG5pbXBvcnQgeyBCYXNlVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeSwgTm90U3VwcG9ydGVkIH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuaW1wb3J0IHsgRmxhcmVOZXR3b3JrLCBCYXNlQ29pbiBhcyBDb2luQ29uZmlnIH0gZnJvbSAnQGJpdGdvLWJldGEvc3RhdGljcyc7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbkJ1aWxkZXIgfSBmcm9tICcuL3RyYW5zYWN0aW9uQnVpbGRlcic7XG5pbXBvcnQgeyBFeHBvcnRJblBUeEJ1aWxkZXIgfSBmcm9tICcuL0V4cG9ydEluUFR4QnVpbGRlcic7XG5pbXBvcnQgeyBJbXBvcnRJblBUeEJ1aWxkZXIgfSBmcm9tICcuL0ltcG9ydEluUFR4QnVpbGRlcic7XG5pbXBvcnQgeyBFeHBvcnRJbkNUeEJ1aWxkZXIgfSBmcm9tICcuL0V4cG9ydEluQ1R4QnVpbGRlcic7XG5pbXBvcnQgeyBJbXBvcnRJbkNUeEJ1aWxkZXIgfSBmcm9tICcuL0ltcG9ydEluQ1R4QnVpbGRlcic7XG5pbXBvcnQgdXRpbHMgZnJvbSAnLi91dGlscyc7XG5cbmV4cG9ydCBjbGFzcyBUcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5IGV4dGVuZHMgQmFzZVRyYW5zYWN0aW9uQnVpbGRlckZhY3Rvcnkge1xuICBwcm90ZWN0ZWQgcmVjb3ZlclNpZ25lciA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKF9jb2luQ29uZmlnOiBSZWFkb25seTxDb2luQ29uZmlnPikge1xuICAgIHN1cGVyKF9jb2luQ29uZmlnKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBmcm9tKHJhdzogc3RyaW5nKTogVHJhbnNhY3Rpb25CdWlsZGVyIHtcbiAgICB1dGlscy52YWxpZGF0ZVJhd1RyYW5zYWN0aW9uKHJhdyk7XG4gICAgY29uc3QgcmF3Tm9IZXggPSB1dGlscy5yZW1vdmVIZXhQcmVmaXgocmF3KTtcbiAgICBjb25zdCByYXdCdWZmZXIgPSBCdWZmZXIuZnJvbShyYXdOb0hleCwgJ2hleCcpO1xuICAgIGxldCB0eFNvdXJjZTogJ0VWTScgfCAnUFZNJztcblxuICAgIGNvbnN0IG5ldHdvcmsgPSB0aGlzLl9jb2luQ29uZmlnLm5ldHdvcmsgYXMgRmxhcmVOZXR3b3JrO1xuICAgIGxldCB0eDogYW55O1xuICAgIHRyeSB7XG4gICAgICB0eFNvdXJjZSA9ICdFVk0nO1xuICAgICAgY29uc3QgZXZtTWFuYWdlciA9IEZsYXJlVXRpbHMuZ2V0TWFuYWdlckZvclZNKCdFVk0nKTtcbiAgICAgIHR4ID0gZXZtTWFuYWdlci51bnBhY2tUcmFuc2FjdGlvbihyYXdCdWZmZXIpO1xuICAgICAgY29uc3QgYmxvY2tjaGFpbklkID0gdHguZ2V0QmxvY2tjaGFpbklkKCk7XG5cbiAgICAgIGlmIChibG9ja2NoYWluSWQgPT09IG5ldHdvcmsuY0NoYWluQmxvY2tjaGFpbklEKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKCdQYXJzZWQgYXMgRVZNIHRyYW5zYWN0aW9uIG9uIEMtQ2hhaW4nKTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0eFNvdXJjZSA9ICdQVk0nO1xuICAgICAgY29uc3QgcHZtTWFuYWdlciA9IEZsYXJlVXRpbHMuZ2V0TWFuYWdlckZvclZNKCdQVk0nKTtcbiAgICAgIHR4ID0gcHZtTWFuYWdlci51bnBhY2tUcmFuc2FjdGlvbihyYXdCdWZmZXIpO1xuICAgICAgY29uc3QgYmxvY2tjaGFpbklkID0gdHguZ2V0QmxvY2tjaGFpbklkKCk7XG5cbiAgICAgIGlmIChibG9ja2NoYWluSWQgPT09IG5ldHdvcmsuYmxvY2tjaGFpbklEKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKCdQYXJzZWQgYXMgUFZNIHRyYW5zYWN0aW9uIG9uIFAtQ2hhaW4nKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodHhTb3VyY2UgPT09ICdFVk0nKSB7XG4gICAgICBpZiAoRXhwb3J0SW5DVHhCdWlsZGVyLnZlcmlmeVR4VHlwZSh0eC5fdHlwZSkpIHtcbiAgICAgICAgY29uc3QgZXhwb3J0QnVpbGRlciA9IHRoaXMuZ2V0RXhwb3J0SW5DQnVpbGRlcigpO1xuICAgICAgICBleHBvcnRCdWlsZGVyLmluaXRCdWlsZGVyKHR4IGFzIGV2bVNlcmlhbC5FeHBvcnRUeCwgcmF3QnVmZmVyKTtcbiAgICAgICAgcmV0dXJuIGV4cG9ydEJ1aWxkZXI7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICh0eFNvdXJjZSA9PT0gJ1BWTScpIHtcbiAgICAgIGlmIChJbXBvcnRJblBUeEJ1aWxkZXIudmVyaWZ5VHhUeXBlKHR4Ll90eXBlKSkge1xuICAgICAgICBjb25zdCBpbXBvcnRCdWlsZGVyID0gdGhpcy5nZXRJbXBvcnRJblBCdWlsZGVyKCk7XG4gICAgICAgIGltcG9ydEJ1aWxkZXIuaW5pdEJ1aWxkZXIodHggYXMgcHZtU2VyaWFsLkltcG9ydFR4LCByYXdCdWZmZXIpO1xuICAgICAgICByZXR1cm4gaW1wb3J0QnVpbGRlcjtcbiAgICAgIH0gZWxzZSBpZiAoRXhwb3J0SW5QVHhCdWlsZGVyLnZlcmlmeVR4VHlwZSh0eC5fdHlwZSkpIHtcbiAgICAgICAgY29uc3QgZXhwb3J0QnVpbGRlciA9IHRoaXMuZ2V0RXhwb3J0SW5QQnVpbGRlcigpO1xuICAgICAgICBleHBvcnRCdWlsZGVyLmluaXRCdWlsZGVyKHR4IGFzIHB2bVNlcmlhbC5FeHBvcnRUeCwgcmF3QnVmZmVyKTtcbiAgICAgICAgcmV0dXJuIGV4cG9ydEJ1aWxkZXI7XG4gICAgICB9XG4gICAgfVxuICAgIHRocm93IG5ldyBOb3RTdXBwb3J0ZWQoJ1RyYW5zYWN0aW9uIHR5cGUgbm90IHN1cHBvcnRlZCcpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIGdldFRyYW5zZmVyQnVpbGRlcigpOiBUcmFuc2FjdGlvbkJ1aWxkZXIge1xuICAgIHRocm93IG5ldyBOb3RTdXBwb3J0ZWQoJ1RyYW5zZmVyIGlzIG5vdCBzdXBwb3J0ZWQgaW4gUCBDaGFpbicpO1xuICB9XG5cbiAgLyoqXG4gICAqIEV4cG9ydCBDcm9zcyBjaGFpbiB0cmFuc2ZlclxuICAgKi9cbiAgZ2V0RXhwb3J0SW5QQnVpbGRlcigpOiBFeHBvcnRJblBUeEJ1aWxkZXIge1xuICAgIHJldHVybiBuZXcgRXhwb3J0SW5QVHhCdWlsZGVyKHRoaXMuX2NvaW5Db25maWcpO1xuICB9XG5cbiAgLyoqXG4gICAqIEltcG9ydCBDcm9zcyBjaGFpbiB0cmFuc2ZlclxuICAgKi9cbiAgZ2V0SW1wb3J0SW5QQnVpbGRlcigpOiBJbXBvcnRJblBUeEJ1aWxkZXIge1xuICAgIHJldHVybiBuZXcgSW1wb3J0SW5QVHhCdWlsZGVyKHRoaXMuX2NvaW5Db25maWcpO1xuICB9XG5cbiAgLyoqXG4gICAqIEltcG9ydCBpbiBDIGNoYWluIENyb3NzIGNoYWluIHRyYW5zZmVyXG4gICAqL1xuICBnZXRJbXBvcnRJbkNCdWlsZGVyKCk6IEltcG9ydEluQ1R4QnVpbGRlciB7XG4gICAgcmV0dXJuIG5ldyBJbXBvcnRJbkNUeEJ1aWxkZXIodGhpcy5fY29pbkNvbmZpZyk7XG4gIH1cblxuICAvKipcbiAgICogRXhwb3J0IGluIEMgY2hhaW4gQ3Jvc3MgY2hhaW4gdHJhbnNmZXJcbiAgICovXG4gIGdldEV4cG9ydEluQ0J1aWxkZXIoKTogRXhwb3J0SW5DVHhCdWlsZGVyIHtcbiAgICByZXR1cm4gbmV3IEV4cG9ydEluQ1R4QnVpbGRlcih0aGlzLl9jb2luQ29uZmlnKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBnZXRXYWxsZXRJbml0aWFsaXphdGlvbkJ1aWxkZXIoKTogVHJhbnNhY3Rpb25CdWlsZGVyIHtcbiAgICB0aHJvdyBuZXcgTm90U3VwcG9ydGVkKCdXYWxsZXQgaW5pdGlhbGl6YXRpb24gaXMgbm90IG5lZWRlZCcpO1xuICB9XG59XG4iXX0=