@bitgo-beta/sdk-lib-mpc 8.2.1-alpha.6 → 8.2.1-alpha.60

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (76) hide show
  1. package/CHANGELOG.md +441 -0
  2. package/dist/src/curves/constant.d.ts +2 -0
  3. package/dist/src/curves/constant.d.ts.map +1 -0
  4. package/dist/src/curves/constant.js +6 -0
  5. package/dist/src/curves/{baseCurve.d.ts → ed25519.d.ts} +9 -7
  6. package/dist/src/curves/ed25519.d.ts.map +1 -0
  7. package/dist/src/curves/ed25519.js +72 -0
  8. package/dist/src/curves/ed25519Bip32HdTree.d.ts +10 -0
  9. package/dist/src/curves/ed25519Bip32HdTree.d.ts.map +1 -0
  10. package/dist/src/curves/ed25519Bip32HdTree.js +85 -0
  11. package/dist/src/curves/index.d.ts +6 -1
  12. package/dist/src/curves/index.d.ts.map +1 -1
  13. package/dist/src/curves/index.js +7 -2
  14. package/dist/src/curves/secp256k1.d.ts +3 -1
  15. package/dist/src/curves/secp256k1.d.ts.map +1 -1
  16. package/dist/src/curves/secp256k1.js +14 -7
  17. package/dist/src/curves/secp256k1Bip32HdTree.d.ts +8 -0
  18. package/dist/src/curves/secp256k1Bip32HdTree.d.ts.map +1 -0
  19. package/dist/src/curves/secp256k1Bip32HdTree.js +54 -0
  20. package/dist/src/curves/types.d.ts +36 -0
  21. package/dist/src/curves/types.d.ts.map +1 -0
  22. package/dist/src/curves/types.js +3 -0
  23. package/dist/src/curves/util.d.ts +2 -0
  24. package/dist/src/curves/util.d.ts.map +1 -0
  25. package/dist/src/curves/util.js +11 -0
  26. package/dist/src/hashCommitment.d.ts +17 -0
  27. package/dist/src/hashCommitment.d.ts.map +1 -0
  28. package/dist/src/hashCommitment.js +45 -0
  29. package/dist/src/index.d.ts +6 -2
  30. package/dist/src/index.d.ts.map +1 -1
  31. package/dist/src/index.js +20 -3
  32. package/dist/src/schnorrProof.d.ts +22 -0
  33. package/dist/src/schnorrProof.d.ts.map +1 -0
  34. package/dist/src/schnorrProof.js +62 -0
  35. package/dist/src/shamir/index.d.ts +3 -0
  36. package/dist/src/shamir/index.d.ts.map +1 -0
  37. package/dist/src/shamir/index.js +15 -0
  38. package/dist/src/shamir/shamir.d.ts +38 -0
  39. package/dist/src/shamir/shamir.d.ts.map +1 -0
  40. package/dist/src/shamir/shamir.js +136 -0
  41. package/dist/src/shamir/types.d.ts +5 -0
  42. package/dist/src/shamir/types.d.ts.map +1 -0
  43. package/dist/src/shamir/types.js +3 -0
  44. package/dist/src/tss/ecdsa/index.d.ts +1 -0
  45. package/dist/src/tss/ecdsa/index.d.ts.map +1 -1
  46. package/dist/src/tss/ecdsa/index.js +3 -2
  47. package/dist/src/tss/ecdsa/rangeproof.d.ts.map +1 -1
  48. package/dist/src/tss/ecdsa/rangeproof.js +4 -1
  49. package/dist/src/tss/ecdsa/types.d.ts +6 -1
  50. package/dist/src/tss/ecdsa/types.d.ts.map +1 -1
  51. package/dist/src/tss/ecdsa/types.js +1 -1
  52. package/dist/src/tss/ecdsa/zkVProof.d.ts +25 -0
  53. package/dist/src/tss/ecdsa/zkVProof.d.ts.map +1 -0
  54. package/dist/src/tss/ecdsa/zkVProof.js +71 -0
  55. package/dist/src/tss/ecdsa-dkls/commsLayer.d.ts +43 -0
  56. package/dist/src/tss/ecdsa-dkls/commsLayer.d.ts.map +1 -0
  57. package/dist/src/tss/ecdsa-dkls/commsLayer.js +212 -0
  58. package/dist/src/tss/ecdsa-dkls/dkg.d.ts +20 -0
  59. package/dist/src/tss/ecdsa-dkls/dkg.d.ts.map +1 -0
  60. package/dist/src/tss/ecdsa-dkls/dkg.js +149 -0
  61. package/dist/src/tss/ecdsa-dkls/index.d.ts +3 -0
  62. package/dist/src/tss/ecdsa-dkls/index.d.ts.map +1 -0
  63. package/dist/src/tss/ecdsa-dkls/index.js +25 -0
  64. package/dist/src/tss/ecdsa-dkls/types.d.ts +61 -0
  65. package/dist/src/tss/ecdsa-dkls/types.d.ts.map +1 -0
  66. package/dist/src/tss/ecdsa-dkls/types.js +60 -0
  67. package/dist/src/types.d.ts +14 -0
  68. package/dist/src/types.d.ts.map +1 -0
  69. package/dist/src/types.js +3 -0
  70. package/dist/src/util.d.ts +8 -2
  71. package/dist/src/util.d.ts.map +1 -1
  72. package/dist/src/util.js +30 -8
  73. package/dist/tsconfig.tsbuildinfo +1 -3645
  74. package/package.json +8 -4
  75. package/dist/src/curves/baseCurve.d.ts.map +0 -1
  76. package/dist/src/curves/baseCurve.js +0 -6
