@bitgo/sdk-lib-safes 1.2.1 → 1.3.0

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,10 +1,11 @@
1
1
  /**
2
2
  * @prettier
3
3
  *
4
- * @experimental Pure Safe derivation leaf. Never imports sdk-core/BaseCoin/Wallet/Safe/key-card.
4
+ * @experimental Pure Safe derivation and keycard box codec leaf. Never imports sdk-core/BaseCoin/Wallet/Safe/key-card.
5
5
  */
6
6
  export * from './ed25519KeyDeriver';
7
7
  export * from './ed25519Pub';
8
+ export * from './keycardCodec';
8
9
  export * from './safeDerivation';
9
10
  export * from './safeRecovery';
10
11
  export * from './safeSlot';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,cAAc,qBAAqB,CAAC;AACpC,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,cAAc,qBAAqB,CAAC;AACpC,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC"}
package/dist/src/index.js CHANGED
@@ -17,11 +17,12 @@ Object.defineProperty(exports, "__esModule", { value: true });
17
17
  /**
18
18
  * @prettier
19
19
  *
20
- * @experimental Pure Safe derivation leaf. Never imports sdk-core/BaseCoin/Wallet/Safe/key-card.
20
+ * @experimental Pure Safe derivation and keycard box codec leaf. Never imports sdk-core/BaseCoin/Wallet/Safe/key-card.
21
21
  */
22
22
  __exportStar(require("./ed25519KeyDeriver"), exports);
23
23
  __exportStar(require("./ed25519Pub"), exports);
24
+ __exportStar(require("./keycardCodec"), exports);
24
25
  __exportStar(require("./safeDerivation"), exports);
25
26
  __exportStar(require("./safeRecovery"), exports);
26
27
  __exportStar(require("./safeSlot"), exports);
