@bitgo-beta/unspents 0.13.2-beta.9 → 0.13.2-beta.900

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 (65) hide show
  1. package/.mocharc.js +1 -1
  2. package/CHANGELOG.md +541 -0
  3. package/bin/generate_tables.ts +94 -0
  4. package/dist/bin/generate_tables.d.ts +2 -0
  5. package/dist/bin/generate_tables.d.ts.map +1 -0
  6. package/dist/bin/generate_tables.js +107 -0
  7. package/dist/{codes.d.ts → src/codes.d.ts} +11 -10
  8. package/dist/src/codes.d.ts.map +1 -0
  9. package/dist/src/codes.js +182 -0
  10. package/dist/{dimensions.d.ts → src/dimensions.d.ts} +10 -11
  11. package/dist/src/dimensions.d.ts.map +1 -0
  12. package/dist/src/dimensions.js +500 -0
  13. package/dist/{index.d.ts → src/index.d.ts} +1 -0
  14. package/dist/src/index.d.ts.map +1 -0
  15. package/dist/src/index.js +44 -0
  16. package/dist/{inputWeights.d.ts → src/inputWeights.d.ts} +4 -3
  17. package/dist/src/inputWeights.d.ts.map +1 -0
  18. package/dist/src/inputWeights.js +97 -0
  19. package/dist/{scriptSizes.d.ts → src/scriptSizes.d.ts} +1 -0
  20. package/dist/src/scriptSizes.d.ts.map +1 -0
  21. package/dist/src/scriptSizes.js +50 -0
  22. package/dist/{types.d.ts → src/types.d.ts} +1 -0
  23. package/dist/src/types.d.ts.map +1 -0
  24. package/dist/src/types.js +39 -0
  25. package/dist/{virtualSizes.d.ts → src/virtualSizes.d.ts} +13 -12
  26. package/dist/src/virtualSizes.d.ts.map +1 -0
  27. package/dist/src/virtualSizes.js +114 -0
  28. package/dist/src/zcash.d.ts +9 -0
  29. package/dist/src/zcash.d.ts.map +1 -0
  30. package/dist/src/zcash.js +22 -0
  31. package/dist/test/chain.d.ts +2 -0
  32. package/dist/test/chain.d.ts.map +1 -0
  33. package/dist/test/chain.js +92 -0
  34. package/dist/test/dimensions.d.ts +2 -0
  35. package/dist/test/dimensions.d.ts.map +1 -0
  36. package/dist/test/dimensions.js +235 -0
  37. package/dist/test/signedTx/inputWeights.d.ts +2 -0
  38. package/dist/test/signedTx/inputWeights.d.ts.map +1 -0
  39. package/dist/test/signedTx/inputWeights.js +127 -0
  40. package/dist/test/signedTx/txCombinations.d.ts +3 -0
  41. package/dist/test/signedTx/txCombinations.d.ts.map +1 -0
  42. package/dist/test/signedTx/txCombinations.js +130 -0
  43. package/dist/test/signedTx/txGen.d.ts +74 -0
  44. package/dist/test/signedTx/txGen.d.ts.map +1 -0
  45. package/dist/test/signedTx/txGen.js +233 -0
  46. package/dist/test/testutils.d.ts +36 -0
  47. package/dist/test/testutils.d.ts.map +1 -0
  48. package/dist/test/testutils.js +190 -0
  49. package/dist/test/virtualSizes.d.ts +2 -0
  50. package/dist/test/virtualSizes.d.ts.map +1 -0
  51. package/dist/test/virtualSizes.js +18 -0
  52. package/dist/test/zcash.d.ts +2 -0
  53. package/dist/test/zcash.d.ts.map +1 -0
  54. package/dist/test/zcash.js +60 -0
  55. package/dist/tsconfig.build.tsbuildinfo +1 -0
  56. package/dist/tsconfig.tsbuildinfo +1 -0
  57. package/docs/input-costs.md +14 -0
  58. package/package.json +7 -7
  59. package/dist/codes.js +0 -168
  60. package/dist/dimensions.js +0 -490
  61. package/dist/index.js +0 -30
  62. package/dist/inputWeights.js +0 -97
  63. package/dist/scriptSizes.js +0 -51
  64. package/dist/types.js +0 -25
  65. package/dist/virtualSizes.js +0 -114