@@ -0,0 +1,61 @@
1
+ interface BroadcastMessage<T> {
2
+ payload: T;
3
+ from: number;
4
+ }
5
+ interface P2PMessage<T, G> {
6
+ payload: T;
7
+ from: number;
8
+ commitment?: G;
9
+ to: number;
10
+ }
11
+ export declare enum DkgState {
12
+ Uninitialized = 0,
13
+ Round1 = 1,
14
+ Round2 = 2,
15
+ Round3 = 3,
16
+ Round4 = 4,
17
+ Complete = 5,
18
+ InvalidState = 6
19
+ }
20
+ export declare type AuthEncMessage = {
21
+ encryptedMessage: string;
22
+ signature: string;
23
+ };
24
+ export declare type AuthMessage = {
25
+ message: string;
26
+ signature: string;
27
+ };
28
+ export declare type PartyGpgKey = {
29
+ partyId: number;
30
+ gpgKey: string;
31
+ };
32
+ export declare type SerializedBroadcastMessage = BroadcastMessage<string>;
33
+ export declare type DeserializedBroadcastMessage = BroadcastMessage<Uint8Array>;
34
+ export declare type SerializedP2PMessage = P2PMessage<string, string>;
35
+ export declare type DeserializedP2PMessage = P2PMessage<Uint8Array, Uint8Array>;
36
+ export declare type AuthEncP2PMessage = P2PMessage<AuthEncMessage, string>;
37
+ export declare type AuthBroadcastMessage = BroadcastMessage<AuthMessage>;
38
+ export declare type SerializedMessages = {
39
+ p2pMessages: SerializedP2PMessage[];
40
+ broadcastMessages: SerializedBroadcastMessage[];
41
+ };
42
+ export declare type AuthEncMessages = {
43
+ p2pMessages: AuthEncP2PMessage[];
44
+ broadcastMessages: AuthBroadcastMessage[];
45
+ };
46
+ export declare type DeserializedMessages = {
47
+ p2pMessages: DeserializedP2PMessage[];
48
+ broadcastMessages: DeserializedBroadcastMessage[];
49
+ };
50
+ /**
51
+ * Serializes messages payloads to base64 strings.
52
+ * @param messages
53
+ */
54
+ export declare function serializeMessages(messages: DeserializedMessages): SerializedMessages;
55
+ /**
56
+ * Desrializes messages payloads to Uint8Array.
57
+ * @param messages
58
+ */
59
+ export declare function deserializeMessages(messages: SerializedMessages): DeserializedMessages;
60
+ export {};
61
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/tss/ecdsa-dkls/types.ts"],"names":[],"mappings":"AACA,UAAU,gBAAgB,CAAC,CAAC;IAC1B,OAAO,EAAE,CAAC,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;CACd;AAGD,UAAU,UAAU,CAAC,CAAC,EAAE,CAAC;IACvB,OAAO,EAAE,CAAC,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,CAAC,CAAC;IACf,EAAE,EAAE,MAAM,CAAC;CACZ;AAED,oBAAY,QAAQ;IAClB,aAAa,IAAI;IACjB,MAAM,IAAA;IACN,MAAM,IAAA;IACN,MAAM,IAAA;IACN,MAAM,IAAA;IACN,QAAQ,IAAA;IACR,YAAY,IAAA;CACb;AAED,oBAAY,cAAc,GAAG;IAC3B,gBAAgB,EAAE,MAAM,CAAC;IACzB,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AACF,oBAAY,WAAW,GAAG;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AACF,oBAAY,WAAW,GAAG;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AACF,oBAAY,0BAA0B,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC;AAClE,oBAAY,4BAA4B,GAAG,gBAAgB,CAAC,UAAU,CAAC,CAAC;AACxE,oBAAY,oBAAoB,GAAG,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAC9D,oBAAY,sBAAsB,GAAG,UAAU,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;AACxE,oBAAY,iBAAiB,GAAG,UAAU,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;AACnE,oBAAY,oBAAoB,GAAG,gBAAgB,CAAC,WAAW,CAAC,CAAC;AACjE,oBAAY,kBAAkB,GAAG;IAC/B,WAAW,EAAE,oBAAoB,EAAE,CAAC;IACpC,iBAAiB,EAAE,0BAA0B,EAAE,CAAC;CACjD,CAAC;AACF,oBAAY,eAAe,GAAG;IAC5B,WAAW,EAAE,iBAAiB,EAAE,CAAC;IACjC,iBAAiB,EAAE,oBAAoB,EAAE,CAAC;CAC3C,CAAC;AACF,oBAAY,oBAAoB,GAAG;IACjC,WAAW,EAAE,sBAAsB,EAAE,CAAC;IACtC,iBAAiB,EAAE,4BAA4B,EAAE,CAAC;CACnD,CAAC;AAEF;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,oBAAoB,GAAG,kBAAkB,CAiBpF;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,kBAAkB,GAAG,oBAAoB,CAiBtF"}
@@ -0,0 +1,60 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.deserializeMessages = exports.serializeMessages = exports.DkgState = void 0;
4
+ var DkgState;
5
+ (function (DkgState) {
6
+ DkgState[DkgState["Uninitialized"] = 0] = "Uninitialized";
7
+ DkgState[DkgState["Round1"] = 1] = "Round1";
8
+ DkgState[DkgState["Round2"] = 2] = "Round2";
9
+ DkgState[DkgState["Round3"] = 3] = "Round3";
10
+ DkgState[DkgState["Round4"] = 4] = "Round4";
11
+ DkgState[DkgState["Complete"] = 5] = "Complete";
12
+ DkgState[DkgState["InvalidState"] = 6] = "InvalidState";
13
+ })(DkgState = exports.DkgState || (exports.DkgState = {}));
14
+ /**
15
+ * Serializes messages payloads to base64 strings.
16
+ * @param messages
17
+ */
18
+ function serializeMessages(messages) {
19
+ return {
20
+ p2pMessages: messages.p2pMessages.map((m) => {
21
+ return {
22
+ to: m.to,
23
+ from: m.from,
24
+ payload: Buffer.from(m.payload).toString('base64'),
25
+ commitment: m.commitment ? Buffer.from(m.commitment).toString('base64') : m.commitment,
26
+ };
27
+ }),
28
+ broadcastMessages: messages.broadcastMessages.map((m) => {
29
+ return {
30
+ from: m.from,
31
+ payload: Buffer.from(m.payload).toString('base64'),
32
+ };
33
+ }),
34
+ };
35
+ }
36
+ exports.serializeMessages = serializeMessages;
37
+ /**
38
+ * Desrializes messages payloads to Uint8Array.
39
+ * @param messages
40
+ */
41
+ function deserializeMessages(messages) {
42
+ return {
43
+ p2pMessages: messages.p2pMessages.map((m) => {
44
+ return {
45
+ to: m.to,
46
+ from: m.from,
47
+ payload: new Uint8Array(Buffer.from(m.payload, 'base64')),
48
+ commitment: m.commitment ? new Uint8Array(Buffer.from(m.commitment, 'base64')) : undefined,
49
+ };
50
+ }),
51
+ broadcastMessages: messages.broadcastMessages.map((m) => {
52
+ return {
53
+ from: m.from,
54
+ payload: new Uint8Array(Buffer.from(m.payload, 'base64')),
55
+ };
56
+ }),
57
+ };
58
+ }
59
+ exports.deserializeMessages = deserializeMessages;
60
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvdHNzL2VjZHNhLWRrbHMvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBY0EsSUFBWSxRQVFYO0FBUkQsV0FBWSxRQUFRO0lBQ2xCLHlEQUFpQixDQUFBO0lBQ2pCLDJDQUFNLENBQUE7SUFDTiwyQ0FBTSxDQUFBO0lBQ04sMkNBQU0sQ0FBQTtJQUNOLDJDQUFNLENBQUE7SUFDTiwrQ0FBUSxDQUFBO0lBQ1IsdURBQVksQ0FBQTtBQUNkLENBQUMsRUFSVyxRQUFRLEdBQVIsZ0JBQVEsS0FBUixnQkFBUSxRQVFuQjtBQWlDRDs7O0dBR0c7QUFDSCxTQUFnQixpQkFBaUIsQ0FBQyxRQUE4QjtJQUM5RCxPQUFPO1FBQ0wsV0FBVyxFQUFFLFFBQVEsQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7WUFDMUMsT0FBTztnQkFDTCxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUU7Z0JBQ1IsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJO2dCQUNaLE9BQU8sRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDO2dCQUNsRCxVQUFVLEVBQUUsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVTthQUN2RixDQUFDO1FBQ0osQ0FBQyxDQUFDO1FBQ0YsaUJBQWlCLEVBQUUsUUFBUSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO1lBQ3RELE9BQU87Z0JBQ0wsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJO2dCQUNaLE9BQU8sRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDO2FBQ25ELENBQUM7UUFDSixDQUFDLENBQUM7S0FDSCxDQUFDO0FBQ0osQ0FBQztBQWpCRCw4Q0FpQkM7QUFFRDs7O0dBR0c7QUFDSCxTQUFnQixtQkFBbUIsQ0FBQyxRQUE0QjtJQUM5RCxPQUFPO1FBQ0wsV0FBVyxFQUFFLFFBQVEsQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7WUFDMUMsT0FBTztnQkFDTCxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUU7Z0JBQ1IsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJO2dCQUNaLE9BQU8sRUFBRSxJQUFJLFVBQVUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsUUFBUSxDQUFDLENBQUM7Z0JBQ3pELFVBQVUsRUFBRSxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxJQUFJLFVBQVUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxVQUFVLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUzthQUMzRixDQUFDO1FBQ0osQ0FBQyxDQUFDO1FBQ0YsaUJBQWlCLEVBQUUsUUFBUSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO1lBQ3RELE9BQU87Z0JBQ0wsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJO2dCQUNaLE9BQU8sRUFBRSxJQUFJLFVBQVUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsUUFBUSxDQUFDLENBQUM7YUFDMUQsQ0FBQztRQUNKLENBQUMsQ0FBQztLQUNILENBQUM7QUFDSixDQUFDO0FBakJELGtEQWlCQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIEJyb2FkY2FzdCBtZXNzYWdlIG1lYW50IHRvIGJlIHNlbnQgdG8gbXVsdGlwbGUgcGFydGllc1xuaW50ZXJmYWNlIEJyb2FkY2FzdE1lc3NhZ2U8VD4ge1xuICBwYXlsb2FkOiBUO1xuICBmcm9tOiBudW1iZXI7XG59XG5cbi8vIFAyUCBtZXNzYWdlIG1lYW50IHRvIGJlIHNlbnQgdG8gYSBzcGVjaWZpYyBwYXJ0eVxuaW50ZXJmYWNlIFAyUE1lc3NhZ2U8VCwgRz4ge1xuICBwYXlsb2FkOiBUO1xuICBmcm9tOiBudW1iZXI7XG4gIGNvbW1pdG1lbnQ/OiBHO1xuICB0bzogbnVtYmVyO1xufVxuXG5leHBvcnQgZW51bSBEa2dTdGF0ZSB7XG4gIFVuaW5pdGlhbGl6ZWQgPSAwLFxuICBSb3VuZDEsXG4gIFJvdW5kMixcbiAgUm91bmQzLFxuICBSb3VuZDQsXG4gIENvbXBsZXRlLFxuICBJbnZhbGlkU3RhdGUsXG59XG5cbmV4cG9ydCB0eXBlIEF1dGhFbmNNZXNzYWdlID0ge1xuICBlbmNyeXB0ZWRNZXNzYWdlOiBzdHJpbmc7XG4gIHNpZ25hdHVyZTogc3RyaW5nO1xufTtcbmV4cG9ydCB0eXBlIEF1dGhNZXNzYWdlID0ge1xuICBtZXNzYWdlOiBzdHJpbmc7XG4gIHNpZ25hdHVyZTogc3RyaW5nO1xufTtcbmV4cG9ydCB0eXBlIFBhcnR5R3BnS2V5ID0ge1xuICBwYXJ0eUlkOiBudW1iZXI7XG4gIGdwZ0tleTogc3RyaW5nO1xufTtcbmV4cG9ydCB0eXBlIFNlcmlhbGl6ZWRCcm9hZGNhc3RNZXNzYWdlID0gQnJvYWRjYXN0TWVzc2FnZTxzdHJpbmc+O1xuZXhwb3J0IHR5cGUgRGVzZXJpYWxpemVkQnJvYWRjYXN0TWVzc2FnZSA9IEJyb2FkY2FzdE1lc3NhZ2U8VWludDhBcnJheT47XG5leHBvcnQgdHlwZSBTZXJpYWxpemVkUDJQTWVzc2FnZSA9IFAyUE1lc3NhZ2U8c3RyaW5nLCBzdHJpbmc+O1xuZXhwb3J0IHR5cGUgRGVzZXJpYWxpemVkUDJQTWVzc2FnZSA9IFAyUE1lc3NhZ2U8VWludDhBcnJheSwgVWludDhBcnJheT47XG5leHBvcnQgdHlwZSBBdXRoRW5jUDJQTWVzc2FnZSA9IFAyUE1lc3NhZ2U8QXV0aEVuY01lc3NhZ2UsIHN0cmluZz47XG5leHBvcnQgdHlwZSBBdXRoQnJvYWRjYXN0TWVzc2FnZSA9IEJyb2FkY2FzdE1lc3NhZ2U8QXV0aE1lc3NhZ2U+O1xuZXhwb3J0IHR5cGUgU2VyaWFsaXplZE1lc3NhZ2VzID0ge1xuICBwMnBNZXNzYWdlczogU2VyaWFsaXplZFAyUE1lc3NhZ2VbXTtcbiAgYnJvYWRjYXN0TWVzc2FnZXM6IFNlcmlhbGl6ZWRCcm9hZGNhc3RNZXNzYWdlW107XG59O1xuZXhwb3J0IHR5cGUgQXV0aEVuY01lc3NhZ2VzID0ge1xuICBwMnBNZXNzYWdlczogQXV0aEVuY1AyUE1lc3NhZ2VbXTtcbiAgYnJvYWRjYXN0TWVzc2FnZXM6IEF1dGhCcm9hZGNhc3RNZXNzYWdlW107XG59O1xuZXhwb3J0IHR5cGUgRGVzZXJpYWxpemVkTWVzc2FnZXMgPSB7XG4gIHAycE1lc3NhZ2VzOiBEZXNlcmlhbGl6ZWRQMlBNZXNzYWdlW107XG4gIGJyb2FkY2FzdE1lc3NhZ2VzOiBEZXNlcmlhbGl6ZWRCcm9hZGNhc3RNZXNzYWdlW107XG59O1xuXG4vKipcbiAqIFNlcmlhbGl6ZXMgbWVzc2FnZXMgcGF5bG9hZHMgdG8gYmFzZTY0IHN0cmluZ3MuXG4gKiBAcGFyYW0gbWVzc2FnZXNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNlcmlhbGl6ZU1lc3NhZ2VzKG1lc3NhZ2VzOiBEZXNlcmlhbGl6ZWRNZXNzYWdlcyk6IFNlcmlhbGl6ZWRNZXNzYWdlcyB7XG4gIHJldHVybiB7XG4gICAgcDJwTWVzc2FnZXM6IG1lc3NhZ2VzLnAycE1lc3NhZ2VzLm1hcCgobSkgPT4ge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdG86IG0udG8sXG4gICAgICAgIGZyb206IG0uZnJvbSxcbiAgICAgICAgcGF5bG9hZDogQnVmZmVyLmZyb20obS5wYXlsb2FkKS50b1N0cmluZygnYmFzZTY0JyksXG4gICAgICAgIGNvbW1pdG1lbnQ6IG0uY29tbWl0bWVudCA/IEJ1ZmZlci5mcm9tKG0uY29tbWl0bWVudCkudG9TdHJpbmcoJ2Jhc2U2NCcpIDogbS5jb21taXRtZW50LFxuICAgICAgfTtcbiAgICB9KSxcbiAgICBicm9hZGNhc3RNZXNzYWdlczogbWVzc2FnZXMuYnJvYWRjYXN0TWVzc2FnZXMubWFwKChtKSA9PiB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBmcm9tOiBtLmZyb20sXG4gICAgICAgIHBheWxvYWQ6IEJ1ZmZlci5mcm9tKG0ucGF5bG9hZCkudG9TdHJpbmcoJ2Jhc2U2NCcpLFxuICAgICAgfTtcbiAgICB9KSxcbiAgfTtcbn1cblxuLyoqXG4gKiBEZXNyaWFsaXplcyBtZXNzYWdlcyBwYXlsb2FkcyB0byBVaW50OEFycmF5LlxuICogQHBhcmFtIG1lc3NhZ2VzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZXNlcmlhbGl6ZU1lc3NhZ2VzKG1lc3NhZ2VzOiBTZXJpYWxpemVkTWVzc2FnZXMpOiBEZXNlcmlhbGl6ZWRNZXNzYWdlcyB7XG4gIHJldHVybiB7XG4gICAgcDJwTWVzc2FnZXM6IG1lc3NhZ2VzLnAycE1lc3NhZ2VzLm1hcCgobSkgPT4ge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdG86IG0udG8sXG4gICAgICAgIGZyb206IG0uZnJvbSxcbiAgICAgICAgcGF5bG9hZDogbmV3IFVpbnQ4QXJyYXkoQnVmZmVyLmZyb20obS5wYXlsb2FkLCAnYmFzZTY0JykpLFxuICAgICAgICBjb21taXRtZW50OiBtLmNvbW1pdG1lbnQgPyBuZXcgVWludDhBcnJheShCdWZmZXIuZnJvbShtLmNvbW1pdG1lbnQsICdiYXNlNjQnKSkgOiB1bmRlZmluZWQsXG4gICAgICB9O1xuICAgIH0pLFxuICAgIGJyb2FkY2FzdE1lc3NhZ2VzOiBtZXNzYWdlcy5icm9hZGNhc3RNZXNzYWdlcy5tYXAoKG0pID0+IHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGZyb206IG0uZnJvbSxcbiAgICAgICAgcGF5bG9hZDogbmV3IFVpbnQ4QXJyYXkoQnVmZmVyLmZyb20obS5wYXlsb2FkLCAnYmFzZTY0JykpLFxuICAgICAgfTtcbiAgICB9KSxcbiAgfTtcbn1cbiJdfQ==
@@ -0,0 +1,14 @@
1
+ /// <reference types="node" />
2
+ export interface HashCommitDecommit {
3
+ commitment: Buffer;
4
+ decommitment: HashDecommitment;
5
+ }
6
+ export interface HashDecommitment {
7
+ secret: Buffer;
8
+ blindingFactor: Buffer;
9
+ }
10
+ export interface SchnorrProof {
11
+ vPoint: bigint;
12
+ r: bigint;
13
+ }
14
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":";AAAA,MAAM,WAAW,kBAAkB;IACjC,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,gBAAgB,CAAC;CAChC;AAED,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,CAAC,EAAE,MAAM,CAAC;CACX"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgSGFzaENvbW1pdERlY29tbWl0IHtcbiAgY29tbWl0bWVudDogQnVmZmVyO1xuICBkZWNvbW1pdG1lbnQ6IEhhc2hEZWNvbW1pdG1lbnQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSGFzaERlY29tbWl0bWVudCB7XG4gIHNlY3JldDogQnVmZmVyO1xuICBibGluZGluZ0ZhY3RvcjogQnVmZmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNjaG5vcnJQcm9vZiB7XG4gIHZQb2ludDogYmlnaW50O1xuICByOiBiaWdpbnQ7XG59XG4iXX0=
@@ -20,9 +20,9 @@ export declare function hexToBigInt(hex: string): bigint;
20
20
  * @returns {string} - the hex value
