@bitgo-beta/sdk-lib-mpc 8.2.1-alpha.82 → 8.2.1-alpha.83

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 +1 @@
1
- {"version":3,"file":"safePrime.d.ts","sourceRoot":"","sources":["../../src/safePrime.ts"],"names":[],"mappings":"AAEA,wBAAsB,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAgB1E;AACD,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAE1E"}
1
+ {"version":3,"file":"safePrime.d.ts","sourceRoot":"","sources":["../../src/safePrime.ts"],"names":[],"mappings":"AAEA,wBAAsB,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAI1E;AAED,wBAAsB,kBAAkB,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAOhF"}
@@ -1,23 +1,20 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.generateSafePrimes = exports.generateSafePrime = void 0;
4
- const crypto_1 = require("crypto");
4
+ const openssl_1 = require("./openssl");
5
5
  async function generateSafePrime(bitlength) {
6
- return new Promise((resolve, reject) => {
7
- (0, crypto_1.generatePrime)(bitlength, {
8
- safe: true,
9
- bigint: true,
10
- }, (err, prime) => {
11
- if (err) {
12
- reject(err);
13
- }
14
- resolve(prime);
15
- });
16
- });
6
+ const openSSL = new openssl_1.OpenSSL();
7
+ await openSSL.init();
8
+ return openSSL.generateSafePrime(bitlength);
17
9
  }
18
10
  exports.generateSafePrime = generateSafePrime;
