@bitgo-beta/sdk-coin-sui 3.0.3-beta.433 → 3.0.3-beta.434

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.
@@ -9,4 +9,8 @@ export declare const MAX_GAS_OBJECTS = 256;
9
9
  export declare const SUI_INTENT_BYTES: Buffer;
10
10
  export declare const SIGNATURE_SCHEME_BYTES: number[];
11
11
  export declare const MIN_STAKING_THRESHOLD = 1000000000;
12
+ export declare const MAX_GAS_BUDGET = 100000000;
13
+ export declare const DEFAULT_GAS_PRICE = 1000;
14
+ export declare const DEFAULT_GAS_OVERHEAD = 1.1;
15
+ export declare const MAX_OBJECT_LIMIT = 1280;
12
16
  //# sourceMappingURL=constants.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/lib/constants.ts"],"names":[],"mappings":";AAAA,eAAO,MAAM,gBAAgB,gBAAgB,CAAC;AAC9C,eAAO,MAAM,mBAAmB,mBAAmB,CAAC;AAIpD,eAAO,MAAM,mBAAmB,OAAO,CAAC;AACxC,eAAO,MAAM,kBAAkB,KAAK,CAAC;AACrC,eAAO,MAAM,eAAe,OAAO,CAAC;AAEpC,eAAO,MAAM,gBAAgB,MAAM,CAAC;AAEpC,eAAO,MAAM,eAAe,MAAM,CAAC;AAEnC,eAAO,MAAM,gBAAgB,QAAyB,CAAC;AAEvD,eAAO,MAAM,sBAAsB,UAAS,CAAC;AAE7C,eAAO,MAAM,qBAAqB,aAAgB,CAAC"}
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/lib/constants.ts"],"names":[],"mappings":";AAAA,eAAO,MAAM,gBAAgB,gBAAgB,CAAC;AAC9C,eAAO,MAAM,mBAAmB,mBAAmB,CAAC;AAIpD,eAAO,MAAM,mBAAmB,OAAO,CAAC;AACxC,eAAO,MAAM,kBAAkB,KAAK,CAAC;AACrC,eAAO,MAAM,eAAe,OAAO,CAAC;AAEpC,eAAO,MAAM,gBAAgB,MAAM,CAAC;AAEpC,eAAO,MAAM,eAAe,MAAM,CAAC;AAEnC,eAAO,MAAM,gBAAgB,QAAyB,CAAC;AAEvD,eAAO,MAAM,sBAAsB,UAAS,CAAC;AAE7C,eAAO,MAAM,qBAAqB,aAAgB,CAAC;AAGnD,eAAO,MAAM,cAAc,YAAY,CAAC;AACxC,eAAO,MAAM,iBAAiB,OAAO,CAAC;AACtC,eAAO,MAAM,oBAAoB,MAAM,CAAC;AAOxC,eAAO,MAAM,gBAAgB,OAAO,CAAC"}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.MIN_STAKING_THRESHOLD = exports.SIGNATURE_SCHEME_BYTES = exports.SUI_INTENT_BYTES = exports.MAX_GAS_OBJECTS = exports.MAX_COMMAND_ARGS = exports.SER_BUFFER_SIZE = exports.SUI_ADDRESS_LENGTH = exports.DUMMY_SUI_GAS_PRICE = exports.AMOUNT_UNKNOWN_TEXT = exports.UNAVAILABLE_TEXT = void 0;
3
+ exports.MAX_OBJECT_LIMIT = exports.DEFAULT_GAS_OVERHEAD = exports.DEFAULT_GAS_PRICE = exports.MAX_GAS_BUDGET = exports.MIN_STAKING_THRESHOLD = exports.SIGNATURE_SCHEME_BYTES = exports.SUI_INTENT_BYTES = exports.MAX_GAS_OBJECTS = exports.MAX_COMMAND_ARGS = exports.SER_BUFFER_SIZE = exports.SUI_ADDRESS_LENGTH = exports.DUMMY_SUI_GAS_PRICE = exports.AMOUNT_UNKNOWN_TEXT = exports.UNAVAILABLE_TEXT = void 0;
4
4
  exports.UNAVAILABLE_TEXT = 'UNAVAILABLE';
5
5
  exports.AMOUNT_UNKNOWN_TEXT = 'AMOUNT_UNKNOWN';
6
6
  // Refer to
@@ -15,4 +15,14 @@ exports.MAX_GAS_OBJECTS = 256;
15
15
  exports.SUI_INTENT_BYTES = Buffer.from([0, 0, 0]);
16
16
  exports.SIGNATURE_SCHEME_BYTES = [0x00];
17
17
  exports.MIN_STAKING_THRESHOLD = 1000000000; // 1 SUI
18
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9jb25zdGFudHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQWEsUUFBQSxnQkFBZ0IsR0FBRyxhQUFhLENBQUM7QUFDakMsUUFBQSxtQkFBbUIsR0FBRyxnQkFBZ0IsQ0FBQztBQUVwRCxXQUFXO0FBQ1gsbUZBQW1GO0FBQ3RFLFFBQUEsbUJBQW1CLEdBQUcsSUFBSSxDQUFDO0FBQzNCLFFBQUEsa0JBQWtCLEdBQUcsRUFBRSxDQUFDO0FBQ3hCLFFBQUEsZUFBZSxHQUFHLElBQUksQ0FBQztBQUNwQyw4SEFBOEg7QUFDakgsUUFBQSxnQkFBZ0IsR0FBRyxHQUFHLENBQUM7QUFDcEMsOEhBQThIO0FBQ2pILFFBQUEsZUFBZSxHQUFHLEdBQUcsQ0FBQztBQUV0QixRQUFBLGdCQUFnQixHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFFMUMsUUFBQSxzQkFBc0IsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBRWhDLFFBQUEscUJBQXFCLEdBQUcsVUFBYSxDQUFDLENBQUMsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBVTkFWQUlMQUJMRV9URVhUID0gJ1VOQVZBSUxBQkxFJztcbmV4cG9ydCBjb25zdCBBTU9VTlRfVU5LTk9XTl9URVhUID0gJ0FNT1VOVF9VTktOT1dOJztcblxuLy8gUmVmZXIgdG9cbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9NeXN0ZW5MYWJzL3N1aS9ibG9iL21haW4vY3JhdGVzL3N1aS10eXBlcy9zcmMvbWVzc2FnZXMucnMjTDUwXG5leHBvcnQgY29uc3QgRFVNTVlfU1VJX0dBU19QUklDRSA9IDEwMDA7XG5leHBvcnQgY29uc3QgU1VJX0FERFJFU1NfTEVOR1RIID0gMzI7XG5leHBvcnQgY29uc3QgU0VSX0JVRkZFUl9TSVpFID0gODE5Mjtcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9NeXN0ZW5MYWJzL3N1aS9ibG9iL2U2MjgzOWFlY2IxOTI1NDVjMzk1MWI2ZmEwYmM4NDAzOTEyMGIzNzMvY3JhdGVzL3N1aS1wcm90b2NvbC1jb25maWcvc3JjL2xpYi5ycyNMMTQ5NlxuZXhwb3J0IGNvbnN0IE1BWF9DT01NQU5EX0FSR1MgPSA1MTI7XG4vLyBodHRwczovL2dpdGh1Yi5jb20vTXlzdGVuTGFicy9zdWkvYmxvYi9lNjI4MzlhZWNiMTkyNTQ1YzM5NTFiNmZhMGJjODQwMzkxMjBiMzczL2NyYXRlcy9zdWktcHJvdG9jb2wtY29uZmlnL3NyYy9saWIucnMjTDE0OTNcbmV4cG9ydCBjb25zdCBNQVhfR0FTX09CSkVDVFMgPSAyNTY7XG5cbmV4cG9ydCBjb25zdCBTVUlfSU5URU5UX0JZVEVTID0gQnVmZmVyLmZyb20oWzAsIDAsIDBdKTtcblxuZXhwb3J0IGNvbnN0IFNJR05BVFVSRV9TQ0hFTUVfQllURVMgPSBbMHgwMF07XG5cbmV4cG9ydCBjb25zdCBNSU5fU1RBS0lOR19USFJFU0hPTEQgPSAxXzAwMF8wMDBfMDAwOyAvLyAxIFNVSVxuIl19
18
+ // The maximum gas that is allowed. 0.1 SUI
19
+ exports.MAX_GAS_BUDGET = 100000000;
20
+ exports.DEFAULT_GAS_PRICE = 1000;
21
+ exports.DEFAULT_GAS_OVERHEAD = 1.1;
22
+ /*
23
+ * SUI transactions have a limit of 128 KB on the tx size,
24
+ * that corresponds to a tx with max ~1600 objects depending on other transaction details,
25
+ * we chose 1280 as the object limit, keeping in mind other things like multiple recipients etc.
26
+ */
27
+ exports.MAX_OBJECT_LIMIT = 1280;
28
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9jb25zdGFudHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQWEsUUFBQSxnQkFBZ0IsR0FBRyxhQUFhLENBQUM7QUFDakMsUUFBQSxtQkFBbUIsR0FBRyxnQkFBZ0IsQ0FBQztBQUVwRCxXQUFXO0FBQ1gsbUZBQW1GO0FBQ3RFLFFBQUEsbUJBQW1CLEdBQUcsSUFBSSxDQUFDO0FBQzNCLFFBQUEsa0JBQWtCLEdBQUcsRUFBRSxDQUFDO0FBQ3hCLFFBQUEsZUFBZSxHQUFHLElBQUksQ0FBQztBQUNwQyw4SEFBOEg7QUFDakgsUUFBQSxnQkFBZ0IsR0FBRyxHQUFHLENBQUM7QUFDcEMsOEhBQThIO0FBQ2pILFFBQUEsZUFBZSxHQUFHLEdBQUcsQ0FBQztBQUV0QixRQUFBLGdCQUFnQixHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFFMUMsUUFBQSxzQkFBc0IsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBRWhDLFFBQUEscUJBQXFCLEdBQUcsVUFBYSxDQUFDLENBQUMsUUFBUTtBQUU1RCwyQ0FBMkM7QUFDOUIsUUFBQSxjQUFjLEdBQUcsU0FBUyxDQUFDO0FBQzNCLFFBQUEsaUJBQWlCLEdBQUcsSUFBSSxDQUFDO0FBQ3pCLFFBQUEsb0JBQW9CLEdBQUcsR0FBRyxDQUFDO0FBRXhDOzs7O0dBSUc7QUFDVSxRQUFBLGdCQUFnQixHQUFHLElBQUksQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBVTkFWQUlMQUJMRV9URVhUID0gJ1VOQVZBSUxBQkxFJztcbmV4cG9ydCBjb25zdCBBTU9VTlRfVU5LTk9XTl9URVhUID0gJ0FNT1VOVF9VTktOT1dOJztcblxuLy8gUmVmZXIgdG9cbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9NeXN0ZW5MYWJzL3N1aS9ibG9iL21haW4vY3JhdGVzL3N1aS10eXBlcy9zcmMvbWVzc2FnZXMucnMjTDUwXG5leHBvcnQgY29uc3QgRFVNTVlfU1VJX0dBU19QUklDRSA9IDEwMDA7XG5leHBvcnQgY29uc3QgU1VJX0FERFJFU1NfTEVOR1RIID0gMzI7XG5leHBvcnQgY29uc3QgU0VSX0JVRkZFUl9TSVpFID0gODE5Mjtcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9NeXN0ZW5MYWJzL3N1aS9ibG9iL2U2MjgzOWFlY2IxOTI1NDVjMzk1MWI2ZmEwYmM4NDAzOTEyMGIzNzMvY3JhdGVzL3N1aS1wcm90b2NvbC1jb25maWcvc3JjL2xpYi5ycyNMMTQ5NlxuZXhwb3J0IGNvbnN0IE1BWF9DT01NQU5EX0FSR1MgPSA1MTI7XG4vLyBodHRwczovL2dpdGh1Yi5jb20vTXlzdGVuTGFicy9zdWkvYmxvYi9lNjI4MzlhZWNiMTkyNTQ1YzM5NTFiNmZhMGJjODQwMzkxMjBiMzczL2NyYXRlcy9zdWktcHJvdG9jb2wtY29uZmlnL3NyYy9saWIucnMjTDE0OTNcbmV4cG9ydCBjb25zdCBNQVhfR0FTX09CSkVDVFMgPSAyNTY7XG5cbmV4cG9ydCBjb25zdCBTVUlfSU5URU5UX0JZVEVTID0gQnVmZmVyLmZyb20oWzAsIDAsIDBdKTtcblxuZXhwb3J0IGNvbnN0IFNJR05BVFVSRV9TQ0hFTUVfQllURVMgPSBbMHgwMF07XG5cbmV4cG9ydCBjb25zdCBNSU5fU1RBS0lOR19USFJFU0hPTEQgPSAxXzAwMF8wMDBfMDAwOyAvLyAxIFNVSVxuXG4vLyBUaGUgbWF4aW11bSBnYXMgdGhhdCBpcyBhbGxvd2VkLiAwLjEgU1VJXG5leHBvcnQgY29uc3QgTUFYX0dBU19CVURHRVQgPSAxMDAwMDAwMDA7XG5leHBvcnQgY29uc3QgREVGQVVMVF9HQVNfUFJJQ0UgPSAxMDAwO1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfR0FTX09WRVJIRUFEID0gMS4xO1xuXG4vKlxuICogU1VJIHRyYW5zYWN0aW9ucyBoYXZlIGEgbGltaXQgb2YgMTI4IEtCIG9uIHRoZSB0eCBzaXplLFxuICogdGhhdCBjb3JyZXNwb25kcyB0byBhIHR4IHdpdGggbWF4IH4xNjAwIG9iamVjdHMgZGVwZW5kaW5nIG9uIG90aGVyIHRyYW5zYWN0aW9uIGRldGFpbHMsXG4gKiB3ZSBjaG9zZSAxMjgwIGFzIHRoZSBvYmplY3QgbGltaXQsIGtlZXBpbmcgaW4gbWluZCBvdGhlciB0aGluZ3MgbGlrZSBtdWx0aXBsZSByZWNpcGllbnRzIGV0Yy5cbiAqL1xuZXhwb3J0IGNvbnN0IE1BWF9PQkpFQ1RfTElNSVQgPSAxMjgwO1xuIl19
@@ -1,4 +1,5 @@
1
1
  import { TransactionExplanation as BaseTransactionExplanation, TransactionType as BitGoTransactionType } from '@bitgo-beta/sdk-core';
2
+ import BigNumber from 'bignumber.js';
2
3
  import { GasData, ProgrammableTransaction, CallArg, SuiAddress, SuiObjectRef, TransactionExpiration } from './mystenlab/types';
3
4
  import { TransactionType, TransactionBlockInput } from './mystenlab/builder';
4
5
  export declare enum SuiTransactionType {
@@ -86,4 +87,14 @@ export declare enum MethodNames {
86
87
  */
87
88
  PublicTransfer = "::transfer::public_transfer"
88
89
  }
90
+ export interface SuiObjectInfo extends SuiObjectRef {
91
+ /** balance */
92
+ balance: BigNumber;
93
+ }
94
+ export interface SuiRecoveryTx {
95
+ serializedTx: string;
96
+ scanIndex: number;
97
+ recoveryAmount: string;
98
+ signature?: string;
99
+ }
89
100
  //# sourceMappingURL=iface.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"iface.d.ts","sourceRoot":"","sources":["../../../src/lib/iface.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,sBAAsB,IAAI,0BAA0B,EACpD,eAAe,IAAI,oBAAoB,EACxC,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,OAAO,EACP,uBAAuB,EACvB,OAAO,EACP,UAAU,EACV,YAAY,EACZ,qBAAqB,EACtB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAE7E,oBAAY,kBAAkB;IAC5B,QAAQ,aAAa;IACrB,QAAQ,aAAa;IACrB,aAAa,kBAAkB;IAC/B,QAAQ,aAAa;IACrB,aAAa,kBAAkB;CAChC;AAED,MAAM,WAAW,sBAAuB,SAAQ,0BAA0B;IACxE,IAAI,EAAE,oBAAoB,CAAC;CAC5B;AAED,oBAAY,0BAA0B,GAClC,+BAA+B,GAC/B,8BAA8B,GAC9B,gCAAgC,GAChC,6BAA6B,GAC7B,oCAAoC,CAAC;AAEzC,MAAM,WAAW,MAAM;IACrB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,UAAU,CAAC;IACnB,UAAU,EAAE,qBAAqB,CAAC;IAClC,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE;QACJ,uBAAuB,EAAE,0BAA0B,CAAC;KACrD,CAAC;IACF,YAAY,CAAC,EAAE,YAAY,EAAE,CAAC;CAC/B;AAED,oBAAY,+BAA+B,GACvC,uBAAuB,GACvB;IACE,MAAM,EAAE,OAAO,EAAE,GAAG,qBAAqB,EAAE,CAAC;IAC5C,YAAY,EAAE,eAAe,EAAE,CAAC;CACjC,CAAC;AAEN,oBAAY,8BAA8B,GACtC,uBAAuB,GACvB;IACE,MAAM,EAAE,OAAO,EAAE,GAAG,qBAAqB,EAAE,CAAC;IAC5C,YAAY,EAAE,eAAe,EAAE,CAAC;CACjC,CAAC;AAEN,oBAAY,gCAAgC,GACxC,uBAAuB,GACvB;IACE,MAAM,EAAE,OAAO,EAAE,GAAG,qBAAqB,EAAE,CAAC;IAC5C,YAAY,EAAE,eAAe,EAAE,CAAC;CACjC,CAAC;AAEN,oBAAY,6BAA6B,GACrC,uBAAuB,GACvB;IACE,MAAM,EAAE,OAAO,EAAE,GAAG,qBAAqB,EAAE,CAAC;IAC5C,YAAY,EAAE,eAAe,EAAE,CAAC;CACjC,CAAC;AAEN,oBAAY,oCAAoC,GAC5C,uBAAuB,GACvB;IACE,MAAM,EAAE,OAAO,EAAE,GAAG,qBAAqB,EAAE,CAAC;IAC5C,YAAY,EAAE,eAAe,EAAE,CAAC;CACjC,CAAC;AAEN,MAAM,WAAW,cAAc,CAAC,CAAC,GAAG,0BAA0B;IAC5D,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,kBAAkB,CAAC;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,EAAE,EAAE,CAAC,CAAC;IACN,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,gBAAgB,EAAE,UAAU,CAAC;CAC9B;AAED,MAAM,WAAW,wBAAwB;IACvC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,YAAY,CAAC;CACzB;AAED;;GAEG;AACH,oBAAY,WAAW;IACrB;;;;OAIG;IACH,eAAe,sBAAsB;IACrC;;;;OAIG;IACH,oBAAoB,2BAA2B;IAC/C;;;;OAIG;IACH,gBAAgB,0BAA0B;IAC1C;;;;OAIG;IACH,cAAc,gCAAgC;CAC/C"}
1
+ {"version":3,"file":"iface.d.ts","sourceRoot":"","sources":["../../../src/lib/iface.ts"],"names":[],"mappings":"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"}
@@ -39,4 +39,4 @@ var MethodNames;
39
39
  */
40
40
  MethodNames["PublicTransfer"] = "::transfer::public_transfer";
41
41
  })(MethodNames = exports.MethodNames || (exports.MethodNames = {}));