21
21
  */
22
22
  export declare function bigIntToHex(bigint: bigint, hexLength?: number): string;
23
- export declare function bigIntToBufferLE(n: bigint, bytes?: number): Buffer;
23
+ export declare function bigIntToBufferLE(n: bigint, minBytes?: number): Buffer;
24
24
  export declare function bigIntFromBufferLE(buf: Buffer): bigint;
25
- export declare function bigIntToBufferBE(n: bigint, bytes?: number): Buffer;
25
+ export declare function bigIntToBufferBE(n: bigint, minBytes?: number): Buffer;
26
26
  export declare function bigIntFromBufferBE(buf: Buffer): bigint;
27
27
  export declare function bigIntFromU8ABE(buf: Uint8Array): bigint;
28
28
  export declare function clamp(u: bigint): bigint;
@@ -50,4 +50,10 @@ export declare function randomPositiveCoPrimeLessThan(x: bigint): Promise<bigint
50
50
  * @returns {Promise<bigint>}
51
51
  */
52
52
  export declare function randomBigInt(bitlength: number): Promise<bigint>;
53
+ /**
54
+ * @param seed - used to construct derivation path deterministically
55
+ * @param isMaster - if set, path starts with prefix `m/`
56
+ * @return path `(m/)/999999/a/b` where `a` and `b` are 7-byte pseudorandom numbers based on seed
57
+ */
58
+ export declare function getDerivationPath(seed: string, isMaster?: boolean): string;
53
59
  //# sourceMappingURL=util.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../src/util.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAI5C;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAInE;AAED;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAIvF;AAED,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAU/C;AAED;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAOtE;AAED,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAQlE;AAED,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAEtD;AAED,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAQlE;AAED,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAEtD;AAED,wBAAgB,eAAe,CAAC,GAAG,EAAE,UAAU,GAAG,MAAM,CAEvD;AAED,wBAAgB,KAAK,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAIvC;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,CAAC,EAAE,MAAM,GAAG,SAAS,CAEzD;AAED;;;;GAIG;AACH,wBAAsB,uBAAuB,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAOxE;AAED;;;;GAIG;AACH,wBAAsB,6BAA6B,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAU9E;AAED;;;;GAIG;AACH,wBAAsB,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAErE"}