@@ -0,0 +1,500 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.Dimensions = exports.OutputDimensions = exports.VirtualSizes = void 0;
37
+ const utxolib = __importStar(require("@bitgo-beta/utxo-lib"));
38
+ const utxo_lib_1 = require("@bitgo-beta/utxo-lib");
39
+ const { isChainCode, scriptTypeForChain } = utxo_lib_1.bitgo;
40
+ const scriptSizes_1 = require("./scriptSizes");
41
+ const types_1 = require("./types");
42
+ const virtualSizes_1 = require("./virtualSizes");
43
+ Object.defineProperty(exports, "VirtualSizes", { enumerable: true, get: function () { return virtualSizes_1.VirtualSizes; } });
44
+ /**
45
+ * Apply `f` to all properties of `d`
46
+ */
47
+ function mapDimensions(d, f) {
48
+ return new Dimensions(Object.fromEntries(Object.entries(d).map(([key, value]) => [key, f(key, value)])));
49
+ }
50
+ /**
51
+ * Aggregate count and size of transaction outputs
52
+ */
53
+ class OutputDimensions {
54
+ constructor({ count = 0, size = 0 } = { count: 0, size: 0 }) {
55
+ if (count === 0 || size === 0) {
56
+ if (count !== 0 || size !== 0) {
57
+ throw new Error(`count and size must both be zero if one is zero`);
58
+ }
59
+ }
60
+ this.count = count;
61
+ this.size = size;
62
+ Object.freeze(this);
63
+ }
64
+ }
65
+ exports.OutputDimensions = OutputDimensions;
66
+ const defaultUnspentParams = {
67
+ p2tr: {
68
+ // Default to recovery script paths, to make it easier for recovery case callers (WRW etc).
69
+ // WP can explicitly pass scriptPathLevel: 1 to use happy path.
70
+ scriptPathLevel: 2,
71
+ },
72
+ p2trMusig2: {
73
+ // Default to script path spend, to make it easier for recovery case callers (WRW etc).
74
+ // WP can explicitly pass scriptPathLevel: undefined to use key path.
75
+ scriptPathLevel: 1,
76
+ },
77
+ };
78
+ /**
79
+ * Dimensions of a BitGo wallet transactions.
80
+ */
81
+ class Dimensions {
82
+ constructor(d = {}) {
83
+ /** Input counts for BitGo wallet multi-signature inputs */
84
+ this.nP2shInputs = 0;
85
+ this.nP2shP2wshInputs = 0;
86
+ this.nP2wshInputs = 0;
87
+ this.nP2trKeypathInputs = 0;
88
+ this.nP2trScriptPathLevel1Inputs = 0;
89
+ this.nP2trScriptPathLevel2Inputs = 0;
90
+ /* Input count for single-signature inputs (Replay Protection inputs) */
91
+ this.nP2shP2pkInputs = 0;
92
+ this.outputs = new OutputDimensions();
93
+ Object.entries(d).forEach(([key, value]) => this.setProperty(key, value));
94
+ Object.freeze(this);
95
+ }
96
+ setProperty(k, v) {
97
+ switch (k) {
98
+ case 'nP2shInputs':
99
+ case 'nP2shP2wshInputs':
100
+ case 'nP2wshInputs':
101
+ case 'nP2trKeypathInputs':
102
+ case 'nP2trScriptPathLevel1Inputs':
103
+ case 'nP2trScriptPathLevel2Inputs':
104
+ case 'nP2shP2pkInputs':
105
+ if (typeof v !== 'number') {
106
+ throw new Error(`property ${k} must be number`);
107
+ }
108
+ if (!Number.isSafeInteger(v) || v < 0) {
109
+ throw new Error(`property ${k} must be zero or positive integer`);
110
+ }
111
+ break;
112
+ case 'outputs':
113
+ if (!(v instanceof OutputDimensions)) {
114
+ v = new OutputDimensions(v);
115
+ }
116
+ break;
117
+ default:
118
+ throw new Error(`unknown property ${k}`);
119
+ }
120
+ this[k] = v;
121
+ }
122
+ /**
123
+ * @deprecated use ZERO
124
+ * @return Dimensions for an empty transaction
125
+ */
126
+ static zero() {
127
+ return this.ZERO;
128
+ }
129
+ /**
130
+ * @param size
131
+ * @return Dimensions for a single output with given size
132
+ */
133
+ static singleOutput(size) {
134
+ return Dimensions.sum({ outputs: { count: 1, size } });
135
+ }
136
+ /**
137
+ * @return Number of total inputs (p2sh + p2shP2wsh + p2wsh + p2tr)
138
+ */
139
+ get nInputs() {
140
+ return (this.nP2shInputs +
141
+ this.nP2shP2wshInputs +
142
+ this.nP2wshInputs +
143
+ this.nP2trKeypathInputs +
144
+ this.nP2trScriptPathLevel1Inputs +
145
+ this.nP2trScriptPathLevel2Inputs +
146
+ this.nP2shP2pkInputs);
147
+ }
148
+ set nInputs(_) {
149
+ throw new Error('read-only property nInputs');
150
+ }
151
+ /**
152
+ * @return Number of total outputs
153
+ */
154
+ get nOutputs() {
155
+ return this.outputs.count;
156
+ }
157
+ set nOutputs(_) {
158
+ throw new Error(`read-only property nOutputs`);
159
+ }
160
+ /**
161
+ * @param args - Dimensions (can be partially defined)
162
+ * @return {Dimensions} sum of arguments
163
+ */
164
+ static sum(...args) {
165
+ return args.reduce((a, b) => a.plus(b), new Dimensions());
166
+ }
167
+ /**
168
+ * @param chain
169
+ * @return {Number}
170
+ */
171
+ static getOutputScriptLengthForChain(chain) {
172
+ switch (scriptTypeForChain(chain)) {
173
+ case 'p2wsh':
174
+ case 'p2tr':
175
+ case 'p2trMusig2':
176
+ return 34;
177
+ default:
178
+ return 23;
179
+ }
180
+ }
181
+ /**
182
+ * @param scriptLength
183
+ * @return {Number} vSize of an output with script length
184
+ */
185
+ static getVSizeForOutputWithScriptLength(scriptLength) {
186
+ if (!types_1.PositiveInteger.is(scriptLength)) {
187
+ throw new TypeError(`expected positive integer for scriptLength, got ${scriptLength}`);
188
+ }
189
+ return scriptLength + (0, scriptSizes_1.compactSize)(scriptLength) + virtualSizes_1.VirtualSizes.txOutputAmountSize;
190
+ }
191
+ /**
192
+ * @return
193
+ */
194
+ static fromScriptType(scriptType, params = {}) {
195
+ switch (scriptType) {
196
+ case 'p2sh':
197
+ case 'p2shP2wsh':
198
+ case 'p2wsh':
199
+ case 'p2shP2pk':
200
+ return Dimensions.SingleInput[scriptType];
201
+ case 'p2tr':
202
+ case 'taprootScriptPathSpend':
203
+ switch (params.scriptPathLevel) {
204
+ case 1:
205
+ return Dimensions.SingleInput.p2trScriptPathLevel1;
206
+ case 2:
207
+ return Dimensions.SingleInput.p2trScriptPathLevel2;
208
+ default:
209
+ throw new Error(`unexpected script path level`);
210
+ }
211
+ case 'p2trMusig2':
212
+ switch (params.scriptPathLevel) {
213
+ case undefined:
214
+ return Dimensions.SingleInput.p2trKeypath;
215
+ case 1:
216
+ return Dimensions.SingleInput.p2trScriptPathLevel1;
217
+ default:
218
+ throw new Error(`unexpected script path level`);
219
+ }
220
+ case 'taprootKeyPathSpend':
221
+ return Dimensions.SingleInput.p2trKeypath;
222
+ default:
223
+ throw new Error(`unexpected scriptType ${scriptType}`);
224
+ }
225
+ }
226
+ static getAssumedDimension(params = {}, index) {
227
+ const { assumeUnsigned } = params;
228
+ if (!assumeUnsigned) {
229
+ throw new Error(`illegal input ${index}: empty script and assumeUnsigned not set`);
230
+ }
231
+ return assumeUnsigned;
232
+ }
233
+ /**
234
+ * @param input - the transaction input to count
235
+ * @param params
236
+ * [param.assumeUnsigned] - default type for unsigned input
237
+ */
238
+ static fromInput(input, params = {}) {
239
+ if (input.script?.length || input.witness?.length) {
240
+ const parsed = utxolib.bitgo.parseSignatureScript(input);
241
+ return Dimensions.fromScriptType(parsed.scriptType, parsed);
242
+ }
243
+ return Dimensions.getAssumedDimension(params, input.index);
244
+ }
245
+ /**
246
+ * Create Dimensions from psbt input
247
+ * @param input - psbt input
248
+ */
249
+ static fromPsbtInput(input) {
250
+ const parsed = utxo_lib_1.bitgo.parsePsbtInput(input);
251
+ return Dimensions.fromScriptType(parsed.scriptType, parsed);
252
+ }
253
+ /**
254
+ * @param inputs - Array of inputs
255
+ * @param params - @see Dimensions.fromInput()
256
+ * @return {Dimensions} sum of the dimensions for each input (@see Dimensions.fromInput())
257
+ */
258
+ static fromInputs(inputs, params) {
259
+ if (!Array.isArray(inputs)) {
260
+ throw new TypeError(`inputs must be array`);
261
+ }
262
+ return Dimensions.sum(...inputs.map((i) => Dimensions.fromInput(i, params)));
263
+ }
264
+ /**
265
+ * Create Dimensions from multiple psbt inputs
266
+ * @param inputs psbt input array
267
+ * @return {Dimensions} sum of the dimensions for each input (@see Dimensions.fromPsbtInput())
268
+ */
269
+ static fromPsbtInputs(inputs) {
270
+ if (!Array.isArray(inputs)) {
271
+ throw new TypeError(`inputs must be array`);
272
+ }
273
+ return Dimensions.sum(...inputs.map((input, _) => Dimensions.fromPsbtInput(input)));
274
+ }
275
+ /**
276
+ * @param scriptLength {number} - size of the output script in bytes
277
+ * @return {Dimensions} - Dimensions of the output
278
+ */
279
+ static fromOutputScriptLength(scriptLength) {
280
+ return Dimensions.sum({
281
+ outputs: {
282
+ count: 1,
283
+ size: Dimensions.getVSizeForOutputWithScriptLength(scriptLength),
284
+ },
285
+ });
286
+ }
287
+ /**
288
+ * @param output - a tx output
289
+ * @return Dimensions - the dimensions of the given output
290
+ */
291
+ static fromOutput({ script }) {
292
+ if (!script) {
293
+ throw new Error('expected output script to be defined');
294
+ }
295
+ if (!Buffer.isBuffer(script)) {
296
+ throw new TypeError('expected script to be buffer, got ' + typeof script);
297
+ }
298
+ return Dimensions.fromOutputScriptLength(script.length);
299
+ }
300
+ /**
301
+ * @param outputs - Array of outputs
302
+ * @return {Dimensions} sum of the dimensions for each output (@see Dimensions.fromOutput())
303
+ */
304
+ static fromOutputs(outputs) {
305
+ if (!Array.isArray(outputs)) {
306
+ throw new TypeError(`outputs must be array`);
307
+ }
308
+ return Dimensions.sum(...outputs.map(Dimensions.fromOutput));
309
+ }
310
+ /**
311
+ * Returns the dimensions of an output that will be created on a specific chain.
312
+ * Currently, this simply adds a default output.
313
+ *
314
+ * @param chain - Chain code as defined by utxolib.bitgo
315
+ * @return {Dimensions} - Dimensions for a single output on the given chain.
316
+ */
317
+ static fromOutputOnChain(chain) {
318
+ return Dimensions.fromOutputScriptLength(Dimensions.getOutputScriptLengthForChain(chain));
319
+ }
320
+ /**
321
+ * Return dimensions of an unspent according to `chain` parameter
322
+ * @param chain - Chain code as defined by utxo.chain
323
+ * @param params - Hint for unspents with variable input sizes (p2tr, p2trMusig2)
324
+ * @return {Dimensions} of the unspent
325
+ * @throws if the chain code is invalid or unsupported
326
+ */
327
+ static fromUnspent({ chain }, params = defaultUnspentParams) {
328
+ if (!isChainCode(chain)) {
329
+ throw new TypeError('invalid chain code');
330
+ }
331
+ const scriptType = scriptTypeForChain(chain);
332
+ return Dimensions.fromScriptType(scriptType, scriptType === 'p2tr' ? params.p2tr : scriptType === 'p2trMusig2' ? params.p2trMusig2 : {});
333
+ }
334
+ /**
335
+ * @param unspents
336
+ * @param params - Hint for unspents with variable input sizes (p2tr, p2trMusig2)
337
+ * @return {Dimensions} sum of the dimensions for each unspent (@see Dimensions.fromUnspent())
338
+ */
339
+ static fromUnspents(unspents, params = defaultUnspentParams) {
340
+ if (!Array.isArray(unspents)) {
341
+ throw new TypeError(`unspents must be array`);
342
+ }
343
+ // Convert the individual unspents into dimensions and sum them up
344
+ return Dimensions.sum(...unspents.map((u) => Dimensions.fromUnspent(u, params)));
345
+ }
346
+ /**
347
+ * @param transaction - bitcoin-like transaction
348
+ * @param [param.assumeUnsigned] - default type for unsigned inputs
349
+ * @return {Dimensions}
350
+ */
351
+ static fromTransaction({ ins, outs, }, params) {
352
+ return Dimensions.fromInputs(ins, params).plus(Dimensions.fromOutputs(outs));
353
+ }
354
+ /**
355
+ * Create Dimensions from psbt inputs and outputs
356
+ * @param psbt
357
+ * @return {Dimensions}
358
+ */
359
+ static fromPsbt(psbt) {
360
+ return Dimensions.fromPsbtInputs(psbt.data.inputs).plus(Dimensions.fromOutputs(psbt.getUnsignedTx().outs));
361
+ }
362
+ /**
363
+ * @param dimensions (can be partially defined)
364
+ * @return new dimensions with argument added
365
+ */
366
+ plus(dimensions) {
367
+ if (typeof dimensions !== 'object') {
368
+ throw new TypeError(`expected argument to be object`);
369
+ }
370
+ if (!(dimensions instanceof Dimensions)) {
371
+ dimensions = new Dimensions(dimensions);
372
+ }
373
+ // Catch instances where we try to initialize Dimensions from partial data using deprecated parameters
374
+ // using only "nOutputs".
375
+ if ('nOutputs' in dimensions) {
376
+ if (!('outputs' in dimensions)) {
377
+ throw new Error('deprecated partial addition: argument has key "nOutputs" but no "outputs"');
378
+ }
379
+ const { outputs, nOutputs } = dimensions;
380
+ if (outputs.count !== nOutputs) {
381
+ throw new Error('deprecated partial addition: inconsistent values for "nOutputs" and "outputs.count"');
382
+ }
383
+ }
384
+ return mapDimensions(this, (key, v) => {
385
+ const w = dimensions[key] ?? Dimensions.ZERO[key];
386
+ if (key === 'outputs') {
387
+ const vOutputs = v;
388
+ const wOutputs = w;
389
+ return new OutputDimensions({
390
+ count: vOutputs.count + wOutputs.count,
391
+ size: vOutputs.size + wOutputs.size,
392
+ });
393
+ }
394
+ return v + w;
395
+ });
396
+ }
397
+ /**
398
+ * Multiply dimensions by a given factor
399
+ * @param factor - Positive integer
400
+ * @return {Dimensions}
401
+ */
402
+ times(factor) {
403
+ if (!types_1.PositiveInteger.is(factor)) {
404
+ throw new TypeError(`expected factor to be positive integer`);
405
+ }
406
+ return mapDimensions(this, (key, value) => {
407
+ if (key === 'outputs') {
408
+ const vOutputs = value;
409
+ return {
410
+ count: vOutputs.count * factor,
411
+ size: vOutputs.size * factor,
412
+ };
413
+ }
414
+ return value * factor;
415
+ });
416
+ }
417
+ /**
418
+ * @return Number of total inputs (p2sh, p2shP2wsh and p2wsh)
419
+ * @deprecated use `dimension.nInputs` instead
420
+ */
421
+ getNInputs() {
422
+ return this.nInputs;
423
+ }
424
+ /**
425
+ * @returns {boolean} true iff dimensions have one or more (p2sh)p2wsh inputs
426
+ */
427
+ isSegwit() {
428
+ return (this.nP2wshInputs +
429
+ this.nP2shP2wshInputs +
430
+ this.nP2trKeypathInputs +
431
+ this.nP2trScriptPathLevel1Inputs +
432
+ this.nP2trScriptPathLevel2Inputs >
433
+ 0);
434
+ }
435
+ /**
436
+ * @return {Number} overhead vsize, based on result isSegwit().
437
+ */
438
+ getOverheadVSize() {
439
+ return this.isSegwit() ? virtualSizes_1.VirtualSizes.txSegOverheadVSize : virtualSizes_1.VirtualSizes.txOverheadSize;
440
+ }
441
+ /**
442
+ * @returns {number} vsize of inputs, without transaction overhead
443
+ */
444
+ getInputsVSize() {
445
+ const { txP2shInputSize, txP2shP2wshInputSize, txP2wshInputSize, txP2trKeypathInputSize, txP2trScriptPathLevel1InputSize, txP2trScriptPathLevel2InputSize, txP2shP2pkInputSize, } = virtualSizes_1.VirtualSizes;
446
+ const { nP2shInputs, nP2shP2wshInputs, nP2wshInputs, nP2trKeypathInputs, nP2trScriptPathLevel1Inputs, nP2trScriptPathLevel2Inputs, nP2shP2pkInputs, } = this;
447
+ const size = nP2shInputs * txP2shInputSize +
448
+ nP2shP2wshInputs * txP2shP2wshInputSize +
449
+ nP2wshInputs * txP2wshInputSize +
450
+ nP2trKeypathInputs * txP2trKeypathInputSize +
451
+ nP2shP2pkInputs * txP2shP2pkInputSize +
452
+ nP2trScriptPathLevel1Inputs * txP2trScriptPathLevel1InputSize +
453
+ nP2trScriptPathLevel2Inputs * txP2trScriptPathLevel2InputSize;
454
+ if (Number.isNaN(size)) {
455
+ throw new Error(`invalid size`);
456
+ }
457
+ return size;
458
+ }
459
+ /**
460
+ * @returns {number} return vsize of outputs, without overhead
461
+ */
462
+ getOutputsVSize() {
463
+ return this.outputs.size;
464
+ }
465
+ /**
466
+ * Estimates the virtual size (1/4 weight) of a signed transaction as sum of
467
+ * overhead vsize, input vsize and output vsize.
468
+ * @returns {Number} The estimated vsize of the transaction dimensions.
469
+ */
470
+ getVSize() {
471
+ return this.getOverheadVSize() + this.getInputsVSize() + this.getOutputsVSize();
472
+ }
473
+ }
474
+ exports.Dimensions = Dimensions;
475
+ Dimensions.ZERO = Object.freeze(new Dimensions());
476
+ Dimensions.SingleOutput = Object.freeze({
477
+ p2sh: Dimensions.singleOutput(virtualSizes_1.VirtualSizes.txP2shOutputSize),
478
+ p2shP2wsh: Dimensions.singleOutput(virtualSizes_1.VirtualSizes.txP2shP2wshOutputSize),
479
+ p2wsh: Dimensions.singleOutput(virtualSizes_1.VirtualSizes.txP2wshOutputSize),
480
+ p2tr: Dimensions.singleOutput(virtualSizes_1.VirtualSizes.txP2trOutputSize),
481
+ p2pkh: Dimensions.singleOutput(virtualSizes_1.VirtualSizes.txP2pkhOutputSize),
482
+ p2wpkh: Dimensions.singleOutput(virtualSizes_1.VirtualSizes.txP2wpkhOutputSize),
483
+ });
484
+ Dimensions.SingleInput = Object.freeze({
485
+ p2sh: Dimensions.sum({ nP2shInputs: 1 }),
486
+ p2shP2wsh: Dimensions.sum({ nP2shP2wshInputs: 1 }),
487
+ p2wsh: Dimensions.sum({ nP2wshInputs: 1 }),
488
+ p2trKeypath: Dimensions.sum({ nP2trKeypathInputs: 1 }),
489
+ p2trScriptPathLevel1: Dimensions.sum({ nP2trScriptPathLevel1Inputs: 1 }),
490
+ p2trScriptPathLevel2: Dimensions.sum({ nP2trScriptPathLevel2Inputs: 1 }),
491
+ p2shP2pk: Dimensions.sum({ nP2shP2pkInputs: 1 }),
492
+ });
493
+ Dimensions.ASSUME_P2SH = Dimensions.SingleInput.p2sh;
494
+ Dimensions.ASSUME_P2SH_P2WSH = Dimensions.SingleInput.p2shP2wsh;
495
+ Dimensions.ASSUME_P2WSH = Dimensions.SingleInput.p2wsh;
496
+ Dimensions.ASSUME_P2TR_KEYPATH = Dimensions.SingleInput.p2trKeypath;
497
+ Dimensions.ASSUME_P2TR_SCRIPTPATH_LEVEL1 = Dimensions.SingleInput.p2trScriptPathLevel1;
498
+ Dimensions.ASSUME_P2TR_SCRIPTPATH_LEVEL2 = Dimensions.SingleInput.p2trScriptPathLevel2;
499
+ Dimensions.ASSUME_P2SH_P2PK_INPUT = Dimensions.SingleInput.p2shP2pk;
500
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGltZW5zaW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kaW1lbnNpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDhEQUFnRDtBQUNoRCxtREFBNkM7QUFDN0MsTUFBTSxFQUFFLFdBQVcsRUFBRSxrQkFBa0IsRUFBRSxHQUFHLGdCQUFLLENBQUM7QUFHbEQsK0NBQTRDO0FBQzVDLG1DQUEwQztBQUUxQyxpREFBOEM7QUFDckMsNkZBREEsMkJBQVksT0FDQTtBQUVyQjs7R0FFRztBQUNILFNBQVMsYUFBYSxDQUNwQixDQUFzQixFQUN0QixDQUFnRjtJQUVoRixPQUFPLElBQUksVUFBVSxDQUNuQixNQUFNLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUF1QixFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUN0RyxDQUFDO0FBQ0osQ0FBQztBQUVEOztHQUVHO0FBQ0gsTUFBYSxnQkFBZ0I7SUFVM0IsWUFBWSxFQUFFLEtBQUssR0FBRyxDQUFDLEVBQUUsSUFBSSxHQUFHLENBQUMsS0FBdUIsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUU7UUFDM0UsSUFBSSxLQUFLLEtBQUssQ0FBQyxJQUFJLElBQUksS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUM5QixJQUFJLEtBQUssS0FBSyxDQUFDLElBQUksSUFBSSxLQUFLLENBQUMsRUFBRSxDQUFDO2dCQUM5QixNQUFNLElBQUksS0FBSyxDQUFDLGlEQUFpRCxDQUFDLENBQUM7WUFDckUsQ0FBQztRQUNILENBQUM7UUFFRCxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FB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UyxBQUFuQyxDQUFvQztBQUNyRCx1QkFBWSxHQUFHLFVBQVUsQ0FBQyxXQUFXLENBQUMsS0FBSyxBQUEvQixDQUFnQztBQUM1Qyw4QkFBbUIsR0FBRyxVQUFVLENBQUMsV0FBVyxDQUFDLFdBQVcsQUFBckMsQ0FBc0M7QUFDekQsd0NBQTZCLEdBQUcsVUFBVSxDQUFDLFdBQVcsQ0FBQyxvQkFBb0IsQUFBOUMsQ0FBK0M7QUFDNUUsd0NBQTZCLEdBQUcsVUFBVSxDQUFDLFdBQVcsQ0FBQyxvQkFBb0IsQUFBOUMsQ0FBK0M7QUFDNUUsaUNBQXNCLEdBQUcsVUFBVSxDQUFDLFdBQVcsQ0FBQyxRQUFRLEFBQWxDLENBQW1DIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgdXR4b2xpYiBmcm9tICdAYml0Z28tYmV0YS91dHhvLWxpYic7XG5pbXBvcnQgeyBiaXRnbyB9IGZyb20gJ0BiaXRnby1iZXRhL3V0eG8tbGliJztcbmNvbnN0IHsgaXNDaGFpbkNvZGUsIHNjcmlwdFR5cGVGb3JDaGFpbiB9ID0gYml0Z287XG50eXBlIENoYWluQ29kZSA9IGJpdGdvLkNoYWluQ29kZTtcblxuaW1wb3J0IHsgY29tcGFjdFNpemUgfSBmcm9tICcuL3NjcmlwdFNpemVzJztcbmltcG9ydCB7IFBvc2l0aXZlSW50ZWdlciB9IGZyb20gJy4vdHlwZXMnO1xuXG5pbXBvcnQgeyBWaXJ0dWFsU2l6ZXMgfSBmcm9tICcuL3ZpcnR1YWxTaXplcyc7XG5leHBvcnQgeyBWaXJ0dWFsU2l6ZXMgfTtcblxuLyoqXG4gKiBBcHBseSBgZmAgdG8gYWxsIHByb3BlcnRpZXMgb2YgYGRgXG4gKi9cbmZ1bmN0aW9uIG1hcERpbWVuc2lvbnMoXG4gIGQ6IFBhcnRpYWw8RGltZW5zaW9ucz4sXG4gIGY6IDxUIGV4dGVuZHMga2V5b2YgRGltZW5zaW9ucz4oa2V5OiBULCB2OiBEaW1lbnNpb25zW1RdIHwgdW5kZWZpbmVkKSA9PiB1bmtub3duXG4pOiBEaW1lbnNpb25zIHtcbiAgcmV0dXJuIG5ldyBEaW1lbnNpb25zKFxuICAgIE9iamVjdC5mcm9tRW50cmllcyhPYmplY3QuZW50cmllcyhkKS5tYXAoKFtrZXksIHZhbHVlXSkgPT4gW2tleSwgZihrZXkgYXMga2V5b2YgRGltZW5zaW9ucywgdmFsdWUpXSkpXG4gICk7XG59XG5cbi8qKlxuICogQWdncmVnYXRlIGNvdW50IGFuZCBzaXplIG9mIHRyYW5zYWN0aW9uIG91dHB1dHNcbiAqL1xuZXhwb3J0IGNsYXNzIE91dHB1dERpbWVuc2lvbnMge1xuICAvKipcbiAgICogTnVtYmVyIG9mIG91dHB1dHNcbiAgICovXG4gIGNvdW50OiBudW1iZXI7XG4gIC8qKlxuICAgKiBBZ2dyZWdhdGUgdlNpemVcbiAgICovXG4gIHNpemU6IG51bWJlcjtcblxuICBjb25zdHJ1Y3Rvcih7IGNvdW50ID0gMCwgc2l6ZSA9IDAgfTogT3V0cHV0RGltZW5zaW9ucyA9IHsgY291bnQ6IDAsIHNpemU6IDAgfSkge1xuICAgIGlmIChjb3VudCA9PT0gMCB8fCBzaXplID09PSAwKSB7XG4gICAgICBpZiAoY291bnQgIT09IDAgfHwgc2l6ZSAhPT0gMCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGNvdW50IGFuZCBzaXplIG11c3QgYm90aCBiZSB6ZXJvIGlmIG9uZSBpcyB6ZXJvYCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5jb3VudCA9IGNvdW50O1xuICAgIHRoaXMuc2l6ZSA9IHNpemU7XG5cbiAgICBPYmplY3QuZnJlZXplKHRoaXMpO1xuICB9XG59XG5cbmludGVyZmFjZSBGcm9tSW5wdXRQYXJhbXMge1xuICAvLyBJbiBjYXNlcyB3aGVyZSB0aGUgaW5wdXQgdHlwZSBpcyBhbWJpZ3VvdXMsIHdlIG11c3QgcHJvdmlkZSBhIGhpbnQgYWJvdXQgc3BlbmQgc2NyaXB0IHR5cGUuXG4gIGFzc3VtZVVuc2lnbmVkPzogRGltZW5zaW9ucztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGcm9tVW5zcGVudFBhcmFtcyB7XG4gIHAydHI6IHtcbiAgICBzY3JpcHRQYXRoTGV2ZWw/OiBudW1iZXI7XG4gIH07XG4gIHAydHJNdXNpZzI6IHtcbiAgICBzY3JpcHRQYXRoTGV2ZWw/OiBudW1iZXI7XG4gIH07XG59XG5cbmNvbnN0IGRlZmF1bHRVbnNwZW50UGFyYW1zOiBGcm9tVW5zcGVudFBhcmFtcyA9IHtcbiAgcDJ0cjoge1xuICAgIC8vIERlZmF1bHQgdG8gcmVjb3Zlcnkgc2NyaXB0IHBhdGhzLCB0byBtYWtlIGl0IGVhc2llciBmb3IgcmVjb3ZlcnkgY2FzZSBjYWxsZXJzIChXUlcgZXRjKS5cbiAgICAvLyBXUCBjYW4gZXhwbGljaXRseSBwYXNzIHNjcmlwdFBhdGhMZXZlbDogMSB0byB1c2UgaGFwcHkgcGF0aC5cbiAgICBzY3JpcHRQYXRoTGV2ZWw6IDIsXG4gIH0sXG4gIHAydHJNdXNpZzI6IHtcbiAgICAvLyBEZWZhdWx0IHRvIHNjcmlwdCBwYXRoIHNwZW5kLCB0byBtYWtlIGl0IGVhc2llciBmb3IgcmVjb3ZlcnkgY2FzZSBjYWxsZXJzIChXUlcgZXRjKS5cbiAgICAvLyBXUCBjYW4gZXhwbGljaXRseSBwYXNzIHNjcmlwdFBhdGhMZXZlbDogdW5kZWZpbmVkIHRvIHVzZSBrZXkgcGF0aC5cbiAgICBzY3JpcHRQYXRoTGV2ZWw6IDEsXG4gIH0sXG59O1xuXG4vKipcbiAqIERpbWVuc2lvbnMgb2YgYSBCaXRHbyB3YWxsZXQgdHJhbnNhY3Rpb25zLlxuICovXG5leHBvcnQgY2xhc3MgRGltZW5zaW9ucyB7XG4gIC8qKiBJbnB1dCBjb3VudHMgZm9yIEJpdEdvIHdhbGxldCBtdWx0aS1zaWduYXR1cmUgaW5wdXRzICovXG4gIHB1YmxpYyByZWFkb25seSBuUDJzaElucHV0czogbnVtYmVyID0gMDtcbiAgcHVibGljIHJlYWRvbmx5IG5QMnNoUDJ3c2hJbnB1dHM6IG51bWJlciA9IDA7XG4gIHB1YmxpYyByZWFkb25seSBuUDJ3c2hJbnB1dHM6IG51bWJlciA9IDA7XG4gIHB1YmxpYyByZWFkb25seSBuUDJ0cktleXBhdGhJbnB1dHM6IG51bWJlciA9IDA7XG4gIHB1YmxpYyByZWFkb25seSBuUDJ0clNjcmlwdFBhdGhMZXZlbDFJbnB1dHM6IG51bWJlciA9IDA7XG4gIHB1YmxpYyByZWFkb25seSBuUDJ0clNjcmlwdFBhdGhMZXZlbDJJbnB1dHM6IG51bWJlciA9IDA7XG5cbiAgLyogSW5wdXQgY291bnQgZm9yIHNpbmdsZS1zaWduYXR1cmUgaW5wdXRzIChSZXBsYXkgUHJvdGVjdGlvbiBpbnB1dHMpICovXG4gIHB1YmxpYyByZWFkb25seSBuUDJzaFAycGtJbnB1dHM6IG51bWJlciA9IDA7XG5cbiAgcHVibGljIHJlYWRvbmx5IG91dHB1dHM6IE91dHB1dERpbWVuc2lvbnMgPSBuZXcgT3V0cHV0RGltZW5zaW9ucygpO1xuXG4gIGNvbnN0cnVjdG9yKGQ6IFBhcnRpYWw8RGltZW5zaW9ucz4gPSB7fSkge1xuICAgIE9iamVjdC5lbnRyaWVzKGQpLmZvckVhY2goKFtrZXksIHZhbHVlXSkgPT4gdGhpcy5zZXRQcm9wZXJ0eShrZXksIHZhbHVlKSk7XG5cbiAgICBPYmplY3QuZnJlZXplKHRoaXMpO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRQcm9wZXJ0eShrOiBzdHJpbmcsIHY6IHVua25vd24pOiB2b2lkIHtcbiAgICBzd2l0Y2ggKGspIHtcbiAgICAgIGNhc2UgJ25QMnNoSW5wdXRzJzpcbiAgICAgIGNhc2UgJ25QMnNoUDJ3c2hJbnB1dHMnOlxuICAgICAgY2FzZSAnblAyd3NoSW5wdXRzJzpcbiAgICAgIGNhc2UgJ25QMnRyS2V5cGF0aElucHV0cyc6XG4gICAgICBjYXNlICduUDJ0clNjcmlwdFBhdGhMZXZlbDFJbnB1dHMnOlxuICAgICAgY2FzZSAnblAydHJTY3JpcHRQYXRoTGV2ZWwySW5wdXRzJzpcbiAgICAgIGNhc2UgJ25QMnNoUDJwa0lucHV0cyc6XG4gICAgICAgIGlmICh0eXBlb2YgdiAhPT0gJ251bWJlcicpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYHByb3BlcnR5ICR7a30gbXVzdCBiZSBudW1iZXJgKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIU51bWJlci5pc1NhZmVJbnRlZ2VyKHYpIHx8IHYgPCAwKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBwcm9wZXJ0eSAke2t9IG11c3QgYmUgemVybyBvciBwb3NpdGl2ZSBpbnRlZ2VyYCk7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdvdXRwdXRzJzpcbiAgICAgICAgaWYgKCEodiBpbnN0YW5jZW9mIE91dHB1dERpbWVuc2lvbnMpKSB7XG4gICAgICAgICAgdiA9IG5ldyBPdXRwdXREaW1lbnNpb25zKHYgYXMgT3V0cHV0RGltZW5zaW9ucyk7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYHVua25vd24gcHJvcGVydHkgJHtrfWApO1xuICAgIH1cblxuICAgICh0aGlzIGFzIGFueSlba10gPSB2O1xuICB9XG5cbiAgc3RhdGljIHJlYWRvbmx5IFpFUk8gPSBPYmplY3QuZnJlZXplKG5ldyBEaW1lbnNpb25zKCkpO1xuXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCB1c2UgWkVST1xuICAgKiBAcmV0dXJuIERpbWVuc2lvbnMgZm9yIGFuIGVtcHR5IHRyYW5zYWN0aW9uXG4gICAqL1xuICBzdGF0aWMgemVybygpOiBSZWFkb25seTxEaW1lbnNpb25zPiB7XG4gICAgcmV0dXJuIHRoaXMuWkVSTztcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0gc2l6ZVxuICAgKiBAcmV0dXJuIERpbWVuc2lvbnMgZm9yIGEgc2luZ2xlIG91dHB1dCB3aXRoIGdpdmVuIHNpemVcbiAgICovXG4gIHN0YXRpYyBzaW5nbGVPdXRwdXQoc2l6ZTogbnVtYmVyKTogRGltZW5zaW9ucyB7XG4gICAgcmV0dXJuIERpbWVuc2lvbnMuc3VtKHsgb3V0cHV0czogeyBjb3VudDogMSwgc2l6ZSB9IH0pO1xuICB9XG5cbiAgc3RhdGljIHJlYWRvbmx5IFNpbmdsZU91dHB1dCA9IE9iamVjdC5mcmVlemUoe1xuICAgIHAyc2g6IERpbWVuc2lvbnMuc2luZ2xlT3V0cHV0KFZpcnR1YWxTaXplcy50eFAyc2hPdXRwdXRTaXplKSxcbiAgICBwMnNoUDJ3c2g6IERpbWVuc2lvbnMuc2luZ2xlT3V0cHV0KFZpcnR1YWxTaXplcy50eFAyc2hQMndzaE91dHB1dFNpemUpLFxuICAgIHAyd3NoOiBEaW1lbnNpb25zLnNpbmdsZU91dHB1dChWaXJ0dWFsU2l6ZXMudHhQMndzaE91dHB1dFNpemUpLFxuICAgIHAydHI6IERpbWVuc2lvbnMuc2luZ2xlT3V0cHV0KFZpcnR1YWxTaXplcy50eFAydHJPdXRwdXRTaXplKSxcblxuICAgIHAycGtoOiBEaW1lbnNpb25zLnNpbmdsZU91dHB1dChWaXJ0dWFsU2l6ZXMudHhQMnBraE91dHB1dFNpemUpLFxuICAgIHAyd3BraDogRGltZW5zaW9ucy5zaW5nbGVPdXRwdXQoVmlydHVhbFNpemVzLnR4UDJ3cGtoT3V0cHV0U2l6ZSksXG4gIH0pO1xuXG4gIC8qKlxuICAgKiBAcmV0dXJuIE51bWJlciBvZiB0b3RhbCBpbnB1dHMgKHAyc2ggKyBwMnNoUDJ3c2ggKyBwMndzaCArIHAydHIpXG4gICAqL1xuICBnZXQgbklucHV0cygpOiBudW1iZXIge1xuICAgIHJldHVybiAoXG4gICAgICB0aGlzLm5QMnNoSW5wdXRzICtcbiAgICAgIHRoaXMublAyc2hQMndzaElucHV0cyArXG4gICAgICB0aGlzLm5QMndzaElucHV0cyArXG4gICAgICB0aGlzLm5QMnRyS2V5cGF0aElucHV0cyArXG4gICAgICB0aGlzLm5QMnRyU2NyaXB0UGF0aExldmVsMUlucHV0cyArXG4gICAgICB0aGlzLm5QMnRyU2NyaXB0UGF0aExldmVsMklucHV0cyArXG4gICAgICB0aGlzLm5QMnNoUDJwa0lucHV0c1xuICAgICk7XG4gIH1cblxuICBzZXQgbklucHV0cyhfOiBudW1iZXIpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ3JlYWQtb25seSBwcm9wZXJ0eSBuSW5wdXRzJyk7XG4gIH1cblxuICAvKipcbiAgICogQHJldHVybiBOdW1iZXIgb2YgdG90YWwgb3V0cHV0c1xuICAgKi9cbiAgZ2V0IG5PdXRwdXRzKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMub3V0cHV0cy5jb3VudDtcbiAgfVxuXG4gIHNldCBuT3V0cHV0cyhfOiBudW1iZXIpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYHJlYWQtb25seSBwcm9wZXJ0eSBuT3V0cHV0c2ApO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSBhcmdzIC0gRGltZW5zaW9ucyAoY2FuIGJlIHBhcnRpYWxseSBkZWZpbmVkKVxuICAgKiBAcmV0dXJuIHtEaW1lbnNpb25zfSBzdW0gb2YgYXJndW1lbnRzXG4gICAqL1xuICBzdGF0aWMgc3VtKC4uLmFyZ3M6IFBhcnRpYWw8RGltZW5zaW9ucz5bXSk6IERpbWVuc2lvbnMge1xuICAgIHJldHVybiBhcmdzLnJlZHVjZSgoYTogRGltZW5zaW9ucywgYjogUGFydGlhbDxEaW1lbnNpb25zPikgPT4gYS5wbHVzKGIpLCBuZXcgRGltZW5zaW9ucygpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0gY2hhaW5cbiAgICogQHJldHVybiB7TnVtYmVyfVxuICAgKi9cbiAgc3RhdGljIGdldE91dHB1dFNjcmlwdExlbmd0aEZvckNoYWluKGNoYWluOiBDaGFpbkNvZGUpOiBudW1iZXIge1xuICAgIHN3aXRjaCAoc2NyaXB0VHlwZUZvckNoYWluKGNoYWluKSkge1xuICAgICAgY2FzZSAncDJ3c2gnOlxuICAgICAgY2FzZSAncDJ0cic6XG4gICAgICBjYXNlICdwMnRyTXVzaWcyJzpcbiAgICAgICAgcmV0dXJuIDM0O1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIDIzO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0gc2NyaXB0TGVuZ3RoXG4gICAqIEByZXR1cm4ge051bWJlcn0gdlNpemUgb2YgYW4gb3V0cHV0IHdpdGggc2NyaXB0IGxlbmd0aFxuICAgKi9cbiAgc3RhdGljIGdldFZTaXplRm9yT3V0cHV0V2l0aFNjcmlwdExlbmd0aChzY3JpcHRMZW5ndGg6IG51bWJlcik6IG51bWJlciB7XG4gICAgaWYgKCFQb3NpdGl2ZUludGVnZXIuaXMoc2NyaXB0TGVuZ3RoKSkge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihgZXhwZWN0ZWQgcG9zaXRpdmUgaW50ZWdlciBmb3Igc2NyaXB0TGVuZ3RoLCBnb3QgJHtzY3JpcHRMZW5ndGh9YCk7XG4gICAgfVxuICAgIHJldHVybiBzY3JpcHRMZW5ndGggKyBjb21wYWN0U2l6ZShzY3JpcHRMZW5ndGgpICsgVmlydHVhbFNpemVzLnR4T3V0cHV0QW1vdW50U2l6ZTtcbiAgfVxuXG4gIHN0YXRpYyByZWFkb25seSBTaW5nbGVJbnB1dCA9IE9iamVjdC5mcmVlemUoe1xuICAgIHAyc2g6IERpbWVuc2lvbnMuc3VtKHsgblAyc2hJbnB1dHM6IDEgfSksXG4gICAgcDJzaFAyd3NoOiBEaW1lbnNpb25zLnN1bSh7IG5QMnNoUDJ3c2hJbnB1dHM6IDEgfSksXG4gICAgcDJ3c2g6IERpbWVuc2lvbnMuc3VtKHsgblAyd3NoSW5wdXRzOiAxIH0pLFxuICAgIHAydHJLZXlwYXRoOiBEaW1lbnNpb25zLnN1bSh7IG5QMnRyS2V5cGF0aElucHV0czogMSB9KSxcbiAgICBwMnRyU2NyaXB0UGF0aExldmVsMTogRGltZW5zaW9ucy5zdW0oeyBuUDJ0clNjcmlwdFBhdGhMZXZlbDFJbnB1dHM6IDEgfSksXG4gICAgcDJ0clNjcmlwdFBhdGhMZXZlbDI6IERpbWVuc2lvbnMuc3VtKHsgblAydHJTY3JpcHRQYXRoTGV2ZWwySW5wdXRzOiAxIH0pLFxuICAgIHAyc2hQMnBrOiBEaW1lbnNpb25zLnN1bSh7IG5QMnNoUDJwa0lucHV0czogMSB9KSxcbiAgfSk7XG5cbiAgLyoqXG4gICAqIEByZXR1cm5cbiAgICovXG4gIHN0YXRpYyBmcm9tU2NyaXB0VHlwZShcbiAgICBzY3JpcHRUeXBlOiB1dHhvbGliLmJpdGdvLm91dHB1dFNjcmlwdHMuU2NyaXB0VHlwZSB8IHV0eG9saWIuYml0Z28uUGFyc2VkU2NyaXB0VHlwZTJPZjMgfCAncDJwa2gnLFxuICAgIHBhcmFtczoge1xuICAgICAgc2NyaXB0UGF0aExldmVsPzogbnVtYmVyO1xuICAgIH0gPSB7fVxuICApOiBEaW1lbnNpb25zIHtcbiAgICBzd2l0Y2ggKHNjcmlwdFR5cGUpIHtcbiAgICAgIGNhc2UgJ3Ayc2gnOlxuICAgICAgY2FzZSAncDJzaFAyd3NoJzpcbiAgICAgIGNhc2UgJ3Ayd3NoJzpcbiAgICAgIGNhc2UgJ3Ayc2hQMnBrJzpcbiAgICAgICAgcmV0dXJuIERpbWVuc2lvbnMuU2luZ2xlSW5wdXRbc2NyaXB0VHlwZV07XG4gICAgICBjYXNlICdwMnRyJzpcbiAgICAgIGNhc2UgJ3RhcHJvb3RTY3JpcHRQYXRoU3BlbmQnOlxuICAgICAgICBzd2l0Y2ggKHBhcmFtcy5zY3JpcHRQYXRoTGV2ZWwpIHtcbiAgICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICByZXR1cm4gRGltZW5zaW9ucy5TaW5nbGVJbnB1dC5wMnRyU2NyaXB0UGF0aExldmVsMTtcbiAgICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICByZXR1cm4gRGltZW5zaW9ucy5TaW5nbGVJbnB1dC5wMnRyU2NyaXB0UGF0aExldmVsMjtcbiAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGB1bmV4cGVjdGVkIHNjcmlwdCBwYXRoIGxldmVsYCk7XG4gICAgICAgIH1cbiAgICAgIGNhc2UgJ3AydHJNdXNpZzInOlxuICAgICAgICBzd2l0Y2ggKHBhcmFtcy5zY3JpcHRQYXRoTGV2ZWwpIHtcbiAgICAgICAgICBjYXNlIHVuZGVmaW5lZDpcbiAgICAgICAgICAgIHJldHVybiBEaW1lbnNpb25zLlNpbmdsZUlucHV0LnAydHJLZXlwYXRoO1xuICAgICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgIHJldHVybiBEaW1lbnNpb25zLlNpbmdsZUlucHV0LnAydHJTY3JpcHRQYXRoTGV2ZWwxO1xuICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYHVuZXhwZWN0ZWQgc2NyaXB0IHBhdGggbGV2ZWxgKTtcbiAgICAgICAgfVxuICAgICAgY2FzZSAndGFwcm9vdEtleVBhdGhTcGVuZCc6XG4gICAgICAgIHJldHVybiBEaW1lbnNpb25zLlNpbmdsZUlucHV0LnAydHJLZXlwYXRoO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGB1bmV4cGVjdGVkIHNjcmlwdFR5cGUgJHtzY3JpcHRUeXBlfWApO1xuICAgIH1cbiAgfVxuXG4gIHN0YXRpYyByZWFkb25seSBBU1NVTUVfUDJTSCA9IERpbWVuc2lvbnMuU2luZ2xlSW5wdXQucDJzaDtcbiAgc3RhdGljIHJlYWRvbmx5IEFTU1VNRV9QMlNIX1AyV1NIID0gRGltZW5zaW9ucy5TaW5nbGVJbnB1dC5wMnNoUDJ3c2g7XG4gIHN0YXRpYyByZWFkb25seSBBU1NVTUVfUDJXU0ggPSBEaW1lbnNpb25zLlNpbmdsZUlucHV0LnAyd3NoO1xuICBzdGF0aWMgcmVhZG9ubHkgQVNTVU1FX1AyVFJfS0VZUEFUSCA9IERpbWVuc2lvbnMuU2luZ2xlSW5wdXQucDJ0cktleXBhdGg7XG4gIHN0YXRpYyByZWFkb25seSBBU1NVTUVfUDJUUl9TQ1JJUFRQQVRIX0xFVkVMMSA9IERpbWVuc2lvbnMuU2luZ2xlSW5wdXQucDJ0clNjcmlwdFBhdGhMZXZlbDE7XG4gIHN0YXRpYyByZWFkb25seSBBU1NVTUVfUDJUUl9TQ1JJUFRQQVRIX0xFVkVMMiA9IERpbWVuc2lvbnMuU2luZ2xlSW5wdXQucDJ0clNjcmlwdFBhdGhMZXZlbDI7XG4gIHN0YXRpYyByZWFkb25seSBBU1NVTUVfUDJTSF9QMlBLX0lOUFVUID0gRGltZW5zaW9ucy5TaW5nbGVJbnB1dC5wMnNoUDJwaztcblxuICBwcml2YXRlIHN0YXRpYyBnZXRBc3N1bWVkRGltZW5zaW9uKHBhcmFtczogRnJvbUlucHV0UGFyYW1zID0ge30sIGluZGV4OiBudW1iZXIpIHtcbiAgICBjb25zdCB7IGFzc3VtZVVuc2lnbmVkIH0gPSBwYXJhbXM7XG4gICAgaWYgKCFhc3N1bWVVbnNpZ25lZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBpbGxlZ2FsIGlucHV0ICR7aW5kZXh9OiBlbXB0eSBzY3JpcHQgYW5kIGFzc3VtZVVuc2lnbmVkIG5vdCBzZXRgKTtcbiAgICB9XG4gICAgcmV0dXJuIGFzc3VtZVVuc2lnbmVkO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSBpbnB1dCAtIHRoZSB0cmFuc2FjdGlvbiBpbnB1dCB0byBjb3VudFxuICAgKiBAcGFyYW0gcGFyYW1zXG4gICAqICAgICAgICBbcGFyYW0uYXNzdW1lVW5zaWduZWRdIC0gZGVmYXVsdCB0eXBlIGZvciB1bnNpZ25lZCBpbnB1dFxuICAgKi9cbiAgc3RhdGljIGZyb21JbnB1dChpbnB1dDogdXR4b2xpYi5UeElucHV0LCBwYXJhbXM6IEZyb21JbnB1dFBhcmFtcyA9IHt9KTogRGltZW5zaW9ucyB7XG4gICAgaWYgKGlucHV0LnNjcmlwdD8ubGVuZ3RoIHx8IGlucHV0LndpdG5lc3M/Lmxlbmd0aCkge1xuICAgICAgY29uc3QgcGFyc2VkID0gdXR4b2xpYi5iaXRnby5wYXJzZVNpZ25hdHVyZVNjcmlwdChpbnB1dCk7XG4gICAgICByZXR1cm4gRGltZW5zaW9ucy5mcm9tU2NyaXB0VHlwZShwYXJzZWQuc2NyaXB0VHlwZSwgcGFyc2VkIGFzIHsgc2NyaXB0UGF0aExldmVsPzogbnVtYmVyIH0pO1xuICAgIH1cblxuICAgIHJldHVybiBEaW1lbnNpb25zLmdldEFzc3VtZWREaW1lbnNpb24ocGFyYW1zLCBpbnB1dC5pbmRleCk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIERpbWVuc2lvbnMgZnJvbSBwc2J0IGlucHV0XG4gICAqIEBwYXJhbSBpbnB1dCAtIHBzYnQgaW5wdXRcbiAgICovXG4gIHN0YXRpYyBmcm9tUHNidElucHV0KGlucHV0OiBiaXRnby5Qc2J0SW5wdXRUeXBlKTogRGltZW5zaW9ucyB7XG4gICAgY29uc3QgcGFyc2VkID0gYml0Z28ucGFyc2VQc2J0SW5wdXQoaW5wdXQpO1xuICAgIHJldHVybiBEaW1lbnNpb25zLmZyb21TY3JpcHRUeXBlKHBhcnNlZC5zY3JpcHRUeXBlLCBwYXJzZWQgYXMgeyBzY3JpcHRQYXRoTGV2ZWw/OiBudW1iZXIgfSk7XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIGlucHV0cyAtIEFycmF5IG9mIGlucHV0c1xuICAgKiBAcGFyYW0gcGFyYW1zIC0gQHNlZSBEaW1lbnNpb25zLmZyb21JbnB1dCgpXG4gICAqIEByZXR1cm4ge0RpbWVuc2lvbnN9IHN1bSBvZiB0aGUgZGltZW5zaW9ucyBmb3IgZWFjaCBpbnB1dCAoQHNlZSBEaW1lbnNpb25zLmZyb21JbnB1dCgpKVxuICAgKi9cbiAgc3RhdGljIGZyb21JbnB1dHMoaW5wdXRzOiB1dHhvbGliLlR4SW5wdXRbXSwgcGFyYW1zPzogRnJvbUlucHV0UGFyYW1zKTogRGltZW5zaW9ucyB7XG4gICAgaWYgKCFBcnJheS5pc0FycmF5KGlucHV0cykpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoYGlucHV0cyBtdXN0IGJlIGFycmF5YCk7XG4gICAgfVxuICAgIHJldHVybiBEaW1lbnNpb25zLnN1bSguLi5pbnB1dHMubWFwKChpKSA9PiBEaW1lbnNpb25zLmZyb21JbnB1dChpLCBwYXJhbXMpKSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIERpbWVuc2lvbnMgZnJvbSBtdWx0aXBsZSBwc2J0IGlucHV0c1xuICAgKiBAcGFyYW0gaW5wdXRzIHBzYnQgaW5wdXQgYXJyYXlcbiAgICogQHJldHVybiB7RGltZW5zaW9uc30gc3VtIG9mIHRoZSBkaW1lbnNpb25zIGZvciBlYWNoIGlucHV0IChAc2VlIERpbWVuc2lvbnMuZnJvbVBzYnRJbnB1dCgpKVxuICAgKi9cbiAgc3RhdGljIGZyb21Qc2J0SW5wdXRzKGlucHV0czogYml0Z28uUHNidElucHV0VHlwZVtdKTogRGltZW5zaW9ucyB7XG4gICAgaWYgKCFBcnJheS5pc0FycmF5KGlucHV0cykpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoYGlucHV0cyBtdXN0IGJlIGFycmF5YCk7XG4gICAgfVxuICAgIHJldHVybiBEaW1lbnNpb25zLnN1bSguLi5pbnB1dHMubWFwKChpbnB1dCwgXykgPT4gRGltZW5zaW9ucy5mcm9tUHNidElucHV0KGlucHV0KSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSBzY3JpcHRMZW5ndGgge251bWJlcn0gLSBzaXplIG9mIHRoZSBvdXRwdXQgc2NyaXB0IGluIGJ5dGVzXG4gICAqIEByZXR1cm4ge0RpbWVuc2lvbnN9IC0gRGltZW5zaW9ucyBvZiB0aGUgb3V0cHV0XG4gICAqL1xuICBzdGF0aWMgZnJvbU91dHB1dFNjcmlwdExlbmd0aChzY3JpcHRMZW5ndGg6IG51bWJlcik6IERpbWVuc2lvbnMge1xuICAgIHJldHVybiBEaW1lbnNpb25zLnN1bSh7XG4gICAgICBvdXRwdXRzOiB7XG4gICAgICAgIGNvdW50OiAxLFxuICAgICAgICBzaXplOiBEaW1lbnNpb25zLmdldFZTaXplRm9yT3V0cHV0V2l0aFNjcmlwdExlbmd0aChzY3JpcHRMZW5ndGgpLFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0gb3V0cHV0IC0gYSB0eCBvdXRwdXRcbiAgICogQHJldHVybiBEaW1lbnNpb25zIC0gdGhlIGRpbWVuc2lvbnMgb2YgdGhlIGdpdmVuIG91dHB1dFxuICAgKi9cbiAgc3RhdGljIGZyb21PdXRwdXQoeyBzY3JpcHQgfTogeyBzY3JpcHQ6IEJ1ZmZlciB9KTogRGltZW5zaW9ucyB7XG4gICAgaWYgKCFzY3JpcHQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignZXhwZWN0ZWQgb3V0cHV0IHNjcmlwdCB0byBiZSBkZWZpbmVkJyk7XG4gICAgfVxuICAgIGlmICghQnVmZmVyLmlzQnVmZmVyKHNjcmlwdCkpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2V4cGVjdGVkIHNjcmlwdCB0byBiZSBidWZmZXIsIGdvdCAnICsgdHlwZW9mIHNjcmlwdCk7XG4gICAgfVxuICAgIHJldHVybiBEaW1lbnNpb25zLmZyb21PdXRwdXRTY3JpcHRMZW5ndGgoc2NyaXB0Lmxlbmd0aCk7XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIG91dHB1dHMgLSBBcnJheSBvZiBvdXRwdXRzXG4gICAqIEByZXR1cm4ge0RpbWVuc2lvbnN9IHN1bSBvZiB0aGUgZGltZW5zaW9ucyBmb3IgZWFjaCBvdXRwdXQgKEBzZWUgRGltZW5zaW9ucy5mcm9tT3V0cHV0KCkpXG4gICAqL1xuICBzdGF0aWMgZnJvbU91dHB1dHMob3V0cHV0czogeyBzY3JpcHQ6IEJ1ZmZlciB9W10pOiBEaW1lbnNpb25zIHtcbiAgICBpZiAoIUFycmF5LmlzQXJyYXkob3V0cHV0cykpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoYG91dHB1dHMgbXVzdCBiZSBhcnJheWApO1xuICAgIH1cbiAgICByZXR1cm4gRGltZW5zaW9ucy5zdW0oLi4ub3V0cHV0cy5tYXAoRGltZW5zaW9ucy5mcm9tT3V0cHV0KSk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgZGltZW5zaW9ucyBvZiBhbiBvdXRwdXQgdGhhdCB3aWxsIGJlIGNyZWF0ZWQgb24gYSBzcGVjaWZpYyBjaGFpbi5cbiAgICogQ3VycmVudGx5LCB0aGlzIHNpbXBseSBhZGRzIGEgZGVmYXVsdCBvdXRwdXQuXG4gICAqXG4gICAqIEBwYXJhbSBjaGFpbiAtIENoYWluIGNvZGUgYXMgZGVmaW5lZCBieSB1dHhvbGliLmJpdGdvXG4gICAqIEByZXR1cm4ge0RpbWVuc2lvbnN9IC0gRGltZW5zaW9ucyBmb3IgYSBzaW5nbGUgb3V0cHV0IG9uIHRoZSBnaXZlbiBjaGFpbi5cbiAgICovXG4gIHN0YXRpYyBmcm9tT3V0cHV0T25DaGFpbihjaGFpbjogQ2hhaW5Db2RlKTogRGltZW5zaW9ucyB7XG4gICAgcmV0dXJuIERpbWVuc2lvbnMuZnJvbU91dHB1dFNjcmlwdExlbmd0aChEaW1lbnNpb25zLmdldE91dHB1dFNjcmlwdExlbmd0aEZvckNoYWluKGNoYWluKSk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIGRpbWVuc2lvbnMgb2YgYW4gdW5zcGVudCBhY2NvcmRpbmcgdG8gYGNoYWluYCBwYXJhbWV0ZXJcbiAgICogQHBhcmFtIGNoYWluIC0gQ2hhaW4gY29kZSBhcyBkZWZpbmVkIGJ5IHV0eG8uY2hhaW5cbiAgICogQHBhcmFtIHBhcmFtcyAtIEhpbnQgZm9yIHVuc3BlbnRzIHdpdGggdmFyaWFibGUgaW5wdXQgc2l6ZXMgKHAydHIsIHAydHJNdXNpZzIpXG4gICAqIEByZXR1cm4ge0RpbWVuc2lvbnN9IG9mIHRoZSB1bnNwZW50XG4gICAqIEB0aHJvd3MgaWYgdGhlIGNoYWluIGNvZGUgaXMgaW52YWxpZCBvciB1bnN1cHBvcnRlZFxuICAgKi9cbiAgc3RhdGljIGZyb21VbnNwZW50KHsgY2hhaW4gfTogeyBjaGFpbjogbnVtYmVyIH0sIHBhcmFtczogRnJvbVVuc3BlbnRQYXJhbXMgPSBkZWZhdWx0VW5zcGVudFBhcmFtcyk6IERpbWVuc2lvbnMge1xuICAgIGlmICghaXNDaGFpbkNvZGUoY2hhaW4pKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdpbnZhbGlkIGNoYWluIGNvZGUnKTtcbiAgICB9XG5cbiAgICBjb25zdCBzY3JpcHRUeXBlID0gc2NyaXB0VHlwZUZvckNoYWluKGNoYWluKTtcblxuICAgIHJldHVybiBEaW1lbnNpb25zLmZyb21TY3JpcHRUeXBlKFxuICAgICAgc2NyaXB0VHlwZSxcbiAgICAgIHNjcmlwdFR5cGUgPT09ICdwMnRyJyA/IHBhcmFtcy5wMnRyIDogc2NyaXB0VHlwZSA9PT0gJ3AydHJNdXNpZzInID8gcGFyYW1zLnAydHJNdXNpZzIgOiB7fVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHVuc3BlbnRzXG4gICAqIEBwYXJhbSBwYXJhbXMgLSBIaW50IGZvciB1bnNwZW50cyB3aXRoIHZhcmlhYmxlIGlucHV0IHNpemVzIChwMnRyLCBwMnRyTXVzaWcyKVxuICAgKiBAcmV0dXJuIHtEaW1lbnNpb25zfSBzdW0gb2YgdGhlIGRpbWVuc2lvbnMgZm9yIGVhY2ggdW5zcGVudCAoQHNlZSBEaW1lbnNpb25zLmZyb21VbnNwZW50KCkpXG4gICAqL1xuICBzdGF0aWMgZnJvbVVuc3BlbnRzKHVuc3BlbnRzOiB7IGNoYWluOiBDaGFpbkNvZGUgfVtdLCBwYXJhbXM6IEZyb21VbnNwZW50UGFyYW1zID0gZGVmYXVsdFVuc3BlbnRQYXJhbXMpOiBEaW1lbnNpb25zIHtcbiAgICBpZiAoIUFycmF5LmlzQXJyYXkodW5zcGVudHMpKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKGB1bnNwZW50cyBtdXN0IGJlIGFycmF5YCk7XG4gICAgfVxuICAgIC8vIENvbnZlcnQgdGhlIGluZGl2aWR1YWwgdW5zcGVudHMgaW50byBkaW1lbnNpb25zIGFuZCBzdW0gdGhlbSB1cFxuICAgIHJldHVybiBEaW1lbnNpb25zLnN1bSguLi51bnNwZW50cy5tYXAoKHUpID0+IERpbWVuc2lvbnMuZnJvbVVuc3BlbnQodSwgcGFyYW1zKSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB0cmFuc2FjdGlvbiAtIGJpdGNvaW4tbGlrZSB0cmFuc2FjdGlvblxuICAgKiBAcGFyYW0gW3BhcmFtLmFzc3VtZVVuc2lnbmVkXSAtIGRlZmF1bHQgdHlwZSBmb3IgdW5zaWduZWQgaW5wdXRzXG4gICAqIEByZXR1cm4ge0RpbWVuc2lvbnN9XG4gICAqL1xuICBzdGF0aWMgZnJvbVRyYW5zYWN0aW9uKFxuICAgIHtcbiAgICAgIGlucyxcbiAgICAgIG91dHMsXG4gICAgfToge1xuICAgICAgaW5zOiB1dHhvbGliLlR4SW5wdXRbXTtcbiAgICAgIG91dHM6IHV0eG9saWIuVHhPdXRwdXRbXTtcbiAgICB9LFxuICAgIHBhcmFtcz86IEZyb21JbnB1dFBhcmFtc1xuICApOiBEaW1lbnNpb25zIHtcbiAgICByZXR1cm4gRGltZW5zaW9ucy5mcm9tSW5wdXRzKGlucywgcGFyYW1zKS5wbHVzKERpbWVuc2lvbnMuZnJvbU91dHB1dHMob3V0cykpO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBEaW1lbnNpb25zIGZyb20gcHNidCBpbnB1dHMgYW5kIG91dHB1dHNcbiAgICogQHBhcmFtIHBzYnRcbiAgICogQHJldHVybiB7RGltZW5zaW9uc31cbiAgICovXG4gIHN0YXRpYyBmcm9tUHNidChwc2J0OiBiaXRnby5VdHhvUHNidCk6IERpbWVuc2lvbnMge1xuICAgIHJldHVybiBEaW1lbnNpb25zLmZyb21Qc2J0SW5wdXRzKHBzYnQuZGF0YS5pbnB1dHMpLnBsdXMoRGltZW5zaW9ucy5mcm9tT3V0cHV0cyhwc2J0LmdldFVuc2lnbmVkVHgoKS5vdXRzKSk7XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIGRpbWVuc2lvbnMgKGNhbiBiZSBwYXJ0aWFsbHkgZGVmaW5lZClcbiAgICogQHJldHVybiBuZXcgZGltZW5zaW9ucyB3aXRoIGFyZ3VtZW50IGFkZGVkXG4gICAqL1xuICBwbHVzKGRpbWVuc2lvbnM6IFBhcnRpYWw8RGltZW5zaW9ucz4pOiBEaW1lbnNpb25zIHtcbiAgICBpZiAodHlwZW9mIGRpbWVuc2lvbnMgIT09ICdvYmplY3QnKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKGBleHBlY3RlZCBhcmd1bWVudCB0byBiZSBvYmplY3RgKTtcbiAgICB9XG5cbiAgICBpZiAoIShkaW1lbnNpb25zIGluc3RhbmNlb2YgRGltZW5zaW9ucykpIHtcbiAgICAgIGRpbWVuc2lvbnMgPSBuZXcgRGltZW5zaW9ucyhkaW1lbnNpb25zKTtcbiAgICB9XG5cbiAgICAvLyBDYXRjaCBpbnN0YW5jZXMgd2hlcmUgd2UgdHJ5IHRvIGluaXRpYWxpemUgRGltZW5zaW9ucyBmcm9tIHBhcnRpYWwgZGF0YSB1c2luZyBkZXByZWNhdGVkIHBhcmFtZXRlcnNcbiAgICAvLyB1c2luZyBvbmx5IFwibk91dHB1dHNcIi5cbiAgICBpZiAoJ25PdXRwdXRzJyBpbiBkaW1lbnNpb25zKSB7XG4gICAgICBpZiAoISgnb3V0cHV0cycgaW4gZGltZW5zaW9ucykpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdkZXByZWNhdGVkIHBhcnRpYWwgYWRkaXRpb246IGFyZ3VtZW50IGhhcyBrZXkgXCJuT3V0cHV0c1wiIGJ1dCBubyBcIm91dHB1dHNcIicpO1xuICAgICAgfVxuXG4gICAgICBjb25zdCB7IG91dHB1dHMsIG5PdXRwdXRzIH0gPSBkaW1lbnNpb25zIGFzIERpbWVuc2lvbnM7XG5cbiAgICAgIGlmIChvdXRwdXRzLmNvdW50ICE9PSBuT3V0cHV0cykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2RlcHJlY2F0ZWQgcGFydGlhbCBhZGRpdGlvbjogaW5jb25zaXN0ZW50IHZhbHVlcyBmb3IgXCJuT3V0cHV0c1wiIGFuZCBcIm91dHB1dHMuY291bnRcIicpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBtYXBEaW1lbnNpb25zKHRoaXMsIChrZXksIHYpID0+IHtcbiAgICAgIGNvbnN0IHcgPSBkaW1lbnNpb25zW2tleV0gPz8gRGltZW5zaW9ucy5aRVJPW2tleV07XG4gICAgICBpZiAoa2V5ID09PSAnb3V0cHV0cycpIHtcbiAgICAgICAgY29uc3Qgdk91dHB1dHMgPSB2IGFzIE91dHB1dERpbWVuc2lvbnM7XG4gICAgICAgIGNvbnN0IHdPdXRwdXRzID0gdyBhcyBPdXRwdXREaW1lbnNpb25zO1xuICAgICAgICByZXR1cm4gbmV3IE91dHB1dERpbWVuc2lvbnMoe1xuICAgICAgICAgIGNvdW50OiB2T3V0cHV0cy5jb3VudCArIHdPdXRwdXRzLmNvdW50LFxuICAgICAgICAgIHNpemU6IHZPdXRwdXRzLnNpemUgKyB3T3V0cHV0cy5zaXplLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIHJldHVybiAodiBhcyBudW1iZXIpICsgKHcgYXMgbnVtYmVyKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNdWx0aXBseSBkaW1lbnNpb25zIGJ5IGEgZ2l2ZW4gZmFjdG9yXG4gICAqIEBwYXJhbSBmYWN0b3IgLSBQb3NpdGl2ZSBpbnRlZ2VyXG4gICAqIEByZXR1cm4ge0RpbWVuc2lvbnN9XG4gICAqL1xuICB0aW1lcyhmYWN0b3I6IG51bWJlcik6IERpbWVuc2lvbnMge1xuICAgIGlmICghUG9zaXRpdmVJbnRlZ2VyLmlzKGZhY3RvcikpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoYGV4cGVjdGVkIGZhY3RvciB0byBiZSBwb3NpdGl2ZSBpbnRlZ2VyYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG1hcERpbWVuc2lvbnModGhpcywgKGtleSwgdmFsdWUpID0+IHtcbiAgICAgIGlmIChrZXkgPT09ICdvdXRwdXRzJykge1xuICAgICAgICBjb25zdCB2T3V0cHV0cyA9IHZhbHVlIGFzIE91dHB1dERpbWVuc2lvbnM7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgY291bnQ6IHZPdXRwdXRzLmNvdW50ICogZmFjdG9yLFxuICAgICAgICAgIHNpemU6IHZPdXRwdXRzLnNpemUgKiBmYWN0b3IsXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICByZXR1cm4gKHZhbHVlIGFzIG51bWJlcikgKiBmYWN0b3I7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQHJldHVybiBOdW1iZXIgb2YgdG90YWwgaW5wdXRzIChwMnNoLCBwMnNoUDJ3c2ggYW5kIHAyd3NoKVxuICAgKiBAZGVwcmVjYXRlZCB1c2UgYGRpbWVuc2lvbi5uSW5wdXRzYCBpbnN0ZWFkXG4gICAqL1xuICBnZXROSW5wdXRzKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMubklucHV0cztcbiAgfVxuXG4gIC8qKlxuICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gdHJ1ZSBpZmYgZGltZW5zaW9ucyBoYXZlIG9uZSBvciBtb3JlIChwMnNoKXAyd3NoIGlucHV0c1xuICAgKi9cbiAgaXNTZWd3aXQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMublAyd3NoSW5wdXRzICtcbiAgICAgICAgdGhpcy5uUDJzaFAyd3NoSW5wdXRzICtcbiAgICAgICAgdGhpcy5uUDJ0cktleXBhdGhJbnB1dHMgK1xuICAgICAgICB0aGlzLm5QMnRyU2NyaXB0UGF0aExldmVsMUlucHV0cyArXG4gICAgICAgIHRoaXMublAydHJTY3JpcHRQYXRoTGV2ZWwySW5wdXRzID5cbiAgICAgIDBcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIEByZXR1cm4ge051bWJlcn0gb3ZlcmhlYWQgdnNpemUsIGJhc2VkIG9uIHJlc3VsdCBpc1NlZ3dpdCgpLlxuICAgKi9cbiAgZ2V0T3ZlcmhlYWRWU2l6ZSgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLmlzU2Vnd2l0KCkgPyBWaXJ0dWFsU2l6ZXMudHhTZWdPdmVyaGVhZFZTaXplIDogVmlydHVhbFNpemVzLnR4T3ZlcmhlYWRTaXplO1xuICB9XG5cbiAgLyoqXG4gICAqIEByZXR1cm5zIHtudW1iZXJ9IHZzaXplIG9mIGlucHV0cywgd2l0aG91dCB0cmFuc2FjdGlvbiBvdmVyaGVhZFxuICAgKi9cbiAgZ2V0SW5wdXRzVlNpemUoKTogbnVtYmVyIHtcbiAgICBjb25zdCB7XG4gICAgICB0eFAyc2hJbnB1dFNpemUsXG4gICAgICB0eFAyc2hQMndzaElucHV0U2l6ZSxcbiAgICAgIHR4UDJ3c2hJbnB1dFNpemUsXG4gICAgICB0eFAydHJLZXlwYXRoSW5wdXRTaXplLFxuICAgICAgdHhQMnRyU2NyaXB0UGF0aExldmVsMUlucHV0U2l6ZSxcbiAgICAgIHR4UDJ0clNjcmlwdFBhdGhMZXZlbDJJbnB1dFNpemUsXG4gICAgICB0eFAyc2hQMnBrSW5wdXRTaXplLFxuICAgIH0gPSBWaXJ0dWFsU2l6ZXM7XG5cbiAgICBjb25zdCB7XG4gICAgICBuUDJzaElucHV0cyxcbiAgICAgIG5QMnNoUDJ3c2hJbnB1dHMsXG4gICAgICBuUDJ3c2hJbnB1dHMsXG4gICAgICBuUDJ0cktleXBhdGhJbnB1dHMsXG4gICAgICBuUDJ0clNjcmlwdFBhdGhMZXZlbDFJbnB1dHMsXG4gICAgICBuUDJ0clNjcmlwdFBhdGhMZXZlbDJJbnB1dHMsXG4gICAgICBuUDJzaFAycGtJbnB1dHMsXG4gICAgfSA9IHRoaXM7XG5cbiAgICBjb25zdCBzaXplID1cbiAgICAgIG5QMnNoSW5wdXRzICogdHhQMnNoSW5wdXRTaXplICtcbiAgICAgIG5QMnNoUDJ3c2hJbnB1dHMgKiB0eFAyc2hQMndzaElucHV0U2l6ZSArXG4gICAgICBuUDJ3c2hJbnB1dHMgKiB0eFAyd3NoSW5wdXRTaXplICtcbiAgICAgIG5QMnRyS2V5cGF0aElucHV0cyAqIHR4UDJ0cktleXBhdGhJbnB1dFNpemUgK1xuICAgICAgblAyc2hQMnBrSW5wdXRzICogdHhQMnNoUDJwa0lucHV0U2l6ZSArXG4gICAgICBuUDJ0clNjcmlwdFBhdGhMZXZlbDFJbnB1dHMgKiB0eFAydHJTY3JpcHRQYXRoTGV2ZWwxSW5wdXRTaXplICtcbiAgICAgIG5QMnRyU2NyaXB0UGF0aExldmVsMklucHV0cyAqIHR4UDJ0clNjcmlwdFBhdGhMZXZlbDJJbnB1dFNpemU7XG4gICAgaWYgKE51bWJlci5pc05hTihzaXplKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBpbnZhbGlkIHNpemVgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gc2l6ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcmV0dXJucyB7bnVtYmVyfSByZXR1cm4gdnNpemUgb2Ygb3V0cHV0cywgd2l0aG91dCBvdmVyaGVhZFxuICAgKi9cbiAgZ2V0T3V0cHV0c1ZTaXplKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMub3V0cHV0cy5zaXplO1xuICB9XG5cbiAgLyoqXG4gICAqIEVzdGltYXRlcyB0aGUgdmlydHVhbCBzaXplICgxLzQgd2VpZ2h0KSBvZiBhIHNpZ25lZCB0cmFuc2FjdGlvbiBhcyBzdW0gb2ZcbiAgICogb3ZlcmhlYWQgdnNpemUsIGlucHV0IHZzaXplIGFuZCBvdXRwdXQgdnNpemUuXG4gICAqIEByZXR1cm5zIHtOdW1iZXJ9IFRoZSBlc3RpbWF0ZWQgdnNpemUgb2YgdGhlIHRyYW5zYWN0aW9uIGRpbWVuc2lvbnMuXG4gICAqL1xuICBnZXRWU2l6ZSgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLmdldE92ZXJoZWFkVlNpemUoKSArIHRoaXMuZ2V0SW5wdXRzVlNpemUoKSArIHRoaXMuZ2V0T3V0cHV0c1ZTaXplKCk7XG4gIH1cbn1cbiJdfQ==
@@ -5,3 +5,4 @@ Codes,
5
5
  /** @deprecated - use utxolib.bitgo */
