oxygen-cli 1.39.0 → 1.39.2
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.
- package/CHANGELOG.md +11 -0
- package/build/core/OxygenModule.js +4 -2
- package/build/ox_reporters/reporter-rp.js +13 -3
- package/package.json +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,16 @@
|
|
|
1
1
|
# CHANGELOG
|
|
2
2
|
|
|
3
|
+
## v1.39.2 (2025-05-05)
|
|
4
|
+
|
|
5
|
+
#### :house: Internal
|
|
6
|
+
* Update RP dependency.
|
|
7
|
+
* Add missing error handlers.
|
|
8
|
+
|
|
9
|
+
## v1.39.1 (2025-04-30)
|
|
10
|
+
|
|
11
|
+
#### :beetle: Bug Fix
|
|
12
|
+
* Fix HTTP request information being recorded under wrong step sometimes.
|
|
13
|
+
|
|
3
14
|
## v1.39.0 (2025-04-23)
|
|
4
15
|
|
|
5
16
|
#### :beetle: Bug Fix
|
|
@@ -47,7 +47,9 @@ class OxygenModule {
|
|
|
47
47
|
return undefined;
|
|
48
48
|
}
|
|
49
49
|
|
|
50
|
-
onBeforeCase(context) {
|
|
50
|
+
onBeforeCase(context) {
|
|
51
|
+
this._extra = {};
|
|
52
|
+
}
|
|
51
53
|
|
|
52
54
|
onAfterCase(error) {}
|
|
53
55
|
|
|
@@ -70,4 +72,4 @@ class OxygenModule {
|
|
|
70
72
|
}
|
|
71
73
|
|
|
72
74
|
exports.default = OxygenModule;
|
|
73
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
75
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb3JlL094eWdlbk1vZHVsZS5qcyJdLCJuYW1lcyI6WyJPeHlnZW5Nb2R1bGUiLCJjb25zdHJ1Y3RvciIsIm9wdGlvbnMiLCJjb250ZXh0IiwicnMiLCJsb2dnZXIiLCJtb2R1bGVzIiwic2VydmljZXMiLCJfdGhpcyIsImN0eCIsIl9pc0luaXRpYWxpemVkIiwiX2Fsd2F5c0luaXRpYWxpemVkIiwiX2V4dHJhIiwibmFtZSIsIkVycm9yIiwiaXNJbml0aWFsaXplZCIsImV4dHJhIiwiaW5pdCIsImRpc3Bvc2UiLCJnZXRTdGVwRGlzcGxheU5hbWUiLCJtZXRob2QiLCJyZXR2YWwiLCJlcnJvciIsInVuZGVmaW5lZCIsIm9uQmVmb3JlQ2FzZSIsIm9uQWZ0ZXJDYXNlIiwiYWRkQ29tbWFuZCIsImZ1bmMiLCJ0aGlzQXJnIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRQcm90b3R5cGVPZiIsInZhbHVlIiwiYmluZCIsImFkZFN1Yk1vZHVsZSIsInN1Ym1vZHVsZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQWUsTUFBTUEsWUFBTixDQUFtQjtBQUM5QkMsRUFBQUEsV0FBVyxDQUFDQyxPQUFELEVBQVVDLE9BQVYsRUFBbUJDLEVBQW5CLEVBQXVCQyxNQUF2QixFQUErQkMsT0FBL0IsRUFBd0NDLFFBQXhDLEVBQWtEO0FBQ3pELFNBQUtDLEtBQUwsR0FBYSxJQUFiO0FBQ0EsU0FBS04sT0FBTCxHQUFlQSxPQUFmO0FBQ0EsU0FBS08sR0FBTCxHQUFXTixPQUFYO0FBQ0EsU0FBS0MsRUFBTCxHQUFVQSxFQUFWO0FBQ0EsU0FBS0MsTUFBTCxHQUFjQSxNQUFkO0FBQ0EsU0FBS0MsT0FBTCxHQUFlQSxPQUFmO0FBQ0EsU0FBS0MsUUFBTCxHQUFnQkEsUUFBaEI7QUFDQSxTQUFLRyxjQUFMLEdBQXNCLEtBQXRCO0FBQ0EsU0FBS0Msa0JBQUwsR0FBMEIsS0FBMUI7QUFDQSxTQUFLQyxNQUFMLEdBQWMsRUFBZDtBQUNIOztBQUNPLE1BQUpDLElBQUksR0FBRztBQUNQLFVBQU1DLEtBQUssQ0FBQywyREFBRCxDQUFYO0FBQ0g7O0FBQ2dCLE1BQWJDLGFBQWEsR0FBRztBQUNoQixXQUFPLEtBQUtMLGNBQVo7QUFDSDs7QUFDUSxNQUFMTSxLQUFLLEdBQUc7QUFDUixXQUFPLEtBQUtKLE1BQVo7QUFDSDs7QUFDREssRUFBQUEsSUFBSSxHQUFHO0FBQ0gsU0FBS1AsY0FBTCxHQUFzQixJQUF0QjtBQUNIOztBQUNEUSxFQUFBQSxPQUFPLEdBQUc7QUFDTixRQUFJLEtBQUtQLGtCQUFMLElBQTJCLEtBQS9CLEVBQXNDO0FBQ2xDLFdBQUtELGNBQUwsR0FBc0IsS0FBdEI7QUFDSDtBQUNKOztBQUNEUyxFQUFBQSxrQkFBa0IsQ0FBQ0MsTUFBRCxFQUFTQyxNQUFULEVBQWlCQyxLQUFqQixFQUF3Qk4sS0FBeEIsRUFBK0I7QUFDN0MsV0FBT08sU0FBUDtBQUNIOztBQUNEQyxFQUFBQSxZQUFZLENBQUNyQixPQUFELEVBQVU7QUFDbEIsU0FBS1MsTUFBTCxHQUFjLEVBQWQ7QUFDSDs7QUFDRGEsRUFBQUEsV0FBVyxDQUFDSCxLQUFELEVBQVEsQ0FFbEI7O0FBQ0RJLEVBQUFBLFVBQVUsQ0FBQ2IsSUFBRCxFQUFPYyxJQUFQLEVBQWFDLE9BQWIsRUFBc0I7QUFDNUIsUUFBSSxDQUFDQSxPQUFMLEVBQWM7QUFDVkEsTUFBQUEsT0FBTyxHQUFHLElBQVY7QUFDSDs7QUFDREMsSUFBQUEsTUFBTSxDQUFDQyxjQUFQLENBQXNCRCxNQUFNLENBQUNFLGNBQVAsQ0FBc0IsSUFBdEIsQ0FBdEIsRUFBbURsQixJQUFuRCxFQUF5RDtBQUNyRG1CLE1BQUFBLEtBQUssRUFBRUwsSUFBSSxDQUFDTSxJQUFMLENBQVVMLE9BQVY7QUFEOEMsS0FBekQ7QUFHSDs7QUFDRE0sRUFBQUEsWUFBWSxDQUFDckIsSUFBRCxFQUFPc0IsU0FBUCxFQUFrQjtBQUMxQk4sSUFBQUEsTUFBTSxDQUFDQyxjQUFQLENBQXNCRCxNQUFNLENBQUNFLGNBQVAsQ0FBc0IsSUFBdEIsQ0FBdEIsRUFBbURsQixJQUFuRCxFQUF5RDtBQUNyRG1CLE1BQUFBLEtBQUssRUFBRUc7QUFEOEMsS0FBekQ7QUFHSDs7QUFuRDZCIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgY2xhc3MgT3h5Z2VuTW9kdWxlIHtcclxuICAgIGNvbnN0cnVjdG9yKG9wdGlvbnMsIGNvbnRleHQsIHJzLCBsb2dnZXIsIG1vZHVsZXMsIHNlcnZpY2VzKSB7XHJcbiAgICAgICAgdGhpcy5fdGhpcyA9IHRoaXM7XHJcbiAgICAgICAgdGhpcy5vcHRpb25zID0gb3B0aW9ucztcclxuICAgICAgICB0aGlzLmN0eCA9IGNvbnRleHQ7XHJcbiAgICAgICAgdGhpcy5ycyA9IHJzO1xyXG4gICAgICAgIHRoaXMubG9nZ2VyID0gbG9nZ2VyO1xyXG4gICAgICAgIHRoaXMubW9kdWxlcyA9IG1vZHVsZXM7XHJcbiAgICAgICAgdGhpcy5zZXJ2aWNlcyA9IHNlcnZpY2VzO1xyXG4gICAgICAgIHRoaXMuX2lzSW5pdGlhbGl6ZWQgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLl9hbHdheXNJbml0aWFsaXplZCA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuX2V4dHJhID0ge307XHJcbiAgICB9XHJcbiAgICBnZXQgbmFtZSgpIHtcclxuICAgICAgICB0aHJvdyBFcnJvcignXCJuYW1lXCIgcHJvcGVydHkgbXVzdCBiZSBpbXBsZW1lbnRlZCBieSB0aGUgZGVyaXZpbmcgY2xhc3MnKTtcclxuICAgIH1cclxuICAgIGdldCBpc0luaXRpYWxpemVkKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9pc0luaXRpYWxpemVkO1xyXG4gICAgfVxyXG4gICAgZ2V0IGV4dHJhKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9leHRyYTtcclxuICAgIH1cclxuICAgIGluaXQoKSB7XHJcbiAgICAgICAgdGhpcy5faXNJbml0aWFsaXplZCA9IHRydWU7XHJcbiAgICB9XHJcbiAgICBkaXNwb3NlKCkge1xyXG4gICAgICAgIGlmICh0aGlzLl9hbHdheXNJbml0aWFsaXplZCA9PSBmYWxzZSkge1xyXG4gICAgICAgICAgICB0aGlzLl9pc0luaXRpYWxpemVkID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgZ2V0U3RlcERpc3BsYXlOYW1lKG1ldGhvZCwgcmV0dmFsLCBlcnJvciwgZXh0cmEpIHtcclxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xyXG4gICAgfVxyXG4gICAgb25CZWZvcmVDYXNlKGNvbnRleHQpIHtcclxuICAgICAgICB0aGlzLl9leHRyYSA9IHt9O1xyXG4gICAgfVxyXG4gICAgb25BZnRlckNhc2UoZXJyb3IpIHtcclxuXHJcbiAgICB9XHJcbiAgICBhZGRDb21tYW5kKG5hbWUsIGZ1bmMsIHRoaXNBcmcpIHtcclxuICAgICAgICBpZiAoIXRoaXNBcmcpIHtcclxuICAgICAgICAgICAgdGhpc0FyZyA9IHRoaXM7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShPYmplY3QuZ2V0UHJvdG90eXBlT2YodGhpcyksIG5hbWUsIHtcclxuICAgICAgICAgICAgdmFsdWU6IGZ1bmMuYmluZCh0aGlzQXJnKVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgYWRkU3ViTW9kdWxlKG5hbWUsIHN1Ym1vZHVsZSkge1xyXG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShPYmplY3QuZ2V0UHJvdG90eXBlT2YodGhpcyksIG5hbWUsIHtcclxuICAgICAgICAgICAgdmFsdWU6IHN1Ym1vZHVsZVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG59Il19
|
|
@@ -195,7 +195,12 @@ class ReportPortalReporter extends _ReporterBase.default {
|
|
|
195
195
|
const {
|
|
196
196
|
promise: sendLogPromise
|
|
197
197
|
} = rpFile ? this.rpClient.sendLogWithFile(rpTestId, logReq, rpFile) : this.rpClient.sendLog(rpTestId, logReq);
|
|
198
|
-
|
|
198
|
+
|
|
199
|
+
try {
|
|
200
|
+
await this.promiseWithTimeout(sendLogPromise);
|
|
201
|
+
} catch (e) {
|
|
202
|
+
console.dir(`RP - Failed to send log for finished test item: ${e}`);
|
|
203
|
+
}
|
|
199
204
|
}
|
|
200
205
|
|
|
201
206
|
const finishTestItemReq = {
|
|
@@ -301,7 +306,12 @@ class ReportPortalReporter extends _ReporterBase.default {
|
|
|
301
306
|
const {
|
|
302
307
|
promise: sendLogPromise
|
|
303
308
|
} = this.rpClient.sendLog(rpStepId, logReq, rpFile);
|
|
304
|
-
|
|
309
|
+
|
|
310
|
+
try {
|
|
311
|
+
await this.promiseWithTimeout(sendLogPromise);
|
|
312
|
+
} catch (e) {
|
|
313
|
+
console.dir(`RP - Failed to send log for finished test item: ${e}`);
|
|
314
|
+
}
|
|
305
315
|
}
|
|
306
316
|
|
|
307
317
|
const finishTestItemReq = {
|
|
@@ -455,4 +465,4 @@ class ReportPortalReporter extends _ReporterBase.default {
|
|
|
455
465
|
}
|
|
456
466
|
|
|
457
467
|
exports.default = ReportPortalReporter;
|
|
458
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9veF9yZXBvcnRlcnMvcmVwb3J0ZXItcnAuanMiXSwibmFtZXMiOlsiUlBDbGllbnQiLCJyZXF1aXJlIiwiTEFVTkNIX01PREVTIiwiREVGQVVMVCIsIkRFQlVHIiwiVEVTVF9JVEVNX1RZUEVTIiwiU1VJVEUiLCJURVNUIiwiU1RFUCIsIk1BWF9OQU1FX0xFTkdUSCIsIlJlcG9ydFBvcnRhbFJlcG9ydGVyIiwiUmVwb3J0ZXJCYXNlIiwiY29uc3RydWN0b3IiLCJvcHRpb25zIiwicmVwb3J0ZXJPcHRzIiwiYWdncmVnYXRvciIsInJwIiwicmVwb3J0U3RlcHMiLCJyZXBvcnRMb2dzIiwiY2JTdWl0ZVRvUnBJZEhhc2giLCJjYkNhc2VUb1JwSWRIYXNoIiwiY2JTdGVwVG9ScElkSGFzaCIsImN1cnJlbnRUcmFuc2FjdGlvblN0ZXBJZCIsInVuZGVmaW5lZCIsImN1cnJlbnRTdWJTdGVwSWQiLCJhcGlLZXkiLCJlbmRwb2ludCIsInByb2plY3QiLCJFcnJvciIsInJwQ2xpZW50IiwibGF1bmNoIiwibmFtZSIsImluaXQiLCJjaGVja0Nvbm5lY3QiLCJlIiwibWVzc2FnZSIsImdlbmVyYXRlIiwicmVzdWx0cyIsIm9uUnVubmVyU3RhcnQiLCJyaWQiLCJvcHRzIiwiY2FwcyIsInRlbXBJZCIsInByb21pc2UiLCJzdGFydExhdW5jaCIsIm1vZGUiLCJkZWJ1ZyIsInRlbXBMYXVuY2hJZCIsInRoZW4iLCJyZXNwb25zZSIsImVycm9yIiwiY29uc29sZSIsImRpciIsIm9uUnVubmVyRW5kIiwicmVzdWx0IiwiZmluaXNoTGF1bmNoIiwic3RhdHVzIiwidG9Mb3dlckNhc2UiLCJwcm9taXNlV2l0aFRpbWVvdXQiLCJvblN1aXRlU3RhcnQiLCJzdWl0ZUlkIiwic3VpdGUiLCJzdWl0ZURlZiIsInN0YXJ0VGVzdEl0ZW1SZXEiLCJ0eXBlIiwic3RhcnRUZXN0SXRlbSIsIm9uU3VpdGVFbmQiLCJycFN1aXRlSWQiLCJmaW5pc2hUZXN0SXRlbVJlcSIsImZpbmlzaFRlc3RJdGVtIiwib25DYXNlU3RhcnQiLCJjYXNlSWQiLCJjYXNlRGVmIiwiY29kZVJlZiIsInBhdGgiLCJvbkNhc2VFbmQiLCJycFRlc3RJZCIsImZhaWx1cmUiLCJycEZpbGUiLCJzY3JlZW5zaG90IiwiY29udGVudCIsImxvZ1JlcSIsImxldmVsIiwic2VuZExvZ1Byb21pc2UiLCJzZW5kTG9nV2l0aEZpbGUiLCJzZW5kTG9nIiwib25TdGVwU3RhcnQiLCJzdGVwIiwibW9kdWxlIiwicmVwb3J0TG9nU3RlcCIsInJwQ2FzZUlkIiwicnBQYXJlbnRJZCIsImlkIiwic3RlcE5hbWUiLCJfZ2V0U3RlcE5hbWUiLCJsb2NhdGlvbiIsInRlc3RDYXNlSWQiLCJoYXNTdGF0cyIsIm9uU3RlcEVuZCIsInJwU3RlcElkIiwiZmlsZSIsIm9uTG9nIiwic3RlcElkIiwibXNnIiwidGltZSIsInNyYyIsInJwTGV2ZWwiLCJfZ2V0UnBMZXZlbCIsImFyZ3MiLCJsZW5ndGgiLCJzZW5kUnBMb2ciLCJveExldmVsIiwic2lnbmF0dXJlIiwic3Vic3RyaW5nIiwidGltZW91dCIsIlByb21pc2UiLCJyZXNvbHZlIiwicmVqZWN0Iiwic2V0VGltZW91dCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBWUE7Ozs7QUFDQSxNQUFNQSxRQUFRLEdBQUdDLE9BQU8sQ0FBQyxnQ0FBRCxDQUF4Qjs7QUFDQSxNQUFNQyxZQUFZLEdBQUc7QUFDakJDLEVBQUFBLE9BQU8sRUFBRSxTQURRO0FBRWpCQyxFQUFBQSxLQUFLLEVBQUU7QUFGVSxDQUFyQjtBQUlBLE1BQU1DLGVBQWUsR0FBRztBQUNwQkMsRUFBQUEsS0FBSyxFQUFFLE9BRGE7QUFFcEJDLEVBQUFBLElBQUksRUFBRSxNQUZjO0FBR3BCQyxFQUFBQSxJQUFJLEVBQUU7QUFIYyxDQUF4QjtBQUtBLE1BQU1DLGVBQWUsR0FBRyxHQUF4Qjs7QUFFZSxNQUFNQyxvQkFBTixTQUFtQ0MscUJBQW5DLENBQWdEO0FBQzNEQyxFQUFBQSxXQUFXLENBQUNDLE9BQUQsRUFB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LElBQUksQ0FBQ3lCLFNBQVo7QUFDSCxLQUZJLE1BR0EsSUFBSXpCLElBQUksQ0FBQ0MsTUFBVCxFQUFpQjtBQUNsQnpELE1BQUFBLElBQUksR0FBSSxHQUFFd0QsSUFBSSxDQUFDQyxNQUFPLElBQUdELElBQUksQ0FBQ3hELElBQUssRUFBbkM7QUFDSCxLQUZJLE1BR0E7QUFDREEsTUFBQUEsSUFBSSxHQUFHd0QsSUFBSSxDQUFDeEQsSUFBWjtBQUNIOztBQUlELFFBQUlBLElBQUksQ0FBQzhFLE1BQUwsR0FBY3BHLGVBQWxCLEVBQW1DO0FBQy9Cc0IsTUFBQUEsSUFBSSxHQUFHQSxJQUFJLENBQUNrRixTQUFMLENBQWUsQ0FBZixFQUFrQnhHLGVBQWUsR0FBQyxDQUFsQyxJQUF1QyxLQUE5QztBQUNIOztBQUNELFdBQU9zQixJQUFQO0FBQ0g7O0FBQ0QyQixFQUFBQSxrQkFBa0IsQ0FBQ2YsT0FBRCxFQUFVdUUsT0FBTyxHQUFHLEtBQUssS0FBekIsRUFBZ0M7QUFDOUMsV0FBTyxJQUFJQyxPQUFKLENBQVksQ0FBQ0MsT0FBRCxFQUFVQyxNQUFWLEtBQXFCO0FBQ3BDLFVBQUksQ0FBQzFFLE9BQUQsSUFBWSxDQUFDQSxPQUFPLENBQUNLLElBQXpCLEVBQStCO0FBQzNCcUUsUUFBQUEsTUFBTSxDQUFDLElBQUl6RixLQUFKLENBQVcsNEJBQTJCc0YsT0FBUSxLQUE5QyxDQUFELENBQU47QUFDSDs7QUFDRHZFLE1BQUFBLE9BQU8sQ0FBQ0ssSUFBUixDQUFhb0UsT0FBYixFQUFzQkMsTUFBdEI7QUFDQUMsTUFBQUEsVUFBVSxDQUFDRCxNQUFELEVBQVNILE9BQVQsQ0FBVjtBQUNILEtBTk0sQ0FBUDtBQU9IOztBQTdWMEQiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxyXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTUtcHJlc2VudCBDbG91ZEJlYXQgTGltaXRlZFxyXG4gKlxyXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxyXG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxyXG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxyXG4gKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxyXG4gKi9cclxuXHJcbi8qXHJcbiAqIE94eWdlbiBSZXBvcnRlciBmb3IgUmVwb3J0UG9ydGFsXHJcbiAqL1xyXG5pbXBvcnQgUmVwb3J0ZXJCYXNlIGZyb20gJy4uL3JlcG9ydGVyL1JlcG9ydGVyQmFzZSc7XHJcbmNvbnN0IFJQQ2xpZW50ID0gcmVxdWlyZSgnQG94eWdlbmhxL3JwLWNsaWVudC1qYXZhc2NyaXB0Jyk7XHJcbmNvbnN0IExBVU5DSF9NT0RFUyA9IHtcclxuICAgIERFRkFVTFQ6ICdERUZBVUxUJyxcclxuICAgIERFQlVHOiAnREVCVUcnLFxyXG59O1xyXG5jb25zdCBURVNUX0lURU1fVFlQRVMgPSB7XHJcbiAgICBTVUlURTogJ1NVSVRFJyxcclxuICAgIFRFU1Q6ICdURVNUJyxcclxuICAgIFNURVA6ICdTVEVQJyxcclxufTtcclxuY29uc3QgTUFYX05BTUVfTEVOR1RIID0gMTI4O1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUmVwb3J0UG9ydGFsUmVwb3J0ZXIgZXh0ZW5kcyBSZXBvcnRlckJhc2Uge1xyXG4gICAgY29uc3RydWN0b3Iob3B0aW9ucywgcmVwb3J0ZXJPcHRzLCBhZ2dyZWdhdG9yKSB7XHJcbiAgICAgICAgc3VwZXIob3B0aW9ucyk7XHJcbiAgICAgICAgdGhpcy5yZXBvcnRlck9wdHMgPSByZXBvcnRlck9wdHMgfHwgb3B0aW9ucy5ycDtcclxuICAgICAgICB0aGlzLnJlcG9ydFN0ZXBzID0gcmVwb3J0ZXJPcHRzLnJlcG9ydFN0ZXBzIHx8IHRydWU7XHJcbiAgICAgICAgdGhpcy5yZXBvcnRMb2dzID0gcmVwb3J0ZXJPcHRzLnJlcG9ydExvZ3MgfHwgZmFsc2U7XHJcbiAgICAgICAgdGhpcy5jYlN1aXRlVG9ScElkSGFzaCA9IHt9O1xyXG4gICAgICAgIHRoaXMuY2JDYXNlVG9ScElkSGFzaCA9IHt9O1xyXG4gICAgICAgIHRoaXMuY2JTdGVwVG9ScElkSGFzaCA9IHt9O1xyXG4gICAgICAgIHRoaXMuY3VycmVudFRyYW5zYWN0aW9uU3RlcElkID0gdW5kZWZpbmVkO1xyXG4gICAgICAgIHRoaXMuY3VycmVudFN1YlN0ZXBJZCA9IHVuZGVmaW5lZDtcclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgICF0aGlzLnJlcG9ydGVyT3B0c1xyXG4gICAgICAgICAgICB8fCAhdGhpcy5yZXBvcnRlck9wdHMuYXBpS2V5XHJcbiAgICAgICAgICAgIHx8ICF0aGlzLnJlcG9ydGVyT3B0cy5lbmRwb2ludFxyXG4gICAgICAgICAgICB8fCAhdGhpcy5yZXBvcnRlck9wdHMucHJvamVjdFxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1JlcG9ydFBvcnRhbCBvcHRpb25zIGFyZSBtaXNzaW5nIGluIG94eWdlbi5jb25mIGZpbGUuJyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuYWdncmVnYXRvciA9IGFnZ3JlZ2F0b3I7XHJcbiAgICAgICAgdGhpcy5ycENsaWVudCA9IG5ldyBSUENsaWVudCh7XHJcbiAgICAgICAgICAgIGxhdW5jaDogdGhpcy5yZXBvcnRlck9wdHMubGF1bmNoIHx8IHRoaXMub3B0aW9ucy5uYW1lLFxyXG4gICAgICAgICAgICAuLi50aGlzLnJlcG9ydGVyT3B0c1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGluaXQoKSB7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgYXdhaXQgdGhpcy5ycENsaWVudC5jaGVja0Nvbm5lY3QoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBSUCAtIEVycm9yIGNvbm5lY3RpbmcgdG8gdGhlIHNlcnZlcjogJHtlLm1lc3NhZ2V9YCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgYXN5bmMgZ2VuZXJhdGUocmVzdWx0cykge1xyXG4gICAgfVxyXG4gICAgLy8gRXZlbnRzXHJcbiAgICBhc3luYyBvblJ1bm5lclN0YXJ0KHsgcmlkLCBvcHRzLCBjYXBzIH0pIHtcclxuICAgICAgICBjb25zdCB7IHRlbXBJZCwgcHJvbWlzZSB9ID0gdGhpcy5ycENsaWVudC5zdGFydExhdW5jaCh7XHJcbiAgICAgICAgICAgIG1vZGU6IHRoaXMucmVwb3J0ZXJPcHRzLm1vZGUgfHwgTEFVTkNIX01PREVTLkRFRkFVTFQsXHJcbiAgICAgICAgICAgIGRlYnVnOiBmYWxzZSxcclxuICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLnRlbXBMYXVuY2hJZCA9IHRlbXBJZDtcclxuICAgICAgICBwcm9taXNlLnRoZW4oKHJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgfSwgKGVycm9yKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUuZGlyKGBSUCAtIEVycm9yIGF0IHRoZSBzdGFydCBvZiBsYXVuY2g6ICR7ZXJyb3J9YCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBhc3luYyBvblJ1bm5lckVuZCh7IHJpZCwgcmVzdWx0IH0pIHtcclxuICAgICAgICAvLyBhd2FpdCB0aGlzLnJwQ2xpZW50LmdldFByb21pc2VGaW5pc2hBbGxJdGVtcyh0aGlzLnRlbXBMYXVuY2hJZCk7XHJcbiAgICAgICAgY29uc3QgeyBwcm9taXNlIH0gPSBhd2FpdCB0aGlzLnJwQ2xpZW50LmZpbmlzaExhdW5jaCh0aGlzLnRlbXBMYXVuY2hJZCwge1xyXG4gICAgICAgICAgICBzdGF0dXM6IHJlc3VsdC5zdGF0dXMudG9Mb3dlckNhc2UoKSxcclxuICAgICAgICB9KTtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICBhd2FpdCB0aGlzLnByb21pc2VXaXRoVGltZW91dChwcm9taXNlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgY29uc29sZS5kaXIoYFJQIC0gRmFpbGVkIHRvIGVuZCBsYXVuY2g6ICR7ZX1gKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBhc3luYyBvblN1aXRlU3RhcnQoeyByaWQsIHN1aXRlSWQsIHN1aXRlOiBzdWl0ZURlZiB9KSB7XHJcbiAgICAgICAgY29uc3Qgc3RhcnRUZXN0SXRlbVJlcSA9IHtcclxuICAgICAgICAgICAgbmFtZTogc3VpdGVEZWYubmFtZSB8fCB0aGlzLm9wdGlvbnMubmFtZSxcclxuICAgICAgICAgICAgdHlwZTogVEVTVF9JVEVNX1RZUEVTLlNVSVRFLFxyXG4gICAgICAgIH07XHJcbiAgICAgICAgY29uc3QgeyB0ZW1wSWQsIHByb21pc2UgfSA9IHRoaXMucnBDbGllbnQuc3RhcnRUZXN0SXRlbShzdGFydFRlc3RJdGVtUmVxLCB0aGlzLnRlbXBMYXVuY2hJZCk7XHJcbiAgICAgICAgdGhpcy5jYlN1aXRlVG9ScElkSGFzaFtzdWl0ZUlkXSA9IHRlbXBJZDtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICBhd2FpdCB0aGlzLnByb21pc2VXaXRoVGltZW91dChwcm9taXNlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgY29uc29sZS5kaXIoYFJQIC0gRmFpbGVkIHRvIHN0YXJ0IHN1aXRlIGl0ZW06ICR7ZX1gKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBhc3luYyBvblN1aXRlRW5kKHsgcmlkLCBzdWl0ZUlkLCByZXN1bHQgfSkge1xyXG4gICAgICAgIGlmICghdGhpcy5jYlN1aXRlVG9ScElkSGFzaFtzdWl0ZUlkXSkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IHJwU3VpdGVJZCA9IHRoaXMuY2JTdWl0ZVRvUnBJZEhhc2hbc3VpdGVJZF07XHJcbiAgICAgICAgY29uc3QgZmluaXNoVGVzdEl0ZW1SZXEgPSB7XHJcbiAgICAgICAgICAgIHN0YXR1czogcmVzdWx0LnN0YXR1cy50b0xvd2VyQ2FzZSgpLFxyXG4gICAgICAgIH07XHJcbiAgICAgICAgY29uc3QgeyBwcm9taXNlIH0gPSB0aGlzLnJwQ2xpZW50LmZpbmlzaFRlc3RJdGVtKHJwU3VpdGVJZCwgZmluaXNoVGVzdEl0ZW1SZXEpO1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIGF3YWl0IHRoaXMucHJvbWlzZVdpdGhUaW1lb3V0KHByb21pc2UpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICBjb25zb2xlLmRpcihgUlAgLSBGYWlsZWQgdG8gZmluaXNoIHN1aXRlIGl0ZW06ICR7ZX1gKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBhc3luYyBvbkNhc2VTdGFydCh7IHJpZCwgc3VpdGVJZCwgY2FzZUlkLCAnY2FzZSc6IGNhc2VEZWYgfSkge1xyXG4gICAgICAgIGNvbnN0IHN0YXJ0VGVzdEl0ZW1SZXEgPSB7XHJcbiAgICAgICAgICAgIG5hbWU6IGNhc2VEZWYubmFtZSxcclxuICAgICAgICAgICAgdHlwZTogVEVTVF9JVEVNX1RZUEVTLlRFU1QsXHJcbiAgICAgICAgICAgIGNvZGVSZWY6IGNhc2VEZWYucGF0aCxcclxuICAgICAgICB9O1xyXG4gICAgICAgIGNvbnN0IHJwU3VpdGVJZCA9IHRoaXMuY2JTdWl0ZVRvUnBJZEhhc2hbc3VpdGVJZF07XHJcbiAgICAgICAgaWYgKCFycFN1aXRlSWQpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCB7IHRlbXBJZCwgcHJvbWlzZSB9ID0gdGhpcy5ycENsaWVudC5zdGFydFRlc3RJdGVtKHN0YXJ0VGVzdEl0ZW1SZXEsIHRoaXMudGVtcExhdW5jaElkLCBycFN1aXRlSWQpO1xyXG4gICAgICAgIHRoaXMuY2JDYXNlVG9ScElkSGFzaFtjYXNlSWRdID0gdGVtcElkO1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIGF3YWl0IHRoaXMucHJvbWlzZVdpdGhUaW1lb3V0KHByb21pc2UpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICBjb25zb2xlLmRpcihgUlAgLSBGYWlsZWQgdG8gc3RhcnQgdGVzdCBpdGVtOiAke2V9YCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgYXN5bmMgb25DYXNlRW5kKHsgcmlkLCBzdWl0ZUlkLCBjYXNlSWQsIHJlc3VsdCB9KSB7XHJcbiAgICAgICAgY29uc3QgcnBUZXN0SWQgPSB0aGlzLmNiQ2FzZVRvUnBJZEhhc2hbY2FzZUlkXTtcclxuICAgICAgICBpZiAoIXJwVGVzdElkKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3Qgc3RhdHVzID0gcmVzdWx0LnN0YXR1cy50b0xvd2VyQ2FzZSgpO1xyXG4gICAgICAgIGlmIChzdGF0dXMgPT09ICdmYWlsZWQnICYmIHJlc3VsdC5mYWlsdXJlKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHJwRmlsZSA9IHJlc3VsdC5zY3JlZW5zaG90ID9cclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgbmFtZTogJ3NjcmVlbnNob3QnLFxyXG4gICAgICAgICAgICAgICAgdHlwZTogJ2ltYWdlL3BuZycsXHJcbiAgICAgICAgICAgICAgICBjb250ZW50OiByZXN1bHQuc2NyZWVuc2hvdCxcclxuICAgICAgICAgICAgfSA6IHVuZGVmaW5lZDtcclxuICAgICAgICAgICAgY29uc3QgbG9nUmVxID0ge1xyXG4gICAgICAgICAgICAgICAgbWVzc2FnZTogcmVzdWx0LmZhaWx1cmUubWVzc2FnZSxcclxuICAgICAgICAgICAgICAgIGxldmVsOiAnZXJyb3InXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIGNvbnN0IHsgcHJvbWlzZTogc2VuZExvZ1Byb21pc2UgfSA9IHJwRmlsZSA/XHJcbiAgICAgICAgICAgICAgICB0aGlzLnJwQ2xpZW50LnNlbmRMb2dXaXRoRmlsZShycFRlc3RJZCwgbG9nUmVxLCBycEZpbGUpXHJcbiAgICAgICAgICAgICAgICA6IHRoaXMucnBDbGllbnQuc2VuZExvZyhycFRlc3RJZCwgbG9nUmVxKTtcclxuXHJcbiAgICAgICAgICAgIGF3YWl0IHRoaXMucHJvbWlzZVdpdGhUaW1lb3V0KHNlbmRMb2dQcm9taXNlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgZmluaXNoVGVzdEl0ZW1SZXEgPSB7XHJcbiAgICAgICAgICAgIHN0YXR1czogcmVzdWx0LnN0YXR1cy50b0xvd2VyQ2FzZSgpLFxyXG4gICAgICAgIH07XHJcbiAgICAgICAgY29uc3QgeyBwcm9taXNlIH0gPSB0aGlzLnJwQ2xpZW50LmZpbmlzaFRlc3RJdGVtKHJwVGVzdElkLCBmaW5pc2hUZXN0SXRlbVJlcSk7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgYXdhaXQgdGhpcy5wcm9taXNlV2l0aFRpbWVvdXQocHJvbWlzZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUuZGlyKGBSUCAtIEZhaWxlZCB0byBmaW5pc2ggdGVzdCBpdGVtOiAke2V9YCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgYXN5bmMgb25TdGVwU3RhcnQoeyByaWQsIGNhc2VJZCwgc3RlcCB9KSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLnJlcG9ydFN0ZXBzKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHN0ZXAubW9kdWxlICYmIHN0ZXAubW9kdWxlID09PSAnbG9nJykge1xyXG4gICAgICAgICAgICBhd2FpdCB0aGlzLnJlcG9ydExvZ1N0ZXAoY2FzZUlkLCBzdGVwKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBycENhc2VJZCA9IHRoaXMuY2JDYXNlVG9ScElkSGFzaFtjYXNlSWRdO1xyXG4gICAgICAgIGxldCBycFBhcmVudElkOyAvKiA9IHRoaXMuY3VycmVudFRyYW5zYWN0aW9uU3RlcElkID9cclxuICAgICAgICAgICAgdGhpcy5jYlN0ZXBUb1JwSWRIYXNoW3RoaXMuY3VycmVudFRyYW5zYWN0aW9uU3RlcElkXVxyXG4gICAgICAgICAgICA6IHRoaXMuY2JTdGVwVG9ScElkSGFzaFtjYXNlSWRdOyovXHJcbiAgICAgICAgLy8gY29uc3QgcnBDYXNlSWQgPSB0aGlzLmNiQ2FzZVRvUnBJZEhhc2hbY2FzZUlkXTtcclxuICAgICAgICBpZiAoc3RlcC5uYW1lID09PSAndHJhbnNhY3Rpb24nKSB7XHJcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFRyYW5zYWN0aW9uU3RlcElkID0gc3RlcC5pZDtcclxuICAgICAgICAgICAgcnBQYXJlbnRJZCA9IHRoaXMuY2JDYXNlVG9ScElkSGFzaFtjYXNlSWRdO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5jdXJyZW50U3ViU3RlcElkID0gc3RlcC5pZDtcclxuICAgICAgICAgICAgcnBQYXJlbnRJZCA9IHRoaXMuY3VycmVudFRyYW5zYWN0aW9uU3RlcElkID9cclxuICAgICAgICAgICAgICAgIHRoaXMuY2JTdGVwVG9ScElkSGFzaFt0aGlzLmN1cnJlbnRUcmFuc2FjdGlvblN0ZXBJZF06IHRoaXMuY2JTdGVwVG9ScElkSGFzaFtjYXNlSWRdO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoIXJwUGFyZW50SWQgfHwgIXJwQ2FzZUlkKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3Qgc3RlcE5hbWUgPSB0aGlzLl9nZXRTdGVwTmFtZShzdGVwKTtcclxuICAgICAgICBjb25zdCBzdGFydFRlc3RJdGVtUmVxID0ge1xyXG4gICAgICAgICAgICBuYW1lOiBzdGVwTmFtZSxcclxuICAgICAgICAgICAgdHlwZTogVEVTVF9JVEVNX1RZUEVTLlNURVAsXHJcbiAgICAgICAgICAgIC8vIFwiY29kZVJlZlwiICsgXCJwYXJhbWV0ZXJzXCIgdXNlZCBieSBSUCBsaWIgdG8gZ2VuZXJhdGUgdGVzdENhc2VJZCBpZiB0ZXN0Q2FzZUlkIGlzIG5vdCBkZWZpbmVkXHJcbiAgICAgICAgICAgIC8vIHNlZSBodHRwczovL2dpdGh1Yi5jb20vcmVwb3J0cG9ydGFsL2NsaWVudC1qYXZhc2NyaXB0L2Jsb2IvNDg2ZWY3MGM2MzhhOWEyMzI2NzI5MGM2MmRmMWZhZjkwMGY3ZGY2YS9saWIvcmVwb3J0LXBvcnRhbC1jbGllbnQuanMjTDQ5N1xyXG4gICAgICAgICAgICAvLyB0aGlzIGlzIGRpc2FibGVkIGZvciBub3cuIG5vdCBzdXJlIGlmIGFjdHVhbGx5IG5lZWRlZC4uLlxyXG4gICAgICAgICAgICAvL3BhcmFtZXRlcnM6IHRoaXMuX2dldFJwQXJncyhzdGVwLmFyZ3MpLFxyXG4gICAgICAgICAgICBjb2RlUmVmOiBzdGVwLmxvY2F0aW9uLFxyXG4gICAgICAgICAgICB0ZXN0Q2FzZUlkOiBycENhc2VJZCxcclxuICAgICAgICAgICAgaGFzU3RhdHM6IGZhbHNlLFxyXG4gICAgICAgIH07XHJcbiAgICAgICAgY29uc3QgeyB0ZW1wSWQsIHByb21pc2UgfSA9IHRoaXMucnBDbGllbnQuc3RhcnRUZXN0SXRlbShzdGFydFRlc3RJdGVtUmVxLCB0aGlzLnRlbXBMYXVuY2hJZCwgcnBQYXJlbnRJZCk7XHJcbiAgICAgICAgdGhpcy5jYlN0ZXBUb1JwSWRIYXNoW3N0ZXAuaWRdID0gdGVtcElkO1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIGF3YWl0IHRoaXMucHJvbWlzZVdpdGhUaW1lb3V0KHByb21pc2UpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICBjb25zb2xlLmRpcihgUlAgLSBGYWlsZWQgdG8gc3RhcnQgc3RlcCBpdGVtOiAke2V9YCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgYXN5bmMgb25TdGVwRW5kKHsgcmlkLCBzdGVwOiByZXN1bHQgfSkge1xyXG4gICAgICAgIGlmICghdGhpcy5yZXBvcnRTdGVwcykge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChyZXN1bHQubW9kdWxlICYmIHJlc3VsdC5tb2R1bGUgPT09ICdsb2cnKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgcnBTdGVwSWQgPSB0aGlzLmNiU3RlcFRvUnBJZEhhc2hbcmVzdWx0LmlkXTtcclxuICAgICAgICBpZiAoIXJwU3RlcElkKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHJlc3VsdC5uYW1lICE9PSAndHJhbnNhY3Rpb24nKSB7XHJcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFN1YlN0ZXBJZCA9IHVuZGVmaW5lZDtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3Qgc3RhdHVzID0gcmVzdWx0LnN0YXR1cy50b0xvd2VyQ2FzZSgpO1xyXG4gICAgICAgIGlmIChzdGF0dXMgPT09ICdmYWlsZWQnICYmIHJlc3VsdC5mYWlsdXJlKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHJwRmlsZSA9IHJlc3VsdC5zY3JlZW5zaG90ID9cclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgbmFtZTogJ3NjcmVlbnNob3QnLFxyXG4gICAgICAgICAgICAgICAgdHlwZTogJ2ltYWdlL3BuZycsXHJcbiAgICAgICAgICAgICAgICBjb250ZW50OiByZXN1bHQuc2NyZWVuc2hvdCxcclxuICAgICAgICAgICAgfSA6IHVuZGVmaW5lZDtcclxuICAgICAgICAgICAgY29uc3QgbG9nUmVxID0ge1xyXG4gICAgICAgICAgICAgICAgbWVzc2FnZTogcmVzdWx0LmZhaWx1cmUubWVzc2FnZSxcclxuICAgICAgICAgICAgICAgIGxldmVsOiAnZXJyb3InLFxyXG4gICAgICAgICAgICAgICAgZmlsZTogcnBGaWxlLFxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICBjb25zdCB7IHByb21pc2U6IHNlbmRMb2dQcm9taXNlIH0gPSB0aGlzLnJwQ2xpZW50LnNlbmRMb2cocnBTdGVwSWQsIGxvZ1JlcSwgcnBGaWxlKTtcclxuICAgICAgICAgICAgYXdhaXQgdGhpcy5wcm9taXNlV2l0aFRpbWVvdXQoc2VuZExvZ1Byb21pc2UpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBmaW5pc2hUZXN0SXRlbVJlcSA9IHtcclxuICAgICAgICAgICAgc3RhdHVzOiByZXN1bHQuc3RhdHVzLnRvTG93ZXJDYXNlKCksXHJcbiAgICAgICAgfTtcclxuICAgICAgICBjb25zdCB7IHByb21pc2UgfSA9IHRoaXMucnBDbGllbnQuZmluaXNoVGVzdEl0ZW0ocnBTdGVwSWQsIGZpbmlzaFRlc3RJdGVtUmVxKTtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICBhd2FpdCB0aGlzLnByb21pc2VXaXRoVGltZW91dChwcm9taXNlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgY29uc29sZS5kaXIoYFJQIC0gRmFpbGVkIHRvIGZpbmlzaCBzdGVwIGl0ZW06ICR7ZX1gKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBhc3luYyBvbkxvZyh7IHN1aXRlSWQsIGNhc2VJZCwgc3RlcElkLCBsZXZlbCwgbXNnLCB0aW1lLCBzcmMgfSkge1xyXG4gICAgICAgIGlmICghdGhpcy5yZXBvcnRMb2dzKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gT3h5Z2VuIG1pZ2h0IHN0YXJ0IGdlbmVyYXRpbmcgbG9ncyBiZWZvcmUgb25SdW5uZXJTdGFydCBldmVudCwgaWdub3JlIHRoZW1cclxuICAgICAgICBpZiAoIXRoaXMudGVtcExhdW5jaElkKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgcnBQYXJlbnRJZCA9IHN0ZXBJZCA/XHJcbiAgICAgICAgICAgIHRoaXMuY2JTdGVwVG9ScElkSGFzaFtzdGVwSWRdXHJcbiAgICAgICAgICAgIDogY2FzZUlkID8gdGhpcy5jYkNhc2VUb1JwSWRIYXNoW2Nhc2VJZF1cclxuICAgICAgICAgICAgOiBzdWl0ZUlkID8gdGhpcy5jYlN1aXRlVG9ScElkSGFzaFtzdWl0ZUlkXVxyXG4gICAgICAgICAgICA6IHVuZGVmaW5lZDtcclxuICAgICAgICBjb25zdCBycExldmVsID0gdGhpcy5fZ2V0UnBMZXZlbChsZXZlbCk7XHJcbiAgICAgICAgY29uc3QgbG9nUmVxID0ge1xyXG4gICAgICAgICAgICBtZXNzYWdlOiBtc2csXHJcbiAgICAgICAgICAgIGxldmVsOiBycExldmVsLFxyXG4gICAgICAgICAgICB0aW1lOiB0aW1lLFxyXG4gICAgICAgIH07XHJcbiAgICAgICAgY29uc3QgeyBwcm9taXNlIH0gPSB0aGlzLnJwQ2xpZW50LnNlbmRMb2cocnBQYXJlbnRJZCB8fCB0aGlzLnRlbXBMYXVuY2hJZCwgbG9nUmVxKTtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICBhd2FpdCB0aGlzLnByb21pc2VXaXRoVGltZW91dChwcm9taXNlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgY29uc29sZS5kaXIoYFJQIC0gRmFpbGVkIHRvIGNyZWF0ZSBsb2cgaXRlbTogJHtlfWApO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGFzeW5jIHJlcG9ydExvZ1N0ZXAoY2FzZUlkLCBzdGVwKSB7XHJcbiAgICAgICAgaWYgKCFzdGVwLmFyZ3MgfHwgIXN0ZXAuYXJncy5sZW5ndGgpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBsZXZlbCA9IHN0ZXAubmFtZTtcclxuICAgICAgICBjb25zdCBtc2cgPSBzdGVwLmFyZ3NbMF07XHJcbiAgICAgICAgY29uc3QgdGltZSA9IHN0ZXAudGltZTtcclxuICAgICAgICBsZXQgc3RlcElkID0gdW5kZWZpbmVkO1xyXG4gICAgICAgIGlmICh0aGlzLmN1cnJlbnRTdWJTdGVwSWQpIHtcclxuICAgICAgICAgICAgc3RlcElkID0gdGhpcy5jdXJyZW50U3ViU3RlcElkO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmICh0aGlzLmN1cnJlbnRUcmFuc2FjdGlvblN0ZXBJZCkge1xyXG4gICAgICAgICAgICBzdGVwSWQgPSB0aGlzLmN1cnJlbnRUcmFuc2FjdGlvblN0ZXBJZDtcclxuICAgICAgICB9XHJcbiAgICAgICAgYXdhaXQgdGhpcy5zZW5kUnBMb2coeyBzdWl0ZUlkOiB1bmRlZmluZWQsIGNhc2VJZCwgc3RlcElkLCBsZXZlbCwgbXNnLCB0aW1lIH0pO1xyXG4gICAgfVxyXG4gICAgYXN5bmMgc2VuZFJwTG9nKHsgc3VpdGVJZCwgY2FzZUlkLCBzdGVwSWQsIGxldmVsLCBtc2csIHRpbWUgfSkge1xyXG4gICAgICAgIC8vIE94eWdlbiBtaWdodCBzdGFydCBnZW5lcmF0aW5nIGxvZ3MgYmVmb3JlIG9uUnVubmVyU3RhcnQgZXZlbnQsIGlnbm9yZSB0aGVtXHJcbiAgICAgICAgaWYgKCF0aGlzLnRlbXBMYXVuY2hJZCkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IHJwUGFyZW50SWQgPSBzdGVwSWQgP1xyXG4gICAgICAgICAgICB0aGlzLmNiU3RlcFRvUnBJZEhhc2hbc3RlcElkXVxyXG4gICAgICAgICAgICA6IGNhc2VJZCA/IHRoaXMuY2JDYXNlVG9ScElkSGFzaFtjYXNlSWRdXHJcbiAgICAgICAgICAgIDogc3VpdGVJZCA/IHRoaXMuY2JTdWl0ZVRvUnBJZEhhc2hbc3VpdGVJZF1cclxuICAgICAgICAgICAgOiB1bmRlZmluZWQ7XHJcbiAgICAgICAgY29uc3QgcnBMZXZlbCA9IHRoaXMuX2dldFJwTGV2ZWwobGV2ZWwpO1xyXG4gICAgICAgIGNvbnN0IGxvZ1JlcSA9IHtcclxuICAgICAgICAgICAgbWVzc2FnZTogbXNnLFxyXG4gICAgICAgICAgICBsZXZlbDogcnBMZXZlbCxcclxuICAgICAgICAgICAgdGltZTogdGltZSxcclxuICAgICAgICB9O1xyXG4gICAgICAgIGNvbnN0IHsgcHJvbWlzZSB9ID0gdGhpcy5ycENsaWVudC5zZW5kTG9nKHJwUGFyZW50SWQgfHwgdGhpcy50ZW1wTGF1bmNoSWQsIGxvZ1JlcSk7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgYXdhaXQgdGhpcy5wcm9taXNlV2l0aFRpbWVvdXQocHJvbWlzZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUuZGlyKGBSUCAtIEZhaWxlZCB0byBjcmVhdGUgbG9nIGl0ZW06ICR7ZX1gKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBfZ2V0UnBMZXZlbChveExldmVsKSB7XHJcbiAgICAgICAgaWYgKG94TGV2ZWwpIHtcclxuICAgICAgICAgICAgcmV0dXJuIG94TGV2ZWwudG9Mb3dlckNhc2UoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuICdpbmZvJztcclxuICAgIH1cclxuICAgIC8qX2dldFJwQXJncyhjYkFyZ3MpIHtcclxuICAgICAgICBpZiAoIWNiQXJncyB8fCAhY2JBcmdzLmxlbmd0aCkge1xyXG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBycEFyZ3MgPSBbXTtcclxuICAgICAgICBmb3IgKGxldCBpPTA7IGkgPCBjYkFyZ3MubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgY29uc3QgYXJnID0gY2JBcmdzW2ldO1xyXG4gICAgICAgICAgICBsZXQgYXJnU3RyID0gdHlwZW9mIGFyZyA9PT0gJ3N0cmluZycgfHwgYXJnIGluc3RhbmNlb2YgU3RyaW5nID8gYXJnIDogSlNPTi5zdHJpbmdpZnkoYXJnKTtcclxuICAgICAgICAgICAgcnBBcmdzLnB1c2goe1xyXG4gICAgICAgICAgICAgICAga2V5OiBgYXJnJHtpfWAsXHJcbiAgICAgICAgICAgICAgICB2YWx1ZTogYXJnU3RyXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gcnBBcmdzO1xyXG4gICAgfSovXHJcbiAgICBfZ2V0U3RlcE5hbWUoc3RlcCkge1xyXG4gICAgICAgIGxldCBuYW1lO1xyXG5cclxuICAgICAgICBpZiAoc3RlcC5uYW1lID09PSAndHJhbnNhY3Rpb24nICYmIHN0ZXAuYXJncy5sZW5ndGggPiAwKSB7ICAvLyBGSVhNRTogc3RlcHMgbmVlZCB0byBiZSBuZXN0ZWQgdW5kZXIgdHJhbnNhY3Rpb25zXHJcbiAgICAgICAgICAgIG5hbWUgPSBzdGVwLmFyZ3NbMF07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKHN0ZXAuc2lnbmF0dXJlKSB7XHJcbiAgICAgICAgICAgIG5hbWUgPSBzdGVwLnNpZ25hdHVyZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAoc3RlcC5tb2R1bGUpIHsgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRklYTUU6IGlzIHRoaXMgZXZlciByZWFjaGVkPyBcInN0ZXAuc2lnbmF0dXJlXCIgc2VlbXMgdG8gYWx3YXlzIGV4aXN0XHJcbiAgICAgICAgICAgIG5hbWUgPSBgJHtzdGVwLm1vZHVsZX0uJHtzdGVwLm5hbWV9YDtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIG5hbWUgPSBzdGVwLm5hbWU7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBtYXhpbXVtIGFsbG93ZWQgbmFtZSBsZW5ndGggaW4gUlAgaXMgMTAyNCBieXRlc1xyXG4gICAgICAgIC8vIHdlIHRydW5jYXRlIGl0IGV2ZW4gbG93ZXIgc28gaXQgd2lsbCBkaXNwbGF5IG5pY2VseVxyXG4gICAgICAgIGlmIChuYW1lLmxlbmd0aCA+IE1BWF9OQU1FX0xFTkdUSCkge1xyXG4gICAgICAgICAgICBuYW1lID0gbmFtZS5zdWJzdHJpbmcoMCwgTUFYX05BTUVfTEVOR1RILTMpICsgJy4uLic7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBuYW1lO1xyXG4gICAgfVxyXG4gICAgcHJvbWlzZVdpdGhUaW1lb3V0KHByb21pc2UsIHRpbWVvdXQgPSAxMCAqIDEwMDAwKSB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgICAgICAgICAgaWYgKCFwcm9taXNlIHx8ICFwcm9taXNlLnRoZW4pIHtcclxuICAgICAgICAgICAgICAgIHJlamVjdChuZXcgRXJyb3IoYFByb21pc2UgYXdhaXQgdGltZW91dCBvZiAke3RpbWVvdXR9IG1zYCkpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHByb21pc2UudGhlbihyZXNvbHZlLCByZWplY3QpO1xyXG4gICAgICAgICAgICBzZXRUaW1lb3V0KHJlamVjdCwgdGltZW91dCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbn1cclxuXHJcbiJdfQ==
|
|
468
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9veF9yZXBvcnRlcnMvcmVwb3J0ZXItcnAuanMiXSwibmFtZXMiOlsiUlBDbGllbnQiLCJyZXF1aXJlIiwiTEFVTkNIX01PREVTIiwiREVGQVVMVCIsIkRFQlVHIiwiVEVTVF9JVEVNX1RZUEVTIiwiU1VJVEUiLCJURVNUIiwiU1RFUCIsIk1BWF9OQU1FX0xFTkdUSCIsIlJlcG9ydFBvcnRhbFJlcG9ydGVyIiwiUmVwb3J0ZXJCYXNlIiwiY29uc3RydWN0b3IiLCJvcHRpb25zIiwicmVwb3J0ZXJPcHRzIiwiYWdncmVnYXRvciIsInJwIiwicmVwb3J0U3RlcHMiLCJyZXBvcnRMb2dzIiwiY2JTdWl0ZVRvUnBJZEhhc2giLCJjYkNhc2VUb1JwSWRIYXNoIiwiY2JTdGVwVG9ScElkSGFzaCIsImN1cnJlbnRUcmFuc2FjdGlvblN0ZXBJZCIsInVuZGVmaW5lZCIsImN1cnJlbnRTdWJTdGVwSWQiLCJhcGlLZXkiLCJlbmRwb2ludCIsInByb2plY3QiLCJFcnJvciIsInJwQ2xpZW50IiwibGF1bmNoIiwibmFtZSIsImluaXQiLCJjaGVja0Nvbm5lY3QiLCJlIiwibWVzc2FnZSIsImdlbmVyYXRlIiwicmVzdWx0cyIsIm9uUnVubmVyU3RhcnQiLCJyaWQiLCJvcHRzIiwiY2FwcyIsInRlbXBJZCIsInByb21pc2UiLCJzdGFydExhdW5jaCIsIm1vZGUiLCJkZWJ1ZyIsInRlbXBMYXVuY2hJZCIsInRoZW4iLCJyZXNwb25zZSIsImVycm9yIiwiY29uc29sZSIsImRpciIsIm9uUnVubmVyRW5kIiwicmVzdWx0IiwiZmluaXNoTGF1bmNoIiwic3RhdHVzIiwidG9Mb3dlckNhc2UiLCJwcm9taXNlV2l0aFRpbWVvdXQiLCJvblN1aXRlU3RhcnQiLCJzdWl0ZUlkIiwic3VpdGUiLCJzdWl0ZURlZiIsInN0YXJ0VGVzdEl0ZW1SZXEiLCJ0eXBlIiwic3RhcnRUZXN0SXRlbSIsIm9uU3VpdGVFbmQiLCJycFN1aXRlSWQiLCJmaW5pc2hUZXN0SXRlbVJlcSIsImZpbmlzaFRlc3RJdGVtIiwib25DYXNlU3RhcnQiLCJjYXNlSWQiLCJjYXNlRGVmIiwiY29kZVJlZiIsInBhdGgiLCJvbkNhc2VFbmQiLCJycFRlc3RJZCIsImZhaWx1cmUiLCJycEZpbGUiLCJzY3JlZW5zaG90IiwiY29udGVudCIsImxvZ1JlcSIsImxldmVsIiwic2VuZExvZ1Byb21pc2UiLCJzZW5kTG9nV2l0aEZpbGUiLCJzZW5kTG9nIiwib25TdGVwU3RhcnQiLCJzdGVwIiwibW9kdWxlIiwicmVwb3J0TG9nU3RlcCIsInJwQ2FzZUlkIiwicnBQYXJlbnRJZCIsImlkIiwic3RlcE5hbWUiLCJfZ2V0U3RlcE5hbWUiLCJsb2NhdGlvbiIsInRlc3RDYXNlSWQiLCJoYXNTdGF0cyIsIm9uU3RlcEVuZCIsInJwU3RlcElkIiwiZmlsZSIsIm9uTG9nIiwic3RlcElkIiwibXNnIiwidGltZSIsInNyYyIsInJwTGV2ZWwiLCJfZ2V0UnBMZXZlbCIsImFyZ3MiLCJsZW5ndGgiLCJzZW5kUnBMb2ciLCJveExldmVsIiwic2lnbmF0dXJlIiwic3Vic3RyaW5nIiwidGltZW91dCIsIlByb21pc2UiLCJyZXNvbHZlIiwicmVqZWN0Iiwic2V0VGltZW91dCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBWUE7Ozs7QUFDQSxNQUFNQSxRQUFRLEdBQUdDLE9BQU8sQ0FBQyxnQ0FBRCxDQUF4Qjs7QUFDQSxNQUFNQyxZQUFZLEdBQUc7QUFDakJDLEVBQUFBLE9BQU8sRUFBRSxTQURRO0FBRWpCQyxFQUFBQSxLQUFLLEVBQUU7QUFGVSxDQUFyQjtBQUlBLE1BQU1DLGVBQWUsR0FBRztBQUNwQkMsRUFBQUEsS0FBSyxFQUFFLE9BRGE7QUFFcEJDLEVBQUFBLElBQUksRUFBRSxNQUZjO0FBR3BCQyxFQUFBQSxJQUFJLEVBQUU7QUFIYyxDQUF4QjtBQUtBLE1BQU1DLGVBQWUsR0FBRyxHQUF4Qjs7QUFFZSxNQUFNQyxvQkFBTixTQUFtQ0MscUJBQW5DLENBQWdEO0FBQzNEQyxFQUFBQSxXQUFXLENBQUNDLE9BQUQsRUFB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LE1BQUQsRUFBU0gsT0FBVCxDQUFWO0FBQ0gsS0FOTSxDQUFQO0FBT0g7O0FBdFcwRCIsInNvdXJjZXNDb250ZW50IjpbIi8qXHJcbiAqIENvcHlyaWdodCAoQykgMjAxNS1wcmVzZW50IENsb3VkQmVhdCBMaW1pdGVkXHJcbiAqXHJcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XHJcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XHJcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yXHJcbiAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXHJcbiAqL1xyXG5cclxuLypcclxuICogT3h5Z2VuIFJlcG9ydGVyIGZvciBSZXBvcnRQb3J0YWxcclxuICovXHJcbmltcG9ydCBSZXBvcnRlckJhc2UgZnJvbSAnLi4vcmVwb3J0ZXIvUmVwb3J0ZXJCYXNlJztcclxuY29uc3QgUlBDbGllbnQgPSByZXF1aXJlKCdAb3h5Z2VuaHEvcnAtY2xpZW50LWphdmFzY3JpcHQnKTtcclxuY29uc3QgTEFVTkNIX01PREVTID0ge1xyXG4gICAgREVGQVVMVDogJ0RFRkFVTFQnLFxyXG4gICAgREVCVUc6ICdERUJVRycsXHJcbn07XHJcbmNvbnN0IFRFU1RfSVRFTV9UWVBFUyA9IHtcclxuICAgIFNVSVRFOiAnU1VJVEUnLFxyXG4gICAgVEVTVDogJ1RFU1QnLFxyXG4gICAgU1RFUDogJ1NURVAnLFxyXG59O1xyXG5jb25zdCBNQVhfTkFNRV9MRU5HVEggPSAxMjg7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBSZXBvcnRQb3J0YWxSZXBvcnRlciBleHRlbmRzIFJlcG9ydGVyQmFzZSB7XHJcbiAgICBjb25zdHJ1Y3RvcihvcHRpb25zLCByZXBvcnRlck9wdHMsIGFnZ3JlZ2F0b3IpIHtcclxuICAgICAgICBzdXBlcihvcHRpb25zKTtcclxuICAgICAgICB0aGlzLnJlcG9ydGVyT3B0cyA9IHJlcG9ydGVyT3B0cyB8fCBvcHRpb25zLnJwO1xyXG4gICAgICAgIHRoaXMucmVwb3J0U3RlcHMgPSByZXBvcnRlck9wdHMucmVwb3J0U3RlcHMgfHwgdHJ1ZTtcclxuICAgICAgICB0aGlzLnJlcG9ydExvZ3MgPSByZXBvcnRlck9wdHMucmVwb3J0TG9ncyB8fCBmYWxzZTtcclxuICAgICAgICB0aGlzLmNiU3VpdGVUb1JwSWRIYXNoID0ge307XHJcbiAgICAgICAgdGhpcy5jYkNhc2VUb1JwSWRIYXNoID0ge307XHJcbiAgICAgICAgdGhpcy5jYlN0ZXBUb1JwSWRIYXNoID0ge307XHJcbiAgICAgICAgdGhpcy5jdXJyZW50VHJhbnNhY3Rpb25TdGVwSWQgPSB1bmRlZmluZWQ7XHJcbiAgICAgICAgdGhpcy5jdXJyZW50U3ViU3RlcElkID0gdW5kZWZpbmVkO1xyXG4gICAgICAgIGlmIChcclxuICAgICAgICAgICAgIXRoaXMucmVwb3J0ZXJPcHRzXHJcbiAgICAgICAgICAgIHx8ICF0aGlzLnJlcG9ydGVyT3B0cy5hcGlLZXlcclxuICAgICAgICAgICAgfHwgIXRoaXMucmVwb3J0ZXJPcHRzLmVuZHBvaW50XHJcbiAgICAgICAgICAgIHx8ICF0aGlzLnJlcG9ydGVyT3B0cy5wcm9qZWN0XHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignUmVwb3J0UG9ydGFsIG9wdGlvbnMgYXJlIG1pc3NpbmcgaW4gb3h5Z2VuLmNvbmYgZmlsZS4nKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5hZ2dyZWdhdG9yID0gYWdncmVnYXRvcjtcclxuICAgICAgICB0aGlzLnJwQ2xpZW50ID0gbmV3IFJQQ2xpZW50KHtcclxuICAgICAgICAgICAgbGF1bmNoOiB0aGlzLnJlcG9ydGVyT3B0cy5sYXVuY2ggfHwgdGhpcy5vcHRpb25zLm5hbWUsXHJcbiAgICAgICAgICAgIC4uLnRoaXMucmVwb3J0ZXJPcHRzXHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgaW5pdCgpIHtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICBhd2FpdCB0aGlzLnJwQ2xpZW50LmNoZWNrQ29ubmVjdCgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFJQIC0gRXJyb3IgY29ubmVjdGluZyB0byB0aGUgc2VydmVyOiAke2UubWVzc2FnZX1gKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBhc3luYyBnZW5lcmF0ZShyZXN1bHRzKSB7XHJcbiAgICB9XHJcbiAgICAvLyBFdmVudHNcclxuICAgIGFzeW5jIG9uUnVubmVyU3RhcnQoeyByaWQsIG9wdHMsIGNhcHMgfSkge1xyXG4gICAgICAgIGNvbnN0IHsgdGVtcElkLCBwcm9taXNlIH0gPSB0aGlzLnJwQ2xpZW50LnN0YXJ0TGF1bmNoKHtcclxuICAgICAgICAgICAgbW9kZTogdGhpcy5yZXBvcnRlck9wdHMubW9kZSB8fCBMQVVOQ0hfTU9ERVMuREVGQVVMVCxcclxuICAgICAgICAgICAgZGVidWc6IGZhbHNlLFxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMudGVtcExhdW5jaElkID0gdGVtcElkO1xyXG4gICAgICAgIHByb21pc2UudGhlbigocmVzcG9uc2UpID0+IHtcclxuICAgICAgICB9LCAoZXJyb3IpID0+IHtcclxuICAgICAgICAgICAgY29uc29sZS5kaXIoYFJQIC0gRXJyb3IgYXQgdGhlIHN0YXJ0IG9mIGxhdW5jaDogJHtlcnJvcn1gKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuICAgIGFzeW5jIG9uUnVubmVyRW5kKHsgcmlkLCByZXN1bHQgfSkge1xyXG4gICAgICAgIC8vIGF3YWl0IHRoaXMucnBDbGllbnQuZ2V0UHJvbWlzZUZpbmlzaEFsbEl0ZW1zKHRoaXMudGVtcExhdW5jaElkKTtcclxuICAgICAgICBjb25zdCB7IHByb21pc2UgfSA9IGF3YWl0IHRoaXMucnBDbGllbnQuZmluaXNoTGF1bmNoKHRoaXMudGVtcExhdW5jaElkLCB7XHJcbiAgICAgICAgICAgIHN0YXR1czogcmVzdWx0LnN0YXR1cy50b0xvd2VyQ2FzZSgpLFxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIGF3YWl0IHRoaXMucHJvbWlzZVdpdGhUaW1lb3V0KHByb21pc2UpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICBjb25zb2xlLmRpcihgUlAgLSBGYWlsZWQgdG8gZW5kIGxhdW5jaDogJHtlfWApO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGFzeW5jIG9uU3VpdGVTdGFydCh7IHJpZCwgc3VpdGVJZCwgc3VpdGU6IHN1aXRlRGVmIH0pIHtcclxuICAgICAgICBjb25zdCBzdGFydFRlc3RJdGVtUmVxID0ge1xyXG4gICAgICAgICAgICBuYW1lOiBzdWl0ZURlZi5uYW1lIHx8IHRoaXMub3B0aW9ucy5uYW1lLFxyXG4gICAgICAgICAgICB0eXBlOiBURVNUX0lURU1fVFlQRVMuU1VJVEUsXHJcbiAgICAgICAgfTtcclxuICAgICAgICBjb25zdCB7IHRlbXBJZCwgcHJvbWlzZSB9ID0gdGhpcy5ycENsaWVudC5zdGFydFRlc3RJdGVtKHN0YXJ0VGVzdEl0ZW1SZXEsIHRoaXMudGVtcExhdW5jaElkKTtcclxuICAgICAgICB0aGlzLmNiU3VpdGVUb1JwSWRIYXNoW3N1aXRlSWRdID0gdGVtcElkO1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIGF3YWl0IHRoaXMucHJvbWlzZVdpdGhUaW1lb3V0KHByb21pc2UpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICBjb25zb2xlLmRpcihgUlAgLSBGYWlsZWQgdG8gc3RhcnQgc3VpdGUgaXRlbTogJHtlfWApO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGFzeW5jIG9uU3VpdGVFbmQoeyByaWQsIHN1aXRlSWQsIHJlc3VsdCB9KSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmNiU3VpdGVUb1JwSWRIYXNoW3N1aXRlSWRdKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgcnBTdWl0ZUlkID0gdGhpcy5jYlN1aXRlVG9ScElkSGFzaFtzdWl0ZUlkXTtcclxuICAgICAgICBjb25zdCBmaW5pc2hUZXN0SXRlbVJlcSA9IHtcclxuICAgICAgICAgICAgc3RhdHVzOiByZXN1bHQuc3RhdHVzLnRvTG93ZXJDYXNlKCksXHJcbiAgICAgICAgfTtcclxuICAgICAgICBjb25zdCB7IHByb21pc2UgfSA9IHRoaXMucnBDbGllbnQuZmluaXNoVGVzdEl0ZW0ocnBTdWl0ZUlkLCBmaW5pc2hUZXN0SXRlbVJlcSk7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgYXdhaXQgdGhpcy5wcm9taXNlV2l0aFRpbWVvdXQocHJvbWlzZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUuZGlyKGBSUCAtIEZhaWxlZCB0byBmaW5pc2ggc3VpdGUgaXRlbTogJHtlfWApO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGFzeW5jIG9uQ2FzZVN0YXJ0KHsgcmlkLCBzdWl0ZUlkLCBjYXNlSWQsICdjYXNlJzogY2FzZURlZiB9KSB7XHJcbiAgICAgICAgY29uc3Qgc3RhcnRUZXN0SXRlbVJlcSA9IHtcclxuICAgICAgICAgICAgbmFtZTogY2FzZURlZi5uYW1lLFxyXG4gICAgICAgICAgICB0eXBlOiBURVNUX0lURU1fVFlQRVMuVEVTVCxcclxuICAgICAgICAgICAgY29kZVJlZjogY2FzZURlZi5wYXRoLFxyXG4gICAgICAgIH07XHJcbiAgICAgICAgY29uc3QgcnBTdWl0ZUlkID0gdGhpcy5jYlN1aXRlVG9ScElkSGFzaFtzdWl0ZUlkXTtcclxuICAgICAgICBpZiAoIXJwU3VpdGVJZCkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IHsgdGVtcElkLCBwcm9taXNlIH0gPSB0aGlzLnJwQ2xpZW50LnN0YXJ0VGVzdEl0ZW0oc3RhcnRUZXN0SXRlbVJlcSwgdGhpcy50ZW1wTGF1bmNoSWQsIHJwU3VpdGVJZCk7XHJcbiAgICAgICAgdGhpcy5jYkNhc2VUb1JwSWRIYXNoW2Nhc2VJZF0gPSB0ZW1wSWQ7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgYXdhaXQgdGhpcy5wcm9taXNlV2l0aFRpbWVvdXQocHJvbWlzZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUuZGlyKGBSUCAtIEZhaWxlZCB0byBzdGFydCB0ZXN0IGl0ZW06ICR7ZX1gKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBhc3luYyBvbkNhc2VFbmQoeyByaWQsIHN1aXRlSWQsIGNhc2VJZCwgcmVzdWx0IH0pIHtcclxuICAgICAgICBjb25zdCBycFRlc3RJZCA9IHRoaXMuY2JDYXNlVG9ScElkSGFzaFtjYXNlSWRdO1xyXG4gICAgICAgIGlmICghcnBUZXN0SWQpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBzdGF0dXMgPSByZXN1bHQuc3RhdHVzLnRvTG93ZXJDYXNlKCk7XHJcbiAgICAgICAgaWYgKHN0YXR1cyA9PT0gJ2ZhaWxlZCcgJiYgcmVzdWx0LmZhaWx1cmUpIHtcclxuICAgICAgICAgICAgY29uc3QgcnBGaWxlID0gcmVzdWx0LnNjcmVlbnNob3QgP1xyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICBuYW1lOiAnc2NyZWVuc2hvdCcsXHJcbiAgICAgICAgICAgICAgICB0eXBlOiAnaW1hZ2UvcG5nJyxcclxuICAgICAgICAgICAgICAgIGNvbnRlbnQ6IHJlc3VsdC5zY3JlZW5zaG90LFxyXG4gICAgICAgICAgICB9IDogdW5kZWZpbmVkO1xyXG4gICAgICAgICAgICBjb25zdCBsb2dSZXEgPSB7XHJcbiAgICAgICAgICAgICAgICBtZXNzYWdlOiByZXN1bHQuZmFpbHVyZS5tZXNzYWdlLFxyXG4gICAgICAgICAgICAgICAgbGV2ZWw6ICdlcnJvcidcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgY29uc3QgeyBwcm9taXNlOiBzZW5kTG9nUHJvbWlzZSB9ID0gcnBGaWxlID9cclxuICAgICAgICAgICAgICAgIHRoaXMucnBDbGllbnQuc2VuZExvZ1dpdGhGaWxlKHJwVGVzdElkLCBsb2dSZXEsIHJwRmlsZSlcclxuICAgICAgICAgICAgICAgIDogdGhpcy5ycENsaWVudC5zZW5kTG9nKHJwVGVzdElkLCBsb2dSZXEpO1xyXG5cclxuICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMucHJvbWlzZVdpdGhUaW1lb3V0KHNlbmRMb2dQcm9taXNlKTtcclxuICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5kaXIoYFJQIC0gRmFpbGVkIHRvIHNlbmQgbG9nIGZvciBmaW5pc2hlZCB0ZXN0IGl0ZW06ICR7ZX1gKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBmaW5pc2hUZXN0SXRlbVJlcSA9IHtcclxuICAgICAgICAgICAgc3RhdHVzOiByZXN1bHQuc3RhdHVzLnRvTG93ZXJDYXNlKCksXHJcbiAgICAgICAgfTtcclxuICAgICAgICBjb25zdCB7IHByb21pc2UgfSA9IHRoaXMucnBDbGllbnQuZmluaXNoVGVzdEl0ZW0ocnBUZXN0SWQsIGZpbmlzaFRlc3RJdGVtUmVxKTtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICBhd2FpdCB0aGlzLnByb21pc2VXaXRoVGltZW91dChwcm9taXNlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgY29uc29sZS5kaXIoYFJQIC0gRmFpbGVkIHRvIGZpbmlzaCB0ZXN0IGl0ZW06ICR7ZX1gKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBhc3luYyBvblN0ZXBTdGFydCh7IHJpZCwgY2FzZUlkLCBzdGVwIH0pIHtcclxuICAgICAgICBpZiAoIXRoaXMucmVwb3J0U3RlcHMpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoc3RlcC5tb2R1bGUgJiYgc3RlcC5tb2R1bGUgPT09ICdsb2cnKSB7XHJcbiAgICAgICAgICAgIGF3YWl0IHRoaXMucmVwb3J0TG9nU3RlcChjYXNlSWQsIHN0ZXApO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IHJwQ2FzZUlkID0gdGhpcy5jYkNhc2VUb1JwSWRIYXNoW2Nhc2VJZF07XHJcbiAgICAgICAgbGV0IHJwUGFyZW50SWQ7IC8qID0gdGhpcy5jdXJyZW50VHJhbnNhY3Rpb25TdGVwSWQgP1xyXG4gICAgICAgICAgICB0aGlzLmNiU3RlcFRvUnBJZEhhc2hbdGhpcy5jdXJyZW50VHJhbnNhY3Rpb25TdGVwSWRdXHJcbiAgICAgICAgICAgIDogdGhpcy5jYlN0ZXBUb1JwSWRIYXNoW2Nhc2VJZF07Ki9cclxuICAgICAgICAvLyBjb25zdCBycENhc2VJZCA9IHRoaXMuY2JDYXNlVG9ScElkSGFzaFtjYXNlSWRdO1xyXG4gICAgICAgIGlmIChzdGVwLm5hbWUgPT09ICd0cmFuc2FjdGlvbicpIHtcclxuICAgICAgICAgICAgdGhpcy5jdXJyZW50VHJhbnNhY3Rpb25TdGVwSWQgPSBzdGVwLmlkO1xyXG4gICAgICAgICAgICBycFBhcmVudElkID0gdGhpcy5jYkNhc2VUb1JwSWRIYXNoW2Nhc2VJZF07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRTdWJTdGVwSWQgPSBzdGVwLmlkO1xyXG4gICAgICAgICAgICBycFBhcmVudElkID0gdGhpcy5jdXJyZW50VHJhbnNhY3Rpb25TdGVwSWQgP1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jYlN0ZXBUb1JwSWRIYXNoW3RoaXMuY3VycmVudFRyYW5zYWN0aW9uU3RlcElkXTogdGhpcy5jYlN0ZXBUb1JwSWRIYXNoW2Nhc2VJZF07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICghcnBQYXJlbnRJZCB8fCAhcnBDYXNlSWQpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBzdGVwTmFtZSA9IHRoaXMuX2dldFN0ZXBOYW1lKHN0ZXApO1xyXG4gICAgICAgIGNvbnN0IHN0YXJ0VGVzdEl0ZW1SZXEgPSB7XHJcbiAgICAgICAgICAgIG5hbWU6IHN0ZXBOYW1lLFxyXG4gICAgICAgICAgICB0eXBlOiBURVNUX0lURU1fVFlQRVMuU1RFUCxcclxuICAgICAgICAgICAgLy8gXCJjb2RlUmVmXCIgKyBcInBhcmFtZXRlcnNcIiB1c2VkIGJ5IFJQIGxpYiB0byBnZW5lcmF0ZSB0ZXN0Q2FzZUlkIGlmIHRlc3RDYXNlSWQgaXMgbm90IGRlZmluZWRcclxuICAgICAgICAgICAgLy8gc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9yZXBvcnRwb3J0YWwvY2xpZW50LWphdmFzY3JpcHQvYmxvYi80ODZlZjcwYzYzOGE5YTIzMjY3MjkwYzYyZGYxZmFmOTAwZjdkZjZhL2xpYi9yZXBvcnQtcG9ydGFsLWNsaWVudC5qcyNMNDk3XHJcbiAgICAgICAgICAgIC8vIHRoaXMgaXMgZGlzYWJsZWQgZm9yIG5vdy4gbm90IHN1cmUgaWYgYWN0dWFsbHkgbmVlZGVkLi4uXHJcbiAgICAgICAgICAgIC8vcGFyYW1ldGVyczogdGhpcy5fZ2V0UnBBcmdzKHN0ZXAuYXJncyksXHJcbiAgICAgICAgICAgIGNvZGVSZWY6IHN0ZXAubG9jYXRpb24sXHJcbiAgICAgICAgICAgIHRlc3RDYXNlSWQ6IHJwQ2FzZUlkLFxyXG4gICAgICAgICAgICBoYXNTdGF0czogZmFsc2UsXHJcbiAgICAgICAgfTtcclxuICAgICAgICBjb25zdCB7IHRlbXBJZCwgcHJvbWlzZSB9ID0gdGhpcy5ycENsaWVudC5zdGFydFRlc3RJdGVtKHN0YXJ0VGVzdEl0ZW1SZXEsIHRoaXMudGVtcExhdW5jaElkLCBycFBhcmVudElkKTtcclxuICAgICAgICB0aGlzLmNiU3RlcFRvUnBJZEhhc2hbc3RlcC5pZF0gPSB0ZW1wSWQ7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgYXdhaXQgdGhpcy5wcm9taXNlV2l0aFRpbWVvdXQocHJvbWlzZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUuZGlyKGBSUCAtIEZhaWxlZCB0byBzdGFydCBzdGVwIGl0ZW06ICR7ZX1gKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBhc3luYyBvblN0ZXBFbmQoeyByaWQsIHN0ZXA6IHJlc3VsdCB9KSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLnJlcG9ydFN0ZXBzKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHJlc3VsdC5tb2R1bGUgJiYgcmVzdWx0Lm1vZHVsZSA9PT0gJ2xvZycpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBycFN0ZXBJZCA9IHRoaXMuY2JTdGVwVG9ScElkSGFzaFtyZXN1bHQuaWRdO1xyXG4gICAgICAgIGlmICghcnBTdGVwSWQpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAocmVzdWx0Lm5hbWUgIT09ICd0cmFuc2FjdGlvbicpIHtcclxuICAgICAgICAgICAgdGhpcy5jdXJyZW50U3ViU3RlcElkID0gdW5kZWZpbmVkO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBzdGF0dXMgPSByZXN1bHQuc3RhdHVzLnRvTG93ZXJDYXNlKCk7XHJcbiAgICAgICAgaWYgKHN0YXR1cyA9PT0gJ2ZhaWxlZCcgJiYgcmVzdWx0LmZhaWx1cmUpIHtcclxuICAgICAgICAgICAgY29uc3QgcnBGaWxlID0gcmVzdWx0LnNjcmVlbnNob3QgP1xyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICBuYW1lOiAnc2NyZWVuc2hvdCcsXHJcbiAgICAgICAgICAgICAgICB0eXBlOiAnaW1hZ2UvcG5nJyxcclxuICAgICAgICAgICAgICAgIGNvbnRlbnQ6IHJlc3VsdC5zY3JlZW5zaG90LFxyXG4gICAgICAgICAgICB9IDogdW5kZWZpbmVkO1xyXG4gICAgICAgICAgICBjb25zdCBsb2dSZXEgPSB7XHJcbiAgICAgICAgICAgICAgICBtZXNzYWdlOiByZXN1bHQuZmFpbHVyZS5tZXNzYWdlLFxyXG4gICAgICAgICAgICAgICAgbGV2ZWw6ICdlcnJvcicsXHJcbiAgICAgICAgICAgICAgICBmaWxlOiBycEZpbGUsXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIGNvbnN0IHsgcHJvbWlzZTogc2VuZExvZ1Byb21pc2UgfSA9IHRoaXMucnBDbGllbnQuc2VuZExvZyhycFN0ZXBJZCwgbG9nUmVxLCBycEZpbGUpO1xyXG5cclxuICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMucHJvbWlzZVdpdGhUaW1lb3V0KHNlbmRMb2dQcm9taXNlKTtcclxuICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5kaXIoYFJQIC0gRmFpbGVkIHRvIHNlbmQgbG9nIGZvciBmaW5pc2hlZCB0ZXN0IGl0ZW06ICR7ZX1gKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBmaW5pc2hUZXN0SXRlbVJlcSA9IHtcclxuICAgICAgICAgICAgc3RhdHVzOiByZXN1bHQuc3RhdHVzLnRvTG93ZXJDYXNlKCksXHJcbiAgICAgICAgfTtcclxuICAgICAgICBjb25zdCB7IHByb21pc2UgfSA9IHRoaXMucnBDbGllbnQuZmluaXNoVGVzdEl0ZW0ocnBTdGVwSWQsIGZpbmlzaFRlc3RJdGVtUmVxKTtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICBhd2FpdCB0aGlzLnByb21pc2VXaXRoVGltZW91dChwcm9taXNlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgY29uc29sZS5kaXIoYFJQIC0gRmFpbGVkIHRvIGZpbmlzaCBzdGVwIGl0ZW06ICR7ZX1gKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBhc3luYyBvbkxvZyh7IHN1aXRlSWQsIGNhc2VJZCwgc3RlcElkLCBsZXZlbCwgbXNnLCB0aW1lLCBzcmMgfSkge1xyXG4gICAgICAgIGlmICghdGhpcy5yZXBvcnRMb2dzKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gT3h5Z2VuIG1pZ2h0IHN0YXJ0IGdlbmVyYXRpbmcgbG9ncyBiZWZvcmUgb25SdW5uZXJTdGFydCBldmVudCwgaWdub3JlIHRoZW1cclxuICAgICAgICBpZiAoIXRoaXMudGVtcExhdW5jaElkKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgcnBQYXJlbnRJZCA9IHN0ZXBJZCA/XHJcbiAgICAgICAgICAgIHRoaXMuY2JTdGVwVG9ScElkSGFzaFtzdGVwSWRdXHJcbiAgICAgICAgICAgIDogY2FzZUlkID8gdGhpcy5jYkNhc2VUb1JwSWRIYXNoW2Nhc2VJZF1cclxuICAgICAgICAgICAgOiBzdWl0ZUlkID8gdGhpcy5jYlN1aXRlVG9ScElkSGFzaFtzdWl0ZUlkXVxyXG4gICAgICAgICAgICA6IHVuZGVmaW5lZDtcclxuICAgICAgICBjb25zdCBycExldmVsID0gdGhpcy5fZ2V0UnBMZXZlbChsZXZlbCk7XHJcbiAgICAgICAgY29uc3QgbG9nUmVxID0ge1xyXG4gICAgICAgICAgICBtZXNzYWdlOiBtc2csXHJcbiAgICAgICAgICAgIGxldmVsOiBycExldmVsLFxyXG4gICAgICAgICAgICB0aW1lOiB0aW1lLFxyXG4gICAgICAgIH07XHJcbiAgICAgICAgY29uc3QgeyBwcm9taXNlIH0gPSB0aGlzLnJwQ2xpZW50LnNlbmRMb2cocnBQYXJlbnRJZCB8fCB0aGlzLnRlbXBMYXVuY2hJZCwgbG9nUmVxKTtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICBhd2FpdCB0aGlzLnByb21pc2VXaXRoVGltZW91dChwcm9taXNlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgY29uc29sZS5kaXIoYFJQIC0gRmFpbGVkIHRvIGNyZWF0ZSBsb2cgaXRlbTogJHtlfWApO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGFzeW5jIHJlcG9ydExvZ1N0ZXAoY2FzZUlkLCBzdGVwKSB7XHJcbiAgICAgICAgaWYgKCFzdGVwLmFyZ3MgfHwgIXN0ZXAuYXJncy5sZW5ndGgpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBsZXZlbCA9IHN0ZXAubmFtZTtcclxuICAgICAgICBjb25zdCBtc2cgPSBzdGVwLmFyZ3NbMF07XHJcbiAgICAgICAgY29uc3QgdGltZSA9IHN0ZXAudGltZTtcclxuICAgICAgICBsZXQgc3RlcElkID0gdW5kZWZpbmVkO1xyXG4gICAgICAgIGlmICh0aGlzLmN1cnJlbnRTdWJTdGVwSWQpIHtcclxuICAgICAgICAgICAgc3RlcElkID0gdGhpcy5jdXJyZW50U3ViU3RlcElkO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmICh0aGlzLmN1cnJlbnRUcmFuc2FjdGlvblN0ZXBJZCkge1xyXG4gICAgICAgICAgICBzdGVwSWQgPSB0aGlzLmN1cnJlbnRUcmFuc2FjdGlvblN0ZXBJZDtcclxuICAgICAgICB9XHJcbiAgICAgICAgYXdhaXQgdGhpcy5zZW5kUnBMb2coeyBzdWl0ZUlkOiB1bmRlZmluZWQsIGNhc2VJZCwgc3RlcElkLCBsZXZlbCwgbXNnLCB0aW1lIH0pO1xyXG4gICAgfVxyXG4gICAgYXN5bmMgc2VuZFJwTG9nKHsgc3VpdGVJZCwgY2FzZUlkLCBzdGVwSWQsIGxldmVsLCBtc2csIHRpbWUgfSkge1xyXG4gICAgICAgIC8vIE94eWdlbiBtaWdodCBzdGFydCBnZW5lcmF0aW5nIGxvZ3MgYmVmb3JlIG9uUnVubmVyU3RhcnQgZXZlbnQsIGlnbm9yZSB0aGVtXHJcbiAgICAgICAgaWYgKCF0aGlzLnRlbXBMYXVuY2hJZCkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IHJwUGFyZW50SWQgPSBzdGVwSWQgP1xyXG4gICAgICAgICAgICB0aGlzLmNiU3RlcFRvUnBJZEhhc2hbc3RlcElkXVxyXG4gICAgICAgICAgICA6IGNhc2VJZCA/IHRoaXMuY2JDYXNlVG9ScElkSGFzaFtjYXNlSWRdXHJcbiAgICAgICAgICAgIDogc3VpdGVJZCA/IHRoaXMuY2JTdWl0ZVRvUnBJZEhhc2hbc3VpdGVJZF1cclxuICAgICAgICAgICAgOiB1bmRlZmluZWQ7XHJcbiAgICAgICAgY29uc3QgcnBMZXZlbCA9IHRoaXMuX2dldFJwTGV2ZWwobGV2ZWwpO1xyXG4gICAgICAgIGNvbnN0IGxvZ1JlcSA9IHtcclxuICAgICAgICAgICAgbWVzc2FnZTogbXNnLFxyXG4gICAgICAgICAgICBsZXZlbDogcnBMZXZlbCxcclxuICAgICAgICAgICAgdGltZTogdGltZSxcclxuICAgICAgICB9O1xyXG4gICAgICAgIGNvbnN0IHsgcHJvbWlzZSB9ID0gdGhpcy5ycENsaWVudC5zZW5kTG9nKHJwUGFyZW50SWQgfHwgdGhpcy50ZW1wTGF1bmNoSWQsIGxvZ1JlcSk7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgYXdhaXQgdGhpcy5wcm9taXNlV2l0aFRpbWVvdXQocHJvbWlzZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUuZGlyKGBSUCAtIEZhaWxlZCB0byBjcmVhdGUgbG9nIGl0ZW06ICR7ZX1gKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBfZ2V0UnBMZXZlbChveExldmVsKSB7XHJcbiAgICAgICAgaWYgKG94TGV2ZWwpIHtcclxuICAgICAgICAgICAgcmV0dXJuIG94TGV2ZWwudG9Mb3dlckNhc2UoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuICdpbmZvJztcclxuICAgIH1cclxuICAgIC8qX2dldFJwQXJncyhjYkFyZ3MpIHtcclxuICAgICAgICBpZiAoIWNiQXJncyB8fCAhY2JBcmdzLmxlbmd0aCkge1xyXG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBycEFyZ3MgPSBbXTtcclxuICAgICAgICBmb3IgKGxldCBpPTA7IGkgPCBjYkFyZ3MubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgY29uc3QgYXJnID0gY2JBcmdzW2ldO1xyXG4gICAgICAgICAgICBsZXQgYXJnU3RyID0gdHlwZW9mIGFyZyA9PT0gJ3N0cmluZycgfHwgYXJnIGluc3RhbmNlb2YgU3RyaW5nID8gYXJnIDogSlNPTi5zdHJpbmdpZnkoYXJnKTtcclxuICAgICAgICAgICAgcnBBcmdzLnB1c2goe1xyXG4gICAgICAgICAgICAgICAga2V5OiBgYXJnJHtpfWAsXHJcbiAgICAgICAgICAgICAgICB2YWx1ZTogYXJnU3RyXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gcnBBcmdzO1xyXG4gICAgfSovXHJcbiAgICBfZ2V0U3RlcE5hbWUoc3RlcCkge1xyXG4gICAgICAgIGxldCBuYW1lO1xyXG5cclxuICAgICAgICBpZiAoc3RlcC5uYW1lID09PSAndHJhbnNhY3Rpb24nICYmIHN0ZXAuYXJncy5sZW5ndGggPiAwKSB7ICAvLyBGSVhNRTogc3RlcHMgbmVlZCB0byBiZSBuZXN0ZWQgdW5kZXIgdHJhbnNhY3Rpb25zXHJcbiAgICAgICAgICAgIG5hbWUgPSBzdGVwLmFyZ3NbMF07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKHN0ZXAuc2lnbmF0dXJlKSB7XHJcbiAgICAgICAgICAgIG5hbWUgPSBzdGVwLnNpZ25hdHVyZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAoc3RlcC5tb2R1bGUpIHsgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRklYTUU6IGlzIHRoaXMgZXZlciByZWFjaGVkPyBcInN0ZXAuc2lnbmF0dXJlXCIgc2VlbXMgdG8gYWx3YXlzIGV4aXN0XHJcbiAgICAgICAgICAgIG5hbWUgPSBgJHtzdGVwLm1vZHVsZX0uJHtzdGVwLm5hbWV9YDtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIG5hbWUgPSBzdGVwLm5hbWU7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBtYXhpbXVtIGFsbG93ZWQgbmFtZSBsZW5ndGggaW4gUlAgaXMgMTAyNCBieXRlc1xyXG4gICAgICAgIC8vIHdlIHRydW5jYXRlIGl0IGV2ZW4gbG93ZXIgc28gaXQgd2lsbCBkaXNwbGF5IG5pY2VseVxyXG4gICAgICAgIGlmIChuYW1lLmxlbmd0aCA+IE1BWF9OQU1FX0xFTkdUSCkge1xyXG4gICAgICAgICAgICBuYW1lID0gbmFtZS5zdWJzdHJpbmcoMCwgTUFYX05BTUVfTEVOR1RILTMpICsgJy4uLic7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBuYW1lO1xyXG4gICAgfVxyXG4gICAgcHJvbWlzZVdpdGhUaW1lb3V0KHByb21pc2UsIHRpbWVvdXQgPSAxMCAqIDEwMDAwKSB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgICAgICAgICAgaWYgKCFwcm9taXNlIHx8ICFwcm9taXNlLnRoZW4pIHtcclxuICAgICAgICAgICAgICAgIHJlamVjdChuZXcgRXJyb3IoYFByb21pc2UgYXdhaXQgdGltZW91dCBvZiAke3RpbWVvdXR9IG1zYCkpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHByb21pc2UudGhlbihyZXNvbHZlLCByZWplY3QpO1xyXG4gICAgICAgICAgICBzZXRUaW1lb3V0KHJlamVjdCwgdGltZW91dCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbn1cclxuXHJcbiJdfQ==
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "oxygen-cli",
|
|
3
|
-
"version": "1.39.
|
|
3
|
+
"version": "1.39.2",
|
|
4
4
|
"description": "Automation framework for testing modern applications",
|
|
5
5
|
"main": "./build/index.js",
|
|
6
6
|
"bin": {
|
|
@@ -57,7 +57,7 @@
|
|
|
57
57
|
"@lambdatest/node-rest-client": "1.0.5",
|
|
58
58
|
"@oxygenhq/logger": "0.5.1",
|
|
59
59
|
"@oxygenhq/mitmproxy-node": "1.0.1",
|
|
60
|
-
"@oxygenhq/rp-client-javascript": "5.
|
|
60
|
+
"@oxygenhq/rp-client-javascript": "5.4.0",
|
|
61
61
|
"@wdio/cli": "7.30.0",
|
|
62
62
|
"@wdio/devtools-service": "7.30.0",
|
|
63
63
|
"@wdio/sync": "7.30.0",
|