1
+ {"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../src/util.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAK5C;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAInE;AAED;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAIvF;AAED,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAU/C;AAED;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAOtE;AAED,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAQrE;AAED,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAEtD;AAED,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAQrE;AAED,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAEtD;AAED,wBAAgB,eAAe,CAAC,GAAG,EAAE,UAAU,GAAG,MAAM,CAEvD;AAED,wBAAgB,KAAK,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAIvC;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,CAAC,EAAE,MAAM,GAAG,SAAS,CAEzD;AAED;;;;GAIG;AACH,wBAAsB,uBAAuB,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAOxE;AAED;;;;GAIG;AACH,wBAAsB,6BAA6B,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAU9E;AAED;;;;GAIG;AACH,wBAAsB,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAErE;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,UAAO,GAAG,MAAM,CAQvE"}
package/dist/src/util.js CHANGED
@@ -1,9 +1,13 @@
1
1
  "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
2
5
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.randomBigInt = exports.randomPositiveCoPrimeLessThan = exports.randomPositiveCoPrimeTo = exports.getPaillierPublicKey = exports.clamp = exports.bigIntFromU8ABE = exports.bigIntFromBufferBE = exports.bigIntToBufferBE = exports.bigIntFromBufferLE = exports.bigIntToBufferLE = exports.bigIntToHex = exports.hexToBigInt = exports.convertBigIntArrToHexArr = exports.convertHexArrToBigIntArr = void 0;
6
+ exports.getDerivationPath = exports.randomBigInt = exports.randomPositiveCoPrimeLessThan = exports.randomPositiveCoPrimeTo = exports.getPaillierPublicKey = exports.clamp = exports.bigIntFromU8ABE = exports.bigIntFromBufferBE = exports.bigIntToBufferBE = exports.bigIntFromBufferLE = exports.bigIntToBufferLE = exports.bigIntToHex = exports.hexToBigInt = exports.convertBigIntArrToHexArr = exports.convertHexArrToBigIntArr = void 0;
4
7
  const paillier_bigint_1 = require("paillier-bigint");
5
8
  const bigint_crypto_utils_1 = require("bigint-crypto-utils");
6
9
  const bigint_mod_arith_1 = require("bigint-mod-arith");