27
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBOzs7O0dBSUc7QUFDSCxzREFBb0M7QUFDcEMsK0NBQTZCO0FBQzdCLG1EQUFpQztBQUNqQyxpREFBK0I7QUFDL0IsNkNBQTJCIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAcHJldHRpZXJcbiAqXG4gKiBAZXhwZXJpbWVudGFsIFB1cmUgU2FmZSBkZXJpdmF0aW9uIGxlYWYuIE5ldmVyIGltcG9ydHMgc2RrLWNvcmUvQmFzZUNvaW4vV2FsbGV0L1NhZmUva2V5LWNhcmQuXG4gKi9cbmV4cG9ydCAqIGZyb20gJy4vZWQyNTUxOUtleURlcml2ZXInO1xuZXhwb3J0ICogZnJvbSAnLi9lZDI1NTE5UHViJztcbmV4cG9ydCAqIGZyb20gJy4vc2FmZURlcml2YXRpb24nO1xuZXhwb3J0ICogZnJvbSAnLi9zYWZlUmVjb3ZlcnknO1xuZXhwb3J0ICogZnJvbSAnLi9zYWZlU2xvdCc7XG4iXX0=
28
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBOzs7O0dBSUc7QUFDSCxzREFBb0M7QUFDcEMsK0NBQTZCO0FBQzdCLGlEQUErQjtBQUMvQixtREFBaUM7QUFDakMsaURBQStCO0FBQy9CLDZDQUEyQiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQHByZXR0aWVyXG4gKlxuICogQGV4cGVyaW1lbnRhbCBQdXJlIFNhZmUgZGVyaXZhdGlvbiBhbmQga2V5Y2FyZCBib3ggY29kZWMgbGVhZi4gTmV2ZXIgaW1wb3J0cyBzZGstY29yZS9CYXNlQ29pbi9XYWxsZXQvU2FmZS9rZXktY2FyZC5cbiAqL1xuZXhwb3J0ICogZnJvbSAnLi9lZDI1NTE5S2V5RGVyaXZlcic7XG5leHBvcnQgKiBmcm9tICcuL2VkMjU1MTlQdWInO1xuZXhwb3J0ICogZnJvbSAnLi9rZXljYXJkQ29kZWMnO1xuZXhwb3J0ICogZnJvbSAnLi9zYWZlRGVyaXZhdGlvbic7XG5leHBvcnQgKiBmcm9tICcuL3NhZmVSZWNvdmVyeSc7XG5leHBvcnQgKiBmcm9tICcuL3NhZmVTbG90JztcbiJdfQ==
@@ -0,0 +1,24 @@
1
+ import type { RootKeyType } from '@bitgo/public-types';
2
+ /**
3
+ * Identifier for one of a safe's four roots (one per signing scheme). Each value is the
4
+ * root's `rootKeyType`, which is also the key used in the keycard's per-box JSON.
5
+ */
6
+ export type SafeRootKeyType = RootKeyType;
7
+ /**
8
+ * The JSON object encoded in a safe keycard box (A/B/C): the four roots keyed by
9
+ * {@link SafeRootKeyType}. Values are per-root ciphertext for A/B (encryptedPrv or
10
+ * reducedEncryptedPrv; safe MPC ciphertext decrypts to a versioned signing+VRF envelope) or
11
+ * public keys for C. The root-key-type keys are self-identifying, so a
12
+ * consumer parses by key rather than by size/offset.
13
+ */
14
+ export type SafeKeycardRoots = Record<SafeRootKeyType, string>;
15
+ /**
16
+ * Parses a safe keycard box value — the JSON packed by key-card's `generateSafeQrData`, e.g.
17
+ * `{"secp256k1Multisig":"…","ecdsaMpc":"…",…}` — into its four roots. Throws if the value is
18
+ * not valid JSON or any root is missing/non-string. Recovery tooling calls this on the A/B/C
19
+ * box value, then decrypts each root value with the safe password. An MPC root value is an
20
+ * opaque versioned envelope; recovery must unwrap its `prvKeyShare` and `vrf` fields instead
21
+ * of treating the decrypted bytes as a bare share.
22
+ */
23
+ export declare function parseSafeKeycardBox(data: string): SafeKeycardRoots;
24
+ //# sourceMappingURL=keycardCodec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"keycardCodec.d.ts","sourceRoot":"","sources":["../../src/keycardCodec.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAEvD;;;GAGG;AACH,MAAM,MAAM,eAAe,GAAG,WAAW,CAAC;AAE1C;;;;;;GAMG;AACH,MAAM,MAAM,gBAAgB,GAAG,MAAM,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;AAa/D;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,gBAAgB,CAOlE"}
@@ -0,0 +1,75 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.parseSafeKeycardBox = parseSafeKeycardBox;
37
+ /**
38
+ * @prettier
39
+ *
40
+ * @experimental Safe keycard box codec.
41
+ *
42
+ * Each of Boxes A/B/C on a Safe keycard is a JSON object mapping a root slot name to that slot's key
43
+ * string. It lives in this leaf so sdk-core and WRW can parse a box without depending on key-card,
44
+ * which pulls in PDF/QR libraries and itself depends on sdk-core.
45
+ */
46
+ const t = __importStar(require("io-ts"));
47
+ const E = __importStar(require("fp-ts/Either"));
48
+ const PathReporter_1 = require("io-ts/lib/PathReporter");
49
+ const io_ts_types_1 = require("io-ts-types");
50
+ // Annotating with SafeKeycardRoots makes the compiler reject a key added to or removed from one side only.
51
+ const SafeKeycardRootsCodec = t.type({
52
+ secp256k1Multisig: t.string,
53
+ ecdsaMpc: t.string,
54
+ eddsaMpc: t.string,
55
+ ed25519Multisig: t.string,
56
+ });
57
+ // Decodes a box's JSON string straight into the validated roots record.
58
+ const SafeKeycardBoxFromString = io_ts_types_1.JsonFromString.pipe(SafeKeycardRootsCodec);
59
+ /**
60
+ * Parses a safe keycard box value — the JSON packed by key-card's `generateSafeQrData`, e.g.
61
+ * `{"secp256k1Multisig":"…","ecdsaMpc":"…",…}` — into its four roots. Throws if the value is
62
+ * not valid JSON or any root is missing/non-string. Recovery tooling calls this on the A/B/C
63
+ * box value, then decrypts each root value with the safe password. An MPC root value is an
64
+ * opaque versioned envelope; recovery must unwrap its `prvKeyShare` and `vrf` fields instead
65
+ * of treating the decrypted bytes as a bare share.
66
+ */
67
+ function parseSafeKeycardBox(data) {
68
+ const decoded = SafeKeycardBoxFromString.decode(data);
69
+ if (E.isLeft(decoded)) {
70
+ // PathReporter, not decodeWithCodec: io-ts errors carry no message, so decodeWithCodec would report only "unknown".
71
+ throw new Error(`parseSafeKeycardBox: ${PathReporter_1.PathReporter.report(decoded).join('; ')}`);
72
+ }
73
+ return decoded.right;
74
+ }
75
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2V5Y2FyZENvZGVjLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2tleWNhcmRDb2RlYy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQWlEQSxrREFPQztBQXhERDs7Ozs7Ozs7R0FRRztBQUNILHlDQUEyQjtBQUMzQixnREFBa0M7QUFDbEMseURBQXNEO0FBQ3RELDZDQUE2QztBQWtCN0MsMkdBQTJHO0FBQzNHLE1BQU0scUJBQXFCLEdBQTZCLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDN0QsaUJBQWlCLEVBQUUsQ0FBQyxDQUFDLE1BQU07SUFDM0IsUUFBUSxFQUFFLENBQUMsQ0FBQyxNQUFNO0lBQ2xCLFFBQVEsRUFBRSxDQUFDLENBQUMsTUFBTTtJQUNsQixlQUFlLEVBQUUsQ0FBQyxDQUFDLE1BQU07Q0FDMUIsQ0FBQyxDQUFDO0FBRUgsd0VBQXdFO0FBQ3hFLE1BQU0sd0JBQXdCLEdBQUcsNEJBQWMsQ0FBQyxJQUFJLENBQUMscUJBQXFCLENBQUMsQ0FBQztBQUU1RTs7Ozs7OztHQU9HO0FBQ0gsU0FBZ0IsbUJBQW1CLENBQUMsSUFBWTtJQUM5QyxNQUFNLE9BQU8sR0FBRyx3QkFBd0IsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDdEQsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7UUFDdEIsb0hBQW9IO1FBQ3BILE1BQU0sSUFBSSxLQUFLLENBQUMsd0JBQXdCLDJCQUFZLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDckYsQ0FBQztJQUNELE9BQU8sT0FBTyxDQUFDLEtBQUssQ0FBQztBQUN2QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAcHJldHRpZXJcbiAqXG4gKiBAZXhwZXJpbWVudGFsIFNhZmUga2V5Y2FyZCBib3ggY29kZWMuXG4gKlxuICogRWFjaCBvZiBCb3hlcyBBL0IvQyBvbiBhIFNhZmUga2V5Y2FyZCBpcyBhIEpTT04gb2JqZWN0IG1hcHBpbmcgYSByb290IHNsb3QgbmFtZSB0byB0aGF0IHNsb3QncyBrZXlcbiAqIHN0cmluZy4gSXQgbGl2ZXMgaW4gdGhpcyBsZWFmIHNvIHNkay1jb3JlIGFuZCBXUlcgY2FuIHBhcnNlIGEgYm94IHdpdGhvdXQgZGVwZW5kaW5nIG9uIGtleS1jYXJkLFxuICogd2hpY2ggcHVsbHMgaW4gUERGL1FSIGxpYnJhcmllcyBhbmQgaXRzZWxmIGRlcGVuZHMgb24gc2RrLWNvcmUuXG4gKi9cbmltcG9ydCAqIGFzIHQgZnJvbSAnaW8tdHMnO1xuaW1wb3J0ICogYXMgRSBmcm9tICdmcC10cy9FaXRoZXInO1xuaW1wb3J0IHsgUGF0aFJlcG9ydGVyIH0gZnJvbSAnaW8tdHMvbGliL1BhdGhSZXBvcnRlcic7XG5pbXBvcnQgeyBKc29uRnJvbVN0cmluZyB9IGZyb20gJ2lvLXRzLXR5cGVzJztcbmltcG9ydCB0eXBlIHsgUm9vdEtleVR5cGUgfSBmcm9tICdAYml0Z28vcHVibGljLXR5cGVzJztcblxuLyoqXG4gKiBJZGVudGlmaWVyIGZvciBvbmUgb2YgYSBzYWZlJ3MgZm91ciByb290cyAob25lIHBlciBzaWduaW5nIHNjaGVtZSkuIEVhY2ggdmFsdWUgaXMgdGhlXG4gKiByb290J3MgYHJvb3RLZXlUeXBlYCwgd2hpY2ggaXMgYWxzbyB0aGUga2V5IHVzZWQgaW4gdGhlIGtleWNhcmQncyBwZXItYm94IEpTT04uXG4gKi9cbmV4cG9ydCB0eXBlIFNhZmVSb290S2V5VHlwZSA9IFJvb3RLZXlUeXBlO1xuXG4vKipcbiAqIFRoZSBKU09OIG9iamVjdCBlbmNvZGVkIGluIGEgc2FmZSBrZXljYXJkIGJveCAoQS9CL0MpOiB0aGUgZm91ciByb290cyBrZXllZCBieVxuICoge0BsaW5rIFNhZmVSb290S2V5VHlwZX0uIFZhbHVlcyBhcmUgcGVyLXJvb3QgY2lwaGVydGV4dCBmb3IgQS9CIChlbmNyeXB0ZWRQcnYgb3JcbiAqIHJlZHVjZWRFbmNyeXB0ZWRQcnY7IHNhZmUgTVBDIGNpcGhlcnRleHQgZGVjcnlwdHMgdG8gYSB2ZXJzaW9uZWQgc2lnbmluZytWUkYgZW52ZWxvcGUpIG9yXG4gKiBwdWJsaWMga2V5cyBmb3IgQy4gVGhlIHJvb3Qta2V5LXR5cGUga2V5cyBhcmUgc2VsZi1pZGVudGlmeWluZywgc28gYVxuICogY29uc3VtZXIgcGFyc2VzIGJ5IGtleSByYXRoZXIgdGhhbiBieSBzaXplL29mZnNldC5cbiAqL1xuZXhwb3J0IHR5cGUgU2FmZUtleWNhcmRSb290cyA9IFJlY29yZDxTYWZlUm9vdEtleVR5cGUsIHN0cmluZz47XG5cbi8vIEFubm90YXRpbmcgd2l0aCBTYWZlS2V5Y2FyZFJvb3RzIG1ha2VzIHRoZSBjb21waWxlciByZWplY3QgYSBrZXkgYWRkZWQgdG8gb3IgcmVtb3ZlZCBmcm9tIG9uZSBzaWRlIG9ubHkuXG5jb25zdCBTYWZlS2V5Y2FyZFJvb3RzQ29kZWM6IHQuVHlwZTxTYWZlS2V5Y2FyZFJvb3RzPiA9IHQudHlwZSh7XG4gIHNlY3AyNTZrMU11bHRpc2lnOiB0LnN0cmluZyxcbiAgZWNkc2FNcGM6IHQuc3RyaW5nLFxuICBlZGRzYU1wYzogdC5zdHJpbmcsXG4gIGVkMjU1MTlNdWx0aXNpZzogdC5zdHJpbmcsXG59KTtcblxuLy8gRGVjb2RlcyBhIGJveCdzIEpTT04gc3RyaW5nIHN0cmFpZ2h0IGludG8gdGhlIHZhbGlkYXRlZCByb290cyByZWNvcmQuXG5jb25zdCBTYWZlS2V5Y2FyZEJveEZyb21TdHJpbmcgPSBKc29uRnJvbVN0cmluZy5waXBlKFNhZmVLZXljYXJkUm9vdHNDb2RlYyk7XG5cbi8qKlxuICogUGFyc2VzIGEgc2FmZSBrZXljYXJkIGJveCB2YWx1ZSDigJQgdGhlIEpTT04gcGFja2VkIGJ5IGtleS1jYXJkJ3MgYGdlbmVyYXRlU2FmZVFyRGF0YWAsIGUuZy5cbiAqIGB7XCJzZWNwMjU2azFNdWx0aXNpZ1wiOlwi4oCmXCIsXCJlY2RzYU1wY1wiOlwi4oCmXCIs4oCmfWAg4oCUIGludG8gaXRzIGZvdXIgcm9vdHMuIFRocm93cyBpZiB0aGUgdmFsdWUgaXNcbiAqIG5vdCB2YWxpZCBKU09OIG9yIGFueSByb290IGlzIG1pc3Npbmcvbm9uLXN0cmluZy4gUmVjb3ZlcnkgdG9vbGluZyBjYWxscyB0aGlzIG9uIHRoZSBBL0IvQ1xuICogYm94IHZhbHVlLCB0aGVuIGRlY3J5cHRzIGVhY2ggcm9vdCB2YWx1ZSB3aXRoIHRoZSBzYWZlIHBhc3N3b3JkLiBBbiBNUEMgcm9vdCB2YWx1ZSBpcyBhblxuICogb3BhcXVlIHZlcnNpb25lZCBlbnZlbG9wZTsgcmVjb3ZlcnkgbXVzdCB1bndyYXAgaXRzIGBwcnZLZXlTaGFyZWAgYW5kIGB2cmZgIGZpZWxkcyBpbnN0ZWFkXG4gKiBvZiB0cmVhdGluZyB0aGUgZGVjcnlwdGVkIGJ5dGVzIGFzIGEgYmFyZSBzaGFyZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlU2FmZUtleWNhcmRCb3goZGF0YTogc3RyaW5nKTogU2FmZUtleWNhcmRSb290cyB7XG4gIGNvbnN0IGRlY29kZWQgPSBTYWZlS2V5Y2FyZEJveEZyb21TdHJpbmcuZGVjb2RlKGRhdGEpO1xuICBpZiAoRS5pc0xlZnQoZGVjb2RlZCkpIHtcbiAgICAvLyBQYXRoUmVwb3J0ZXIsIG5vdCBkZWNvZGVXaXRoQ29kZWM6IGlvLXRzIGVycm9ycyBjYXJyeSBubyBtZXNzYWdlLCBzbyBkZWNvZGVXaXRoQ29kZWMgd291bGQgcmVwb3J0IG9ubHkgXCJ1bmtub3duXCIuXG4gICAgdGhyb3cgbmV3IEVycm9yKGBwYXJzZVNhZmVLZXljYXJkQm94OiAke1BhdGhSZXBvcnRlci5yZXBvcnQoZGVjb2RlZCkuam9pbignOyAnKX1gKTtcbiAgfVxuICByZXR1cm4gZGVjb2RlZC5yaWdodDtcbn1cbiJdfQ==
@@ -55,10 +55,10 @@ exports.deriveSafeChildEd25519Hardened = deriveSafeChildEd25519Hardened;
55
55
  const t = __importStar(require("io-ts"));
