@bitgo/sdk-coin-canton 1.2.0 → 1.4.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.
Files changed (67) hide show
  1. package/dist/resources/hash/hash.d.ts +5 -0
  2. package/dist/resources/hash/hash.js +298 -0
  3. package/dist/resources/proto/damlTransaction.js +4 -4
  4. package/dist/resources/proto/damlTransactionNode.js +3 -3
  5. package/dist/resources/proto/damlTransactionNodeSeed.js +2 -2
  6. package/dist/resources/proto/metadata/metadataGlobalKeyMappingEntry.js +4 -4
  7. package/dist/resources/proto/metadata/metadataInputContract.js +3 -3
  8. package/dist/resources/proto/metadata/metadataSubmitterInfo.js +2 -2
  9. package/dist/resources/proto/metadata.js +5 -5
  10. package/dist/resources/proto/node/empty.js +2 -2
  11. package/dist/resources/proto/node/globalKey.js +4 -4
  12. package/dist/resources/proto/node/identifier.js +2 -2
  13. package/dist/resources/proto/node/node.js +16 -8
  14. package/dist/resources/proto/node/timestamp.js +3 -3
  15. package/dist/resources/proto/node/value.js +28 -14
  16. package/dist/resources/proto/preparedTransaction.js +4 -4
  17. package/dist/src/lib/constant.d.ts +2 -0
  18. package/dist/src/lib/constant.d.ts.map +1 -1
  19. package/dist/src/lib/constant.js +4 -2
  20. package/dist/src/lib/iface.d.ts +26 -6
  21. package/dist/src/lib/iface.d.ts.map +1 -1
  22. package/dist/src/lib/iface.js +1 -1
  23. package/dist/src/lib/index.d.ts +2 -1
  24. package/dist/src/lib/index.d.ts.map +1 -1
  25. package/dist/src/lib/index.js +5 -3
  26. package/dist/src/lib/oneStepPreApprovalBuilder.d.ts +49 -0
  27. package/dist/src/lib/oneStepPreApprovalBuilder.d.ts.map +1 -0
  28. package/dist/src/lib/oneStepPreApprovalBuilder.js +87 -0
  29. package/dist/src/lib/transaction/transaction.d.ts +18 -0
  30. package/dist/src/lib/transaction/transaction.d.ts.map +1 -0
  31. package/dist/src/lib/transaction/transaction.js +79 -0
  32. package/dist/src/lib/transactionBuilder.d.ts +7 -14
  33. package/dist/src/lib/transactionBuilder.d.ts.map +1 -1
  34. package/dist/src/lib/transactionBuilder.js +31 -23
  35. package/dist/src/lib/transactionBuilderFactory.d.ts +4 -1
  36. package/dist/src/lib/transactionBuilderFactory.d.ts.map +1 -1
  37. package/dist/src/lib/transactionBuilderFactory.js +10 -3
  38. package/dist/src/lib/transferBuilder.d.ts +2 -0
  39. package/dist/src/lib/transferBuilder.d.ts.map +1 -1
  40. package/dist/src/lib/transferBuilder.js +4 -1
  41. package/dist/src/lib/utils.d.ts +37 -0
  42. package/dist/src/lib/utils.d.ts.map +1 -1
  43. package/dist/src/lib/utils.js +66 -1
  44. package/dist/src/lib/walletInitBuilder.d.ts +98 -0
  45. package/dist/src/lib/walletInitBuilder.d.ts.map +1 -0
  46. package/dist/src/lib/walletInitBuilder.js +223 -0
  47. package/dist/src/lib/walletInitialization/walletInitTransaction.d.ts +16 -0
  48. package/dist/src/lib/walletInitialization/walletInitTransaction.d.ts.map +1 -0
  49. package/dist/src/lib/walletInitialization/walletInitTransaction.js +59 -0
  50. package/dist/test/resources.d.ts +38 -0
  51. package/dist/test/resources.d.ts.map +1 -1
  52. package/dist/test/resources.js +50 -2
  53. package/dist/test/unit/builder/oneStepEnablement/oneStepEnablementBuilder.d.ts +2 -0
  54. package/dist/test/unit/builder/oneStepEnablement/oneStepEnablementBuilder.d.ts.map +1 -0
  55. package/dist/test/unit/builder/oneStepEnablement/oneStepEnablementBuilder.js +67 -0
  56. package/dist/test/unit/builder/walletInit/walletInitBuilder.d.ts +2 -0
  57. package/dist/test/unit/builder/walletInit/walletInitBuilder.d.ts.map +1 -0
  58. package/dist/test/unit/builder/walletInit/walletInitBuilder.js +66 -0
  59. package/dist/test/unit/utils.js +15 -1
  60. package/dist/tsconfig.tsbuildinfo +1 -1
  61. package/package.json +20 -6
  62. package/dist/src/lib/transaction.d.ts +0 -13
  63. package/dist/src/lib/transaction.d.ts.map +0 -1
  64. package/dist/src/lib/transaction.js +0 -53
  65. package/dist/src/lib/walletInitialization/walletInitializationTransaction.d.ts +0 -13
  66. package/dist/src/lib/walletInitialization/walletInitializationTransaction.d.ts.map +0 -1
  67. package/dist/src/lib/walletInitialization/walletInitializationTransaction.js +0 -38