10
+ const crypto_1 = __importDefault(require("crypto"));
7
11
  /**
8
12
  * Returns a bigint array from a hex string array
9
13
  * @param values
@@ -53,12 +57,12 @@ function bigIntToHex(bigint, hexLength) {
53
57
  return hex;
54
58
  }
55
59
  exports.bigIntToHex = bigIntToHex;
56
- function bigIntToBufferLE(n, bytes) {
60
+ function bigIntToBufferLE(n, minBytes) {
57
61
  let v = n.toString(16);
58
62
  v = '0'.slice(0, v.length % 2) + v;
59
63
  const buf = Buffer.from(v, 'hex').reverse();
60
- if (bytes && buf.length < bytes) {
61
- return Buffer.concat([buf, Buffer.alloc(bytes - buf.length)]);
64
+ if (minBytes && buf.length < minBytes) {
65
+ return Buffer.concat([buf, Buffer.alloc(minBytes - buf.length)]);
62
66
  }
63
67
  return buf;
64
68
  }
@@ -67,12 +71,12 @@ function bigIntFromBufferLE(buf) {
67
71
  return BigInt('0x' + Buffer.from(buf).reverse().toString('hex'));
68
72
  }
69
73
  exports.bigIntFromBufferLE = bigIntFromBufferLE;
70
- function bigIntToBufferBE(n, bytes) {
74
+ function bigIntToBufferBE(n, minBytes) {
71
75
  let v = n.toString(16);
72
76
  v = '0'.slice(0, v.length % 2) + v;
73
77
  const buf = Buffer.from(v, 'hex');
74
- if (bytes && buf.length < bytes) {
75
- return Buffer.concat([Buffer.alloc(bytes - buf.length), buf]);
78
+ if (minBytes && buf.length < minBytes) {
79
+ return Buffer.concat([Buffer.alloc(minBytes - buf.length), buf]);
76
80
  }
77
81
  return buf;
78
82
  }
@@ -140,4 +144,22 @@ async function randomBigInt(bitlength) {
140
144
  return bigIntFromBufferBE(Buffer.from(await bigint_crypto_utils_1.randBits(bitlength, true)));
141
145
  }
142
146
  exports.randomBigInt = randomBigInt;
143
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHFEQUE0QztBQUM1Qyw2REFBMEQ7QUFDMUQsdURBQXVDO0FBRXZDOzs7R0FHRztBQUNILFNBQWdCLHdCQUF3QixDQUFDLE1BQWdCO0lBQ3ZELE9BQU8sTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1FBQzFCLE9BQU8sV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzVCLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQUpELDREQUlDO0FBRUQ7Ozs7R0FJRztBQUNILFNBQWdCLHdCQUF3QixDQUFDLE1BQWdCLEVBQUUsU0FBa0I7SUFDM0UsT0FBTyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7UUFDMUIsT0FBTyxXQUFXLENBQUMsS0FBSyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQ3ZDLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQUpELDREQUlDO0FBRUQsU0FBZ0IsV0FBVyxDQUFDLEdBQVc7SUFDckMsK0RBQStEO0lBQy9ELDREQUE0RDtJQUM1RCw4REFBOEQ7SUFDOUQsbURBQW1EO0lBQ25ELG1CQUFtQjtJQUNuQixJQUFJLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLElBQUksRUFBRTtRQUM1QixPQUFPLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztLQUNwQjtJQUNELE9BQU8sTUFBTSxDQUFDLElBQUksR0FBRyxHQUFHLENBQUMsQ0FBQztBQUM1QixDQUFDO0FBVkQsa0NBVUM7QUFFRDs7Ozs7O0dBTUc7QUFDSCxTQUFnQixXQUFXLENBQUMsTUFBYyxFQUFFLFNBQWtCO0lBQzVELElBQUksR0FBRyxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDOUIsR0FBRyxHQUFHLEdBQUcs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cnQgeyBQdWJsaWNLZXkgfSBmcm9tICdwYWlsbGllci1iaWdpbnQnO1xuaW1wb3J0IHsgYml0TGVuZ3RoLCByYW5kQml0cyB9IGZyb20gJ2JpZ2ludC1jcnlwdG8tdXRpbHMnO1xuaW1wb3J0IHsgZ2NkIH0gZnJvbSAnYmlnaW50LW1vZC1hcml0aCc7XG5cbi8qKlxuICogUmV0dXJucyBhIGJpZ2ludCBhcnJheSBmcm9tIGEgaGV4IHN0cmluZyBhcnJheVxuICogQHBhcmFtIHZhbHVlc1xuICovXG5leHBvcnQgZnVuY3Rpb24gY29udmVydEhleEFyclRvQmlnSW50QXJyKHZhbHVlczogc3RyaW5nW10pOiBiaWdpbnRbXSB7XG4gIHJldHVybiB2YWx1ZXMubWFwKCh2YWx1ZSkgPT4ge1xuICAgIHJldHVybiBoZXhUb0JpZ0ludCh2YWx1ZSk7XG4gIH0pO1xufVxuXG4vKipcbiAqIFJldHVybnMgYSBoZXggc3RyaW5nIGFycmF5IGZyb20gYSBiaWdpbnQgYXJyYXlcbiAqIEBwYXJhbSB2YWx1ZXNcbiAqIEBwYXJhbSBoZXhMZW5ndGggLSBsZW5ndGggdG8gcGFkIGVhY2ggYmlnIGludCBudW1iZXIgdG9vXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb252ZXJ0QmlnSW50QXJyVG9IZXhBcnIodmFsdWVzOiBiaWdpbnRbXSwgaGV4TGVuZ3RoPzogbnVtYmVyKTogc3RyaW5nW10ge1xuICByZXR1cm4gdmFsdWVzLm1hcCgodmFsdWUpID0+IHtcbiAgICByZXR1cm4gYmlnSW50VG9IZXgodmFsdWUsIGhleExlbmd0aCk7XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaGV4VG9CaWdJbnQoaGV4OiBzdHJpbmcpOiBiaWdpbnQge1xuICAvLyBTdHJhbmdlbHkgYmlnaW50LnRvU3RyaW5nKDE2KSBnaXZlcyBhIGhleCBzdHJpbmcgd2l0aG91dCAweCxcbiAgLy8gYnV0IGl0IHdvbid0IGFjY2VwdCB0aGUgc2FtZSBzdHJpbmcgd2l0aG91dCAweCB0byBjb252ZXJ0XG4gIC8vIHRvIGEgYmlnaW50IChCaWdJbnQoaGV4IHN0cmluZykpLiBTbyBoYXZlIHRvIGludHJvZHVjZSB0aGlzXG4gIC8vIGNoZWNrIHRvIGNvbnZlcnQgdG8gYWRkIDB4IGluIGNhc2UgaWYgaGV4IHN0cmluZ1xuICAvLyBkb2Vzbid0IGhhdmUgaXQuXG4gIGlmIChoZXguc2xpY2UoMCwgMikgPT09ICcweCcpIHtcbiAgICByZXR1cm4gQmlnSW50KGhleCk7XG4gIH1cbiAgcmV0dXJuIEJpZ0ludCgnMHgnICsgaGV4KTtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIGFuIGhleCBzdHJpbmcgb2YgdGhlIGdpdmVuIGJpZ2ludFxuICpcbiAqIEBwYXJhbSB7YmlnaW50fSBiaWdpbnQgLSB0aGUgYmlnaW50IHRvIGJlIGNvbnZlcnRlZCB0byBoZXhcbiAqIEBwYXJhbSBoZXhMZW5ndGhcbiAqIEByZXR1cm5zIHtzdHJpbmd9IC0gdGhlIGhleCB2YWx1ZVxuICovXG5leHBvcnQgZnVuY3Rpb24gYmlnSW50VG9IZXgoYmlnaW50OiBiaWdpbnQsIGhleExlbmd0aD86IG51bWJlcik6IHN0cmluZyB7XG4gIGxldCBoZXggPSBiaWdpbnQudG9TdHJpbmcoMTYpO1xuICBoZXggPSAnMCcuc2xpY2UoMCwgaGV4Lmxlbmd0aCAlIDIpICsgaGV4O1xuICBpZiAoaGV4TGVuZ3RoKSB7XG4gICAgaGV4ID0gaGV4LnBhZFN0YXJ0KGhleExlbmd0aCwgJzAnKTtcbiAgfVxuICByZXR1cm4gaGV4O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYmlnSW50VG9CdWZmZXJMRShuOiBiaWdpbnQsIGJ5dGVzPzogbnVtYmVyKTogQnVmZmVyIHtcbiAgbGV0IHYgPSBuLnRvU3RyaW5nKDE2KTtcbiAgdiA9ICcwJy5zbGljZSgwLCB2Lmxlbmd0aCAlIDIpICsgdjtcbiAgY29uc3QgYnVmID0gQnVmZmVyLmZyb20odiwgJ2hleCcpLnJldmVyc2UoKTtcbiAgaWYgKGJ5dGVzICYmIGJ1Zi5sZW5ndGggPCBieXRlcykge1xuICAgIHJldHVybiBCdWZmZXIuY29uY2F0KFtidWYsIEJ1ZmZlci5hbGxvYyhieXRlcyAtIGJ1Zi5sZW5ndGgpXSk7XG4gIH1cbiAgcmV0dXJuIGJ1Zjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJpZ0ludEZyb21CdWZmZXJMRShidWY6IEJ1ZmZlcik6IGJpZ2ludCB7XG4gIHJldHVybiBCaWdJbnQoJzB4JyArIEJ1ZmZlci5mcm9tKGJ1ZikucmV2ZXJzZSgpLnRvU3RyaW5nKCdoZXgnKSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBiaWdJbnRUb0J1ZmZlckJFKG46IGJpZ2ludCwgYnl0ZXM/OiBudW1iZXIpOiBCdWZmZXIge1xuICBsZXQgdiA9IG4udG9TdHJpbmcoMTYpO1xuICB2ID0gJzAnLnNsaWNlKDAsIHYubGVuZ3RoICUgMikgKyB2O1xuICBjb25zdCBidWYgPSBCdWZmZXIuZnJvbSh2LCAnaGV4Jyk7XG4gIGlmIChieXRlcyAmJiBidWYubGVuZ3RoIDwgYnl0ZXMpIHtcbiAgICByZXR1cm4gQnVmZmVyLmNvbmNhdChbQnVmZmVyLmFsbG9jKGJ5dGVzIC0gYnVmLmxlbmd0aCksIGJ1Zl0pO1xuICB9XG4gIHJldHVybiBidWY7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBiaWdJbnRGcm9tQnVmZmVyQkUoYnVmOiBCdWZmZXIpOiBiaWdpbnQge1xuICByZXR1cm4gQmlnSW50KCcweCcgKyBidWYudG9TdHJpbmcoJ2hleCcpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJpZ0ludEZyb21VOEFCRShidWY6IFVpbnQ4QXJyYXkpOiBiaWdpbnQge1xuICByZXR1cm4gYmlnSW50RnJvbUJ1ZmZlckJFKEJ1ZmZlci5mcm9tKGJ1ZikpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY2xhbXAodTogYmlnaW50KTogYmlnaW50IHtcbiAgdSAmPSBCaWdJbnQoJzB4N2ZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmOCcpO1xuICB1IHw9IEJpZ0ludCgnMHg0MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwJyk7XG4gIHJldHVybiB1O1xufVxuXG4vKipcbiAqIEZ1bmN0aW9uIGdldCBwYWlsbGllciBwdWJsaWMga2V5IHNpbXBsZSB2YXJpZW50XG4gKiBAcGFyYW0ge2JpZ2ludH0gblxuICogQHJldHVybnMge2JpZ2ludH1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFBhaWxsaWVyUHVibGljS2V5KG46IGJpZ2ludCk6IFB1YmxpY0tleSB7XG4gIHJldHVybiBuZXcgUHVibGljS2V5KG4sIG4gKyBCaWdJbnQoMSkpO1xufVxuXG4vKipcbiAqIEdlbmVyYXRlIGEgcmFuZG9tIHBvc2l0aXZlIGludGVnZXIgY28tcHJpbWUgdG8geFxuICogQHBhcmFtIHhcbiAqIEByZXR1cm5zIHtQcm9taXNlPGJpZ2ludD59XG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByYW5kb21Qb3NpdGl2ZUNvUHJpbWVUbyh4OiBiaWdpbnQpOiBQcm9taXNlPGJpZ2ludD4ge1xuICB3aGlsZSAodHJ1ZSkge1xuICAgIGNvbnN0IHkgPSBhd2FpdCByYW5kb21CaWdJbnQoYml0TGVuZ3RoKHgpKTtcbiAgICBpZiAoeSA+IEJpZ0ludCgwKSAmJiBnY2QoeCwgeSkgPT09IEJpZ0ludCgxKSkge1xuICAgICAgcmV0dXJuIHk7XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogR2VuZXJhdGUgYSByYW5kb20gcG9zaXRpdmUgaW50ZWdlciBjb3ByaW1lIGxlc3MgdGhhbiB4IHdpdGggdGhlIHNhbWUgYml0IGRlcHRoLlxuICogQHBhcmFtIHhcbiAqIEByZXR1cm5zIHtQcm9taXNlPGJpZ2ludD59XG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByYW5kb21Qb3NpdGl2ZUNvUHJpbWVMZXNzVGhhbih4OiBiaWdpbnQpOiBQcm9taXNlPGJpZ2ludD4ge1xuICBpZiAoeCA8PSBCaWdJbnQoMikpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ3ggbXVzdCBiZSBsYXJnZXIgdGhhbiAyJyk7XG4gIH1cbiAgd2hpbGUgKHRydWUpIHtcbiAgICBjb25zdCB5ID0gYXdhaXQgcmFuZG9tQmlnSW50KGJpdExlbmd0aCh4KSk7XG4gICAgaWYgKHkgPiBCaWdJbnQoMCkgJiYgeSA8IHggJiYgZ2NkKHgsIHkpID09PSBCaWdJbnQoMSkpIHtcbiAgICAgIHJldHVybiB5O1xuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIEdlbmVyYXRlIGEgcmFuZG9tIG51bWJlciBvZiBhIGdpdmVuIGJpdGxlbmd0aFxuICogQHBhcmFtIGJpdGxlbmd0aFxuICogQHJldHVybnMge1Byb21pc2U8YmlnaW50Pn1cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJhbmRvbUJpZ0ludChiaXRsZW5ndGg6IG51bWJlcik6IFByb21pc2U8YmlnaW50PiB7XG4gIHJldHVybiBiaWdJbnRGcm9tQnVmZmVyQkUoQnVmZmVyLmZyb20oYXdhaXQgcmFuZEJpdHMoYml0bGVuZ3RoLCB0cnVlKSkpO1xufVxuIl19
147
+ /**
148
+ * @param seed - used to construct derivation path deterministically
149
+ * @param isMaster - if set, path starts with prefix `m/`
150
+ * @return path `(m/)/999999/a/b` where `a` and `b` are 7-byte pseudorandom numbers based on seed
151
+ */
152
+ function getDerivationPath(seed, isMaster = true) {
153
+ const derivationPathInput = sha256(sha256(`${seed}`)).toString('hex');
154
+ const derivationPathParts = [
155
+ parseInt(derivationPathInput.slice(0, 7), 16),
156
+ parseInt(derivationPathInput.slice(7, 14), 16),
157
+ ];
158
+ const prefix = isMaster ? 'm/' : '';
159
+ return prefix + '999999/' + derivationPathParts.join('/');
160
+ }
161
+ exports.getDerivationPath = getDerivationPath;
162
+ function sha256(input) {
163
+ return crypto_1.default.createHash('sha256').update(input).digest();
164
+ }
165
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLHFEQUE0QztBQUM1Qyw2REFBMEQ7QUFDMUQsdURBQXVDO0FBQ3ZDLG9EQUE0QjtBQUU1Qjs7O0dBR0c7QUFDSCxTQUFnQix3QkFBd0IsQ0FBQyxNQUFnQjtJQUN2RCxPQUFPLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtRQUMxQixPQUFPLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM1QixDQUFDLENBQUMsQ0FBQztBQUNMLENBQUM7QUFKRCw0REFJQztBQUVEOzs7O0dBSUc7QUFDSCxTQUFnQix3QkFBd0IsQ0FBQyxNQUFnQixFQUFFLFNBQWtCO0lBQzNFLE9BQU8sTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1FBQzFCLE9BQU8sV0FBVyxDQUFDLEtBQUssRUFBRSxTQUFTLENBQUMsQ0FBQztJQUN2QyxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUM7QUFKRCw0REFJQztBQUVELFNBQWdCLFdBQVcsQ0FBQyxHQUFXO0lBQ3JDLCtEQUErRDtJQUMvRCw0REFBNEQ7SUFDNUQsOERBQThEO0lBQzlELG1EQUFtRDtJQUNuRCxtQkFBbUI7SUFDbkIsSUFBSSxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxJQUFJLEVBQUU7UUFDNUIsT0FBTyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7S0FDcEI7SUFDRCxPQUFPLE1BQU0sQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUFDLENBQUM7QUFDNUIsQ0FBQztBQVZELGtDQVVDO0FBRUQ7Ozs7OztHQU1HO0FBQ0gsU0FBZ0IsV0FBVyxDQUFDLE1BQWMsRUFBRSxTQUFrQjtJQUM1RCxJQUFJLEdBQUcsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzlC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OztHQUlHO0FBQ0gsU0FBZ0IsaUJBQWlCLENBQUMsSUFBWSxFQUFFLFFBQVEsR0FBRyxJQUFJO0lBQzdELE1BQU0sbUJBQW1CLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDdEUsTUFBTSxtQkFBbUIsR0FBRztRQUMxQixRQUFRLENBQUMsbUJBQW1CLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUM7UUFDN0MsUUFBUSxDQUFDLG1CQUFtQixDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO0tBQy9DLENBQUM7SUFDRixNQUFNLE1BQU0sR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQ3BDLE9BQU8sTUFBTSxHQUFHLFNBQVMsR0FBRyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDNUQsQ0FBQztBQVJELDhDQVFDO0FBRUQsU0FBUyxNQUFNLENBQUMsS0FBd0I7SUFDdEMsT0FBTyxnQkFBTSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7QUFDNUQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFB1YmxpY0tleSB9IGZyb20gJ3BhaWxsaWVyLWJpZ2ludCc7XG5pbXBvcnQgeyBiaXRMZW5ndGgsIHJhbmRCaXRzIH0gZnJvbSAnYmlnaW50LWNyeXB0by11dGlscyc7XG5pbXBvcnQgeyBnY2QgfSBmcm9tICdiaWdpbnQtbW9kLWFyaXRoJztcbmltcG9ydCBjcnlwdG8gZnJvbSAnY3J5cHRvJztcblxuLyoqXG4gKiBSZXR1cm5zIGEgYmlnaW50IGFycmF5IGZyb20gYSBoZXggc3RyaW5nIGFycmF5XG4gKiBAcGFyYW0gdmFsdWVzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb252ZXJ0SGV4QXJyVG9CaWdJbnRBcnIodmFsdWVzOiBzdHJpbmdbXSk6IGJpZ2ludFtdIHtcbiAgcmV0dXJuIHZhbHVlcy5tYXAoKHZhbHVlKSA9PiB7XG4gICAgcmV0dXJuIGhleFRvQmlnSW50KHZhbHVlKTtcbiAgfSk7XG59XG5cbi8qKlxuICogUmV0dXJucyBhIGhleCBzdHJpbmcgYXJyYXkgZnJvbSBhIGJpZ2ludCBhcnJheVxuICogQHBhcmFtIHZhbHVlc1xuICogQHBhcmFtIGhleExlbmd0aCAtIGxlbmd0aCB0byBwYWQgZWFjaCBiaWcgaW50IG51bWJlciB0b29cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbnZlcnRCaWdJbnRBcnJUb0hleEFycih2YWx1ZXM6IGJpZ2ludFtdLCBoZXhMZW5ndGg/OiBudW1iZXIpOiBzdHJpbmdbXSB7XG4gIHJldHVybiB2YWx1ZXMubWFwKCh2YWx1ZSkgPT4ge1xuICAgIHJldHVybiBiaWdJbnRUb0hleCh2YWx1ZSwgaGV4TGVuZ3RoKTtcbiAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBoZXhUb0JpZ0ludChoZXg6IHN0cmluZyk6IGJpZ2ludCB7XG4gIC8vIFN0cmFuZ2VseSBiaWdpbnQudG9TdHJpbmcoMTYpIGdpdmVzIGEgaGV4IHN0cmluZyB3aXRob3V0IDB4LFxuICAvLyBidXQgaXQgd29uJ3QgYWNjZXB0IHRoZSBzYW1lIHN0cmluZyB3aXRob3V0IDB4IHRvIGNvbnZlcnRcbiAgLy8gdG8gYSBiaWdpbnQgKEJpZ0ludChoZXggc3RyaW5nKSkuIFNvIGhhdmUgdG8gaW50cm9kdWNlIHRoaXNcbiAgLy8gY2hlY2sgdG8gY29udmVydCB0byBhZGQgMHggaW4gY2FzZSBpZiBoZXggc3RyaW5nXG4gIC8vIGRvZXNuJ3QgaGF2ZSBpdC5cbiAgaWYgKGhleC5zbGljZSgwLCAyKSA9PT0gJzB4Jykge1xuICAgIHJldHVybiBCaWdJbnQoaGV4KTtcbiAgfVxuICByZXR1cm4gQmlnSW50KCcweCcgKyBoZXgpO1xufVxuXG4vKipcbiAqIFJldHVybnMgYW4gaGV4IHN0cmluZyBvZiB0aGUgZ2l2ZW4gYmlnaW50XG4gKlxuICogQHBhcmFtIHtiaWdpbnR9IGJpZ2ludCAtIHRoZSBiaWdpbnQgdG8gYmUgY29udmVydGVkIHRvIGhleFxuICogQHBhcmFtIGhleExlbmd0aFxuICogQHJldHVybnMge3N0cmluZ30gLSB0aGUgaGV4IHZhbHVlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBiaWdJbnRUb0hleChiaWdpbnQ6IGJpZ2ludCwgaGV4TGVuZ3RoPzogbnVtYmVyKTogc3RyaW5nIHtcbiAgbGV0IGhleCA9IGJpZ2ludC50b1N0cmluZygxNik7XG4gIGhleCA9ICcwJy5zbGljZSgwLCBoZXgubGVuZ3RoICUgMikgKyBoZXg7XG4gIGlmIChoZXhMZW5ndGgpIHtcbiAgICBoZXggPSBoZXgucGFkU3RhcnQoaGV4TGVuZ3RoLCAnMCcpO1xuICB9XG4gIHJldHVybiBoZXg7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBiaWdJbnRUb0J1ZmZlckxFKG46IGJpZ2ludCwgbWluQnl0ZXM/OiBudW1iZXIpOiBCdWZmZXIge1xuICBsZXQgdiA9IG4udG9TdHJpbmcoMTYpO1xuICB2ID0gJzAnLnNsaWNlKDAsIHYubGVuZ3RoICUgMikgKyB2O1xuICBjb25zdCBidWYgPSBCdWZmZXIuZnJvbSh2LCAnaGV4JykucmV2ZXJzZSgpO1xuICBpZiAobWluQnl0ZXMgJiYgYnVmLmxlbmd0aCA8IG1pbkJ5dGVzKSB7XG4gICAgcmV0dXJuIEJ1ZmZlci5jb25jYXQoW2J1ZiwgQnVmZmVyLmFsbG9jKG1pbkJ5dGVzIC0gYnVmLmxlbmd0aCldKTtcbiAgfVxuICByZXR1cm4gYnVmO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYmlnSW50RnJvbUJ1ZmZlckxFKGJ1ZjogQnVmZmVyKTogYmlnaW50IHtcbiAgcmV0dXJuIEJpZ0ludCgnMHgnICsgQnVmZmVyLmZyb20oYnVmKS5yZXZlcnNlKCkudG9TdHJpbmcoJ2hleCcpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJpZ0ludFRvQnVmZmVyQkUobjogYmlnaW50LCBtaW5CeXRlcz86IG51bWJlcik6IEJ1ZmZlciB7XG4gIGxldCB2ID0gbi50b1N0cmluZygxNik7XG4gIHYgPSAnMCcuc2xpY2UoMCwgdi5sZW5ndGggJSAyKSArIHY7XG4gIGNvbnN0IGJ1ZiA9IEJ1ZmZlci5mcm9tKHYsICdoZXgnKTtcbiAgaWYgKG1pbkJ5dGVzICYmIGJ1Zi5sZW5ndGggPCBtaW5CeXRlcykge1xuICAgIHJldHVybiBCdWZmZXIuY29uY2F0KFtCdWZmZXIuYWxsb2MobWluQnl0ZXMgLSBidWYubGVuZ3RoKSwgYnVmXSk7XG4gIH1cbiAgcmV0dXJuIGJ1Zjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJpZ0ludEZyb21CdWZmZXJCRShidWY6IEJ1ZmZlcik6IGJpZ2ludCB7XG4gIHJldHVybiBCaWdJbnQoJzB4JyArIGJ1Zi50b1N0cmluZygnaGV4JykpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYmlnSW50RnJvbVU4QUJFKGJ1ZjogVWludDhBcnJheSk6IGJpZ2ludCB7XG4gIHJldHVybiBiaWdJbnRGcm9tQnVmZmVyQkUoQnVmZmVyLmZyb20oYnVmKSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjbGFtcCh1OiBiaWdpbnQpOiBiaWdpbnQge1xuICB1ICY9IEJpZ0ludCgnMHg3ZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmY4Jyk7XG4gIHUgfD0gQmlnSW50KCcweDQwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAnKTtcbiAgcmV0dXJuIHU7XG59XG5cbi8qKlxuICogRnVuY3Rpb24gZ2V0IHBhaWxsaWVyIHB1YmxpYyBrZXkgc2ltcGxlIHZhcmllbnRcbiAqIEBwYXJhbSB7YmlnaW50fSBuXG4gKiBAcmV0dXJucyB7YmlnaW50fVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0UGFpbGxpZXJQdWJsaWNLZXkobjogYmlnaW50KTogUHVibGljS2V5IHtcbiAgcmV0dXJuIG5ldyBQdWJsaWNLZXkobiwgbiArIEJpZ0ludCgxKSk7XG59XG5cbi8qKlxuICogR2VuZXJhdGUgYSByYW5kb20gcG9zaXRpdmUgaW50ZWdlciBjby1wcmltZSB0byB4XG4gKiBAcGFyYW0geFxuICogQHJldHVybnMge1Byb21pc2U8YmlnaW50Pn1cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJhbmRvbVBvc2l0aXZlQ29QcmltZVRvKHg6IGJpZ2ludCk6IFByb21pc2U8YmlnaW50PiB7XG4gIHdoaWxlICh0cnVlKSB7XG4gICAgY29uc3QgeSA9IGF3YWl0IHJhbmRvbUJpZ0ludChiaXRMZW5ndGgoeCkpO1xuICAgIGlmICh5ID4gQmlnSW50KDApICYmIGdjZCh4LCB5KSA9PT0gQmlnSW50KDEpKSB7XG4gICAgICByZXR1cm4geTtcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBHZW5lcmF0ZSBhIHJhbmRvbSBwb3NpdGl2ZSBpbnRlZ2VyIGNvcHJpbWUgbGVzcyB0aGFuIHggd2l0aCB0aGUgc2FtZSBiaXQgZGVwdGguXG4gKiBAcGFyYW0geFxuICogQHJldHVybnMge1Byb21pc2U8YmlnaW50Pn1cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJhbmRvbVBvc2l0aXZlQ29QcmltZUxlc3NUaGFuKHg6IGJpZ2ludCk6IFByb21pc2U8YmlnaW50PiB7XG4gIGlmICh4IDw9IEJpZ0ludCgyKSkge1xuICAgIHRocm93IG5ldyBFcnJvcigneCBtdXN0IGJlIGxhcmdlciB0aGFuIDInKTtcbiAgfVxuICB3aGlsZSAodHJ1ZSkge1xuICAgIGNvbnN0IHkgPSBhd2FpdCByYW5kb21CaWdJbnQoYml0TGVuZ3RoKHgpKTtcbiAgICBpZiAoeSA+IEJpZ0ludCgwKSAmJiB5IDwgeCAmJiBnY2QoeCwgeSkgPT09IEJpZ0ludCgxKSkge1xuICAgICAgcmV0dXJuIHk7XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogR2VuZXJhdGUgYSByYW5kb20gbnVtYmVyIG9mIGEgZ2l2ZW4gYml0bGVuZ3RoXG4gKiBAcGFyYW0gYml0bGVuZ3RoXG4gKiBAcmV0dXJucyB7UHJvbWlzZTxiaWdpbnQ+fVxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmFuZG9tQmlnSW50KGJpdGxlbmd0aDogbnVtYmVyKTogUHJvbWlzZTxiaWdpbnQ+IHtcbiAgcmV0dXJuIGJpZ0ludEZyb21CdWZmZXJCRShCdWZmZXIuZnJvbShhd2FpdCByYW5kQml0cyhiaXRsZW5ndGgsIHRydWUpKSk7XG59XG5cbi8qKlxuICogQHBhcmFtIHNlZWQgLSB1c2VkIHRvIGNvbnN0cnVjdCBkZXJpdmF0aW9uIHBhdGggZGV0ZXJtaW5pc3RpY2FsbHlcbiAqIEBwYXJhbSBpc01hc3RlciAtIGlmIHNldCwgcGF0aCBzdGFydHMgd2l0aCBwcmVmaXggYG0vYFxuICogQHJldHVybiBwYXRoIGAobS8pLzk5OTk5OS9hL2JgIHdoZXJlIGBhYCBhbmQgYGJgIGFyZSA3LWJ5dGUgcHNldWRvcmFuZG9tIG51bWJlcnMgYmFzZWQgb24gc2VlZFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0RGVyaXZhdGlvblBhdGgoc2VlZDogc3RyaW5nLCBpc01hc3RlciA9IHRydWUpOiBzdHJpbmcge1xuICBjb25zdCBkZXJpdmF0aW9uUGF0aElucHV0ID0gc2hhMjU2KHNoYTI1NihgJHtzZWVkfWApKS50b1N0cmluZygnaGV4Jyk7XG4gIGNvbnN0IGRlcml2YXRpb25QYXRoUGFydHMgPSBbXG4gICAgcGFyc2VJbnQoZGVyaXZhdGlvblBhdGhJbnB1dC5zbGljZSgwLCA3KSwgMTYpLFxuICAgIHBhcnNlSW50KGRlcml2YXRpb25QYXRoSW5wdXQuc2xpY2UoNywgMTQpLCAxNiksXG4gIF07XG4gIGNvbnN0IHByZWZpeCA9IGlzTWFzdGVyID8gJ20vJyA6ICcnO1xuICByZXR1cm4gcHJlZml4ICsgJzk5OTk5OS8nICsgZGVyaXZhdGlvblBhdGhQYXJ0cy5qb2luKCcvJyk7XG59XG5cbmZ1bmN0aW9uIHNoYTI1NihpbnB1dDogY3J5cHRvLkJpbmFyeUxpa2UpOiBCdWZmZXIge1xuICByZXR1cm4gY3J5cHRvLmNyZWF0ZUhhc2goJ3NoYTI1NicpLnVwZGF0ZShpbnB1dCkuZGlnZXN0KCk7XG59XG4iXX0=