56
56
  const nacl = __importStar(require("tweetnacl"));
57
57
  const utxo_lib_1 = require("@bitgo/utxo-lib");
58
+ const statics_1 = require("@bitgo/statics");
58
59
  const ed25519KeyDeriver_1 = require("./ed25519KeyDeriver");
59
60
  const codecs_1 = require("./codecs");
60
61
  const ed25519Pub_1 = require("./ed25519Pub");
61
- const MAX_BIP32_INDEX = 0x7fffffff;
62
62
  exports.DERIVED_FROM_PARENT_WITH_HARDENED_PATH = /^m\/(\d+)'$/;
63
63
  function parseSafeDerivationIndex(index) {
64
64
  let idx;
@@ -71,7 +71,7 @@ function parseSafeDerivationIndex(index) {
71
71
  else {
72
72
  throw new Error(`Invalid safe derivation index '${index}': expected a non-negative integer`);
73
73
  }
74
- if (!Number.isInteger(idx) || idx < 0 || idx > MAX_BIP32_INDEX) {
74
+ if (!Number.isInteger(idx) || idx < 0 || idx > statics_1.MAX_BIP32_INDEX) {
75
75
  throw new Error(`Invalid safe derivation index '${index}': expected a non-negative integer`);
76
76
  }
77
77
  return idx;
@@ -181,4 +181,4 @@ function deriveSafeChildEd25519Hardened(rootPrv, index) {
181
181
  derivationPath,
182
182
  };
183
183
  }
184
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2FmZURlcml2YXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2FmZURlcml2YXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBbUNBLDREQWFDO0FBRUQsc0VBRUM7QUEwQkQsd0ZBT0M7QUFtQkQsMEVBSUM7QUFHRCxrRkFPQztBQXdCRCxnRkFnQkM7QUFjRCx3RUFZQztBQXhMRDs7Ozs7Ozs7OztHQVVHO0FBQ0gseUNBQTJCO0FBQzNCLGdEQUFrQztBQUNsQyw4Q0FBd0Q7QUFDeEQsMkRBQXdEO0FBQ3hELHFDQUEyQztBQUMzQyw2Q0FBMkY7QUFFM0YsTUFBTSxlQUFlLEdBQUcsVUFBVSxDQUFDO0FBQ3RCLFFBQUEsc0NBQXNDLEdBQUcsYUFBYSxDQUFDO0FBZ0JwRSxTQUFnQix3QkFBd0IsQ0FBQyxLQUFzQjtJQUM3RCxJQUFJLEdBQVcsQ0FBQztJQUNoQixJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsRUFBRSxDQUFDO1FBQzlCLEdBQUcsR0FBRyxLQUFLLENBQUM7SUFDZCxDQUFDO1NBQU0sSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDL0IsR0FBRyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN0QixDQUFDO1NBQU0sQ0FBQztRQUNOLE1BQU0sSUFBSSxLQUFLLENBQUMsa0NBQWtDLEtBQUssb0NBQW9DLENBQUMsQ0FBQztJQUMvRixDQUFDO0lBQ0QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLElBQUksR0FBRyxHQUFHLENBQUMsSUFBSSxHQUFHLEdBQUcsZUFBZSxFQUFFLENBQUM7UUFDL0QsTUFBTSxJQUFJLEtBQUssQ0FBQyxrQ0FBa0MsS0FBSyxvQ0FBb0MsQ0FBQyxDQUFDO0lBQy9GLENBQUM7SUFDRCxPQUFPLEdBQUcsQ0FBQztBQUNiLENBQUM7QUFF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R0FBRyxFQUFFLEdBQUcsRUFBRSxJQUFJLENBQUMsR0FBRyxFQUFFO1FBQ3RDLEtBQUssRUFBRSxhQUFhO0tBQ3JCLENBQUM7QUFDSixDQUFDO0FBRUQ7Ozs7Ozs7Ozs7O0dBV0c7QUFDSCxTQUFnQiw4QkFBOEIsQ0FBQyxPQUFlLEVBQUUsS0FBc0I7SUFDcEYsTUFBTSxHQUFHLEdBQUcsd0JBQXdCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDNUMsTUFBTSxjQUFjLEdBQUcsNkJBQTZCLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDMUQsTUFBTSxVQUFVLEdBQUcsSUFBQSwwQ0FBNkIsRUFBQyxPQUFPLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDMUUsTUFBTSxTQUFTLEdBQUcscUNBQWlCLENBQUMsVUFBVSxDQUFDLGNBQWMsRUFBRSxVQUFVLENBQUMsQ0FBQyxHQUFHLENBQUM7SUFDL0UsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztJQUN2RSxNQUFNLEdBQUcsR0FBRyxJQUFBLHlDQUE0QixFQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7SUFDekUsT0FBTztRQUNMLEdBQUcsRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUM7UUFDM0MsR0FBRztRQUNILGNBQWM7S0FDZixDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQHByZXR0aWVyXG4gKlxuICogQGV4cGVyaW1lbnRhbCBTaGFyZWQgc2FmZSBjaGlsZCBkZXJpdmF0aW9uIGZvciBtaW50LCBzaWduLCBhbmQgcmVjb3ZlcnkuXG4gKlxuICogVXNlciBjaGlsZDogaGFyZGVuZWQgYG0vPGluZGV4PidgIGZyb20gdGhlIHNlcXVlbnRpYWwgYHNhZmUuZGVyaXZhdGlvbkluZGV4W3Nsb3RdYC5cbiAqIEJhY2t1cCAvIEJpdEdvIGNoaWxkcmVuIGFyZSBzb2Z0LWRlcml2ZWQgYXQgYG0vPGluZGV4PmAgY2xpZW50LXNpZGUgZm9yIHJlY292ZXJ5LlxuICpcbiAqIERvIG5vdCB1c2UgYGRlcml2ZWRGcm9tUGFyZW50V2l0aFNlZWRgIC8gYGRlcml2ZUtleVdpdGhTZWVkYCAoYG0vOTk5OTk5L2EvYmApIOKAlFxuICogdGhhdCBpcyB0aGUgY3VzdG9keSBoYXNoZWQgcGF0aCBhbmQgY2Fubm90IHJlcHJvZHVjZSBhIHNhZmUgY2hpbGQuXG4gKi9cbmltcG9ydCAqIGFzIHQgZnJvbSAnaW8tdHMnO1xuaW1wb3J0ICogYXMgbmFjbCBmcm9tICd0d2VldG5hY2wnO1xuaW1wb3J0IHsgYmlwMzIsIEJJUDMySW50ZXJmYWNlIH0gZnJvbSAnQGJpdGdvL3V0eG8tbGliJztcbmltcG9ydCB7IEVkMjU1MTlLZXlEZXJpdmVyIH0gZnJvbSAnLi9lZDI1NTE5S2V5RGVyaXZlcic7XG5pbXBvcnQgeyBkZWNvZGVXaXRoQ29kZWMgfSBmcm9tICcuL2NvZGVjcyc7XG5pbXBvcnQgeyBkZWNvZGVFZDI1NTE5U3RyS2V5U2VjcmV0U2VlZCwgZW5jb2RlRWQyNTUxOVN0cktleVB1YmxpY0tleSB9IGZyb20gJy4vZWQyNTUxOVB1Yic7XG5cbmNvbnN0IE1BWF9CSVAzMl9JTkRFWCA9IDB4N2ZmZmZmZmY7XG5leHBvcnQgY29uc3QgREVSSVZFRF9GUk9NX1BBUkVOVF9XSVRIX0hBUkRFTkVEX1BBVEggPSAvXm1cXC8oXFxkKyknJC87XG5cbmV4cG9ydCB0eXBlIFNhZmVDaGlsZEtleU5hbWUgPSAndXNlcicgfCAnYmFja3VwJyB8ICdiaXRnbyc7XG5cbnR5cGUgQ2hpbGRLZXlTaGFwZTxLIGV4dGVuZHMgU2FmZUNoaWxkS2V5TmFtZT4gPSBLIGV4dGVuZHMgJ2JpdGdvJyA/IHsgcHViOiBzdHJpbmcgfSA6IHsgcHJ2OiBzdHJpbmc7IHB1Yjogc3RyaW5nIH07XG5cbmV4cG9ydCB0eXBlIFNhZmVDaGlsZFRyaXBsZXQgPSB7XG4gIGluZGV4OiBudW1iZXI7XG59ICYge1xuICBbSyBpbiBTYWZlQ2hpbGRLZXlOYW1lXTogQ2hpbGRLZXlTaGFwZTxLPjtcbn07XG5cbmV4cG9ydCB0eXBlIFNhZmVDaGlsZFRyaXBsZXRQdWJzID0ge1xuICBbSyBpbiBTYWZlQ2hpbGRLZXlOYW1lXTogeyBwdWI6IHN0cmluZyB9O1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlU2FmZURlcml2YXRpb25JbmRleChpbmRleDogc3RyaW5nIHwgbnVtYmVyKTogbnVtYmVyIHtcbiAgbGV0IGlkeDogbnVtYmVyO1xuICBpZiAodHlwZW9mIGluZGV4ID09PSAnbnVtYmVyJykge1xuICAgIGlkeCA9IGluZGV4O1xuICB9IGVsc2UgaWYgKC9eXFxkKyQvLnRlc3QoaW5kZXgpKSB7XG4gICAgaWR4ID0gTnVtYmVyKGluZGV4KTtcbiAgfSBlbHNlIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgc2FmZSBkZXJpdmF0aW9uIGluZGV4ICcke2luZGV4fSc6IGV4cGVjdGVkIGEgbm9uLW5lZ2F0aXZlIGludGVnZXJgKTtcbiAgfVxuICBpZiAoIU51bWJlci5pc0ludGVnZXIoaWR4KSB8fCBpZHggPCAwIHx8IGlkeCA+IE1BWF9CSVAzMl9JTkRFWCkge1xuICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBzYWZlIGRlcml2YXRpb24gaW5kZXggJyR7aW5kZXh9JzogZXhwZWN0ZWQgYSBub24tbmVnYXRpdmUgaW50ZWdlcmApO1xuICB9XG4gIHJldHVybiBpZHg7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRTYWZlSGFyZGVuZWREZXJpdmF0aW9uUGF0aChpbmRleDogc3RyaW5nIHwgbnVtYmVyKTogc3RyaW5nIHtcbiAgcmV0dXJuIGBtLyR7cGFyc2VTYWZlRGVyaXZhdGlvbkluZGV4KGluZGV4KX0nYDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEZXJpdmVkRnJvbVBhcmVudFdpdGhIYXJkZW5lZFBhdGhCcmFuZCB7XG4gIHJlYWRvbmx5IERlcml2ZWRGcm9tUGFyZW50V2l0aEhhcmRlbmVkUGF0aDogdW5pcXVlIHN5bWJvbDtcbn1cblxuZXhwb3J0IHR5cGUgRGVyaXZlZEZyb21QYXJlbnRXaXRoSGFyZGVuZWRQYXRoID0gdC5CcmFuZGVkPHN0cmluZywgRGVyaXZlZEZyb21QYXJlbnRXaXRoSGFyZGVuZWRQYXRoQnJhbmQ+O1xuXG5leHBvcnQgY29uc3QgRGVyaXZlZEZyb21QYXJlbnRXaXRoSGFyZGVuZWRQYXRoID0gdC5icmFuZChcbiAgdC5zdHJpbmcsXG4gIChzKTogcyBpcyBEZXJpdmVkRnJvbVBhcmVudFdpdGhIYXJkZW5lZFBhdGggPT4gcGFyc2VEZXJpdmVkRnJvbVBhcmVudFdpdGhIYXJkZW5lZFBhdGhJbmRleChzKSAhPT0gdW5kZWZpbmVkLFxuICAnRGVyaXZlZEZyb21QYXJlbnRXaXRoSGFyZGVuZWRQYXRoJ1xuKTtcblxuZnVuY3Rpb24gcGFyc2VEZXJpdmVkRnJvbVBhcmVudFdpdGhIYXJkZW5lZFBhdGhJbmRleChwYXRoOiBzdHJpbmcpOiBudW1iZXIgfCB1bmRlZmluZWQge1xuICBjb25zdCBtYXRjaCA9IERFUklWRURfRlJPTV9QQVJFTlRfV0lUSF9IQVJERU5FRF9QQVRILmV4ZWMocGF0aCk7XG4gIGlmICghbWF0Y2gpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG4gIHRyeSB7XG4gICAgcmV0dXJuIHBhcnNlU2FmZURlcml2YXRpb25JbmRleChtYXRjaFsxXSk7XG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlRGVyaXZlZEZyb21QYXJlbnRXaXRoSGFyZGVuZWRQYXRoKHBhdGg6IHN0cmluZyk6IG51bWJlciB7XG4gIGNvbnN0IHZhbGlkYXRlZCA9IGRlY29kZVdpdGhDb2RlYyhEZXJpdmVkRnJvbVBhcmVudFdpdGhIYXJkZW5lZFBhdGgsIHBhdGgsICdkZXJpdmVkRnJvbVBhcmVudFdpdGhIYXJkZW5lZFBhdGgnKTtcbiAgY29uc3QgaW5kZXggPSBwYXJzZURlcml2ZWRGcm9tUGFyZW50V2l0aEhhcmRlbmVkUGF0aEluZGV4KHZhbGlkYXRlZCk7XG4gIGlmIChpbmRleCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIGRlcml2ZWRGcm9tUGFyZW50V2l0aEhhcmRlbmVkUGF0aCAnJHtwYXRofSc6IGV4cGVjdGVkIG0vPG4+J2ApO1xuICB9XG4gIHJldHVybiBpbmRleDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTYWZlSGFyZGVuZWRDaGlsZEtleSB7XG4gIHBydjogc3RyaW5nO1xuICBwdWI6IHN0cmluZztcbiAgZGVyaXZhdGlvblBhdGg6IHN0cmluZztcbn1cblxuZnVuY3Rpb24gY2hpbGRGcm9tTm9kZShjaGlsZDogQklQMzJJbnRlcmZhY2UsIGRlcml2YXRpb25QYXRoOiBzdHJpbmcpOiBTYWZlSGFyZGVuZWRDaGlsZEtleSB7XG4gIGlmICghY2hpbGQucHJpdmF0ZUtleSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgRmFpbGVkIHRvIGRlcml2ZSBoYXJkZW5lZCBzYWZlIGNoaWxkIGF0ICR7ZGVyaXZhdGlvblBhdGh9YCk7XG4gIH1cbiAgcmV0dXJuIHtcbiAgICBwcnY6IGNoaWxkLnRvQmFzZTU4KCksXG4gICAgcHViOiBjaGlsZC5uZXV0ZXJlZCgpLnRvQmFzZTU4KCksXG4gICAgZGVyaXZhdGlvblBhdGgsXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkZXJpdmVTYWZlQ2hpbGRIYXJkZW5lZEZyb21YcHJ2KHJvb3RYcHJ2OiBzdHJpbmcsIGluZGV4OiBzdHJpbmcgfCBudW1iZXIpOiBTYWZlSGFyZGVuZWRDaGlsZEtleSB7XG4gIGNvbnN0IGlkeCA9IHBhcnNlU2FmZURlcml2YXRpb25JbmRleChpbmRleCk7XG4gIGNvbnN0IGRlcml2YXRpb25QYXRoID0gZ2V0U2FmZUhhcmRlbmVkRGVyaXZhdGlvblBhdGgoaWR4KTtcbiAgcmV0dXJuIGNoaWxkRnJvbU5vZGUoYmlwMzIuZnJvbUJhc2U1OChyb290WHBydikuZGVyaXZlSGFyZGVuZWQoaWR4KSwgZGVyaXZhdGlvblBhdGgpO1xufVxuXG4vKiogUmUtZGVyaXZlIGFuZCBhc3NlcnQgYm90aCByZXN1bHRzIG1hdGNoIGJlZm9yZSB0aGUgY2hpbGQgaXMgcmVnaXN0ZXJlZC4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZXJpdmVBbmRTZWxmQ2hlY2tTYWZlQ2hpbGRIYXJkZW5lZChyb290WHBydjogc3RyaW5nLCBpbmRleDogc3RyaW5nIHwgbnVtYmVyKTogU2FmZUhhcmRlbmVkQ2hpbGRLZXkge1xuICBjb25zdCBmaXJzdCA9IGRlcml2ZVNhZmVDaGlsZEhhcmRlbmVkRnJvbVhwcnYocm9vdFhwcnYsIGluZGV4KTtcbiAgY29uc3Qgc2Vjb25kID0gZGVyaXZlU2FmZUNoaWxkSGFyZGVuZWRGcm9tWHBydihyb290WHBydiwgaW5kZXgpO1xuICBpZiAoZmlyc3QucHViICE9PSBzZWNvbmQucHViIHx8IGZpcnN0LnBydiAhPT0gc2Vjb25kLnBydikge1xuICAgIHRocm93IG5ldyBFcnJvcihgU2FmZSBjaGlsZCBzZWxmLWNoZWNrIGZhaWxlZCBhdCAke2ZpcnN0LmRlcml2YXRpb25QYXRofTogZGVyaXZhdGlvbiB3YXMgbm90IGRldGVybWluaXN0aWNgKTtcbiAgfVxuICByZXR1cm4gZmlyc3Q7XG59XG5cbmZ1bmN0aW9uIGRlcml2ZVNhZmVDaGlsZFNvZnRGcm9tWHBydihyb290WHBydjogc3RyaW5nLCBpbmRleDogbnVtYmVyKTogeyBwcnY6IHN0cmluZzsgcHViOiBzdHJpbmcgfSB7XG4gIGNvbnN0IGNoaWxkID0gYmlwMzIuZnJvbUJhc2U1OChyb290WHBydikuZGVyaXZlKGluZGV4KTtcbiAgaWYgKCFjaGlsZC5wcml2YXRlS2V5KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBGYWlsZWQgdG8gc29mdC1kZXJpdmUgc2FmZSBjaGlsZCBhdCBtLyR7aW5kZXh9OiByb290IGhhcyBubyBwcml2YXRlIGtleWApO1xuICB9XG4gIHJldHVybiB7IHBydjogY2hpbGQudG9CYXNlNTgoKSwgcHViOiBjaGlsZC5uZXV0ZXJlZCgpLnRvQmFzZTU4KCkgfTtcbn1cblxuZnVuY3Rpb24gZGVyaXZlU2FmZUNoaWxkU29mdEZyb21YcHViKHJvb3RYcHViOiBzdHJpbmcsIGluZGV4OiBudW1iZXIpOiB7IHB1Yjogc3RyaW5nIH0ge1xuICBjb25zdCBjaGlsZCA9IGJpcDMyLmZyb21CYXNlNTgocm9vdFhwdWIpLmRlcml2ZShpbmRleCk7XG4gIGlmIChjaGlsZC5wcml2YXRlS2V5KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBGYWlsZWQgdG8gc29mdC1kZXJpdmUgc2FmZSBjaGlsZCBhdCBtLyR7aW5kZXh9OiByb290IGhhcyBhIHByaXZhdGUga2V5YCk7XG4gIH1cbiAgcmV0dXJuIHsgcHViOiBjaGlsZC5uZXV0ZXJlZCgpLnRvQmFzZTU4KCkgfTtcbn1cblxuLyoqXG4gKiBEZXJpdmVzIHNsb3QtMSBjaGlsZCBrZXkgbWF0ZXJpYWwgZm9yIGEgY2FsbGVyLXN1cHBsaWVkIFNhZmUgaW5kZXguXG4gKlxuICogSW5kZXggZGlzY292ZXJ5IGJlbG9uZ3MgdG8gdGhlIG91dGVyIHJlY292ZXJ5IHNjYW4gKFdDTi0yNzQxL1dDTi0yNzQyKS5cbiAqIFRoaXMgcHVyZSBmdW5jdGlvbiByZXByb2R1Y2VzIHRoZSB0cmlwbGV0IGZvciBvbmUgY2FuZGlkYXRlIGluZGV4LlxuICovXG5leHBvcnQgZnVuY3Rpb24gZGVyaXZlU2FmZVNlY3AyNTZrMU11bHRpc2lnVHJpcGxldChwYXJhbXM6IHtcbiAgdXNlclJvb3RYcHJ2OiBzdHJpbmc7XG4gIGJhY2t1cFJvb3RYcHJ2OiBzdHJpbmc7XG4gIGJpdGdvUm9vdFhwdWI6IHN0cmluZztcbiAgaW5kZXg6IHN0cmluZyB8IG51bWJlcjtcbn0pOiBTYWZlQ2hpbGRUcmlwbGV0IHtcbiAgY29uc3QgZGVyaXZhdGlvbklkeCA9IHBhcnNlU2FmZURlcml2YXRpb25JbmRleChwYXJhbXMuaW5kZXgpO1xuICBjb25zdCB1c2VyID0gZGVyaXZlU2FmZUNoaWxkSGFyZGVuZWRGcm9tWHBydihwYXJhbXMudXNlclJvb3RYcHJ2LCBkZXJpdmF0aW9uSWR4KTtcbiAgY29uc3QgYmFja3VwID0gZGVyaXZlU2FmZUNoaWxkU29mdEZyb21YcHJ2KHBhcmFtcy5iYWNrdXBSb290WHBydiwgZGVyaXZhdGlvbklkeCk7XG4gIGNvbnN0IGJpdGdvID0gZGVyaXZlU2FmZUNoaWxkU29mdEZyb21YcHViKHBhcmFtcy5iaXRnb1Jvb3RYcHViLCBkZXJpdmF0aW9uSWR4KTtcbiAgcmV0dXJuIHtcbiAgICBiYWNrdXAsXG4gICAgYml0Z28sXG4gICAgdXNlcjogeyBwcnY6IHVzZXIucHJ2LCBwdWI6IHVzZXIucHViIH0sXG4gICAgaW5kZXg6IGRlcml2YXRpb25JZHgsXG4gIH07XG59XG5cbi8qKlxuICogU0xJUC0wMDEwIGhhcmRlbmVkIGRlcml2YXRpb24gb2YgYSBzYWZlIHVzZXIgY2hpbGQgZnJvbSBhbiBlZDI1NTE5IHJvb3Qgc2VjcmV0IHNlZWQuXG4gKlxuICogYHJvb3RQcnZgIGlzIGEgU3RlbGxhciBTdHJLZXkgYFPigKZgIHNlY3JldCBzZWVkICh3aGF0IHNsb3Qt4pGjIGBlZDI1NTE5TXVsdGlzaWdgIHVzZXIgcm9vdHMgc3RvcmUpLlxuICogVGhlIGRlcml2YXRpb24gcmV1c2VzIHRoZSBleGlzdGluZyBTTElQLTAwMTAgaW1wbGVtZW50YXRpb24ge0BsaW5rIEVkMjU1MTlLZXlEZXJpdmVyLmRlcml2ZVBhdGh9XG4gKiAoaGFyZGVuZWQtb25seSBDS0RQcml2IG92ZXIgdGhlIGBlZDI1NTE5IHNlZWRgIEhNQUMgbWFzdGVyKSwgdGhlbiBleHBhbmRzIHRoZSByZXN1bHRpbmcgMzItYnl0ZVxuICogY2hpbGQgc2VlZCBpbnRvIGEga2V5cGFpciB3aXRoIGBuYWNsYC4gVGhlIGNoaWxkIGBwdWJgIGlzIGEgYmFyZSBTdHJLZXkgYEfigKZgOyB0aGUgYHBydmAgaXMgdGhlXG4gKiByYXcgMzItYnl0ZSBjaGlsZCBzZWVkIGFzIGhleCAodGhlIHNlZWQgaW5wdXQgYSBzaWduZXIgbmVlZHMpLlxuICpcbiAqIFVubGlrZSB0aGUgc2VjcDI1NmsxIHBhdGgsIGVkMjU1MTkgaGFyZGVuZWQgZGVyaXZhdGlvbiBuZWVkcyBubyBjaGFpbiBjb2RlIOKAlCB0aGUgY29tcG9zaXRlXG4gKiBgcHVi4oCWY2hhaW5Db2RlYCBmb3JtIGlzIG9ubHkgZm9yIFNPRlQgY28tc2lnbmVyIGRlcml2YXRpb24gYW5kIGlzIG5vdCB1c2VkIGhlcmUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZXJpdmVTYWZlQ2hpbGRFZDI1NTE5SGFyZGVuZWQocm9vdFBydjogc3RyaW5nLCBpbmRleDogc3RyaW5nIHwgbnVtYmVyKTogU2FmZUhhcmRlbmVkQ2hpbGRLZXkge1xuICBjb25zdCBpZHggPSBwYXJzZVNhZmVEZXJpdmF0aW9uSW5kZXgoaW5kZXgpO1xuICBjb25zdCBkZXJpdmF0aW9uUGF0aCA9IGdldFNhZmVIYXJkZW5lZERlcml2YXRpb25QYXRoKGlkeCk7XG4gIGNvbnN0IHJhd1NlZWRIZXggPSBkZWNvZGVFZDI1NTE5U3RyS2V5U2VjcmV0U2VlZChyb290UHJ2KS50b1N0cmluZygnaGV4Jyk7XG4gIGNvbnN0IGNoaWxkU2VlZCA9IEVkMjU1MTlLZXlEZXJpdmVyLmRlcml2ZVBhdGgoZGVyaXZhdGlvblBhdGgsIHJhd1NlZWRIZXgpLmtleTtcbiAgY29uc3Qga2V5UGFpciA9IG5hY2wuc2lnbi5rZXlQYWlyLmZyb21TZWVkKFVpbnQ4QXJyYXkuZnJvbShjaGlsZFNlZWQpKTtcbiAgY29uc3QgcHViID0gZW5jb2RlRWQyNTUxOVN0cktleVB1YmxpY0tleShCdWZmZXIuZnJvbShrZXlQYWlyLnB1YmxpY0tleSkpO1xuICByZXR1cm4ge1xuICAgIHBydjogQnVmZmVyLmZyb20oY2hpbGRTZWVkKS50b1N0cmluZygnaGV4JyksXG4gICAgcHViLFxuICAgIGRlcml2YXRpb25QYXRoLFxuICB9O1xufVxuIl19
184
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2FmZURlcml2YXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2FmZURlcml2YXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBbUNBLDREQWFDO0FBRUQsc0VBRUM7QUEwQkQsd0ZBT0M7QUFtQkQsMEVBSUM7QUFHRCxrRkFPQztBQXdCRCxnRkFnQkM7QUFjRCx3RUFZQztBQXhMRDs7Ozs7Ozs7OztHQVVHO0FBQ0gseUNBQTJCO0FBQzNCLGdEQUFrQztBQUNsQyw4Q0FBd0Q7QUFDeEQsNENBQWlEO0FBQ2pELDJEQUF3RDtBQUN4RCxxQ0FBMkM7QUFDM0MsNkNBQTJGO0FBRTlFLFFBQUEsc0NBQXNDLEdBQUcsYUFBYSxDQUFDO0FBZ0JwRSxTQUFnQix3QkFBd0IsQ0FBQyxLQUFzQjtJQUM3RCxJQUFJLEdBQVcsQ0FBQztJQUNoQixJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsRUFBRSxDQUFDO1FBQzlCLEdBQUcsR0FBRyxLQUFLLENBQUM7SUFDZCxDQUFDO1NBQU0sSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDL0IsR0FBRyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN0QixDQUFDO1NBQU0sQ0FBQztRQUNOLE1BQU0sSUFBSSxLQUFLLENBQUMsa0NBQWtDLEtBQUssb0NBQW9DLENBQUMsQ0FBQztJQUMvRixDQUFDO0lBQ0QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLElBQUksR0FBRyxHQUFHLENBQUMsSUFBSSxHQUFHLEdBQUcseUJBQWUsRUFBRSxDQUFDO1FBQy9ELE1BQU0sSUFBSSxLQUFLLENBQUMsa0NBQWtDLEtBQUssb0NBQW9DLENBQUMsQ0FBQztJQUMvRixDQUFDO0lBQ0QsT0FBTyxHQUFHLENBQUM7QUFDYixDQUFDO0FBRUQsU0FBZ0IsNkJBQTZCLENB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QUUsSUFBSSxDQUFDLEdBQUcsRUFBRTtRQUN0QyxLQUFLLEVBQUUsYUFBYTtLQUNyQixDQUFDO0FBQ0osQ0FBQztBQUVEOzs7Ozs7Ozs7OztHQVdHO0FBQ0gsU0FBZ0IsOEJBQThCLENBQUMsT0FBZSxFQUFFLEtBQXNCO0lBQ3BGLE1BQU0sR0FBRyxHQUFHLHdCQUF3QixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzVDLE1BQU0sY0FBYyxHQUFHLDZCQUE2QixDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzFELE1BQU0sVUFBVSxHQUFHLElBQUEsMENBQTZCLEVBQUMsT0FBTyxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzFFLE1BQU0sU0FBUyxHQUFHLHFDQUFpQixDQUFDLFVBQVUsQ0FBQyxjQUFjLEVBQUUsVUFBVSxDQUFDLENBQUMsR0FBRyxDQUFDO0lBQy9FLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7SUFDdkUsTUFBTSxHQUFHLEdBQUcsSUFBQSx5Q0FBNEIsRUFBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO0lBQ3pFLE9BQU87UUFDTCxHQUFHLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDO1FBQzNDLEdBQUc7UUFDSCxjQUFjO0tBQ2YsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBwcmV0dGllclxuICpcbiAqIEBleHBlcmltZW50YWwgU2hhcmVkIHNhZmUgY2hpbGQgZGVyaXZhdGlvbiBmb3IgbWludCwgc2lnbiwgYW5kIHJlY292ZXJ5LlxuICpcbiAqIFVzZXIgY2hpbGQ6IGhhcmRlbmVkIGBtLzxpbmRleD4nYCBmcm9tIHRoZSBzZXF1ZW50aWFsIGBzYWZlLmRlcml2YXRpb25JbmRleFtzbG90XWAuXG4gKiBCYWNrdXAgLyBCaXRHbyBjaGlsZHJlbiBhcmUgc29mdC1kZXJpdmVkIGF0IGBtLzxpbmRleD5gIGNsaWVudC1zaWRlIGZvciByZWNvdmVyeS5cbiAqXG4gKiBEbyBub3QgdXNlIGBkZXJpdmVkRnJvbVBhcmVudFdpdGhTZWVkYCAvIGBkZXJpdmVLZXlXaXRoU2VlZGAgKGBtLzk5OTk5OS9hL2JgKSDigJRcbiAqIHRoYXQgaXMgdGhlIGN1c3RvZHkgaGFzaGVkIHBhdGggYW5kIGNhbm5vdCByZXByb2R1Y2UgYSBzYWZlIGNoaWxkLlxuICovXG5pbXBvcnQgKiBhcyB0IGZyb20gJ2lvLXRzJztcbmltcG9ydCAqIGFzIG5hY2wgZnJvbSAndHdlZXRuYWNsJztcbmltcG9ydCB7IGJpcDMyLCBCSVAzMkludGVyZmFjZSB9IGZyb20gJ0BiaXRnby91dHhvLWxpYic7XG5pbXBvcnQgeyBNQVhfQklQMzJfSU5ERVggfSBmcm9tICdAYml0Z28vc3RhdGljcyc7XG5pbXBvcnQgeyBFZDI1NTE5S2V5RGVyaXZlciB9IGZyb20gJy4vZWQyNTUxOUtleURlcml2ZXInO1xuaW1wb3J0IHsgZGVjb2RlV2l0aENvZGVjIH0gZnJvbSAnLi9jb2RlY3MnO1xuaW1wb3J0IHsgZGVjb2RlRWQyNTUxOVN0cktleVNlY3JldFNlZWQsIGVuY29kZUVkMjU1MTlTdHJLZXlQdWJsaWNLZXkgfSBmcm9tICcuL2VkMjU1MTlQdWInO1xuXG5leHBvcnQgY29uc3QgREVSSVZFRF9GUk9NX1BBUkVOVF9XSVRIX0hBUkRFTkVEX1BBVEggPSAvXm1cXC8oXFxkKyknJC87XG5cbmV4cG9ydCB0eXBlIFNhZmVDaGlsZEtleU5hbWUgPSAndXNlcicgfCAnYmFja3VwJyB8ICdiaXRnbyc7XG5cbnR5cGUgQ2hpbGRLZXlTaGFwZTxLIGV4dGVuZHMgU2FmZUNoaWxkS2V5TmFtZT4gPSBLIGV4dGVuZHMgJ2JpdGdvJyA/IHsgcHViOiBzdHJpbmcgfSA6IHsgcHJ2OiBzdHJpbmc7IHB1Yjogc3RyaW5nIH07XG5cbmV4cG9ydCB0eXBlIFNhZmVDaGlsZFRyaXBsZXQgPSB7XG4gIGluZGV4OiBudW1iZXI7XG59ICYge1xuICBbSyBpbiBTYWZlQ2hpbGRLZXlOYW1lXTogQ2hpbGRLZXlTaGFwZTxLPjtcbn07XG5cbmV4cG9ydCB0eXBlIFNhZmVDaGlsZFRyaXBsZXRQdWJzID0ge1xuICBbSyBpbiBTYWZlQ2hpbGRLZXlOYW1lXTogeyBwdWI6IHN0cmluZyB9O1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlU2FmZURlcml2YXRpb25JbmRleChpbmRleDogc3RyaW5nIHwgbnVtYmVyKTogbnVtYmVyIHtcbiAgbGV0IGlkeDogbnVtYmVyO1xuICBpZiAodHlwZW9mIGluZGV4ID09PSAnbnVtYmVyJykge1xuICAgIGlkeCA9IGluZGV4O1xuICB9IGVsc2UgaWYgKC9eXFxkKyQvLnRlc3QoaW5kZXgpKSB7XG4gICAgaWR4ID0gTnVtYmVyKGluZGV4KTtcbiAgfSBlbHNlIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgc2FmZSBkZXJpdmF0aW9uIGluZGV4ICcke2luZGV4fSc6IGV4cGVjdGVkIGEgbm9uLW5lZ2F0aXZlIGludGVnZXJgKTtcbiAgfVxuICBpZiAoIU51bWJlci5pc0ludGVnZXIoaWR4KSB8fCBpZHggPCAwIHx8IGlkeCA+IE1BWF9CSVAzMl9JTkRFWCkge1xuICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBzYWZlIGRlcml2YXRpb24gaW5kZXggJyR7aW5kZXh9JzogZXhwZWN0ZWQgYSBub24tbmVnYXRpdmUgaW50ZWdlcmApO1xuICB9XG4gIHJldHVybiBpZHg7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRTYWZlSGFyZGVuZWREZXJpdmF0aW9uUGF0aChpbmRleDogc3RyaW5nIHwgbnVtYmVyKTogc3RyaW5nIHtcbiAgcmV0dXJuIGBtLyR7cGFyc2VTYWZlRGVyaXZhdGlvbkluZGV4KGluZGV4KX0nYDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEZXJpdmVkRnJvbVBhcmVudFdpdGhIYXJkZW5lZFBhdGhCcmFuZCB7XG4gIHJlYWRvbmx5IERlcml2ZWRGcm9tUGFyZW50V2l0aEhhcmRlbmVkUGF0aDogdW5pcXVlIHN5bWJvbDtcbn1cblxuZXhwb3J0IHR5cGUgRGVyaXZlZEZyb21QYXJlbnRXaXRoSGFyZGVuZWRQYXRoID0gdC5CcmFuZGVkPHN0cmluZywgRGVyaXZlZEZyb21QYXJlbnRXaXRoSGFyZGVuZWRQYXRoQnJhbmQ+O1xuXG5leHBvcnQgY29uc3QgRGVyaXZlZEZyb21QYXJlbnRXaXRoSGFyZGVuZWRQYXRoID0gdC5icmFuZChcbiAgdC5zdHJpbmcsXG4gIChzKTogcyBpcyBEZXJpdmVkRnJvbVBhcmVudFdpdGhIYXJkZW5lZFBhdGggPT4gcGFyc2VEZXJpdmVkRnJvbVBhcmVudFdpdGhIYXJkZW5lZFBhdGhJbmRleChzKSAhPT0gdW5kZWZpbmVkLFxuICAnRGVyaXZlZEZyb21QYXJlbnRXaXRoSGFyZGVuZWRQYXRoJ1xuKTtcblxuZnVuY3Rpb24gcGFyc2VEZXJpdmVkRnJvbVBhcmVudFdpdGhIYXJkZW5lZFBhdGhJbmRleChwYXRoOiBzdHJpbmcpOiBudW1iZXIgfCB1bmRlZmluZWQge1xuICBjb25zdCBtYXRjaCA9IERFUklWRURfRlJPTV9QQVJFTlRfV0lUSF9IQVJERU5FRF9QQVRILmV4ZWMocGF0aCk7XG4gIGlmICghbWF0Y2gpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG4gIHRyeSB7XG4gICAgcmV0dXJuIHBhcnNlU2FmZURlcml2YXRpb25JbmRleChtYXRjaFsxXSk7XG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlRGVyaXZlZEZyb21QYXJlbnRXaXRoSGFyZGVuZWRQYXRoKHBhdGg6IHN0cmluZyk6IG51bWJlciB7XG4gIGNvbnN0IHZhbGlkYXRlZCA9IGRlY29kZVdpdGhDb2RlYyhEZXJpdmVkRnJvbVBhcmVudFdpdGhIYXJkZW5lZFBhdGgsIHBhdGgsICdkZXJpdmVkRnJvbVBhcmVudFdpdGhIYXJkZW5lZFBhdGgnKTtcbiAgY29uc3QgaW5kZXggPSBwYXJzZURlcml2ZWRGcm9tUGFyZW50V2l0aEhhcmRlbmVkUGF0aEluZGV4KHZhbGlkYXRlZCk7XG4gIGlmIChpbmRleCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIGRlcml2ZWRGcm9tUGFyZW50V2l0aEhhcmRlbmVkUGF0aCAnJHtwYXRofSc6IGV4cGVjdGVkIG0vPG4+J2ApO1xuICB9XG4gIHJldHVybiBpbmRleDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTYWZlSGFyZGVuZWRDaGlsZEtleSB7XG4gIHBydjogc3RyaW5nO1xuICBwdWI6IHN0cmluZztcbiAgZGVyaXZhdGlvblBhdGg6IHN0cmluZztcbn1cblxuZnVuY3Rpb24gY2hpbGRGcm9tTm9kZShjaGlsZDogQklQMzJJbnRlcmZhY2UsIGRlcml2YXRpb25QYXRoOiBzdHJpbmcpOiBTYWZlSGFyZGVuZWRDaGlsZEtleSB7XG4gIGlmICghY2hpbGQucHJpdmF0ZUtleSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgRmFpbGVkIHRvIGRlcml2ZSBoYXJkZW5lZCBzYWZlIGNoaWxkIGF0ICR7ZGVyaXZhdGlvblBhdGh9YCk7XG4gIH1cbiAgcmV0dXJuIHtcbiAgICBwcnY6IGNoaWxkLnRvQmFzZTU4KCksXG4gICAgcHViOiBjaGlsZC5uZXV0ZXJlZCgpLnRvQmFzZTU4KCksXG4gICAgZGVyaXZhdGlvblBhdGgsXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkZXJpdmVTYWZlQ2hpbGRIYXJkZW5lZEZyb21YcHJ2KHJvb3RYcHJ2OiBzdHJpbmcsIGluZGV4OiBzdHJpbmcgfCBudW1iZXIpOiBTYWZlSGFyZGVuZWRDaGlsZEtleSB7XG4gIGNvbnN0IGlkeCA9IHBhcnNlU2FmZURlcml2YXRpb25JbmRleChpbmRleCk7XG4gIGNvbnN0IGRlcml2YXRpb25QYXRoID0gZ2V0U2FmZUhhcmRlbmVkRGVyaXZhdGlvblBhdGgoaWR4KTtcbiAgcmV0dXJuIGNoaWxkRnJvbU5vZGUoYmlwMzIuZnJvbUJhc2U1OChyb290WHBydikuZGVyaXZlSGFyZGVuZWQoaWR4KSwgZGVyaXZhdGlvblBhdGgpO1xufVxuXG4vKiogUmUtZGVyaXZlIGFuZCBhc3NlcnQgYm90aCByZXN1bHRzIG1hdGNoIGJlZm9yZSB0aGUgY2hpbGQgaXMgcmVnaXN0ZXJlZC4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZXJpdmVBbmRTZWxmQ2hlY2tTYWZlQ2hpbGRIYXJkZW5lZChyb290WHBydjogc3RyaW5nLCBpbmRleDogc3RyaW5nIHwgbnVtYmVyKTogU2FmZUhhcmRlbmVkQ2hpbGRLZXkge1xuICBjb25zdCBmaXJzdCA9IGRlcml2ZVNhZmVDaGlsZEhhcmRlbmVkRnJvbVhwcnYocm9vdFhwcnYsIGluZGV4KTtcbiAgY29uc3Qgc2Vjb25kID0gZGVyaXZlU2FmZUNoaWxkSGFyZGVuZWRGcm9tWHBydihyb290WHBydiwgaW5kZXgpO1xuICBpZiAoZmlyc3QucHViICE9PSBzZWNvbmQucHViIHx8IGZpcnN0LnBydiAhPT0gc2Vjb25kLnBydikge1xuICAgIHRocm93IG5ldyBFcnJvcihgU2FmZSBjaGlsZCBzZWxmLWNoZWNrIGZhaWxlZCBhdCAke2ZpcnN0LmRlcml2YXRpb25QYXRofTogZGVyaXZhdGlvbiB3YXMgbm90IGRldGVybWluaXN0aWNgKTtcbiAgfVxuICByZXR1cm4gZmlyc3Q7XG59XG5cbmZ1bmN0aW9uIGRlcml2ZVNhZmVDaGlsZFNvZnRGcm9tWHBydihyb290WHBydjogc3RyaW5nLCBpbmRleDogbnVtYmVyKTogeyBwcnY6IHN0cmluZzsgcHViOiBzdHJpbmcgfSB7XG4gIGNvbnN0IGNoaWxkID0gYmlwMzIuZnJvbUJhc2U1OChyb290WHBydikuZGVyaXZlKGluZGV4KTtcbiAgaWYgKCFjaGlsZC5wcml2YXRlS2V5KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBGYWlsZWQgdG8gc29mdC1kZXJpdmUgc2FmZSBjaGlsZCBhdCBtLyR7aW5kZXh9OiByb290IGhhcyBubyBwcml2YXRlIGtleWApO1xuICB9XG4gIHJldHVybiB7IHBydjogY2hpbGQudG9CYXNlNTgoKSwgcHViOiBjaGlsZC5uZXV0ZXJlZCgpLnRvQmFzZTU4KCkgfTtcbn1cblxuZnVuY3Rpb24gZGVyaXZlU2FmZUNoaWxkU29mdEZyb21YcHViKHJvb3RYcHViOiBzdHJpbmcsIGluZGV4OiBudW1iZXIpOiB7IHB1Yjogc3RyaW5nIH0ge1xuICBjb25zdCBjaGlsZCA9IGJpcDMyLmZyb21CYXNlNTgocm9vdFhwdWIpLmRlcml2ZShpbmRleCk7XG4gIGlmIChjaGlsZC5wcml2YXRlS2V5KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBGYWlsZWQgdG8gc29mdC1kZXJpdmUgc2FmZSBjaGlsZCBhdCBtLyR7aW5kZXh9OiByb290IGhhcyBhIHByaXZhdGUga2V5YCk7XG4gIH1cbiAgcmV0dXJuIHsgcHViOiBjaGlsZC5uZXV0ZXJlZCgpLnRvQmFzZTU4KCkgfTtcbn1cblxuLyoqXG4gKiBEZXJpdmVzIHNsb3QtMSBjaGlsZCBrZXkgbWF0ZXJpYWwgZm9yIGEgY2FsbGVyLXN1cHBsaWVkIFNhZmUgaW5kZXguXG4gKlxuICogSW5kZXggZGlzY292ZXJ5IGJlbG9uZ3MgdG8gdGhlIG91dGVyIHJlY292ZXJ5IHNjYW4gKFdDTi0yNzQxL1dDTi0yNzQyKS5cbiAqIFRoaXMgcHVyZSBmdW5jdGlvbiByZXByb2R1Y2VzIHRoZSB0cmlwbGV0IGZvciBvbmUgY2FuZGlkYXRlIGluZGV4LlxuICovXG5leHBvcnQgZnVuY3Rpb24gZGVyaXZlU2FmZVNlY3AyNTZrMU11bHRpc2lnVHJpcGxldChwYXJhbXM6IHtcbiAgdXNlclJvb3RYcHJ2OiBzdHJpbmc7XG4gIGJhY2t1cFJvb3RYcHJ2OiBzdHJpbmc7XG4gIGJpdGdvUm9vdFhwdWI6IHN0cmluZztcbiAgaW5kZXg6IHN0cmluZyB8IG51bWJlcjtcbn0pOiBTYWZlQ2hpbGRUcmlwbGV0IHtcbiAgY29uc3QgZGVyaXZhdGlvbklkeCA9IHBhcnNlU2FmZURlcml2YXRpb25JbmRleChwYXJhbXMuaW5kZXgpO1xuICBjb25zdCB1c2VyID0gZGVyaXZlU2FmZUNoaWxkSGFyZGVuZWRGcm9tWHBydihwYXJhbXMudXNlclJvb3RYcHJ2LCBkZXJpdmF0aW9uSWR4KTtcbiAgY29uc3QgYmFja3VwID0gZGVyaXZlU2FmZUNoaWxkU29mdEZyb21YcHJ2KHBhcmFtcy5iYWNrdXBSb290WHBydiwgZGVyaXZhdGlvbklkeCk7XG4gIGNvbnN0IGJpdGdvID0gZGVyaXZlU2FmZUNoaWxkU29mdEZyb21YcHViKHBhcmFtcy5iaXRnb1Jvb3RYcHViLCBkZXJpdmF0aW9uSWR4KTtcbiAgcmV0dXJuIHtcbiAgICBiYWNrdXAsXG4gICAgYml0Z28sXG4gICAgdXNlcjogeyBwcnY6IHVzZXIucHJ2LCBwdWI6IHVzZXIucHViIH0sXG4gICAgaW5kZXg6IGRlcml2YXRpb25JZHgsXG4gIH07XG59XG5cbi8qKlxuICogU0xJUC0wMDEwIGhhcmRlbmVkIGRlcml2YXRpb24gb2YgYSBzYWZlIHVzZXIgY2hpbGQgZnJvbSBhbiBlZDI1NTE5IHJvb3Qgc2VjcmV0IHNlZWQuXG4gKlxuICogYHJvb3RQcnZgIGlzIGEgU3RlbGxhciBTdHJLZXkgYFPigKZgIHNlY3JldCBzZWVkICh3aGF0IHNsb3Qt4pGjIGBlZDI1NTE5TXVsdGlzaWdgIHVzZXIgcm9vdHMgc3RvcmUpLlxuICogVGhlIGRlcml2YXRpb24gcmV1c2VzIHRoZSBleGlzdGluZyBTTElQLTAwMTAgaW1wbGVtZW50YXRpb24ge0BsaW5rIEVkMjU1MTlLZXlEZXJpdmVyLmRlcml2ZVBhdGh9XG4gKiAoaGFyZGVuZWQtb25seSBDS0RQcml2IG92ZXIgdGhlIGBlZDI1NTE5IHNlZWRgIEhNQUMgbWFzdGVyKSwgdGhlbiBleHBhbmRzIHRoZSByZXN1bHRpbmcgMzItYnl0ZVxuICogY2hpbGQgc2VlZCBpbnRvIGEga2V5cGFpciB3aXRoIGBuYWNsYC4gVGhlIGNoaWxkIGBwdWJgIGlzIGEgYmFyZSBTdHJLZXkgYEfigKZgOyB0aGUgYHBydmAgaXMgdGhlXG4gKiByYXcgMzItYnl0ZSBjaGlsZCBzZWVkIGFzIGhleCAodGhlIHNlZWQgaW5wdXQgYSBzaWduZXIgbmVlZHMpLlxuICpcbiAqIFVubGlrZSB0aGUgc2VjcDI1NmsxIHBhdGgsIGVkMjU1MTkgaGFyZGVuZWQgZGVyaXZhdGlvbiBuZWVkcyBubyBjaGFpbiBjb2RlIOKAlCB0aGUgY29tcG9zaXRlXG4gKiBgcHVi4oCWY2hhaW5Db2RlYCBmb3JtIGlzIG9ubHkgZm9yIFNPRlQgY28tc2lnbmVyIGRlcml2YXRpb24gYW5kIGlzIG5vdCB1c2VkIGhlcmUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZXJpdmVTYWZlQ2hpbGRFZDI1NTE5SGFyZGVuZWQocm9vdFBydjogc3RyaW5nLCBpbmRleDogc3RyaW5nIHwgbnVtYmVyKTogU2FmZUhhcmRlbmVkQ2hpbGRLZXkge1xuICBjb25zdCBpZHggPSBwYXJzZVNhZmVEZXJpdmF0aW9uSW5kZXgoaW5kZXgpO1xuICBjb25zdCBkZXJpdmF0aW9uUGF0aCA9IGdldFNhZmVIYXJkZW5lZERlcml2YXRpb25QYXRoKGlkeCk7XG4gIGNvbnN0IHJhd1NlZWRIZXggPSBkZWNvZGVFZDI1NTE5U3RyS2V5U2VjcmV0U2VlZChyb290UHJ2KS50b1N0cmluZygnaGV4Jyk7XG4gIGNvbnN0IGNoaWxkU2VlZCA9IEVkMjU1MTlLZXlEZXJpdmVyLmRlcml2ZVBhdGgoZGVyaXZhdGlvblBhdGgsIHJhd1NlZWRIZXgpLmtleTtcbiAgY29uc3Qga2V5UGFpciA9IG5hY2wuc2lnbi5rZXlQYWlyLmZyb21TZWVkKFVpbnQ4QXJyYXkuZnJvbShjaGlsZFNlZWQpKTtcbiAgY29uc3QgcHViID0gZW5jb2RlRWQyNTUxOVN0cktleVB1YmxpY0tleShCdWZmZXIuZnJvbShrZXlQYWlyLnB1YmxpY0tleSkpO1xuICByZXR1cm4ge1xuICAgIHBydjogQnVmZmVyLmZyb20oY2hpbGRTZWVkKS50b1N0cmluZygnaGV4JyksXG4gICAgcHViLFxuICAgIGRlcml2YXRpb25QYXRoLFxuICB9O1xufVxuIl19