@bitgo/sdk-core 2.0.0-rc.2 → 2.0.0-rc.21
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.
- package/CHANGELOG.md +242 -0
- package/dist/src/account-lib/baseCoin/enum.d.ts +5 -4
- package/dist/src/account-lib/baseCoin/enum.d.ts.map +1 -1
- package/dist/src/account-lib/baseCoin/enum.js +4 -3
- package/dist/src/account-lib/baseCoin/secp256k1ExtendedKeyPair.d.ts +5 -5
- package/dist/src/account-lib/baseCoin/secp256k1ExtendedKeyPair.d.ts.map +1 -1
- package/dist/src/account-lib/baseCoin/secp256k1ExtendedKeyPair.js +9 -10
- package/dist/src/account-lib/mpc/curves/secp256k1.d.ts.map +1 -1
- package/dist/src/account-lib/mpc/curves/secp256k1.js +2 -2
- package/dist/src/account-lib/mpc/index.d.ts +2 -1
- package/dist/src/account-lib/mpc/index.d.ts.map +1 -1
- package/dist/src/account-lib/mpc/index.js +7 -2
- package/dist/src/account-lib/mpc/shamir.d.ts +3 -2
- package/dist/src/account-lib/mpc/shamir.d.ts.map +1 -1
- package/dist/src/account-lib/mpc/shamir.js +41 -27
- package/dist/src/account-lib/mpc/tss/ecdsa/ecdsa.d.ts +7 -4
- package/dist/src/account-lib/mpc/tss/ecdsa/ecdsa.d.ts.map +1 -1
- package/dist/src/account-lib/mpc/tss/ecdsa/ecdsa.js +24 -16
- package/dist/src/account-lib/mpc/tss/ecdsa/types.d.ts +3 -8
- package/dist/src/account-lib/mpc/tss/ecdsa/types.d.ts.map +1 -1
- package/dist/src/account-lib/mpc/tss/ecdsa/types.js +1 -1
- package/dist/src/account-lib/mpc/tss/eddsa/eddsa.d.ts.map +1 -1
- package/dist/src/account-lib/mpc/tss/eddsa/eddsa.js +4 -3
- package/dist/src/account-lib/util/crypto.d.ts.map +1 -1
- package/dist/src/account-lib/util/crypto.js +9 -10
- package/dist/src/bitgo/baseCoin/baseCoin.d.ts +10 -1
- package/dist/src/bitgo/baseCoin/baseCoin.d.ts.map +1 -1
- package/dist/src/bitgo/baseCoin/baseCoin.js +17 -4
- package/dist/src/bitgo/baseCoin/iBaseCoin.d.ts +18 -6
- package/dist/src/bitgo/baseCoin/iBaseCoin.d.ts.map +1 -1
- package/dist/src/bitgo/baseCoin/iBaseCoin.js +1 -1
- package/dist/src/bitgo/bip32util.d.ts +3 -3
- package/dist/src/bitgo/bip32util.d.ts.map +1 -1
- package/dist/src/bitgo/bip32util.js +1 -1
- package/dist/src/bitgo/bitcoin.d.ts +4 -3
- package/dist/src/bitgo/bitcoin.d.ts.map +1 -1
- package/dist/src/bitgo/bitcoin.js +1 -1
- package/dist/src/bitgo/config.d.ts +12 -6
- package/dist/src/bitgo/config.d.ts.map +1 -1
- package/dist/src/bitgo/ecdh.d.ts +3 -3
- package/dist/src/bitgo/ecdh.d.ts.map +1 -1
- package/dist/src/bitgo/ecdh.js +1 -1
- package/dist/src/bitgo/environments.d.ts +5 -0
- package/dist/src/bitgo/environments.d.ts.map +1 -1
- package/dist/src/bitgo/environments.js +13 -1
- package/dist/src/bitgo/index.d.ts +2 -0
- package/dist/src/bitgo/index.d.ts.map +1 -1
- package/dist/src/bitgo/index.js +4 -2
- package/dist/src/bitgo/keychain/keychains.d.ts.map +1 -1
- package/dist/src/bitgo/keychain/keychains.js +2 -2
- package/dist/src/bitgo/legacyBitcoin.d.ts +38 -0
- package/dist/src/bitgo/legacyBitcoin.d.ts.map +1 -0
- package/dist/src/bitgo/legacyBitcoin.js +97 -0
- package/dist/src/bitgo/lightning/iLightning.d.ts +71 -11
- package/dist/src/bitgo/lightning/iLightning.d.ts.map +1 -1
- package/dist/src/bitgo/lightning/iLightning.js +28 -3
- package/dist/src/bitgo/lightning/index.d.ts +2 -0
- package/dist/src/bitgo/lightning/index.d.ts.map +1 -1
- package/dist/src/bitgo/lightning/index.js +3 -1
- package/dist/src/bitgo/lightning/lightning.d.ts +10 -5
- package/dist/src/bitgo/lightning/lightning.d.ts.map +1 -1
- package/dist/src/bitgo/lightning/lightning.js +55 -6
- package/dist/src/bitgo/lightning/lightningUtils.d.ts +42 -0
- package/dist/src/bitgo/lightning/lightningUtils.d.ts.map +1 -0
- package/dist/src/bitgo/lightning/lightningUtils.js +139 -0
- package/dist/src/bitgo/lightning/lnurlCodec.d.ts +3 -0
- package/dist/src/bitgo/lightning/lnurlCodec.d.ts.map +1 -0
- package/dist/src/bitgo/lightning/lnurlCodec.js +28 -0
- package/dist/src/bitgo/recovery/initiate.d.ts +3 -3
- package/dist/src/bitgo/recovery/initiate.d.ts.map +1 -1
- package/dist/src/bitgo/recovery/initiate.js +5 -24
- package/dist/src/bitgo/staking/iStakingWallet.d.ts +32 -0
- package/dist/src/bitgo/staking/iStakingWallet.d.ts.map +1 -1
- package/dist/src/bitgo/staking/iStakingWallet.js +10 -1
- package/dist/src/bitgo/staking/stakingWallet.d.ts +9 -1
- package/dist/src/bitgo/staking/stakingWallet.d.ts.map +1 -1
- package/dist/src/bitgo/staking/stakingWallet.js +19 -4
- package/dist/src/bitgo/tss/common.d.ts +1 -1
- package/dist/src/bitgo/tss/common.d.ts.map +1 -1
- package/dist/src/bitgo/tss/common.js +7 -3
- package/dist/src/bitgo/tss/ecdsa/ecdsa.d.ts +52 -9
- package/dist/src/bitgo/tss/ecdsa/ecdsa.d.ts.map +1 -1
- package/dist/src/bitgo/tss/ecdsa/ecdsa.js +209 -87
- package/dist/src/bitgo/tss/ecdsa/types.d.ts +4 -2
- package/dist/src/bitgo/tss/ecdsa/types.d.ts.map +1 -1
- package/dist/src/bitgo/tss/ecdsa/types.js +1 -1
- package/dist/src/bitgo/utils/mpcUtils.d.ts.map +1 -1
- package/dist/src/bitgo/utils/mpcUtils.js +2 -1
- package/dist/src/bitgo/utils/opengpgUtils.d.ts +33 -0
- package/dist/src/bitgo/utils/opengpgUtils.d.ts.map +1 -1
- package/dist/src/bitgo/utils/opengpgUtils.js +106 -2
- package/dist/src/bitgo/utils/tss/baseTSSUtils.d.ts +3 -6
- package/dist/src/bitgo/utils/tss/baseTSSUtils.d.ts.map +1 -1
- package/dist/src/bitgo/utils/tss/baseTSSUtils.js +4 -1
- package/dist/src/bitgo/utils/tss/baseTypes.d.ts +15 -0
- package/dist/src/bitgo/utils/tss/baseTypes.d.ts.map +1 -1
- package/dist/src/bitgo/utils/tss/baseTypes.js +7 -2
- package/dist/src/bitgo/utils/tss/ecdsa/ecdsa.d.ts +20 -9
- package/dist/src/bitgo/utils/tss/ecdsa/ecdsa.d.ts.map +1 -1
- package/dist/src/bitgo/utils/tss/ecdsa/ecdsa.js +33 -6
- package/dist/src/bitgo/utils/tss/eddsa/eddsa.d.ts +2 -7
- package/dist/src/bitgo/utils/tss/eddsa/eddsa.d.ts.map +1 -1
- package/dist/src/bitgo/utils/tss/eddsa/eddsa.js +1 -1
- package/dist/src/bitgo/utils/tss/index.d.ts +1 -1
- package/dist/src/bitgo/utils/tss/index.js +2 -2
- package/dist/src/bitgo/utils/util.js +4 -4
- package/dist/src/bitgo/wallet/iWallet.d.ts +9 -3
- package/dist/src/bitgo/wallet/iWallet.d.ts.map +1 -1
- package/dist/src/bitgo/wallet/iWallet.js +1 -1
- package/dist/src/bitgo/wallet/iWallets.d.ts +1 -0
- package/dist/src/bitgo/wallet/iWallets.d.ts.map +1 -1
- package/dist/src/bitgo/wallet/iWallets.js +1 -1
- package/dist/src/bitgo/wallet/wallet.d.ts +22 -2
- package/dist/src/bitgo/wallet/wallet.d.ts.map +1 -1
- package/dist/src/bitgo/wallet/wallet.js +96 -7
- package/dist/src/bitgo/wallet/wallets.d.ts.map +1 -1
- package/dist/src/bitgo/wallet/wallets.js +5 -3
- package/dist/src/coins/ofc.js +4 -23
- package/dist/tsconfig.tsbuildinfo +740 -792
- package/package.json +12 -7
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const assert = require('assert');
|
|
4
3
|
const crypto = require('crypto');
|
|
5
4
|
const util_1 = require("./util");
|
|
6
5
|
class Shamir {
|
|
@@ -14,14 +13,20 @@ class Shamir {
|
|
|
14
13
|
* @param secret secret to split
|
|
15
14
|
* @param threshold share threshold required to reconstruct secret
|
|
16
15
|
* @param numShares total number of shares to split to split secret into
|
|
17
|
-
* @param indices
|
|
16
|
+
* @param indices optional indices which can be used while generating the shares
|
|
17
|
+
* @param salt optional salt which could be used while generating the shares
|
|
18
18
|
* @returns Dictionary of shares. Each key is an int in the range 1<=x<=numShares
|
|
19
19
|
* representing that share's free term.
|
|
20
20
|
*/
|
|
21
|
-
split(secret, threshold, numShares, indices) {
|
|
21
|
+
split(secret, threshold, numShares, indices, salt = BigInt(0)) {
|
|
22
22
|
let bigIndices;
|
|
23
23
|
if (indices) {
|
|
24
|
-
bigIndices = indices.map((i) =>
|
|
24
|
+
bigIndices = indices.map((i) => {
|
|
25
|
+
if (i < 1) {
|
|
26
|
+
throw new Error('Invalid value supplied for indices');
|
|
27
|
+
}
|
|
28
|
+
return BigInt(i);
|
|
29
|
+
});
|
|
25
30
|
}
|
|
26
31
|
else {
|
|
27
32
|
// make range(1, n + 1)
|
|
@@ -29,8 +34,12 @@ class Shamir {
|
|
|
29
34
|
.fill(null)
|
|
30
35
|
.map((_, i) => BigInt(i + 1));
|
|
31
36
|
}
|
|
32
|
-
|
|
33
|
-
|
|
37
|
+
if (threshold < 2) {
|
|
38
|
+
throw new Error('Threshold cannot be less than two');
|
|
39
|
+
}
|
|
40
|
+
if (threshold > numShares) {
|
|
41
|
+
throw new Error('Threshold cannot be greater than the total number of shares');
|
|
42
|
+
}
|
|
34
43
|
const coefs = [];
|
|
35
44
|
for (let ind = 0; ind < threshold - 1; ind++) {
|
|
36
45
|
const coeff = util_1.clamp(util_1.bigIntFromBufferLE(crypto.createHmac('sha256', ind.toString(10)).update(util_1.bigIntToBufferLE(secret, 32)).digest()));
|
|
@@ -56,31 +65,36 @@ class Shamir {
|
|
|
56
65
|
* @returns secret
|
|
57
66
|
*/
|
|
58
67
|
combine(shares) {
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
const
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
const
|
|
67
|
-
|
|
68
|
-
|
|
68
|
+
try {
|
|
69
|
+
let s = BigInt(0);
|
|
70
|
+
for (const i in shares) {
|
|
71
|
+
const yi = shares[i];
|
|
72
|
+
const xi = BigInt(i);
|
|
73
|
+
let num = BigInt(1);
|
|
74
|
+
let denum = BigInt(1);
|
|
75
|
+
for (const j in shares) {
|
|
76
|
+
const xj = BigInt(j);
|
|
77
|
+
if (xi !== xj) {
|
|
78
|
+
num = this.curve.scalarMult(num, xj);
|
|
79
|
+
}
|
|
69
80
|
}
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
81
|
+
for (const j in shares) {
|
|
82
|
+
const xj = BigInt(j);
|
|
83
|
+
if (xi !== xj) {
|
|
84
|
+
denum = this.curve.scalarMult(denum, this.curve.scalarSub(xj, xi));
|
|
85
|
+
}
|
|
75
86
|
}
|
|
87
|
+
const inverted = this.curve.scalarInvert(denum);
|
|
88
|
+
const innerMultiplied = this.curve.scalarMult(num, inverted);
|
|
89
|
+
const multiplied = this.curve.scalarMult(innerMultiplied, yi);
|
|
90
|
+
s = this.curve.scalarAdd(multiplied, s);
|
|
76
91
|
}
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
92
|
+
return s;
|
|
93
|
+
}
|
|
94
|
+
catch (error) {
|
|
95
|
+
throw new Error('Failed to combine Shamir shares , ' + error);
|
|
81
96
|
}
|
|
82
|
-
return s;
|
|
83
97
|
}
|
|
84
98
|
}
|
|
85
99
|
exports.default = Shamir;
|
|
86
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
100
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hhbWlyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2FjY291bnQtbGliL21wYy9zaGFtaXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxNQUFNLE1BQU0sR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7QUFFakMsaUNBQXFFO0FBRXJFLE1BQXFCLE1BQU07SUFHekIsWUFBWSxLQUFZO1FBQ3RCLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO0lBQ3JCLENBQUM7SUFFRDs7Ozs7Ozs7Ozs7T0FXRztJQUNILEtBQUssQ0FDSCxNQUFjLEVBQ2QsU0FBaUIsRUFDakIsU0FBaUIsRUFDakIsT0FBdUIsRUFDdkIsSUFBSSxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUM7UUFFaEIsSUFBSSxVQUF5QixDQUFDO1FBQzlCLElBQUksT0FBTyxFQUFFO1lBQ1gsVUFBVSxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtnQkFDN0IsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFO29CQUNULE1BQU0sSUFBSSxLQUFLLENBQUMsb0NBQW9DLENBQUMsQ0FBQztpQkFDdkQ7Z0JBQ0QsT0FBTyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDbkIsQ0FBQyxDQUFDLENBQUM7U0FDSjthQUFNO1lBQ0wsdUJBQXVCO1lBQ3ZCLFVBQVUsR0FBRyxLQUFLLENBQUMsU0FBUyxDQUFDO2lCQUMxQixJQUFJLENBQUMsSUFBSSxDQUFDO2lCQUNWLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUNqQztRQUNELElBQUksU0FBUyxHQUFHLENBQUMsRUFBRTtZQUNqQixNQUFNLElBQUksS0FBSyxDQUFDLG1DQUFtQyxDQUFDLENBQUM7U0FDdEQ7UUFFRCxJQUFJLFNBQVMsR0FBRyxTQUFT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LENBQUMsQ0FBQztnQkFDaEQsTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFLFFBQVEsQ0FBQyxDQUFDO2dCQUM3RCxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxlQUFlLEVBQUUsRUFBRSxDQUFDLENBQUM7Z0JBQzlELENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDLENBQUM7YUFDekM7WUFDRCxPQUFPLENBQUMsQ0FBQztTQUNWO1FBQUMsT0FBTyxLQUFLLEVBQUU7WUFDZCxNQUFNLElBQUksS0FBSyxDQUFDLG9DQUFvQyxHQUFHLEtBQUssQ0FBQyxDQUFDO1NBQy9EO0lBQ0gsQ0FBQztDQUNGO0FBM0dELHlCQTJHQyIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IGNyeXB0byA9IHJlcXVpcmUoJ2NyeXB0bycpO1xuaW1wb3J0IEN1cnZlIGZyb20gJy4vY3VydmVzJztcbmltcG9ydCB7IGJpZ0ludEZyb21CdWZmZXJMRSwgYmlnSW50VG9CdWZmZXJMRSwgY2xhbXAgfSBmcm9tICcuL3V0aWwnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTaGFtaXIge1xuICBjdXJ2ZTogQ3VydmU7XG5cbiAgY29uc3RydWN0b3IoY3VydmU6IEN1cnZlKSB7XG4gICAgdGhpcy5jdXJ2ZSA9IGN1cnZlO1xuICB9XG5cbiAgLyoqXG4gICAqIFBlcmZvcm0gU2hhbWlyIHNoYXJpbmcgb24gdGhlIHNlY3JldCBgc2VjcmV0YCB0byB0aGUgZGVncmVlIGB0aHJlc2hvbGQgLSAxYCBzcGxpdCBgbnVtU2hhcmVzYFxuICAgKiB3YXlzLiBUaGUgc3BsaXQgc2VjcmV0IHJlcXVpcmVzIGB0aHJlc2hvbGRgIHNoYXJlcyB0byBiZSByZWNvbnN0cnVjdGVkLlxuICAgKlxuICAgKiBAcGFyYW0gc2VjcmV0IHNlY3JldCB0byBzcGxpdFxuICAgKiBAcGFyYW0gdGhyZXNob2xkIHNoYXJlIHRocmVzaG9sZCByZXF1aXJlZCB0byByZWNvbnN0cnVjdCBzZWNyZXRcbiAgICogQHBhcmFtIG51bVNoYXJlcyB0b3RhbCBudW1iZXIgb2Ygc2hhcmVzIHRvIHNwbGl0IHRvIHNwbGl0IHNlY3JldCBpbnRvXG4gICAqIEBwYXJhbSBpbmRpY2VzIG9wdGlvbmFsIGluZGljZXMgd2hpY2ggY2FuIGJlIHVzZWQgd2hpbGUgZ2VuZXJhdGluZyB0aGUgc2hhcmVzXG4gICAqIEBwYXJhbSBzYWx0IG9wdGlvbmFsIHNhbHQgd2hpY2ggY291bGQgYmUgdXNlZCB3aGlsZSBnZW5lcmF0aW5nIHRoZSBzaGFyZXNcbiAgICogQHJldHVybnMgRGljdGlvbmFyeSBvZiBzaGFyZXMuIEVhY2gga2V5IGlzIGFuIGludCBpbiB0aGUgcmFuZ2UgMTw9eDw9bnVtU2hhcmVzXG4gICAqIHJlcHJlc2VudGluZyB0aGF0IHNoYXJlJ3MgZnJlZSB0ZXJtLlxuICAgKi9cbiAgc3BsaXQoXG4gICAgc2VjcmV0OiBiaWdpbnQsXG4gICAgdGhyZXNob2xkOiBudW1iZXIsXG4gICAgbnVtU2hhcmVzOiBudW1iZXIsXG4gICAgaW5kaWNlcz86IEFycmF5PG51bWJlcj4sXG4gICAgc2FsdCA9IEJpZ0ludCgwKVxuICApOiBSZWNvcmQ8bnVtYmVyLCBiaWdpbnQ+IHtcbiAgICBsZXQgYmlnSW5kaWNlczogQXJyYXk8YmlnaW50PjtcbiAgICBpZiAoaW5kaWNlcykge1xuICAgICAgYmlnSW5kaWNlcyA9IGluZGljZXMubWFwKChpKSA9PiB7XG4gICAgICAgIGlmIChpIDwgMSkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCB2YWx1ZSBzdXBwbGllZCBmb3IgaW5kaWNlcycpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBCaWdJbnQoaSk7XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gbWFrZSByYW5nZSgxLCBuICsgMSlcbiAgICAgIGJpZ0luZGljZXMgPSBBcnJheShudW1TaGFyZXMpXG4gICAgICAgIC5maWxsKG51bGwpXG4gICAgICAgIC5tYXAoKF8sIGkpID0+IEJpZ0ludChpICsgMSkpO1xuICAgIH1cbiAgICBpZiAodGhyZXNob2xkIDwgMikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdUaHJlc2hvbGQgY2Fubm90IGJlIGxlc3MgdGhhbiB0d28nKTtcbiAgICB9XG5cbiAgICBpZiAodGhyZXNob2xkID4gbnVtU2hhcmVzKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1RocmVzaG9sZCBjYW5ub3QgYmUgZ3JlYXRlciB0aGFuIHRoZSB0b3RhbCBudW1iZXIgb2Ygc2hhcmVzJyk7XG4gICAgfVxuXG4gICAgY29uc3QgY29lZnM6IGJpZ2ludFtdID0gW107XG4gICAgZm9yIChsZXQgaW5kID0gMDsgaW5kIDwgdGhyZXNob2xkIC0gMTsgaW5kKyspIHtcbiAgICAgIGNvbnN0IGNvZWZmID0gY2xhbXAoXG4gICAgICAgIGJpZ0ludEZyb21CdWZmZXJMRShjcnlwdG8uY3JlYXRlSG1hYygnc2hhMjU2JywgaW5kLnRvU3RyaW5nKDEwKSkudXBkYXRlKGJpZ0ludFRvQnVmZmVyTEUoc2VjcmV0LCAzMikpLmRpZ2VzdCgpKVxuICAgICAgKTtcbiAgICAgIGNvZWZzLnB1c2goY29lZmYpO1xuICAgIH1cbiAgICBjb2Vmcy5wdXNoKHNlY3JldCk7XG5cbiAgICBjb25zdCBzaGFyZXM6IFJlY29yZDxudW1iZXIsIGJpZ2ludD4gPSB7fTtcbiAgICBmb3IgKGxldCBpbmQgPSAwOyBpbmQgPCBiaWdJbmRpY2VzLmxlbmd0aDsgaW5kKyspIHtcbiAgICAgIGNvbnN0IHggPSBiaWdJbmRpY2VzW2luZF07XG4gICAgICBsZXQgcGFydGlhbCA9IGNvZWZzWzBdO1xuICAgICAgZm9yIChsZXQgb3RoZXIgPSAxOyBvdGhlciA8IGNvZWZzLmxlbmd0aDsgb3RoZXIrKykge1xuICAgICAgICBwYXJ0aWFsID0gdGhpcy5jdXJ2ZS5zY2FsYXJBZGQoY29lZnNbb3RoZXJdLCB0aGlzLmN1cnZlLnNjYWxhck11bHQocGFydGlhbCwgeCkpO1xuICAgICAgfVxuICAgICAgc2hhcmVzW3BhcnNlSW50KHgudG9TdHJpbmcoKSwgMTApXSA9IHBhcnRpYWw7XG4gICAgfVxuICAgIHJldHVybiBzaGFyZXM7XG4gIH1cblxuICAvKipcbiAgICogUmVjb25zdGl0dXRlIGEgc2VjcmV0IGZyb20gYSBkaWN0aW9uYXJ5IG9mIHNoYXJlcy4gVGhlIG51bWJlciBvZiBzaGFyZXMgbXVzdFxuICAgKiBiZSBlcXVhbCB0byBgdGAgdG8gcmVjb25zdGl0dXRlIHRoZSBvcmlnaW5hbCBzZWNyZXQuXG4gICAqXG4gICAqIEBwYXJhbSBzaGFyZXMgZGljdGlvbmFyeSBvZiBzaGFyZXMuIGVhY2gga2V5IGlzIHRoZSBmcmVlIHRlcm0gb2YgdGhlIHNoYXJlXG4gICAqIEByZXR1cm5zIHNlY3JldFxuICAgKi9cbiAgY29tYmluZShzaGFyZXM6IFJlY29yZDxudW1iZXIsIGJpZ2ludD4pOiBiaWdpbnQge1xuICAgIHRyeSB7XG4gICAgICBsZXQgcyA9IEJpZ0ludCgwKTtcbiAgICAgIGZvciAoY29uc3QgaSBpbiBzaGFyZXMpIHtcbiAgICAgICAgY29uc3QgeWkgPSBzaGFyZXNbaV07XG4gICAgICAgIGNvbnN0IHhpID0gQmlnSW50KGkpO1xuICAgICAgICBsZXQgbnVtID0gQmlnSW50KDEpO1xuICAgICAgICBsZXQgZGVudW0gPSBCaWdJbnQoMSk7XG5cbiAgICAgICAgZm9yIChjb25zdCBqIGluIHNoYXJlcykge1xuICAgICAgICAgIGNvbnN0IHhqID0gQmlnSW50KGopO1xuICAgICAgICAgIGlmICh4aSAhPT0geGopIHtcbiAgICAgICAgICAgIG51bSA9IHRoaXMuY3VydmUuc2NhbGFyTXVsdChudW0sIHhqKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZm9yIChjb25zdCBqIGluIHNoYXJlcykge1xuICAgICAgICAgIGNvbnN0IHhqID0gQmlnSW50KGopO1xuICAgICAgICAgIGlmICh4aSAhPT0geGopIHtcbiAgICAgICAgICAgIGRlbnVtID0gdGhpcy5jdXJ2ZS5zY2FsYXJNdWx0KGRlbnVtLCB0aGlzLmN1cnZlLnNjYWxhclN1Yih4aiwgeGkpKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgaW52ZXJ0ZWQgPSB0aGlzLmN1cnZlLnNjYWxhckludmVydChkZW51bSk7XG4gICAgICAgIGNvbnN0IGlubmVyTXVsdGlwbGllZCA9IHRoaXMuY3VydmUuc2NhbGFyTXVsdChudW0sIGludmVydGVkKTtcbiAgICAgICAgY29uc3QgbXVsdGlwbGllZCA9IHRoaXMuY3VydmUuc2NhbGFyTXVsdChpbm5lck11bHRpcGxpZWQsIHlpKTtcbiAgICAgICAgcyA9IHRoaXMuY3VydmUuc2NhbGFyQWRkKG11bHRpcGxpZWQsIHMpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHM7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignRmFpbGVkIHRvIGNvbWJpbmUgU2hhbWlyIHNoYXJlcyAsICcgKyBlcnJvcik7XG4gICAgfVxuICB9XG59XG4iXX0=
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
|
+
import { Hash } from 'crypto';
|
|
2
3
|
import { Secp256k1Curve } from '../../curves';
|
|
3
4
|
import Shamir from '../../shamir';
|
|
4
|
-
import { NShare, PShare, KeyShare, KeyCombined, Signature, SignConvertRT, SignConvert, SignCombine, SignCombineRT, DShare, OShare,
|
|
5
|
+
import { NShare, PShare, KeyShare, KeyCombined, Signature, SignConvertRT, SignConvert, SignCombine, SignCombineRT, DShare, OShare, SShare, SignShareRT, XShare, YShare } from './types';
|
|
5
6
|
/**
|
|
6
7
|
* ECDSA TSS implementation supporting 2:n Threshold
|
|
7
8
|
*/
|
|
@@ -52,9 +53,10 @@ export default class Ecdsa {
|
|
|
52
53
|
* @param {Buffer} M Message to be signed
|
|
53
54
|
* @param {OShare} oShare private omicron share of current participant
|
|
54
55
|
* @param {DShare} dShare delta share received from the other participant
|
|
55
|
-
* @
|
|
56
|
+
* @param {Hash} hash hashing algorithm implementing Node`s standard crypto hash interface
|
|
57
|
+
* @returns {SShare}
|
|
56
58
|
*/
|
|
57
|
-
sign(M: Buffer, oShare: OShare, dShare: DShare):
|
|
59
|
+
sign(M: Buffer, oShare: OShare, dShare: DShare, hash?: Hash): SShare;
|
|
58
60
|
/**
|
|
59
61
|
* Construct full signature by combining Sign Shares
|
|
60
62
|
* @param {SShare[]} shares
|
|
@@ -65,8 +67,9 @@ export default class Ecdsa {
|
|
|
65
67
|
* Verify ecdsa signatures
|
|
66
68
|
* @param {Buffer} message
|
|
67
69
|
* @param {Signature } signature
|
|
70
|
+
* @param {Hash} hash hashing algorithm implementing Node`s standard crypto hash interface
|
|
68
71
|
* @returns {boolean} True if signature is valid; False otherwise
|
|
69
72
|
*/
|
|
70
|
-
verify(message: Buffer, signature: Signature): boolean;
|
|
73
|
+
verify(message: Buffer, signature: Signature, hash?: Hash): boolean;
|
|
71
74
|
}
|
|
72
75
|
//# sourceMappingURL=ecdsa.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ecdsa.d.ts","sourceRoot":"","sources":["../../../../../../src/account-lib/mpc/tss/ecdsa/ecdsa.ts"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"ecdsa.d.ts","sourceRoot":"","sources":["../../../../../../src/account-lib/mpc/tss/ecdsa/ecdsa.ts"],"names":[],"mappings":";AAGA,OAAO,EAA2B,IAAI,EAAE,MAAM,QAAQ,CAAC;AAGvD,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,MAAM,MAAM,cAAc,CAAC;AAClC,OAAO,EACL,MAAM,EACN,MAAM,EACN,QAAQ,EACR,WAAW,EAGX,SAAS,EACT,aAAa,EACb,WAAW,EAGX,WAAW,EACX,aAAa,EACb,MAAM,EACN,MAAM,EACN,MAAM,EACN,WAAW,EAEX,MAAM,EACN,MAAM,EACP,MAAM,SAAS,CAAC;AAKjB;;GAEG;AACH,MAAM,CAAC,OAAO,OAAO,KAAK;IACxB,MAAM,CAAC,KAAK,EAAE,cAAc,CAAwB;IACpD,MAAM,CAAC,MAAM,EAAE,MAAM,CAA2B;IAChD;;;;;;;;OAQG;IACG,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IA6CrG;;;;;;OAMG;IACH,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,WAAW;IAsC1D;;;;;;OAMG;IACH,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,WAAW;IAsCtD;;;;;OAKG;IACH,WAAW,CAAC,MAAM,EAAE,WAAW,GAAG,aAAa;IAiF/C;;;;OAIG;IACH,WAAW,CAAC,MAAM,EAAE,WAAW,GAAG,aAAa;IAiC/C;;;;;;;OAOG;IACH,IAAI,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG,MAAM;IAwBpE;;;;OAIG;IACH,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,SAAS;IAqB/C;;;;;;OAMG;IACH,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG,OAAO;CAWpE"}
|
|
@@ -23,12 +23,15 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
23
23
|
};
|
|
24
24
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
25
25
|
const paillierBigint = __importStar(require("paillier-bigint"));
|
|
26
|
+
const bigintCryptoUtils = __importStar(require("bigint-crypto-utils"));
|
|
26
27
|
const secp = __importStar(require("@noble/secp256k1"));
|
|
27
28
|
const crypto_1 = require("crypto");
|
|
28
29
|
const crypto_2 = require("../../../util/crypto");
|
|
29
30
|
const util_1 = require("../../util");
|
|
30
31
|
const curves_1 = require("../../curves");
|
|
31
32
|
const shamir_1 = __importDefault(require("../../shamir"));
|
|
33
|
+
const _1n = BigInt(1);
|
|
34
|
+
const _3n = BigInt(3);
|
|
32
35
|
/**
|
|
33
36
|
* ECDSA TSS implementation supporting 2:n Threshold
|
|
34
37
|
*/
|
|
@@ -205,12 +208,12 @@ class Ecdsa {
|
|
|
205
208
|
const n = crypto_2.hexToBigInt(shareToBeSend['n']); // Paillier pub from other signer
|
|
206
209
|
let pk = util_1.getPaillierPublicKey(n);
|
|
207
210
|
const k = crypto_2.hexToBigInt(shareToBeSend['k']);
|
|
208
|
-
const beta0 =
|
|
209
|
-
shareParticipant.beta = util_1.bigIntToBufferBE(Ecdsa.curve.
|
|
211
|
+
const beta0 = bigintCryptoUtils.randBetween(n / _3n - _1n);
|
|
212
|
+
shareParticipant.beta = util_1.bigIntToBufferBE(Ecdsa.curve.scalarNegate(Ecdsa.curve.scalarReduce(beta0)), 32).toString('hex');
|
|
210
213
|
const alpha = pk.addition(pk.multiply(k, crypto_2.hexToBigInt(shareParticipant.gamma)), pk.encrypt(beta0));
|
|
211
214
|
shareToBeSend.alpha = util_1.bigIntToBufferBE(alpha, 32).toString('hex');
|
|
212
|
-
const nu0 =
|
|
213
|
-
shareParticipant.nu = util_1.bigIntToBufferBE(Ecdsa.curve.scalarNegate(nu0), 32).toString('hex');
|
|
215
|
+
const nu0 = bigintCryptoUtils.randBetween(n / _3n - _1n);
|
|
216
|
+
shareParticipant.nu = util_1.bigIntToBufferBE(Ecdsa.curve.scalarNegate(Ecdsa.curve.scalarReduce(nu0)), 32).toString('hex');
|
|
214
217
|
const mu = pk.addition(pk.multiply(k, crypto_2.hexToBigInt(shareParticipant.w)), pk.encrypt(nu0));
|
|
215
218
|
shareToBeSend.mu = util_1.bigIntToBufferBE(mu, 32).toString('hex');
|
|
216
219
|
if (shareParticipant['alpha']) {
|
|
@@ -281,10 +284,11 @@ class Ecdsa {
|
|
|
281
284
|
* @param {Buffer} M Message to be signed
|
|
282
285
|
* @param {OShare} oShare private omicron share of current participant
|
|
283
286
|
* @param {DShare} dShare delta share received from the other participant
|
|
284
|
-
* @
|
|
287
|
+
* @param {Hash} hash hashing algorithm implementing Node`s standard crypto hash interface
|
|
288
|
+
* @returns {SShare}
|
|
285
289
|
*/
|
|
286
|
-
sign(M, oShare, dShare) {
|
|
287
|
-
const m = crypto_1.createHash('sha256').update(M).digest();
|
|
290
|
+
sign(M, oShare, dShare, hash) {
|
|
291
|
+
const m = (hash || crypto_1.createHash('sha256')).update(M).digest();
|
|
288
292
|
const delta = Ecdsa.curve.scalarAdd(crypto_2.hexToBigInt(oShare.delta), crypto_2.hexToBigInt(dShare.delta));
|
|
289
293
|
const R = Ecdsa.curve.pointMultiply(Ecdsa.curve.pointAdd(crypto_2.hexToBigInt(oShare.Gamma), crypto_2.hexToBigInt(dShare.Gamma)), Ecdsa.curve.scalarInvert(delta));
|
|
290
294
|
const pointR = secp.Point.fromHex(util_1.bigIntToBufferBE(R, 32));
|
|
@@ -293,7 +297,7 @@ class Ecdsa {
|
|
|
293
297
|
return {
|
|
294
298
|
i: oShare.i,
|
|
295
299
|
y: oShare.y,
|
|
296
|
-
|
|
300
|
+
R: pointR.toHex(true),
|
|
297
301
|
s: util_1.bigIntToBufferBE(s, 32).toString('hex'),
|
|
298
302
|
};
|
|
299
303
|
}
|
|
@@ -303,29 +307,33 @@ class Ecdsa {
|
|
|
303
307
|
* @returns {Signature}
|
|
304
308
|
*/
|
|
305
309
|
constructSignature(shares) {
|
|
306
|
-
// Every
|
|
307
|
-
const
|
|
308
|
-
const isRMatching = shares.map((share) => share['
|
|
310
|
+
// Every R must match.
|
|
311
|
+
const R = shares[0]['R'];
|
|
312
|
+
const isRMatching = shares.map((share) => share['R'] === R).reduce((a, b) => a && b);
|
|
309
313
|
if (!isRMatching) {
|
|
310
|
-
throw new Error('
|
|
314
|
+
throw new Error('R value should be consistent across all shares');
|
|
311
315
|
}
|
|
312
316
|
let s = shares.map((share) => crypto_2.hexToBigInt(share['s'])).reduce(Ecdsa.curve.scalarAdd);
|
|
317
|
+
const recid = (R.slice(0, 2) === '03' ? 1 : 0) ^ (s > Ecdsa.curve.order() / BigInt(2) ? 1 : 0);
|
|
313
318
|
// Normalize s.
|
|
314
319
|
s = s > Ecdsa.curve.order() / BigInt(2) ? Ecdsa.curve.order() - s : s;
|
|
315
320
|
return {
|
|
316
321
|
y: shares[0]['y'],
|
|
317
|
-
r:
|
|
322
|
+
r: R.slice(2),
|
|
318
323
|
s: util_1.bigIntToBufferBE(s, 32).toString('hex'),
|
|
324
|
+
recid: recid,
|
|
319
325
|
};
|
|
320
326
|
}
|
|
321
327
|
/**
|
|
322
328
|
* Verify ecdsa signatures
|
|
323
329
|
* @param {Buffer} message
|
|
324
330
|
* @param {Signature } signature
|
|
331
|
+
* @param {Hash} hash hashing algorithm implementing Node`s standard crypto hash interface
|
|
325
332
|
* @returns {boolean} True if signature is valid; False otherwise
|
|
326
333
|
*/
|
|
327
|
-
verify(message, signature) {
|
|
328
|
-
return Ecdsa.curve.verify(crypto_1.createHash('sha256').update(message).digest(), Buffer.concat([
|
|
334
|
+
verify(message, signature, hash) {
|
|
335
|
+
return Ecdsa.curve.verify((hash || crypto_1.createHash('sha256')).update(message).digest(), Buffer.concat([
|
|
336
|
+
Buffer.from([signature['recid']]),
|
|
329
337
|
util_1.bigIntToBufferBE(crypto_2.hexToBigInt(signature['r']), 32),
|
|
330
338
|
util_1.bigIntToBufferBE(crypto_2.hexToBigInt(signature['s']), 32),
|
|
331
339
|
]), crypto_2.hexToBigInt(signature['y']));
|
|
@@ -334,4 +342,4 @@ class Ecdsa {
|
|
|
334
342
|
exports.default = Ecdsa;
|
|
335
343
|
Ecdsa.curve = new curves_1.Secp256k1Curve();
|
|
336
344
|
Ecdsa.shamir = new shamir_1.default(Ecdsa.curve);
|
|
337
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWNkc2EuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYWNjb3VudC1saWIvbXBjL3Rzcy9lY2RzYS9lY2RzYS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxnRUFBa0Q7QUFDbEQsdURBQXlDO0FBQ3pDLG1DQUFpRDtBQUNqRCxpREFBbUQ7QUFDbkQscUNBQXlHO0FBQ3pHLHlDQUE4QztBQUM5QywwREFBa0M7QUF5QmxDOztHQUVHO0FBQ0gsTUFBcUIsS0FBSztJQUd4Qjs7Ozs7Ozs7T0FRRztJQUNILEtBQUssQ0FBQyxRQUFRLENBQUMsS0FBYSxFQUFFLFNBQWlCLEVBQUUsU0FBaUIsRUFBRSxJQUFhOztRQUMvRSxJQUFJLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxJQUFJLEtBQUssSUFBSSxTQUFTLElBQUksU0FBUyxJQUFJLFNBQVMsSUFBSSxTQUFTLEtBQUssQ0FBQyxDQUFDLEVBQUU7WUFDbkYsTUFBTSx5QkFBeUIsQ0FBQztTQUNqQztRQUVELElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssRUFBRSxFQUFFO1lBQzlCLE1BQU0sSUFBSSxLQUFLLENBQUMsMEJBQTBCLENBQUMsQ0FBQztTQUM3QztRQUNELGtEQUFrRDtRQUNsRCxNQUFNLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxHQUFHLE1BQU0sY0FBYyxDQUFDLGtCQUFrQixDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztRQUN0RixNQUFNLENBQUMsR0FBRyxNQUFBLENBQUMsSUFBSSxJQUFJLHNCQUFlLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsbUNBQUksS0FBSyxDQUFDLEtBQUssQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUNsSCxNQUFNLENBQUMs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QUFNLENBQUMsT0FBZSxFQUFFLFNBQW9CO1FBQzFDLE9BQU8sS0FBSyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQ3ZCLG1CQUFVLENBQUMsUUFBUSxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUM3QyxNQUFNLENBQUMsTUFBTSxDQUFDO1lBQ1osdUJBQWdCLENBQUMsb0JBQVcsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDakQsdUJBQWdCLENBQUMsb0JBQVcsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUM7U0FDbEQsQ0FBQyxFQUNGLG9CQUFXLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQzVCLENBQUM7SUFDSixDQUFDOztBQXBWSCx3QkFxVkM7QUFwVlEsV0FBSyxHQUFtQixJQUFJLHVCQUFjLEVBQUUsQ0FBQztBQUM3QyxZQUFNLEdBQVcsSUFBSSxnQkFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHBhaWxsaWVyQmlnaW50IGZyb20gJ3BhaWxsaWVyLWJpZ2ludCc7XG5pbXBvcnQgKiBhcyBzZWNwIGZyb20gJ0Bub2JsZS9zZWNwMjU2azEnO1xuaW1wb3J0IHsgcmFuZG9tQnl0ZXMsIGNyZWF0ZUhhc2ggfSBmcm9tICdjcnlwdG8nO1xuaW1wb3J0IHsgaGV4VG9CaWdJbnQgfSBmcm9tICcuLi8uLi8uLi91dGlsL2NyeXB0byc7XG5pbXBvcnQgeyBiaWdJbnRGcm9tQnVmZmVyQkUsIGJpZ0ludFRvQnVmZmVyQkUsIGJpZ0ludEZyb21VOEFCRSwgZ2V0UGFpbGxpZXJQdWJsaWNLZXkgfSBmcm9tICcuLi8uLi91dGlsJztcbmltcG9ydCB7IFNlY3AyNTZrMUN1cnZlIH0gZnJvbSAnLi4vLi4vY3VydmVzJztcbmltcG9ydCBTaGFtaXIgZnJvbSAnLi4vLi4vc2hhbWlyJztcbmltcG9ydCB7XG4gIE5TaGFyZSxcbiAgUFNoYXJlLFxuICBLZXlTaGFyZSxcbiAgS2V5Q29tYmluZWQsXG4gIEJTaGFyZSxcbiAgQVNoYXJlLFxuICBTaWduYXR1cmUsXG4gIFNpZ25Db252ZXJ0UlQsXG4gIFNpZ25Db252ZXJ0LFxuICBHU2hhcmUsXG4gIE1VU2hhcmUsXG4gIFNpZ25Db21iaW5lLFxuICBTaWduQ29tYmluZVJULFxuICBEU2hhcmUsXG4gIE9TaGFyZSxcbiAgU2lnblJULFxuICBTU2hhcmUsXG4gIFNpZ25TaGFyZVJULFxuICBLU2hhcmUsXG4gIFhTaGFyZSxcbiAgWVNoYXJlLFxufSBmcm9tICcuL3R5cGVzJztcblxuLyoqXG4gKiBFQ0RTQSBUU1MgaW1wbGVtZW50YXRpb24gc3VwcG9ydGluZyAyOm4gVGhyZXNob2xkXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEVjZHNhIHtcbiAgc3RhdGljIGN1cnZlOiBTZWNwMjU2azFDdXJ2ZSA9IG5ldyBTZWNwMjU2azFDdXJ2ZSgpO1xuICBzdGF0aWMgc2hhbWlyOiBTaGFtaXIgPSBuZXcgU2hhbWlyKEVjZHNhLmN1cnZlKTtcbiAgLyoqXG4gICAqIEdlbmVyYXRlIHNoYXJlcyBmb3IgcGFydGljaXBhbnQgYXQgaW5kZXggYW5kIHNwbGl0IGtleXMgYCh0aHJlc2hvbGQsbnVtU2hhcmVzKWAgd2F5cy5cbiAgICogQHBhcmFtIHtudW1iZXJ9IGluZGV4IHBhcnRpY2lwYW50IGluZGV4XG4gICAqIEBwYXJhbSB7bnVtYmVyfSB0aHJlc2hvbGQgU2lnbmluZyB0aHJlc2hvbGRcbiAgICogQHBhcmFtIHtudW1iZXJ9IG51bVNoYXJlcyAgTnVtYmVyIG9mIHNoYXJlc1xuICAgKiBAcGFyYW0ge0J1ZmZlcn0gc2VlZCBvcHRpb25hbCBzZWVkIHRvIHVzZSBmb3Iga2V5IGdlbmVyYXRpb25cbiAgICogQHJldHVybnMge1Byb21pc2U8S2V5U2hhcmU+fSBSZXR1cm5zIHRoZSBwcml2YXRlIHAtc2hhcmVcbiAgICogYW5kIG4tc2hhcmVzIHRvIGJlIGRpc3RyaWJ1dGVkIHRvIHBhcnRpY2lwYW50cyBhdCB0aGVpciBjb3JyZXNwb25kaW5nIGluZGV4LlxuICAgKi9cbiAgYXN5bmMga2V5U2hhcmUoaW5kZXg6IG51bWJlciwgdGhyZXNob2xkOiBudW1iZXIsIG51bVNoYXJlczogbnVtYmVyLCBzZWVkPzogQnVmZmVyKTogUHJvbWlzZTxLZXlTaGFyZT4ge1xuICAgIGlmICghKGluZGV4ID4gMCAmJiBpbmRleCA8PSBudW1TaGFyZXMgJiYgdGhyZXNob2xkIDw9IG51bVNoYXJlcyAmJiB0aHJlc2hvbGQgPT09IDIpKSB7XG4gICAgICB0aHJvdyAnSW52YWxpZCBLZXlTaGFyZSBDb25maWcnO1xuICAgIH1cblxuICAgIGlmIChzZWVkICYmIHNlZWQubGVuZ3RoICE9PSA3Mikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdTZWVkIG11c3QgaGF2ZSBsZW5ndGggNzInKTtcbiAgICB9XG4gICAgLy8gR2VuZXJhdGUgYWRkaXRpdmVseSBob21vbW9ycGhpYyBlbmNyeXB0aW9uIGtleS5cbiAgICBjb25zdCB7IHB1YmxpY0tleSwgcHJpdmF0ZUtleSB9ID0gYXdhaXQgcGFpbGxpZXJCaWdpbnQuZ2VuZXJhdGVSYW5kb21LZXlzKDMwNzIsIHRydWUpO1xuICAgIGNvbnN0IHUgPSAoc2VlZCAmJiBiaWdJbnRGcm9tVThBQkUoc2VjcC51dGlscy5oYXNoVG9Qcml2YXRlS2V5KHNlZWQuc2xpY2UoMCwgNDApKSkpID8/IEVjZHNhLmN1cnZlLnNjYWxhclJhbmRvbSgpO1xuICAgIGNvbnN0IHkgPSBFY2RzYS5jdXJ2ZS5iYXNlUG9pbnRNdWx0KHUpO1xuICAgIGNvbnN0IGNoYWluY29kZSA9IHNlZWQ/LnNsaWNlKDQwKSA/PyByYW5kb21CeXRlcygzMik7XG4gICAgLy8gQ29tcHV0ZSBzZWNyZXQgc2hhcmVzIG9mIHRoZSBwcml2YXRlIGtleVxuICAgIGNvbnN0IHVTaGFyZXMgPSBFY2RzYS5zaGFtaXIuc3BsaXQodSwgdGhyZXNob2xkLCBudW1TaGFyZXMpO1xuICAgIGNvbnN0IGN1cnJlbnRQYXJ0aWNpcGFudDogUFNoYXJlID0ge1xuICAgICAgaTogaW5kZXgsXG4gICAgICBsOiBwcml2YXRlS2V5LmxhbWJkYS50b1N0cmluZygxNiksXG4gICAgICBtOiBwcml2YXRlS2V5Lm11LnRvU3RyaW5nKDE2KSxcbiAgICAgIG46IHB1YmxpY0tleS5uLnRvU3RyaW5nKDE2KSxcbiAgICAgIHk6IGJpZ0ludFRvQnVmZmVyQkUoeSwgMzMpLnRvU3RyaW5nKCdoZXgnKSxcbiAgICAgIHU6IGJpZ0ludFRvQnVmZmVyQkUodVNoYXJlc1tpbmRleF0sIDMyKS50b1N0cmluZygnaGV4JyksXG4gICAgICBjaGFpbmNvZGU6IGNoYWluY29kZS50b1N0cmluZygnaGV4JyksXG4gICAgfTtcbiAgICBjb25zdCBrZXlTaGFyZTogS2V5U2hhcmUgPSB7XG4gICAgICBwU2hhcmU6IGN1cnJlbnRQYXJ0aWNpcGFudCxcbiAgICAgIG5TaGFyZXM6IHt9LFxuICAgIH07XG5cbiAgICBmb3IgKGNvbnN0IHNoYXJlIGluIHVTaGFyZXMpIHtcbiAgICAgIGNvbnN0IHBhcnRpY2lwYW50SW5kZXggPSBwYXJzZUludChzaGFyZSwgMTApO1xuICAgICAgaWYgKHBhcnRpY2lwYW50SW5kZXggIT09IGluZGV4KSB7XG4gICAgICAgIGtleVNoYXJlLm5TaGFyZXNbcGFydGljaXBhbnRJbmRleF0gPSB7XG4gICAgICAgICAgaTogcGFydGljaXBhbnRJbmRleCxcbiAgICAgICAgICBqOiBjdXJyZW50UGFydGljaXBhbnRbJ2knXSxcbiAgICAgICAgICBuOiBwdWJsaWNLZXkubi50b1N0cmluZygxNiksXG4gICAgICAgICAgeTogYmlnSW50VG9CdWZmZXJCRSh5LCAzMykudG9TdHJpbmcoJ2hleCcpLFxuICAgICAgICAgIHU6IGJpZ0ludFRvQnVmZmVyQkUodVNoYXJlc1twYXJ0aWNpcGFudEluZGV4XSwgMzIpLnRvU3RyaW5nKCdoZXgnKSxcbiAgICAgICAgICBjaGFpbmNvZGU6IGNoYWluY29kZS50b1N0cmluZygnaGV4JyksXG4gICAgICAgIH0gYXMgTlNoYXJlO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4ga2V5U2hhcmU7XG4gIH1cblxuICAvKipcbiAgICogQ29tYmluZSBkYXRhIHNoYXJlZCBkdXJpbmcgdGhlIGtleSBnZW5lcmF0aW9uIHByb3RvY29sLlxuICAgKiBAcGFyYW0ge0tleVNoYXJlfSBwYXJ0aWNpcGFudFNoYXJlcyBwcml2YXRlIHAtc2hhcmUgYW5kXG4gICAqIG4tc2hhcmVzIHJlY2VpdmVkIGZyb20gYWxsIG90aGVyIHBhcnRpY2lwYW50cy5cbiAgICogQHJldHVybnMge0tleUNvbWJpbmVkfSBSZXR1cm5zIHRoZSBwYXJ0aWNpcGFudCBwcml2YXRlIHgtc2hhcmVcbiAgICogYW5kIHktc2hhcmVzIHRvIGJlIHVzZWQgd2hlbiBnZW5lcmF0aW5nIHNpZ25pbmcgc2hhcmVzLlxuICAgKi9cbiAga2V5Q29tYmluZShwU2hhcmU6IFBTaGFyZSwgblNoYXJlczogTlNoYXJlW10pOiBLZXlDb21iaW5lZCB7XG4gICAgY29uc3QgYWxsU2hhcmVzID0gW3BTaGFyZSwgLi4ublNoYXJlc107XG4gICAgLy8gQ29tcHV0ZSB0aGUgcHVibGljIGtleS5cbiAgICBjb25zdCB5ID0gYWxsU2hhcmVzLm1hcCgocGFydGljaXBhbnQpID0+IGhleFRvQmlnSW50KHBhcnRpY2lwYW50Wyd5J10pKS5yZWR1Y2UoRWNkc2EuY3VydmUucG9pbnRBZGQpO1xuICAgIC8vIEFkZCBzZWNyZXQgc2hhcmVzXG4gICAgY29uc3QgeCA9IGFsbFNoYXJlcy5tYXAoKHBhcnRpY2lwYW50KSA9PiBoZXhUb0JpZ0ludChwYXJ0aWNpcGFudFsndSddKSkucmVkdWNlKEVjZHNhLmN1cnZlLnNjYWxhckFkZCk7XG5cbiAgICAvLyBDaGFpbmNvZGUgd2lsbCBiZSB1c2VkIGluIGZ1dHVyZSB3aGVuIHdlIGFkZCBzdXBwb3J0IGZvciBrZXkgZGVyaXZhdGlvbiBmb3IgZWNkc2FcbiAgICBjb25zdCBjaGFpbmNvZGVzID0gW3BTaGFyZSwgLi4ublNoYXJlc10ubWFwKCh7IGNoYWluY29kZSB9KSA9PiBiaWdJbnRGcm9tQnVmZmVyQkUoQnVmZmVyLmZyb20oY2hhaW5jb2RlLCAnaGV4JykpKTtcbiAgICBjb25zdCBjaGFpbmNvZGUgPSBjaGFpbmNvZGVzLnJlZHVjZShcbiAgICAgIChhY2MsIGNoYWluY29kZSkgPT5cbiAgICAgICAgKGFjYyArIGNoYWluY29kZSkgJSBCaWdJbnQoJzB4MDEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwJykgLy8gMl4yNTZcbiAgICApO1xuXG4gICAgY29uc3QgcGFydGljaXBhbnRzOiBLZXlDb21iaW5lZCA9IHtcbiAgICAgIHhTaGFyZToge1xuICAgICAgICBpOiBwU2hhcmUuaSxcbiAgICAgICAgbDogcFNoYXJlLmwsXG4gICAgICAgIG06IHBTaGFyZS5tLFxuICAgICAgICBuOiBwU2hhcmUubixcbiAgICAgICAgeTogYmlnSW50VG9CdWZmZXJCRSh5LCAzMykudG9TdHJpbmcoJ2hleCcpLFxuICAgICAgICB4OiBiaWdJbnRUb0J1ZmZlckJFKHgsIDMyKS50b1N0cmluZygnaGV4JyksXG4gICAgICAgIGNoYWluY29kZTogYmlnSW50VG9CdWZmZXJCRShjaGFpbmNvZGUsIDMyKS50b1N0cmluZygnaGV4JyksXG4gICAgICB9LFxuICAgICAgeVNoYXJlczoge30sXG4gICAgfTtcblxuICAgIGZvciAoY29uc3Qgc2hhcmUgaW4gblNoYXJlcykge1xuICAgICAgY29uc3QgcGFydGljaXBhbnRJbmRleCA9IG5TaGFyZXNbc2hhcmVdWydqJ107XG4gICAgICBwYXJ0aWNpcGFudHMueVNoYXJlc1twYXJ0aWNpcGFudEluZGV4XSA9IHtcbiAgICAgICAgaTogcFNoYXJlLmksXG4gICAgICAgIGo6IG5TaGFyZXNbc2hhcmVdWydqJ10sXG4gICAgICAgIG46IG5TaGFyZXNbc2hhcmVdWyduJ10sXG4gICAgICB9O1xuICAgIH1cbiAgICByZXR1cm4gcGFydGljaXBhbnRzO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBzaWduaW5nIHNoYXJlcy5cbiAgICogQHBhcmFtIHt4U2hhcmV9IHhTaGFyZSBQcml2YXRlIHhTaGFyZSBvZiBjdXJyZW50IHBhcnRpY2lwYW50IHNpZ25lclxuICAgKiBAcGFyYW0ge1lTaGFyZX0geVNoYXJlIHlTaGFyZSBjb3JyZXNwb25kaW5nIHRvIHRoZSBvdGhlciBwYXJ0aWNpcGFudCBzaWduZXJcbiAgICogQHJldHVybnMge1NpZ25TaGFyZVJUfSBSZXR1cm5zIHRoZSBwYXJ0aWNpcGFudCBwcml2YXRlIHctc2hhcmVcbiAgICogYW5kIGstc2hhcmUgdG8gYmUgZGlzdHJpYnV0ZWQgdG8gb3RoZXIgcGFydGljaXBhbnQgc2lnbmVyXG4gICAqL1xuICBzaWduU2hhcmUoeFNoYXJlOiBYU2hhcmUsIHlTaGFyZTogWVNoYXJlKTogU2lnblNoYXJlUlQge1xuICAgIGNvbnN0IHBrID0gZ2V0UGFpbGxpZXJQdWJsaWNLZXkoaGV4VG9CaWdJbnQoeFNoYXJlLm4pKTtcblxuICAgIGNvbnN0IGsgPSBFY2RzYS5jdXJ2ZS5zY2FsYXJSYW5kb20oKTtcbiAgICBjb25zdCBnYW1tYSA9IEVjZHNhLmN1cnZlLnNjYWxhclJhbmRvbSgpO1xuXG4gICAgY29uc3QgZCA9IEVjZHNhLmN1cnZlLnNjYWxhck11bHQoRWNkc2EuY3VydmUuc2NhbGFyU3ViKEJpZ0ludCh5U2hhcmUuaiksIEJpZ0ludCh4U2hhcmUuaSkpLCBCaWdJbnQoeFNoYXJlLmkpKTtcblxuICAgIGNvbnN0IHcgPSBbXG4gICAgICBFY2RzYS5jdXJ2ZS5zY2FsYXJNdWx0KEJpZ0ludCh5U2hhcmUuaiksIEJpZ0ludCh4U2hhcmUuaSkpLFxuICAgICAgaGV4VG9CaWdJbnQoeFNoYXJlWyd4J10pLFxuICAgICAgRWNkc2EuY3VydmUuc2NhbGFySW52ZXJ0KGQpLFxuICAgIF0ucmVkdWNlKEVjZHNhLmN1cnZlLnNjYWxhck11bHQpO1xuXG4gICAgY29uc3Qgc2lnbmVyczogU2lnblNoYXJlUlQgPSB7XG4gICAgICB3U2hhcmU6IHtcbiAgICAgICAgaTogeFNoYXJlLmksXG4gICAgICAgIGw6IHhTaGFyZS5sLFxuICAgICAgICBtOiB4U2hhcmUubSxcbiAgICAgICAgbjogeFNoYXJlLm4sXG4gICAgICAgIHk6IHhTaGFyZS55LFxuICAgICAgICBrOiBiaWdJbnRUb0J1ZmZlckJFKGssIDMyKS50b1N0cmluZygnaGV4JyksXG4gICAgICAgIHc6IGJpZ0ludFRvQnVmZmVyQkUodywgMzIpLnRvU3RyaW5nKCdoZXgnKSxcbiAgICAgICAgZ2FtbWE6IGJpZ0ludFRvQnVmZmVyQkUoZ2FtbWEsIDMyKS50b1N0cmluZygnaGV4JyksXG4gICAgICB9LFxuICAgICAga1NoYXJlOiB7fSBhcyBLU2hhcmUsXG4gICAgfTtcblxuICAgIHNpZ25lcnMua1NoYXJlID0ge1xuICAgICAgaTogeVNoYXJlLmosXG4gICAgICBqOiB4U2hhcmUuaSxcbiAgICAgIG46IHBrLm4udG9TdHJpbmcoMTYpLFxuICAgICAgazogYmlnSW50VG9CdWZmZXJCRShway5lbmNyeXB0KGspLCAzMikudG9TdHJpbmcoJ2hleCcpLFxuICAgIH07XG5cbiAgICByZXR1cm4gc2lnbmVycztcbiAgfVxuXG4gIC8qKlxuICAgKiBQZXJmb3JtIG11bHRpcGxpY2l0aXZlLXRvLWFkZGl0aXZlIChNdEEpIHNoYXJlIGNvbnZlcnNpb24gd2l0aCBhbm90aGVyXG4gICAqIHNpZ25lci5cbiAgICogQHBhcmFtIHtTaWduQ29udmVydH1cbiAgICogQHJldHVybnMge1NpZ25Db252ZXJ0UlR9XG4gICAqL1xuICBzaWduQ29udmVydChzaGFyZXM6IFNpZ25Db252ZXJ0KTogU2lnbkNvbnZlcnRSVCB7XG4gICAgbGV0IHNoYXJlUGFydGljaXBhbnQ6IEJTaGFyZSB8IEdTaGFyZSwgc2hhcmVUb0JlU2VuZDogQVNoYXJlIHwgTVVTaGFyZTtcbiAgICBsZXQgaXNHYW1tYVNoYXJlID0gZmFsc2U7XG4gICAgaWYgKHNoYXJlcy54U2hhcmUgJiYgc2hhcmVzLnlTaGFyZSAmJiBzaGFyZXMua1NoYXJlKSB7XG4gICAgICBjb25zdCB4U2hhcmUgPSBzaGFyZXMueFNoYXJlOyAvLyBjdXJyZW50UGFydGljaXBhbnQgc2VjcmV0IHhTaGFyZVxuICAgICAgY29uc3QgeVNoYXJlID0gc2hhcmVzLnlTaGFyZTtcbiAgICAgIGNvbnN0IHNpZ25TaGFyZSA9IHRoaXMuc2lnblNoYXJlKHhTaGFyZSwgeVNoYXJlKTtcbiAgICAgIHNoYXJlVG9CZVNlbmQgPSB7IC4uLnNoYXJlcy5rU2hhcmUsIGFscGhhOiAnJywgbXU6ICcnIH0gYXMgQVNoYXJlO1xuICAgICAgc2hhcmVQYXJ0aWNpcGFudCA9IHsgLi4uc2lnblNoYXJlLndTaGFyZSwgYmV0YTogJycsIG51OiAnJyB9IGFzIEJTaGFyZTtcbiAgICB9IGVsc2UgaWYgKChzaGFyZXMuYlNoYXJlICYmIHNoYXJlcy5tdVNoYXJlKSB8fCAoc2hhcmVzLmFTaGFyZSAmJiBzaGFyZXMud1NoYXJlKSkge1xuICAgICAgaXNHYW1tYVNoYXJlID0gdHJ1ZTtcbiAgICAgIHNoYXJlVG9CZVNlbmQgPSBzaGFyZXMuYVNoYXJlID8gKHsgLi4uc2hhcmVzLmFTaGFyZSB9IGFzIE1VU2hhcmUpIDogKHsgLi4uc2hhcmVzLm11U2hhcmUgfSBhcyBNVVNoYXJlKTtcbiAgICAgIHNoYXJlUGFydGljaXBhbnQgPSBzaGFyZXMud1NoYXJlID8gKHsgLi4uc2hhcmVzLndTaGFyZSB9IGFzIEdTaGFyZSkgOiAoeyAuLi5zaGFyZXMuYlNoYXJlIH0gYXMgR1NoYXJlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGNvbmZpZyBmb3IgU2lnbiBDb252ZXJ0Jyk7XG4gICAgfVxuICAgIGlmIChzaGFyZVBhcnRpY2lwYW50LmkgIT09IHNoYXJlVG9CZVNlbmQuaSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdTaGFyZXMgZnJvbSBzYW1lIHBhcnRpY2lwYW50Jyk7XG4gICAgfVxuICAgIGlmIChzaGFyZVRvQmVTZW5kWydhbHBoYSddKSB7XG4gICAgICBjb25zdCBwayA9IGdldFBhaWxsaWVyUHVibGljS2V5KGhleFRvQmlnSW50KHNoYXJlUGFydGljaXBhbnQubikpO1xuICAgICAgY29uc3Qgc2sgPSBuZXcgcGFpbGxpZXJCaWdpbnQuUHJpdmF0ZUtleShcbiAgICAgICAgaGV4VG9CaWdJbnQoc2hhcmVQYXJ0aWNpcGFudC5sIGFzIHN0cmluZyksXG4gICAgICAgIGhleFRvQmlnSW50KHNoYXJlUGFydGljaXBhbnQubSBhcyBzdHJpbmcpLFxuICAgICAgICBwa1xuICAgICAgKTtcbiAgICAgIGNvbnN0IGFscGhhID0gc2suZGVjcnlwdChoZXhUb0JpZ0ludChzaGFyZVRvQmVTZW5kLmFscGhhKSk7XG4gICAgICBzaGFyZVBhcnRpY2lwYW50WydhbHBoYSddID0gYmlnSW50VG9CdWZmZXJCRShFY2RzYS5jdXJ2ZS5zY2FsYXJSZWR1Y2UoYWxwaGEpLCAzMikudG9TdHJpbmcoJ2hleCcpO1xuICAgICAgY29uc3QgbXUgPSBzay5kZWNyeXB0KGhleFRvQmlnSW50KHNoYXJlVG9CZVNlbmQubXUgYXMgc3RyaW5nKSk7IC8vIHJlY2hlY2sgZW5jcnlwdGVkIG51bWJlclxuICAgICAgc2hhcmVQYXJ0aWNpcGFudFsnbXUnXSA9IGJpZ0ludFRvQnVmZmVyQkUoRWNkc2EuY3VydmUuc2NhbGFyUmVkdWNlKG11KSwgMzIpLnRvU3RyaW5nKCdoZXgnKTtcbiAgICAgIGRlbGV0ZSBzaGFyZVBhcnRpY2lwYW50WydsJ107XG4gICAgICBkZWxldGUgc2hhcmVQYXJ0aWNpcGFudFsnbSddO1xuICAgICAgZGVsZXRlIHNoYXJlVG9CZVNlbmRbJ2FscGhhJ107XG4gICAgICBkZWxldGUgc2hhcmVUb0JlU2VuZFsnbXUnXTtcbiAgICB9XG4gICAgaWYgKHNoYXJlVG9CZVNlbmRbJ2snXSkge1xuICAgICAgY29uc3QgbiA9IGhleFRvQmlnSW50KHNoYXJlVG9CZVNlbmRbJ24nXSk7IC8vIFBhaWxsaWVyIHB1YiBmcm9tIG90aGVyIHNpZ25lclxuICAgICAgbGV0IHBrID0gZ2V0UGFpbGxpZXJQdWJsaWNLZXkobik7XG4gICAgICBjb25zdCBrID0gaGV4VG9CaWdJbnQoc2hhcmVUb0JlU2VuZFsnayddKTtcblxuICAgICAgY29uc3QgYmV0YTAgPSBFY2RzYS5jdXJ2ZS5zY2FsYXJSYW5kb20oKTtcbiAgICAgIHNoYXJlUGFydGljaXBhbnQuYmV0YSA9IGJpZ0ludFRvQnVmZmVyQkUoRWNkc2EuY3VydmUuc2NhbGFyUmVkdWNlKEVjZHNhLmN1cnZlLnNjYWxhck5lZ2F0ZShiZXRhMCkpLCAzMikudG9TdHJpbmcoXG4gICAgICAgICdoZXgnXG4gICAgICApO1xuICAgICAgY29uc3QgYWxwaGEgPSBway5hZGRpdGlvbihway5tdWx0aXBseShrLCBoZXhUb0JpZ0ludChzaGFyZVBhcnRpY2lwYW50LmdhbW1hKSksIHBrLmVuY3J5cHQoYmV0YTApKTtcbiAgICAgIHNoYXJlVG9CZVNlbmQuYWxwaGEgPSBiaWdJbnRUb0J1ZmZlckJFKGFscGhhLCAzMikudG9TdHJpbmcoJ2hleCcpO1xuXG4gICAgICBjb25zdCBudTAgPSBFY2RzYS5jdXJ2ZS5zY2FsYXJSYW5kb20oKTtcbiAgICAgIHNoYXJlUGFydGljaXBhbnQubnUgPSBiaWdJbnRUb0J1ZmZlckJFKEVjZHNhLmN1cnZlLnNjYWxhck5lZ2F0ZShudTApLCAzMikudG9TdHJpbmcoJ2hleCcpO1xuICAgICAgY29uc3QgbXUgPSBway5hZGRpdGlvbihway5tdWx0aXBseShrLCBoZXhUb0JpZ0ludChzaGFyZVBhcnRpY2lwYW50LncpKSwgcGsuZW5jcnlwdChudTApKTtcbiAgICAgIHNoYXJlVG9CZVNlbmQubXUgPSBiaWdJbnRUb0J1ZmZlckJFKG11LCAzMikudG9TdHJpbmcoJ2hleCcpO1xuICAgICAgaWYgKHNoYXJlUGFydGljaXBhbnRbJ2FscGhhJ10pIHtcbiAgICAgICAgZGVsZXRlIHNoYXJlVG9CZVNlbmRbJ24nXTtcbiAgICAgICAgZGVsZXRlIHNoYXJlVG9CZVNlbmRbJ2snXTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHBrID0gZ2V0UGFpbGxpZXJQdWJsaWNLZXkoaGV4VG9CaWdJbnQoc2hhcmVQYXJ0aWNpcGFudC5uKSk7XG4gICAgICAgIHNoYXJlVG9CZVNlbmRbJ24nXSA9IHBrLm4udG9TdHJpbmcoMTYpO1xuICAgICAgICBzaGFyZVRvQmVTZW5kWydrJ10gPSBiaWdJbnRUb0J1ZmZlckJFKHBrLmVuY3J5cHQoaGV4VG9CaWdJbnQoc2hhcmVQYXJ0aWNpcGFudC5rKSksIDMyKS50b1N0cmluZygnaGV4Jyk7XG4gICAgICB9XG4gICAgfVxuICAgIGlmICghKCdhbHBoYScgaW4gc2hhcmVUb0JlU2VuZCkgJiYgISgnaycgaW4gc2hhcmVUb0JlU2VuZCkpIHtcbiAgICAgIHNoYXJlVG9CZVNlbmQgPSB7XG4gICAgICAgIGk6IHNoYXJlVG9CZVNlbmRbJ2knXSxcbiAgICAgICAgajogc2hhcmVUb0JlU2VuZFsnaiddLFxuICAgICAgfTtcbiAgICB9XG4gICAgW3NoYXJlVG9CZVNlbmRbJ2knXSwgc2hhcmVUb0JlU2VuZFsnaiddXSA9IFtzaGFyZVRvQmVTZW5kWydqJ10sIHNoYXJlVG9CZVNlbmRbJ2knXV07XG4gICAgaWYgKGlzR2FtbWFTaGFyZSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgbXVTaGFyZTogc2hhcmVUb0JlU2VuZCBhcyBNVVNoYXJlLFxuICAgICAgICBnU2hhcmU6IHNoYXJlUGFydGljaXBhbnQgYXMgR1NoYXJlLFxuICAgICAgfTtcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgIGFTaGFyZTogc2hhcmVUb0JlU2VuZCxcbiAgICAgIGJTaGFyZTogc2hhcmVQYXJ0aWNpcGFudCBhcyBCU2hhcmUsXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb21iaW5lIGdhbW1hIHNoYXJlcyB0byBnZXQgdGhlIHByaXZhdGUgb21pY3JvbiAvIGRlbHRhIHNoYXJlc1xuICAgKiBAcGFyYW0ge1NpZ25Db21iaW5lfSBzaGFyZXNcbiAgICogQHJldHVybnMge1NpZ25Db21iaW5lUlR9XG4gICAqL1xuICBzaWduQ29tYmluZShzaGFyZXM6IFNpZ25Db21iaW5lKTogU2lnbkNvbWJpbmVSVCB7XG4gICAgY29uc3QgZ1NoYXJlID0gc2hhcmVzLmdTaGFyZTtcbiAgICBjb25zdCBTID0gc2hhcmVzLnNpZ25JbmRleDtcbiAgICBjb25zdCBnYW1tYSA9IGhleFRvQmlnSW50KGdTaGFyZS5nYW1tYSk7XG4gICAgY29uc3QgYWxwaGEgPSBoZXhUb0JpZ0ludChnU2hhcmUuYWxwaGEpO1xuICAgIGNvbnN0IGJldGEgPSBoZXhUb0JpZ0ludChnU2hhcmUuYmV0YSk7XG4gICAgY29uc3QgbXUgPSBoZXhUb0JpZ0ludChnU2hhcmUubXUpO1xuICAgIGNvbnN0IG51ID0gaGV4VG9CaWdJbnQoZ1NoYXJlLm51KTtcbiAgICBjb25zdCBrID0gaGV4VG9CaWdJbnQoZ1NoYXJlLmspO1xuICAgIGNvbnN0IHcgPSBoZXhUb0JpZ0ludChnU2hhcmUudyk7XG5cbiAgICBjb25zdCBkZWx0YSA9IEVjZHNhLmN1cnZlLnNjYWxhckFkZChFY2RzYS5jdXJ2ZS5zY2FsYXJNdWx0KGssIGdhbW1hKSwgRWNkc2EuY3VydmUuc2NhbGFyQWRkKGFscGhhLCBiZXRhKSk7XG4gICAgY29uc3Qgb21pY3JvbiA9IEVjZHNhLmN1cnZlLnNjYWxhckFkZChFY2RzYS5jdXJ2ZS5zY2FsYXJNdWx0KGssIHcpLCBFY2RzYS5jdXJ2ZS5zY2FsYXJBZGQobXUsIG51KSk7XG4gICAgY29uc3QgR2FtbWEgPSBFY2RzYS5jdXJ2ZS5iYXNlUG9pbnRNdWx0KGdhbW1hKTtcblxuICAgIHJldHVybiB7XG4gICAgICBvU2hhcmU6IHtcbiAgICAgICAgaTogZ1NoYXJlLmksXG4gICAgICAgIHk6IGdTaGFyZS55LFxuICAgICAgICBrOiBiaWdJbnRUb0J1ZmZlckJFKGssIDMyKS50b1N0cmluZygnaGV4JyksXG4gICAgICAgIG9taWNyb246IGJpZ0ludFRvQnVmZmVyQkUob21pY3JvbiwgMzIpLnRvU3RyaW5nKCdoZXgnKSxcbiAgICAgICAgZGVsdGE6IGJpZ0ludFRvQnVmZmVyQkUoZGVsdGEsIDMyKS50b1N0cmluZygnaGV4JyksXG4gICAgICAgIEdhbW1hOiBiaWdJbnRUb0J1ZmZlckJFKEdhbW1hLCAzMykudG9TdHJpbmcoJ2hleCcpLFxuICAgICAgfSxcbiAgICAgIGRTaGFyZToge1xuICAgICAgICBpOiBTLmksXG4gICAgICAgIGo6IGdTaGFyZS5pLFxuICAgICAgICBkZWx0YTogYmlnSW50VG9CdWZmZXJCRShkZWx0YSwgMzIpLnRvU3RyaW5nKCdoZXgnKSxcbiAgICAgICAgR2FtbWE6IGJpZ0ludFRvQnVmZmVyQkUoR2FtbWEsIDMzKS50b1N0cmluZygnaGV4JyksXG4gICAgICB9LFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogU2lnbiBhIG1lc3NhZ2UuXG4gICAqIEBwYXJhbSB7QnVmZmVyfSBNIE1lc3NhZ2UgdG8gYmUgc2lnbmVkXG4gICAqIEBwYXJhbSB7T1NoYXJlfSBvU2hhcmUgcHJpdmF0ZSBvbWljcm9uIHNoYXJlIG9mIGN1cnJlbnQgcGFydGljaXBhbnRcbiAgICogQHBhcmFtIHtEU2hhcmV9IGRTaGFyZSBkZWx0YSBzaGFyZSByZWNlaXZlZCBmcm9tIHRoZSBvdGhlciBwYXJ0aWNpcGFudFxuICAgKiBAcmV0dXJucyB7U2lnblJUfVxuICAgKi9cbiAgc2lnbihNOiBCdWZmZXIsIG9TaGFyZTogT1NoYXJlLCBkU2hhcmU6IERTaGFyZSk6IFNpZ25SVCB7XG4gICAgY29uc3QgbSA9IGNyZWF0ZUhhc2goJ3NoYTI1NicpLnVwZGF0ZShNKS5kaWdlc3QoKTtcblxuICAgIGNvbnN0IGRlbHRhID0gRWNkc2EuY3VydmUuc2NhbGFyQWRkKGhleFRvQmlnSW50KG9TaGFyZS5kZWx0YSksIGhleFRvQmlnSW50KGRTaGFyZS5kZWx0YSkpO1xuXG4gICAgY29uc3QgUiA9IEVjZHNhLmN1cnZlLnBvaW50TXVsdGlwbHkoXG4gICAgICBFY2RzYS5jdXJ2ZS5wb2ludEFkZChoZXhUb0JpZ0ludChvU2hhcmUuR2FtbWEpLCBoZXhUb0JpZ0ludChkU2hhcmUuR2FtbWEpKSxcbiAgICAgIEVjZHNhLmN1cnZlLnNjYWxhckludmVydChkZWx0YSlcbiAgICApO1xuICAgIGNvbnN0IHBvaW50UiA9IHNlY3AuUG9pbnQuZnJvbUhleChiaWdJbnRUb0J1ZmZlckJFKFIsIDMyKSk7XG4gICAgY29uc3QgciA9IHBvaW50Ui54O1xuXG4gICAgY29uc3QgcyA9IEVjZHNhLmN1cnZlLnNjYWxhckFkZChcbiAgICAgIEVjZHNhLmN1cnZlLnNjYWxhck11bHQoYmlnSW50RnJvbVU4QUJFKG0pLCBoZXhUb0JpZ0ludChvU2hhcmUuaykpLFxuICAgICAgRWNkc2EuY3VydmUuc2NhbGFyTXVsdChyLCBoZXhUb0JpZ0ludChvU2hhcmUub21pY3JvbikpXG4gICAgKTtcbiAgICByZXR1cm4ge1xuICAgICAgaTogb1NoYXJlLmksXG4gICAgICB5OiBvU2hhcmUueSxcbiAgICAgIHI6IGJpZ0ludFRvQnVmZmVyQkUociwgMzIpLnRvU3RyaW5nKCdoZXgnKSxcbiAgICAgIHM6IGJpZ0ludFRvQnVmZmVyQkUocywgMzIpLnRvU3RyaW5nKCdoZXgnKSxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIENvbnN0cnVjdCBmdWxsIHNpZ25hdHVyZSBieSBjb21iaW5pbmcgU2lnbiBTaGFyZXNcbiAgICogQHBhcmFtIHtTU2hhcmVbXX0gc2hhcmVzXG4gICAqIEByZXR1cm5zIHtTaWduYXR1cmV9XG4gICAqL1xuICBjb25zdHJ1Y3RTaWduYXR1cmUoc2hhcmVzOiBTU2hhcmVbXSk6IFNpZ25hdHVyZSB7XG4gICAgLy8gRXZlcnkgciBtdXN0IG1hdGNoLlxuICAgIGNvbnN0IHIgPSBzaGFyZXNbMF1bJ3InXTtcbiAgICBjb25zdCBpc1JNYXRjaGluZyA9IHNoYXJlcy5tYXAoKHNoYXJlKSA9PiBzaGFyZVsnciddID09PSByKS5yZWR1Y2UoKGEsIGIpID0+IGEgJiYgYik7XG4gICAgaWYgKCFpc1JNYXRjaGluZykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdyIHZhbHVlIHNob3VsZCBiZSBjb25zaXN0ZW50IGFjcm9zcyBhbGwgc2hhcmVzJyk7XG4gICAgfVxuXG4gICAgbGV0IHMgPSBzaGFyZXMubWFwKChzaGFyZSkgPT4gaGV4VG9CaWdJbnQoc2hhcmVbJ3MnXSkpLnJlZHVjZShFY2RzYS5jdXJ2ZS5zY2FsYXJBZGQpO1xuXG4gICAgLy8gTm9ybWFsaXplIHMuXG4gICAgcyA9IHMgPiBFY2RzYS5jdXJ2ZS5vcmRlcigpIC8gQmlnSW50KDIpID8gRWNkc2EuY3VydmUub3JkZXIoKSAtIHMgOiBzO1xuICAgIHJldHVybiB7XG4gICAgICB5OiBzaGFyZXNbMF1bJ3knXSxcbiAgICAgIHI6IHIsXG4gICAgICBzOiBiaWdJbnRUb0J1ZmZlckJFKHMsIDMyKS50b1N0cmluZygnaGV4JyksXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBWZXJpZnkgZWNkc2Egc2lnbmF0dXJlc1xuICAgKiBAcGFyYW0ge0J1ZmZlcn0gbWVzc2FnZVxuICAgKiBAcGFyYW0ge1NpZ25hdHVyZSB9IHNpZ25hdHVyZVxuICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiBzaWduYXR1cmUgaXMgdmFsaWQ7IEZhbHNlIG90aGVyd2lzZVxuICAgKi9cbiAgdmVyaWZ5KG1lc3NhZ2U6IEJ1ZmZlciwgc2lnbmF0dXJlOiBTaWduYXR1cmUpOiBib29sZWFuIHtcbiAgICByZXR1cm4gRWNkc2EuY3VydmUudmVyaWZ5KFxuICAgICAgY3JlYXRlSGFzaCgnc2hhMjU2JykudXBkYXRlKG1lc3NhZ2UpLmRpZ2VzdCgpLFxuICAgICAgQnVmZmVyLmNvbmNhdChbXG4gICAgICAgIGJpZ0ludFRvQnVmZmVyQkUoaGV4VG9CaWdJbnQoc2lnbmF0dXJlWydyJ10pLCAzMiksXG4gICAgICAgIGJpZ0ludFRvQnVmZmVyQkUoaGV4VG9CaWdJbnQoc2lnbmF0dXJlWydzJ10pLCAzMiksXG4gICAgICBdKSxcbiAgICAgIGhleFRvQmlnSW50KHNpZ25hdHVyZVsneSddKVxuICAgICk7XG4gIH1cbn1cbiJdfQ==
|
|
345
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWNkc2EuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYWNjb3VudC1saWIvbXBjL3Rzcy9lY2RzYS9lY2RzYS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxnRUFBa0Q7QUFDbEQsdUVBQXlEO0FBQ3pELHVEQUF5QztBQUN6QyxtQ0FBdUQ7QUFDdkQsaURBQW1EO0FBQ25ELHFDQUF5RztBQUN6Ryx5Q0FBOEM7QUFDOUMsMERBQWtDO0FBd0JsQyxNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDdEIsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBRXRCOztHQUVHO0FBQ0gsTUFBcUIsS0FBSztJQUd4Qjs7Ozs7Ozs7T0FRRztJQUNILEtBQUssQ0FBQyxRQUFRLENBQUMsS0FBYSxFQUFFLFNBQWlCLEVBQUUsU0FBaUIsRUFBRSxJQUFhOztRQUMvRSxJQUFJLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxJQUFJLEtBQUssSUFBSSxTQUFTLElBQUksU0FBUyxJQUFJLFNBQVMsSUFBSSxTQUFTLEtBQUssQ0FBQyxDQUFDLEVBQUU7WUFDbkYsTUFBTSx5QkFBeUIsQ0FBQztTQUNqQztRQUVELElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssRUFBRSxFQUFFO1lBQzlCLE1BQU0sSUFBSSxLQUFLLENBQUMsMEJBQTBCLENBQUMsQ0FBQztTQUM3QztRQUNELGtEQUFrRDtRQUNsRCxNQUFNLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxHQUFHLE1BQU0sY0FBYyxDQUFDLGtCQUFrQixDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztRQUN0RixNQUFNLENBQUMsR0FBRyxNQUFBLENBQUMsSUFBSSxJQUFJLHNCQUFlLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENB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QUFHLENBQUMsQ0FBQyxDQUM1QixDQUFDO0lBQ0osQ0FBQzs7QUEzVkgsd0JBNFZDO0FBM1ZRLFdBQUssR0FBbUIsSUFBSSx1QkFBYyxFQUFFLENBQUM7QUFDN0MsWUFBTSxHQUFXLElBQUksZ0JBQU0sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBwYWlsbGllckJpZ2ludCBmcm9tICdwYWlsbGllci1iaWdpbnQnO1xuaW1wb3J0ICogYXMgYmlnaW50Q3J5cHRvVXRpbHMgZnJvbSAnYmlnaW50LWNyeXB0by11dGlscyc7XG5pbXBvcnQgKiBhcyBzZWNwIGZyb20gJ0Bub2JsZS9zZWNwMjU2azEnO1xuaW1wb3J0IHsgcmFuZG9tQnl0ZXMsIGNyZWF0ZUhhc2gsIEhhc2ggfSBmcm9tICdjcnlwdG8nO1xuaW1wb3J0IHsgaGV4VG9CaWdJbnQgfSBmcm9tICcuLi8uLi8uLi91dGlsL2NyeXB0byc7XG5pbXBvcnQgeyBiaWdJbnRGcm9tQnVmZmVyQkUsIGJpZ0ludFRvQnVmZmVyQkUsIGJpZ0ludEZyb21VOEFCRSwgZ2V0UGFpbGxpZXJQdWJsaWNLZXkgfSBmcm9tICcuLi8uLi91dGlsJztcbmltcG9ydCB7IFNlY3AyNTZrMUN1cnZlIH0gZnJvbSAnLi4vLi4vY3VydmVzJztcbmltcG9ydCBTaGFtaXIgZnJvbSAnLi4vLi4vc2hhbWlyJztcbmltcG9ydCB7XG4gIE5TaGFyZSxcbiAgUFNoYXJlLFxuICBLZXlTaGFyZSxcbiAgS2V5Q29tYmluZWQsXG4gIEJTaGFyZSxcbiAgQVNoYXJlLFxuICBTaWduYXR1cmUsXG4gIFNpZ25Db252ZXJ0UlQsXG4gIFNpZ25Db252ZXJ0LFxuICBHU2hhcmUsXG4gIE1VU2hhcmUsXG4gIFNpZ25Db21iaW5lLFxuICBTaWduQ29tYmluZVJULFxuICBEU2hhcmUsXG4gIE9TaGFyZSxcbiAgU1NoYXJlLFxuICBTaWduU2hhcmVSVCxcbiAgS1NoYXJlLFxuICBYU2hhcmUsXG4gIFlTaGFyZSxcbn0gZnJvbSAnLi90eXBlcyc7XG5cbmNvbnN0IF8xbiA9IEJpZ0ludCgxKTtcbmNvbnN0IF8zbiA9IEJpZ0ludCgzKTtcblxuLyoqXG4gKiBFQ0RTQSBUU1MgaW1wbGVtZW50YXRpb24gc3VwcG9ydGluZyAyOm4gVGhyZXNob2xkXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEVjZHNhIHtcbiAgc3RhdGljIGN1cnZlOiBTZWNwMjU2azFDdXJ2ZSA9IG5ldyBTZWNwMjU2azFDdXJ2ZSgpO1xuICBzdGF0aWMgc2hhbWlyOiBTaGFtaXIgPSBuZXcgU2hhbWlyKEVjZHNhLmN1cnZlKTtcbiAgLyoqXG4gICAqIEdlbmVyYXRlIHNoYXJlcyBmb3IgcGFydGljaXBhbnQgYXQgaW5kZXggYW5kIHNwbGl0IGtleXMgYCh0aHJlc2hvbGQsbnVtU2hhcmVzKWAgd2F5cy5cbiAgICogQHBhcmFtIHtudW1iZXJ9IGluZGV4IHBhcnRpY2lwYW50IGluZGV4XG4gICAqIEBwYXJhbSB7bnVtYmVyfSB0aHJlc2hvbGQgU2lnbmluZyB0aHJlc2hvbGRcbiAgICogQHBhcmFtIHtudW1iZXJ9IG51bVNoYXJlcyAgTnVtYmVyIG9mIHNoYXJlc1xuICAgKiBAcGFyYW0ge0J1ZmZlcn0gc2VlZCBvcHRpb25hbCBzZWVkIHRvIHVzZSBmb3Iga2V5IGdlbmVyYXRpb25cbiAgICogQHJldHVybnMge1Byb21pc2U8S2V5U2hhcmU+fSBSZXR1cm5zIHRoZSBwcml2YXRlIHAtc2hhcmVcbiAgICogYW5kIG4tc2hhcmVzIHRvIGJlIGRpc3RyaWJ1dGVkIHRvIHBhcnRpY2lwYW50cyBhdCB0aGVpciBjb3JyZXNwb25kaW5nIGluZGV4LlxuICAgKi9cbiAgYXN5bmMga2V5U2hhcmUoaW5kZXg6IG51bWJlciwgdGhyZXNob2xkOiBudW1iZXIsIG51bVNoYXJlczogbnVtYmVyLCBzZWVkPzogQnVmZmVyKTogUHJvbWlzZTxLZXlTaGFyZT4ge1xuICAgIGlmICghKGluZGV4ID4gMCAmJiBpbmRleCA8PSBudW1TaGFyZXMgJiYgdGhyZXNob2xkIDw9IG51bVNoYXJlcyAmJiB0aHJlc2hvbGQgPT09IDIpKSB7XG4gICAgICB0aHJvdyAnSW52YWxpZCBLZXlTaGFyZSBDb25maWcnO1xuICAgIH1cblxuICAgIGlmIChzZWVkICYmIHNlZWQubGVuZ3RoICE9PSA3Mikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdTZWVkIG11c3QgaGF2ZSBsZW5ndGggNzInKTtcbiAgICB9XG4gICAgLy8gR2VuZXJhdGUgYWRkaXRpdmVseSBob21vbW9ycGhpYyBlbmNyeXB0aW9uIGtleS5cbiAgICBjb25zdCB7IHB1YmxpY0tleSwgcHJpdmF0ZUtleSB9ID0gYXdhaXQgcGFpbGxpZXJCaWdpbnQuZ2VuZXJhdGVSYW5kb21LZXlzKDMwNzIsIHRydWUpO1xuICAgIGNvbnN0IHUgPSAoc2VlZCAmJiBiaWdJbnRGcm9tVThBQkUoc2VjcC51dGlscy5oYXNoVG9Qcml2YXRlS2V5KHNlZWQuc2xpY2UoMCwgNDApKSkpID8/IEVjZHNhLmN1cnZlLnNjYWxhclJhbmRvbSgpO1xuICAgIGNvbnN0IHkgPSBFY2RzYS5jdXJ2ZS5iYXNlUG9pbnRNdWx0KHUpO1xuICAgIGNvbnN0IGNoYWluY29kZSA9IHNlZWQ/LnNsaWNlKDQwKSA/PyByYW5kb21CeXRlcygzMik7XG4gICAgLy8gQ29tcHV0ZSBzZWNyZXQgc2hhcmVzIG9mIHRoZSBwcml2YXRlIGtleVxuICAgIGNvbnN0IHVTaGFyZXMgPSBFY2RzYS5zaGFtaXIuc3BsaXQodSwgdGhyZXNob2xkLCBudW1TaGFyZXMpO1xuICAgIGNvbnN0IGN1cnJlbnRQYXJ0aWNpcGFudDogUFNoYXJlID0ge1xuICAgICAgaTogaW5kZXgsXG4gICAgICBsOiBwcml2YXRlS2V5LmxhbWJkYS50b1N0cmluZygxNiksXG4gICAgICBtOiBwcml2YXRlS2V5Lm11LnRvU3RyaW5nKDE2KSxcbiAgICAgIG46IHB1YmxpY0tleS5uLnRvU3RyaW5nKDE2KSxcbiAgICAgIHk6IGJpZ0ludFRvQnVmZmVyQkUoeSwgMzMpLnRvU3RyaW5nKCdoZXgnKSxcbiAgICAgIHU6IGJpZ0ludFRvQnVmZmVyQkUodVNoYXJlc1tpbmRleF0sIDMyKS50b1N0cmluZygnaGV4JyksXG4gICAgICBjaGFpbmNvZGU6IGNoYWluY29kZS50b1N0cmluZygnaGV4JyksXG4gICAgfTtcbiAgICBjb25zdCBrZXlTaGFyZTogS2V5U2hhcmUgPSB7XG4gICAgICBwU2hhcmU6IGN1cnJlbnRQYXJ0aWNpcGFudCxcbiAgICAgIG5TaGFyZXM6IHt9LFxuICAgIH07XG5cbiAgICBmb3IgKGNvbnN0IHNoYXJlIGluIHVTaGFyZXMpIHtcbiAgICAgIGNvbnN0IHBhcnRpY2lwYW50SW5kZXggPSBwYXJzZUludChzaGFyZSwgMTApO1xuICAgICAgaWYgKHBhcnRpY2lwYW50SW5kZXggIT09IGluZGV4KSB7XG4gICAgICAgIGtleVNoYXJlLm5TaGFyZXNbcGFydGljaXBhbnRJbmRleF0gPSB7XG4gICAgICAgICAgaTogcGFydGljaXBhbnRJbmRleCxcbiAgICAgICAgICBqOiBjdXJyZW50UGFydGljaXBhbnRbJ2knXSxcbiAgICAgICAgICBuOiBwdWJsaWNLZXkubi50b1N0cmluZygxNiksXG4gICAgICAgICAgeTogYmlnSW50VG9CdWZmZXJCRSh5LCAzMykudG9TdHJpbmcoJ2hleCcpLFxuICAgICAgICAgIHU6IGJpZ0ludFRvQnVmZmVyQkUodVNoYXJlc1twYXJ0aWNpcGFudEluZGV4XSwgMzIpLnRvU3RyaW5nKCdoZXgnKSxcbiAgICAgICAgICBjaGFpbmNvZGU6IGNoYWluY29kZS50b1N0cmluZygnaGV4JyksXG4gICAgICAgIH0gYXMgTlNoYXJlO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4ga2V5U2hhcmU7XG4gIH1cblxuICAvKipcbiAgICogQ29tYmluZSBkYXRhIHNoYXJlZCBkdXJpbmcgdGhlIGtleSBnZW5lcmF0aW9uIHByb3RvY29sLlxuICAgKiBAcGFyYW0ge0tleVNoYXJlfSBwYXJ0aWNpcGFudFNoYXJlcyBwcml2YXRlIHAtc2hhcmUgYW5kXG4gICAqIG4tc2hhcmVzIHJlY2VpdmVkIGZyb20gYWxsIG90aGVyIHBhcnRpY2lwYW50cy5cbiAgICogQHJldHVybnMge0tleUNvbWJpbmVkfSBSZXR1cm5zIHRoZSBwYXJ0aWNpcGFudCBwcml2YXRlIHgtc2hhcmVcbiAgICogYW5kIHktc2hhcmVzIHRvIGJlIHVzZWQgd2hlbiBnZW5lcmF0aW5nIHNpZ25pbmcgc2hhcmVzLlxuICAgKi9cbiAga2V5Q29tYmluZShwU2hhcmU6IFBTaGFyZSwgblNoYXJlczogTlNoYXJlW10pOiBLZXlDb21iaW5lZCB7XG4gICAgY29uc3QgYWxsU2hhcmVzID0gW3BTaGFyZSwgLi4ublNoYXJlc107XG4gICAgLy8gQ29tcHV0ZSB0aGUgcHVibGljIGtleS5cbiAgICBjb25zdCB5ID0gYWxsU2hhcmVzLm1hcCgocGFydGljaXBhbnQpID0+IGhleFRvQmlnSW50KHBhcnRpY2lwYW50Wyd5J10pKS5yZWR1Y2UoRWNkc2EuY3VydmUucG9pbnRBZGQpO1xuICAgIC8vIEFkZCBzZWNyZXQgc2hhcmVzXG4gICAgY29uc3QgeCA9IGFsbFNoYXJlcy5tYXAoKHBhcnRpY2lwYW50KSA9PiBoZXhUb0JpZ0ludChwYXJ0aWNpcGFudFsndSddKSkucmVkdWNlKEVjZHNhLmN1cnZlLnNjYWxhckFkZCk7XG5cbiAgICAvLyBDaGFpbmNvZGUgd2lsbCBiZSB1c2VkIGluIGZ1dHVyZSB3aGVuIHdlIGFkZCBzdXBwb3J0IGZvciBrZXkgZGVyaXZhdGlvbiBmb3IgZWNkc2FcbiAgICBjb25zdCBjaGFpbmNvZGVzID0gW3BTaGFyZSwgLi4ublNoYXJlc10ubWFwKCh7IGNoYWluY29kZSB9KSA9PiBiaWdJbnRGcm9tQnVmZmVyQkUoQnVmZmVyLmZyb20oY2hhaW5jb2RlLCAnaGV4JykpKTtcbiAgICBjb25zdCBjaGFpbmNvZGUgPSBjaGFpbmNvZGVzLnJlZHVjZShcbiAgICAgIChhY2MsIGNoYWluY29kZSkgPT5cbiAgICAgICAgKGFjYyArIGNoYWluY29kZSkgJSBCaWdJbnQoJzB4MDEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwJykgLy8gMl4yNTZcbiAgICApO1xuXG4gICAgY29uc3QgcGFydGljaXBhbnRzOiBLZXlDb21iaW5lZCA9IHtcbiAgICAgIHhTaGFyZToge1xuICAgICAgICBpOiBwU2hhcmUuaSxcbiAgICAgICAgbDogcFNoYXJlLmwsXG4gICAgICAgIG06IHBTaGFyZS5tLFxuICAgICAgICBuOiBwU2hhcmUubixcbiAgICAgICAgeTogYmlnSW50VG9CdWZmZXJCRSh5LCAzMykudG9TdHJpbmcoJ2hleCcpLFxuICAgICAgICB4OiBiaWdJbnRUb0J1ZmZlckJFKHgsIDMyKS50b1N0cmluZygnaGV4JyksXG4gICAgICAgIGNoYWluY29kZTogYmlnSW50VG9CdWZmZXJCRShjaGFpbmNvZGUsIDMyKS50b1N0cmluZygnaGV4JyksXG4gICAgICB9LFxuICAgICAgeVNoYXJlczoge30sXG4gICAgfTtcblxuICAgIGZvciAoY29uc3Qgc2hhcmUgaW4gblNoYXJlcykge1xuICAgICAgY29uc3QgcGFydGljaXBhbnRJbmRleCA9IG5TaGFyZXNbc2hhcmVdWydqJ107XG4gICAgICBwYXJ0aWNpcGFudHMueVNoYXJlc1twYXJ0aWNpcGFudEluZGV4XSA9IHtcbiAgICAgICAgaTogcFNoYXJlLmksXG4gICAgICAgIGo6IG5TaGFyZXNbc2hhcmVdWydqJ10sXG4gICAgICAgIG46IG5TaGFyZXNbc2hhcmVdWyduJ10sXG4gICAgICB9O1xuICAgIH1cbiAgICByZXR1cm4gcGFydGljaXBhbnRzO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBzaWduaW5nIHNoYXJlcy5cbiAgICogQHBhcmFtIHt4U2hhcmV9IHhTaGFyZSBQcml2YXRlIHhTaGFyZSBvZiBjdXJyZW50IHBhcnRpY2lwYW50IHNpZ25lclxuICAgKiBAcGFyYW0ge1lTaGFyZX0geVNoYXJlIHlTaGFyZSBjb3JyZXNwb25kaW5nIHRvIHRoZSBvdGhlciBwYXJ0aWNpcGFudCBzaWduZXJcbiAgICogQHJldHVybnMge1NpZ25TaGFyZVJUfSBSZXR1cm5zIHRoZSBwYXJ0aWNpcGFudCBwcml2YXRlIHctc2hhcmVcbiAgICogYW5kIGstc2hhcmUgdG8gYmUgZGlzdHJpYnV0ZWQgdG8gb3RoZXIgcGFydGljaXBhbnQgc2lnbmVyXG4gICAqL1xuICBzaWduU2hhcmUoeFNoYXJlOiBYU2hhcmUsIHlTaGFyZTogWVNoYXJlKTogU2lnblNoYXJlUlQge1xuICAgIGNvbnN0IHBrID0gZ2V0UGFpbGxpZXJQdWJsaWNLZXkoaGV4VG9CaWdJbnQoeFNoYXJlLm4pKTtcblxuICAgIGNvbnN0IGsgPSBFY2RzYS5jdXJ2ZS5zY2FsYXJSYW5kb20oKTtcbiAgICBjb25zdCBnYW1tYSA9IEVjZHNhLmN1cnZlLnNjYWxhclJhbmRvbSgpO1xuXG4gICAgY29uc3QgZCA9IEVjZHNhLmN1cnZlLnNjYWxhck11bHQoRWNkc2EuY3VydmUuc2NhbGFyU3ViKEJpZ0ludCh5U2hhcmUuaiksIEJpZ0ludCh4U2hhcmUuaSkpLCBCaWdJbnQoeFNoYXJlLmkpKTtcblxuICAgIGNvbnN0IHcgPSBbXG4gICAgICBFY2RzYS5jdXJ2ZS5zY2FsYXJNdWx0KEJpZ0ludCh5U2hhcmUuaiksIEJpZ0ludCh4U2hhcmUuaSkpLFxuICAgICAgaGV4VG9CaWdJbnQoeFNoYXJlWyd4J10pLFxuICAgICAgRWNkc2EuY3VydmUuc2NhbGFySW52ZXJ0KGQpLFxuICAgIF0ucmVkdWNlKEVjZHNhLmN1cnZlLnNjYWxhck11bHQpO1xuXG4gICAgY29uc3Qgc2lnbmVyczogU2lnblNoYXJlUlQgPSB7XG4gICAgICB3U2hhcmU6IHtcbiAgICAgICAgaTogeFNoYXJlLmksXG4gICAgICAgIGw6IHhTaGFyZS5sLFxuICAgICAgICBtOiB4U2hhcmUubSxcbiAgICAgICAgbjogeFNoYXJlLm4sXG4gICAgICAgIHk6IHhTaGFyZS55LFxuICAgICAgICBrOiBiaWdJbnRUb0J1ZmZlckJFKGssIDMyKS50b1N0cmluZygnaGV4JyksXG4gICAgICAgIHc6IGJpZ0ludFRvQnVmZmVyQkUodywgMzIpLnRvU3RyaW5nKCdoZXgnKSxcbiAgICAgICAgZ2FtbWE6IGJpZ0ludFRvQnVmZmVyQkUoZ2FtbWEsIDMyKS50b1N0cmluZygnaGV4JyksXG4gICAgICB9LFxuICAgICAga1NoYXJlOiB7fSBhcyBLU2hhcmUsXG4gICAgfTtcblxuICAgIHNpZ25lcnMua1NoYXJlID0ge1xuICAgICAgaTogeVNoYXJlLmosXG4gICAgICBqOiB4U2hhcmUuaSxcbiAgICAgIG46IHBrLm4udG9TdHJpbmcoMTYpLFxuICAgICAgazogYmlnSW50VG9CdWZmZXJCRShway5lbmNyeXB0KGspLCAzMikudG9TdHJpbmcoJ2hleCcpLFxuICAgIH07XG5cbiAgICByZXR1cm4gc2lnbmVycztcbiAgfVxuXG4gIC8qKlxuICAgKiBQZXJmb3JtIG11bHRpcGxpY2l0aXZlLXRvLWFkZGl0aXZlIChNdEEpIHNoYXJlIGNvbnZlcnNpb24gd2l0aCBhbm90aGVyXG4gICAqIHNpZ25lci5cbiAgICogQHBhcmFtIHtTaWduQ29udmVydH1cbiAgICogQHJldHVybnMge1NpZ25Db252ZXJ0UlR9XG4gICAqL1xuICBzaWduQ29udmVydChzaGFyZXM6IFNpZ25Db252ZXJ0KTogU2lnbkNvbnZlcnRSVCB7XG4gICAgbGV0IHNoYXJlUGFydGljaXBhbnQ6IEJTaGFyZSB8IEdTaGFyZSwgc2hhcmVUb0JlU2VuZDogQVNoYXJlIHwgTVVTaGFyZTtcbiAgICBsZXQgaXNHYW1tYVNoYXJlID0gZmFsc2U7XG4gICAgaWYgKHNoYXJlcy54U2hhcmUgJiYgc2hhcmVzLnlTaGFyZSAmJiBzaGFyZXMua1NoYXJlKSB7XG4gICAgICBjb25zdCB4U2hhcmUgPSBzaGFyZXMueFNoYXJlOyAvLyBjdXJyZW50UGFydGljaXBhbnQgc2VjcmV0IHhTaGFyZVxuICAgICAgY29uc3QgeVNoYXJlID0gc2hhcmVzLnlTaGFyZTtcbiAgICAgIGNvbnN0IHNpZ25TaGFyZSA9IHRoaXMuc2lnblNoYXJlKHhTaGFyZSwgeVNoYXJlKTtcbiAgICAgIHNoYXJlVG9CZVNlbmQgPSB7IC4uLnNoYXJlcy5rU2hhcmUsIGFscGhhOiAnJywgbXU6ICcnIH0gYXMgQVNoYXJlO1xuICAgICAgc2hhcmVQYXJ0aWNpcGFudCA9IHsgLi4uc2lnblNoYXJlLndTaGFyZSwgYmV0YTogJycsIG51OiAnJyB9IGFzIEJTaGFyZTtcbiAgICB9IGVsc2UgaWYgKChzaGFyZXMuYlNoYXJlICYmIHNoYXJlcy5tdVNoYXJlKSB8fCAoc2hhcmVzLmFTaGFyZSAmJiBzaGFyZXMud1NoYXJlKSkge1xuICAgICAgaXNHYW1tYVNoYXJlID0gdHJ1ZTtcbiAgICAgIHNoYXJlVG9CZVNlbmQgPSBzaGFyZXMuYVNoYXJlID8gKHsgLi4uc2hhcmVzLmFTaGFyZSB9IGFzIE1VU2hhcmUpIDogKHsgLi4uc2hhcmVzLm11U2hhcmUgfSBhcyBNVVNoYXJlKTtcbiAgICAgIHNoYXJlUGFydGljaXBhbnQgPSBzaGFyZXMud1NoYXJlID8gKHsgLi4uc2hhcmVzLndTaGFyZSB9IGFzIEdTaGFyZSkgOiAoeyAuLi5zaGFyZXMuYlNoYXJlIH0gYXMgR1NoYXJlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGNvbmZpZyBmb3IgU2lnbiBDb252ZXJ0Jyk7XG4gICAgfVxuICAgIGlmIChzaGFyZVBhcnRpY2lwYW50LmkgIT09IHNoYXJlVG9CZVNlbmQuaSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdTaGFyZXMgZnJvbSBzYW1lIHBhcnRpY2lwYW50Jyk7XG4gICAgfVxuICAgIGlmIChzaGFyZVRvQmVTZW5kWydhbHBoYSddKSB7XG4gICAgICBjb25zdCBwayA9IGdldFBhaWxsaWVyUHVibGljS2V5KGhleFRvQmlnSW50KHNoYXJlUGFydGljaXBhbnQubikpO1xuICAgICAgY29uc3Qgc2sgPSBuZXcgcGFpbGxpZXJCaWdpbnQuUHJpdmF0ZUtleShcbiAgICAgICAgaGV4VG9CaWdJbnQoc2hhcmVQYXJ0aWNpcGFudC5sIGFzIHN0cmluZyksXG4gICAgICAgIGhleFRvQmlnSW50KHNoYXJlUGFydGljaXBhbnQubSBhcyBzdHJpbmcpLFxuICAgICAgICBwa1xuICAgICAgKTtcbiAgICAgIGNvbnN0IGFscGhhID0gc2suZGVjcnlwdChoZXhUb0JpZ0ludChzaGFyZVRvQmVTZW5kLmFscGhhKSk7XG4gICAgICBzaGFyZVBhcnRpY2lwYW50WydhbHBoYSddID0gYmlnSW50VG9CdWZmZXJCRShFY2RzYS5jdXJ2ZS5zY2FsYXJSZWR1Y2UoYWxwaGEpLCAzMikudG9TdHJpbmcoJ2hleCcpO1xuICAgICAgY29uc3QgbXUgPSBzay5kZWNyeXB0KGhleFRvQmlnSW50KHNoYXJlVG9CZVNlbmQubXUgYXMgc3RyaW5nKSk7IC8vIHJlY2hlY2sgZW5jcnlwdGVkIG51bWJlclxuICAgICAgc2hhcmVQYXJ0aWNpcGFudFsnbXUnXSA9IGJpZ0ludFRvQnVmZmVyQkUoRWNkc2EuY3VydmUuc2NhbGFyUmVkdWNlKG11KSwgMzIpLnRvU3RyaW5nKCdoZXgnKTtcbiAgICAgIGRlbGV0ZSBzaGFyZVBhcnRpY2lwYW50WydsJ107XG4gICAgICBkZWxldGUgc2hhcmVQYXJ0aWNpcGFudFsnbSddO1xuICAgICAgZGVsZXRlIHNoYXJlVG9CZVNlbmRbJ2FscGhhJ107XG4gICAgICBkZWxldGUgc2hhcmVUb0JlU2VuZFsnbXUnXTtcbiAgICB9XG4gICAgaWYgKHNoYXJlVG9CZVNlbmRbJ2snXSkge1xuICAgICAgY29uc3QgbiA9IGhleFRvQmlnSW50KHNoYXJlVG9CZVNlbmRbJ24nXSk7IC8vIFBhaWxsaWVyIHB1YiBmcm9tIG90aGVyIHNpZ25lclxuICAgICAgbGV0IHBrID0gZ2V0UGFpbGxpZXJQdWJsaWNLZXkobik7XG4gICAgICBjb25zdCBrID0gaGV4VG9CaWdJbnQoc2hhcmVUb0JlU2VuZFsnayddKTtcblxuICAgICAgY29uc3QgYmV0YTAgPSBiaWdpbnRDcnlwdG9VdGlscy5yYW5kQmV0d2VlbihuIC8gXzNuIC0gXzFuKTtcbiAgICAgIHNoYXJlUGFydGljaXBhbnQuYmV0YSA9IGJpZ0ludFRvQnVmZmVyQkUoRWNkc2EuY3VydmUuc2NhbGFyTmVnYXRlKEVjZHNhLmN1cnZlLnNjYWxhclJlZHVjZShiZXRhMCkpLCAzMikudG9TdHJpbmcoXG4gICAgICAgICdoZXgnXG4gICAgICApO1xuICAgICAgY29uc3QgYWxwaGEgPSBway5hZGRpdGlvbihway5tdWx0aXBseShrLCBoZXhUb0JpZ0ludChzaGFyZVBhcnRpY2lwYW50LmdhbW1hKSksIHBrLmVuY3J5cHQoYmV0YTApKTtcbiAgICAgIHNoYXJlVG9CZVNlbmQuYWxwaGEgPSBiaWdJbnRUb0J1ZmZlckJFKGFscGhhLCAzMikudG9TdHJpbmcoJ2hleCcpO1xuXG4gICAgICBjb25zdCBudTAgPSBiaWdpbnRDcnlwdG9VdGlscy5yYW5kQmV0d2VlbihuIC8gXzNuIC0gXzFuKTtcbiAgICAgIHNoYXJlUGFydGljaXBhbnQubnUgPSBiaWdJbnRUb0J1ZmZlckJFKEVjZHNhLmN1cnZlLnNjYWxhck5lZ2F0ZShFY2RzYS5jdXJ2ZS5zY2FsYXJSZWR1Y2UobnUwKSksIDMyKS50b1N0cmluZyhcbiAgICAgICAgJ2hleCdcbiAgICAgICk7XG4gICAgICBjb25zdCBtdSA9IHBrLmFkZGl0aW9uKHBrLm11bHRpcGx5KGssIGhleFRvQmlnSW50KHNoYXJlUGFydGljaXBhbnQudykpLCBway5lbmNyeXB0KG51MCkpO1xuICAgICAgc2hhcmVUb0JlU2VuZC5tdSA9IGJpZ0ludFRvQnVmZmVyQkUobXUsIDMyKS50b1N0cmluZygnaGV4Jyk7XG4gICAgICBpZiAoc2hhcmVQYXJ0aWNpcGFudFsnYWxwaGEnXSkge1xuICAgICAgICBkZWxldGUgc2hhcmVUb0JlU2VuZFsnbiddO1xuICAgICAgICBkZWxldGUgc2hhcmVUb0JlU2VuZFsnayddO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcGsgPSBnZXRQYWlsbGllclB1YmxpY0tleShoZXhUb0JpZ0ludChzaGFyZVBhcnRpY2lwYW50Lm4pKTtcbiAgICAgICAgc2hhcmVUb0JlU2VuZFsnbiddID0gcGsubi50b1N0cmluZygxNik7XG4gICAgICAgIHNoYXJlVG9CZVNlbmRbJ2snXSA9IGJpZ0ludFRvQnVmZmVyQkUocGsuZW5jcnlwdChoZXhUb0JpZ0ludChzaGFyZVBhcnRpY2lwYW50LmspKSwgMzIpLnRvU3RyaW5nKCdoZXgnKTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKCEoJ2FscGhhJyBpbiBzaGFyZVRvQmVTZW5kKSAmJiAhKCdrJyBpbiBzaGFyZVRvQmVTZW5kKSkge1xuICAgICAgc2hhcmVUb0JlU2VuZCA9IHtcbiAgICAgICAgaTogc2hhcmVUb0JlU2VuZFsnaSddLFxuICAgICAgICBqOiBzaGFyZVRvQmVTZW5kWydqJ10sXG4gICAgICB9O1xuICAgIH1cbiAgICBbc2hhcmVUb0JlU2VuZFsnaSddLCBzaGFyZVRvQmVTZW5kWydqJ11dID0gW3NoYXJlVG9CZVNlbmRbJ2onXSwgc2hhcmVUb0JlU2VuZFsnaSddXTtcbiAgICBpZiAoaXNHYW1tYVNoYXJlKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBtdVNoYXJlOiBzaGFyZVRvQmVTZW5kIGFzIE1VU2hhcmUsXG4gICAgICAgIGdTaGFyZTogc2hhcmVQYXJ0aWNpcGFudCBhcyBHU2hhcmUsXG4gICAgICB9O1xuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgYVNoYXJlOiBzaGFyZVRvQmVTZW5kLFxuICAgICAgYlNoYXJlOiBzaGFyZVBhcnRpY2lwYW50IGFzIEJTaGFyZSxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIENvbWJpbmUgZ2FtbWEgc2hhcmVzIHRvIGdldCB0aGUgcHJpdmF0ZSBvbWljcm9uIC8gZGVsdGEgc2hhcmVzXG4gICAqIEBwYXJhbSB7U2lnbkNvbWJpbmV9IHNoYXJlc1xuICAgKiBAcmV0dXJucyB7U2lnbkNvbWJpbmVSVH1cbiAgICovXG4gIHNpZ25Db21iaW5lKHNoYXJlczogU2lnbkNvbWJpbmUpOiBTaWduQ29tYmluZVJUIHtcbiAgICBjb25zdCBnU2hhcmUgPSBzaGFyZXMuZ1NoYXJlO1xuICAgIGNvbnN0IFMgPSBzaGFyZXMuc2lnbkluZGV4O1xuICAgIGNvbnN0IGdhbW1hID0gaGV4VG9CaWdJbnQoZ1NoYXJlLmdhbW1hKTtcbiAgICBjb25zdCBhbHBoYSA9IGhleFRvQmlnSW50KGdTaGFyZS5hbHBoYSk7XG4gICAgY29uc3QgYmV0YSA9IGhleFRvQmlnSW50KGdTaGFyZS5iZXRhKTtcbiAgICBjb25zdCBtdSA9IGhleFRvQmlnSW50KGdTaGFyZS5tdSk7XG4gICAgY29uc3QgbnUgPSBoZXhUb0JpZ0ludChnU2hhcmUubnUpO1xuICAgIGNvbnN0IGsgPSBoZXhUb0JpZ0ludChnU2hhcmUuayk7XG4gICAgY29uc3QgdyA9IGhleFRvQmlnSW50KGdTaGFyZS53KTtcblxuICAgIGNvbnN0IGRlbHRhID0gRWNkc2EuY3VydmUuc2NhbGFyQWRkKEVjZHNhLmN1cnZlLnNjYWxhck11bHQoaywgZ2FtbWEpLCBFY2RzYS5jdXJ2ZS5zY2FsYXJBZGQoYWxwaGEsIGJldGEpKTtcbiAgICBjb25zdCBvbWljcm9uID0gRWNkc2EuY3VydmUuc2NhbGFyQWRkKEVjZHNhLmN1cnZlLnNjYWxhck11bHQoaywgdyksIEVjZHNhLmN1cnZlLnNjYWxhckFkZChtdSwgbnUpKTtcbiAgICBjb25zdCBHYW1tYSA9IEVjZHNhLmN1cnZlLmJhc2VQb2ludE11bHQoZ2FtbWEpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIG9TaGFyZToge1xuICAgICAgICBpOiBnU2hhcmUuaSxcbiAgICAgICAgeTogZ1NoYXJlLnksXG4gICAgICAgIGs6IGJpZ0ludFRvQnVmZmVyQkUoaywgMzIpLnRvU3RyaW5nKCdoZXgnKSxcbiAgICAgICAgb21pY3JvbjogYmlnSW50VG9CdWZmZXJCRShvbWljcm9uLCAzMikudG9TdHJpbmcoJ2hleCcpLFxuICAgICAgICBkZWx0YTogYmlnSW50VG9CdWZmZXJCRShkZWx0YSwgMzIpLnRvU3RyaW5nKCdoZXgnKSxcbiAgICAgICAgR2FtbWE6IGJpZ0ludFRvQnVmZmVyQkUoR2FtbWEsIDMzKS50b1N0cmluZygnaGV4JyksXG4gICAgICB9LFxuICAgICAgZFNoYXJlOiB7XG4gICAgICAgIGk6IFMuaSxcbiAgICAgICAgajogZ1NoYXJlLmksXG4gICAgICAgIGRlbHRhOiBiaWdJbnRUb0J1ZmZlckJFKGRlbHRhLCAzMikudG9TdHJpbmcoJ2hleCcpLFxuICAgICAgICBHYW1tYTogYmlnSW50VG9CdWZmZXJCRShHYW1tYSwgMzMpLnRvU3RyaW5nKCdoZXgnKSxcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTaWduIGEgbWVzc2FnZS5cbiAgICogQHBhcmFtIHtCdWZmZXJ9IE0gTWVzc2FnZSB0byBiZSBzaWduZWRcbiAgICogQHBhcmFtIHtPU2hhcmV9IG9TaGFyZSBwcml2YXRlIG9taWNyb24gc2hhcmUgb2YgY3VycmVudCBwYXJ0aWNpcGFudFxuICAgKiBAcGFyYW0ge0RTaGFyZX0gZFNoYXJlIGRlbHRhIHNoYXJlIHJlY2VpdmVkIGZyb20gdGhlIG90aGVyIHBhcnRpY2lwYW50XG4gICAqIEBwYXJhbSB7SGFzaH0gaGFzaCBoYXNoaW5nIGFsZ29yaXRobSBpbXBsZW1lbnRpbmcgTm9kZWBzIHN0YW5kYXJkIGNyeXB0byBoYXNoIGludGVyZmFjZVxuICAgKiBAcmV0dXJucyB7U1NoYXJlfVxuICAgKi9cbiAgc2lnbihNOiBCdWZmZXIsIG9TaGFyZTogT1NoYXJlLCBkU2hhcmU6IERTaGFyZSwgaGFzaD86IEhhc2gpOiBTU2hhcmUge1xuICAgIGNvbnN0IG0gPSAoaGFzaCB8fCBjcmVhdGVIYXNoKCdzaGEyNTYnKSkudXBkYXRlKE0pLmRpZ2VzdCgpO1xuXG4gICAgY29uc3QgZGVsdGEgPSBFY2RzYS5jdXJ2ZS5zY2FsYXJBZGQoaGV4VG9CaWdJbnQob1NoYXJlLmRlbHRhKSwgaGV4VG9CaWdJbnQoZFNoYXJlLmRlbHRhKSk7XG5cbiAgICBjb25zdCBSID0gRWNkc2EuY3VydmUucG9pbnRNdWx0aXBseShcbiAgICAgIEVjZHNhLmN1cnZlLnBvaW50QWRkKGhleFRvQmlnSW50KG9TaGFyZS5HYW1tYSksIGhleFRvQmlnSW50KGRTaGFyZS5HYW1tYSkpLFxuICAgICAgRWNkc2EuY3VydmUuc2NhbGFySW52ZXJ0KGRlbHRhKVxuICAgICk7XG4gICAgY29uc3QgcG9pbnRSID0gc2VjcC5Qb2ludC5mcm9tSGV4KGJpZ0ludFRvQnVmZmVyQkUoUiwgMzIpKTtcbiAgICBjb25zdCByID0gcG9pbnRSLng7XG5cbiAgICBjb25zdCBzID0gRWNkc2EuY3VydmUuc2NhbGFyQWRkKFxuICAgICAgRWNkc2EuY3VydmUuc2NhbGFyTXVsdChiaWdJbnRGcm9tVThBQkUobSksIGhleFRvQmlnSW50KG9TaGFyZS5rKSksXG4gICAgICBFY2RzYS5jdXJ2ZS5zY2FsYXJNdWx0KHIsIGhleFRvQmlnSW50KG9TaGFyZS5vbWljcm9uKSlcbiAgICApO1xuICAgIHJldHVybiB7XG4gICAgICBpOiBvU2hhcmUuaSxcbiAgICAgIHk6IG9TaGFyZS55LFxuICAgICAgUjogcG9pbnRSLnRvSGV4KHRydWUpLFxuICAgICAgczogYmlnSW50VG9CdWZmZXJCRShzLCAzMikudG9TdHJpbmcoJ2hleCcpLFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogQ29uc3RydWN0IGZ1bGwgc2lnbmF0dXJlIGJ5IGNvbWJpbmluZyBTaWduIFNoYXJlc1xuICAgKiBAcGFyYW0ge1NTaGFyZVtdfSBzaGFyZXNcbiAgICogQHJldHVybnMge1NpZ25hdHVyZX1cbiAgICovXG4gIGNvbnN0cnVjdFNpZ25hdHVyZShzaGFyZXM6IFNTaGFyZVtdKTogU2lnbmF0dXJlIHtcbiAgICAvLyBFdmVyeSBSIG11c3QgbWF0Y2guXG4gICAgY29uc3QgUiA9IHNoYXJlc1swXVsnUiddO1xuICAgIGNvbnN0IGlzUk1hdGNoaW5nID0gc2hhcmVzLm1hcCgoc2hhcmUpID0+IHNoYXJlWydSJ10gPT09IFIpLnJlZHVjZSgoYSwgYikgPT4gYSAmJiBiKTtcbiAgICBpZiAoIWlzUk1hdGNoaW5nKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1IgdmFsdWUgc2hvdWxkIGJlIGNvbnNpc3RlbnQgYWNyb3NzIGFsbCBzaGFyZXMnKTtcbiAgICB9XG5cbiAgICBsZXQgcyA9IHNoYXJlcy5tYXAoKHNoYXJlKSA9PiBoZXhUb0JpZ0ludChzaGFyZVsncyddKSkucmVkdWNlKEVjZHNhLmN1cnZlLnNjYWxhckFkZCk7XG4gICAgY29uc3QgcmVjaWQgPSAoUi5zbGljZSgwLCAyKSA9PT0gJzAzJyA/IDEgOiAwKSBeIChzID4gRWNkc2EuY3VydmUub3JkZXIoKSAvIEJpZ0ludCgyKSA/IDEgOiAwKTtcblxuICAgIC8vIE5vcm1hbGl6ZSBzLlxuICAgIHMgPSBzID4gRWNkc2EuY3VydmUub3JkZXIoKSAvIEJpZ0ludCgyKSA/IEVjZHNhLmN1cnZlLm9yZGVyKCkgLSBzIDogcztcbiAgICByZXR1cm4ge1xuICAgICAgeTogc2hhcmVzWzBdWyd5J10sXG4gICAgICByOiBSLnNsaWNlKDIpLFxuICAgICAgczogYmlnSW50VG9CdWZmZXJCRShzLCAzMikudG9TdHJpbmcoJ2hleCcpLFxuICAgICAgcmVjaWQ6IHJlY2lkLFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogVmVyaWZ5IGVjZHNhIHNpZ25hdHVyZXNcbiAgICogQHBhcmFtIHtCdWZmZXJ9IG1lc3NhZ2VcbiAgICogQHBhcmFtIHtTaWduYXR1cmUgfSBzaWduYXR1cmVcbiAgICogQHBhcmFtIHtIYXNofSBoYXNoIGhhc2hpbmcgYWxnb3JpdGhtIGltcGxlbWVudGluZyBOb2RlYHMgc3RhbmRhcmQgY3J5cHRvIGhhc2ggaW50ZXJmYWNlXG4gICAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIHNpZ25hdHVyZSBpcyB2YWxpZDsgRmFsc2Ugb3RoZXJ3aXNlXG4gICAqL1xuICB2ZXJpZnkobWVzc2FnZTogQnVmZmVyLCBzaWduYXR1cmU6IFNpZ25hdHVyZSwgaGFzaD86IEhhc2gpOiBib29sZWFuIHtcbiAgICByZXR1cm4gRWNkc2EuY3VydmUudmVyaWZ5KFxuICAgICAgKGhhc2ggfHwgY3JlYXRlSGFzaCgnc2hhMjU2JykpLnVwZGF0ZShtZXNzYWdlKS5kaWdlc3QoKSxcbiAgICAgIEJ1ZmZlci5jb25jYXQoW1xuICAgICAgICBCdWZmZXIuZnJvbShbc2lnbmF0dXJlWydyZWNpZCddXSksXG4gICAgICAgIGJpZ0ludFRvQnVmZmVyQkUoaGV4VG9CaWdJbnQoc2lnbmF0dXJlWydyJ10pLCAzMiksXG4gICAgICAgIGJpZ0ludFRvQnVmZmVyQkUoaGV4VG9CaWdJbnQoc2lnbmF0dXJlWydzJ10pLCAzMiksXG4gICAgICBdKSxcbiAgICAgIGhleFRvQmlnSW50KHNpZ25hdHVyZVsneSddKVxuICAgICk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -121,9 +121,9 @@ export interface DShare {
|
|
|
121
121
|
}
|
|
122
122
|
export interface SShare {
|
|
123
123
|
i: number;
|
|
124
|
-
|
|
125
|
-
r: string;
|
|
124
|
+
R: string;
|
|
126
125
|
s: string;
|
|
126
|
+
y: string;
|
|
127
127
|
}
|
|
128
128
|
export interface SignCombine {
|
|
129
129
|
gShare: GShare;
|
|
@@ -138,12 +138,7 @@ export interface SignCombineRT {
|
|
|
138
138
|
}
|
|
139
139
|
export interface Signature {
|
|
140
140
|
y: string;
|
|
141
|
-
|
|
142
|
-
s: string;
|
|
143
|
-
}
|
|
144
|
-
export interface SignRT {
|
|
145
|
-
i: number;
|
|
146
|
-
y: string;
|
|
141
|
+
recid: number;
|
|
147
142
|
r: string;
|
|
148
143
|
s: string;
|
|
149
144
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../../src/account-lib/mpc/tss/ecdsa/types.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../../src/account-lib/mpc/tss/ecdsa/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYWNjb3VudC1saWIvbXBjL3Rzcy9lY2RzYS90eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiLy8gUHJpdmF0ZSBzaGFyZSBvZiB0aGUgdXNlciBnZW5lcmF0ZWQgZHVyaW5nIGtleSBnZW5lcmF0aW9uXG5leHBvcnQgaW50ZXJmYWNlIFBTaGFyZSB7XG4gIGk6IG51bWJlcjsgLy8gcGFydGljaXBhbnQgaW5kZXhcbiAgbDogc3RyaW5nOyAvLyBsYW1iZGEgdmFsdWUgZm9yIHBhaWxsaWVyIHNlY3JldCBrZXlcbiAgbTogc3RyaW5nOyAvLyBtdSB2YWx1ZSBmb3IgcGFpbGxpZXIgc2VjcmV0IGtleVxuICB1OiBzdHJpbmc7IC8vIHNoYW1pciBzaGFyZSBvZiBzZWNyZXRcbiAgbjogc3RyaW5nOyAvLyBuID0+IChwIC4gcSkgd2hlcmUgcCBhbmQgcSBhcmUgdGhlIHR3byByYW5kb20gcHJpbWUgbnVtYmVycyBjaG9zZW4gZm9yIHBhaWxsaWVyIGVuY3J5cHRpb25cbiAgeTogc3RyaW5nO1xuICBjaGFpbmNvZGU6IHN0cmluZztcbn1cblxuLy8gTlNoYXJlcyB3aGljaCBpcyBzaGFyZWQgdG8gdGhlIG90aGVyIHBhcnRpY2lwYW50cyBkdXJpbmcga2V5IGdlbmVyYXRpb25cbmV4cG9ydCBpbnRlcmZhY2UgTlNoYXJlIHtcbiAgaTogbnVtYmVyOyAvLyBwYXJ0aWNpcGFudCBpbmRleFxuICBqOiBudW1iZXI7IC8vIHRhcmdldCBwYXJ0aWNpcGFudCBpbmRleFxuICBuOiBzdHJpbmc7XG4gIHU6IHN0cmluZzsgLy8gc2hhbWlyIHNoYXJlIG9mIHNlY3JldCBhdCBqJ3RoIGluZGV4XG4gIHk6IHN0cmluZztcbiAgY2hhaW5jb2RlOiBzdHJpbmc7XG59XG5cbmV4cG9ydCB0eXBlIEtleVNoYXJlID0ge1xuICBwU2hhcmU6IFBTaGFyZTtcbiAgblNoYXJlczogUmVjb3JkPG51bWJlciwgTlNoYXJlPjtcbn07XG5cbi8vIFByaXZhdGUgWFNoYXJlIG9mIHRoZSBjdXJyZW50IHBhcnRpY2lwYW50XG5leHBvcnQgaW50ZXJmYWNlIFhTaGFyZSB7XG4gIGk6IG51bWJlcjtcbiAgbDogc3RyaW5nO1xuICBtOiBzdHJpbmc7XG4gIG46IHN0cmluZztcbiAgeTogc3RyaW5nOyAvLyBjb21iaW5lZCBwdWJsaWMga2V5XG4gIHg6IHN0cmluZzsgLy8gY29tYmluZWQgc2VjcmV0XG4gIGNoYWluY29kZTogc3RyaW5nO1xufVxuXG4vLyBZU2hhcmVzIHVzZWQgZHVyaW5nIHNpZ25hdHVyZSBnZW5lcmF0aW9uXG5leHBvcnQgaW50ZXJmYWNlIFlTaGFyZSB7XG4gIGk6IG51bWJlcjtcbiAgajogbnVtYmVyO1xuICBuOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgS2V5Q29tYmluZWQge1xuICB4U2hhcmU6IFhTaGFyZTtcbiAgeVNoYXJlczogUmVjb3JkPG51bWJlciwgWVNoYXJlPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBXU2hhcmUge1xuICBpOiBudW1iZXI7XG4gIGw6IHN0cmluZztcbiAgbTogc3RyaW5nO1xuICBuOiBzdHJpbmc7XG4gIHk6IHN0cmluZzsgLy8gY29tYmluZWQgcHVibGljIGtleVxuICBrOiBzdHJpbmc7XG4gIHc6IHN0cmluZztcbiAgZ2FtbWE6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBLU2hhcmUge1xuICBpOiBudW1iZXI7XG4gIGo6IG51bWJlcjtcbiAgbjogc3RyaW5nO1xuICBrOiBzdHJpbmc7XG59XG5leHBvcnQgaW50ZXJmYWNlIFNpZ25TaGFyZVJUIHtcbiAgd1NoYXJlOiBXU2hhcmU7XG4gIGtTaGFyZTogS1NoYXJlO1xufVxuXG4vLyBBbHBoYSBTaGFyZVxuZXhwb3J0IGludGVyZmFjZSBBU2hhcmUge1xuICBpOiBudW1iZXI7XG4gIGo6IG51bWJlcjtcbiAgbj86IHN0cmluZztcbiAgaz86IHN0cmluZztcbiAgYWxwaGE/OiBzdHJpbmc7XG4gIG11Pzogc3RyaW5nO1xufVxuXG4vLyBCZXRhIFNoYXJlXG5leHBvcnQgaW50ZXJmYWNlIEJTaGFyZSBleHRlbmRzIFdTaGFyZSB7XG4gIGdhbW1hOiBzdHJpbmc7XG4gIGJldGE6IHN0cmluZztcbiAgbnU6IHN0cmluZztcbn1cblxuLy8gTXUgU2hhcmVcbmV4cG9ydCBpbnRlcmZhY2UgTVVTaGFyZSB7XG4gIGk6IG51bWJlcjtcbiAgajogbnVtYmVyO1xuICBhbHBoYTogc3RyaW5nO1xuICBtdTogc3RyaW5nO1xufVxuXG4vLyBHYW1tYSBTaGFyZVxuZXhwb3J0IGludGVyZmFjZSBHU2hhcmUge1xuICBpOiBudW1iZXI7XG4gIGw/OiBzdHJpbmc7XG4gIG0/OiBzdHJpbmc7XG4gIG46IHN0cmluZztcbiAgeTogc3RyaW5nOyAvLyBjb21iaW5lZCBwdWJsaWMga2V5XG4gIGs6IHN0cmluZztcbiAgdzogc3RyaW5nO1xuICBnYW1tYTogc3RyaW5nO1xuICBhbHBoYTogc3RyaW5nO1xuICBtdTogc3RyaW5nO1xuICBiZXRhOiBzdHJpbmc7XG4gIG51OiBzdHJpbmc7XG59XG5leHBvcnQgaW50ZXJmYWNlIFNpZ25Db252ZXJ0IHtcbiAgeFNoYXJlPzogWFNoYXJlOyAvLyBYU2hhcmUgb2YgdGhlIGN1cnJlbnQgcGFydGljaXBhbnRcbiAgeVNoYXJlPzogWVNoYXJlOyAvLyBZU2hhcmUgY29ycmVzcG9uZGluZyB0byB0aGUgb3RoZXIgcGFydGljaXBhbnRcbiAga1NoYXJlPzogS1NoYXJlOyAvLyBLU2hhcmUgcmVjZWl2ZWQgZnJvbSB0aGUgb3RoZXIgcGFydGljaXBhbnRcbiAgYlNoYXJlPzogQlNoYXJlOyAvLyBQcml2YXRlIEJldGEgc2hhcmUgb2YgdGhlIHBhcnRpY2lwYW50XG4gIG11U2hhcmU/OiBNVVNoYXJlOyAvLyBtdVNoYXJlIHJlY2VpdmVkIGZyb20gdGhlIG90aGVyIHBhcnRpY2lwYW50XG4gIGFTaGFyZT86IEFTaGFyZTtcbiAgd1NoYXJlPzogV1NoYXJlO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNpZ25Db252ZXJ0UlQge1xuICBhU2hhcmU/
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYWNjb3VudC1saWIvbXBjL3Rzcy9lY2RzYS90eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiLy8gUHJpdmF0ZSBzaGFyZSBvZiB0aGUgdXNlciBnZW5lcmF0ZWQgZHVyaW5nIGtleSBnZW5lcmF0aW9uXG5leHBvcnQgaW50ZXJmYWNlIFBTaGFyZSB7XG4gIGk6IG51bWJlcjsgLy8gcGFydGljaXBhbnQgaW5kZXhcbiAgbDogc3RyaW5nOyAvLyBsYW1iZGEgdmFsdWUgZm9yIHBhaWxsaWVyIHNlY3JldCBrZXlcbiAgbTogc3RyaW5nOyAvLyBtdSB2YWx1ZSBmb3IgcGFpbGxpZXIgc2VjcmV0IGtleVxuICB1OiBzdHJpbmc7IC8vIHNoYW1pciBzaGFyZSBvZiBzZWNyZXRcbiAgbjogc3RyaW5nOyAvLyBuID0+IChwIC4gcSkgd2hlcmUgcCBhbmQgcSBhcmUgdGhlIHR3byByYW5kb20gcHJpbWUgbnVtYmVycyBjaG9zZW4gZm9yIHBhaWxsaWVyIGVuY3J5cHRpb25cbiAgeTogc3RyaW5nO1xuICBjaGFpbmNvZGU6IHN0cmluZztcbn1cblxuLy8gTlNoYXJlcyB3aGljaCBpcyBzaGFyZWQgdG8gdGhlIG90aGVyIHBhcnRpY2lwYW50cyBkdXJpbmcga2V5IGdlbmVyYXRpb25cbmV4cG9ydCBpbnRlcmZhY2UgTlNoYXJlIHtcbiAgaTogbnVtYmVyOyAvLyBwYXJ0aWNpcGFudCBpbmRleFxuICBqOiBudW1iZXI7IC8vIHRhcmdldCBwYXJ0aWNpcGFudCBpbmRleFxuICBuOiBzdHJpbmc7XG4gIHU6IHN0cmluZzsgLy8gc2hhbWlyIHNoYXJlIG9mIHNlY3JldCBhdCBqJ3RoIGluZGV4XG4gIHk6IHN0cmluZztcbiAgY2hhaW5jb2RlOiBzdHJpbmc7XG59XG5cbmV4cG9ydCB0eXBlIEtleVNoYXJlID0ge1xuICBwU2hhcmU6IFBTaGFyZTtcbiAgblNoYXJlczogUmVjb3JkPG51bWJlciwgTlNoYXJlPjtcbn07XG5cbi8vIFByaXZhdGUgWFNoYXJlIG9mIHRoZSBjdXJyZW50IHBhcnRpY2lwYW50XG5leHBvcnQgaW50ZXJmYWNlIFhTaGFyZSB7XG4gIGk6IG51bWJlcjtcbiAgbDogc3RyaW5nO1xuICBtOiBzdHJpbmc7XG4gIG46IHN0cmluZztcbiAgeTogc3RyaW5nOyAvLyBjb21iaW5lZCBwdWJsaWMga2V5XG4gIHg6IHN0cmluZzsgLy8gY29tYmluZWQgc2VjcmV0XG4gIGNoYWluY29kZTogc3RyaW5nO1xufVxuXG4vLyBZU2hhcmVzIHVzZWQgZHVyaW5nIHNpZ25hdHVyZSBnZW5lcmF0aW9uXG5leHBvcnQgaW50ZXJmYWNlIFlTaGFyZSB7XG4gIGk6IG51bWJlcjtcbiAgajogbnVtYmVyO1xuICBuOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgS2V5Q29tYmluZWQge1xuICB4U2hhcmU6IFhTaGFyZTtcbiAgeVNoYXJlczogUmVjb3JkPG51bWJlciwgWVNoYXJlPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBXU2hhcmUge1xuICBpOiBudW1iZXI7XG4gIGw6IHN0cmluZztcbiAgbTogc3RyaW5nO1xuICBuOiBzdHJpbmc7XG4gIHk6IHN0cmluZzsgLy8gY29tYmluZWQgcHVibGljIGtleVxuICBrOiBzdHJpbmc7XG4gIHc6IHN0cmluZztcbiAgZ2FtbWE6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBLU2hhcmUge1xuICBpOiBudW1iZXI7XG4gIGo6IG51bWJlcjtcbiAgbjogc3RyaW5nO1xuICBrOiBzdHJpbmc7XG59XG5leHBvcnQgaW50ZXJmYWNlIFNpZ25TaGFyZVJUIHtcbiAgd1NoYXJlOiBXU2hhcmU7XG4gIGtTaGFyZTogS1NoYXJlO1xufVxuXG4vLyBBbHBoYSBTaGFyZVxuZXhwb3J0IGludGVyZmFjZSBBU2hhcmUge1xuICBpOiBudW1iZXI7XG4gIGo6IG51bWJlcjtcbiAgbj86IHN0cmluZztcbiAgaz86IHN0cmluZztcbiAgYWxwaGE/OiBzdHJpbmc7XG4gIG11Pzogc3RyaW5nO1xufVxuXG4vLyBCZXRhIFNoYXJlXG5leHBvcnQgaW50ZXJmYWNlIEJTaGFyZSBleHRlbmRzIFdTaGFyZSB7XG4gIGdhbW1hOiBzdHJpbmc7XG4gIGJldGE6IHN0cmluZztcbiAgbnU6IHN0cmluZztcbn1cblxuLy8gTXUgU2hhcmVcbmV4cG9ydCBpbnRlcmZhY2UgTVVTaGFyZSB7XG4gIGk6IG51bWJlcjtcbiAgajogbnVtYmVyO1xuICBhbHBoYTogc3RyaW5nO1xuICBtdTogc3RyaW5nO1xufVxuXG4vLyBHYW1tYSBTaGFyZVxuZXhwb3J0IGludGVyZmFjZSBHU2hhcmUge1xuICBpOiBudW1iZXI7XG4gIGw/OiBzdHJpbmc7XG4gIG0/OiBzdHJpbmc7XG4gIG46IHN0cmluZztcbiAgeTogc3RyaW5nOyAvLyBjb21iaW5lZCBwdWJsaWMga2V5XG4gIGs6IHN0cmluZztcbiAgdzogc3RyaW5nO1xuICBnYW1tYTogc3RyaW5nO1xuICBhbHBoYTogc3RyaW5nO1xuICBtdTogc3RyaW5nO1xuICBiZXRhOiBzdHJpbmc7XG4gIG51OiBzdHJpbmc7XG59XG5leHBvcnQgaW50ZXJmYWNlIFNpZ25Db252ZXJ0IHtcbiAgeFNoYXJlPzogWFNoYXJlOyAvLyBYU2hhcmUgb2YgdGhlIGN1cnJlbnQgcGFydGljaXBhbnRcbiAgeVNoYXJlPzogWVNoYXJlOyAvLyBZU2hhcmUgY29ycmVzcG9uZGluZyB0byB0aGUgb3RoZXIgcGFydGljaXBhbnRcbiAga1NoYXJlPzogS1NoYXJlOyAvLyBLU2hhcmUgcmVjZWl2ZWQgZnJvbSB0aGUgb3RoZXIgcGFydGljaXBhbnRcbiAgYlNoYXJlPzogQlNoYXJlOyAvLyBQcml2YXRlIEJldGEgc2hhcmUgb2YgdGhlIHBhcnRpY2lwYW50XG4gIG11U2hhcmU/OiBNVVNoYXJlOyAvLyBtdVNoYXJlIHJlY2VpdmVkIGZyb20gdGhlIG90aGVyIHBhcnRpY2lwYW50XG4gIGFTaGFyZT86IEFTaGFyZTtcbiAgd1NoYXJlPzogV1NoYXJlO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNpZ25Db252ZXJ0UlQge1xuICBhU2hhcmU/OiBBU2hhcmU7XG4gIGJTaGFyZT86IEJTaGFyZTtcbiAgbXVTaGFyZT86IE1VU2hhcmU7XG4gIGdTaGFyZT86IEdTaGFyZTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBPU2hhcmUge1xuICBpOiBudW1iZXI7XG4gIHk6IHN0cmluZztcbiAgazogc3RyaW5nO1xuICBvbWljcm9uOiBzdHJpbmc7XG4gIGRlbHRhOiBzdHJpbmc7XG4gIEdhbW1hOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRFNoYXJlIHtcbiAgaTogbnVtYmVyO1xuICBqOiBudW1iZXI7XG4gIGRlbHRhOiBzdHJpbmc7XG4gIEdhbW1hOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU1NoYXJlIHtcbiAgaTogbnVtYmVyO1xuICBSOiBzdHJpbmc7XG4gIHM6IHN0cmluZztcbiAgeTogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNpZ25Db21iaW5lIHtcbiAgZ1NoYXJlOiBHU2hhcmU7XG4gIHNpZ25JbmRleDoge1xuICAgIGk6IG51bWJlcjtcbiAgICBqOiBudW1iZXI7XG4gIH07XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2lnbkNvbWJpbmVSVCB7XG4gIG9TaGFyZTogT1NoYXJlO1xuICBkU2hhcmU6IERTaGFyZTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTaWduYXR1cmUge1xuICB5OiBzdHJpbmc7XG4gIHJlY2lkOiBudW1iZXI7XG4gIHI6IHN0cmluZztcbiAgczogc3RyaW5nO1xufVxuIl19
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"eddsa.d.ts","sourceRoot":"","sources":["../../../../../../src/account-lib/mpc/tss/eddsa/eddsa.ts"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"eddsa.d.ts","sourceRoot":"","sources":["../../../../../../src/account-lib/mpc/tss/eddsa/eddsa.ts"],"names":[],"mappings":";AAgCA,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,MAAM,MAAM,cAAc,CAAC;AAClC,OAAO,MAAM,MAAM,cAAc,CAAC;AAElC,OAAO,EACL,QAAQ,EACR,MAAM,EACN,MAAM,EACN,UAAU,EACV,MAAM,EACN,WAAW,EACX,MAAM,EACN,SAAS,EACT,SAAS,EACT,MAAM,EACN,MAAM,EACN,MAAM,EACP,MAAM,SAAS,CAAC;AAKjB,MAAM,CAAC,OAAO,OAAO,KAAK;IACxB,MAAM,CAAC,KAAK,EAAE,YAAY,CAAsB;IAChD,MAAM,CAAC,MAAM,EAAE,MAAM,CAA2B;IAChD,MAAM,CAAC,WAAW,UAAS;WAEd,UAAU,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC;IASxD,MAAM,CAAC,EAAE,MAAM,CAAC;gBAEJ,MAAM,CAAC,EAAE,MAAM;IAI3B,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,QAAQ;IA4CtF,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,UAAU;IAgCzD;;;;;;OAMG;IACH,gBAAgB,CAAC,cAAc,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM;IAqB9D,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,GAAG,WAAW;IA0DvE,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS;IA6CvF,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,OAAO,GAAE,MAAM,EAAO,GAAG,MAAM;IA0B7F,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,SAAS;IAkBxC,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,GAAG,OAAO;CAKvD"}
|