@bitgo-beta/abstract-utxo 1.1.1-beta.2333 → 1.1.1-beta.2335

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 (45) hide show
  1. package/dist/cjs/src/descriptor/validatePolicy.d.ts +15 -0
  2. package/dist/cjs/src/descriptor/validatePolicy.d.ts.map +1 -1
  3. package/dist/cjs/src/descriptor/validatePolicy.js +72 -3
  4. package/dist/cjs/src/impl/btc/tbtcstx.d.ts +1 -2
  5. package/dist/cjs/src/impl/btc/tbtcstx.d.ts.map +1 -1
  6. package/dist/cjs/src/impl/btc/tbtcstx.js +1 -4
  7. package/dist/cjs/src/impl/btc/tbtcstxsignet.d.ts +1 -2
  8. package/dist/cjs/src/impl/btc/tbtcstxsignet.d.ts.map +1 -1
  9. package/dist/cjs/src/impl/btc/tbtcstxsignet.js +1 -4
  10. package/dist/cjs/src/names.d.ts +1 -0
  11. package/dist/cjs/src/names.d.ts.map +1 -1
  12. package/dist/cjs/src/names.js +9 -1
  13. package/dist/cjs/src/offlineVault/TransactionExplanation.d.ts +1 -0
  14. package/dist/cjs/src/offlineVault/TransactionExplanation.d.ts.map +1 -1
  15. package/dist/cjs/src/offlineVault/TransactionExplanation.js +1 -1
  16. package/dist/cjs/src/offlineVault/descriptor/pox5.d.ts +9 -0
  17. package/dist/cjs/src/offlineVault/descriptor/pox5.d.ts.map +1 -0
  18. package/dist/cjs/src/offlineVault/descriptor/pox5.js +29 -0
  19. package/dist/cjs/src/offlineVault/descriptor/transaction.d.ts.map +1 -1
  20. package/dist/cjs/src/offlineVault/descriptor/transaction.js +6 -1
  21. package/dist/cjs/test/unit/offlineVault/pox5.d.ts +2 -0
  22. package/dist/cjs/test/unit/offlineVault/pox5.d.ts.map +1 -0
  23. package/dist/cjs/test/unit/offlineVault/pox5.js +207 -0
  24. package/dist/cjs/tsconfig.tsbuildinfo +1 -1
  25. package/dist/esm/descriptor/validatePolicy.d.ts +15 -0
  26. package/dist/esm/descriptor/validatePolicy.d.ts.map +1 -1
  27. package/dist/esm/descriptor/validatePolicy.js +69 -3
  28. package/dist/esm/impl/btc/tbtcstx.d.ts +1 -2
  29. package/dist/esm/impl/btc/tbtcstx.d.ts.map +1 -1
  30. package/dist/esm/impl/btc/tbtcstx.js +1 -4
  31. package/dist/esm/impl/btc/tbtcstxsignet.d.ts +1 -2
  32. package/dist/esm/impl/btc/tbtcstxsignet.d.ts.map +1 -1
  33. package/dist/esm/impl/btc/tbtcstxsignet.js +1 -4
  34. package/dist/esm/names.d.ts +1 -0
  35. package/dist/esm/names.d.ts.map +1 -1
  36. package/dist/esm/names.js +9 -1
  37. package/dist/esm/offlineVault/TransactionExplanation.d.ts +1 -0
  38. package/dist/esm/offlineVault/TransactionExplanation.d.ts.map +1 -1
  39. package/dist/esm/offlineVault/TransactionExplanation.js +1 -1
  40. package/dist/esm/offlineVault/descriptor/pox5.d.ts +9 -0
  41. package/dist/esm/offlineVault/descriptor/pox5.d.ts.map +1 -0
  42. package/dist/esm/offlineVault/descriptor/pox5.js +26 -0
  43. package/dist/esm/offlineVault/descriptor/transaction.d.ts.map +1 -1
  44. package/dist/esm/offlineVault/descriptor/transaction.js +7 -2
  45. package/package.json +10 -10
