oxygen-cli 1.30.1 → 1.30.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 +5 -0
- package/build/lib/parallel-launcher.js +3 -4
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -38,11 +38,11 @@ class ParallelLauncher {
|
|
|
38
38
|
}
|
|
39
39
|
|
|
40
40
|
if (!this._config.parallel.mode) {
|
|
41
|
-
this._config.parallel.mode = '
|
|
41
|
+
this._config.parallel.mode = 'case';
|
|
42
42
|
}
|
|
43
43
|
|
|
44
44
|
const workersCount = !isNaN(this._config.parallel.workers) ? this._config.parallel.workers : 1;
|
|
45
|
-
const mode = this._config.parallel.mode === 'iteration' ? 'iteration' : this._config.parallel.mode === '
|
|
45
|
+
const mode = this._config.parallel.mode === 'iteration' ? 'iteration' : this._config.parallel.mode === 'suite' ? 'suite' : 'case';
|
|
46
46
|
const suites = this._config.suites;
|
|
47
47
|
const resultName = this._config.name || '';
|
|
48
48
|
|
|
@@ -129,7 +129,6 @@ class ParallelLauncher {
|
|
|
129
129
|
|
|
130
130
|
suiteIndex++;
|
|
131
131
|
});
|
|
132
|
-
console.log('Collections length', collection.length);
|
|
133
132
|
const start = new Date();
|
|
134
133
|
await (0, _parallelLimit.default)(collection, workersCount);
|
|
135
134
|
let total = 0;
|
|
@@ -252,4 +251,4 @@ class ParamManagerMock {
|
|
|
252
251
|
}
|
|
253
252
|
|
|
254
253
|
}
|
|
255
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvcGFyYWxsZWwtbGF1bmNoZXIuanMiXSwibmFtZXMiOlsiRHVyYXRpb24iLCJyZXF1aXJlIiwiaGFzaCIsIlBhcmFsbGVsTGF1bmNoZXIiLCJjb25zdHJ1Y3RvciIsImNvbmZpZyIsInJlcG9ydGVyIiwiX2NvbmZpZyIsIl9xdWV1ZSIsInJ1bm5lcnMiLCJjcmVhdGVkUnVubmVyc1N0YXQiLCJydW4iLCJjYXBzU2V0IiwiY29sbGVjdGlvbiIsInBhcmFsbGVsIiwiRXJyb3IiLCJtb2RlIiwid29ya2Vyc0NvdW50IiwiaXNOYU4iLCJ3b3JrZXJzIiwic3VpdGVzIiwicmVzdWx0TmFtZSIsIm5hbWUiLCJBcnJheSIsImlzQXJyYXkiLCJ0ZXN0Q2FwcyIsInJlc3VsdEhhc2giLCJyZXN1bHRLZXkiLCJzdWl0ZUluZGV4IiwiZm9yRWFjaCIsInN1aXRlRGVmIiwic3VpdGVLZXkiLCJrZXkiLCJpZCIsImkiLCJpdGVyYXRpb25Db3VudCIsIm1vY2tlZFBhcmFtTWFuYWdlciIsInVuZGVmaW5lZCIsInBhcmFtTWFuYWdlciIsIlBhcmFtTWFuYWdlck1vY2siLCJnZXRWYWx1ZXMiLCJyZWFkTmV4dCIsIndvcmtlcklkIiwic3VpdGVDb3B5IiwidGVzdENvbmZpZyIsIl9ncm91cFJlc3VsdCIsIndvcmtlckNvbmZpZyIsInN0YXJ0dXBEZWxheSIsInB1c2giLCJjYWxsYmFjayIsIl9sYXVuY2hXb3JrZXJGdW5jIiwiY2FzZXMiLCJjYXNlSW5kZXgiLCJjYXNlRGVmIiwiY2FzZUtleSIsImNvbnNvbGUiLCJsb2ciLCJsZW5ndGgiLCJzdGFydCIsIkRhdGUiLCJ0b3RhbCIsInJ1bm5lcnNJZHMiLCJPYmplY3QiLCJrZXlzIiwibWFwIiwiaXRlbSIsImNhemVzIiwiZW5kIiwiZHVyYXRpb24iLCJ0b1N0cmluZyIsImNiIiwiZXJyb3IiLCJfbGF1bmNoVGVzdCIsInRoZW4iLCJyZXN1bHQiLCJjYXRjaCIsIl9pbnN0YW50aWF0ZVJ1bm5lciIsImZyYW1ld29yayIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsIlJ1bm5lcnMiLCJveHlnZW4iLCJfc2xlZXAiLCJydW5uZXIiLCJfaWQiLCJpbml0IiwiZGlzcG9zZSIsInN0YXR1cyIsImUiLCJraWxsIiwiZXJyTXNnIiwiZXJyIiwidHlwZSIsIm1lc3NhZ2UiLCJQcm9taXNlIiwicmVzb2x2ZSIsInNldFRpbWVvdXQiLCJ2YWx1ZXMiLCJnZXRNb2RlIiwicmVhZFByZXYiLCJyb3dzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFVQTs7QUFDQTs7Ozs7Ozs7QUFDQSxNQUFNQSxRQUFRLEdBQUdDLE9BQU8sQ0FBQyxVQUFELENBQXhCOztBQUNBLE1BQU1DLElBQUksR0FBR0QsT0FBTyxDQUFDLGFBQUQsQ0FBcEI7O0FBRWUsTUFBTUUsZ0JBQU4sQ0FBdUI7QUFDbENDLEVBQUFBLFdBQVcsQ0FBQ0MsTUFBRCxFQUFTQyxRQUFULEVBQW1CO0FBQzFCLFNBQUtDLE9BQUwsR0FBZUYsTUFBZjtBQUNBLFNBQUtDLFFBQUwsR0FBZ0JBLFFBQWhCO0FBQ0EsU0FBS0UsTUFBTCxHQUFjLElBQWQ7QUFDQSxTQUFLQyxPQUFMLEdBQWUsRUFBZjtBQUNBLFNBQUtDLGtCQUFMLEdBQTBCLEVBQTFCO0FBQ0g7O0FBRVEsUUFBSEMsR0FBRyxDQUFDQyxPQUFELEVBQVU7QUFDZixVQUFNQyxVQUFVLEdBQUcsRUFBbkI7O0FBRUEsUUFBSSxDQUFDLEtBQUtOLE9BQUwsQ0FBYU8sUUFBbEIsRUFBNEI7QUFDeEIsWUFBTSxJQUFJQyxLQUFKLENBQVUsc0VBQVYsQ0FBTjtBQUNIOztBQUVELFFBQUksQ0FBQyxLQUFLUixPQUFMLENBQWFPLFFBQWIsQ0FBc0JFLElBQTNCLEVBQWlDO0FBQzdCLFdBQUtULE9BQUwsQ0FBYU8sUUFBYixDQUFzQkUsSUFBdEIsR0FBNkIsT0FBN0I7QUFDSDs7QUFFRCxVQUFNQyxZQUFZLEdBQUcsQ0FBQ0MsS0FBSyxDQUFDLEtBQUtYLE9BQUwsQ0FBYU8sUUFBYixDQUFzQkssT0FB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UDtBQUNIOztBQTNCa0IiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxyXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTUtcHJlc2VudCBDbG91ZEJlYXQgTGltaXRlZFxyXG4gKlxyXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxyXG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxyXG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxyXG4gKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxyXG4gKi9cclxuXHJcbi8vIGltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XHJcbmltcG9ydCAqIGFzIFJ1bm5lcnMgZnJvbSAnLi4vcnVubmVycyc7XHJcbmltcG9ydCBwYXJhbGxlbExpbWl0IGZyb20gJ2FzeW5jL3BhcmFsbGVsTGltaXQnO1xyXG5jb25zdCBEdXJhdGlvbiA9IHJlcXVpcmUoJ2R1cmF0aW9uJyk7XHJcbmNvbnN0IGhhc2ggPSByZXF1aXJlKCdvYmplY3QtaGFzaCcpO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUGFyYWxsZWxMYXVuY2hlciB7XHJcbiAgICBjb25zdHJ1Y3Rvcihjb25maWcsIHJlcG9ydGVyKSB7XHJcbiAgICAgICAgdGhpcy5fY29uZmlnID0gY29uZmlnO1xyXG4gICAgICAgIHRoaXMucmVwb3J0ZXIgPSByZXBvcnRlcjtcclxuICAgICAgICB0aGlzLl9xdWV1ZSA9IG51bGw7XHJcbiAgICAgICAgdGhpcy5ydW5uZXJzID0gW107XHJcbiAgICAgICAgdGhpcy5jcmVhdGVkUnVubmVyc1N0YXQgPSBbXTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBydW4oY2Fwc1NldCkge1xyXG4gICAgICAgIGNvbnN0IGNvbGxlY3Rpb24gPSBbXTtcclxuXHJcbiAgICAgICAgaWYgKCF0aGlzLl9jb25maWcucGFyYWxsZWwpIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdDYW5ub3Qgc3RhcnQgdGhlIHBhcmFsbGVsIHRlc3RpbmcgLSBcInBhcmFsbGVsXCIgc2V0dGluZ3MgYXJlIG1pc3NpbmcuJyk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoIXRoaXMuX2NvbmZpZy5wYXJhbGxlbC5tb2RlKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX2NvbmZpZy5wYXJhbGxlbC5tb2RlID0gJ3N1aXRlJztcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbnN0IHdvcmtlcnNDb3VudCA9ICFpc05hTih0aGlzLl9jb25maWcucGFyYWxsZWwud29ya2VycykgPyB0aGlzLl9jb25maWcucGFyYWxsZWwud29ya2VycyA6IDE7XHJcbiAgICAgICAgY29uc3QgbW9kZSA9IHRoaXMuX2NvbmZpZy5wYXJhbGxlbC5tb2RlID09PSAnaXRlcmF0aW9uJ1xyXG4gICAgICAgICAgICA/ICdpdGVyYXRpb24nIDogdGhpcy5fY29uZmlnLnBhcmFsbGVsLm1vZGUgPT09ICdjYXNlJ1xyXG4gICAgICAgICAgICAgICAgPyAnY2FzZScgOiAnc3VpdGUnO1xyXG4gICAgICAgIC8vIGZsYXR0ZW4gYWxsIHN1aXRlcyBhbmQgY3JlYXRlIG9uZSB1bmlmaWVkIGFycmF5IG9mIGFsbCB0aGUgdGVzdCBjYXNlc1xyXG4gICAgICAgIGNvbnN0IHN1aXRlcyA9IHRoaXMuX2NvbmZpZy5zdWl0ZXM7XHJcbiAgICAgICAgY29uc3QgcmVzdWx0TmFtZSA9IHRoaXMuX2NvbmZpZy5uYW1lIHx8ICcnO1xyXG4gICAgICAgIGlmICghc3VpdGVzIHx8ICFBcnJheS5pc0FycmF5KHN1aXRlcykpIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdDYW5ub3Qgc3RhcnQgdGhlIHBhcmFsbGVsIHRlc3RpbmcgLSBubyBzdWl0ZXMgYXJlIGRlZmluZWQuJyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIGlmIG5vIGNhcGFiaWxpdGllcyBhcmUgc3BlY2lmaWVkLCBydW4gc2luZ2xlIGluc3RhbmNlIHdpdGggZGVmYXVsdCBhcmd1bWVudHNcclxuICAgICAgICAvLyBhbHRlcm5hdGl2ZWx5LCBwaWNrIHRoZSBmaXJzdCBjYXBhYmlsaXRpZXMgc2V0IChsb2FkIHRlc3QgaXMgbGltaXRlZCB0byBhIHNpbmdsZSBicm93c2VyIHR5cGUpXHJcbiAgICAgICAgY29uc3QgdGVzdENhcHMgPSBjYXBzU2V0ID8gKEFycmF5LmlzQXJyYXkoY2Fwc1NldCkgPyBjYXBzU2V0WzBdIDogY2Fwc1NldCkgOiBudWxsO1xyXG4gICAgICAgIGNvbnN0IHJlc3VsdEhhc2ggPSB0ZXN0Q2FwcyA/IGhhc2godGVzdENhcHMpIDogJyc7XHJcbiAgICAgICAgY29uc3QgcmVzdWx0S2V5ID0gYCR7cmVzdWx0TmFtZX0tJHtyZXN1bHRIYXNofWA7XHJcbiAgICAgICAgLy8gaWYgJ3dvcmtlcnMnIHNldCB0byBtYXggYW5kIHBhcmFtZXRlciBmaWxlIGlzIGRlZmluZWQsIFxyXG4gICAgICAgIC8vIHRoZW4gcnVuIGFzIG1hbnkgcGFyYWxsZWwgdGVzdHMgYXMgcm93cyBpbiB0aGUgZmlsZVxyXG4gICAgICAgIGxldCBzdWl0ZUluZGV4ID0gMDtcclxuICAgICAgICBzdWl0ZXMuZm9yRWFjaChzdWl0ZURlZiA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IHN1aXRlS2V5ID0gc3VpdGVEZWYua2V5IHx8IHN1aXRlRGVmLmlkIHx8IHN1aXRlRGVmLm5hbWU7XHJcbiAgICAgICAgICAgIGlmIChtb2RlID09PSAnaXRlcmF0aW9uJykge1xyXG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDE7IGk8PSBzdWl0ZURlZi5pdGVyYXRpb25Db3VudDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IG1vY2tlZFBhcmFtTWFuYWdlciA9IHVuZGVmaW5lZDtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoc3VpdGVEZWYucGFyYW1NYW5hZ2VyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1vY2tlZFBhcmFtTWFuYWdlciA9IG5ldyBQYXJhbU1hbmFnZXJNb2NrKHN1aXRlRGVmLnBhcmFtTWFuYWdlci5nZXRWYWx1ZXMoKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN1aXRlRGVmLnBhcmFtTWFuYWdlci5yZWFkTmV4dCgpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBjb25zdCB3b3JrZXJJZCA9IGAke3N1aXRlS2V5fS0ke3N1aXRlSW5kZXh9LyR7aX1gO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHN1aXRlQ29weSA9IHsgLi4uc3VpdGVEZWYsIGl0ZXJhdGlvbkNvdW50OiAxLCBwYXJhbU1hbmFnZXI6IG1vY2tlZFBhcmFtTWFuYWdlciB9O1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHRlc3RDb25maWcgPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMuX2NvbmZpZywgc3VpdGVzOiBbIHN1aXRlQ29weSBdLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBfZ3JvdXBSZXN1bHQ6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdEtleSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgd29ya2VyQ29uZmlnID0geyB3b3JrZXJJZCwgdGVzdENvbmZpZywgdGVzdENhcHMsIHN0YXJ0dXBEZWxheTogMjAwIH07XHJcbiAgICAgICAgICAgICAgICAgICAgY29sbGVjdGlvbi5wdXNoKChjYWxsYmFjaykgPT4gdGhpcy5fbGF1bmNoV29ya2VyRnVuYyh3b3JrZXJDb25maWcsIGNhbGxiYWNrKSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLy8gY2hlY2sgaWYgYW55IG9mIGNhc2VzIGhhdmUgcGFyYW0gZmlsZSBhdHRhY2hlZFxyXG4gICAgICAgICAgICBlbHNlIGlmIChtb2RlID09PSAnY2FzZScgJiYgQXJyYXkuaXNBcnJheShzdWl0ZURlZi5jYXNlcykpIHtcclxuICAgICAgICAgICAgICAgIGxldCBjYXNlSW5kZXggPSAwO1xyXG4gICAgICAgICAgICAgICAgc3VpdGVEZWYuY2FzZXMuZm9yRWFjaChjYXNlRGVmID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBjYXNlS2V5ID0gY2FzZURlZi5rZXkgfHwgY2FzZURlZi5pZCB8fCBjYXNlRGVmLm5hbWU7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgd29ya2VySWQgPSBgJHtjYXNlS2V5fS0ke3N1aXRlSW5kZXh9LyR7Y2FzZUluZGV4fWA7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3VpdGVDb3B5ID0geyAuLi5zdWl0ZURlZiwgY2FzZXM6IFsgY2FzZURlZiBdfTtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCB0ZXN0Q29uZmlnID0ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLl9jb25maWcsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN1aXRlczogWyBzdWl0ZUNvcHkgXSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgX2dyb3VwUmVzdWx0OiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRLZXksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWl0ZUtleSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgd29ya2VyQ29uZmlnID0geyB3b3JrZXJJZCwgdGVzdENvbmZpZywgdGVzdENhcHMsIHN0YXJ0dXBEZWxheTogMCB9O1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbGxlY3Rpb24ucHVzaCgoY2FsbGJhY2spID0+IHRoaXMuX2xhdW5jaFdvcmtlckZ1bmMod29ya2VyQ29uZmlnLCBjYWxsYmFjaykpO1xyXG4gICAgICAgICAgICAgICAgICAgIGNhc2VJbmRleCsrO1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBzdWl0ZUtleSA9IHN1aXRlRGVmLmtleSB8fCBzdWl0ZURlZi5pZCB8fCBzdWl0ZURlZi5uYW1lO1xyXG4gICAgICAgICAgICAgICAgY29uc3Qgd29ya2VySWQgPSBgJHtzdWl0ZUtleX0tJHtzdWl0ZUluZGV4fWA7XHJcbiAgICAgICAgICAgICAgICBjb25zdCB0ZXN0Q29uZmlnID0ge1xyXG4gICAgICAgICAgICAgICAgICAgIC4uLnRoaXMuX2NvbmZpZyxcclxuICAgICAgICAgICAgICAgICAgICBzdWl0ZXM6IFsgc3VpdGVEZWYgXSxcclxuICAgICAgICAgICAgICAgICAgICBfZ3JvdXBSZXN1bHQ6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0S2V5LFxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICBjb25zdCB3b3JrZXJDb25maWcgPSB7IHdvcmtlcklkLCB0ZXN0Q29uZmlnLCB0ZXN0Q2Fwcywgc3RhcnR1cERlbGF5OiAwIH07XHJcbiAgICAgICAgICAgICAgICBjb2xsZWN0aW9uLnB1c2goKGNhbGxiYWNrKSA9PiB0aGlzLl9sYXVuY2hXb3JrZXJGdW5jKHdvcmtlckNvbmZpZywgY2FsbGJhY2spKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBzdWl0ZUluZGV4Kys7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgLy90aGlzLnJlcG9ydGVyLm9uQmVmb3JlU3RhcnQoY29sbGVjdGlvbi5sZW5ndGgpO1xyXG5cclxuICAgICAgICBjb25zb2xlLmxvZygnQ29sbGVjdGlvbnMgbGVuZ3RoJywgY29sbGVjdGlvbi5sZW5ndGgpO1xyXG5cclxuICAgICAgICBjb25zdCBzdGFydCA9IG5ldyBEYXRlKCk7XHJcbiAgICAgICAgYXdhaXQgcGFyYWxsZWxMaW1pdChjb2xsZWN0aW9uLCB3b3JrZXJzQ291bnQpO1xyXG5cclxuICAgICAgICBsZXQgdG90YWwgPSAwO1xyXG4gICAgICAgIGNvbnNvbGUubG9nKCdDcmVhdGVkIFJ1bm5lcnMgU3RhdCcsIHRoaXMuY3JlYXRlZFJ1bm5lcnNTdGF0KTtcclxuICAgICAgICBjb25zdCBydW5uZXJzSWRzID0gT2JqZWN0LmtleXModGhpcy5jcmVhdGVkUnVubmVyc1N0YXQpO1xyXG4gICAgICAgIGNvbnNvbGUubG9nKCdDcmVhdGVkIFJ1bm5lcnMgY291bnQnLCBydW5uZXJzSWRzLmxlbmd0aCk7XHJcblxyXG4gICAgICAgIHJ1bm5lcnNJZHMubWFwKChpdGVtKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGNhemVzID0gdGhpcy5jcmVhdGVkUnVubmVyc1N0YXRbaXRlbV0ubGVuZ3RoO1xyXG4gICAgICAgICAgICB0b3RhbCArPSBjYXplcztcclxuICAgICAgICAgICAgY29uc29sZS5sb2coJ1J1bm5lcicsIGl0ZW0sICcgcnVuICcsIGNhemVzLCAnIGNhc2VzJyk7XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIGNvbnNvbGUubG9nKCdQYXJhbGxlbCBjb3VudCcsIHdvcmtlcnNDb3VudCk7XHJcbiAgICAgICAgY29uc29sZS5sb2coJ1RvdGFsOiAnLCB0b3RhbCk7XHJcbiAgICAgICAgY29uc3QgZW5kID0gbmV3IERhdGUoKTtcclxuICAgICAgICBjb25zdCBkdXJhdGlvbiA9IG5ldyBEdXJhdGlvbihzdGFydCwgZW5kKTtcclxuICAgICAgICBjb25zb2xlLmxvZygnRHVyYXRpb246ICcsIGR1cmF0aW9uLnRvU3RyaW5nKDEpKTtcclxuICAgICAgICAvL3RoaXMucmVwb3J0ZXIub25BZnRlckVuZCgpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuICAgICAqIFByaXZhdGUgbWV0aG9kc1xyXG4gICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cclxuXHJcbiAgICBfbGF1bmNoV29ya2VyRnVuYyh3b3JrZXJDb25maWcsIGNhbGxiYWNrKSB7XHJcbiAgICAgICAgY29uc3QgY2IgPSAoZXJyb3IpID0+IHtcclxuICAgICAgICAgICAgaWYgKGVycm9yKSB7XHJcbiAgICAgICAgICAgICAgICBjYWxsYmFjayhlcnJvciwgbnVsbCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9O1xyXG4gICAgICAgIHRoaXMuX2xhdW5jaFRlc3Qod29ya2VyQ29uZmlnLCBjYikudGhlbigocmVzdWx0KSA9PiB7XHJcbiAgICAgICAgICAgIGNhbGxiYWNrKG51bGwsIHJlc3VsdCk7XHJcbiAgICAgICAgfSkuY2F0Y2goZXJyb3IgPT4ge1xyXG4gICAgICAgICAgICBjYWxsYmFjayhlcnJvciwgbnVsbCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgX2luc3RhbnRpYXRlUnVubmVyKCkge1xyXG4gICAgICAgIGlmICh0aGlzLl9jb25maWcuZnJhbWV3b3JrICYmIHR5cGVvZiB0aGlzLl9jb25maWcuZnJhbWV3b3JrID09PSAnc3RyaW5nJykge1xyXG4gICAgICAgICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKFJ1bm5lcnMsIHRoaXMuX2NvbmZpZy5mcmFtZXdvcmspKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IFJ1bm5lcnNbdGhpcy5fY29uZmlnLmZyYW1ld29ya10oKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIG5ldyBSdW5uZXJzLm94eWdlbigpO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIF9sYXVuY2hUZXN0KHsgd29ya2VySWQsIHRlc3RDb25maWcsIHRlc3RDYXBzLCBzdGFydHVwRGVsYXkgfSwgY2FsbGJhY2spIHtcclxuICAgICAgICBpZiAoIWNhbGxiYWNrKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgYXdhaXQgdGhpcy5fc2xlZXAoc3RhcnR1cERlbGF5KTtcclxuXHJcbiAgICAgICAgbGV0IHJ1bm5lciA9IHRoaXMuX2luc3RhbnRpYXRlUnVubmVyKCk7XHJcbiAgICAgICAgdGhpcy5jcmVhdGVkUnVubmVyc1N0YXRbcnVubmVyLl9pZF0gPSBbd29ya2VySWRdO1xyXG5cclxuICAgICAgICBpZiAoIXJ1bm5lcikge1xyXG4gICAgICAgICAgICBjb25zdCBmcmFtZXdvcmsgPSB0aGlzLl9jb25maWcuZnJhbWV3b3JrO1xyXG4gICAgICAgICAgICBjYWxsYmFjayhuZXcgRXJyb3IoYENhbm5vdCBmaW5kIHJ1bm5lciBmb3IgdGhlIHNwZWNpZmllZCBmcmFtZXdvcms6ICR7ZnJhbWV3b3JrfS5gKSk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgLy8gZ2VuZXJhdGUgZmlyZWZveCBcInByb2ZpbGVcIiB2YWx1ZSBpZiBwcm9maWxlIG9wdGlvbnMgYXJlIHNwZWNpZmllZFxyXG4gICAgICAgICAgICAvLyBhd2FpdCBveHV0aWwuZ2VuZXJhdGVGaXJlZm94T3B0aW9uc1Byb2ZpbGUodGVzdENhcHMpO1xyXG5cclxuICAgICAgICAgICAgLy8gaW5pdGlhbGl6ZSBveHlnZW5cclxuICAgICAgICAgICAgYXdhaXQgcnVubmVyLmluaXQodGVzdENvbmZpZywgdGVzdENhcHMsIHRoaXMucmVwb3J0ZXIpO1xyXG5cclxuICAgICAgICAgICAgLy8gcnVuIE94eWdlbiB0ZXN0IFxyXG4gICAgICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBydW5uZXIucnVuKCk7XHJcbiAgICAgICAgICAgIGF3YWl0IHJ1bm5lci5kaXNwb3NlKHJlc3VsdC5zdGF0dXMgfHwgbnVsbCk7XHJcbiAgICAgICAgICAgIGNhbGxiYWNrKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0ZhaWxlZCB0byBsYXVuY2ggdGhlIHRlc3Q6JywgZSk7XHJcbiAgICAgICAgICAgIC8vIHN0b3AgcHJvY2Vzc2luZyB0aGUgcXVldWVcclxuICAgICAgICAgICAgaWYgKHRoaXMuX3F1ZXVlKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9xdWV1ZS5raWxsKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLy8gaWYgdGhpcyBpcyBjdXN0b20gZXJyb3IgbWVzc2FnZVxyXG4gICAgICAgICAgICBpZiAoZS5lcnJvcikge1xyXG4gICAgICAgICAgICAgICAgdmFyIGVyck1zZyA9ICcnO1xyXG4gICAgICAgICAgICAgICAgdmFyIGVyciA9IGUuZXJyb3I7XHJcbiAgICAgICAgICAgICAgICBpZiAoZXJyLnR5cGUpXHJcbiAgICAgICAgICAgICAgICAgICAgZXJyTXNnICs9IGVyci50eXBlICsgJyAtICc7XHJcbiAgICAgICAgICAgICAgICBpZiAoZXJyLm1lc3NhZ2UpXHJcbiAgICAgICAgICAgICAgICAgICAgZXJyTXNnICs9IGVyci5tZXNzYWdlO1xyXG4gICAgICAgICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICAgICAgICAgIGVyck1zZyA9IGVyci50b1N0cmluZygpO1xyXG4gICAgICAgICAgICAgICAgY2FsbGJhY2sobmV3IEVycm9yKGVyck1zZykpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgY2FsbGJhY2soZSk7ICAgIC8vIGNhbGwgYmFjayB3aXRoIHRoZSBvcmlnaW5hbCBleGNlcHRpb25cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5ydW5uZXJzLnB1c2gocnVubmVyKTtcclxuICAgIH1cclxuXHJcbiAgICBfc2xlZXAoZHVyYXRpb24pIHtcclxuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHNldFRpbWVvdXQocmVzb2x2ZSwgZHVyYXRpb24pKTtcclxuICAgIH1cclxufVxyXG5cclxuY2xhc3MgUGFyYW1NYW5hZ2VyTW9jayB7XHJcbiAgICBjb25zdHJ1Y3Rvcih2YWx1ZXMpIHtcclxuICAgICAgICB0aGlzLnZhbHVlcyA9IHZhbHVlcztcclxuICAgIH1cclxuXHJcbiAgICBpbml0KCkge1xyXG5cclxuICAgIH1cclxuXHJcbiAgICBnZXRNb2RlKCkge1xyXG5cclxuICAgIH1cclxuXHJcbiAgICByZWFkTmV4dCgpIHtcclxuXHJcbiAgICB9XHJcblxyXG4gICAgcmVhZFByZXYoKSB7XHJcblxyXG4gICAgfVxyXG5cclxuICAgIGdldFZhbHVlcygpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy52YWx1ZXM7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IHJvd3MoKSB7XHJcbiAgICAgICAgcmV0dXJuIDE7XHJcbiAgICB9XHJcbn1cclxuIl19
|
|
254
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvcGFyYWxsZWwtbGF1bmNoZXIuanMiXSwibmFtZXMiOlsiRHVyYXRpb24iLCJyZXF1aXJlIiwiaGFzaCIsIlBhcmFsbGVsTGF1bmNoZXIiLCJjb25zdHJ1Y3RvciIsImNvbmZpZyIsInJlcG9ydGVyIiwiX2NvbmZpZyIsIl9xdWV1ZSIsInJ1bm5lcnMiLCJjcmVhdGVkUnVubmVyc1N0YXQiLCJydW4iLCJjYXBzU2V0IiwiY29sbGVjdGlvbiIsInBhcmFsbGVsIiwiRXJyb3IiLCJtb2RlIiwid29ya2Vyc0NvdW50IiwiaXNOYU4iLCJ3b3JrZXJzIiwic3VpdGVzIiwicmVzdWx0TmFtZSIsIm5hbWUiLCJBcnJheSIsImlzQXJyYXkiLCJ0ZXN0Q2FwcyIsInJlc3VsdEhhc2giLCJyZXN1bHRLZXkiLCJzdWl0ZUluZGV4IiwiZm9yRWFjaCIsInN1aXRlRGVmIiwic3VpdGVLZXkiLCJrZXkiLCJpZCIsImkiLCJpdGVyYXRpb25Db3VudCIsIm1vY2tlZFBhcmFtTWFuYWdlciIsInVuZGVmaW5lZCIsInBhcmFtTWFuYWdlciIsIlBhcmFtTWFuYWdlck1vY2siLCJnZXRWYWx1ZXMiLCJyZWFkTmV4dCIsIndvcmtlcklkIiwic3VpdGVDb3B5IiwidGVzdENvbmZpZyIsIl9ncm91cFJlc3VsdCIsIndvcmtlckNvbmZpZyIsInN0YXJ0dXBEZWxheSIsInB1c2giLCJjYWxsYmFjayIsIl9sYXVuY2hXb3JrZXJGdW5jIiwiY2FzZXMiLCJjYXNlSW5kZXgiLCJjYXNlRGVmIiwiY2FzZUtleSIsInN0YXJ0IiwiRGF0ZSIsInRvdGFsIiwiY29uc29sZSIsImxvZyIsInJ1bm5lcnNJZHMiLCJPYmplY3QiLCJrZXlzIiwibGVuZ3RoIiwibWFwIiwiaXRlbSIsImNhemVzIiwiZW5kIiwiZHVyYXRpb24iLCJ0b1N0cmluZyIsImNiIiwiZXJyb3IiLCJfbGF1bmNoVGVzdCIsInRoZW4iLCJyZXN1bHQiLCJjYXRjaCIsIl9pbnN0YW50aWF0ZVJ1bm5lciIsImZyYW1ld29yayIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsIlJ1bm5lcnMiLCJveHlnZW4iLCJfc2xlZXAiLCJydW5uZXIiLCJfaWQiLCJpbml0IiwiZGlzcG9zZSIsInN0YXR1cyIsImUiLCJraWxsIiwiZXJyTXNnIiwiZXJyIiwidHlwZSIsIm1lc3NhZ2UiLCJQcm9taXNlIiwicmVzb2x2ZSIsInNldFRpbWVvdXQiLCJ2YWx1ZXMiLCJnZXRNb2RlIiwicmVhZFByZXYiLCJyb3dzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFVQTs7QUFDQTs7Ozs7Ozs7QUFDQSxNQUFNQSxRQUFRLEdBQUdDLE9BQU8sQ0FBQyxVQUFELENBQXhCOztBQUNBLE1BQU1DLElBQUksR0FBR0QsT0FBTyxDQUFDLGFBQUQsQ0FBcEI7O0FBRWUsTUFBTUUsZ0JBQU4sQ0FBdUI7QUFDbENDLEVBQUFBLFdBQVcsQ0FBQ0MsTUFBRCxFQUFTQyxRQUFULEVBQW1CO0FBQzFCLFNBQUtDLE9BQUwsR0FBZUYsTUFBZjtBQUNBLFNBQUtDLFFBQUwsR0FBZ0JBLFFBQWhCO0FBQ0EsU0FBS0UsTUFBTCxHQUFjLElBQWQ7QUFDQSxTQUFLQyxPQUFMLEdBQWUsRUFBZjtBQUNBLFNBQUtDLGtCQUFMLEdBQTBCLEVBQTFCO0FBQ0g7O0FBRVEsUUFBSEMsR0FBRyxDQUFDQyxPQUFELEVBQVU7QUFDZixVQUFNQyxVQUFVLEdBQUcsRUFBbkI7O0FBRUEsUUFBSSxDQUFDLEtBQUtOLE9BQUwsQ0FBYU8sUUFBbEIsRUFBNEI7QUFDeEIsWUFBTSxJQUFJQyxLQUFKLENBQVUsc0VBQVYsQ0FBTjtBQUNIOztBQUVELFFBQUksQ0FBQyxLQUFLUixPQUFMLENBQWFPLFFBQWIsQ0FBc0JFLElBQTNCLEVBQWlDO0FBQzdCLFdBQUtULE9BQUwsQ0FBYU8sUUFBYixDQUFzQkUsSUFBdEIsR0FBNkIsTUFBN0I7QUFDSDs7QUFFRCxVQUFNQyxZQUFZLEdBQUcsQ0FBQ0MsS0FBSyxDQUFDLEtBQUtYLE9BQUwsQ0FBYU8sUUFBYixDQUFzQkssT0FB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ZXNlbnQgQ2xvdWRCZWF0IExpbWl0ZWRcclxuICpcclxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcclxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcclxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3JcclxuICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cclxuICovXHJcblxyXG4vLyBpbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xyXG5pbXBvcnQgKiBhcyBSdW5uZXJzIGZyb20gJy4uL3J1bm5lcnMnO1xyXG5pbXBvcnQgcGFyYWxsZWxMaW1pdCBmcm9tICdhc3luYy9wYXJhbGxlbExpbWl0JztcclxuY29uc3QgRHVyYXRpb24gPSByZXF1aXJlKCdkdXJhdGlvbicpO1xyXG5jb25zdCBoYXNoID0gcmVxdWlyZSgnb2JqZWN0LWhhc2gnKTtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFBhcmFsbGVsTGF1bmNoZXIge1xyXG4gICAgY29uc3RydWN0b3IoY29uZmlnLCByZXBvcnRlcikge1xyXG4gICAgICAgIHRoaXMuX2NvbmZpZyA9IGNvbmZpZztcclxuICAgICAgICB0aGlzLnJlcG9ydGVyID0gcmVwb3J0ZXI7XHJcbiAgICAgICAgdGhpcy5fcXVldWUgPSBudWxsO1xyXG4gICAgICAgIHRoaXMucnVubmVycyA9IFtdO1xyXG4gICAgICAgIHRoaXMuY3JlYXRlZFJ1bm5lcnNTdGF0ID0gW107XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgcnVuKGNhcHNTZXQpIHtcclxuICAgICAgICBjb25zdCBjb2xsZWN0aW9uID0gW107XHJcblxyXG4gICAgICAgIGlmICghdGhpcy5fY29uZmlnLnBhcmFsbGVsKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignQ2Fubm90IHN0YXJ0IHRoZSBwYXJhbGxlbCB0ZXN0aW5nIC0gXCJwYXJhbGxlbFwiIHNldHRpbmdzIGFyZSBtaXNzaW5nLicpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKCF0aGlzLl9jb25maWcucGFyYWxsZWwubW9kZSkge1xyXG4gICAgICAgICAgICB0aGlzLl9jb25maWcucGFyYWxsZWwubW9kZSA9ICdjYXNlJztcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbnN0IHdvcmtlcnNDb3VudCA9ICFpc05hTih0aGlzLl9jb25maWcucGFyYWxsZWwud29ya2VycykgPyB0aGlzLl9jb25maWcucGFyYWxsZWwud29ya2VycyA6IDE7XHJcbiAgICAgICAgY29uc3QgbW9kZSA9IHRoaXMuX2NvbmZpZy5wYXJhbGxlbC5tb2RlID09PSAnaXRlcmF0aW9uJ1xyXG4gICAgICAgICAgICA/ICdpdGVyYXRpb24nIDogdGhpcy5fY29uZmlnLnBhcmFsbGVsLm1vZGUgPT09ICdzdWl0ZSdcclxuICAgICAgICAgICAgICAgID8gJ3N1aXRlJyA6ICdjYXNlJztcclxuICAgICAgICAvLyBmbGF0dGVuIGFsbCBzdWl0ZXMgYW5kIGNyZWF0ZSBvbmUgdW5pZmllZCBhcnJheSBvZiBhbGwgdGhlIHRlc3QgY2FzZXNcclxuICAgICAgICBjb25zdCBzdWl0ZXMgPSB0aGlzLl9jb25maWcuc3VpdGVzO1xyXG4gICAgICAgIGNvbnN0IHJlc3VsdE5hbWUgPSB0aGlzLl9jb25maWcubmFtZSB8fCAnJztcclxuICAgICAgICBpZiAoIXN1aXRlcyB8fCAhQXJyYXkuaXNBcnJheShzdWl0ZXMpKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignQ2Fubm90IHN0YXJ0IHRoZSBwYXJhbGxlbCB0ZXN0aW5nIC0gbm8gc3VpdGVzIGFyZSBkZWZpbmVkLicpO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBpZiBubyBjYXBhYmlsaXRpZXMgYXJlIHNwZWNpZmllZCwgcnVuIHNpbmdsZSBpbnN0YW5jZSB3aXRoIGRlZmF1bHQgYXJndW1lbnRzXHJcbiAgICAgICAgLy8gYWx0ZXJuYXRpdmVseSwgcGljayB0aGUgZmlyc3QgY2FwYWJpbGl0aWVzIHNldCAobG9hZCB0ZXN0IGlzIGxpbWl0ZWQgdG8gYSBzaW5nbGUgYnJvd3NlciB0eXBlKVxyXG4gICAgICAgIGNvbnN0IHRlc3RDYXBzID0gY2Fwc1NldCA/IChBcnJheS5pc0FycmF5KGNhcHNTZXQpID8gY2Fwc1NldFswXSA6IGNhcHNTZXQpIDogbnVsbDtcclxuICAgICAgICBjb25zdCByZXN1bHRIYXNoID0gdGVzdENhcHMgPyBoYXNoKHRlc3RDYXBzKSA6ICcnO1xyXG4gICAgICAgIGNvbnN0IHJlc3VsdEtleSA9IGAke3Jlc3VsdE5hbWV9LSR7cmVzdWx0SGFzaH1gO1xyXG4gICAgICAgIC8vIGlmICd3b3JrZXJzJyBzZXQgdG8gbWF4IGFuZCBwYXJhbWV0ZXIgZmlsZSBpcyBkZWZpbmVkLCBcclxuICAgICAgICAvLyB0aGVuIHJ1biBhcyBtYW55IHBhcmFsbGVsIHRlc3RzIGFzIHJvd3MgaW4gdGhlIGZpbGVcclxuICAgICAgICBsZXQgc3VpdGVJbmRleCA9IDA7XHJcblxyXG4gICAgICAgIHN1aXRlcy5mb3JFYWNoKHN1aXRlRGVmID0+IHtcclxuICAgICAgICAgICAgY29uc3Qgc3VpdGVLZXkgPSBzdWl0ZURlZi5rZXkgfHwgc3VpdGVEZWYuaWQgfHwgc3VpdGVEZWYubmFtZTtcclxuICAgICAgICAgICAgaWYgKG1vZGUgPT09ICdpdGVyYXRpb24nKSB7XHJcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMTsgaTw9IHN1aXRlRGVmLml0ZXJhdGlvbkNvdW50OyBpKyspIHtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgbW9ja2VkUGFyYW1NYW5hZ2VyID0gdW5kZWZpbmVkO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChzdWl0ZURlZi5wYXJhbU1hbmFnZXIpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbW9ja2VkUGFyYW1NYW5hZ2VyID0gbmV3IFBhcmFtTWFuYWdlck1vY2soc3VpdGVEZWYucGFyYW1NYW5hZ2VyLmdldFZhbHVlcygpKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgc3VpdGVEZWYucGFyYW1NYW5hZ2VyLnJlYWROZXh0KCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHdvcmtlcklkID0gYCR7c3VpdGVLZXl9LSR7c3VpdGVJbmRleH0vJHtpfWA7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3VpdGVDb3B5ID0geyAuLi5zdWl0ZURlZiwgaXRlcmF0aW9uQ291bnQ6IDEsIHBhcmFtTWFuYWdlcjogbW9ja2VkUGFyYW1NYW5hZ2VyIH07XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdGVzdENvbmZpZyA9IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5fY29uZmlnLCBzdWl0ZXM6IFsgc3VpdGVDb3B5IF0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIF9ncm91cFJlc3VsdDoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0S2V5LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCB3b3JrZXJDb25maWcgPSB7IHdvcmtlcklkLCB0ZXN0Q29uZmlnLCB0ZXN0Q2Fwcywgc3RhcnR1cERlbGF5OiAyMDAgfTtcclxuICAgICAgICAgICAgICAgICAgICBjb2xsZWN0aW9uLnB1c2goKGNhbGxiYWNrKSA9PiB0aGlzLl9sYXVuY2hXb3JrZXJGdW5jKHdvcmtlckNvbmZpZywgY2FsbGJhY2spKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAvLyBjaGVjayBpZiBhbnkgb2YgY2FzZXMgaGF2ZSBwYXJhbSBmaWxlIGF0dGFjaGVkXHJcbiAgICAgICAgICAgIGVsc2UgaWYgKG1vZGUgPT09ICdjYXNlJyAmJiBBcnJheS5pc0FycmF5KHN1aXRlRGVmLmNhc2VzKSkge1xyXG4gICAgICAgICAgICAgICAgbGV0IGNhc2VJbmRleCA9IDA7XHJcbiAgICAgICAgICAgICAgICBzdWl0ZURlZi5jYXNlcy5mb3JFYWNoKGNhc2VEZWYgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNhc2VLZXkgPSBjYXNlRGVmLmtleSB8fCBjYXNlRGVmLmlkIHx8IGNhc2VEZWYubmFtZTtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCB3b3JrZXJJZCA9IGAke2Nhc2VLZXl9LSR7c3VpdGVJbmRleH0vJHtjYXNlSW5kZXh9YDtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBzdWl0ZUNvcHkgPSB7IC4uLnN1aXRlRGVmLCBjYXNlczogWyBjYXNlRGVmIF19O1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHRlc3RDb25maWcgPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMuX2NvbmZpZyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgc3VpdGVzOiBbIHN1aXRlQ29weSBdLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBfZ3JvdXBSZXN1bHQ6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdEtleSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1aXRlS2V5LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCB3b3JrZXJDb25maWcgPSB7IHdvcmtlcklkLCB0ZXN0Q29uZmlnLCB0ZXN0Q2Fwcywgc3RhcnR1cERlbGF5OiAwIH07XHJcbiAgICAgICAgICAgICAgICAgICAgY29sbGVjdGlvbi5wdXNoKChjYWxsYmFjaykgPT4gdGhpcy5fbGF1bmNoV29ya2VyRnVuYyh3b3JrZXJDb25maWcsIGNhbGxiYWNrKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgY2FzZUluZGV4Kys7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHN1aXRlS2V5ID0gc3VpdGVEZWYua2V5IHx8IHN1aXRlRGVmLmlkIHx8IHN1aXRlRGVmLm5hbWU7XHJcbiAgICAgICAgICAgICAgICBjb25zdCB3b3JrZXJJZCA9IGAke3N1aXRlS2V5fS0ke3N1aXRlSW5kZXh9YDtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHRlc3RDb25maWcgPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5fY29uZmlnLFxyXG4gICAgICAgICAgICAgICAgICAgIHN1aXRlczogWyBzdWl0ZURlZiBdLFxyXG4gICAgICAgICAgICAgICAgICAgIF9ncm91cFJlc3VsdDoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRLZXksXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHdvcmtlckNvbmZpZyA9IHsgd29ya2VySWQsIHRlc3RDb25maWcsIHRlc3RDYXBzLCBzdGFydHVwRGVsYXk6IDAgfTtcclxuICAgICAgICAgICAgICAgIGNvbGxlY3Rpb24ucHVzaCgoY2FsbGJhY2spID0+IHRoaXMuX2xhdW5jaFdvcmtlckZ1bmMod29ya2VyQ29uZmlnLCBjYWxsYmFjaykpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHN1aXRlSW5kZXgrKztcclxuICAgICAgICB9KTtcclxuICAgICAgICBjb25zdCBzdGFydCA9IG5ldyBEYXRlKCk7XHJcbiAgICAgICAgYXdhaXQgcGFyYWxsZWxMaW1pdChjb2xsZWN0aW9uLCB3b3JrZXJzQ291bnQpO1xyXG5cclxuICAgICAgICBsZXQgdG90YWwgPSAwO1xyXG4gICAgICAgIGNvbnNvbGUubG9nKCdDcmVhdGVkIFJ1bm5lcnMgU3RhdCcsIHRoaXMuY3JlYXRlZFJ1bm5lcnNTdGF0KTtcclxuICAgICAgICBjb25zdCBydW5uZXJzSWRzID0gT2JqZWN0LmtleXModGhpcy5jcmVhdGVkUnVubmVyc1N0YXQpO1xyXG4gICAgICAgIGNvbnNvbGUubG9nKCdDcmVhdGVkIFJ1bm5lcnMgY291bnQnLCBydW5uZXJzSWRzLmxlbmd0aCk7XHJcblxyXG4gICAgICAgIHJ1bm5lcnNJZHMubWFwKChpdGVtKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGNhemVzID0gdGhpcy5jcmVhdGVkUnVubmVyc1N0YXRbaXRlbV0ubGVuZ3RoO1xyXG4gICAgICAgICAgICB0b3RhbCArPSBjYXplcztcclxuICAgICAgICAgICAgY29uc29sZS5sb2coJ1J1bm5lcicsIGl0ZW0sICcgcnVuICcsIGNhemVzLCAnIGNhc2VzJyk7XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIGNvbnNvbGUubG9nKCdQYXJhbGxlbCBjb3VudCcsIHdvcmtlcnNDb3VudCk7XHJcbiAgICAgICAgY29uc29sZS5sb2coJ1RvdGFsOiAnLCB0b3RhbCk7XHJcbiAgICAgICAgY29uc3QgZW5kID0gbmV3IERhdGUoKTtcclxuICAgICAgICBjb25zdCBkdXJhdGlvbiA9IG5ldyBEdXJhdGlvbihzdGFydCwgZW5kKTtcclxuICAgICAgICBjb25zb2xlLmxvZygnRHVyYXRpb246ICcsIGR1cmF0aW9uLnRvU3RyaW5nKDEpKTtcclxuICAgICAgICAvL3RoaXMucmVwb3J0ZXIub25BZnRlckVuZCgpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuICAgICAqIFByaXZhdGUgbWV0aG9kc1xyXG4gICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cclxuXHJcbiAgICBfbGF1bmNoV29ya2VyRnVuYyh3b3JrZXJDb25maWcsIGNhbGxiYWNrKSB7XHJcbiAgICAgICAgY29uc3QgY2IgPSAoZXJyb3IpID0+IHtcclxuICAgICAgICAgICAgaWYgKGVycm9yKSB7XHJcbiAgICAgICAgICAgICAgICBjYWxsYmFjayhlcnJvciwgbnVsbCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9O1xyXG4gICAgICAgIHRoaXMuX2xhdW5jaFRlc3Qod29ya2VyQ29uZmlnLCBjYikudGhlbigocmVzdWx0KSA9PiB7XHJcbiAgICAgICAgICAgIGNhbGxiYWNrKG51bGwsIHJlc3VsdCk7XHJcbiAgICAgICAgfSkuY2F0Y2goZXJyb3IgPT4ge1xyXG4gICAgICAgICAgICBjYWxsYmFjayhlcnJvciwgbnVsbCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgX2luc3RhbnRpYXRlUnVubmVyKCkge1xyXG4gICAgICAgIGlmICh0aGlzLl9jb25maWcuZnJhbWV3b3JrICYmIHR5cGVvZiB0aGlzLl9jb25maWcuZnJhbWV3b3JrID09PSAnc3RyaW5nJykge1xyXG4gICAgICAgICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKFJ1bm5lcnMsIHRoaXMuX2NvbmZpZy5mcmFtZXdvcmspKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IFJ1bm5lcnNbdGhpcy5fY29uZmlnLmZyYW1ld29ya10oKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIG5ldyBSdW5uZXJzLm94eWdlbigpO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIF9sYXVuY2hUZXN0KHsgd29ya2VySWQsIHRlc3RDb25maWcsIHRlc3RDYXBzLCBzdGFydHVwRGVsYXkgfSwgY2FsbGJhY2spIHtcclxuICAgICAgICBpZiAoIWNhbGxiYWNrKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgYXdhaXQgdGhpcy5fc2xlZXAoc3RhcnR1cERlbGF5KTtcclxuXHJcbiAgICAgICAgbGV0IHJ1bm5lciA9IHRoaXMuX2luc3RhbnRpYXRlUnVubmVyKCk7XHJcbiAgICAgICAgdGhpcy5jcmVhdGVkUnVubmVyc1N0YXRbcnVubmVyLl9pZF0gPSBbd29ya2VySWRdO1xyXG5cclxuICAgICAgICBpZiAoIXJ1bm5lcikge1xyXG4gICAgICAgICAgICBjb25zdCBmcmFtZXdvcmsgPSB0aGlzLl9jb25maWcuZnJhbWV3b3JrO1xyXG4gICAgICAgICAgICBjYWxsYmFjayhuZXcgRXJyb3IoYENhbm5vdCBmaW5kIHJ1bm5lciBmb3IgdGhlIHNwZWNpZmllZCBmcmFtZXdvcms6ICR7ZnJhbWV3b3JrfS5gKSk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgLy8gZ2VuZXJhdGUgZmlyZWZveCBcInByb2ZpbGVcIiB2YWx1ZSBpZiBwcm9maWxlIG9wdGlvbnMgYXJlIHNwZWNpZmllZFxyXG4gICAgICAgICAgICAvLyBhd2FpdCBveHV0aWwuZ2VuZXJhdGVGaXJlZm94T3B0aW9uc1Byb2ZpbGUodGVzdENhcHMpO1xyXG5cclxuICAgICAgICAgICAgLy8gaW5pdGlhbGl6ZSBveHlnZW5cclxuICAgICAgICAgICAgYXdhaXQgcnVubmVyLmluaXQodGVzdENvbmZpZywgdGVzdENhcHMsIHRoaXMucmVwb3J0ZXIpO1xyXG5cclxuICAgICAgICAgICAgLy8gcnVuIE94eWdlbiB0ZXN0IFxyXG4gICAgICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBydW5uZXIucnVuKCk7XHJcbiAgICAgICAgICAgIGF3YWl0IHJ1bm5lci5kaXNwb3NlKHJlc3VsdC5zdGF0dXMgfHwgbnVsbCk7XHJcbiAgICAgICAgICAgIGNhbGxiYWNrKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0ZhaWxlZCB0byBsYXVuY2ggdGhlIHRlc3Q6JywgZSk7XHJcbiAgICAgICAgICAgIC8vIHN0b3AgcHJvY2Vzc2luZyB0aGUgcXVldWVcclxuICAgICAgICAgICAgaWYgKHRoaXMuX3F1ZXVlKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9xdWV1ZS5raWxsKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLy8gaWYgdGhpcyBpcyBjdXN0b20gZXJyb3IgbWVzc2FnZVxyXG4gICAgICAgICAgICBpZiAoZS5lcnJvcikge1xyXG4gICAgICAgICAgICAgICAgdmFyIGVyck1zZyA9ICcnO1xyXG4gICAgICAgICAgICAgICAgdmFyIGVyciA9IGUuZXJyb3I7XHJcbiAgICAgICAgICAgICAgICBpZiAoZXJyLnR5cGUpXHJcbiAgICAgICAgICAgICAgICAgICAgZXJyTXNnICs9IGVyci50eXBlICsgJyAtICc7XHJcbiAgICAgICAgICAgICAgICBpZiAoZXJyLm1lc3NhZ2UpXHJcbiAgICAgICAgICAgICAgICAgICAgZXJyTXNnICs9IGVyci5tZXNzYWdlO1xyXG4gICAgICAgICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICAgICAgICAgIGVyck1zZyA9IGVyci50b1N0cmluZygpO1xyXG4gICAgICAgICAgICAgICAgY2FsbGJhY2sobmV3IEVycm9yKGVyck1zZykpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgY2FsbGJhY2soZSk7ICAgIC8vIGNhbGwgYmFjayB3aXRoIHRoZSBvcmlnaW5hbCBleGNlcHRpb25cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5ydW5uZXJzLnB1c2gocnVubmVyKTtcclxuICAgIH1cclxuXHJcbiAgICBfc2xlZXAoZHVyYXRpb24pIHtcclxuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHNldFRpbWVvdXQocmVzb2x2ZSwgZHVyYXRpb24pKTtcclxuICAgIH1cclxufVxyXG5cclxuY2xhc3MgUGFyYW1NYW5hZ2VyTW9jayB7XHJcbiAgICBjb25zdHJ1Y3Rvcih2YWx1ZXMpIHtcclxuICAgICAgICB0aGlzLnZhbHVlcyA9IHZhbHVlcztcclxuICAgIH1cclxuXHJcbiAgICBpbml0KCkge1xyXG5cclxuICAgIH1cclxuXHJcbiAgICBnZXRNb2RlKCkge1xyXG5cclxuICAgIH1cclxuXHJcbiAgICByZWFkTmV4dCgpIHtcclxuXHJcbiAgICB9XHJcblxyXG4gICAgcmVhZFByZXYoKSB7XHJcblxyXG4gICAgfVxyXG5cclxuICAgIGdldFZhbHVlcygpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy52YWx1ZXM7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IHJvd3MoKSB7XHJcbiAgICAgICAgcmV0dXJuIDE7XHJcbiAgICB9XHJcbn1cclxuIl19
|