@bitgo-beta/sdk-core 8.2.1-beta.729 → 8.2.1-beta.730

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.
@@ -1,4 +1,4 @@
1
- import { BIP32Interface, ECPairInterface } from '@bitgo-beta/utxo-lib';
1
+ import { BIP32Interface, ECPairInterface } from '@bitgo-beta/secp256k1';
2
2
  import { KeyPairOptions, ExtendedKeys } from './iface';
3
3
  import { BaseKeyPair } from './baseKeyPair';
4
4
  import { AddressFormat } from './enum';
@@ -1 +1 @@
1
- {"version":3,"file":"secp256k1ExtendedKeyPair.d.ts","sourceRoot":"","sources":["../../../../src/account-lib/baseCoin/secp256k1ExtendedKeyPair.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,cAAc,EAAU,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEtF,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AAGvC;;GAEG;AACH,8BAAsB,wBAAyB,YAAW,WAAW;IACnE,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,cAAc,GAAG,eAAe;IAUzD,SAAS,CAAC,MAAM,CAAC,EAAE,cAAc,CAAC;IAClC,SAAS,CAAC,OAAO,EAAE,eAAe,CAAC;IACnC,SAAS,CAAC,MAAM,CAAC,EAAE,cAAc,CAAC;IAClC;;;;;OAKG;IACH,SAAS,aAAa,MAAM,CAAC,EAAE,cAAc;IAI7C;;;OAGG;IACH,YAAY,CAAC,EAAE,UAAU,EAAE,EAAE;QAAE,UAAU,EAAE,OAAO,CAAA;KAAE,GAAG,MAAM;IAI7D;;OAEG;IACH,aAAa,IAAI,MAAM,GAAG,SAAS;IAInC;;;;OAIG;IACH,wBAAwB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAW3C;;;;OAIG;IACH,uBAAuB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAW1C;;;;;OAKG;IACH,eAAe,IAAI,YAAY;IAc/B,UAAU,CAAC,MAAM,CAAC,EAAE,aAAa,GAAG,MAAM;IAI1C,OAAO,IAAI,GAAG;CAGf"}
1
+ {"version":3,"file":"secp256k1ExtendedKeyPair.d.ts","sourceRoot":"","sources":["../../../../src/account-lib/baseCoin/secp256k1ExtendedKeyPair.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,cAAc,EAAU,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAEvF,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AAGvC;;GAEG;AACH,8BAAsB,wBAAyB,YAAW,WAAW;IACnE,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,cAAc,GAAG,eAAe;IAUzD,SAAS,CAAC,MAAM,CAAC,EAAE,cAAc,CAAC;IAClC,SAAS,CAAC,OAAO,EAAE,eAAe,CAAC;IACnC,SAAS,CAAC,MAAM,CAAC,EAAE,cAAc,CAAC;IAClC;;;;;OAKG;IACH,SAAS,aAAa,MAAM,CAAC,EAAE,cAAc;IAI7C;;;OAGG;IACH,YAAY,CAAC,EAAE,UAAU,EAAE,EAAE;QAAE,UAAU,EAAE,OAAO,CAAA;KAAE,GAAG,MAAM;IAI7D;;OAEG;IACH,aAAa,IAAI,MAAM,GAAG,SAAS;IAInC;;;;OAIG;IACH,wBAAwB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAW3C;;;;OAIG;IACH,uBAAuB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAW1C;;;;;OAKG;IACH,eAAe,IAAI,YAAY;IAc/B,UAAU,CAAC,MAAM,CAAC,EAAE,aAAa,GAAG,MAAM;IAI1C,OAAO,IAAI,GAAG;CAGf"}
@@ -34,7 +34,7 @@ var __importStar = (this && this.__importStar) || (function () {
34
34
  })();
35
35
  Object.defineProperty(exports, "__esModule", { value: true });
36
36
  exports.Secp256k1ExtendedKeyPair = void 0;
37
- const utxo_lib_1 = require("@bitgo-beta/utxo-lib");
37
+ const secp256k1_1 = require("@bitgo-beta/secp256k1");
38
38
  const Crypto = __importStar(require("../util/crypto"));
39
39
  const errors_1 = require("./errors");
40
40
  /**
@@ -43,10 +43,10 @@ const errors_1 = require("./errors");
43
43
  class Secp256k1ExtendedKeyPair {
44
44
  static toKeyPair(hdNode) {
45
45
  if (hdNode.privateKey) {
46
- return utxo_lib_1.ECPair.fromPrivateKey(hdNode.privateKey);
46
+ return secp256k1_1.ECPair.fromPrivateKey(hdNode.privateKey);
47
47
  }
48
48
  else {
49
- return utxo_lib_1.ECPair.fromPublicKey(hdNode.publicKey);
49
+ return secp256k1_1.ECPair.fromPublicKey(hdNode.publicKey);
50
50
  }
51
51
  }
52
52
  /**
@@ -63,7 +63,7 @@ class Secp256k1ExtendedKeyPair {
63
63
  * @return Buffer 33 bytes if `compressed` is set, 65 bytes otherwise. Standard libsecp256k1 format.
64
64
  */
65
65
  getPublicKey({ compressed }) {
66
- return utxo_lib_1.ECPair.fromPublicKey(this.keyPair?.publicKey, { compressed }).publicKey;
66
+ return secp256k1_1.ECPair.fromPublicKey(this.keyPair?.publicKey, { compressed }).publicKey;
67
67
  }
68
68
  /**
69
69
  * @return Buffer 32 bytes in standard libsecp256k1 format
@@ -78,11 +78,11 @@ class Secp256k1ExtendedKeyPair {
78
78
  */
79
79
  recordKeysFromPrivateKey(prv) {
80
80
  if (Crypto.isValidXprv(prv)) {
81
- this.hdNode = utxo_lib_1.bip32.fromBase58(prv);
81
+ this.hdNode = secp256k1_1.bip32.fromBase58(prv);
82
82
  }
83
83
  else if (Crypto.isValidPrv(prv)) {
84
84
  // Cannot create the HD node without the chain code, so create a regular Key Chain
85
- this.keyPair = utxo_lib_1.ECPair.fromPrivateKey(Buffer.from(prv, 'hex'));
85
+ this.keyPair = secp256k1_1.ECPair.fromPrivateKey(Buffer.from(prv, 'hex'));
86
86
  }
87
87
  else {
88
88
  throw new Error('Unsupported private key');
@@ -95,11 +95,11 @@ class Secp256k1ExtendedKeyPair {
95
95
  */
96
96
  recordKeysFromPublicKey(pub) {
97
97
  if (Crypto.isValidXpub(pub)) {
98
- this.hdNode = utxo_lib_1.bip32.fromBase58(pub);
98
+ this.hdNode = secp256k1_1.bip32.fromBase58(pub);
99
99
  }
100
100
  else if (Crypto.isValidPub(pub)) {
101
101
  // Cannot create an HD node without the chain code, so create a regular Key Chain
102
- this.keyPair = utxo_lib_1.ECPair.fromPublicKey(Buffer.from(pub, 'hex'));
102
+ this.keyPair = secp256k1_1.ECPair.fromPublicKey(Buffer.from(pub, 'hex'));
103
103
  }
104
104
  else {
105
105
  throw new Error('Unsupported public key: ' + pub);
@@ -132,4 +132,4 @@ class Secp256k1ExtendedKeyPair {
132
132
  }
133
133
  }
134
134
  exports.Secp256k1ExtendedKeyPair = Secp256k1ExtendedKeyPair;
135
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VjcDI1NmsxRXh0ZW5kZWRLZXlQYWlyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2FjY291bnQtbGliL2Jhc2VDb2luL3NlY3AyNTZrMUV4dGVuZGVkS2V5UGFpci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxtREFBc0Y7QUFDdEYsdURBQXlDO0FBSXpDLHFDQUErQztBQUUvQzs7R0FFRztBQUNILE1BQXNCLHdCQUF3QjtJQUM1QyxNQUFNLENBQUMsU0FBUyxDQUFDLE1BQXNCO1FBQ3JDLElBQUksTUFBTSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ3RCLE9BQU8saUJBQU0sQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ2xELENBQUM7YUFBTSxDQUFDO1lBQ04sT0FBTyxpQkFBTSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDaEQsQ0FBQztJQUNILENBQUM7SUFPRDs7Ozs7T0FLRztJQUNILFlBQXNCLE1BQXVCO1FBQzNDLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO0lBQ3ZCLENBQUM7SUFFRDs7O09BR0c7SUFDSCxZQUFZLENBQUMsRUFBRSxVQUFVLEVBQTJCO1FBQ2xELE9BQU8saUJBQU0sQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxTQUFTLEVBQUUsRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQztJQUNqRixDQUFDO0lBRUQ7O09BRUc7SUFDSCxhQUFhO1FBQ1gsT0FBTyxJQUFJLENBQUMsT0FBTyxFQUFFLFVBQVUsQ0FBQztJQUNsQyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILHdCQUF3QixDQUFDLEdBQVc7UUFDbEMsSUFBSSxNQUFNLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDNUIsSUFBSSxDQUFDLE1BQU0sR0FBRyxnQkFBSyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN0QyxDQUFDO2FBQU0sSUFBSSxNQUFNLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDbEMsa0ZBQWtGO1lBQ2xGLElBQUksQ0FBQyxPQUFPLEdBQUcsaUJBQU0sQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUNoRSxDQUFDO2FBQU0sQ0FBQztZQUNOLE1BQU0sSUFBSSxLQUFLLENBQUMseUJBQXlCLENBQUMsQ0FBQztRQUM3QyxDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCx1QkFBdUIsQ0FBQyxHQUFXO1FBQ2pDLElBQUksTUFBTSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQzVCLElBQUksQ0FBQyxNQUFNLEdBQUcsZ0JBQUssQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDdEMsQ0FBQzthQUFNLElBQUksTUFBTSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ2xDLGlGQUFpRjtZQUNqRixJQUFJLENBQUMsT0FBTyxHQUFHLGlCQUFNLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDL0QsQ0FBQzthQUFNLENBQUM7WUFDTixNQUFNLElBQUksS0FBSyxDQUFDLDBCQUEwQixHQUFHLEdBQUcsQ0FBQyxDQUFDO1FBQ3BELENBQUM7SUFDSCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxlQUFlO1FBQ2IsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNqQixNQUFNLElBQUksS0FBSyxDQUFDLDBCQUEwQixDQUFDLENBQUM7UUFDOUMsQ0FBQztRQUNELE1BQU0sTUFBTSxHQUFpQjtZQUMzQixJQUFJLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQyxRQUFRLEVBQUU7U0FDeEMsQ0FBQztRQUNGLHVFQUF1RTtRQUN2RSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDO1lBQzlCLE1BQU0sQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUN2QyxDQUFDO1FBQ0QsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztJQUVELFVBQVUsQ0FBQyxNQUFzQjtRQUMvQixNQUFNLElBQUksNEJBQW1CLENBQUMsNEJBQTRCLENBQUMsQ0FBQztJQUM5RCxDQUFDO0lBRUQsT0FBTztRQUNMLE1BQU0sSUFBSSw0QkFBbUIsQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO0lBQzNELENBQUM7Q0FDRjtBQWxHRCw0REFrR0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBiaXAzMiwgQklQMzJJbnRlcmZhY2UsIEVDUGFpciwgRUNQYWlySW50ZXJmYWNlIH0gZnJvbSAnQGJpdGdvLWJldGEvdXR4by1saWInO1xuaW1wb3J0ICogYXMgQ3J5cHRvIGZyb20gJy4uL3V0aWwvY3J5cHRvJztcbmltcG9ydCB7IEtleVBhaXJPcHRpb25zLCBFeHRlbmRlZEtleXMgfSBmcm9tICcuL2lmYWNlJztcbmltcG9ydCB7IEJhc2VLZXlQYWlyIH0gZnJvbSAnLi9iYXNlS2V5UGFpcic7XG5pbXBvcnQgeyBBZGRyZXNzRm9ybWF0IH0gZnJvbSAnLi9lbnVtJztcbmltcG9ydCB7IE5vdEltcGxlbWVudGVkRXJyb3IgfSBmcm9tICcuL2Vycm9ycyc7XG5cbi8qKlxuICogQmFzZSBjbGFzcyBmb3IgU0VDUDI1NksxIGV4dGVuZGVkIGtleXBhaXJzLlxuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgU2VjcDI1NmsxRXh0ZW5kZWRLZXlQYWlyIGltcGxlbWVudHMgQmFzZUtleVBhaXIge1xuICBzdGF0aWMgdG9LZXlQYWlyKGhkTm9kZTogQklQMzJJbnRlcmZhY2UpOiBFQ1BhaXJJbnRlcmZhY2Uge1xuICAgIGlmIChoZE5vZGUucHJpdmF0ZUtleSkge1xuICAgICAgcmV0dXJuIEVDUGFpci5mcm9tUHJpdmF0ZUtleShoZE5vZGUucHJpdmF0ZUtleSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBFQ1BhaXIuZnJvbVB1YmxpY0tleShoZE5vZGUucHVibGljS2V5KTtcbiAgICB9XG4gIH1cblxuICAvLyBJbXBsZW1lbnRhdGlvbiBvZiB0aGUgSEQgcHJvdG9jb2wgKEJJUDMyKS4gT25seSBhdmFpbGFibGUgd2hlbiBjcmVhdGluZyBhIEtleVBhaXIgZnJvbSBhIHNlZWQsXG4gIC8vIG9yIGV4dGVuZGVkIGtleXNcbiAgcHJvdGVjdGVkIGhkTm9kZT86IEJJUDMySW50ZXJmYWNlO1xuICBwcm90ZWN0ZWQga2V5UGFpcjogRUNQYWlySW50ZXJmYWNlO1xuICBwcm90ZWN0ZWQgc291cmNlPzogS2V5UGFpck9wdGlvbnM7XG4gIC8qKlxuICAgKiBQdWJsaWMgY29uc3RydWN0b3IuIEJ5IGRlZmF1bHQsIGNyZWF0ZXMgYSBrZXkgcGFpciB3aXRoIGEgcmFuZG9tIG1hc3RlciBzZWVkLlxuICAgKlxuICAgKiBAcGFyYW0ge0tleVBhaXJPcHRpb25zfSBzb3VyY2UgRWl0aGVyIGEgbWFzdGVyIHNlZWQsIGEgcHJpdmF0ZSBrZXkgKGV4dGVuZGVkIG9yIHJhdyksIG9yIGEgcHVibGljIGtleVxuICAgKiAgICAgKGV4dGVuZGVkLCBjb21wcmVzc2VkLCBvciB1bmNvbXByZXNzZWQpXG4gICAqL1xuICBwcm90ZWN0ZWQgY29uc3RydWN0b3Ioc291cmNlPzogS2V5UGFpck9wdGlvbnMpIHtcbiAgICB0aGlzLnNvdXJjZSA9IHNvdXJjZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0gY29tcHJlc3NlZFxuICAgKiBAcmV0dXJuIEJ1ZmZlciAzMyBieXRlcyBpZiBgY29tcHJlc3NlZGAgaXMgc2V0LCA2NSBieXRlcyBvdGhlcndpc2UuIFN0YW5kYXJkIGxpYnNlY3AyNTZrMSBmb3JtYXQuXG4gICAqL1xuICBnZXRQdWJsaWNLZXkoeyBjb21wcmVzc2VkIH06IHsgY29tcHJlc3NlZDogYm9vbGVhbiB9KTogQnVmZmVyIHtcbiAgICByZXR1cm4gRUNQYWlyLmZyb21QdWJsaWNLZXkodGhpcy5rZXlQYWlyPy5wdWJsaWNLZXksIHsgY29tcHJlc3NlZCB9KS5wdWJsaWNLZXk7XG4gIH1cblxuICAvKipcbiAgICogQHJldHVybiBCdWZmZXIgMzIgYnl0ZXMgaW4gc3RhbmRhcmQgbGlic2VjcDI1NmsxIGZvcm1hdFxuICAgKi9cbiAgZ2V0UHJpdmF0ZUtleSgpOiBCdWZmZXIgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLmtleVBhaXI/LnByaXZhdGVLZXk7XG4gIH1cblxuICAvKipcbiAgICogQnVpbGQgYSBIaWVyYXJjaGljYWwgRGV0ZXJtaW5pc3RpYyBub2RlIG9yIGFuIEVDUGFpciBmcm9tIGEgcHJpdmF0ZSBrZXkuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBwcnYgQW4gZXh0ZW5kZWQgb3IgcmF3IHByaXZhdGUga2V5XG4gICAqL1xuICByZWNvcmRLZXlzRnJvbVByaXZhdGVLZXkocHJ2OiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAoQ3J5cHRvLmlzVmFsaWRYcHJ2KHBydikpIHtcbiAgICAgIHRoaXMuaGROb2RlID0gYmlwMzIuZnJvbUJhc2U1OChwcnYpO1xuICAgIH0gZWxzZSBpZiAoQ3J5cHRvLmlzVmFsaWRQcnYocHJ2KSkge1xuICAgICAgLy8gQ2Fubm90IGNyZWF0ZSB0aGUgSEQgbm9kZSB3aXRob3V0IHRoZSBjaGFpbiBjb2RlLCBzbyBjcmVhdGUgYSByZWd1bGFyIEtleSBDaGFpblxuICAgICAgdGhpcy5rZXlQYWlyID0gRUNQYWlyLmZyb21Qcml2YXRlS2V5KEJ1ZmZlci5mcm9tKHBydiwgJ2hleCcpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdVbnN1cHBvcnRlZCBwcml2YXRlIGtleScpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBCdWlsZCBhIEhpZXJhcmNoaWNhbCBEZXRlcm1pbmlzdGljIG5vZGUgb3IgYW4gRUNQYWlyIGZyb20gYSBwdWJsaWMga2V5LlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gcHViIC0gQW4gZXh0ZW5kZWQsIGNvbXByZXNzZWQsIG9yIHVuY29tcHJlc3NlZCBwdWJsaWMga2V5XG4gICAqL1xuICByZWNvcmRLZXlzRnJvbVB1YmxpY0tleShwdWI6IHN0cmluZyk6IHZvaWQge1xuICAgIGlmIChDcnlwdG8uaXNWYWxpZFhwdWIocHViKSkge1xuICAgICAgdGhpcy5oZE5vZGUgPSBiaXAzMi5mcm9tQmFzZTU4KHB1Yik7XG4gICAgfSBlbHNlIGlmIChDcnlwdG8uaXNWYWxpZFB1YihwdWIpKSB7XG4gICAgICAvLyBDYW5ub3QgY3JlYXRlIGFuIEhEIG5vZGUgd2l0aG91dCB0aGUgY2hhaW4gY29kZSwgc28gY3JlYXRlIGEgcmVndWxhciBLZXkgQ2hhaW5cbiAgICAgIHRoaXMua2V5UGFpciA9IEVDUGFpci5mcm9tUHVibGljS2V5KEJ1ZmZlci5mcm9tKHB1YiwgJ2hleCcpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdVbnN1cHBvcnRlZCBwdWJsaWMga2V5OiAnICsgcHViKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBleHRlbmRlZCBwdWJsaWMga2V5LCBhbmQgdGhlIHByaXZhdGUga2V5IGlmIG9uZSBpcyBhdmFpbGFibGUuIFRoaXMgaXMgb25seSBwb3NzaWJsZVxuICAgKiB3aGVuIHRoZSBrZXkgcGFpciB3YXMgY3JlYXRlZCBmcm9tIGEgc2VlZCBvciBleHRlbmRlZCBrZXlzLlxuICAgKlxuICAgKiBAcmV0dXJucyB7RXh0ZW5kZWRLZXlzfSBUaGUgRXh0ZW5kZWQga2V5cyBvYmplY3RcbiAgICovXG4gIGdldEV4dGVuZGVkS2V5cygpOiBFeHRlbmRlZEtleXMge1xuICAgIGlmICghdGhpcy5oZE5vZGUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignQ2Fubm90IGdldCBleHRlbmRlZCBrZXlzJyk7XG4gICAgfVxuICAgIGNvbnN0IHJlc3VsdDogRXh0ZW5kZWRLZXlzID0ge1xuICAgICAgeHB1YjogdGhpcy5oZE5vZGUubmV1dGVyZWQoKS50b0Jhc2U1OCgpLFxuICAgIH07XG4gICAgLy8gQSBuZXV0ZXJlZCBIRCBub2RlIG1lYW5zIGl0IG9ubHkgY29udGFpbnMgdGhlIHB1YmxpYyBrZXkgaW5mb3JtYXRpb25cbiAgICBpZiAoIXRoaXMuaGROb2RlLmlzTmV1dGVyZWQoKSkge1xuICAgICAgcmVzdWx0LnhwcnYgPSB0aGlzLmhkTm9kZS50b0Jhc2U1OCgpO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgZ2V0QWRkcmVzcyhmb3JtYXQ/OiBBZGRyZXNzRm9ybWF0KTogc3RyaW5nIHtcbiAgICB0aHJvdyBuZXcgTm90SW1wbGVtZW50ZWRFcnJvcignZ2V0QWRkcmVzcyBub3QgaW1wbGVtZW50ZWQnKTtcbiAgfVxuXG4gIGdldEtleXMoKTogYW55IHtcbiAgICB0aHJvdyBuZXcgTm90SW1wbGVtZW50ZWRFcnJvcignZ2V0S2V5cyBub3QgaW1wbGVtZW50ZWQnKTtcbiAgfVxufVxuIl19
135
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VjcDI1NmsxRXh0ZW5kZWRLZXlQYWlyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2FjY291bnQtbGliL2Jhc2VDb2luL3NlY3AyNTZrMUV4dGVuZGVkS2V5UGFpci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxxREFBdUY7QUFDdkYsdURBQXlDO0FBSXpDLHFDQUErQztBQUUvQzs7R0FFRztBQUNILE1BQXNCLHdCQUF3QjtJQUM1QyxNQUFNLENBQUMsU0FBUyxDQUFDLE1BQXNCO1FBQ3JDLElBQUksTUFBTSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ3RCLE9BQU8sa0JBQU0sQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ2xELENBQUM7YUFBTSxDQUFDO1lBQ04sT0FBTyxrQkFBTSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDaEQsQ0FBQztJQUNILENBQUM7SUFPRDs7Ozs7T0FLRztJQUNILFlBQXNCLE1BQXVCO1FBQzNDLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO0lBQ3ZCLENBQUM7SUFFRDs7O09BR0c7SUFDSCxZQUFZLENBQUMsRUFBRSxVQUFVLEVBQTJCO1FBQ2xELE9BQU8sa0JBQU0sQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxTQUFTLEVBQUUsRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQztJQUNqRixDQUFDO0lBRUQ7O09BRUc7SUFDSCxhQUFhO1FBQ1gsT0FBTyxJQUFJLENBQUMsT0FBTyxFQUFFLFVBQVUsQ0FBQztJQUNsQyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILHdCQUF3QixDQUFDLEdBQVc7UUFDbEMsSUFBSSxNQUFNLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDNUIsSUFBSSxDQUFDLE1BQU0sR0FBRyxpQkFBSyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN0QyxDQUFDO2FBQU0sSUFBSSxNQUFNLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDbEMsa0ZBQWtGO1lBQ2xGLElBQUksQ0FBQyxPQUFPLEdBQUcsa0JBQU0sQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUNoRSxDQUFDO2FBQU0sQ0FBQztZQUNOLE1BQU0sSUFBSSxLQUFLLENBQUMseUJBQXlCLENBQUMsQ0FBQztRQUM3QyxDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCx1QkFBdUIsQ0FBQyxHQUFXO1FBQ2pDLElBQUksTUFBTSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQzVCLElBQUksQ0FBQyxNQUFNLEdBQUcsaUJBQUssQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDdEMsQ0FBQzthQUFNLElBQUksTUFBTSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ2xDLGlGQUFpRjtZQUNqRixJQUFJLENBQUMsT0FBTyxHQUFHLGtCQUFNLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDL0QsQ0FBQzthQUFNLENBQUM7WUFDTixNQUFNLElBQUksS0FBSyxDQUFDLDBCQUEwQixHQUFHLEdBQUcsQ0FBQyxDQUFDO1FBQ3BELENBQUM7SUFDSCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxlQUFlO1FBQ2IsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNqQixNQUFNLElBQUksS0FBSyxDQUFDLDBCQUEwQixDQUFDLENBQUM7UUFDOUMsQ0FBQztRQUNELE1BQU0sTUFBTSxHQUFpQjtZQUMzQixJQUFJLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQyxRQUFRLEVBQUU7U0FDeEMsQ0FBQztRQUNGLHVFQUF1RTtRQUN2RSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDO1lBQzlCLE1BQU0sQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUN2QyxDQUFDO1FBQ0QsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztJQUVELFVBQVUsQ0FBQyxNQUFzQjtRQUMvQixNQUFNLElBQUksNEJBQW1CLENBQUMsNEJBQTRCLENBQUMsQ0FBQztJQUM5RCxDQUFDO0lBRUQsT0FBTztRQUNMLE1BQU0sSUFBSSw0QkFBbUIsQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO0lBQzNELENBQUM7Q0FDRjtBQWxHRCw0REFrR0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBiaXAzMiwgQklQMzJJbnRlcmZhY2UsIEVDUGFpciwgRUNQYWlySW50ZXJmYWNlIH0gZnJvbSAnQGJpdGdvLWJldGEvc2VjcDI1NmsxJztcbmltcG9ydCAqIGFzIENyeXB0byBmcm9tICcuLi91dGlsL2NyeXB0byc7XG5pbXBvcnQgeyBLZXlQYWlyT3B0aW9ucywgRXh0ZW5kZWRLZXlzIH0gZnJvbSAnLi9pZmFjZSc7XG5pbXBvcnQgeyBCYXNlS2V5UGFpciB9IGZyb20gJy4vYmFzZUtleVBhaXInO1xuaW1wb3J0IHsgQWRkcmVzc0Zvcm1hdCB9IGZyb20gJy4vZW51bSc7XG5pbXBvcnQgeyBOb3RJbXBsZW1lbnRlZEVycm9yIH0gZnJvbSAnLi9lcnJvcnMnO1xuXG4vKipcbiAqIEJhc2UgY2xhc3MgZm9yIFNFQ1AyNTZLMSBleHRlbmRlZCBrZXlwYWlycy5cbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFNlY3AyNTZrMUV4dGVuZGVkS2V5UGFpciBpbXBsZW1lbnRzIEJhc2VLZXlQYWlyIHtcbiAgc3RhdGljIHRvS2V5UGFpcihoZE5vZGU6IEJJUDMySW50ZXJmYWNlKTogRUNQYWlySW50ZXJmYWNlIHtcbiAgICBpZiAoaGROb2RlLnByaXZhdGVLZXkpIHtcbiAgICAgIHJldHVybiBFQ1BhaXIuZnJvbVByaXZhdGVLZXkoaGROb2RlLnByaXZhdGVLZXkpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gRUNQYWlyLmZyb21QdWJsaWNLZXkoaGROb2RlLnB1YmxpY0tleSk7XG4gICAgfVxuICB9XG5cbiAgLy8gSW1wbGVtZW50YXRpb24gb2YgdGhlIEhEIHByb3RvY29sIChCSVAzMikuIE9ubHkgYXZhaWxhYmxlIHdoZW4gY3JlYXRpbmcgYSBLZXlQYWlyIGZyb20gYSBzZWVkLFxuICAvLyBvciBleHRlbmRlZCBrZXlzXG4gIHByb3RlY3RlZCBoZE5vZGU/OiBCSVAzMkludGVyZmFjZTtcbiAgcHJvdGVjdGVkIGtleVBhaXI6IEVDUGFpckludGVyZmFjZTtcbiAgcHJvdGVjdGVkIHNvdXJjZT86IEtleVBhaXJPcHRpb25zO1xuICAvKipcbiAgICogUHVibGljIGNvbnN0cnVjdG9yLiBCeSBkZWZhdWx0LCBjcmVhdGVzIGEga2V5IHBhaXIgd2l0aCBhIHJhbmRvbSBtYXN0ZXIgc2VlZC5cbiAgICpcbiAgICogQHBhcmFtIHtLZXlQYWlyT3B0aW9uc30gc291cmNlIEVpdGhlciBhIG1hc3RlciBzZWVkLCBhIHByaXZhdGUga2V5IChleHRlbmRlZCBvciByYXcpLCBvciBhIHB1YmxpYyBrZXlcbiAgICogICAgIChleHRlbmRlZCwgY29tcHJlc3NlZCwgb3IgdW5jb21wcmVzc2VkKVxuICAgKi9cbiAgcHJvdGVjdGVkIGNvbnN0cnVjdG9yKHNvdXJjZT86IEtleVBhaXJPcHRpb25zKSB7XG4gICAgdGhpcy5zb3VyY2UgPSBzb3VyY2U7XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIGNvbXByZXNzZWRcbiAgICogQHJldHVybiBCdWZmZXIgMzMgYnl0ZXMgaWYgYGNvbXByZXNzZWRgIGlzIHNldCwgNjUgYnl0ZXMgb3RoZXJ3aXNlLiBTdGFuZGFyZCBsaWJzZWNwMjU2azEgZm9ybWF0LlxuICAgKi9cbiAgZ2V0UHVibGljS2V5KHsgY29tcHJlc3NlZCB9OiB7IGNvbXByZXNzZWQ6IGJvb2xlYW4gfSk6IEJ1ZmZlciB7XG4gICAgcmV0dXJuIEVDUGFpci5mcm9tUHVibGljS2V5KHRoaXMua2V5UGFpcj8ucHVibGljS2V5LCB7IGNvbXByZXNzZWQgfSkucHVibGljS2V5O1xuICB9XG5cbiAgLyoqXG4gICAqIEByZXR1cm4gQnVmZmVyIDMyIGJ5dGVzIGluIHN0YW5kYXJkIGxpYnNlY3AyNTZrMSBmb3JtYXRcbiAgICovXG4gIGdldFByaXZhdGVLZXkoKTogQnVmZmVyIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5rZXlQYWlyPy5wcml2YXRlS2V5O1xuICB9XG5cbiAgLyoqXG4gICAqIEJ1aWxkIGEgSGllcmFyY2hpY2FsIERldGVybWluaXN0aWMgbm9kZSBvciBhbiBFQ1BhaXIgZnJvbSBhIHByaXZhdGUga2V5LlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gcHJ2IEFuIGV4dGVuZGVkIG9yIHJhdyBwcml2YXRlIGtleVxuICAgKi9cbiAgcmVjb3JkS2V5c0Zyb21Qcml2YXRlS2V5KHBydjogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKENyeXB0by5pc1ZhbGlkWHBydihwcnYpKSB7XG4gICAgICB0aGlzLmhkTm9kZSA9IGJpcDMyLmZyb21CYXNlNTgocHJ2KTtcbiAgICB9IGVsc2UgaWYgKENyeXB0by5pc1ZhbGlkUHJ2KHBydikpIHtcbiAgICAgIC8vIENhbm5vdCBjcmVhdGUgdGhlIEhEIG5vZGUgd2l0aG91dCB0aGUgY2hhaW4gY29kZSwgc28gY3JlYXRlIGEgcmVndWxhciBLZXkgQ2hhaW5cbiAgICAgIHRoaXMua2V5UGFpciA9IEVDUGFpci5mcm9tUHJpdmF0ZUtleShCdWZmZXIuZnJvbShwcnYsICdoZXgnKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVW5zdXBwb3J0ZWQgcHJpdmF0ZSBrZXknKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQnVpbGQgYSBIaWVyYXJjaGljYWwgRGV0ZXJtaW5pc3RpYyBub2RlIG9yIGFuIEVDUGFpciBmcm9tIGEgcHVibGljIGtleS5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IHB1YiAtIEFuIGV4dGVuZGVkLCBjb21wcmVzc2VkLCBvciB1bmNvbXByZXNzZWQgcHVibGljIGtleVxuICAgKi9cbiAgcmVjb3JkS2V5c0Zyb21QdWJsaWNLZXkocHViOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAoQ3J5cHRvLmlzVmFsaWRYcHViKHB1YikpIHtcbiAgICAgIHRoaXMuaGROb2RlID0gYmlwMzIuZnJvbUJhc2U1OChwdWIpO1xuICAgIH0gZWxzZSBpZiAoQ3J5cHRvLmlzVmFsaWRQdWIocHViKSkge1xuICAgICAgLy8gQ2Fubm90IGNyZWF0ZSBhbiBIRCBub2RlIHdpdGhvdXQgdGhlIGNoYWluIGNvZGUsIHNvIGNyZWF0ZSBhIHJlZ3VsYXIgS2V5IENoYWluXG4gICAgICB0aGlzLmtleVBhaXIgPSBFQ1BhaXIuZnJvbVB1YmxpY0tleShCdWZmZXIuZnJvbShwdWIsICdoZXgnKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVW5zdXBwb3J0ZWQgcHVibGljIGtleTogJyArIHB1Yik7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgZXh0ZW5kZWQgcHVibGljIGtleSwgYW5kIHRoZSBwcml2YXRlIGtleSBpZiBvbmUgaXMgYXZhaWxhYmxlLiBUaGlzIGlzIG9ubHkgcG9zc2libGVcbiAgICogd2hlbiB0aGUga2V5IHBhaXIgd2FzIGNyZWF0ZWQgZnJvbSBhIHNlZWQgb3IgZXh0ZW5kZWQga2V5cy5cbiAgICpcbiAgICogQHJldHVybnMge0V4dGVuZGVkS2V5c30gVGhlIEV4dGVuZGVkIGtleXMgb2JqZWN0XG4gICAqL1xuICBnZXRFeHRlbmRlZEtleXMoKTogRXh0ZW5kZWRLZXlzIHtcbiAgICBpZiAoIXRoaXMuaGROb2RlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Nhbm5vdCBnZXQgZXh0ZW5kZWQga2V5cycpO1xuICAgIH1cbiAgICBjb25zdCByZXN1bHQ6IEV4dGVuZGVkS2V5cyA9IHtcbiAgICAgIHhwdWI6IHRoaXMuaGROb2RlLm5ldXRlcmVkKCkudG9CYXNlNTgoKSxcbiAgICB9O1xuICAgIC8vIEEgbmV1dGVyZWQgSEQgbm9kZSBtZWFucyBpdCBvbmx5IGNvbnRhaW5zIHRoZSBwdWJsaWMga2V5IGluZm9ybWF0aW9uXG4gICAgaWYgKCF0aGlzLmhkTm9kZS5pc05ldXRlcmVkKCkpIHtcbiAgICAgIHJlc3VsdC54cHJ2ID0gdGhpcy5oZE5vZGUudG9CYXNlNTgoKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIGdldEFkZHJlc3MoZm9ybWF0PzogQWRkcmVzc0Zvcm1hdCk6IHN0cmluZyB7XG4gICAgdGhyb3cgbmV3IE5vdEltcGxlbWVudGVkRXJyb3IoJ2dldEFkZHJlc3Mgbm90IGltcGxlbWVudGVkJyk7XG4gIH1cblxuICBnZXRLZXlzKCk6IGFueSB7XG4gICAgdGhyb3cgbmV3IE5vdEltcGxlbWVudGVkRXJyb3IoJ2dldEtleXMgbm90IGltcGxlbWVudGVkJyk7XG4gIH1cbn1cbiJdfQ==
@@ -21,6 +21,7 @@ export * from './recovery';
21
21
  export * from './staking';
22
22
  export * from './trading';
23
23
  export * from './tss';
24
+ export { sendSignatureShare } from './tss';
24
25
  export * from './types';
25
26
  export * from './utils';
26
27
  export * from './wallet';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/bitgo/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,WAAW,MAAM,WAAW,CAAC;AACzC,OAAO,KAAK,GAAG,MAAM,OAAO,CAAC;AAE7B,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC;AACzB,cAAc,eAAe,CAAC;AAC9B,cAAc,QAAQ,CAAC;AACvB,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,UAAU,CAAC;AACzB,cAAc,sBAAsB,CAAC;AACrC,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,OAAO,KAAK,OAAO,MAAM,iBAAiB,CAAC;AAC3C,cAAc,uBAAuB,CAAC;AACtC,cAAc,UAAU,CAAC;AACzB,cAAc,mBAAmB,CAAC;AAClC,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,OAAO,CAAC;AACtB,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,OAAO,EAAE,WAAW,EAAE,CAAC;AACvB,OAAO,EAAE,GAAG,EAAE,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/bitgo/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,WAAW,MAAM,WAAW,CAAC;AACzC,OAAO,KAAK,GAAG,MAAM,OAAO,CAAC;AAE7B,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC;AACzB,cAAc,eAAe,CAAC;AAC9B,cAAc,QAAQ,CAAC;AACvB,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,UAAU,CAAC;AACzB,cAAc,sBAAsB,CAAC;AACrC,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,OAAO,KAAK,OAAO,MAAM,iBAAiB,CAAC;AAC3C,cAAc,uBAAuB,CAAC;AACtC,cAAc,UAAU,CAAC;AACzB,cAAc,mBAAmB,CAAC;AAClC,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,OAAO,CAAC;AACtB,OAAO,EAAE,kBAAkB,EAAE,MAAM,OAAO,CAAC;AAC3C,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,OAAO,EAAE,WAAW,EAAE,CAAC;AACvB,OAAO,EAAE,GAAG,EAAE,CAAC"}
@@ -36,7 +36,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
36
36
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
37
37
  };
38
38
  Object.defineProperty(exports, "__esModule", { value: true });
39
- exports.tss = exports.bitcoinUtil = exports.bitcoin = void 0;
39
+ exports.tss = exports.bitcoinUtil = exports.sendSignatureShare = exports.bitcoin = void 0;
40
40
  const bitcoinUtil = __importStar(require("./bitcoin"));
41
41
  exports.bitcoinUtil = bitcoinUtil;
42
42
  const tss = __importStar(require("./tss"));
@@ -62,8 +62,10 @@ __exportStar(require("./recovery"), exports);
62
62
  __exportStar(require("./staking"), exports);
63
63
  __exportStar(require("./trading"), exports);
64
64
  __exportStar(require("./tss"), exports);
65
+ var tss_1 = require("./tss");
66
+ Object.defineProperty(exports, "sendSignatureShare", { enumerable: true, get: function () { return tss_1.sendSignatureShare; } });
65
67
  __exportStar(require("./types"), exports);
66
68
  __exportStar(require("./utils"), exports);
67
69
  __exportStar(require("./wallet"), exports);
68
70
  __exportStar(require("./webhook"), exports);
69
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYml0Z28vaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsdURBQXlDO0FBNEJoQyxrQ0FBVztBQTNCcEIsMkNBQTZCO0FBNEJwQixrQkFBRztBQTFCWiw2Q0FBMkI7QUFDM0IsOENBQTRCO0FBQzVCLDRDQUEwQjtBQUMxQiw4Q0FBNEI7QUFDNUIsMkNBQXlCO0FBQ3pCLGdEQUE4QjtBQUM5Qix5Q0FBdUI7QUFDdkIsK0NBQTZCO0FBQzdCLGlEQUErQjtBQUMvQiwyQ0FBeUI7QUFDekIsdURBQXFDO0FBQ3JDLDZDQUEyQjtBQUMzQiw2Q0FBMkI7QUFDM0IsMkRBQTJDO0FBQzNDLHdEQUFzQztBQUN0QywyQ0FBeUI7QUFDekIsb0RBQWtDO0FBQ2xDLDZDQUEyQjtBQUMzQiw0Q0FBMEI7QUFDMUIsNENBQTBCO0FBQzFCLHdDQUFzQjtBQUN0QiwwQ0FBd0I7QUFDeEIsMENBQXdCO0FBQ3hCLDJDQUF5QjtBQUN6Qiw0Q0FBMEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBiaXRjb2luVXRpbCBmcm9tICcuL2JpdGNvaW4nO1xuaW1wb3J0ICogYXMgdHNzIGZyb20gJy4vdHNzJztcblxuZXhwb3J0ICogZnJvbSAnLi9iYXNlQ29pbic7XG5leHBvcnQgKiBmcm9tICcuL2JpcDMydXRpbCc7XG5leHBvcnQgKiBmcm9tICcuL2JpdGNvaW4nO1xuZXhwb3J0ICogZnJvbSAnLi9iaXRnb0Jhc2UnO1xuZXhwb3J0ICogZnJvbSAnLi9jb25maWcnO1xuZXhwb3J0ICogZnJvbSAnLi9jb2luRmFjdG9yeSc7XG5leHBvcnQgKiBmcm9tICcuL2VjZGgnO1xuZXhwb3J0ICogZnJvbSAnLi9lbnRlcnByaXNlJztcbmV4cG9ydCAqIGZyb20gJy4vZW52aXJvbm1lbnRzJztcbmV4cG9ydCAqIGZyb20gJy4vZXJyb3JzJztcbmV4cG9ydCAqIGZyb20gJy4vaW5zY3JpcHRpb25CdWlsZGVyJztcbmV4cG9ydCAqIGZyb20gJy4vaW50ZXJuYWwnO1xuZXhwb3J0ICogZnJvbSAnLi9rZXljaGFpbic7XG5leHBvcnQgKiBhcyBiaXRjb2luIGZyb20gJy4vbGVnYWN5Qml0Y29pbic7XG5leHBvcnQgKiBmcm9tICcuL2xpZ2h0bmluZy9jdXN0b2RpYWwnO1xuZXhwb3J0ICogZnJvbSAnLi9tYXJrZXQnO1xuZXhwb3J0ICogZnJvbSAnLi9wZW5kaW5nQXBwcm92YWwnO1xuZXhwb3J0ICogZnJvbSAnLi9yZWNvdmVyeSc7XG5leHBvcnQgKiBmcm9tICcuL3N0YWtpbmcnO1xuZXhwb3J0ICogZnJvbSAnLi90cmFkaW5nJztcbmV4cG9ydCAqIGZyb20gJy4vdHNzJztcbmV4cG9ydCAqIGZyb20gJy4vdHlwZXMnO1xuZXhwb3J0ICogZnJvbSAnLi91dGlscyc7XG5leHBvcnQgKiBmcm9tICcuL3dhbGxldCc7XG5leHBvcnQgKiBmcm9tICcuL3dlYmhvb2snO1xuZXhwb3J0IHsgYml0Y29pblV0aWwgfTtcbmV4cG9ydCB7IHRzcyB9O1xuIl19
71
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYml0Z28vaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsdURBQXlDO0FBNkJoQyxrQ0FBVztBQTVCcEIsMkNBQTZCO0FBNkJwQixrQkFBRztBQTNCWiw2Q0FBMkI7QUFDM0IsOENBQTRCO0FBQzVCLDRDQUEwQjtBQUMxQiw4Q0FBNEI7QUFDNUIsMkNBQXlCO0FBQ3pCLGdEQUE4QjtBQUM5Qix5Q0FBdUI7QUFDdkIsK0NBQTZCO0FBQzdCLGlEQUErQjtBQUMvQiwyQ0FBeUI7QUFDekIsdURBQXFDO0FBQ3JDLDZDQUEyQjtBQUMzQiw2Q0FBMkI7QUFDM0IsMkRBQTJDO0FBQzNDLHdEQUFzQztBQUN0QywyQ0FBeUI7QUFDekIsb0RBQWtDO0FBQ2xDLDZDQUEyQjtBQUMzQiw0Q0FBMEI7QUFDMUIsNENBQTBCO0FBQzFCLHdDQUFzQjtBQUN0Qiw2QkFBMkM7QUFBbEMseUdBQUEsa0JBQWtCLE9BQUE7QUFDM0IsMENBQXdCO0FBQ3hCLDBDQUF3QjtBQUN4QiwyQ0FBeUI7QUFDekIsNENBQTBCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgYml0Y29pblV0aWwgZnJvbSAnLi9iaXRjb2luJztcbmltcG9ydCAqIGFzIHRzcyBmcm9tICcuL3Rzcyc7XG5cbmV4cG9ydCAqIGZyb20gJy4vYmFzZUNvaW4nO1xuZXhwb3J0ICogZnJvbSAnLi9iaXAzMnV0aWwnO1xuZXhwb3J0ICogZnJvbSAnLi9iaXRjb2luJztcbmV4cG9ydCAqIGZyb20gJy4vYml0Z29CYXNlJztcbmV4cG9ydCAqIGZyb20gJy4vY29uZmlnJztcbmV4cG9ydCAqIGZyb20gJy4vY29pbkZhY3RvcnknO1xuZXhwb3J0ICogZnJvbSAnLi9lY2RoJztcbmV4cG9ydCAqIGZyb20gJy4vZW50ZXJwcmlzZSc7XG5leHBvcnQgKiBmcm9tICcuL2Vudmlyb25tZW50cyc7XG5leHBvcnQgKiBmcm9tICcuL2Vycm9ycyc7XG5leHBvcnQgKiBmcm9tICcuL2luc2NyaXB0aW9uQnVpbGRlcic7XG5leHBvcnQgKiBmcm9tICcuL2ludGVybmFsJztcbmV4cG9ydCAqIGZyb20gJy4va2V5Y2hhaW4nO1xuZXhwb3J0ICogYXMgYml0Y29pbiBmcm9tICcuL2xlZ2FjeUJpdGNvaW4nO1xuZXhwb3J0ICogZnJvbSAnLi9saWdodG5pbmcvY3VzdG9kaWFsJztcbmV4cG9ydCAqIGZyb20gJy4vbWFya2V0JztcbmV4cG9ydCAqIGZyb20gJy4vcGVuZGluZ0FwcHJvdmFsJztcbmV4cG9ydCAqIGZyb20gJy4vcmVjb3ZlcnknO1xuZXhwb3J0ICogZnJvbSAnLi9zdGFraW5nJztcbmV4cG9ydCAqIGZyb20gJy4vdHJhZGluZyc7XG5leHBvcnQgKiBmcm9tICcuL3Rzcyc7XG5leHBvcnQgeyBzZW5kU2lnbmF0dXJlU2hhcmUgfSBmcm9tICcuL3Rzcyc7XG5leHBvcnQgKiBmcm9tICcuL3R5cGVzJztcbmV4cG9ydCAqIGZyb20gJy4vdXRpbHMnO1xuZXhwb3J0ICogZnJvbSAnLi93YWxsZXQnO1xuZXhwb3J0ICogZnJvbSAnLi93ZWJob29rJztcbmV4cG9ydCB7IGJpdGNvaW5VdGlsIH07XG5leHBvcnQgeyB0c3MgfTtcbiJdfQ==
@@ -53,7 +53,7 @@ exports.generateGPGKeyPair = generateGPGKeyPair;
53
53
  const pgp = __importStar(require("openpgp"));
54
54
  const openpgp_1 = require("openpgp");
55
55
  const _ = __importStar(require("lodash"));
56
- const utxo_lib_1 = require("@bitgo-beta/utxo-lib");
56
+ const secp256k1_1 = require("@bitgo-beta/secp256k1");
57
57
  const crypto_1 = __importDefault(require("crypto"));
58
58
  const sodium = require('libsodium-wrappers-sumo');
59
59
  /**
@@ -122,7 +122,7 @@ async function verifyShareProof(senderPubKey, privateShareProof, uValue, algo) {
122
122
  }
123
123
  else if (algo === 'ecdsa') {
124
124
  const decodedUValueProof = Buffer.from(proofSubkeys.keyPacket.publicParams['Q']).toString('hex');
125
- const rawUValueProof = utxo_lib_1.ecc.pointFromScalar(Buffer.from(uValue, 'hex'), false);
125
+ const rawUValueProof = secp256k1_1.ecc.pointFromScalar(Buffer.from(uValue, 'hex'), false);
126
126
  return rawUValueProof !== null && decodedUValueProof === Buffer.from(rawUValueProof).toString('hex');
127
127
  }
128
128
  else {
@@ -240,7 +240,7 @@ async function createShareProof(privateArmor, uValue, algo) {
240
240
  oid = [0x2b, 0x81, 0x04, 0x00, 0x0a];
241
241
  // @ts-ignore - same as above
242
242
  oid.write = () => new Uint8Array(Buffer.from('052b8104000a', 'hex'));
243
- Q = utxo_lib_1.ecc.pointFromScalar(new Uint8Array(Buffer.from(uValue, 'hex')), false);
243
+ Q = secp256k1_1.ecc.pointFromScalar(new Uint8Array(Buffer.from(uValue, 'hex')), false);
244
244
  }
245
245
  secretSubkeyPacket.publicParams = {
246
246
  oid,
@@ -410,4 +410,4 @@ async function generateGPGKeyPair(keyCurve, username, email) {
410
410
  });
411
411
  return gpgKey;
412
412
  }
413
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3BlbmdwZ1V0aWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2JpdGdvL3V0aWxzL29wZW5ncGdVdGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsc0RBQXNEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQXFDdEQsOENBV0M7QUFVRCw0REFVQztBQU1ELDhDQU1DO0FBV0QsNENBeUJDO0FBVUQsc0RBcUJDO0FBVUQsc0RBdURDO0FBYUQsNENBNkRDO0FBWUQsa0NBY0M7QUFRRCxnREFtQkM7QUFTRCw4Q0FjQztBQVNELDRCQVdDO0FBU0QsMENBb0JDO0FBU0QsZ0RBc0JDO0FBeGJELDZDQUErQjtBQUMvQixxQ0FXaUI7QUFDakIsMENBQTRCO0FBQzVCLG1EQUF3RDtBQUV4RCxvREFBNEI7QUFFNUIsTUFBTSxNQUFNLEdBQUcsT0FBTyxDQUFDLHlCQUF5QixDQUFDLENBQUM7QUFZbEQ7Ozs7R0FJRztBQUNJLEtBQUssVUFBVSxpQkFBaUIsQ0FBQyxLQUFnQjtJQUN0RCxNQUFNLFNBQVMsR0FBRyxNQUFNLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztJQUMvQyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDcEQsTUFBTSxJQUFJLEtBQUssQ0FBQyxzRUFBc0UsQ0FBQyxDQUFDO0lBQzFGLENBQUM7SUFFRCxNQUFNLGlCQUFpQixHQUFHLFNBQVMsQ0FBQyxHQUFHLENBQUMsY0FBd0IsQ0FBQztJQUNqRSxNQUFNLHNCQUFzQixHQUFHLFNBQVMsQ0FBQyxHQUFHLENBQUMsbUJBQW1CO1FBQzlELENBQUMsQ0FBQyxNQUFNLElBQUEsaUJBQU8sRUFBQyxFQUFFLFVBQVUsRUFBRSxTQUFTLENBQUMsR0FBRyxDQUFDLG1CQUE2QixFQUFFLENBQUM7UUFDNUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQztJQUNk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TUc7QUFDSSxLQUFLLFVBQVUsa0JBQWtCLENBQ3RDLFFBQStCLEVBQy9CLFFBQTZCLEVBQzdCLEtBQTBCO0lBRTFCLE1BQU0sZUFBZSxHQUFHLGdCQUFNLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMvRCxRQUFRLEdBQUcsUUFBUSxJQUFJLGVBQWUsQ0FBQztJQUN2QyxLQUFLLEdBQUcsS0FBSyxJQUFJLFFBQVEsZUFBZSxJQUFJLGVBQWUsTUFBTSxDQUFDO0lBRWxFLHVDQUF1QztJQUN2QyxHQUFHLENBQUMsTUFBTSxDQUFDLFlBQVksR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDO0lBQ3BDLE1BQU0sTUFBTSxHQUFHLE1BQU0sR0FBRyxDQUFDLFdBQVcsQ0FBQztRQUNuQyxPQUFPLEVBQUU7WUFDUDtnQkFDRSxJQUFJLEVBQUUsUUFBUTtnQkFDZCxLQUFLO2FBQ047U0FDRjtRQUNELEtBQUssRUFBRSxRQUFRO0tBQ2hCLENBQUMsQ0FBQztJQUVILE9BQU8sTUFBTSxDQUFDO0FBQ2hCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXRzLWNvbW1lbnQgKi9cblxuaW1wb3J0ICogYXMgcGdwIGZyb20gJ29wZW5wZ3AnO1xuaW1wb3J0IHtcbiAgY3JlYXRlTWVzc2FnZSxcbiAgZGVjcnlwdCxcbiAgZW5jcnlwdCxcbiAgS2V5LFxuICByZWFkS2V5LFxuICByZWFkTWVzc2FnZSxcbiAgcmVhZFByaXZhdGVLZXksXG4gIHJlYWRTaWduYXR1cmUsXG4gIHNpZ24sXG4gIHZlcmlmeSxcbn0gZnJvbSAnb3BlbnBncCc7XG5pbXBvcnQgKiBhcyBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBlY2MgYXMgc2VjcDI1NmsxIH0gZnJvbSAnQGJpdGdvLWJldGEvdXR4by1saWInO1xuaW1wb3J0IHsgQml0R29CYXNlIH0gZnJvbSAnLi4vYml0Z29CYXNlJztcbmltcG9ydCBjcnlwdG8gZnJvbSAnY3J5cHRvJztcblxuY29uc3Qgc29kaXVtID0gcmVxdWlyZSgnbGlic29kaXVtLXdyYXBwZXJzLXN1bW8nKTtcblxuZXhwb3J0IHR5cGUgS2V5VmFsaWRpdHlEaWN0ID0ge1xuICBrZXlJRDogcGdwLktleUlEO1xuICB2YWxpZDogYm9vbGVhbiB8IG51bGw7XG59W107XG5cbmV4cG9ydCB0eXBlIEF1dGhFbmNNZXNzYWdlID0ge1xuICBlbmNyeXB0ZWRNZXNzYWdlOiBzdHJpbmc7XG4gIHNpZ25hdHVyZTogc3RyaW5nO1xufTtcblxuLyoqXG4gKiBGZXRjaGVzIEJpdEdvJ3MgcHVibGljIGdwZyBrZXkgdXNlZCBpbiBNUEMgZmxvd3NcbiAqIEBwYXJhbSB7Qml0R29CYXNlfSBiaXRnbyBCaXRHbyBvYmplY3RcbiAqIEByZXR1cm4ge0tleX0gcHVibGljIGdwZyBrZXlcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldEJpdGdvR3BnUHViS2V5KGJpdGdvOiBCaXRHb0Jhc2UpOiBQcm9taXNlPHsgbXBjVjE6IEtleTsgbXBjVjI6IEtleSB8IHVuZGVmaW5lZCB9PiB7XG4gIGNvbnN0IGNvbnN0YW50cyA9IGF3YWl0IGJpdGdvLmZldGNoQ29uc3RhbnRzKCk7XG4gIGlmICghY29uc3RhbnRzLm1wYyB8fCAhY29uc3RhbnRzLm1wYy5iaXRnb1B1YmxpY0tleSkge1xuICAgIHRocm93IG5ldyBFcnJvcignVW5hYmxlIHRvIGNyZWF0ZSBNUEMga2V5cyAtIGJpdGdvUHVibGljS2V5IGlzIG1pc3NpbmcgZnJvbSBjb25zdGFudHMnKTtcbiAgfVxuXG4gIGNvbnN0IGJpdGdvUHVibGljS2V5U3RyID0gY29uc3RhbnRzLm1wYy5iaXRnb1B1YmxpY0tleSBhcyBzdHJpbmc7XG4gIGNvbnN0IGJpdGdvTVBDdjJQdWJsaWNLZXlTdHIgPSBjb25zdGFudHMubXBjLmJpdGdvTVBDdjJQdWJsaWNLZXlcbiAgICA/IGF3YWl0IHJlYWRLZXkoeyBhcm1vcmVkS2V5OiBjb25zdGFudHMubXBjLmJpdGdvTVBDdjJQdWJsaWNLZXkgYXMgc3RyaW5nIH0pXG4gICAgOiB1bmRlZmluZWQ7XG4gIHJldHVybiB7IG1wY1YxOiBhd2FpdCByZWFkS2V5KHsgYXJtb3JlZEtleTogYml0Z29QdWJsaWNLZXlTdHIgfSksIG1wY1YyOiBiaXRnb01QQ3YyUHVibGljS2V5U3RyIH07XG59XG5cbi8qKlxuICogVmVyaWZpZXMgdGhlIHByaW1hcnkgdXNlciBvbiBhIEdQRyBrZXkgdXNpbmcgYSByZWZlcmVuY2Uga2V5IHJlcHJlc2VudGluZyB0aGUgdXNlciB0byBiZSBjaGVja2VkLlxuICogQWxsb3dzIGEgdmVyaWZpY2F0aW9uIHdpdGhvdXQgYSBkYXRlIGNoZWNrIGJ5IHdyYXBwaW5nIHZlcmlmeVByaW1hcnlVc2VyIG9mIG9wZW5wZ3AuXG4gKiBAcGFyYW0ge0tleX0gcHViS2V5IGdwZyBrZXkgdG8gY2hlY2sgdGhlIHByaW1hcnkgdXNlciBvZi5cbiAqIEBwYXJhbSB7S2V5fSBwcmltYXJ5VXNlciBncGcga2V5IG9mIHRoZSB1c2VyIHRvIGNoZWNrLlxuICogQHBhcmFtIHtib29sZWFufSBjaGVja0RhdGVzIElmIGZhbHNlLCBkaXNhYmxlIGRhdGUgY2hlY2tzIGluIHRoZSBvcGVucGdwIGNhbGwgdG8gY2hlY2sgdGhlIHByaW1hcnkgdXNlci5cbiAqIEByZXR1cm4ge0tleVZhbGlkaXR5RGljdH0gbGlzdCBvZiB1c2VycyBjaGVja2VkIGFuZCB3aGV0aGVyIGVhY2ggcGFzc2VkIGFzIGEgcHJpbWFyeSB1c2VyIGluIHB1YktleSBvciBub3QuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB2ZXJpZnlQcmltYXJ5VXNlcldyYXBwZXIoXG4gIHB1YktleTogS2V5LFxuICBwcmltYXJ5VXNlcjogS2V5LFxuICBjaGVja0RhdGVzOiBib29sZWFuXG4pOiBQcm9taXNlPEtleVZhbGlkaXR5RGljdD4ge1xuICBpZiAoY2hlY2tEYXRlcykge1xuICAgIHJldHVybiBhd2FpdCBwdWJLZXkudmVyaWZ5UHJpbWFyeVVzZXIoW3ByaW1hcnlVc2VyXSk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGF3YWl0IHB1YktleS52ZXJpZnlQcmltYXJ5VXNlcihbcHJpbWFyeVVzZXJdLCBudWxsIGFzIHVua25vd24gYXMgdW5kZWZpbmVkKTtcbiAgfVxufVxuXG4vKipcbiAqIEZldGNoZXMgVHJ1c3QgcHViIGtleSBzdHJpbmdcbiAqIEBwYXJhbSBiaXRnb1xuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0VHJ1c3RHcGdQdWJLZXkoYml0Z286IEJpdEdvQmFzZSk6IFByb21pc2U8S2V5PiB7XG4gIGNvbnN0IGNvbnN0YW50cyA9IGF3YWl0IGJpdGdvLmZldGNoQ29uc3RhbnRzKCk7XG4gIGlmICghY29uc3RhbnRzLnRydXN0UHViS2V5KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdVbmFibGUgdG8gZ2V0IHRydXN0UHViS2V5Jyk7XG4gIH1cbiAgcmV0dXJuIHJlYWRLZXkoeyBhcm1vcmVkS2V5OiBjb25zdGFudHMudHJ1c3RQdWJLZXkgfSk7XG59XG5cbi8qKlxuICogVmVyaWZ5IGFuIEVkZHNhIG9yIEVjZHNhIEtleVNoYXJlIFByb29mLlxuICpcbiAqIEBwYXJhbSBzZW5kZXJQdWJLZXkgcHVibGljIGtleSBvZiB0aGUgc2VuZGVyIG9mIHRoZSBwcml2YXRlU2hhcmVQcm9vZlxuICogQHBhcmFtIHByaXZhdGVTaGFyZVByb29mIHUgdmFsdWUgcHJvb2ZcbiAqIEBwYXJhbSB1VmFsdWUgdSB2YWx1ZSBmcm9tIGFuIEVkZHNhIGtleXNoYXJlXG4gKiBAcGFyYW0gYWxnb1xuICogQHJldHVybiB7Ym9vbGVhbn0gd2hldGhlciB1VmFsdWUgcHJvb2YgYWN0dWFsbHkgd2FzIHNpZ25lZCBieSBzZW5kZXIgYXMgcGFydCBvZiB0aGVpciBzdWJrZXlzXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB2ZXJpZnlTaGFyZVByb29mKFxuICBzZW5kZXJQdWJLZXk6IHN0cmluZyxcbiAgcHJpdmF0ZVNoYXJlUHJvb2Y6IHN0cmluZyxcbiAgdVZhbHVlOiBzdHJpbmcsXG4gIGFsZ286ICdlZGRzYScgfCAnZWNkc2EnXG4pOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgY29uc3QgZGVjb2RlZFByb29mID0gYXdhaXQgcGdwLnJlYWRLZXkoeyBhcm1vcmVkS2V5OiBwcml2YXRlU2hhcmVQcm9vZiB9KTtcbiAgY29uc3Qgc2VuZGVyR3BnS2V5ID0gYXdhaXQgcGdwLnJlYWRLZXkoeyBhcm1vcmVkS2V5OiBzZW5kZXJQdWJLZXkgfSk7XG4gIGlmICghKGF3YWl0IHZlcmlmeVByaW1hcnlVc2VyV3JhcHBlcihkZWNvZGVkUHJvb2YsIHNlbmRlckdwZ0tleSwgdHJ1ZSkpWzBdLnZhbGlkKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGNvbnN0IHByb29mU3Via2V5cyA9IGRlY29kZWRQcm9vZi5nZXRTdWJrZXlzKClbMV07XG4gIGlmIChhbGdvID09PSAnZWRkc2EnKSB7XG4gICAgY29uc3QgZGVjb2RlZFVWYWx1ZVByb29mID0gQnVmZmVyLmZyb20ocHJvb2ZTdWJrZXlzLmtleVBhY2tldC5wdWJsaWNQYXJhbXNbJ1EnXS5zbGljZSgxKSkudG9TdHJpbmcoJ2hleCcpO1xuICAgIGNvbnN0IHJhd1VWYWx1ZVByb29mID0gQnVmZmVyLmZyb20oXG4gICAgICBzb2RpdW0uY3J5cHRvX3NjYWxhcm11bHRfZWQyNTUxOV9iYXNlX25vY2xhbXAoQnVmZmVyLmZyb20odVZhbHVlLCAnaGV4JykpXG4gICAgKS50b1N0cmluZygnaGV4Jyk7XG4gICAgcmV0dXJuIGRlY29kZWRVVmFsdWVQcm9vZiA9PT0gcmF3VVZhbHVlUHJvb2Y7XG4gIH0gZWxzZSBpZiAoYWxnbyA9PT0gJ2VjZHNhJykge1xuICAgIGNvbnN0IGRlY29kZWRVVmFsdWVQcm9vZiA9IEJ1ZmZlci5mcm9tKHByb29mU3Via2V5cy5rZXlQYWNrZXQucHVibGljUGFyYW1zWydRJ10pLnRvU3RyaW5nKCdoZXgnKTtcbiAgICBjb25zdCByYXdVVmFsdWVQcm9vZiA9IHNlY3AyNTZrMS5wb2ludEZyb21TY2FsYXIoQnVmZmVyLmZyb20odVZhbHVlLCAnaGV4JyksIGZhbHNlKTtcbiAgICByZXR1cm4gcmF3VVZhbHVlUHJvb2YgIT09IG51bGwgJiYgZGVjb2RlZFVWYWx1ZVByb29mID09PSBCdWZmZXIuZnJvbShyYXdVVmFsdWVQcm9vZikudG9TdHJpbmcoJ2hleCcpO1xuICB9IGVsc2Uge1xuICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBhbGdvcml0aG0gcHJvdmlkZWQnKTtcbiAgfVxufVxuXG4vKipcbiAqIFZlcmlmeSBhIHNoYXJlZCBkYXRhIHByb29mLlxuICpcbiAqIEBwYXJhbSBzZW5kZXJQdWJLZXlBcm0gcHVibGljIGtleSBvZiB0aGUgc2lnbmVyIG9mIHRoZSBrZXkgd2l0aCBwcm9vZiBkYXRhXG4gKiBAcGFyYW0ga2V5V2l0aE5vdGF0aW9uIHNpZ25lZCByZWNpZXZlciBrZXkgd2l0aCBub3RhdGlvbiBkYXRhXG4gKiBAcGFyYW0gZGF0YVRvVmVyaWZ5IGRhdGEgdG8gYmUgY2hlY2tlZCBhZ2FpbnN0IG5vdGF0aW9uIGRhdGEgaW4gdGhlIHNpZ25lZCBrZXlcbiAqIEByZXR1cm4ge2Jvb2xlYW59IHdoZXRoZXIgcHJvb2YgaXMgdmFsaWRcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHZlcmlmeVNoYXJlZERhdGFQcm9vZihcbiAgc2VuZGVyUHViS2V5QXJtOiBzdHJpbmcsXG4gIGtleVdpdGhOb3RhdGlvbjogc3RyaW5nLFxuICBkYXRhVG9WZXJpZnk6IHsgbmFtZTogc3RyaW5nOyB2YWx1ZTogc3RyaW5nIH1bXVxuKTogUHJvbWlzZTxib29sZWFuPiB7XG4gIGNvbnN0IHNlbmRlclB1YktleSA9IGF3YWl0IHBncC5yZWFkS2V5KHsgYXJtb3JlZEtleTogc2VuZGVyUHViS2V5QXJtIH0pO1xuICBjb25zdCBzaWduZWRLZXkgPSBhd2FpdCBwZ3AucmVhZEtleSh7IGFybW9yZWRLZXk6IGtleVdpdGhOb3RhdGlvbiB9KTtcbiAgaWYgKFxuICAgICEoYXdhaXQgdmVyaWZ5UHJpbWFyeVVzZXJXcmFwcGVyKHNpZ25lZEtleSwgc2VuZGVyUHViS2V5LCBmYWxzZSkudGhlbigodmFsdWVzKSA9PlxuICAgICAgXy5zb21lKHZhbHVlcywgKHZhbHVlKSA9PiB2YWx1ZS52YWxpZClcbiAgICApKVxuICApIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgY29uc3QgcHJpbWFyeVVzZXIgPSBhd2FpdCBzaWduZWRLZXkuZ2V0UHJpbWFyeVVzZXIobnVsbCBhcyB1bmtub3duIGFzIHVuZGVmaW5lZCk7XG4gIGNvbnN0IGFueUludmFsaWRQcm9vZiA9IF8uc29tZShcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgcHJpbWFyeVVzZXIudXNlci5vdGhlckNlcnRpZmljYXRpb25zWzBdLnJhd05vdGF0aW9ucyxcbiAgICAobm90YXRpb24pID0+IGRhdGFUb1ZlcmlmeS5maW5kKChpKSA9PiBpLm5hbWUgPT09IG5vdGF0aW9uLm5hbWUpPy52YWx1ZSAhPT0gQnVmZmVyLmZyb20obm90YXRpb24udmFsdWUpLnRvU3RyaW5nKClcbiAgKTtcbiAgcmV0dXJuICFhbnlJbnZhbGlkUHJvb2Y7XG59XG5cbi8qKlxuICogQ3JlYXRlcyBhIHByb29mIHRocm91Z2ggYWRkaW5nIG5vdGF0aW9uIGRhdGEgdG8gYSBHUEcgY2VyaXRpZnlpbmcgc2lnbmF0dXJlLlxuICpcbiAqIEBwYXJhbSBwcml2YXRlS2V5QXJtb3JlZCBncGcgcHJpdmF0ZSBrZXkgaW4gYXJtb3IgZm9ybWF0IG9mIHRoZSBzZW5kZXJcbiAqIEBwYXJhbSBwdWJsaWNLZXlUb0NlcnRBcm1vcmVkIGdwZyBwdWJsaWMga2V5IGluIGFybW9yIGZvbXJhdCBvZiB0aGUgcmVjaWV2ZXJcbiAqIEBwYXJhbSBub3RhdGlvbnMgZGF0YSB0byBiZSBwcm9vZmVkXG4gKiBAcmV0dXJuIHtzdHJpbmd9IGtleXNoYXJlIHByb29mXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjcmVhdGVTaGFyZWREYXRhUHJvb2YoXG4gIHByaXZhdGVLZXlBcm1vcmVkOiBzdHJpbmcsXG4gIHB1YmxpY0tleVRvQ2VydEFybW9yZWQ6IHN0cmluZyxcbiAgbm90YXRpb25zOiB7IG5hbWU6IHN0cmluZzsgdmFsdWU6IHN0cmluZyB9W11cbik6IFByb21pc2U8c3RyaW5nPiB7XG4gIGNvbnN0IGNlcnRpZnlpbmdLZXkgPSBhd2FpdCBwZ3AucmVhZEtleSh7IGFybW9yZWRLZXk6IHByaXZhdGVLZXlBcm1vcmVkIH0pO1xuICBjb25zdCBwdWJsaWNLZXlUb0NlcnQgPSBhd2FpdCBwZ3AucmVhZEtleSh7IGFybW9yZWRLZXk6IHB1YmxpY0tleVRvQ2VydEFybW9yZWQgfSk7XG4gIGNvbnN0IGRhdGVUaW1lID0gbmV3IERhdGUoKTtcbiAgLy8gVXNlcklkIFBhY2tldC5cbiAgY29uc3QgdXNlcklkUGt0ID0gbmV3IHBncC5Vc2VySURQYWNrZXQoKTtcbiAgY29uc3QgcHJpbWFyeVVzZXIgPSBhd2FpdCBwdWJsaWNLZXlUb0NlcnQuZ2V0UHJpbWFyeVVzZXIobnVsbCBhcyB1bmtub3duIGFzIHVuZGVmaW5lZCk7XG4gIC8vIEB0cy1pZ25vcmVcbiAgdXNlcklkUGt0LnVzZXJJRCA9IHByaW1hcnlVc2VyLnVzZXIudXNlcklELnVzZXJJRDtcbiAgLy8gU2lnbmF0dXJlIHBhY2tldC5cbiAgY29uc3Qgc2lnbmF0dXJlUGFja2V0ID0gbmV3IHBncC5TaWduYXR1cmVQYWNrZXQoKTtcbiAgc2lnbmF0dXJlUGFja2V0LnNpZ25hdHVyZVR5cGUgPSBwZ3AuZW51bXMuc2lnbmF0dXJlLmNlcnRQb3NpdGl2ZTtcbiAgc2lnbmF0dXJlUGFja2V0LnB1YmxpY0tleUFsZ29yaXRobSA9IHBncC5lbnVtcy5wdWJsaWNLZXkuZWNkc2E7XG4gIHNpZ25hdHVyZVBhY2tldC5oYXNoQWxnb3JpdGhtID0gcGdwLmVudW1zLmhhc2guc2hhMjU2O1xuICAvLyBAdHMtaWdub3JlXG4gIHNpZ25hdHVyZVBhY2tldC5pc3N1ZXJGaW5nZXJwcmludCA9IGF3YWl0IHByaW1hcnlVc2VyLnVzZXIubWFpbktleS5rZXlQYWNrZXQuZ2V0RmluZ2VycHJpbnRCeXRlcygpO1xuICAvLyBAdHMtaWdub3JlXG4gIHNpZ25hdHVyZVBhY2tldC5pc3N1ZXJLZXlJRCA9IHByaW1hcnlVc2VyLnVzZXIubWFpbktleS5rZXlQYWNrZXQua2V5SUQ7XG4gIC8vIEB0cy1pZ25vcmVcbiAgc2lnbmF0dXJlUGFja2V0LnNpZ25pbmdLZXlJRCA9IHByaW1hcnlVc2VyLnVzZXIubWFpbktleS5rZXlQYWNrZXQua2V5SUQ7XG4gIC8vIEB0cy1pZ25vcmVcbiAgc2lnbmF0dXJlUGFja2V0LnNpZ25lcnNVc2VySUQgPSBwcmltYXJ5VXNlci51c2VyLnVzZXJJRC51c2VySUQ7XG4gIC8vIEB0cy1pZ25vcmVcbiAgc2lnbmF0dXJlUGFja2V0LmZlYXR1cmVzID0gWzFdO1xuICBub3RhdGlvbnMuZm9yRWFjaCgoeyBuYW1lLCB2YWx1ZSB9KSA9PiB7XG4gICAgc2lnbmF0dXJlUGFja2V0LnJhd05vdGF0aW9ucy5wdXNoKHtcbiAgICAgIG5hbWU6IG5hbWUsXG4gICAgICB2YWx1ZTogbmV3IFVpbnQ4QXJyYXkoQnVmZmVyLmZyb20odmFsdWUpKSxcbiAgICAgIGh1bWFuUmVhZGFibGU6IHRydWUsXG4gICAgICBjcml0aWNhbDogZmFsc2UsXG4gICAgfSk7XG4gIH0pO1xuXG4gIC8vIFByZXBhcmUgc2lnbmluZyBkYXRhLlxuICBjb25zdCBrZXlkYXRhVG9TaWduID0ge307XG4gIC8vIEB0cy1pZ25vcmVcbiAga2V5ZGF0YVRvU2lnbi5rZXkgPSBwdWJsaWNLZXlUb0NlcnQua2V5UGFja2V0O1xuICAvLyBAdHMtaWdub3JlXG4gIGtleWRhdGFUb1NpZ24udXNlcklEID0gdXNlcklkUGt0O1xuXG4gIC8vIFNpZ24gdGhlIGRhdGEgKGNyZWF0ZSBjZXJ0aWZpY2F0aW9uKS5cbiAgLy8gQHRzLWlnbm9yZVxuICBhd2FpdCBzaWduYXR1cmVQYWNrZXQuc2lnbihjZXJ0aWZ5aW5nS2V5LmtleVBhY2tldCwga2V5ZGF0YVRvU2lnbiwgZGF0ZVRpbWUpO1xuXG4gIC8vIEFzc2VtYmxlIHBhY2tldHMgdG9nZXRoZXIuXG4gIGNvbnN0IHB1YmxpY0tleVRvQ2VydFBrdHMgPSBwdWJsaWNLZXlUb0NlcnQudG9QYWNrZXRMaXN0KCk7XG4gIGNvbnN0IG5ld0tleVBrdExpc3QgPSBuZXcgcGdwLlBhY2tldExpc3QoKTtcbiAgbmV3S2V5UGt0TGlzdC5wdXNoKC4uLnB1YmxpY0tleVRvQ2VydFBrdHMuc2xpY2UoMCwgMyksIHNpZ25hdHVyZVBhY2tldCwgLi4ucHVibGljS2V5VG9DZXJ0UGt0cy5zbGljZSgzKSk7XG4gIC8vIEB0cy1pZ25vcmVcbiAgY29uc3QgbmV3UHViS2V5ID0gbmV3IHBncC5QdWJsaWNLZXkobmV3S2V5UGt0TGlzdCk7XG4gIHJldHVybiBuZXdQdWJLZXkuYXJtb3IoKS5yZXBsYWNlKC9cXHJcXG4vZywgJ1xcbicpO1xufVxuXG4vKipcbiAqIENyZWF0ZXMgYSBLZXlTaGFyZSBQcm9vZiBiYXNlZCBvbiBnaXZlbiBhbGdvLlxuICpcbiAqIENyZWF0ZXMgYW4gRWREU0EgS2V5U2hhcmUgUHJvb2YgYnkgYXBwZW5kaW5nIGFuIGVkMjU1MTkgc3Via2V5IChhdXRoKSB0byBhbiBhcm1vcmVkIGdwZyBwcml2YXRlIGtleS5cbiAqIENyZWF0ZXMgYW4gRUNEU0EgS2V5U2hhcmUgUHJvb2YgYnkgQXBwZW5kIGEgc2VjcDI1NmsxIHN1YmtleSAoYXV0aCkgdG8gYSBQR1Aga2V5Y2hhaW4uXG4gKlxuICogQHBhcmFtIHByaXZhdGVBcm1vciBncGcgcHJpdmF0ZSBrZXkgaW4gYXJtb3IgZm9ybWF0XG4gKiBAcGFyYW0gdVZhbHVlIHUgdmFsdWUgZnJvbSBhbiBFZGRzYSBrZXlzaGFyZVxuICogQHBhcmFtIGFsZ28gYWxnbyB0byB1c2UsIGVkZHNhIG9yIGVjZHNhXG4gKiBAcmV0dXJuIHtzdHJpbmd9IGtleXNoYXJlIHByb29mXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjcmVhdGVTaGFyZVByb29mKHByaXZhdGVBcm1vcjogc3RyaW5nLCB1VmFsdWU6IHN0cmluZywgYWxnbzogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgY29uc3QgcHJpdmF0ZUtleSA9IGF3YWl0IHJlYWRLZXkoeyBhcm1vcmVkS2V5OiBwcml2YXRlQXJtb3IgfSk7XG4gIGNvbnN0IGRhdGVUaW1lID0gbmV3IERhdGUoKTtcbiAgLy8gQHRzLWlnbm9yZSAtIHR5cGUgaW5jb25zaXN0ZW5jeSwgdGhpcyBjdG9yIHN1cHBvcnRzIGEgZGF0ZSBwYXJhbTogaHR0cHM6Ly9kb2NzLm9wZW5wZ3Bqcy5vcmcvU2VjcmV0U3Via2V5UGFja2V0Lmh0bWxcbiAgY29uc3Qgc2VjcmV0U3Via2V5UGFja2V0ID0gbmV3IHBncC5TZWNyZXRTdWJrZXlQYWNrZXQoZGF0ZVRpbWUpO1xuICBzZWNyZXRTdWJrZXlQYWNrZXQuYWxnb3JpdGhtID0gcGdwLmVudW1zLnB1YmxpY0tleVthbGdvXTtcbiAgLy8gQHRzLWlnbm9yZSAtIHNhbWUgYXMgYWJvdmVcbiAgc2VjcmV0U3Via2V5UGFja2V0LmlzRW5jcnlwdGVkID0gZmFsc2U7XG4gIGxldCBvaWQ7XG4gIGxldCBRO1xuICBpZiAoYWxnbyA9PT0gJ2VkZHNhJykge1xuICAgIGF3YWl0IHNvZGl1bS5yZWFkeTtcbiAgICBjb25zdCBzdWJLZXlWYWwgPSBCdWZmZXIuZnJvbShcbiAgICAgIHNvZGl1bS5jcnlwdG9fc2NhbGFybXVsdF9lZDI1NTE5X2Jhc2Vfbm9jbGFtcChCdWZmZXIuZnJvbSh1VmFsdWUsICdoZXgnKSwgJ3VpbnQ4YXJyYXknKVxuICAgICk7XG4gICAgLy8gU3ViLWtleSAoZW5jcnlwdGlvbiBrZXkpIHBhY2tldC5cbiAgICBvaWQgPSBbMHgyYiwgMHgwNiwgMHgwMSwgMHgwNCwgMHgwMSwgMHhkYSwgMHg0NywgMHgwZiwgMHgwMV07XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIG9pZC53cml0ZSA9ICgpID0+IG5ldyBVaW50OEFycmF5KEJ1ZmZlci5mcm9tKCcwOTJiMDYwMTA0MDFkYTQ3MGYwMScsICdoZXgnKSk7XG4gICAgUSA9IG5ldyBVaW50OEFycmF5KFsweDQwLCAuLi5zdWJLZXlWYWxdKTtcbiAgfSBlbHNlIGlmIChhbGdvID09PSAnZWNkc2EnKSB7XG4gICAgb2lkID0gWzB4MmIsIDB4ODEsIDB4MDQsIDB4MDAsIDB4MGFdO1xuICAgIC8vIEB0cy1pZ25vcmUgLSBzYW1lIGFzIGFib3ZlXG4gICAgb2lkLndyaXRlID0gKCkgPT4gbmV3IFVpbnQ4QXJyYXkoQnVmZmVyLmZyb20oJzA1MmI4MTA0MDAwYScsICdoZXgnKSk7XG4gICAgUSA9IHNlY3AyNTZrMS5wb2ludEZyb21TY2FsYXIobmV3IFVpbnQ4QXJyYXkoQnVmZmVyLmZyb20odVZhbHVlLCAnaGV4JykpLCBmYWxzZSk7XG4gIH1cbiAgc2VjcmV0U3Via2V5UGFja2V0LnB1YmxpY1BhcmFtcyA9IHtcbiAgICBvaWQsXG4gICAgUSxcbiAgfTtcbiAgLy8gQHRzLWlnbm9yZSAtIHNhbWUgYXMgYWJvdmVcbiAgYXdhaXQgc2VjcmV0U3Via2V5UGFja2V0LmNvbXB1dGVGaW5nZXJwcmludEFuZEtleUlEKCk7XG5cbiAgLy8gU3ViLWtleSBzaWduYXR1cmUgcGFja2V0LlxuICBjb25zdCBzdWJLZXlkYXRhVG9TaWduID0ge1xuICAgIGtleTogcHJpdmF0ZUtleS5rZXlQYWNrZXQsXG4gICAgYmluZDogc2VjcmV0U3Via2V5UGFja2V0LFxuICB9O1xuICBjb25zdCBzdWJrZXlTaWduYXR1cmVQYWNrZXQgPSBuZXcgcGdwLlNpZ25hdHVyZVBhY2tldCgpO1xuICBzdWJrZXlTaWduYXR1cmVQYWNrZXQuc2lnbmF0dXJlVHlwZSA9IHBncC5lbnVtcy5zaWduYXR1cmUuc3Via2V5QmluZGluZztcbiAgc3Via2V5U2lnbmF0dXJlUGFja2V0LnB1YmxpY0tleUFsZ29yaXRobSA9IHBncC5lbnVtcy5wdWJsaWNLZXkuZWNkc2E7XG4gIHN1YmtleVNpZ25hdHVyZVBhY2tldC5oYXNoQWxnb3JpdGhtID0gcGdwLmVudW1zLmhhc2guc2hhMjU2O1xuICBzdWJrZXlTaWduYXR1cmVQYWNrZXQua2V5RmxhZ3MgPSBuZXcgVWludDhBcnJheShbcGdwLmVudW1zLmtleUZsYWdzLmF1dGhlbnRpY2F0aW9uXSk7XG5cbiAgLy8gU2lnbiB0aGUgc3Via2V5XG4gIC8vIEB0cy1pZ25vcmUgLSBzaWduIHN1cHBvcnRzIGFyYml0cmFyeSBkYXRhIGZvciAybmQgcGFyYW06IGh0dHBzOi8vZG9jcy5vcGVucGdwanMub3JnL1NpZ25hdHVyZVBhY2tldC5odG1sXG4gIGF3YWl0IHN1YmtleVNpZ25hdHVyZVBhY2tldC5zaWduKHByaXZhdGVLZXkua2V5UGFja2V0LCBzdWJLZXlkYXRhVG9TaWduLCBkYXRlVGltZSk7XG5cbiAgLy8gQXNzZW1ibGUgcGFja2V0cyB0b2dldGhlci5cbiAgY29uc3QgbmV3S2V5UGt0TGlzdCA9IG5ldyBwZ3AuUGFja2V0TGlzdCgpO1xuICBjb25zdCBwcml2YXRlS2V5UGt0cyA9IHByaXZhdGVLZXkudG9QYWNrZXRMaXN0KCk7XG4gIHByaXZhdGVLZXlQa3RzLmZvckVhY2goKHBhY2tldCkgPT4gbmV3S2V5UGt0TGlzdC5wdXNoKHBhY2tldCkpO1xuICBuZXdLZXlQa3RMaXN0LnB1c2goc2VjcmV0U3Via2V5UGFja2V0LCBzdWJrZXlTaWduYXR1cmVQYWNrZXQpO1xuICAvLyBAdHMtaWdub3JlIC0gc3VwcG9ydHMgcGFja2V0IGxpc3QgYXMgY3RvciBwYXJhbTogaHR0cHM6Ly9kb2NzLm9wZW5wZ3Bqcy5vcmcvUHJpdmF0ZUtleS5odG1sXG4gIGNvbnN0IG5ld1B1YktleSA9IG5ldyBwZ3AuUHJpdmF0ZUtleShuZXdLZXlQa3RMaXN0KS50b1B1YmxpYygpO1xuXG4gIGlmICghKGF3YWl0IHZlcmlmeVByaW1hcnlVc2VyV3JhcHBlcihuZXdQdWJLZXksIHByaXZhdGVLZXksIHRydWUpKVswXS52YWxpZCkge1xuICAgIHRocm93IG5ldyBFcnJvcignSW5jb3JyZWN0IHNpZ25hdHVyZScpO1xuICB9XG5cbiAgcmV0dXJuIG5ld1B1YktleS5hcm1vcigpLnJlcGxhY2UoL1xcclxcbi9nLCAnXFxuJyk7XG59XG5cbi8qKlxuICogRW5jcnlwdHMgc3RyaW5nIHVzaW5nIGdwZyBrZXlcbiAqIEBERVBSRUNBVEVEIC0gc2hvdWxkIHVzZSBlbmNyeXB0QW5kU2lnblRleHQgaW5zdGVhZCBmb3IgYWRkZWQgc2VjdXJpdHlcbiAqXG4gKiBAcGFyYW0gdGV4dCBzdHJpbmcgdG8gZW5jcnlwdFxuICogQHBhcmFtIGtleSBlbmNyeXB0aW9uIGtleVxuICogQHJldHVybiB7c3RyaW5nfSBlbmNyeXB0ZWQgc3RyaW5nXG4gKlxuICogVE9ETyhCRy00NzE3MCk6IERlbGV0ZSBvbmNlIGdwZyBzaWduYXR1cmVzIGFyZSBmdWxseSBzdXBwb3J0ZWRcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGVuY3J5cHRUZXh0KHRleHQ6IHN0cmluZywga2V5OiBLZXkpOiBQcm9taXNlPHN0cmluZz4ge1xuICBjb25zdCBtZXNzYWdlVG9FbmNyeXB0ID0gYXdhaXQgY3JlYXRlTWVzc2FnZSh7XG4gICAgdGV4dCxcbiAgfSk7XG4gIHJldHVybiBhd2FpdCBlbmNyeXB0KHtcbiAgICBtZXNzYWdlOiBtZXNzYWdlVG9FbmNyeXB0LFxuICAgIGVuY3J5cHRpb25LZXlzOiBba2V5XSxcbiAgICBmb3JtYXQ6ICdhcm1vcmVkJyxcbiAgICBjb25maWc6IHtcbiAgICAgIHJlamVjdEN1cnZlczogbmV3IFNldCgpLFxuICAgICAgc2hvd1ZlcnNpb246IGZhbHNlLFxuICAgICAgc2hvd0NvbW1lbnQ6IGZhbHNlLFxuICAgIH0sXG4gIH0pO1xufVxuXG4vKipcbiAqIEVuY3J5cHRzIGFuZCBzaWducyBhIHN0cmluZ1xuICogQHBhcmFtIHRleHQgc3RyaW5nIHRvIGVuY3J5cHQgYW5kIHNpZ25cbiAqIEBwYXJhbSBwdWJsaWNBcm1vciBwdWJsaWMga2V5IHRvIGVuY3J5cHQgd2l0aFxuICogQHBhcmFtIHByaXZhdGVBcm1vciBwcml2YXRlIGtleSB0byBzaWduIHdpdGhcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGVuY3J5cHRBbmRTaWduVGV4dCh0ZXh0OiBzdHJpbmcsIHB1YmxpY0FybW9yOiBzdHJpbmcsIHByaXZhdGVBcm1vcjogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgY29uc3QgcHVibGljS2V5ID0gYXdhaXQgcmVhZEtleSh7IGFybW9yZWRLZXk6IHB1YmxpY0FybW9yIH0pO1xuICBjb25zdCBwcml2YXRlS2V5ID0gYXdhaXQgcmVhZFByaXZhdGVLZXkoeyBhcm1vcmVkS2V5OiBwcml2YXRlQXJtb3IgfSk7XG5cbiAgY29uc3QgbWVzc2FnZSA9IGF3YWl0IGNyZWF0ZU1lc3NhZ2UoeyB0ZXh0IH0pO1xuXG4gIGNvbnN0IHNpZ25lZE1lc3NhZ2UgPSBhd2FpdCBlbmNyeXB0KHtcbiAgICBtZXNzYWdlLFxuICAgIGVuY3J5cHRpb25LZXlzOiBwdWJsaWNLZXksXG4gICAgc2lnbmluZ0tleXM6IHByaXZhdGVLZXksXG4gICAgZm9ybWF0OiAnYXJtb3JlZCcsXG4gICAgY29uZmlnOiB7XG4gICAgICByZWplY3RDdXJ2ZXM6IG5ldyBTZXQoKSxcbiAgICAgIHNob3dWZXJzaW9uOiBmYWxzZSxcbiAgICAgIHNob3dDb21tZW50OiBmYWxzZSxcbiAgICB9LFxuICB9KTtcblxuICByZXR1cm4gc2lnbmVkTWVzc2FnZTtcbn1cblxuLyoqXG4gKiBSZWFkcyBhIHNpZ25lZCBhbmQgZW5jcnlwdGVkIG1lc3NhZ2VcbiAqXG4gKiBAcGFyYW0gc2lnbmVkIHNpZ25lZCBhbmQgZW5jcnlwdGVkIG1lc3NhZ2VcbiAqIEBwYXJhbSBwdWJsaWNBcm1vciBwdWJsaWMga2V5IHRvIHZlcmlmeSBzaWduYXR1cmVcbiAqIEBwYXJhbSBwcml2YXRlQXJtb3IgcHJpdmF0ZSBrZXkgdG8gZGVjcnlwdCBtZXNzYWdlXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZWFkU2lnbmVkTWVzc2FnZShzaWduZWQ6IHN0cmluZywgcHVibGljQXJtb3I6IHN0cmluZywgcHJpdmF0ZUFybW9yOiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZz4ge1xuICBjb25zdCBwdWJsaWNLZXkgPSBhd2FpdCByZWFkS2V5KHsgYXJtb3JlZEtleTogcHVibGljQXJtb3IgfSk7XG4gIGNvbnN0IHByaXZhdGVLZXkgPSBhd2FpdCByZWFkUHJpdmF0ZUtleSh7IGFybW9yZWRLZXk6IHByaXZhdGVBcm1vciB9KTtcblxuICBjb25zdCBtZXNzYWdlID0gYXdhaXQgcmVhZE1lc3NhZ2UoeyBhcm1vcmVkTWVzc2FnZTogc2lnbmVkIH0pO1xuICBjb25zdCBkZWNyeXB0ZWQgPSBhd2FpdCBkZWNyeXB0KHtcbiAgICBtZXNzYWdlLFxuICAgIHZlcmlmaWNhdGlvbktleXM6IHB1YmxpY0tleSxcbiAgICBkZWNyeXB0aW9uS2V5czogcHJpdmF0ZUtleSxcbiAgICBleHBlY3RTaWduZWQ6IHRydWUsXG4gICAgY29uZmlnOiB7IHJlamVjdEN1cnZlczogbmV3IFNldCgpIH0sXG4gIH0pO1xuXG4gIHJldHVybiBkZWNyeXB0ZWQuZGF0YTtcbn1cblxuLyoqXG4gKiBHZW5lcmF0ZXMgYSBzaWduYXR1cmVcbiAqXG4gKiBAcGFyYW0gdGV4dCBzdHJpbmcgdG8gZ2VuZXJhdGUgYSBzaWduYXR1cmUgZm9yXG4gKiBAcGFyYW0gcHJpdmF0ZUFybW9yIHByaXZhdGUga2V5IGFzIGFybW9yZWQgc3RyaW5nXG4gKiBAcmV0dXJuIHtzdHJpbmd9IGFybW9yZWQgc2lnbmF0dXJlIHN0cmluZ1xuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gc2lnblRleHQodGV4dDogc3RyaW5nLCBwcml2YXRlQXJtb3I6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XG4gIGNvbnN0IHByaXZhdGVLZXkgPSBhd2FpdCByZWFkUHJpdmF0ZUtleSh7IGFybW9yZWRLZXk6IHByaXZhdGVBcm1vciB9KTtcbiAgY29uc3QgbWVzc2FnZSA9IGF3YWl0IGNyZWF0ZU1lc3NhZ2UoeyB0ZXh0IH0pO1xuICBjb25zdCBzaWduYXR1cmUgPSBhd2FpdCBzaWduKHtcbiAgICBtZXNzYWdlLFxuICAgIHNpZ25pbmdLZXlzOiBwcml2YXRlS2V5LFxuICAgIGZvcm1hdDogJ2FybW9yZWQnLFxuICAgIGRldGFjaGVkOiB0cnVlLFxuICB9KTtcblxuICByZXR1cm4gc2lnbmF0dXJlO1xufVxuXG4vKipcbiAqIFZlcmlmaWVzIHNpZ25hdHVyZSB3YXMgZ2VuZXJhdGVkIGJ5IHRoZSBwdWJsaWMga2V5IGFuZCBtYXRjaGVzIHRoZSBleHBlY3RlZCB0ZXh0XG4gKlxuICogQHBhcmFtIHRleHQgdGV4dCB0aGF0IHRoZSBzaWduYXR1cmUgd2FzIGZvclxuICogQHBhcmFtIGFybW9yZWRTaWduYXR1cmUgc2lnbmVkIG1lc3NhZ2UgYXMgYW4gYXJtb3JlZCBzdHJpbmdcbiAqIEBwYXJhbSBwdWJsaWNBcm1vciBwdWJsaWMga2V5IHRoYXQgZ2VuZXJhdGVkIHRoZSBzaWduYXR1cmVcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHZlcmlmeVNpZ25hdHVyZSh0ZXh0OiBzdHJpbmcsIGFybW9yZWRTaWduYXR1cmU6IHN0cmluZywgcHVibGljQXJtb3I6IHN0cmluZyk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICBjb25zdCBwdWJsaWNLZXkgPSBhd2FpdCByZWFkS2V5KHsgYXJtb3JlZEtleTogcHVibGljQXJtb3IgfSk7XG4gIGNvbnN0IHNpZ25hdHVyZSA9IGF3YWl0IHJlYWRTaWduYXR1cmUoeyBhcm1vcmVkU2lnbmF0dXJlIH0pO1xuICBjb25zdCBtZXNzYWdlID0gYXdhaXQgY3JlYXRlTWVzc2FnZSh7IHRleHQgfSk7XG4gIGNvbnN0IHZlcmlmaWNhdGlvblJlc3VsdCA9IGF3YWl0IHZlcmlmeSh7XG4gICAgbWVzc2FnZSxcbiAgICBzaWduYXR1cmUsXG4gICAgdmVyaWZpY2F0aW9uS2V5czogcHVibGljS2V5LFxuICB9KTtcblxuICBpZiAodmVyaWZpY2F0aW9uUmVzdWx0LnNpZ25hdHVyZXMubGVuZ3RoICE9PSAxKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIG51bWJlciBvZiBzaWduYXR1cmVzJyk7XG4gIH1cblxuICB0cnkge1xuICAgIGF3YWl0IHZlcmlmaWNhdGlvblJlc3VsdC5zaWduYXR1cmVzWzBdLnZlcmlmaWVkO1xuICAgIHJldHVybiB0ZXh0ID09PSB2ZXJpZmljYXRpb25SZXN1bHQuZGF0YTtcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59XG5cbi8qKlxuICogR2VuZXJhdGUgYSBHUEcga2V5IHBhaXJcbiAqXG4gKiBAcGFyYW06IGtleUN1cnZlIHRoZSBjdXJ2ZSB0byBjcmVhdGUgYSBrZXkgd2l0aFxuICogQHBhcmFtOiB1c2VybmFtZSBuYW1lIG9mIHRoZSB1c2VyIChvcHRpb25hbClcbiAqIEBwYXJhbTogZW1haWwgZW1haWwgb2YgdGhlIHVzZXIgKG9wdGlvbmFsKVxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2VuZXJhdGVHUEdLZXlQYWlyKFxuICBrZXlDdXJ2ZTogcGdwLkVsbGlwdGljQ3VydmVOYW1lLFxuICB1c2VybmFtZT86IHN0cmluZyB8IHVuZGVmaW5lZCxcbiAgZW1haWw/OiBzdHJpbmcgfCB1bmRlZmluZWRcbik6IFByb21pc2U8cGdwLlNlcmlhbGl6ZWRLZXlQYWlyPHN0cmluZz4+IHtcbiAgY29uc3QgcmFuZG9tSGV4U3RyaW5nID0gY3J5cHRvLnJhbmRvbUJ5dGVzKDEyKS50b1N0cmluZygnaGV4Jyk7XG4gIHVzZXJuYW1lID0gdXNlcm5hbWUgPz8gcmFuZG9tSGV4U3RyaW5nO1xuICBlbWFpbCA9IGVtYWlsID8/IGB1c2VyLSR7cmFuZG9tSGV4U3RyaW5nfUAke3JhbmRvbUhleFN0cmluZ30uY29tYDtcblxuICAvLyBBbGxvdyBnZW5lcmF0aW5nIHNlY3AyNTZrMSBrZXkgcGFpcnNcbiAgcGdwLmNvbmZpZy5yZWplY3RDdXJ2ZXMgPSBuZXcgU2V0KCk7XG4gIGNvbnN0IGdwZ0tleSA9IGF3YWl0IHBncC5nZW5lcmF0ZUtleSh7XG4gICAgdXNlcklEczogW1xuICAgICAge1xuICAgICAgICBuYW1lOiB1c2VybmFtZSxcbiAgICAgICAgZW1haWwsXG4gICAgICB9LFxuICAgIF0sXG4gICAgY3VydmU6IGtleUN1cnZlLFxuICB9KTtcblxuICByZXR1cm4gZ3BnS2V5O1xufVxuIl19
413
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3BlbmdwZ1V0aWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2JpdGdvL3V0aWxzL29wZW5ncGdVdGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsc0RBQXNEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQXFDdEQsOENBV0M7QUFVRCw0REFVQztBQU1ELDhDQU1DO0FBV0QsNENBeUJDO0FBVUQsc0RBcUJDO0FBVUQsc0RBdURDO0FBYUQsNENBNkRDO0FBWUQsa0NBY0M7QUFRRCxnREFtQkM7QUFTRCw4Q0FjQztBQVNELDRCQVdDO0FBU0QsMENBb0JDO0FBU0QsZ0RBc0JDO0FBeGJELDZDQUErQjtBQUMvQixxQ0FXaUI7QUFDakIsMENBQTRCO0FBQzVCLHFEQUF5RDtBQUV6RCxvREFBNEI7QUFFNUIsTUFBTSxNQUFNLEdBQUcsT0FBTyxDQUFDLHlCQUF5QixDQUFDLENBQUM7QUFZbEQ7Ozs7R0FJRztBQUNJLEtBQUssVUFBVSxpQkFBaUIsQ0FBQyxLQUFnQjtJQUN0RCxNQUFNLFNBQVMsR0FBRyxNQUFNLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztJQUMvQyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDcEQsTUFBTSxJQUFJLEtBQUssQ0FBQyxzRUFBc0UsQ0FBQyxDQUFDO0lBQzFGLENBQUM7SUFFRCxNQUFNLGlCQUFpQixHQUFHLFNBQVMsQ0FBQyxHQUFHLENBQUMsY0FBd0IsQ0FBQztJQUNqRSxNQUFNLHNCQUFzQixHQUFHLFNBQVMsQ0FBQyxHQUFHLENBQUMsbUJBQW1CO1FBQzlELENBQUMsQ0FBQyxNQUFNLElBQUEsaUJBQU8sRUFBQyxFQUFFLFVBQVUsRUFBRSxTQUFTLENBQUMsR0FBRyxDQUFDLG1CQUE2QixFQUFFLENBQUM7UUFDNUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQztJQUNk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TUc7QUFDSSxLQUFLLFVBQVUsa0JBQWtCLENBQ3RDLFFBQStCLEVBQy9CLFFBQTZCLEVBQzdCLEtBQTBCO0lBRTFCLE1BQU0sZUFBZSxHQUFHLGdCQUFNLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMvRCxRQUFRLEdBQUcsUUFBUSxJQUFJLGVBQWUsQ0FBQztJQUN2QyxLQUFLLEdBQUcsS0FBSyxJQUFJLFFBQVEsZUFBZSxJQUFJLGVBQWUsTUFBTSxDQUFDO0lBRWxFLHVDQUF1QztJQUN2QyxHQUFHLENBQUMsTUFBTSxDQUFDLFlBQVksR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDO0lBQ3BDLE1BQU0sTUFBTSxHQUFHLE1BQU0sR0FBRyxDQUFDLFdBQVcsQ0FBQztRQUNuQyxPQUFPLEVBQUU7WUFDUDtnQkFDRSxJQUFJLEVBQUUsUUFBUTtnQkFDZCxLQUFLO2FBQ047U0FDRjtRQUNELEtBQUssRUFBRSxRQUFRO0tBQ2hCLENBQUMsQ0FBQztJQUVILE9BQU8sTUFBTSxDQUFDO0FBQ2hCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXRzLWNvbW1lbnQgKi9cblxuaW1wb3J0ICogYXMgcGdwIGZyb20gJ29wZW5wZ3AnO1xuaW1wb3J0IHtcbiAgY3JlYXRlTWVzc2FnZSxcbiAgZGVjcnlwdCxcbiAgZW5jcnlwdCxcbiAgS2V5LFxuICByZWFkS2V5LFxuICByZWFkTWVzc2FnZSxcbiAgcmVhZFByaXZhdGVLZXksXG4gIHJlYWRTaWduYXR1cmUsXG4gIHNpZ24sXG4gIHZlcmlmeSxcbn0gZnJvbSAnb3BlbnBncCc7XG5pbXBvcnQgKiBhcyBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBlY2MgYXMgc2VjcDI1NmsxIH0gZnJvbSAnQGJpdGdvLWJldGEvc2VjcDI1NmsxJztcbmltcG9ydCB7IEJpdEdvQmFzZSB9IGZyb20gJy4uL2JpdGdvQmFzZSc7XG5pbXBvcnQgY3J5cHRvIGZyb20gJ2NyeXB0byc7XG5cbmNvbnN0IHNvZGl1bSA9IHJlcXVpcmUoJ2xpYnNvZGl1bS13cmFwcGVycy1zdW1vJyk7XG5cbmV4cG9ydCB0eXBlIEtleVZhbGlkaXR5RGljdCA9IHtcbiAga2V5SUQ6IHBncC5LZXlJRDtcbiAgdmFsaWQ6IGJvb2xlYW4gfCBudWxsO1xufVtdO1xuXG5leHBvcnQgdHlwZSBBdXRoRW5jTWVzc2FnZSA9IHtcbiAgZW5jcnlwdGVkTWVzc2FnZTogc3RyaW5nO1xuICBzaWduYXR1cmU6IHN0cmluZztcbn07XG5cbi8qKlxuICogRmV0Y2hlcyBCaXRHbydzIHB1YmxpYyBncGcga2V5IHVzZWQgaW4gTVBDIGZsb3dzXG4gKiBAcGFyYW0ge0JpdEdvQmFzZX0gYml0Z28gQml0R28gb2JqZWN0XG4gKiBAcmV0dXJuIHtLZXl9IHB1YmxpYyBncGcga2V5XG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRCaXRnb0dwZ1B1YktleShiaXRnbzogQml0R29CYXNlKTogUHJvbWlzZTx7IG1wY1YxOiBLZXk7IG1wY1YyOiBLZXkgfCB1bmRlZmluZWQgfT4ge1xuICBjb25zdCBjb25zdGFudHMgPSBhd2FpdCBiaXRnby5mZXRjaENvbnN0YW50cygpO1xuICBpZiAoIWNvbnN0YW50cy5tcGMgfHwgIWNvbnN0YW50cy5tcGMuYml0Z29QdWJsaWNLZXkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1VuYWJsZSB0byBjcmVhdGUgTVBDIGtleXMgLSBiaXRnb1B1YmxpY0tleSBpcyBtaXNzaW5nIGZyb20gY29uc3RhbnRzJyk7XG4gIH1cblxuICBjb25zdCBiaXRnb1B1YmxpY0tleVN0ciA9IGNvbnN0YW50cy5tcGMuYml0Z29QdWJsaWNLZXkgYXMgc3RyaW5nO1xuICBjb25zdCBiaXRnb01QQ3YyUHVibGljS2V5U3RyID0gY29uc3RhbnRzLm1wYy5iaXRnb01QQ3YyUHVibGljS2V5XG4gICAgPyBhd2FpdCByZWFkS2V5KHsgYXJtb3JlZEtleTogY29uc3RhbnRzLm1wYy5iaXRnb01QQ3YyUHVibGljS2V5IGFzIHN0cmluZyB9KVxuICAgIDogdW5kZWZpbmVkO1xuICByZXR1cm4geyBtcGNWMTogYXdhaXQgcmVhZEtleSh7IGFybW9yZWRLZXk6IGJpdGdvUHVibGljS2V5U3RyIH0pLCBtcGNWMjogYml0Z29NUEN2MlB1YmxpY0tleVN0ciB9O1xufVxuXG4vKipcbiAqIFZlcmlmaWVzIHRoZSBwcmltYXJ5IHVzZXIgb24gYSBHUEcga2V5IHVzaW5nIGEgcmVmZXJlbmNlIGtleSByZXByZXNlbnRpbmcgdGhlIHVzZXIgdG8gYmUgY2hlY2tlZC5cbiAqIEFsbG93cyBhIHZlcmlmaWNhdGlvbiB3aXRob3V0IGEgZGF0ZSBjaGVjayBieSB3cmFwcGluZyB2ZXJpZnlQcmltYXJ5VXNlciBvZiBvcGVucGdwLlxuICogQHBhcmFtIHtLZXl9IHB1YktleSBncGcga2V5IHRvIGNoZWNrIHRoZSBwcmltYXJ5IHVzZXIgb2YuXG4gKiBAcGFyYW0ge0tleX0gcHJpbWFyeVVzZXIgZ3BnIGtleSBvZiB0aGUgdXNlciB0byBjaGVjay5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gY2hlY2tEYXRlcyBJZiBmYWxzZSwgZGlzYWJsZSBkYXRlIGNoZWNrcyBpbiB0aGUgb3BlbnBncCBjYWxsIHRvIGNoZWNrIHRoZSBwcmltYXJ5IHVzZXIuXG4gKiBAcmV0dXJuIHtLZXlWYWxpZGl0eURpY3R9IGxpc3Qgb2YgdXNlcnMgY2hlY2tlZCBhbmQgd2hldGhlciBlYWNoIHBhc3NlZCBhcyBhIHByaW1hcnkgdXNlciBpbiBwdWJLZXkgb3Igbm90LlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gdmVyaWZ5UHJpbWFyeVVzZXJXcmFwcGVyKFxuICBwdWJLZXk6IEtleSxcbiAgcHJpbWFyeVVzZXI6IEtleSxcbiAgY2hlY2tEYXRlczogYm9vbGVhblxuKTogUHJvbWlzZTxLZXlWYWxpZGl0eURpY3Q+IHtcbiAgaWYgKGNoZWNrRGF0ZXMpIHtcbiAgICByZXR1cm4gYXdhaXQgcHViS2V5LnZlcmlmeVByaW1hcnlVc2VyKFtwcmltYXJ5VXNlcl0pO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBhd2FpdCBwdWJLZXkudmVyaWZ5UHJpbWFyeVVzZXIoW3ByaW1hcnlVc2VyXSwgbnVsbCBhcyB1bmtub3duIGFzIHVuZGVmaW5lZCk7XG4gIH1cbn1cblxuLyoqXG4gKiBGZXRjaGVzIFRydXN0IHB1YiBrZXkgc3RyaW5nXG4gKiBAcGFyYW0gYml0Z29cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldFRydXN0R3BnUHViS2V5KGJpdGdvOiBCaXRHb0Jhc2UpOiBQcm9taXNlPEtleT4ge1xuICBjb25zdCBjb25zdGFudHMgPSBhd2FpdCBiaXRnby5mZXRjaENvbnN0YW50cygpO1xuICBpZiAoIWNvbnN0YW50cy50cnVzdFB1YktleSkge1xuICAgIHRocm93IG5ldyBFcnJvcignVW5hYmxlIHRvIGdldCB0cnVzdFB1YktleScpO1xuICB9XG4gIHJldHVybiByZWFkS2V5KHsgYXJtb3JlZEtleTogY29uc3RhbnRzLnRydXN0UHViS2V5IH0pO1xufVxuXG4vKipcbiAqIFZlcmlmeSBhbiBFZGRzYSBvciBFY2RzYSBLZXlTaGFyZSBQcm9vZi5cbiAqXG4gKiBAcGFyYW0gc2VuZGVyUHViS2V5IHB1YmxpYyBrZXkgb2YgdGhlIHNlbmRlciBvZiB0aGUgcHJpdmF0ZVNoYXJlUHJvb2ZcbiAqIEBwYXJhbSBwcml2YXRlU2hhcmVQcm9vZiB1IHZhbHVlIHByb29mXG4gKiBAcGFyYW0gdVZhbHVlIHUgdmFsdWUgZnJvbSBhbiBFZGRzYSBrZXlzaGFyZVxuICogQHBhcmFtIGFsZ29cbiAqIEByZXR1cm4ge2Jvb2xlYW59IHdoZXRoZXIgdVZhbHVlIHByb29mIGFjdHVhbGx5IHdhcyBzaWduZWQgYnkgc2VuZGVyIGFzIHBhcnQgb2YgdGhlaXIgc3Via2V5c1xuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gdmVyaWZ5U2hhcmVQcm9vZihcbiAgc2VuZGVyUHViS2V5OiBzdHJpbmcsXG4gIHByaXZhdGVTaGFyZVByb29mOiBzdHJpbmcsXG4gIHVWYWx1ZTogc3RyaW5nLFxuICBhbGdvOiAnZWRkc2EnIHwgJ2VjZHNhJ1xuKTogUHJvbWlzZTxib29sZWFuPiB7XG4gIGNvbnN0IGRlY29kZWRQcm9vZiA9IGF3YWl0IHBncC5yZWFkS2V5KHsgYXJtb3JlZEtleTogcHJpdmF0ZVNoYXJlUHJvb2YgfSk7XG4gIGNvbnN0IHNlbmRlckdwZ0tleSA9IGF3YWl0IHBncC5yZWFkS2V5KHsgYXJtb3JlZEtleTogc2VuZGVyUHViS2V5IH0pO1xuICBpZiAoIShhd2FpdCB2ZXJpZnlQcmltYXJ5VXNlcldyYXBwZXIoZGVjb2RlZFByb29mLCBzZW5kZXJHcGdLZXksIHRydWUpKVswXS52YWxpZCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBjb25zdCBwcm9vZlN1YmtleXMgPSBkZWNvZGVkUHJvb2YuZ2V0U3Via2V5cygpWzFdO1xuICBpZiAoYWxnbyA9PT0gJ2VkZHNhJykge1xuICAgIGNvbnN0IGRlY29kZWRVVmFsdWVQcm9vZiA9IEJ1ZmZlci5mcm9tKHByb29mU3Via2V5cy5rZXlQYWNrZXQucHVibGljUGFyYW1zWydRJ10uc2xpY2UoMSkpLnRvU3RyaW5nKCdoZXgnKTtcbiAgICBjb25zdCByYXdVVmFsdWVQcm9vZiA9IEJ1ZmZlci5mcm9tKFxuICAgICAgc29kaXVtLmNyeXB0b19zY2FsYXJtdWx0X2VkMjU1MTlfYmFzZV9ub2NsYW1wKEJ1ZmZlci5mcm9tKHVWYWx1ZSwgJ2hleCcpKVxuICAgICkudG9TdHJpbmcoJ2hleCcpO1xuICAgIHJldHVybiBkZWNvZGVkVVZhbHVlUHJvb2YgPT09IHJhd1VWYWx1ZVByb29mO1xuICB9IGVsc2UgaWYgKGFsZ28gPT09ICdlY2RzYScpIHtcbiAgICBjb25zdCBkZWNvZGVkVVZhbHVlUHJvb2YgPSBCdWZmZXIuZnJvbShwcm9vZlN1YmtleXMua2V5UGFja2V0LnB1YmxpY1BhcmFtc1snUSddKS50b1N0cmluZygnaGV4Jyk7XG4gICAgY29uc3QgcmF3VVZhbHVlUHJvb2YgPSBzZWNwMjU2azEucG9pbnRGcm9tU2NhbGFyKEJ1ZmZlci5mcm9tKHVWYWx1ZSwgJ2hleCcpLCBmYWxzZSk7XG4gICAgcmV0dXJuIHJhd1VWYWx1ZVByb29mICE9PSBudWxsICYmIGRlY29kZWRVVmFsdWVQcm9vZiA9PT0gQnVmZmVyLmZyb20ocmF3VVZhbHVlUHJvb2YpLnRvU3RyaW5nKCdoZXgnKTtcbiAgfSBlbHNlIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgYWxnb3JpdGhtIHByb3ZpZGVkJyk7XG4gIH1cbn1cblxuLyoqXG4gKiBWZXJpZnkgYSBzaGFyZWQgZGF0YSBwcm9vZi5cbiAqXG4gKiBAcGFyYW0gc2VuZGVyUHViS2V5QXJtIHB1YmxpYyBrZXkgb2YgdGhlIHNpZ25lciBvZiB0aGUga2V5IHdpdGggcHJvb2YgZGF0YVxuICogQHBhcmFtIGtleVdpdGhOb3RhdGlvbiBzaWduZWQgcmVjaWV2ZXIga2V5IHdpdGggbm90YXRpb24gZGF0YVxuICogQHBhcmFtIGRhdGFUb1ZlcmlmeSBkYXRhIHRvIGJlIGNoZWNrZWQgYWdhaW5zdCBub3RhdGlvbiBkYXRhIGluIHRoZSBzaWduZWQga2V5XG4gKiBAcmV0dXJuIHtib29sZWFufSB3aGV0aGVyIHByb29mIGlzIHZhbGlkXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB2ZXJpZnlTaGFyZWREYXRhUHJvb2YoXG4gIHNlbmRlclB1YktleUFybTogc3RyaW5nLFxuICBrZXlXaXRoTm90YXRpb246IHN0cmluZyxcbiAgZGF0YVRvVmVyaWZ5OiB7IG5hbWU6IHN0cmluZzsgdmFsdWU6IHN0cmluZyB9W11cbik6IFByb21pc2U8Ym9vbGVhbj4ge1xuICBjb25zdCBzZW5kZXJQdWJLZXkgPSBhd2FpdCBwZ3AucmVhZEtleSh7IGFybW9yZWRLZXk6IHNlbmRlclB1YktleUFybSB9KTtcbiAgY29uc3Qgc2lnbmVkS2V5ID0gYXdhaXQgcGdwLnJlYWRLZXkoeyBhcm1vcmVkS2V5OiBrZXlXaXRoTm90YXRpb24gfSk7XG4gIGlmIChcbiAgICAhKGF3YWl0IHZlcmlmeVByaW1hcnlVc2VyV3JhcHBlcihzaWduZWRLZXksIHNlbmRlclB1YktleSwgZmFsc2UpLnRoZW4oKHZhbHVlcykgPT5cbiAgICAgIF8uc29tZSh2YWx1ZXMsICh2YWx1ZSkgPT4gdmFsdWUudmFsaWQpXG4gICAgKSlcbiAgKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGNvbnN0IHByaW1hcnlVc2VyID0gYXdhaXQgc2lnbmVkS2V5LmdldFByaW1hcnlVc2VyKG51bGwgYXMgdW5rbm93biBhcyB1bmRlZmluZWQpO1xuICBjb25zdCBhbnlJbnZhbGlkUHJvb2YgPSBfLnNvbWUoXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHByaW1hcnlVc2VyLnVzZXIub3RoZXJDZXJ0aWZpY2F0aW9uc1swXS5yYXdOb3RhdGlvbnMsXG4gICAgKG5vdGF0aW9uKSA9PiBkYXRhVG9WZXJpZnkuZmluZCgoaSkgPT4gaS5uYW1lID09PSBub3RhdGlvbi5uYW1lKT8udmFsdWUgIT09IEJ1ZmZlci5mcm9tKG5vdGF0aW9uLnZhbHVlKS50b1N0cmluZygpXG4gICk7XG4gIHJldHVybiAhYW55SW52YWxpZFByb29mO1xufVxuXG4vKipcbiAqIENyZWF0ZXMgYSBwcm9vZiB0aHJvdWdoIGFkZGluZyBub3RhdGlvbiBkYXRhIHRvIGEgR1BHIGNlcml0aWZ5aW5nIHNpZ25hdHVyZS5cbiAqXG4gKiBAcGFyYW0gcHJpdmF0ZUtleUFybW9yZWQgZ3BnIHByaXZhdGUga2V5IGluIGFybW9yIGZvcm1hdCBvZiB0aGUgc2VuZGVyXG4gKiBAcGFyYW0gcHVibGljS2V5VG9DZXJ0QXJtb3JlZCBncGcgcHVibGljIGtleSBpbiBhcm1vciBmb21yYXQgb2YgdGhlIHJlY2lldmVyXG4gKiBAcGFyYW0gbm90YXRpb25zIGRhdGEgdG8gYmUgcHJvb2ZlZFxuICogQHJldHVybiB7c3RyaW5nfSBrZXlzaGFyZSBwcm9vZlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY3JlYXRlU2hhcmVkRGF0YVByb29mKFxuICBwcml2YXRlS2V5QXJtb3JlZDogc3RyaW5nLFxuICBwdWJsaWNLZXlUb0NlcnRBcm1vcmVkOiBzdHJpbmcsXG4gIG5vdGF0aW9uczogeyBuYW1lOiBzdHJpbmc7IHZhbHVlOiBzdHJpbmcgfVtdXG4pOiBQcm9taXNlPHN0cmluZz4ge1xuICBjb25zdCBjZXJ0aWZ5aW5nS2V5ID0gYXdhaXQgcGdwLnJlYWRLZXkoeyBhcm1vcmVkS2V5OiBwcml2YXRlS2V5QXJtb3JlZCB9KTtcbiAgY29uc3QgcHVibGljS2V5VG9DZXJ0ID0gYXdhaXQgcGdwLnJlYWRLZXkoeyBhcm1vcmVkS2V5OiBwdWJsaWNLZXlUb0NlcnRBcm1vcmVkIH0pO1xuICBjb25zdCBkYXRlVGltZSA9IG5ldyBEYXRlKCk7XG4gIC8vIFVzZXJJZCBQYWNrZXQuXG4gIGNvbnN0IHVzZXJJZFBrdCA9IG5ldyBwZ3AuVXNlcklEUGFja2V0KCk7XG4gIGNvbnN0IHByaW1hcnlVc2VyID0gYXdhaXQgcHVibGljS2V5VG9DZXJ0LmdldFByaW1hcnlVc2VyKG51bGwgYXMgdW5rbm93biBhcyB1bmRlZmluZWQpO1xuICAvLyBAdHMtaWdub3JlXG4gIHVzZXJJZFBrdC51c2VySUQgPSBwcmltYXJ5VXNlci51c2VyLnVzZXJJRC51c2VySUQ7XG4gIC8vIFNpZ25hdHVyZSBwYWNrZXQuXG4gIGNvbnN0IHNpZ25hdHVyZVBhY2tldCA9IG5ldyBwZ3AuU2lnbmF0dXJlUGFja2V0KCk7XG4gIHNpZ25hdHVyZVBhY2tldC5zaWduYXR1cmVUeXBlID0gcGdwLmVudW1zLnNpZ25hdHVyZS5jZXJ0UG9zaXRpdmU7XG4gIHNpZ25hdHVyZVBhY2tldC5wdWJsaWNLZXlBbGdvcml0aG0gPSBwZ3AuZW51bXMucHVibGljS2V5LmVjZHNhO1xuICBzaWduYXR1cmVQYWNrZXQuaGFzaEFsZ29yaXRobSA9IHBncC5lbnVtcy5oYXNoLnNoYTI1NjtcbiAgLy8gQHRzLWlnbm9yZVxuICBzaWduYXR1cmVQYWNrZXQuaXNzdWVyRmluZ2VycHJpbnQgPSBhd2FpdCBwcmltYXJ5VXNlci51c2VyLm1haW5LZXkua2V5UGFja2V0LmdldEZpbmdlcnByaW50Qnl0ZXMoKTtcbiAgLy8gQHRzLWlnbm9yZVxuICBzaWduYXR1cmVQYWNrZXQuaXNzdWVyS2V5SUQgPSBwcmltYXJ5VXNlci51c2VyLm1haW5LZXkua2V5UGFja2V0LmtleUlEO1xuICAvLyBAdHMtaWdub3JlXG4gIHNpZ25hdHVyZVBhY2tldC5zaWduaW5nS2V5SUQgPSBwcmltYXJ5VXNlci51c2VyLm1haW5LZXkua2V5UGFja2V0LmtleUlEO1xuICAvLyBAdHMtaWdub3JlXG4gIHNpZ25hdHVyZVBhY2tldC5zaWduZXJzVXNlcklEID0gcHJpbWFyeVVzZXIudXNlci51c2VySUQudXNlcklEO1xuICAvLyBAdHMtaWdub3JlXG4gIHNpZ25hdHVyZVBhY2tldC5mZWF0dXJlcyA9IFsxXTtcbiAgbm90YXRpb25zLmZvckVhY2goKHsgbmFtZSwgdmFsdWUgfSkgPT4ge1xuICAgIHNpZ25hdHVyZVBhY2tldC5yYXdOb3RhdGlvbnMucHVzaCh7XG4gICAgICBuYW1lOiBuYW1lLFxuICAgICAgdmFsdWU6IG5ldyBVaW50OEFycmF5KEJ1ZmZlci5mcm9tKHZhbHVlKSksXG4gICAgICBodW1hblJlYWRhYmxlOiB0cnVlLFxuICAgICAgY3JpdGljYWw6IGZhbHNlLFxuICAgIH0pO1xuICB9KTtcblxuICAvLyBQcmVwYXJlIHNpZ25pbmcgZGF0YS5cbiAgY29uc3Qga2V5ZGF0YVRvU2lnbiA9IHt9O1xuICAvLyBAdHMtaWdub3JlXG4gIGtleWRhdGFUb1NpZ24ua2V5ID0gcHVibGljS2V5VG9DZXJ0LmtleVBhY2tldDtcbiAgLy8gQHRzLWlnbm9yZVxuICBrZXlkYXRhVG9TaWduLnVzZXJJRCA9IHVzZXJJZFBrdDtcblxuICAvLyBTaWduIHRoZSBkYXRhIChjcmVhdGUgY2VydGlmaWNhdGlvbikuXG4gIC8vIEB0cy1pZ25vcmVcbiAgYXdhaXQgc2lnbmF0dXJlUGFja2V0LnNpZ24oY2VydGlmeWluZ0tleS5rZXlQYWNrZXQsIGtleWRhdGFUb1NpZ24sIGRhdGVUaW1lKTtcblxuICAvLyBBc3NlbWJsZSBwYWNrZXRzIHRvZ2V0aGVyLlxuICBjb25zdCBwdWJsaWNLZXlUb0NlcnRQa3RzID0gcHVibGljS2V5VG9DZXJ0LnRvUGFja2V0TGlzdCgpO1xuICBjb25zdCBuZXdLZXlQa3RMaXN0ID0gbmV3IHBncC5QYWNrZXRMaXN0KCk7XG4gIG5ld0tleVBrdExpc3QucHVzaCguLi5wdWJsaWNLZXlUb0NlcnRQa3RzLnNsaWNlKDAsIDMpLCBzaWduYXR1cmVQYWNrZXQsIC4uLnB1YmxpY0tleVRvQ2VydFBrdHMuc2xpY2UoMykpO1xuICAvLyBAdHMtaWdub3JlXG4gIGNvbnN0IG5ld1B1YktleSA9IG5ldyBwZ3AuUHVibGljS2V5KG5ld0tleVBrdExpc3QpO1xuICByZXR1cm4gbmV3UHViS2V5LmFybW9yKCkucmVwbGFjZSgvXFxyXFxuL2csICdcXG4nKTtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEgS2V5U2hhcmUgUHJvb2YgYmFzZWQgb24gZ2l2ZW4gYWxnby5cbiAqXG4gKiBDcmVhdGVzIGFuIEVkRFNBIEtleVNoYXJlIFByb29mIGJ5IGFwcGVuZGluZyBhbiBlZDI1NTE5IHN1YmtleSAoYXV0aCkgdG8gYW4gYXJtb3JlZCBncGcgcHJpdmF0ZSBrZXkuXG4gKiBDcmVhdGVzIGFuIEVDRFNBIEtleVNoYXJlIFByb29mIGJ5IEFwcGVuZCBhIHNlY3AyNTZrMSBzdWJrZXkgKGF1dGgpIHRvIGEgUEdQIGtleWNoYWluLlxuICpcbiAqIEBwYXJhbSBwcml2YXRlQXJtb3IgZ3BnIHByaXZhdGUga2V5IGluIGFybW9yIGZvcm1hdFxuICogQHBhcmFtIHVWYWx1ZSB1IHZhbHVlIGZyb20gYW4gRWRkc2Ega2V5c2hhcmVcbiAqIEBwYXJhbSBhbGdvIGFsZ28gdG8gdXNlLCBlZGRzYSBvciBlY2RzYVxuICogQHJldHVybiB7c3RyaW5nfSBrZXlzaGFyZSBwcm9vZlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY3JlYXRlU2hhcmVQcm9vZihwcml2YXRlQXJtb3I6IHN0cmluZywgdVZhbHVlOiBzdHJpbmcsIGFsZ286IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XG4gIGNvbnN0IHByaXZhdGVLZXkgPSBhd2FpdCByZWFkS2V5KHsgYXJtb3JlZEtleTogcHJpdmF0ZUFybW9yIH0pO1xuICBjb25zdCBkYXRlVGltZSA9IG5ldyBEYXRlKCk7XG4gIC8vIEB0cy1pZ25vcmUgLSB0eXBlIGluY29uc2lzdGVuY3ksIHRoaXMgY3RvciBzdXBwb3J0cyBhIGRhdGUgcGFyYW06IGh0dHBzOi8vZG9jcy5vcGVucGdwanMub3JnL1NlY3JldFN1YmtleVBhY2tldC5odG1sXG4gIGNvbnN0IHNlY3JldFN1YmtleVBhY2tldCA9IG5ldyBwZ3AuU2VjcmV0U3Via2V5UGFja2V0KGRhdGVUaW1lKTtcbiAgc2VjcmV0U3Via2V5UGFja2V0LmFsZ29yaXRobSA9IHBncC5lbnVtcy5wdWJsaWNLZXlbYWxnb107XG4gIC8vIEB0cy1pZ25vcmUgLSBzYW1lIGFzIGFib3ZlXG4gIHNlY3JldFN1YmtleVBhY2tldC5pc0VuY3J5cHRlZCA9IGZhbHNlO1xuICBsZXQgb2lkO1xuICBsZXQgUTtcbiAgaWYgKGFsZ28gPT09ICdlZGRzYScpIHtcbiAgICBhd2FpdCBzb2RpdW0ucmVhZHk7XG4gICAgY29uc3Qgc3ViS2V5VmFsID0gQnVmZmVyLmZyb20oXG4gICAgICBzb2RpdW0uY3J5cHRvX3NjYWxhcm11bHRfZWQyNTUxOV9iYXNlX25vY2xhbXAoQnVmZmVyLmZyb20odVZhbHVlLCAnaGV4JyksICd1aW50OGFycmF5JylcbiAgICApO1xuICAgIC8vIFN1Yi1rZXkgKGVuY3J5cHRpb24ga2V5KSBwYWNrZXQuXG4gICAgb2lkID0gWzB4MmIsIDB4MDYsIDB4MDEsIDB4MDQsIDB4MDEsIDB4ZGEsIDB4NDcsIDB4MGYsIDB4MDFdO1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBvaWQud3JpdGUgPSAoKSA9PiBuZXcgVWludDhBcnJheShCdWZmZXIuZnJvbSgnMDkyYjA2MDEwNDAxZGE0NzBmMDEnLCAnaGV4JykpO1xuICAgIFEgPSBuZXcgVWludDhBcnJheShbMHg0MCwgLi4uc3ViS2V5VmFsXSk7XG4gIH0gZWxzZSBpZiAoYWxnbyA9PT0gJ2VjZHNhJykge1xuICAgIG9pZCA9IFsweDJiLCAweDgxLCAweDA0LCAweDAwLCAweDBhXTtcbiAgICAvLyBAdHMtaWdub3JlIC0gc2FtZSBhcyBhYm92ZVxuICAgIG9pZC53cml0ZSA9ICgpID0+IG5ldyBVaW50OEFycmF5KEJ1ZmZlci5mcm9tKCcwNTJiODEwNDAwMGEnLCAnaGV4JykpO1xuICAgIFEgPSBzZWNwMjU2azEucG9pbnRGcm9tU2NhbGFyKG5ldyBVaW50OEFycmF5KEJ1ZmZlci5mcm9tKHVWYWx1ZSwgJ2hleCcpKSwgZmFsc2UpO1xuICB9XG4gIHNlY3JldFN1YmtleVBhY2tldC5wdWJsaWNQYXJhbXMgPSB7XG4gICAgb2lkLFxuICAgIFEsXG4gIH07XG4gIC8vIEB0cy1pZ25vcmUgLSBzYW1lIGFzIGFib3ZlXG4gIGF3YWl0IHNlY3JldFN1YmtleVBhY2tldC5jb21wdXRlRmluZ2VycHJpbnRBbmRLZXlJRCgpO1xuXG4gIC8vIFN1Yi1rZXkgc2lnbmF0dXJlIHBhY2tldC5cbiAgY29uc3Qgc3ViS2V5ZGF0YVRvU2lnbiA9IHtcbiAgICBrZXk6IHByaXZhdGVLZXkua2V5UGFja2V0LFxuICAgIGJpbmQ6IHNlY3JldFN1YmtleVBhY2tldCxcbiAgfTtcbiAgY29uc3Qgc3Via2V5U2lnbmF0dXJlUGFja2V0ID0gbmV3IHBncC5TaWduYXR1cmVQYWNrZXQoKTtcbiAgc3Via2V5U2lnbmF0dXJlUGFja2V0LnNpZ25hdHVyZVR5cGUgPSBwZ3AuZW51bXMuc2lnbmF0dXJlLnN1YmtleUJpbmRpbmc7XG4gIHN1YmtleVNpZ25hdHVyZVBhY2tldC5wdWJsaWNLZXlBbGdvcml0aG0gPSBwZ3AuZW51bXMucHVibGljS2V5LmVjZHNhO1xuICBzdWJrZXlTaWduYXR1cmVQYWNrZXQuaGFzaEFsZ29yaXRobSA9IHBncC5lbnVtcy5oYXNoLnNoYTI1NjtcbiAgc3Via2V5U2lnbmF0dXJlUGFja2V0LmtleUZsYWdzID0gbmV3IFVpbnQ4QXJyYXkoW3BncC5lbnVtcy5rZXlGbGFncy5hdXRoZW50aWNhdGlvbl0pO1xuXG4gIC8vIFNpZ24gdGhlIHN1YmtleVxuICAvLyBAdHMtaWdub3JlIC0gc2lnbiBzdXBwb3J0cyBhcmJpdHJhcnkgZGF0YSBmb3IgMm5kIHBhcmFtOiBodHRwczovL2RvY3Mub3BlbnBncGpzLm9yZy9TaWduYXR1cmVQYWNrZXQuaHRtbFxuICBhd2FpdCBzdWJrZXlTaWduYXR1cmVQYWNrZXQuc2lnbihwcml2YXRlS2V5LmtleVBhY2tldCwgc3ViS2V5ZGF0YVRvU2lnbiwgZGF0ZVRpbWUpO1xuXG4gIC8vIEFzc2VtYmxlIHBhY2tldHMgdG9nZXRoZXIuXG4gIGNvbnN0IG5ld0tleVBrdExpc3QgPSBuZXcgcGdwLlBhY2tldExpc3QoKTtcbiAgY29uc3QgcHJpdmF0ZUtleVBrdHMgPSBwcml2YXRlS2V5LnRvUGFja2V0TGlzdCgpO1xuICBwcml2YXRlS2V5UGt0cy5mb3JFYWNoKChwYWNrZXQpID0+IG5ld0tleVBrdExpc3QucHVzaChwYWNrZXQpKTtcbiAgbmV3S2V5UGt0TGlzdC5wdXNoKHNlY3JldFN1YmtleVBhY2tldCwgc3Via2V5U2lnbmF0dXJlUGFja2V0KTtcbiAgLy8gQHRzLWlnbm9yZSAtIHN1cHBvcnRzIHBhY2tldCBsaXN0IGFzIGN0b3IgcGFyYW06IGh0dHBzOi8vZG9jcy5vcGVucGdwanMub3JnL1ByaXZhdGVLZXkuaHRtbFxuICBjb25zdCBuZXdQdWJLZXkgPSBuZXcgcGdwLlByaXZhdGVLZXkobmV3S2V5UGt0TGlzdCkudG9QdWJsaWMoKTtcblxuICBpZiAoIShhd2FpdCB2ZXJpZnlQcmltYXJ5VXNlcldyYXBwZXIobmV3UHViS2V5LCBwcml2YXRlS2V5LCB0cnVlKSlbMF0udmFsaWQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0luY29ycmVjdCBzaWduYXR1cmUnKTtcbiAgfVxuXG4gIHJldHVybiBuZXdQdWJLZXkuYXJtb3IoKS5yZXBsYWNlKC9cXHJcXG4vZywgJ1xcbicpO1xufVxuXG4vKipcbiAqIEVuY3J5cHRzIHN0cmluZyB1c2luZyBncGcga2V5XG4gKiBAREVQUkVDQVRFRCAtIHNob3VsZCB1c2UgZW5jcnlwdEFuZFNpZ25UZXh0IGluc3RlYWQgZm9yIGFkZGVkIHNlY3VyaXR5XG4gKlxuICogQHBhcmFtIHRleHQgc3RyaW5nIHRvIGVuY3J5cHRcbiAqIEBwYXJhbSBrZXkgZW5jcnlwdGlvbiBrZXlcbiAqIEByZXR1cm4ge3N0cmluZ30gZW5jcnlwdGVkIHN0cmluZ1xuICpcbiAqIFRPRE8oQkctNDcxNzApOiBEZWxldGUgb25jZSBncGcgc2lnbmF0dXJlcyBhcmUgZnVsbHkgc3VwcG9ydGVkXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBlbmNyeXB0VGV4dCh0ZXh0OiBzdHJpbmcsIGtleTogS2V5KTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgY29uc3QgbWVzc2FnZVRvRW5jcnlwdCA9IGF3YWl0IGNyZWF0ZU1lc3NhZ2Uoe1xuICAgIHRleHQsXG4gIH0pO1xuICByZXR1cm4gYXdhaXQgZW5jcnlwdCh7XG4gICAgbWVzc2FnZTogbWVzc2FnZVRvRW5jcnlwdCxcbiAgICBlbmNyeXB0aW9uS2V5czogW2tleV0sXG4gICAgZm9ybWF0OiAnYXJtb3JlZCcsXG4gICAgY29uZmlnOiB7XG4gICAgICByZWplY3RDdXJ2ZXM6IG5ldyBTZXQoKSxcbiAgICAgIHNob3dWZXJzaW9uOiBmYWxzZSxcbiAgICAgIHNob3dDb21tZW50OiBmYWxzZSxcbiAgICB9LFxuICB9KTtcbn1cblxuLyoqXG4gKiBFbmNyeXB0cyBhbmQgc2lnbnMgYSBzdHJpbmdcbiAqIEBwYXJhbSB0ZXh0IHN0cmluZyB0byBlbmNyeXB0IGFuZCBzaWduXG4gKiBAcGFyYW0gcHVibGljQXJtb3IgcHVibGljIGtleSB0byBlbmNyeXB0IHdpdGhcbiAqIEBwYXJhbSBwcml2YXRlQXJtb3IgcHJpdmF0ZSBrZXkgdG8gc2lnbiB3aXRoXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBlbmNyeXB0QW5kU2lnblRleHQodGV4dDogc3RyaW5nLCBwdWJsaWNBcm1vcjogc3RyaW5nLCBwcml2YXRlQXJtb3I6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XG4gIGNvbnN0IHB1YmxpY0tleSA9IGF3YWl0IHJlYWRLZXkoeyBhcm1vcmVkS2V5OiBwdWJsaWNBcm1vciB9KTtcbiAgY29uc3QgcHJpdmF0ZUtleSA9IGF3YWl0IHJlYWRQcml2YXRlS2V5KHsgYXJtb3JlZEtleTogcHJpdmF0ZUFybW9yIH0pO1xuXG4gIGNvbnN0IG1lc3NhZ2UgPSBhd2FpdCBjcmVhdGVNZXNzYWdlKHsgdGV4dCB9KTtcblxuICBjb25zdCBzaWduZWRNZXNzYWdlID0gYXdhaXQgZW5jcnlwdCh7XG4gICAgbWVzc2FnZSxcbiAgICBlbmNyeXB0aW9uS2V5czogcHVibGljS2V5LFxuICAgIHNpZ25pbmdLZXlzOiBwcml2YXRlS2V5LFxuICAgIGZvcm1hdDogJ2FybW9yZWQnLFxuICAgIGNvbmZpZzoge1xuICAgICAgcmVqZWN0Q3VydmVzOiBuZXcgU2V0KCksXG4gICAgICBzaG93VmVyc2lvbjogZmFsc2UsXG4gICAgICBzaG93Q29tbWVudDogZmFsc2UsXG4gICAgfSxcbiAgfSk7XG5cbiAgcmV0dXJuIHNpZ25lZE1lc3NhZ2U7XG59XG5cbi8qKlxuICogUmVhZHMgYSBzaWduZWQgYW5kIGVuY3J5cHRlZCBtZXNzYWdlXG4gKlxuICogQHBhcmFtIHNpZ25lZCBzaWduZWQgYW5kIGVuY3J5cHRlZCBtZXNzYWdlXG4gKiBAcGFyYW0gcHVibGljQXJtb3IgcHVibGljIGtleSB0byB2ZXJpZnkgc2lnbmF0dXJlXG4gKiBAcGFyYW0gcHJpdmF0ZUFybW9yIHByaXZhdGUga2V5IHRvIGRlY3J5cHQgbWVzc2FnZVxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmVhZFNpZ25lZE1lc3NhZ2Uoc2lnbmVkOiBzdHJpbmcsIHB1YmxpY0FybW9yOiBzdHJpbmcsIHByaXZhdGVBcm1vcjogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgY29uc3QgcHVibGljS2V5ID0gYXdhaXQgcmVhZEtleSh7IGFybW9yZWRLZXk6IHB1YmxpY0FybW9yIH0pO1xuICBjb25zdCBwcml2YXRlS2V5ID0gYXdhaXQgcmVhZFByaXZhdGVLZXkoeyBhcm1vcmVkS2V5OiBwcml2YXRlQXJtb3IgfSk7XG5cbiAgY29uc3QgbWVzc2FnZSA9IGF3YWl0IHJlYWRNZXNzYWdlKHsgYXJtb3JlZE1lc3NhZ2U6IHNpZ25lZCB9KTtcbiAgY29uc3QgZGVjcnlwdGVkID0gYXdhaXQgZGVjcnlwdCh7XG4gICAgbWVzc2FnZSxcbiAgICB2ZXJpZmljYXRpb25LZXlzOiBwdWJsaWNLZXksXG4gICAgZGVjcnlwdGlvbktleXM6IHByaXZhdGVLZXksXG4gICAgZXhwZWN0U2lnbmVkOiB0cnVlLFxuICAgIGNvbmZpZzogeyByZWplY3RDdXJ2ZXM6IG5ldyBTZXQoKSB9LFxuICB9KTtcblxuICByZXR1cm4gZGVjcnlwdGVkLmRhdGE7XG59XG5cbi8qKlxuICogR2VuZXJhdGVzIGEgc2lnbmF0dXJlXG4gKlxuICogQHBhcmFtIHRleHQgc3RyaW5nIHRvIGdlbmVyYXRlIGEgc2lnbmF0dXJlIGZvclxuICogQHBhcmFtIHByaXZhdGVBcm1vciBwcml2YXRlIGtleSBhcyBhcm1vcmVkIHN0cmluZ1xuICogQHJldHVybiB7c3RyaW5nfSBhcm1vcmVkIHNpZ25hdHVyZSBzdHJpbmdcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHNpZ25UZXh0KHRleHQ6IHN0cmluZywgcHJpdmF0ZUFybW9yOiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZz4ge1xuICBjb25zdCBwcml2YXRlS2V5ID0gYXdhaXQgcmVhZFByaXZhdGVLZXkoeyBhcm1vcmVkS2V5OiBwcml2YXRlQXJtb3IgfSk7XG4gIGNvbnN0IG1lc3NhZ2UgPSBhd2FpdCBjcmVhdGVNZXNzYWdlKHsgdGV4dCB9KTtcbiAgY29uc3Qgc2lnbmF0dXJlID0gYXdhaXQgc2lnbih7XG4gICAgbWVzc2FnZSxcbiAgICBzaWduaW5nS2V5czogcHJpdmF0ZUtleSxcbiAgICBmb3JtYXQ6ICdhcm1vcmVkJyxcbiAgICBkZXRhY2hlZDogdHJ1ZSxcbiAgfSk7XG5cbiAgcmV0dXJuIHNpZ25hdHVyZTtcbn1cblxuLyoqXG4gKiBWZXJpZmllcyBzaWduYXR1cmUgd2FzIGdlbmVyYXRlZCBieSB0aGUgcHVibGljIGtleSBhbmQgbWF0Y2hlcyB0aGUgZXhwZWN0ZWQgdGV4dFxuICpcbiAqIEBwYXJhbSB0ZXh0IHRleHQgdGhhdCB0aGUgc2lnbmF0dXJlIHdhcyBmb3JcbiAqIEBwYXJhbSBhcm1vcmVkU2lnbmF0dXJlIHNpZ25lZCBtZXNzYWdlIGFzIGFuIGFybW9yZWQgc3RyaW5nXG4gKiBAcGFyYW0gcHVibGljQXJtb3IgcHVibGljIGtleSB0aGF0IGdlbmVyYXRlZCB0aGUgc2lnbmF0dXJlXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB2ZXJpZnlTaWduYXR1cmUodGV4dDogc3RyaW5nLCBhcm1vcmVkU2lnbmF0dXJlOiBzdHJpbmcsIHB1YmxpY0FybW9yOiBzdHJpbmcpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgY29uc3QgcHVibGljS2V5ID0gYXdhaXQgcmVhZEtleSh7IGFybW9yZWRLZXk6IHB1YmxpY0FybW9yIH0pO1xuICBjb25zdCBzaWduYXR1cmUgPSBhd2FpdCByZWFkU2lnbmF0dXJlKHsgYXJtb3JlZFNpZ25hdHVyZSB9KTtcbiAgY29uc3QgbWVzc2FnZSA9IGF3YWl0IGNyZWF0ZU1lc3NhZ2UoeyB0ZXh0IH0pO1xuICBjb25zdCB2ZXJpZmljYXRpb25SZXN1bHQgPSBhd2FpdCB2ZXJpZnkoe1xuICAgIG1lc3NhZ2UsXG4gICAgc2lnbmF0dXJlLFxuICAgIHZlcmlmaWNhdGlvbktleXM6IHB1YmxpY0tleSxcbiAgfSk7XG5cbiAgaWYgKHZlcmlmaWNhdGlvblJlc3VsdC5zaWduYXR1cmVzLmxlbmd0aCAhPT0gMSkge1xuICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBudW1iZXIgb2Ygc2lnbmF0dXJlcycpO1xuICB9XG5cbiAgdHJ5IHtcbiAgICBhd2FpdCB2ZXJpZmljYXRpb25SZXN1bHQuc2lnbmF0dXJlc1swXS52ZXJpZmllZDtcbiAgICByZXR1cm4gdGV4dCA9PT0gdmVyaWZpY2F0aW9uUmVzdWx0LmRhdGE7XG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuXG4vKipcbiAqIEdlbmVyYXRlIGEgR1BHIGtleSBwYWlyXG4gKlxuICogQHBhcmFtOiBrZXlDdXJ2ZSB0aGUgY3VydmUgdG8gY3JlYXRlIGEga2V5IHdpdGhcbiAqIEBwYXJhbTogdXNlcm5hbWUgbmFtZSBvZiB0aGUgdXNlciAob3B0aW9uYWwpXG4gKiBAcGFyYW06IGVtYWlsIGVtYWlsIG9mIHRoZSB1c2VyIChvcHRpb25hbClcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdlbmVyYXRlR1BHS2V5UGFpcihcbiAga2V5Q3VydmU6IHBncC5FbGxpcHRpY0N1cnZlTmFtZSxcbiAgdXNlcm5hbWU/OiBzdHJpbmcgfCB1bmRlZmluZWQsXG4gIGVtYWlsPzogc3RyaW5nIHwgdW5kZWZpbmVkXG4pOiBQcm9taXNlPHBncC5TZXJpYWxpemVkS2V5UGFpcjxzdHJpbmc+PiB7XG4gIGNvbnN0IHJhbmRvbUhleFN0cmluZyA9IGNyeXB0by5yYW5kb21CeXRlcygxMikudG9TdHJpbmcoJ2hleCcpO1xuICB1c2VybmFtZSA9IHVzZXJuYW1lID8/IHJhbmRvbUhleFN0cmluZztcbiAgZW1haWwgPSBlbWFpbCA/PyBgdXNlci0ke3JhbmRvbUhleFN0cmluZ31AJHtyYW5kb21IZXhTdHJpbmd9LmNvbWA7XG5cbiAgLy8gQWxsb3cgZ2VuZXJhdGluZyBzZWNwMjU2azEga2V5IHBhaXJzXG4gIHBncC5jb25maWcucmVqZWN0Q3VydmVzID0gbmV3IFNldCgpO1xuICBjb25zdCBncGdLZXkgPSBhd2FpdCBwZ3AuZ2VuZXJhdGVLZXkoe1xuICAgIHVzZXJJRHM6IFtcbiAgICAgIHtcbiAgICAgICAgbmFtZTogdXNlcm5hbWUsXG4gICAgICAgIGVtYWlsLFxuICAgICAgfSxcbiAgICBdLFxuICAgIGN1cnZlOiBrZXlDdXJ2ZSxcbiAgfSk7XG5cbiAgcmV0dXJuIGdwZ0tleTtcbn1cbiJdfQ==