@@ -13,6 +13,21 @@ export declare function getValidatorEvery(validators: DescriptorValidationPolicy
13
13
  export declare function getValidatorSome(validators: DescriptorValidationPolicy[]): DescriptorValidationPolicy;
14
14
  export declare function getValidatorOneOfTemplates(names: string[]): DescriptorValidationPolicy;
15
15
  export declare function getValidatorSignedByUserKey(): DescriptorValidationPolicy;
16
+ /**
17
+ * Accepts descriptors that are canonical PoX-5 lockup descriptors whose staker keys
18
+ * are the wallet keys.
19
+ */
20
+ export declare function getValidatorPox5Lockup(): DescriptorValidationPolicy;
21
+ /**
22
+ * Accepts descriptor groups where each descriptor individually satisfies at least one of
23
+ * the validators. Unlike `getValidatorSome`, different descriptors may match different validators.
24
+ */
25
+ export declare function getValidatorEachOneOf(validators: DescriptorValidationPolicy[]): DescriptorValidationPolicy;
26
+ /**
27
+ * Accepts the descriptors of a PoX-5 staking wallet: the regular 2-of-3 wallet descriptors
28
+ * together with PoX-5 lockup descriptors, all using the wallet keys.
29
+ */
30
+ export declare function getValidatorPox5Wallet(): DescriptorValidationPolicy;
16
31
  export declare class DescriptorPolicyValidationError extends Error {
17
32
  constructor(ds: NamedDescriptorNative[], policy: DescriptorValidationPolicy);
18
33
  }
@@ -1 +1 @@
1
- {"version":3,"file":"validatePolicy.d.ts","sourceRoot":"","sources":["../../../../src/descriptor/validatePolicy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC/D,OAAO,EAAE,KAAK,EAAoB,MAAM,kBAAkB,CAAC;AAG3D,OAAO,EAAqB,eAAe,EAAE,qBAAqB,EAA2B,MAAM,mBAAmB,CAAC;AAEvH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAE7C,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;AAErD,MAAM,WAAW,0BAA0B;IACzC,IAAI,EAAE,MAAM,CAAC;IAEb,QAAQ,CAAC,GAAG,EAAE,qBAAqB,EAAE,EAAE,UAAU,EAAE,SAAS,GAAG,OAAO,CAAC;CACxE;AAED,eAAO,MAAM,cAAc,EAAE,0BAG5B,CAAC;AAEF,wBAAgB,8BAA8B,CAAC,IAAI,EAAE,MAAM,GAAG,0BAA0B,CAcvF;AAED,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,0BAA0B,EAAE,GAAG,0BAA0B,CAOtG;AAED,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,0BAA0B,EAAE,GAAG,0BAA0B,CAOrG;AAED,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,0BAA0B,CAEtF;AAED,wBAAgB,2BAA2B,IAAI,0BAA0B,CAQxE;AAED,qBAAa,+BAAgC,SAAQ,KAAK;gBAC5C,EAAE,EAAE,qBAAqB,EAAE,EAAE,MAAM,EAAE,0BAA0B;CAG5E;AAED,wBAAgB,sBAAsB,CACpC,WAAW,EAAE,qBAAqB,EAAE,EACpC,MAAM,EAAE,0BAA0B,EAClC,UAAU,EAAE,SAAS,GACpB,IAAI,CAIN;AAED,wBAAgB,uBAAuB,CACrC,WAAW,EAAE,eAAe,EAAE,EAC9B,UAAU,EAAE,SAAS,EACrB,MAAM,EAAE,0BAA0B,GACjC,aAAa,CAMf;AAED,wBAAgB,eAAe,CAAC,GAAG,EAAE,eAAe,GAAG,0BAA0B,CAiBhF"}
1
+ {"version":3,"file":"validatePolicy.d.ts","sourceRoot":"","sources":["../../../../src/descriptor/validatePolicy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAE/D,OAAO,EAAE,KAAK,EAAgC,MAAM,kBAAkB,CAAC;AAGvE,OAAO,EAAqB,eAAe,EAAE,qBAAqB,EAA2B,MAAM,mBAAmB,CAAC;AAEvH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAE7C,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;AAErD,MAAM,WAAW,0BAA0B;IACzC,IAAI,EAAE,MAAM,CAAC;IAEb,QAAQ,CAAC,GAAG,EAAE,qBAAqB,EAAE,EAAE,UAAU,EAAE,SAAS,GAAG,OAAO,CAAC;CACxE;AAED,eAAO,MAAM,cAAc,EAAE,0BAG5B,CAAC;AAWF,wBAAgB,8BAA8B,CAAC,IAAI,EAAE,MAAM,GAAG,0BAA0B,CAevF;AAED,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,0BAA0B,EAAE,GAAG,0BAA0B,CAOtG;AAED,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,0BAA0B,EAAE,GAAG,0BAA0B,CAOrG;AAED,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,0BAA0B,CAEtF;AAED,wBAAgB,2BAA2B,IAAI,0BAA0B,CAQxE;AAwBD;;;GAGG;AACH,wBAAgB,sBAAsB,IAAI,0BAA0B,CAOnE;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,UAAU,EAAE,0BAA0B,EAAE,GAAG,0BAA0B,CAO1G;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,IAAI,0BAA0B,CAEnE;AAED,qBAAa,+BAAgC,SAAQ,KAAK;gBAC5C,EAAE,EAAE,qBAAqB,EAAE,EAAE,MAAM,EAAE,0BAA0B;CAG5E;AAED,wBAAgB,sBAAsB,CACpC,WAAW,EAAE,qBAAqB,EAAE,EACpC,MAAM,EAAE,0BAA0B,EAClC,UAAU,EAAE,SAAS,GACpB,IAAI,CAIN;AAED,wBAAgB,uBAAuB,CACrC,WAAW,EAAE,eAAe,EAAE,EAC9B,UAAU,EAAE,SAAS,EACrB,MAAM,EAAE,0BAA0B,GACjC,aAAa,CAMf;AAED,wBAAgB,eAAe,CAAC,GAAG,EAAE,eAAe,GAAG,0BAA0B,CAmBhF"}
@@ -6,9 +6,13 @@ exports.getValidatorEvery = getValidatorEvery;
6
6
  exports.getValidatorSome = getValidatorSome;
7
7
  exports.getValidatorOneOfTemplates = getValidatorOneOfTemplates;
8
8
  exports.getValidatorSignedByUserKey = getValidatorSignedByUserKey;
9
+ exports.getValidatorPox5Lockup = getValidatorPox5Lockup;
10
+ exports.getValidatorEachOneOf = getValidatorEachOneOf;
11
+ exports.getValidatorPox5Wallet = getValidatorPox5Wallet;
9
12
  exports.assertDescriptorPolicy = assertDescriptorPolicy;
10
13
  exports.toDescriptorMapValidate = toDescriptorMapValidate;
11
14
  exports.getPolicyForEnv = getPolicyForEnv;
15
+ const utxo_descriptors_1 = require("@bitgo-beta/utxo-descriptors");
12
16
  const wasm_utxo_1 = require("@bitgo/wasm-utxo");
13
17
  const builder_1 = require("./builder");
14
18
  const NamedDescriptor_1 = require("./NamedDescriptor");
@@ -16,13 +20,23 @@ exports.policyAllowAll = {
16
20
  name: 'allowAll',
17
21
  validate: () => true,
18
22
  };
23
+ function tryParseDescriptor(descriptor) {
24
+ try {
25
+ return (0, builder_1.parseDescriptor)(descriptor);
26
+ }
27
+ catch {
28
+ // not a descriptor we know how to parse: it cannot match any template
29
+ return undefined;
30
+ }
31
+ }
19
32
  function getValidatorDescriptorTemplate(name) {
20
33
  return {
21
34
  name: 'descriptorTemplate(' + name + ')',
22
35
  validate(arr, walletKeys) {
23
36
  return arr.every((d) => {
24
- const parsed = (0, builder_1.parseDescriptor)(d.value);
25
- return (parsed.name === name &&
37
+ const parsed = tryParseDescriptor(d.value);
38
+ return (parsed !== undefined &&
39
+ parsed.name === name &&
26
40
  parsed.keys.length === walletKeys.length &&
27
41
  parsed.keys.every((k, i) => k.toBase58() === walletKeys[i].neutered().toBase58()));
28
42
  });
@@ -57,6 +71,59 @@ function getValidatorSignedByUserKey() {
57
71
  },
58
72
  };
59
73
  }
74
+ function isCanonicalPox5Lockup(descriptor, walletKeys) {
75
+ try {
76
+ const info = utxo_descriptors_1.pox5.parsePox5LockupDescriptor(descriptor);
77
+ if (!info) {
78
+ return false;
79
+ }
80
+ // Rebuilding the canonical descriptor from the wallet keys checks both that the
81
+ // staker keys are the wallet keys (with the `/*` derivation) and that the
82
+ // descriptor has no non-canonical encoding.
83
+ const canonical = utxo_descriptors_1.pox5.createPox5LockupDescriptor({
84
+ unlockHeight: info.unlockHeight,
85
+ stakerCommitment: info.stakerCommitment,
86
+ earlyExitKey: info.earlyExitKey,
87
+ stakerKeys: [walletKeys[0], walletKeys[1], walletKeys[2]],
88
+ });
89
+ return canonical.toString() === descriptor.toString();
90
+ }
91
+ catch {
92
+ // malformed lockup parameters
93
+ return false;
94
+ }
95
+ }
96
+ /**
97
+ * Accepts descriptors that are canonical PoX-5 lockup descriptors whose staker keys
98
+ * are the wallet keys.
99
+ */
100
+ function getValidatorPox5Lockup() {
101
+ return {
102
+ name: 'pox5Lockup',
103
+ validate(arr, walletKeys) {
104
+ return arr.every((d) => isCanonicalPox5Lockup(d.value, walletKeys));
105
+ },
106
+ };
107
+ }
108
+ /**
109
+ * Accepts descriptor groups where each descriptor individually satisfies at least one of
110
+ * the validators. Unlike `getValidatorSome`, different descriptors may match different validators.
111
+ */
112
+ function getValidatorEachOneOf(validators) {
113
+ return {
114
+ name: 'eachOneOf(' + validators.map((v) => v.name).join(',') + ')',
115
+ validate(arr, walletKeys) {
116
+ return arr.every((d) => validators.some((v) => v.validate([d], walletKeys)));
117
+ },
118
+ };
119
+ }
120
+ /**
121
+ * Accepts the descriptors of a PoX-5 staking wallet: the regular 2-of-3 wallet descriptors
122
+ * together with PoX-5 lockup descriptors, all using the wallet keys.
123
+ */
124
+ function getValidatorPox5Wallet() {
125
+ return getValidatorEachOneOf([getValidatorDescriptorTemplate('Wsh2Of3'), getValidatorPox5Lockup()]);
126
+ }
60
127
  class DescriptorPolicyValidationError extends Error {
61
128
  constructor(ds, policy) {
62
129
  super(`Descriptors ${ds.map((d) => d.value.toString())} does not match policy ${policy.name}`);
@@ -84,6 +151,8 @@ function getPolicyForEnv(env) {
84
151
  getValidatorDescriptorTemplate('Wsh2Of3CltvDrop'),
85
152
  // allow sBTC peg-in deposit descriptors where the reclaim keys match the wallet keys
86
153
  getValidatorDescriptorTemplate('SbtcDeposit'),
154
+ // allow 2-of-3 wallet descriptors together with PoX-5 lockup descriptors (stacks staking)
155
+ getValidatorPox5Wallet(),
87
156
  // allow all descriptors signed by the user key
88
157
  getValidatorSignedByUserKey(),
89
158
  ]);
@@ -91,4 +160,4 @@ function getPolicyForEnv(env) {
91
160
  return exports.policyAllowAll;
92
161
  }
93
162
  }
94
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdGVQb2xpY3kuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZGVzY3JpcHRvci92YWxpZGF0ZVBvbGljeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFxQkEsd0VBY0M7QUFFRCw4Q0FPQztBQUVELDRDQU9DO0FBRUQsZ0VBRUM7QUFFRCxrRUFRQztBQVFELHdEQVFDO0FBRUQsMERBVUM7QUFFRCwwQ0FpQkM7QUFqSEQsZ0RBQTJEO0FBRTNELHVDQUE0QztBQUM1Qyx1REFBdUg7QUFZMUcsUUFBQSxjQUFjLEdBQStCO0lBQ3hELElBQUksRUFBRSxVQUFVO0lBQ2hCLFFBQVEsRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJO0NBQ3JCLENBQUM7QUFFRixTQUFnQiw4QkFBOEIsQ0FBQyxJQUFZO0lBQ3pELE9BQU87UUFDTCxJQUFJLEVBQUUscUJBQXFCLEdBQUcsSUFBSSxHQUFHLEdBQUc7UUFDeEMsUUFBUSxDQUFDLEdBQTRCLEVBQUUsVUFBcUI7WUFDMUQsT0FBTyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7Z0JBQ3JCLE1BQU0sTUFBTSxHQUFHLElBQUEseUJBQWUsRUFBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ3hDLE9BQU8sQ0FDTCxNQUFNLENBQUMsSUFBSSxLQUFLLElBQUk7b0JBQ3BCLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxLQUFLLFVBQVUsQ0FBQyxNQUFNO29CQUN4QyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsS0FBSyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FDbEYsQ0FBQztZQUNKLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztLQUNGLENBQUM7QUFDSixDQUFDO0FBRUQs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RSxDQUFDO1FBQ1osS0FBSyxXQUFXLENBQUM7UUFDakIsS0FBSyxNQUFNO1lBQ1QsT0FBTyxnQkFBZ0IsQ0FBQztnQkFDdEIsMEVBQTBFO2dCQUMxRSw4QkFBOEIsQ0FBQyxTQUFTLENBQUM7Z0JBQ3pDLDhGQUE4RjtnQkFDOUYsOEJBQThCLENBQUMsaUJBQWlCLENBQUM7Z0JBQ2pELHFGQUFxRjtnQkFDckYsOEJBQThCLENBQUMsYUFBYSxDQUFDO2dCQUM3QywrQ0FBK0M7Z0JBQy9DLDJCQUEyQixFQUFFO2FBQzlCLENBQUMsQ0FBQztRQUNMO1lBQ0UsT0FBTyxzQkFBYyxDQUFDO0lBQzFCLENBQUM7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRW52aXJvbm1lbnROYW1lLCBUcmlwbGUgfSBmcm9tICdAYml0Z28tYmV0YS9zZGstY29yZSc7XG5pbXBvcnQgeyBiaXAzMiwgZGVzY3JpcHRvcldhbGxldCB9IGZyb20gJ0BiaXRnby93YXNtLXV0eG8nO1xuXG5pbXBvcnQgeyBwYXJzZURlc2NyaXB0b3IgfSBmcm9tICcuL2J1aWxkZXInO1xuaW1wb3J0IHsgaGFzVmFsaWRTaWduYXR1cmUsIE5hbWVkRGVzY3JpcHRvciwgTmFtZWREZXNjcmlwdG9yTmF0aXZlLCB0b05hbWVkRGVzY3JpcHRvck5hdGl2ZSB9IGZyb20gJy4vTmFtZWREZXNjcmlwdG9yJztcblxuaW1wb3J0IHR5cGUgeyBEZXNjcmlwdG9yTWFwIH0gZnJvbSAnLi9pbmRleCc7XG5cbmV4cG9ydCB0eXBlIEtleVRyaXBsZSA9IFRyaXBsZTxiaXAzMi5CSVAzMkludGVyZmFjZT47XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGVzY3JpcHRvclZhbGlkYXRpb25Qb2xpY3kge1xuICBuYW1lOiBzdHJpbmc7XG5cbiAgdmFsaWRhdGUoYXJyOiBOYW1lZERlc2NyaXB0b3JOYXRpdmVbXSwgd2FsbGV0S2V5czogS2V5VHJpcGxlKTogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGNvbnN0IHBvbGljeUFsbG93QWxsOiBEZXNjcmlwdG9yVmFsaWRhdGlvblBvbGljeSA9IHtcbiAgbmFtZTogJ2FsbG93QWxsJyxcbiAgdmFsaWRhdGU6ICgpID0+IHRydWUsXG59O1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0VmFsaWRhdG9yRGVzY3JpcHRvclRlbXBsYXRlKG5hbWU6IHN0cmluZyk6IERlc2NyaXB0b3JWYWxpZGF0aW9uUG9saWN5IHtcbiAgcmV0dXJuIHtcbiAgICBuYW1lOiAnZGVzY3JpcHRvclRlbXBsYXRlKCcgKyBuYW1lICsgJyknLFxuICAgIHZhbGlkYXRlKGFycjogTmFtZWREZXNjcmlwdG9yTmF0aXZlW10sIHdhbGxldEtleXM6IEtleVRyaXBsZSk6IGJvb2xlYW4ge1xuICAgICAgcmV0dXJuIGFyci5ldmVyeSgoZCkgPT4ge1xuICAgICAgICBjb25zdCBwYXJzZWQgPSBwYXJzZURlc2NyaXB0b3IoZC52YWx1ZSk7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgcGFyc2VkLm5hbWUgPT09IG5hbWUgJiZcbiAgICAgICAgICBwYXJzZWQua2V5cy5sZW5ndGggPT09IHdhbGxldEtleXMubGVuZ3RoICYmXG4gICAgICAgICAgcGFyc2VkLmtleXMuZXZlcnkoKGssIGkpID0+IGsudG9CYXNlNTgoKSA9PT0gd2FsbGV0S2V5c1tpXS5uZXV0ZXJlZCgpLnRvQmFzZTU4KCkpXG4gICAgICAgICk7XG4gICAgICB9KTtcbiAgICB9LFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0VmFsaWRhdG9yRXZlcnkodmFsaWRhdG9yczogRGVzY3JpcHRvclZhbGlkYXRpb25Qb2xpY3lbXSk6IERlc2NyaXB0b3JWYWxpZGF0aW9uUG9saWN5IHtcbiAgcmV0dXJuIHtcbiAgICBuYW1lOiAnZXZlcnkoJyArIHZhbGlkYXRvcnMubWFwKCh2KSA9PiB2Lm5hbWUpLmpvaW4oJywnKSArICcpJyxcbiAgICB2YWxpZGF0ZShhcnI6IE5hbWVkRGVzY3JpcHRvck5hdGl2ZVtdLCB3YWxsZXRLZXlzOiBLZXlUcmlwbGUpOiBib29sZWFuIHtcbiAgICAgIHJldHVybiB2YWxpZGF0b3JzLmV2ZXJ5KCh2KSA9PiB2LnZhbGlkYXRlKGFyciwgd2FsbGV0S2V5cykpO1xuICAgIH0sXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRWYWxpZGF0b3JTb21lKHZhbGlkYXRvcnM6IERlc2NyaXB0b3JWYWxpZGF0aW9uUG9saWN5W10pOiBEZXNjcmlwdG9yVmFsaWRhdGlvblBvbGljeSB7XG4gIHJldHVybiB7XG4gICAgbmFtZTogJ3NvbWUoJyArIHZhbGlkYXRvcnMubWFwKCh2KSA9PiB2Lm5hbWUpLmpvaW4oJywnKSArICcpJyxcbiAgICB2YWxpZGF0ZShhcnI6IE5hbWVkRGVzY3JpcHRvck5hdGl2ZVtdLCB3YWxsZXRLZXlzOiBLZXlUcmlwbGUpOiBib29sZWFuIHtcbiAgICAgIHJldHVybiB2YWxpZGF0b3JzLnNvbWUoKHYpID0+IHYudmFsaWRhdGUoYXJyLCB3YWxsZXRLZXlzKSk7XG4gICAgfSxcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFZhbGlkYXRvck9uZU9mVGVtcGxhdGVzKG5hbWVzOiBzdHJpbmdbXSk6IERlc2NyaXB0b3JWYWxpZGF0aW9uUG9saWN5IHtcbiAgcmV0dXJuIGdldFZhbGlkYXRvclNvbWUobmFtZXMubWFwKGdldFZhbGlkYXRvckRlc2NyaXB0b3JUZW1wbGF0ZSkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0VmFsaWRhdG9yU2lnbmVkQnlVc2VyS2V5KCk6IERlc2NyaXB0b3JWYWxpZGF0aW9uUG9saWN5IHtcbiAgcmV0dXJuIHtcbiAgICBuYW1lOiAnc2lnbmVkQnlVc2VyJyxcbiAgICB2YWxpZGF0ZShhcnI6IE5hbWVkRGVzY3JpcHRvck5hdGl2ZVtdLCB3YWxsZXRLZXlzOiBLZXlUcmlwbGUpOiBib29sZWFuIHtcbiAgICAgIC8vIHRoZSBmaXJzdCBrZXkgaXMgdGhlIHVzZXIga2V5LCBieSBjb252ZW50aW9uXG4gICAgICByZXR1cm4gYXJyLmV2ZXJ5KChkKSA9PiBoYXNWYWxpZFNpZ25hdHVyZShkLnZhbHVlLCB3YWxsZXRLZXlzWzBdLCBkLnNpZ25hdHVyZXMgPz8gW10pKTtcbiAgICB9LFxuICB9O1xufVxuXG5leHBvcnQgY2xhc3MgRGVzY3JpcHRvclBvbGljeVZhbGlkYXRpb25FcnJvciBleHRlbmRzIEVycm9yIHtcbiAgY29uc3RydWN0b3IoZHM6IE5hbWVkRGVzY3JpcHRvck5hdGl2ZVtdLCBwb2xpY3k6IERlc2NyaXB0b3JWYWxpZGF0aW9uUG9saWN5KSB7XG4gICAgc3VwZXIoYERlc2NyaXB0b3JzICR7ZHMubWFwKChkKSA9PiBkLnZhbHVlLnRvU3RyaW5nKCkpfSBkb2VzIG5vdCBtYXRjaCBwb2xpY3kgJHtwb2xpY3kubmFtZX1gKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gYXNzZXJ0RGVzY3JpcHRvclBvbGljeShcbiAgZGVzY3JpcHRvcnM6IE5hbWVkRGVzY3JpcHRvck5hdGl2ZVtdLFxuICBwb2xpY3k6IERlc2NyaXB0b3JWYWxpZGF0aW9uUG9saWN5LFxuICB3YWxsZXRLZXlzOiBLZXlUcmlwbGVcbik6IHZvaWQge1xuICBpZiAoIXBvbGljeS52YWxpZGF0ZShkZXNjcmlwdG9ycywgd2FsbGV0S2V5cykpIHtcbiAgICB0aHJvdyBuZXcgRGVzY3JpcHRvclBvbGljeVZhbGlkYXRpb25FcnJvcihkZXNjcmlwdG9ycywgcG9saWN5KTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdG9EZXNjcmlwdG9yTWFwVmFsaWRhdGUoXG4gIGRlc2NyaXB0b3JzOiBOYW1lZERlc2NyaXB0b3JbXSxcbiAgd2FsbGV0S2V5czogS2V5VHJpcGxlLFxuICBwb2xpY3k6IERlc2NyaXB0b3JWYWxpZGF0aW9uUG9saWN5XG4pOiBEZXNjcmlwdG9yTWFwIHtcbiAgY29uc3QgbmFtZWREZXNjcmlwdG9yc05hdGl2ZTogTmFtZWREZXNjcmlwdG9yTmF0aXZlW10gPSBkZXNjcmlwdG9ycy5tYXAoKHYpID0+XG4gICAgdG9OYW1lZERlc2NyaXB0b3JOYXRpdmUodiwgJ2Rlcml2YWJsZScpXG4gICk7XG4gIGFzc2VydERlc2NyaXB0b3JQb2xpY3kobmFtZWREZXNjcmlwdG9yc05hdGl2ZSwgcG9saWN5LCB3YWxsZXRLZXlzKTtcbiAgcmV0dXJuIGRlc2NyaXB0b3JXYWxsZXQudG9EZXNjcmlwdG9yTWFwKG5hbWVkRGVzY3JpcHRvcnNOYXRpdmUpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0UG9saWN5Rm9yRW52KGVudjogRW52aXJvbm1lbnROYW1lKTogRGVzY3JpcHRvclZhbGlkYXRpb25Qb2xpY3kge1xuICBzd2l0Y2ggKGVudikge1xuICAgIGNhc2UgJ2FkbWluUHJvZCc6XG4gICAgY2FzZSAncHJvZCc6XG4gICAgICByZXR1cm4gZ2V0VmFsaWRhdG9yU29tZShbXG4gICAgICAgIC8vIGFsbG93IDItb2YtMy1pc2ggZGVzY3JpcHRvciBncm91cHMgd2hlcmUgdGhlIGtleXMgbWF0Y2ggdGhlIHdhbGxldCBrZXlzXG4gICAgICAgIGdldFZhbGlkYXRvckRlc2NyaXB0b3JUZW1wbGF0ZSgnV3NoMk9mMycpLFxuICAgICAgICAvLyBhbGxvdyBkZXNjcmlwdG9yIGdyb3VwcyB3aGVyZSBhbGwga2V5cyBtYXRjaCB0aGUgd2FsbGV0IGtleXMgcGx1cyBPUF9EUk9QIChjb3JlZGFvIHN0YWtpbmcpXG4gICAgICAgIGdldFZhbGlkYXRvckRlc2NyaXB0b3JUZW1wbGF0ZSgnV3NoMk9mM0NsdHZEcm9wJyksXG4gICAgICAgIC8vIGFsbG93IHNCVEMgcGVnLWluIGRlcG9zaXQgZGVzY3JpcHRvcnMgd2hlcmUgdGhlIHJlY2xhaW0ga2V5cyBtYXRjaCB0aGUgd2FsbGV0IGtleXNcbiAgICAgICAgZ2V0VmFsaWRhdG9yRGVzY3JpcHRvclRlbXBsYXRlKCdTYnRjRGVwb3NpdCcpLFxuICAgICAgICAvLyBhbGxvdyBhbGwgZGVzY3JpcHRvcnMgc2lnbmVkIGJ5IHRoZSB1c2VyIGtleVxuICAgICAgICBnZXRWYWxpZGF0b3JTaWduZWRCeVVzZXJLZXkoKSxcbiAgICAgIF0pO1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gcG9saWN5QWxsb3dBbGw7XG4gIH1cbn1cbiJdfQ==
163
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdGVQb2xpY3kuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZGVzY3JpcHRvci92YWxpZGF0ZVBvbGljeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUErQkEsd0VBZUM7QUFFRCw4Q0FPQztBQUVELDRDQU9DO0FBRUQsZ0VBRUM7QUFFRCxrRUFRQztBQTRCRCx3REFPQztBQU1ELHNEQU9DO0FBTUQsd0RBRUM7QUFRRCx3REFRQztBQUVELDBEQVVDO0FBRUQsMENBbUJDO0FBdExELG1FQUFvRDtBQUNwRCxnREFBdUU7QUFFdkUsdUNBQStEO0FBQy9ELHVEQUF1SDtBQVkxRyxRQUFBLGNBQWMsR0FBK0I7SUFDeEQsSUFBSSxFQUFFLFVBQVU7SUFDaEIsUUFBUSxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUk7Q0FDckIsQ0FBQztBQUVGLFNBQVMsa0JBQWtCLENBQUMsVUFBc0I7SUFDaEQsSUFBSSxDQUFDO1FBQ0gsT0FBTyxJQUFBLHlCQUFlLEVBQUMsVUFBVSxDQUFDLENBQUM7SUFDckMsQ0FBQztJQUFDLE1BQU0sQ0FBQztRQUNQLHNFQUFzRTtRQUN0RSxPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO0FBQ0gsQ0FBQztBQUVELFNBQWdCLDhCQUE4QixDQUFDLElBQVk7SUFDekQsT0FBTztRQUNMLElBQUksRUFBRSxxQkFBcUIsR0FBRyxJQUFJLEdBQUcsR0FBRztRQUN4QyxRQUFRLENBQUMsR0FBNEIsRUFBRSxVQUFxQjtZQUMxRCxPQUFPLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtnQkFDckIsTUFBTSxNQUFNLEdBQUcsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUMzQyxPQUFPLENBQ0wsTUFBTSxLQUFLLFNBQVM7b0JBQ3BCLE1BQU0sQ0FBQyxJQUFJLEtBQUssSUFBSTtvQkFDcEIsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLEtBQUssVUFB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MEZBQTBGO2dCQUMxRixzQkFBc0IsRUFBRTtnQkFDeEIsK0NBQStDO2dCQUMvQywyQkFBMkIsRUFBRTthQUM5QixDQUFDLENBQUM7UUFDTDtZQUNFLE9BQU8sc0JBQWMsQ0FBQztJQUMxQixDQUFDO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVudmlyb25tZW50TmFtZSwgVHJpcGxlIH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuaW1wb3J0IHsgcG94NSB9IGZyb20gJ0BiaXRnby1iZXRhL3V0eG8tZGVzY3JpcHRvcnMnO1xuaW1wb3J0IHsgYmlwMzIsIERlc2NyaXB0b3IsIGRlc2NyaXB0b3JXYWxsZXQgfSBmcm9tICdAYml0Z28vd2FzbS11dHhvJztcblxuaW1wb3J0IHsgRGVzY3JpcHRvckJ1aWxkZXIsIHBhcnNlRGVzY3JpcHRvciB9IGZyb20gJy4vYnVpbGRlcic7XG5pbXBvcnQgeyBoYXNWYWxpZFNpZ25hdHVyZSwgTmFtZWREZXNjcmlwdG9yLCBOYW1lZERlc2NyaXB0b3JOYXRpdmUsIHRvTmFtZWREZXNjcmlwdG9yTmF0aXZlIH0gZnJvbSAnLi9OYW1lZERlc2NyaXB0b3InO1xuXG5pbXBvcnQgdHlwZSB7IERlc2NyaXB0b3JNYXAgfSBmcm9tICcuL2luZGV4JztcblxuZXhwb3J0IHR5cGUgS2V5VHJpcGxlID0gVHJpcGxlPGJpcDMyLkJJUDMySW50ZXJmYWNlPjtcblxuZXhwb3J0IGludGVyZmFjZSBEZXNjcmlwdG9yVmFsaWRhdGlvblBvbGljeSB7XG4gIG5hbWU6IHN0cmluZztcblxuICB2YWxpZGF0ZShhcnI6IE5hbWVkRGVzY3JpcHRvck5hdGl2ZVtdLCB3YWxsZXRLZXlzOiBLZXlUcmlwbGUpOiBib29sZWFuO1xufVxuXG5leHBvcnQgY29uc3QgcG9saWN5QWxsb3dBbGw6IERlc2NyaXB0b3JWYWxpZGF0aW9uUG9saWN5ID0ge1xuICBuYW1lOiAnYWxsb3dBbGwnLFxuICB2YWxpZGF0ZTogKCkgPT4gdHJ1ZSxcbn07XG5cbmZ1bmN0aW9uIHRyeVBhcnNlRGVzY3JpcHRvcihkZXNjcmlwdG9yOiBEZXNjcmlwdG9yKTogRGVzY3JpcHRvckJ1aWxkZXIgfCB1bmRlZmluZWQge1xuICB0cnkge1xuICAgIHJldHVybiBwYXJzZURlc2NyaXB0b3IoZGVzY3JpcHRvcik7XG4gIH0gY2F0Y2gge1xuICAgIC8vIG5vdCBhIGRlc2NyaXB0b3Igd2Uga25vdyBob3cgdG8gcGFyc2U6IGl0IGNhbm5vdCBtYXRjaCBhbnkgdGVtcGxhdGVcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRWYWxpZGF0b3JEZXNjcmlwdG9yVGVtcGxhdGUobmFtZTogc3RyaW5nKTogRGVzY3JpcHRvclZhbGlkYXRpb25Qb2xpY3kge1xuICByZXR1cm4ge1xuICAgIG5hbWU6ICdkZXNjcmlwdG9yVGVtcGxhdGUoJyArIG5hbWUgKyAnKScsXG4gICAgdmFsaWRhdGUoYXJyOiBOYW1lZERlc2NyaXB0b3JOYXRpdmVbXSwgd2FsbGV0S2V5czogS2V5VHJpcGxlKTogYm9vbGVhbiB7XG4gICAgICByZXR1cm4gYXJyLmV2ZXJ5KChkKSA9PiB7XG4gICAgICAgIGNvbnN0IHBhcnNlZCA9IHRyeVBhcnNlRGVzY3JpcHRvcihkLnZhbHVlKTtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICBwYXJzZWQgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgICAgIHBhcnNlZC5uYW1lID09PSBuYW1lICYmXG4gICAgICAgICAgcGFyc2VkLmtleXMubGVuZ3RoID09PSB3YWxsZXRLZXlzLmxlbmd0aCAmJlxuICAgICAgICAgIHBhcnNlZC5rZXlzLmV2ZXJ5KChrLCBpKSA9PiBrLnRvQmFzZTU4KCkgPT09IHdhbGxldEtleXNbaV0ubmV1dGVyZWQoKS50b0Jhc2U1OCgpKVxuICAgICAgICApO1xuICAgICAgfSk7XG4gICAgfSxcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFZhbGlkYXRvckV2ZXJ5KHZhbGlkYXRvcnM6IERlc2NyaXB0b3JWYWxpZGF0aW9uUG9saWN5W10pOiBEZXNjcmlwdG9yVmFsaWRhdGlvblBvbGljeSB7XG4gIHJldHVybiB7XG4gICAgbmFtZTogJ2V2ZXJ5KCcgKyB2YWxpZGF0b3JzLm1hcCgodikgPT4gdi5uYW1lKS5qb2luKCcsJykgKyAnKScsXG4gICAgdmFsaWRhdGUoYXJyOiBOYW1lZERlc2NyaXB0b3JOYXRpdmVbXSwgd2FsbGV0S2V5czogS2V5VHJpcGxlKTogYm9vbGVhbiB7XG4gICAgICByZXR1cm4gdmFsaWRhdG9ycy5ldmVyeSgodikgPT4gdi52YWxpZGF0ZShhcnIsIHdhbGxldEtleXMpKTtcbiAgICB9LFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0VmFsaWRhdG9yU29tZSh2YWxpZGF0b3JzOiBEZXNjcmlwdG9yVmFsaWRhdGlvblBvbGljeVtdKTogRGVzY3JpcHRvclZhbGlkYXRpb25Qb2xpY3kge1xuICByZXR1cm4ge1xuICAgIG5hbWU6ICdzb21lKCcgKyB2YWxpZGF0b3JzLm1hcCgodikgPT4gdi5uYW1lKS5qb2luKCcsJykgKyAnKScsXG4gICAgdmFsaWRhdGUoYXJyOiBOYW1lZERlc2NyaXB0b3JOYXRpdmVbXSwgd2FsbGV0S2V5czogS2V5VHJpcGxlKTogYm9vbGVhbiB7XG4gICAgICByZXR1cm4gdmFsaWRhdG9ycy5zb21lKCh2KSA9PiB2LnZhbGlkYXRlKGFyciwgd2FsbGV0S2V5cykpO1xuICAgIH0sXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRWYWxpZGF0b3JPbmVPZlRlbXBsYXRlcyhuYW1lczogc3RyaW5nW10pOiBEZXNjcmlwdG9yVmFsaWRhdGlvblBvbGljeSB7XG4gIHJldHVybiBnZXRWYWxpZGF0b3JTb21lKG5hbWVzLm1hcChnZXRWYWxpZGF0b3JEZXNjcmlwdG9yVGVtcGxhdGUpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFZhbGlkYXRvclNpZ25lZEJ5VXNlcktleSgpOiBEZXNjcmlwdG9yVmFsaWRhdGlvblBvbGljeSB7XG4gIHJldHVybiB7XG4gICAgbmFtZTogJ3NpZ25lZEJ5VXNlcicsXG4gICAgdmFsaWRhdGUoYXJyOiBOYW1lZERlc2NyaXB0b3JOYXRpdmVbXSwgd2FsbGV0S2V5czogS2V5VHJpcGxlKTogYm9vbGVhbiB7XG4gICAgICAvLyB0aGUgZmlyc3Qga2V5IGlzIHRoZSB1c2VyIGtleSwgYnkgY29udmVudGlvblxuICAgICAgcmV0dXJuIGFyci5ldmVyeSgoZCkgPT4gaGFzVmFsaWRTaWduYXR1cmUoZC52YWx1ZSwgd2FsbGV0S2V5c1swXSwgZC5zaWduYXR1cmVzID8/IFtdKSk7XG4gICAgfSxcbiAgfTtcbn1cblxuZnVuY3Rpb24gaXNDYW5vbmljYWxQb3g1TG9ja3VwKGRlc2NyaXB0b3I6IERlc2NyaXB0b3IsIHdhbGxldEtleXM6IEtleVRyaXBsZSk6IGJvb2xlYW4ge1xuICB0cnkge1xuICAgIGNvbnN0IGluZm8gPSBwb3g1LnBhcnNlUG94NUxvY2t1cERlc2NyaXB0b3IoZGVzY3JpcHRvcik7XG4gICAgaWYgKCFpbmZvKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIC8vIFJlYnVpbGRpbmcgdGhlIGNhbm9uaWNhbCBkZXNjcmlwdG9yIGZyb20gdGhlIHdhbGxldCBrZXlzIGNoZWNrcyBib3RoIHRoYXQgdGhlXG4gICAgLy8gc3Rha2VyIGtleXMgYXJlIHRoZSB3YWxsZXQga2V5cyAod2l0aCB0aGUgYC8qYCBkZXJpdmF0aW9uKSBhbmQgdGhhdCB0aGVcbiAgICAvLyBkZXNjcmlwdG9yIGhhcyBubyBub24tY2Fub25pY2FsIGVuY29kaW5nLlxuICAgIGNvbnN0IGNhbm9uaWNhbCA9IHBveDUuY3JlYXRlUG94NUxvY2t1cERlc2NyaXB0b3Ioe1xuICAgICAgdW5sb2NrSGVpZ2h0OiBpbmZvLnVubG9ja0hlaWdodCxcbiAgICAgIHN0YWtlckNvbW1pdG1lbnQ6IGluZm8uc3Rha2VyQ29tbWl0bWVudCxcbiAgICAgIGVhcmx5RXhpdEtleTogaW5mby5lYXJseUV4aXRLZXksXG4gICAgICBzdGFrZXJLZXlzOiBbd2FsbGV0S2V5c1swXSwgd2FsbGV0S2V5c1sxXSwgd2FsbGV0S2V5c1syXV0sXG4gICAgfSk7XG4gICAgcmV0dXJuIGNhbm9uaWNhbC50b1N0cmluZygpID09PSBkZXNjcmlwdG9yLnRvU3RyaW5nKCk7XG4gIH0gY2F0Y2gge1xuICAgIC8vIG1hbGZvcm1lZCBsb2NrdXAgcGFyYW1ldGVyc1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuXG4vKipcbiAqIEFjY2VwdHMgZGVzY3JpcHRvcnMgdGhhdCBhcmUgY2Fub25pY2FsIFBvWC01IGxvY2t1cCBkZXNjcmlwdG9ycyB3aG9zZSBzdGFrZXIga2V5c1xuICogYXJlIHRoZSB3YWxsZXQga2V5cy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFZhbGlkYXRvclBveDVMb2NrdXAoKTogRGVzY3JpcHRvclZhbGlkYXRpb25Qb2xpY3kge1xuICByZXR1cm4ge1xuICAgIG5hbWU6ICdwb3g1TG9ja3VwJyxcbiAgICB2YWxpZGF0ZShhcnI6IE5hbWVkRGVzY3JpcHRvck5hdGl2ZVtdLCB3YWxsZXRLZXlzOiBLZXlUcmlwbGUpOiBib29sZWFuIHtcbiAgICAgIHJldHVybiBhcnIuZXZlcnkoKGQpID0+IGlzQ2Fub25pY2FsUG94NUxvY2t1cChkLnZhbHVlLCB3YWxsZXRLZXlzKSk7XG4gICAgfSxcbiAgfTtcbn1cblxuLyoqXG4gKiBBY2NlcHRzIGRlc2NyaXB0b3IgZ3JvdXBzIHdoZXJlIGVhY2ggZGVzY3JpcHRvciBpbmRpdmlkdWFsbHkgc2F0aXNmaWVzIGF0IGxlYXN0IG9uZSBvZlxuICogdGhlIHZhbGlkYXRvcnMuIFVubGlrZSBgZ2V0VmFsaWRhdG9yU29tZWAsIGRpZmZlcmVudCBkZXNjcmlwdG9ycyBtYXkgbWF0Y2ggZGlmZmVyZW50IHZhbGlkYXRvcnMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRWYWxpZGF0b3JFYWNoT25lT2YodmFsaWRhdG9yczogRGVzY3JpcHRvclZhbGlkYXRpb25Qb2xpY3lbXSk6IERlc2NyaXB0b3JWYWxpZGF0aW9uUG9saWN5IHtcbiAgcmV0dXJuIHtcbiAgICBuYW1lOiAnZWFjaE9uZU9mKCcgKyB2YWxpZGF0b3JzLm1hcCgodikgPT4gdi5uYW1lKS5qb2luKCcsJykgKyAnKScsXG4gICAgdmFsaWRhdGUoYXJyOiBOYW1lZERlc2NyaXB0b3JOYXRpdmVbXSwgd2FsbGV0S2V5czogS2V5VHJpcGxlKTogYm9vbGVhbiB7XG4gICAgICByZXR1cm4gYXJyLmV2ZXJ5KChkKSA9PiB2YWxpZGF0b3JzLnNvbWUoKHYpID0+IHYudmFsaWRhdGUoW2RdLCB3YWxsZXRLZXlzKSkpO1xuICAgIH0sXG4gIH07XG59XG5cbi8qKlxuICogQWNjZXB0cyB0aGUgZGVzY3JpcHRvcnMgb2YgYSBQb1gtNSBzdGFraW5nIHdhbGxldDogdGhlIHJlZ3VsYXIgMi1vZi0zIHdhbGxldCBkZXNjcmlwdG9yc1xuICogdG9nZXRoZXIgd2l0aCBQb1gtNSBsb2NrdXAgZGVzY3JpcHRvcnMsIGFsbCB1c2luZyB0aGUgd2FsbGV0IGtleXMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRWYWxpZGF0b3JQb3g1V2FsbGV0KCk6IERlc2NyaXB0b3JWYWxpZGF0aW9uUG9saWN5IHtcbiAgcmV0dXJuIGdldFZhbGlkYXRvckVhY2hPbmVPZihbZ2V0VmFsaWRhdG9yRGVzY3JpcHRvclRlbXBsYXRlKCdXc2gyT2YzJyksIGdldFZhbGlkYXRvclBveDVMb2NrdXAoKV0pO1xufVxuXG5leHBvcnQgY2xhc3MgRGVzY3JpcHRvclBvbGljeVZhbGlkYXRpb25FcnJvciBleHRlbmRzIEVycm9yIHtcbiAgY29uc3RydWN0b3IoZHM6IE5hbWVkRGVzY3JpcHRvck5hdGl2ZVtdLCBwb2xpY3k6IERlc2NyaXB0b3JWYWxpZGF0aW9uUG9saWN5KSB7XG4gICAgc3VwZXIoYERlc2NyaXB0b3JzICR7ZHMubWFwKChkKSA9PiBkLnZhbHVlLnRvU3RyaW5nKCkpfSBkb2VzIG5vdCBtYXRjaCBwb2xpY3kgJHtwb2xpY3kubmFtZX1gKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gYXNzZXJ0RGVzY3JpcHRvclBvbGljeShcbiAgZGVzY3JpcHRvcnM6IE5hbWVkRGVzY3JpcHRvck5hdGl2ZVtdLFxuICBwb2xpY3k6IERlc2NyaXB0b3JWYWxpZGF0aW9uUG9saWN5LFxuICB3YWxsZXRLZXlzOiBLZXlUcmlwbGVcbik6IHZvaWQge1xuICBpZiAoIXBvbGljeS52YWxpZGF0ZShkZXNjcmlwdG9ycywgd2FsbGV0S2V5cykpIHtcbiAgICB0aHJvdyBuZXcgRGVzY3JpcHRvclBvbGljeVZhbGlkYXRpb25FcnJvcihkZXNjcmlwdG9ycywgcG9saWN5KTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdG9EZXNjcmlwdG9yTWFwVmFsaWRhdGUoXG4gIGRlc2NyaXB0b3JzOiBOYW1lZERlc2NyaXB0b3JbXSxcbiAgd2FsbGV0S2V5czogS2V5VHJpcGxlLFxuICBwb2xpY3k6IERlc2NyaXB0b3JWYWxpZGF0aW9uUG9saWN5XG4pOiBEZXNjcmlwdG9yTWFwIHtcbiAgY29uc3QgbmFtZWREZXNjcmlwdG9yc05hdGl2ZTogTmFtZWREZXNjcmlwdG9yTmF0aXZlW10gPSBkZXNjcmlwdG9ycy5tYXAoKHYpID0+XG4gICAgdG9OYW1lZERlc2NyaXB0b3JOYXRpdmUodiwgJ2Rlcml2YWJsZScpXG4gICk7XG4gIGFzc2VydERlc2NyaXB0b3JQb2xpY3kobmFtZWREZXNjcmlwdG9yc05hdGl2ZSwgcG9saWN5LCB3YWxsZXRLZXlzKTtcbiAgcmV0dXJuIGRlc2NyaXB0b3JXYWxsZXQudG9EZXNjcmlwdG9yTWFwKG5hbWVkRGVzY3JpcHRvcnNOYXRpdmUpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0UG9saWN5Rm9yRW52KGVudjogRW52aXJvbm1lbnROYW1lKTogRGVzY3JpcHRvclZhbGlkYXRpb25Qb2xpY3kge1xuICBzd2l0Y2ggKGVudikge1xuICAgIGNhc2UgJ2FkbWluUHJvZCc6XG4gICAgY2FzZSAncHJvZCc6XG4gICAgICByZXR1cm4gZ2V0VmFsaWRhdG9yU29tZShbXG4gICAgICAgIC8vIGFsbG93IDItb2YtMy1pc2ggZGVzY3JpcHRvciBncm91cHMgd2hlcmUgdGhlIGtleXMgbWF0Y2ggdGhlIHdhbGxldCBrZXlzXG4gICAgICAgIGdldFZhbGlkYXRvckRlc2NyaXB0b3JUZW1wbGF0ZSgnV3NoMk9mMycpLFxuICAgICAgICAvLyBhbGxvdyBkZXNjcmlwdG9yIGdyb3VwcyB3aGVyZSBhbGwga2V5cyBtYXRjaCB0aGUgd2FsbGV0IGtleXMgcGx1cyBPUF9EUk9QIChjb3JlZGFvIHN0YWtpbmcpXG4gICAgICAgIGdldFZhbGlkYXRvckRlc2NyaXB0b3JUZW1wbGF0ZSgnV3NoMk9mM0NsdHZEcm9wJyksXG4gICAgICAgIC8vIGFsbG93IHNCVEMgcGVnLWluIGRlcG9zaXQgZGVzY3JpcHRvcnMgd2hlcmUgdGhlIHJlY2xhaW0ga2V5cyBtYXRjaCB0aGUgd2FsbGV0IGtleXNcbiAgICAgICAgZ2V0VmFsaWRhdG9yRGVzY3JpcHRvclRlbXBsYXRlKCdTYnRjRGVwb3NpdCcpLFxuICAgICAgICAvLyBhbGxvdyAyLW9mLTMgd2FsbGV0IGRlc2NyaXB0b3JzIHRvZ2V0aGVyIHdpdGggUG9YLTUgbG9ja3VwIGRlc2NyaXB0b3JzIChzdGFja3Mgc3Rha2luZylcbiAgICAgICAgZ2V0VmFsaWRhdG9yUG94NVdhbGxldCgpLFxuICAgICAgICAvLyBhbGxvdyBhbGwgZGVzY3JpcHRvcnMgc2lnbmVkIGJ5IHRoZSB1c2VyIGtleVxuICAgICAgICBnZXRWYWxpZGF0b3JTaWduZWRCeVVzZXJLZXkoKSxcbiAgICAgIF0pO1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gcG9saWN5QWxsb3dBbGw7XG4gIH1cbn1cbiJdfQ==
@@ -1,10 +1,9 @@
1
1
  import { BitGoBase } from '@bitgo-beta/sdk-core';
2
- import { UtxoCoinName, WasmUtxoCoinName } from '../../names';
2
+ import { UtxoCoinName } from '../../names';
3
3
  import { Tbtc } from './tbtc';
4
4
  export declare class Tbtcstx extends Tbtc {
5
5
  readonly name: UtxoCoinName;
6
6
  constructor(bitgo: BitGoBase);
7
7
  static createInstance(bitgo: BitGoBase): Tbtcstx;
8
- get wasmName(): WasmUtxoCoinName;
9
8
  }
10
9
  //# sourceMappingURL=tbtcstx.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"tbtcstx.d.ts","sourceRoot":"","sources":["../../../../../src/impl/btc/tbtcstx.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEjD,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAE7D,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAE9B,qBAAa,OAAQ,SAAQ,IAAI;IAC/B,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAa;gBAE5B,KAAK,EAAE,SAAS;IAI5B,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO;IAIhD,IAAa,QAAQ,IAAI,gBAAgB,CAExC;CACF"}
1
+ {"version":3,"file":"tbtcstx.d.ts","sourceRoot":"","sources":["../../../../../src/impl/btc/tbtcstx.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEjD,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAE9B,qBAAa,OAAQ,SAAQ,IAAI;IAC/B,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAa;gBAE5B,KAAK,EAAE,SAAS;IAI5B,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO;CAGjD"}
@@ -10,9 +10,6 @@ class Tbtcstx extends tbtc_1.Tbtc {
10
10
  static createInstance(bitgo) {
11
11
  return new Tbtcstx(bitgo);
12
12
  }
13
- get wasmName() {
14
- return 'tbtcreg';
15
- }
16
13
  }
17
14
  exports.Tbtcstx = Tbtcstx;
18
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGJ0Y3N0eC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9pbXBsL2J0Yy90YnRjc3R4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUlBLGlDQUE4QjtBQUU5QixNQUFhLE9BQVEsU0FBUSxXQUFJO0lBRy9CLFlBQVksS0FBZ0I7UUFDMUIsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBSE4sU0FBSSxHQUFpQixTQUFTLENBQUM7SUFJeEMsQ0FBQztJQUVELE1BQU0sQ0FBQyxjQUFjLENBQUMsS0FBZ0I7UUFDcEMsT0FBTyxJQUFJLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM1QixDQUFDO0lBRUQsSUFBYSxRQUFRO1FBQ25CLE9BQU8sU0FBUyxDQUFDO0lBQ25CLENBQUM7Q0FDRjtBQWRELDBCQWNDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQml0R29CYXNlIH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuXG5pbXBvcnQgeyBVdHhvQ29pbk5hbWUsIFdhc21VdHhvQ29pbk5hbWUgfSBmcm9tICcuLi8uLi9uYW1lcyc7XG5cbmltcG9ydCB7IFRidGMgfSBmcm9tICcuL3RidGMnO1xuXG5leHBvcnQgY2xhc3MgVGJ0Y3N0eCBleHRlbmRzIFRidGMge1xuICByZWFkb25seSBuYW1lOiBVdHhvQ29pbk5hbWUgPSAndGJ0Y3N0eCc7XG5cbiAgY29uc3RydWN0b3IoYml0Z286IEJpdEdvQmFzZSkge1xuICAgIHN1cGVyKGJpdGdvKTtcbiAgfVxuXG4gIHN0YXRpYyBjcmVhdGVJbnN0YW5jZShiaXRnbzogQml0R29CYXNlKTogVGJ0Y3N0eCB7XG4gICAgcmV0dXJuIG5ldyBUYnRjc3R4KGJpdGdvKTtcbiAgfVxuXG4gIG92ZXJyaWRlIGdldCB3YXNtTmFtZSgpOiBXYXNtVXR4b0NvaW5OYW1lIHtcbiAgICByZXR1cm4gJ3RidGNyZWcnO1xuICB9XG59XG4iXX0=
15
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGJ0Y3N0eC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9pbXBsL2J0Yy90YnRjc3R4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUlBLGlDQUE4QjtBQUU5QixNQUFhLE9BQVEsU0FBUSxXQUFJO0lBRy9CLFlBQVksS0FBZ0I7UUFDMUIsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBSE4sU0FBSSxHQUFpQixTQUFTLENBQUM7SUFJeEMsQ0FBQztJQUVELE1BQU0sQ0FBQyxjQUFjLENBQUMsS0FBZ0I7UUFDcEMsT0FBTyxJQUFJLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM1QixDQUFDO0NBQ0Y7QUFWRCwwQkFVQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJpdEdvQmFzZSB9IGZyb20gJ0BiaXRnby1iZXRhL3Nkay1jb3JlJztcblxuaW1wb3J0IHsgVXR4b0NvaW5OYW1lIH0gZnJvbSAnLi4vLi4vbmFtZXMnO1xuXG5pbXBvcnQgeyBUYnRjIH0gZnJvbSAnLi90YnRjJztcblxuZXhwb3J0IGNsYXNzIFRidGNzdHggZXh0ZW5kcyBUYnRjIHtcbiAgcmVhZG9ubHkgbmFtZTogVXR4b0NvaW5OYW1lID0gJ3RidGNzdHgnO1xuXG4gIGNvbnN0cnVjdG9yKGJpdGdvOiBCaXRHb0Jhc2UpIHtcbiAgICBzdXBlcihiaXRnbyk7XG4gIH1cblxuICBzdGF0aWMgY3JlYXRlSW5zdGFuY2UoYml0Z286IEJpdEdvQmFzZSk6IFRidGNzdHgge1xuICAgIHJldHVybiBuZXcgVGJ0Y3N0eChiaXRnbyk7XG4gIH1cbn1cbiJdfQ==
@@ -1,10 +1,9 @@
1
1
  import { BitGoBase } from '@bitgo-beta/sdk-core';
2
- import { UtxoCoinName, WasmUtxoCoinName } from '../../names';
2
+ import { UtxoCoinName } from '../../names';
3
3
  import { Tbtc } from './tbtc';
4
4
  export declare class Tbtcstxsignet extends Tbtc {
5
5
  readonly name: UtxoCoinName;
6
6
  constructor(bitgo: BitGoBase);
7
7
  static createInstance(bitgo: BitGoBase): Tbtcstxsignet;
8
- get wasmName(): WasmUtxoCoinName;
9
8
  }
10
9
  //# sourceMappingURL=tbtcstxsignet.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"tbtcstxsignet.d.ts","sourceRoot":"","sources":["../../../../../src/impl/btc/tbtcstxsignet.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEjD,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAE7D,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAE9B,qBAAa,aAAc,SAAQ,IAAI;IACrC,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAmB;gBAElC,KAAK,EAAE,SAAS;IAI5B,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,SAAS,GAAG,aAAa;IAItD,IAAa,QAAQ,IAAI,gBAAgB,CAExC;CACF"}
1
+ {"version":3,"file":"tbtcstxsignet.d.ts","sourceRoot":"","sources":["../../../../../src/impl/btc/tbtcstxsignet.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEjD,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAE9B,qBAAa,aAAc,SAAQ,IAAI;IACrC,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAmB;gBAElC,KAAK,EAAE,SAAS;IAI5B,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,SAAS,GAAG,aAAa;CAGvD"}
@@ -10,9 +10,6 @@ class Tbtcstxsignet extends tbtc_1.Tbtc {
10
10
  static createInstance(bitgo) {
11
11
  return new Tbtcstxsignet(bitgo);
12
12
  }
13
- get wasmName() {
14
- return 'tbtcsig';
15
- }
16
13
  }
17
14
  exports.Tbtcstxsignet = Tbtcstxsignet;
18
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGJ0Y3N0eHNpZ25ldC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9pbXBsL2J0Yy90YnRjc3R4c2lnbmV0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUlBLGlDQUE4QjtBQUU5QixNQUFhLGFBQWMsU0FBUSxXQUFJO0lBR3JDLFlBQVksS0FBZ0I7UUFDMUIsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBSE4sU0FBSSxHQUFpQixlQUFlLENBQUM7SUFJOUMsQ0FBQztJQUVELE1BQU0sQ0FBQyxjQUFjLENBQUMsS0FBZ0I7UUFDcEMsT0FBTyxJQUFJLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBRUQsSUFBYSxRQUFRO1FBQ25CLE9BQU8sU0FBUyxDQUFDO0lBQ25CLENBQUM7Q0FDRjtBQWRELHNDQWNDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQml0R29CYXNlIH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuXG5pbXBvcnQgeyBVdHhvQ29pbk5hbWUsIFdhc21VdHhvQ29pbk5hbWUgfSBmcm9tICcuLi8uLi9uYW1lcyc7XG5cbmltcG9ydCB7IFRidGMgfSBmcm9tICcuL3RidGMnO1xuXG5leHBvcnQgY2xhc3MgVGJ0Y3N0eHNpZ25ldCBleHRlbmRzIFRidGMge1xuICByZWFkb25seSBuYW1lOiBVdHhvQ29pbk5hbWUgPSAndGJ0Y3N0eHNpZ25ldCc7XG5cbiAgY29uc3RydWN0b3IoYml0Z286IEJpdEdvQmFzZSkge1xuICAgIHN1cGVyKGJpdGdvKTtcbiAgfVxuXG4gIHN0YXRpYyBjcmVhdGVJbnN0YW5jZShiaXRnbzogQml0R29CYXNlKTogVGJ0Y3N0eHNpZ25ldCB7XG4gICAgcmV0dXJuIG5ldyBUYnRjc3R4c2lnbmV0KGJpdGdvKTtcbiAgfVxuXG4gIG92ZXJyaWRlIGdldCB3YXNtTmFtZSgpOiBXYXNtVXR4b0NvaW5OYW1lIHtcbiAgICByZXR1cm4gJ3RidGNzaWcnO1xuICB9XG59XG4iXX0=
15
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGJ0Y3N0eHNpZ25ldC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9pbXBsL2J0Yy90YnRjc3R4c2lnbmV0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUlBLGlDQUE4QjtBQUU5QixNQUFhLGFBQWMsU0FBUSxXQUFJO0lBR3JDLFlBQVksS0FBZ0I7UUFDMUIsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBSE4sU0FBSSxHQUFpQixlQUFlLENBQUM7SUFJOUMsQ0FBQztJQUVELE1BQU0sQ0FBQyxjQUFjLENBQUMsS0FBZ0I7UUFDcEMsT0FBTyxJQUFJLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNsQyxDQUFDO0NBQ0Y7QUFWRCxzQ0FVQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJpdEdvQmFzZSB9IGZyb20gJ0BiaXRnby1iZXRhL3Nkay1jb3JlJztcblxuaW1wb3J0IHsgVXR4b0NvaW5OYW1lIH0gZnJvbSAnLi4vLi4vbmFtZXMnO1xuXG5pbXBvcnQgeyBUYnRjIH0gZnJvbSAnLi90YnRjJztcblxuZXhwb3J0IGNsYXNzIFRidGNzdHhzaWduZXQgZXh0ZW5kcyBUYnRjIHtcbiAgcmVhZG9ubHkgbmFtZTogVXR4b0NvaW5OYW1lID0gJ3RidGNzdHhzaWduZXQnO1xuXG4gIGNvbnN0cnVjdG9yKGJpdGdvOiBCaXRHb0Jhc2UpIHtcbiAgICBzdXBlcihiaXRnbyk7XG4gIH1cblxuICBzdGF0aWMgY3JlYXRlSW5zdGFuY2UoYml0Z286IEJpdEdvQmFzZSk6IFRidGNzdHhzaWduZXQge1xuICAgIHJldHVybiBuZXcgVGJ0Y3N0eHNpZ25ldChiaXRnbyk7XG4gIH1cbn1cbiJdfQ==
@@ -5,6 +5,7 @@ export declare const utxoCoinsTestnet: readonly ["tbtc", "tbtc4", "tbtcsig", "tb
5
5
  export type UtxoCoinNameMainnet = (typeof utxoCoinsMainnet)[number];
6
6
  export type UtxoCoinNameTestnet = `t${UtxoCoinNameMainnet}` | 'tbtcsig' | 'tbtc4' | 'tbtcbgsig' | 'tbtcstx' | 'tbtcstxprivate1' | 'tbtcstxsignet';
7
7
  export type UtxoCoinName = UtxoCoinNameMainnet | UtxoCoinNameTestnet;
8
+ /** Coin name used by wasm-utxo. Private Bitcoin networks map to a shared codec. */
8
9
  export declare function toWasmUtxoCoinName(coinName: UtxoCoinName | WasmUtxoCoinName): WasmUtxoCoinName;
9
10
  export declare function isUtxoCoinNameMainnet(coinName: string): coinName is UtxoCoinNameMainnet;
10
11
  export declare function isUtxoCoinNameTestnet(coinName: string): coinName is UtxoCoinNameTestnet;
@@ -1 +1 @@
1
- {"version":3,"file":"names.d.ts","sourceRoot":"","sources":["../../../src/names.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,KAAK,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAE7D,MAAM,MAAM,gBAAgB,GAAG,QAAQ,CAAC;AAExC,eAAO,MAAM,gBAAgB,sFAAuF,CAAC;AACrH,eAAO,MAAM,gBAAgB,gLAiBnB,CAAC;AAEX,MAAM,MAAM,mBAAmB,GAAG,CAAC,OAAO,gBAAgB,CAAC,CAAC,MAAM,CAAC,CAAC;AACpE,MAAM,MAAM,mBAAmB,GAC3B,IAAI,mBAAmB,EAAE,GACzB,SAAS,GACT,OAAO,GACP,WAAW,GACX,SAAS,GACT,iBAAiB,GACjB,eAAe,CAAC;AACpB,MAAM,MAAM,YAAY,GAAG,mBAAmB,GAAG,mBAAmB,CAAC;AAErE,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,YAAY,GAAG,gBAAgB,GAAG,gBAAgB,CAK9F;AAED,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,QAAQ,IAAI,mBAAmB,CAEvF;AAED,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,QAAQ,IAAI,mBAAmB,CAEvF;AAED,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,QAAQ,IAAI,YAAY,CAEzE;AAED,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,YAAY,GAAG,mBAAmB,CAe9E;AA2BD,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,YAAY,GAAG,MAAM,CA4BtE;AAED,wBAAgB,aAAa,CAAC,QAAQ,EAAE,YAAY,GAAG,OAAO,CAE7D;AAED,wBAAgB,aAAa,CAAC,QAAQ,EAAE,YAAY,GAAG,OAAO,CAE7D"}
1
+ {"version":3,"file":"names.d.ts","sourceRoot":"","sources":["../../../src/names.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,KAAK,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAE7D,MAAM,MAAM,gBAAgB,GAAG,QAAQ,CAAC;AAExC,eAAO,MAAM,gBAAgB,sFAAuF,CAAC;AACrH,eAAO,MAAM,gBAAgB,gLAiBnB,CAAC;AAEX,MAAM,MAAM,mBAAmB,GAAG,CAAC,OAAO,gBAAgB,CAAC,CAAC,MAAM,CAAC,CAAC;AACpE,MAAM,MAAM,mBAAmB,GAC3B,IAAI,mBAAmB,EAAE,GACzB,SAAS,GACT,OAAO,GACP,WAAW,GACX,SAAS,GACT,iBAAiB,GACjB,eAAe,CAAC;AACpB,MAAM,MAAM,YAAY,GAAG,mBAAmB,GAAG,mBAAmB,CAAC;AAErE,mFAAmF;AACnF,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,YAAY,GAAG,gBAAgB,GAAG,gBAAgB,CAY9F;AAED,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,QAAQ,IAAI,mBAAmB,CAEvF;AAED,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,QAAQ,IAAI,mBAAmB,CAEvF;AAED,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,QAAQ,IAAI,YAAY,CAEzE;AAED,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,YAAY,GAAG,mBAAmB,CAe9E;AA2BD,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,YAAY,GAAG,MAAM,CA4BtE;AAED,wBAAgB,aAAa,CAAC,QAAQ,EAAE,YAAY,GAAG,OAAO,CAE7D;AAED,wBAAgB,aAAa,CAAC,QAAQ,EAAE,YAAY,GAAG,OAAO,CAE7D"}
@@ -29,7 +29,15 @@ exports.utxoCoinsTestnet = [
29
29
  'tpearl',
30
30
  'tzec',
31
31
  ];
32
+ /** Coin name used by wasm-utxo. Private Bitcoin networks map to a shared codec. */
32
33
  function toWasmUtxoCoinName(coinName) {
34
+ switch (coinName) {
35
+ case 'tbtcstx':
36
+ case 'tbtcstxprivate1':
37
+ return 'tbtcreg';
38
+ case 'tbtcstxsignet':
39
+ return 'tbtcsig';
40
+ }
33
41
  if (!(0, wasm_utxo_1.isCoinName)(coinName)) {
34
42
  throw new Error(`coin ${coinName} is not supported by wasm-utxo`);
35
43
  }
@@ -116,4 +124,4 @@ function isTestnetCoin(coinName) {
116
124
  function isMainnetCoin(coinName) {
117
125
  return isUtxoCoinNameMainnet(coinName);
118
126
  }
119
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmFtZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbmFtZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBbUNBLGdEQUtDO0FBRUQsc0RBRUM7QUFFRCxzREFFQztBQUVELHdDQUVDO0FBRUQsZ0RBZUM7QUEyQkQsMERBNEJDO0FBRUQsc0NBRUM7QUFFRCxzQ0FFQztBQXBJRCxnREFBNkQ7QUFJaEQsUUFBQSxnQkFBZ0IsR0FBRyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLEtBQUssQ0FBVSxDQUFDO0FBQ3hHLFFBQUEsZ0JBQWdCLEdBQUc7SUFDOUIsTUFBTTtJQUNOLE9BQU87SUFDUCxTQUFTO0lBQ1QsV0FBVztJQUNYLFNBQVM7SUFDVCxpQkFBaUI7SUFDakIsZUFBZTtJQUNmLE1BQU07SUFDTixPQUFPO0lBQ1AsTUFBTTtJQUNOLE1BQU07SUFDTixPQUFPO0lBQ1AsT0FBTztJQUNQLE1BQU07SUFDTixRQUFRO0lBQ1IsTUFBTTtDQUNFLENBQUM7QUFhWCxTQUFnQixrQkFBa0IsQ0FBQyxRQUF5QztJQUMxRSxJQUFJLENBQUMsSUFBQSxzQkFBVSxFQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7UUFDMUIsTUFBTSxJQUFJLEtBQUssQ0FBQyxRQUFRLFFBQVEsZ0NBQWdDLENBQUMsQ0FBQztJQUNwRSxDQUFDO0lBQ0QsT0FBTyxRQUFRLENBQUM7QUFDbEIsQ0FBQztBQUVELFNBQWdCLHFCQUFxQixDQUFDLFFBQWdCO0lBQ3BELE9BQU8sd0JBQWdCLENBQUMsUUFBUSxDQUFDLFFBQStCLENBQUMsQ0FBQztBQUNwRSxDQUFDO0FBRUQsU0FBZ0IscUJBQXFCLENBQUMsUUFBZ0I7SUFDcEQsT0FBTyx3QkFBZ0IsQ0FBQyxRQUFRLENBQUMsUUFBK0IsQ0FBQyxDQUFDO0FBQ3BFLENBQUM7QUFFRCxTQUFnQixjQUFjLENBQUMsUUFBZ0I7SUFDN0MsT0FBTyxxQkFBcUIsQ0FBQyxRQUFRLENBQUMsSUFBSSxxQkFBcUIsQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUM1RSxDQUFDO0FBRUQsU0FBZ0Isa0JBQWtCLENBQUMsUUFBc0I7SUFDdkQsSUFBSSxxQkFBcUIsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO1FBQ3BDLE9BQU8sUUFBUSxDQUFDO0lBQ2xCLENBQUM7SUFDRCxRQUFRLFFBQVEsRUFBRSxDQUFDO1FBQ2pCLEtBQUssT0FBTyxDQUFDO1FBQ2IsS0FBSyxTQUFTLENBQUM7UUFDZixLQUFLLFdBQVcsQ0FBQztRQUNqQixLQUFLLFNBQVMsQ0FBQztRQUNmLEtBQUssaUJBQWlCLENBQUM7UUFDdkIsS0FBSyxlQUFlO1lBQ2xCLE9BQU8sS0FBSyxDQUFDO1FBQ2Y7WUFDRSxPQUFPLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUF3QixDQUFDO0lBQ3BELENBQUM7QUFDSCxDQUFDO0FBRUQsU0FBUyxzQkFBc0IsQ0FBQyxRQUE2QjtJQUMzRCxRQUFRLFFBQVEsRUFBRSxDQUFDO1FBQ2pCLEtBQUssS0FBSztZQUNSLE9BQU8sU0FBUyxDQUFDO1FBQ25CLEtBQUssS0FBSztZQUNSLE9BQU8sY0FBYyxDQUFDO1FBQ3hCLEtBQUssTUFBTTtZQUNULE9BQU8sYUFBYSxDQUFDO1FBQ3ZCLEtBQUssS0FBSztZQUNSLE9BQU8sY0FBYyxDQUFDO1FBQ3hCLEtBQUssS0FBSztZQUNSLE9BQU8sWUFBWSxDQUFDO1FBQ3RCLEtBQUssTUFBTTtZQUNULE9BQU8sTUFBTSxDQUFDO1FBQ2hCLEtBQUssTUFBTTtZQUNULE9BQU8sVUFBVSxDQUFDO1FBQ3BCLEtBQUssS0FBSztZQUNSLE9BQU8sVUFBVSxDQUFDO1FBQ3BCLEtBQUssT0FBTztZQUNWLE9BQU8sT0FBTyxDQUFDO1FBQ2pCLEtBQUssS0FBSztZQUNSLE9BQU8sT0FBTyxDQUFDO0lBQ25CLENBQUM7QUFDSCxDQUFDO0FBRUQsU0FBZ0IsdUJBQXVCLENBQUMsUUFBc0I7SUFDNUQsSUFBSSxRQUFRLEtBQUssaUJBQWlCLEVBQUUsQ0FBQztRQUNuQyxPQUFPLG9DQUFvQyxDQUFDO0lBQzlDLENBQUM7SUFFRCxJQUFJLFFBQVEsS0FBSyxlQUFlLEVBQUUsQ0FBQztRQUNqQyxPQUFPLHlCQUF5QixDQUFDO0lBQ25DLENBQUM7SUFFRCxJQUFJLE1BQWMsQ0FBQztJQUNuQixRQUFRLFFBQVEsRUFBRSxDQUFDO1FBQ2pCLEtBQUssT0FBTztZQUNWLE1BQU0sR0FBRyxXQUFXLENBQUM7WUFDckIsTUFBTTtRQUNSLEtBQUssU0FBUztZQUNaLE1BQU0sR0FBRyxnQkFBZ0IsQ0FBQztZQUMxQixNQUFNO1FBQ1IsS0FBSyxXQUFXO1lBQ2QsTUFBTSxHQUFHLGVBQWUsQ0FBQztZQUN6QixNQUFNO1FBQ1IsS0FBSyxTQUFTO1lBQ1osTUFBTSxHQUFHLFNBQVMsQ0FBQztZQUNuQixNQUFNO1FBQ1I7WUFDRSxNQUFNLEdBQUcscUJBQXFCLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQy9ELENBQUM7SUFFRCxPQUFPLE1BQU0sR0FBRyxzQkFBc0IsQ0FBQyxrQkFBa0IsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO0FBQ3ZFLENBQUM7QUFFRCxTQUFnQixhQUFhLENBQUMsUUFBc0I7SUFDbEQsT0FBTyxxQkFBcUIsQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUN6QyxDQUFDO0FBRUQsU0FBZ0IsYUFBYSxDQUFDLFFBQXNCO0lBQ2xELE9BQU8scUJBQXFCLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDekMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGlzQ29pbk5hbWUsIHR5cGUgQ29pbk5hbWUgfSBmcm9tICdAYml0Z28vd2FzbS11dHhvJztcblxuZXhwb3J0IHR5cGUgV2FzbVV0eG9Db2luTmFtZSA9IENvaW5OYW1lO1xuXG5leHBvcnQgY29uc3QgdXR4b0NvaW5zTWFpbm5ldCA9IFsnYnRjJywgJ2JjaCcsICdiY2hhJywgJ2JzdicsICdidGcnLCAnZGFzaCcsICdkb2dlJywgJ2x0YycsICdwZWFybCcsICd6ZWMnXSBhcyBjb25zdDtcbmV4cG9ydCBjb25zdCB1dHhvQ29pbnNUZXN0bmV0ID0gW1xuICAndGJ0YycsXG4gICd0YnRjNCcsXG4gICd0YnRjc2lnJyxcbiAgJ3RidGNiZ3NpZycsXG4gICd0YnRjc3R4JyxcbiAgJ3RidGNzdHhwcml2YXRlMScsXG4gICd0YnRjc3R4c2lnbmV0JyxcbiAgJ3RiY2gnLFxuICAndGJjaGEnLFxuICAndGJzdicsXG4gICd0YnRnJyxcbiAgJ3RkYXNoJyxcbiAgJ3Rkb2dlJyxcbiAgJ3RsdGMnLFxuICAndHBlYXJsJyxcbiAgJ3R6ZWMnLFxuXSBhcyBjb25zdDtcblxuZXhwb3J0IHR5cGUgVXR4b0NvaW5OYW1lTWFpbm5ldCA9ICh0eXBlb2YgdXR4b0NvaW5zTWFpbm5ldClbbnVtYmVyXTtcbmV4cG9ydCB0eXBlIFV0eG9Db2luTmFtZVRlc3RuZXQgPVxuICB8IGB0JHtVdHhvQ29pbk5hbWVNYWlubmV0fWBcbiAgfCAndGJ0Y3NpZydcbiAgfCAndGJ0YzQnXG4gIHwgJ3RidGNiZ3NpZydcbiAgfCAndGJ0Y3N0eCdcbiAgfCAndGJ0Y3N0eHByaXZhdGUxJ1xuICB8ICd0YnRjc3R4c2lnbmV0JztcbmV4cG9ydCB0eXBlIFV0eG9Db2luTmFtZSA9IFV0eG9Db2luTmFtZU1haW5uZXQgfCBVdHhvQ29pbk5hbWVUZXN0bmV0O1xuXG5leHBvcnQgZnVuY3Rpb24gdG9XYXNtVXR4b0NvaW5OYW1lKGNvaW5OYW1lOiBVdHhvQ29pbk5hbWUgfCBXYXNtVXR4b0NvaW5OYW1lKTogV2FzbVV0eG9Db2luTmFtZSB7XG4gIGlmICghaXNDb2luTmFtZShjb2luTmFtZSkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYGNvaW4gJHtjb2luTmFtZX0gaXMgbm90IHN1cHBvcnRlZCBieSB3YXNtLXV0eG9gKTtcbiAgfVxuICByZXR1cm4gY29pbk5hbWU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1V0eG9Db2luTmFtZU1haW5uZXQoY29pbk5hbWU6IHN0cmluZyk6IGNvaW5OYW1lIGlzIFV0eG9Db2luTmFtZU1haW5uZXQge1xuICByZXR1cm4gdXR4b0NvaW5zTWFpbm5ldC5pbmNsdWRlcyhjb2luTmFtZSBhcyBVdHhvQ29pbk5hbWVNYWlubmV0KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzVXR4b0NvaW5OYW1lVGVzdG5ldChjb2luTmFtZTogc3RyaW5nKTogY29pbk5hbWUgaXMgVXR4b0NvaW5OYW1lVGVzdG5ldCB7XG4gIHJldHVybiB1dHhvQ29pbnNUZXN0bmV0LmluY2x1ZGVzKGNvaW5OYW1lIGFzIFV0eG9Db2luTmFtZVRlc3RuZXQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNVdHhvQ29pbk5hbWUoY29pbk5hbWU6IHN0cmluZyk6IGNvaW5OYW1lIGlzIFV0eG9Db2luTmFtZSB7XG4gIHJldHVybiBpc1V0eG9Db2luTmFtZU1haW5uZXQoY29pbk5hbWUpIHx8IGlzVXR4b0NvaW5OYW1lVGVzdG5ldChjb2luTmFtZSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRNYWlubmV0Q29pbk5hbWUoY29pbk5hbWU6IFV0eG9Db2luTmFtZSk6IFV0eG9Db2luTmFtZU1haW5uZXQge1xuICBpZiAoaXNVdHhvQ29pbk5hbWVNYWlubmV0KGNvaW5OYW1lKSkge1xuICAgIHJldHVybiBjb2luTmFtZTtcbiAgfVxuICBzd2l0Y2ggKGNvaW5OYW1lKSB7XG4gICAgY2FzZSAndGJ0YzQnOlxuICAgIGNhc2UgJ3RidGNzaWcnOlxuICAgIGNhc2UgJ3RidGNiZ3NpZyc6XG4gICAgY2FzZSAndGJ0Y3N0eCc6XG4gICAgY2FzZSAndGJ0Y3N0eHByaXZhdGUxJzpcbiAgICBjYXNlICd0YnRjc3R4c2lnbmV0JzpcbiAgICAgIHJldHVybiAnYnRjJztcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIGNvaW5OYW1lLnNsaWNlKDEpIGFzIFV0eG9Db2luTmFtZU1haW5uZXQ7XG4gIH1cbn1cblxuZnVuY3Rpb24gZ2V0QmFzZU5hbWVGcm9tTWFpbm5ldChjb2luTmFtZTogVXR4b0NvaW5OYW1lTWFpbm5ldCk6IHN0cmluZyB7XG4gIHN3aXRjaCAoY29pbk5hbWUpIHtcbiAgICBjYXNlICdidGMnOlxuICAgICAgcmV0dXJuICdCaXRjb2luJztcbiAgICBjYXNlICdiY2gnOlxuICAgICAgcmV0dXJuICdCaXRjb2luIENhc2gnO1xuICAgIGNhc2UgJ2JjaGEnOlxuICAgICAgcmV0dXJuICdCaXRjb2luIEFCQyc7XG4gICAgY2FzZSAnYnRnJzpcbiAgICAgIHJldHVybiAnQml0Y29pbiBHb2xkJztcbiAgICBjYXNlICdic3YnOlxuICAgICAgcmV0dXJuICdCaXRjb2luIFNWJztcbiAgICBjYXNlICdkYXNoJzpcbiAgICAgIHJldHVybiAnRGFzaCc7XG4gICAgY2FzZSAnZG9nZSc6XG4gICAgICByZXR1cm4gJ0RvZ2Vjb2luJztcbiAgICBjYXNlICdsdGMnOlxuICAgICAgcmV0dXJuICdMaXRlY29pbic7XG4gICAgY2FzZSAncGVhcmwnOlxuICAgICAgcmV0dXJuICdQZWFybCc7XG4gICAgY2FzZSAnemVjJzpcbiAgICAgIHJldHVybiAnWkNhc2gnO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRGdWxsTmFtZUZyb21Db2luTmFtZShjb2luTmFtZTogVXR4b0NvaW5OYW1lKTogc3RyaW5nIHtcbiAgaWYgKGNvaW5OYW1lID09PSAndGJ0Y3N0eHByaXZhdGUxJykge1xuICAgIHJldHVybiAnU3RhY2tzIEJpdGNvaW4gKFByaXZhdGUtMSBSZWd0ZXN0KSc7XG4gIH1cblxuICBpZiAoY29pbk5hbWUgPT09ICd0YnRjc3R4c2lnbmV0Jykge1xuICAgIHJldHVybiAnU3RhY2tzIEJpdGNvaW4gKFNpZ25ldCknO1xuICB9XG5cbiAgbGV0IHByZWZpeDogc3RyaW5nO1xuICBzd2l0Y2ggKGNvaW5OYW1lKSB7XG4gICAgY2FzZSAndGJ0YzQnOlxuICAgICAgcHJlZml4ID0gJ1Rlc3RuZXQ0ICc7XG4gICAgICBicmVhaztcbiAgICBjYXNlICd0YnRjc2lnJzpcbiAgICAgIHByZWZpeCA9ICdQdWJsaWMgU2lnbmV0ICc7XG4gICAgICBicmVhaztcbiAgICBjYXNlICd0YnRjYmdzaWcnOlxuICAgICAgcHJlZml4ID0gJ0JpdEdvIFNpZ25ldCAnO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAndGJ0Y3N0eCc6XG4gICAgICBwcmVmaXggPSAnU3RhY2tzICc7XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgcHJlZml4ID0gaXNVdHhvQ29pbk5hbWVUZXN0bmV0KGNvaW5OYW1lKSA/ICdUZXN0bmV0ICcgOiAnJztcbiAgfVxuXG4gIHJldHVybiBwcmVmaXggKyBnZXRCYXNlTmFtZUZyb21NYWlubmV0KGdldE1haW5uZXRDb2luTmFtZShjb2luTmFtZSkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNUZXN0bmV0Q29pbihjb2luTmFtZTogVXR4b0NvaW5OYW1lKTogYm9vbGVhbiB7XG4gIHJldHVybiBpc1V0eG9Db2luTmFtZVRlc3RuZXQoY29pbk5hbWUpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNNYWlubmV0Q29pbihjb2luTmFtZTogVXR4b0NvaW5OYW1lKTogYm9vbGVhbiB7XG4gIHJldHVybiBpc1V0eG9Db2luTmFtZU1haW5uZXQoY29pbk5hbWUpO1xufVxuIl19
127
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmFtZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbmFtZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBb0NBLGdEQVlDO0FBRUQsc0RBRUM7QUFFRCxzREFFQztBQUVELHdDQUVDO0FBRUQsZ0RBZUM7QUEyQkQsMERBNEJDO0FBRUQsc0NBRUM7QUFFRCxzQ0FFQztBQTVJRCxnREFBNkQ7QUFJaEQsUUFBQSxnQkFBZ0IsR0FBRyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLEtBQUssQ0FBVSxDQUFDO0FBQ3hHLFFBQUEsZ0JBQWdCLEdBQUc7SUFDOUIsTUFBTTtJQUNOLE9BQU87SUFDUCxTQUFTO0lBQ1QsV0FBVztJQUNYLFNBQVM7SUFDVCxpQkFBaUI7SUFDakIsZUFBZTtJQUNmLE1BQU07SUFDTixPQUFPO0lBQ1AsTUFBTTtJQUNOLE1BQU07SUFDTixPQUFPO0lBQ1AsT0FBTztJQUNQLE1BQU07SUFDTixRQUFRO0lBQ1IsTUFBTTtDQUNFLENBQUM7QUFhWCxtRkFBbUY7QUFDbkYsU0FBZ0Isa0JBQWtCLENBQUMsUUFBeUM7SUFDMUUsUUFBUSxRQUFRLEVBQUUsQ0FBQztRQUNqQixLQUFLLFNBQVMsQ0FBQztRQUNmLEtBQUssaUJBQWlCO1lBQ3BCLE9BQU8sU0FBUyxDQUFDO1FBQ25CLEtBQUssZUFBZTtZQUNsQixPQUFPLFNBQVMsQ0FBQztJQUNyQixDQUFDO0lBQ0QsSUFBSSxDQUFDLElBQUEsc0JBQVUsRUFBQyxRQUFRLENBQUMsRUFBRSxDQUFDO1FBQzFCLE1BQU0sSUFBSSxLQUFLLENBQUMsUUFBUSxRQUFRLGdDQUFnQyxDQUFDLENBQUM7SUFDcEUsQ0FBQztJQUNELE9BQU8sUUFBUSxDQUFDO0FBQ2xCLENBQUM7QUFFRCxTQUFnQixxQkFBcUIsQ0FBQyxRQUFnQjtJQUNwRCxP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c0NvaW5OYW1lLCB0eXBlIENvaW5OYW1lIH0gZnJvbSAnQGJpdGdvL3dhc20tdXR4byc7XG5cbmV4cG9ydCB0eXBlIFdhc21VdHhvQ29pbk5hbWUgPSBDb2luTmFtZTtcblxuZXhwb3J0IGNvbnN0IHV0eG9Db2luc01haW5uZXQgPSBbJ2J0YycsICdiY2gnLCAnYmNoYScsICdic3YnLCAnYnRnJywgJ2Rhc2gnLCAnZG9nZScsICdsdGMnLCAncGVhcmwnLCAnemVjJ10gYXMgY29uc3Q7XG5leHBvcnQgY29uc3QgdXR4b0NvaW5zVGVzdG5ldCA9IFtcbiAgJ3RidGMnLFxuICAndGJ0YzQnLFxuICAndGJ0Y3NpZycsXG4gICd0YnRjYmdzaWcnLFxuICAndGJ0Y3N0eCcsXG4gICd0YnRjc3R4cHJpdmF0ZTEnLFxuICAndGJ0Y3N0eHNpZ25ldCcsXG4gICd0YmNoJyxcbiAgJ3RiY2hhJyxcbiAgJ3Ric3YnLFxuICAndGJ0ZycsXG4gICd0ZGFzaCcsXG4gICd0ZG9nZScsXG4gICd0bHRjJyxcbiAgJ3RwZWFybCcsXG4gICd0emVjJyxcbl0gYXMgY29uc3Q7XG5cbmV4cG9ydCB0eXBlIFV0eG9Db2luTmFtZU1haW5uZXQgPSAodHlwZW9mIHV0eG9Db2luc01haW5uZXQpW251bWJlcl07XG5leHBvcnQgdHlwZSBVdHhvQ29pbk5hbWVUZXN0bmV0ID1cbiAgfCBgdCR7VXR4b0NvaW5OYW1lTWFpbm5ldH1gXG4gIHwgJ3RidGNzaWcnXG4gIHwgJ3RidGM0J1xuICB8ICd0YnRjYmdzaWcnXG4gIHwgJ3RidGNzdHgnXG4gIHwgJ3RidGNzdHhwcml2YXRlMSdcbiAgfCAndGJ0Y3N0eHNpZ25ldCc7XG5leHBvcnQgdHlwZSBVdHhvQ29pbk5hbWUgPSBVdHhvQ29pbk5hbWVNYWlubmV0IHwgVXR4b0NvaW5OYW1lVGVzdG5ldDtcblxuLyoqIENvaW4gbmFtZSB1c2VkIGJ5IHdhc20tdXR4by4gUHJpdmF0ZSBCaXRjb2luIG5ldHdvcmtzIG1hcCB0byBhIHNoYXJlZCBjb2RlYy4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b1dhc21VdHhvQ29pbk5hbWUoY29pbk5hbWU6IFV0eG9Db2luTmFtZSB8IFdhc21VdHhvQ29pbk5hbWUpOiBXYXNtVXR4b0NvaW5OYW1lIHtcbiAgc3dpdGNoIChjb2luTmFtZSkge1xuICAgIGNhc2UgJ3RidGNzdHgnOlxuICAgIGNhc2UgJ3RidGNzdHhwcml2YXRlMSc6XG4gICAgICByZXR1cm4gJ3RidGNyZWcnO1xuICAgIGNhc2UgJ3RidGNzdHhzaWduZXQnOlxuICAgICAgcmV0dXJuICd0YnRjc2lnJztcbiAgfVxuICBpZiAoIWlzQ29pbk5hbWUoY29pbk5hbWUpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBjb2luICR7Y29pbk5hbWV9IGlzIG5vdCBzdXBwb3J0ZWQgYnkgd2FzbS11dHhvYCk7XG4gIH1cbiAgcmV0dXJuIGNvaW5OYW1lO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNVdHhvQ29pbk5hbWVNYWlubmV0KGNvaW5OYW1lOiBzdHJpbmcpOiBjb2luTmFtZSBpcyBVdHhvQ29pbk5hbWVNYWlubmV0IHtcbiAgcmV0dXJuIHV0eG9Db2luc01haW5uZXQuaW5jbHVkZXMoY29pbk5hbWUgYXMgVXR4b0NvaW5OYW1lTWFpbm5ldCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1V0eG9Db2luTmFtZVRlc3RuZXQoY29pbk5hbWU6IHN0cmluZyk6IGNvaW5OYW1lIGlzIFV0eG9Db2luTmFtZVRlc3RuZXQge1xuICByZXR1cm4gdXR4b0NvaW5zVGVzdG5ldC5pbmNsdWRlcyhjb2luTmFtZSBhcyBVdHhvQ29pbk5hbWVUZXN0bmV0KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzVXR4b0NvaW5OYW1lKGNvaW5OYW1lOiBzdHJpbmcpOiBjb2luTmFtZSBpcyBVdHhvQ29pbk5hbWUge1xuICByZXR1cm4gaXNVdHhvQ29pbk5hbWVNYWlubmV0KGNvaW5OYW1lKSB8fCBpc1V0eG9Db2luTmFtZVRlc3RuZXQoY29pbk5hbWUpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0TWFpbm5ldENvaW5OYW1lKGNvaW5OYW1lOiBVdHhvQ29pbk5hbWUpOiBVdHhvQ29pbk5hbWVNYWlubmV0IHtcbiAgaWYgKGlzVXR4b0NvaW5OYW1lTWFpbm5ldChjb2luTmFtZSkpIHtcbiAgICByZXR1cm4gY29pbk5hbWU7XG4gIH1cbiAgc3dpdGNoIChjb2luTmFtZSkge1xuICAgIGNhc2UgJ3RidGM0JzpcbiAgICBjYXNlICd0YnRjc2lnJzpcbiAgICBjYXNlICd0YnRjYmdzaWcnOlxuICAgIGNhc2UgJ3RidGNzdHgnOlxuICAgIGNhc2UgJ3RidGNzdHhwcml2YXRlMSc6XG4gICAgY2FzZSAndGJ0Y3N0eHNpZ25ldCc6XG4gICAgICByZXR1cm4gJ2J0Yyc7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBjb2luTmFtZS5zbGljZSgxKSBhcyBVdHhvQ29pbk5hbWVNYWlubmV0O1xuICB9XG59XG5cbmZ1bmN0aW9uIGdldEJhc2VOYW1lRnJvbU1haW5uZXQoY29pbk5hbWU6IFV0eG9Db2luTmFtZU1haW5uZXQpOiBzdHJpbmcge1xuICBzd2l0Y2ggKGNvaW5OYW1lKSB7XG4gICAgY2FzZSAnYnRjJzpcbiAgICAgIHJldHVybiAnQml0Y29pbic7XG4gICAgY2FzZSAnYmNoJzpcbiAgICAgIHJldHVybiAnQml0Y29pbiBDYXNoJztcbiAgICBjYXNlICdiY2hhJzpcbiAgICAgIHJldHVybiAnQml0Y29pbiBBQkMnO1xuICAgIGNhc2UgJ2J0Zyc6XG4gICAgICByZXR1cm4gJ0JpdGNvaW4gR29sZCc7XG4gICAgY2FzZSAnYnN2JzpcbiAgICAgIHJldHVybiAnQml0Y29pbiBTVic7XG4gICAgY2FzZSAnZGFzaCc6XG4gICAgICByZXR1cm4gJ0Rhc2gnO1xuICAgIGNhc2UgJ2RvZ2UnOlxuICAgICAgcmV0dXJuICdEb2dlY29pbic7XG4gICAgY2FzZSAnbHRjJzpcbiAgICAgIHJldHVybiAnTGl0ZWNvaW4nO1xuICAgIGNhc2UgJ3BlYXJsJzpcbiAgICAgIHJldHVybiAnUGVhcmwnO1xuICAgIGNhc2UgJ3plYyc6XG4gICAgICByZXR1cm4gJ1pDYXNoJztcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0RnVsbE5hbWVGcm9tQ29pbk5hbWUoY29pbk5hbWU6IFV0eG9Db2luTmFtZSk6IHN0cmluZyB7XG4gIGlmIChjb2luTmFtZSA9PT0gJ3RidGNzdHhwcml2YXRlMScpIHtcbiAgICByZXR1cm4gJ1N0YWNrcyBCaXRjb2luIChQcml2YXRlLTEgUmVndGVzdCknO1xuICB9XG5cbiAgaWYgKGNvaW5OYW1lID09PSAndGJ0Y3N0eHNpZ25ldCcpIHtcbiAgICByZXR1cm4gJ1N0YWNrcyBCaXRjb2luIChTaWduZXQpJztcbiAgfVxuXG4gIGxldCBwcmVmaXg6IHN0cmluZztcbiAgc3dpdGNoIChjb2luTmFtZSkge1xuICAgIGNhc2UgJ3RidGM0JzpcbiAgICAgIHByZWZpeCA9ICdUZXN0bmV0NCAnO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAndGJ0Y3NpZyc6XG4gICAgICBwcmVmaXggPSAnUHVibGljIFNpZ25ldCAnO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAndGJ0Y2Jnc2lnJzpcbiAgICAgIHByZWZpeCA9ICdCaXRHbyBTaWduZXQgJztcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ3RidGNzdHgnOlxuICAgICAgcHJlZml4ID0gJ1N0YWNrcyAnO1xuICAgICAgYnJlYWs7XG4gICAgZGVmYXVsdDpcbiAgICAgIHByZWZpeCA9IGlzVXR4b0NvaW5OYW1lVGVzdG5ldChjb2luTmFtZSkgPyAnVGVzdG5ldCAnIDogJyc7XG4gIH1cblxuICByZXR1cm4gcHJlZml4ICsgZ2V0QmFzZU5hbWVGcm9tTWFpbm5ldChnZXRNYWlubmV0Q29pbk5hbWUoY29pbk5hbWUpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzVGVzdG5ldENvaW4oY29pbk5hbWU6IFV0eG9Db2luTmFtZSk6IGJvb2xlYW4ge1xuICByZXR1cm4gaXNVdHhvQ29pbk5hbWVUZXN0bmV0KGNvaW5OYW1lKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzTWFpbm5ldENvaW4oY29pbk5hbWU6IFV0eG9Db2luTmFtZSk6IGJvb2xlYW4ge1xuICByZXR1cm4gaXNVdHhvQ29pbk5hbWVNYWlubmV0KGNvaW5OYW1lKTtcbn1cbiJdfQ==
@@ -6,6 +6,7 @@ export interface ExplanationOutput {
6
6
  export interface TransactionExplanation<TFee> {
7
7
  outputs: ExplanationOutput[];
8
8
  changeOutputs: ExplanationOutput[];
9
+ locktime: number;
9
10
  fee: {
10
11
  fee: TFee;
11
12
  payGoFeeString: string | number | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"TransactionExplanation.d.ts","sourceRoot":"","sources":["../../../../src/offlineVault/TransactionExplanation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAKxC,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,sBAAsB,CAAC,IAAI;IAC1C,OAAO,EAAE,iBAAiB,EAAE,CAAC;IAC7B,aAAa,EAAE,iBAAiB,EAAE,CAAC;IACnC,GAAG,EAAE;QAEH,GAAG,EAAE,IAAI,CAAC;QACV,cAAc,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;QAC5C,eAAe,EAAE,MAAM,GAAG,SAAS,CAAC;KACrC,CAAC;CACH;AAED,wBAAgB,yBAAyB,CAAC,QAAQ,EAAE,YAAY,EAAE,EAAE,EAAE,OAAO,GAAG,sBAAsB,CAAC,MAAM,CAAC,CAS7G"}
1
+ {"version":3,"file":"TransactionExplanation.d.ts","sourceRoot":"","sources":["../../../../src/offlineVault/TransactionExplanation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAKxC,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,sBAAsB,CAAC,IAAI;IAC1C,OAAO,EAAE,iBAAiB,EAAE,CAAC;IAC7B,aAAa,EAAE,iBAAiB,EAAE,CAAC;IAEnC,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,EAAE;QAEH,GAAG,EAAE,IAAI,CAAC;QACV,cAAc,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;QAC5C,eAAe,EAAE,MAAM,GAAG,SAAS,CAAC;KACrC,CAAC;CACH;AAED,wBAAgB,yBAAyB,CAAC,QAAQ,EAAE,YAAY,EAAE,EAAE,EAAE,OAAO,GAAG,sBAAsB,CAAC,MAAM,CAAC,CAS7G"}
@@ -12,4 +12,4 @@ function getTransactionExplanation(coinName, tx) {
12
12
  }
13
13
  throw new Error('unsupported transaction type');
14
14
  }
15
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVHJhbnNhY3Rpb25FeHBsYW5hdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9vZmZsaW5lVmF1bHQvVHJhbnNhY3Rpb25FeHBsYW5hdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQXFCQSw4REFTQztBQTVCRCxpRUFBOEQ7QUFDOUQsNkNBQXdGO0FBa0J4RixTQUFnQix5QkFBeUIsQ0FBQyxRQUFzQixFQUFFLEVBQVc7SUFDM0UsSUFBSSxDQUFDLDJDQUFvQixDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDO1FBQ2pDLE1BQU0sSUFBSSxLQUFLLENBQUMsNEJBQTRCLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBQ0QsSUFBSSxrQ0FBcUIsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQztRQUNqQyxPQUFPLElBQUEsOENBQWlDLEVBQUMsRUFBRSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQ3pELENBQUM7SUFFRCxNQUFNLElBQUksS0FBSyxDQUFDLDhCQUE4QixDQUFDLENBQUM7QUFDbEQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFV0eG9Db2luTmFtZSB9IGZyb20gJy4uL25hbWVzJztcblxuaW1wb3J0IHsgT2ZmbGluZVZhdWx0U2lnbmFibGUgfSBmcm9tICcuL09mZmxpbmVWYXVsdFNpZ25hYmxlJztcbmltcG9ydCB7IERlc2NyaXB0b3JUcmFuc2FjdGlvbiwgZ2V0VHJhbnNhY3Rpb25FeHBsYW5hdGlvbkZyb21Qc2J0IH0gZnJvbSAnLi9kZXNjcmlwdG9yJztcblxuZXhwb3J0IGludGVyZmFjZSBFeHBsYW5hdGlvbk91dHB1dCB7XG4gIGFkZHJlc3M6IHN0cmluZztcbiAgYW1vdW50OiBzdHJpbmcgfCBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVHJhbnNhY3Rpb25FeHBsYW5hdGlvbjxURmVlPiB7XG4gIG91dHB1dHM6IEV4cGxhbmF0aW9uT3V0cHV0W107XG4gIGNoYW5nZU91dHB1dHM6IEV4cGxhbmF0aW9uT3V0cHV0W107XG4gIGZlZToge1xuICAgIC8qIG5ldHdvcmsgZmVlICovXG4gICAgZmVlOiBURmVlO1xuICAgIHBheUdvRmVlU3RyaW5nOiBzdHJpbmcgfCBudW1iZXIgfCB1bmRlZmluZWQ7XG4gICAgcGF5R29GZWVBZGRyZXNzOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRUcmFuc2FjdGlvbkV4cGxhbmF0aW9uKGNvaW5OYW1lOiBVdHhvQ29pbk5hbWUsIHR4OiB1bmtub3duKTogVHJhbnNhY3Rpb25FeHBsYW5hdGlvbjxzdHJpbmc+IHtcbiAgaWYgKCFPZmZsaW5lVmF1bHRTaWduYWJsZS5pcyh0eCkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ25vdCBhIHNpZ25hYmxlIHRyYW5zYWN0aW9uJyk7XG4gIH1cbiAgaWYgKERlc2NyaXB0b3JUcmFuc2FjdGlvbi5pcyh0eCkpIHtcbiAgICByZXR1cm4gZ2V0VHJhbnNhY3Rpb25FeHBsYW5hdGlvbkZyb21Qc2J0KHR4LCBjb2luTmFtZSk7XG4gIH1cblxuICB0aHJvdyBuZXcgRXJyb3IoJ3Vuc3VwcG9ydGVkIHRyYW5zYWN0aW9uIHR5cGUnKTtcbn1cbiJdfQ==
15
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVHJhbnNhY3Rpb25FeHBsYW5hdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9vZmZsaW5lVmF1bHQvVHJhbnNhY3Rpb25FeHBsYW5hdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQXVCQSw4REFTQztBQTlCRCxpRUFBOEQ7QUFDOUQsNkNBQXdGO0FBb0J4RixTQUFnQix5QkFBeUIsQ0FBQyxRQUFzQixFQUFFLEVBQVc7SUFDM0UsSUFBSSxDQUFDLDJDQUFvQixDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDO1FBQ2pDLE1BQU0sSUFBSSxLQUFLLENBQUMsNEJBQTRCLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBQ0QsSUFBSSxrQ0FBcUIsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQztRQUNqQyxPQUFPLElBQUEsOENBQWlDLEVBQUMsRUFBRSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQ3pELENBQUM7SUFFRCxNQUFNLElBQUksS0FBSyxDQUFDLDhCQUE4QixDQUFDLENBQUM7QUFDbEQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFV0eG9Db2luTmFtZSB9IGZyb20gJy4uL25hbWVzJztcblxuaW1wb3J0IHsgT2ZmbGluZVZhdWx0U2lnbmFibGUgfSBmcm9tICcuL09mZmxpbmVWYXVsdFNpZ25hYmxlJztcbmltcG9ydCB7IERlc2NyaXB0b3JUcmFuc2FjdGlvbiwgZ2V0VHJhbnNhY3Rpb25FeHBsYW5hdGlvbkZyb21Qc2J0IH0gZnJvbSAnLi9kZXNjcmlwdG9yJztcblxuZXhwb3J0IGludGVyZmFjZSBFeHBsYW5hdGlvbk91dHB1dCB7XG4gIGFkZHJlc3M6IHN0cmluZztcbiAgYW1vdW50OiBzdHJpbmcgfCBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVHJhbnNhY3Rpb25FeHBsYW5hdGlvbjxURmVlPiB7XG4gIG91dHB1dHM6IEV4cGxhbmF0aW9uT3V0cHV0W107XG4gIGNoYW5nZU91dHB1dHM6IEV4cGxhbmF0aW9uT3V0cHV0W107XG4gIC8qIG5Mb2NrVGltZSBvZiB0aGUgdHJhbnNhY3Rpb24sIHRvIGJlIHZlcmlmaWVkIGJ5IHRoZSBzaWduZXIgZm9yIHRpbWUtbG9ja2VkIHNwZW5kcyAqL1xuICBsb2NrdGltZTogbnVtYmVyO1xuICBmZWU6IHtcbiAgICAvKiBuZXR3b3JrIGZlZSAqL1xuICAgIGZlZTogVEZlZTtcbiAgICBwYXlHb0ZlZVN0cmluZzogc3RyaW5nIHwgbnVtYmVyIHwgdW5kZWZpbmVkO1xuICAgIHBheUdvRmVlQWRkcmVzczogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0VHJhbnNhY3Rpb25FeHBsYW5hdGlvbihjb2luTmFtZTogVXR4b0NvaW5OYW1lLCB0eDogdW5rbm93bik6IFRyYW5zYWN0aW9uRXhwbGFuYXRpb248c3RyaW5nPiB7XG4gIGlmICghT2ZmbGluZVZhdWx0U2lnbmFibGUuaXModHgpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdub3QgYSBzaWduYWJsZSB0cmFuc2FjdGlvbicpO1xuICB9XG4gIGlmIChEZXNjcmlwdG9yVHJhbnNhY3Rpb24uaXModHgpKSB7XG4gICAgcmV0dXJuIGdldFRyYW5zYWN0aW9uRXhwbGFuYXRpb25Gcm9tUHNidCh0eCwgY29pbk5hbWUpO1xuICB9XG5cbiAgdGhyb3cgbmV3IEVycm9yKCd1bnN1cHBvcnRlZCB0cmFuc2FjdGlvbiB0eXBlJyk7XG59XG4iXX0=
@@ -0,0 +1,9 @@
1
+ import { descriptorWallet, Psbt } from '@bitgo/wasm-utxo';
2
+ /**
3
+ * Apply the PoX-5 staking spend policy to a PSBT before it is signed.
4
+ *
5
+ * PSBTs without PoX-5 lockup inputs are not affected. Otherwise, the PSBT must spend exactly one lockup
6
+ * input through the post-CLTV (late exit) branch, with nLockTime at or above the unlock height and a non-final sequence.
7
+ */
8
+ export declare function assertPox5SpendPolicy(psbt: Psbt, descriptorMap: descriptorWallet.DescriptorMap): void;
9
+ //# sourceMappingURL=pox5.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pox5.d.ts","sourceRoot":"","sources":["../../../../../src/offlineVault/descriptor/pox5.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAQ1D;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,IAAI,EAAE,aAAa,EAAE,gBAAgB,CAAC,aAAa,GAAG,IAAI,CAcrG"}
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.assertPox5SpendPolicy = assertPox5SpendPolicy;
4
+ const utxo_descriptors_1 = require("@bitgo-beta/utxo-descriptors");
5
+ function getPox5InputMatches(psbt, descriptorMap) {
6
+ return Array.from({ length: psbt.inputCount() }, (_, i) => utxo_descriptors_1.pox5.matchPox5Input(psbt, i, descriptorMap)).filter((match) => match !== undefined);
7
+ }
8
+ /**
9
+ * Apply the PoX-5 staking spend policy to a PSBT before it is signed.
10
+ *
11
+ * PSBTs without PoX-5 lockup inputs are not affected. Otherwise, the PSBT must spend exactly one lockup
12
+ * input through the post-CLTV (late exit) branch, with nLockTime at or above the unlock height and a non-final sequence.
13
+ */
14
+ function assertPox5SpendPolicy(psbt, descriptorMap) {
15
+ const matches = getPox5InputMatches(psbt, descriptorMap);
16
+ if (matches.length === 0) {
17
+ return;
18
+ }
19
+ if (matches.length !== 1) {
20
+ throw new Error(`expected exactly one PoX-5 lockup input, found ${matches.length}`);
21
+ }
22
+ const [match] = matches;
23
+ const branch = utxo_descriptors_1.pox5.classifyPox5Spend(psbt, match);
24
+ if (branch !== 'locktime') {
25
+ throw new Error(`unsupported PoX-5 spend branch: ${branch}`);
26
+ }
27
+ utxo_descriptors_1.pox5.assertPox5LocktimeSpend(psbt, matches);
28
+ }
29
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG94NS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9vZmZsaW5lVmF1bHQvZGVzY3JpcHRvci9wb3g1LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBZUEsc0RBY0M7QUE3QkQsbUVBQW9EO0FBR3BELFNBQVMsbUJBQW1CLENBQUMsSUFBVSxFQUFFLGFBQTZDO0lBQ3BGLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLHVCQUFJLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsYUFBYSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQzVHLENBQUMsS0FBSyxFQUFnQyxFQUFFLENBQUMsS0FBSyxLQUFLLFNBQVMsQ0FDN0QsQ0FBQztBQUNKLENBQUM7QUFFRDs7Ozs7R0FLRztBQUNILFNBQWdCLHFCQUFxQixDQUFDLElBQVUsRUFBRSxhQUE2QztJQUM3RixNQUFNLE9BQU8sR0FBRyxtQkFBbUIsQ0FBQyxJQUFJLEVBQUUsYUFBYSxDQUFDLENBQUM7SUFDekQsSUFBSSxPQUFPLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQ3pCLE9BQU87SUFDVCxDQUFDO0lBQ0QsSUFBSSxPQUFPLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQ3pCLE1BQU0sSUFBSSxLQUFLLENBQUMsa0RBQWtELE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO0lBQ3RGLENBQUM7SUFDRCxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsT0FBTyxDQUFDO0lBQ3hCLE1BQU0sTUFBTSxHQUFHLHVCQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ25ELElBQUksTUFBTSxLQUFLLFVBQVUsRUFBRSxDQUFDO1FBQzFCLE1BQU0sSUFBSSxLQUFLLENBQUMsbUNBQW1DLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFDL0QsQ0FBQztJQUNELHVCQUFJLENBQUMsdUJBQXVCLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQzlDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBwb3g1IH0gZnJvbSAnQGJpdGdvLWJldGEvdXR4by1kZXNjcmlwdG9ycyc7XG5pbXBvcnQgeyBkZXNjcmlwdG9yV2FsbGV0LCBQc2J0IH0gZnJvbSAnQGJpdGdvL3dhc20tdXR4byc7XG5cbmZ1bmN0aW9uIGdldFBveDVJbnB1dE1hdGNoZXMocHNidDogUHNidCwgZGVzY3JpcHRvck1hcDogZGVzY3JpcHRvcldhbGxldC5EZXNjcmlwdG9yTWFwKTogcG94NS5Qb3g1SW5wdXRNYXRjaFtdIHtcbiAgcmV0dXJuIEFycmF5LmZyb20oeyBsZW5ndGg6IHBzYnQuaW5wdXRDb3VudCgpIH0sIChfLCBpKSA9PiBwb3g1Lm1hdGNoUG94NUlucHV0KHBzYnQsIGksIGRlc2NyaXB0b3JNYXApKS5maWx0ZXIoXG4gICAgKG1hdGNoKTogbWF0Y2ggaXMgcG94NS5Qb3g1SW5wdXRNYXRjaCA9PiBtYXRjaCAhPT0gdW5kZWZpbmVkXG4gICk7XG59XG5cbi8qKlxuICogQXBwbHkgdGhlIFBvWC01IHN0YWtpbmcgc3BlbmQgcG9saWN5IHRvIGEgUFNCVCBiZWZvcmUgaXQgaXMgc2lnbmVkLlxuICpcbiAqIFBTQlRzIHdpdGhvdXQgUG9YLTUgbG9ja3VwIGlucHV0cyBhcmUgbm90IGFmZmVjdGVkLiBPdGhlcndpc2UsIHRoZSBQU0JUIG11c3Qgc3BlbmQgZXhhY3RseSBvbmUgbG9ja3VwXG4gKiBpbnB1dCB0aHJvdWdoIHRoZSBwb3N0LUNMVFYgKGxhdGUgZXhpdCkgYnJhbmNoLCB3aXRoIG5Mb2NrVGltZSBhdCBvciBhYm92ZSB0aGUgdW5sb2NrIGhlaWdodCBhbmQgYSBub24tZmluYWwgc2VxdWVuY2UuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhc3NlcnRQb3g1U3BlbmRQb2xpY3kocHNidDogUHNidCwgZGVzY3JpcHRvck1hcDogZGVzY3JpcHRvcldhbGxldC5EZXNjcmlwdG9yTWFwKTogdm9pZCB7XG4gIGNvbnN0IG1hdGNoZXMgPSBnZXRQb3g1SW5wdXRNYXRjaGVzKHBzYnQsIGRlc2NyaXB0b3JNYXApO1xuICBpZiAobWF0Y2hlcy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm47XG4gIH1cbiAgaWYgKG1hdGNoZXMubGVuZ3RoICE9PSAxKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBleHBlY3RlZCBleGFjdGx5IG9uZSBQb1gtNSBsb2NrdXAgaW5wdXQsIGZvdW5kICR7bWF0Y2hlcy5sZW5ndGh9YCk7XG4gIH1cbiAgY29uc3QgW21hdGNoXSA9IG1hdGNoZXM7XG4gIGNvbnN0IGJyYW5jaCA9IHBveDUuY2xhc3NpZnlQb3g1U3BlbmQocHNidCwgbWF0Y2gpO1xuICBpZiAoYnJhbmNoICE9PSAnbG9ja3RpbWUnKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGB1bnN1cHBvcnRlZCBQb1gtNSBzcGVuZCBicmFuY2g6ICR7YnJhbmNofWApO1xuICB9XG4gIHBveDUuYXNzZXJ0UG94NUxvY2t0aW1lU3BlbmQocHNidCwgbWF0Y2hlcyk7XG59XG4iXX0=
@@ -1 +1 @@
1
- {"version":3,"file":"transaction.d.ts","sourceRoot":"","sources":["../../../../../src/offlineVault/descriptor/transaction.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,OAAO,CAAC;AAC3B,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAE/C,OAAO,EAAE,aAAa,EAAmB,MAAM,kBAAkB,CAAC;AASlE,OAAO,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AACnE,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAGjC,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAE3E,wBAAgB,uCAAuC,CAAC,EAAE,EAAE,qBAAqB,GAAG,aAAa,CAUhG;AAED,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,qBAAqB,EAAE,GAAG,EAAE,KAAK,CAAC,cAAc,EAAE,QAAQ,EAAE,YAAY,GAAG,IAAI,CAKpH;AAED,wBAAgB,iCAAiC,CAC/C,EAAE,EAAE,qBAAqB,EACzB,QAAQ,EAAE,YAAY,GACrB,sBAAsB,CAAC,MAAM,CAAC,CAehC"}
1
+ {"version":3,"file":"transaction.d.ts","sourceRoot":"","sources":["../../../../../src/offlineVault/descriptor/transaction.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,OAAO,CAAC;AAC3B,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAE/C,OAAO,EAAE,aAAa,EAAmB,MAAM,kBAAkB,CAAC;AAUlE,OAAO,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AACnE,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAI3C,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAGjC,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAE3E,wBAAgB,uCAAuC,CAAC,EAAE,EAAE,qBAAqB,GAAG,aAAa,CAYhG;AAED,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,qBAAqB,EAAE,GAAG,EAAE,KAAK,CAAC,cAAc,EAAE,QAAQ,EAAE,YAAY,GAAG,IAAI,CAMpH;AAED,wBAAgB,iCAAiC,CAC/C,EAAE,EAAE,qBAAqB,EACzB,QAAQ,EAAE,YAAY,GACrB,sBAAsB,CAAC,MAAM,CAAC,CAgBhC"}
@@ -43,6 +43,7 @@ const descriptor_1 = require("../../descriptor");
43
43
  const OfflineVaultSignable_1 = require("../OfflineVaultSignable");
44
44
  const validatePolicy_1 = require("../../descriptor/validatePolicy");
45
45
  const descriptor_2 = require("../../transaction/descriptor");
46
+ const pox5_1 = require("./pox5");
46
47
  exports.DescriptorTransaction = t.intersection([OfflineVaultSignable_1.OfflineVaultSignable, t.type({ descriptors: t.array(descriptor_1.NamedDescriptor) })], 'DescriptorTransaction');
47
48
  function getDescriptorsFromDescriptorTransaction(tx) {
48
49
  const { descriptors, xpubsWithDerivationPath } = tx;
@@ -50,6 +51,8 @@ function getDescriptorsFromDescriptorTransaction(tx) {
50
51
  const policy = (0, validatePolicy_1.getValidatorSome)([
51
52
  // allow all 2-of-3-ish descriptors where the keys match the wallet keys
52
53
  (0, validatePolicy_1.getValidatorOneOfTemplates)(['Wsh2Of3', 'Wsh2Of3CltvDrop', 'ShWsh2Of3CltvDrop']),
54
+ // allow 2-of-3 wallet descriptors together with PoX-5 lockup descriptors where the keys match the wallet keys
55
+ (0, validatePolicy_1.getValidatorPox5Wallet)(),
53
56
  // allow all descriptors signed by the user key
54
57
  (0, validatePolicy_1.getValidatorSignedByUserKey)(),
55
58
  ]);
@@ -58,6 +61,7 @@ function getDescriptorsFromDescriptorTransaction(tx) {
58
61
  function getHalfSignedPsbt(tx, prv, coinName) {
59
62
  const psbt = wasm_utxo_1.Psbt.deserialize(Buffer.from(tx.coinSpecific.txHex, 'hex'));
60
63
  const descriptorMap = getDescriptorsFromDescriptorTransaction(tx);
64
+ (0, pox5_1.assertPox5SpendPolicy)(psbt, descriptorMap);
61
65
  (0, descriptor_2.signPsbt)(psbt, descriptorMap, prv, { onUnknownInput: 'throw' });
62
66
  return psbt;
63
67
  }
@@ -68,6 +72,7 @@ function getTransactionExplanationFromPsbt(tx, coinName) {
68
72
  return {
69
73
  outputs,
70
74
  changeOutputs,
75
+ locktime: psbt.lockTime(),
71
76
  fee: {
72
77
  /* network fee */
73
78
  fee,
@@ -77,4 +82,4 @@ function getTransactionExplanationFromPsbt(tx, coinName) {
77
82
  },
78
83
  };
79
84
  }
80
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvb2ZmbGluZVZhdWx0L2Rlc2NyaXB0b3IvdHJhbnNhY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBc0JBLDBGQVVDO0FBRUQsOENBS0M7QUFFRCw4RUFrQkM7QUEzREQseUNBQTJCO0FBQzNCLGdEQUErQztBQUUvQyxpREFBa0U7QUFDbEUsa0VBQTRFO0FBQzVFLG9FQUt5QztBQUN6Qyw2REFBcUU7QUFJeEQsUUFBQSxxQkFBcUIsR0FBRyxDQUFDLENBQUMsWUFBWSxDQUNqRCxDQUFDLDJDQUFvQixFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxXQUFXLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyw0QkFBZSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQ3pFLHVCQUF1QixDQUN4QixDQUFDO0FBSUYsU0FBZ0IsdUNBQXVDLENBQUMsRUFBeUI7SUFDL0UsTUFBTSxFQUFFLFdBQVcsRUFBRSx1QkFBdUIsRUFBRSxHQUFHLEVBQUUsQ0FBQztJQUNwRCxNQUFNLE9BQU8sR0FBRyxJQUFBLGtDQUFXLEVBQUMsdUJBQXVCLENBQUMsQ0FBQztJQUNyRCxNQUFNLE1BQU0sR0FBRyxJQUFBLGlDQUFnQixFQUFDO1FBQzlCLHdFQUF3RTtRQUN4RSxJQUFBLDJDQUEwQixFQUFDLENBQUMsU0FBUyxFQUFFLGlCQUFpQixFQUFFLG1CQUFtQixDQUFDLENBQUM7UUFDL0UsK0NBQStDO1FBQy9DLElBQUEsNENBQTJCLEdBQUU7S0FDOUIsQ0FBQyxDQUFDO0lBQ0gsT0FBTyxJQUFBLHdDQUF1QixFQUFDLFdBQVcsRUFBRSxPQUFPLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFDL0QsQ0FBQztBQUVELFNBQWdCLGlCQUFpQixDQUFDLEVBQXlCLEVBQUUsR0FBeUIsRUFBRSxRQUFzQjtJQUM1RyxNQUFNLElBQUksR0FBRyxnQkFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDekUsTUFBTSxhQUFhLEdBQUcsdUNBQXVDLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDbEUsSUFBQSxxQkFBUSxFQUFDLElBQUksRUFBRSxhQUFhLEVBQUUsR0FBRyxFQUFFLEVBQUUsY0FBYyxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUM7SUFDaEUsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDO0FBRUQsU0FBZ0IsaUNBQWlDLENBQy9DLEVBQXlCLEVBQ3pCLFFBQXNCO0lBRXRCLE1BQU0sSUFBSSxHQUFHLGdCQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUN6RSxNQUFNLGFBQWEsR0FBRyx1Q0FBdUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNsRSxNQUFNLEVBQUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxHQUFHLEVBQUUsR0FBRyxJQUFBLHdCQUFXLEVBQUMsSUFBSSxFQUFFLGFBQWEsRUFBRSxRQUFRLENBQUMsQ0FBQztJQUNuRixPQUFPO1FBQ0wsT0FBTztRQUNQLGFBQWE7UUFDYixHQUFHLEVBQUU7WUFDSCxpQkFBaUI7WUFDakIsR0FBRztZQUNILFVBQVU7WUFDVixjQUFjLEVBQUUsU0FBUztZQUN6QixlQUFlLEVBQUUsU0FBUztTQUMzQjtLQUNGLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgdCBmcm9tICdpby10cyc7XG5pbXBvcnQgeyBiaXAzMiwgUHNidCB9IGZyb20gJ0BiaXRnby93YXNtLXV0eG8nO1xuXG5pbXBvcnQgeyBEZXNjcmlwdG9yTWFwLCBOYW1lZERlc2NyaXB0b3IgfSBmcm9tICcuLi8uLi9kZXNjcmlwdG9yJztcbmltcG9ydCB7IE9mZmxpbmVWYXVsdFNpZ25hYmxlLCB0b0tleVRyaXBsZSB9IGZyb20gJy4uL09mZmxpbmVWYXVsdFNpZ25hYmxlJztcbmltcG9ydCB7XG4gIGdldFZhbGlkYXRvck9uZU9mVGVtcGxhdGVzLFxuICBnZXRWYWxpZGF0b3JTaWduZWRCeVVzZXJLZXksXG4gIGdldFZhbGlkYXRvclNvbWUsXG4gIHRvRGVzY3JpcHRvck1hcFZhbGlkYXRlLFxufSBmcm9tICcuLi8uLi9kZXNjcmlwdG9yL3ZhbGlkYXRlUG9saWN5JztcbmltcG9ydCB7IGV4cGxhaW5Qc2J0LCBzaWduUHNidCB9IGZyb20gJy4uLy4uL3RyYW5zYWN0aW9uL2Rlc2NyaXB0b3InO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb25FeHBsYW5hdGlvbiB9IGZyb20gJy4uL1RyYW5zYWN0aW9uRXhwbGFuYXRpb24nO1xuaW1wb3J0IHsgVXR4b0NvaW5OYW1lIH0gZnJvbSAnLi4vLi4vbmFtZXMnO1xuXG5leHBvcnQgY29uc3QgRGVzY3JpcHRvclRyYW5zYWN0aW9uID0gdC5pbnRlcnNlY3Rpb24oXG4gIFtPZmZsaW5lVmF1bHRTaWduYWJsZSwgdC50eXBlKHsgZGVzY3JpcHRvcnM6IHQuYXJyYXkoTmFtZWREZXNjcmlwdG9yKSB9KV0sXG4gICdEZXNjcmlwdG9yVHJhbnNhY3Rpb24nXG4pO1xuXG5leHBvcnQgdHlwZSBEZXNjcmlwdG9yVHJhbnNhY3Rpb24gPSB0LlR5cGVPZjx0eXBlb2YgRGVzY3JpcHRvclRyYW5zYWN0aW9uPjtcblxuZXhwb3J0IGZ1bmN0aW9uIGdldERlc2NyaXB0b3JzRnJvbURlc2NyaXB0b3JUcmFuc2FjdGlvbih0eDogRGVzY3JpcHRvclRyYW5zYWN0aW9uKTogRGVzY3JpcHRvck1hcCB7XG4gIGNvbnN0IHsgZGVzY3JpcHRvcnMsIHhwdWJzV2l0aERlcml2YXRpb25QYXRoIH0gPSB0eDtcbiAgY29uc3QgcHVia2V5cyA9IHRvS2V5VHJpcGxlKHhwdWJzV2l0aERlcml2YXRpb25QYXRoKTtcbiAgY29uc3QgcG9saWN5ID0gZ2V0VmFsaWRhdG9yU29tZShbXG4gICAgLy8gYWxsb3cgYWxsIDItb2YtMy1pc2ggZGVzY3JpcHRvcnMgd2hlcmUgdGhlIGtleXMgbWF0Y2ggdGhlIHdhbGxldCBrZXlzXG4gICAgZ2V0VmFsaWRhdG9yT25lT2ZUZW1wbGF0ZXMoWydXc2gyT2YzJywgJ1dzaDJPZjNDbHR2RHJvcCcsICdTaFdzaDJPZjNDbHR2RHJvcCddKSxcbiAgICAvLyBhbGxvdyBhbGwgZGVzY3JpcHRvcnMgc2lnbmVkIGJ5IHRoZSB1c2VyIGtleVxuICAgIGdldFZhbGlkYXRvclNpZ25lZEJ5VXNlcktleSgpLFxuICBdKTtcbiAgcmV0dXJuIHRvRGVzY3JpcHRvck1hcFZhbGlkYXRlKGRlc2NyaXB0b3JzLCBwdWJrZXlzLCBwb2xpY3kpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0SGFsZlNpZ25lZFBzYnQodHg6IERlc2NyaXB0b3JUcmFuc2FjdGlvbiwgcHJ2OiBiaXAzMi5CSVAzMkludGVyZmFjZSwgY29pbk5hbWU6IFV0eG9Db2luTmFtZSk6IFBzYnQge1xuICBjb25zdCBwc2J0ID0gUHNidC5kZXNlcmlhbGl6ZShCdWZmZXIuZnJvbSh0eC5jb2luU3BlY2lmaWMudHhIZXgsICdoZXgnKSk7XG4gIGNvbnN0IGRlc2NyaXB0b3JNYXAgPSBnZXREZXNjcmlwdG9yc0Zyb21EZXNjcmlwdG9yVHJhbnNhY3Rpb24odHgpO1xuICBzaWduUHNidChwc2J0LCBkZXNjcmlwdG9yTWFwLCBwcnYsIHsgb25Vbmtub3duSW5wdXQ6ICd0aHJvdycgfSk7XG4gIHJldHVybiBwc2J0O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0VHJhbnNhY3Rpb25FeHBsYW5hdGlvbkZyb21Qc2J0KFxuICB0eDogRGVzY3JpcHRvclRyYW5zYWN0aW9uLFxuICBjb2luTmFtZTogVXR4b0NvaW5OYW1lXG4pOiBUcmFuc2FjdGlvbkV4cGxhbmF0aW9uPHN0cmluZz4ge1xuICBjb25zdCBwc2J0ID0gUHNidC5kZXNlcmlhbGl6ZShCdWZmZXIuZnJvbSh0eC5jb2luU3BlY2lmaWMudHhIZXgsICdoZXgnKSk7XG4gIGNvbnN0IGRlc2NyaXB0b3JNYXAgPSBnZXREZXNjcmlwdG9yc0Zyb21EZXNjcmlwdG9yVHJhbnNhY3Rpb24odHgpO1xuICBjb25zdCB7IG91dHB1dHMsIGNoYW5nZU91dHB1dHMsIGZlZSB9ID0gZXhwbGFpblBzYnQocHNidCwgZGVzY3JpcHRvck1hcCwgY29pbk5hbWUpO1xuICByZXR1cm4ge1xuICAgIG91dHB1dHMsXG4gICAgY2hhbmdlT3V0cHV0cyxcbiAgICBmZWU6IHtcbiAgICAgIC8qIG5ldHdvcmsgZmVlICovXG4gICAgICBmZWUsXG4gICAgICAvKiBUT0RPICovXG4gICAgICBwYXlHb0ZlZVN0cmluZzogdW5kZWZpbmVkLFxuICAgICAgcGF5R29GZWVBZGRyZXNzOiB1bmRlZmluZWQsXG4gICAgfSxcbiAgfTtcbn1cbiJdfQ==
85
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvb2ZmbGluZVZhdWx0L2Rlc2NyaXB0b3IvdHJhbnNhY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBeUJBLDBGQVlDO0FBRUQsOENBTUM7QUFFRCw4RUFtQkM7QUFsRUQseUNBQTJCO0FBQzNCLGdEQUErQztBQUUvQyxpREFBa0U7QUFDbEUsa0VBQTRFO0FBQzVFLG9FQU15QztBQUN6Qyw2REFBcUU7QUFJckUsaUNBQStDO0FBRWxDLFFBQUEscUJBQXFCLEdBQUcsQ0FBQyxDQUFDLFlBQVksQ0FDakQsQ0FBQywyQ0FBb0IsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsV0FBVyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsNEJBQWUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUN6RSx1QkFBdUIsQ0FDeEIsQ0FBQztBQUlGLFNBQWdCLHVDQUF1QyxDQUFDLEVBQXlCO0lBQy9FLE1BQU0sRUFBRSxXQUFXLEVBQUUsdUJBQXVCLEVBQUUsR0FBRyxFQUFFLENBQUM7SUFDcEQsTUFBTSxPQUFPLEdBQUcsSUFBQSxrQ0FBVyxFQUFDLHVCQUF1QixDQUFDLENBQUM7SUFDckQsTUFBTSxNQUFNLEdBQUcsSUFBQSxpQ0FBZ0IsRUFBQztRQUM5Qix3RUFBd0U7UUFDeEUsSUFBQSwyQ0FBMEIsRUFBQyxDQUFDLFNBQVMsRUFBRSxpQkFBaUIsRUFBRSxtQkFBbUIsQ0FBQyxDQUFDO1FBQy9FLDhHQUE4RztRQUM5RyxJQUFBLHVDQUFzQixHQUFFO1FBQ3hCLCtDQUErQztRQUMvQyxJQUFBLDRDQUEyQixHQUFFO0tBQzlCLENBQUMsQ0FBQztJQUNILE9BQU8sSUFBQSx3Q0FBdUIsRUFBQyxXQUFXLEVBQUUsT0FBTyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBQy9ELENBQUM7QUFFRCxTQUFnQixpQkFBaUIsQ0FBQyxFQUF5QixFQUFFLEdBQXlCLEVBQUUsUUFBc0I7SUFDNUcsTUFBTSxJQUFJLEdBQUcsZ0JBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ3pFLE1BQU0sYUFBYSxHQUFHLHVDQUF1QyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ2xFLElBQUEsNEJBQXFCLEVBQUMsSUFBSSxFQUFFLGFBQWEsQ0FBQyxDQUFDO0lBQzNDLElBQUEscUJBQVEsRUFBQyxJQUFJLEVBQUUsYUFBYSxFQUFFLEdBQUcsRUFBRSxFQUFFLGNBQWMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDO0lBQ2hFLE9BQU8sSUFBSSxDQUFDO0FBQ2QsQ0FBQztBQUVELFNBQWdCLGlDQUFpQyxDQUMvQyxFQUF5QixFQUN6QixRQUFzQjtJQUV0QixNQUFNLElBQUksR0FBRyxnQkFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDekUsTUFBTSxhQUFhLEdBQUcsdUNBQXVDLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDbEUsTUFBTSxFQUFFLE9BQU8sRUFBRSxhQUFhLEVBQUUsR0FBRyxFQUFFLEdBQUcsSUFBQSx3QkFBVyxFQUFDLElBQUksRUFBRSxhQUFhLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDbkYsT0FBTztRQUNMLE9BQU87UUFDUCxhQUFhO1FBQ2IsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUU7UUFDekIsR0FBRyxFQUFFO1lBQ0gsaUJBQWlCO1lBQ2pCLEdBQUc7WUFDSCxVQUFVO1lBQ1YsY0FBYyxFQUFFLFNBQVM7WUFDekIsZUFBZSxFQUFFLFNBQVM7U0FDM0I7S0FDRixDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHQgZnJvbSAnaW8tdHMnO1xuaW1wb3J0IHsgYmlwMzIsIFBzYnQgfSBmcm9tICdAYml0Z28vd2FzbS11dHhvJztcblxuaW1wb3J0IHsgRGVzY3JpcHRvck1hcCwgTmFtZWREZXNjcmlwdG9yIH0gZnJvbSAnLi4vLi4vZGVzY3JpcHRvcic7XG5pbXBvcnQgeyBPZmZsaW5lVmF1bHRTaWduYWJsZSwgdG9LZXlUcmlwbGUgfSBmcm9tICcuLi9PZmZsaW5lVmF1bHRTaWduYWJsZSc7XG5pbXBvcnQge1xuICBnZXRWYWxpZGF0b3JPbmVPZlRlbXBsYXRlcyxcbiAgZ2V0VmFsaWRhdG9yUG94NVdhbGxldCxcbiAgZ2V0VmFsaWRhdG9yU2lnbmVkQnlVc2VyS2V5LFxuICBnZXRWYWxpZGF0b3JTb21lLFxuICB0b0Rlc2NyaXB0b3JNYXBWYWxpZGF0ZSxcbn0gZnJvbSAnLi4vLi4vZGVzY3JpcHRvci92YWxpZGF0ZVBvbGljeSc7XG5pbXBvcnQgeyBleHBsYWluUHNidCwgc2lnblBzYnQgfSBmcm9tICcuLi8uLi90cmFuc2FjdGlvbi9kZXNjcmlwdG9yJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uRXhwbGFuYXRpb24gfSBmcm9tICcuLi9UcmFuc2FjdGlvbkV4cGxhbmF0aW9uJztcbmltcG9ydCB7IFV0eG9Db2luTmFtZSB9IGZyb20gJy4uLy4uL25hbWVzJztcblxuaW1wb3J0IHsgYXNzZXJ0UG94NVNwZW5kUG9saWN5IH0gZnJvbSAnLi9wb3g1JztcblxuZXhwb3J0IGNvbnN0IERlc2NyaXB0b3JUcmFuc2FjdGlvbiA9IHQuaW50ZXJzZWN0aW9uKFxuICBbT2ZmbGluZVZhdWx0U2lnbmFibGUsIHQudHlwZSh7IGRlc2NyaXB0b3JzOiB0LmFycmF5KE5hbWVkRGVzY3JpcHRvcikgfSldLFxuICAnRGVzY3JpcHRvclRyYW5zYWN0aW9uJ1xuKTtcblxuZXhwb3J0IHR5cGUgRGVzY3JpcHRvclRyYW5zYWN0aW9uID0gdC5UeXBlT2Y8dHlwZW9mIERlc2NyaXB0b3JUcmFuc2FjdGlvbj47XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXREZXNjcmlwdG9yc0Zyb21EZXNjcmlwdG9yVHJhbnNhY3Rpb24odHg6IERlc2NyaXB0b3JUcmFuc2FjdGlvbik6IERlc2NyaXB0b3JNYXAge1xuICBjb25zdCB7IGRlc2NyaXB0b3JzLCB4cHVic1dpdGhEZXJpdmF0aW9uUGF0aCB9ID0gdHg7XG4gIGNvbnN0IHB1YmtleXMgPSB0b0tleVRyaXBsZSh4cHVic1dpdGhEZXJpdmF0aW9uUGF0aCk7XG4gIGNvbnN0IHBvbGljeSA9IGdldFZhbGlkYXRvclNvbWUoW1xuICAgIC8vIGFsbG93IGFsbCAyLW9mLTMtaXNoIGRlc2NyaXB0b3JzIHdoZXJlIHRoZSBrZXlzIG1hdGNoIHRoZSB3YWxsZXQga2V5c1xuICAgIGdldFZhbGlkYXRvck9uZU9mVGVtcGxhdGVzKFsnV3NoMk9mMycsICdXc2gyT2YzQ2x0dkRyb3AnLCAnU2hXc2gyT2YzQ2x0dkRyb3AnXSksXG4gICAgLy8gYWxsb3cgMi1vZi0zIHdhbGxldCBkZXNjcmlwdG9ycyB0b2dldGhlciB3aXRoIFBvWC01IGxvY2t1cCBkZXNjcmlwdG9ycyB3aGVyZSB0aGUga2V5cyBtYXRjaCB0aGUgd2FsbGV0IGtleXNcbiAgICBnZXRWYWxpZGF0b3JQb3g1V2FsbGV0KCksXG4gICAgLy8gYWxsb3cgYWxsIGRlc2NyaXB0b3JzIHNpZ25lZCBieSB0aGUgdXNlciBrZXlcbiAgICBnZXRWYWxpZGF0b3JTaWduZWRCeVVzZXJLZXkoKSxcbiAgXSk7XG4gIHJldHVybiB0b0Rlc2NyaXB0b3JNYXBWYWxpZGF0ZShkZXNjcmlwdG9ycywgcHVia2V5cywgcG9saWN5KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEhhbGZTaWduZWRQc2J0KHR4OiBEZXNjcmlwdG9yVHJhbnNhY3Rpb24sIHBydjogYmlwMzIuQklQMzJJbnRlcmZhY2UsIGNvaW5OYW1lOiBVdHhvQ29pbk5hbWUpOiBQc2J0IHtcbiAgY29uc3QgcHNidCA9IFBzYnQuZGVzZXJpYWxpemUoQnVmZmVyLmZyb20odHguY29pblNwZWNpZmljLnR4SGV4LCAnaGV4JykpO1xuICBjb25zdCBkZXNjcmlwdG9yTWFwID0gZ2V0RGVzY3JpcHRvcnNGcm9tRGVzY3JpcHRvclRyYW5zYWN0aW9uKHR4KTtcbiAgYXNzZXJ0UG94NVNwZW5kUG9saWN5KHBzYnQsIGRlc2NyaXB0b3JNYXApO1xuICBzaWduUHNidChwc2J0LCBkZXNjcmlwdG9yTWFwLCBwcnYsIHsgb25Vbmtub3duSW5wdXQ6ICd0aHJvdycgfSk7XG4gIHJldHVybiBwc2J0O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0VHJhbnNhY3Rpb25FeHBsYW5hdGlvbkZyb21Qc2J0KFxuICB0eDogRGVzY3JpcHRvclRyYW5zYWN0aW9uLFxuICBjb2luTmFtZTogVXR4b0NvaW5OYW1lXG4pOiBUcmFuc2FjdGlvbkV4cGxhbmF0aW9uPHN0cmluZz4ge1xuICBjb25zdCBwc2J0ID0gUHNidC5kZXNlcmlhbGl6ZShCdWZmZXIuZnJvbSh0eC5jb2luU3BlY2lmaWMudHhIZXgsICdoZXgnKSk7XG4gIGNvbnN0IGRlc2NyaXB0b3JNYXAgPSBnZXREZXNjcmlwdG9yc0Zyb21EZXNjcmlwdG9yVHJhbnNhY3Rpb24odHgpO1xuICBjb25zdCB7IG91dHB1dHMsIGNoYW5nZU91dHB1dHMsIGZlZSB9ID0gZXhwbGFpblBzYnQocHNidCwgZGVzY3JpcHRvck1hcCwgY29pbk5hbWUpO1xuICByZXR1cm4ge1xuICAgIG91dHB1dHMsXG4gICAgY2hhbmdlT3V0cHV0cyxcbiAgICBsb2NrdGltZTogcHNidC5sb2NrVGltZSgpLFxuICAgIGZlZToge1xuICAgICAgLyogbmV0d29yayBmZWUgKi9cbiAgICAgIGZlZSxcbiAgICAgIC8qIFRPRE8gKi9cbiAgICAgIHBheUdvRmVlU3RyaW5nOiB1bmRlZmluZWQsXG4gICAgICBwYXlHb0ZlZUFkZHJlc3M6IHVuZGVmaW5lZCxcbiAgICB9LFxuICB9O1xufVxuIl19
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=pox5.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pox5.d.ts","sourceRoot":"","sources":["../../../../../test/unit/offlineVault/pox5.ts"],"names":[],"mappings":""}