package/package.json CHANGED
@@ -1,9 +1,23 @@
1
1
  {
2
2
  "name": "@bitgo/sdk-coin-canton",
3
- "version": "1.2.0",
3
+ "version": "1.4.0",
4
4
  "description": "BitGo SDK coin library for Canton",
5
5
  "main": "./dist/src/index.js",
6
6
  "types": "./dist/src/index.d.ts",
7
+ "exports": {
8
+ ".": {
9
+ "require": "./dist/src/index.js",
10
+ "types": "./dist/src/index.d.ts"
11
+ },
12
+ "./resources/proto/preparedTransaction": {
13
+ "require": "./dist/resources/proto/preparedTransaction.js",
14
+ "types": "./dist/resources/proto/preparedTransaction.d.ts"
15
+ },
16
+ "./resources/hash/hash": {
17
+ "require": "./dist/resources/hash/hash.js",
18
+ "types": "./dist/resources/hash/hash.d.ts"
19
+ }
20
+ },
7
21
  "scripts": {
8
22
  "build": "npm run prepare",
9
23
  "build-ts": "yarn tsc --build --incremental --verbose .",
@@ -41,18 +55,18 @@
41
55
  ]
42
56
  },
43
57
  "dependencies": {
44
- "@bitgo/sdk-core": "^36.12.0",
45
- "@bitgo/statics": "^58.4.0",
58
+ "@bitgo/sdk-core": "^36.14.0",
59
+ "@bitgo/statics": "^58.6.0",
46
60
  "@protobuf-ts/runtime": "^2.11.1",
47
61
  "bignumber.js": "^9.1.1"
48
62
  },
49
63
  "devDependencies": {
50
- "@bitgo/sdk-api": "^1.70.1",
64
+ "@bitgo/sdk-api": "^1.70.3",
51
65
  "@bitgo/sdk-lib-mpc": "^10.8.1",
52
- "@bitgo/sdk-test": "^9.1.4"
66
+ "@bitgo/sdk-test": "^9.1.6"
53
67
  },
54
68
  "files": [
55
69
  "dist"
56
70
  ],
57
- "gitHead": "8ac87cf1e91ae2a5fb227904735933d91ec57051"
71
+ "gitHead": "d8b6fd8b1201fd57fa6b6b175850fdfd4e02e74d"
58
72
  }