6
6
  CodesTypes, };
7
7
  export * from './dimensions';
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,UAAU,MAAM,SAAS,CAAC;AAC7C,OAAO;AACL,sCAAsC;AACtC,KAAK;AACL,sCAAsC;AACtC,UAAU,GACX,CAAC;AAEF,cAAc,cAAc,CAAC"}
@@ -0,0 +1,44 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
36
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.CodesTypes = exports.Codes = void 0;
40
+ const codes_1 = __importStar(require("./codes")), CodesTypes = codes_1;
41
+ exports.Codes = codes_1.default;
42
+ exports.CodesTypes = CodesTypes;
43
+ __exportStar(require("./dimensions"), exports);
44
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsdUVBQTZDO0FBRzNDLGdCQUhLLGVBQUssQ0FHTDtBQUVMLGdDQUFVO0FBR1osK0NBQTZCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IENvZGVzLCAqIGFzIENvZGVzVHlwZXMgZnJvbSAnLi9jb2Rlcyc7XG5leHBvcnQge1xuICAvKiogQGRlcHJlY2F0ZWQgLSB1c2UgdXR4b2xpYi5iaXRnbyAqL1xuICBDb2RlcyxcbiAgLyoqIEBkZXByZWNhdGVkIC0gdXNlIHV0eG9saWIuYml0Z28gKi9cbiAgQ29kZXNUeXBlcyxcbn07XG5cbmV4cG9ydCAqIGZyb20gJy4vZGltZW5zaW9ucyc7XG4iXX0=
@@ -2,16 +2,16 @@
2
2
  * Defines input sizes for BitGo signature scripts.