42
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL2lmYWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQWNBLElBQVksa0JBTVg7QUFORCxXQUFZLGtCQUFrQjtJQUM1QiwyQ0FBcUIsQ0FBQTtJQUNyQiwyQ0FBcUIsQ0FBQTtJQUNyQixxREFBK0IsQ0FBQTtJQUMvQiwyQ0FBcUIsQ0FBQTtJQUNyQixxREFBK0IsQ0FBQTtBQUNqQyxDQUFDLEVBTlcsa0JBQWtCLEdBQWxCLDBCQUFrQixLQUFsQiwwQkFBa0IsUUFNN0I7QUE2RUQ7O0dBRUc7QUFDSCxJQUFZLFdBeUJYO0FBekJELFdBQVksV0FBVztJQUNyQjs7OztPQUlHO0lBQ0gsb0RBQXFDLENBQUE7SUFDckM7Ozs7T0FJRztJQUNILDhEQUErQyxDQUFBO0lBQy9DOzs7O09BSUc7SUFDSCx5REFBMEMsQ0FBQTtJQUMxQzs7OztPQUlHO0lBQ0gsNkRBQThDLENBQUE7QUFDaEQsQ0FBQyxFQXpCVyxXQUFXLEdBQVgsbUJBQVcsS0FBWCxtQkFBVyxRQXlCdEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBUcmFuc2FjdGlvbkV4cGxhbmF0aW9uIGFzIEJhc2VUcmFuc2FjdGlvbkV4cGxhbmF0aW9uLFxuICBUcmFuc2FjdGlvblR5cGUgYXMgQml0R29UcmFuc2FjdGlvblR5cGUsXG59IGZyb20gJ0BiaXRnby1iZXRhL3Nkay1jb3JlJztcbmltcG9ydCB7XG4gIEdhc0RhdGEsXG4gIFByb2dyYW1tYWJsZVRyYW5zYWN0aW9uLFxuICBDYWxsQXJnLFxuICBTdWlBZGRyZXNzLFxuICBTdWlPYmplY3RSZWYsXG4gIFRyYW5zYWN0aW9uRXhwaXJhdGlvbixcbn0gZnJvbSAnLi9teXN0ZW5sYWIvdHlwZXMnO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb25UeXBlLCBUcmFuc2FjdGlvbkJsb2NrSW5wdXQgfSBmcm9tICcuL215c3RlbmxhYi9idWlsZGVyJztcblxuZXhwb3J0IGVudW0gU3VpVHJhbnNhY3Rpb25UeXBlIHtcbiAgVHJhbnNmZXIgPSAnVHJhbnNmZXInLFxuICBBZGRTdGFrZSA9ICdBZGRTdGFrZScsXG4gIFdpdGhkcmF3U3Rha2UgPSAnV2l0aGRyYXdTdGFrZScsXG4gIEN1c3RvbVR4ID0gJ0N1c3RvbVR4JyxcbiAgVG9rZW5UcmFuc2ZlciA9ICdUb2tlblRyYW5zZmVyJyxcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUcmFuc2FjdGlvbkV4cGxhbmF0aW9uIGV4dGVuZHMgQmFzZVRyYW5zYWN0aW9uRXhwbGFuYXRpb24ge1xuICB0eXBlOiBCaXRHb1RyYW5zYWN0aW9uVHlwZTtcbn1cblxuZXhwb3J0IHR5cGUgU3VpUHJvZ3JhbW1hYmxlVHJhbnNhY3Rpb24gPVxuICB8IFRyYW5zZmVyUHJvZ3JhbW1hYmxlVHJhbnNhY3Rpb25cbiAgfCBTdGFraW5nUHJvZ3JhbW1hYmxlVHJhbnNhY3Rpb25cbiAgfCBVbnN0YWtpbmdQcm9ncmFtbWFibGVUcmFuc2FjdGlvblxuICB8IEN1c3RvbVByb2dyYW1tYWJsZVRyYW5zYWN0aW9uXG4gIHwgVG9rZW5UcmFuc2ZlclByb2dyYW1tYWJsZVRyYW5zYWN0aW9uO1xuXG5leHBvcnQgaW50ZXJmYWNlIFR4RGF0YSB7XG4gIGlkPzogc3RyaW5nO1xuICBzZW5kZXI6IFN1aUFkZHJlc3M7XG4gIGV4cGlyYXRpb246IFRyYW5zYWN0aW9uRXhwaXJhdGlvbjtcbiAgZ2FzRGF0YTogR2FzRGF0YTtcbiAga2luZDoge1xuICAgIFByb2dyYW1tYWJsZVRyYW5zYWN0aW9uOiBTdWlQcm9ncmFtbWFibGVUcmFuc2FjdGlvbjtcbiAgfTtcbiAgaW5wdXRPYmplY3RzPzogU3VpT2JqZWN0UmVmW107XG59XG5cbmV4cG9ydCB0eXBlIFRyYW5zZmVyUHJvZ3JhbW1hYmxlVHJhbnNhY3Rpb24gPVxuICB8IFByb2dyYW1tYWJsZVRyYW5zYWN0aW9uXG4gIHwge1xuICAgICAgaW5wdXRzOiBDYWxsQXJnW10gfCBUcmFuc2FjdGlvbkJsb2NrSW5wdXRbXTtcbiAgICAgIHRyYW5zYWN0aW9uczogVHJhbnNhY3Rpb25UeXBlW107XG4gICAgfTtcblxuZXhwb3J0IHR5cGUgU3Rha2luZ1Byb2dyYW1tYWJsZVRyYW5zYWN0aW9uID1cbiAgfCBQcm9ncmFtbWFibGVUcmFuc2FjdGlvblxuICB8IHtcbiAgICAgIGlucHV0czogQ2FsbEFyZ1tdIHwgVHJhbnNhY3Rpb25CbG9ja0lucHV0W107XG4gICAgICB0cmFuc2FjdGlvbnM6IFRyYW5zYWN0aW9uVHlwZVtdO1xuICAgIH07XG5cbmV4cG9ydCB0eXBlIFVuc3Rha2luZ1Byb2dyYW1tYWJsZVRyYW5zYWN0aW9uID1cbiAgfCBQcm9ncmFtbWFibGVUcmFuc2FjdGlvblxuICB8IHtcbiAgICAgIGlucHV0czogQ2FsbEFyZ1tdIHwgVHJhbnNhY3Rpb25CbG9ja0lucHV0W107XG4gICAgICB0cmFuc2FjdGlvbnM6IFRyYW5zYWN0aW9uVHlwZVtdO1xuICAgIH07XG5cbmV4cG9ydCB0eXBlIEN1c3RvbVByb2dyYW1tYWJsZVRyYW5zYWN0aW9uID1cbiAgfCBQcm9ncmFtbWFibGVUcmFuc2FjdGlvblxuICB8IHtcbiAgICAgIGlucHV0czogQ2FsbEFyZ1tdIHwgVHJhbnNhY3Rpb25CbG9ja0lucHV0W107XG4gICAgICB0cmFuc2FjdGlvbnM6IFRyYW5zYWN0aW9uVHlwZVtdO1xuICAgIH07XG5cbmV4cG9ydCB0eXBlIFRva2VuVHJhbnNmZXJQcm9ncmFtbWFibGVUcmFuc2FjdGlvbiA9XG4gIHwgUHJvZ3JhbW1hYmxlVHJhbnNhY3Rpb25cbiAgfCB7XG4gICAgICBpbnB1dHM6IENhbGxBcmdbXSB8IFRyYW5zYWN0aW9uQmxvY2tJbnB1dFtdO1xuICAgICAgdHJhbnNhY3Rpb25zOiBUcmFuc2FjdGlvblR5cGVbXTtcbiAgICB9O1xuXG5leHBvcnQgaW50ZXJmYWNlIFN1aVRyYW5zYWN0aW9uPFQgPSBTdWlQcm9ncmFtbWFibGVUcmFuc2FjdGlvbj4ge1xuICBpZD86IHN0cmluZztcbiAgdHlwZTogU3VpVHJhbnNhY3Rpb25UeXBlO1xuICBzZW5kZXI6IHN0cmluZztcbiAgdHg6IFQ7XG4gIGdhc0RhdGE6IEdhc0RhdGE7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVxdWVzdEFkZFN0YWtlIHtcbiAgYW1vdW50OiBudW1iZXI7XG4gIHZhbGlkYXRvckFkZHJlc3M6IFN1aUFkZHJlc3M7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVxdWVzdFdpdGhkcmF3U3Rha2VkU3VpIHtcbiAgYW1vdW50PzogbnVtYmVyO1xuICBzdGFrZWRTdWk6IFN1aU9iamVjdFJlZjtcbn1cblxuLyoqXG4gKiBNZXRob2QgbmFtZXMgZm9yIHRoZSB0cmFuc2FjdGlvbiBtZXRob2QuIE5hbWVzIGNoYW5nZSBiYXNlZCBvbiB0aGUgdHlwZSBvZiB0cmFuc2FjdGlvbiBlLmcgJ3JlcXVlc3RfYWRkX2RlbGVnYXRpb25fbXVsX2NvaW4nIGZvciB0aGUgc3Rha2luZyB0cmFuc2FjdGlvblxuICovXG5leHBvcnQgZW51bSBNZXRob2ROYW1lcyB7XG4gIC8qKlxuICAgKiBBZGQgc3Rha2UgdG8gYSB2YWxpZGF0b3IncyBzdGFraW5nIHBvb2wuXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9naXRodWIuY29tL015c3RlbkxhYnMvc3VpL2Jsb2IvbWFpbi9jcmF0ZXMvc3VpLWZyYW1ld29yay9kb2NzL3N1aV9zeXN0ZW0ubWQjZnVuY3Rpb24tcmVxdWVzdF9hZGRfc3Rha2VcbiAgICovXG4gIFJlcXVlc3RBZGRTdGFrZSA9ICdyZXF1ZXN0X2FkZF9zdGFrZScsXG4gIC8qKlxuICAgKiBXaXRoZHJhdyBzb21lIHBvcnRpb24gb2YgYSBzdGFrZSBmcm9tIGEgdmFsaWRhdG9yJ3Mgc3Rha2luZyBwb29sLlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9NeXN0ZW5MYWJzL3N1aS9ibG9iL21haW4vY3JhdGVzL3N1aS1mcmFtZXdvcmsvZG9jcy9zdWlfc3lzdGVtLm1kI2Z1bmN0aW9uLXJlcXVlc3Rfd2l0aGRyYXdfc3Rha2VcbiAgICovXG4gIFJlcXVlc3RXaXRoZHJhd1N0YWtlID0gJ3JlcXVlc3Rfd2l0aGRyYXdfc3Rha2UnLFxuICAvKipcbiAgICogU3BsaXQgU3Rha2VkU3VpIHNlbGYgdG8gdHdvIHBhcnRzLCBvbmUgd2l0aCBwcmluY2lwYWwgc3BsaXRfYW1vdW50LCBhbmQgdGhlIHJlbWFpbmluZyBwcmluY2lwYWwgaXMgbGVmdCBpbiBzZWxmLlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9NeXN0ZW5MYWJzL3N1aS9ibG9iL21haW4vY3JhdGVzL3N1aS1mcmFtZXdvcmsvZG9jcy9zdGFraW5nX3Bvb2wubWQjMHgzX3N0YWtpbmdfcG9vbF9zcGxpdFxuICAgKi9cbiAgU3Rha2luZ1Bvb2xTcGxpdCA9ICc6OnN0YWtpbmdfcG9vbDo6c3BsaXQnLFxuICAvKipcbiAgICogVHJhbnNmZXIgb3duZXJzaGlwIG9mIG9iaiB0byByZWNpcGllbnQuXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9naXRodWIuY29tL015c3RlbkxhYnMvc3VpL2Jsb2IvbWFpbi9jcmF0ZXMvc3VpLWZyYW1ld29yay9kb2NzL3RyYW5zZmVyLm1kI2Z1bmN0aW9uLXB1YmxpY190cmFuc2ZlclxuICAgKi9cbiAgUHVibGljVHJhbnNmZXIgPSAnOjp0cmFuc2Zlcjo6cHVibGljX3RyYW5zZmVyJyxcbn1cbiJdfQ==
42
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL2lmYWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQWVBLElBQVksa0JBTVg7QUFORCxXQUFZLGtCQUFrQjtJQUM1QiwyQ0FBcUIsQ0FBQTtJQUNyQiwyQ0FBcUIsQ0FBQTtJQUNyQixxREFBK0IsQ0FBQTtJQUMvQiwyQ0FBcUIsQ0FBQTtJQUNyQixxREFBK0IsQ0FBQTtBQUNqQyxDQUFDLEVBTlcsa0JBQWtCLEdBQWxCLDBCQUFrQixLQUFsQiwwQkFBa0IsUUFNN0I7QUE2RUQ7O0dBRUc7QUFDSCxJQUFZLFdBeUJYO0FBekJELFdBQVksV0FBVztJQUNyQjs7OztPQUlHO0lBQ0gsb0RBQXFDLENBQUE7SUFDckM7Ozs7T0FJRztJQUNILDhEQUErQyxDQUFBO0lBQy9DOzs7O09BSUc7SUFDSCx5REFBMEMsQ0FBQTtJQUMxQzs7OztPQUlHO0lBQ0gsNkRBQThDLENBQUE7QUFDaEQsQ0FBQyxFQXpCVyxXQUFXLEdBQVgsbUJBQVcsS0FBWCxtQkFBVyxRQXlCdEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBUcmFuc2FjdGlvbkV4cGxhbmF0aW9uIGFzIEJhc2VUcmFuc2FjdGlvbkV4cGxhbmF0aW9uLFxuICBUcmFuc2FjdGlvblR5cGUgYXMgQml0R29UcmFuc2FjdGlvblR5cGUsXG59IGZyb20gJ0BiaXRnby1iZXRhL3Nkay1jb3JlJztcbmltcG9ydCBCaWdOdW1iZXIgZnJvbSAnYmlnbnVtYmVyLmpzJztcbmltcG9ydCB7XG4gIEdhc0RhdGEsXG4gIFByb2dyYW1tYWJsZVRyYW5zYWN0aW9uLFxuICBDYWxsQXJnLFxuICBTdWlBZGRyZXNzLFxuICBTdWlPYmplY3RSZWYsXG4gIFRyYW5zYWN0aW9uRXhwaXJhdGlvbixcbn0gZnJvbSAnLi9teXN0ZW5sYWIvdHlwZXMnO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb25UeXBlLCBUcmFuc2FjdGlvbkJsb2NrSW5wdXQgfSBmcm9tICcuL215c3RlbmxhYi9idWlsZGVyJztcblxuZXhwb3J0IGVudW0gU3VpVHJhbnNhY3Rpb25UeXBlIHtcbiAgVHJhbnNmZXIgPSAnVHJhbnNmZXInLFxuICBBZGRTdGFrZSA9ICdBZGRTdGFrZScsXG4gIFdpdGhkcmF3U3Rha2UgPSAnV2l0aGRyYXdTdGFrZScsXG4gIEN1c3RvbVR4ID0gJ0N1c3RvbVR4JyxcbiAgVG9rZW5UcmFuc2ZlciA9ICdUb2tlblRyYW5zZmVyJyxcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUcmFuc2FjdGlvbkV4cGxhbmF0aW9uIGV4dGVuZHMgQmFzZVRyYW5zYWN0aW9uRXhwbGFuYXRpb24ge1xuICB0eXBlOiBCaXRHb1RyYW5zYWN0aW9uVHlwZTtcbn1cblxuZXhwb3J0IHR5cGUgU3VpUHJvZ3JhbW1hYmxlVHJhbnNhY3Rpb24gPVxuICB8IFRyYW5zZmVyUHJvZ3JhbW1hYmxlVHJhbnNhY3Rpb25cbiAgfCBTdGFraW5nUHJvZ3JhbW1hYmxlVHJhbnNhY3Rpb25cbiAgfCBVbnN0YWtpbmdQcm9ncmFtbWFibGVUcmFuc2FjdGlvblxuICB8IEN1c3RvbVByb2dyYW1tYWJsZVRyYW5zYWN0aW9uXG4gIHwgVG9rZW5UcmFuc2ZlclByb2dyYW1tYWJsZVRyYW5zYWN0aW9uO1xuXG5leHBvcnQgaW50ZXJmYWNlIFR4RGF0YSB7XG4gIGlkPzogc3RyaW5nO1xuICBzZW5kZXI6IFN1aUFkZHJlc3M7XG4gIGV4cGlyYXRpb246IFRyYW5zYWN0aW9uRXhwaXJhdGlvbjtcbiAgZ2FzRGF0YTogR2FzRGF0YTtcbiAga2luZDoge1xuICAgIFByb2dyYW1tYWJsZVRyYW5zYWN0aW9uOiBTdWlQcm9ncmFtbWFibGVUcmFuc2FjdGlvbjtcbiAgfTtcbiAgaW5wdXRPYmplY3RzPzogU3VpT2JqZWN0UmVmW107XG59XG5cbmV4cG9ydCB0eXBlIFRyYW5zZmVyUHJvZ3JhbW1hYmxlVHJhbnNhY3Rpb24gPVxuICB8IFByb2dyYW1tYWJsZVRyYW5zYWN0aW9uXG4gIHwge1xuICAgICAgaW5wdXRzOiBDYWxsQXJnW10gfCBUcmFuc2FjdGlvbkJsb2NrSW5wdXRbXTtcbiAgICAgIHRyYW5zYWN0aW9uczogVHJhbnNhY3Rpb25UeXBlW107XG4gICAgfTtcblxuZXhwb3J0IHR5cGUgU3Rha2luZ1Byb2dyYW1tYWJsZVRyYW5zYWN0aW9uID1cbiAgfCBQcm9ncmFtbWFibGVUcmFuc2FjdGlvblxuICB8IHtcbiAgICAgIGlucHV0czogQ2FsbEFyZ1tdIHwgVHJhbnNhY3Rpb25CbG9ja0lucHV0W107XG4gICAgICB0cmFuc2FjdGlvbnM6IFRyYW5zYWN0aW9uVHlwZVtdO1xuICAgIH07XG5cbmV4cG9ydCB0eXBlIFVuc3Rha2luZ1Byb2dyYW1tYWJsZVRyYW5zYWN0aW9uID1cbiAgfCBQcm9ncmFtbWFibGVUcmFuc2FjdGlvblxuICB8IHtcbiAgICAgIGlucHV0czogQ2FsbEFyZ1tdIHwgVHJhbnNhY3Rpb25CbG9ja0lucHV0W107XG4gICAgICB0cmFuc2FjdGlvbnM6IFRyYW5zYWN0aW9uVHlwZVtdO1xuICAgIH07XG5cbmV4cG9ydCB0eXBlIEN1c3RvbVByb2dyYW1tYWJsZVRyYW5zYWN0aW9uID1cbiAgfCBQcm9ncmFtbWFibGVUcmFuc2FjdGlvblxuICB8IHtcbiAgICAgIGlucHV0czogQ2FsbEFyZ1tdIHwgVHJhbnNhY3Rpb25CbG9ja0lucHV0W107XG4gICAgICB0cmFuc2FjdGlvbnM6IFRyYW5zYWN0aW9uVHlwZVtdO1xuICAgIH07XG5cbmV4cG9ydCB0eXBlIFRva2VuVHJhbnNmZXJQcm9ncmFtbWFibGVUcmFuc2FjdGlvbiA9XG4gIHwgUHJvZ3JhbW1hYmxlVHJhbnNhY3Rpb25cbiAgfCB7XG4gICAgICBpbnB1dHM6IENhbGxBcmdbXSB8IFRyYW5zYWN0aW9uQmxvY2tJbnB1dFtdO1xuICAgICAgdHJhbnNhY3Rpb25zOiBUcmFuc2FjdGlvblR5cGVbXTtcbiAgICB9O1xuXG5leHBvcnQgaW50ZXJmYWNlIFN1aVRyYW5zYWN0aW9uPFQgPSBTdWlQcm9ncmFtbWFibGVUcmFuc2FjdGlvbj4ge1xuICBpZD86IHN0cmluZztcbiAgdHlwZTogU3VpVHJhbnNhY3Rpb25UeXBlO1xuICBzZW5kZXI6IHN0cmluZztcbiAgdHg6IFQ7XG4gIGdhc0RhdGE6IEdhc0RhdGE7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVxdWVzdEFkZFN0YWtlIHtcbiAgYW1vdW50OiBudW1iZXI7XG4gIHZhbGlkYXRvckFkZHJlc3M6IFN1aUFkZHJlc3M7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVxdWVzdFdpdGhkcmF3U3Rha2VkU3VpIHtcbiAgYW1vdW50PzogbnVtYmVyO1xuICBzdGFrZWRTdWk6IFN1aU9iamVjdFJlZjtcbn1cblxuLyoqXG4gKiBNZXRob2QgbmFtZXMgZm9yIHRoZSB0cmFuc2FjdGlvbiBtZXRob2QuIE5hbWVzIGNoYW5nZSBiYXNlZCBvbiB0aGUgdHlwZSBvZiB0cmFuc2FjdGlvbiBlLmcgJ3JlcXVlc3RfYWRkX2RlbGVnYXRpb25fbXVsX2NvaW4nIGZvciB0aGUgc3Rha2luZyB0cmFuc2FjdGlvblxuICovXG5leHBvcnQgZW51bSBNZXRob2ROYW1lcyB7XG4gIC8qKlxuICAgKiBBZGQgc3Rha2UgdG8gYSB2YWxpZGF0b3IncyBzdGFraW5nIHBvb2wuXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9naXRodWIuY29tL015c3RlbkxhYnMvc3VpL2Jsb2IvbWFpbi9jcmF0ZXMvc3VpLWZyYW1ld29yay9kb2NzL3N1aV9zeXN0ZW0ubWQjZnVuY3Rpb24tcmVxdWVzdF9hZGRfc3Rha2VcbiAgICovXG4gIFJlcXVlc3RBZGRTdGFrZSA9ICdyZXF1ZXN0X2FkZF9zdGFrZScsXG4gIC8qKlxuICAgKiBXaXRoZHJhdyBzb21lIHBvcnRpb24gb2YgYSBzdGFrZSBmcm9tIGEgdmFsaWRhdG9yJ3Mgc3Rha2luZyBwb29sLlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9NeXN0ZW5MYWJzL3N1aS9ibG9iL21haW4vY3JhdGVzL3N1aS1mcmFtZXdvcmsvZG9jcy9zdWlfc3lzdGVtLm1kI2Z1bmN0aW9uLXJlcXVlc3Rfd2l0aGRyYXdfc3Rha2VcbiAgICovXG4gIFJlcXVlc3RXaXRoZHJhd1N0YWtlID0gJ3JlcXVlc3Rfd2l0aGRyYXdfc3Rha2UnLFxuICAvKipcbiAgICogU3BsaXQgU3Rha2VkU3VpIHNlbGYgdG8gdHdvIHBhcnRzLCBvbmUgd2l0aCBwcmluY2lwYWwgc3BsaXRfYW1vdW50LCBhbmQgdGhlIHJlbWFpbmluZyBwcmluY2lwYWwgaXMgbGVmdCBpbiBzZWxmLlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9NeXN0ZW5MYWJzL3N1aS9ibG9iL21haW4vY3JhdGVzL3N1aS1mcmFtZXdvcmsvZG9jcy9zdGFraW5nX3Bvb2wubWQjMHgzX3N0YWtpbmdfcG9vbF9zcGxpdFxuICAgKi9cbiAgU3Rha2luZ1Bvb2xTcGxpdCA9ICc6OnN0YWtpbmdfcG9vbDo6c3BsaXQnLFxuICAvKipcbiAgICogVHJhbnNmZXIgb3duZXJzaGlwIG9mIG9iaiB0byByZWNpcGllbnQuXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9naXRodWIuY29tL015c3RlbkxhYnMvc3VpL2Jsb2IvbWFpbi9jcmF0ZXMvc3VpLWZyYW1ld29yay9kb2NzL3RyYW5zZmVyLm1kI2Z1bmN0aW9uLXB1YmxpY190cmFuc2ZlclxuICAgKi9cbiAgUHVibGljVHJhbnNmZXIgPSAnOjp0cmFuc2Zlcjo6cHVibGljX3RyYW5zZmVyJyxcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTdWlPYmplY3RJbmZvIGV4dGVuZHMgU3VpT2JqZWN0UmVmIHtcbiAgLyoqIGJhbGFuY2UgKi9cbiAgYmFsYW5jZTogQmlnTnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFN1aVJlY292ZXJ5VHgge1xuICBzZXJpYWxpemVkVHg6IHN0cmluZztcbiAgc2NhbkluZGV4OiBudW1iZXI7XG4gIHJlY292ZXJ5QW1vdW50OiBzdHJpbmc7XG4gIHNpZ25hdHVyZT86IHN0cmluZztcbn1cbiJdfQ==
@@ -27,8 +27,8 @@ export declare const PaginatedCoins: import("superstruct").Struct<{
27
27
  coinObjectId: string;
28
28
  lockedUntilEpoch: number | null;
29
29
  }[];
30
- nextCursor: string | null;
31
30
  hasNextPage: boolean;