19
- function generateSafePrimes(bitLengths) {
20
- return Promise.all(bitLengths.map(generateSafePrime));
11
+ async function generateSafePrimes(bitLengths) {
12
+ const openSSL = new openssl_1.OpenSSL();
13
+ await openSSL.init();
14
+ const promises = bitLengths.map((bitlength) => {
15
+ return openSSL.generateSafePrime(bitlength);
16
+ });
17
+ return await Promise.all(promises);
21
18
  }
22
19
  exports.generateSafePrimes = generateSafePrimes;
23
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2FmZVByaW1lLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NhZmVQcmltZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxtQ0FBdUM7QUFFaEMsS0FBSyxVQUFVLGlCQUFpQixDQUFDLFNBQWlCO0lBQ3ZELE9BQU8sSUFBSSxPQUFPLENBQVMsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLEVBQUU7UUFDN0MsSUFBQSxzQkFBYSxFQUNYLFNBQVMsRUFDVDtZQUNFLElBQUksRUFBRSxJQUFJO1lBQ1YsTUFBTSxFQUFFLElBQUk7U0FDYixFQUNELENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFO1lBQ2IsSUFBSSxHQUFHLEVBQUU7Z0JBQ1AsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2FBQ2I7WUFDRCxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDakIsQ0FBQyxDQUNGLENBQUM7SUFDSixDQUFDLENBQUMsQ0FBQztBQUNMLENBQUM7QUFoQkQsOENBZ0JDO0FBQ0QsU0FBZ0Isa0JBQWtCLENBQUMsVUFBb0I7SUFDckQsT0FBTyxPQUFPLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDO0FBQ3hELENBQUM7QUFGRCxnREFFQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGdlbmVyYXRlUHJpbWUgfSBmcm9tICdjcnlwdG8nO1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2VuZXJhdGVTYWZlUHJpbWUoYml0bGVuZ3RoOiBudW1iZXIpOiBQcm9taXNlPGJpZ2ludD4ge1xuICByZXR1cm4gbmV3IFByb21pc2U8YmlnaW50PigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgZ2VuZXJhdGVQcmltZShcbiAgICAgIGJpdGxlbmd0aCxcbiAgICAgIHtcbiAgICAgICAgc2FmZTogdHJ1ZSxcbiAgICAgICAgYmlnaW50OiB0cnVlLFxuICAgICAgfSxcbiAgICAgIChlcnIsIHByaW1lKSA9PiB7XG4gICAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgICByZWplY3QoZXJyKTtcbiAgICAgICAgfVxuICAgICAgICByZXNvbHZlKHByaW1lKTtcbiAgICAgIH1cbiAgICApO1xuICB9KTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBnZW5lcmF0ZVNhZmVQcmltZXMoYml0TGVuZ3RoczogbnVtYmVyW10pOiBQcm9taXNlPGJpZ2ludFtdPiB7XG4gIHJldHVybiBQcm9taXNlLmFsbChiaXRMZW5ndGhzLm1hcChnZW5lcmF0ZVNhZmVQcmltZSkpO1xufVxuIl19
20
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2FmZVByaW1lLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NhZmVQcmltZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSx1Q0FBb0M7QUFFN0IsS0FBSyxVQUFVLGlCQUFpQixDQUFDLFNBQWlCO0lBQ3ZELE1BQU0sT0FBTyxHQUFHLElBQUksaUJBQU8sRUFBRSxDQUFDO0lBQzlCLE1BQU0sT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3JCLE9BQU8sT0FBTyxDQUFDLGlCQUFpQixDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBQzlDLENBQUM7QUFKRCw4Q0FJQztBQUVNLEtBQUssVUFBVSxrQkFBa0IsQ0FBQyxVQUFvQjtJQUMzRCxNQUFNLE9BQU8sR0FBRyxJQUFJLGlCQUFPLEVBQUUsQ0FBQztJQUM5QixNQUFNLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNyQixNQUFNLFFBQVEsR0FBc0IsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQWlCLEVBQUUsRUFBRTtRQUN2RSxPQUFPLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUM5QyxDQUFDLENBQUMsQ0FBQztJQUNILE9BQU8sTUFBTSxPQUFPLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQ3JDLENBQUM7QUFQRCxnREFPQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9wZW5TU0wgfSBmcm9tICcuL29wZW5zc2wnO1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2VuZXJhdGVTYWZlUHJpbWUoYml0bGVuZ3RoOiBudW1iZXIpOiBQcm9taXNlPGJpZ2ludD4ge1xuICBjb25zdCBvcGVuU1NMID0gbmV3IE9wZW5TU0woKTtcbiAgYXdhaXQgb3BlblNTTC5pbml0KCk7XG4gIHJldHVybiBvcGVuU1NMLmdlbmVyYXRlU2FmZVByaW1lKGJpdGxlbmd0aCk7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZW5lcmF0ZVNhZmVQcmltZXMoYml0TGVuZ3RoczogbnVtYmVyW10pOiBQcm9taXNlPGJpZ2ludFtdPiB7XG4gIGNvbnN0IG9wZW5TU0wgPSBuZXcgT3BlblNTTCgpO1xuICBhd2FpdCBvcGVuU1NMLmluaXQoKTtcbiAgY29uc3QgcHJvbWlzZXM6IFByb21pc2U8YmlnaW50PltdID0gYml0TGVuZ3Rocy5tYXAoKGJpdGxlbmd0aDogbnVtYmVyKSA9PiB7XG4gICAgcmV0dXJuIG9wZW5TU0wuZ2VuZXJhdGVTYWZlUHJpbWUoYml0bGVuZ3RoKTtcbiAgfSk7XG4gIHJldHVybiBhd2FpdCBQcm9taXNlLmFsbChwcm9taXNlcyk7XG59XG4iXX0=
@@ -1,3 +1,14 @@
1
+ import { SchnorrProof } from '../../types';
2
+ export declare type XShare = {
3
+ i: number;
4
+ l: string;
5
+ m: string;
6
+ n: string;
7
+ y: string;
8
+ x: string;
9
+ schnorrProofX: SchnorrProof;
10
+ chaincode: string;
11
+ };
1
12
  interface NtildeProof<T> {
2
13
  alpha: T[];
3
14
  t: T[];
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/tss/ecdsa/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/tss/ecdsa/types.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAI3C,oBAAY,MAAM,GAAG;IACnB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,aAAa,EAAE,YAAY,CAAC;IAC5B,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,UAAU,WAAW,CAAC,CAAC;IACrB,KAAK,EAAE,CAAC,EAAE,CAAC;IACX,CAAC,EAAE,CAAC,EAAE,CAAC;CACR;AAGD,UAAU,YAAY,CAAC,CAAC;IACtB,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC;IACxB,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC;CACzB;AAGD,UAAU,MAAM,CAAC,CAAC;IAChB,MAAM,EAAE,CAAC,CAAC;IACV,EAAE,EAAE,CAAC,CAAC;IACN,EAAE,EAAE,CAAC,CAAC;CACP;AAED,oBAAY,kBAAkB,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;AAChD,oBAAY,gBAAgB,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;AAC9C,oBAAY,uBAAuB,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;AAC1D,oBAAY,qBAAqB,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;AACxD,oBAAY,wBAAwB,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;AAC5D,oBAAY,sBAAsB,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;AAE1D;;;;GAIG;AACH,oBAAY,4BAA4B,GAAG,kBAAkB,GAAG;IAC9D,WAAW,EAAE,wBAAwB,CAAC;CACvC,CAAC;AACF,oBAAY,0BAA0B,GAAG,gBAAgB,GAAG;IAC1D,WAAW,EAAE,sBAAsB,CAAC;CACrC,CAAC;AAEF,oBAAY,yBAAyB,GAAG,gBAAgB,GAAG,2BAA2B,CAAC;AAEvF;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,gBAAgB,GAAG,kBAAkB,CAMjF;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,SAAS,EAAE,kBAAkB,GAAG,gBAAgB,CAM/E;AAED;;;GAGG;AACH,wBAAgB,2BAA2B,CAAC,SAAS,EAAE,0BAA0B,GAAG,4BAA4B,CAc/G;AAED;;;GAGG;AACH,wBAAgB,yBAAyB,CAAC,SAAS,EAAE,4BAA4B,GAAG,0BAA0B,CAc7G;AAED,aAAK,iBAAiB,CAAC,CAAC,IAAI;IAC1B,CAAC,EAAE,CAAC,EAAE,CAAC;CACR,CAAC;AAEF,aAAK,sBAAsB,CAAC,CAAC,IAAI;IAC/B,KAAK,EAAE,CAAC,EAAE,CAAC;CACZ,CAAC;AAEF,oBAAY,6BAA6B,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC;AACtE,oBAAY,2BAA2B,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC;AACpE,oBAAY,mCAAmC,GAAG,sBAAsB,CAAC,MAAM,CAAC,CAAC;AACjF,oBAAY,iCAAiC,GAAG,sBAAsB,CAAC,MAAM,CAAC,CAAC;AAC/E;;;;GAIG;AACH,oBAAY,uCAAuC,GAAG,6BAA6B,GACjF,mCAAmC,CAAC;AACtC,oBAAY,qCAAqC,GAAG,2BAA2B,GAAG,iCAAiC,CAAC;AAEpH;;;GAGG;AACH,wBAAgB,4BAA4B,CAAC,SAAS,EAAE,2BAA2B,GAAG,6BAA6B,CAIlH;AAED;;;GAGG;AACH,wBAAgB,kCAAkC,CAChD,SAAS,EAAE,iCAAiC,GAC3C,mCAAmC,CAIrC;AAED;;;GAGG;AACH,wBAAgB,sCAAsC,CACpD,mBAAmB,EAAE,qCAAqC,GACzD,uCAAuC,CAKzC;AAED;;;GAGG;AACH,wBAAgB,0BAA0B,CAAC,SAAS,EAAE,6BAA6B,GAAG,2BAA2B,CAIhH;AAED;;;GAGG;AACH,wBAAgB,gCAAgC,CAC9C,SAAS,EAAE,mCAAmC,GAC7C,iCAAiC,CAInC;AAED;;;GAGG;AACH,wBAAgB,oCAAoC,CAClD,mBAAmB,EAAE,uCAAuC,GAC3D,qCAAqC,CAKvC;AAED,MAAM,WAAW,UAAU;IACzB,CAAC,EAAE,MAAM,CAAC;IAEV,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,MAAM,CAAC;CACZ;AAGD,MAAM,WAAW,UAAU;IACzB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,MAAM,CAAC;CACZ;AAGD,MAAM,WAAW,mBAAmB;IAClC,CAAC,EAAE,MAAM,CAAC;IACV,IAAI,EAAE,MAAM,CAAC;IACb,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,MAAM,CAAC;IACX,CAAC,EAAE,MAAM,CAAC;CACX;AAED,MAAM,WAAW,QAAQ;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACX"}
@@ -1,7 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.serializePaillierChallengeWithProofs = exports.serializePaillierChallengeProofs = exports.serializePaillierChallenge = exports.deserializePaillierChallengeWithProofs = exports.deserializePaillierChallengeProofs = exports.deserializePaillierChallenge = exports.serializeNtildeWithProofs = exports.deserializeNtildeWithProofs = exports.serializeNtilde = exports.deserializeNtilde = void 0;
4
- // Ntilde Proof where both alpha and t are a set of 128 proofs each.
5
4
  const util_1 = require("../../util");
6
5
  /**
7
6
  * Deserializes a challenge from hex strings to bigint
@@ -129,4 +128,4 @@ function serializePaillierChallengeWithProofs(challengeWithProofs) {
129
128
  };
130
129
  }
131
130
  exports.serializePaillierChallengeWithProofs = serializePaillierChallengeWithProofs;
132
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvdHNzL2VjZHNhL3R5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLG9FQUFvRTtBQUNwRSxxQ0FBMEc7QUF5QzFHOzs7R0FHRztBQUNILFNBQWdCLGlCQUFpQixDQUFDLFNBQTJCO0lBQzNELE9BQU87UUFDTCxNQUFNLEVBQUUsSUFBQSxrQkFBVyxFQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUM7UUFDckMsRUFBRSxFQUFFLElBQUEsa0JBQVcsRUFBQyxTQUFTLENBQUMsRUFBRSxDQUFDO1FBQzdCLEVBQUUsRUFBRSxJQUFBLGtCQUFXLEVBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztLQUM5QixDQUFDO0FBQ0osQ0FBQztBQU5ELDhDQU1DO0FBRUQ7OztHQUdHO0FBQ0gsU0FBZ0IsZUFBZSxDQUFDLFNBQTZCO0lBQzNELE9BQU87UUFDTCxNQUFNLEVBQUUsSUFBQSxrQkFBVyxFQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUM7UUFDckMsRUFBRSxFQUFFLElBQUEsa0JBQVcsRUFBQyxTQUFTLENBQUMsRUFBRSxDQUFDO1FBQzdCLEVBQUUsRUFBRSxJQUFBLGtCQUFXLEVBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztLQUM5QixDQUFDO0FBQ0osQ0FBQztBQU5ELDBDQU1DO0FBRUQ7OztHQUdHO0FBQ0gsU0FBZ0IsMkJBQTJCLENBQUMsU0FBcUM7SUFDL0UsT0FBTztRQUNMLEdBQUcsaUJBQWlCLENBQUMsU0FBUyxDQUFDO1FBQy9CLFdBQVcsRUFBRTtZQUNYLE9BQU8sRUFBRTtnQkFDUCxLQUFLLEVBQUUsSUFBQSwrQkFBd0IsRUFBQyxTQUFTLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUM7Z0JBQ3BFLENBQUMsRUFBRSxJQUFBLCtCQUF3QixFQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQzthQUM3RDtZQUNELE9BQU8sRUFBRTtnQkFDUCxLQUFLLEVBQUUsSUFBQSwrQkFBd0IsRUFBQyxTQUFTLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUM7Z0JBQ3BFLENBQUMsRUFBRSxJQUFBLCtCQUF3QixFQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQzthQUM3RDtTQUNGO0tBQ0YsQ0FBQztBQUNKLENBQUM7QUFkRCxrRUFjQztBQUVEOzs7R0FHRztBQUNILFNBQWdCLHlCQUF5QixDQUFDLFNBQXVDO0lBQy9FLE9BQU87UUFDTCxHQUFHLGVBQWUsQ0FBQyxTQUFTLENBQUM7UUFDN0IsV0FBVyxFQUFFO1lBQ1gsT0FBTyxFQUFFO2dCQUNQLEtBQUssRUFBRSxJQUFBLCtCQUF3QixFQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQztnQkFDcEUsQ0FBQyxFQUFFLElBQUEsK0JBQXdCLEVBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO2FBQzdEO1lBQ0QsT0FBTyxFQUFFO2dCQUNQLEtBQUssRUFBRSxJQUFBLCtCQUF3QixFQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQztnQkFDcEUsQ0FBQyxFQUFFLElBQUEsK0JBQXdCLEVBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO2FBQzdEO1NBQ0Y7S0FDRixDQUFDO0FBQ0osQ0FBQztBQWRELDhEQWNDO0FBdUJEOzs7R0FHRztBQUNILFNBQWdCLDRCQUE0QixDQUFDLFNBQXNDO0lBQ2pGLE9BQU87UUFDTCxDQUFDLEVBQUUsSUFBQSwrQkFBd0IsRUFBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO0tBQ3pDLENBQUM7QUFDSixDQUFDO0FBSkQsb0VBSUM7QUFFRDs7O0dBR0c7QUFDSCxTQUFnQixrQ0FBa0MsQ0FDaEQsU0FBNEM7SUFFNUMsT0FBTztRQUNMLEtBQUssRUFBRSxJQUFBLCtCQUF3QixFQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUM7S0FDakQsQ0FBQztBQUNKLENBQUM7QUFORCxnRkFNQztBQUVEOzs7R0FHRztBQUNILFNBQWdCLHNDQUFzQyxDQUNwRCxtQkFBMEQ7SUFFMUQsT0FBTztRQUNMLEdBQUcsNEJBQTRCLENBQUMsbUJBQW1CLENBQUM7UUFDcEQsR0FBRyxrQ0FBa0MsQ0FBQyxtQkFBbUIsQ0FBQztLQUMzRCxDQUFDO0FBQ0osQ0FBQztBQVBELHdGQU9DO0FBRUQ7OztHQUdHO0FBQ0gsU0FBZ0IsMEJBQTBCLENBQUMsU0FBd0M7SUFDakYsT0FBTztRQUNMLENBQUMsRUFBRSxJQUFBLCtCQUF3QixFQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDO0tBQzlDLENBQUM7QUFDSixDQUFDO0FBSkQsZ0VBSUM7QUFFRDs7O0dBR0c7QUFDSCxTQUFnQixnQ0FBZ0MsQ0FDOUMsU0FBOEM7SUFFOUMsT0FBTztRQUNMLEtBQUssRUFBRSxJQUFBLCtCQUF3QixFQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDO0tBQ3RELENBQUM7QUFDSixDQUFDO0FBTkQsNEVBTUM7QUFFRDs7O0dBR0c7QUFDSCxTQUFnQixvQ0FBb0MsQ0FDbEQsbUJBQTREO0lBRTVELE9BQU87UUFDTCxHQUFHLDBCQUEwQixDQUFDLG1CQUFtQixDQUFDO1FBQ2xELEdBQUcsZ0NBQWdDLENBQUMsbUJBQW1CLENBQUM7S0FDekQsQ0FBQztBQUNKLENBQUM7QUFQRCxvRkFPQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIE50aWxkZSBQcm9vZiB3aGVyZSBib3RoIGFscGhhIGFuZCB0IGFyZSBhIHNldCBvZiAxMjggcHJvb2ZzIGVhY2guXG5pbXBvcnQgeyBiaWdJbnRUb0hleCwgY29udmVydEJpZ0ludEFyclRvSGV4QXJyLCBjb252ZXJ0SGV4QXJyVG9CaWdJbnRBcnIsIGhleFRvQmlnSW50IH0gZnJvbSAnLi4vLi4vdXRpbCc7XG5cbmludGVyZmFjZSBOdGlsZGVQcm9vZjxUPiB7XG4gIGFscGhhOiBUW107XG4gIHQ6IFRbXTtcbn1cblxuLy8gTnRpbGRlIFByb29mXG5pbnRlcmZhY2UgTnRpbGRlUHJvb2ZzPFQ+IHtcbiAgaDFXcnRIMjogTnRpbGRlUHJvb2Y8VD47XG4gIGgyV3J0SDE6IE50aWxkZVByb29mPFQ+O1xufVxuXG4vLyBOdGlsZGUgY2hhbGxlbmdlIHZhbHVlc1xuaW50ZXJmYWNlIE50aWxkZTxUPiB7XG4gIG50aWxkZTogVDtcbiAgaDE6IFQ7XG4gIGgyOiBUO1xufVxuXG5leHBvcnQgdHlwZSBEZXNlcmlhbGl6ZWROdGlsZGUgPSBOdGlsZGU8YmlnaW50PjtcbmV4cG9ydCB0eXBlIFNlcmlhbGl6ZWROdGlsZGUgPSBOdGlsZGU8c3RyaW5nPjtcbmV4cG9ydCB0eXBlIERlc2VyaWFsaXplZE50aWxkZVByb29mID0gTnRpbGRlUHJvb2Y8YmlnaW50PjtcbmV4cG9ydCB0eXBlIFNlcmlhbGl6ZWROdGlsZGVQcm9vZiA9IE50aWxkZVByb29mPHN0cmluZz47XG5leHBvcnQgdHlwZSBEZXNlcmlhbGl6ZWROdGlsZGVQcm9vZnMgPSBOdGlsZGVQcm9vZnM8YmlnaW50PjtcbmV4cG9ydCB0eXBlIFNlcmlhbGl6ZWROdGlsZGVQcm9vZnMgPSBOdGlsZGVQcm9vZnM8c3RyaW5nPjtcblxuLyoqXG4gKiBUaGUgbnRpbGRlIHByb29mcyBhcmUgZG9uZSBub24taW50ZXJhY3RpdmVseSxcbiAqIHRoZXJlZm9yZSBhIHBhcnR5IGdlbmVyYXRlcyBib3RoIG50aWxkZSwgaDEsIGgyIGFuZCB0aGUgcHJvb2ZzIHdpdGhvdXRcbiAqIGludGVyYWN0aW9uIHdpdGggdGhlIG90aGVyIHBhcnR5LlxuICovXG5leHBvcnQgdHlwZSBEZXNlcmlhbGl6ZWROdGlsZGVXaXRoUHJvb2ZzID0gRGVzZXJpYWxpemVkTnRpbGRlICYge1xuICBudGlsZGVQcm9vZjogRGVzZXJpYWxpemVkTnRpbGRlUHJvb2ZzO1xufTtcbmV4cG9ydCB0eXBlIFNlcmlhbGl6ZWROdGlsZGVXaXRoUHJvb2ZzID0gU2VyaWFsaXplZE50aWxkZSAmIHtcbiAgbnRpbGRlUHJvb2Y6IFNlcmlhbGl6ZWROdGlsZGVQcm9vZnM7XG59O1xuXG5leHBvcnQgdHlwZSBTZXJpYWxpemVkRWNkc2FDaGFsbGVuZ2VzID0gU2VyaWFsaXplZE50aWxkZSAmIFNlcmlhbGl6ZWRQYWlsbGllckNoYWxsZW5nZTtcblxuLyoqXG4gKiBEZXNlcmlhbGl6ZXMgYSBjaGFsbGVuZ2UgZnJvbSBoZXggc3RyaW5ncyB0byBiaWdpbnRcbiAqIEBwYXJhbSBjaGFsbGVuZ2VcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRlc2VyaWFsaXplTnRpbGRlKGNoYWxsZW5nZTogU2VyaWFsaXplZE50aWxkZSk6IERlc2VyaWFsaXplZE50aWxkZSB7XG4gIHJldHVybiB7XG4gICAgbnRpbGRlOiBoZXhUb0JpZ0ludChjaGFsbGVuZ2UubnRpbGRlKSxcbiAgICBoMTogaGV4VG9CaWdJbnQoY2hhbGxlbmdlLmgxKSxcbiAgICBoMjogaGV4VG9CaWdJbnQoY2hhbGxlbmdlLmgyKSxcbiAgfTtcbn1cblxuLyoqXG4gKiBTZXJpYWxpemVzIGEgY2hhbGxlbmdlIGZyb20gYmlnIGludCB0byBoZXggc3RyaW5ncy5cbiAqIEBwYXJhbSBjaGFsbGVuZ2VcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNlcmlhbGl6ZU50aWxkZShjaGFsbGVuZ2U6IERlc2VyaWFsaXplZE50aWxkZSk6IFNlcmlhbGl6ZWROdGlsZGUge1xuICByZXR1cm4ge1xuICAgIG50aWxkZTogYmlnSW50VG9IZXgoY2hhbGxlbmdlLm50aWxkZSksXG4gICAgaDE6IGJpZ0ludFRvSGV4KGNoYWxsZW5nZS5oMSksXG4gICAgaDI6IGJpZ0ludFRvSGV4KGNoYWxsZW5nZS5oMiksXG4gIH07XG59XG5cbi8qKlxuICogRGVzZXJpYWxpemVzIGEgY2hhbGxlbmdlIGFuZCBpdCdzIHByb29mcyBmcm9tIGhleCBzdHJpbmdzIHRvIGJpZ2ludFxuICogQHBhcmFtIGNoYWxsZW5nZVxuICovXG5leHBvcnQgZnVuY3Rpb24gZGVzZXJpYWxpemVOdGlsZGVXaXRoUHJvb2ZzKGNoYWxsZW5nZTogU2VyaWFsaXplZE50aWxkZVdpdGhQcm9vZnMpOiBEZXNlcmlhbGl6ZWROdGlsZGVXaXRoUHJvb2ZzIHtcbiAgcmV0dXJuIHtcbiAgICAuLi5kZXNlcmlhbGl6ZU50aWxkZShjaGFsbGVuZ2UpLFxuICAgIG50aWxkZVByb29mOiB7XG4gICAgICBoMVdydEgyOiB7XG4gICAgICAgIGFscGhhOiBjb252ZXJ0SGV4QXJyVG9CaWdJbnRBcnIoY2hhbGxlbmdlLm50aWxkZVByb29mLmgxV3J0SDIuYWxwaGEpLFxuICAgICAgICB0OiBjb252ZXJ0SGV4QXJyVG9CaWdJbnRBcnIoY2hhbGxlbmdlLm50aWxkZVByb29mLmgxV3J0SDIudCksXG4gICAgICB9LFxuICAgICAgaDJXcnRIMToge1xuICAgICAgICBhbHBoYTogY29udmVydEhleEFyclRvQmlnSW50QXJyKGNoYWxsZW5nZS5udGlsZGVQcm9vZi5oMldydEgxLmFscGhhKSxcbiAgICAgICAgdDogY29udmVydEhleEFyclRvQmlnSW50QXJyKGNoYWxsZW5nZS5udGlsZGVQcm9vZi5oMldydEgxLnQpLFxuICAgICAgfSxcbiAgICB9LFxuICB9O1xufVxuXG4vKipcbiAqIFNlcmlhbGl6ZXMgYSBjaGFsbGVuZ2UgYW5kIGl0J3MgcHJvb2ZzIGZyb20gYmlnIGludCB0byBoZXggc3RyaW5ncy5cbiAqIEBwYXJhbSBjaGFsbGVuZ2VcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNlcmlhbGl6ZU50aWxkZVdpdGhQcm9vZnMoY2hhbGxlbmdlOiBEZXNlcmlhbGl6ZWROdGlsZGVXaXRoUHJvb2ZzKTogU2VyaWFsaXplZE50aWxkZVdpdGhQcm9vZnMge1xuICByZXR1cm4ge1xuICAgIC4uLnNlcmlhbGl6ZU50aWxkZShjaGFsbGVuZ2UpLFxuICAgIG50aWxkZVByb29mOiB7XG4gICAgICBoMVdydEgyOiB7XG4gICAgICAgIGFscGhhOiBjb252ZXJ0QmlnSW50QXJyVG9IZXhBcnIoY2hhbGxlbmdlLm50aWxkZVByb29mLmgxV3J0SDIuYWxwaGEpLFxuICAgICAgICB0OiBjb252ZXJ0QmlnSW50QXJyVG9IZXhBcnIoY2hhbGxlbmdlLm50aWxkZVByb29mLmgxV3J0SDIudCksXG4gICAgICB9LFxuICAgICAgaDJXcnRIMToge1xuICAgICAgICBhbHBoYTogY29udmVydEJpZ0ludEFyclRvSGV4QXJyKGNoYWxsZW5nZS5udGlsZGVQcm9vZi5oMldydEgxLmFscGhhKSxcbiAgICAgICAgdDogY29udmVydEJpZ0ludEFyclRvSGV4QXJyKGNoYWxsZW5nZS5udGlsZGVQcm9vZi5oMldydEgxLnQpLFxuICAgICAgfSxcbiAgICB9LFxuICB9O1xufVxuXG50eXBlIFBhaWxsaWVyQ2hhbGxlbmdlPFQ+ID0ge1xuICBwOiBUW107XG59O1xuXG50eXBlIFBhaWxsaWVyQ2hhbGxlbmdlUHJvb2Y8VD4gPSB7XG4gIHNpZ21hOiBUW107XG59O1xuXG5leHBvcnQgdHlwZSBEZXNlcmlhbGl6ZWRQYWlsbGllckNoYWxsZW5nZSA9IFBhaWxsaWVyQ2hhbGxlbmdlPGJpZ2ludD47XG5leHBvcnQgdHlwZSBTZXJpYWxpemVkUGFpbGxpZXJDaGFsbGVuZ2UgPSBQYWlsbGllckNoYWxsZW5nZTxzdHJpbmc+O1xuZXhwb3J0IHR5cGUgRGVzZXJpYWxpemVkUGFpbGxpZXJDaGFsbGVuZ2VQcm9vZnMgPSBQYWlsbGllckNoYWxsZW5nZVByb29mPGJpZ2ludD47XG5leHBvcnQgdHlwZSBTZXJpYWxpemVkUGFpbGxpZXJDaGFsbGVuZ2VQcm9vZnMgPSBQYWlsbGllckNoYWxsZW5nZVByb29mPHN0cmluZz47XG4vKipcbiAqIFRoZSBwYWlsbGllciBwcm9vZnMgYXJlIGRvbmUgaW50ZXJhY3RpdmVseSBiZXR3ZWVuIHR3byBwYXJ0aWVzLlxuICogSWYgcGFydHkgQSBpcyBjb21wbGV0aW5nIGEgcGFpbGxpZXIgcHJvb2YgJHNpZ21hJCB3aXRoIHBhcnR5IEIsIHRoZW4gJHAkIHJlZmVycyB0b1xuICogYSBjaGFsbGVuZ2UgZ2l2ZW4gdG8gQSBieSBCLCBhbmQgJHNpZ21hJCByZXByZXNlbnRzIHRoZSBwcm9vZiB0byB0aGUgY2hhbGxlbmdlXG4gKi9cbmV4cG9ydCB0eXBlIERlc2VyaWFsaXplZFBhaWxsaWVyQ2hhbGxlbmdlV2l0aFByb29mcyA9IERlc2VyaWFsaXplZFBhaWxsaWVyQ2hhbGxlbmdlICZcbiAgRGVzZXJpYWxpemVkUGFpbGxpZXJDaGFsbGVuZ2VQcm9vZnM7XG5leHBvcnQgdHlwZSBTZXJpYWxpemVkUGFpbGxpZXJDaGFsbGVuZ2VXaXRoUHJvb2ZzID0gU2VyaWFsaXplZFBhaWxsaWVyQ2hhbGxlbmdlICYgU2VyaWFsaXplZFBhaWxsaWVyQ2hhbGxlbmdlUHJvb2ZzO1xuXG4vKipcbiAqIERlc2VyaWFsaXplcyBhIHBhaWxsaWVyIGNoYWxsZW5nZSB0byBoZXggc3RyaW5ncy5cbiAqIEBwYXJhbSBjaGFsbGVuZ2VcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRlc2VyaWFsaXplUGFpbGxpZXJDaGFsbGVuZ2UoY2hhbGxlbmdlOiBTZXJpYWxpemVkUGFpbGxpZXJDaGFsbGVuZ2UpOiBEZXNlcmlhbGl6ZWRQYWlsbGllckNoYWxsZW5nZSB7XG4gIHJldHVybiB7XG4gICAgcDogY29udmVydEhleEFyclRvQmlnSW50QXJyKGNoYWxsZW5nZS5wKSxcbiAgfTtcbn1cblxuLyoqXG4gKiBEZXNlcmlhbGl6ZXMgYSBwYWlsbGllciBjaGFsbGVuZ2UgcHJvb2YgdG8gaGV4IHN0cmluZ3MuXG4gKiBAcGFyYW0gY2hhbGxlbmdlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZXNlcmlhbGl6ZVBhaWxsaWVyQ2hhbGxlbmdlUHJvb2ZzKFxuICBjaGFsbGVuZ2U6IFNlcmlhbGl6ZWRQYWlsbGllckNoYWxsZW5nZVByb29mc1xuKTogRGVzZXJpYWxpemVkUGFpbGxpZXJDaGFsbGVuZ2VQcm9vZnMge1xuICByZXR1cm4ge1xuICAgIHNpZ21hOiBjb252ZXJ0SGV4QXJyVG9CaWdJbnRBcnIoY2hhbGxlbmdlLnNpZ21hKSxcbiAgfTtcbn1cblxuLyoqXG4gKiBEZXNlcmlhbGl6ZXMgYSBwYWlsbGllciBjaGFsbGVuZ2UgYW5kIGl0cyBwcm9vZiB0byBoZXggc3RyaW5ncy5cbiAqIEBwYXJhbSBjaGFsbGVuZ2VXaXRoUHJvb2ZzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZXNlcmlhbGl6ZVBhaWxsaWVyQ2hhbGxlbmdlV2l0aFByb29mcyhcbiAgY2hhbGxlbmdlV2l0aFByb29mczogU2VyaWFsaXplZFBhaWxsaWVyQ2hhbGxlbmdlV2l0aFByb29mc1xuKTogRGVzZXJpYWxpemVkUGFpbGxpZXJDaGFsbGVuZ2VXaXRoUHJvb2ZzIHtcbiAgcmV0dXJuIHtcbiAgICAuLi5kZXNlcmlhbGl6ZVBhaWxsaWVyQ2hhbGxlbmdlKGNoYWxsZW5nZVdpdGhQcm9vZnMpLFxuICAgIC4uLmRlc2VyaWFsaXplUGFpbGxpZXJDaGFsbGVuZ2VQcm9vZnMoY2hhbGxlbmdlV2l0aFByb29mcyksXG4gIH07XG59XG5cbi8qKlxuICogU2VyaWFsaXplcyBhIHBhaWxsaWVyIGNoYWxsZW5nZSB0byBoZXggc3RyaW5ncy5cbiAqIEBwYXJhbSBjaGFsbGVuZ2VcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNlcmlhbGl6ZVBhaWxsaWVyQ2hhbGxlbmdlKGNoYWxsZW5nZTogRGVzZXJpYWxpemVkUGFpbGxpZXJDaGFsbGVuZ2UpOiBTZXJpYWxpemVkUGFpbGxpZXJDaGFsbGVuZ2Uge1xuICByZXR1cm4ge1xuICAgIHA6IGNvbnZlcnRCaWdJbnRBcnJUb0hleEFycihjaGFsbGVuZ2UucCwgNzY4KSxcbiAgfTtcbn1cblxuLyoqXG4gKiBTZXJpYWxpemVzIGEgcGFpbGxpZXIgY2hhbGxlbmdlIHByb29mIHRvIGhleCBzdHJpbmdzLlxuICogQHBhcmFtIGNoYWxsZW5nZVxuICovXG5leHBvcnQgZnVuY3Rpb24gc2VyaWFsaXplUGFpbGxpZXJDaGFsbGVuZ2VQcm9vZnMoXG4gIGNoYWxsZW5nZTogRGVzZXJpYWxpemVkUGFpbGxpZXJDaGFsbGVuZ2VQcm9vZnNcbik6IFNlcmlhbGl6ZWRQYWlsbGllckNoYWxsZW5nZVByb29mcyB7XG4gIHJldHVybiB7XG4gICAgc2lnbWE6IGNvbnZlcnRCaWdJbnRBcnJUb0hleEFycihjaGFsbGVuZ2Uuc2lnbWEsIDc2OCksXG4gIH07XG59XG5cbi8qKlxuICogU2VyaWFsaXplcyBhIHBhaWxsaWVyIGNoYWxsZW5nZSBhbmQgaXRzIHByb29mIHRvIGhleCBzdHJpbmdzLlxuICogQHBhcmFtIGNoYWxsZW5nZVdpdGhQcm9vZnNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNlcmlhbGl6ZVBhaWxsaWVyQ2hhbGxlbmdlV2l0aFByb29mcyhcbiAgY2hhbGxlbmdlV2l0aFByb29mczogRGVzZXJpYWxpemVkUGFpbGxpZXJDaGFsbGVuZ2VXaXRoUHJvb2ZzXG4pOiBTZXJpYWxpemVkUGFpbGxpZXJDaGFsbGVuZ2VXaXRoUHJvb2ZzIHtcbiAgcmV0dXJuIHtcbiAgICAuLi5zZXJpYWxpemVQYWlsbGllckNoYWxsZW5nZShjaGFsbGVuZ2VXaXRoUHJvb2ZzKSxcbiAgICAuLi5zZXJpYWxpemVQYWlsbGllckNoYWxsZW5nZVByb29mcyhjaGFsbGVuZ2VXaXRoUHJvb2ZzKSxcbiAgfTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSU0FNb2R1bHVzIHtcbiAgbjogYmlnaW50O1xuICAvLyBTb3BoaWUgR2VybWFpbiBwcmltZXMuXG4gIHExOiBiaWdpbnQ7XG4gIHEyOiBiaWdpbnQ7XG59XG5cbi8vIFJhbmdlIHByb29mIHZhbHVlc1xuZXhwb3J0IGludGVyZmFjZSBSYW5nZVByb29mIHtcbiAgejogYmlnaW50O1xuICB1OiBiaWdpbnQ7XG4gIHc6IGJpZ2ludDtcbiAgczogYmlnaW50O1xuICBzMTogYmlnaW50O1xuICBzMjogYmlnaW50O1xufVxuXG4vLyBSYW5nZSBwcm9vZiB2YWx1ZXNcbmV4cG9ydCBpbnRlcmZhY2UgUmFuZ2VQcm9vZldpdGhDaGVjayB7XG4gIHo6IGJpZ2ludDtcbiAgenBybTogYmlnaW50O1xuICB0OiBiaWdpbnQ7XG4gIHY6IGJpZ2ludDtcbiAgdzogYmlnaW50O1xuICBzOiBiaWdpbnQ7XG4gIHMxOiBiaWdpbnQ7XG4gIHMyOiBiaWdpbnQ7XG4gIHQxOiBiaWdpbnQ7XG4gIHQyOiBiaWdpbnQ7XG4gIHU6IGJpZ2ludDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBaa1ZQcm9vZiB7XG4gIEFscGhhOiBiaWdpbnQ7XG4gIHQ6IGJpZ2ludDtcbiAgdTogYmlnaW50O1xufVxuIl19
131
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvdHNzL2VjZHNhL3R5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUVBLHFDQUEwRztBQXFEMUc7OztHQUdHO0FBQ0gsU0FBZ0IsaUJBQWlCLENBQUMsU0FBMkI7SUFDM0QsT0FBTztRQUNMLE1BQU0sRUFBRSxJQUFBLGtCQUFXLEVBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQztRQUNyQyxFQUFFLEVBQUUsSUFBQSxrQkFBVyxFQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUM7UUFDN0IsRUFBRSxFQUFFLElBQUEsa0JBQVcsRUFBQyxTQUFTLENBQUMsRUFBRSxDQUFDO0tBQzlCLENBQUM7QUFDSixDQUFDO0FBTkQsOENBTUM7QUFFRDs7O0dBR0c7QUFDSCxTQUFnQixlQUFlLENBQUMsU0FBNkI7SUFDM0QsT0FBTztRQUNMLE1BQU0sRUFBRSxJQUFBLGtCQUFXLEVBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQztRQUNyQyxFQUFFLEVBQUUsSUFBQSxrQkFBVyxFQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUM7UUFDN0IsRUFBRSxFQUFFLElBQUEsa0JBQVcsRUFBQyxTQUFTLENBQUMsRUFBRSxDQUFDO0tBQzlCLENBQUM7QUFDSixDQUFDO0FBTkQsMENBTUM7QUFFRDs7O0dBR0c7QUFDSCxTQUFnQiwyQkFBMkIsQ0FBQyxTQUFxQztJQUMvRSxPQUFPO1FBQ0wsR0FBRyxpQkFBaUIsQ0FBQyxTQUFTLENBQUM7UUFDL0IsV0FBVyxFQUFFO1lBQ1gsT0FBTyxFQUFFO2dCQUNQLEtBQUssRUFBRSxJQUFBLCtCQUF3QixFQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQztnQkFDcEUsQ0FBQyxFQUFFLElBQUEsK0JBQXdCLEVBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO2FBQzdEO1lBQ0QsT0FBTyxFQUFFO2dCQUNQLEtBQUssRUFBRSxJQUFBLCtCQUF3QixFQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQztnQkFDcEUsQ0FBQyxFQUFFLElBQUEsK0JBQXdCLEVBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO2FBQzdEO1NBQ0Y7S0FDRixDQUFDO0FBQ0osQ0FBQztBQWRELGtFQWNDO0FBRUQ7OztHQUdHO0FBQ0gsU0FBZ0IseUJBQXlCLENBQUMsU0FBdUM7SUFDL0UsT0FBTztRQUNMLEdBQUcsZUFBZSxDQUFDLFNBQVMsQ0FBQztRQUM3QixXQUFXLEVBQUU7WUFDWCxPQUFPLEVBQUU7Z0JBQ1AsS0FBSyxFQUFFLElBQUEsK0JBQXdCLEVBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDO2dCQUNwRSxDQUFDLEVBQUUsSUFBQSwrQkFBd0IsRUFBQyxTQUFTLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7YUFDN0Q7WUFDRCxPQUFPLEVBQUU7Z0JBQ1AsS0FBSyxFQUFFLElBQUEsK0JBQXdCLEVBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDO2dCQUNwRSxDQUFDLEVBQUUsSUFBQSwrQkFBd0IsRUFBQyxTQUFTLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7YUFDN0Q7U0FDRjtLQUNGLENBQUM7QUFDSixDQUFDO0FBZEQsOERBY0M7QUF1QkQ7OztHQUdHO0FBQ0gsU0FBZ0IsNEJBQTRCLENBQUMsU0FBc0M7SUFDakYsT0FBTztRQUNMLENBQUMsRUFBRSxJQUFBLCtCQUF3QixFQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7S0FDekMsQ0FBQztBQUNKLENBQUM7QUFKRCxvRUFJQztBQUVEOzs7R0FHRztBQUNILFNBQWdCLGtDQUFrQyxDQUNoRCxTQUE0QztJQUU1QyxPQUFPO1FBQ0wsS0FBSyxFQUFFLElBQUEsK0JBQXdCLEVBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQztLQUNqRCxDQUFDO0FBQ0osQ0FBQztBQU5ELGdGQU1DO0FBRUQ7OztHQUdHO0FBQ0gsU0FBZ0Isc0NBQXNDLENBQ3BELG1CQUEwRDtJQUUxRCxPQUFPO1FBQ0wsR0FBRyw0QkFBNEIsQ0FBQyxtQkFBbUIsQ0FBQztRQUNwRCxHQUFHLGtDQUFrQyxDQUFDLG1CQUFtQixDQUFDO0tBQzNELENBQUM7QUFDSixDQUFDO0FBUEQsd0ZBT0M7QUFFRDs7O0dBR0c7QUFDSCxTQUFnQiwwQkFBMEIsQ0FBQyxTQUF3QztJQUNqRixPQUFPO1FBQ0wsQ0FBQyxFQUFFLElBQUEsK0JBQXdCLEVBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUM7S0FDOUMsQ0FBQztBQUNKLENBQUM7QUFKRCxnRUFJQztBQUVEOzs7R0FHRztBQUNILFNBQWdCLGdDQUFnQyxDQUM5QyxTQUE4QztJQUU5QyxPQUFPO1FBQ0wsS0FBSyxFQUFFLElBQUEsK0JBQXdCLEVBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUM7S0FDdEQsQ0FBQztBQUNKLENBQUM7QUFORCw0RUFNQztBQUVEOzs7R0FHRztBQUNILFNBQWdCLG9DQUFvQyxDQUNsRCxtQkFBNEQ7SUFFNUQsT0FBTztRQUNMLEdBQUcsMEJBQTBCLENBQUMsbUJBQW1CLENBQUM7UUFDbEQsR0FBRyxnQ0FBZ0MsQ0FBQyxtQkFBbUIsQ0FBQztLQUN6RCxDQUFDO0FBQ0osQ0FBQztBQVBELG9GQU9DIiwic291cmNlc0NvbnRlbnQiOlsiLy8gTnRpbGRlIFByb29mIHdoZXJlIGJvdGggYWxwaGEgYW5kIHQgYXJlIGEgc2V0IG9mIDEyOCBwcm9vZnMgZWFjaC5cbmltcG9ydCB7IFNjaG5vcnJQcm9vZiB9IGZyb20gJy4uLy4uL3R5cGVzJztcbmltcG9ydCB7IGJpZ0ludFRvSGV4LCBjb252ZXJ0QmlnSW50QXJyVG9IZXhBcnIsIGNvbnZlcnRIZXhBcnJUb0JpZ0ludEFyciwgaGV4VG9CaWdJbnQgfSBmcm9tICcuLi8uLi91dGlsJztcblxuLy8gUHJpdmF0ZSBYU2hhcmUgb2YgdGhlIGN1cnJlbnQgcGFydGljaXBhbnRcbmV4cG9ydCB0eXBlIFhTaGFyZSA9IHtcbiAgaTogbnVtYmVyO1xuICBsOiBzdHJpbmc7XG4gIG06IHN0cmluZztcbiAgbjogc3RyaW5nO1xuICB5OiBzdHJpbmc7IC8vIGNvbWJpbmVkIHB1YmxpYyBrZXlcbiAgeDogc3RyaW5nOyAvLyBjb21iaW5lZCBzZWNyZXRcbiAgc2Nobm9yclByb29mWDogU2Nobm9yclByb29mOyAvLyBzY2hub3JyIHByb29mIG9mIGtub3dsZWRnZSBvZiB4XG4gIGNoYWluY29kZTogc3RyaW5nO1xufTtcblxuaW50ZXJmYWNlIE50aWxkZVByb29mPFQ+IHtcbiAgYWxwaGE6IFRbXTtcbiAgdDogVFtdO1xufVxuXG4vLyBOdGlsZGUgUHJvb2ZcbmludGVyZmFjZSBOdGlsZGVQcm9vZnM8VD4ge1xuICBoMVdydEgyOiBOdGlsZGVQcm9vZjxUPjtcbiAgaDJXcnRIMTogTnRpbGRlUHJvb2Y8VD47XG59XG5cbi8vIE50aWxkZSBjaGFsbGVuZ2UgdmFsdWVzXG5pbnRlcmZhY2UgTnRpbGRlPFQ+IHtcbiAgbnRpbGRlOiBUO1xuICBoMTogVDtcbiAgaDI6IFQ7XG59XG5cbmV4cG9ydCB0eXBlIERlc2VyaWFsaXplZE50aWxkZSA9IE50aWxkZTxiaWdpbnQ+O1xuZXhwb3J0IHR5cGUgU2VyaWFsaXplZE50aWxkZSA9IE50aWxkZTxzdHJpbmc+O1xuZXhwb3J0IHR5cGUgRGVzZXJpYWxpemVkTnRpbGRlUHJvb2YgPSBOdGlsZGVQcm9vZjxiaWdpbnQ+O1xuZXhwb3J0IHR5cGUgU2VyaWFsaXplZE50aWxkZVByb29mID0gTnRpbGRlUHJvb2Y8c3RyaW5nPjtcbmV4cG9ydCB0eXBlIERlc2VyaWFsaXplZE50aWxkZVByb29mcyA9IE50aWxkZVByb29mczxiaWdpbnQ+O1xuZXhwb3J0IHR5cGUgU2VyaWFsaXplZE50aWxkZVByb29mcyA9IE50aWxkZVByb29mczxzdHJpbmc+O1xuXG4vKipcbiAqIFRoZSBudGlsZGUgcHJvb2ZzIGFyZSBkb25lIG5vbi1pbnRlcmFjdGl2ZWx5LFxuICogdGhlcmVmb3JlIGEgcGFydHkgZ2VuZXJhdGVzIGJvdGggbnRpbGRlLCBoMSwgaDIgYW5kIHRoZSBwcm9vZnMgd2l0aG91dFxuICogaW50ZXJhY3Rpb24gd2l0aCB0aGUgb3RoZXIgcGFydHkuXG4gKi9cbmV4cG9ydCB0eXBlIERlc2VyaWFsaXplZE50aWxkZVdpdGhQcm9vZnMgPSBEZXNlcmlhbGl6ZWROdGlsZGUgJiB7XG4gIG50aWxkZVByb29mOiBEZXNlcmlhbGl6ZWROdGlsZGVQcm9vZnM7XG59O1xuZXhwb3J0IHR5cGUgU2VyaWFsaXplZE50aWxkZVdpdGhQcm9vZnMgPSBTZXJpYWxpemVkTnRpbGRlICYge1xuICBudGlsZGVQcm9vZjogU2VyaWFsaXplZE50aWxkZVByb29mcztcbn07XG5cbmV4cG9ydCB0eXBlIFNlcmlhbGl6ZWRFY2RzYUNoYWxsZW5nZXMgPSBTZXJpYWxpemVkTnRpbGRlICYgU2VyaWFsaXplZFBhaWxsaWVyQ2hhbGxlbmdlO1xuXG4vKipcbiAqIERlc2VyaWFsaXplcyBhIGNoYWxsZW5nZSBmcm9tIGhleCBzdHJpbmdzIHRvIGJpZ2ludFxuICogQHBhcmFtIGNoYWxsZW5nZVxuICovXG5leHBvcnQgZnVuY3Rpb24gZGVzZXJpYWxpemVOdGlsZGUoY2hhbGxlbmdlOiBTZXJpYWxpemVkTnRpbGRlKTogRGVzZXJpYWxpemVkTnRpbGRlIHtcbiAgcmV0dXJuIHtcbiAgICBudGlsZGU6IGhleFRvQmlnSW50KGNoYWxsZW5nZS5udGlsZGUpLFxuICAgIGgxOiBoZXhUb0JpZ0ludChjaGFsbGVuZ2UuaDEpLFxuICAgIGgyOiBoZXhUb0JpZ0ludChjaGFsbGVuZ2UuaDIpLFxuICB9O1xufVxuXG4vKipcbiAqIFNlcmlhbGl6ZXMgYSBjaGFsbGVuZ2UgZnJvbSBiaWcgaW50IHRvIGhleCBzdHJpbmdzLlxuICogQHBhcmFtIGNoYWxsZW5nZVxuICovXG5leHBvcnQgZnVuY3Rpb24gc2VyaWFsaXplTnRpbGRlKGNoYWxsZW5nZTogRGVzZXJpYWxpemVkTnRpbGRlKTogU2VyaWFsaXplZE50aWxkZSB7XG4gIHJldHVybiB7XG4gICAgbnRpbGRlOiBiaWdJbnRUb0hleChjaGFsbGVuZ2UubnRpbGRlKSxcbiAgICBoMTogYmlnSW50VG9IZXgoY2hhbGxlbmdlLmgxKSxcbiAgICBoMjogYmlnSW50VG9IZXgoY2hhbGxlbmdlLmgyKSxcbiAgfTtcbn1cblxuLyoqXG4gKiBEZXNlcmlhbGl6ZXMgYSBjaGFsbGVuZ2UgYW5kIGl0J3MgcHJvb2ZzIGZyb20gaGV4IHN0cmluZ3MgdG8gYmlnaW50XG4gKiBAcGFyYW0gY2hhbGxlbmdlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZXNlcmlhbGl6ZU50aWxkZVdpdGhQcm9vZnMoY2hhbGxlbmdlOiBTZXJpYWxpemVkTnRpbGRlV2l0aFByb29mcyk6IERlc2VyaWFsaXplZE50aWxkZVdpdGhQcm9vZnMge1xuICByZXR1cm4ge1xuICAgIC4uLmRlc2VyaWFsaXplTnRpbGRlKGNoYWxsZW5nZSksXG4gICAgbnRpbGRlUHJvb2Y6IHtcbiAgICAgIGgxV3J0SDI6IHtcbiAgICAgICAgYWxwaGE6IGNvbnZlcnRIZXhBcnJUb0JpZ0ludEFycihjaGFsbGVuZ2UubnRpbGRlUHJvb2YuaDFXcnRIMi5hbHBoYSksXG4gICAgICAgIHQ6IGNvbnZlcnRIZXhBcnJUb0JpZ0ludEFycihjaGFsbGVuZ2UubnRpbGRlUHJvb2YuaDFXcnRIMi50KSxcbiAgICAgIH0sXG4gICAgICBoMldydEgxOiB7XG4gICAgICAgIGFscGhhOiBjb252ZXJ0SGV4QXJyVG9CaWdJbnRBcnIoY2hhbGxlbmdlLm50aWxkZVByb29mLmgyV3J0SDEuYWxwaGEpLFxuICAgICAgICB0OiBjb252ZXJ0SGV4QXJyVG9CaWdJbnRBcnIoY2hhbGxlbmdlLm50aWxkZVByb29mLmgyV3J0SDEudCksXG4gICAgICB9LFxuICAgIH0sXG4gIH07XG59XG5cbi8qKlxuICogU2VyaWFsaXplcyBhIGNoYWxsZW5nZSBhbmQgaXQncyBwcm9vZnMgZnJvbSBiaWcgaW50IHRvIGhleCBzdHJpbmdzLlxuICogQHBhcmFtIGNoYWxsZW5nZVxuICovXG5leHBvcnQgZnVuY3Rpb24gc2VyaWFsaXplTnRpbGRlV2l0aFByb29mcyhjaGFsbGVuZ2U6IERlc2VyaWFsaXplZE50aWxkZVdpdGhQcm9vZnMpOiBTZXJpYWxpemVkTnRpbGRlV2l0aFByb29mcyB7XG4gIHJldHVybiB7XG4gICAgLi4uc2VyaWFsaXplTnRpbGRlKGNoYWxsZW5nZSksXG4gICAgbnRpbGRlUHJvb2Y6IHtcbiAgICAgIGgxV3J0SDI6IHtcbiAgICAgICAgYWxwaGE6IGNvbnZlcnRCaWdJbnRBcnJUb0hleEFycihjaGFsbGVuZ2UubnRpbGRlUHJvb2YuaDFXcnRIMi5hbHBoYSksXG4gICAgICAgIHQ6IGNvbnZlcnRCaWdJbnRBcnJUb0hleEFycihjaGFsbGVuZ2UubnRpbGRlUHJvb2YuaDFXcnRIMi50KSxcbiAgICAgIH0sXG4gICAgICBoMldydEgxOiB7XG4gICAgICAgIGFscGhhOiBjb252ZXJ0QmlnSW50QXJyVG9IZXhBcnIoY2hhbGxlbmdlLm50aWxkZVByb29mLmgyV3J0SDEuYWxwaGEpLFxuICAgICAgICB0OiBjb252ZXJ0QmlnSW50QXJyVG9IZXhBcnIoY2hhbGxlbmdlLm50aWxkZVByb29mLmgyV3J0SDEudCksXG4gICAgICB9LFxuICAgIH0sXG4gIH07XG59XG5cbnR5cGUgUGFpbGxpZXJDaGFsbGVuZ2U8VD4gPSB7XG4gIHA6IFRbXTtcbn07XG5cbnR5cGUgUGFpbGxpZXJDaGFsbGVuZ2VQcm9vZjxUPiA9IHtcbiAgc2lnbWE6IFRbXTtcbn07XG5cbmV4cG9ydCB0eXBlIERlc2VyaWFsaXplZFBhaWxsaWVyQ2hhbGxlbmdlID0gUGFpbGxpZXJDaGFsbGVuZ2U8YmlnaW50PjtcbmV4cG9ydCB0eXBlIFNlcmlhbGl6ZWRQYWlsbGllckNoYWxsZW5nZSA9IFBhaWxsaWVyQ2hhbGxlbmdlPHN0cmluZz47XG5leHBvcnQgdHlwZSBEZXNlcmlhbGl6ZWRQYWlsbGllckNoYWxsZW5nZVByb29mcyA9IFBhaWxsaWVyQ2hhbGxlbmdlUHJvb2Y8YmlnaW50PjtcbmV4cG9ydCB0eXBlIFNlcmlhbGl6ZWRQYWlsbGllckNoYWxsZW5nZVByb29mcyA9IFBhaWxsaWVyQ2hhbGxlbmdlUHJvb2Y8c3RyaW5nPjtcbi8qKlxuICogVGhlIHBhaWxsaWVyIHByb29mcyBhcmUgZG9uZSBpbnRlcmFjdGl2ZWx5IGJldHdlZW4gdHdvIHBhcnRpZXMuXG4gKiBJZiBwYXJ0eSBBIGlzIGNvbXBsZXRpbmcgYSBwYWlsbGllciBwcm9vZiAkc2lnbWEkIHdpdGggcGFydHkgQiwgdGhlbiAkcCQgcmVmZXJzIHRvXG4gKiBhIGNoYWxsZW5nZSBnaXZlbiB0byBBIGJ5IEIsIGFuZCAkc2lnbWEkIHJlcHJlc2VudHMgdGhlIHByb29mIHRvIHRoZSBjaGFsbGVuZ2VcbiAqL1xuZXhwb3J0IHR5cGUgRGVzZXJpYWxpemVkUGFpbGxpZXJDaGFsbGVuZ2VXaXRoUHJvb2ZzID0gRGVzZXJpYWxpemVkUGFpbGxpZXJDaGFsbGVuZ2UgJlxuICBEZXNlcmlhbGl6ZWRQYWlsbGllckNoYWxsZW5nZVByb29mcztcbmV4cG9ydCB0eXBlIFNlcmlhbGl6ZWRQYWlsbGllckNoYWxsZW5nZVdpdGhQcm9vZnMgPSBTZXJpYWxpemVkUGFpbGxpZXJDaGFsbGVuZ2UgJiBTZXJpYWxpemVkUGFpbGxpZXJDaGFsbGVuZ2VQcm9vZnM7XG5cbi8qKlxuICogRGVzZXJpYWxpemVzIGEgcGFpbGxpZXIgY2hhbGxlbmdlIHRvIGhleCBzdHJpbmdzLlxuICogQHBhcmFtIGNoYWxsZW5nZVxuICovXG5leHBvcnQgZnVuY3Rpb24gZGVzZXJpYWxpemVQYWlsbGllckNoYWxsZW5nZShjaGFsbGVuZ2U6IFNlcmlhbGl6ZWRQYWlsbGllckNoYWxsZW5nZSk6IERlc2VyaWFsaXplZFBhaWxsaWVyQ2hhbGxlbmdlIHtcbiAgcmV0dXJuIHtcbiAgICBwOiBjb252ZXJ0SGV4QXJyVG9CaWdJbnRBcnIoY2hhbGxlbmdlLnApLFxuICB9O1xufVxuXG4vKipcbiAqIERlc2VyaWFsaXplcyBhIHBhaWxsaWVyIGNoYWxsZW5nZSBwcm9vZiB0byBoZXggc3RyaW5ncy5cbiAqIEBwYXJhbSBjaGFsbGVuZ2VcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRlc2VyaWFsaXplUGFpbGxpZXJDaGFsbGVuZ2VQcm9vZnMoXG4gIGNoYWxsZW5nZTogU2VyaWFsaXplZFBhaWxsaWVyQ2hhbGxlbmdlUHJvb2ZzXG4pOiBEZXNlcmlhbGl6ZWRQYWlsbGllckNoYWxsZW5nZVByb29mcyB7XG4gIHJldHVybiB7XG4gICAgc2lnbWE6IGNvbnZlcnRIZXhBcnJUb0JpZ0ludEFycihjaGFsbGVuZ2Uuc2lnbWEpLFxuICB9O1xufVxuXG4vKipcbiAqIERlc2VyaWFsaXplcyBhIHBhaWxsaWVyIGNoYWxsZW5nZSBhbmQgaXRzIHByb29mIHRvIGhleCBzdHJpbmdzLlxuICogQHBhcmFtIGNoYWxsZW5nZVdpdGhQcm9vZnNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRlc2VyaWFsaXplUGFpbGxpZXJDaGFsbGVuZ2VXaXRoUHJvb2ZzKFxuICBjaGFsbGVuZ2VXaXRoUHJvb2ZzOiBTZXJpYWxpemVkUGFpbGxpZXJDaGFsbGVuZ2VXaXRoUHJvb2ZzXG4pOiBEZXNlcmlhbGl6ZWRQYWlsbGllckNoYWxsZW5nZVdpdGhQcm9vZnMge1xuICByZXR1cm4ge1xuICAgIC4uLmRlc2VyaWFsaXplUGFpbGxpZXJDaGFsbGVuZ2UoY2hhbGxlbmdlV2l0aFByb29mcyksXG4gICAgLi4uZGVzZXJpYWxpemVQYWlsbGllckNoYWxsZW5nZVByb29mcyhjaGFsbGVuZ2VXaXRoUHJvb2ZzKSxcbiAgfTtcbn1cblxuLyoqXG4gKiBTZXJpYWxpemVzIGEgcGFpbGxpZXIgY2hhbGxlbmdlIHRvIGhleCBzdHJpbmdzLlxuICogQHBhcmFtIGNoYWxsZW5nZVxuICovXG5leHBvcnQgZnVuY3Rpb24gc2VyaWFsaXplUGFpbGxpZXJDaGFsbGVuZ2UoY2hhbGxlbmdlOiBEZXNlcmlhbGl6ZWRQYWlsbGllckNoYWxsZW5nZSk6IFNlcmlhbGl6ZWRQYWlsbGllckNoYWxsZW5nZSB7XG4gIHJldHVybiB7XG4gICAgcDogY29udmVydEJpZ0ludEFyclRvSGV4QXJyKGNoYWxsZW5nZS5wLCA3NjgpLFxuICB9O1xufVxuXG4vKipcbiAqIFNlcmlhbGl6ZXMgYSBwYWlsbGllciBjaGFsbGVuZ2UgcHJvb2YgdG8gaGV4IHN0cmluZ3MuXG4gKiBAcGFyYW0gY2hhbGxlbmdlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZXJpYWxpemVQYWlsbGllckNoYWxsZW5nZVByb29mcyhcbiAgY2hhbGxlbmdlOiBEZXNlcmlhbGl6ZWRQYWlsbGllckNoYWxsZW5nZVByb29mc1xuKTogU2VyaWFsaXplZFBhaWxsaWVyQ2hhbGxlbmdlUHJvb2ZzIHtcbiAgcmV0dXJuIHtcbiAgICBzaWdtYTogY29udmVydEJpZ0ludEFyclRvSGV4QXJyKGNoYWxsZW5nZS5zaWdtYSwgNzY4KSxcbiAgfTtcbn1cblxuLyoqXG4gKiBTZXJpYWxpemVzIGEgcGFpbGxpZXIgY2hhbGxlbmdlIGFuZCBpdHMgcHJvb2YgdG8gaGV4IHN0cmluZ3MuXG4gKiBAcGFyYW0gY2hhbGxlbmdlV2l0aFByb29mc1xuICovXG5leHBvcnQgZnVuY3Rpb24gc2VyaWFsaXplUGFpbGxpZXJDaGFsbGVuZ2VXaXRoUHJvb2ZzKFxuICBjaGFsbGVuZ2VXaXRoUHJvb2ZzOiBEZXNlcmlhbGl6ZWRQYWlsbGllckNoYWxsZW5nZVdpdGhQcm9vZnNcbik6IFNlcmlhbGl6ZWRQYWlsbGllckNoYWxsZW5nZVdpdGhQcm9vZnMge1xuICByZXR1cm4ge1xuICAgIC4uLnNlcmlhbGl6ZVBhaWxsaWVyQ2hhbGxlbmdlKGNoYWxsZW5nZVdpdGhQcm9vZnMpLFxuICAgIC4uLnNlcmlhbGl6ZVBhaWxsaWVyQ2hhbGxlbmdlUHJvb2ZzKGNoYWxsZW5nZVdpdGhQcm9vZnMpLFxuICB9O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJTQU1vZHVsdXMge1xuICBuOiBiaWdpbnQ7XG4gIC8vIFNvcGhpZSBHZXJtYWluIHByaW1lcy5cbiAgcTE6IGJpZ2ludDtcbiAgcTI6IGJpZ2ludDtcbn1cblxuLy8gUmFuZ2UgcHJvb2YgdmFsdWVzXG5leHBvcnQgaW50ZXJmYWNlIFJhbmdlUHJvb2Yge1xuICB6OiBiaWdpbnQ7XG4gIHU6IGJpZ2ludDtcbiAgdzogYmlnaW50O1xuICBzOiBiaWdpbnQ7XG4gIHMxOiBiaWdpbnQ7XG4gIHMyOiBiaWdpbnQ7XG59XG5cbi8vIFJhbmdlIHByb29mIHZhbHVlc1xuZXhwb3J0IGludGVyZmFjZSBSYW5nZVByb29mV2l0aENoZWNrIHtcbiAgejogYmlnaW50O1xuICB6cHJtOiBiaWdpbnQ7XG4gIHQ6IGJpZ2ludDtcbiAgdjogYmlnaW50O1xuICB3OiBiaWdpbnQ7XG4gIHM6IGJpZ2ludDtcbiAgczE6IGJpZ2ludDtcbiAgczI6IGJpZ2ludDtcbiAgdDE6IGJpZ2ludDtcbiAgdDI6IGJpZ2ludDtcbiAgdTogYmlnaW50O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFprVlByb29mIHtcbiAgQWxwaGE6IGJpZ2ludDtcbiAgdDogYmlnaW50O1xuICB1OiBiaWdpbnQ7XG59XG4iXX0=
@@ -1,20 +1,25 @@
1
1
  /// <reference types="node" />
2
2
  import { KeygenSession, Keyshare } from '@silencelaboratories/dkls-wasm-ll-node';
3
- import { DeserializedBroadcastMessage, DeserializedMessages, DkgState } from './types';
3
+ import { DeserializedBroadcastMessage, DeserializedMessages, DkgState, RetrofitData } from './types';
4
4
  export declare class Dkg {
5
5
  protected dkgSession: KeygenSession | undefined;
6
6
  protected dkgSessionBytes: Uint8Array;
7
7
  protected dkgKeyShare: Keyshare;
8
+ protected keyShareBuff: Buffer;
8
9
  protected n: number;
9
10
  protected t: number;
10
11
  protected chainCodeCommitment: Uint8Array | undefined;
11
12
  protected partyIdx: number;
12
13
  protected dkgState: DkgState;
13
- constructor(n: number, t: number, partyIdx: number);
14
+ protected dklsKeyShareRetrofitObject: Keyshare | undefined;
15
+ protected retrofitData: RetrofitData | undefined;
16
+ constructor(n: number, t: number, partyIdx: number, retrofitData?: RetrofitData);
14
17
  private _restoreSession;
18
+ private _createDKLsRetrofitKeyShare;
15
19
  private _deserializeState;
16
20
  initDkg(): Promise<DeserializedBroadcastMessage>;
17
21
  getKeyShare(): Buffer;
22
+ getReducedKeyShare(): Buffer;
18
23
  handleIncomingMessages(messagesForIthRound: DeserializedMessages): DeserializedMessages;
19
24
  }
20
25
  //# sourceMappingURL=dkg.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"dkg.d.ts","sourceRoot":"","sources":["../../../../src/tss/ecdsa-dkls/dkg.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAW,MAAM,wCAAwC,CAAC;AAC1F,OAAO,EAAE,4BAA4B,EAAE,oBAAoB,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAGvF,qBAAa,GAAG;IACd,SAAS,CAAC,UAAU,EAAE,aAAa,GAAG,SAAS,CAAC;IAChD,SAAS,CAAC,eAAe,EAAE,UAAU,CAAC;IACtC,SAAS,CAAC,WAAW,EAAE,QAAQ,CAAC;IAChC,SAAS,CAAC,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,mBAAmB,EAAE,UAAU,GAAG,SAAS,CAAC;IACtD,SAAS,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC3B,SAAS,CAAC,QAAQ,EAAE,QAAQ,CAA0B;gBAE1C,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM;IAOlD,OAAO,CAAC,eAAe;IAMvB,OAAO,CAAC,iBAAiB;IA2BnB,OAAO,IAAI,OAAO,CAAC,4BAA4B,CAAC;IAwBtD,WAAW,IAAI,MAAM;IAMrB,sBAAsB,CAAC,mBAAmB,EAAE,oBAAoB,GAAG,oBAAoB;CA8ExF"}
1
+ {"version":3,"file":"dkg.d.ts","sourceRoot":"","sources":["../../../../src/tss/ecdsa-dkls/dkg.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAW,MAAM,wCAAwC,CAAC;AAC1F,OAAO,EAAE,4BAA4B,EAAE,oBAAoB,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAKrG,qBAAa,GAAG;IACd,SAAS,CAAC,UAAU,EAAE,aAAa,GAAG,SAAS,CAAC;IAChD,SAAS,CAAC,eAAe,EAAE,UAAU,CAAC;IACtC,SAAS,CAAC,WAAW,EAAE,QAAQ,CAAC;IAChC,SAAS,CAAC,YAAY,EAAE,MAAM,CAAC;IAC/B,SAAS,CAAC,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,mBAAmB,EAAE,UAAU,GAAG,SAAS,CAAC;IACtD,SAAS,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC3B,SAAS,CAAC,QAAQ,EAAE,QAAQ,CAA0B;IACtD,SAAS,CAAC,0BAA0B,EAAE,QAAQ,GAAG,SAAS,CAAC;IAC3D,SAAS,CAAC,YAAY,EAAE,YAAY,GAAG,SAAS,CAAC;gBAErC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,YAAY;IAQ/E,OAAO,CAAC,eAAe;IAMvB,OAAO,CAAC,2BAA2B;IA2CnC,OAAO,CAAC,iBAAiB;IA2BnB,OAAO,IAAI,OAAO,CAAC,4BAA4B,CAAC;IA6BtD,WAAW,IAAI,MAAM;IAOrB,kBAAkB,IAAI,MAAM;IAe5B,sBAAsB,CAAC,mBAAmB,EAAE,oBAAoB,GAAG,oBAAoB;CAmFxF"}
@@ -3,25 +3,69 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Dkg = void 0;
4
4
  const dkls_wasm_ll_node_1 = require("@silencelaboratories/dkls-wasm-ll-node");
5
5
  const types_1 = require("./types");
6
- const cbor_1 = require("cbor");
6
+ const cbor_x_1 = require("cbor-x");
7
+ const util_1 = require("../../util");
8
+ const curves_1 = require("../../curves");
7
9
  class Dkg {
8
- constructor(n, t, partyIdx) {
10
+ constructor(n, t, partyIdx, retrofitData) {
9
11
  this.dkgState = types_1.DkgState.Uninitialized;
10
12
  this.n = n;
11
13
  this.t = t;
12
14
  this.partyIdx = partyIdx;
13
15
  this.chainCodeCommitment = undefined;
16
+ this.retrofitData = retrofitData;
14
17
  }
15
18
  _restoreSession() {
16
19
  if (!this.dkgSession) {
17
20
  this.dkgSession = dkls_wasm_ll_node_1.KeygenSession.fromBytes(this.dkgSessionBytes);
18
21
  }
19
22
  }
23
+ _createDKLsRetrofitKeyShare() {
24
+ if (this.retrofitData) {
25
+ if (!this.retrofitData.xShare.y || !this.retrofitData.xShare.chaincode || !this.retrofitData.xShare.x) {
26
+ throw Error('xShare must have a public key, private share value, and a chaincode.');
27
+ }
28
+ if (this.retrofitData.bigSiList.length !== this.n - 1) {
29
+ throw Error("bigSiList should contain the other parties' Si's");
30
+ }
31
+ const bigSList = [];
32
+ const xiList = [];
33
+ let j = 0;
34
+ for (let i = 0; i < this.n; i++) {
35
+ if (i === this.partyIdx) {
36
+ const secp256k1 = new curves_1.Secp256k1Curve();
37
+ bigSList.push(Array.from((0, util_1.bigIntToBufferBE)(secp256k1.basePointMult(BigInt('0x' + this.retrofitData.xShare.x)))));
38
+ }
39
+ else {
40
+ bigSList.push(Array.from(Buffer.from(this.retrofitData.bigSiList[j], 'hex')));
41
+ j++;
42
+ }
43
+ xiList.push(Array.from((0, util_1.bigIntToBufferBE)(BigInt(i + 1), 32)));
44
+ }
45
+ const dklsKeyShare = {
46
+ total_parties: this.n,
47
+ threshold: this.t,
48
+ rank_list: new Array(this.n).fill(0),
49
+ party_id: this.partyIdx,
50
+ public_key: Array.from(Buffer.from(this.retrofitData.xShare.y, 'hex')),
51
+ root_chain_code: Array.from(Buffer.from(this.retrofitData.xShare.chaincode, 'hex')),
52
+ final_session_id: Array(32).fill(0),
53
+ seed_ot_receivers: new Array(this.n - 1).fill(Array(32832).fill(0)),
54
+ seed_ot_senders: new Array(this.n - 1).fill(Array(32768).fill(0)),
55
+ sent_seed_list: [Array(32).fill(0)],
56
+ rec_seed_list: [Array(32).fill(0)],
57
+ s_i: Array.from(Buffer.from(this.retrofitData.xShare.x, 'hex')),
58
+ big_s_list: bigSList,
59
+ x_i_list: this.retrofitData.xiList ? this.retrofitData.xiList : xiList,
60
+ };
61
+ this.dklsKeyShareRetrofitObject = dkls_wasm_ll_node_1.Keyshare.fromBytes((0, cbor_x_1.encode)(dklsKeyShare));
62
+ }
63
+ }
20
64
  _deserializeState() {
21
65
  if (!this.dkgSession) {
22
66
  throw Error('Session not intialized');
23
67
  }
24
- const round = (0, cbor_1.decode)(this.dkgSession.toBytes()).round;
68
+ const round = (0, cbor_x_1.decode)(this.dkgSession.toBytes()).round;
25
69
  switch (round) {
26
70
  case 'WaitMsg1':
27
71
  this.dkgState = types_1.DkgState.Round1;
@@ -52,9 +96,15 @@ class Dkg {
52
96
  }
53
97
  if (typeof window !== 'undefined') {
54
98
  const initDkls = require('@silencelaboratories/dkls-wasm-ll-web');
55
- await initDkls();
99
+ await initDkls.default();
100
+ }
101
+ this._createDKLsRetrofitKeyShare();
102
+ if (this.dklsKeyShareRetrofitObject) {
103
+ this.dkgSession = dkls_wasm_ll_node_1.KeygenSession.initKeyRotation(this.dklsKeyShareRetrofitObject);
104
+ }
105
+ else {
106
+ this.dkgSession = new dkls_wasm_ll_node_1.KeygenSession(this.n, this.t, this.partyIdx);
56
107
  }
57
- this.dkgSession = new dkls_wasm_ll_node_1.KeygenSession(this.n, this.t, this.partyIdx);
58
108
  try {
59
109
  const payload = this.dkgSession.createFirstMessage().payload;
60
110
  this._deserializeState();
@@ -68,9 +118,24 @@ class Dkg {
68
118
  }
69
119
  }
70
120
  getKeyShare() {
71
- const keyShareBuff = Buffer.from(this.dkgKeyShare.toBytes());
72
- this.dkgKeyShare.free();
73
- return keyShareBuff;
121
+ if (!this.keyShareBuff) {
122
+ throw Error('Can not get key share, DKG is not complete yet.');
123
+ }
124
+ return this.keyShareBuff;
125
+ }
126
+ getReducedKeyShare() {
127
+ if (!this.keyShareBuff) {
128
+ throw Error('Can not get key share, DKG is not complete yet.');
129
+ }
130
+ const decodedKeyshare = (0, cbor_x_1.decode)(this.keyShareBuff);
131
+ const reducedKeyShare = {
132
+ bigSList: decodedKeyshare.big_s_list,
133
+ xList: decodedKeyshare.x_i_list,
134
+ rootChainCode: decodedKeyshare.root_chain_code,
135
+ prv: decodedKeyshare.s_i,
136
+ };
137
+ const encodedKeyShare = (0, cbor_x_1.encode)(reducedKeyShare);
138
+ return encodedKeyShare;
74
139
  }
75
140
  handleIncomingMessages(messagesForIthRound) {
76
141
  let nextRoundMessages = [];
@@ -80,7 +145,7 @@ class Dkg {
80
145
  throw Error('Session not initialized');
81
146
  }
82
147
  try {
83
- if (this.dkgState == types_1.DkgState.Round3) {
148
+ if (this.dkgState === types_1.DkgState.Round3) {
84
149
  const commitmentsUnsorted = messagesForIthRound.p2pMessages
85
150
  .map((m) => {
86
151
  return { from: m.from, commitment: m.commitment };
@@ -100,16 +165,21 @@ class Dkg {
100
165
  .map((m) => new dkls_wasm_ll_node_1.Message(m.payload, m.from, undefined))
101
166
  .concat(messagesForIthRound.p2pMessages.map((m) => new dkls_wasm_ll_node_1.Message(m.payload, m.from, m.to))), undefined);
102
167
  }
103
- if (this.dkgState == types_1.DkgState.Round4) {
168
+ if (this.dkgState === types_1.DkgState.Round4) {
104
169
  this.dkgKeyShare = this.dkgSession.keyshare();
170
+ if (this.dklsKeyShareRetrofitObject) {
171
+ this.dkgKeyShare.finishKeyRotation(this.dklsKeyShareRetrofitObject);
172
+ }
173
+ this.keyShareBuff = Buffer.from(this.dkgKeyShare.toBytes());
174
+ this.dkgKeyShare.free();
105
175
  this.dkgState = types_1.DkgState.Complete;
106
176
  return { broadcastMessages: [], p2pMessages: [] };
107
177
  }
108
178
  else {
109
- // Update ronud data.
179
+ // Update round data.
110
180
  this._deserializeState();
111
181
  }
112
- if (this.dkgState == types_1.DkgState.Round2) {
182
+ if (this.dkgState === types_1.DkgState.Round2) {
113
183
  this.chainCodeCommitment = this.dkgSession.calculateChainCodeCommitment();
114
184
  }
115
185
  nextRoundDeserializedMessages = {
@@ -150,4 +220,4 @@ class Dkg {
150
220
  }
151
221
  }
152
222
  exports.Dkg = Dkg;
153
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGtnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3Rzcy9lY2RzYS1ka2xzL2RrZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSw4RUFBMEY7QUFDMUYsbUNBQXVGO0FBQ3ZGLCtCQUE4QjtBQUU5QixNQUFhLEdBQUc7SUFVZCxZQUFZLENBQVMsRUFBRSxDQUFTLEVBQUUsUUFBZ0I7UUFGeEMsYUFBUSxHQUFhLGdCQUFRLENBQUMsYUFBYSxDQUFDO1FBR3BELElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ1gsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDWCxJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztRQUN6QixJQUFJLENBQUMsbUJBQW1CLEdBQUcsU0FBUyxDQUFDO0lBQ3ZDLENBQUM7SUFFTyxlQUFlO1FBQ3JCLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQ3BCLElBQUksQ0FBQyxVQUFVLEdBQUcsaUNBQWEsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1NBQ2pFO0lBQ0gsQ0FBQztJQUVPLGlCQUFpQjtRQUN2QixJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUNwQixNQUFNLEtBQUssQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO1NBQ3ZDO1FBQ0QsTUFBTSxLQUFLLEdBQUcsSUFBQSxhQUFNLEVBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQztRQUN0RCxRQUFRLEtBQUssRUFBRTtZQUNiLEtBQUssVUFBVTtnQkFDYixJQUFJLENBQUMsUUFBUSxHQUFHLGdCQUFRLENBQUMsTUFBTSxDQUFDO2dCQUNoQyxNQUFNO1lBQ1IsS0FBSyxVQUFVO2dCQUNiLElBQUksQ0FBQyxRQUFRLEdBQUcsZ0JBQVEsQ0FBQyxNQUFNLENBQUM7Z0JBQ2hDLE1BQU07WUFDUixLQUFLLFVBQVU7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RyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7b0JBQ1QsTUFBTSxlQUFlLEdBQUc7d0JBQ3RCLE9BQU8sRUFBRSxDQUFDLENBQUMsT0FBTzt3QkFDbEIsSUFBSSxFQUFFLENBQUMsQ0FBQyxPQUFPO3FCQUNoQixDQUFDO29CQUNGLE9BQU8sZUFBZSxDQUFDO2dCQUN6QixDQUFDLENBQUM7YUFDTCxDQUFDO1NBQ0g7UUFBQyxPQUFPLENBQUMsRUFBRTtZQUNWLE1BQU0sNENBQTRDLElBQUksQ0FBQyxRQUFRLFdBQVcsSUFBSSxDQUFDLFFBQVEsS0FBSyxDQUFDLEVBQUUsQ0FBQztTQUNqRztnQkFBUztZQUNSLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7WUFDM0MsNENBQTRDO1lBQzVDLElBQUksSUFBSSxDQUFDLFFBQVEsS0FBSyxnQkFBUSxDQUFDLFFBQVEsRUFBRTtnQkFDdkMsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sRUFBRSxDQUFDO2dCQUNqRCxJQUFJLENBQUMsVUFBVSxHQUFHLFNBQVMsQ0FBQzthQUM3QjtTQUNGO1FBQ0QsT0FBTyw2QkFBNkIsQ0FBQztJQUN2QyxDQUFDO0NBQ0Y7QUE5SkQsa0JBOEpDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgS2V5Z2VuU2Vzc2lvbiwgS2V5c2hhcmUsIE1lc3NhZ2UgfSBmcm9tICdAc2lsZW5jZWxhYm9yYXRvcmllcy9ka2xzLXdhc20tbGwtbm9kZSc7XG5pbXBvcnQgeyBEZXNlcmlhbGl6ZWRCcm9hZGNhc3RNZXNzYWdlLCBEZXNlcmlhbGl6ZWRNZXNzYWdlcywgRGtnU3RhdGUgfSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCB7IGRlY29kZSB9IGZyb20gJ2Nib3InO1xuXG5leHBvcnQgY2xhc3MgRGtnIHtcbiAgcHJvdGVjdGVkIGRrZ1Nlc3Npb246IEtleWdlblNlc3Npb24gfCB1bmRlZmluZWQ7XG4gIHByb3RlY3RlZCBka2dTZXNzaW9uQnl0ZXM6IFVpbnQ4QXJyYXk7XG4gIHByb3RlY3RlZCBka2dLZXlTaGFyZTogS2V5c2hhcmU7XG4gIHByb3RlY3RlZCBuOiBudW1iZXI7XG4gIHByb3RlY3RlZCB0OiBudW1iZXI7XG4gIHByb3RlY3RlZCBjaGFpbkNvZGVDb21taXRtZW50OiBVaW50OEFycmF5IHwgdW5kZWZpbmVkO1xuICBwcm90ZWN0ZWQgcGFydHlJZHg6IG51bWJlcjtcbiAgcHJvdGVjdGVkIGRrZ1N0YXRlOiBEa2dTdGF0ZSA9IERrZ1N0YXRlLlVuaW5pdGlhbGl6ZWQ7XG5cbiAgY29uc3RydWN0b3IobjogbnVtYmVyLCB0OiBudW1iZXIsIHBhcnR5SWR4OiBudW1iZXIpIHtcbiAgICB0aGlzLm4gPSBuO1xuICAgIHRoaXMudCA9IHQ7XG4gICAgdGhpcy5wYXJ0eUlkeCA9IHBhcnR5SWR4O1xuICAgIHRoaXMuY2hhaW5Db2RlQ29tbWl0bWVudCA9IHVuZGVmaW5lZDtcbiAgfVxuXG4gIHByaXZhdGUgX3Jlc3RvcmVTZXNzaW9uKCkge1xuICAgIGlmICghdGhpcy5ka2dTZXNzaW9uKSB7XG4gICAgICB0aGlzLmRrZ1Nlc3Npb24gPSBLZXlnZW5TZXNzaW9uLmZyb21CeXRlcyh0aGlzLmRrZ1Nlc3Npb25CeXRlcyk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfZGVzZXJpYWxpemVTdGF0ZSgpIHtcbiAgICBpZiAoIXRoaXMuZGtnU2Vzc2lvbikge1xuICAgICAgdGhyb3cgRXJyb3IoJ1Nlc3Npb24gbm90IGludGlhbGl6ZWQnKTtcbiAgICB9XG4gICAgY29uc3Qgcm91bmQgPSBkZWNvZGUodGhpcy5ka2dTZXNzaW9uLnRvQnl0ZXMoKSkucm91bmQ7XG4gICAgc3dpdGNoIChyb3VuZCkge1xuICAgICAgY2FzZSAnV2FpdE1zZzEnOlxuICAgICAgICB0aGlzLmRrZ1N0YXRlID0gRGtnU3RhdGUuUm91bmQxO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ1dhaXRNc2cyJzpcbiAgICAgICAgdGhpcy5ka2dTdGF0ZSA9IERrZ1N0YXRlLlJvdW5kMjtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdXYWl0TXNnMyc6XG4gICAgICAgIHRoaXMuZGtnU3RhdGUgPSBEa2dTdGF0ZS5Sb3VuZDM7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnV2FpdE1zZzQnOlxuICAgICAgICB0aGlzLmRrZ1N0YXRlID0gRGtnU3RhdGUuUm91bmQ0O1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ0VuZGVkJzpcbiAgICAgICAgdGhpcy5ka2dTdGF0ZSA9IERrZ1N0YXRlLkNvbXBsZXRlO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRoaXMuZGtnU3RhdGUgPSBEa2dTdGF0ZS5JbnZhbGlkU3RhdGU7XG4gICAgICAgIHRocm93IGBJbnZhbGlkIFN0YXRlOiAke3JvdW5kfWA7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgaW5pdERrZygpOiBQcm9taXNlPERlc2VyaWFsaXplZEJyb2FkY2FzdE1lc3NhZ2U+IHtcbiAgICBpZiAodGhpcy50ID4gdGhpcy5uIHx8IHRoaXMucGFydHlJZHggPj0gdGhpcy5uKSB7XG4gICAgICB0aHJvdyAnSW52YWxpZCBwYXJhbWV0ZXJzIGZvciBES0cnO1xuICAgIH1cbiAgICBpZiAodGhpcy5ka2dTdGF0ZSAhPSBEa2dTdGF0ZS5VbmluaXRpYWxpemVkKSB7XG4gICAgICB0aHJvdyAnREtHIHNlc3Npb24gYWxyZWFkeSBpbml0aWFsaXplZCc7XG4gICAgfVxuICAgIGlmICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgY29uc3QgaW5pdERrbHMgPSByZXF1aXJlKCdAc2lsZW5jZWxhYm9yYXRvcmllcy9ka2xzLXdhc20tbGwtd2ViJyk7XG4gICAgICBhd2FpdCBpbml0RGtscygpO1xuICAgIH1cbiAgICB0aGlzLmRrZ1Nlc3Npb24gPSBuZXcgS2V5Z2VuU2Vzc2lvbih0aGlzLm4sIHRoaXMudCwgdGhpcy5wYXJ0eUlkeCk7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHBheWxvYWQgPSB0aGlzLmRrZ1Nlc3Npb24uY3JlYXRlRmlyc3RNZXNzYWdlKCkucGF5bG9hZDtcbiAgICAgIHRoaXMuX2Rlc2VyaWFsaXplU3RhdGUoKTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHBheWxvYWQ6IHBheWxvYWQsXG4gICAgICAgIGZyb206IHRoaXMucGFydHlJZHgsXG4gICAgICB9O1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRocm93IGBFcnJvciB3aGlsZSBjcmVhdGluZyB0aGUgZmlyc3QgbWVzc2FnZSBmcm9tIHBhcnR5ICR7dGhpcy5wYXJ0eUlkeH06ICR7ZX1gO1xuICAgIH1cbiAgfVxuXG4gIGdldEtleVNoYXJlKCk6IEJ1ZmZlciB7XG4gICAgY29uc3Qga2V5U2hhcmVCdWZmID0gQnVmZmVyLmZyb20odGhpcy5ka2dLZXlTaGFyZS50b0J5dGVzKCkpO1xuICAgIHRoaXMuZGtnS2V5U2hhcmUuZnJlZSgpO1xuICAgIHJldHVybiBrZXlTaGFyZUJ1ZmY7XG4gIH1cblxuICBoYW5kbGVJbmNvbWluZ01lc3NhZ2VzKG1lc3NhZ2VzRm9ySXRoUm91bmQ6IERlc2VyaWFsaXplZE1lc3NhZ2VzKTogRGVzZXJpYWxpemVkTWVzc2FnZXMge1xuICAgIGxldCBuZXh0Um91bmRNZXNzYWdlczogTWVzc2FnZVtdID0gW107XG4gICAgbGV0IG5leHRSb3VuZERlc2VyaWFsaXplZE1lc3NhZ2VzOiBEZXNlcmlhbGl6ZWRNZXNzYWdlcyA9IHsgYnJvYWRjYXN0TWVzc2FnZXM6IFtdLCBwMnBNZXNzYWdlczogW10gfTtcbiAgICB0aGlzLl9yZXN0b3JlU2Vzc2lvbigpO1xuICAgIGlmICghdGhpcy5ka2dTZXNzaW9uKSB7XG4gICAgICB0aHJvdyBFcnJvcignU2Vzc2lvbiBub3QgaW5pdGlhbGl6ZWQnKTtcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgIGlmICh0aGlzLmRrZ1N0YXRlID09IERrZ1N0YXRlLlJvdW5kMykge1xuICAgICAgICBjb25zdCBjb21taXRtZW50c1Vuc29ydGVkID0gbWVzc2FnZXNGb3JJdGhSb3VuZC5wMnBNZXNzYWdlc1xuICAgICAgICAgIC5tYXAoKG0pID0+IHtcbiAgICAgICAgICAgIHJldHVybiB7IGZyb206IG0uZnJvbSwgY29tbWl0bWVudDogbS5jb21taXRtZW50IH07XG4gICAgICAgICAgfSlcbiAgICAgICAgICAuY29uY2F0KFt7IGZyb206IHRoaXMucGFydHlJZHgsIGNvbW1pdG1lbnQ6IHRoaXMuY2hhaW5Db2RlQ29tbWl0bWVudCB9XSk7XG4gICAgICAgIGNvbnN0IGNvbW1pdG1lbnRzU29ydGVkID0gY29tbWl0bWVudHNVbnNvcnRlZFxuICAgICAgICAgIC5zb3J0KChhLCBiKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gYS5mcm9tIC0gYi5mcm9tO1xuICAgICAgICAgIH0pXG4gICAgICAgICAgLm1hcCgoYykgPT4gYy5jb21taXRtZW50KTtcbiAgICAgICAgbmV4dFJvdW5kTWVzc2FnZXMgPSB0aGlzLmRrZ1Nlc3Npb24uaGFuZGxlTWVzc2FnZXMoXG4gICAgICAgICAgbWVzc2FnZXNGb3JJdGhSb3VuZC5icm9hZGNhc3RNZXNzYWdlc1xuICAgICAgICAgICAgLm1hcCgobSkgPT4gbmV3IE1lc3NhZ2UobS5wYXlsb2FkLCBtLmZyb20sIHVuZGVmaW5lZCkpXG4gICAgICAgICAgICAuY29uY2F0KG1lc3NhZ2VzRm9ySXRoUm91bmQucDJwTWVzc2FnZXMubWFwKChtKSA9PiBuZXcgTWVzc2FnZShtLnBheWxvYWQsIG0uZnJvbSwgbS50bykpKSxcbiAgICAgICAgICBjb21taXRtZW50c1NvcnRlZFxuICAgICAgICApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbmV4dFJvdW5kTWVzc2FnZXMgPSB0aGlzLmRrZ1Nlc3Npb24uaGFuZGxlTWVzc2FnZXMoXG4gICAgICAgICAgbWVzc2FnZXNGb3JJdGhSb3VuZC5icm9hZGNhc3RNZXNzYWdlc1xuICAgICAgICAgICAgLm1hcCgobSkgPT4gbmV3IE1lc3NhZ2UobS5wYXlsb2FkLCBtLmZyb20sIHVuZGVmaW5lZCkpXG4gICAgICAgICAgICAuY29uY2F0KG1lc3NhZ2VzRm9ySXRoUm91bmQucDJwTWVzc2FnZXMubWFwKChtKSA9PiBuZXcgTWVzc2FnZShtLnBheWxvYWQsIG0uZnJvbSwgbS50bykpKSxcbiAgICAgICAgICB1bmRlZmluZWRcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLmRrZ1N0YXRlID09IERrZ1N0YXRlLlJvdW5kNCkge1xuICAgICAgICB0aGlzLmRrZ0tleVNoYXJlID0gdGhpcy5ka2dTZXNzaW9uLmtleXNoYXJlKCk7XG4gICAgICAgIHRoaXMuZGtnU3RhdGUgPSBEa2dTdGF0ZS5Db21wbGV0ZTtcbiAgICAgICAgcmV0dXJuIHsgYnJvYWRjYXN0TWVzc2FnZXM6IFtdLCBwMnBNZXNzYWdlczogW10gfTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIFVwZGF0ZSByb251ZCBkYXRhLlxuICAgICAgICB0aGlzLl9kZXNlcmlhbGl6ZVN0YXRlKCk7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5ka2dTdGF0ZSA9PSBEa2dTdGF0ZS5Sb3VuZDIpIHtcbiAgICAgICAgdGhpcy5jaGFpbkNvZGVDb21taXRtZW50ID0gdGhpcy5ka2dTZXNzaW9uLmNhbGN1bGF0ZUNoYWluQ29kZUNvbW1pdG1lbnQoKTtcbiAgICAgIH1cbiAgICAgIG5leHRSb3VuZERlc2VyaWFsaXplZE1lc3NhZ2VzID0ge1xuICAgICAgICBwMnBNZXNzYWdlczogbmV4dFJvdW5kTWVzc2FnZXNcbiAgICAgICAgICAuZmlsdGVyKChtKSA9PiBtLnRvX2lkICE9PSB1bmRlZmluZWQpXG4gICAgICAgICAgLm1hcCgobSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgcDJwUmV0dXJuID0ge1xuICAgICAgICAgICAgICBwYXlsb2FkOiBtLnBheWxvYWQsXG4gICAgICAgICAgICAgIGZyb206IG0uZnJvbV9pZCxcbiAgICAgICAgICAgICAgdG86IG0udG9faWQhLFxuICAgICAgICAgICAgICBjb21taXRtZW50OiB0aGlzLmNoYWluQ29kZUNvbW1pdG1lbnQsXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgcmV0dXJuIHAycFJldHVybjtcbiAgICAgICAgICB9KSxcbiAgICAgICAgYnJvYWRjYXN0TWVzc2FnZXM6IG5leHRSb3VuZE1lc3NhZ2VzXG4gICAgICAgICAgLmZpbHRlcigobSkgPT4gbS50b19pZCA9PT0gdW5kZWZpbmVkKVxuICAgICAgICAgIC5tYXAoKG0pID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGJyb2FkY2FzdFJldHVybiA9IHtcbiAgICAgICAgICAgICAgcGF5bG9hZDogbS5wYXlsb2FkLFxuICAgICAgICAgICAgICBmcm9tOiBtLmZyb21faWQsXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgcmV0dXJuIGJyb2FkY2FzdFJldHVybjtcbiAgICAgICAgICB9KSxcbiAgICAgIH07XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhyb3cgYEVycm9yIHdoaWxlIGNyZWF0aW5nIG1lc3NhZ2VzIGZyb20gcGFydHkgJHt0aGlzLnBhcnR5SWR4fSwgcm91bmQgJHt0aGlzLmRrZ1N0YXRlfTogJHtlfWA7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIG5leHRSb3VuZE1lc3NhZ2VzLmZvckVhY2goKG0pID0+IG0uZnJlZSgpKTtcbiAgICAgIC8vIFNlc3Npb24gaXMgZnJlZWQgd2hlbiBrZXlzaGFyZSBpcyBjYWxsZWQuXG4gICAgICBpZiAodGhpcy5ka2dTdGF0ZSAhPT0gRGtnU3RhdGUuQ29tcGxldGUpIHtcbiAgICAgICAgdGhpcy5ka2dTZXNzaW9uQnl0ZXMgPSB0aGlzLmRrZ1Nlc3Npb24udG9CeXRlcygpO1xuICAgICAgICB0aGlzLmRrZ1Nlc3Npb24gPSB1bmRlZmluZWQ7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBuZXh0Um91bmREZXNlcmlhbGl6ZWRNZXNzYWdlcztcbiAgfVxufVxuIl19
223
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGtnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3Rzcy9lY2RzYS1ka2xzL2RrZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSw4RUFBMEY7QUFDMUYsbUNBQXFHO0FBQ3JHLG1DQUF3QztBQUN4QyxxQ0FBOEM7QUFDOUMseUNBQThDO0FBRTlDLE1BQWEsR0FBRztJQWFkLFlBQVksQ0FBUyxFQUFFLENBQVMsRUFBRSxRQUFnQixFQUFFLFlBQTJCO1FBSnJFLGFBQVEsR0FBYSxnQkFBUSxDQUFDLGFBQWEsQ0FBQztRQUtwRCxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNYLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ1gsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7UUFDekIsSUFBSSxDQUFDLG1CQUFtQixHQUFHLFNBQVMsQ0FBQztRQUNyQyxJQUFJLENBQUMsWUFBWSxHQUFHLFlBQVksQ0FBQztJQUNuQyxDQUFDO0lBRU8sZUFBZTtRQUNyQixJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUNwQixJQUFJLENBQUMsVUFBVSxHQUFHLGlDQUFhLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztTQUNqRTtJQUNILENBQUM7SUFFTywyQkFBMkI7UUFDakMsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFO1lBQ3JCLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxTQUFTLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUU7Z0JBQ3JHLE1BQU0sS0FBSyxDQUFDLHNFQUFzRSxDQUFDLENBQUM7YUFDckY7WUFDRCxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLE1BQU0sS0FBSyxJQUFJ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R0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sRUFBRSxDQUFDO2dCQUNqRCxJQUFJLENBQUMsVUFBVSxHQUFHLFNBQVMsQ0FBQzthQUM3QjtTQUNGO1FBQ0QsT0FBTyw2QkFBNkIsQ0FBQztJQUN2QyxDQUFDO0NBQ0Y7QUF2T0Qsa0JBdU9DIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgS2V5Z2VuU2Vzc2lvbiwgS2V5c2hhcmUsIE1lc3NhZ2UgfSBmcm9tICdAc2lsZW5jZWxhYm9yYXRvcmllcy9ka2xzLXdhc20tbGwtbm9kZSc7XG5pbXBvcnQgeyBEZXNlcmlhbGl6ZWRCcm9hZGNhc3RNZXNzYWdlLCBEZXNlcmlhbGl6ZWRNZXNzYWdlcywgRGtnU3RhdGUsIFJldHJvZml0RGF0YSB9IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IHsgZGVjb2RlLCBlbmNvZGUgfSBmcm9tICdjYm9yLXgnO1xuaW1wb3J0IHsgYmlnSW50VG9CdWZmZXJCRSB9IGZyb20gJy4uLy4uL3V0aWwnO1xuaW1wb3J0IHsgU2VjcDI1NmsxQ3VydmUgfSBmcm9tICcuLi8uLi9jdXJ2ZXMnO1xuXG5leHBvcnQgY2xhc3MgRGtnIHtcbiAgcHJvdGVjdGVkIGRrZ1Nlc3Npb246IEtleWdlblNlc3Npb24gfCB1bmRlZmluZWQ7XG4gIHByb3RlY3RlZCBka2dTZXNzaW9uQnl0ZXM6IFVpbnQ4QXJyYXk7XG4gIHByb3RlY3RlZCBka2dLZXlTaGFyZTogS2V5c2hhcmU7XG4gIHByb3RlY3RlZCBrZXlTaGFyZUJ1ZmY6IEJ1ZmZlcjtcbiAgcHJvdGVjdGVkIG46IG51bWJlcjtcbiAgcHJvdGVjdGVkIHQ6IG51bWJlcjtcbiAgcHJvdGVjdGVkIGNoYWluQ29kZUNvbW1pdG1lbnQ6IFVpbnQ4QXJyYXkgfCB1bmRlZmluZWQ7XG4gIHByb3RlY3RlZCBwYXJ0eUlkeDogbnVtYmVyO1xuICBwcm90ZWN0ZWQgZGtnU3RhdGU6IERrZ1N0YXRlID0gRGtnU3RhdGUuVW5pbml0aWFsaXplZDtcbiAgcHJvdGVjdGVkIGRrbHNLZXlTaGFyZVJldHJvZml0T2JqZWN0OiBLZXlzaGFyZSB8IHVuZGVmaW5lZDtcbiAgcHJvdGVjdGVkIHJldHJvZml0RGF0YTogUmV0cm9maXREYXRhIHwgdW5kZWZpbmVkO1xuXG4gIGNvbnN0cnVjdG9yKG46IG51bWJlciwgdDogbnVtYmVyLCBwYXJ0eUlkeDogbnVtYmVyLCByZXRyb2ZpdERhdGE/OiBSZXRyb2ZpdERhdGEpIHtcbiAgICB0aGlzLm4gPSBuO1xuICAgIHRoaXMudCA9IHQ7XG4gICAgdGhpcy5wYXJ0eUlkeCA9IHBhcnR5SWR4O1xuICAgIHRoaXMuY2hhaW5Db2RlQ29tbWl0bWVudCA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLnJldHJvZml0RGF0YSA9IHJldHJvZml0RGF0YTtcbiAgfVxuXG4gIHByaXZhdGUgX3Jlc3RvcmVTZXNzaW9uKCkge1xuICAgIGlmICghdGhpcy5ka2dTZXNzaW9uKSB7XG4gICAgICB0aGlzLmRrZ1Nlc3Npb24gPSBLZXlnZW5TZXNzaW9uLmZyb21CeXRlcyh0aGlzLmRrZ1Nlc3Npb25CeXRlcyk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfY3JlYXRlREtMc1JldHJvZml0S2V5U2hhcmUoKSB7XG4gICAgaWYgKHRoaXMucmV0cm9maXREYXRhKSB7XG4gICAgICBpZiAoIXRoaXMucmV0cm9maXREYXRhLnhTaGFyZS55IHx8ICF0aGlzLnJldHJvZml0RGF0YS54U2hhcmUuY2hhaW5jb2RlIHx8ICF0aGlzLnJldHJvZml0RGF0YS54U2hhcmUueCkge1xuICAgICAgICB0aHJvdyBFcnJvcigneFNoYXJlIG11c3QgaGF2ZSBhIHB1YmxpYyBrZXksIHByaXZhdGUgc2hhcmUgdmFsdWUsIGFuZCBhIGNoYWluY29kZS4nKTtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLnJldHJvZml0RGF0YS5iaWdTaUxpc3QubGVuZ3RoICE9PSB0aGlzLm4gLSAxKSB7XG4gICAgICAgIHRocm93IEVycm9yKFwiYmlnU2lMaXN0IHNob3VsZCBjb250YWluIHRoZSBvdGhlciBwYXJ0aWVzJyBTaSdzXCIpO1xuICAgICAgfVxuICAgICAgY29uc3QgYmlnU0xpc3Q6IEFycmF5PEFycmF5PG51bWJlcj4+ID0gW107XG4gICAgICBjb25zdCB4aUxpc3Q6IEFycmF5PEFycmF5PG51bWJlcj4+ID0gW107XG4gICAgICBsZXQgaiA9IDA7XG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMubjsgaSsrKSB7XG4gICAgICAgIGlmIChpID09PSB0aGlzLnBhcnR5SWR4KSB7XG4gICAgICAgICAgY29uc3Qgc2VjcDI1NmsxID0gbmV3IFNlY3AyNTZrMUN1cnZlKCk7XG4gICAgICAgICAgYmlnU0xpc3QucHVzaChcbiAgICAgICAgICAgIEFycmF5LmZyb20oYmlnSW50VG9CdWZmZXJCRShzZWNwMjU2azEuYmFzZVBvaW50TXVsdChCaWdJbnQoJzB4JyArIHRoaXMucmV0cm9maXREYXRhLnhTaGFyZS54KSkpKVxuICAgICAgICAgICk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgYmlnU0xpc3QucHVzaChBcnJheS5mcm9tKEJ1ZmZlci5mcm9tKHRoaXMucmV0cm9maXREYXRhLmJpZ1NpTGlzdFtqXSwgJ2hleCcpKSk7XG4gICAgICAgICAgaisrO1xuICAgICAgICB9XG4gICAgICAgIHhpTGlzdC5wdXNoKEFycmF5LmZyb20oYmlnSW50VG9CdWZmZXJCRShCaWdJbnQoaSArIDEpLCAzMikpKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGRrbHNLZXlTaGFyZSA9IHtcbiAgICAgICAgdG90YWxfcGFydGllczogdGhpcy5uLFxuICAgICAgICB0aHJlc2hvbGQ6IHRoaXMudCxcbiAgICAgICAgcmFua19saXN0OiBuZXcgQXJyYXkodGhpcy5uKS5maWxsKDApLFxuICAgICAgICBwYXJ0eV9pZDogdGhpcy5wYXJ0eUlkeCxcbiAgICAgICAgcHVibGljX2tleTogQXJyYXkuZnJvbShCdWZmZXIuZnJvbSh0aGlzLnJldHJvZml0RGF0YS54U2hhcmUueSwgJ2hleCcpKSxcbiAgICAgICAgcm9vdF9jaGFpbl9jb2RlOiBBcnJheS5mcm9tKEJ1ZmZlci5mcm9tKHRoaXMucmV0cm9maXREYXRhLnhTaGFyZS5jaGFpbmNvZGUsICdoZXgnKSksXG4gICAgICAgIGZpbmFsX3Nlc3Npb25faWQ6IEFycmF5KDMyKS5maWxsKDApLFxuICAgICAgICBzZWVkX290X3JlY2VpdmVyczogbmV3IEFycmF5KHRoaXMubiAtIDEpLmZpbGwoQXJyYXkoMzI4MzIpLmZpbGwoMCkpLFxuICAgICAgICBzZWVkX290X3NlbmRlcnM6IG5ldyBBcnJheSh0aGlzLm4gLSAxKS5maWxsKEFycmF5KDMyNzY4KS5maWxsKDApKSxcbiAgICAgICAgc2VudF9zZWVkX2xpc3Q6IFtBcnJheSgzMikuZmlsbCgwKV0sXG4gICAgICAgIHJlY19zZWVkX2xpc3Q6IFtBcnJheSgzMikuZmlsbCgwKV0sXG4gICAgICAgIHNfaTogQXJyYXkuZnJvbShCdWZmZXIuZnJvbSh0aGlzLnJldHJvZml0RGF0YS54U2hhcmUueCwgJ2hleCcpKSxcbiAgICAgICAgYmlnX3NfbGlzdDogYmlnU0xpc3QsXG4gICAgICAgIHhfaV9saXN0OiB0aGlzLnJldHJvZml0RGF0YS54aUxpc3QgPyB0aGlzLnJldHJvZml0RGF0YS54aUxpc3QgOiB4aUxpc3QsXG4gICAgICB9O1xuICAgICAgdGhpcy5ka2xzS2V5U2hhcmVSZXRyb2ZpdE9iamVjdCA9IEtleXNoYXJlLmZyb21CeXRlcyhlbmNvZGUoZGtsc0tleVNoYXJlKSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfZGVzZXJpYWxpemVTdGF0ZSgpIHtcbiAgICBpZiAoIXRoaXMuZGtnU2Vzc2lvbikge1xuICAgICAgdGhyb3cgRXJyb3IoJ1Nlc3Npb24gbm90IGludGlhbGl6ZWQnKTtcbiAgICB9XG4gICAgY29uc3Qgcm91bmQgPSBkZWNvZGUodGhpcy5ka2dTZXNzaW9uLnRvQnl0ZXMoKSkucm91bmQ7XG4gICAgc3dpdGNoIChyb3VuZCkge1xuICAgICAgY2FzZSAnV2FpdE1zZzEnOlxuICAgICAgICB0aGlzLmRrZ1N0YXRlID0gRGtnU3RhdGUuUm91bmQxO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ1dhaXRNc2cyJzpcbiAgICAgICAgdGhpcy5ka2dTdGF0ZSA9IERrZ1N0YXRlLlJvdW5kMjtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdXYWl0TXNnMyc6XG4gICAgICAgIHRoaXMuZGtnU3RhdGUgPSBEa2dTdGF0ZS5Sb3VuZDM7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnV2FpdE1zZzQnOlxuICAgICAgICB0aGlzLmRrZ1N0YXRlID0gRGtnU3RhdGUuUm91bmQ0O1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ0VuZGVkJzpcbiAgICAgICAgdGhpcy5ka2dTdGF0ZSA9IERrZ1N0YXRlLkNvbXBsZXRlO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRoaXMuZGtnU3RhdGUgPSBEa2dTdGF0ZS5JbnZhbGlkU3RhdGU7XG4gICAgICAgIHRocm93IGBJbnZhbGlkIFN0YXRlOiAke3JvdW5kfWA7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgaW5pdERrZygpOiBQcm9taXNlPERlc2VyaWFsaXplZEJyb2FkY2FzdE1lc3NhZ2U+IHtcbiAgICBpZiAodGhpcy50ID4gdGhpcy5uIHx8IHRoaXMucGFydHlJZHggPj0gdGhpcy5uKSB7XG4gICAgICB0aHJvdyAnSW52YWxpZCBwYXJhbWV0ZXJzIGZvciBES0cnO1xuICAgIH1cbiAgICBpZiAodGhpcy5ka2dTdGF0ZSAhPSBEa2dTdGF0ZS5VbmluaXRpYWxpemVkKSB7XG4gICAgICB0aHJvdyAnREtHIHNlc3Npb24gYWxyZWFkeSBpbml0aWFsaXplZCc7XG4gICAgfVxuICAgIGlmICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgY29uc3QgaW5pdERrbHMgPSByZXF1aXJlKCdAc2lsZW5jZWxhYm9yYXRvcmllcy9ka2xzLXdhc20tbGwtd2ViJyk7XG4gICAgICBhd2FpdCBpbml0RGtscy5kZWZhdWx0KCk7XG4gICAgfVxuICAgIHRoaXMuX2NyZWF0ZURLTHNSZXRyb2ZpdEtleVNoYXJlKCk7XG4gICAgaWYgKHRoaXMuZGtsc0tleVNoYXJlUmV0cm9maXRPYmplY3QpIHtcbiAgICAgIHRoaXMuZGtnU2Vzc2lvbiA9IEtleWdlblNlc3Npb24uaW5pdEtleVJvdGF0aW9uKHRoaXMuZGtsc0tleVNoYXJlUmV0cm9maXRPYmplY3QpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmRrZ1Nlc3Npb24gPSBuZXcgS2V5Z2VuU2Vzc2lvbih0aGlzLm4sIHRoaXMudCwgdGhpcy5wYXJ0eUlkeCk7XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICBjb25zdCBwYXlsb2FkID0gdGhpcy5ka2dTZXNzaW9uLmNyZWF0ZUZpcnN0TWVzc2FnZSgpLnBheWxvYWQ7XG4gICAgICB0aGlzLl9kZXNlcmlhbGl6ZVN0YXRlKCk7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBwYXlsb2FkOiBwYXlsb2FkLFxuICAgICAgICBmcm9tOiB0aGlzLnBhcnR5SWR4LFxuICAgICAgfTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aHJvdyBgRXJyb3Igd2hpbGUgY3JlYXRpbmcgdGhlIGZpcnN0IG1lc3NhZ2UgZnJvbSBwYXJ0eSAke3RoaXMucGFydHlJZHh9OiAke2V9YDtcbiAgICB9XG4gIH1cblxuICBnZXRLZXlTaGFyZSgpOiBCdWZmZXIge1xuICAgIGlmICghdGhpcy5rZXlTaGFyZUJ1ZmYpIHtcbiAgICAgIHRocm93IEVycm9yKCdDYW4gbm90IGdldCBrZXkgc2hhcmUsIERLRyBpcyBub3QgY29tcGxldGUgeWV0LicpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5rZXlTaGFyZUJ1ZmY7XG4gIH1cblxuICBnZXRSZWR1Y2VkS2V5U2hhcmUoKTogQnVmZmVyIHtcbiAgICBpZiAoIXRoaXMua2V5U2hhcmVCdWZmKSB7XG4gICAgICB0aHJvdyBFcnJvcignQ2FuIG5vdCBnZXQga2V5IHNoYXJlLCBES0cgaXMgbm90IGNvbXBsZXRlIHlldC4nKTtcbiAgICB9XG4gICAgY29uc3QgZGVjb2RlZEtleXNoYXJlID0gZGVjb2RlKHRoaXMua2V5U2hhcmVCdWZmKTtcbiAgICBjb25zdCByZWR1Y2VkS2V5U2hhcmUgPSB7XG4gICAgICBiaWdTTGlzdDogZGVjb2RlZEtleXNoYXJlLmJpZ19zX2xpc3QsXG4gICAgICB4TGlzdDogZGVjb2RlZEtleXNoYXJlLnhfaV9saXN0LFxuICAgICAgcm9vdENoYWluQ29kZTogZGVjb2RlZEtleXNoYXJlLnJvb3RfY2hhaW5fY29kZSxcbiAgICAgIHBydjogZGVjb2RlZEtleXNoYXJlLnNfaSxcbiAgICB9O1xuICAgIGNvbnN0IGVuY29kZWRLZXlTaGFyZSA9IGVuY29kZShyZWR1Y2VkS2V5U2hhcmUpO1xuICAgIHJldHVybiBlbmNvZGVkS2V5U2hhcmU7XG4gIH1cblxuICBoYW5kbGVJbmNvbWluZ01lc3NhZ2VzKG1lc3NhZ2VzRm9ySXRoUm91bmQ6IERlc2VyaWFsaXplZE1lc3NhZ2VzKTogRGVzZXJpYWxpemVkTWVzc2FnZXMge1xuICAgIGxldCBuZXh0Um91bmRNZXNzYWdlczogTWVzc2FnZVtdID0gW107XG4gICAgbGV0IG5leHRSb3VuZERlc2VyaWFsaXplZE1lc3NhZ2VzOiBEZXNlcmlhbGl6ZWRNZXNzYWdlcyA9IHsgYnJvYWRjYXN0TWVzc2FnZXM6IFtdLCBwMnBNZXNzYWdlczogW10gfTtcbiAgICB0aGlzLl9yZXN0b3JlU2Vzc2lvbigpO1xuICAgIGlmICghdGhpcy5ka2dTZXNzaW9uKSB7XG4gICAgICB0aHJvdyBFcnJvcignU2Vzc2lvbiBub3QgaW5pdGlhbGl6ZWQnKTtcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgIGlmICh0aGlzLmRrZ1N0YXRlID09PSBEa2dTdGF0ZS5Sb3VuZDMpIHtcbiAgICAgICAgY29uc3QgY29tbWl0bWVudHNVbnNvcnRlZCA9IG1lc3NhZ2VzRm9ySXRoUm91bmQucDJwTWVzc2FnZXNcbiAgICAgICAgICAubWFwKChtKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4geyBmcm9tOiBtLmZyb20sIGNvbW1pdG1lbnQ6IG0uY29tbWl0bWVudCB9O1xuICAgICAgICAgIH0pXG4gICAgICAgICAgLmNvbmNhdChbeyBmcm9tOiB0aGlzLnBhcnR5SWR4LCBjb21taXRtZW50OiB0aGlzLmNoYWluQ29kZUNvbW1pdG1lbnQgfV0pO1xuICAgICAgICBjb25zdCBjb21taXRtZW50c1NvcnRlZCA9IGNvbW1pdG1lbnRzVW5zb3J0ZWRcbiAgICAgICAgICAuc29ydCgoYSwgYikgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIGEuZnJvbSAtIGIuZnJvbTtcbiAgICAgICAgICB9KVxuICAgICAgICAgIC5tYXAoKGMpID0+IGMuY29tbWl0bWVudCk7XG4gICAgICAgIG5leHRSb3VuZE1lc3NhZ2VzID0gdGhpcy5ka2dTZXNzaW9uLmhhbmRsZU1lc3NhZ2VzKFxuICAgICAgICAgIG1lc3NhZ2VzRm9ySXRoUm91bmQuYnJvYWRjYXN0TWVzc2FnZXNcbiAgICAgICAgICAgIC5tYXAoKG0pID0+IG5ldyBNZXNzYWdlKG0ucGF5bG9hZCwgbS5mcm9tLCB1bmRlZmluZWQpKVxuICAgICAgICAgICAgLmNvbmNhdChtZXNzYWdlc0Zvckl0aFJvdW5kLnAycE1lc3NhZ2VzLm1hcCgobSkgPT4gbmV3IE1lc3NhZ2UobS5wYXlsb2FkLCBtLmZyb20sIG0udG8pKSksXG4gICAgICAgICAgY29tbWl0bWVudHNTb3J0ZWRcbiAgICAgICAgKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG5leHRSb3VuZE1lc3NhZ2VzID0gdGhpcy5ka2dTZXNzaW9uLmhhbmRsZU1lc3NhZ2VzKFxuICAgICAgICAgIG1lc3NhZ2VzRm9ySXRoUm91bmQuYnJvYWRjYXN0TWVzc2FnZXNcbiAgICAgICAgICAgIC5tYXAoKG0pID0+IG5ldyBNZXNzYWdlKG0ucGF5bG9hZCwgbS5mcm9tLCB1bmRlZmluZWQpKVxuICAgICAgICAgICAgLmNvbmNhdChtZXNzYWdlc0Zvckl0aFJvdW5kLnAycE1lc3NhZ2VzLm1hcCgobSkgPT4gbmV3IE1lc3NhZ2UobS5wYXlsb2FkLCBtLmZyb20sIG0udG8pKSksXG4gICAgICAgICAgdW5kZWZpbmVkXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5ka2dTdGF0ZSA9PT0gRGtnU3RhdGUuUm91bmQ0KSB7XG4gICAgICAgIHRoaXMuZGtnS2V5U2hhcmUgPSB0aGlzLmRrZ1Nlc3Npb24ua2V5c2hhcmUoKTtcbiAgICAgICAgaWYgKHRoaXMuZGtsc0tleVNoYXJlUmV0cm9maXRPYmplY3QpIHtcbiAgICAgICAgICB0aGlzLmRrZ0tleVNoYXJlLmZpbmlzaEtleVJvdGF0aW9uKHRoaXMuZGtsc0tleVNoYXJlUmV0cm9maXRPYmplY3QpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMua2V5U2hhcmVCdWZmID0gQnVmZmVyLmZyb20odGhpcy5ka2dLZXlTaGFyZS50b0J5dGVzKCkpO1xuICAgICAgICB0aGlzLmRrZ0tleVNoYXJlLmZyZWUoKTtcbiAgICAgICAgdGhpcy5ka2dTdGF0ZSA9IERrZ1N0YXRlLkNvbXBsZXRlO1xuICAgICAgICByZXR1cm4geyBicm9hZGNhc3RNZXNzYWdlczogW10sIHAycE1lc3NhZ2VzOiBbXSB9O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gVXBkYXRlIHJvdW5kIGRhdGEuXG4gICAgICAgIHRoaXMuX2Rlc2VyaWFsaXplU3RhdGUoKTtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLmRrZ1N0YXRlID09PSBEa2dTdGF0ZS5Sb3VuZDIpIHtcbiAgICAgICAgdGhpcy5jaGFpbkNvZGVDb21taXRtZW50ID0gdGhpcy5ka2dTZXNzaW9uLmNhbGN1bGF0ZUNoYWluQ29kZUNvbW1pdG1lbnQoKTtcbiAgICAgIH1cbiAgICAgIG5leHRSb3VuZERlc2VyaWFsaXplZE1lc3NhZ2VzID0ge1xuICAgICAgICBwMnBNZXNzYWdlczogbmV4dFJvdW5kTWVzc2FnZXNcbiAgICAgICAgICAuZmlsdGVyKChtKSA9PiBtLnRvX2lkICE9PSB1bmRlZmluZWQpXG4gICAgICAgICAgLm1hcCgobSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgcDJwUmV0dXJuID0ge1xuICAgICAgICAgICAgICBwYXlsb2FkOiBtLnBheWxvYWQsXG4gICAgICAgICAgICAgIGZyb206IG0uZnJvbV9pZCxcbiAgICAgICAgICAgICAgdG86IG0udG9faWQhLFxuICAgICAgICAgICAgICBjb21taXRtZW50OiB0aGlzLmNoYWluQ29kZUNvbW1pdG1lbnQsXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgcmV0dXJuIHAycFJldHVybjtcbiAgICAgICAgICB9KSxcbiAgICAgICAgYnJvYWRjYXN0TWVzc2FnZXM6IG5leHRSb3VuZE1lc3NhZ2VzXG4gICAgICAgICAgLmZpbHRlcigobSkgPT4gbS50b19pZCA9PT0gdW5kZWZpbmVkKVxuICAgICAgICAgIC5tYXAoKG0pID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGJyb2FkY2FzdFJldHVybiA9IHtcbiAgICAgICAgICAgICAgcGF5bG9hZDogbS5wYXlsb2FkLFxuICAgICAgICAgICAgICBmcm9tOiBtLmZyb21faWQsXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgcmV0dXJuIGJyb2FkY2FzdFJldHVybjtcbiAgICAgICAgICB9KSxcbiAgICAgIH07XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhyb3cgYEVycm9yIHdoaWxlIGNyZWF0aW5nIG1lc3NhZ2VzIGZyb20gcGFydHkgJHt0aGlzLnBhcnR5SWR4fSwgcm91bmQgJHt0aGlzLmRrZ1N0YXRlfTogJHtlfWA7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIG5leHRSb3VuZE1lc3NhZ2VzLmZvckVhY2goKG0pID0+IG0uZnJlZSgpKTtcbiAgICAgIC8vIFNlc3Npb24gaXMgZnJlZWQgd2hlbiBrZXlzaGFyZSBpcyBjYWxsZWQuXG4gICAgICBpZiAodGhpcy5ka2dTdGF0ZSAhPT0gRGtnU3RhdGUuQ29tcGxldGUpIHtcbiAgICAgICAgdGhpcy5ka2dTZXNzaW9uQnl0ZXMgPSB0aGlzLmRrZ1Nlc3Npb24udG9CeXRlcygpO1xuICAgICAgICB0aGlzLmRrZ1Nlc3Npb24gPSB1bmRlZmluZWQ7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBuZXh0Um91bmREZXNlcmlhbGl6ZWRNZXNzYWdlcztcbiAgfVxufVxuIl19
@@ -1,11 +1,11 @@
1
1
  /// <reference types="node" />
2
- import { SignSession, Keyshare } from '@silencelaboratories/dkls-wasm-ll-node';
2
+ import { SignSession } from '@silencelaboratories/dkls-wasm-ll-node';
3
3
  import { DeserializedBroadcastMessage, DeserializedDklsSignature, DeserializedMessages, DsgState } from './types';
4
4
  export declare class Dsg {
5
5
  protected dsgSession: SignSession | undefined;
6
6
  protected dsgSessionBytes: Uint8Array;
7
7
  private _signature;
8
- protected keyShare: Keyshare;
8
+ protected keyShareBytes: Buffer;
9
9
  protected messageHash: Buffer;
10
10
  protected derivationPath: string;
11
11
  protected partyIdx: number;
@@ -1 +1 @@
1
- {"version":3,"file":"dsg.d.ts","sourceRoot":"","sources":["../../../../src/tss/ecdsa-dkls/dsg.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAW,MAAM,wCAAwC,CAAC;AACxF,OAAO,EAAE,4BAA4B,EAAE,yBAAyB,EAAE,oBAAoB,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAGlH,qBAAa,GAAG;IACd,SAAS,CAAC,UAAU,EAAE,WAAW,GAAG,SAAS,CAAC;IAC9C,SAAS,CAAC,eAAe,EAAE,UAAU,CAAC;IACtC,OAAO,CAAC,UAAU,CAAwC;IAC1D,SAAS,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC7B,SAAS,CAAC,WAAW,EAAE,MAAM,CAAC;IAC9B,SAAS,CAAC,cAAc,EAAE,MAAM,CAAC;IACjC,SAAS,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC3B,SAAS,CAAC,QAAQ,EAAE,QAAQ,CAA0B;gBAE1C,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM;IAU3F,OAAO,CAAC,eAAe;IAMvB,OAAO,CAAC,iBAAiB;IAwBnB,IAAI,IAAI,OAAO,CAAC,4BAA4B,CAAC;IAqBnD,IAAI,SAAS,IAAI,yBAAyB,CAKzC;IAED;;OAEG;IACH,UAAU,IAAI,IAAI;IASlB;;;;;OAKG;IACH,sBAAsB,CAAC,mBAAmB,EAAE,oBAAoB,GAAG,oBAAoB;CA8ExF"}
1
+ {"version":3,"file":"dsg.d.ts","sourceRoot":"","sources":["../../../../src/tss/ecdsa-dkls/dsg.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,WAAW,EAAqB,MAAM,wCAAwC,CAAC;AACxF,OAAO,EAAE,4BAA4B,EAAE,yBAAyB,EAAE,oBAAoB,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAGlH,qBAAa,GAAG;IACd,SAAS,CAAC,UAAU,EAAE,WAAW,GAAG,SAAS,CAAC;IAC9C,SAAS,CAAC,eAAe,EAAE,UAAU,CAAC;IACtC,OAAO,CAAC,UAAU,CAAwC;IAC1D,SAAS,CAAC,aAAa,EAAE,MAAM,CAAC;IAChC,SAAS,CAAC,WAAW,EAAE,MAAM,CAAC;IAC9B,SAAS,CAAC,cAAc,EAAE,MAAM,CAAC;IACjC,SAAS,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC3B,SAAS,CAAC,QAAQ,EAAE,QAAQ,CAA0B;gBAE1C,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM;IAO3F,OAAO,CAAC,eAAe;IAMvB,OAAO,CAAC,iBAAiB;IAwBnB,IAAI,IAAI,OAAO,CAAC,4BAA4B,CAAC;IAyBnD,IAAI,SAAS,IAAI,yBAAyB,CAKzC;IAED;;OAEG;IACH,UAAU,IAAI,IAAI;IASlB;;;;;OAKG;IACH,sBAAsB,CAAC,mBAAmB,EAAE,oBAAoB,GAAG,oBAAoB;CA8ExF"}
@@ -3,15 +3,12 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Dsg = void 0;
4
4
  const dkls_wasm_ll_node_1 = require("@silencelaboratories/dkls-wasm-ll-node");
5
5
  const types_1 = require("./types");
6
- const cbor_1 = require("cbor");
6
+ const cbor_x_1 = require("cbor-x");
7
7
  class Dsg {
8
8
  constructor(keyShare, partyIdx, derivationPath, messageHash) {
9
9
  this.dsgState = types_1.DsgState.Uninitialized;
10
- this.keyShare = dkls_wasm_ll_node_1.Keyshare.fromBytes(keyShare);
11
10
  this.partyIdx = partyIdx;
12
- if (this.keyShare.partyId !== partyIdx) {
13
- throw Error(`Party index: ${partyIdx} does not match key share partyId: ${this.keyShare.partyId} `);
14
- }
11
+ this.keyShareBytes = keyShare;
15
12
  this.derivationPath = derivationPath;
16
13
  this.messageHash = messageHash;
17
14
  }
@@ -24,7 +21,7 @@ class Dsg {
24
21
  if (!this.dsgSession) {
25
22
  throw Error('Session not intialized');
26
23
  }
27
- const round = (0, cbor_1.decode)(this.dsgSession.toBytes()).round;
24
+ const round = (0, cbor_x_1.decode)(this.dsgSession.toBytes()).round;
28
25
  switch (round) {
29
26
  case 'WaitMsg1':
30
27
  this.dsgState = types_1.DsgState.Round1;
@@ -49,9 +46,13 @@ class Dsg {
49
46
  }
50
47
  if (typeof window !== 'undefined') {
51
48
  const initDkls = require('@silencelaboratories/dkls-wasm-ll-web');
52
- await initDkls();
49
+ await initDkls.default();
50
+ }
51
+ const keyShare = dkls_wasm_ll_node_1.Keyshare.fromBytes(this.keyShareBytes);
52
+ if (keyShare.partyId !== this.partyIdx) {
53
+ throw Error(`Party index: ${this.partyIdx} does not match key share partyId: ${keyShare.partyId} `);
53
54
  }
54
- this.dsgSession = new dkls_wasm_ll_node_1.SignSession(this.keyShare, this.derivationPath);
55
+ this.dsgSession = new dkls_wasm_ll_node_1.SignSession(keyShare, this.derivationPath);
55
56
  try {
56
57
  const payload = this.dsgSession.createFirstMessage().payload;
57
58
  this._deserializeState();
@@ -117,7 +118,7 @@ class Dsg {
117
118
  {
118
119
  payload: nextRoundMessages[0].payload,
119
120
  from: nextRoundMessages[0].from_id,
120
- signatureR: (0, cbor_1.decode)(this.dsgSession.toBytes()).round.WaitMsg4.r,
121
+ signatureR: (0, cbor_x_1.decode)(this.dsgSession.toBytes()).round.WaitMsg4.r,
121
122
  },
122
123
  ],
123
124
  p2pMessages: [],
@@ -167,4 +168,4 @@ class Dsg {
167
168
  }
168
169
  }
169
170
  exports.Dsg = Dsg;
170
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHNnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3Rzcy9lY2RzYS1ka2xzL2RzZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSw4RUFBd0Y7QUFDeEYsbUNBQWtIO0FBQ2xILCtCQUE4QjtBQUU5QixNQUFhLEdBQUc7SUFVZCxZQUFZLFFBQWdCLEVBQUUsUUFBZ0IsRUFBRSxjQUFzQixFQUFFLFdBQW1CO1FBRmpGLGFBQVEsR0FBYSxnQkFBUSxDQUFDLGFBQWEsQ0FBQztRQUdwRCxJQUFJLENBQUMsUUFBUSxHQUFHLDRCQUFRLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzdDLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO1FBQ3pCLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLEtBQUssUUFBUSxFQUFFO1lBQ3RDLE1BQU0sS0FBSyxDQUFDLGdCQUFnQixRQUFRLHNDQUFzQyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sR0FBRyxDQUFDLENBQUM7U0FDckc7UUFDRCxJQUFJLENBQUMsY0FBYyxHQUFHLGNBQWMsQ0FBQztRQUNyQyxJQUFJLENBQUMsV0FBVyxHQUFHLFdBQVcsQ0FBQztJQUNqQyxDQUFDO0lBRU8sZUFBZTtRQUNyQixJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUNwQixJQUFJLENBQUMsVUFBVSxHQUFHLCtCQUFXLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztTQUMvRDtJQUNILENBQUM7SUFFTyxpQkFBaUI7UUFDdkIsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDcEIsTUFBTSxLQUFLLENBQUMsd0JBQXdCLENBQUMsQ0FBQztTQUN2QztRQUNELE1BQU0sS0FBSyxHQUFHLElBQUEsYUFBTSxFQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUM7UUFDdEQsUUFB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QyxDQUFDO2FBQ0wsQ0FBQztTQUNIO1FBQUMsT0FBTyxDQUFDLEVBQUU7WUFDVixNQUFNLDRDQUE0QyxJQUFJLENBQUMsUUFBUSxXQUFXLElBQUksQ0FBQyxRQUFRLEtBQUssQ0FBQyxFQUFFLENBQUM7U0FDakc7Z0JBQVM7WUFDUixpQkFBaUIsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1lBQzNDLDJDQUEyQztZQUMzQyxJQUFJLElBQUksQ0FBQyxRQUFRLEtBQUssZ0JBQVEsQ0FBQyxRQUFRLEVBQUU7Z0JBQ3ZDLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLEVBQUUsQ0FBQztnQkFDakQsSUFBSSxDQUFDLFVBQVUsR0FBRyxTQUFTLENBQUM7YUFDN0I7U0FDRjtRQUNELE9BQU8sNkJBQTZCLENBQUM7SUFDdkMsQ0FBQztDQUNGO0FBOUtELGtCQThLQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNpZ25TZXNzaW9uLCBLZXlzaGFyZSwgTWVzc2FnZSB9IGZyb20gJ0BzaWxlbmNlbGFib3JhdG9yaWVzL2RrbHMtd2FzbS1sbC1ub2RlJztcbmltcG9ydCB7IERlc2VyaWFsaXplZEJyb2FkY2FzdE1lc3NhZ2UsIERlc2VyaWFsaXplZERrbHNTaWduYXR1cmUsIERlc2VyaWFsaXplZE1lc3NhZ2VzLCBEc2dTdGF0ZSB9IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IHsgZGVjb2RlIH0gZnJvbSAnY2Jvcic7XG5cbmV4cG9ydCBjbGFzcyBEc2cge1xuICBwcm90ZWN0ZWQgZHNnU2Vzc2lvbjogU2lnblNlc3Npb24gfCB1bmRlZmluZWQ7XG4gIHByb3RlY3RlZCBkc2dTZXNzaW9uQnl0ZXM6IFVpbnQ4QXJyYXk7XG4gIHByaXZhdGUgX3NpZ25hdHVyZTogRGVzZXJpYWxpemVkRGtsc1NpZ25hdHVyZSB8IHVuZGVmaW5lZDtcbiAgcHJvdGVjdGVkIGtleVNoYXJlOiBLZXlzaGFyZTtcbiAgcHJvdGVjdGVkIG1lc3NhZ2VIYXNoOiBCdWZmZXI7XG4gIHByb3RlY3RlZCBkZXJpdmF0aW9uUGF0aDogc3RyaW5nO1xuICBwcm90ZWN0ZWQgcGFydHlJZHg6IG51bWJlcjtcbiAgcHJvdGVjdGVkIGRzZ1N0YXRlOiBEc2dTdGF0ZSA9IERzZ1N0YXRlLlVuaW5pdGlhbGl6ZWQ7XG5cbiAgY29uc3RydWN0b3Ioa2V5U2hhcmU6IEJ1ZmZlciwgcGFydHlJZHg6IG51bWJlciwgZGVyaXZhdGlvblBhdGg6IHN0cmluZywgbWVzc2FnZUhhc2g6IEJ1ZmZlcikge1xuICAgIHRoaXMua2V5U2hhcmUgPSBLZXlzaGFyZS5mcm9tQnl0ZXMoa2V5U2hhcmUpO1xuICAgIHRoaXMucGFydHlJZHggPSBwYXJ0eUlkeDtcbiAgICBpZiAodGhpcy5rZXlTaGFyZS5wYXJ0eUlkICE9PSBwYXJ0eUlkeCkge1xuICAgICAgdGhyb3cgRXJyb3IoYFBhcnR5IGluZGV4OiAke3BhcnR5SWR4fSBkb2VzIG5vdCBtYXRjaCBrZXkgc2hhcmUgcGFydHlJZDogJHt0aGlzLmtleVNoYXJlLnBhcnR5SWR9IGApO1xuICAgIH1cbiAgICB0aGlzLmRlcml2YXRpb25QYXRoID0gZGVyaXZhdGlvblBhdGg7XG4gICAgdGhpcy5tZXNzYWdlSGFzaCA9IG1lc3NhZ2VIYXNoO1xuICB9XG5cbiAgcHJpdmF0ZSBfcmVzdG9yZVNlc3Npb24oKSB7XG4gICAgaWYgKCF0aGlzLmRzZ1Nlc3Npb24pIHtcbiAgICAgIHRoaXMuZHNnU2Vzc2lvbiA9IFNpZ25TZXNzaW9uLmZyb21CeXRlcyh0aGlzLmRzZ1Nlc3Npb25CeXRlcyk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfZGVzZXJpYWxpemVTdGF0ZSgpIHtcbiAgICBpZiAoIXRoaXMuZHNnU2Vzc2lvbikge1xuICAgICAgdGhyb3cgRXJyb3IoJ1Nlc3Npb24gbm90IGludGlhbGl6ZWQnKTtcbiAgICB9XG4gICAgY29uc3Qgcm91bmQgPSBkZWNvZGUodGhpcy5kc2dTZXNzaW9uLnRvQnl0ZXMoKSkucm91bmQ7XG4gICAgc3dpdGNoIChyb3VuZCkge1xuICAgICAgY2FzZSAnV2FpdE1zZzEnOlxuICAgICAgICB0aGlzLmRzZ1N0YXRlID0gRHNnU3RhdGUuUm91bmQxO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ1dhaXRNc2cyJzpcbiAgICAgICAgdGhpcy5kc2dTdGF0ZSA9IERzZ1N0YXRlLlJvdW5kMjtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdXYWl0TXNnMyc6XG4gICAgICAgIHRoaXMuZHNnU3RhdGUgPSBEc2dTdGF0ZS5Sb3VuZDM7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnRW5kZWQnOlxuICAgICAgICB0aGlzLmRzZ1N0YXRlID0gRHNnU3RhdGUuQ29tcGxldGU7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhpcy5kc2dTdGF0ZSA9IERzZ1N0YXRlLkludmFsaWRTdGF0ZTtcbiAgICAgICAgdGhyb3cgYEludmFsaWQgU3RhdGU6ICR7cm91bmR9YDtcbiAgICB9XG4gIH1cblxuICBhc3luYyBpbml0KCk6IFByb21pc2U8RGVzZXJpYWxpemVkQnJvYWRjYXN0TWVzc2FnZT4ge1xuICAgIGlmICh0aGlzLmRzZ1N0YXRlICE9PSBEc2dTdGF0ZS5VbmluaXRpYWxpemVkKSB7XG4gICAgICB0aHJvdyAnRFNHIHNlc3Npb24gYWxyZWFkeSBpbml0aWFsaXplZCc7XG4gICAgfVxuICAgIGlmICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgY29uc3QgaW5pdERrbHMgPSByZXF1aXJlKCdAc2lsZW5jZWxhYm9yYXRvcmllcy9ka2xzLXdhc20tbGwtd2ViJyk7XG4gICAgICBhd2FpdCBpbml0RGtscygpO1xuICAgIH1cbiAgICB0aGlzLmRzZ1Nlc3Npb24gPSBuZXcgU2lnblNlc3Npb24odGhpcy5rZXlTaGFyZSwgdGhpcy5kZXJpdmF0aW9uUGF0aCk7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHBheWxvYWQgPSB0aGlzLmRzZ1Nlc3Npb24uY3JlYXRlRmlyc3RNZXNzYWdlKCkucGF5bG9hZDtcbiAgICAgIHRoaXMuX2Rlc2VyaWFsaXplU3RhdGUoKTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHBheWxvYWQ6IHBheWxvYWQsXG4gICAgICAgIGZyb206IHRoaXMucGFydHlJZHgsXG4gICAgICB9O1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRocm93IGBFcnJvciB3aGlsZSBjcmVhdGluZyB0aGUgZmlyc3QgbWVzc2FnZSBmcm9tIHBhcnR5ICR7dGhpcy5wYXJ0eUlkeH06ICR7ZX1gO1xuICAgIH1cbiAgfVxuXG4gIGdldCBzaWduYXR1cmUoKTogRGVzZXJpYWxpemVkRGtsc1NpZ25hdHVyZSB7XG4gICAgaWYgKCF0aGlzLl9zaWduYXR1cmUpIHtcbiAgICAgIHRocm93IEVycm9yKCdDYW4gbm90IHJlcXVlc3Qgc2lnbmF0dXJlLiBTaWduYXR1cmUgbm90IHByb2R1Y2VkIHlldC4nKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX3NpZ25hdHVyZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFbmRzIHRoZSBEU0cgc2Vzc2lvbiBieSBmcmVlaW5nIGFueSBoZWFwIGFsbG9jYXRpb25zIGZyb20gd2FzbS4gTm90ZSB0aGF0IHRoZSBzZXNzaW9uIGlzIGZyZWVkIGlmIGEgc2lnbmF0dXJlIGlzIHByb2R1Y2VkLlxuICAgKi9cbiAgZW5kU2Vzc2lvbigpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5zaWduYXR1cmUpIHtcbiAgICAgIG5ldyBFcnJvcignU2Vzc2lvbiBhbHJlYWR5IGVuZGVkIGJlY2F1c2UgY29tYmluZWQgc2lnbmF0dXJlIHdhcyBwcm9kdWNlZC4nKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuZHNnU2Vzc2lvbikge1xuICAgICAgdGhpcy5kc2dTZXNzaW9uLmZyZWUoKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUHJvY2Nlc3NlcyBpbmNvbWluZyBtZXNzYWdlcyB0byB0aGlzIHBhcnR5IGluIHRoZSBES0xzIERTRyBwcm90b2NvbCBhbmRcbiAgICogcHJvZHVjZXMgbWVzc2FnZXMgZnJvbSB0aGlzIHBhcnR5IHRvIG90aGVyIHBhcnRpZXMgZm9yIHRoZSBuZXh0IHJvdW5kLlxuICAgKiBAcGFyYW0gbWVzc2FnZXNGb3JJdGhSb3VuZCAtIG1lc3NhZ2VzIHRvIHByb2Nlc3MgdGhlIGN1cnJlbnQgcm91bmRcbiAgICogQHJldHVybnMge0Rlc2VyaWFsaXplZE1lc3NhZ2VzfSAtIG1lc3NhZ2VzIHRvIHNlbmQgdG8gb3RoZXIgcGFydGllcyBmb3IgdGhlIG5leHQgcm91bmRcbiAgICovXG4gIGhhbmRsZUluY29taW5nTWVzc2FnZXMobWVzc2FnZXNGb3JJdGhSb3VuZDogRGVzZXJpYWxpemVkTWVzc2FnZXMpOiBEZXNlcmlhbGl6ZWRNZXNzYWdlcyB7XG4gICAgbGV0IG5leHRSb3VuZE1lc3NhZ2VzOiBNZXNzYWdlW10gPSBbXTtcbiAgICBsZXQgbmV4dFJvdW5kRGVzZXJpYWxpemVkTWVzc2FnZXM6IERlc2VyaWFsaXplZE1lc3NhZ2VzID0geyBicm9hZGNhc3RNZXNzYWdlczogW10sIHAycE1lc3NhZ2VzOiBbXSB9O1xuICAgIHRoaXMuX3Jlc3RvcmVTZXNzaW9uKCk7XG4gICAgaWYgKCF0aGlzLmRzZ1Nlc3Npb24pIHtcbiAgICAgIHRocm93IEVycm9yKCdTZXNzaW9uIG5vdCBpbml0aWFsaXplZCcpO1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgaWYgKHRoaXMuZHNnU3RhdGUgPT09IERzZ1N0YXRlLlJvdW5kNCkge1xuICAgICAgICB0aGlzLmRzZ1N0YXRlID0gRHNnU3RhdGUuQ29tcGxldGU7XG4gICAgICAgIGNvbnN0IGNvbWJpbmVSZXN1bHQgPSB0aGlzLmRzZ1Nlc3Npb24uY29tYmluZShcbiAgICAgICAgICBtZXNzYWdlc0Zvckl0aFJvdW5kLmJyb2FkY2FzdE1lc3NhZ2VzLm1hcCgobSkgPT4gbmV3IE1lc3NhZ2UobS5wYXlsb2FkLCBtLmZyb20sIHVuZGVmaW5lZCkpXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuX3NpZ25hdHVyZSA9IHtcbiAgICAgICAgICBSOiBjb21iaW5lUmVzdWx0WzBdLFxuICAgICAgICAgIFM6IGNvbWJpbmVSZXN1bHRbMV0sXG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiB7IGJyb2FkY2FzdE1lc3NhZ2VzOiBbXSwgcDJwTWVzc2FnZXM6IFtdIH07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBuZXh0Um91bmRNZXNzYWdlcyA9IHRoaXMuZHNnU2Vzc2lvbi5oYW5kbGVNZXNzYWdlcyhcbiAgICAgICAgICBtZXNzYWdlc0Zvckl0aFJvdW5kLmJyb2FkY2FzdE1lc3NhZ2VzXG4gICAgICAgICAgICAubWFwKChtKSA9PiBuZXcgTWVzc2FnZShtLnBheWxvYWQsIG0uZnJvbSwgdW5kZWZpbmVkKSlcbiAgICAgICAgICAgIC5jb25jYXQobWVzc2FnZXNGb3JJdGhSb3VuZC5wMnBNZXNzYWdlcy5tYXAoKG0pID0+IG5ldyBNZXNzYWdlKG0ucGF5bG9hZCwgbS5mcm9tLCBtLnRvKSkpXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5kc2dTdGF0ZSA9PT0gRHNnU3RhdGUuUm91bmQzKSB7XG4gICAgICAgIG5leHRSb3VuZE1lc3NhZ2VzID0gW3RoaXMuZHNnU2Vzc2lvbi5sYXN0TWVzc2FnZSh0aGlzLm1lc3NhZ2VIYXNoKV07XG4gICAgICAgIHRoaXMuZHNnU3RhdGUgPSBEc2dTdGF0ZS5Sb3VuZDQ7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgYnJvYWRjYXN0TWVzc2FnZXM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgcGF5bG9hZDogbmV4dFJvdW5kTWVzc2FnZXNbMF0ucGF5bG9hZCxcbiAgICAgICAgICAgICAgZnJvbTogbmV4dFJvdW5kTWVzc2FnZXNbMF0uZnJvbV9pZCxcbiAgICAgICAgICAgICAgc2lnbmF0dXJlUjogZGVjb2RlKHRoaXMuZHNnU2Vzc2lvbi50b0J5dGVzKCkpLnJvdW5kLldhaXRNc2c0LnIsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIF0sXG4gICAgICAgICAgcDJwTWVzc2FnZXM6IFtdLFxuICAgICAgICB9O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gVXBkYXRlIHJvdW5kIGRhdGEuXG4gICAgICAgIHRoaXMuX2Rlc2VyaWFsaXplU3RhdGUoKTtcbiAgICAgIH1cbiAgICAgIG5leHRSb3VuZERlc2VyaWFsaXplZE1lc3NhZ2VzID0ge1xuICAgICAgICBwMnBNZXNzYWdlczogbmV4dFJvdW5kTWVzc2FnZXNcbiAgICAgICAgICAuZmlsdGVyKChtKSA9PiBtLnRvX2lkICE9PSB1bmRlZmluZWQpXG4gICAgICAgICAgLm1hcCgobSkgPT4ge1xuICAgICAgICAgICAgaWYgKG0udG9faWQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICB0aHJvdyBFcnJvcignSW52YWxpZCBQMlAgbWVzc2FnZSwgbWlzc2luZyB0b19pZC4nKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IHAycFJldHVybiA9IHtcbiAgICAgICAgICAgICAgcGF5bG9hZDogbS5wYXlsb2FkLFxuICAgICAgICAgICAgICBmcm9tOiBtLmZyb21faWQsXG4gICAgICAgICAgICAgIHRvOiBtLnRvX2lkLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHJldHVybiBwMnBSZXR1cm47XG4gICAgICAgICAgfSksXG4gICAgICAgIGJyb2FkY2FzdE1lc3NhZ2VzOiBuZXh0Um91bmRNZXNzYWdlc1xuICAgICAgICAgIC5maWx0ZXIoKG0pID0+IG0udG9faWQgPT09IHVuZGVmaW5lZClcbiAgICAgICAgICAubWFwKChtKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBicm9hZGNhc3RSZXR1cm4gPSB7XG4gICAgICAgICAgICAgIHBheWxvYWQ6IG0ucGF5bG9hZCxcbiAgICAgICAgICAgICAgZnJvbTogbS5mcm9tX2lkLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHJldHVybiBicm9hZGNhc3RSZXR1cm47XG4gICAgICAgICAgfSksXG4gICAgICB9O1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRocm93IGBFcnJvciB3aGlsZSBjcmVhdGluZyBtZXNzYWdlcyBmcm9tIHBhcnR5ICR7dGhpcy5wYXJ0eUlkeH0sIHJvdW5kICR7dGhpcy5kc2dTdGF0ZX06ICR7ZX1gO1xuICAgIH0gZmluYWxseSB7XG4gICAgICBuZXh0Um91bmRNZXNzYWdlcy5mb3JFYWNoKChtKSA9PiBtLmZyZWUoKSk7XG4gICAgICAvLyBTZXNzaW9uIGlzIGZyZWVkIHdoZW4gY29tYmluZSBpcyBjYWxsZWQuXG4gICAgICBpZiAodGhpcy5kc2dTdGF0ZSAhPT0gRHNnU3RhdGUuQ29tcGxldGUpIHtcbiAgICAgICAgdGhpcy5kc2dTZXNzaW9uQnl0ZXMgPSB0aGlzLmRzZ1Nlc3Npb24udG9CeXRlcygpO1xuICAgICAgICB0aGlzLmRzZ1Nlc3Npb24gPSB1bmRlZmluZWQ7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBuZXh0Um91bmREZXNlcmlhbGl6ZWRNZXNzYWdlcztcbiAgfVxufVxuIl19
171
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHNnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3Rzcy9lY2RzYS1ka2xzL2RzZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSw4RUFBd0Y7QUFDeEYsbUNBQWtIO0FBQ2xILG1DQUFnQztBQUVoQyxNQUFhLEdBQUc7SUFVZCxZQUFZLFFBQWdCLEVBQUUsUUFBZ0IsRUFBRSxjQUFzQixFQUFFLFdBQW1CO1FBRmpGLGFBQVEsR0FBYSxnQkFBUSxDQUFDLGFBQWEsQ0FBQztRQUdwRCxJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztRQUN6QixJQUFJLENBQUMsYUFBYSxHQUFHLFFBQVEsQ0FBQztRQUM5QixJQUFJLENBQUMsY0FBYyxHQUFHLGNBQWMsQ0FBQztRQUNyQyxJQUFJLENBQUMsV0FBVyxHQUFHLFdBQVcsQ0FBQztJQUNqQyxDQUFDO0lBRU8sZUFBZTtRQUNyQixJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUNwQixJQUFJLENBQUMsVUFBVSxHQUFHLCtCQUFXLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztTQUMvRDtJQUNILENBQUM7SUFFTyxpQkFBaUI7UUFDdkIsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDcEIsTUFBTSxLQUFLLENBQUMsd0JBQXdCLENBQUMsQ0FBQztTQUN2QztRQUNELE1BQU0sS0FBSyxHQUFHLElBQUEsZUFBTSxFQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUM7UUFDdEQsUUFBUSxLQUFLLEVBQUU7WUFDYixLQUFLLFVBQVU7Z0JBQ2IsSUFBSSxDQUFDLFFBQVEsR0FBRyxnQkFBUSxDQUFDLE1BQU0sQ0FBQztnQkFDaEMsTUFBTTtZQUNSLEtBQUssVUFBVTtnQkFDYixJQUFJLENBQUMsUUFBUSxHQUFHLGdCQUFRLENBQUMsTUFBTSxDQUFDO2dCQUNoQyxNQUFNO1lB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QUNoQixDQUFDO29CQUNGLE9BQU8sZUFBZSxDQUFDO2dCQUN6QixDQUFDLENBQUM7YUFDTCxDQUFDO1NBQ0g7UUFBQyxPQUFPLENBQUMsRUFBRTtZQUNWLE1BQU0sNENBQTRDLElBQUksQ0FBQyxRQUFRLFdBQVcsSUFBSSxDQUFDLFFBQVEsS0FBSyxDQUFDLEVBQUUsQ0FBQztTQUNqRztnQkFBUztZQUNSLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7WUFDM0MsMkNBQTJDO1lBQzNDLElBQUksSUFBSSxDQUFDLFFBQVEsS0FBSyxnQkFBUSxDQUFDLFFBQVEsRUFBRTtnQkFDdkMsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sRUFBRSxDQUFDO2dCQUNqRCxJQUFJLENBQUMsVUFBVSxHQUFHLFNBQVMsQ0FBQzthQUM3QjtTQUNGO1FBQ0QsT0FBTyw2QkFBNkIsQ0FBQztJQUN2QyxDQUFDO0NBQ0Y7QUEvS0Qsa0JBK0tDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU2lnblNlc3Npb24sIEtleXNoYXJlLCBNZXNzYWdlIH0gZnJvbSAnQHNpbGVuY2VsYWJvcmF0b3JpZXMvZGtscy13YXNtLWxsLW5vZGUnO1xuaW1wb3J0IHsgRGVzZXJpYWxpemVkQnJvYWRjYXN0TWVzc2FnZSwgRGVzZXJpYWxpemVkRGtsc1NpZ25hdHVyZSwgRGVzZXJpYWxpemVkTWVzc2FnZXMsIERzZ1N0YXRlIH0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQgeyBkZWNvZGUgfSBmcm9tICdjYm9yLXgnO1xuXG5leHBvcnQgY2xhc3MgRHNnIHtcbiAgcHJvdGVjdGVkIGRzZ1Nlc3Npb246IFNpZ25TZXNzaW9uIHwgdW5kZWZpbmVkO1xuICBwcm90ZWN0ZWQgZHNnU2Vzc2lvbkJ5dGVzOiBVaW50OEFycmF5O1xuICBwcml2YXRlIF9zaWduYXR1cmU6IERlc2VyaWFsaXplZERrbHNTaWduYXR1cmUgfCB1bmRlZmluZWQ7XG4gIHByb3RlY3RlZCBrZXlTaGFyZUJ5dGVzOiBCdWZmZXI7XG4gIHByb3RlY3RlZCBtZXNzYWdlSGFzaDogQnVmZmVyO1xuICBwcm90ZWN0ZWQgZGVyaXZhdGlvblBhdGg6IHN0cmluZztcbiAgcHJvdGVjdGVkIHBhcnR5SWR4OiBudW1iZXI7XG4gIHByb3RlY3RlZCBkc2dTdGF0ZTogRHNnU3RhdGUgPSBEc2dTdGF0ZS5VbmluaXRpYWxpemVkO1xuXG4gIGNvbnN0cnVjdG9yKGtleVNoYXJlOiBCdWZmZXIsIHBhcnR5SWR4OiBudW1iZXIsIGRlcml2YXRpb25QYXRoOiBzdHJpbmcsIG1lc3NhZ2VIYXNoOiBCdWZmZXIpIHtcbiAgICB0aGlzLnBhcnR5SWR4ID0gcGFydHlJZHg7XG4gICAgdGhpcy5rZXlTaGFyZUJ5dGVzID0ga2V5U2hhcmU7XG4gICAgdGhpcy5kZXJpdmF0aW9uUGF0aCA9IGRlcml2YXRpb25QYXRoO1xuICAgIHRoaXMubWVzc2FnZUhhc2ggPSBtZXNzYWdlSGFzaDtcbiAgfVxuXG4gIHByaXZhdGUgX3Jlc3RvcmVTZXNzaW9uKCkge1xuICAgIGlmICghdGhpcy5kc2dTZXNzaW9uKSB7XG4gICAgICB0aGlzLmRzZ1Nlc3Npb24gPSBTaWduU2Vzc2lvbi5mcm9tQnl0ZXModGhpcy5kc2dTZXNzaW9uQnl0ZXMpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2Rlc2VyaWFsaXplU3RhdGUoKSB7XG4gICAgaWYgKCF0aGlzLmRzZ1Nlc3Npb24pIHtcbiAgICAgIHRocm93IEVycm9yKCdTZXNzaW9uIG5vdCBpbnRpYWxpemVkJyk7XG4gICAgfVxuICAgIGNvbnN0IHJvdW5kID0gZGVjb2RlKHRoaXMuZHNnU2Vzc2lvbi50b0J5dGVzKCkpLnJvdW5kO1xuICAgIHN3aXRjaCAocm91bmQpIHtcbiAgICAgIGNhc2UgJ1dhaXRNc2cxJzpcbiAgICAgICAgdGhpcy5kc2dTdGF0ZSA9IERzZ1N0YXRlLlJvdW5kMTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdXYWl0TXNnMic6XG4gICAgICAgIHRoaXMuZHNnU3RhdGUgPSBEc2dTdGF0ZS5Sb3VuZDI7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnV2FpdE1zZzMnOlxuICAgICAgICB0aGlzLmRzZ1N0YXRlID0gRHNnU3RhdGUuUm91bmQzO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ0VuZGVkJzpcbiAgICAgICAgdGhpcy5kc2dTdGF0ZSA9IERzZ1N0YXRlLkNvbXBsZXRlO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRoaXMuZHNnU3RhdGUgPSBEc2dTdGF0ZS5JbnZhbGlkU3RhdGU7XG4gICAgICAgIHRocm93IGBJbnZhbGlkIFN0YXRlOiAke3JvdW5kfWA7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgaW5pdCgpOiBQcm9taXNlPERlc2VyaWFsaXplZEJyb2FkY2FzdE1lc3NhZ2U+IHtcbiAgICBpZiAodGhpcy5kc2dTdGF0ZSAhPT0gRHNnU3RhdGUuVW5pbml0aWFsaXplZCkge1xuICAgICAgdGhyb3cgJ0RTRyBzZXNzaW9uIGFscmVhZHkgaW5pdGlhbGl6ZWQnO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIGNvbnN0IGluaXREa2xzID0gcmVxdWlyZSgnQHNpbGVuY2VsYWJvcmF0b3JpZXMvZGtscy13YXNtLWxsLXdlYicpO1xuICAgICAgYXdhaXQgaW5pdERrbHMuZGVmYXVsdCgpO1xuICAgIH1cbiAgICBjb25zdCBrZXlTaGFyZSA9IEtleXNoYXJlLmZyb21CeXRlcyh0aGlzLmtleVNoYXJlQnl0ZXMpO1xuICAgIGlmIChrZXlTaGFyZS5wYXJ0eUlkICE9PSB0aGlzLnBhcnR5SWR4KSB7XG4gICAgICB0aHJvdyBFcnJvcihgUGFydHkgaW5kZXg6ICR7dGhpcy5wYXJ0eUlkeH0gZG9lcyBub3QgbWF0Y2gga2V5IHNoYXJlIHBhcnR5SWQ6ICR7a2V5U2hhcmUucGFydHlJZH0gYCk7XG4gICAgfVxuICAgIHRoaXMuZHNnU2Vzc2lvbiA9IG5ldyBTaWduU2Vzc2lvbihrZXlTaGFyZSwgdGhpcy5kZXJpdmF0aW9uUGF0aCk7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHBheWxvYWQgPSB0aGlzLmRzZ1Nlc3Npb24uY3JlYXRlRmlyc3RNZXNzYWdlKCkucGF5bG9hZDtcbiAgICAgIHRoaXMuX2Rlc2VyaWFsaXplU3RhdGUoKTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHBheWxvYWQ6IHBheWxvYWQsXG4gICAgICAgIGZyb206IHRoaXMucGFydHlJZHgsXG4gICAgICB9O1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRocm93IGBFcnJvciB3aGlsZSBjcmVhdGluZyB0aGUgZmlyc3QgbWVzc2FnZSBmcm9tIHBhcnR5ICR7dGhpcy5wYXJ0eUlkeH06ICR7ZX1gO1xuICAgIH1cbiAgfVxuXG4gIGdldCBzaWduYXR1cmUoKTogRGVzZXJpYWxpemVkRGtsc1NpZ25hdHVyZSB7XG4gICAgaWYgKCF0aGlzLl9zaWduYXR1cmUpIHtcbiAgICAgIHRocm93IEVycm9yKCdDYW4gbm90IHJlcXVlc3Qgc2lnbmF0dXJlLiBTaWduYXR1cmUgbm90IHByb2R1Y2VkIHlldC4nKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX3NpZ25hdHVyZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFbmRzIHRoZSBEU0cgc2Vzc2lvbiBieSBmcmVlaW5nIGFueSBoZWFwIGFsbG9jYXRpb25zIGZyb20gd2FzbS4gTm90ZSB0aGF0IHRoZSBzZXNzaW9uIGlzIGZyZWVkIGlmIGEgc2lnbmF0dXJlIGlzIHByb2R1Y2VkLlxuICAgKi9cbiAgZW5kU2Vzc2lvbigpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5zaWduYXR1cmUpIHtcbiAgICAgIG5ldyBFcnJvcignU2Vzc2lvbiBhbHJlYWR5IGVuZGVkIGJlY2F1c2UgY29tYmluZWQgc2lnbmF0dXJlIHdhcyBwcm9kdWNlZC4nKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuZHNnU2Vzc2lvbikge1xuICAgICAgdGhpcy5kc2dTZXNzaW9uLmZyZWUoKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUHJvY2Nlc3NlcyBpbmNvbWluZyBtZXNzYWdlcyB0byB0aGlzIHBhcnR5IGluIHRoZSBES0xzIERTRyBwcm90b2NvbCBhbmRcbiAgICogcHJvZHVjZXMgbWVzc2FnZXMgZnJvbSB0aGlzIHBhcnR5IHRvIG90aGVyIHBhcnRpZXMgZm9yIHRoZSBuZXh0IHJvdW5kLlxuICAgKiBAcGFyYW0gbWVzc2FnZXNGb3JJdGhSb3VuZCAtIG1lc3NhZ2VzIHRvIHByb2Nlc3MgdGhlIGN1cnJlbnQgcm91bmRcbiAgICogQHJldHVybnMge0Rlc2VyaWFsaXplZE1lc3NhZ2VzfSAtIG1lc3NhZ2VzIHRvIHNlbmQgdG8gb3RoZXIgcGFydGllcyBmb3IgdGhlIG5leHQgcm91bmRcbiAgICovXG4gIGhhbmRsZUluY29taW5nTWVzc2FnZXMobWVzc2FnZXNGb3JJdGhSb3VuZDogRGVzZXJpYWxpemVkTWVzc2FnZXMpOiBEZXNlcmlhbGl6ZWRNZXNzYWdlcyB7XG4gICAgbGV0IG5leHRSb3VuZE1lc3NhZ2VzOiBNZXNzYWdlW10gPSBbXTtcbiAgICBsZXQgbmV4dFJvdW5kRGVzZXJpYWxpemVkTWVzc2FnZXM6IERlc2VyaWFsaXplZE1lc3NhZ2VzID0geyBicm9hZGNhc3RNZXNzYWdlczogW10sIHAycE1lc3NhZ2VzOiBbXSB9O1xuICAgIHRoaXMuX3Jlc3RvcmVTZXNzaW9uKCk7XG4gICAgaWYgKCF0aGlzLmRzZ1Nlc3Npb24pIHtcbiAgICAgIHRocm93IEVycm9yKCdTZXNzaW9uIG5vdCBpbml0aWFsaXplZCcpO1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgaWYgKHRoaXMuZHNnU3RhdGUgPT09IERzZ1N0YXRlLlJvdW5kNCkge1xuICAgICAgICB0aGlzLmRzZ1N0YXRlID0gRHNnU3RhdGUuQ29tcGxldGU7XG4gICAgICAgIGNvbnN0IGNvbWJpbmVSZXN1bHQgPSB0aGlzLmRzZ1Nlc3Npb24uY29tYmluZShcbiAgICAgICAgICBtZXNzYWdlc0Zvckl0aFJvdW5kLmJyb2FkY2FzdE1lc3NhZ2VzLm1hcCgobSkgPT4gbmV3IE1lc3NhZ2UobS5wYXlsb2FkLCBtLmZyb20sIHVuZGVmaW5lZCkpXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuX3NpZ25hdHVyZSA9IHtcbiAgICAgICAgICBSOiBjb21iaW5lUmVzdWx0WzBdLFxuICAgICAgICAgIFM6IGNvbWJpbmVSZXN1bHRbMV0sXG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiB7IGJyb2FkY2FzdE1lc3NhZ2VzOiBbXSwgcDJwTWVzc2FnZXM6IFtdIH07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBuZXh0Um91bmRNZXNzYWdlcyA9IHRoaXMuZHNnU2Vzc2lvbi5oYW5kbGVNZXNzYWdlcyhcbiAgICAgICAgICBtZXNzYWdlc0Zvckl0aFJvdW5kLmJyb2FkY2FzdE1lc3NhZ2VzXG4gICAgICAgICAgICAubWFwKChtKSA9PiBuZXcgTWVzc2FnZShtLnBheWxvYWQsIG0uZnJvbSwgdW5kZWZpbmVkKSlcbiAgICAgICAgICAgIC5jb25jYXQobWVzc2FnZXNGb3JJdGhSb3VuZC5wMnBNZXNzYWdlcy5tYXAoKG0pID0+IG5ldyBNZXNzYWdlKG0ucGF5bG9hZCwgbS5mcm9tLCBtLnRvKSkpXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5kc2dTdGF0ZSA9PT0gRHNnU3RhdGUuUm91bmQzKSB7XG4gICAgICAgIG5leHRSb3VuZE1lc3NhZ2VzID0gW3RoaXMuZHNnU2Vzc2lvbi5sYXN0TWVzc2FnZSh0aGlzLm1lc3NhZ2VIYXNoKV07XG4gICAgICAgIHRoaXMuZHNnU3RhdGUgPSBEc2dTdGF0ZS5Sb3VuZDQ7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgYnJvYWRjYXN0TWVzc2FnZXM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgcGF5bG9hZDogbmV4dFJvdW5kTWVzc2FnZXNbMF0ucGF5bG9hZCxcbiAgICAgICAgICAgICAgZnJvbTogbmV4dFJvdW5kTWVzc2FnZXNbMF0uZnJvbV9pZCxcbiAgICAgICAgICAgICAgc2lnbmF0dXJlUjogZGVjb2RlKHRoaXMuZHNnU2Vzc2lvbi50b0J5dGVzKCkpLnJvdW5kLldhaXRNc2c0LnIsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIF0sXG4gICAgICAgICAgcDJwTWVzc2FnZXM6IFtdLFxuICAgICAgICB9O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gVXBkYXRlIHJvdW5kIGRhdGEuXG4gICAgICAgIHRoaXMuX2Rlc2VyaWFsaXplU3RhdGUoKTtcbiAgICAgIH1cbiAgICAgIG5leHRSb3VuZERlc2VyaWFsaXplZE1lc3NhZ2VzID0ge1xuICAgICAgICBwMnBNZXNzYWdlczogbmV4dFJvdW5kTWVzc2FnZXNcbiAgICAgICAgICAuZmlsdGVyKChtKSA9PiBtLnRvX2lkICE9PSB1bmRlZmluZWQpXG4gICAgICAgICAgLm1hcCgobSkgPT4ge1xuICAgICAgICAgICAgaWYgKG0udG9faWQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICB0aHJvdyBFcnJvcignSW52YWxpZCBQMlAgbWVzc2FnZSwgbWlzc2luZyB0b19pZC4nKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IHAycFJldHVybiA9IHtcbiAgICAgICAgICAgICAgcGF5bG9hZDogbS5wYXlsb2FkLFxuICAgICAgICAgICAgICBmcm9tOiBtLmZyb21faWQsXG4gICAgICAgICAgICAgIHRvOiBtLnRvX2lkLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHJldHVybiBwMnBSZXR1cm47XG4gICAgICAgICAgfSksXG4gICAgICAgIGJyb2FkY2FzdE1lc3NhZ2VzOiBuZXh0Um91bmRNZXNzYWdlc1xuICAgICAgICAgIC5maWx0ZXIoKG0pID0+IG0udG9faWQgPT09IHVuZGVmaW5lZClcbiAgICAgICAgICAubWFwKChtKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBicm9hZGNhc3RSZXR1cm4gPSB7XG4gICAgICAgICAgICAgIHBheWxvYWQ6IG0ucGF5bG9hZCxcbiAgICAgICAgICAgICAgZnJvbTogbS5mcm9tX2lkLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHJldHVybiBicm9hZGNhc3RSZXR1cm47XG4gICAgICAgICAgfSksXG4gICAgICB9O1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRocm93IGBFcnJvciB3aGlsZSBjcmVhdGluZyBtZXNzYWdlcyBmcm9tIHBhcnR5ICR7dGhpcy5wYXJ0eUlkeH0sIHJvdW5kICR7dGhpcy5kc2dTdGF0ZX06ICR7ZX1gO1xuICAgIH0gZmluYWxseSB7XG4gICAgICBuZXh0Um91bmRNZXNzYWdlcy5mb3JFYWNoKChtKSA9PiBtLmZyZWUoKSk7XG4gICAgICAvLyBTZXNzaW9uIGlzIGZyZWVkIHdoZW4gY29tYmluZSBpcyBjYWxsZWQuXG4gICAgICBpZiAodGhpcy5kc2dTdGF0ZSAhPT0gRHNnU3RhdGUuQ29tcGxldGUpIHtcbiAgICAgICAgdGhpcy5kc2dTZXNzaW9uQnl0ZXMgPSB0aGlzLmRzZ1Nlc3Npb24udG9CeXRlcygpO1xuICAgICAgICB0aGlzLmRzZ1Nlc3Npb24gPSB1bmRlZmluZWQ7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBuZXh0Um91bmREZXNlcmlhbGl6ZWRNZXNzYWdlcztcbiAgfVxufVxuIl19
@@ -1,4 +1,5 @@
1
1
  /// <reference types="node" />
2
+ import { XShare } from '../ecdsa/types';
2
3
  interface BroadcastMessage<T> {
3
4
  payload: T;
4
5
  from: number;
@@ -44,6 +45,11 @@ export declare type DklsSignature<T> = {
44
45
  R: T;
45
46
  S: T;
46
47
  };
48
+ export declare type RetrofitData = {
49
+ bigSiList: string[];
50
+ xShare: Partial<XShare>;
51
+ xiList?: string[];
52
+ };
47
53
  export declare type SerializedBroadcastMessage = BroadcastMessage<string>;
48
54
  export declare type DeserializedBroadcastMessage = BroadcastMessage<Uint8Array>;
49
55
  export declare type SerializedP2PMessage = P2PMessage<string, string>;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/tss/ecdsa-dkls/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/tss/ecdsa-dkls/types.ts"],"names":[],"mappings":"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"}