3
3
  */
4
4
  export declare function varSliceSize(someScript: Sized): number;
5
- export declare type Sized = {
5
+ export type Sized = {
6
6
  length: number;
7
7
  };
8
- export declare type Input = {
8
+ export type Input = {
9
9
  script: Sized;
10
10
  witness: Sized[];
11
11
  };
12
12
  export declare function getInputByteLength(input: Input, allowWitness: boolean): number;
13
13
  export declare function getInputWeight(input: Input): number;
14
- export declare type InputComponents = {
14
+ export type InputComponents = {
15
15
  script: number[];
16
16
  witness: number[];
17
17
  };
@@ -23,3 +23,4 @@ export declare const inputComponentsP2trKeySpend: InputComponents;
23
23
  export declare const inputComponentsP2trScriptSpendLevel1: InputComponents;
24
24
  export declare const inputComponentsP2trScriptSpendLevel2: InputComponents;
25
25
  export declare const inputComponentsP2shP2pk: InputComponents;
26
+ //# sourceMappingURL=inputWeights.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inputWeights.d.ts","sourceRoot":"","sources":["../../src/inputWeights.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,wBAAgB,YAAY,CAAC,UAAU,EAAE,KAAK,GAAG,MAAM,CAItD;AAaD,MAAM,MAAM,KAAK,GAAG;IAClB,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,KAAK,GAAG;IAClB,MAAM,EAAE,KAAK,CAAC;IACd,OAAO,EAAE,KAAK,EAAE,CAAC;CAClB,CAAC;AAEF,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,OAAO,GAAG,MAAM,CAM9E;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM,CAEnD;AAED,MAAM,MAAM,eAAe,GAAG;IAC5B,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB,CAAC;AAEF,wBAAgB,wBAAwB,CAAC,CAAC,EAAE,eAAe,GAAG,MAAM,CAMnE;AAgCD,eAAO,MAAM,mBAAmB,EAAE,eAGjC,CAAC;AAEF,eAAO,MAAM,wBAAwB,EAAE,eAGtC,CAAC;AAEF,eAAO,MAAM,oBAAoB,EAAE,eAGlC,CAAC;AAGF,eAAO,MAAM,2BAA2B,EAAE,eAGzC,CAAC;AAEF,eAAO,MAAM,oCAAoC,EAAE,eAGlD,CAAC;AAEF,eAAO,MAAM,oCAAoC,EAAE,eAGlD,CAAC;AAEF,eAAO,MAAM,uBAAuB,EAAE,eAGrC,CAAC"}