31
+ nextCursor: string | null;
32
32
  }, {
33
33
  data: import("superstruct").Struct<{
34
34
  version: number;
@@ -61,8 +61,8 @@ export declare const PaginatedCoins: import("superstruct").Struct<{
61
61
  export declare type PaginatedCoins = Infer<typeof PaginatedCoins>;
62
62
  export declare const CoinBalance: import("superstruct").Struct<{
63
63
  coinType: string;
64
- coinObjectCount: number;
65
64
  totalBalance: number;
65
+ coinObjectCount: number;
66
66
  lockedBalance: {
67
67
  number?: number | undefined;
68
68
  epochId?: number | undefined;
@@ -91,11 +91,11 @@ export declare const PaginatedEvents: import("superstruct").Struct<{
91
91
  parsedJson?: Record<string, any> | undefined;
92
92
  timestampMs?: number | undefined;
93
93
  }[];
94
+ hasNextPage: boolean;
94
95
  nextCursor: {
95
96
  txDigest: string;
96
97
  eventSeq: number;
97
98
  } | null;
98
- hasNextPage: boolean;
99
99
  }, {
100
100
  data: import("superstruct").Struct<{
101
101
  type: string;
@@ -793,8 +793,8 @@ export declare type SuiTransactionBlockData = Infer<typeof SuiTransactionBlockDa
793
793
  export declare const AuthoritySignature: import("superstruct").Struct<string, null>;
794
794
  export declare const GenericAuthoritySignature: import("superstruct").Struct<string | string[], null>;
795
795
  export declare const AuthorityQuorumSignInfo: import("superstruct").Struct<{
796
- epoch: string;
797
796
  signature: string | string[];
797
+ epoch: string;
798
798
  signers_map: number[];
799
799
  }, {
800
800
  epoch: import("superstruct").Struct<string, null>;
@@ -4209,8 +4209,8 @@ export declare const PaginatedTransactionResponse: import("superstruct").Struct<
4209
4209
  }[] | undefined;
4210
4210
  errors?: string[] | undefined;
4211
4211
  }[];
4212
- nextCursor: string | null;
4213
4212
  hasNextPage: boolean;
4213
+ nextCursor: string | null;
4214
4214
  }, {
4215
4215
  data: import("superstruct").Struct<{
4216
4216
  digest: string;
@@ -0,0 +1,5 @@
1
+ import * as superagent from 'superagent';
2
+ export declare type Params = any;
3
+ export declare function requestIgnoreStatusCode(params: Params): Promise<superagent.Response>;
4
+ export declare function makeRPC(url: string, method: string, params: Params): Promise<Record<string, any>>;
5
+ //# sourceMappingURL=rpcClient.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rpcClient.d.ts","sourceRoot":"","sources":["../../../src/lib/rpcClient.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,UAAU,MAAM,YAAY,CAAC;AAEzC,oBAAY,MAAM,GAAG,GAAG,CAAC;AAWzB,wBAAsB,uBAAuB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,CAS1F;AAED,wBAAsB,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAYvG"}
@@ -0,0 +1,62 @@
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 (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.makeRPC = exports.requestIgnoreStatusCode = void 0;
27
+ const superagent = __importStar(require("superagent"));
28
+ async function request({ url, timeoutMs = undefined, params = {} }) {
29
+ return superagent
30
+ .post(url)
31
+ .send(params)
32
+ .timeout({ deadline: timeoutMs })
33
+ .type('json')
34
+ .set({ Accept: 'application/json' });
35
+ }
36
+ async function requestIgnoreStatusCode(params) {
37
+ try {
38
+ return await request(params);
39
+ }
40
+ catch (e) {
41
+ if ('response' in e) {
42
+ return e.response;
43
+ }
44
+ throw e;
45
+ }
46
+ }
47
+ exports.requestIgnoreStatusCode = requestIgnoreStatusCode;
48
+ async function makeRPC(url, method, params) {
49
+ const res = await requestIgnoreStatusCode({
50
+ method: 'post',
51
+ url,
52
+ timeoutMs: 3000,
53
+ params: { jsonrpc: '2.0', id: 1, method: method, params: params },
54
+ });
55
+ if (res.body.error || res.statusCode !== 200) {
56
+ console.error(`Request to the node failed. Got: ${res.body}`);
57
+ throw new Error(`Request to the node failed. Got: ${res.body}`);
58
+ }
59
+ return res.body.result;
60
+ }
61
+ exports.makeRPC = makeRPC;
62
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnBjQ2xpZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9ycGNDbGllbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSx1REFBeUM7QUFJekMsS0FBSyxVQUFVLE9BQU8sQ0FBQyxFQUFFLEdBQUcsRUFBRSxTQUFTLEdBQUcsU0FBUyxFQUFFLE1BQU0sR0FBRyxFQUFFLEVBQUU7SUFDaEUsT0FBTyxVQUFVO1NBQ2QsSUFBSSxDQUFDLEdBQUcsQ0FBQztTQUNULElBQUksQ0FBQyxNQUFNLENBQUM7U0FDWixPQUFPLENBQUMsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLENBQUM7U0FDaEMsSUFBSSxDQUFDLE1BQU0sQ0FBQztTQUNaLEdBQUcsQ0FBQyxFQUFFLE1BQU0sRUFBRSxrQkFBa0IsRUFBRSxDQUFDLENBQUM7QUFDekMsQ0FBQztBQUVNLEtBQUssVUFBVSx1QkFBdUIsQ0FBQyxNQUFjO0lBQzFELElBQUk7UUFDRixPQUFPLE1BQU0sT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0tBQzlCO0lBQUMsT0FBTyxDQUFNLEVBQUU7UUFDZixJQUFJLFVBQVUsSUFBSSxDQUFDLEVBQUU7WUFDbkIsT0FBTyxDQUFDLENBQUMsUUFBUSxDQUFDO1NBQ25CO1FBQ0QsTUFBTSxDQUFDLENBQUM7S0FDVDtBQUNILENBQUM7QUFURCwwREFTQztBQUVNLEtBQUssVUFBVSxPQUFPLENBQUMsR0FBVyxFQUFFLE1BQWMsRUFBRSxNQUFjO0lBQ3ZFLE1BQU0sR0FBRyxHQUFHLE1BQU0sdUJBQXVCLENBQUM7UUFDeEMsTUFBTSxFQUFFLE1BQU07UUFDZCxHQUFHO1FBQ0gsU0FBUyxFQUFFLElBQUk7UUFDZixNQUFNLEVBQUUsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFO0tBQ2xFLENBQUMsQ0FBQztJQUNILElBQUksR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLElBQUksR0FBRyxDQUFDLFVBQVUsS0FBSyxHQUFHLEVBQUU7UUFDNUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxvQ0FBb0MsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7UUFDOUQsTUFBTSxJQUFJLEtBQUssQ0FBQyxvQ0FBb0MsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7S0FDakU7SUFDRCxPQUFPLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDO0FBQ3pCLENBQUM7QUFaRCwwQkFZQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHN1cGVyYWdlbnQgZnJvbSAnc3VwZXJhZ2VudCc7XG5cbmV4cG9ydCB0eXBlIFBhcmFtcyA9IGFueTtcblxuYXN5bmMgZnVuY3Rpb24gcmVxdWVzdCh7IHVybCwgdGltZW91dE1zID0gdW5kZWZpbmVkLCBwYXJhbXMgPSB7fSB9KSB7XG4gIHJldHVybiBzdXBlcmFnZW50XG4gICAgLnBvc3QodXJsKVxuICAgIC5zZW5kKHBhcmFtcylcbiAgICAudGltZW91dCh7IGRlYWRsaW5lOiB0aW1lb3V0TXMgfSlcbiAgICAudHlwZSgnanNvbicpXG4gICAgLnNldCh7IEFjY2VwdDogJ2FwcGxpY2F0aW9uL2pzb24nIH0pO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmVxdWVzdElnbm9yZVN0YXR1c0NvZGUocGFyYW1zOiBQYXJhbXMpOiBQcm9taXNlPHN1cGVyYWdlbnQuUmVzcG9uc2U+IHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gYXdhaXQgcmVxdWVzdChwYXJhbXMpO1xuICB9IGNhdGNoIChlOiBhbnkpIHtcbiAgICBpZiAoJ3Jlc3BvbnNlJyBpbiBlKSB7XG4gICAgICByZXR1cm4gZS5yZXNwb25zZTtcbiAgICB9XG4gICAgdGhyb3cgZTtcbiAgfVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gbWFrZVJQQyh1cmw6IHN0cmluZywgbWV0aG9kOiBzdHJpbmcsIHBhcmFtczogUGFyYW1zKTogUHJvbWlzZTxSZWNvcmQ8c3RyaW5nLCBhbnk+PiB7XG4gIGNvbnN0IHJlcyA9IGF3YWl0IHJlcXVlc3RJZ25vcmVTdGF0dXNDb2RlKHtcbiAgICBtZXRob2Q6ICdwb3N0JyxcbiAgICB1cmwsXG4gICAgdGltZW91dE1zOiAzMDAwLFxuICAgIHBhcmFtczogeyBqc29ucnBjOiAnMi4wJywgaWQ6IDEsIG1ldGhvZDogbWV0aG9kLCBwYXJhbXM6IHBhcmFtcyB9LFxuICB9KTtcbiAgaWYgKHJlcy5ib2R5LmVycm9yIHx8IHJlcy5zdGF0dXNDb2RlICE9PSAyMDApIHtcbiAgICBjb25zb2xlLmVycm9yKGBSZXF1ZXN0IHRvIHRoZSBub2RlIGZhaWxlZC4gR290OiAke3Jlcy5ib2R5fWApO1xuICAgIHRocm93IG5ldyBFcnJvcihgUmVxdWVzdCB0byB0aGUgbm9kZSBmYWlsZWQuIEdvdDogJHtyZXMuYm9keX1gKTtcbiAgfVxuICByZXR1cm4gcmVzLmJvZHkucmVzdWx0O1xufVxuIl19
@@ -1,5 +1,6 @@
1
1
  import { BaseUtils, Recipient, TransactionType } from '@bitgo-beta/sdk-core';
2
- import { RequestAddStake, StakingProgrammableTransaction, SuiProgrammableTransaction, SuiTransaction, SuiTransactionType } from './iface';
2
+ import BigNumber from 'bignumber.js';
3
+ import { RequestAddStake, StakingProgrammableTransaction, SuiObjectInfo, SuiProgrammableTransaction, SuiTransaction, SuiTransactionType } from './iface';
3
4
  import { SuiJsonValue, SuiObjectRef } from './mystenlab/types';
4
5
  import { ObjectCallArg, TransactionBlockInput, TransactionType as TransactionCommandType } from './mystenlab/builder';
5
6
  export declare function isImmOrOwnedObj(obj: ObjectCallArg['Object']): obj is {
@@ -96,6 +97,11 @@ export declare class Utils implements BaseUtils {
96
97
  normalizeSuiObjectRef(obj: SuiObjectRef): SuiObjectRef;
97
98
  transactionInput(type: 'object' | 'pure', index?: number, value?: unknown): TransactionBlockInput;
98
99
  getAddressFromPublicKey(publicKey: string): string;
100
+ getFeeEstimate(url: string, txHex: string): Promise<BigNumber>;
101
+ getBalance(url: string, owner: string, coinType?: string): Promise<string>;
102
+ getInputCoins(url: string, owner: string, coinType?: string): Promise<SuiObjectInfo[]>;
103
+ executeTransactionBlock(url: string, serializedTx: string, signatures: string[]): Promise<void>;
104
+ validateNonNegativeNumber(defaultVal: number, errorMsg: string, inputVal?: number): number;
99
105
  }
100
106
  declare const utils: Utils;
101
107
  export default utils;
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/lib/utils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/lib/utils.ts"],"names":[],"mappings":"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"}
@@ -16,6 +16,8 @@ const builder_1 = require("./mystenlab/builder");
16
16
  const keyPair_1 = require("./keyPair");
17
17
  const blake2b_1 = __importDefault(require("@bitgo-beta/blake2b"));
18
18
  const TransactionDataBlock_1 = require("./mystenlab/builder/TransactionDataBlock");
19
+ const rpcClient_1 = require("./rpcClient");
20
+ const assert_1 = __importDefault(require("assert"));
19
21
  function isImmOrOwnedObj(obj) {
20
22
  return 'ImmOrOwned' in obj;
21
23
  }
@@ -326,6 +328,77 @@ class Utils {
326
328
  .digest('hex')
327
329
  .slice(0, constants_1.SUI_ADDRESS_LENGTH * 2));
328
330
  }
331
+ async getFeeEstimate(url, txHex) {
332
+ const result = await (0, rpcClient_1.makeRPC)(url, 'sui_dryRunTransactionBlock', [txHex]);
333
+ (0, assert_1.default)(result.effects);
334
+ (0, assert_1.default)(result.effects.gasUsed);
335
+ if (result.effects.status.status !== 'success') {
336
+ console.error(`Dry run failed, could not automatically determine a budget for txHex ${txHex}`);
337
+ throw new Error(`Failed to get fee estimate`);
338
+ }
339
+ const gasObject = result.effects.gasUsed;
340
+ const storageCost = new bignumber_js_1.default(gasObject.storageCost);
341
+ const computationCost = new bignumber_js_1.default(gasObject.computationCost);
342
+ const storageRebate = new bignumber_js_1.default(gasObject.storageRebate);
343
+ const netCost = computationCost.plus(storageCost).minus(storageRebate);
344
+ return netCost.comparedTo(computationCost) > 0 ? netCost : computationCost;
345
+ }
346
+ async getBalance(url, owner, coinType) {
347
+ if (coinType === undefined) {
348
+ coinType = types_1.SUI_TYPE_ARG;
349
+ }
350
+ const result = await (0, rpcClient_1.makeRPC)(url, 'suix_getBalance', [owner, coinType]);
351
+ return result.totalBalance;
352
+ }
353
+ async getInputCoins(url, owner, coinType) {
354
+ if (coinType === undefined) {
355
+ coinType = types_1.SUI_TYPE_ARG;
356
+ }
357
+ let hasNextPage = true;
358
+ let cursor = undefined;
359
+ let params = [owner, coinType];
360
+ let data = [];
361
+ while (hasNextPage) {
362
+ if (cursor !== undefined) {
363
+ params = [owner, coinType, cursor];
364
+ }
365
+ try {
366
+ const result = await (0, rpcClient_1.makeRPC)(url, 'suix_getCoins', params);
367
+ data = data.concat(result.data);
368
+ hasNextPage = result.hasNextPage;
369
+ cursor = result.nextCursor;
370
+ }
371
+ catch (e) {
372
+ console.error(`Failed to get input coins from the node ${e}`);
373
+ throw new Error(`Failed to get input coins from the node.`);
374
+ }
375
+ }
376
+ return data;
377
+ }
378
+ async executeTransactionBlock(url, serializedTx, signatures) {
379
+ const reqType = 'WaitForEffectsCert';
380
+ const options = {
381
+ showEffects: true,
382
+ };
383
+ const params = [serializedTx, signatures, options, reqType];
384
+ try {
385
+ const result = await (0, rpcClient_1.makeRPC)(url, 'sui_executeTransactionBlock', params);
386
+ console.log(result);
387
+ }
388
+ catch (e) {
389
+ console.error(`Failed to execute transaction: ${e}`);
390
+ throw new Error(`Failed to execute transaction.`);
391
+ }
392
+ }
393
+ validateNonNegativeNumber(defaultVal, errorMsg, inputVal) {
394
+ if (inputVal === undefined) {
395
+ return defaultVal;
396
+ }
397
+ if (!Number.isInteger(inputVal) || inputVal < 0) {
398
+ throw new Error(errorMsg);
399
+ }
400
+ return inputVal;
401
+ }
329
402
  }
330
403
  exports.Utils = Utils;
331
404
  const utils = new Utils();
@@ -345,4 +418,4 @@ var IntentScope;
345
418
  IntentScope[IntentScope["CheckpointSummary"] = 2] = "CheckpointSummary";
346
419
  IntentScope[IntentScope["PersonalMessage"] = 3] = "PersonalMessage";
347
420
  })(IntentScope = exports.IntentScope || (exports.IntentScope = {}));
348
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLG1EQVE4QjtBQUM5QixnRUFBcUM7QUFDckMsMkNBQWlEO0FBQ2pELHVEQUFzRDtBQUN0RCxxQ0FBMkM7QUFDM0MsbUNBT2lCO0FBQ2pCLG1DQUFnQztBQUNoQyw2Q0FNMkI7QUFDM0IsaURBUTZCO0FBQzdCLHVDQUFxRDtBQUNyRCxrRUFBMEM7QUFDMUMsbUZBQXFGO0FBRXJGLFNBQWdCLGVBQWUsQ0FBQyxHQUE0QjtJQUMxRCxPQUFPLFlBQVksSUFBSSxHQUFHLENBQUM7QUFDN0IsQ0FBQztBQUZELDBDQUVDO0FBRUQsTUFBYSxLQUFLO0lBQ2hCLGtCQUFrQjtJQUNsQixjQUFjLENBQUMsSUFBWTtRQUN6QixNQUFNLElBQUksS0FBSyxDQUFDLHlCQUF5QixDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVELGtCQUFrQjtJQUNsQixpQkFBaUIsQ0FBQyxHQUFXO1FBQzNCLE1BQU0sSUFBSSxLQUFLLENBQUMseUJBQXlCLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLGdCQUFnQixDQUFDLEdBQVc7UUFDMUIsT0FBTyxJQUFBLGtDQUF1QixFQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsZ0JBQWdCLENBQUMsU0FBaUI7UUFDaEMsTUFBTSxJQUFJLEtBQUssQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsb0JBQW9CLENBQUMsSUFBWTtRQUMvQixNQUFNLElBQUksS0FBSyxDQUFDLHlCQUF5QixDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gscUJBQXFCLENBQUMsY0FBc0I7UUFDMUMsSUFBSTtZQUNGLE1BQU0sSUFBSSxHQUFHLElBQUEsYUFBTyxFQUFDLGNBQWMs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LEtBQUs7SUFDZiwrQkFBTyxDQUFBO0FBQ1QsQ0FBQyxFQUZXLEtBQUssR0FBTCxhQUFLLEtBQUwsYUFBSyxRQUVoQjtBQUVELElBQVksYUFFWDtBQUZELFdBQVksYUFBYTtJQUN2Qiw2Q0FBTSxDQUFBO0FBQ1IsQ0FBQyxFQUZXLGFBQWEsR0FBYixxQkFBYSxLQUFiLHFCQUFhLFFBRXhCO0FBRUQsSUFBWSxXQUtYO0FBTEQsV0FBWSxXQUFXO0lBQ3JCLG1FQUFtQixDQUFBO0lBQ25CLHlFQUFzQixDQUFBO0lBQ3RCLHVFQUFxQixDQUFBO0lBQ3JCLG1FQUFtQixDQUFBO0FBQ3JCLENBQUMsRUFMVyxXQUFXLEdBQVgsbUJBQVcsS0FBWCxtQkFBVyxRQUt0QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEJhc2VVdGlscyxcbiAgQnVpbGRUcmFuc2FjdGlvbkVycm9yLFxuICBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcixcbiAgaXNWYWxpZEVkMjU1MTlQdWJsaWNLZXksXG4gIFBhcnNlVHJhbnNhY3Rpb25FcnJvcixcbiAgUmVjaXBpZW50LFxuICBUcmFuc2FjdGlvblR5cGUsXG59IGZyb20gJ0BiaXRnby1iZXRhL3Nkay1jb3JlJztcbmltcG9ydCBCaWdOdW1iZXIgZnJvbSAnYmlnbnVtYmVyLmpzJztcbmltcG9ydCB7IFNVSV9BRERSRVNTX0xFTkdUSCB9IGZyb20gJy4vY29uc3RhbnRzJztcbmltcG9ydCB7IGlzUHVyZUFyZyB9IGZyb20gJy4vbXlzdGVubGFiL3R5cGVzL3N1aS1iY3MnO1xuaW1wb3J0IHsgQkNTLCBmcm9tQjY0IH0gZnJvbSAnQG15c3Rlbi9iY3MnO1xuaW1wb3J0IHtcbiAgTWV0aG9kTmFtZXMsXG4gIFJlcXVlc3RBZGRTdGFrZSxcbiAgU3Rha2luZ1Byb2dyYW1tYWJsZVRyYW5zYWN0aW9uLFxuICBTdWlQcm9ncmFtbWFibGVUcmFuc2FjdGlvbixcbiAgU3VpVHJhbnNhY3Rpb24sXG4gIFN1aVRyYW5zYWN0aW9uVHlwZSxcbn0gZnJvbSAnLi9pZmFjZSc7XG5pbXBvcnQgeyBCdWZmZXIgfSBmcm9tICdidWZmZXInO1xuaW1wb3J0IHtcbiAgaXNWYWxpZFN1aUFkZHJlc3MsXG4gIG5vcm1hbGl6ZVN1aUFkZHJlc3MsXG4gIG5vcm1hbGl6ZVN1aU9iamVjdElkLFxuICBTdWlKc29uVmFsdWUsXG4gIFN1aU9iamVjdFJlZixcbn0gZnJvbSAnLi9teXN0ZW5sYWIvdHlwZXMnO1xuaW1wb3J0IHtcbiAgYnVpbGRlcixcbiAgTWVyZ2VDb2luc1RyYW5zYWN0aW9uLFxuICBNb3ZlQ2FsbFRyYW5zYWN0aW9uLFxuICBPYmplY3RDYWxsQXJnLFxuICBTcGxpdENvaW5zVHJhbnNhY3Rpb24sXG4gIFRyYW5zYWN0aW9uQmxvY2tJbnB1dCxcbiAgVHJhbnNhY3Rpb25UeXBlIGFzIFRyYW5zYWN0aW9uQ29tbWFuZFR5cGUsXG59IGZyb20gJy4vbXlzdGVubGFiL2J1aWxkZXInO1xuaW1wb3J0IHsgU0lHTkFUVVJFX1NDSEVNRV9UT19GTEFHIH0gZnJvbSAnLi9rZXlQYWlyJztcbmltcG9ydCBibGFrZTJiIGZyb20gJ0BiaXRnby1iZXRhL2JsYWtlMmInO1xuaW1wb3J0IHsgVFJBTlNBQ1RJT05fREFUQV9NQVhfU0laRSB9IGZyb20gJy4vbXlzdGVubGFiL2J1aWxkZXIvVHJhbnNhY3Rpb25EYXRhQmxvY2snO1xuXG5leHBvcnQgZnVuY3Rpb24gaXNJbW1Pck93bmVkT2JqKG9iajogT2JqZWN0Q2FsbEFyZ1snT2JqZWN0J10pOiBvYmogaXMgeyBJbW1Pck93bmVkOiBTdWlPYmplY3RSZWYgfSB7XG4gIHJldHVybiAnSW1tT3JPd25lZCcgaW4gb2JqO1xufVxuXG5leHBvcnQgY2xhc3MgVXRpbHMgaW1wbGVtZW50cyBCYXNlVXRpbHMge1xuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgaXNWYWxpZEJsb2NrSWQoaGFzaDogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdNZXRob2Qgbm90IGltcGxlbWVudGVkLicpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIGlzVmFsaWRQcml2YXRlS2V5KGtleTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdNZXRob2Qgbm90IGltcGxlbWVudGVkLicpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIGlzVmFsaWRQdWJsaWNLZXkoa2V5OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gaXNWYWxpZEVkMjU1MTlQdWJsaWNLZXkoa2V5KTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBpc1ZhbGlkU2lnbmF0dXJlKHNpZ25hdHVyZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdNZXRob2Qgbm90IGltcGxlbWVudGVkLicpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIGlzVmFsaWRUcmFuc2FjdGlvbklkKHR4SWQ6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHRocm93IG5ldyBFcnJvcignTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC4nKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3MgaWYgcmF3IHRyYW5zYWN0aW9uIGNhbiBiZSBkZXNlcmlhbGl6ZWRcbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IHJhd1RyYW5zYWN0aW9uIC0gdHJhbnNhY3Rpb24gaW4gYmFzZTY0IHN0cmluZyBmb3JtYXRcbiAgICogQHJldHVybnMge2Jvb2xlYW59IC0gdGhlIHZhbGlkYXRpb24gcmVzdWx0XG4gICAqL1xuICBpc1ZhbGlkUmF3VHJhbnNhY3Rpb24ocmF3VHJhbnNhY3Rpb246IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBkYXRhID0gZnJvbUI2NChyYXdUcmFuc2FjdGlvbik7XG4gICAgICBjb25zdCBkZXNlcmlhbGl6ZWQgPSBidWlsZGVyLmRlKCdUcmFuc2FjdGlvbkRhdGEnLCBkYXRhKTtcbiAgICAgIGJ1aWxkZXIuc2VyKCdUcmFuc2FjdGlvbkRhdGEnLCBkZXNlcmlhbGl6ZWQsIHsgbWF4U2l6ZTogVFJBTlNBQ1RJT05fREFUQV9NQVhfU0laRSB9KTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2sgdGhlIHJhdyB0cmFuc2FjdGlvbiBoYXMgYSB2YWxpZCBmb3JtYXQgaW4gdGhlIGJsb2NrY2hhaW4gY29udGV4dCwgdGhyb3cgb3RoZXJ3aXNlLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gcmF3VHJhbnNhY3Rpb24gLSBUcmFuc2FjdGlvbiBpbiBiYXNlNjQgc3RyaW5nICBmb3JtYXRcbiAgICovXG4gIHZhbGlkYXRlUmF3VHJhbnNhY3Rpb24ocmF3VHJhbnNhY3Rpb246IHN0cmluZyk6IHZvaWQge1xuICAgIGlmICghcmF3VHJhbnNhY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBQYXJzZVRyYW5zYWN0aW9uRXJyb3IoJ0ludmFsaWQgcmF3IHRyYW5zYWN0aW9uOiBVbmRlZmluZWQnKTtcbiAgICB9XG4gICAgaWYgKCF0aGlzLmlzVmFsaWRSYXdUcmFuc2FjdGlvbihyYXdUcmFuc2FjdGlvbikpIHtcbiAgICAgIHRocm93IG5ldyBQYXJzZVRyYW5zYWN0aW9uRXJyb3IoJ0ludmFsaWQgcmF3IHRyYW5zYWN0aW9uJyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlcyBhZGRyZXNzZXMgdG8gY2hlY2sgaWYgYWxsIGV4aXN0IGFuZCBhcmUgdmFsaWQgU3VpIHB1YmxpYyBrZXlzXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBhZGRyZXNzZXMgVGhlIGFkZHJlc3MgdG8gYmUgdmFsaWRhdGVkXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBmaWVsZE5hbWUgTmFtZSBvZiB0aGUgZmllbGQgdG8gdmFsaWRhdGUsIGl0cyBuZWVkZWQgdG8gcmV0dXJuIHdoaWNoIGZpZWxkIGlzIGZhaWxpbmcgb24gY2FzZSBvZiBlcnJvci5cbiAgICovXG4gIHZhbGlkYXRlQWRkcmVzc2VzKGFkZHJlc3Nlczogc3RyaW5nW10sIGZpZWxkTmFtZTogc3RyaW5nKTogdm9pZCB7XG4gICAgZm9yIChjb25zdCBhZGRyZXNzIG9mIGFkZHJlc3Nlcykge1xuICAgICAgdGhpcy52YWxpZGF0ZUFkZHJlc3MoYWRkcmVzcywgZmllbGROYW1lKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVmFsaWRhdGVzIGFkZHJlc3MgdG8gY2hlY2sgaWYgaXQgZXhpc3RzIGFuZCBpcyBhIHZhbGlkIFN1aSBwdWJsaWMga2V5XG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBhZGRyZXNzIFRoZSBhZGRyZXNzIHRvIGJlIHZhbGlkYXRlZFxuICAgKiBAcGFyYW0ge3N0cmluZ30gZmllbGROYW1lIE5hbWUgb2YgdGhlIGZpZWxkIHRvIHZhbGlkYXRlLCBpdHMgbmVlZGVkIHRvIHJldHVybiB3aGljaCBmaWVsZCBpcyBmYWlsaW5nIG9uIGNhc2Ugb2YgZXJyb3IuXG4gICAqL1xuICB2YWxpZGF0ZUFkZHJlc3MoYWRkcmVzczogc3RyaW5nLCBmaWVsZE5hbWU6IHN0cmluZyk6IHZvaWQge1xuICAgIGlmICghYWRkcmVzcyB8fCAhaXNWYWxpZFN1aUFkZHJlc3Mobm9ybWFsaXplU3VpQWRkcmVzcyhhZGRyZXNzKSkpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoYEludmFsaWQgb3IgbWlzc2luZyAke2ZpZWxkTmFtZX0sIGdvdDogJHthZGRyZXNzfWApO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBpc1ZhbGlkQWRkcmVzcyhhZGRyZXNzOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5pc0hleChhZGRyZXNzKSAmJiB0aGlzLmdldEhleEJ5dGVMZW5ndGgoYWRkcmVzcykgPT09IFNVSV9BRERSRVNTX0xFTkdUSDtcbiAgfVxuXG4gIGlzSGV4KHZhbHVlOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gL14oMHh8MFgpP1thLWZBLUYwLTldKyQvLnRlc3QodmFsdWUpICYmIHZhbHVlLmxlbmd0aCAlIDIgPT09IDA7XG4gIH1cblxuICBnZXRIZXhCeXRlTGVuZ3RoKHZhbHVlOiBzdHJpbmcpOiBudW1iZXIge1xuICAgIC8vIHJldHVybiAvXigweHwwWCkvLnRlc3QodmFsdWUpID8gKHZhbHVlLmxlbmd0aCAtIDIpIC8gMiA6IHZhbHVlLmxlbmd0aCAvIDI7XG4gICAgcmV0dXJuIC9eKDB4fDBYKS8udGVzdCh2YWx1ZSkgPyAodmFsdWUubGVuZ3RoIC0gMikgLyAyIDogdmFsdWUubGVuZ3RoIC8gMjtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHdoZXRoZXIgb3Igbm90IHRoZSBzdHJpbmcgaXMgYSB2YWxpZCBhbW91bnRcbiAgICpcbiAgICogQHBhcmFtIHtudW1iZXJbXX0gYW1vdW50cyAtIHRoZSBhbW91bnRzIHRvIHZhbGlkYXRlXG4gICAqIEByZXR1cm5zIHtib29sZWFufSAtIHRoZSB2YWxpZGF0aW9uIHJlc3VsdFxuICAgKi9cbiAgaXNWYWxpZEFtb3VudHMoYW1vdW50czogbnVtYmVyW10pOiBib29sZWFuIHtcbiAgICBmb3IgKGNvbnN0IGFtb3VudCBvZiBhbW91bnRzKSB7XG4gICAgICBpZiAoIXRoaXMuaXNWYWxpZEFtb3VudChhbW91bnQpKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB3aGV0aGVyIG9yIG5vdCB0aGUgc3RyaW5nIGlzIGEgdmFsaWQgYW1vdW50XG4gICAqXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBhbW91bnRzIC0gdGhlIGFtb3VudCB0byB2YWxpZGF0ZVxuICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSB0aGUgdmFsaWRhdGlvbiByZXN1bHRcbiAgICovXG4gIGlzVmFsaWRBbW91bnQoYW1vdW50OiBzdHJpbmcgfCBudW1iZXIpOiBib29sZWFuIHtcbiAgICBjb25zdCBiaWdOdW1iZXJBbW91bnQgPSBuZXcgQmlnTnVtYmVyKE51bWJlcihhbW91bnQpKTtcbiAgICBpZiAoIWJpZ051bWJlckFtb3VudC5pc0ludGVnZXIoKSB8fCBiaWdOdW1iZXJBbW91bnQuaXNMZXNzVGhhbk9yRXF1YWxUbygwKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBOb3JtYWxpemVzIGhleCBpZHMgKGFkZHJlc3Nlcywgb2JqZWN0IGlkcykgdG8gYWx3YXlzIGNvbnRhaW4gdGhlICcweCcgcHJlZml4LlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gaWRcbiAgICogQHJldHVybiB7c3RyaW5nfVxuICAgKiovXG4gIG5vcm1hbGl6ZUhleElkKGlkOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBpZC5zdGFydHNXaXRoKCcweCcpID8gaWQgOiAnMHgnLmNvbmNhdChpZCk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRyYW5zYWN0aW9uIHR5cGUgYnkgZnVuY3Rpb24gbmFtZVxuICAgKlxuICAgKiBAcGFyYW0ge01ldGhvZE5hbWVzfSBmY3ROYW1lXG4gICAqIEByZXR1cm4ge1RyYW5zYWN0aW9uVHlwZX1cbiAgICovXG4gIGdldFRyYW5zYWN0aW9uVHlwZShzdWlUcmFuc2FjdGlvblR5cGU6IFN1aVRyYW5zYWN0aW9uVHlwZSk6IFRyYW5zYWN0aW9uVHlwZSB7XG4gICAgc3dpdGNoIChzdWlUcmFuc2FjdGlvblR5cGUpIHtcbiAgICAgIGNhc2UgU3VpVHJhbnNhY3Rpb25UeXBlLlRyYW5zZmVyOlxuICAgICAgY2FzZSBTdWlUcmFuc2FjdGlvblR5cGUuVG9rZW5UcmFuc2ZlcjpcbiAgICAgICAgcmV0dXJuIFRyYW5zYWN0aW9uVHlwZS5TZW5kO1xuICAgICAgY2FzZSBTdWlUcmFuc2FjdGlvblR5cGUuQWRkU3Rha2U6XG4gICAgICAgIHJldHVybiBUcmFuc2FjdGlvblR5cGUuU3Rha2luZ0FkZDtcbiAgICAgIGNhc2UgU3VpVHJhbnNhY3Rpb25UeXBlLldpdGhkcmF3U3Rha2U6XG4gICAgICAgIHJldHVybiBUcmFuc2FjdGlvblR5cGUuU3Rha2luZ1dpdGhkcmF3O1xuICAgICAgY2FzZSBTdWlUcmFuc2FjdGlvblR5cGUuQ3VzdG9tVHg6XG4gICAgICAgIHJldHVybiBUcmFuc2FjdGlvblR5cGUuQ3VzdG9tVHg7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEdldCBTVUkgdHJhbnNhY3Rpb24gdHlwZVxuICAgKlxuICAgKiBAcGFyYW0ge01ldGhvZE5hbWVzfSBmY3ROYW1lXG4gICAqIEByZXR1cm4ge1RyYW5zYWN0aW9uVHlwZX1cbiAgICovXG4gIGdldFN1aVRyYW5zYWN0aW9uVHlwZShjb21tYW5kOiBUcmFuc2FjdGlvbkNvbW1hbmRUeXBlKTogU3VpVHJhbnNhY3Rpb25UeXBlIHtcbiAgICBzd2l0Y2ggKGNvbW1hbmQua2luZCkge1xuICAgICAgY2FzZSAnU3BsaXRDb2lucyc6XG4gICAgICAgIGlmICgoY29tbWFuZCBhcyBTcGxpdENvaW5zVHJhbnNhY3Rpb24pLmNvaW4ua2luZCA9PT0gJ0dhc0NvaW4nKSB7XG4gICAgICAgICAgcmV0dXJuIFN1aVRyYW5zYWN0aW9uVHlwZS5UcmFuc2ZlcjtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gU3VpVHJhbnNhY3Rpb25UeXBlLlRva2VuVHJhbnNmZXI7XG4gICAgICBjYXNlICdUcmFuc2Zlck9iamVjdHMnOlxuICAgICAgICByZXR1cm4gU3VpVHJhbnNhY3Rpb25UeXBlLlRyYW5zZmVyO1xuICAgICAgY2FzZSAnTWVyZ2VDb2lucyc6XG4gICAgICAgIGlmICgoY29tbWFuZCBhcyBNZXJnZUNvaW5zVHJhbnNhY3Rpb24pLmRlc3RpbmF0aW9uLmtpbmQgPT09ICdHYXNDb2luJykge1xuICAgICAgICAgIHJldHVybiBTdWlUcmFuc2FjdGlvblR5cGUuVHJhbnNmZXI7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFN1aVRyYW5zYWN0aW9uVHlwZS5Ub2tlblRyYW5zZmVyO1xuICAgICAgY2FzZSAnTW92ZUNhbGwnOlxuICAgICAgICBpZiAoY29tbWFuZC50YXJnZXQuZW5kc1dpdGgoTWV0aG9kTmFtZXMuUmVxdWVzdEFkZFN0YWtlKSkge1xuICAgICAgICAgIHJldHVybiBTdWlUcmFuc2FjdGlvblR5cGUuQWRkU3Rha2U7XG4gICAgICAgIH0gZWxzZSBpZiAoY29tbWFuZC50YXJnZXQuZW5kc1dpdGgoTWV0aG9kTmFtZXMuUmVxdWVzdFdpdGhkcmF3U3Rha2UpKSB7XG4gICAgICAgICAgcmV0dXJuIFN1aVRyYW5zYWN0aW9uVHlwZS5XaXRoZHJhd1N0YWtlO1xuICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgIGNvbW1hbmQudGFyZ2V0LmVuZHNXaXRoKE1ldGhvZE5hbWVzLlN0YWtpbmdQb29sU3BsaXQpIHx8XG4gICAgICAgICAgY29tbWFuZC50YXJnZXQuZW5kc1dpdGgoTWV0aG9kTmFtZXMuUHVibGljVHJhbnNmZXIpXG4gICAgICAgICkge1xuICAgICAgICAgIHJldHVybiBTdWlUcmFuc2FjdGlvblR5cGUuQ3VzdG9tVHg7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKGB1bnN1cHBvcnRlZCB0YXJnZXQgbWV0aG9kICR7Y29tbWFuZC50YXJnZXR9YCk7XG4gICAgICAgIH1cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcihgdW5zdXBwb3J0ZWQgdHJhbnNhY3Rpb24ga2luZCAke2NvbW1hbmQua2luZH1gKTtcbiAgICB9XG4gIH1cblxuICBnZXRSZWNpcGllbnRzKHR4OiBTdWlUcmFuc2FjdGlvbjxTdWlQcm9ncmFtbWFibGVUcmFuc2FjdGlvbj4pOiBSZWNpcGllbnRbXSB7XG4gICAgY29uc3QgcmVjZWlwdHM6IFJlY2lwaWVudFtdID0gW107XG4gICAgY29uc3Qgc3BsaXRSZXN1bHRzOiBudW1iZXJbXSA9IFtdO1xuICAgIHR4LnR4LnRyYW5zYWN0aW9ucy5mb3JFYWNoKCh0cmFuc2FjdGlvbikgPT4ge1xuICAgICAgaWYgKHRyYW5zYWN0aW9uLmtpbmQgPT09ICdTcGxpdENvaW5zJykge1xuICAgICAgICBjb25zdCBpbmRleCA9IHRyYW5zYWN0aW9uLmFtb3VudHNbMF0uaW5kZXg7XG4gICAgICAgIGNvbnN0IGlucHV0ID0gdHgudHguaW5wdXRzW2luZGV4XSBhcyBhbnk7XG4gICAgICAgIHNwbGl0UmVzdWx0cy5wdXNoKHRoaXMuZ2V0QW1vdW50KGlucHV0KSk7XG4gICAgICB9XG5cbiAgICAgIGlmICh0cmFuc2FjdGlvbi5raW5kID09PSAnTW92ZUNhbGwnICYmIHRyYW5zYWN0aW9uLnRhcmdldC5lbmRzV2l0aChNZXRob2ROYW1lcy5TdGFraW5nUG9vbFNwbGl0KSkge1xuICAgICAgICBjb25zdCBpbmRleCA9IHRyYW5zYWN0aW9uLmFyZ3VtZW50c1sxXS5pbmRleDtcbiAgICAgICAgY29uc3QgaW5wdXQgPSB0eC50eC5pbnB1dHNbaW5kZXhdIGFzIGFueTtcbiAgICAgICAgc3BsaXRSZXN1bHRzLnB1c2godGhpcy5nZXRBbW91bnQoaW5wdXQpKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGNvbnN0IGRlc3RpbmF0aW9uczogc3RyaW5nW10gPSBbXTtcbiAgICB0eC50eC50cmFuc2FjdGlvbnMuZm9yRWFjaCgodHJhbnNhY3Rpb24pID0+IHtcbiAgICAgIGlmICh0cmFuc2FjdGlvbi5raW5kID09PSAnVHJhbnNmZXJPYmplY3RzJykge1xuICAgICAgICBjb25zdCBpbmRleCA9IHRyYW5zYWN0aW9uLmFkZHJlc3MuaW5kZXg7XG4gICAgICAgIGNvbnN0IGlucHV0ID0gdHgudHguaW5wdXRzW2luZGV4XSBhcyBhbnk7XG4gICAgICAgIGRlc3RpbmF0aW9ucy5wdXNoKHRoaXMuZ2V0QWRkcmVzcyhpbnB1dCkpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIGRlc3RpbmF0aW9ucy5tYXAoKGFkZHJlc3MsIGkpID0+IHtcbiAgICAgIHJlY2VpcHRzLnB1c2goe1xuICAgICAgICBhZGRyZXNzOiBhZGRyZXNzLFxuICAgICAgICBhbW91bnQ6IHNwbGl0UmVzdWx0c1tpXS50b1N0cmluZygpLFxuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICB0eC50eC50cmFuc2FjdGlvbnMuZm9yRWFjaCgodHJhbnNhY3Rpb24pID0+IHtcbiAgICAgIGlmICh0cmFuc2FjdGlvbi5raW5kID09PSAnTW92ZUNhbGwnICYmIHRyYW5zYWN0aW9uLnRhcmdldC5lbmRzV2l0aChNZXRob2ROYW1lcy5QdWJsaWNUcmFuc2ZlcikpIHtcbiAgICAgICAgY29uc3QgZGVzdGluYXRpb25BcmcgPSB0cmFuc2FjdGlvbi5hcmd1bWVudHNbMV07XG4gICAgICAgIGNvbnN0IGRlc3RpbmF0aW9uSW5wdXQgPSB0eC50eC5pbnB1dHNbZGVzdGluYXRpb25BcmcuaW5kZXhdIGFzIGFueTtcbiAgICAgICAgY29uc3QgZGVzdGluYXRpb24gPSB0aGlzLmdldEFkZHJlc3MoZGVzdGluYXRpb25JbnB1dCk7XG5cbiAgICAgICAgY29uc3QgbW92aW5nT2JqZWN0ID0gdHJhbnNhY3Rpb24uYXJndW1lbnRzWzBdO1xuICAgICAgICBpZiAobW92aW5nT2JqZWN0LmtpbmQgPT09ICdJbnB1dCcpIHtcbiAgICAgICAgICByZWNlaXB0cy5wdXNoKHtcbiAgICAgICAgICAgIGFkZHJlc3M6IGRlc3RpbmF0aW9uLFxuICAgICAgICAgICAgYW1vdW50OiAnMCcsIC8vIHNldCAwLCBub3QgYWJsZSB0byBnZXQgYW1vdW50IG1lcmVseSBmcm9tIHBhcnNpbmdcbiAgICAgICAgICAgIGRhdGE6ICd1bmtub3duIGFtb3VudCcsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSBpZiAobW92aW5nT2JqZWN0LmtpbmQgPT09ICdSZXN1bHQnKSB7XG4gICAgICAgICAgcmVjZWlwdHMucHVzaCh7XG4gICAgICAgICAgICBhZGRyZXNzOiBkZXN0aW5hdGlvbixcbiAgICAgICAgICAgIGFtb3VudDogc3BsaXRSZXN1bHRzW21vdmluZ09iamVjdC5pbmRleF0udG9TdHJpbmcoKSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHJlY2VpcHRzO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBhZGQgc3Rha2luZyByZXF1ZXN0c1xuICAgKlxuICAgKiBAcGFyYW0ge1N0YWtpbmdQcm9ncmFtbWFibGVUcmFuc2FjdGlvbn0gdHg6IHN0YWtpbmcgdHJhbnNhY3Rpb24gb2JqZWN0XG4gICAqIEByZXR1cm4ge1JlcXVlc3RBZGRTdGFrZVtdfSAgYWRkIHN0YWtpbmcgcmVxdWVzdHNcbiAgICovXG4gIGdldFN0YWtlUmVxdWVzdHModHg6IFN0YWtpbmdQcm9ncmFtbWFibGVUcmFuc2FjdGlvbik6IFJlcXVlc3RBZGRTdGFrZVtdIHtcbiAgICBjb25zdCBhbW91bnRzOiBudW1iZXJbXSA9IFtdO1xuICAgIGNvbnN0IGFkZHJlc3Nlczogc3RyaW5nW10gPSBbXTtcbiAgICB0eC50cmFuc2FjdGlvbnMuZm9yRWFjaCgodHJhbnNhY3Rpb24sIGkpID0+IHtcbiAgICAgIGlmICh0cmFuc2FjdGlvbi5raW5kID09PSAnU3BsaXRDb2lucycpIHtcbiAgICAgICAgY29uc3QgYW1vdW50SW5wdXRJZHggPSAoKHRyYW5zYWN0aW9uIGFzIFNwbGl0Q29pbnNUcmFuc2FjdGlvbikuYW1vdW50c1swXSBhcyBUcmFuc2FjdGlvbkJsb2NrSW5wdXQpLmluZGV4O1xuICAgICAgICBhbW91bnRzLnB1c2godXRpbHMuZ2V0QW1vdW50KHR4LmlucHV0c1thbW91bnRJbnB1dElkeF0gYXMgVHJhbnNhY3Rpb25CbG9ja0lucHV0KSk7XG4gICAgICB9XG4gICAgICBpZiAodHJhbnNhY3Rpb24ua2luZCA9PT0gJ01vdmVDYWxsJykge1xuICAgICAgICBjb25zdCB2YWxpZGF0b3JBZGRyZXNzSW5wdXRJZHggPSAoKHRyYW5zYWN0aW9uIGFzIE1vdmVDYWxsVHJhbnNhY3Rpb24pLmFyZ3VtZW50c1syXSBhcyBUcmFuc2FjdGlvbkJsb2NrSW5wdXQpXG4gICAgICAgICAgLmluZGV4O1xuICAgICAgICBjb25zdCB2YWxpZGF0b3JBZGRyZXNzID0gdXRpbHMuZ2V0QWRkcmVzcyh0eC5pbnB1dHNbdmFsaWRhdG9yQWRkcmVzc0lucHV0SWR4XSBhcyBUcmFuc2FjdGlvbkJsb2NrSW5wdXQpO1xuICAgICAgICBhZGRyZXNzZXMucHVzaCh2YWxpZGF0b3JBZGRyZXNzKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gYWRkcmVzc2VzLm1hcCgoYWRkcmVzcywgaW5kZXgpID0+IHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHZhbGlkYXRvckFkZHJlc3M6IGFkZHJlc3MsXG4gICAgICAgIGFtb3VudDogYW1vdW50c1tpbmRleF0sXG4gICAgICB9IGFzIFJlcXVlc3RBZGRTdGFrZTtcbiAgICB9KTtcbiAgfVxuXG4gIGdldEFtb3VudChpbnB1dDogU3VpSnNvblZhbHVlIHwgVHJhbnNhY3Rpb25CbG9ja0lucHV0KTogbnVtYmVyIHtcbiAgICByZXR1cm4gaXNQdXJlQXJnKGlucHV0KVxuICAgICAgPyBidWlsZGVyLmRlKEJDUy5VNjQsIEJ1ZmZlci5mcm9tKG5ldyBVaW50MTZBcnJheShpbnB1dC5QdXJlKSkudG9TdHJpbmcoJ2Jhc2U2NCcpLCAnYmFzZTY0JylcbiAgICAgIDogKGlucHV0IGFzIFRyYW5zYWN0aW9uQmxvY2tJbnB1dCkudmFsdWU7XG4gIH1cblxuICBnZXRBZGRyZXNzKGlucHV0OiBUcmFuc2FjdGlvbkJsb2NrSW5wdXQpOiBzdHJpbmcge1xuICAgIGlmIChpbnB1dC5oYXNPd25Qcm9wZXJ0eSgndmFsdWUnKSkge1xuICAgICAgcmV0dXJuIGlzUHVyZUFyZyhpbnB1dC52YWx1ZSlcbiAgICAgICAgPyBub3JtYWxpemVTdWlBZGRyZXNzKFxuICAgICAgICAgICAgYnVpbGRlci5kZShCQ1MuQUREUkVTUywgQnVmZmVyLmZyb20obmV3IFVpbnQxNkFycmF5KGlucHV0LnZhbHVlPy5QdXJlKSkudG9TdHJpbmcoJ2Jhc2U2NCcpLCAnYmFzZTY0JylcbiAgICAgICAgICApXG4gICAgICAgIDogKGlucHV0IGFzIFRyYW5zYWN0aW9uQmxvY2tJbnB1dCkudmFsdWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBpc1B1cmVBcmcoaW5wdXQpXG4gICAgICAgID8gbm9ybWFsaXplU3VpQWRkcmVzcyhcbiAgICAgICAgICAgIGJ1aWxkZXIuZGUoQkNTLkFERFJFU1MsIEJ1ZmZlci5mcm9tKG5ldyBVaW50MTZBcnJheShpbnB1dC5QdXJlKSkudG9TdHJpbmcoJ2Jhc2U2NCcpLCAnYmFzZTY0JylcbiAgICAgICAgICApXG4gICAgICAgIDogKGlucHV0IGFzIFRyYW5zYWN0aW9uQmxvY2tJbnB1dCkudmFsdWU7XG4gICAgfVxuICB9XG5cbiAgbm9ybWFsaXplQ29pbnMoY29pbnM6IGFueVtdKTogU3VpT2JqZWN0UmVmW10ge1xuICAgIHJldHVybiBjb2lucy5tYXAoKGNvaW4pID0+IHtcbiAgICAgIHJldHVybiB1dGlscy5ub3JtYWxpemVTdWlPYmplY3RSZWYoY29pbik7XG4gICAgfSk7XG4gIH1cblxuICBub3JtYWxpemVTdWlPYmplY3RSZWYob2JqOiBTdWlPYmplY3RSZWYpOiBTdWlPYmplY3RSZWYge1xuICAgIHJldHVybiB7XG4gICAgICBvYmplY3RJZDogbm9ybWFsaXplU3VpT2JqZWN0SWQob2JqLm9iamVjdElkKSxcbiAgICAgIHZlcnNpb246IE51bWJlcihvYmoudmVyc2lvbiksXG4gICAgICBkaWdlc3Q6IG9iai5kaWdlc3QsXG4gICAgfTtcbiAgfVxuXG4gIHRyYW5zYWN0aW9uSW5wdXQodHlwZTogJ29iamVjdCcgfCAncHVyZScsIGluZGV4ID0gMCwgdmFsdWU/OiB1bmtub3duKTogVHJhbnNhY3Rpb25CbG9ja0lucHV0IHtcbiAgICByZXR1cm4ge1xuICAgICAga2luZDogJ0lucHV0JyxcbiAgICAgIHZhbHVlOiB0eXBlb2YgdmFsdWUgPT09ICdiaWdpbnQnID8gU3RyaW5nKHZhbHVlKSA6IHZhbHVlLFxuICAgICAgaW5kZXgsXG4gICAgICB0eXBlLFxuICAgIH07XG4gIH1cblxuICBnZXRBZGRyZXNzRnJvbVB1YmxpY0tleShwdWJsaWNLZXk6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3QgUFVCTElDX0tFWV9TSVpFID0gMzI7XG4gICAgY29uc3QgdG1wID0gbmV3IFVpbnQ4QXJyYXkoUFVCTElDX0tFWV9TSVpFICsgMSk7XG4gICAgY29uc3QgcHViQnVmID0gQnVmZmVyLmZyb20ocHVibGljS2V5LCAnaGV4Jyk7XG4gICAgdG1wLnNldChbU0lHTkFUVVJFX1NDSEVNRV9UT19GTEFHWydFRDI1NTE5J11dKTsgLy8gRUQyNTUxOTogMHgwMCxcbiAgICB0bXAuc2V0KHB1YkJ1ZiwgMSk7XG4gICAgcmV0dXJuIG5vcm1hbGl6ZVN1aUFkZHJlc3MoXG4gICAgICBibGFrZTJiKFBVQkxJQ19LRVlfU0laRSlcbiAgICAgICAgLnVwZGF0ZSh0bXApXG4gICAgICAgIC5kaWdlc3QoJ2hleCcpXG4gICAgICAgIC5zbGljZSgwLCBTVUlfQUREUkVTU19MRU5HVEggKiAyKVxuICAgICk7XG4gIH1cbn1cblxuY29uc3QgdXRpbHMgPSBuZXcgVXRpbHMoKTtcbmV4cG9ydCBkZWZhdWx0IHV0aWxzO1xuXG5leHBvcnQgZW51bSBBcHBJZCB7XG4gIFN1aSA9IDAsXG59XG5cbmV4cG9ydCBlbnVtIEludGVudFZlcnNpb24ge1xuICBWMCA9IDAsXG59XG5cbmV4cG9ydCBlbnVtIEludGVudFNjb3BlIHtcbiAgVHJhbnNhY3Rpb25EYXRhID0gMCxcbiAgVHJhbnNhY3Rpb25FZmZlY3RzID0gMSxcbiAgQ2hlY2twb2ludFN1bW1hcnkgPSAyLFxuICBQZXJzb25hbE1lc3NhZ2UgPSAzLFxufVxuXG5leHBvcnQgdHlwZSBJbnRlbnQgPSBbSW50ZW50U2NvcGUsIEludGVudFZlcnNpb24sIEFwcElkXTtcbiJdfQ==
421
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLG1EQVE4QjtBQUM5QixnRUFBcUM7QUFDckMsMkNBQWlEO0FBQ2pELHVEQUFzRDtBQUN0RCxxQ0FBMkM7QUFDM0MsbUNBUWlCO0FBQ2pCLG1DQUFnQztBQUNoQyw2Q0FPMkI7QUFDM0IsaURBUTZCO0FBQzdCLHVDQUFxRDtBQUNyRCxrRUFBMEM7QUFDMUMsbUZBQXFGO0FBQ3JGLDJDQUFzQztBQUN0QyxvREFBNEI7QUFFNUIsU0FBZ0IsZUFBZSxDQUFDLEdBQTRCO0lBQzFELE9BQU8sWUFBWSxJQUFJLEdBQUcsQ0FBQztBQUM3QixDQUFDO0FBRkQsMENBRUM7QUFFRCxNQUFhLEtBQUs7SUFDaEIsa0JBQWtCO0lBQ2xCLGNBQWMsQ0FBQyxJQUFZO1FBQ3pCLE1BQU0sSUFBSSxLQUFLLENBQUMseUJBQXlCLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLGlCQUFpQixDQUFDLEdBQVc7UUFDM0IsTUFBTSxJQUFJLEtBQUssQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsZ0JBQWdCLENBQUMsR0FBVztRQUMxQixPQUFPLElBQUEsa0NBQXVCLEVBQUMsR0FBRyxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUVELGtCQUFrQjtJQUNsQixnQkFBZ0IsQ0FBQyxTQUFpQjtRQUNoQyxNQUFNLElBQUksS0FBSyxDQUFDLHlCQUF5QixDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVELGtCQUFrQjtJQUNsQixvQkFBb0IsQ0FBQyxJQUFZO1FBQy9CLE1BQU0sSUFBSSxLQUFLLENBQUMseUJBQXlCLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxxQkFBcUIsQ0FBQyxjQUFzQjtRQUMxQyxJQUFJO1lBQ0YsTUFBTSxJQUFJ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QTtBQUNSLENBQUMsRUFGVyxhQUFhLEdBQWIscUJBQWEsS0FBYixxQkFBYSxRQUV4QjtBQUVELElBQVksV0FLWDtBQUxELFdBQVksV0FBVztJQUNyQixtRUFBbUIsQ0FBQTtJQUNuQix5RUFBc0IsQ0FBQTtJQUN0Qix1RUFBcUIsQ0FBQTtJQUNyQixtRUFBbUIsQ0FBQTtBQUNyQixDQUFDLEVBTFcsV0FBVyxHQUFYLG1CQUFXLEtBQVgsbUJBQVcsUUFLdEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBCYXNlVXRpbHMsXG4gIEJ1aWxkVHJhbnNhY3Rpb25FcnJvcixcbiAgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IsXG4gIGlzVmFsaWRFZDI1NTE5UHVibGljS2V5LFxuICBQYXJzZVRyYW5zYWN0aW9uRXJyb3IsXG4gIFJlY2lwaWVudCxcbiAgVHJhbnNhY3Rpb25UeXBlLFxufSBmcm9tICdAYml0Z28tYmV0YS9zZGstY29yZSc7XG5pbXBvcnQgQmlnTnVtYmVyIGZyb20gJ2JpZ251bWJlci5qcyc7XG5pbXBvcnQgeyBTVUlfQUREUkVTU19MRU5HVEggfSBmcm9tICcuL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBpc1B1cmVBcmcgfSBmcm9tICcuL215c3RlbmxhYi90eXBlcy9zdWktYmNzJztcbmltcG9ydCB7IEJDUywgZnJvbUI2NCB9IGZyb20gJ0BteXN0ZW4vYmNzJztcbmltcG9ydCB7XG4gIE1ldGhvZE5hbWVzLFxuICBSZXF1ZXN0QWRkU3Rha2UsXG4gIFN0YWtpbmdQcm9ncmFtbWFibGVUcmFuc2FjdGlvbixcbiAgU3VpT2JqZWN0SW5mbyxcbiAgU3VpUHJvZ3JhbW1hYmxlVHJhbnNhY3Rpb24sXG4gIFN1aVRyYW5zYWN0aW9uLFxuICBTdWlUcmFuc2FjdGlvblR5cGUsXG59IGZyb20gJy4vaWZhY2UnO1xuaW1wb3J0IHsgQnVmZmVyIH0gZnJvbSAnYnVmZmVyJztcbmltcG9ydCB7XG4gIGlzVmFsaWRTdWlBZGRyZXNzLFxuICBub3JtYWxpemVTdWlBZGRyZXNzLFxuICBub3JtYWxpemVTdWlPYmplY3RJZCxcbiAgU1VJX1RZUEVfQVJHLFxuICBTdWlKc29uVmFsdWUsXG4gIFN1aU9iamVjdFJlZixcbn0gZnJvbSAnLi9teXN0ZW5sYWIvdHlwZXMnO1xuaW1wb3J0IHtcbiAgYnVpbGRlcixcbiAgTWVyZ2VDb2luc1RyYW5zYWN0aW9uLFxuICBNb3ZlQ2FsbFRyYW5zYWN0aW9uLFxuICBPYmplY3RDYWxsQXJnLFxuICBTcGxpdENvaW5zVHJhbnNhY3Rpb24sXG4gIFRyYW5zYWN0aW9uQmxvY2tJbnB1dCxcbiAgVHJhbnNhY3Rpb25UeXBlIGFzIFRyYW5zYWN0aW9uQ29tbWFuZFR5cGUsXG59IGZyb20gJy4vbXlzdGVubGFiL2J1aWxkZXInO1xuaW1wb3J0IHsgU0lHTkFUVVJFX1NDSEVNRV9UT19GTEFHIH0gZnJvbSAnLi9rZXlQYWlyJztcbmltcG9ydCBibGFrZTJiIGZyb20gJ0BiaXRnby1iZXRhL2JsYWtlMmInO1xuaW1wb3J0IHsgVFJBTlNBQ1RJT05fREFUQV9NQVhfU0laRSB9IGZyb20gJy4vbXlzdGVubGFiL2J1aWxkZXIvVHJhbnNhY3Rpb25EYXRhQmxvY2snO1xuaW1wb3J0IHsgbWFrZVJQQyB9IGZyb20gJy4vcnBjQ2xpZW50JztcbmltcG9ydCBhc3NlcnQgZnJvbSAnYXNzZXJ0JztcblxuZXhwb3J0IGZ1bmN0aW9uIGlzSW1tT3JPd25lZE9iaihvYmo6IE9iamVjdENhbGxBcmdbJ09iamVjdCddKTogb2JqIGlzIHsgSW1tT3JPd25lZDogU3VpT2JqZWN0UmVmIH0ge1xuICByZXR1cm4gJ0ltbU9yT3duZWQnIGluIG9iajtcbn1cblxuZXhwb3J0IGNsYXNzIFV0aWxzIGltcGxlbWVudHMgQmFzZVV0aWxzIHtcbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIGlzVmFsaWRCbG9ja0lkKGhhc2g6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHRocm93IG5ldyBFcnJvcignTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC4nKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBpc1ZhbGlkUHJpdmF0ZUtleShrZXk6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHRocm93IG5ldyBFcnJvcignTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC4nKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBpc1ZhbGlkUHVibGljS2V5KGtleTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGlzVmFsaWRFZDI1NTE5UHVibGljS2V5KGtleSk7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgaXNWYWxpZFNpZ25hdHVyZShzaWduYXR1cmU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHRocm93IG5ldyBFcnJvcignTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC4nKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBpc1ZhbGlkVHJhbnNhY3Rpb25JZCh0eElkOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ01ldGhvZCBub3QgaW1wbGVtZW50ZWQuJyk7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIGlmIHJhdyB0cmFuc2FjdGlvbiBjYW4gYmUgZGVzZXJpYWxpemVkXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSByYXdUcmFuc2FjdGlvbiAtIHRyYW5zYWN0aW9uIGluIGJhc2U2NCBzdHJpbmcgZm9ybWF0XG4gICAqIEByZXR1cm5zIHtib29sZWFufSAtIHRoZSB2YWxpZGF0aW9uIHJlc3VsdFxuICAgKi9cbiAgaXNWYWxpZFJhd1RyYW5zYWN0aW9uKHJhd1RyYW5zYWN0aW9uOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgZGF0YSA9IGZyb21CNjQocmF3VHJhbnNhY3Rpb24pO1xuICAgICAgY29uc3QgZGVzZXJpYWxpemVkID0gYnVpbGRlci5kZSgnVHJhbnNhY3Rpb25EYXRhJywgZGF0YSk7XG4gICAgICBidWlsZGVyLnNlcignVHJhbnNhY3Rpb25EYXRhJywgZGVzZXJpYWxpemVkLCB7IG1heFNpemU6IFRSQU5TQUNUSU9OX0RBVEFfTUFYX1NJWkUgfSk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrIHRoZSByYXcgdHJhbnNhY3Rpb24gaGFzIGEgdmFsaWQgZm9ybWF0IGluIHRoZSBibG9ja2NoYWluIGNvbnRleHQsIHRocm93IG90aGVyd2lzZS5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IHJhd1RyYW5zYWN0aW9uIC0gVHJhbnNhY3Rpb24gaW4gYmFzZTY0IHN0cmluZyAgZm9ybWF0XG4gICAqL1xuICB2YWxpZGF0ZVJhd1RyYW5zYWN0aW9uKHJhd1RyYW5zYWN0aW9uOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAoIXJhd1RyYW5zYWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgUGFyc2VUcmFuc2FjdGlvbkVycm9yKCdJbnZhbGlkIHJhdyB0cmFuc2FjdGlvbjogVW5kZWZpbmVkJyk7XG4gICAgfVxuICAgIGlmICghdGhpcy5pc1ZhbGlkUmF3VHJhbnNhY3Rpb24ocmF3VHJhbnNhY3Rpb24pKSB7XG4gICAgICB0aHJvdyBuZXcgUGFyc2VUcmFuc2FjdGlvbkVycm9yKCdJbnZhbGlkIHJhdyB0cmFuc2FjdGlvbicpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZXMgYWRkcmVzc2VzIHRvIGNoZWNrIGlmIGFsbCBleGlzdCBhbmQgYXJlIHZhbGlkIFN1aSBwdWJsaWMga2V5c1xuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gYWRkcmVzc2VzIFRoZSBhZGRyZXNzIHRvIGJlIHZhbGlkYXRlZFxuICAgKiBAcGFyYW0ge3N0cmluZ30gZmllbGROYW1lIE5hbWUgb2YgdGhlIGZpZWxkIHRvIHZhbGlkYXRlLCBpdHMgbmVlZGVkIHRvIHJldHVybiB3aGljaCBmaWVsZCBpcyBmYWlsaW5nIG9uIGNhc2Ugb2YgZXJyb3IuXG4gICAqL1xuICB2YWxpZGF0ZUFkZHJlc3NlcyhhZGRyZXNzZXM6IHN0cmluZ1tdLCBmaWVsZE5hbWU6IHN0cmluZyk6IHZvaWQge1xuICAgIGZvciAoY29uc3QgYWRkcmVzcyBvZiBhZGRyZXNzZXMpIHtcbiAgICAgIHRoaXMudmFsaWRhdGVBZGRyZXNzKGFkZHJlc3MsIGZpZWxkTmFtZSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlcyBhZGRyZXNzIHRvIGNoZWNrIGlmIGl0IGV4aXN0cyBhbmQgaXMgYSB2YWxpZCBTdWkgcHVibGljIGtleVxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gYWRkcmVzcyBUaGUgYWRkcmVzcyB0byBiZSB2YWxpZGF0ZWRcbiAgICogQHBhcmFtIHtzdHJpbmd9IGZpZWxkTmFtZSBOYW1lIG9mIHRoZSBmaWVsZCB0byB2YWxpZGF0ZSwgaXRzIG5lZWRlZCB0byByZXR1cm4gd2hpY2ggZmllbGQgaXMgZmFpbGluZyBvbiBjYXNlIG9mIGVycm9yLlxuICAgKi9cbiAgdmFsaWRhdGVBZGRyZXNzKGFkZHJlc3M6IHN0cmluZywgZmllbGROYW1lOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAoIWFkZHJlc3MgfHwgIWlzVmFsaWRTdWlBZGRyZXNzKG5vcm1hbGl6ZVN1aUFkZHJlc3MoYWRkcmVzcykpKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKGBJbnZhbGlkIG9yIG1pc3NpbmcgJHtmaWVsZE5hbWV9LCBnb3Q6ICR7YWRkcmVzc31gKTtcbiAgICB9XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgaXNWYWxpZEFkZHJlc3MoYWRkcmVzczogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaXNIZXgoYWRkcmVzcykgJiYgdGhpcy5nZXRIZXhCeXRlTGVuZ3RoKGFkZHJlc3MpID09PSBTVUlfQUREUkVTU19MRU5HVEg7XG4gIH1cblxuICBpc0hleCh2YWx1ZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIC9eKDB4fDBYKT9bYS1mQS1GMC05XSskLy50ZXN0KHZhbHVlKSAmJiB2YWx1ZS5sZW5ndGggJSAyID09PSAwO1xuICB9XG5cbiAgZ2V0SGV4Qnl0ZUxlbmd0aCh2YWx1ZTogc3RyaW5nKTogbnVtYmVyIHtcbiAgICAvLyByZXR1cm4gL14oMHh8MFgpLy50ZXN0KHZhbHVlKSA/ICh2YWx1ZS5sZW5ndGggLSAyKSAvIDIgOiB2YWx1ZS5sZW5ndGggLyAyO1xuICAgIHJldHVybiAvXigweHwwWCkvLnRlc3QodmFsdWUpID8gKHZhbHVlLmxlbmd0aCAtIDIpIC8gMiA6IHZhbHVlLmxlbmd0aCAvIDI7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB3aGV0aGVyIG9yIG5vdCB0aGUgc3RyaW5nIGlzIGEgdmFsaWQgYW1vdW50XG4gICAqXG4gICAqIEBwYXJhbSB7bnVtYmVyW119IGFtb3VudHMgLSB0aGUgYW1vdW50cyB0byB2YWxpZGF0ZVxuICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSB0aGUgdmFsaWRhdGlvbiByZXN1bHRcbiAgICovXG4gIGlzVmFsaWRBbW91bnRzKGFtb3VudHM6IG51bWJlcltdKTogYm9vbGVhbiB7XG4gICAgZm9yIChjb25zdCBhbW91bnQgb2YgYW1vdW50cykge1xuICAgICAgaWYgKCF0aGlzLmlzVmFsaWRBbW91bnQoYW1vdW50KSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgd2hldGhlciBvciBub3QgdGhlIHN0cmluZyBpcyBhIHZhbGlkIGFtb3VudFxuICAgKlxuICAgKiBAcGFyYW0ge251bWJlcn0gYW1vdW50cyAtIHRoZSBhbW91bnQgdG8gdmFsaWRhdGVcbiAgICogQHJldHVybnMge2Jvb2xlYW59IC0gdGhlIHZhbGlkYXRpb24gcmVzdWx0XG4gICAqL1xuICBpc1ZhbGlkQW1vdW50KGFtb3VudDogc3RyaW5nIHwgbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgY29uc3QgYmlnTnVtYmVyQW1vdW50ID0gbmV3IEJpZ051bWJlcihOdW1iZXIoYW1vdW50KSk7XG4gICAgaWYgKCFiaWdOdW1iZXJBbW91bnQuaXNJbnRlZ2VyKCkgfHwgYmlnTnVtYmVyQW1vdW50LmlzTGVzc1RoYW5PckVxdWFsVG8oMCkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICAvKipcbiAgICogTm9ybWFsaXplcyBoZXggaWRzIChhZGRyZXNzZXMsIG9iamVjdCBpZHMpIHRvIGFsd2F5cyBjb250YWluIHRoZSAnMHgnIHByZWZpeC5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IGlkXG4gICAqIEByZXR1cm4ge3N0cmluZ31cbiAgICoqL1xuICBub3JtYWxpemVIZXhJZChpZDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gaWQuc3RhcnRzV2l0aCgnMHgnKSA/IGlkIDogJzB4Jy5jb25jYXQoaWQpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0cmFuc2FjdGlvbiB0eXBlIGJ5IGZ1bmN0aW9uIG5hbWVcbiAgICpcbiAgICogQHBhcmFtIHtNZXRob2ROYW1lc30gZmN0TmFtZVxuICAgKiBAcmV0dXJuIHtUcmFuc2FjdGlvblR5cGV9XG4gICAqL1xuICBnZXRUcmFuc2FjdGlvblR5cGUoc3VpVHJhbnNhY3Rpb25UeXBlOiBTdWlUcmFuc2FjdGlvblR5cGUpOiBUcmFuc2FjdGlvblR5cGUge1xuICAgIHN3aXRjaCAoc3VpVHJhbnNhY3Rpb25UeXBlKSB7XG4gICAgICBjYXNlIFN1aVRyYW5zYWN0aW9uVHlwZS5UcmFuc2ZlcjpcbiAgICAgIGNhc2UgU3VpVHJhbnNhY3Rpb25UeXBlLlRva2VuVHJhbnNmZXI6XG4gICAgICAgIHJldHVybiBUcmFuc2FjdGlvblR5cGUuU2VuZDtcbiAgICAgIGNhc2UgU3VpVHJhbnNhY3Rpb25UeXBlLkFkZFN0YWtlOlxuICAgICAgICByZXR1cm4gVHJhbnNhY3Rpb25UeXBlLlN0YWtpbmdBZGQ7XG4gICAgICBjYXNlIFN1aVRyYW5zYWN0aW9uVHlwZS5XaXRoZHJhd1N0YWtlOlxuICAgICAgICByZXR1cm4gVHJhbnNhY3Rpb25UeXBlLlN0YWtpbmdXaXRoZHJhdztcbiAgICAgIGNhc2UgU3VpVHJhbnNhY3Rpb25UeXBlLkN1c3RvbVR4OlxuICAgICAgICByZXR1cm4gVHJhbnNhY3Rpb25UeXBlLkN1c3RvbVR4O1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgU1VJIHRyYW5zYWN0aW9uIHR5cGVcbiAgICpcbiAgICogQHBhcmFtIHtNZXRob2ROYW1lc30gZmN0TmFtZVxuICAgKiBAcmV0dXJuIHtUcmFuc2FjdGlvblR5cGV9XG4gICAqL1xuICBnZXRTdWlUcmFuc2FjdGlvblR5cGUoY29tbWFuZDogVHJhbnNhY3Rpb25Db21tYW5kVHlwZSk6IFN1aVRyYW5zYWN0aW9uVHlwZSB7XG4gICAgc3dpdGNoIChjb21tYW5kLmtpbmQpIHtcbiAgICAgIGNhc2UgJ1NwbGl0Q29pbnMnOlxuICAgICAgICBpZiAoKGNvbW1hbmQgYXMgU3BsaXRDb2luc1RyYW5zYWN0aW9uKS5jb2luLmtpbmQgPT09ICdHYXNDb2luJykge1xuICAgICAgICAgIHJldHVybiBTdWlUcmFuc2FjdGlvblR5cGUuVHJhbnNmZXI7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFN1aVRyYW5zYWN0aW9uVHlwZS5Ub2tlblRyYW5zZmVyO1xuICAgICAgY2FzZSAnVHJhbnNmZXJPYmplY3RzJzpcbiAgICAgICAgcmV0dXJuIFN1aVRyYW5zYWN0aW9uVHlwZS5UcmFuc2ZlcjtcbiAgICAgIGNhc2UgJ01lcmdlQ29pbnMnOlxuICAgICAgICBpZiAoKGNvbW1hbmQgYXMgTWVyZ2VDb2luc1RyYW5zYWN0aW9uKS5kZXN0aW5hdGlvbi5raW5kID09PSAnR2FzQ29pbicpIHtcbiAgICAgICAgICByZXR1cm4gU3VpVHJhbnNhY3Rpb25UeXBlLlRyYW5zZmVyO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBTdWlUcmFuc2FjdGlvblR5cGUuVG9rZW5UcmFuc2ZlcjtcbiAgICAgIGNhc2UgJ01vdmVDYWxsJzpcbiAgICAgICAgaWYgKGNvbW1hbmQudGFyZ2V0LmVuZHNXaXRoKE1ldGhvZE5hbWVzLlJlcXVlc3RBZGRTdGFrZSkpIHtcbiAgICAgICAgICByZXR1cm4gU3VpVHJhbnNhY3Rpb25UeXBlLkFkZFN0YWtlO1xuICAgICAgICB9IGVsc2UgaWYgKGNvbW1hbmQudGFyZ2V0LmVuZHNXaXRoKE1ldGhvZE5hbWVzLlJlcXVlc3RXaXRoZHJhd1N0YWtlKSkge1xuICAgICAgICAgIHJldHVybiBTdWlUcmFuc2FjdGlvblR5cGUuV2l0aGRyYXdTdGFrZTtcbiAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICBjb21tYW5kLnRhcmdldC5lbmRzV2l0aChNZXRob2ROYW1lcy5TdGFraW5nUG9vbFNwbGl0KSB8fFxuICAgICAgICAgIGNvbW1hbmQudGFyZ2V0LmVuZHNXaXRoKE1ldGhvZE5hbWVzLlB1YmxpY1RyYW5zZmVyKVxuICAgICAgICApIHtcbiAgICAgICAgICByZXR1cm4gU3VpVHJhbnNhY3Rpb25UeXBlLkN1c3RvbVR4O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcihgdW5zdXBwb3J0ZWQgdGFyZ2V0IG1ldGhvZCAke2NvbW1hbmQudGFyZ2V0fWApO1xuICAgICAgICB9XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aHJvdyBuZXcgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IoYHVuc3VwcG9ydGVkIHRyYW5zYWN0aW9uIGtpbmQgJHtjb21tYW5kLmtpbmR9YCk7XG4gICAgfVxuICB9XG5cbiAgZ2V0UmVjaXBpZW50cyh0eDogU3VpVHJhbnNhY3Rpb248U3VpUHJvZ3JhbW1hYmxlVHJhbnNhY3Rpb24+KTogUmVjaXBpZW50W10ge1xuICAgIGNvbnN0IHJlY2VpcHRzOiBSZWNpcGllbnRbXSA9IFtdO1xuICAgIGNvbnN0IHNwbGl0UmVzdWx0czogbnVtYmVyW10gPSBbXTtcbiAgICB0eC50eC50cmFuc2FjdGlvbnMuZm9yRWFjaCgodHJhbnNhY3Rpb24pID0+IHtcbiAgICAgIGlmICh0cmFuc2FjdGlvbi5raW5kID09PSAnU3BsaXRDb2lucycpIHtcbiAgICAgICAgY29uc3QgaW5kZXggPSB0cmFuc2FjdGlvbi5hbW91bnRzWzBdLmluZGV4O1xuICAgICAgICBjb25zdCBpbnB1dCA9IHR4LnR4LmlucHV0c1tpbmRleF0gYXMgYW55O1xuICAgICAgICBzcGxpdFJlc3VsdHMucHVzaCh0aGlzLmdldEFtb3VudChpbnB1dCkpO1xuICAgICAgfVxuXG4gICAgICBpZiAodHJhbnNhY3Rpb24ua2luZCA9PT0gJ01vdmVDYWxsJyAmJiB0cmFuc2FjdGlvbi50YXJnZXQuZW5kc1dpdGgoTWV0aG9kTmFtZXMuU3Rha2luZ1Bvb2xTcGxpdCkpIHtcbiAgICAgICAgY29uc3QgaW5kZXggPSB0cmFuc2FjdGlvbi5hcmd1bWVudHNbMV0uaW5kZXg7XG4gICAgICAgIGNvbnN0IGlucHV0ID0gdHgudHguaW5wdXRzW2luZGV4XSBhcyBhbnk7XG4gICAgICAgIHNwbGl0UmVzdWx0cy5wdXNoKHRoaXMuZ2V0QW1vdW50KGlucHV0KSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBjb25zdCBkZXN0aW5hdGlvbnM6IHN0cmluZ1tdID0gW107XG4gICAgdHgudHgudHJhbnNhY3Rpb25zLmZvckVhY2goKHRyYW5zYWN0aW9uKSA9PiB7XG4gICAgICBpZiAodHJhbnNhY3Rpb24ua2luZCA9PT0gJ1RyYW5zZmVyT2JqZWN0cycpIHtcbiAgICAgICAgY29uc3QgaW5kZXggPSB0cmFuc2FjdGlvbi5hZGRyZXNzLmluZGV4O1xuICAgICAgICBjb25zdCBpbnB1dCA9IHR4LnR4LmlucHV0c1tpbmRleF0gYXMgYW55O1xuICAgICAgICBkZXN0aW5hdGlvbnMucHVzaCh0aGlzLmdldEFkZHJlc3MoaW5wdXQpKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBkZXN0aW5hdGlvbnMubWFwKChhZGRyZXNzLCBpKSA9PiB7XG4gICAgICByZWNlaXB0cy5wdXNoKHtcbiAgICAgICAgYWRkcmVzczogYWRkcmVzcyxcbiAgICAgICAgYW1vdW50OiBzcGxpdFJlc3VsdHNbaV0udG9TdHJpbmcoKSxcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgdHgudHgudHJhbnNhY3Rpb25zLmZvckVhY2goKHRyYW5zYWN0aW9uKSA9PiB7XG4gICAgICBpZiAodHJhbnNhY3Rpb24ua2luZCA9PT0gJ01vdmVDYWxsJyAmJiB0cmFuc2FjdGlvbi50YXJnZXQuZW5kc1dpdGgoTWV0aG9kTmFtZXMuUHVibGljVHJhbnNmZXIpKSB7XG4gICAgICAgIGNvbnN0IGRlc3RpbmF0aW9uQXJnID0gdHJhbnNhY3Rpb24uYXJndW1lbnRzWzFdO1xuICAgICAgICBjb25zdCBkZXN0aW5hdGlvbklucHV0ID0gdHgudHguaW5wdXRzW2Rlc3RpbmF0aW9uQXJnLmluZGV4XSBhcyBhbnk7XG4gICAgICAgIGNvbnN0IGRlc3RpbmF0aW9uID0gdGhpcy5nZXRBZGRyZXNzKGRlc3RpbmF0aW9uSW5wdXQpO1xuXG4gICAgICAgIGNvbnN0IG1vdmluZ09iamVjdCA9IHRyYW5zYWN0aW9uLmFyZ3VtZW50c1swXTtcbiAgICAgICAgaWYgKG1vdmluZ09iamVjdC5raW5kID09PSAnSW5wdXQnKSB7XG4gICAgICAgICAgcmVjZWlwdHMucHVzaCh7XG4gICAgICAgICAgICBhZGRyZXNzOiBkZXN0aW5hdGlvbixcbiAgICAgICAgICAgIGFtb3VudDogJzAnLCAvLyBzZXQgMCwgbm90IGFibGUgdG8gZ2V0IGFtb3VudCBtZXJlbHkgZnJvbSBwYXJzaW5nXG4gICAgICAgICAgICBkYXRhOiAndW5rbm93biBhbW91bnQnLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2UgaWYgKG1vdmluZ09iamVjdC5raW5kID09PSAnUmVzdWx0Jykge1xuICAgICAgICAgIHJlY2VpcHRzLnB1c2goe1xuICAgICAgICAgICAgYWRkcmVzczogZGVzdGluYXRpb24sXG4gICAgICAgICAgICBhbW91bnQ6IHNwbGl0UmVzdWx0c1ttb3ZpbmdPYmplY3QuaW5kZXhdLnRvU3RyaW5nKCksXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiByZWNlaXB0cztcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgYWRkIHN0YWtpbmcgcmVxdWVzdHNcbiAgICpcbiAgICogQHBhcmFtIHtTdGFraW5nUHJvZ3JhbW1hYmxlVHJhbnNhY3Rpb259IHR4OiBzdGFraW5nIHRyYW5zYWN0aW9uIG9iamVjdFxuICAgKiBAcmV0dXJuIHtSZXF1ZXN0QWRkU3Rha2VbXX0gIGFkZCBzdGFraW5nIHJlcXVlc3RzXG4gICAqL1xuICBnZXRTdGFrZVJlcXVlc3RzKHR4OiBTdGFraW5nUHJvZ3JhbW1hYmxlVHJhbnNhY3Rpb24pOiBSZXF1ZXN0QWRkU3Rha2VbXSB7XG4gICAgY29uc3QgYW1vdW50czogbnVtYmVyW10gPSBbXTtcbiAgICBjb25zdCBhZGRyZXNzZXM6IHN0cmluZ1tdID0gW107XG4gICAgdHgudHJhbnNhY3Rpb25zLmZvckVhY2goKHRyYW5zYWN0aW9uLCBpKSA9PiB7XG4gICAgICBpZiAodHJhbnNhY3Rpb24ua2luZCA9PT0gJ1NwbGl0Q29pbnMnKSB7XG4gICAgICAgIGNvbnN0IGFtb3VudElucHV0SWR4ID0gKCh0cmFuc2FjdGlvbiBhcyBTcGxpdENvaW5zVHJhbnNhY3Rpb24pLmFtb3VudHNbMF0gYXMgVHJhbnNhY3Rpb25CbG9ja0lucHV0KS5pbmRleDtcbiAgICAgICAgYW1vdW50cy5wdXNoKHV0aWxzLmdldEFtb3VudCh0eC5pbnB1dHNbYW1vdW50SW5wdXRJZHhdIGFzIFRyYW5zYWN0aW9uQmxvY2tJbnB1dCkpO1xuICAgICAgfVxuICAgICAgaWYgKHRyYW5zYWN0aW9uLmtpbmQgPT09ICdNb3ZlQ2FsbCcpIHtcbiAgICAgICAgY29uc3QgdmFsaWRhdG9yQWRkcmVzc0lucHV0SWR4ID0gKCh0cmFuc2FjdGlvbiBhcyBNb3ZlQ2FsbFRyYW5zYWN0aW9uKS5hcmd1bWVudHNbMl0gYXMgVHJhbnNhY3Rpb25CbG9ja0lucHV0KVxuICAgICAgICAgIC5pbmRleDtcbiAgICAgICAgY29uc3QgdmFsaWRhdG9yQWRkcmVzcyA9IHV0aWxzLmdldEFkZHJlc3ModHguaW5wdXRzW3ZhbGlkYXRvckFkZHJlc3NJbnB1dElkeF0gYXMgVHJhbnNhY3Rpb25CbG9ja0lucHV0KTtcbiAgICAgICAgYWRkcmVzc2VzLnB1c2godmFsaWRhdG9yQWRkcmVzcyk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIGFkZHJlc3Nlcy5tYXAoKGFkZHJlc3MsIGluZGV4KSA9PiB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICB2YWxpZGF0b3JBZGRyZXNzOiBhZGRyZXNzLFxuICAgICAgICBhbW91bnQ6IGFtb3VudHNbaW5kZXhdLFxuICAgICAgfSBhcyBSZXF1ZXN0QWRkU3Rha2U7XG4gICAgfSk7XG4gIH1cblxuICBnZXRBbW91bnQoaW5wdXQ6IFN1aUpzb25WYWx1ZSB8IFRyYW5zYWN0aW9uQmxvY2tJbnB1dCk6IG51bWJlciB7XG4gICAgcmV0dXJuIGlzUHVyZUFyZyhpbnB1dClcbiAgICAgID8gYnVpbGRlci5kZShCQ1MuVTY0LCBCdWZmZXIuZnJvbShuZXcgVWludDE2QXJyYXkoaW5wdXQuUHVyZSkpLnRvU3RyaW5nKCdiYXNlNjQnKSwgJ2Jhc2U2NCcpXG4gICAgICA6IChpbnB1dCBhcyBUcmFuc2FjdGlvbkJsb2NrSW5wdXQpLnZhbHVlO1xuICB9XG5cbiAgZ2V0QWRkcmVzcyhpbnB1dDogVHJhbnNhY3Rpb25CbG9ja0lucHV0KTogc3RyaW5nIHtcbiAgICBpZiAoaW5wdXQuaGFzT3duUHJvcGVydHkoJ3ZhbHVlJykpIHtcbiAgICAgIHJldHVybiBpc1B1cmVBcmcoaW5wdXQudmFsdWUpXG4gICAgICAgID8gbm9ybWFsaXplU3VpQWRkcmVzcyhcbiAgICAgICAgICAgIGJ1aWxkZXIuZGUoQkNTLkFERFJFU1MsIEJ1ZmZlci5mcm9tKG5ldyBVaW50MTZBcnJheShpbnB1dC52YWx1ZT8uUHVyZSkpLnRvU3RyaW5nKCdiYXNlNjQnKSwgJ2Jhc2U2NCcpXG4gICAgICAgICAgKVxuICAgICAgICA6IChpbnB1dCBhcyBUcmFuc2FjdGlvbkJsb2NrSW5wdXQpLnZhbHVlO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gaXNQdXJlQXJnKGlucHV0KVxuICAgICAgICA/IG5vcm1hbGl6ZVN1aUFkZHJlc3MoXG4gICAgICAgICAgICBidWlsZGVyLmRlKEJDUy5BRERSRVNTLCBCdWZmZXIuZnJvbShuZXcgVWludDE2QXJyYXkoaW5wdXQuUHVyZSkpLnRvU3RyaW5nKCdiYXNlNjQnKSwgJ2Jhc2U2NCcpXG4gICAgICAgICAgKVxuICAgICAgICA6IChpbnB1dCBhcyBUcmFuc2FjdGlvbkJsb2NrSW5wdXQpLnZhbHVlO1xuICAgIH1cbiAgfVxuXG4gIG5vcm1hbGl6ZUNvaW5zKGNvaW5zOiBhbnlbXSk6IFN1aU9iamVjdFJlZltdIHtcbiAgICByZXR1cm4gY29pbnMubWFwKChjb2luKSA9PiB7XG4gICAgICByZXR1cm4gdXRpbHMubm9ybWFsaXplU3VpT2JqZWN0UmVmKGNvaW4pO1xuICAgIH0pO1xuICB9XG5cbiAgbm9ybWFsaXplU3VpT2JqZWN0UmVmKG9iajogU3VpT2JqZWN0UmVmKTogU3VpT2JqZWN0UmVmIHtcbiAgICByZXR1cm4ge1xuICAgICAgb2JqZWN0SWQ6IG5vcm1hbGl6ZVN1aU9iamVjdElkKG9iai5vYmplY3RJZCksXG4gICAgICB2ZXJzaW9uOiBOdW1iZXIob2JqLnZlcnNpb24pLFxuICAgICAgZGlnZXN0OiBvYmouZGlnZXN0LFxuICAgIH07XG4gIH1cblxuICB0cmFuc2FjdGlvbklucHV0KHR5cGU6ICdvYmplY3QnIHwgJ3B1cmUnLCBpbmRleCA9IDAsIHZhbHVlPzogdW5rbm93bik6IFRyYW5zYWN0aW9uQmxvY2tJbnB1dCB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGtpbmQ6ICdJbnB1dCcsXG4gICAgICB2YWx1ZTogdHlwZW9mIHZhbHVlID09PSAnYmlnaW50JyA/IFN0cmluZyh2YWx1ZSkgOiB2YWx1ZSxcbiAgICAgIGluZGV4LFxuICAgICAgdHlwZSxcbiAgICB9O1xuICB9XG5cbiAgZ2V0QWRkcmVzc0Zyb21QdWJsaWNLZXkocHVibGljS2V5OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGNvbnN0IFBVQkxJQ19LRVlfU0laRSA9IDMyO1xuICAgIGNvbnN0IHRtcCA9IG5ldyBVaW50OEFycmF5KFBVQkxJQ19LRVlfU0laRSArIDEpO1xuICAgIGNvbnN0IHB1YkJ1ZiA9IEJ1ZmZlci5mcm9tKHB1YmxpY0tleSwgJ2hleCcpO1xuICAgIHRtcC5zZXQoW1NJR05BVFVSRV9TQ0hFTUVfVE9fRkxBR1snRUQyNTUxOSddXSk7IC8vIEVEMjU1MTk6IDB4MDAsXG4gICAgdG1wLnNldChwdWJCdWYsIDEpO1xuICAgIHJldHVybiBub3JtYWxpemVTdWlBZGRyZXNzKFxuICAgICAgYmxha2UyYihQVUJMSUNfS0VZX1NJWkUpXG4gICAgICAgIC51cGRhdGUodG1wKVxuICAgICAgICAuZGlnZXN0KCdoZXgnKVxuICAgICAgICAuc2xpY2UoMCwgU1VJX0FERFJFU1NfTEVOR1RIICogMilcbiAgICApO1xuICB9XG5cbiAgYXN5bmMgZ2V0RmVlRXN0aW1hdGUodXJsOiBzdHJpbmcsIHR4SGV4OiBzdHJpbmcpOiBQcm9taXNlPEJpZ051bWJlcj4ge1xuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IG1ha2VSUEModXJsLCAnc3VpX2RyeVJ1blRyYW5zYWN0aW9uQmxvY2snLCBbdHhIZXhdKTtcbiAgICBhc3NlcnQocmVzdWx0LmVmZmVjdHMpO1xuICAgIGFzc2VydChyZXN1bHQuZWZmZWN0cy5nYXNVc2VkKTtcblxuICAgIGlmIChyZXN1bHQuZWZmZWN0cy5zdGF0dXMuc3RhdHVzICE9PSAnc3VjY2VzcycpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoYERyeSBydW4gZmFpbGVkLCBjb3VsZCBub3QgYXV0b21hdGljYWxseSBkZXRlcm1pbmUgYSBidWRnZXQgZm9yIHR4SGV4ICR7dHhIZXh9YCk7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEZhaWxlZCB0byBnZXQgZmVlIGVzdGltYXRlYCk7XG4gICAgfVxuXG4gICAgY29uc3QgZ2FzT2JqZWN0ID0gcmVzdWx0LmVmZmVjdHMuZ2FzVXNlZDtcblxuICAgIGNvbnN0IHN0b3JhZ2VDb3N0ID0gbmV3IEJpZ051bWJlcihnYXNPYmplY3Quc3RvcmFnZUNvc3QpO1xuICAgIGNvbnN0IGNvbXB1dGF0aW9uQ29zdCA9IG5ldyBCaWdOdW1iZXIoZ2FzT2JqZWN0LmNvbXB1dGF0aW9uQ29zdCk7XG4gICAgY29uc3Qgc3RvcmFnZVJlYmF0ZSA9IG5ldyBCaWdOdW1iZXIoZ2FzT2JqZWN0LnN0b3JhZ2VSZWJhdGUpO1xuICAgIGNvbnN0IG5ldENvc3QgPSBjb21wdXRhdGlvbkNvc3QucGx1cyhzdG9yYWdlQ29zdCkubWludXMoc3RvcmFnZVJlYmF0ZSk7XG5cbiAgICByZXR1cm4gbmV0Q29zdC5jb21wYXJlZFRvKGNvbXB1dGF0aW9uQ29zdCkgPiAwID8gbmV0Q29zdCA6IGNvbXB1dGF0aW9uQ29zdDtcbiAgfVxuXG4gIGFzeW5jIGdldEJhbGFuY2UodXJsOiBzdHJpbmcsIG93bmVyOiBzdHJpbmcsIGNvaW5UeXBlPzogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICBpZiAoY29pblR5cGUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgY29pblR5cGUgPSBTVUlfVFlQRV9BUkc7XG4gICAgfVxuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IG1ha2VSUEModXJsLCAnc3VpeF9nZXRCYWxhbmNlJywgW293bmVyLCBjb2luVHlwZV0pO1xuICAgIHJldHVybiByZXN1bHQudG90YWxCYWxhbmNlO1xuICB9XG5cbiAgYXN5bmMgZ2V0SW5wdXRDb2lucyh1cmw6IHN0cmluZywgb3duZXI6IHN0cmluZywgY29pblR5cGU/OiBzdHJpbmcpOiBQcm9taXNlPFN1aU9iamVjdEluZm9bXT4ge1xuICAgIGlmIChjb2luVHlwZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb2luVHlwZSA9IFNVSV9UWVBFX0FSRztcbiAgICB9XG4gICAgbGV0IGhhc05leHRQYWdlID0gdHJ1ZTtcbiAgICBsZXQgY3Vyc29yID0gdW5kZWZpbmVkO1xuICAgIGxldCBwYXJhbXMgPSBbb3duZXIsIGNvaW5UeXBlXTtcbiAgICBsZXQgZGF0YSA9IFtdO1xuICAgIHdoaWxlIChoYXNOZXh0UGFnZSkge1xuICAgICAgaWYgKGN1cnNvciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHBhcmFtcyA9IFtvd25lciwgY29pblR5cGUsIGN1cnNvcl07XG4gICAgICB9XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBtYWtlUlBDKHVybCwgJ3N1aXhfZ2V0Q29pbnMnLCBwYXJhbXMpO1xuICAgICAgICBkYXRhID0gZGF0YS5jb25jYXQocmVzdWx0LmRhdGEpO1xuICAgICAgICBoYXNOZXh0UGFnZSA9IHJlc3VsdC5oYXNOZXh0UGFnZTtcbiAgICAgICAgY3Vyc29yID0gcmVzdWx0Lm5leHRDdXJzb3I7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoYEZhaWxlZCB0byBnZXQgaW5wdXQgY29pbnMgZnJvbSB0aGUgbm9kZSAke2V9YCk7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgRmFpbGVkIHRvIGdldCBpbnB1dCBjb2lucyBmcm9tIHRoZSBub2RlLmApO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZGF0YTtcbiAgfVxuXG4gIGFzeW5jIGV4ZWN1dGVUcmFuc2FjdGlvbkJsb2NrKHVybDogc3RyaW5nLCBzZXJpYWxpemVkVHg6IHN0cmluZywgc2lnbmF0dXJlczogc3RyaW5nW10pIHtcbiAgICBjb25zdCByZXFUeXBlID0gJ1dhaXRGb3JFZmZlY3RzQ2VydCc7XG4gICAgY29uc3Qgb3B0aW9ucyA9IHtcbiAgICAgIHNob3dFZmZlY3RzOiB0cnVlLFxuICAgIH07XG4gICAgY29uc3QgcGFyYW1zID0gW3NlcmlhbGl6ZWRUeCwgc2lnbmF0dXJlcywgb3B0aW9ucywgcmVxVHlwZV07XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IG1ha2VSUEModXJsLCAnc3VpX2V4ZWN1dGVUcmFuc2FjdGlvbkJsb2NrJywgcGFyYW1zKTtcbiAgICAgIGNvbnNvbGUubG9nKHJlc3VsdCk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgY29uc29sZS5lcnJvcihgRmFpbGVkIHRvIGV4ZWN1dGUgdHJhbnNhY3Rpb246ICR7ZX1gKTtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgRmFpbGVkIHRvIGV4ZWN1dGUgdHJhbnNhY3Rpb24uYCk7XG4gICAgfVxuICB9XG5cbiAgdmFsaWRhdGVOb25OZWdhdGl2ZU51bWJlcihkZWZhdWx0VmFsOiBudW1iZXIsIGVycm9yTXNnOiBzdHJpbmcsIGlucHV0VmFsPzogbnVtYmVyKTogbnVtYmVyIHtcbiAgICBpZiAoaW5wdXRWYWwgPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIGRlZmF1bHRWYWw7XG4gICAgfVxuICAgIGlmICghTnVtYmVyLmlzSW50ZWdlcihpbnB1dFZhbCkgfHwgaW5wdXRWYWwgPCAwKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoZXJyb3JNc2cpO1xuICAgIH1cbiAgICByZXR1cm4gaW5wdXRWYWw7XG4gIH1cbn1cblxuY29uc3QgdXRpbHMgPSBuZXcgVXRpbHMoKTtcbmV4cG9ydCBkZWZhdWx0IHV0aWxzO1xuXG5leHBvcnQgZW51bSBBcHBJZCB7XG4gIFN1aSA9IDAsXG59XG5cbmV4cG9ydCBlbnVtIEludGVudFZlcnNpb24ge1xuICBWMCA9IDAsXG59XG5cbmV4cG9ydCBlbnVtIEludGVudFNjb3BlIHtcbiAgVHJhbnNhY3Rpb25EYXRhID0gMCxcbiAgVHJhbnNhY3Rpb25FZmZlY3RzID0gMSxcbiAgQ2hlY2twb2ludFN1bW1hcnkgPSAyLFxuICBQZXJzb25hbE1lc3NhZ2UgPSAzLFxufVxuXG5leHBvcnQgdHlwZSBJbnRlbnQgPSBbSW50ZW50U2NvcGUsIEludGVudFZlcnNpb24sIEFwcElkXTtcbiJdfQ==
package/dist/src/sui.d.ts CHANGED
@@ -1,6 +1,8 @@
1
1
  /// <reference types="node" />
2
- import { BaseCoin, BitGoBase, KeyPair, MPCAlgorithm, ParsedTransaction, ParseTransactionOptions as BaseParseTransactionOptions, SignedTransaction, SignTransactionOptions, TransactionExplanation, TssVerifyAddressOptions, VerifyTransactionOptions } from '@bitgo-beta/sdk-core';
2
+ import { BaseCoin, BitGoBase, KeyPair, MPCAlgorithm, MPCRecoveryOptions, ParsedTransaction, ParseTransactionOptions as BaseParseTransactionOptions, SignedTransaction, SignTransactionOptions, TransactionExplanation, TssVerifyAddressOptions, VerifyTransactionOptions } from '@bitgo-beta/sdk-core';
3
3
  import { BaseCoin as StaticsBaseCoin } from '@bitgo-beta/statics';
4
+ import BigNumber from 'bignumber.js';
5
+ import { SuiObjectInfo, SuiRecoveryTx } from './lib/iface';
4
6
  export interface ExplainTransactionOptions {
5
7
  txHex: string;
6
8
  }
@@ -17,6 +19,10 @@ export interface SuiParsedTransaction extends ParsedTransaction {
17
19
  outputs: TransactionOutput[];
18
20
  }
19
21
  export declare type SuiTransactionExplanation = TransactionExplanation;
22
+ export interface SuiRecoveryOptions extends MPCRecoveryOptions {
23
+ startingScanIndex?: number;
24
+ scan?: number;
25
+ }
20
26
  export declare class Sui extends BaseCoin {
21
27
  protected readonly _staticsCoin: Readonly<StaticsBaseCoin>;
22
28
  protected constructor(bitgo: BitGoBase, staticsCoin?: Readonly<StaticsBaseCoin>);
@@ -36,10 +42,10 @@ export declare class Sui extends BaseCoin {
36
42
  isWalletAddress(params: TssVerifyAddressOptions): Promise<boolean>;
37
43
  parseTransaction(params: SuiParseTransactionOptions): Promise<SuiParsedTransaction>;
38
44
  generateKeyPair(seed?: Buffer): KeyPair;
39
- isValidPub(pub: string): boolean;
40
- isValidPrv(prv: string): boolean;
45
+ isValidPub(_: string): boolean;
46
+ isValidPrv(_: string): boolean;
41
47
  isValidAddress(address: string): boolean;
42
- signTransaction(params: SignTransactionOptions): Promise<SignedTransaction>;
48
+ signTransaction(_: SignTransactionOptions): Promise<SignedTransaction>;
43
49
  /**
44
50
  * Explain a Sui transaction
45
51
  * @param params
@@ -49,6 +55,16 @@ export declare class Sui extends BaseCoin {
49
55
  private getAddressFromPublicKey;
50
56
  /** @inheritDoc */
51
57
  getSignablePayload(serializedTx: string): Promise<Buffer>;
58
+ protected getPublicNodeUrl(): string;
59
+ protected getBalance(owner: string, coinType?: string): Promise<string>;
60
+ protected getInputCoins(owner: string, coinType?: string): Promise<SuiObjectInfo[]>;
61
+ protected getFeeEstimate(txHex: string): Promise<BigNumber>;
62
+ /**
63
+ * Builds a funds recovery transaction without BitGo
64
+ * @param params
65
+ */
66
+ recover(params: SuiRecoveryOptions): Promise<SuiRecoveryTx>;
67
+ private signRecoveryTransaction;
52
68
  }
53
69
  export {};
54
70
  //# sourceMappingURL=sui.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"sui.d.ts","sourceRoot":"","sources":["../../src/sui.ts"],"names":[],"mappings":";AAAA,OAAO,EACL,QAAQ,EAER,SAAS,EAGT,OAAO,EACP,YAAY,EACZ,iBAAiB,EACjB,uBAAuB,IAAI,2BAA2B,EACtD,iBAAiB,EACjB,sBAAsB,EACtB,sBAAsB,EACtB,uBAAuB,EACvB,wBAAwB,EACzB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,QAAQ,IAAI,eAAe,EAAS,MAAM,qBAAqB,CAAC;AAOzE,MAAM,WAAW,yBAAyB;IACxC,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,0BAA2B,SAAQ,2BAA2B;IAC7E,KAAK,EAAE,MAAM,CAAC;CACf;AAED,UAAU,iBAAiB;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,aAAK,gBAAgB,GAAG,iBAAiB,CAAC;AAE1C,MAAM,WAAW,oBAAqB,SAAQ,iBAAiB;IAE7D,MAAM,EAAE,gBAAgB,EAAE,CAAC;IAG3B,OAAO,EAAE,iBAAiB,EAAE,CAAC;CAC9B;AAED,oBAAY,yBAAyB,GAAG,sBAAsB,CAAC;AAE/D,qBAAa,GAAI,SAAQ,QAAQ;IAC/B,SAAS,CAAC,QAAQ,CAAC,YAAY,EAAE,QAAQ,CAAC,eAAe,CAAC,CAAC;IAC3D,SAAS,aAAa,KAAK,EAAE,SAAS,EAAE,WAAW,CAAC,EAAE,QAAQ,CAAC,eAAe,CAAC;IAU/E,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,SAAS,EAAE,WAAW,CAAC,EAAE,QAAQ,CAAC,eAAe,CAAC,GAAG,QAAQ;IAI1F;;OAEG;IACI,aAAa,IAAI,MAAM;IAIvB,QAAQ,IAAI,MAAM;IAIlB,SAAS,IAAI,MAAM;IAInB,WAAW,IAAI,MAAM;IAI5B,kBAAkB;IAClB,WAAW,IAAI,OAAO;IAItB,eAAe,IAAI,YAAY;IAI/B,2BAA2B,IAAI,OAAO;IAIhC,iBAAiB,CAAC,MAAM,EAAE,wBAAwB,GAAG,OAAO,CAAC,OAAO,CAAC;IAsCrE,eAAe,CAAC,MAAM,EAAE,uBAAuB,GAAG,OAAO,CAAC,OAAO,CAAC;IA2BlE,gBAAgB,CAAC,MAAM,EAAE,0BAA0B,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAuCzF,eAAe,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO;IAYvC,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAIhC,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAIhC,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAIxC,eAAe,CAAC,MAAM,EAAE,sBAAsB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAI3E;;;OAGG;IACG,kBAAkB,CAAC,MAAM,EAAE,yBAAyB,GAAG,OAAO,CAAC,yBAAyB,CAAC;IAc/F,OAAO,CAAC,UAAU;IAIlB,OAAO,CAAC,uBAAuB;IAK/B,kBAAkB;IACZ,kBAAkB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAKhE"}
1
+ {"version":3,"file":"sui.d.ts","sourceRoot":"","sources":["../../src/sui.ts"],"names":[],"mappings":"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"}
package/dist/src/sui.js CHANGED
@@ -33,7 +33,8 @@ const bignumber_js_1 = __importDefault(require("bignumber.js"));
33
33
  const lib_1 = require("./lib");
34
34
  const utils_1 = __importDefault(require("./lib/utils"));
35
35
  const _ = __importStar(require("lodash"));
36
- const transferTransaction_1 = require("./lib/transferTransaction");
36
+ const iface_1 = require("./lib/iface");
37
+ const constants_1 = require("./lib/constants");
37
38
  class Sui extends sdk_core_1.BaseCoin {
38
39
  constructor(bitgo, staticsCoin) {
39
40
  super(bitgo);
@@ -75,7 +76,7 @@ class Sui extends sdk_core_1.BaseCoin {
75
76
  let totalAmount = new bignumber_js_1.default(0);
76
77
  const coinConfig = statics_1.coins.get(this.getChain());
77
78
  const { txPrebuild: txPrebuild, txParams: txParams } = params;
78
- const transaction = new transferTransaction_1.TransferTransaction(coinConfig);
79
+ const transaction = new lib_1.TransferTransaction(coinConfig);
79
80
  const rawTx = txPrebuild.txHex;
80
81
  if (!rawTx) {
81
82
  throw new Error('missing required tx prebuild property txHex');
@@ -168,16 +169,16 @@ class Sui extends sdk_core_1.BaseCoin {
168
169
  prv: keys.prv,
169
170
  };
170
171
  }
171
- isValidPub(pub) {
172
+ isValidPub(_) {
172
173
  throw new Error('Method not implemented.');
173
174
  }
174
- isValidPrv(prv) {
175
+ isValidPrv(_) {
175
176
  throw new Error('Method not implemented.');
176
177
  }
177
178
  isValidAddress(address) {
178
179
  return utils_1.default.isValidAddress(address);
179
180
  }
180
- signTransaction(params) {
181
+ signTransaction(_) {
181
182
  throw new Error('Method not implemented.');
182
183
  }
183
184
  /**
@@ -209,6 +210,168 @@ class Sui extends sdk_core_1.BaseCoin {
209
210
  const rebuiltTransaction = await factory.from(serializedTx).build();
210
211
  return rebuiltTransaction.signablePayload;
211
212
  }
213
+ getPublicNodeUrl() {
214
+ return sdk_core_1.Environments[this.bitgo.getEnv()].suiNodeUrl;
215
+ }
216
+ async getBalance(owner, coinType) {
217
+ const url = this.getPublicNodeUrl();
218
+ return await utils_1.default.getBalance(url, owner, coinType);
219
+ }
220
+ async getInputCoins(owner, coinType) {
221
+ const url = this.getPublicNodeUrl();
222
+ return await utils_1.default.getInputCoins(url, owner, coinType);
223
+ }
224
+ async getFeeEstimate(txHex) {
225
+ const url = this.getPublicNodeUrl();
226
+ return await utils_1.default.getFeeEstimate(url, txHex);
227
+ }
228
+ /**
229
+ * Builds a funds recovery transaction without BitGo
230
+ * @param params
231
+ */
232
+ async recover(params) {
233
+ if (!params.bitgoKey) {
234
+ throw new Error('missing bitgoKey');
235
+ }
236
+ if (!params.recoveryDestination || !this.isValidAddress(params.recoveryDestination)) {
237
+ throw new Error('invalid recoveryDestination');
238
+ }
239
+ const startIdx = utils_1.default.validateNonNegativeNumber(0, 'Invalid starting index to scan for addresses', params.startingScanIndex);
240
+ const numIterations = utils_1.default.validateNonNegativeNumber(20, 'Invalid scanning factor', params.scan);
241
+ const endIdx = startIdx + numIterations;
242
+ const bitgoKey = params.bitgoKey.replace(/\s/g, '');
243
+ const isUnsignedSweep = !params.userKey && !params.backupKey && !params.walletPassphrase;
244
+ const MPC = await sdk_core_1.EDDSAMethods.getInitializedMpcInstance();
245
+ for (let idx = startIdx; idx < endIdx; idx++) {
246
+ const derivationPath = `m/${idx}`;
247
+ const derivedPublicKey = MPC.deriveUnhardened(bitgoKey, derivationPath).slice(0, 64);
248
+ const senderAddress = this.getAddressFromPublicKey(derivedPublicKey);
249
+ let availableBalance = new bignumber_js_1.default(0);
250
+ try {
251
+ availableBalance = new bignumber_js_1.default(await this.getBalance(senderAddress));
252
+ }
253
+ catch (e) {
254
+ continue;
255
+ }
256
+ if (availableBalance.toNumber() <= 0) {
257
+ continue;
258
+ }
259
+ let netAmount = availableBalance.minus(constants_1.MAX_GAS_BUDGET);
260
+ if (netAmount.toNumber() <= 0) {
261
+ throw new Error(`Found address ${senderAddress} with non-zero fund but fund is insufficient to support a recovery ` +
262
+ `transaction. Please start the next scan at address index ${idx + 1}.`);
263
+ }
264
+ let inputCoins = await this.getInputCoins(senderAddress);
265
+ inputCoins
266
+ .filter((coin) => coin.balance !== undefined)
267
+ .sort((a, b) => {
268
+ return b.balance.minus(a.balance).toNumber();
269
+ });
270
+ if (inputCoins.length > constants_1.MAX_OBJECT_LIMIT) {
271
+ inputCoins = inputCoins.slice(0, constants_1.MAX_OBJECT_LIMIT);
272
+ netAmount = inputCoins.reduce((acc, obj) => acc.plus(obj.balance), new bignumber_js_1.default(0));
273
+ netAmount = netAmount.minus(constants_1.MAX_GAS_BUDGET);
274
+ }
275
+ inputCoins = inputCoins.map((object) => {
276
+ return {
277
+ coinType: object.coinType,
278
+ objectId: object.coinObjectId,
279
+ version: object.version,
280
+ digest: object.digest,
281
+ balance: object.balance,
282
+ };
283
+ });
284
+ const recipients = [
285
+ {
286
+ address: params.recoveryDestination,
287
+ amount: netAmount.toString(),
288
+ },
289
+ ];
290
+ // first build the unsigned txn
291
+ const factory = new lib_1.TransactionBuilderFactory(statics_1.coins.get(this.getChain()));
292
+ const txBuilder = factory
293
+ .getTransferBuilder()
294
+ .type(iface_1.SuiTransactionType.Transfer)
295
+ .sender(senderAddress)
296
+ .send(recipients)
297
+ .gasData({
298
+ owner: senderAddress,
299
+ price: constants_1.DEFAULT_GAS_PRICE,
300
+ budget: constants_1.MAX_GAS_BUDGET,
301
+ payment: inputCoins,
302
+ });
303
+ const tempTx = (await txBuilder.build());
304
+ const feeEstimate = await this.getFeeEstimate(tempTx.toBroadcastFormat());
305
+ const gasBudget = Math.trunc(feeEstimate.toNumber() * constants_1.DEFAULT_GAS_OVERHEAD);
306
+ txBuilder.gasData({
307
+ owner: senderAddress,
308
+ price: constants_1.DEFAULT_GAS_PRICE,
309
+ budget: gasBudget,
310
+ payment: inputCoins,
311
+ });
312
+ const suiRecoveryTx = {
313
+ scanIndex: idx,
314
+ recoveryAmount: netAmount.toString(),
315
+ serializedTx: '',
316
+ };
317
+ let tx;
318
+ if (isUnsignedSweep) {
319
+ tx = (await txBuilder.build());
320
+ }
321
+ else {
322
+ await this.signRecoveryTransaction(txBuilder, params, derivationPath, derivedPublicKey);
323
+ tx = (await txBuilder.build());
324
+ suiRecoveryTx.signature = Buffer.from(tx.serializedSig).toString('base64');
325
+ }
326
+ suiRecoveryTx.serializedTx = tx.toBroadcastFormat();
327
+ return suiRecoveryTx;
328
+ }
329
+ throw new Error('Did not find an address with funds to recover');
330
+ }
331
+ async signRecoveryTransaction(txBuilder, params, derivationPath, derivedPublicKey) {
332
+ // TODO(BG-51092): This looks like a common part which can be extracted out too
333
+ const unsignedTx = (await txBuilder.build());
334
+ if (!params.userKey) {
335
+ throw new Error('missing userKey');
336
+ }
337
+ if (!params.backupKey) {
338
+ throw new Error('missing backupKey');
339
+ }
340
+ if (!params.walletPassphrase) {
341
+ throw new Error('missing wallet passphrase');
342
+ }
343
+ // Clean up whitespace from entered values
344
+ const userKey = params.userKey.replace(/\s/g, '');
345
+ const backupKey = params.backupKey.replace(/\s/g, '');
346
+ // Decrypt private keys from KeyCard values
347
+ let userPrv;
348
+ try {
349
+ userPrv = this.bitgo.decrypt({
350
+ input: userKey,
351
+ password: params.walletPassphrase,
352
+ });
353
+ }
354
+ catch (e) {
355
+ throw new Error(`Error decrypting user keychain: ${e.message}`);
356
+ }
357
+ /** TODO BG-52419 Implement Codec for parsing */
358
+ const userSigningMaterial = JSON.parse(userPrv);
359
+ let backupPrv;
360
+ try {
361
+ backupPrv = this.bitgo.decrypt({
362
+ input: backupKey,
363
+ password: params.walletPassphrase,
364
+ });
365
+ }
366
+ catch (e) {
367
+ throw new Error(`Error decrypting backup keychain: ${e.message}`);
368
+ }
369
+ const backupSigningMaterial = JSON.parse(backupPrv);
370
+ /* ********************** END ***********************************/
371
+ // add signature
372
+ const signatureHex = await sdk_core_1.EDDSAMethods.getTSSSignature(userSigningMaterial, backupSigningMaterial, derivationPath, unsignedTx);
373
+ txBuilder.addSignature({ pub: derivedPublicKey }, signatureHex);
374
+ }
212
375
  }
213
376
  exports.Sui = Sui;
214
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3VpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3N1aS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLG1EQWU4QjtBQUM5QixpREFBeUU7QUFDekUsZ0VBQXFDO0FBQ3JDLCtCQUF5RTtBQUN6RSx3REFBZ0M7QUFDaEMsMENBQTRCO0FBQzVCLG1FQUFnRTtBQTJCaEUsTUFBYSxHQUFJLFNBQVEsbUJBQVE7SUFFL0IsWUFBc0IsS0FBZ0IsRUFBRSxXQUF1QztRQUM3RSxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFYixJQUFJLENBQUMsV0FBVyxFQUFFO1lBQ2hCLE1BQU0sSUFBSSxLQUFLLENBQUMsb0RBQW9ELENBQUMsQ0FBQztTQUN2RTtRQUVELElBQUksQ0FBQyxZQUFZLEdBQUcsV0FBVyxDQUFDO0lBQ2xDLENBQUM7SUFFRCxNQUFNLENBQUMsY0FBYyxDQUFDLEtBQWdCLEVBQUUsV0FBdUM7UUFDN0UsT0FBTyxJQUFJLEdBQUcsQ0FBQyxLQUFLLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFDckMsQ0FBQztJQUVEOztPQUVHO0lBQ0ksYUFBYTtRQUNsQixPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUM7SUFFTSxRQUFRO1FBQ2IsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRU0sU0FBUztRQUNkLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVNLFdBQVc7UUFDaEIsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLFdBQVc7UUFDVCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxlQUFlO1FBQ2IsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQztJQUVELDJCQUEyQjtRQUN6QixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxLQUFLLENBQUMsaUJBQWlCLENBQUMsTUFBZ0M7O1FBQ3RELElBQUksV0FBVyxHQUFHLElBQUks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QjtJQUNsQixLQUFLLENBQUMsa0JBQWtCLENBQUMsWUFBb0I7UUFDM0MsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ2xDLE1BQU0sa0JBQWtCLEdBQUcsTUFBTSxPQUFPLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ3BFLE9BQU8sa0JBQWtCLENBQUMsZUFBZSxDQUFDO0lBQzVDLENBQUM7Q0FDRjtBQXJORCxrQkFxTkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBCYXNlQ29pbixcbiAgQmFzZVRyYW5zYWN0aW9uLFxuICBCaXRHb0Jhc2UsXG4gIEVERFNBTWV0aG9kcyxcbiAgSW52YWxpZEFkZHJlc3NFcnJvcixcbiAgS2V5UGFpcixcbiAgTVBDQWxnb3JpdGhtLFxuICBQYXJzZWRUcmFuc2FjdGlvbixcbiAgUGFyc2VUcmFuc2FjdGlvbk9wdGlvbnMgYXMgQmFzZVBhcnNlVHJhbnNhY3Rpb25PcHRpb25zLFxuICBTaWduZWRUcmFuc2FjdGlvbixcbiAgU2lnblRyYW5zYWN0aW9uT3B0aW9ucyxcbiAgVHJhbnNhY3Rpb25FeHBsYW5hdGlvbixcbiAgVHNzVmVyaWZ5QWRkcmVzc09wdGlvbnMsXG4gIFZlcmlmeVRyYW5zYWN0aW9uT3B0aW9ucyxcbn0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuaW1wb3J0IHsgQmFzZUNvaW4gYXMgU3RhdGljc0Jhc2VDb2luLCBjb2lucyB9IGZyb20gJ0BiaXRnby1iZXRhL3N0YXRpY3MnO1xuaW1wb3J0IEJpZ051bWJlciBmcm9tICdiaWdudW1iZXIuanMnO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeSwgS2V5UGFpciBhcyBTdWlLZXlQYWlyIH0gZnJvbSAnLi9saWInO1xuaW1wb3J0IHV0aWxzIGZyb20gJy4vbGliL3V0aWxzJztcbmltcG9ydCAqIGFzIF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IFRyYW5zZmVyVHJhbnNhY3Rpb24gfSBmcm9tICcuL2xpYi90cmFuc2ZlclRyYW5zYWN0aW9uJztcblxuZXhwb3J0IGludGVyZmFjZSBFeHBsYWluVHJhbnNhY3Rpb25PcHRpb25zIHtcbiAgdHhIZXg6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTdWlQYXJzZVRyYW5zYWN0aW9uT3B0aW9ucyBleHRlbmRzIEJhc2VQYXJzZVRyYW5zYWN0aW9uT3B0aW9ucyB7XG4gIHR4SGV4OiBzdHJpbmc7XG59XG5cbmludGVyZmFjZSBUcmFuc2FjdGlvbk91dHB1dCB7XG4gIGFkZHJlc3M6IHN0cmluZztcbiAgYW1vdW50OiBzdHJpbmc7XG59XG5cbnR5cGUgVHJhbnNhY3Rpb25JbnB1dCA9IFRyYW5zYWN0aW9uT3V0cHV0O1xuXG5leHBvcnQgaW50ZXJmYWNlIFN1aVBhcnNlZFRyYW5zYWN0aW9uIGV4dGVuZHMgUGFyc2VkVHJhbnNhY3Rpb24ge1xuICAvLyB0b3RhbCBhc3NldHMgYmVpbmcgbW92ZWQsIGluY2x1ZGluZyBmZWVzXG4gIGlucHV0czogVHJhbnNhY3Rpb25JbnB1dFtdO1xuXG4gIC8vIHdoZXJlIGFzc2V0cyBhcmUgbW92ZWQgdG9cbiAgb3V0cHV0czogVHJhbnNhY3Rpb25PdXRwdXRbXTtcbn1cblxuZXhwb3J0IHR5cGUgU3VpVHJhbnNhY3Rpb25FeHBsYW5hdGlvbiA9IFRyYW5zYWN0aW9uRXhwbGFuYXRpb247XG5cbmV4cG9ydCBjbGFzcyBTdWkgZXh0ZW5kcyBCYXNlQ29pbiB7XG4gIHByb3RlY3RlZCByZWFkb25seSBfc3RhdGljc0NvaW46IFJlYWRvbmx5PFN0YXRpY3NCYXNlQ29pbj47XG4gIHByb3RlY3RlZCBjb25zdHJ1Y3RvcihiaXRnbzogQml0R29CYXNlLCBzdGF0aWNzQ29pbj86IFJlYWRvbmx5PFN0YXRpY3NCYXNlQ29pbj4pIHtcbiAgICBzdXBlcihiaXRnbyk7XG5cbiAgICBpZiAoIXN0YXRpY3NDb2luKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ21pc3NpbmcgcmVxdWlyZWQgY29uc3RydWN0b3IgcGFyYW1ldGVyIHN0YXRpY3NDb2luJyk7XG4gICAgfVxuXG4gICAgdGhpcy5fc3RhdGljc0NvaW4gPSBzdGF0aWNzQ29pbjtcbiAgfVxuXG4gIHN0YXRpYyBjcmVhdGVJbnN0YW5jZShiaXRnbzogQml0R29CYXNlLCBzdGF0aWNzQ29pbj86IFJlYWRvbmx5PFN0YXRpY3NCYXNlQ29pbj4pOiBCYXNlQ29pbiB7XG4gICAgcmV0dXJuIG5ldyBTdWkoYml0Z28sIHN0YXRpY3NDb2luKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGYWN0b3IgYmV0d2VlbiB0aGUgY29pbidzIGJhc2UgdW5pdCBhbmQgaXRzIHNtYWxsZXN0IHN1YmRpdmlzb25cbiAgICovXG4gIHB1YmxpYyBnZXRCYXNlRmFjdG9yKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIDFlOTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRDaGFpbigpOiBzdHJpbmcge1xuICAgIHJldHVybiAnc3VpJztcbiAgfVxuXG4gIHB1YmxpYyBnZXRGYW1pbHkoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gJ3N1aSc7XG4gIH1cblxuICBwdWJsaWMgZ2V0RnVsbE5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gJ1N1aSc7XG4gIH1cblxuICAvKiogQGluaGVyaXREb2MgKi9cbiAgc3VwcG9ydHNUc3MoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBnZXRNUENBbGdvcml0aG0oKTogTVBDQWxnb3JpdGhtIHtcbiAgICByZXR1cm4gJ2VkZHNhJztcbiAgfVxuXG4gIGFsbG93c0FjY291bnRDb25zb2xpZGF0aW9ucygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIGFzeW5jIHZlcmlmeVRyYW5zYWN0aW9uKHBhcmFtczogVmVyaWZ5VHJhbnNhY3Rpb25PcHRpb25zKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgbGV0IHRvdGFsQW1vdW50ID0gbmV3IEJpZ051bWJlcigwKTtcbiAgICBjb25zdCBjb2luQ29uZmlnID0gY29pbnMuZ2V0KHRoaXMuZ2V0Q2hhaW4oKSk7XG4gICAgY29uc3QgeyB0eFByZWJ1aWxkOiB0eFByZWJ1aWxkLCB0eFBhcmFtczogdHhQYXJhbXMgfSA9IHBhcmFtcztcbiAgICBjb25zdCB0cmFuc2FjdGlvbiA9IG5ldyBUcmFuc2ZlclRyYW5zYWN0aW9uKGNvaW5Db25maWcpO1xuICAgIGNvbnN0IHJhd1R4ID0gdHhQcmVidWlsZC50eEhleDtcbiAgICBpZiAoIXJhd1R4KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ21pc3NpbmcgcmVxdWlyZWQgdHggcHJlYnVpbGQgcHJvcGVydHkgdHhIZXgnKTtcbiAgICB9XG5cbiAgICB0cmFuc2FjdGlvbi5mcm9tUmF3VHJhbnNhY3Rpb24oQnVmZmVyLmZyb20ocmF3VHgsICdoZXgnKS50b1N0cmluZygnYmFzZTY0JykpO1xuICAgIGNvbnN0IGV4cGxhaW5lZFR4ID0gdHJhbnNhY3Rpb24uZXhwbGFpblRyYW5zYWN0aW9uKCk7XG5cbiAgICBpZiAodHhQYXJhbXMucmVjaXBpZW50cyAmJiB0eFBhcmFtcy5yZWNpcGllbnRzLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IGZpbHRlcmVkUmVjaXBpZW50cyA9IHR4UGFyYW1zLnJlY2lwaWVudHM/Lm1hcCgocmVjaXBpZW50KSA9PiB7XG4gICAgICAgIGNvbnN0IGZpbHRlcmVkUmVjaXBpZW50ID0gXy5waWNrKHJlY2lwaWVudCwgWydhZGRyZXNzJywgJ2Ftb3VudCddKTtcbiAgICAgICAgZmlsdGVyZWRSZWNpcGllbnQuYW1vdW50ID0gbmV3IEJpZ051bWJlcihmaWx0ZXJlZFJlY2lwaWVudC5hbW91bnQpLnRvRml4ZWQoKTtcbiAgICAgICAgcmV0dXJuIGZpbHRlcmVkUmVjaXBpZW50O1xuICAgICAgfSk7XG4gICAgICBjb25zdCBmaWx0ZXJlZE91dHB1dHMgPSBleHBsYWluZWRUeC5vdXRwdXRzLm1hcCgob3V0cHV0KSA9PiB7XG4gICAgICAgIGNvbnN0IGZpbHRlcmVkT3V0cHV0ID0gXy5waWNrKG91dHB1dCwgWydhZGRyZXNzJywgJ2Ftb3VudCddKTtcbiAgICAgICAgZmlsdGVyZWRPdXRwdXQuYW1vdW50ID0gbmV3IEJpZ051bWJlcihmaWx0ZXJlZE91dHB1dC5hbW91bnQpLnRvRml4ZWQoKTtcbiAgICAgICAgcmV0dXJuIGZpbHRlcmVkT3V0cHV0O1xuICAgICAgfSk7XG5cbiAgICAgIGlmICghXy5pc0VxdWFsKGZpbHRlcmVkT3V0cHV0cywgZmlsdGVyZWRSZWNpcGllbnRzKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1R4IG91dHB1dHMgZG9lcyBub3QgbWF0Y2ggd2l0aCBleHBlY3RlZCB0eFBhcmFtcyByZWNpcGllbnRzJyk7XG4gICAgICB9XG4gICAgICBmb3IgKGNvbnN0IHJlY2lwaWVudHMgb2YgdHhQYXJhbXMucmVjaXBpZW50cykge1xuICAgICAgICB0b3RhbEFtb3VudCA9IHRvdGFsQW1vdW50LnBsdXMocmVjaXBpZW50cy5hbW91bnQpO1xuICAgICAgfVxuICAgICAgaWYgKCF0b3RhbEFtb3VudC5pc0VxdWFsVG8oZXhwbGFpbmVkVHgub3V0cHV0QW1vdW50KSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1R4IHRvdGFsIGFtb3VudCBkb2VzIG5vdCBtYXRjaCB3aXRoIGV4cGVjdGVkIHRvdGFsIGFtb3VudCBmaWVsZCcpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIGFzeW5jIGlzV2FsbGV0QWRkcmVzcyhwYXJhbXM6IFRzc1ZlcmlmeUFkZHJlc3NPcHRpb25zKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgY29uc3QgeyBrZXljaGFpbnMsIGFkZHJlc3M6IG5ld0FkZHJlc3MsIGluZGV4IH0gPSBwYXJhbXM7XG5cbiAgICBpZiAoIXRoaXMuaXNWYWxpZEFkZHJlc3MobmV3QWRkcmVzcykpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkQWRkcmVzc0Vycm9yKGBpbnZhbGlkIGFkZHJlc3M6ICR7bmV3QWRkcmVzc31gKTtcbiAgICB9XG5cbiAgICBpZiAoIWtleWNoYWlucykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdtaXNzaW5nIHJlcXVpcmVkIHBhcmFtIGtleWNoYWlucycpO1xuICAgIH1cblxuICAgIGZvciAoY29uc3Qga2V5Y2hhaW4gb2Yga2V5Y2hhaW5zKSB7XG4gICAgICBjb25zdCBNUEMgPSBhd2FpdCBFRERTQU1ldGhvZHMuZ2V0SW5pdGlhbGl6ZWRNcGNJbnN0YW5jZSgpO1xuICAgICAgY29uc3QgY29tbW9uS2V5Y2hhaW4gPSBrZXljaGFpbi5jb21tb25LZXljaGFpbiBhcyBzdHJpbmc7XG5cbiAgICAgIGNvbnN0IGRlcml2YXRpb25QYXRoID0gJ20vJyArIGluZGV4O1xuICAgICAgY29uc3QgZGVyaXZlZFB1YmxpY0tleSA9IE1QQy5kZXJpdmVVbmhhcmRlbmVkKGNvbW1vbktleWNoYWluLCBkZXJpdmF0aW9uUGF0aCkuc2xpY2UoMCwgNjQpO1xuICAgICAgY29uc3QgZXhwZWN0ZWRBZGRyZXNzID0gdGhpcy5nZXRBZGRyZXNzRnJvbVB1YmxpY0tleShkZXJpdmVkUHVibGljS2V5KTtcblxuICAgICAgaWYgKG5ld0FkZHJlc3MgIT09IGV4cGVjdGVkQWRkcmVzcykge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBhc3luYyBwYXJzZVRyYW5zYWN0aW9uKHBhcmFtczogU3VpUGFyc2VUcmFuc2FjdGlvbk9wdGlvbnMpOiBQcm9taXNlPFN1aVBhcnNlZFRyYW5zYWN0aW9uPiB7XG4gICAgY29uc3QgdHJhbnNhY3Rpb25FeHBsYW5hdGlvbiA9IGF3YWl0IHRoaXMuZXhwbGFpblRyYW5zYWN0aW9uKHsgdHhIZXg6IHBhcmFtcy50eEhleCB9KTtcblxuICAgIGlmICghdHJhbnNhY3Rpb25FeHBsYW5hdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIHRyYW5zYWN0aW9uJyk7XG4gICAgfVxuXG4gICAgY29uc3Qgc3VpVHJhbnNhY3Rpb24gPSB0cmFuc2FjdGlvbkV4cGxhbmF0aW9uIGFzIFN1aVRyYW5zYWN0aW9uRXhwbGFuYXRpb247XG4gICAgaWYgKHN1aVRyYW5zYWN0aW9uLm91dHB1dHMubGVuZ3RoIDw9IDApIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGlucHV0czogW10sXG4gICAgICAgIG91dHB1dHM6IFtdLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICBjb25zdCBzZW5kZXJBZGRyZXNzID0gc3VpVHJhbnNhY3Rpb24ub3V0cHV0c1swXS5hZGRyZXNzO1xuICAgIGNvbnN0IGZlZUFtb3VudCA9IG5ldyBCaWdOdW1iZXIoc3VpVHJhbnNhY3Rpb24uZmVlLmZlZSA9PT0gJycgPyAnMCcgOiBzdWlUcmFuc2FjdGlvbi5mZWUuZmVlKTtcblxuICAgIC8vIGFzc3VtZSAxIHNlbmRlciwgd2hvIGlzIGFsc28gdGhlIGZlZSBwYXllclxuICAgIGNvbnN0IGlucHV0cyA9IFtcbiAgICAgIHtcbiAgICAgICAgYWRkcmVzczogc2VuZGVyQWRkcmVzcyxcbiAgICAgICAgYW1vdW50OiBuZXcgQmlnTnVtYmVyKHN1aVRyYW5zYWN0aW9uLm91dHB1dEFtb3VudCkucGx1cyhmZWVBbW91bnQpLnRvRml4ZWQoKSxcbiAgICAgIH0sXG4gICAgXTtcblxuICAgIGNvbnN0IG91dHB1dHM6IFRyYW5zYWN0aW9uT3V0cHV0W10gPSBzdWlUcmFuc2FjdGlvbi5vdXRwdXRzLm1hcCgob3V0cHV0KSA9PiB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBhZGRyZXNzOiBvdXRwdXQuYWRkcmVzcyxcbiAgICAgICAgYW1vdW50OiBuZXcgQmlnTnVtYmVyKG91dHB1dC5hbW91bnQpLnRvRml4ZWQoKSxcbiAgICAgIH07XG4gICAgfSk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgaW5wdXRzLFxuICAgICAgb3V0cHV0cyxcbiAgICB9O1xuICB9XG5cbiAgZ2VuZXJhdGVLZXlQYWlyKHNlZWQ/OiBCdWZmZXIpOiBLZXlQYWlyIHtcbiAgICBjb25zdCBrZXlQYWlyID0gc2VlZCA/IG5ldyBTdWlLZXlQYWlyKHsgc2VlZCB9KSA6IG5ldyBTdWlLZXlQYWlyKCk7XG4gICAgY29uc3Qga2V5cyA9IGtleVBhaXIuZ2V0S2V5cygpO1xuICAgIGlmICgha2V5cy5wcnYpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTWlzc2luZyBwcnYgaW4ga2V5IGdlbmVyYXRpb24uJyk7XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICBwdWI6IGtleXMucHViLFxuICAgICAgcHJ2OiBrZXlzLnBydixcbiAgICB9O1xuICB9XG5cbiAgaXNWYWxpZFB1YihwdWI6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHRocm93IG5ldyBFcnJvcignTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC4nKTtcbiAgfVxuXG4gIGlzVmFsaWRQcnYocHJ2OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ01ldGhvZCBub3QgaW1wbGVtZW50ZWQuJyk7XG4gIH1cblxuICBpc1ZhbGlkQWRkcmVzcyhhZGRyZXNzOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdXRpbHMuaXNWYWxpZEFkZHJlc3MoYWRkcmVzcyk7XG4gIH1cblxuICBzaWduVHJhbnNhY3Rpb24ocGFyYW1zOiBTaWduVHJhbnNhY3Rpb25PcHRpb25zKTogUHJvbWlzZTxTaWduZWRUcmFuc2FjdGlvbj4ge1xuICAgIHRocm93IG5ldyBFcnJvcignTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC4nKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFeHBsYWluIGEgU3VpIHRyYW5zYWN0aW9uXG4gICAqIEBwYXJhbSBwYXJhbXNcbiAgICovXG4gIGFzeW5jIGV4cGxhaW5UcmFuc2FjdGlvbihwYXJhbXM6IEV4cGxhaW5UcmFuc2FjdGlvbk9wdGlvbnMpOiBQcm9taXNlPFN1aVRyYW5zYWN0aW9uRXhwbGFuYXRpb24+IHtcbiAgICBjb25zdCBmYWN0b3J5ID0gdGhpcy5nZXRCdWlsZGVyKCk7XG4gICAgbGV0IHJlYnVpbHRUcmFuc2FjdGlvbjogQmFzZVRyYW5zYWN0aW9uO1xuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHRyYW5zYWN0aW9uQnVpbGRlciA9IGZhY3RvcnkuZnJvbShCdWZmZXIuZnJvbShwYXJhbXMudHhIZXgsICdoZXgnKS50b1N0cmluZygnYmFzZTY0JykpO1xuICAgICAgcmVidWlsdFRyYW5zYWN0aW9uID0gYXdhaXQgdHJhbnNhY3Rpb25CdWlsZGVyLmJ1aWxkKCk7XG4gICAgfSBjYXRjaCB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgdHJhbnNhY3Rpb24nKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVidWlsdFRyYW5zYWN0aW9uLmV4cGxhaW5UcmFuc2FjdGlvbigpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRCdWlsZGVyKCk6IFRyYW5zYWN0aW9uQnVpbGRlckZhY3Rvcnkge1xuICAgIHJldHVybiBuZXcgVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeShjb2lucy5nZXQodGhpcy5nZXRDaGFpbigpKSk7XG4gIH1cblxuICBwcml2YXRlIGdldEFkZHJlc3NGcm9tUHVibGljS2V5KGRlcml2ZWRQdWJsaWNLZXk6IHN0cmluZykge1xuICAgIC8vIFRPRE8oQkctNTkwMTYpIHJlcGxhY2Ugd2l0aCBhY2NvdW50IGxpYiBpbXBsZW1lbnRhdGlvblxuICAgIHJldHVybiB1dGlscy5nZXRBZGRyZXNzRnJvbVB1YmxpY0tleShkZXJpdmVkUHVibGljS2V5KTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdERvYyAqL1xuICBhc3luYyBnZXRTaWduYWJsZVBheWxvYWQoc2VyaWFsaXplZFR4OiBzdHJpbmcpOiBQcm9taXNlPEJ1ZmZlcj4ge1xuICAgIGNvbnN0IGZhY3RvcnkgPSB0aGlzLmdldEJ1aWxkZXIoKTtcbiAgICBjb25zdCByZWJ1aWx0VHJhbnNhY3Rpb24gPSBhd2FpdCBmYWN0b3J5LmZyb20oc2VyaWFsaXplZFR4KS5idWlsZCgpO1xuICAgIHJldHVybiByZWJ1aWx0VHJhbnNhY3Rpb24uc2lnbmFibGVQYXlsb2FkO1xuICB9XG59XG4iXX0=
377
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3VpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3N1aS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLG1EQWtCOEI7QUFDOUIsaURBQXlFO0FBQ3pFLGdFQUFxQztBQUNyQywrQkFBK0c7QUFDL0csd0RBQWdDO0FBQ2hDLDBDQUE0QjtBQUM1Qix1Q0FBK0U7QUFDL0UsK0NBQTRHO0FBZ0M1RyxNQUFhLEdBQUksU0FBUSxtQkFBUTtJQUUvQixZQUFzQixLQUFnQixFQUFFLFdBQXVDO1FBQzdFLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUViLElBQUksQ0FBQyxXQUFXLEVBQUU7WUFDaEIsTUFBTSxJQUFJLEtBQUssQ0FBQyxvREFBb0QsQ0FBQyxDQUFDO1NBQ3ZFO1FBRUQsSUFBSSxDQUFDLFlBQVksR0FBRyxXQUFXLENBQUM7SUFDbEMsQ0FBQztJQUVELE1BQU0sQ0FBQyxjQUFjLENBQUMsS0FBZ0IsRUFBRSxXQUF1QztRQUM3RSxPQUFPLElBQUksR0FBRyxDQUFDLEtBQUssRUFBRSxXQUFXLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBRUQ7O09BRUc7SUFDSSxhQUFhO1FBQ2xCLE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQztJQUVNLFFBQVE7UUFDYixPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFTSxTQUFTO1FBQ2QsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRU0sV0FBVztRQUNoQixPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsV0FBVztRQUNULE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELGVBQWU7UUFDYixPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDO0lBRUQsMkJBQTJCO1FBQ3pCLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxNQUFnQzs7UUFDdEQsSUFBSSxX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RyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBeUMsQ0FBQztRQUV4RixJQUFJLFNBQWlCLENBQUM7UUFDdEIsSUFBSTtZQUNGLFNBQVMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQztnQkFDN0IsS0FBSyxFQUFFLFNBQVM7Z0JBQ2hCLFFBQVEsRUFBRSxNQUFNLENBQUMsZ0JBQWdCO2FBQ2xDLENBQUMsQ0FBQztTQUNKO1FBQUMsT0FBTyxDQUFDLEVBQUU7WUFDVixNQUFNLElBQUksS0FBSyxDQUFDLHFDQUFxQyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztTQUNuRTtRQUNELE1BQU0scUJBQXFCLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQTJDLENBQUM7UUFDOUYsa0VBQWtFO1FBRWxFLGdCQUFnQjtRQUNoQixNQUFNLFlBQVksR0FBRyxNQUFNLHVCQUFZLENBQUMsZUFBZSxDQUNyRCxtQkFBbUIsRUFDbkIscUJBQXFCLEVBQ3JCLGNBQWMsRUFDZCxVQUFVLENBQ1gsQ0FBQztRQUNGLFNBQVMsQ0FBQyxZQUFZLENBQUMsRUFBRSxHQUFHLEVBQUUsZ0JBQWdCLEVBQUUsRUFBRSxZQUFZLENBQUMsQ0FBQztJQUNsRSxDQUFDO0NBQ0Y7QUF0WkQsa0JBc1pDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQmFzZUNvaW4sXG4gIEJhc2VUcmFuc2FjdGlvbixcbiAgQml0R29CYXNlLFxuICBFRERTQU1ldGhvZHMsXG4gIEVERFNBTWV0aG9kVHlwZXMsXG4gIEVudmlyb25tZW50cyxcbiAgSW52YWxpZEFkZHJlc3NFcnJvcixcbiAgS2V5UGFpcixcbiAgTVBDQWxnb3JpdGhtLFxuICBNUENSZWNvdmVyeU9wdGlvbnMsXG4gIFBhcnNlZFRyYW5zYWN0aW9uLFxuICBQYXJzZVRyYW5zYWN0aW9uT3B0aW9ucyBhcyBCYXNlUGFyc2VUcmFuc2FjdGlvbk9wdGlvbnMsXG4gIFNpZ25lZFRyYW5zYWN0aW9uLFxuICBTaWduVHJhbnNhY3Rpb25PcHRpb25zLFxuICBUcmFuc2FjdGlvbkV4cGxhbmF0aW9uLFxuICBUc3NWZXJpZnlBZGRyZXNzT3B0aW9ucyxcbiAgVmVyaWZ5VHJhbnNhY3Rpb25PcHRpb25zLFxufSBmcm9tICdAYml0Z28tYmV0YS9zZGstY29yZSc7XG5pbXBvcnQgeyBCYXNlQ29pbiBhcyBTdGF0aWNzQmFzZUNvaW4sIGNvaW5zIH0gZnJvbSAnQGJpdGdvLWJldGEvc3RhdGljcyc7XG5pbXBvcnQgQmlnTnVtYmVyIGZyb20gJ2JpZ251bWJlci5qcyc7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5LCBLZXlQYWlyIGFzIFN1aUtleVBhaXIsIFRyYW5zZmVyVHJhbnNhY3Rpb24sIFRyYW5zZmVyQnVpbGRlciB9IGZyb20gJy4vbGliJztcbmltcG9ydCB1dGlscyBmcm9tICcuL2xpYi91dGlscyc7XG5pbXBvcnQgKiBhcyBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBTdWlPYmplY3RJbmZvLCBTdWlSZWNvdmVyeVR4LCBTdWlUcmFuc2FjdGlvblR5cGUgfSBmcm9tICcuL2xpYi9pZmFjZSc7XG5pbXBvcnQgeyBERUZBVUxUX0dBU19PVkVSSEVBRCwgREVGQVVMVF9HQVNfUFJJQ0UsIE1BWF9HQVNfQlVER0VULCBNQVhfT0JKRUNUX0xJTUlUIH0gZnJvbSAnLi9saWIvY29uc3RhbnRzJztcblxuZXhwb3J0IGludGVyZmFjZSBFeHBsYWluVHJhbnNhY3Rpb25PcHRpb25zIHtcbiAgdHhIZXg6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTdWlQYXJzZVRyYW5zYWN0aW9uT3B0aW9ucyBleHRlbmRzIEJhc2VQYXJzZVRyYW5zYWN0aW9uT3B0aW9ucyB7XG4gIHR4SGV4OiBzdHJpbmc7XG59XG5cbmludGVyZmFjZSBUcmFuc2FjdGlvbk91dHB1dCB7XG4gIGFkZHJlc3M6IHN0cmluZztcbiAgYW1vdW50OiBzdHJpbmc7XG59XG5cbnR5cGUgVHJhbnNhY3Rpb25JbnB1dCA9IFRyYW5zYWN0aW9uT3V0cHV0O1xuXG5leHBvcnQgaW50ZXJmYWNlIFN1aVBhcnNlZFRyYW5zYWN0aW9uIGV4dGVuZHMgUGFyc2VkVHJhbnNhY3Rpb24ge1xuICAvLyB0b3RhbCBhc3NldHMgYmVpbmcgbW92ZWQsIGluY2x1ZGluZyBmZWVzXG4gIGlucHV0czogVHJhbnNhY3Rpb25JbnB1dFtdO1xuXG4gIC8vIHdoZXJlIGFzc2V0cyBhcmUgbW92ZWQgdG9cbiAgb3V0cHV0czogVHJhbnNhY3Rpb25PdXRwdXRbXTtcbn1cblxuZXhwb3J0IHR5cGUgU3VpVHJhbnNhY3Rpb25FeHBsYW5hdGlvbiA9IFRyYW5zYWN0aW9uRXhwbGFuYXRpb247XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3VpUmVjb3ZlcnlPcHRpb25zIGV4dGVuZHMgTVBDUmVjb3ZlcnlPcHRpb25zIHtcbiAgc3RhcnRpbmdTY2FuSW5kZXg/OiBudW1iZXI7XG4gIHNjYW4/OiBudW1iZXI7XG59XG5cbmV4cG9ydCBjbGFzcyBTdWkgZXh0ZW5kcyBCYXNlQ29pbiB7XG4gIHByb3RlY3RlZCByZWFkb25seSBfc3RhdGljc0NvaW46IFJlYWRvbmx5PFN0YXRpY3NCYXNlQ29pbj47XG4gIHByb3RlY3RlZCBjb25zdHJ1Y3RvcihiaXRnbzogQml0R29CYXNlLCBzdGF0aWNzQ29pbj86IFJlYWRvbmx5PFN0YXRpY3NCYXNlQ29pbj4pIHtcbiAgICBzdXBlcihiaXRnbyk7XG5cbiAgICBpZiAoIXN0YXRpY3NDb2luKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ21pc3NpbmcgcmVxdWlyZWQgY29uc3RydWN0b3IgcGFyYW1ldGVyIHN0YXRpY3NDb2luJyk7XG4gICAgfVxuXG4gICAgdGhpcy5fc3RhdGljc0NvaW4gPSBzdGF0aWNzQ29pbjtcbiAgfVxuXG4gIHN0YXRpYyBjcmVhdGVJbnN0YW5jZShiaXRnbzogQml0R29CYXNlLCBzdGF0aWNzQ29pbj86IFJlYWRvbmx5PFN0YXRpY3NCYXNlQ29pbj4pOiBCYXNlQ29pbiB7XG4gICAgcmV0dXJuIG5ldyBTdWkoYml0Z28sIHN0YXRpY3NDb2luKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGYWN0b3IgYmV0d2VlbiB0aGUgY29pbidzIGJhc2UgdW5pdCBhbmQgaXRzIHNtYWxsZXN0IHN1YmRpdmlzb25cbiAgICovXG4gIHB1YmxpYyBnZXRCYXNlRmFjdG9yKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIDFlOTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRDaGFpbigpOiBzdHJpbmcge1xuICAgIHJldHVybiAnc3VpJztcbiAgfVxuXG4gIHB1YmxpYyBnZXRGYW1pbHkoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gJ3N1aSc7XG4gIH1cblxuICBwdWJsaWMgZ2V0RnVsbE5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gJ1N1aSc7XG4gIH1cblxuICAvKiogQGluaGVyaXREb2MgKi9cbiAgc3VwcG9ydHNUc3MoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBnZXRNUENBbGdvcml0aG0oKTogTVBDQWxnb3JpdGhtIHtcbiAgICByZXR1cm4gJ2VkZHNhJztcbiAgfVxuXG4gIGFsbG93c0FjY291bnRDb25zb2xpZGF0aW9ucygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIGFzeW5jIHZlcmlmeVRyYW5zYWN0aW9uKHBhcmFtczogVmVyaWZ5VHJhbnNhY3Rpb25PcHRpb25zKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgbGV0IHRvdGFsQW1vdW50ID0gbmV3IEJpZ051bWJlcigwKTtcbiAgICBjb25zdCBjb2luQ29uZmlnID0gY29pbnMuZ2V0KHRoaXMuZ2V0Q2hhaW4oKSk7XG4gICAgY29uc3QgeyB0eFByZWJ1aWxkOiB0eFByZWJ1aWxkLCB0eFBhcmFtczogdHhQYXJhbXMgfSA9IHBhcmFtcztcbiAgICBjb25zdCB0cmFuc2FjdGlvbiA9IG5ldyBUcmFuc2ZlclRyYW5zYWN0aW9uKGNvaW5Db25maWcpO1xuICAgIGNvbnN0IHJhd1R4ID0gdHhQcmVidWlsZC50eEhleDtcbiAgICBpZiAoIXJhd1R4KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ21pc3NpbmcgcmVxdWlyZWQgdHggcHJlYnVpbGQgcHJvcGVydHkgdHhIZXgnKTtcbiAgICB9XG5cbiAgICB0cmFuc2FjdGlvbi5mcm9tUmF3VHJhbnNhY3Rpb24oQnVmZmVyLmZyb20ocmF3VHgsICdoZXgnKS50b1N0cmluZygnYmFzZTY0JykpO1xuICAgIGNvbnN0IGV4cGxhaW5lZFR4ID0gdHJhbnNhY3Rpb24uZXhwbGFpblRyYW5zYWN0aW9uKCk7XG5cbiAgICBpZiAodHhQYXJhbXMucmVjaXBpZW50cyAmJiB0eFBhcmFtcy5yZWNpcGllbnRzLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IGZpbHRlcmVkUmVjaXBpZW50cyA9IHR4UGFyYW1zLnJlY2lwaWVudHM/Lm1hcCgocmVjaXBpZW50KSA9PiB7XG4gICAgICAgIGNvbnN0IGZpbHRlcmVkUmVjaXBpZW50ID0gXy5waWNrKHJlY2lwaWVudCwgWydhZGRyZXNzJywgJ2Ftb3VudCddKTtcbiAgICAgICAgZmlsdGVyZWRSZWNpcGllbnQuYW1vdW50ID0gbmV3IEJpZ051bWJlcihmaWx0ZXJlZFJlY2lwaWVudC5hbW91bnQpLnRvRml4ZWQoKTtcbiAgICAgICAgcmV0dXJuIGZpbHRlcmVkUmVjaXBpZW50O1xuICAgICAgfSk7XG4gICAgICBjb25zdCBmaWx0ZXJlZE91dHB1dHMgPSBleHBsYWluZWRUeC5vdXRwdXRzLm1hcCgob3V0cHV0KSA9PiB7XG4gICAgICAgIGNvbnN0IGZpbHRlcmVkT3V0cHV0ID0gXy5waWNrKG91dHB1dCwgWydhZGRyZXNzJywgJ2Ftb3VudCddKTtcbiAgICAgICAgZmlsdGVyZWRPdXRwdXQuYW1vdW50ID0gbmV3IEJpZ051bWJlcihmaWx0ZXJlZE91dHB1dC5hbW91bnQpLnRvRml4ZWQoKTtcbiAgICAgICAgcmV0dXJuIGZpbHRlcmVkT3V0cHV0O1xuICAgICAgfSk7XG5cbiAgICAgIGlmICghXy5pc0VxdWFsKGZpbHRlcmVkT3V0cHV0cywgZmlsdGVyZWRSZWNpcGllbnRzKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1R4IG91dHB1dHMgZG9lcyBub3QgbWF0Y2ggd2l0aCBleHBlY3RlZCB0eFBhcmFtcyByZWNpcGllbnRzJyk7XG4gICAgICB9XG4gICAgICBmb3IgKGNvbnN0IHJlY2lwaWVudHMgb2YgdHhQYXJhbXMucmVjaXBpZW50cykge1xuICAgICAgICB0b3RhbEFtb3VudCA9IHRvdGFsQW1vdW50LnBsdXMocmVjaXBpZW50cy5hbW91bnQpO1xuICAgICAgfVxuICAgICAgaWYgKCF0b3RhbEFtb3VudC5pc0VxdWFsVG8oZXhwbGFpbmVkVHgub3V0cHV0QW1vdW50KSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1R4IHRvdGFsIGFtb3VudCBkb2VzIG5vdCBtYXRjaCB3aXRoIGV4cGVjdGVkIHRvdGFsIGFtb3VudCBmaWVsZCcpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIGFzeW5jIGlzV2FsbGV0QWRkcmVzcyhwYXJhbXM6IFRzc1ZlcmlmeUFkZHJlc3NPcHRpb25zKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgY29uc3QgeyBrZXljaGFpbnMsIGFkZHJlc3M6IG5ld0FkZHJlc3MsIGluZGV4IH0gPSBwYXJhbXM7XG5cbiAgICBpZiAoIXRoaXMuaXNWYWxpZEFkZHJlc3MobmV3QWRkcmVzcykpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkQWRkcmVzc0Vycm9yKGBpbnZhbGlkIGFkZHJlc3M6ICR7bmV3QWRkcmVzc31gKTtcbiAgICB9XG5cbiAgICBpZiAoIWtleWNoYWlucykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdtaXNzaW5nIHJlcXVpcmVkIHBhcmFtIGtleWNoYWlucycpO1xuICAgIH1cblxuICAgIGZvciAoY29uc3Qga2V5Y2hhaW4gb2Yga2V5Y2hhaW5zKSB7XG4gICAgICBjb25zdCBNUEMgPSBhd2FpdCBFRERTQU1ldGhvZHMuZ2V0SW5pdGlhbGl6ZWRNcGNJbnN0YW5jZSgpO1xuICAgICAgY29uc3QgY29tbW9uS2V5Y2hhaW4gPSBrZXljaGFpbi5jb21tb25LZXljaGFpbiBhcyBzdHJpbmc7XG5cbiAgICAgIGNvbnN0IGRlcml2YXRpb25QYXRoID0gJ20vJyArIGluZGV4O1xuICAgICAgY29uc3QgZGVyaXZlZFB1YmxpY0tleSA9IE1QQy5kZXJpdmVVbmhhcmRlbmVkKGNvbW1vbktleWNoYWluLCBkZXJpdmF0aW9uUGF0aCkuc2xpY2UoMCwgNjQpO1xuICAgICAgY29uc3QgZXhwZWN0ZWRBZGRyZXNzID0gdGhpcy5nZXRBZGRyZXNzRnJvbVB1YmxpY0tleShkZXJpdmVkUHVibGljS2V5KTtcblxuICAgICAgaWYgKG5ld0FkZHJlc3MgIT09IGV4cGVjdGVkQWRkcmVzcykge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBhc3luYyBwYXJzZVRyYW5zYWN0aW9uKHBhcmFtczogU3VpUGFyc2VUcmFuc2FjdGlvbk9wdGlvbnMpOiBQcm9taXNlPFN1aVBhcnNlZFRyYW5zYWN0aW9uPiB7XG4gICAgY29uc3QgdHJhbnNhY3Rpb25FeHBsYW5hdGlvbiA9IGF3YWl0IHRoaXMuZXhwbGFpblRyYW5zYWN0aW9uKHsgdHhIZXg6IHBhcmFtcy50eEhleCB9KTtcblxuICAgIGlmICghdHJhbnNhY3Rpb25FeHBsYW5hdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIHRyYW5zYWN0aW9uJyk7XG4gICAgfVxuXG4gICAgY29uc3Qgc3VpVHJhbnNhY3Rpb24gPSB0cmFuc2FjdGlvbkV4cGxhbmF0aW9uIGFzIFN1aVRyYW5zYWN0aW9uRXhwbGFuYXRpb247XG4gICAgaWYgKHN1aVRyYW5zYWN0aW9uLm91dHB1dHMubGVuZ3RoIDw9IDApIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGlucHV0czogW10sXG4gICAgICAgIG91dHB1dHM6IFtdLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICBjb25zdCBzZW5kZXJBZGRyZXNzID0gc3VpVHJhbnNhY3Rpb24ub3V0cHV0c1swXS5hZGRyZXNzO1xuICAgIGNvbnN0IGZlZUFtb3VudCA9IG5ldyBCaWdOdW1iZXIoc3VpVHJhbnNhY3Rpb24uZmVlLmZlZSA9PT0gJycgPyAnMCcgOiBzdWlUcmFuc2FjdGlvbi5mZWUuZmVlKTtcblxuICAgIC8vIGFzc3VtZSAxIHNlbmRlciwgd2hvIGlzIGFsc28gdGhlIGZlZSBwYXllclxuICAgIGNvbnN0IGlucHV0cyA9IFtcbiAgICAgIHtcbiAgICAgICAgYWRkcmVzczogc2VuZGVyQWRkcmVzcyxcbiAgICAgICAgYW1vdW50OiBuZXcgQmlnTnVtYmVyKHN1aVRyYW5zYWN0aW9uLm91dHB1dEFtb3VudCkucGx1cyhmZWVBbW91bnQpLnRvRml4ZWQoKSxcbiAgICAgIH0sXG4gICAgXTtcblxuICAgIGNvbnN0IG91dHB1dHM6IFRyYW5zYWN0aW9uT3V0cHV0W10gPSBzdWlUcmFuc2FjdGlvbi5vdXRwdXRzLm1hcCgob3V0cHV0KSA9PiB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBhZGRyZXNzOiBvdXRwdXQuYWRkcmVzcyxcbiAgICAgICAgYW1vdW50OiBuZXcgQmlnTnVtYmVyKG91dHB1dC5hbW91bnQpLnRvRml4ZWQoKSxcbiAgICAgIH07XG4gICAgfSk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgaW5wdXRzLFxuICAgICAgb3V0cHV0cyxcbiAgICB9O1xuICB9XG5cbiAgZ2VuZXJhdGVLZXlQYWlyKHNlZWQ/OiBCdWZmZXIpOiBLZXlQYWlyIHtcbiAgICBjb25zdCBrZXlQYWlyID0gc2VlZCA/IG5ldyBTdWlLZXlQYWlyKHsgc2VlZCB9KSA6IG5ldyBTdWlLZXlQYWlyKCk7XG4gICAgY29uc3Qga2V5cyA9IGtleVBhaXIuZ2V0S2V5cygpO1xuICAgIGlmICgha2V5cy5wcnYpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTWlzc2luZyBwcnYgaW4ga2V5IGdlbmVyYXRpb24uJyk7XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICBwdWI6IGtleXMucHViLFxuICAgICAgcHJ2OiBrZXlzLnBydixcbiAgICB9O1xuICB9XG5cbiAgaXNWYWxpZFB1YihfOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ01ldGhvZCBub3QgaW1wbGVtZW50ZWQuJyk7XG4gIH1cblxuICBpc1ZhbGlkUHJ2KF86IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHRocm93IG5ldyBFcnJvcignTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC4nKTtcbiAgfVxuXG4gIGlzVmFsaWRBZGRyZXNzKGFkZHJlc3M6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB1dGlscy5pc1ZhbGlkQWRkcmVzcyhhZGRyZXNzKTtcbiAgfVxuXG4gIHNpZ25UcmFuc2FjdGlvbihfOiBTaWduVHJhbnNhY3Rpb25PcHRpb25zKTogUHJvbWlzZTxTaWduZWRUcmFuc2FjdGlvbj4ge1xuICAgIHRocm93IG5ldyBFcnJvcignTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC4nKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFeHBsYWluIGEgU3VpIHRyYW5zYWN0aW9uXG4gICAqIEBwYXJhbSBwYXJhbXNcbiAgICovXG4gIGFzeW5jIGV4cGxhaW5UcmFuc2FjdGlvbihwYXJhbXM6IEV4cGxhaW5UcmFuc2FjdGlvbk9wdGlvbnMpOiBQcm9taXNlPFN1aVRyYW5zYWN0aW9uRXhwbGFuYXRpb24+IHtcbiAgICBjb25zdCBmYWN0b3J5ID0gdGhpcy5nZXRCdWlsZGVyKCk7XG4gICAgbGV0IHJlYnVpbHRUcmFuc2FjdGlvbjogQmFzZVRyYW5zYWN0aW9uO1xuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHRyYW5zYWN0aW9uQnVpbGRlciA9IGZhY3RvcnkuZnJvbShCdWZmZXIuZnJvbShwYXJhbXMudHhIZXgsICdoZXgnKS50b1N0cmluZygnYmFzZTY0JykpO1xuICAgICAgcmVidWlsdFRyYW5zYWN0aW9uID0gYXdhaXQgdHJhbnNhY3Rpb25CdWlsZGVyLmJ1aWxkKCk7XG4gICAgfSBjYXRjaCB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgdHJhbnNhY3Rpb24nKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVidWlsdFRyYW5zYWN0aW9uLmV4cGxhaW5UcmFuc2FjdGlvbigpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRCdWlsZGVyKCk6IFRyYW5zYWN0aW9uQnVpbGRlckZhY3Rvcnkge1xuICAgIHJldHVybiBuZXcgVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeShjb2lucy5nZXQodGhpcy5nZXRDaGFpbigpKSk7XG4gIH1cblxuICBwcml2YXRlIGdldEFkZHJlc3NGcm9tUHVibGljS2V5KGRlcml2ZWRQdWJsaWNLZXk6IHN0cmluZykge1xuICAgIC8vIFRPRE8oQkctNTkwMTYpIHJlcGxhY2Ugd2l0aCBhY2NvdW50IGxpYiBpbXBsZW1lbnRhdGlvblxuICAgIHJldHVybiB1dGlscy5nZXRBZGRyZXNzRnJvbVB1YmxpY0tleShkZXJpdmVkUHVibGljS2V5KTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdERvYyAqL1xuICBhc3luYyBnZXRTaWduYWJsZVBheWxvYWQoc2VyaWFsaXplZFR4OiBzdHJpbmcpOiBQcm9taXNlPEJ1ZmZlcj4ge1xuICAgIGNvbnN0IGZhY3RvcnkgPSB0aGlzLmdldEJ1aWxkZXIoKTtcbiAgICBjb25zdCByZWJ1aWx0VHJhbnNhY3Rpb24gPSBhd2FpdCBmYWN0b3J5LmZyb20oc2VyaWFsaXplZFR4KS5idWlsZCgpO1xuICAgIHJldHVybiByZWJ1aWx0VHJhbnNhY3Rpb24uc2lnbmFibGVQYXlsb2FkO1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldFB1YmxpY05vZGVVcmwoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gRW52aXJvbm1lbnRzW3RoaXMuYml0Z28uZ2V0RW52KCldLnN1aU5vZGVVcmw7XG4gIH1cblxuICBwcm90ZWN0ZWQgYXN5bmMgZ2V0QmFsYW5jZShvd25lcjogc3RyaW5nLCBjb2luVHlwZT86IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgY29uc3QgdXJsID0gdGhpcy5nZXRQdWJsaWNOb2RlVXJsKCk7XG4gICAgcmV0dXJuIGF3YWl0IHV0aWxzLmdldEJhbGFuY2UodXJsLCBvd25lciwgY29pblR5cGUpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIGdldElucHV0Q29pbnMob3duZXI6IHN0cmluZywgY29pblR5cGU/OiBzdHJpbmcpOiBQcm9taXNlPFN1aU9iamVjdEluZm9bXT4ge1xuICAgIGNvbnN0IHVybCA9IHRoaXMuZ2V0UHVibGljTm9kZVVybCgpO1xuICAgIHJldHVybiBhd2FpdCB1dGlscy5nZXRJbnB1dENvaW5zKHVybCwgb3duZXIsIGNvaW5UeXBlKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyBnZXRGZWVFc3RpbWF0ZSh0eEhleDogc3RyaW5nKTogUHJvbWlzZTxCaWdOdW1iZXI+IHtcbiAgICBjb25zdCB1cmwgPSB0aGlzLmdldFB1YmxpY05vZGVVcmwoKTtcbiAgICByZXR1cm4gYXdhaXQgdXRpbHMuZ2V0RmVlRXN0aW1hdGUodXJsLCB0eEhleCk7XG4gIH1cblxuICAvKipcbiAgICogQnVpbGRzIGEgZnVuZHMgcmVjb3ZlcnkgdHJhbnNhY3Rpb24gd2l0aG91dCBCaXRHb1xuICAgKiBAcGFyYW0gcGFyYW1zXG4gICAqL1xuICBhc3luYyByZWNvdmVyKHBhcmFtczogU3VpUmVjb3ZlcnlPcHRpb25zKTogUHJvbWlzZTxTdWlSZWNvdmVyeVR4PiB7XG4gICAgaWYgKCFwYXJhbXMuYml0Z29LZXkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignbWlzc2luZyBiaXRnb0tleScpO1xuICAgIH1cbiAgICBpZiAoIXBhcmFtcy5yZWNvdmVyeURlc3RpbmF0aW9uIHx8ICF0aGlzLmlzVmFsaWRBZGRyZXNzKHBhcmFtcy5yZWNvdmVyeURlc3RpbmF0aW9uKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdpbnZhbGlkIHJlY292ZXJ5RGVzdGluYXRpb24nKTtcbiAgICB9XG5cbiAgICBjb25zdCBzdGFydElkeCA9IHV0aWxzLnZhbGlkYXRlTm9uTmVnYXRpdmVOdW1iZXIoXG4gICAgICAwLFxuICAgICAgJ0ludmFsaWQgc3RhcnRpbmcgaW5kZXggdG8gc2NhbiBmb3IgYWRkcmVzc2VzJyxcbiAgICAgIHBhcmFtcy5zdGFydGluZ1NjYW5JbmRleFxuICAgICk7XG4gICAgY29uc3QgbnVtSXRlcmF0aW9ucyA9IHV0aWxzLnZhbGlkYXRlTm9uTmVnYXRpdmVOdW1iZXIoMjAsICdJbnZhbGlkIHNjYW5uaW5nIGZhY3RvcicsIHBhcmFtcy5zY2FuKTtcbiAgICBjb25zdCBlbmRJZHggPSBzdGFydElkeCArIG51bUl0ZXJhdGlvbnM7XG4gICAgY29uc3QgYml0Z29LZXkgPSBwYXJhbXMuYml0Z29LZXkucmVwbGFjZSgvXFxzL2csICcnKTtcbiAgICBjb25zdCBpc1Vuc2lnbmVkU3dlZXAgPSAhcGFyYW1zLnVzZXJLZXkgJiYgIXBhcmFtcy5iYWNrdXBLZXkgJiYgIXBhcmFtcy53YWxsZXRQYXNzcGhyYXNlO1xuICAgIGNvbnN0IE1QQyA9IGF3YWl0IEVERFNBTWV0aG9kcy5nZXRJbml0aWFsaXplZE1wY0luc3RhbmNlKCk7XG5cbiAgICBmb3IgKGxldCBpZHggPSBzdGFydElkeDsgaWR4IDwgZW5kSWR4OyBpZHgrKykge1xuICAgICAgY29uc3QgZGVyaXZhdGlvblBhdGggPSBgbS8ke2lkeH1gO1xuICAgICAgY29uc3QgZGVyaXZlZFB1YmxpY0tleSA9IE1QQy5kZXJpdmVVbmhhcmRlbmVkKGJpdGdvS2V5LCBkZXJpdmF0aW9uUGF0aCkuc2xpY2UoMCwgNjQpO1xuICAgICAgY29uc3Qgc2VuZGVyQWRkcmVzcyA9IHRoaXMuZ2V0QWRkcmVzc0Zyb21QdWJsaWNLZXkoZGVyaXZlZFB1YmxpY0tleSk7XG4gICAgICBsZXQgYXZhaWxhYmxlQmFsYW5jZSA9IG5ldyBCaWdOdW1iZXIoMCk7XG4gICAgICB0cnkge1xuICAgICAgICBhdmFpbGFibGVCYWxhbmNlID0gbmV3IEJpZ051bWJlcihhd2FpdCB0aGlzLmdldEJhbGFuY2Uoc2VuZGVyQWRkcmVzcykpO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIGlmIChhdmFpbGFibGVCYWxhbmNlLnRvTnVtYmVyKCkgPD0gMCkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIGxldCBuZXRBbW91bnQgPSBhdmFpbGFibGVCYWxhbmNlLm1pbnVzKE1BWF9HQVNfQlVER0VUKTtcbiAgICAgIGlmIChuZXRBbW91bnQudG9OdW1iZXIoKSA8PSAwKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICBgRm91bmQgYWRkcmVzcyAke3NlbmRlckFkZHJlc3N9IHdpdGggbm9uLXplcm8gZnVuZCBidXQgZnVuZCBpcyBpbnN1ZmZpY2llbnQgdG8gc3VwcG9ydCBhIHJlY292ZXJ5IGAgK1xuICAgICAgICAgICAgYHRyYW5zYWN0aW9uLiBQbGVhc2Ugc3RhcnQgdGhlIG5leHQgc2NhbiBhdCBhZGRyZXNzIGluZGV4ICR7aWR4ICsgMX0uYFxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICBsZXQgaW5wdXRDb2lucyA9IGF3YWl0IHRoaXMuZ2V0SW5wdXRDb2lucyhzZW5kZXJBZGRyZXNzKTtcbiAgICAgIGlucHV0Q29pbnNcbiAgICAgICAgLmZpbHRlcigoY29pbikgPT4gY29pbi5iYWxhbmNlICE9PSB1bmRlZmluZWQpXG4gICAgICAgIC5zb3J0KChhLCBiKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGIuYmFsYW5jZS5taW51cyhhLmJhbGFuY2UpLnRvTnVtYmVyKCk7XG4gICAgICAgIH0pO1xuICAgICAgaWYgKGlucHV0Q29pbnMubGVuZ3RoID4gTUFYX09CSkVDVF9MSU1JVCkge1xuICAgICAgICBpbnB1dENvaW5zID0gaW5wdXRDb2lucy5zbGljZSgwLCBNQVhfT0JKRUNUX0xJTUlUKTtcbiAgICAgICAgbmV0QW1vdW50ID0gaW5wdXRDb2lucy5yZWR1Y2UoKGFjYywgb2JqKSA9PiBhY2MucGx1cyhvYmouYmFsYW5jZSksIG5ldyBCaWdOdW1iZXIoMCkpO1xuICAgICAgICBuZXRBbW91bnQgPSBuZXRBbW91bnQubWludXMoTUFYX0dBU19CVURHRVQpO1xuICAgICAgfVxuICAgICAgaW5wdXRDb2lucyA9IGlucHV0Q29pbnMubWFwKChvYmplY3Q6IGFueSkgPT4ge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGNvaW5UeXBlOiBvYmplY3QuY29pblR5cGUsXG4gICAgICAgICAgb2JqZWN0SWQ6IG9iamVjdC5jb2luT2JqZWN0SWQsXG4gICAgICAgICAgdmVyc2lvbjogb2JqZWN0LnZlcnNpb24sXG4gICAgICAgICAgZGlnZXN0OiBvYmplY3QuZGlnZXN0LFxuICAgICAgICAgIGJhbGFuY2U6IG9iamVjdC5iYWxhbmNlLFxuICAgICAgICB9O1xuICAgICAgfSk7XG5cbiAgICAgIGNvbnN0IHJlY2lwaWVudHMgPSBbXG4gICAgICAgIHtcbiAgICAgICAgICBhZGRyZXNzOiBwYXJhbXMucmVjb3ZlcnlEZXN0aW5hdGlvbixcbiAgICAgICAgICBhbW91bnQ6IG5ldEFtb3VudC50b1N0cmluZygpLFxuICAgICAgICB9LFxuICAgICAgXTtcblxuICAgICAgLy8gZmlyc3QgYnVpbGQgdGhlIHVuc2lnbmVkIHR4blxuICAgICAgY29uc3QgZmFjdG9yeSA9IG5ldyBUcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5KGNvaW5zLmdldCh0aGlzLmdldENoYWluKCkpKTtcbiAgICAgIGNvbnN0IHR4QnVpbGRlciA9IGZhY3RvcnlcbiAgICAgICAgLmdldFRyYW5zZmVyQnVpbGRlcigpXG4gICAgICAgIC50eXBlKFN1aVRyYW5zYWN0aW9uVHlwZS5UcmFuc2ZlcilcbiAgICAgICAgLnNlbmRlcihzZW5kZXJBZGRyZXNzKVxuICAgICAgICAuc2VuZChyZWNpcGllbnRzKVxuICAgICAgICAuZ2FzRGF0YSh7XG4gICAgICAgICAgb3duZXI6IHNlbmRlckFkZHJlc3MsXG4gICAgICAgICAgcHJpY2U6IERFRkFVTFRfR0FTX1BSSUNFLFxuICAgICAgICAgIGJ1ZGdldDogTUFYX0dBU19CVURHRVQsXG4gICAgICAgICAgcGF5bWVudDogaW5wdXRDb2lucyxcbiAgICAgICAgfSk7XG5cbiAgICAgIGNvbnN0IHRlbXBUeCA9IChhd2FpdCB0eEJ1aWxkZXIuYnVpbGQoKSkgYXMgVHJhbnNmZXJUcmFuc2FjdGlvbjtcbiAgICAgIGNvbnN0IGZlZUVzdGltYXRlID0gYXdhaXQgdGhpcy5nZXRGZWVFc3RpbWF0ZSh0ZW1wVHgudG9Ccm9hZGNhc3RGb3JtYXQoKSk7XG4gICAgICBjb25zdCBnYXNCdWRnZXQgPSBNYXRoLnRydW5jKGZlZUVzdGltYXRlLnRvTnVtYmVyKCkgKiBERUZBVUxUX0dBU19PVkVSSEVBRCk7XG4gICAgICB0eEJ1aWxkZXIuZ2FzRGF0YSh7XG4gICAgICAgIG93bmVyOiBzZW5kZXJBZGRyZXNzLFxuICAgICAgICBwcmljZTogREVGQVVMVF9HQVNfUFJJQ0UsXG4gICAgICAgIGJ1ZGdldDogZ2FzQnVkZ2V0LFxuICAgICAgICBwYXltZW50OiBpbnB1dENvaW5zLFxuICAgICAgfSk7XG5cbiAgICAgIGNvbnN0IHN1aVJlY292ZXJ5VHg6IFN1aVJlY292ZXJ5VHggPSB7XG4gICAgICAgIHNjYW5JbmRleDogaWR4LFxuICAgICAgICByZWNvdmVyeUFtb3VudDogbmV0QW1vdW50LnRvU3RyaW5nKCksXG4gICAgICAgIHNlcmlhbGl6ZWRUeDogJycsXG4gICAgICB9O1xuICAgICAgbGV0IHR4OiBUcmFuc2ZlclRyYW5zYWN0aW9uO1xuICAgICAgaWYgKGlzVW5zaWduZWRTd2VlcCkge1xuICAgICAgICB0eCA9IChhd2FpdCB0eEJ1aWxkZXIuYnVpbGQoKSkgYXMgVHJhbnNmZXJUcmFuc2FjdGlvbjtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGF3YWl0IHRoaXMuc2lnblJlY292ZXJ5VHJhbnNhY3Rpb24odHhCdWlsZGVyLCBwYXJhbXMsIGRlcml2YXRpb25QYXRoLCBkZXJpdmVkUHVibGljS2V5KTtcbiAgICAgICAgdHggPSAoYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCkpIGFzIFRyYW5zZmVyVHJhbnNhY3Rpb247XG4gICAgICAgIHN1aVJlY292ZXJ5VHguc2lnbmF0dXJlID0gQnVmZmVyLmZyb20odHguc2VyaWFsaXplZFNpZykudG9TdHJpbmcoJ2Jhc2U2NCcpO1xuICAgICAgfVxuXG4gICAgICBzdWlSZWNvdmVyeVR4LnNlcmlhbGl6ZWRUeCA9IHR4LnRvQnJvYWRjYXN0Rm9ybWF0KCk7XG4gICAgICByZXR1cm4gc3VpUmVjb3ZlcnlUeDtcbiAgICB9XG5cbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0RpZCBub3QgZmluZCBhbiBhZGRyZXNzIHdpdGggZnVuZHMgdG8gcmVjb3ZlcicpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBzaWduUmVjb3ZlcnlUcmFuc2FjdGlvbihcbiAgICB0eEJ1aWxkZXI6IFRyYW5zZmVyQnVpbGRlcixcbiAgICBwYXJhbXM6IFN1aVJlY292ZXJ5T3B0aW9ucyxcbiAgICBkZXJpdmF0aW9uUGF0aDogc3RyaW5nLFxuICAgIGRlcml2ZWRQdWJsaWNLZXk6IHN0cmluZ1xuICApIHtcbiAgICAvLyBUT0RPKEJHLTUxMDkyKTogVGhpcyBsb29rcyBsaWtlIGEgY29tbW9uIHBhcnQgd2hpY2ggY2FuIGJlIGV4dHJhY3RlZCBvdXQgdG9vXG4gICAgY29uc3QgdW5zaWduZWRUeCA9IChhd2FpdCB0eEJ1aWxkZXIuYnVpbGQoKSkgYXMgVHJhbnNmZXJUcmFuc2FjdGlvbjtcbiAgICBpZiAoIXBhcmFtcy51c2VyS2V5KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ21pc3NpbmcgdXNlcktleScpO1xuICAgIH1cbiAgICBpZiAoIXBhcmFtcy5iYWNrdXBLZXkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignbWlzc2luZyBiYWNrdXBLZXknKTtcbiAgICB9XG4gICAgaWYgKCFwYXJhbXMud2FsbGV0UGFzc3BocmFzZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdtaXNzaW5nIHdhbGxldCBwYXNzcGhyYXNlJyk7XG4gICAgfVxuXG4gICAgLy8gQ2xlYW4gdXAgd2hpdGVzcGFjZSBmcm9tIGVudGVyZWQgdmFsdWVzXG4gICAgY29uc3QgdXNlcktleSA9IHBhcmFtcy51c2VyS2V5LnJlcGxhY2UoL1xccy9nLCAnJyk7XG4gICAgY29uc3QgYmFja3VwS2V5ID0gcGFyYW1zLmJhY2t1cEtleS5yZXBsYWNlKC9cXHMvZywgJycpO1xuXG4gICAgLy8gRGVjcnlwdCBwcml2YXRlIGtleXMgZnJvbSBLZXlDYXJkIHZhbHVlc1xuICAgIGxldCB1c2VyUHJ2OiBzdHJpbmc7XG4gICAgdHJ5IHtcbiAgICAgIHVzZXJQcnYgPSB0aGlzLmJpdGdvLmRlY3J5cHQoe1xuICAgICAgICBpbnB1dDogdXNlcktleSxcbiAgICAgICAgcGFzc3dvcmQ6IHBhcmFtcy53YWxsZXRQYXNzcGhyYXNlLFxuICAgICAgfSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBFcnJvciBkZWNyeXB0aW5nIHVzZXIga2V5Y2hhaW46ICR7ZS5tZXNzYWdlfWApO1xuICAgIH1cbiAgICAvKiogVE9ETyBCRy01MjQxOSBJbXBsZW1lbnQgQ29kZWMgZm9yIHBhcnNpbmcgKi9cbiAgICBjb25zdCB1c2VyU2lnbmluZ01hdGVyaWFsID0gSlNPTi5wYXJzZSh1c2VyUHJ2KSBhcyBFRERTQU1ldGhvZFR5cGVzLlVzZXJTaWduaW5nTWF0ZXJpYWw7XG5cbiAgICBsZXQgYmFja3VwUHJ2OiBzdHJpbmc7XG4gICAgdHJ5IHtcbiAgICAgIGJhY2t1cFBydiA9IHRoaXMuYml0Z28uZGVjcnlwdCh7XG4gICAgICAgIGlucHV0OiBiYWNrdXBLZXksXG4gICAgICAgIHBhc3N3b3JkOiBwYXJhbXMud2FsbGV0UGFzc3BocmFzZSxcbiAgICAgIH0pO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgRXJyb3IgZGVjcnlwdGluZyBiYWNrdXAga2V5Y2hhaW46ICR7ZS5tZXNzYWdlfWApO1xuICAgIH1cbiAgICBjb25zdCBiYWNrdXBTaWduaW5nTWF0ZXJpYWwgPSBKU09OLnBhcnNlKGJhY2t1cFBydikgYXMgRUREU0FNZXRob2RUeXBlcy5CYWNrdXBTaWduaW5nTWF0ZXJpYWw7XG4gICAgLyogKioqKioqKioqKioqKioqKioqKioqKiBFTkQgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgICAvLyBhZGQgc2lnbmF0dXJlXG4gICAgY29uc3Qgc2lnbmF0dXJlSGV4ID0gYXdhaXQgRUREU0FNZXRob2RzLmdldFRTU1NpZ25hdHVyZShcbiAgICAgIHVzZXJTaWduaW5nTWF0ZXJpYWwsXG4gICAgICBiYWNrdXBTaWduaW5nTWF0ZXJpYWwsXG4gICAgICBkZXJpdmF0aW9uUGF0aCxcbiAgICAgIHVuc2lnbmVkVHhcbiAgICApO1xuICAgIHR4QnVpbGRlci5hZGRTaWduYXR1cmUoeyBwdWI6IGRlcml2ZWRQdWJsaWNLZXkgfSwgc2lnbmF0dXJlSGV4KTtcbiAgfVxufVxuIl19
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bitgo-beta/sdk-coin-sui",
3
- "version": "3.0.3-beta.433",
3
+ "version": "3.0.3-beta.434",
4
4
  "description": "BitGo SDK coin library for Sui",
5
5
  "main": "./dist/src/index.js",
6
6
  "types": "./dist/src/index.d.ts",
@@ -40,23 +40,24 @@
40
40
  ]
41
41
  },
42
42
  "dependencies": {
43
- "@bitgo-beta/blake2b": "3.0.4-beta.673",
44
- "@bitgo-beta/sdk-core": "8.2.1-beta.436",
45
- "@bitgo-beta/sdk-lib-mpc": "8.2.0-beta.428",
46
- "@bitgo-beta/statics": "15.1.1-beta.439",
43
+ "@bitgo-beta/blake2b": "3.0.4-beta.674",
44
+ "@bitgo-beta/sdk-core": "8.2.1-beta.437",
45
+ "@bitgo-beta/sdk-lib-mpc": "8.2.0-beta.429",
46
+ "@bitgo-beta/statics": "15.1.1-beta.440",
47
47
  "@mysten/bcs": "^0.7.0",
48
48
  "bignumber.js": "^9.0.0",
49
49
  "bs58": "^4.0.1",
50
50
  "lodash": "^4.17.21",
51
+ "superagent": "3.8.2",
51
52
  "superstruct": "^1.0.3",
52
53
  "tweetnacl": "^1.0.3"
53
54
  },
54
55
  "devDependencies": {
55
- "@bitgo-beta/sdk-api": "1.10.1-beta.435",
56
+ "@bitgo-beta/sdk-api": "1.10.1-beta.436",
56
57
  "@bitgo-beta/sdk-test": "^8.0.33",
57
58
  "@types/lodash": "^4.14.183",
58
59
  "axios": "^1.4.0",
59
60
  "debug": "^4.3.4"
60
61
  },
61
- "gitHead": "40e4b13f4e23feadda38e80d923a2308b10c3169"
62
+ "gitHead": "e6f5f297a4720ef4446dad1e55e8d0712cd4b47a"
62
63
  }