@@ -1,13 +0,0 @@
1
- import { BaseKey, BaseTransaction } from '@bitgo/sdk-core';
2
- import { BaseCoin as CoinConfig } from '@bitgo/statics';
3
- import { CantonPrepareCommandResponse, TxData } from './iface';
4
- export declare class Transaction extends BaseTransaction {
5
- private _transaction;
6
- constructor(coinConfig: Readonly<CoinConfig>);
7
- get transaction(): CantonPrepareCommandResponse;
8
- set transaction(transaction: CantonPrepareCommandResponse);
9
- canSign(key: BaseKey): boolean;
10
- toBroadcastFormat(): string;
11
- toJson(): TxData;
12
- }
13
- //# sourceMappingURL=transaction.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"transaction.d.ts","sourceRoot":"","sources":["../../../src/lib/transaction.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,eAAe,EAA4C,MAAM,iBAAiB,CAAC;AACrG,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,4BAA4B,EAAyB,MAAM,EAAE,MAAM,SAAS,CAAC;AAGtF,qBAAa,WAAY,SAAQ,eAAe;IAC9C,OAAO,CAAC,YAAY,CAA+B;gBAEvC,UAAU,EAAE,QAAQ,CAAC,UAAU,CAAC;IAI5C,IAAI,WAAW,IAAI,4BAA4B,CAE9C;IAED,IAAI,WAAW,CAAC,WAAW,EAAE,4BAA4B,EAGxD;IAED,OAAO,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO;IAI9B,iBAAiB,IAAI,MAAM;IAO3B,MAAM,IAAI,MAAM;CAqBjB"}
@@ -1,53 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.Transaction = void 0;
7
- const sdk_core_1 = require("@bitgo/sdk-core");
8
- const utils_1 = __importDefault(require("./utils"));
9
- class Transaction extends sdk_core_1.BaseTransaction {
10
- constructor(coinConfig) {
11
- super(coinConfig);
12
- }
13
- get transaction() {
14
- return this._transaction;
15
- }
16
- set transaction(transaction) {
17
- this._transaction = transaction;
18
- this._id = transaction.preparedTransactionHash;
19
- }
20
- canSign(key) {
21
- return false;
22
- }
23
- toBroadcastFormat() {
24
- if (!this._transaction) {
25
- throw new sdk_core_1.InvalidTransactionError('Empty transaction data');
26
- }
27
- return this._transaction.preparedTransactionHash;
28
- }
29
- toJson() {
30
- if (!this._transaction || !this._transaction.preparedTransaction) {
31
- throw new sdk_core_1.InvalidTransactionError('Empty transaction data');
32
- }
33
- const result = {
34
- id: this.id,
35
- type: this._type,
36
- sender: '',
37
- receiver: '',
38
- };
39
- // TODO: extract other required data (utxo used, request time, execute before etc)
40
- let parsedInfo;
41
- try {
42
- parsedInfo = utils_1.default.parseRawCantonTransactionData(this._transaction.preparedTransaction);
43
- }
44
- catch (e) {
45
- throw new sdk_core_1.InvalidTransactionError(`Failed to parse transaction hash: ${e instanceof Error ? e.message : e}`);
46
- }
47
- result.sender = parsedInfo.sender;
48
- result.receiver = parsedInfo.receiver;
49
- return result;
50
- }
51
- }
52
- exports.Transaction = Transaction;
53
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3RyYW5zYWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLDhDQUFxRztBQUdyRyxvREFBNEI7QUFFNUIsTUFBYSxXQUFZLFNBQVEsMEJBQWU7SUFHOUMsWUFBWSxVQUFnQztRQUMxQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDcEIsQ0FBQztJQUVELElBQUksV0FBVztRQUNiLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQztJQUMzQixDQUFDO0lBRUQsSUFBSSxXQUFXLENBQUMsV0FBeUM7UUFDdkQsSUFBSSxDQUFDLFlBQVksR0FBRyxXQUFXLENBQUM7UUFDaEMsSUFBSSxDQUFDLEdBQUcsR0FBRyxXQUFXLENBQUMsdUJBQXVCLENBQUM7SUFDakQsQ0FBQztJQUVELE9BQU8sQ0FBQyxHQUFZO1FBQ2xCLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVELGlCQUFpQjtRQUNmLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDdkIsTUFBTSxJQUFJLGtDQUF1QixDQUFDLHdCQUF3QixDQUFDLENBQUM7UUFDOUQsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyx1QkFBdUIsQ0FBQztJQUNuRCxDQUFDO0lBRUQsTUFBTTtRQUNKLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1lBQ2pFLE1BQU0sSUFBSSxrQ0FBdUIsQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO1FBQzlELENBQUM7UUFDRCxNQUFNLE1BQU0sR0FBVztZQUNyQixFQUFFLEVBQUUsSUFBSSxDQUFDLEVBQUU7WUFDWCxJQUFJLEVBQUUsSUFBSSxDQUFDLEtBQXdCO1lBQ25DLE1BQU0sRUFBRSxFQUFFO1lBQ1YsUUFBUSxFQUFFLEVBQUU7U0FDYixDQUFDO1FBQ0Ysa0ZBQWtGO1FBQ2xGLElBQUksVUFBaUMsQ0FBQztRQUN0QyxJQUFJLENBQUM7WUFDSCxVQUFVLEdBQUcsZUFBSyxDQUFDLDZCQUE2QixDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsbUJBQW1CLENBQUMsQ0FBQztRQUMxRixDQUFDO1FBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUNYLE1BQU0sSUFBSSxrQ0FBdUIsQ0FBQyxxQ0FBcUMsQ0FBQyxZQUFZLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUMvRyxDQUFDO1FBQ0QsTUFBTSxDQUFDLE1BQU0sR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFDO1FBQ2xDLE1BQU0sQ0FBQyxRQUFRLEdBQUcsVUFBVSxDQUFDLFFBQVEsQ0FBQztRQUN0QyxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0NBQ0Y7QUFoREQsa0NBZ0RDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQmFzZUtleSwgQmFzZVRyYW5zYWN0aW9uLCBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvciwgVHJhbnNhY3Rpb25UeXBlIH0gZnJvbSAnQGJpdGdvL3Nkay1jb3JlJztcbmltcG9ydCB7IEJhc2VDb2luIGFzIENvaW5Db25maWcgfSBmcm9tICdAYml0Z28vc3RhdGljcyc7XG5pbXBvcnQgeyBDYW50b25QcmVwYXJlQ29tbWFuZFJlc3BvbnNlLCBQcmVwYXJlZFR4blBhcnNlZEluZm8sIFR4RGF0YSB9IGZyb20gJy4vaWZhY2UnO1xuaW1wb3J0IHV0aWxzIGZyb20gJy4vdXRpbHMnO1xuXG5leHBvcnQgY2xhc3MgVHJhbnNhY3Rpb24gZXh0ZW5kcyBCYXNlVHJhbnNhY3Rpb24ge1xuICBwcml2YXRlIF90cmFuc2FjdGlvbjogQ2FudG9uUHJlcGFyZUNvbW1hbmRSZXNwb25zZTtcblxuICBjb25zdHJ1Y3Rvcihjb2luQ29uZmlnOiBSZWFkb25seTxDb2luQ29uZmlnPikge1xuICAgIHN1cGVyKGNvaW5Db25maWcpO1xuICB9XG5cbiAgZ2V0IHRyYW5zYWN0aW9uKCk6IENhbnRvblByZXBhcmVDb21tYW5kUmVzcG9uc2Uge1xuICAgIHJldHVybiB0aGlzLl90cmFuc2FjdGlvbjtcbiAgfVxuXG4gIHNldCB0cmFuc2FjdGlvbih0cmFuc2FjdGlvbjogQ2FudG9uUHJlcGFyZUNvbW1hbmRSZXNwb25zZSkge1xuICAgIHRoaXMuX3RyYW5zYWN0aW9uID0gdHJhbnNhY3Rpb247XG4gICAgdGhpcy5faWQgPSB0cmFuc2FjdGlvbi5wcmVwYXJlZFRyYW5zYWN0aW9uSGFzaDtcbiAgfVxuXG4gIGNhblNpZ24oa2V5OiBCYXNlS2V5KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgdG9Ccm9hZGNhc3RGb3JtYXQoKTogc3RyaW5nIHtcbiAgICBpZiAoIXRoaXMuX3RyYW5zYWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IoJ0VtcHR5IHRyYW5zYWN0aW9uIGRhdGEnKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX3RyYW5zYWN0aW9uLnByZXBhcmVkVHJhbnNhY3Rpb25IYXNoO1xuICB9XG5cbiAgdG9Kc29uKCk6IFR4RGF0YSB7XG4gICAgaWYgKCF0aGlzLl90cmFuc2FjdGlvbiB8fCAhdGhpcy5fdHJhbnNhY3Rpb24ucHJlcGFyZWRUcmFuc2FjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKCdFbXB0eSB0cmFuc2FjdGlvbiBkYXRhJyk7XG4gICAgfVxuICAgIGNvbnN0IHJlc3VsdDogVHhEYXRhID0ge1xuICAgICAgaWQ6IHRoaXMuaWQsXG4gICAgICB0eXBlOiB0aGlzLl90eXBlIGFzIFRyYW5zYWN0aW9uVHlwZSxcbiAgICAgIHNlbmRlcjogJycsXG4gICAgICByZWNlaXZlcjogJycsXG4gICAgfTtcbiAgICAvLyBUT0RPOiBleHRyYWN0IG90aGVyIHJlcXVpcmVkIGRhdGEgKHV0eG8gdXNlZCwgcmVxdWVzdCB0aW1lLCBleGVjdXRlIGJlZm9yZSBldGMpXG4gICAgbGV0IHBhcnNlZEluZm86IFByZXBhcmVkVHhuUGFyc2VkSW5mbztcbiAgICB0cnkge1xuICAgICAgcGFyc2VkSW5mbyA9IHV0aWxzLnBhcnNlUmF3Q2FudG9uVHJhbnNhY3Rpb25EYXRhKHRoaXMuX3RyYW5zYWN0aW9uLnByZXBhcmVkVHJhbnNhY3Rpb24pO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcihgRmFpbGVkIHRvIHBhcnNlIHRyYW5zYWN0aW9uIGhhc2g6ICR7ZSBpbnN0YW5jZW9mIEVycm9yID8gZS5tZXNzYWdlIDogZX1gKTtcbiAgICB9XG4gICAgcmVzdWx0LnNlbmRlciA9IHBhcnNlZEluZm8uc2VuZGVyO1xuICAgIHJlc3VsdC5yZWNlaXZlciA9IHBhcnNlZEluZm8ucmVjZWl2ZXI7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxufVxuIl19
@@ -1,13 +0,0 @@
1
- import { BaseKey, BaseTransaction } from '@bitgo/sdk-core';
2
- import { BaseCoin as CoinConfig } from '@bitgo/statics';
3
- import { PreparedParty, WalletInitializationDataTxData } from '../iface';
4
- export declare class WalletInitializationTransaction extends BaseTransaction {
5
- private _transaction;
6
- constructor(coinConfig: Readonly<CoinConfig>);
7
- get transaction(): PreparedParty;
8
- set transaction(transaction: PreparedParty);
9
- canSign(key: BaseKey): boolean;
10
- toBroadcastFormat(): string;
11
- toJson(): WalletInitializationDataTxData;
12
- }
13
- //# sourceMappingURL=walletInitializationTransaction.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"walletInitializationTransaction.d.ts","sourceRoot":"","sources":["../../../../src/lib/walletInitialization/walletInitializationTransaction.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,eAAe,EAA4C,MAAM,iBAAiB,CAAC;AACrG,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,8BAA8B,EAAE,MAAM,UAAU,CAAC;AAEzE,qBAAa,+BAAgC,SAAQ,eAAe;IAClE,OAAO,CAAC,YAAY,CAAgB;gBAExB,UAAU,EAAE,QAAQ,CAAC,UAAU,CAAC;IAI5C,IAAI,WAAW,IAAI,aAAa,CAE/B;IAED,IAAI,WAAW,CAAC,WAAW,EAAE,aAAa,EAGzC;IAED,OAAO,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO;IAI9B,iBAAiB,IAAI,MAAM;IAO3B,MAAM,IAAI,8BAA8B;CAWzC"}
@@ -1,38 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.WalletInitializationTransaction = void 0;
4
- const sdk_core_1 = require("@bitgo/sdk-core");
5
- class WalletInitializationTransaction extends sdk_core_1.BaseTransaction {
6
- constructor(coinConfig) {
7
- super(coinConfig);
8
- }
9
- get transaction() {
10
- return this._transaction;
11
- }
12
- set transaction(transaction) {
13
- this._transaction = transaction;
14
- this._id = transaction.combinedHash;
15
- }
16
- canSign(key) {
17
- return false;
18
- }
19
- toBroadcastFormat() {
20
- if (!this._transaction) {
21
- throw new sdk_core_1.InvalidTransactionError('Empty transaction data');
22
- }
23
- return this._transaction.combinedHash;
24
- }
25
- toJson() {
26
- if (!this._transaction) {
27
- throw new sdk_core_1.InvalidTransactionError('Empty transaction data');
28
- }
29
- const result = {
30
- id: this.id,
31
- type: this._type,
32
- };
33
- // Add logic to parse the preparedTransaction & extract sender, receiver
34
- return result;
35
- }
36
- }
37
- exports.WalletInitializationTransaction = WalletInitializationTransaction;
38
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2FsbGV0SW5pdGlhbGl6YXRpb25UcmFuc2FjdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvd2FsbGV0SW5pdGlhbGl6YXRpb24vd2FsbGV0SW5pdGlhbGl6YXRpb25UcmFuc2FjdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSw4Q0FBcUc7QUFJckcsTUFBYSwrQkFBZ0MsU0FBUSwwQkFBZTtJQUdsRSxZQUFZLFVBQWdDO1FBQzFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNwQixDQUFDO0lBRUQsSUFBSSxXQUFXO1FBQ2IsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDO0lBQzNCLENBQUM7SUFFRCxJQUFJLFdBQVcsQ0FBQyxXQUEwQjtRQUN4QyxJQUFJLENBQUMsWUFBWSxHQUFHLFdBQVcsQ0FBQztRQUNoQyxJQUFJLENBQUMsR0FBRyxHQUFHLFdBQVcsQ0FBQyxZQUFZLENBQUM7SUFDdEMsQ0FBQztJQUVELE9BQU8sQ0FBQyxHQUFZO1FBQ2xCLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVELGlCQUFpQjtRQUNmLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDdkIsTUFBTSxJQUFJLGtDQUF1QixDQUFDLHdCQUF3QixDQUFDLENBQUM7UUFDOUQsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxZQUFZLENBQUM7SUFDeEMsQ0FBQztJQUVELE1BQU07UUFDSixJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ3ZCLE1BQU0sSUFBSSxrQ0FBdUIsQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO1FBQzlELENBQUM7UUFDRCxNQUFNLE1BQU0sR0FBbUM7WUFDN0MsRUFBRSxFQUFFLElBQUksQ0FBQyxFQUFFO1lBQ1gsSUFBSSxFQUFFLElBQUksQ0FBQyxLQUF3QjtTQUNwQyxDQUFDO1FBQ0Ysd0VBQXdFO1FBQ3hFLE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7Q0FDRjtBQXRDRCwwRUFzQ0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCYXNlS2V5LCBCYXNlVHJhbnNhY3Rpb24sIEludmFsaWRUcmFuc2FjdGlvbkVycm9yLCBUcmFuc2FjdGlvblR5cGUgfSBmcm9tICdAYml0Z28vc2RrLWNvcmUnO1xuaW1wb3J0IHsgQmFzZUNvaW4gYXMgQ29pbkNvbmZpZyB9IGZyb20gJ0BiaXRnby9zdGF0aWNzJztcbmltcG9ydCB7IFByZXBhcmVkUGFydHksIFdhbGxldEluaXRpYWxpemF0aW9uRGF0YVR4RGF0YSB9IGZyb20gJy4uL2lmYWNlJztcblxuZXhwb3J0IGNsYXNzIFdhbGxldEluaXRpYWxpemF0aW9uVHJhbnNhY3Rpb24gZXh0ZW5kcyBCYXNlVHJhbnNhY3Rpb24ge1xuICBwcml2YXRlIF90cmFuc2FjdGlvbjogUHJlcGFyZWRQYXJ0eTtcblxuICBjb25zdHJ1Y3Rvcihjb2luQ29uZmlnOiBSZWFkb25seTxDb2luQ29uZmlnPikge1xuICAgIHN1cGVyKGNvaW5Db25maWcpO1xuICB9XG5cbiAgZ2V0IHRyYW5zYWN0aW9uKCk6IFByZXBhcmVkUGFydHkge1xuICAgIHJldHVybiB0aGlzLl90cmFuc2FjdGlvbjtcbiAgfVxuXG4gIHNldCB0cmFuc2FjdGlvbih0cmFuc2FjdGlvbjogUHJlcGFyZWRQYXJ0eSkge1xuICAgIHRoaXMuX3RyYW5zYWN0aW9uID0gdHJhbnNhY3Rpb247XG4gICAgdGhpcy5faWQgPSB0cmFuc2FjdGlvbi5jb21iaW5lZEhhc2g7XG4gIH1cblxuICBjYW5TaWduKGtleTogQmFzZUtleSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHRvQnJvYWRjYXN0Rm9ybWF0KCk6IHN0cmluZyB7XG4gICAgaWYgKCF0aGlzLl90cmFuc2FjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKCdFbXB0eSB0cmFuc2FjdGlvbiBkYXRhJyk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl90cmFuc2FjdGlvbi5jb21iaW5lZEhhc2g7XG4gIH1cblxuICB0b0pzb24oKTogV2FsbGV0SW5pdGlhbGl6YXRpb25EYXRhVHhEYXRhIHtcbiAgICBpZiAoIXRoaXMuX3RyYW5zYWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IoJ0VtcHR5IHRyYW5zYWN0aW9uIGRhdGEnKTtcbiAgICB9XG4gICAgY29uc3QgcmVzdWx0OiBXYWxsZXRJbml0aWFsaXphdGlvbkRhdGFUeERhdGEgPSB7XG4gICAgICBpZDogdGhpcy5pZCxcbiAgICAgIHR5cGU6IHRoaXMuX3R5cGUgYXMgVHJhbnNhY3Rpb25UeXBlLFxuICAgIH07XG4gICAgLy8gQWRkIGxvZ2ljIHRvIHBhcnNlIHRoZSBwcmVwYXJlZFRyYW5zYWN0aW9uICYgZXh0cmFjdCBzZW5kZXIsIHJlY2VpdmVyXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxufVxuIl19