@bitgo-beta/sdk-coin-sui 3.0.3-beta.31 → 3.0.3-beta.310

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (74) hide show
  1. package/CHANGELOG.md +463 -0
  2. package/dist/src/index.js +6 -2
  3. package/dist/src/lib/compareTransactionBlocks.d.ts +2 -3
  4. package/dist/src/lib/compareTransactionBlocks.d.ts.map +1 -1
  5. package/dist/src/lib/compareTransactionBlocks.js +1 -1
  6. package/dist/src/lib/customTransaction.d.ts +57 -0
  7. package/dist/src/lib/customTransaction.d.ts.map +1 -0
  8. package/dist/src/lib/customTransaction.js +159 -0
  9. package/dist/src/lib/customTransactionBuilder.d.ts +46 -0
  10. package/dist/src/lib/customTransactionBuilder.d.ts.map +1 -0
  11. package/dist/src/lib/customTransactionBuilder.js +117 -0
  12. package/dist/src/lib/iface.d.ts +21 -4
  13. package/dist/src/lib/iface.d.ts.map +1 -1
  14. package/dist/src/lib/iface.js +14 -1
  15. package/dist/src/lib/index.d.ts +2 -0
  16. package/dist/src/lib/index.d.ts.map +1 -1
  17. package/dist/src/lib/index.js +11 -3
  18. package/dist/src/lib/keyPair.js +7 -3
  19. package/dist/src/lib/mystenlab/builder/Inputs.d.ts +1 -1
  20. package/dist/src/lib/mystenlab/builder/Inputs.d.ts.map +1 -1
  21. package/dist/src/lib/mystenlab/builder/Inputs.js +12 -12
  22. package/dist/src/lib/mystenlab/builder/TransactionBlock.d.ts +1 -1
  23. package/dist/src/lib/mystenlab/builder/TransactionBlock.js +35 -37
  24. package/dist/src/lib/mystenlab/builder/TransactionDataBlock.d.ts +1 -1
  25. package/dist/src/lib/mystenlab/builder/TransactionDataBlock.js +26 -26
  26. package/dist/src/lib/mystenlab/builder/Transactions.js +48 -48
  27. package/dist/src/lib/mystenlab/builder/bcs.js +2 -2
  28. package/dist/src/lib/mystenlab/builder/index.js +6 -2
  29. package/dist/src/lib/mystenlab/builder/serializer.js +3 -3
  30. package/dist/src/lib/mystenlab/builder/utils.js +2 -2
  31. package/dist/src/lib/mystenlab/cryptography/hash.js +2 -2
  32. package/dist/src/lib/mystenlab/framework/framework.js +15 -15
  33. package/dist/src/lib/mystenlab/framework/index.js +6 -2
  34. package/dist/src/lib/mystenlab/framework/sui-system-state.js +2 -2
  35. package/dist/src/lib/mystenlab/txn-data-serializers/type-tag-serializer.js +2 -2
  36. package/dist/src/lib/mystenlab/types/coin.js +19 -19
  37. package/dist/src/lib/mystenlab/types/common.js +16 -16
  38. package/dist/src/lib/mystenlab/types/events.js +14 -14
  39. package/dist/src/lib/mystenlab/types/index.js +6 -2
  40. package/dist/src/lib/mystenlab/types/normalized.js +37 -37
  41. package/dist/src/lib/mystenlab/types/objects.js +64 -64
  42. package/dist/src/lib/mystenlab/types/sui-bcs.d.ts.map +1 -1
  43. package/dist/src/lib/mystenlab/types/sui-bcs.js +3 -3
  44. package/dist/src/lib/mystenlab/types/transactions.d.ts +41 -41
  45. package/dist/src/lib/mystenlab/types/transactions.js +137 -137
  46. package/dist/src/lib/mystenlab/types/validator.d.ts +4 -4
  47. package/dist/src/lib/mystenlab/types/validator.js +124 -124
  48. package/dist/src/lib/stakingBuilder.d.ts +3 -3
  49. package/dist/src/lib/stakingBuilder.d.ts.map +1 -1
  50. package/dist/src/lib/stakingBuilder.js +31 -28
  51. package/dist/src/lib/stakingTransaction.d.ts +1 -0
  52. package/dist/src/lib/stakingTransaction.d.ts.map +1 -1
  53. package/dist/src/lib/stakingTransaction.js +10 -13
  54. package/dist/src/lib/transaction.d.ts +2 -0
  55. package/dist/src/lib/transaction.d.ts.map +1 -1
  56. package/dist/src/lib/transaction.js +32 -11
  57. package/dist/src/lib/transactionBuilder.js +4 -4
  58. package/dist/src/lib/transactionBuilderFactory.d.ts +4 -1
  59. package/dist/src/lib/transactionBuilderFactory.d.ts.map +1 -1
  60. package/dist/src/lib/transactionBuilderFactory.js +11 -1
  61. package/dist/src/lib/transferBuilder.js +5 -5
  62. package/dist/src/lib/transferTransaction.d.ts +1 -0
  63. package/dist/src/lib/transferTransaction.d.ts.map +1 -1
  64. package/dist/src/lib/unstakingBuilder.d.ts +4 -0
  65. package/dist/src/lib/unstakingBuilder.d.ts.map +1 -1
  66. package/dist/src/lib/unstakingBuilder.js +66 -9
  67. package/dist/src/lib/unstakingTransaction.d.ts +20 -8
  68. package/dist/src/lib/unstakingTransaction.d.ts.map +1 -1
  69. package/dist/src/lib/unstakingTransaction.js +101 -33
  70. package/dist/src/lib/utils.d.ts +14 -4
  71. package/dist/src/lib/utils.d.ts.map +1 -1
  72. package/dist/src/lib/utils.js +92 -22
  73. package/dist/src/sui.js +6 -2
  74. package/package.json +9 -8
@@ -3,132 +3,132 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.PaginatedObjectsResponse = exports.CheckpointedObjectId = exports.getMovePackageContent = exports.hasPublicTransfer = exports.getMoveObject = exports.getObjectFields = exports.getMoveObjectType = exports.isImmutableObject = exports.isSharedObject = exports.getSharedObjectInitialVersion = exports.getObjectDisplay = exports.getObjectOwner = exports.getObjectPreviousTransactionDigest = exports.getObjectType = exports.isSuiObjectResponse = exports.getObjectVersion = exports.getObjectId = exports.getObjectReference = exports.getObjectNotExistsResponse = exports.getObjectDeletedResponse = exports.getSuiObjectData = exports.SuiObjectResponse = exports.SuiObjectResponseError = exports.GetOwnedObjectsResponse = exports.ObjectStatus = exports.SuiObjectDataOptions = exports.SuiObjectData = exports.ObjectDigest = exports.MIST_PER_SUI = exports.SuiRawData = exports.SuiRawMovePackage = exports.SuiRawMoveObject = exports.SuiParsedData = exports.SuiMovePackage = exports.SuiMoveObject = exports.MovePackageContent = exports.ObjectContentFields = exports.SuiObjectInfo = exports.SuiGasData = exports.SuiObjectRef = exports.ObjectType = void 0;
4
4
  const superstruct_1 = require("superstruct");
5
5
  const common_1 = require("./common");
6
- exports.ObjectType = superstruct_1.union([superstruct_1.string(), superstruct_1.literal('package')]);
7
- exports.SuiObjectRef = superstruct_1.object({
6
+ exports.ObjectType = (0, superstruct_1.union)([(0, superstruct_1.string)(), (0, superstruct_1.literal)('package')]);
7
+ exports.SuiObjectRef = (0, superstruct_1.object)({
8
8
  /** Base64 string representing the object digest */
9
9
  digest: common_1.TransactionDigest,
10
10
  /** Hex code as string representing the object id */
11
- objectId: superstruct_1.string(),
11
+ objectId: (0, superstruct_1.string)(),
12
12
  /** Object version */
13
- version: superstruct_1.union([superstruct_1.number(), superstruct_1.string()]),
13
+ version: (0, superstruct_1.union)([(0, superstruct_1.number)(), (0, superstruct_1.string)()]),
14
14
  });
15
- exports.SuiGasData = superstruct_1.object({
16
- payment: superstruct_1.array(exports.SuiObjectRef),
15
+ exports.SuiGasData = (0, superstruct_1.object)({
16
+ payment: (0, superstruct_1.array)(exports.SuiObjectRef),
17
17
  /** Gas Object's owner */
18
- owner: superstruct_1.string(),
19
- price: superstruct_1.number(),
20
- budget: superstruct_1.number(),
18
+ owner: (0, superstruct_1.string)(),
19
+ price: (0, superstruct_1.number)(),
20
+ budget: (0, superstruct_1.number)(),
21
21
  });
22
- exports.SuiObjectInfo = superstruct_1.assign(exports.SuiObjectRef, superstruct_1.object({
23
- type: superstruct_1.string(),
22
+ exports.SuiObjectInfo = (0, superstruct_1.assign)(exports.SuiObjectRef, (0, superstruct_1.object)({
23
+ type: (0, superstruct_1.string)(),
24
24
  owner: common_1.ObjectOwner,
25
25
  previousTransaction: common_1.TransactionDigest,
26
26
  }));
27
- exports.ObjectContentFields = superstruct_1.record(superstruct_1.string(), superstruct_1.any());
28
- exports.MovePackageContent = superstruct_1.record(superstruct_1.string(), superstruct_1.string());
29
- exports.SuiMoveObject = superstruct_1.object({
27
+ exports.ObjectContentFields = (0, superstruct_1.record)((0, superstruct_1.string)(), (0, superstruct_1.any)());
28
+ exports.MovePackageContent = (0, superstruct_1.record)((0, superstruct_1.string)(), (0, superstruct_1.string)());
29
+ exports.SuiMoveObject = (0, superstruct_1.object)({
30
30
  /** Move type (e.g., "0x2::coin::Coin<0x2::sui::SUI>") */
31
- type: superstruct_1.string(),
31
+ type: (0, superstruct_1.string)(),
32
32
  /** Fields and values stored inside the Move object */
33
33
  fields: exports.ObjectContentFields,
34
- hasPublicTransfer: superstruct_1.boolean(),
34
+ hasPublicTransfer: (0, superstruct_1.boolean)(),
35
35
  });
36
- exports.SuiMovePackage = superstruct_1.object({
36
+ exports.SuiMovePackage = (0, superstruct_1.object)({
37
37
  /** A mapping from module name to disassembled Move bytecode */
38
38
  disassembled: exports.MovePackageContent,
39
39
  });
40
- exports.SuiParsedData = superstruct_1.union([
41
- superstruct_1.assign(exports.SuiMoveObject, superstruct_1.object({ dataType: superstruct_1.literal('moveObject') })),
42
- superstruct_1.assign(exports.SuiMovePackage, superstruct_1.object({ dataType: superstruct_1.literal('package') })),
40
+ exports.SuiParsedData = (0, superstruct_1.union)([
41
+ (0, superstruct_1.assign)(exports.SuiMoveObject, (0, superstruct_1.object)({ dataType: (0, superstruct_1.literal)('moveObject') })),
42
+ (0, superstruct_1.assign)(exports.SuiMovePackage, (0, superstruct_1.object)({ dataType: (0, superstruct_1.literal)('package') })),
43
43
  ]);
44
- exports.SuiRawMoveObject = superstruct_1.object({
44
+ exports.SuiRawMoveObject = (0, superstruct_1.object)({
45
45
  /** Move type (e.g., "0x2::coin::Coin<0x2::sui::SUI>") */
46
- type: superstruct_1.string(),
47
- hasPublicTransfer: superstruct_1.boolean(),
46
+ type: (0, superstruct_1.string)(),
47
+ hasPublicTransfer: (0, superstruct_1.boolean)(),
48
48
  version: common_1.SequenceNumber,
49
- bcsBytes: superstruct_1.array(superstruct_1.number()),
49
+ bcsBytes: (0, superstruct_1.array)((0, superstruct_1.number)()),
50
50
  });
51
- exports.SuiRawMovePackage = superstruct_1.object({
51
+ exports.SuiRawMovePackage = (0, superstruct_1.object)({
52
52
  id: common_1.ObjectId,
53
53
  /** A mapping from module name to Move bytecode enocded in base64*/
54
- moduleMap: superstruct_1.record(superstruct_1.string(), superstruct_1.string()),
54
+ moduleMap: (0, superstruct_1.record)((0, superstruct_1.string)(), (0, superstruct_1.string)()),
55
55
  });
56
56
  // TODO(chris): consolidate SuiRawParsedData and SuiRawObject using generics
57
- exports.SuiRawData = superstruct_1.union([
58
- superstruct_1.assign(exports.SuiMoveObject, superstruct_1.object({ dataType: superstruct_1.literal('moveObject') })),
59
- superstruct_1.assign(exports.SuiRawMovePackage, superstruct_1.object({ dataType: superstruct_1.literal('package') })),
57
+ exports.SuiRawData = (0, superstruct_1.union)([
58
+ (0, superstruct_1.assign)(exports.SuiMoveObject, (0, superstruct_1.object)({ dataType: (0, superstruct_1.literal)('moveObject') })),
59
+ (0, superstruct_1.assign)(exports.SuiRawMovePackage, (0, superstruct_1.object)({ dataType: (0, superstruct_1.literal)('package') })),
60
60
  ]);
61
61
  exports.MIST_PER_SUI = BigInt(1000000000);
62
- exports.ObjectDigest = superstruct_1.string();
63
- exports.SuiObjectData = superstruct_1.object({
62
+ exports.ObjectDigest = (0, superstruct_1.string)();
63
+ exports.SuiObjectData = (0, superstruct_1.object)({
64
64
  objectId: common_1.ObjectId,
65
65
  version: common_1.SequenceNumber,
66
66
  digest: exports.ObjectDigest,
67
67
  /**
68
68
  * Type of the object, default to be undefined unless SuiObjectDataOptions.showType is set to true
69
69
  */
70
- type: superstruct_1.optional(superstruct_1.string()),
70
+ type: (0, superstruct_1.optional)((0, superstruct_1.string)()),
71
71
  /**
72
72
  * Move object content or package content, default to be undefined unless SuiObjectDataOptions.showContent is set to true
73
73
  */
74
- content: superstruct_1.optional(exports.SuiParsedData),
74
+ content: (0, superstruct_1.optional)(exports.SuiParsedData),
75
75
  /**
76
76
  * Move object content or package content in BCS bytes, default to be undefined unless SuiObjectDataOptions.showBcs is set to true
77
77
  */
78
- bcs: superstruct_1.optional(exports.SuiRawData),
78
+ bcs: (0, superstruct_1.optional)(exports.SuiRawData),
79
79
  /**
80
80
  * The owner of this object. Default to be undefined unless SuiObjectDataOptions.showOwner is set to true
81
81
  */
82
- owner: superstruct_1.optional(common_1.ObjectOwner),
82
+ owner: (0, superstruct_1.optional)(common_1.ObjectOwner),
83
83
  /**
84
84
  * The digest of the transaction that created or last mutated this object.
85
85
  * Default to be undefined unless SuiObjectDataOptions.showPreviousTransaction is set to true
86
86
  */
87
- previousTransaction: superstruct_1.optional(common_1.TransactionDigest),
87
+ previousTransaction: (0, superstruct_1.optional)(common_1.TransactionDigest),
88
88
  /**
89
89
  * The amount of SUI we would rebate if this object gets deleted.
90
90
  * This number is re-calculated each time the object is mutated based on
91
91
  * the present storage gas price.
92
92
  * Default to be undefined unless SuiObjectDataOptions.showStorageRebate is set to true
93
93
  */
94
- storageRebate: superstruct_1.optional(superstruct_1.number()),
94
+ storageRebate: (0, superstruct_1.optional)((0, superstruct_1.number)()),
95
95
  /**
96
96
  * Display metadata for this object, default to be undefined unless SuiObjectDataOptions.showDisplay is set to true
97
97
  * This can also be None if the struct type does not have Display defined
98
98
  * See more details in https://forums.sui.io/t/nft-object-display-proposal/4872
99
99
  */
100
- display: superstruct_1.optional(superstruct_1.record(superstruct_1.string(), superstruct_1.string())),
100
+ display: (0, superstruct_1.optional)((0, superstruct_1.record)((0, superstruct_1.string)(), (0, superstruct_1.string)())),
101
101
  });
102
102
  /**
103
103
  * Config for fetching object data
104
104
  */
105
- exports.SuiObjectDataOptions = superstruct_1.object({
105
+ exports.SuiObjectDataOptions = (0, superstruct_1.object)({
106
106
  /* Whether to fetch the object type, default to be true */
107
- showType: superstruct_1.optional(superstruct_1.boolean()),
107
+ showType: (0, superstruct_1.optional)((0, superstruct_1.boolean)()),
108
108
  /* Whether to fetch the object content, default to be false */
109
- showContent: superstruct_1.optional(superstruct_1.boolean()),
109
+ showContent: (0, superstruct_1.optional)((0, superstruct_1.boolean)()),
110
110
  /* Whether to fetch the object content in BCS bytes, default to be false */
111
- showBcs: superstruct_1.optional(superstruct_1.boolean()),
111
+ showBcs: (0, superstruct_1.optional)((0, superstruct_1.boolean)()),
112
112
  /* Whether to fetch the object owner, default to be false */
113
- showOwner: superstruct_1.optional(superstruct_1.boolean()),
113
+ showOwner: (0, superstruct_1.optional)((0, superstruct_1.boolean)()),
114
114
  /* Whether to fetch the previous transaction digest, default to be false */
115
- showPreviousTransaction: superstruct_1.optional(superstruct_1.boolean()),
115
+ showPreviousTransaction: (0, superstruct_1.optional)((0, superstruct_1.boolean)()),
116
116
  /* Whether to fetch the storage rebate, default to be false */
117
- showStorageRebate: superstruct_1.optional(superstruct_1.boolean()),
117
+ showStorageRebate: (0, superstruct_1.optional)((0, superstruct_1.boolean)()),
118
118
  /* Whether to fetch the display metadata, default to be false */
119
- showDisplay: superstruct_1.optional(superstruct_1.boolean()),
119
+ showDisplay: (0, superstruct_1.optional)((0, superstruct_1.boolean)()),
120
120
  });
121
- exports.ObjectStatus = superstruct_1.union([superstruct_1.literal('Exists'), superstruct_1.literal('NotExists'), superstruct_1.literal('Deleted')]);
122
- exports.GetOwnedObjectsResponse = superstruct_1.array(exports.SuiObjectInfo);
123
- exports.SuiObjectResponseError = superstruct_1.object({
124
- tag: superstruct_1.string(),
125
- object_id: superstruct_1.optional(common_1.ObjectId),
126
- version: superstruct_1.optional(common_1.SequenceNumber),
127
- digest: superstruct_1.optional(exports.ObjectDigest),
121
+ exports.ObjectStatus = (0, superstruct_1.union)([(0, superstruct_1.literal)('Exists'), (0, superstruct_1.literal)('NotExists'), (0, superstruct_1.literal)('Deleted')]);
122
+ exports.GetOwnedObjectsResponse = (0, superstruct_1.array)(exports.SuiObjectInfo);
123
+ exports.SuiObjectResponseError = (0, superstruct_1.object)({
124
+ tag: (0, superstruct_1.string)(),
125
+ object_id: (0, superstruct_1.optional)(common_1.ObjectId),
126
+ version: (0, superstruct_1.optional)(common_1.SequenceNumber),
127
+ digest: (0, superstruct_1.optional)(exports.ObjectDigest),
128
128
  });
129
- exports.SuiObjectResponse = superstruct_1.object({
130
- data: superstruct_1.optional(exports.SuiObjectData),
131
- error: superstruct_1.optional(exports.SuiObjectResponseError),
129
+ exports.SuiObjectResponse = (0, superstruct_1.object)({
130
+ data: (0, superstruct_1.optional)(exports.SuiObjectData),
131
+ error: (0, superstruct_1.optional)(exports.SuiObjectResponseError),
132
132
  });
133
133
  /* -------------------------------------------------------------------------- */
134
134
  /* Helper functions */
@@ -218,7 +218,7 @@ function getObjectPreviousTransactionDigest(resp) {
218
218
  exports.getObjectPreviousTransactionDigest = getObjectPreviousTransactionDigest;
219
219
  function getObjectOwner(resp) {
220
220
  var _a;
221
- if (superstruct_1.is(resp, common_1.ObjectOwner)) {
221
+ if ((0, superstruct_1.is)(resp, common_1.ObjectOwner)) {
222
222
  return resp;
223
223
  }
224
224
  return (_a = getSuiObjectData(resp)) === null || _a === void 0 ? void 0 : _a.owner;
@@ -290,13 +290,13 @@ function getMovePackageContent(data) {
290
290
  return suiObject.content.disassembled;
291
291
  }
292
292
  exports.getMovePackageContent = getMovePackageContent;
293
- exports.CheckpointedObjectId = superstruct_1.object({
293
+ exports.CheckpointedObjectId = (0, superstruct_1.object)({
294
294
  objectId: common_1.ObjectId,
295
- atCheckpoint: superstruct_1.optional(superstruct_1.number()),
295
+ atCheckpoint: (0, superstruct_1.optional)((0, superstruct_1.number)()),
296
296
  });
297
- exports.PaginatedObjectsResponse = superstruct_1.object({
298
- data: superstruct_1.array(exports.SuiObjectResponse),
299
- nextCursor: superstruct_1.optional(exports.CheckpointedObjectId),
300
- hasNextPage: superstruct_1.boolean(),
297
+ exports.PaginatedObjectsResponse = (0, superstruct_1.object)({
298
+ data: (0, superstruct_1.array)(exports.SuiObjectResponse),
299
+ nextCursor: (0, superstruct_1.optional)(exports.CheckpointedObjectId),
300
+ hasNextPage: (0, superstruct_1.boolean)(),
301
301
  });
302
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JqZWN0cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvbXlzdGVubGFiL3R5cGVzL29iamVjdHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsNkNBY3FCO0FBQ3JCLHFDQUFvRjtBQUd2RSxRQUFBLFVBQVUsR0FBRyxtQkFBSyxDQUFDLENBQUMsb0JBQU0sRUFBRSxFQUFFLHFCQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBR25ELFFBQUEsWUFBWSxHQUFHLG9CQUFNLENBQUM7SUFDakMsbURBQW1EO0lBQ25ELE1BQU0sRUFBRSwwQkFBaUI7SUFDekIsb0RBQW9EO0lBQ3BELFFBQVEsRUFBRSxvQkFBTSxFQUFFO0lBQ2xCLHFCQUFxQjtJQUNyQixPQUFPLEVBQUUsbUJBQUssQ0FBQyxDQUFDLG9CQUFNLEVBQUUsRUFBRSxvQkFBTSxFQUFFLENBQUMsQ0FBQztDQUNyQyxDQUFDLENBQUM7QUFHVSxRQUFBLFVBQVUsR0FBRyxvQkFBTSxDQUFDO0lBQy9CLE9BQU8sRUFBRSxtQkFBSyxDQUFDLG9CQUFZLENBQUM7SUFDNUIseUJBQXlCO0lBQ3pCLEtBQUssRUFBRSxvQkFBTSxFQUFFO0lBQ2YsS0FBSyxFQUFFLG9CQUFNLEVBQUU7SUFDZixNQUFNLEVBQUUsb0JBQU0sRUFBRTtDQUNqQixDQUFDLENBQUM7QUFHVSxRQUFBLGFBQWEsR0FBRyxvQkFBTSxDQUNqQyxvQkFBWSxFQUNaLG9CQUFNLENBQUM7SUFDTCxJQUFJLEVBQUUsb0JBQU0sRUFBRTtJQUNkLEtBQUssRUFBRSxvQkFBVztJQUNsQixtQkFBbUIsRUFBRSwwQkFBaUI7Q0FDdkMsQ0FBQyxDQUNILENBQUM7QUFHVyxRQUFBLG1CQUFtQixHQUFHLG9CQUFNLENBQUMsb0JBQU0sRUFBRSxFQUFFLGlCQUFHLEVBQUUsQ0FBQyxDQUFDO0FBRzlDLFFBQUEsa0JBQWtCLEdBQUcsb0JBQU0sQ0FBQyxvQkFBTSxFQUFFLEVBQUUsb0JBQU0sRUFBRSxDQUFDLENBQUM7QUFHaEQsUUFBQSxhQUFhLEdBQUcsb0JBQU0sQ0FBQztJQUNsQyx5REFBeUQ7SUFDekQsSUFBSSxFQUFFLG9CQUFNLEVBQUU7SUFDZCxzREFBc0Q7SUFDdEQsTUFBTSxFQUFFLDJCQUFtQjtJQUMzQixpQkFBaUIsRUFBRSxxQkFBTyxFQUFFO0NBQzdCLENBQUMsQ0FBQztBQUdVLFFBQUEsY0FBYyxHQUFHLG9CQUFNLENBQUM7SUFDbkMsK0RBQStEO0lBQy9ELFlBQVksRUFBRSwwQkFBa0I7Q0FDakMsQ0FBQyxDQUFDO0FBR1UsUUFBQSxhQUFhLEdBQUcsbUJBQUssQ0FBQztJQUNqQyxvQkFBTSxDQUFDLHFCQUFhLEVBQUUsb0JBQU0sQ0FBQyxFQUFFLFFBQVEsRUFBRSxxQkFBTyxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNsRSxvQkFBTSxDQUFDLHNCQUFjLEVBQUUsb0JBQU0sQ0FBQyxFQUFFLFFBQVEsRUFBRSxxQkFBTyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQztDQUNqRSxDQUFDLENBQUM7QUFHVSxRQUFBLGdCQUFnQixHQUFHLG9CQUFNLENBQUM7SUFDckMseURBQXlEO0lBQ3pELElBQUksRUFBRSxvQkFBTSxFQUFFO0lBQ2QsaUJBQWlCLEVBQUUscUJBQU8sRUFBRTtJQUM1QixPQUFPLEVBQUUsdUJBQWM7SUFDdkIsUUFBUSxFQUFFLG1CQUFLLENBQUMsb0JBQU0sRUFBRSxDQUFDO0NBQzFCLENBQUMsQ0FBQztBQUdVLFFBQUEsaUJBQWlCLEdBQUcsb0JBQU0sQ0FBQztJQUN0QyxFQUFFLEVBQUUsaUJBQVE7SUFDWixtRUFBbUU7SUFDbkUsU0FBUyxFQUFFLG9CQUFNLENBQUMsb0JBQU0sRUFBRSxFQUFFLG9CQUFNLEVBQUUsQ0FBQztDQUN0QyxDQUFDLENBQUM7QUFHSCw0RUFBNEU7QUFDL0QsUUFBQSxVQUFVLEdBQUcsbUJBQUssQ0FBQztJQUM5QixvQkFBTSxDQUFDLHFCQUFhLEVBQUUsb0JBQU0sQ0FBQyxFQUFFLFFBQVEsRUFBRSxxQkFBTyxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNsRSxvQkFBTSxDQUFDLHlCQUFpQixFQUFFLG9CQUFNLENBQUMsRUFBRSxRQUFRLEVBQUUscUJBQU8sQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUM7Q0FDcEUsQ0FBQyxDQUFDO0FBR1UsUUFBQSxZQUFZLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0FBRWxDLFFBQUEsWUFBWSxHQUFHLG9CQUFNLEVBQUUsQ0FBQztBQUd4QixRQUFBLGFBQWEsR0FBRyxvQkFBTSxDQUFDO0lBQ2xDLFFBQVEsRUFBRSxpQkFBUTtJQUNsQixPQUFPLEVBQUUsdUJBQWM7SUFDdkIsTUFBTSxFQUFFLG9CQUFZO0lBQ3BCOztPQUVHO0lBQ0gsSUFBSSxFQUFFLHNCQUFRLENBQUMsb0JBQU0sRUFBRSxDQUFDO0lBQ3hCOztPQUVHO0lBQ0gsT0FBTyxFQUFFLHNCQUFRLENBQUMscUJBQWEsQ0FBQztJQUNoQzs7T0FFRztJQUNILEdBQUcsRUFBRSxzQkFBUSxDQUFDLGtCQUFVLENBQUM7SUFDekI7O09BRUc7SUFDSCxLQUFLLEVBQUUsc0JBQVEsQ0FBQyxvQkFBVyxDQUFDO0lBQzVCOzs7T0FHRztJQUNILG1CQUFtQixFQUFFLHNCQUFRLENBQUMsMEJBQWlCLENBQUM7SUFDaEQ7Ozs7O09BS0c7SUFDSCxhQUFhLEVBQUUsc0JBQVEsQ0FBQyxvQkFBTSxFQUFFLENBQUM7SUFDakM7Ozs7T0FJRztJQUNILE9BQU8sRUFBRSxzQkFBUSxDQUFDLG9CQUFNLENBQUMsb0JBQU0sRUFBRSxFQUFFLG9CQUFNLEVBQUUsQ0FBQyxDQUFDO0NBQzlDLENBQUMsQ0FBQztBQUdIOztHQUVHO0FBQ1UsUUFBQSxvQkFBb0IsR0FBRyxvQkFBTSxDQUFDO0lBQ3pDLDBEQUEwRDtJQUMxRCxRQUFRLEVBQUUsc0JBQVEsQ0FBQyxxQkFBTyxFQUFFLENBQUM7SUFDN0IsOERBQThEO0lBQzlELFdBQVcsRUFBRSxzQkFBUSxDQUFDLHFCQUFPLEVBQUUsQ0FBQztJQUNoQywyRUFBMkU7SUFDM0UsT0FBTyxFQUFFLHNCQUFRLENBQUMscUJBQU8sRUFBRSxDQUFDO0lBQzVCLDREQUE0RDtJQUM1RCxTQUFTLEVBQUUsc0JBQVEsQ0FBQyxxQkFBTyxFQUFFLENBQUM7SUFDOUIsMkVBQTJFO0lBQzNFLHVCQUF1QixFQUFFLHNCQUFRLENBQUMscUJBQU8sRUFBRSxDQUFDO0lBQzVDLDhEQUE4RDtJQUM5RCxpQkFBaUIsRUFBRSxzQkFBUSxDQUFDLHFCQUFPLEVBQUUsQ0FBQztJQUN0QyxnRUFBZ0U7SUFDaEUsV0FBVyxFQUFFLHNCQUFRLENBQUMscUJBQU8sRUFBRSxDQUFDO0NBQ2pDLENBQUMsQ0FBQztBQUdVLFFBQUEsWUFBWSxHQUFHLG1CQUFLLENBQUMsQ0FBQyxxQkFBTyxDQUFDLFFBQVEsQ0FBQyxFQUFFLHFCQUFPLENBQUMsV0FBVyxDQUFDLEVBQUUscUJBQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFHcEYsUUFBQSx1QkFBdUIsR0FBRyxtQkFBSyxDQUFDLHFCQUFhLENBQUMsQ0FBQztBQUcvQyxRQUFBLHNCQUFzQixHQUFHLG9CQUFNLENBQUM7SUFDM0MsR0FBRyxFQUFFLG9CQUFNLEVBQUU7SUFDYixTQUFTLEVBQUUsc0JBQVEsQ0FBQyxpQkFBUSxDQUFDO0lBQzdCLE9BQU8sRUFBRSxzQkFBUSxDQUFDLHVCQUFjLENBQUM7SUFDakMsTUFBTSxFQUFFLHNCQUFRLENBQUMsb0JBQVksQ0FBQztDQUMvQixDQUFDLENBQUM7QUFHVSxRQUFBLGlCQUFpQixHQUFHLG9CQUFNLENBQUM7SUFDdEMsSUFBSSxFQUFFLHNCQUFRLENBQUMscUJBQWEsQ0FBQztJQUM3QixLQUFLLEVBQUUsc0JBQVEsQ0FBQyw4QkFBc0IsQ0FBQztDQUN4QyxDQUFDLENBQUM7QUFLSCxnRkFBZ0Y7QUFDaEYsZ0ZBQWdGO0FBQ2hGLGdGQUFnRjtBQUVoRiw0RUFBNEU7QUFFNUUsU0FBZ0IsZ0JBQWdCLENBQUMsSUFBdUI7SUFDdEQsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDO0FBQ25CLENBQUM7QUFGRCw0Q0FFQztBQUVELFNBQWdCLHdCQUF3QixDQUFDLElBQXVCO0lBQzlELElBQUksSUFBSSxDQUFDLEtBQUssSUFBSSxXQUFXLElBQUksSUFBSSxDQUFDLEtBQUssSUFBSSxTQUFTLElBQUksSUFBSSxDQUFDLEtBQUssSUFBSSxRQUFRLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRTtRQUNoRyxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBK0IsQ0FBQztRQUNuRCxPQUFPO1lBQ0wsUUFBUSxFQUFFLEtBQUssQ0FBQyxTQUFTO1lBQ3pCLE9BQU8sRUFBRSxLQUFLLENBQUMsT0FBTztZQUN0QixNQUFNLEVBQUUsS0FBSyxDQUFDLE1BQU07U0FDTCxDQUFDO0tBQ25CO0lBRUQsT0FBTyxTQUFTLENBQUM7QUFDbkIsQ0FBQztBQVhELDREQVdDO0FBRUQsU0FBZ0IsMEJBQTBCLENBQUMsSUFBdUI7SUFDaEUsSUFBSSxJQUFJLENBQUMsS0FBSyxJQUFJLFdBQVcsSUFBSSxJQUFJLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQyxTQUFTLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFO1FBQ3RHLE9BQVEsSUFBSSxDQUFDLEtBQWdDLENBQUMsU0FBcUIsQ0FBQztLQUNyRTtJQUVELE9BQU8sU0FBUyxDQUFDO0FBQ25CLENBQUM7QUFORCxnRUFNQztBQUVELFNBQWdCLGtCQUFrQixDQUFDLElBQXdDO0lBQ3pFLElBQUksV0FBVyxJQUFJLElBQUksRUFBRTtRQUN2QixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7S0FDdkI7SUFDRCxNQUFNLE1BQU0sR0FBRyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN0QyxJQUFJLE1BQU0sRUFBRTtRQUNWLE9BQU87WUFDTCxRQUFRLEVBQUUsTUFBTSxDQUFDLFFBQVE7WUFDekIsT0FBTyxFQUFFLE1BQU0sQ0FBQyxPQUFPO1lBQ3ZCLE1BQU0sRUFBRSxNQUFNLENBQUMsTUFBTTtTQUN0QixDQUFDO0tBQ0g7SUFDRCxPQUFPLHdCQUF3QixDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3hDLENBQUM7QUFiRCxnREFhQztBQUVELGdGQUFnRjtBQUVoRixTQUFnQixXQUFXLENBQUMsSUFBdUQ7O0lBQ2pGLElBQUksVUFBVSxJQUFJLElBQUksRUFBRTtRQUN0QixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7S0FDdEI7SUFDRCxPQUFPLE1BQUEsTUFBQSxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsMENBQUUsUUFBUSxtQ0FBSSwwQkFBMEIsQ0FBQyxJQUF5QixDQUFFLENBQUM7QUFDdEcsQ0FBQztBQUxELGtDQUtDO0FBRUQsU0FBZ0IsZ0JBQWdCLENBQUMsSUFBc0Q7O0lBQ3JGLElBQUksU0FBUyxJQUFJLElBQUksRUFBRTtRQUNyQixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUM7S0FDckI7SUFDRCxPQUFPLE1BQUEsa0JBQWtCLENBQUMsSUFBSSxDQUFDLDBDQUFFLE9BQU8sQ0FBQztBQUMzQyxDQUFDO0FBTEQsNENBS0M7QUFFRCxnRkFBZ0Y7QUFFaEYsU0FBZ0IsbUJBQW1CLENBQUMsSUFBdUM7SUFDekUsT0FBUSxJQUEwQixDQUFDLElBQUksS0FBSyxTQUFTLENBQUM7QUFDeEQsQ0FBQztBQUZELGtEQUVDO0FBRUQ7Ozs7R0FJRztBQUNILFNBQWdCLGFBQWEsQ0FBQyxJQUF1Qzs7SUFDbkUsTUFBTSxJQUFJLEdBQUcsbUJBQW1CLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUUxRCxJQUFJLENBQUMsQ0FBQSxJQUFJLGFBQUosSUFBSSx1QkFBSixJQUFJLENBQUUsSUFBSSxDQUFBLElBQUksTUFBTSxJQUFJLElBQUksRUFBRTtRQUNqQyxJQUFJLENBQUEsTUFBQSxJQUFJLGFBQUosSUFBSSx1QkFBSixJQUFJLENBQUUsT0FBTywwQ0FBRSxRQUFRLE1BQUssU0FBUyxFQUFFO1lBQ3pDLE9BQU8sU0FBUyxDQUFDO1NBQ2xCO1FBQ0QsT0FBTyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztLQUNoQztJQUNELE9BQU8sSUFBSSxhQUFKLElBQUksdUJBQUosSUFBSSxDQUFFLElBQUksQ0FBQztBQUNwQixDQUFDO0FBVkQsc0NBVUM7QUFFRCxTQUFnQixrQ0FBa0MsQ0FBQyxJQUF1Qjs7SUFDeEUsT0FBTyxNQUFBLGdCQUFnQixDQUFDLElBQUksQ0FBQywwQ0FBRSxtQkFBbUIsQ0FBQztBQUNyRCxDQUFDO0FBRkQsZ0ZBRUM7QUFFRCxTQUFnQixjQUFjLENBQUMsSUFBcUM7O0lBQ2xFLElBQUksZ0JBQUUsQ0FBQyxJQUFJLEVBQUUsb0JBQVcsQ0FBQyxFQUFFO1FBQ3pCLE9BQU8sSUFBSSxDQUFDO0tBQ2I7SUFDRCxPQUFPLE1BQUEsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLDBDQUFFLEtBQUssQ0FBQztBQUN2QyxDQUFDO0FBTEQsd0NBS0M7QUFFRCxTQUFnQixnQkFBZ0IsQ0FBQyxJQUF1Qjs7SUFDdEQsT0FBTyxNQUFBLGdCQUFnQixDQUFDLElBQUksQ0FBQywwQ0FBRSxPQUFPLENBQUM7QUFDekMsQ0FBQztBQUZELDRDQUVDO0FBRUQsU0FBZ0IsNkJBQTZCLENBQUMsSUFBcUM7SUFDakYsTUFBTSxLQUFLLEdBQUcsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ25DLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxJQUFJLFFBQVEsSUFBSSxLQUFLLEVBQUU7UUFDbEQsT0FBTyxLQUFLLENBQUMsTUFBTSxDQUFDLHNCQUFzQixDQUFDO0tBQzVDO1NBQU07UUFDTCxPQUFPLFNBQVMsQ0FBQztLQUNsQjtBQUNILENBQUM7QUFQRCxzRUFPQztBQUVELFNBQWdCLGNBQWMsQ0FBQyxJQUFxQztJQUNsRSxNQUFNLEtBQUssR0FBRyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDbkMsT0FBTyxPQUFPLEtBQUssS0FBSyxRQUFRLElBQUksUUFBUSxJQUFJLEtBQUssQ0FBQztBQUN4RCxDQUFDO0FBSEQsd0NBR0M7QUFFRCxTQUFnQixpQkFBaUIsQ0FBQyxJQUFxQztJQUNyRSxNQUFNLEtBQUssR0FBRyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDbkMsT0FBTyxLQUFLLEtBQUssV0FBVyxDQUFDO0FBQy9CLENBQUM7QUFIRCw4Q0FHQztBQUVELFNBQWdCLGlCQUFpQixDQUFDLElBQXVCOztJQUN2RCxPQUFPLE1BQUEsYUFBYSxDQUFDLElBQUksQ0FBQywwQ0FBRSxJQUFJLENBQUM7QUFDbkMsQ0FBQztBQUZELDhDQUVDO0FBRUQsU0FBZ0IsZUFBZSxDQUM3QixJQUF1RDs7SUFFdkQsSUFBSSxRQUFRLElBQUksSUFBSSxFQUFFO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztLQUNwQjtJQUNELE9BQU8sTUFBQSxhQUFhLENBQUMsSUFBSSxDQUFDLDBDQUFFLE1BQU0sQ0FBQztBQUNyQyxDQUFDO0FBUEQsMENBT0M7QUFNRCxTQUFTLDBCQUEwQixDQUFDLElBQW1CO0lBQ3JELE9BQU8sSUFBSSxDQUFDLE9BQU8sS0FBSyxTQUFTLENBQUM7QUFDcEMsQ0FBQztBQUVELFNBQWdCLGFBQWEsQ0FBQyxJQUF1QztJQUNuRSxNQUFNLFNBQVMsR0FBRyxNQUFNLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUUsSUFBc0IsQ0FBQztJQUVwRixJQUFJLENBQUMsU0FBUyxJQUFJLENBQUMsMEJBQTBCLENBQUMsU0FBUyxDQUFDLElBQUksU0FBUyxDQUFDLE9BQU8sQ0FBQyxRQUFRLEtBQUssWUFBWSxFQUFFO1FBQ3ZHLE9BQU8sU0FBUyxDQUFDO0tBQ2xCO0lBRUQsT0FBTyxTQUFTLENBQUMsT0FBd0IsQ0FBQztBQUM1QyxDQUFDO0FBUkQsc0NBUUM7QUFFRCxTQUFnQixpQkFBaUIsQ0FBQyxJQUF1Qzs7SUFDdkUsT0FBTyxNQUFBLE1BQUEsYUFBYSxDQUFDLElBQUksQ0FBQywwQ0FBRSxpQkFBaUIsbUNBQUksS0FBSyxDQUFDO0FBQ3pELENBQUM7QUFGRCw4Q0FFQztBQUVELFNBQWdCLHFCQUFxQixDQUFDLElBQXdDOztJQUM1RSxJQUFJLGNBQWMsSUFBSSxJQUFJLEVBQUU7UUFDMUIsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDO0tBQzFCO0lBQ0QsTUFBTSxTQUFTLEdBQUcsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDekMsSUFBSSxDQUFBLE1BQUEsU0FBUyxhQUFULFNBQVMsdUJBQVQsU0FBUyxDQUFFLE9BQU8sMENBQUUsUUFBUSxNQUFLLFNBQVMsRUFBRTtRQUM5QyxPQUFPLFNBQVMsQ0FBQztLQUNsQjtJQUNELE9BQVEsU0FBUyxDQUFDLE9BQTBCLENBQUMsWUFBWSxDQUFDO0FBQzVELENBQUM7QUFURCxzREFTQztBQUVZLFFBQUEsb0JBQW9CLEdBQUcsb0JBQU0sQ0FBQztJQUN6QyxRQUFRLEVBQUUsaUJBQVE7SUFDbEIsWUFBWSxFQUFFLHNCQUFRLENBQUMsb0JBQU0sRUFBRSxDQUFDO0NBQ2pDLENBQUMsQ0FBQztBQUdVLFFBQUEsd0JBQXdCLEdBQUcsb0JBQU0sQ0FBQztJQUM3QyxJQUFJLEVBQUUsbUJBQUssQ0FBQyx5QkFBaUIsQ0FBQztJQUM5QixVQUFVLEVBQUUsc0JBQVEsQ0FBQyw0QkFBb0IsQ0FBQztJQUMxQyxXQUFXLEVBQUUscUJBQU8sRUFBRTtDQUN2QixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBhbnksXG4gIGFycmF5LFxuICBhc3NpZ24sXG4gIGJvb2xlYW4sXG4gIEluZmVyLFxuICBsaXRlcmFsLFxuICBudW1iZXIsXG4gIG9iamVjdCxcbiAgb3B0aW9uYWwsXG4gIHJlY29yZCxcbiAgc3RyaW5nLFxuICB1bmlvbixcbiAgaXMsXG59IGZyb20gJ3N1cGVyc3RydWN0JztcbmltcG9ydCB7IE9iamVjdElkLCBPYmplY3RPd25lciwgU2VxdWVuY2VOdW1iZXIsIFRyYW5zYWN0aW9uRGlnZXN0IH0gZnJvbSAnLi9jb21tb24nO1xuaW1wb3J0IHsgT3duZWRPYmplY3RSZWYgfSBmcm9tICcuL3RyYW5zYWN0aW9ucyc7XG5cbmV4cG9ydCBjb25zdCBPYmplY3RUeXBlID0gdW5pb24oW3N0cmluZygpLCBsaXRlcmFsKCdwYWNrYWdlJyldKTtcbmV4cG9ydCB0eXBlIE9iamVjdFR5cGUgPSBJbmZlcjx0eXBlb2YgT2JqZWN0VHlwZT47XG5cbmV4cG9ydCBjb25zdCBTdWlPYmplY3RSZWYgPSBvYmplY3Qoe1xuICAvKiogQmFzZTY0IHN0cmluZyByZXByZXNlbnRpbmcgdGhlIG9iamVjdCBkaWdlc3QgKi9cbiAgZGlnZXN0OiBUcmFuc2FjdGlvbkRpZ2VzdCxcbiAgLyoqIEhleCBjb2RlIGFzIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIG9iamVjdCBpZCAqL1xuICBvYmplY3RJZDogc3RyaW5nKCksXG4gIC8qKiBPYmplY3QgdmVyc2lvbiAqL1xuICB2ZXJzaW9uOiB1bmlvbihbbnVtYmVyKCksIHN0cmluZygpXSksXG59KTtcbmV4cG9ydCB0eXBlIFN1aU9iamVjdFJlZiA9IEluZmVyPHR5cGVvZiBTdWlPYmplY3RSZWY+O1xuXG5leHBvcnQgY29uc3QgU3VpR2FzRGF0YSA9IG9iamVjdCh7XG4gIHBheW1lbnQ6IGFycmF5KFN1aU9iamVjdFJlZiksXG4gIC8qKiBHYXMgT2JqZWN0J3Mgb3duZXIgKi9cbiAgb3duZXI6IHN0cmluZygpLFxuICBwcmljZTogbnVtYmVyKCksXG4gIGJ1ZGdldDogbnVtYmVyKCksXG59KTtcbmV4cG9ydCB0eXBlIFN1aUdhc0RhdGEgPSBJbmZlcjx0eXBlb2YgU3VpR2FzRGF0YT47XG5cbmV4cG9ydCBjb25zdCBTdWlPYmplY3RJbmZvID0gYXNzaWduKFxuICBTdWlPYmplY3RSZWYsXG4gIG9iamVjdCh7XG4gICAgdHlwZTogc3RyaW5nKCksXG4gICAgb3duZXI6IE9iamVjdE93bmVyLFxuICAgIHByZXZpb3VzVHJhbnNhY3Rpb246IFRyYW5zYWN0aW9uRGlnZXN0LFxuICB9KVxuKTtcbmV4cG9ydCB0eXBlIFN1aU9iamVjdEluZm8gPSBJbmZlcjx0eXBlb2YgU3VpT2JqZWN0SW5mbz47XG5cbmV4cG9ydCBjb25zdCBPYmplY3RDb250ZW50RmllbGRzID0gcmVjb3JkKHN0cmluZygpLCBhbnkoKSk7XG5leHBvcnQgdHlwZSBPYmplY3RDb250ZW50RmllbGRzID0gSW5mZXI8dHlwZW9mIE9iamVjdENvbnRlbnRGaWVsZHM+O1xuXG5leHBvcnQgY29uc3QgTW92ZVBhY2thZ2VDb250ZW50ID0gcmVjb3JkKHN0cmluZygpLCBzdHJpbmcoKSk7XG5leHBvcnQgdHlwZSBNb3ZlUGFja2FnZUNvbnRlbnQgPSBJbmZlcjx0eXBlb2YgTW92ZVBhY2thZ2VDb250ZW50PjtcblxuZXhwb3J0IGNvbnN0IFN1aU1vdmVPYmplY3QgPSBvYmplY3Qoe1xuICAvKiogTW92ZSB0eXBlIChlLmcuLCBcIjB4Mjo6Y29pbjo6Q29pbjwweDI6OnN1aTo6U1VJPlwiKSAqL1xuICB0eXBlOiBzdHJpbmcoKSxcbiAgLyoqIEZpZWxkcyBhbmQgdmFsdWVzIHN0b3JlZCBpbnNpZGUgdGhlIE1vdmUgb2JqZWN0ICovXG4gIGZpZWxkczogT2JqZWN0Q29udGVudEZpZWxkcyxcbiAgaGFzUHVibGljVHJhbnNmZXI6IGJvb2xlYW4oKSxcbn0pO1xuZXhwb3J0IHR5cGUgU3VpTW92ZU9iamVjdCA9IEluZmVyPHR5cGVvZiBTdWlNb3ZlT2JqZWN0PjtcblxuZXhwb3J0IGNvbnN0IFN1aU1vdmVQYWNrYWdlID0gb2JqZWN0KHtcbiAgLyoqIEEgbWFwcGluZyBmcm9tIG1vZHVsZSBuYW1lIHRvIGRpc2Fzc2VtYmxlZCBNb3ZlIGJ5dGVjb2RlICovXG4gIGRpc2Fzc2VtYmxlZDogTW92ZVBhY2thZ2VDb250ZW50LFxufSk7XG5leHBvcnQgdHlwZSBTdWlNb3ZlUGFja2FnZSA9IEluZmVyPHR5cGVvZiBTdWlNb3ZlUGFja2FnZT47XG5cbmV4cG9ydCBjb25zdCBTdWlQYXJzZWREYXRhID0gdW5pb24oW1xuICBhc3NpZ24oU3VpTW92ZU9iamVjdCwgb2JqZWN0KHsgZGF0YVR5cGU6IGxpdGVyYWwoJ21vdmVPYmplY3QnKSB9KSksXG4gIGFzc2lnbihTdWlNb3ZlUGFja2FnZSwgb2JqZWN0KHsgZGF0YVR5cGU6IGxpdGVyYWwoJ3BhY2thZ2UnKSB9KSksXG5dKTtcbmV4cG9ydCB0eXBlIFN1aVBhcnNlZERhdGEgPSBJbmZlcjx0eXBlb2YgU3VpUGFyc2VkRGF0YT47XG5cbmV4cG9ydCBjb25zdCBTdWlSYXdNb3ZlT2JqZWN0ID0gb2JqZWN0KHtcbiAgLyoqIE1vdmUgdHlwZSAoZS5nLiwgXCIweDI6OmNvaW46OkNvaW48MHgyOjpzdWk6OlNVST5cIikgKi9cbiAgdHlwZTogc3RyaW5nKCksXG4gIGhhc1B1YmxpY1RyYW5zZmVyOiBib29sZWFuKCksXG4gIHZlcnNpb246IFNlcXVlbmNlTnVtYmVyLFxuICBiY3NCeXRlczogYXJyYXkobnVtYmVyKCkpLFxufSk7XG5leHBvcnQgdHlwZSBTdWlSYXdNb3ZlT2JqZWN0ID0gSW5mZXI8dHlwZW9mIFN1aVJhd01vdmVPYmplY3Q+O1xuXG5leHBvcnQgY29uc3QgU3VpUmF3TW92ZVBhY2thZ2UgPSBvYmplY3Qoe1xuICBpZDogT2JqZWN0SWQsXG4gIC8qKiBBIG1hcHBpbmcgZnJvbSBtb2R1bGUgbmFtZSB0byBNb3ZlIGJ5dGVjb2RlIGVub2NkZWQgaW4gYmFzZTY0Ki9cbiAgbW9kdWxlTWFwOiByZWNvcmQoc3RyaW5nKCksIHN0cmluZygpKSxcbn0pO1xuZXhwb3J0IHR5cGUgU3VpUmF3TW92ZVBhY2thZ2UgPSBJbmZlcjx0eXBlb2YgU3VpUmF3TW92ZVBhY2thZ2U+O1xuXG4vLyBUT0RPKGNocmlzKTogY29uc29saWRhdGUgU3VpUmF3UGFyc2VkRGF0YSBhbmQgU3VpUmF3T2JqZWN0IHVzaW5nIGdlbmVyaWNzXG5leHBvcnQgY29uc3QgU3VpUmF3RGF0YSA9IHVuaW9uKFtcbiAgYXNzaWduKFN1aU1vdmVPYmplY3QsIG9iamVjdCh7IGRhdGFUeXBlOiBsaXRlcmFsKCdtb3ZlT2JqZWN0JykgfSkpLFxuICBhc3NpZ24oU3VpUmF3TW92ZVBhY2thZ2UsIG9iamVjdCh7IGRhdGFUeXBlOiBsaXRlcmFsKCdwYWNrYWdlJykgfSkpLFxuXSk7XG5leHBvcnQgdHlwZSBTdWlSYXdEYXRhID0gSW5mZXI8dHlwZW9mIFN1aVJhd0RhdGE+O1xuXG5leHBvcnQgY29uc3QgTUlTVF9QRVJfU1VJID0gQmlnSW50KDEwMDAwMDAwMDApO1xuXG5leHBvcnQgY29uc3QgT2JqZWN0RGlnZXN0ID0gc3RyaW5nKCk7XG5leHBvcnQgdHlwZSBPYmplY3REaWdlc3QgPSBJbmZlcjx0eXBlb2YgT2JqZWN0RGlnZXN0PjtcblxuZXhwb3J0IGNvbnN0IFN1aU9iamVjdERhdGEgPSBvYmplY3Qoe1xuICBvYmplY3RJZDogT2JqZWN0SWQsXG4gIHZlcnNpb246IFNlcXVlbmNlTnVtYmVyLFxuICBkaWdlc3Q6IE9iamVjdERpZ2VzdCxcbiAgLyoqXG4gICAqIFR5cGUgb2YgdGhlIG9iamVjdCwgZGVmYXVsdCB0byBiZSB1bmRlZmluZWQgdW5sZXNzIFN1aU9iamVjdERhdGFPcHRpb25zLnNob3dUeXBlIGlzIHNldCB0byB0cnVlXG4gICAqL1xuICB0eXBlOiBvcHRpb25hbChzdHJpbmcoKSksXG4gIC8qKlxuICAgKiBNb3ZlIG9iamVjdCBjb250ZW50IG9yIHBhY2thZ2UgY29udGVudCwgZGVmYXVsdCB0byBiZSB1bmRlZmluZWQgdW5sZXNzIFN1aU9iamVjdERhdGFPcHRpb25zLnNob3dDb250ZW50IGlzIHNldCB0byB0cnVlXG4gICAqL1xuICBjb250ZW50OiBvcHRpb25hbChTdWlQYXJzZWREYXRhKSxcbiAgLyoqXG4gICAqIE1vdmUgb2JqZWN0IGNvbnRlbnQgb3IgcGFja2FnZSBjb250ZW50IGluIEJDUyBieXRlcywgZGVmYXVsdCB0byBiZSB1bmRlZmluZWQgdW5sZXNzIFN1aU9iamVjdERhdGFPcHRpb25zLnNob3dCY3MgaXMgc2V0IHRvIHRydWVcbiAgICovXG4gIGJjczogb3B0aW9uYWwoU3VpUmF3RGF0YSksXG4gIC8qKlxuICAgKiBUaGUgb3duZXIgb2YgdGhpcyBvYmplY3QuIERlZmF1bHQgdG8gYmUgdW5kZWZpbmVkIHVubGVzcyBTdWlPYmplY3REYXRhT3B0aW9ucy5zaG93T3duZXIgaXMgc2V0IHRvIHRydWVcbiAgICovXG4gIG93bmVyOiBvcHRpb25hbChPYmplY3RPd25lciksXG4gIC8qKlxuICAgKiBUaGUgZGlnZXN0IG9mIHRoZSB0cmFuc2FjdGlvbiB0aGF0IGNyZWF0ZWQgb3IgbGFzdCBtdXRhdGVkIHRoaXMgb2JqZWN0LlxuICAgKiBEZWZhdWx0IHRvIGJlIHVuZGVmaW5lZCB1bmxlc3MgU3VpT2JqZWN0RGF0YU9wdGlvbnMuc2hvd1ByZXZpb3VzVHJhbnNhY3Rpb24gaXMgc2V0IHRvIHRydWVcbiAgICovXG4gIHByZXZpb3VzVHJhbnNhY3Rpb246IG9wdGlvbmFsKFRyYW5zYWN0aW9uRGlnZXN0KSxcbiAgLyoqXG4gICAqIFRoZSBhbW91bnQgb2YgU1VJIHdlIHdvdWxkIHJlYmF0ZSBpZiB0aGlzIG9iamVjdCBnZXRzIGRlbGV0ZWQuXG4gICAqIFRoaXMgbnVtYmVyIGlzIHJlLWNhbGN1bGF0ZWQgZWFjaCB0aW1lIHRoZSBvYmplY3QgaXMgbXV0YXRlZCBiYXNlZCBvblxuICAgKiB0aGUgcHJlc2VudCBzdG9yYWdlIGdhcyBwcmljZS5cbiAgICogRGVmYXVsdCB0byBiZSB1bmRlZmluZWQgdW5sZXNzIFN1aU9iamVjdERhdGFPcHRpb25zLnNob3dTdG9yYWdlUmViYXRlIGlzIHNldCB0byB0cnVlXG4gICAqL1xuICBzdG9yYWdlUmViYXRlOiBvcHRpb25hbChudW1iZXIoKSksXG4gIC8qKlxuICAgKiBEaXNwbGF5IG1ldGFkYXRhIGZvciB0aGlzIG9iamVjdCwgZGVmYXVsdCB0byBiZSB1bmRlZmluZWQgdW5sZXNzIFN1aU9iamVjdERhdGFPcHRpb25zLnNob3dEaXNwbGF5IGlzIHNldCB0byB0cnVlXG4gICAqIFRoaXMgY2FuIGFsc28gYmUgTm9uZSBpZiB0aGUgc3RydWN0IHR5cGUgZG9lcyBub3QgaGF2ZSBEaXNwbGF5IGRlZmluZWRcbiAgICogU2VlIG1vcmUgZGV0YWlscyBpbiBodHRwczovL2ZvcnVtcy5zdWkuaW8vdC9uZnQtb2JqZWN0LWRpc3BsYXktcHJvcG9zYWwvNDg3MlxuICAgKi9cbiAgZGlzcGxheTogb3B0aW9uYWwocmVjb3JkKHN0cmluZygpLCBzdHJpbmcoKSkpLFxufSk7XG5leHBvcnQgdHlwZSBTdWlPYmplY3REYXRhID0gSW5mZXI8dHlwZW9mIFN1aU9iamVjdERhdGE+O1xuXG4vKipcbiAqIENvbmZpZyBmb3IgZmV0Y2hpbmcgb2JqZWN0IGRhdGFcbiAqL1xuZXhwb3J0IGNvbnN0IFN1aU9iamVjdERhdGFPcHRpb25zID0gb2JqZWN0KHtcbiAgLyogV2hldGhlciB0byBmZXRjaCB0aGUgb2JqZWN0IHR5cGUsIGRlZmF1bHQgdG8gYmUgdHJ1ZSAqL1xuICBzaG93VHlwZTogb3B0aW9uYWwoYm9vbGVhbigpKSxcbiAgLyogV2hldGhlciB0byBmZXRjaCB0aGUgb2JqZWN0IGNvbnRlbnQsIGRlZmF1bHQgdG8gYmUgZmFsc2UgKi9cbiAgc2hvd0NvbnRlbnQ6IG9wdGlvbmFsKGJvb2xlYW4oKSksXG4gIC8qIFdoZXRoZXIgdG8gZmV0Y2ggdGhlIG9iamVjdCBjb250ZW50IGluIEJDUyBieXRlcywgZGVmYXVsdCB0byBiZSBmYWxzZSAqL1xuICBzaG93QmNzOiBvcHRpb25hbChib29sZWFuKCkpLFxuICAvKiBXaGV0aGVyIHRvIGZldGNoIHRoZSBvYmplY3Qgb3duZXIsIGRlZmF1bHQgdG8gYmUgZmFsc2UgKi9cbiAgc2hvd093bmVyOiBvcHRpb25hbChib29sZWFuKCkpLFxuICAvKiBXaGV0aGVyIHRvIGZldGNoIHRoZSBwcmV2aW91cyB0cmFuc2FjdGlvbiBkaWdlc3QsIGRlZmF1bHQgdG8gYmUgZmFsc2UgKi9cbiAgc2hvd1ByZXZpb3VzVHJhbnNhY3Rpb246IG9wdGlvbmFsKGJvb2xlYW4oKSksXG4gIC8qIFdoZXRoZXIgdG8gZmV0Y2ggdGhlIHN0b3JhZ2UgcmViYXRlLCBkZWZhdWx0IHRvIGJlIGZhbHNlICovXG4gIHNob3dTdG9yYWdlUmViYXRlOiBvcHRpb25hbChib29sZWFuKCkpLFxuICAvKiBXaGV0aGVyIHRvIGZldGNoIHRoZSBkaXNwbGF5IG1ldGFkYXRhLCBkZWZhdWx0IHRvIGJlIGZhbHNlICovXG4gIHNob3dEaXNwbGF5OiBvcHRpb25hbChib29sZWFuKCkpLFxufSk7XG5leHBvcnQgdHlwZSBTdWlPYmplY3REYXRhT3B0aW9ucyA9IEluZmVyPHR5cGVvZiBTdWlPYmplY3REYXRhT3B0aW9ucz47XG5cbmV4cG9ydCBjb25zdCBPYmplY3RTdGF0dXMgPSB1bmlvbihbbGl0ZXJhbCgnRXhpc3RzJyksIGxpdGVyYWwoJ05vdEV4aXN0cycpLCBsaXRlcmFsKCdEZWxldGVkJyldKTtcbmV4cG9ydCB0eXBlIE9iamVjdFN0YXR1cyA9IEluZmVyPHR5cGVvZiBPYmplY3RTdGF0dXM+O1xuXG5leHBvcnQgY29uc3QgR2V0T3duZWRPYmplY3RzUmVzcG9uc2UgPSBhcnJheShTdWlPYmplY3RJbmZvKTtcbmV4cG9ydCB0eXBlIEdldE93bmVkT2JqZWN0c1Jlc3BvbnNlID0gSW5mZXI8dHlwZW9mIEdldE93bmVkT2JqZWN0c1Jlc3BvbnNlPjtcblxuZXhwb3J0IGNvbnN0IFN1aU9iamVjdFJlc3BvbnNlRXJyb3IgPSBvYmplY3Qoe1xuICB0YWc6IHN0cmluZygpLFxuICBvYmplY3RfaWQ6IG9wdGlvbmFsKE9iamVjdElkKSxcbiAgdmVyc2lvbjogb3B0aW9uYWwoU2VxdWVuY2VOdW1iZXIpLFxuICBkaWdlc3Q6IG9wdGlvbmFsKE9iamVjdERpZ2VzdCksXG59KTtcbmV4cG9ydCB0eXBlIFN1aU9iamVjdFJlc3BvbnNlRXJyb3IgPSBJbmZlcjx0eXBlb2YgU3VpT2JqZWN0UmVzcG9uc2VFcnJvcj47XG5cbmV4cG9ydCBjb25zdCBTdWlPYmplY3RSZXNwb25zZSA9IG9iamVjdCh7XG4gIGRhdGE6IG9wdGlvbmFsKFN1aU9iamVjdERhdGEpLFxuICBlcnJvcjogb3B0aW9uYWwoU3VpT2JqZWN0UmVzcG9uc2VFcnJvciksXG59KTtcbmV4cG9ydCB0eXBlIFN1aU9iamVjdFJlc3BvbnNlID0gSW5mZXI8dHlwZW9mIFN1aU9iamVjdFJlc3BvbnNlPjtcblxuZXhwb3J0IHR5cGUgT3JkZXIgPSAnYXNjZW5kaW5nJyB8ICdkZXNjZW5kaW5nJztcblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cbi8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSGVscGVyIGZ1bmN0aW9ucyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBTdWlPYmplY3RSZXNwb25zZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRTdWlPYmplY3REYXRhKHJlc3A6IFN1aU9iamVjdFJlc3BvbnNlKTogU3VpT2JqZWN0RGF0YSB8IHVuZGVmaW5lZCB7XG4gIHJldHVybiByZXNwLmRhdGE7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRPYmplY3REZWxldGVkUmVzcG9uc2UocmVzcDogU3VpT2JqZWN0UmVzcG9uc2UpOiBTdWlPYmplY3RSZWYgfCB1bmRlZmluZWQge1xuICBpZiAocmVzcC5lcnJvciAmJiAnb2JqZWN0X2lkJyBpbiByZXNwLmVycm9yICYmICd2ZXJzaW9uJyBpbiByZXNwLmVycm9yICYmICdkaWdlc3QnIGluIHJlc3AuZXJyb3IpIHtcbiAgICBjb25zdCBlcnJvciA9IHJlc3AuZXJyb3IgYXMgU3VpT2JqZWN0UmVzcG9uc2VFcnJvcjtcbiAgICByZXR1cm4ge1xuICAgICAgb2JqZWN0SWQ6IGVycm9yLm9iamVjdF9pZCxcbiAgICAgIHZlcnNpb246IGVycm9yLnZlcnNpb24sXG4gICAgICBkaWdlc3Q6IGVycm9yLmRpZ2VzdCxcbiAgICB9IGFzIFN1aU9iamVjdFJlZjtcbiAgfVxuXG4gIHJldHVybiB1bmRlZmluZWQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRPYmplY3ROb3RFeGlzdHNSZXNwb25zZShyZXNwOiBTdWlPYmplY3RSZXNwb25zZSk6IE9iamVjdElkIHwgdW5kZWZpbmVkIHtcbiAgaWYgKHJlc3AuZXJyb3IgJiYgJ29iamVjdF9pZCcgaW4gcmVzcC5lcnJvciAmJiAhKCd2ZXJzaW9uJyBpbiByZXNwLmVycm9yKSAmJiAhKCdkaWdlc3QnIGluIHJlc3AuZXJyb3IpKSB7XG4gICAgcmV0dXJuIChyZXNwLmVycm9yIGFzIFN1aU9iamVjdFJlc3BvbnNlRXJyb3IpLm9iamVjdF9pZCBhcyBPYmplY3RJZDtcbiAgfVxuXG4gIHJldHVybiB1bmRlZmluZWQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRPYmplY3RSZWZlcmVuY2UocmVzcDogU3VpT2JqZWN0UmVzcG9uc2UgfCBPd25lZE9iamVjdFJlZik6IFN1aU9iamVjdFJlZiB8IHVuZGVmaW5lZCB7XG4gIGlmICgncmVmZXJlbmNlJyBpbiByZXNwKSB7XG4gICAgcmV0dXJuIHJlc3AucmVmZXJlbmNlO1xuICB9XG4gIGNvbnN0IGV4aXN0cyA9IGdldFN1aU9iamVjdERhdGEocmVzcCk7XG4gIGlmIChleGlzdHMpIHtcbiAgICByZXR1cm4ge1xuICAgICAgb2JqZWN0SWQ6IGV4aXN0cy5vYmplY3RJZCxcbiAgICAgIHZlcnNpb246IGV4aXN0cy52ZXJzaW9uLFxuICAgICAgZGlnZXN0OiBleGlzdHMuZGlnZXN0LFxuICAgIH07XG4gIH1cbiAgcmV0dXJuIGdldE9iamVjdERlbGV0ZWRSZXNwb25zZShyZXNwKTtcbn1cblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFN1aU9iamVjdFJlZiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIGdldE9iamVjdElkKGRhdGE6IFN1aU9iamVjdFJlc3BvbnNlIHwgU3VpT2JqZWN0UmVmIHwgT3duZWRPYmplY3RSZWYpOiBPYmplY3RJZCB7XG4gIGlmICgnb2JqZWN0SWQnIGluIGRhdGEpIHtcbiAgICByZXR1cm4gZGF0YS5vYmplY3RJZDtcbiAgfVxuICByZXR1cm4gZ2V0T2JqZWN0UmVmZXJlbmNlKGRhdGEpPy5vYmplY3RJZCA/PyBnZXRPYmplY3ROb3RFeGlzdHNSZXNwb25zZShkYXRhIGFzIFN1aU9iamVjdFJlc3BvbnNlKSE7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRPYmplY3RWZXJzaW9uKGRhdGE6IFN1aU9iamVjdFJlc3BvbnNlIHwgU3VpT2JqZWN0UmVmIHwgU3VpT2JqZWN0RGF0YSk6IHN0cmluZyB8IG51bWJlciB8IHVuZGVmaW5lZCB7XG4gIGlmICgndmVyc2lvbicgaW4gZGF0YSkge1xuICAgIHJldHVybiBkYXRhLnZlcnNpb247XG4gIH1cbiAgcmV0dXJuIGdldE9iamVjdFJlZmVyZW5jZShkYXRhKT8udmVyc2lvbjtcbn1cblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gU3VpT2JqZWN0IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIGlzU3VpT2JqZWN0UmVzcG9uc2UocmVzcDogU3VpT2JqZWN0UmVzcG9uc2UgfCBTdWlPYmplY3REYXRhKTogcmVzcCBpcyBTdWlPYmplY3RSZXNwb25zZSB7XG4gIHJldHVybiAocmVzcCBhcyBTdWlPYmplY3RSZXNwb25zZSkuZGF0YSAhPT0gdW5kZWZpbmVkO1xufVxuXG4vKipcbiAqIERlcml2aW5nIHRoZSBvYmplY3QgdHlwZSBmcm9tIHRoZSBvYmplY3QgcmVzcG9uc2VcbiAqIEByZXR1cm5zICdwYWNrYWdlJyBpZiB0aGUgb2JqZWN0IGlzIGEgcGFja2FnZSwgbW92ZSBvYmplY3QgdHlwZShlLmcuLCAweDI6OmNvaW46OkNvaW48MHgyOjpzdWk6OlNVST4pXG4gKiBpZiB0aGUgb2JqZWN0IGlzIGEgbW92ZSBvYmplY3RcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldE9iamVjdFR5cGUocmVzcDogU3VpT2JqZWN0UmVzcG9uc2UgfCBTdWlPYmplY3REYXRhKTogT2JqZWN0VHlwZSB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IGRhdGEgPSBpc1N1aU9iamVjdFJlc3BvbnNlKHJlc3ApID8gcmVzcC5kYXRhIDogcmVzcDtcblxuICBpZiAoIWRhdGE/LnR5cGUgJiYgJ2RhdGEnIGluIHJlc3ApIHtcbiAgICBpZiAoZGF0YT8uY29udGVudD8uZGF0YVR5cGUgPT09ICdwYWNrYWdlJykge1xuICAgICAgcmV0dXJuICdwYWNrYWdlJztcbiAgICB9XG4gICAgcmV0dXJuIGdldE1vdmVPYmplY3RUeXBlKHJlc3ApO1xuICB9XG4gIHJldHVybiBkYXRhPy50eXBlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0T2JqZWN0UHJldmlvdXNUcmFuc2FjdGlvbkRpZ2VzdChyZXNwOiBTdWlPYmplY3RSZXNwb25zZSk6IFRyYW5zYWN0aW9uRGlnZXN0IHwgdW5kZWZpbmVkIHtcbiAgcmV0dXJuIGdldFN1aU9iamVjdERhdGEocmVzcCk/LnByZXZpb3VzVHJhbnNhY3Rpb247XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRPYmplY3RPd25lcihyZXNwOiBTdWlPYmplY3RSZXNwb25zZSB8IE9iamVjdE93bmVyKTogT2JqZWN0T3duZXIgfCB1bmRlZmluZWQge1xuICBpZiAoaXMocmVzcCwgT2JqZWN0T3duZXIpKSB7XG4gICAgcmV0dXJuIHJlc3A7XG4gIH1cbiAgcmV0dXJuIGdldFN1aU9iamVjdERhdGEocmVzcCk/Lm93bmVyO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0T2JqZWN0RGlzcGxheShyZXNwOiBTdWlPYmplY3RSZXNwb25zZSk6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gfCB1bmRlZmluZWQge1xuICByZXR1cm4gZ2V0U3VpT2JqZWN0RGF0YShyZXNwKT8uZGlzcGxheTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFNoYXJlZE9iamVjdEluaXRpYWxWZXJzaW9uKHJlc3A6IFN1aU9iamVjdFJlc3BvbnNlIHwgT2JqZWN0T3duZXIpOiBudW1iZXIgfCB1bmRlZmluZWQge1xuICBjb25zdCBvd25lciA9IGdldE9iamVjdE93bmVyKHJlc3ApO1xuICBpZiAodHlwZW9mIG93bmVyID09PSAnb2JqZWN0JyAmJiAnU2hhcmVkJyBpbiBvd25lcikge1xuICAgIHJldHVybiBvd25lci5TaGFyZWQuaW5pdGlhbF9zaGFyZWRfdmVyc2lvbjtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1NoYXJlZE9iamVjdChyZXNwOiBTdWlPYmplY3RSZXNwb25zZSB8IE9iamVjdE93bmVyKTogYm9vbGVhbiB7XG4gIGNvbnN0IG93bmVyID0gZ2V0T2JqZWN0T3duZXIocmVzcCk7XG4gIHJldHVybiB0eXBlb2Ygb3duZXIgPT09ICdvYmplY3QnICYmICdTaGFyZWQnIGluIG93bmVyO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNJbW11dGFibGVPYmplY3QocmVzcDogU3VpT2JqZWN0UmVzcG9uc2UgfCBPYmplY3RPd25lcik6IGJvb2xlYW4ge1xuICBjb25zdCBvd25lciA9IGdldE9iamVjdE93bmVyKHJlc3ApO1xuICByZXR1cm4gb3duZXIgPT09ICdJbW11dGFibGUnO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0TW92ZU9iamVjdFR5cGUocmVzcDogU3VpT2JqZWN0UmVzcG9uc2UpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICByZXR1cm4gZ2V0TW92ZU9iamVjdChyZXNwKT8udHlwZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldE9iamVjdEZpZWxkcyhcbiAgcmVzcDogU3VpT2JqZWN0UmVzcG9uc2UgfCBTdWlNb3ZlT2JqZWN0IHwgU3VpT2JqZWN0RGF0YVxuKTogT2JqZWN0Q29udGVudEZpZWxkcyB8IHVuZGVmaW5lZCB7XG4gIGlmICgnZmllbGRzJyBpbiByZXNwKSB7XG4gICAgcmV0dXJuIHJlc3AuZmllbGRzO1xuICB9XG4gIHJldHVybiBnZXRNb3ZlT2JqZWN0KHJlc3ApPy5maWVsZHM7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3VpT2JqZWN0RGF0YVdpdGhDb250ZW50IGV4dGVuZHMgU3VpT2JqZWN0RGF0YSB7XG4gIGNvbnRlbnQ6IFN1aVBhcnNlZERhdGE7XG59XG5cbmZ1bmN0aW9uIGlzU3VpT2JqZWN0RGF0YVdpdGhDb250ZW50KGRhdGE6IFN1aU9iamVjdERhdGEpOiBkYXRhIGlzIFN1aU9iamVjdERhdGFXaXRoQ29udGVudCB7XG4gIHJldHVybiBkYXRhLmNvbnRlbnQgIT09IHVuZGVmaW5lZDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldE1vdmVPYmplY3QoZGF0YTogU3VpT2JqZWN0UmVzcG9uc2UgfCBTdWlPYmplY3REYXRhKTogU3VpTW92ZU9iamVjdCB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IHN1aU9iamVjdCA9ICdkYXRhJyBpbiBkYXRhID8gZ2V0U3VpT2JqZWN0RGF0YShkYXRhKSA6IChkYXRhIGFzIFN1aU9iamVjdERhdGEpO1xuXG4gIGlmICghc3VpT2JqZWN0IHx8ICFpc1N1aU9iamVjdERhdGFXaXRoQ29udGVudChzdWlPYmplY3QpIHx8IHN1aU9iamVjdC5jb250ZW50LmRhdGFUeXBlICE9PSAnbW92ZU9iamVjdCcpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgcmV0dXJuIHN1aU9iamVjdC5jb250ZW50IGFzIFN1aU1vdmVPYmplY3Q7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBoYXNQdWJsaWNUcmFuc2ZlcihkYXRhOiBTdWlPYmplY3RSZXNwb25zZSB8IFN1aU9iamVjdERhdGEpOiBib29sZWFuIHtcbiAgcmV0dXJuIGdldE1vdmVPYmplY3QoZGF0YSk/Lmhhc1B1YmxpY1RyYW5zZmVyID8/IGZhbHNlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0TW92ZVBhY2thZ2VDb250ZW50KGRhdGE6IFN1aU9iamVjdFJlc3BvbnNlIHwgU3VpTW92ZVBhY2thZ2UpOiBNb3ZlUGFja2FnZUNvbnRlbnQgfCB1bmRlZmluZWQge1xuICBpZiAoJ2Rpc2Fzc2VtYmxlZCcgaW4gZGF0YSkge1xuICAgIHJldHVybiBkYXRhLmRpc2Fzc2VtYmxlZDtcbiAgfVxuICBjb25zdCBzdWlPYmplY3QgPSBnZXRTdWlPYmplY3REYXRhKGRhdGEpO1xuICBpZiAoc3VpT2JqZWN0Py5jb250ZW50Py5kYXRhVHlwZSAhPT0gJ3BhY2thZ2UnKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuICByZXR1cm4gKHN1aU9iamVjdC5jb250ZW50IGFzIFN1aU1vdmVQYWNrYWdlKS5kaXNhc3NlbWJsZWQ7XG59XG5cbmV4cG9ydCBjb25zdCBDaGVja3BvaW50ZWRPYmplY3RJZCA9IG9iamVjdCh7XG4gIG9iamVjdElkOiBPYmplY3RJZCxcbiAgYXRDaGVja3BvaW50OiBvcHRpb25hbChudW1iZXIoKSksXG59KTtcbmV4cG9ydCB0eXBlIENoZWNrcG9pbnRlZE9iamVjdElkID0gSW5mZXI8dHlwZW9mIENoZWNrcG9pbnRlZE9iamVjdElkPjtcblxuZXhwb3J0IGNvbnN0IFBhZ2luYXRlZE9iamVjdHNSZXNwb25zZSA9IG9iamVjdCh7XG4gIGRhdGE6IGFycmF5KFN1aU9iamVjdFJlc3BvbnNlKSxcbiAgbmV4dEN1cnNvcjogb3B0aW9uYWwoQ2hlY2twb2ludGVkT2JqZWN0SWQpLFxuICBoYXNOZXh0UGFnZTogYm9vbGVhbigpLFxufSk7XG5leHBvcnQgdHlwZSBQYWdpbmF0ZWRPYmplY3RzUmVzcG9uc2UgPSBJbmZlcjx0eXBlb2YgUGFnaW5hdGVkT2JqZWN0c1Jlc3BvbnNlPjtcblxuLy8gbWlycm9ycyBzdWlfanNvbl9ycGNfdHlwZXM6OiBTdWlPYmplY3REYXRhRmlsdGVyXG5leHBvcnQgdHlwZSBTdWlPYmplY3REYXRhRmlsdGVyID1cbiAgfCB7IFBhY2thZ2U6IE9iamVjdElkIH1cbiAgfCB7IE1vdmVNb2R1bGU6IHsgcGFja2FnZTogT2JqZWN0SWQ7IG1vZHVsZTogc3RyaW5nIH0gfVxuICB8IHsgU3RydWN0VHlwZTogc3RyaW5nIH07XG5cbmV4cG9ydCB0eXBlIFN1aU9iamVjdFJlc3BvbnNlUXVlcnkgPSB7XG4gIGZpbHRlcj86IFN1aU9iamVjdERhdGFGaWx0ZXI7XG4gIG9wdGlvbnM/OiBTdWlPYmplY3REYXRhT3B0aW9ucztcbn07XG4iXX0=
302
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JqZWN0cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvbXlzdGVubGFiL3R5cGVzL29iamVjdHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsNkNBY3FCO0FBQ3JCLHFDQUFvRjtBQUd2RSxRQUFBLFVBQVUsR0FBRyxJQUFBLG1CQUFLLEVBQUMsQ0FBQyxJQUFBLG9CQUFNLEdBQUUsRUFBRSxJQUFBLHFCQUFPLEVBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBR25ELFFBQUEsWUFBWSxHQUFHLElBQUEsb0JBQU0sRUFBQztJQUNqQyxtREFBbUQ7SUFDbkQsTUFBTSxFQUFFLDBCQUFpQjtJQUN6QixvREFBb0Q7SUFDcEQsUUFBUSxFQUFFLElBQUEsb0JBQU0sR0FBRTtJQUNsQixxQkFBcUI7SUFDckIsT0FBTyxFQUFFLElBQUEsbUJBQUssRUFBQyxDQUFDLElBQUEsb0JBQU0sR0FBRSxFQUFFLElBQUEsb0JBQU0sR0FBRSxDQUFDLENBQUM7Q0FDckMsQ0FBQyxDQUFDO0FBR1UsUUFBQSxVQUFVLEdBQUcsSUFBQSxvQkFBTSxFQUFDO0lBQy9CLE9BQU8sRUFBRSxJQUFBLG1CQUFLLEVBQUMsb0JBQVksQ0FBQztJQUM1Qix5QkFBeUI7SUFDekIsS0FBSyxFQUFFLElBQUEsb0JBQU0sR0FBRTtJQUNmLEtBQUssRUFBRSxJQUFBLG9CQUFNLEdBQUU7SUFDZixNQUFNLEVBQUUsSUFBQSxvQkFBTSxHQUFFO0NBQ2pCLENBQUMsQ0FBQztBQUdVLFFBQUEsYUFBYSxHQUFHLElBQUEsb0JBQU0sRUFDakMsb0JBQVksRUFDWixJQUFBLG9CQUFNLEVBQUM7SUFDTCxJQUFJLEVBQUUsSUFBQSxvQkFBTSxHQUFFO0lBQ2QsS0FBSyxFQUFFLG9CQUFXO0lBQ2xCLG1CQUFtQixFQUFFLDBCQUFpQjtDQUN2QyxDQUFDLENBQ0gsQ0FBQztBQUdXLFFBQUEsbUJBQW1CLEdBQUcsSUFBQSxvQkFBTSxFQUFD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QUFNLEdBQUUsQ0FBQztDQUNqQyxDQUFDLENBQUM7QUFHVSxRQUFBLHdCQUF3QixHQUFHLElBQUEsb0JBQU0sRUFBQztJQUM3QyxJQUFJLEVBQUUsSUFBQSxtQkFBSyxFQUFDLHlCQUFpQixDQUFDO0lBQzlCLFVBQVUsRUFBRSxJQUFBLHNCQUFRLEVBQUMsNEJBQW9CLENBQUM7SUFDMUMsV0FBVyxFQUFFLElBQUEscUJBQU8sR0FBRTtDQUN2QixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBhbnksXG4gIGFycmF5LFxuICBhc3NpZ24sXG4gIGJvb2xlYW4sXG4gIEluZmVyLFxuICBsaXRlcmFsLFxuICBudW1iZXIsXG4gIG9iamVjdCxcbiAgb3B0aW9uYWwsXG4gIHJlY29yZCxcbiAgc3RyaW5nLFxuICB1bmlvbixcbiAgaXMsXG59IGZyb20gJ3N1cGVyc3RydWN0JztcbmltcG9ydCB7IE9iamVjdElkLCBPYmplY3RPd25lciwgU2VxdWVuY2VOdW1iZXIsIFRyYW5zYWN0aW9uRGlnZXN0IH0gZnJvbSAnLi9jb21tb24nO1xuaW1wb3J0IHsgT3duZWRPYmplY3RSZWYgfSBmcm9tICcuL3RyYW5zYWN0aW9ucyc7XG5cbmV4cG9ydCBjb25zdCBPYmplY3RUeXBlID0gdW5pb24oW3N0cmluZygpLCBsaXRlcmFsKCdwYWNrYWdlJyldKTtcbmV4cG9ydCB0eXBlIE9iamVjdFR5cGUgPSBJbmZlcjx0eXBlb2YgT2JqZWN0VHlwZT47XG5cbmV4cG9ydCBjb25zdCBTdWlPYmplY3RSZWYgPSBvYmplY3Qoe1xuICAvKiogQmFzZTY0IHN0cmluZyByZXByZXNlbnRpbmcgdGhlIG9iamVjdCBkaWdlc3QgKi9cbiAgZGlnZXN0OiBUcmFuc2FjdGlvbkRpZ2VzdCxcbiAgLyoqIEhleCBjb2RlIGFzIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIG9iamVjdCBpZCAqL1xuICBvYmplY3RJZDogc3RyaW5nKCksXG4gIC8qKiBPYmplY3QgdmVyc2lvbiAqL1xuICB2ZXJzaW9uOiB1bmlvbihbbnVtYmVyKCksIHN0cmluZygpXSksXG59KTtcbmV4cG9ydCB0eXBlIFN1aU9iamVjdFJlZiA9IEluZmVyPHR5cGVvZiBTdWlPYmplY3RSZWY+O1xuXG5leHBvcnQgY29uc3QgU3VpR2FzRGF0YSA9IG9iamVjdCh7XG4gIHBheW1lbnQ6IGFycmF5KFN1aU9iamVjdFJlZiksXG4gIC8qKiBHYXMgT2JqZWN0J3Mgb3duZXIgKi9cbiAgb3duZXI6IHN0cmluZygpLFxuICBwcmljZTogbnVtYmVyKCksXG4gIGJ1ZGdldDogbnVtYmVyKCksXG59KTtcbmV4cG9ydCB0eXBlIFN1aUdhc0RhdGEgPSBJbmZlcjx0eXBlb2YgU3VpR2FzRGF0YT47XG5cbmV4cG9ydCBjb25zdCBTdWlPYmplY3RJbmZvID0gYXNzaWduKFxuICBTdWlPYmplY3RSZWYsXG4gIG9iamVjdCh7XG4gICAgdHlwZTogc3RyaW5nKCksXG4gICAgb3duZXI6IE9iamVjdE93bmVyLFxuICAgIHByZXZpb3VzVHJhbnNhY3Rpb246IFRyYW5zYWN0aW9uRGlnZXN0LFxuICB9KVxuKTtcbmV4cG9ydCB0eXBlIFN1aU9iamVjdEluZm8gPSBJbmZlcjx0eXBlb2YgU3VpT2JqZWN0SW5mbz47XG5cbmV4cG9ydCBjb25zdCBPYmplY3RDb250ZW50RmllbGRzID0gcmVjb3JkKHN0cmluZygpLCBhbnkoKSk7XG5leHBvcnQgdHlwZSBPYmplY3RDb250ZW50RmllbGRzID0gSW5mZXI8dHlwZW9mIE9iamVjdENvbnRlbnRGaWVsZHM+O1xuXG5leHBvcnQgY29uc3QgTW92ZVBhY2thZ2VDb250ZW50ID0gcmVjb3JkKHN0cmluZygpLCBzdHJpbmcoKSk7XG5leHBvcnQgdHlwZSBNb3ZlUGFja2FnZUNvbnRlbnQgPSBJbmZlcjx0eXBlb2YgTW92ZVBhY2thZ2VDb250ZW50PjtcblxuZXhwb3J0IGNvbnN0IFN1aU1vdmVPYmplY3QgPSBvYmplY3Qoe1xuICAvKiogTW92ZSB0eXBlIChlLmcuLCBcIjB4Mjo6Y29pbjo6Q29pbjwweDI6OnN1aTo6U1VJPlwiKSAqL1xuICB0eXBlOiBzdHJpbmcoKSxcbiAgLyoqIEZpZWxkcyBhbmQgdmFsdWVzIHN0b3JlZCBpbnNpZGUgdGhlIE1vdmUgb2JqZWN0ICovXG4gIGZpZWxkczogT2JqZWN0Q29udGVudEZpZWxkcyxcbiAgaGFzUHVibGljVHJhbnNmZXI6IGJvb2xlYW4oKSxcbn0pO1xuZXhwb3J0IHR5cGUgU3VpTW92ZU9iamVjdCA9IEluZmVyPHR5cGVvZiBTdWlNb3ZlT2JqZWN0PjtcblxuZXhwb3J0IGNvbnN0IFN1aU1vdmVQYWNrYWdlID0gb2JqZWN0KHtcbiAgLyoqIEEgbWFwcGluZyBmcm9tIG1vZHVsZSBuYW1lIHRvIGRpc2Fzc2VtYmxlZCBNb3ZlIGJ5dGVjb2RlICovXG4gIGRpc2Fzc2VtYmxlZDogTW92ZVBhY2thZ2VDb250ZW50LFxufSk7XG5leHBvcnQgdHlwZSBTdWlNb3ZlUGFja2FnZSA9IEluZmVyPHR5cGVvZiBTdWlNb3ZlUGFja2FnZT47XG5cbmV4cG9ydCBjb25zdCBTdWlQYXJzZWREYXRhID0gdW5pb24oW1xuICBhc3NpZ24oU3VpTW92ZU9iamVjdCwgb2JqZWN0KHsgZGF0YVR5cGU6IGxpdGVyYWwoJ21vdmVPYmplY3QnKSB9KSksXG4gIGFzc2lnbihTdWlNb3ZlUGFja2FnZSwgb2JqZWN0KHsgZGF0YVR5cGU6IGxpdGVyYWwoJ3BhY2thZ2UnKSB9KSksXG5dKTtcbmV4cG9ydCB0eXBlIFN1aVBhcnNlZERhdGEgPSBJbmZlcjx0eXBlb2YgU3VpUGFyc2VkRGF0YT47XG5cbmV4cG9ydCBjb25zdCBTdWlSYXdNb3ZlT2JqZWN0ID0gb2JqZWN0KHtcbiAgLyoqIE1vdmUgdHlwZSAoZS5nLiwgXCIweDI6OmNvaW46OkNvaW48MHgyOjpzdWk6OlNVST5cIikgKi9cbiAgdHlwZTogc3RyaW5nKCksXG4gIGhhc1B1YmxpY1RyYW5zZmVyOiBib29sZWFuKCksXG4gIHZlcnNpb246IFNlcXVlbmNlTnVtYmVyLFxuICBiY3NCeXRlczogYXJyYXkobnVtYmVyKCkpLFxufSk7XG5leHBvcnQgdHlwZSBTdWlSYXdNb3ZlT2JqZWN0ID0gSW5mZXI8dHlwZW9mIFN1aVJhd01vdmVPYmplY3Q+O1xuXG5leHBvcnQgY29uc3QgU3VpUmF3TW92ZVBhY2thZ2UgPSBvYmplY3Qoe1xuICBpZDogT2JqZWN0SWQsXG4gIC8qKiBBIG1hcHBpbmcgZnJvbSBtb2R1bGUgbmFtZSB0byBNb3ZlIGJ5dGVjb2RlIGVub2NkZWQgaW4gYmFzZTY0Ki9cbiAgbW9kdWxlTWFwOiByZWNvcmQoc3RyaW5nKCksIHN0cmluZygpKSxcbn0pO1xuZXhwb3J0IHR5cGUgU3VpUmF3TW92ZVBhY2thZ2UgPSBJbmZlcjx0eXBlb2YgU3VpUmF3TW92ZVBhY2thZ2U+O1xuXG4vLyBUT0RPKGNocmlzKTogY29uc29saWRhdGUgU3VpUmF3UGFyc2VkRGF0YSBhbmQgU3VpUmF3T2JqZWN0IHVzaW5nIGdlbmVyaWNzXG5leHBvcnQgY29uc3QgU3VpUmF3RGF0YSA9IHVuaW9uKFtcbiAgYXNzaWduKFN1aU1vdmVPYmplY3QsIG9iamVjdCh7IGRhdGFUeXBlOiBsaXRlcmFsKCdtb3ZlT2JqZWN0JykgfSkpLFxuICBhc3NpZ24oU3VpUmF3TW92ZVBhY2thZ2UsIG9iamVjdCh7IGRhdGFUeXBlOiBsaXRlcmFsKCdwYWNrYWdlJykgfSkpLFxuXSk7XG5leHBvcnQgdHlwZSBTdWlSYXdEYXRhID0gSW5mZXI8dHlwZW9mIFN1aVJhd0RhdGE+O1xuXG5leHBvcnQgY29uc3QgTUlTVF9QRVJfU1VJID0gQmlnSW50KDEwMDAwMDAwMDApO1xuXG5leHBvcnQgY29uc3QgT2JqZWN0RGlnZXN0ID0gc3RyaW5nKCk7XG5leHBvcnQgdHlwZSBPYmplY3REaWdlc3QgPSBJbmZlcjx0eXBlb2YgT2JqZWN0RGlnZXN0PjtcblxuZXhwb3J0IGNvbnN0IFN1aU9iamVjdERhdGEgPSBvYmplY3Qoe1xuICBvYmplY3RJZDogT2JqZWN0SWQsXG4gIHZlcnNpb246IFNlcXVlbmNlTnVtYmVyLFxuICBkaWdlc3Q6IE9iamVjdERpZ2VzdCxcbiAgLyoqXG4gICAqIFR5cGUgb2YgdGhlIG9iamVjdCwgZGVmYXVsdCB0byBiZSB1bmRlZmluZWQgdW5sZXNzIFN1aU9iamVjdERhdGFPcHRpb25zLnNob3dUeXBlIGlzIHNldCB0byB0cnVlXG4gICAqL1xuICB0eXBlOiBvcHRpb25hbChzdHJpbmcoKSksXG4gIC8qKlxuICAgKiBNb3ZlIG9iamVjdCBjb250ZW50IG9yIHBhY2thZ2UgY29udGVudCwgZGVmYXVsdCB0byBiZSB1bmRlZmluZWQgdW5sZXNzIFN1aU9iamVjdERhdGFPcHRpb25zLnNob3dDb250ZW50IGlzIHNldCB0byB0cnVlXG4gICAqL1xuICBjb250ZW50OiBvcHRpb25hbChTdWlQYXJzZWREYXRhKSxcbiAgLyoqXG4gICAqIE1vdmUgb2JqZWN0IGNvbnRlbnQgb3IgcGFja2FnZSBjb250ZW50IGluIEJDUyBieXRlcywgZGVmYXVsdCB0byBiZSB1bmRlZmluZWQgdW5sZXNzIFN1aU9iamVjdERhdGFPcHRpb25zLnNob3dCY3MgaXMgc2V0IHRvIHRydWVcbiAgICovXG4gIGJjczogb3B0aW9uYWwoU3VpUmF3RGF0YSksXG4gIC8qKlxuICAgKiBUaGUgb3duZXIgb2YgdGhpcyBvYmplY3QuIERlZmF1bHQgdG8gYmUgdW5kZWZpbmVkIHVubGVzcyBTdWlPYmplY3REYXRhT3B0aW9ucy5zaG93T3duZXIgaXMgc2V0IHRvIHRydWVcbiAgICovXG4gIG93bmVyOiBvcHRpb25hbChPYmplY3RPd25lciksXG4gIC8qKlxuICAgKiBUaGUgZGlnZXN0IG9mIHRoZSB0cmFuc2FjdGlvbiB0aGF0IGNyZWF0ZWQgb3IgbGFzdCBtdXRhdGVkIHRoaXMgb2JqZWN0LlxuICAgKiBEZWZhdWx0IHRvIGJlIHVuZGVmaW5lZCB1bmxlc3MgU3VpT2JqZWN0RGF0YU9wdGlvbnMuc2hvd1ByZXZpb3VzVHJhbnNhY3Rpb24gaXMgc2V0IHRvIHRydWVcbiAgICovXG4gIHByZXZpb3VzVHJhbnNhY3Rpb246IG9wdGlvbmFsKFRyYW5zYWN0aW9uRGlnZXN0KSxcbiAgLyoqXG4gICAqIFRoZSBhbW91bnQgb2YgU1VJIHdlIHdvdWxkIHJlYmF0ZSBpZiB0aGlzIG9iamVjdCBnZXRzIGRlbGV0ZWQuXG4gICAqIFRoaXMgbnVtYmVyIGlzIHJlLWNhbGN1bGF0ZWQgZWFjaCB0aW1lIHRoZSBvYmplY3QgaXMgbXV0YXRlZCBiYXNlZCBvblxuICAgKiB0aGUgcHJlc2VudCBzdG9yYWdlIGdhcyBwcmljZS5cbiAgICogRGVmYXVsdCB0byBiZSB1bmRlZmluZWQgdW5sZXNzIFN1aU9iamVjdERhdGFPcHRpb25zLnNob3dTdG9yYWdlUmViYXRlIGlzIHNldCB0byB0cnVlXG4gICAqL1xuICBzdG9yYWdlUmViYXRlOiBvcHRpb25hbChudW1iZXIoKSksXG4gIC8qKlxuICAgKiBEaXNwbGF5IG1ldGFkYXRhIGZvciB0aGlzIG9iamVjdCwgZGVmYXVsdCB0byBiZSB1bmRlZmluZWQgdW5sZXNzIFN1aU9iamVjdERhdGFPcHRpb25zLnNob3dEaXNwbGF5IGlzIHNldCB0byB0cnVlXG4gICAqIFRoaXMgY2FuIGFsc28gYmUgTm9uZSBpZiB0aGUgc3RydWN0IHR5cGUgZG9lcyBub3QgaGF2ZSBEaXNwbGF5IGRlZmluZWRcbiAgICogU2VlIG1vcmUgZGV0YWlscyBpbiBodHRwczovL2ZvcnVtcy5zdWkuaW8vdC9uZnQtb2JqZWN0LWRpc3BsYXktcHJvcG9zYWwvNDg3MlxuICAgKi9cbiAgZGlzcGxheTogb3B0aW9uYWwocmVjb3JkKHN0cmluZygpLCBzdHJpbmcoKSkpLFxufSk7XG5leHBvcnQgdHlwZSBTdWlPYmplY3REYXRhID0gSW5mZXI8dHlwZW9mIFN1aU9iamVjdERhdGE+O1xuXG4vKipcbiAqIENvbmZpZyBmb3IgZmV0Y2hpbmcgb2JqZWN0IGRhdGFcbiAqL1xuZXhwb3J0IGNvbnN0IFN1aU9iamVjdERhdGFPcHRpb25zID0gb2JqZWN0KHtcbiAgLyogV2hldGhlciB0byBmZXRjaCB0aGUgb2JqZWN0IHR5cGUsIGRlZmF1bHQgdG8gYmUgdHJ1ZSAqL1xuICBzaG93VHlwZTogb3B0aW9uYWwoYm9vbGVhbigpKSxcbiAgLyogV2hldGhlciB0byBmZXRjaCB0aGUgb2JqZWN0IGNvbnRlbnQsIGRlZmF1bHQgdG8gYmUgZmFsc2UgKi9cbiAgc2hvd0NvbnRlbnQ6IG9wdGlvbmFsKGJvb2xlYW4oKSksXG4gIC8qIFdoZXRoZXIgdG8gZmV0Y2ggdGhlIG9iamVjdCBjb250ZW50IGluIEJDUyBieXRlcywgZGVmYXVsdCB0byBiZSBmYWxzZSAqL1xuICBzaG93QmNzOiBvcHRpb25hbChib29sZWFuKCkpLFxuICAvKiBXaGV0aGVyIHRvIGZldGNoIHRoZSBvYmplY3Qgb3duZXIsIGRlZmF1bHQgdG8gYmUgZmFsc2UgKi9cbiAgc2hvd093bmVyOiBvcHRpb25hbChib29sZWFuKCkpLFxuICAvKiBXaGV0aGVyIHRvIGZldGNoIHRoZSBwcmV2aW91cyB0cmFuc2FjdGlvbiBkaWdlc3QsIGRlZmF1bHQgdG8gYmUgZmFsc2UgKi9cbiAgc2hvd1ByZXZpb3VzVHJhbnNhY3Rpb246IG9wdGlvbmFsKGJvb2xlYW4oKSksXG4gIC8qIFdoZXRoZXIgdG8gZmV0Y2ggdGhlIHN0b3JhZ2UgcmViYXRlLCBkZWZhdWx0IHRvIGJlIGZhbHNlICovXG4gIHNob3dTdG9yYWdlUmViYXRlOiBvcHRpb25hbChib29sZWFuKCkpLFxuICAvKiBXaGV0aGVyIHRvIGZldGNoIHRoZSBkaXNwbGF5IG1ldGFkYXRhLCBkZWZhdWx0IHRvIGJlIGZhbHNlICovXG4gIHNob3dEaXNwbGF5OiBvcHRpb25hbChib29sZWFuKCkpLFxufSk7XG5leHBvcnQgdHlwZSBTdWlPYmplY3REYXRhT3B0aW9ucyA9IEluZmVyPHR5cGVvZiBTdWlPYmplY3REYXRhT3B0aW9ucz47XG5cbmV4cG9ydCBjb25zdCBPYmplY3RTdGF0dXMgPSB1bmlvbihbbGl0ZXJhbCgnRXhpc3RzJyksIGxpdGVyYWwoJ05vdEV4aXN0cycpLCBsaXRlcmFsKCdEZWxldGVkJyldKTtcbmV4cG9ydCB0eXBlIE9iamVjdFN0YXR1cyA9IEluZmVyPHR5cGVvZiBPYmplY3RTdGF0dXM+O1xuXG5leHBvcnQgY29uc3QgR2V0T3duZWRPYmplY3RzUmVzcG9uc2UgPSBhcnJheShTdWlPYmplY3RJbmZvKTtcbmV4cG9ydCB0eXBlIEdldE93bmVkT2JqZWN0c1Jlc3BvbnNlID0gSW5mZXI8dHlwZW9mIEdldE93bmVkT2JqZWN0c1Jlc3BvbnNlPjtcblxuZXhwb3J0IGNvbnN0IFN1aU9iamVjdFJlc3BvbnNlRXJyb3IgPSBvYmplY3Qoe1xuICB0YWc6IHN0cmluZygpLFxuICBvYmplY3RfaWQ6IG9wdGlvbmFsKE9iamVjdElkKSxcbiAgdmVyc2lvbjogb3B0aW9uYWwoU2VxdWVuY2VOdW1iZXIpLFxuICBkaWdlc3Q6IG9wdGlvbmFsKE9iamVjdERpZ2VzdCksXG59KTtcbmV4cG9ydCB0eXBlIFN1aU9iamVjdFJlc3BvbnNlRXJyb3IgPSBJbmZlcjx0eXBlb2YgU3VpT2JqZWN0UmVzcG9uc2VFcnJvcj47XG5cbmV4cG9ydCBjb25zdCBTdWlPYmplY3RSZXNwb25zZSA9IG9iamVjdCh7XG4gIGRhdGE6IG9wdGlvbmFsKFN1aU9iamVjdERhdGEpLFxuICBlcnJvcjogb3B0aW9uYWwoU3VpT2JqZWN0UmVzcG9uc2VFcnJvciksXG59KTtcbmV4cG9ydCB0eXBlIFN1aU9iamVjdFJlc3BvbnNlID0gSW5mZXI8dHlwZW9mIFN1aU9iamVjdFJlc3BvbnNlPjtcblxuZXhwb3J0IHR5cGUgT3JkZXIgPSAnYXNjZW5kaW5nJyB8ICdkZXNjZW5kaW5nJztcblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cbi8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSGVscGVyIGZ1bmN0aW9ucyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBTdWlPYmplY3RSZXNwb25zZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRTdWlPYmplY3REYXRhKHJlc3A6IFN1aU9iamVjdFJlc3BvbnNlKTogU3VpT2JqZWN0RGF0YSB8IHVuZGVmaW5lZCB7XG4gIHJldHVybiByZXNwLmRhdGE7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRPYmplY3REZWxldGVkUmVzcG9uc2UocmVzcDogU3VpT2JqZWN0UmVzcG9uc2UpOiBTdWlPYmplY3RSZWYgfCB1bmRlZmluZWQge1xuICBpZiAocmVzcC5lcnJvciAmJiAnb2JqZWN0X2lkJyBpbiByZXNwLmVycm9yICYmICd2ZXJzaW9uJyBpbiByZXNwLmVycm9yICYmICdkaWdlc3QnIGluIHJlc3AuZXJyb3IpIHtcbiAgICBjb25zdCBlcnJvciA9IHJlc3AuZXJyb3IgYXMgU3VpT2JqZWN0UmVzcG9uc2VFcnJvcjtcbiAgICByZXR1cm4ge1xuICAgICAgb2JqZWN0SWQ6IGVycm9yLm9iamVjdF9pZCxcbiAgICAgIHZlcnNpb246IGVycm9yLnZlcnNpb24sXG4gICAgICBkaWdlc3Q6IGVycm9yLmRpZ2VzdCxcbiAgICB9IGFzIFN1aU9iamVjdFJlZjtcbiAgfVxuXG4gIHJldHVybiB1bmRlZmluZWQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRPYmplY3ROb3RFeGlzdHNSZXNwb25zZShyZXNwOiBTdWlPYmplY3RSZXNwb25zZSk6IE9iamVjdElkIHwgdW5kZWZpbmVkIHtcbiAgaWYgKHJlc3AuZXJyb3IgJiYgJ29iamVjdF9pZCcgaW4gcmVzcC5lcnJvciAmJiAhKCd2ZXJzaW9uJyBpbiByZXNwLmVycm9yKSAmJiAhKCdkaWdlc3QnIGluIHJlc3AuZXJyb3IpKSB7XG4gICAgcmV0dXJuIChyZXNwLmVycm9yIGFzIFN1aU9iamVjdFJlc3BvbnNlRXJyb3IpLm9iamVjdF9pZCBhcyBPYmplY3RJZDtcbiAgfVxuXG4gIHJldHVybiB1bmRlZmluZWQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRPYmplY3RSZWZlcmVuY2UocmVzcDogU3VpT2JqZWN0UmVzcG9uc2UgfCBPd25lZE9iamVjdFJlZik6IFN1aU9iamVjdFJlZiB8IHVuZGVmaW5lZCB7XG4gIGlmICgncmVmZXJlbmNlJyBpbiByZXNwKSB7XG4gICAgcmV0dXJuIHJlc3AucmVmZXJlbmNlO1xuICB9XG4gIGNvbnN0IGV4aXN0cyA9IGdldFN1aU9iamVjdERhdGEocmVzcCk7XG4gIGlmIChleGlzdHMpIHtcbiAgICByZXR1cm4ge1xuICAgICAgb2JqZWN0SWQ6IGV4aXN0cy5vYmplY3RJZCxcbiAgICAgIHZlcnNpb246IGV4aXN0cy52ZXJzaW9uLFxuICAgICAgZGlnZXN0OiBleGlzdHMuZGlnZXN0LFxuICAgIH07XG4gIH1cbiAgcmV0dXJuIGdldE9iamVjdERlbGV0ZWRSZXNwb25zZShyZXNwKTtcbn1cblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFN1aU9iamVjdFJlZiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIGdldE9iamVjdElkKGRhdGE6IFN1aU9iamVjdFJlc3BvbnNlIHwgU3VpT2JqZWN0UmVmIHwgT3duZWRPYmplY3RSZWYpOiBPYmplY3RJZCB7XG4gIGlmICgnb2JqZWN0SWQnIGluIGRhdGEpIHtcbiAgICByZXR1cm4gZGF0YS5vYmplY3RJZDtcbiAgfVxuICByZXR1cm4gZ2V0T2JqZWN0UmVmZXJlbmNlKGRhdGEpPy5vYmplY3RJZCA/PyBnZXRPYmplY3ROb3RFeGlzdHNSZXNwb25zZShkYXRhIGFzIFN1aU9iamVjdFJlc3BvbnNlKSE7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRPYmplY3RWZXJzaW9uKGRhdGE6IFN1aU9iamVjdFJlc3BvbnNlIHwgU3VpT2JqZWN0UmVmIHwgU3VpT2JqZWN0RGF0YSk6IHN0cmluZyB8IG51bWJlciB8IHVuZGVmaW5lZCB7XG4gIGlmICgndmVyc2lvbicgaW4gZGF0YSkge1xuICAgIHJldHVybiBkYXRhLnZlcnNpb247XG4gIH1cbiAgcmV0dXJuIGdldE9iamVjdFJlZmVyZW5jZShkYXRhKT8udmVyc2lvbjtcbn1cblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gU3VpT2JqZWN0IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIGlzU3VpT2JqZWN0UmVzcG9uc2UocmVzcDogU3VpT2JqZWN0UmVzcG9uc2UgfCBTdWlPYmplY3REYXRhKTogcmVzcCBpcyBTdWlPYmplY3RSZXNwb25zZSB7XG4gIHJldHVybiAocmVzcCBhcyBTdWlPYmplY3RSZXNwb25zZSkuZGF0YSAhPT0gdW5kZWZpbmVkO1xufVxuXG4vKipcbiAqIERlcml2aW5nIHRoZSBvYmplY3QgdHlwZSBmcm9tIHRoZSBvYmplY3QgcmVzcG9uc2VcbiAqIEByZXR1cm5zICdwYWNrYWdlJyBpZiB0aGUgb2JqZWN0IGlzIGEgcGFja2FnZSwgbW92ZSBvYmplY3QgdHlwZShlLmcuLCAweDI6OmNvaW46OkNvaW48MHgyOjpzdWk6OlNVST4pXG4gKiBpZiB0aGUgb2JqZWN0IGlzIGEgbW92ZSBvYmplY3RcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldE9iamVjdFR5cGUocmVzcDogU3VpT2JqZWN0UmVzcG9uc2UgfCBTdWlPYmplY3REYXRhKTogT2JqZWN0VHlwZSB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IGRhdGEgPSBpc1N1aU9iamVjdFJlc3BvbnNlKHJlc3ApID8gcmVzcC5kYXRhIDogcmVzcDtcblxuICBpZiAoIWRhdGE/LnR5cGUgJiYgJ2RhdGEnIGluIHJlc3ApIHtcbiAgICBpZiAoZGF0YT8uY29udGVudD8uZGF0YVR5cGUgPT09ICdwYWNrYWdlJykge1xuICAgICAgcmV0dXJuICdwYWNrYWdlJztcbiAgICB9XG4gICAgcmV0dXJuIGdldE1vdmVPYmplY3RUeXBlKHJlc3ApO1xuICB9XG4gIHJldHVybiBkYXRhPy50eXBlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0T2JqZWN0UHJldmlvdXNUcmFuc2FjdGlvbkRpZ2VzdChyZXNwOiBTdWlPYmplY3RSZXNwb25zZSk6IFRyYW5zYWN0aW9uRGlnZXN0IHwgdW5kZWZpbmVkIHtcbiAgcmV0dXJuIGdldFN1aU9iamVjdERhdGEocmVzcCk/LnByZXZpb3VzVHJhbnNhY3Rpb247XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRPYmplY3RPd25lcihyZXNwOiBTdWlPYmplY3RSZXNwb25zZSB8IE9iamVjdE93bmVyKTogT2JqZWN0T3duZXIgfCB1bmRlZmluZWQge1xuICBpZiAoaXMocmVzcCwgT2JqZWN0T3duZXIpKSB7XG4gICAgcmV0dXJuIHJlc3A7XG4gIH1cbiAgcmV0dXJuIGdldFN1aU9iamVjdERhdGEocmVzcCk/Lm93bmVyO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0T2JqZWN0RGlzcGxheShyZXNwOiBTdWlPYmplY3RSZXNwb25zZSk6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gfCB1bmRlZmluZWQge1xuICByZXR1cm4gZ2V0U3VpT2JqZWN0RGF0YShyZXNwKT8uZGlzcGxheTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFNoYXJlZE9iamVjdEluaXRpYWxWZXJzaW9uKHJlc3A6IFN1aU9iamVjdFJlc3BvbnNlIHwgT2JqZWN0T3duZXIpOiBudW1iZXIgfCB1bmRlZmluZWQge1xuICBjb25zdCBvd25lciA9IGdldE9iamVjdE93bmVyKHJlc3ApO1xuICBpZiAodHlwZW9mIG93bmVyID09PSAnb2JqZWN0JyAmJiAnU2hhcmVkJyBpbiBvd25lcikge1xuICAgIHJldHVybiBvd25lci5TaGFyZWQuaW5pdGlhbF9zaGFyZWRfdmVyc2lvbjtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1NoYXJlZE9iamVjdChyZXNwOiBTdWlPYmplY3RSZXNwb25zZSB8IE9iamVjdE93bmVyKTogYm9vbGVhbiB7XG4gIGNvbnN0IG93bmVyID0gZ2V0T2JqZWN0T3duZXIocmVzcCk7XG4gIHJldHVybiB0eXBlb2Ygb3duZXIgPT09ICdvYmplY3QnICYmICdTaGFyZWQnIGluIG93bmVyO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNJbW11dGFibGVPYmplY3QocmVzcDogU3VpT2JqZWN0UmVzcG9uc2UgfCBPYmplY3RPd25lcik6IGJvb2xlYW4ge1xuICBjb25zdCBvd25lciA9IGdldE9iamVjdE93bmVyKHJlc3ApO1xuICByZXR1cm4gb3duZXIgPT09ICdJbW11dGFibGUnO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0TW92ZU9iamVjdFR5cGUocmVzcDogU3VpT2JqZWN0UmVzcG9uc2UpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICByZXR1cm4gZ2V0TW92ZU9iamVjdChyZXNwKT8udHlwZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldE9iamVjdEZpZWxkcyhcbiAgcmVzcDogU3VpT2JqZWN0UmVzcG9uc2UgfCBTdWlNb3ZlT2JqZWN0IHwgU3VpT2JqZWN0RGF0YVxuKTogT2JqZWN0Q29udGVudEZpZWxkcyB8IHVuZGVmaW5lZCB7XG4gIGlmICgnZmllbGRzJyBpbiByZXNwKSB7XG4gICAgcmV0dXJuIHJlc3AuZmllbGRzO1xuICB9XG4gIHJldHVybiBnZXRNb3ZlT2JqZWN0KHJlc3ApPy5maWVsZHM7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3VpT2JqZWN0RGF0YVdpdGhDb250ZW50IGV4dGVuZHMgU3VpT2JqZWN0RGF0YSB7XG4gIGNvbnRlbnQ6IFN1aVBhcnNlZERhdGE7XG59XG5cbmZ1bmN0aW9uIGlzU3VpT2JqZWN0RGF0YVdpdGhDb250ZW50KGRhdGE6IFN1aU9iamVjdERhdGEpOiBkYXRhIGlzIFN1aU9iamVjdERhdGFXaXRoQ29udGVudCB7XG4gIHJldHVybiBkYXRhLmNvbnRlbnQgIT09IHVuZGVmaW5lZDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldE1vdmVPYmplY3QoZGF0YTogU3VpT2JqZWN0UmVzcG9uc2UgfCBTdWlPYmplY3REYXRhKTogU3VpTW92ZU9iamVjdCB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IHN1aU9iamVjdCA9ICdkYXRhJyBpbiBkYXRhID8gZ2V0U3VpT2JqZWN0RGF0YShkYXRhKSA6IChkYXRhIGFzIFN1aU9iamVjdERhdGEpO1xuXG4gIGlmICghc3VpT2JqZWN0IHx8ICFpc1N1aU9iamVjdERhdGFXaXRoQ29udGVudChzdWlPYmplY3QpIHx8IHN1aU9iamVjdC5jb250ZW50LmRhdGFUeXBlICE9PSAnbW92ZU9iamVjdCcpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgcmV0dXJuIHN1aU9iamVjdC5jb250ZW50IGFzIFN1aU1vdmVPYmplY3Q7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBoYXNQdWJsaWNUcmFuc2ZlcihkYXRhOiBTdWlPYmplY3RSZXNwb25zZSB8IFN1aU9iamVjdERhdGEpOiBib29sZWFuIHtcbiAgcmV0dXJuIGdldE1vdmVPYmplY3QoZGF0YSk/Lmhhc1B1YmxpY1RyYW5zZmVyID8/IGZhbHNlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0TW92ZVBhY2thZ2VDb250ZW50KGRhdGE6IFN1aU9iamVjdFJlc3BvbnNlIHwgU3VpTW92ZVBhY2thZ2UpOiBNb3ZlUGFja2FnZUNvbnRlbnQgfCB1bmRlZmluZWQge1xuICBpZiAoJ2Rpc2Fzc2VtYmxlZCcgaW4gZGF0YSkge1xuICAgIHJldHVybiBkYXRhLmRpc2Fzc2VtYmxlZDtcbiAgfVxuICBjb25zdCBzdWlPYmplY3QgPSBnZXRTdWlPYmplY3REYXRhKGRhdGEpO1xuICBpZiAoc3VpT2JqZWN0Py5jb250ZW50Py5kYXRhVHlwZSAhPT0gJ3BhY2thZ2UnKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuICByZXR1cm4gKHN1aU9iamVjdC5jb250ZW50IGFzIFN1aU1vdmVQYWNrYWdlKS5kaXNhc3NlbWJsZWQ7XG59XG5cbmV4cG9ydCBjb25zdCBDaGVja3BvaW50ZWRPYmplY3RJZCA9IG9iamVjdCh7XG4gIG9iamVjdElkOiBPYmplY3RJZCxcbiAgYXRDaGVja3BvaW50OiBvcHRpb25hbChudW1iZXIoKSksXG59KTtcbmV4cG9ydCB0eXBlIENoZWNrcG9pbnRlZE9iamVjdElkID0gSW5mZXI8dHlwZW9mIENoZWNrcG9pbnRlZE9iamVjdElkPjtcblxuZXhwb3J0IGNvbnN0IFBhZ2luYXRlZE9iamVjdHNSZXNwb25zZSA9IG9iamVjdCh7XG4gIGRhdGE6IGFycmF5KFN1aU9iamVjdFJlc3BvbnNlKSxcbiAgbmV4dEN1cnNvcjogb3B0aW9uYWwoQ2hlY2twb2ludGVkT2JqZWN0SWQpLFxuICBoYXNOZXh0UGFnZTogYm9vbGVhbigpLFxufSk7XG5leHBvcnQgdHlwZSBQYWdpbmF0ZWRPYmplY3RzUmVzcG9uc2UgPSBJbmZlcjx0eXBlb2YgUGFnaW5hdGVkT2JqZWN0c1Jlc3BvbnNlPjtcblxuLy8gbWlycm9ycyBzdWlfanNvbl9ycGNfdHlwZXM6OiBTdWlPYmplY3REYXRhRmlsdGVyXG5leHBvcnQgdHlwZSBTdWlPYmplY3REYXRhRmlsdGVyID1cbiAgfCB7IFBhY2thZ2U6IE9iamVjdElkIH1cbiAgfCB7IE1vdmVNb2R1bGU6IHsgcGFja2FnZTogT2JqZWN0SWQ7IG1vZHVsZTogc3RyaW5nIH0gfVxuICB8IHsgU3RydWN0VHlwZTogc3RyaW5nIH07XG5cbmV4cG9ydCB0eXBlIFN1aU9iamVjdFJlc3BvbnNlUXVlcnkgPSB7XG4gIGZpbHRlcj86IFN1aU9iamVjdERhdGFGaWx0ZXI7XG4gIG9wdGlvbnM/OiBTdWlPYmplY3REYXRhT3B0aW9ucztcbn07XG4iXX0=
@@ -1 +1 @@
1
- {"version":3,"file":"sui-bcs.d.ts","sourceRoot":"","sources":["../../../../../src/lib/mystenlab/types/sui-bcs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAA8D,MAAM,aAAa,CAAC;AAC9F,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAiBzC;;GAEG;AACH,oBAAY,eAAe,GAAG;IAC5B,oDAAoD;IACpD,QAAQ,EAAE,MAAM,CAAC;IAEjB,2CAA2C;IAC3C,oBAAoB,EAAE,MAAM,GAAG,MAAM,CAAC;IAEtC,mCAAmC;IACnC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF;;GAEG;AACH,oBAAY,SAAS,GAAG;IAAE,UAAU,EAAE,YAAY,CAAA;CAAE,GAAG;IAAE,MAAM,EAAE,eAAe,CAAA;CAAE,CAAC;AAEnF;;GAEG;AACH,oBAAY,OAAO,GAAG;IAAE,IAAI,EAAE,SAAS,CAAC,MAAM,CAAC,CAAA;CAAE,CAAC;AAElD,wBAAgB,SAAS,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,IAAI,OAAO,CAElD;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,oBAAY,OAAO,GAAG,OAAO,GAAG;IAAE,MAAM,EAAE,SAAS,CAAA;CAAE,CAAC;AAEtD;;GAEG;AACH,oBAAY,SAAS,GAAG;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,OAAO,EAAE,CAAC;CACvB,CAAC;AAEF;;GAEG;AACH,oBAAY,OAAO,GACf;IAAE,IAAI,EAAE,IAAI,CAAA;CAAE,GACd;IAAE,EAAE,EAAE,IAAI,CAAA;CAAE,GACZ;IAAE,GAAG,EAAE,IAAI,CAAA;CAAE,GACb;IAAE,IAAI,EAAE,IAAI,CAAA;CAAE,GACd;IAAE,OAAO,EAAE,IAAI,CAAA;CAAE,GACjB;IAAE,MAAM,EAAE,IAAI,CAAA;CAAE,GAChB;IAAE,MAAM,EAAE,OAAO,CAAA;CAAE,GACnB;IAAE,MAAM,EAAE,SAAS,CAAA;CAAE,GACrB;IAAE,GAAG,EAAE,IAAI,CAAA;CAAE,GACb;IAAE,GAAG,EAAE,IAAI,CAAA;CAAE,GACb;IAAE,IAAI,EAAE,IAAI,CAAA;CAAE,CAAC;AAInB;;GAEG;AACH,oBAAY,OAAO,GAAG;IACpB,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF;;;;GAIG;AACH,oBAAY,qBAAqB,GAAG;IAAE,IAAI,EAAE,IAAI,CAAA;CAAE,GAAG;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAkGvE,QAAA,MAAM,GAAG,KAAsD,CAAC;AAGhE,OAAO,EAAE,GAAG,EAAE,CAAC"}
1
+ {"version":3,"file":"sui-bcs.d.ts","sourceRoot":"","sources":["../../../../../src/lib/mystenlab/types/sui-bcs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAA8D,MAAM,aAAa,CAAC;AAC9F,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAgBzC;;GAEG;AACH,oBAAY,eAAe,GAAG;IAC5B,oDAAoD;IACpD,QAAQ,EAAE,MAAM,CAAC;IAEjB,2CAA2C;IAC3C,oBAAoB,EAAE,MAAM,GAAG,MAAM,CAAC;IAEtC,mCAAmC;IACnC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF;;GAEG;AACH,oBAAY,SAAS,GAAG;IAAE,UAAU,EAAE,YAAY,CAAA;CAAE,GAAG;IAAE,MAAM,EAAE,eAAe,CAAA;CAAE,CAAC;AAEnF;;GAEG;AACH,oBAAY,OAAO,GAAG;IAAE,IAAI,EAAE,SAAS,CAAC,MAAM,CAAC,CAAA;CAAE,CAAC;AAElD,wBAAgB,SAAS,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,IAAI,OAAO,CAElD;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,oBAAY,OAAO,GAAG,OAAO,GAAG;IAAE,MAAM,EAAE,SAAS,CAAA;CAAE,CAAC;AAEtD;;GAEG;AACH,oBAAY,SAAS,GAAG;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,OAAO,EAAE,CAAC;CACvB,CAAC;AAEF;;GAEG;AACH,oBAAY,OAAO,GACf;IAAE,IAAI,EAAE,IAAI,CAAA;CAAE,GACd;IAAE,EAAE,EAAE,IAAI,CAAA;CAAE,GACZ;IAAE,GAAG,EAAE,IAAI,CAAA;CAAE,GACb;IAAE,IAAI,EAAE,IAAI,CAAA;CAAE,GACd;IAAE,OAAO,EAAE,IAAI,CAAA;CAAE,GACjB;IAAE,MAAM,EAAE,IAAI,CAAA;CAAE,GAChB;IAAE,MAAM,EAAE,OAAO,CAAA;CAAE,GACnB;IAAE,MAAM,EAAE,SAAS,CAAA;CAAE,GACrB;IAAE,GAAG,EAAE,IAAI,CAAA;CAAE,GACb;IAAE,GAAG,EAAE,IAAI,CAAA;CAAE,GACb;IAAE,IAAI,EAAE,IAAI,CAAA;CAAE,CAAC;AAInB;;GAEG;AACH,oBAAY,OAAO,GAAG;IACpB,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF;;;;GAIG;AACH,oBAAY,qBAAqB,GAAG;IAAE,IAAI,EAAE,IAAI,CAAA;CAAE,GAAG;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAkGvE,QAAA,MAAM,GAAG,KAAsD,CAAC;AAGhE,OAAO,EAAE,GAAG,EAAE,CAAC"}
@@ -7,7 +7,7 @@ function registerUTF8String(bcs) {
7
7
  const bytes = Array.from(new TextEncoder().encode(str));
8
8
  return writer.writeVec(bytes, (writer, el) => writer.write8(el));
9
9
  }, (reader) => {
10
- let bytes = reader.readVec((reader) => reader.read8());
10
+ const bytes = reader.readVec((reader) => reader.read8());
11
11
  return new TextDecoder().decode(new Uint8Array(bytes));
12
12
  });
13
13
  }
@@ -101,7 +101,7 @@ const BCS_SPEC = {
101
101
  ObjectDigest: bcs_1.BCS.BASE58,
102
102
  },
103
103
  };
104
- const bcs = new bcs_1.BCS({ ...bcs_1.getSuiMoveConfig(), types: BCS_SPEC });
104
+ const bcs = new bcs_1.BCS({ ...(0, bcs_1.getSuiMoveConfig)(), types: BCS_SPEC });
105
105
  exports.bcs = bcs;
106
106
  registerUTF8String(bcs);
107
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3VpLWJjcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvbXlzdGVubGFiL3R5cGVzL3N1aS1iY3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEscUNBQThGO0FBSTlGLFNBQVMsa0JBQWtCLENBQUMsR0FBUTtJQUNsQyxHQUFHLENBQUMsWUFBWSxDQUNkLFlBQVksRUFDWixDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsRUFBRTtRQUNkLE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxXQUFXLEVBQUUsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUN4RCxPQUFPLE1BQU0sQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLENBQUMsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ25FLENBQUMsRUFDRCxDQUFDLE1BQU0sRUFBRSxFQUFFO1FBQ1QsSUFBSSxLQUFLLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7UUFDdkQsT0FBTyxJQUFJLFdBQVcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ3pELENBQUMsQ0FDRixDQUFDO0FBQ0osQ0FBQztBQTBCRCxTQUFnQixTQUFTLENBQUMsR0FBUTtJQUNoQyxPQUFRLEdBQWUsQ0FBQyxJQUFJLEtBQUssU0FBUyxDQUFDO0FBQzdDLENBQUM7QUFGRCw4QkFFQztBQXdFRCxnQ0FBZ0M7QUFDaEMsTUFBTSxNQUFNLEdBQUcsUUFBUSxDQUFDO0FBU3hCLE1BQU0saUJBQWlCLEdBQUc7SUFDeEIsSUFBSSxFQUFFLGlCQUFpQjtJQUN2QixNQUFNLEVBQUUsU0FBRyxDQUFDLE9BQU87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ZywgU3RydWN0VHlwZURlZmluaXRpb24gfSBmcm9tICdAbXlzdGVuL2Jjcyc7XG5pbXBvcnQgeyBTdWlPYmplY3RSZWYgfSBmcm9tICcuL29iamVjdHMnO1xuaW1wb3J0IHsgUHVyZUNhbGxBcmcgfSBmcm9tICcuLi9idWlsZGVyJztcblxuZnVuY3Rpb24gcmVnaXN0ZXJVVEY4U3RyaW5nKGJjczogQkNTKSB7XG4gIGJjcy5yZWdpc3RlclR5cGUoXG4gICAgJ3V0ZjhzdHJpbmcnLFxuICAgICh3cml0ZXIsIHN0cikgPT4ge1xuICAgICAgY29uc3QgYnl0ZXMgPSBBcnJheS5mcm9tKG5ldyBUZXh0RW5jb2RlcigpLmVuY29kZShzdHIpKTtcbiAgICAgIHJldHVybiB3cml0ZXIud3JpdGVWZWMoYnl0ZXMsICh3cml0ZXIsIGVsKSA9PiB3cml0ZXIud3JpdGU4KGVsKSk7XG4gICAgfSxcbiAgICAocmVhZGVyKSA9PiB7XG4gICAgICBsZXQgYnl0ZXMgPSByZWFkZXIucmVhZFZlYygocmVhZGVyKSA9PiByZWFkZXIucmVhZDgoKSk7XG4gICAgICByZXR1cm4gbmV3IFRleHREZWNvZGVyKCkuZGVjb2RlKG5ldyBVaW50OEFycmF5KGJ5dGVzKSk7XG4gICAgfVxuICApO1xufVxuXG4vKipcbiAqIEEgcmVmZXJlbmNlIHRvIGEgc2hhcmVkIG9iamVjdC5cbiAqL1xuZXhwb3J0IHR5cGUgU2hhcmVkT2JqZWN0UmVmID0ge1xuICAvKiogSGV4IGNvZGUgYXMgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgb2JqZWN0IGlkICovXG4gIG9iamVjdElkOiBzdHJpbmc7XG5cbiAgLyoqIFRoZSB2ZXJzaW9uIHRoZSBvYmplY3Qgd2FzIHNoYXJlZCBhdCAqL1xuICBpbml0aWFsU2hhcmVkVmVyc2lvbjogbnVtYmVyIHwgc3RyaW5nO1xuXG4gIC8qKiBXaGV0aGVyIHJlZmVyZW5jZSBpcyBtdXRhYmxlICovXG4gIG11dGFibGU6IGJvb2xlYW47XG59O1xuXG4vKipcbiAqIEFuIG9iamVjdCBhcmd1bWVudC5cbiAqL1xuZXhwb3J0IHR5cGUgT2JqZWN0QXJnID0geyBJbW1Pck93bmVkOiBTdWlPYmplY3RSZWYgfSB8IHsgU2hhcmVkOiBTaGFyZWRPYmplY3RSZWYgfTtcblxuLyoqXG4gKiBBIHB1cmUgYXJndW1lbnQuXG4gKi9cbmV4cG9ydCB0eXBlIFB1cmVBcmcgPSB7IFB1cmU6IEFycmF5TGlrZTxudW1iZXI+IH07XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1B1cmVBcmcoYXJnOiBhbnkpOiBhcmcgaXMgUHVyZUFyZyB7XG4gIHJldHVybiAoYXJnIGFzIFB1cmVBcmcpLlB1cmUgIT09IHVuZGVmaW5lZDtcbn1cblxuLyoqXG4gKiBBbiBhcmd1bWVudCBmb3IgdGhlIHRyYW5zYWN0aW9uLiBJdCBpcyBhICdtZWFudCcgZW51bSB3aGljaCBleHBlY3RzIHRvIGhhdmVcbiAqIG9uZSBvZiB0aGUgb3B0aW9uYWwgcHJvcGVydGllcy4gSWYgbm90LCB0aGUgQkNTIGVycm9yIHdpbGwgYmUgdGhyb3duIHdoaWxlXG4gKiBhdHRlbXB0aW5nIHRvIGZvcm0gYSB0cmFuc2FjdGlvbi5cbiAqXG4gKiBFeGFtcGxlOlxuICogYGBganNcbiAqIGxldCBhcmcxOiBDYWxsQXJnID0geyBPYmplY3Q6IHsgU2hhcmVkOiB7XG4gKiAgIG9iamVjdElkOiAnNTQ2MGNmOTJiNWUzZTcwNjdhYWFjZTYwZDg4MzI0MDk1ZmQyMjk0NCcsXG4gKiAgIGluaXRpYWxTaGFyZWRWZXJzaW9uOiAxLFxuICogICBtdXRhYmxlOiB0cnVlLFxuICogfSB9IH07XG4gKiBsZXQgYXJnMjogQ2FsbEFyZyA9IHsgUHVyZTogYmNzLnNlcihCQ1MuU1RSSU5HLCAxMDAwMDApLnRvQnl0ZXMoKSB9O1xuICogbGV0IGFyZzM6IENhbGxBcmcgPSB7IE9iamVjdDogeyBJbW1Pck93bmVkOiB7XG4gKiAgIG9iamVjdElkOiAnNDA0N2QyZTI1MjExZDg3OTIyYjY2NTAyMzNiZDA1MDNhNjczNDI3OScsXG4gKiAgIHZlcnNpb246IDEsXG4gKiAgIGRpZ2VzdDogJ2JDaUFOQ2h0NE85TUVVaHVZamRSQ3FSUFpqcjJySjhNZnFOaXd5aG1SZ0E9J1xuICogfSB9IH07XG4gKiBgYGBcbiAqXG4gKiBGb3IgYFB1cmVgIGFyZ3VtZW50cyBCQ1MgaXMgcmVxdWlyZWQuIFlvdSBtdXN0IGVuY29kZSB0aGUgdmFsdWVzIHdpdGggQkNTIGFjY29yZGluZ1xuICogdG8gdGhlIHR5cGUgcmVxdWlyZWQgYnkgdGhlIGNhbGxlZCBmdW5jdGlvbi4gUHVyZSBhY2NlcHRzIG9ubHkgc2VyaWFsaXplZCB2YWx1ZXNcbiAqL1xuZXhwb3J0IHR5cGUgQ2FsbEFyZyA9IFB1cmVBcmcgfCB7IE9iamVjdDogT2JqZWN0QXJnIH07XG5cbi8qKlxuICogS2luZCBvZiBhIFR5cGVUYWcgd2hpY2ggaXMgcmVwcmVzZW50ZWQgYnkgYSBNb3ZlIHR5cGUgaWRlbnRpZmllci5cbiAqL1xuZXhwb3J0IHR5cGUgU3RydWN0VGFnID0ge1xuICBhZGRyZXNzOiBzdHJpbmc7XG4gIG1vZHVsZTogc3RyaW5nO1xuICBuYW1lOiBzdHJpbmc7XG4gIHR5cGVQYXJhbXM6IFR5cGVUYWdbXTtcbn07XG5cbi8qKlxuICogU3VpIFR5cGVUYWcgb2JqZWN0LiBBIGRlY291cGxlZCBgMHguLi46Om1vZHVsZTo6VHlwZTw/Pz8+YCBwYXJhbWV0ZXIuXG4gKi9cbmV4cG9ydCB0eXBlIFR5cGVUYWcgPVxuICB8IHsgYm9vbDogbnVsbCB9XG4gIHwgeyB1ODogbnVsbCB9XG4gIHwgeyB1NjQ6IG51bGwgfVxuICB8IHsgdTEyODogbnVsbCB9XG4gIHwgeyBhZGRyZXNzOiBudWxsIH1cbiAgfCB7IHNpZ25lcjogbnVsbCB9XG4gIHwgeyB2ZWN0b3I6IFR5cGVUYWcgfVxuICB8IHsgc3RydWN0OiBTdHJ1Y3RUYWcgfVxuICB8IHsgdTE2OiBudWxsIH1cbiAgfCB7IHUzMjogbnVsbCB9XG4gIHwgeyB1MjU2OiBudWxsIH07XG5cbi8vID09PT09PT09PT0gVHJhbnNhY3Rpb25EYXRhID09PT09PT09PT09XG5cbi8qKlxuICogVGhlIEdhc0RhdGEgdG8gYmUgdXNlZCBpbiB0aGUgdHJhbnNhY3Rpb24uXG4gKi9cbmV4cG9ydCB0eXBlIEdhc0RhdGEgPSB7XG4gIHBheW1lbnQ6IFN1aU9iamVjdFJlZltdO1xuICBvd25lcjogc3RyaW5nOyAvLyBHYXMgT2JqZWN0J3Mgb3duZXJcbiAgcHJpY2U6IG51bWJlcjtcbiAgYnVkZ2V0OiBudW1iZXI7XG59O1xuXG4vKipcbiAqIFRyYW5zYWN0aW9uRXhwaXJhdGlvblxuICpcbiAqIEluZGljYXRpb25zIHRoZSBleHBpcmF0aW9uIHRpbWUgZm9yIGEgdHJhbnNhY3Rpb24uXG4gKi9cbmV4cG9ydCB0eXBlIFRyYW5zYWN0aW9uRXhwaXJhdGlvbiA9IHsgTm9uZTogbnVsbCB9IHwgeyBFcG9jaDogbnVtYmVyIH07XG5cbi8vIE1vdmUgbmFtZSBvZiB0aGUgVmVjdG9yIHR5cGUuXG5jb25zdCBWRUNUT1IgPSAndmVjdG9yJztcblxuLy8gSW1wb3J0ZWQgdG8gZXhwbGljaXRseSB0ZWxsIHR5cGVzY3JpcHQgdGhhdCB0eXBlcyBtYXRjaFxudHlwZSBUeXBlU2NoZW1hID0ge1xuICBzdHJ1Y3RzPzogeyBba2V5OiBzdHJpbmddOiBTdHJ1Y3RUeXBlRGVmaW5pdGlvbiB9O1xuICBlbnVtcz86IHsgW2tleTogc3RyaW5nXTogRW51bVR5cGVEZWZpbml0aW9uIH07XG4gIGFsaWFzZXM/OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9O1xufTtcblxuY29uc3QgVHJhbnNhY3Rpb25EYXRhVjEgPSB7XG4gIGtpbmQ6ICdUcmFuc2FjdGlvbktpbmQnLFxuICBzZW5kZXI6IEJDUy5BRERSRVNTLFxuICBnYXNEYXRhOiAnR2FzRGF0YScsXG4gIGV4cGlyYXRpb246ICdUcmFuc2FjdGlvbkV4cGlyYXRpb24nLFxufTtcblxuY29uc3QgQkNTX1NQRUM6IFR5cGVTY2hlbWEgPSB7XG4gIGVudW1zOiB7XG4gICAgJ09wdGlvbjxUPic6IHtcbiAgICAgIE5vbmU6IG51bGwsXG4gICAgICBTb21lOiAnVCcsXG4gICAgfSxcbiAgICBPYmplY3RBcmc6IHtcbiAgICAgIEltbU9yT3duZWQ6ICdTdWlPYmplY3RSZWYnLFxuICAgICAgU2hhcmVkOiAnU2hhcmVkT2JqZWN0UmVmJyxcbiAgICB9LFxuICAgIENhbGxBcmc6IHtcbiAgICAgIFB1cmU6IFtWRUNUT1IsIEJDUy5VOF0sXG4gICAgICBPYmplY3Q6ICdPYmplY3RBcmcnLFxuICAgICAgT2JqVmVjOiBbVkVDVE9SLCAnT2JqZWN0QXJnJ10sXG4gICAgfSxcbiAgICBUeXBlVGFnOiB7XG4gICAgICBib29sOiBudWxsLFxuICAgICAgdTg6IG51bGwsXG4gICAgICB1NjQ6IG51bGwsXG4gICAgICB1MTI4OiBudWxsLFxuICAgICAgYWRkcmVzczogbnVsbCxcbiAgICAgIHNpZ25lcjogbnVsbCxcbiAgICAgIHZlY3RvcjogJ1R5cGVUYWcnLFxuICAgICAgc3RydWN0OiAnU3RydWN0VGFnJyxcbiAgICAgIHUxNjogbnVsbCxcbiAgICAgIHUzMjogbnVsbCxcbiAgICAgIHUyNTY6IG51bGwsXG4gICAgfSxcbiAgICBUcmFuc2FjdGlvbktpbmQ6IHtcbiAgICAgIC8vIGNhbiBub3QgYmUgY2FsbGVkIGZyb20gc3VpLmpzOyBkdW1teSBwbGFjZW1lbnRcbiAgICAgIC8vIHRvIHNldCB0aGUgZW51bSBjb3VudGVyIHJpZ2h0IGZvciBQcm9ncmFtbWFibGVUcmFuc2FjdFxuICAgICAgUHJvZ3JhbW1hYmxlVHJhbnNhY3Rpb246ICdQcm9ncmFtbWFibGVUcmFuc2FjdGlvbicsXG4gICAgICBDaGFuZ2VFcG9jaDogbnVsbCxcbiAgICAgIEdlbmVzaXM6IG51bGwsXG4gICAgICBDb25zZW5zdXNDb21taXRQcm9sb2d1ZTogbnVsbCxcbiAgICB9LFxuICAgIFRyYW5zYWN0aW9uRXhwaXJhdGlvbjoge1xuICAgICAgTm9uZTogbnVsbCxcbiAgICAgIEVwb2NoOiBCQ1MuVTY0LFxuICAgIH0sXG4gICAgVHJhbnNhY3Rpb25EYXRhOiB7XG4gICAgICBWMTogJ1RyYW5zYWN0aW9uRGF0YVYxJyxcbiAgICB9LFxuICB9LFxuICBzdHJ1Y3RzOiB7XG4gICAgU3VpT2JqZWN0UmVmOiB7XG4gICAgICBvYmplY3RJZDogQkNTLkFERFJFU1MsXG4gICAgICB2ZXJzaW9uOiBCQ1MuVTY0LFxuICAgICAgZGlnZXN0OiAnT2JqZWN0RGlnZXN0JyxcbiAgICB9LFxuICAgIFNoYXJlZE9iamVjdFJlZjoge1xuICAgICAgb2JqZWN0SWQ6IEJDUy5BRERSRVNTLFxuICAgICAgaW5pdGlhbFNoYXJlZFZlcnNpb246IEJDUy5VNjQsXG4gICAgICBtdXRhYmxlOiBCQ1MuQk9PTCxcbiAgICB9LFxuICAgIFN0cnVjdFRhZzoge1xuICAgICAgYWRkcmVzczogQkNTLkFERFJFU1MsXG4gICAgICBtb2R1bGU6IEJDUy5TVFJJTkcsXG4gICAgICBuYW1lOiBCQ1MuU1RSSU5HLFxuICAgICAgdHlwZVBhcmFtczogW1ZFQ1RPUiwgJ1R5cGVUYWcnXSxcbiAgICB9LFxuICAgIEdhc0RhdGE6IHtcbiAgICAgIHBheW1lbnQ6IFtWRUNUT1IsICdTdWlPYmplY3RSZWYnXSxcbiAgICAgIG93bmVyOiBCQ1MuQUREUkVTUyxcbiAgICAgIHByaWNlOiBCQ1MuVTY0LFxuICAgICAgYnVkZ2V0OiBCQ1MuVTY0LFxuICAgIH0sXG4gICAgLy8gU2lnbmVkIHRyYW5zYWN0aW9uIGRhdGEgbmVlZGVkIHRvIGdlbmVyYXRlIHRyYW5zYWN0aW9uIGRpZ2VzdC5cbiAgICBTZW5kZXJTaWduZWREYXRhOiB7XG4gICAgICBkYXRhOiAnVHJhbnNhY3Rpb25EYXRhJyxcbiAgICAgIHR4U2lnbmF0dXJlczogW1ZFQ1RPUiwgW1ZFQ1RPUiwgQkNTLlU4XV0sXG4gICAgfSxcbiAgICBUcmFuc2FjdGlvbkRhdGFWMSxcbiAgfSxcbiAgYWxpYXNlczoge1xuICAgIE9iamVjdERpZ2VzdDogQkNTLkJBU0U1OCxcbiAgfSxcbn07XG5cbmNvbnN0IGJjcyA9IG5ldyBCQ1MoeyAuLi5nZXRTdWlNb3ZlQ29uZmlnKCksIHR5cGVzOiBCQ1NfU1BFQyB9KTtcbnJlZ2lzdGVyVVRGOFN0cmluZyhiY3MpO1xuXG5leHBvcnQgeyBiY3MgfTtcbiJdfQ==
107
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3VpLWJjcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvbXlzdGVubGFiL3R5cGVzL3N1aS1iY3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEscUNBQThGO0FBRzlGLFNBQVMsa0JBQWtCLENBQUMsR0FBUTtJQUNsQyxHQUFHLENBQUMsWUFBWSxDQUNkLFlBQVksRUFDWixDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsRUFBRTtRQUNkLE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxXQUFXLEVBQUUsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUN4RCxPQUFPLE1BQU0sQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLENBQUMsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ25FLENBQUMsRUFDRCxDQUFDLE1BQU0sRUFBRSxFQUFFO1FBQ1QsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7UUFDekQsT0FBTyxJQUFJLFdBQVcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ3pELENBQUMsQ0FDRixDQUFDO0FBQ0osQ0FBQztBQTBCRCxTQUFnQixTQUFTLENBQUMsR0FBUTtJQUNoQyxPQUFRLEdBQWUsQ0FBQyxJQUFJLEtBQUssU0FBUyxDQUFDO0FBQzdDLENBQUM7QUFGRCw4QkFFQztBQXdFRCxnQ0FBZ0M7QUFDaEMsTUFBTSxNQUFNLEdBQUcsUUFBUSxDQUFDO0FBU3hCLE1BQU0saUJBQWlCLEdBQUc7SUFDeEIsSUFBSSxFQUFFLGlCQUFpQjtJQUN2QixNQUFNLEVBQUUsU0FBRyxDQUFDLE9BQU87SUFDbkIsT0FBTyxFQUFFLFNBQVM7SUFDbEIsVUFBVSxFQUFFLHVCQUF1QjtDQUNwQyxDQUFDO0FBRUYsTUFBTSxRQUFRLEdBQWU7SUFDM0IsS0FBSyxFQUFFO1FBQ0wsV0FBVyxFQUFFO1lBQ1gsSUFBSSxFQUFFLElBQUk7WUFDVixJQUFJLEVBQUUsR0FBRztTQUNWO1FBQ0QsU0FBUyxFQUFFO1lBQ1QsVUFBVSxFQUFFLGNBQWM7WUFDMUIsTUFBTSxFQUFFLGlCQUFpQjtTQUMxQjtRQUNELE9BQU8sRUFBRTtZQUNQLElBQUksRUFBRSxDQUFDLE1BQU0sRUFBRSxTQUFHLENBQUMsRUFBRSxDQUFDO1lBQ3RCLE1BQU0sRUFBRSxXQUFXO1lBQ25CLE1BQU0sRUFBRSxDQUFDLE1BQU0sRUFBRSxXQUFXLENBQUM7U0FDOUI7UUFDRCxPQUFPLEVBQUU7WUFDUCxJQUFJLEVBQUUsSUFBSTtZQUNWLEVBQUUsRUFBRSxJQUFJO1lBQ1IsR0FBRyxFQUFFLElBQUk7WUFDVCxJQUFJLEVBQUUsSUFBSTtZQUNWLE9BQU8sRUFBRSxJQUFJO1lBQ2IsTUFBTSxFQUFFLElBQUk7WUFDWixNQUFNLEVBQUUsU0FBUztZQUNqQixNQUFNLEVBQUUsV0FBVztZQUNuQixHQUFHLEVBQUUsSUFBSTtZQUNULEdBQUcsRUFBRSxJQUFJO1lBQ1QsSUFBSSxFQUFFLElBQUk7U0FDWDtRQUNELGVBQWUsRUFBRTtZQUNmLGlEQUFpRDtZQUNqRCx5REFBeUQ7WUFDekQsdUJBQXVCLEVBQUUseUJBQXlCO1lBQ2xELFdBQVcsRUFBRSxJQUFJO1lBQ2pCLE9BQU8sRUFBRSxJQUFJO1lBQ2IsdUJBQXVCLEVBQUUsSUFBSTtTQUM5QjtRQUNELHFCQUFxQixFQUFFO1lBQ3JCLElBQUksRUFBRSxJQUFJO1lBQ1YsS0FBSyxFQUFFLFNBQUcsQ0FBQyxHQUFHO1NBQ2Y7UUFDRCxlQUFlLEVBQUU7WUFDZixFQUFFLEVBQUUsbUJBQW1CO1NBQ3hCO0tBQ0Y7SUFDRCxPQUFPLEVBQUU7UUFDUCxZQUFZLEVBQUU7WUFDWixRQUFRLEVBQUUsU0FBRyxDQUFDLE9BQU87WUFDckIsT0FBTyxFQUFFLFNBQUcsQ0FBQyxHQUFHO1lBQ2hCLE1BQU0sRUFBRSxjQUFjO1NBQ3ZCO1FBQ0QsZUFBZSxFQUFFO1lBQ2YsUUFBUSxFQUFFLFNBQUcsQ0FBQyxPQUFPO1lBQ3JCLG9CQUFvQixFQUFFLFNBQUcsQ0FBQyxHQUFHO1lBQzdCLE9BQU8sRUFBRSxTQUFHLENBQUMsSUFBSTtTQUNsQjtRQUNELFNBQVMsRUFBRTtZQUNULE9BQU8sRUFBRSxTQUFHLENBQUMsT0FBTztZQUNwQixNQUFNLEVBQUUsU0FBRyxDQUFDLE1BQU07WUFDbEIsSUFBSSxFQUFFLFNBQUcsQ0FBQyxNQUFNO1lBQ2hCLFVBQVUsRUFBRSxDQUFDLE1BQU0sRUFBRSxTQUFTLENBQUM7U0FDaEM7UUFDRCxPQUFPLEVBQUU7WUFDUCxPQUFPLEVBQUUsQ0FBQyxNQUFNLEVBQUUsY0FBYyxDQUFDO1lBQ2pDLEtBQUssRUFBRSxTQUFHLENBQUMsT0FBTztZQUNsQixLQUFLLEVBQUUsU0FBRyxDQUFDLEdBQUc7WUFDZCxNQUFNLEVBQUUsU0FBRyxDQUFDLEdBQUc7U0FDaEI7UUFDRCxpRUFBaUU7UUFDakUsZ0JBQWdCLEVBQUU7WUFDaEIsSUFBSSxFQUFFLGlCQUFpQjtZQUN2QixZQUFZLEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxNQUFNLEVBQUUsU0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1NBQ3pDO1FBQ0QsaUJBQWlCO0tBQ2xCO0lBQ0QsT0FBTyxFQUFFO1FBQ1AsWUFBWSxFQUFFLFNBQUcsQ0FBQyxNQUFNO0tBQ3pCO0NBQ0YsQ0FBQztBQUVGLE1BQU0sR0FBRyxHQUFHLElBQUksU0FBRyxDQUFDLEVBQUUsR0FBRyxJQUFBLHNCQUFnQixHQUFFLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUM7QUFHdkQsa0JBQUc7QUFGWixrQkFBa0IsQ0FBQyxHQUFHLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJDUywgRW51bVR5cGVEZWZpbml0aW9uLCBnZXRTdWlNb3ZlQ29uZmlnLCBTdHJ1Y3RUeXBlRGVmaW5pdGlvbiB9IGZyb20gJ0BteXN0ZW4vYmNzJztcbmltcG9ydCB7IFN1aU9iamVjdFJlZiB9IGZyb20gJy4vb2JqZWN0cyc7XG5cbmZ1bmN0aW9uIHJlZ2lzdGVyVVRGOFN0cmluZyhiY3M6IEJDUykge1xuICBiY3MucmVnaXN0ZXJUeXBlKFxuICAgICd1dGY4c3RyaW5nJyxcbiAgICAod3JpdGVyLCBzdHIpID0+IHtcbiAgICAgIGNvbnN0IGJ5dGVzID0gQXJyYXkuZnJvbShuZXcgVGV4dEVuY29kZXIoKS5lbmNvZGUoc3RyKSk7XG4gICAgICByZXR1cm4gd3JpdGVyLndyaXRlVmVjKGJ5dGVzLCAod3JpdGVyLCBlbCkgPT4gd3JpdGVyLndyaXRlOChlbCkpO1xuICAgIH0sXG4gICAgKHJlYWRlcikgPT4ge1xuICAgICAgY29uc3QgYnl0ZXMgPSByZWFkZXIucmVhZFZlYygocmVhZGVyKSA9PiByZWFkZXIucmVhZDgoKSk7XG4gICAgICByZXR1cm4gbmV3IFRleHREZWNvZGVyKCkuZGVjb2RlKG5ldyBVaW50OEFycmF5KGJ5dGVzKSk7XG4gICAgfVxuICApO1xufVxuXG4vKipcbiAqIEEgcmVmZXJlbmNlIHRvIGEgc2hhcmVkIG9iamVjdC5cbiAqL1xuZXhwb3J0IHR5cGUgU2hhcmVkT2JqZWN0UmVmID0ge1xuICAvKiogSGV4IGNvZGUgYXMgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgb2JqZWN0IGlkICovXG4gIG9iamVjdElkOiBzdHJpbmc7XG5cbiAgLyoqIFRoZSB2ZXJzaW9uIHRoZSBvYmplY3Qgd2FzIHNoYXJlZCBhdCAqL1xuICBpbml0aWFsU2hhcmVkVmVyc2lvbjogbnVtYmVyIHwgc3RyaW5nO1xuXG4gIC8qKiBXaGV0aGVyIHJlZmVyZW5jZSBpcyBtdXRhYmxlICovXG4gIG11dGFibGU6IGJvb2xlYW47XG59O1xuXG4vKipcbiAqIEFuIG9iamVjdCBhcmd1bWVudC5cbiAqL1xuZXhwb3J0IHR5cGUgT2JqZWN0QXJnID0geyBJbW1Pck93bmVkOiBTdWlPYmplY3RSZWYgfSB8IHsgU2hhcmVkOiBTaGFyZWRPYmplY3RSZWYgfTtcblxuLyoqXG4gKiBBIHB1cmUgYXJndW1lbnQuXG4gKi9cbmV4cG9ydCB0eXBlIFB1cmVBcmcgPSB7IFB1cmU6IEFycmF5TGlrZTxudW1iZXI+IH07XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1B1cmVBcmcoYXJnOiBhbnkpOiBhcmcgaXMgUHVyZUFyZyB7XG4gIHJldHVybiAoYXJnIGFzIFB1cmVBcmcpLlB1cmUgIT09IHVuZGVmaW5lZDtcbn1cblxuLyoqXG4gKiBBbiBhcmd1bWVudCBmb3IgdGhlIHRyYW5zYWN0aW9uLiBJdCBpcyBhICdtZWFudCcgZW51bSB3aGljaCBleHBlY3RzIHRvIGhhdmVcbiAqIG9uZSBvZiB0aGUgb3B0aW9uYWwgcHJvcGVydGllcy4gSWYgbm90LCB0aGUgQkNTIGVycm9yIHdpbGwgYmUgdGhyb3duIHdoaWxlXG4gKiBhdHRlbXB0aW5nIHRvIGZvcm0gYSB0cmFuc2FjdGlvbi5cbiAqXG4gKiBFeGFtcGxlOlxuICogYGBganNcbiAqIGxldCBhcmcxOiBDYWxsQXJnID0geyBPYmplY3Q6IHsgU2hhcmVkOiB7XG4gKiAgIG9iamVjdElkOiAnNTQ2MGNmOTJiNWUzZTcwNjdhYWFjZTYwZDg4MzI0MDk1ZmQyMjk0NCcsXG4gKiAgIGluaXRpYWxTaGFyZWRWZXJzaW9uOiAxLFxuICogICBtdXRhYmxlOiB0cnVlLFxuICogfSB9IH07XG4gKiBsZXQgYXJnMjogQ2FsbEFyZyA9IHsgUHVyZTogYmNzLnNlcihCQ1MuU1RSSU5HLCAxMDAwMDApLnRvQnl0ZXMoKSB9O1xuICogbGV0IGFyZzM6IENhbGxBcmcgPSB7IE9iamVjdDogeyBJbW1Pck93bmVkOiB7XG4gKiAgIG9iamVjdElkOiAnNDA0N2QyZTI1MjExZDg3OTIyYjY2NTAyMzNiZDA1MDNhNjczNDI3OScsXG4gKiAgIHZlcnNpb246IDEsXG4gKiAgIGRpZ2VzdDogJ2JDaUFOQ2h0NE85TUVVaHVZamRSQ3FSUFpqcjJySjhNZnFOaXd5aG1SZ0E9J1xuICogfSB9IH07XG4gKiBgYGBcbiAqXG4gKiBGb3IgYFB1cmVgIGFyZ3VtZW50cyBCQ1MgaXMgcmVxdWlyZWQuIFlvdSBtdXN0IGVuY29kZSB0aGUgdmFsdWVzIHdpdGggQkNTIGFjY29yZGluZ1xuICogdG8gdGhlIHR5cGUgcmVxdWlyZWQgYnkgdGhlIGNhbGxlZCBmdW5jdGlvbi4gUHVyZSBhY2NlcHRzIG9ubHkgc2VyaWFsaXplZCB2YWx1ZXNcbiAqL1xuZXhwb3J0IHR5cGUgQ2FsbEFyZyA9IFB1cmVBcmcgfCB7IE9iamVjdDogT2JqZWN0QXJnIH07XG5cbi8qKlxuICogS2luZCBvZiBhIFR5cGVUYWcgd2hpY2ggaXMgcmVwcmVzZW50ZWQgYnkgYSBNb3ZlIHR5cGUgaWRlbnRpZmllci5cbiAqL1xuZXhwb3J0IHR5cGUgU3RydWN0VGFnID0ge1xuICBhZGRyZXNzOiBzdHJpbmc7XG4gIG1vZHVsZTogc3RyaW5nO1xuICBuYW1lOiBzdHJpbmc7XG4gIHR5cGVQYXJhbXM6IFR5cGVUYWdbXTtcbn07XG5cbi8qKlxuICogU3VpIFR5cGVUYWcgb2JqZWN0LiBBIGRlY291cGxlZCBgMHguLi46Om1vZHVsZTo6VHlwZTw/Pz8+YCBwYXJhbWV0ZXIuXG4gKi9cbmV4cG9ydCB0eXBlIFR5cGVUYWcgPVxuICB8IHsgYm9vbDogbnVsbCB9XG4gIHwgeyB1ODogbnVsbCB9XG4gIHwgeyB1NjQ6IG51bGwgfVxuICB8IHsgdTEyODogbnVsbCB9XG4gIHwgeyBhZGRyZXNzOiBudWxsIH1cbiAgfCB7IHNpZ25lcjogbnVsbCB9XG4gIHwgeyB2ZWN0b3I6IFR5cGVUYWcgfVxuICB8IHsgc3RydWN0OiBTdHJ1Y3RUYWcgfVxuICB8IHsgdTE2OiBudWxsIH1cbiAgfCB7IHUzMjogbnVsbCB9XG4gIHwgeyB1MjU2OiBudWxsIH07XG5cbi8vID09PT09PT09PT0gVHJhbnNhY3Rpb25EYXRhID09PT09PT09PT09XG5cbi8qKlxuICogVGhlIEdhc0RhdGEgdG8gYmUgdXNlZCBpbiB0aGUgdHJhbnNhY3Rpb24uXG4gKi9cbmV4cG9ydCB0eXBlIEdhc0RhdGEgPSB7XG4gIHBheW1lbnQ6IFN1aU9iamVjdFJlZltdO1xuICBvd25lcjogc3RyaW5nOyAvLyBHYXMgT2JqZWN0J3Mgb3duZXJcbiAgcHJpY2U6IG51bWJlcjtcbiAgYnVkZ2V0OiBudW1iZXI7XG59O1xuXG4vKipcbiAqIFRyYW5zYWN0aW9uRXhwaXJhdGlvblxuICpcbiAqIEluZGljYXRpb25zIHRoZSBleHBpcmF0aW9uIHRpbWUgZm9yIGEgdHJhbnNhY3Rpb24uXG4gKi9cbmV4cG9ydCB0eXBlIFRyYW5zYWN0aW9uRXhwaXJhdGlvbiA9IHsgTm9uZTogbnVsbCB9IHwgeyBFcG9jaDogbnVtYmVyIH07XG5cbi8vIE1vdmUgbmFtZSBvZiB0aGUgVmVjdG9yIHR5cGUuXG5jb25zdCBWRUNUT1IgPSAndmVjdG9yJztcblxuLy8gSW1wb3J0ZWQgdG8gZXhwbGljaXRseSB0ZWxsIHR5cGVzY3JpcHQgdGhhdCB0eXBlcyBtYXRjaFxudHlwZSBUeXBlU2NoZW1hID0ge1xuICBzdHJ1Y3RzPzogeyBba2V5OiBzdHJpbmddOiBTdHJ1Y3RUeXBlRGVmaW5pdGlvbiB9O1xuICBlbnVtcz86IHsgW2tleTogc3RyaW5nXTogRW51bVR5cGVEZWZpbml0aW9uIH07XG4gIGFsaWFzZXM/OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9O1xufTtcblxuY29uc3QgVHJhbnNhY3Rpb25EYXRhVjEgPSB7XG4gIGtpbmQ6ICdUcmFuc2FjdGlvbktpbmQnLFxuICBzZW5kZXI6IEJDUy5BRERSRVNTLFxuICBnYXNEYXRhOiAnR2FzRGF0YScsXG4gIGV4cGlyYXRpb246ICdUcmFuc2FjdGlvbkV4cGlyYXRpb24nLFxufTtcblxuY29uc3QgQkNTX1NQRUM6IFR5cGVTY2hlbWEgPSB7XG4gIGVudW1zOiB7XG4gICAgJ09wdGlvbjxUPic6IHtcbiAgICAgIE5vbmU6IG51bGwsXG4gICAgICBTb21lOiAnVCcsXG4gICAgfSxcbiAgICBPYmplY3RBcmc6IHtcbiAgICAgIEltbU9yT3duZWQ6ICdTdWlPYmplY3RSZWYnLFxuICAgICAgU2hhcmVkOiAnU2hhcmVkT2JqZWN0UmVmJyxcbiAgICB9LFxuICAgIENhbGxBcmc6IHtcbiAgICAgIFB1cmU6IFtWRUNUT1IsIEJDUy5VOF0sXG4gICAgICBPYmplY3Q6ICdPYmplY3RBcmcnLFxuICAgICAgT2JqVmVjOiBbVkVDVE9SLCAnT2JqZWN0QXJnJ10sXG4gICAgfSxcbiAgICBUeXBlVGFnOiB7XG4gICAgICBib29sOiBudWxsLFxuICAgICAgdTg6IG51bGwsXG4gICAgICB1NjQ6IG51bGwsXG4gICAgICB1MTI4OiBudWxsLFxuICAgICAgYWRkcmVzczogbnVsbCxcbiAgICAgIHNpZ25lcjogbnVsbCxcbiAgICAgIHZlY3RvcjogJ1R5cGVUYWcnLFxuICAgICAgc3RydWN0OiAnU3RydWN0VGFnJyxcbiAgICAgIHUxNjogbnVsbCxcbiAgICAgIHUzMjogbnVsbCxcbiAgICAgIHUyNTY6IG51bGwsXG4gICAgfSxcbiAgICBUcmFuc2FjdGlvbktpbmQ6IHtcbiAgICAgIC8vIGNhbiBub3QgYmUgY2FsbGVkIGZyb20gc3VpLmpzOyBkdW1teSBwbGFjZW1lbnRcbiAgICAgIC8vIHRvIHNldCB0aGUgZW51bSBjb3VudGVyIHJpZ2h0IGZvciBQcm9ncmFtbWFibGVUcmFuc2FjdFxuICAgICAgUHJvZ3JhbW1hYmxlVHJhbnNhY3Rpb246ICdQcm9ncmFtbWFibGVUcmFuc2FjdGlvbicsXG4gICAgICBDaGFuZ2VFcG9jaDogbnVsbCxcbiAgICAgIEdlbmVzaXM6IG51bGwsXG4gICAgICBDb25zZW5zdXNDb21taXRQcm9sb2d1ZTogbnVsbCxcbiAgICB9LFxuICAgIFRyYW5zYWN0aW9uRXhwaXJhdGlvbjoge1xuICAgICAgTm9uZTogbnVsbCxcbiAgICAgIEVwb2NoOiBCQ1MuVTY0LFxuICAgIH0sXG4gICAgVHJhbnNhY3Rpb25EYXRhOiB7XG4gICAgICBWMTogJ1RyYW5zYWN0aW9uRGF0YVYxJyxcbiAgICB9LFxuICB9LFxuICBzdHJ1Y3RzOiB7XG4gICAgU3VpT2JqZWN0UmVmOiB7XG4gICAgICBvYmplY3RJZDogQkNTLkFERFJFU1MsXG4gICAgICB2ZXJzaW9uOiBCQ1MuVTY0LFxuICAgICAgZGlnZXN0OiAnT2JqZWN0RGlnZXN0JyxcbiAgICB9LFxuICAgIFNoYXJlZE9iamVjdFJlZjoge1xuICAgICAgb2JqZWN0SWQ6IEJDUy5BRERSRVNTLFxuICAgICAgaW5pdGlhbFNoYXJlZFZlcnNpb246IEJDUy5VNjQsXG4gICAgICBtdXRhYmxlOiBCQ1MuQk9PTCxcbiAgICB9LFxuICAgIFN0cnVjdFRhZzoge1xuICAgICAgYWRkcmVzczogQkNTLkFERFJFU1MsXG4gICAgICBtb2R1bGU6IEJDUy5TVFJJTkcsXG4gICAgICBuYW1lOiBCQ1MuU1RSSU5HLFxuICAgICAgdHlwZVBhcmFtczogW1ZFQ1RPUiwgJ1R5cGVUYWcnXSxcbiAgICB9LFxuICAgIEdhc0RhdGE6IHtcbiAgICAgIHBheW1lbnQ6IFtWRUNUT1IsICdTdWlPYmplY3RSZWYnXSxcbiAgICAgIG93bmVyOiBCQ1MuQUREUkVTUyxcbiAgICAgIHByaWNlOiBCQ1MuVTY0LFxuICAgICAgYnVkZ2V0OiBCQ1MuVTY0LFxuICAgIH0sXG4gICAgLy8gU2lnbmVkIHRyYW5zYWN0aW9uIGRhdGEgbmVlZGVkIHRvIGdlbmVyYXRlIHRyYW5zYWN0aW9uIGRpZ2VzdC5cbiAgICBTZW5kZXJTaWduZWREYXRhOiB7XG4gICAgICBkYXRhOiAnVHJhbnNhY3Rpb25EYXRhJyxcbiAgICAgIHR4U2lnbmF0dXJlczogW1ZFQ1RPUiwgW1ZFQ1RPUiwgQkNTLlU4XV0sXG4gICAgfSxcbiAgICBUcmFuc2FjdGlvbkRhdGFWMSxcbiAgfSxcbiAgYWxpYXNlczoge1xuICAgIE9iamVjdERpZ2VzdDogQkNTLkJBU0U1OCxcbiAgfSxcbn07XG5cbmNvbnN0IGJjcyA9IG5ldyBCQ1MoeyAuLi5nZXRTdWlNb3ZlQ29uZmlnKCksIHR5cGVzOiBCQ1NfU1BFQyB9KTtcbnJlZ2lzdGVyVVRGOFN0cmluZyhiY3MpO1xuXG5leHBvcnQgeyBiY3MgfTtcbiJdfQ==