testcafe 3.4.0-rc.1 → 3.4.0-rc.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.
@@ -139,12 +139,15 @@ class BrowserJob extends async_event_emitter_1.default {
139
139
  return this._disableConcurrencyQueue[connectionId];
140
140
  return this._testRunControllerQueue;
141
141
  }
142
+ _getNextFixtureFirstTestIndex(fixtureId) {
143
+ const nextFixtureFirstTestIndex = this._testRunControllerQueue.findIndex(testRun => { var _a; return ((_a = testRun.test.fixture) === null || _a === void 0 ? void 0 : _a.id) !== fixtureId; });
144
+ return nextFixtureFirstTestIndex === -1 ? this._testRunControllerQueue.length : nextFixtureFirstTestIndex;
145
+ }
142
146
  _updateTestControllerQueues({ test }, connectionId) {
143
- var _a;
147
+ var _a, _b;
144
148
  if (!test.disableConcurrency || ((_a = this._disableConcurrencyQueue[connectionId]) === null || _a === void 0 ? void 0 : _a.length))
145
149
  return;
146
- const lastIndexFixture = this._testRunControllerQueue.findIndex(el => { var _a, _b; return ((_a = el.test.fixture) === null || _a === void 0 ? void 0 : _a.id) !== ((_b = test.fixture) === null || _b === void 0 ? void 0 : _b.id); });
147
- this._disableConcurrencyQueue[connectionId] = this._testRunControllerQueue.splice(0, lastIndexFixture);
150
+ this._disableConcurrencyQueue[connectionId] = this._testRunControllerQueue.splice(0, this._getNextFixtureFirstTestIndex((_b = test.fixture) === null || _b === void 0 ? void 0 : _b.id));
148
151
  }
149
152
  // API
150
153
  get hasQueuedTestRuns() {
@@ -196,4 +199,4 @@ class BrowserJob extends async_event_emitter_1.default {
196
199
  }
197
200
  exports.default = BrowserJob;
198
201
  module.exports = exports.default;
199
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJvd3Nlci1qb2IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcnVubmVyL2Jyb3dzZXItam9iLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsbUNBQXdDO0FBQ3hDLHVGQUE2RDtBQUM3RCxnRkFBc0Q7QUFDdEQsd0ZBQStEO0FBUS9ELDhFQUFvRDtBQUdwRCwwRkFBK0Q7QUFXL0QsSUFBSyxnQkFBbUQ7QUFBeEQsV0FBSyxnQkFBZ0I7SUFBRyxxRUFBVyxDQUFBO0lBQUUsK0RBQVEsQ0FBQTtJQUFFLDZEQUFPLENBQUE7QUFBQyxDQUFDLEVBQW5ELGdCQUFnQixLQUFoQixnQkFBZ0IsUUFBbUM7QUFFeEQsTUFBcUIsVUFBVyxTQUFRLDZCQUFpQjtJQXFCckQsWUFBb0IsRUFDaEIsS0FBSyxFQUNMLGtCQUFrQixFQUNsQixLQUFLLEVBQ0wsV0FBVyxFQUNYLFVBQVUsRUFDVixxQkFBcUIsRUFDckIsSUFBSSxFQUNKLFVBQVUsR0FDRzs7UUFDYixLQUFLLEVBQUUsQ0FBQztRQUVSLElBQUksQ0FBQyxPQUFPLEdBQUcsZ0JBQWdCLENBQUMsV0FBVyxDQUFDO1FBQzVDLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUU3QixJQUFJLENBQUMsTUFBTSxHQUFrQixDQUFDLENBQUM7UUFDL0IsSUFBSSxDQUFDLE9BQU8sR0FBaUIsQ0FBQyxDQUFDO1FBQy9CLElBQUksQ0FBQyxLQUFLLEdBQW1CLElBQUksQ0FBQztRQUNsQyxJQUFJLENBQUMsTUFBTSxHQUFrQixLQUFLLENBQUM7UUFDbkMsSUFBSSxDQUFDLGtCQUFrQixHQUFNLGtCQUFrQixDQUFDO1FBQ2hELElBQUksQ0FBQyxZQUFZLEdBQVksV0FBVyxDQUFDO1FBQ3pDLElBQUksQ0FBQyxVQUFVLEdBQWMsVUFBVSxDQUFDO1FBQ3hDLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxxQkFBcUIsQ0FBQztRQUNuRCxJQUFJLENBQUMsT0FBTyxH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Q0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO2dCQUUxQyxJQUFJLENBQUMsT0FBTyxHQUFHLGdCQUFnQixDQUFDLE9BQU8sQ0FBQzthQUMzQztZQUVELE1BQU0sVUFBVSxHQUFHLE1BQU0saUJBQWlCLENBQUMsS0FBSyxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7WUFFOUUsSUFBSSxVQUFVLEVBQUU7Z0JBQ1osT0FBTztvQkFDSCxTQUFTLEVBQUUsaUJBQWlCLENBQUMsT0FBTyxDQUFDLEVBQUU7b0JBQ3ZDLEdBQUcsRUFBUSxVQUFVO2lCQUN4QixDQUFDO2FBQ0w7U0FDSjtRQUVELE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFTSxLQUFLO1FBQ1IsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxVQUFVLENBQUMsNEJBQWdCLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDMUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUMxRCxDQUFDO0NBQ0o7QUFwUUQsNkJBb1FDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcHVsbCBhcyByZW1vdmUgfSBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IEFzeW5jRXZlbnRFbWl0dGVyIGZyb20gJy4uL3V0aWxzL2FzeW5jLWV2ZW50LWVtaXR0ZXInO1xuaW1wb3J0IFRlc3RSdW5Db250cm9sbGVyIGZyb20gJy4vdGVzdC1ydW4tY29udHJvbGxlcic7XG5pbXBvcnQgU2Vzc2lvbkNvbnRyb2xsZXIgZnJvbSAnLi4vdGVzdC1ydW4vc2Vzc2lvbi1jb250cm9sbGVyJztcbmltcG9ydCBCcm93c2VyQ29ubmVjdGlvbiBmcm9tICcuLi9icm93c2VyL2Nvbm5lY3Rpb24nO1xuaW1wb3J0IHsgUHJveHkgfSBmcm9tICd0ZXN0Y2FmZS1oYW1tZXJoZWFkJztcbmltcG9ydCBUZXN0IGZyb20gJy4uL2FwaS9zdHJ1Y3R1cmUvdGVzdCc7XG5pbXBvcnQgU2NyZWVuc2hvdHMgZnJvbSAnLi4vc2NyZWVuc2hvdHMnO1xuaW1wb3J0IFdhcm5pbmdMb2cgZnJvbSAnLi4vbm90aWZpY2F0aW9ucy93YXJuaW5nLWxvZyc7XG5pbXBvcnQgRml4dHVyZUhvb2tDb250cm9sbGVyIGZyb20gJy4vZml4dHVyZS1ob29rLWNvbnRyb2xsZXInO1xuaW1wb3J0IHsgRGljdGlvbmFyeSB9IGZyb20gJy4uL2NvbmZpZ3VyYXRpb24vaW50ZXJmYWNlcyc7XG5pbXBvcnQgQnJvd3NlckpvYlJlc3VsdCBmcm9tICcuL2Jyb3dzZXItam9iLXJlc3VsdCc7XG5pbXBvcnQgeyBCcm93c2VySm9iSW5pdCB9IGZyb20gJy4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgTWVzc2FnZUJ1cyBmcm9tICcuLi91dGlscy9tZXNzYWdlLWJ1cyc7XG5pbXBvcnQgVGVzdFJ1bkhvb2tDb250cm9sbGVyIGZyb20gJy4vdGVzdC1ydW4taG9vay1jb250cm9sbGVyJztcbmltcG9ydCBUZXN0UnVuIGZyb20gJy4uL3Rlc3QtcnVuJztcbi8vIEB0cy1pZ25vcmVcbmltcG9ydCB7IFRlc3RSdW4gYXMgTGVnYWN5VGVzdFJ1biB9IGZyb20gJ3Rlc3RjYWZlLWxlZ2FjeS1hcGknO1xuaW1wb3J0IHsgTmV4dFRlc3RSdW5JbmZvIH0gZnJvbSAnLi4vc2hhcmVkL3R5cGVzJztcblxuaW50ZXJmYWNlIEJyb3dzZXJKb2JSZXN1bHRJbmZvIHtcbiAgICBzdGF0dXM6IEJyb3dzZXJKb2JSZXN1bHQ7XG4gICAgZGF0YT86IGFueTtcbn1cblxuZW51bSBCcm93c2VySm9iU3RhdHVzIHsgaW5pdGlhbGl6ZWQsIHN0YXJ0aW5nLCBzdGFydGVkIH1cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQnJvd3NlckpvYiBleHRlbmRzIEFzeW5jRXZlbnRFbWl0dGVyIHtcbiAgICBwcml2YXRlIF9zdGF0dXM6IEJyb3dzZXJKb2JTdGF0dXM7XG4gICAgcHJpdmF0ZSBfc3RhcnRUaW1lOiBEYXRlO1xuICAgIHByaXZhdGUgX3RvdGFsOiBudW1iZXI7XG4gICAgcHJpdmF0ZSBfcGFzc2VkOiBudW1iZXI7XG4gICAgcHJpdmF0ZSByZWFkb25seSBfb3B0czogRGljdGlvbmFyeTxPcHRpb25WYWx1ZT47XG4gICAgcHJpdmF0ZSByZWFkb25seSBfcHJveHk6IFByb3h5O1xuICAgIHB1YmxpYyByZWFkb25seSBicm93c2VyQ29ubmVjdGlvbnM6IEJyb3dzZXJDb25uZWN0aW9uW107XG4gICAgcHJpdmF0ZSByZWFkb25seSBfc2NyZWVuc2hvdHM6IFNjcmVlbnNob3RzO1xuICAgIHB1YmxpYyByZWFkb25seSB3YXJuaW5nTG9nOiBXYXJuaW5nTG9nO1xuICAgIHB1YmxpYyByZWFkb25seSBmaXh0dXJlSG9va0NvbnRyb2xsZXI6IEZpeHR1cmVIb29rQ29udHJvbGxlcjtcbiAgICBwcml2YXRlIF9yZXN1bHQ6IEJyb3dzZXJKb2JSZXN1bHRJbmZvIHwgbnVsbDtcbiAgICBwcml2YXRlIF90ZXN0UnVuQ29udHJvbGxlclF1ZXVlOiBUZXN0UnVuQ29udHJvbGxlcltdO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX3JlcG9ydHNQZW5kaW5nOiBUZXN0UnVuQ29udHJvbGxlcltdO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX2Nvbm5lY3Rpb25FcnJvckxpc3RlbmVyOiAoZXJyb3I6IEVycm9yKSA9PiB2b2lkO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX2NvbXBsZXRpb25RdWV1ZTogVGVzdFJ1bkNvbnRyb2xsZXJbXTtcbiAgICBwcml2YXRlIF9yZXNvbHZlV2FpdGluZ0xhc3RUZXN0SW5GaXh0dXJlOiBGdW5jdGlvbiB8IG51bGw7XG4gICAgcHJpdmF0ZSByZWFkb25seSBfbWVzc2FnZUJ1czogTWVzc2FnZUJ1cztcbiAgICBwcml2YXRlIHJlYWRvbmx5IF90ZXN0UnVuSG9vazogVGVzdFJ1bkhvb2tDb250cm9sbGVyO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX2Rpc2FibGVDb25jdXJyZW5jeVF1ZXVlOiBEaWN0aW9uYXJ5PFRlc3RSdW5Db250cm9sbGVyW10+O1xuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yICh7XG4gICAgICAgIHRlc3RzLFxuICAgICAgICBicm93c2VyQ29ubmVjdGlvbnMsXG4gICAgICAgIHByb3h5LFxuICAgICAgICBzY3JlZW5zaG90cyxcbiAgICAgICAgd2FybmluZ0xvZyxcbiAgICAgICAgZml4dHVyZUhvb2tDb250cm9sbGVyLFxuICAgICAgICBvcHRzLFxuICAgICAgICBtZXNzYWdlQnVzLFxuICAgIH06IEJyb3dzZXJKb2JJbml0KSB7XG4gICAgICAgIHN1cGVyKCk7XG5cbiAgICAgICAgdGhpcy5fc3RhdHVzID0gQnJvd3NlckpvYlN0YXR1cy5pbml0aWFsaXplZDtcbiAgICAgICAgdGhpcy5fc3RhcnRUaW1lID0gbmV3IERhdGUoKTtcblxuICAgICAgICB0aGlzLl90b3RhbCAgICAgICAgICAgICAgICA9IDA7XG4gICAgICAgIHRoaXMuX3Bhc3NlZCAgICAgICAgICAgICAgID0gMDtcbiAgICAgICAgdGhpcy5fb3B0cyAgICAgICAgICAgICAgICAgPSBvcHRzO1xuICAgICAgICB0aGlzLl9wcm94eSAgICAgICAgICAgICAgICA9IHByb3h5O1xuICAgICAgICB0aGlzLmJyb3dzZXJDb25uZWN0aW9ucyAgICA9IGJyb3dzZXJDb25uZWN0aW9ucztcbiAgICAgICAgdGhpcy5fc2NyZWVuc2hvdHMgICAgICAgICAgPSBzY3JlZW5zaG90cztcbiAgICAgICAgdGhpcy53YXJuaW5nTG9nICAgICAgICAgICAgPSB3YXJuaW5nTG9nO1xuICAgICAgICB0aGlzLmZpeHR1cmVIb29rQ29udHJvbGxlciA9IGZpeHR1cmVIb29rQ29udHJvbGxlcjtcbiAgICAgICAgdGhpcy5fcmVzdWx0ICAgICAgICAgICAgICAgPSBudWxsO1xuICAgICAgICB0aGlzLl9tZXNzYWdlQnVzICAgICAgICAgICA9IG1lc3NhZ2VCdXM7XG4gICAgICAgIHRoaXMuX3Rlc3RSdW5Ib29rICAgICAgICAgID0gbmV3IFRlc3RSdW5Ib29rQ29udHJvbGxlcih0ZXN0cywgKG9wdHMuaG9va3MgYXMgR2xvYmFsSG9va3MpPy50ZXN0UnVuKTtcblxuICAgICAgICB0aGlzLl90ZXN0UnVuQ29udHJvbGxlclF1ZXVlID0gdGVzdHMubWFwKCh0ZXN0LCBpbmRleCkgPT4gdGhpcy5fY3JlYXRlVGVzdFJ1bkNvbnRyb2xsZXIodGVzdCwgaW5kZXgpKTtcblxuICAgICAgICB0aGlzLl9kaXNhYmxlQ29uY3VycmVuY3lRdWV1ZSA9IHt9O1xuICAgICAgICB0aGlzLl9jb21wbGV0aW9uUXVldWUgICAgICAgICA9IFtdO1xuICAgICAgICB0aGlzLl9yZXBvcnRzUGVuZGluZyAgICAgICAgICA9IFtdO1xuXG4gICAgICAgIHRoaXMuX2Nvbm5lY3Rpb25FcnJvckxpc3RlbmVyID0gKGVycm9yOiBFcnJvcikgPT4gdGhpcy5fc2V0UmVzdWx0KEJyb3dzZXJKb2JSZXN1bHQuZXJyb3JlZCwgZXJyb3IpO1xuXG4gICAgICAgIHRoaXMuX3Jlc29sdmVXYWl0aW5nTGFzdFRlc3RJbkZpeHR1cmUgPSBudWxsO1xuXG4gICAgICAgIHRoaXMuYnJvd3NlckNvbm5lY3Rpb25zLm1hcChiYyA9PiBiYy5vbmNlKCdlcnJvcicsIHRoaXMuX2Nvbm5lY3Rpb25FcnJvckxpc3RlbmVyKSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfY3JlYXRlVGVzdFJ1bkNvbnRyb2xsZXIgKHRlc3Q6IFRlc3QsIGluZGV4OiBudW1iZXIpOiBUZXN0UnVuQ29udHJvbGxlciB7XG4gICAgICAgIGNvbnN0IHRlc3RSdW5Db250cm9sbGVyID0gbmV3IFRlc3RSdW5Db250cm9sbGVyKHtcbiAgICAgICAgICAgIHRlc3QsXG4gICAgICAgICAgICBpbmRleDogICAgICAgICAgICAgICAgIGluZGV4ICsgMSxcbiAgICAgICAgICAgIHByb3h5OiAgICAgICAgICAgICAgICAgdGhpcy5fcHJveHksXG4gICAgICAgICAgICBzY3JlZW5zaG90czogICAgICAgICAgIHRoaXMuX3NjcmVlbnNob3RzLFxuICAgICAgICAgICAgd2FybmluZ0xvZzogICAgICAgICAgICB0aGlzLndhcm5pbmdMb2csXG4gICAgICAgICAgICBmaXh0dXJlSG9va0NvbnRyb2xsZXI6IHRoaXMuZml4dHVyZUhvb2tDb250cm9sbGVyLFxuICAgICAgICAgICAgb3B0czogICAgICAgICAgICAgICAgICB0aGlzLl9vcHRzLFxuICAgICAgICAgICAgbWVzc2FnZUJ1czogICAgICAgICAgICB0aGlzLl9tZXNzYWdlQnVzLFxuICAgICAgICAgICAgdGVzdFJ1bkhvb2s6ICAgICAgICAgICB0aGlzLl90ZXN0UnVuSG9vayxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGVzdFJ1bkNvbnRyb2xsZXIub24oJ3Rlc3QtcnVuLWNyZWF0ZScsIGFzeW5jIHRlc3RSdW5JbmZvID0+IHtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuZW1pdCgndGVzdC1ydW4tY3JlYXRlJywgdGVzdFJ1bkluZm8pO1xuICAgICAgICB9KTtcbiAgICAgICAgdGVzdFJ1bkNvbnRyb2xsZXIub24oJ3Rlc3QtcnVuLXJlYWR5JywgYXN5bmMgKCkgPT4ge1xuICAgICAgICAgICAgYXdhaXQgdGhpcy5lbWl0KCd0ZXN0LXJ1bi1yZWFkeScsIHRlc3RSdW5Db250cm9sbGVyKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRlc3RSdW5Db250cm9sbGVyLm9uKCd0ZXN0LXJ1bi1yZXN0YXJ0JywgYXN5bmMgKCkgPT4gdGhpcy5fb25UZXN0UnVuUmVzdGFydCh0ZXN0UnVuQ29udHJvbGxlcikpO1xuICAgICAgICB0ZXN0UnVuQ29udHJvbGxlci5vbigndGVzdC1ydW4tYmVmb3JlLWRvbmUnLCBhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLmVtaXQoJ3Rlc3QtcnVuLWJlZm9yZS1kb25lJywgdGVzdFJ1bkNvbnRyb2xsZXIpO1xuICAgICAgICB9KTtcbiAgICAgICAgdGVzdFJ1bkNvbnRyb2xsZXIub24oJ3Rlc3QtcnVuLWRvbmUnLCBhc3luYyAoKSA9PiB0aGlzLl9vblRlc3RSdW5Eb25lKHRlc3RSdW5Db250cm9sbGVyKSk7XG5cbiAgICAgICAgdGVzdFJ1bkNvbnRyb2xsZXIub24oJ3Rlc3QtYWN0aW9uLWRvbmUnLCBhc3luYyBhcmdzID0+IHtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuZW1pdCgndGVzdC1hY3Rpb24tZG9uZScsIGFyZ3MpO1xuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gdGVzdFJ1bkNvbnRyb2xsZXI7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyBfc2V0UmVzdWx0IChzdGF0dXM6IEJyb3dzZXJKb2JSZXN1bHQsIGRhdGE/OiBhbnkpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgaWYgKHRoaXMuX3Jlc3VsdClcbiAgICAgICAgICAgIHJldHVybjtcblxuICAgICAgICB0aGlzLl9yZXN1bHQgPSB7IHN0YXR1cywgZGF0YSB9O1xuXG4gICAgICAgIHRoaXMuYnJvd3NlckNvbm5lY3Rpb25zLmZvckVhY2goYmMgPT4gYmMucmVtb3ZlTGlzdGVuZXIoJ2Vycm9yJywgdGhpcy5fY29ubmVjdGlvbkVycm9yTGlzdGVuZXIpKTtcblxuICAgICAgICBhd2FpdCBQcm9taXNlLmFsbCh0aGlzLmJyb3dzZXJDb25uZWN0aW9ucy5tYXAoYmMgPT4gYmMucmVwb3J0Sm9iUmVzdWx0KCh0aGlzLl9yZXN1bHQgYXMgQnJvd3NlckpvYlJlc3VsdEluZm8pLnN0YXR1cywgKHRoaXMuX3Jlc3VsdCBhcyBCcm93c2VySm9iUmVzdWx0SW5mbykuZGF0YSkpKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9hZGRUb0NvbXBsZXRpb25RdWV1ZSAodGVzdFJ1bkluZm86IFRlc3RSdW5Db250cm9sbGVyKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2NvbXBsZXRpb25RdWV1ZS5wdXNoKHRlc3RSdW5JbmZvKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9yZW1vdmVGcm9tQ29tcGxldGlvblF1ZXVlICh0ZXN0UnVuSW5mbzogVGVzdFJ1bkNvbnRyb2xsZXIpOiB2b2lkIHtcbiAgICAgICAgcmVtb3ZlKHRoaXMuX2NvbXBsZXRpb25RdWV1ZSwgdGVzdFJ1bkluZm8pO1xuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgX29uVGVzdFJ1blJlc3RhcnQgKHRlc3RSdW5Db250cm9sbGVyOiBUZXN0UnVuQ29udHJvbGxlcik6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICB0aGlzLl9yZW1vdmVGcm9tQ29tcGxldGlvblF1ZXVlKHRlc3RSdW5Db250cm9sbGVyKTtcbiAgICAgICAgdGhpcy5fdGVzdFJ1bkNvbnRyb2xsZXJRdWV1ZS51bnNoaWZ0KHRlc3RSdW5Db250cm9sbGVyKTtcblxuICAgICAgICBhd2FpdCB0aGlzLmVtaXQoJ3Rlc3QtcnVuLXJlc3RhcnQnLCB0ZXN0UnVuQ29udHJvbGxlcik7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyBfb25UZXN0UnVuRG9uZSAodGVzdFJ1bkNvbnRyb2xsZXI6IFRlc3RSdW5Db250cm9sbGVyKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHRlc3RSdW5Db250cm9sbGVyLnRlc3RSdW4uZmluaXNoVGltZSA9IG5ldyBEYXRlKCk7XG5cbiAgICAgICAgdGhpcy5fdG90YWwrKztcblxuICAgICAgICBpZiAoIXRlc3RSdW5Db250cm9sbGVyLnRlc3RSdW4uZXJycy5sZW5ndGgpXG4gICAgICAgICAgICB0aGlzLl9wYXNzZWQrKztcblxuICAgICAgICB3aGlsZSAodGhpcy5fY29tcGxldGlvblF1ZXVlLmxlbmd0aCAmJiB0aGlzLl9jb21wbGV0aW9uUXVldWVbMF0uZG9uZSkge1xuICAgICAgICAgICAgdGVzdFJ1bkNvbnRyb2xsZXIgPSB0aGlzLl9jb21wbGV0aW9uUXVldWUuc2hpZnQoKSBhcyBUZXN0UnVuQ29udHJvbGxlcjtcblxuICAgICAgICAgICAgYXdhaXQgdGhpcy5lbWl0KCd0ZXN0LXJ1bi1kb25lJywgdGVzdFJ1bkNvbnRyb2xsZXIudGVzdFJ1bik7XG5cbiAgICAgICAgICAgIHJlbW92ZSh0aGlzLl9yZXBvcnRzUGVuZGluZywgdGVzdFJ1bkNvbnRyb2xsZXIpO1xuXG4gICAgICAgICAgICBpZiAoIXRoaXMuX3JlcG9ydHNQZW5kaW5nLmxlbmd0aCAmJiB0aGlzLl9yZXNvbHZlV2FpdGluZ0xhc3RUZXN0SW5GaXh0dXJlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fcmVzb2x2ZVdhaXRpbmdMYXN0VGVzdEluRml4dHVyZSgpO1xuXG4gICAgICAgICAgICAgICAgdGhpcy5fcmVzb2x2ZVdhaXRpbmdMYXN0VGVzdEluRml4dHVyZSA9IG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXRoaXMuX2NvbXBsZXRpb25RdWV1ZS5sZW5ndGggJiYgIXRoaXMuaGFzUXVldWVkVGVzdFJ1bnMpIHtcbiAgICAgICAgICAgIGlmICghdGhpcy5fb3B0cy5saXZlKVxuICAgICAgICAgICAgICAgIFNlc3Npb25Db250cm9sbGVyLmNsb3NlU2Vzc2lvbih0ZXN0UnVuQ29udHJvbGxlci50ZXN0UnVuKTtcblxuICAgICAgICAgICAgdGhpc1xuICAgICAgICAgICAgICAgIC5fc2V0UmVzdWx0KEJyb3dzZXJKb2JSZXN1bHQuZG9uZSwgeyB0b3RhbDogdGhpcy5fdG90YWwsIHBhc3NlZDogdGhpcy5fcGFzc2VkIH0pXG4gICAgICAgICAgICAgICAgLnRoZW4oKCkgPT4gdGhpcy5lbWl0KCdkb25lJykpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyBfaXNOZXh0VGVzdFJ1bkF2YWlsYWJsZSAodGVzdFJ1bkNvbnRyb2xsZXI6IFRlc3RSdW5Db250cm9sbGVyKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgICAgIC8vIE5PVEU6IGV2ZW50IHRhc2sgc3RhcnQgaXMgY3VycmVudGx5IGV4ZWN1dGluZyxcbiAgICAgICAgLy8gc28gdGVzdCBydW4gaXMgdGVtcG9yYXJ5IGJsb2NrZWRcbiAgICAgICAgaWYgKHRoaXMuX3N0YXR1cyA9PT0gQnJvd3NlckpvYlN0YXR1cy5zdGFydGluZylcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcblxuICAgICAgICAvLyBOT1RFOiBiZWZvcmUgaG9vayBmb3IgdGVzdCBydW4gZml4dHVyZSBpcyBjdXJyZW50bHlcbiAgICAgICAgLy8gZXhlY3V0aW5nLCBzbyB0ZXN0IHJ1biBpcyB0ZW1wb3JhcnkgYmxvY2tlZFxuICAgICAgICBjb25zdCBpc0Jsb2NrZWQgICAgICAgICAgICAgICAgID0gdGVzdFJ1bkNvbnRyb2xsZXIuYmxvY2tlZDtcbiAgICAgICAgY29uc3QgaXNDb25jdXJyZW5jeSAgICAgICAgICAgICA9IHRoaXMuX29wdHMuY29uY3VycmVuY3kgYXMgbnVtYmVyID4gMTtcbiAgICAgICAgY29uc3QgaGFzSW5jb21wbGV0ZVRlc3RSdW5zICAgICA9IHRoaXMuX2NvbXBsZXRpb25RdWV1ZS5zb21lKGNvbnRyb2xsZXIgPT4gIWNvbnRyb2xsZXIuZG9uZSk7XG4gICAgICAgIGNvbnN0IG5lZWRXYWl0TGFzdFRlc3RJbkZpeHR1cmUgPSB0aGlzLl9yZXBvcnRzUGVuZGluZy5zb21lKGNvbnRyb2xsZXIgPT4gY29udHJvbGxlci50ZXN0LmZpeHR1cmUgIT09IHRlc3RSdW5Db250cm9sbGVyLnRlc3QuZml4dHVyZSk7XG5cbiAgICAgICAgaWYgKGlzQmxvY2tlZCB8fCAoaGFzSW5jb21wbGV0ZVRlc3RSdW5zIHx8IG5lZWRXYWl0TGFzdFRlc3RJbkZpeHR1cmUpICYmICFpc0NvbmN1cnJlbmN5KSB7XG4gICAgICAgICAgICBjb25zdCBkaXNhYmxlUGFnZVJlbG9hZHMgPSB0ZXN0UnVuQ29udHJvbGxlci50ZXN0LmRpc2FibGVQYWdlUmVsb2FkcyB8fFxuICAgICAgICAgICAgICAgIHRoaXMuX29wdHMuZGlzYWJsZVBhZ2VSZWxvYWRzICYmIHRlc3RSdW5Db250cm9sbGVyLnRlc3QuZGlzYWJsZVBhZ2VSZWxvYWRzICE9PSBmYWxzZTtcblxuICAgICAgICAgICAgaWYgKCFuZWVkV2FpdExhc3RUZXN0SW5GaXh0dXJlIHx8ICFkaXNhYmxlUGFnZVJlbG9hZHMpXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuXG4gICAgICAgICAgICAvLyBOT1RFOiBpZiB3ZSBoYXZlIGBkaXNhYmxlUGFnZVJlbG9hZHNgIGVuYWJsZWQgYW5kIHRoZSBuZXh0IHRlc3QgaXMgZnJvbSBuZXh0XG4gICAgICAgICAgICAvLyBmaXh0dXJlLCB0aGVuIHdlIG5lZWQgdG8gd2FpdCB1bnRpbCBhbGwgcmVwb3J0ZXJzIGZpbmlzaGVkIHRvIHByZXZlbnRcbiAgICAgICAgICAgIC8vIHJlZGlyZWN0aW5nIHRvIHRoZSBgaWRsZWAgcGFnZVxuICAgICAgICAgICAgYXdhaXQgbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fcmVzb2x2ZVdhaXRpbmdMYXN0VGVzdEluRml4dHVyZSA9IHJlc29sdmU7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHByaXZhdGUgX2dldFRlc3RDb250cm9sbGVyUXVldWUgKGNvbm5lY3Rpb25JZDogc3RyaW5nKTogVGVzdFJ1bkNvbnRyb2xsZXJbXSB7XG4gICAgICAgIGlmICh0aGlzLl9kaXNhYmxlQ29uY3VycmVuY3lRdWV1ZVtjb25uZWN0aW9uSWRdPy5sZW5ndGgpXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fZGlzYWJsZUNvbmN1cnJlbmN5UXVldWVbY29ubmVjdGlvbklkXTtcblxuICAgICAgICByZXR1cm4gdGhpcy5fdGVzdFJ1bkNvbnRyb2xsZXJRdWV1ZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF91cGRhdGVUZXN0Q29udHJvbGxlclF1ZXVlcyAoeyB0ZXN0IH06IFRlc3RSdW5Db250cm9sbGVyLCBjb25uZWN0aW9uSWQ6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICBpZiAoIXRlc3QuZGlzYWJsZUNvbmN1cnJlbmN5IHx8IHRoaXMuX2Rpc2FibGVDb25jdXJyZW5jeVF1ZXVlW2Nvbm5lY3Rpb25JZF0/Lmxlbmd0aClcbiAgICAgICAgICAgIHJldHVybjtcblxuICAgICAgICBjb25zdCBsYXN0SW5kZXhGaXh0dXJlID0gdGhpcy5fdGVzdFJ1bkNvbnRyb2xsZXJRdWV1ZS5maW5kSW5kZXgoZWwgPT4gZWwudGVzdC5maXh0dXJlPy5pZCAhPT0gdGVzdC5maXh0dXJlPy5pZCk7XG5cbiAgICAgICAgdGhpcy5fZGlzYWJsZUNvbmN1cnJlbmN5UXVldWVbY29ubmVjdGlvbklkXSA9IHRoaXMuX3Rlc3RSdW5Db250cm9sbGVyUXVldWUuc3BsaWNlKDAsIGxhc3RJbmRleEZpeHR1cmUpO1xuICAgIH1cblxuICAgIC8vIEFQSVxuICAgIHB1YmxpYyBnZXQgaGFzUXVldWVkVGVzdFJ1bnMgKCk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAodGhpcy5fdGVzdFJ1bkNvbnRyb2xsZXJRdWV1ZS5sZW5ndGgpXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcblxuICAgICAgICBmb3IgKGNvbnN0IGNvbm5lY3Rpb25JZCBpbiB0aGlzLl9kaXNhYmxlQ29uY3VycmVuY3lRdWV1ZSkge1xuICAgICAgICAgICAgaWYgKHRoaXMuX2Rpc2FibGVDb25jdXJyZW5jeVF1ZXVlW2Nvbm5lY3Rpb25JZF0ubGVuZ3RoKVxuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgY3VycmVudFRlc3RSdW4gKCk6IExlZ2FjeVRlc3RSdW4gfCBUZXN0UnVuIHwgbnVsbCB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jb21wbGV0aW9uUXVldWUubGVuZ3RoID8gdGhpcy5fY29tcGxldGlvblF1ZXVlWzBdLnRlc3RSdW4gOiBudWxsO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBwb3BOZXh0VGVzdFJ1bkluZm8gKGNvbm5lY3Rpb246IEJyb3dzZXJDb25uZWN0aW9uKTogUHJvbWlzZTxOZXh0VGVzdFJ1bkluZm8gfCBudWxsPiB7XG4gICAgICAgIHdoaWxlICh0aGlzLmhhc1F1ZXVlZFRlc3RSdW5zKSB7XG4gICAgICAgICAgICBjb25zdCBjdXJyZW50UXVldWUgICAgICA9IHRoaXMuX2dldFRlc3RDb250cm9sbGVyUXVldWUoY29ubmVjdGlvbi5pZCk7XG4gICAgICAgICAgICBjb25zdCB0ZXN0UnVuQ29udHJvbGxlciA9IGN1cnJlbnRRdWV1ZVswXTtcblxuICAgICAgICAgICAgaWYgKCF0ZXN0UnVuQ29udHJvbGxlcilcbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgY29uc3QgaXNOZXh0VGVzdFJ1bkF2YWlsYWJsZSA9IGF3YWl0IHRoaXMuX2lzTmV4dFRlc3RSdW5BdmFpbGFibGUodGVzdFJ1bkNvbnRyb2xsZXIpO1xuXG4gICAgICAgICAgICBpZiAoIWlzTmV4dFRlc3RSdW5BdmFpbGFibGUpXG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIHRoaXMuX3JlcG9ydHNQZW5kaW5nLnB1c2godGVzdFJ1bkNvbnRyb2xsZXIpO1xuICAgICAgICAgICAgY3VycmVudFF1ZXVlLnNoaWZ0KCk7XG4gICAgICAgICAgICB0aGlzLl91cGRhdGVUZXN0Q29udHJvbGxlclF1ZXVlcyh0ZXN0UnVuQ29udHJvbGxlciwgY29ubmVjdGlvbi5pZCk7XG4gICAgICAgICAgICB0aGlzLl9hZGRUb0NvbXBsZXRpb25RdWV1ZSh0ZXN0UnVuQ29udHJvbGxlcik7XG5cbiAgICAgICAgICAgIGlmICh0aGlzLl9zdGF0dXMgPT09IEJyb3dzZXJKb2JTdGF0dXMuaW5pdGlhbGl6ZWQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9zdGF0dXMgPSBCcm93c2VySm9iU3RhdHVzLnN0YXJ0aW5nO1xuICAgICAgICAgICAgICAgIHRoaXMuX3N0YXJ0VGltZSAgID0gbmV3IERhdGUoKTtcblxuICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuZW1pdCgnc3RhcnQnLCB0aGlzLl9zdGFydFRpbWUpO1xuXG4gICAgICAgICAgICAgICAgdGhpcy5fc3RhdHVzID0gQnJvd3NlckpvYlN0YXR1cy5zdGFydGVkO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCB0ZXN0UnVuVXJsID0gYXdhaXQgdGVzdFJ1bkNvbnRyb2xsZXIuc3RhcnQoY29ubmVjdGlvbiwgdGhpcy5fc3RhcnRUaW1lKTtcblxuICAgICAgICAgICAgaWYgKHRlc3RSdW5VcmwpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICB0ZXN0UnVuSWQ6IHRlc3RSdW5Db250cm9sbGVyLnRlc3RSdW4uaWQsXG4gICAgICAgICAgICAgICAgICAgIHVybDogICAgICAgdGVzdFJ1blVybCxcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcHVibGljIGFib3J0ICgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jbGVhckxpc3RlbmVycygpO1xuICAgICAgICB0aGlzLl9zZXRSZXN1bHQoQnJvd3NlckpvYlJlc3VsdC5hYm9ydGVkKTtcbiAgICAgICAgdGhpcy5icm93c2VyQ29ubmVjdGlvbnMubWFwKGJjID0+IGJjLnJlbW92ZUpvYih0aGlzKSk7XG4gICAgfVxufVxuIl19
202
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJvd3Nlci1qb2IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcnVubmVyL2Jyb3dzZXItam9iLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsbUNBQXdDO0FBQ3hDLHVGQUE2RDtBQUM3RCxnRkFBc0Q7QUFDdEQsd0ZBQStEO0FBUS9ELDhFQUFvRDtBQUdwRCwwRkFBK0Q7QUFXL0QsSUFBSyxnQkFBbUQ7QUFBeEQsV0FBSyxnQkFBZ0I7SUFBRyxxRUFBVyxDQUFBO0lBQUUsK0RBQVEsQ0FBQTtJQUFFLDZEQUFPLENBQUE7QUFBQyxDQUFDLEVBQW5ELGdCQUFnQixLQUFoQixnQkFBZ0IsUUFBbUM7QUFFeEQsTUFBcUIsVUFBVyxTQUFRLDZCQUFpQjtJQXFCckQsWUFBb0IsRUFDaEIsS0FBSyxFQUNMLGtCQUFrQixFQUNsQixLQUFLLEVBQ0wsV0FBVyxFQUNYLFVBQVUsRUFDVixxQkFBcUIsRUFDckIsSUFBSSxFQUNKLFVBQVUsR0FDRzs7UUFDYixLQUFLLEVBQUUsQ0FBQztRQUVSLElBQUksQ0FBQyxPQUFPLEdBQUcsZ0JBQWdCLENBQUMsV0FBVyxDQUFDO1FBQzVDLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUU3QixJQUFJLENBQUMsTUFBTSxHQUFrQixDQUFDLENBQUM7UUFDL0IsSUFBSSxDQUFDLE9BQU8sR0FBaUIsQ0FBQyxDQUFDO1FBQy9CLElBQUksQ0FBQyxLQUFLLEdBQW1CLElBQUksQ0FBQztRQUNsQyxJQUFJLENBQUMsTUFBTSxHQUFrQixLQUFLLENBQUM7UUFDbkMsSUFBSSxDQUFDLGtCQUFrQixHQUFNLGtCQUFrQixDQUFDO1FBQ2hELElBQUksQ0FBQyxZQUFZLEdBQVksV0FBVyxDQUFDO1FBQ3pDLElBQUksQ0FBQyxVQUFVLEdBQWMsVUFBVSxDQUFDO1FBQ3hDLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxxQkFBcUIsQ0FBQztRQUNuRCxJQUFJLENBQUMsT0FBTyxH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LE9BQU8sS0FBSyxnQkFBZ0IsQ0FBQyxXQUFXLEVBQUU7Z0JBQy9DLElBQUksQ0FBQyxPQUFPLEdBQUcsZ0JBQWdCLENBQUMsUUFBUSxDQUFDO2dCQUN6QyxJQUFJLENBQUMsVUFBVSxHQUFLLElBQUksSUFBSSxFQUFFLENBQUM7Z0JBRS9CLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO2dCQUUxQyxJQUFJLENBQUMsT0FBTyxHQUFHLGdCQUFnQixDQUFDLE9BQU8sQ0FBQzthQUMzQztZQUVELE1BQU0sVUFBVSxHQUFHLE1BQU0saUJBQWlCLENBQUMsS0FBSyxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7WUFFOUUsSUFBSSxVQUFVLEVBQUU7Z0JBQ1osT0FBTztvQkFDSCxTQUFTLEVBQUUsaUJBQWlCLENBQUMsT0FBTyxDQUFDLEVBQUU7b0JBQ3ZDLEdBQUcsRUFBUSxVQUFVO2lCQUN4QixDQUFDO2FBQ0w7U0FDSjtRQUVELE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFTSxLQUFLO1FBQ1IsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxVQUFVLENBQUMsNEJBQWdCLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDMUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUMxRCxDQUFDO0NBQ0o7QUF4UUQsNkJBd1FDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcHVsbCBhcyByZW1vdmUgfSBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IEFzeW5jRXZlbnRFbWl0dGVyIGZyb20gJy4uL3V0aWxzL2FzeW5jLWV2ZW50LWVtaXR0ZXInO1xuaW1wb3J0IFRlc3RSdW5Db250cm9sbGVyIGZyb20gJy4vdGVzdC1ydW4tY29udHJvbGxlcic7XG5pbXBvcnQgU2Vzc2lvbkNvbnRyb2xsZXIgZnJvbSAnLi4vdGVzdC1ydW4vc2Vzc2lvbi1jb250cm9sbGVyJztcbmltcG9ydCBCcm93c2VyQ29ubmVjdGlvbiBmcm9tICcuLi9icm93c2VyL2Nvbm5lY3Rpb24nO1xuaW1wb3J0IHsgUHJveHkgfSBmcm9tICd0ZXN0Y2FmZS1oYW1tZXJoZWFkJztcbmltcG9ydCBUZXN0IGZyb20gJy4uL2FwaS9zdHJ1Y3R1cmUvdGVzdCc7XG5pbXBvcnQgU2NyZWVuc2hvdHMgZnJvbSAnLi4vc2NyZWVuc2hvdHMnO1xuaW1wb3J0IFdhcm5pbmdMb2cgZnJvbSAnLi4vbm90aWZpY2F0aW9ucy93YXJuaW5nLWxvZyc7XG5pbXBvcnQgRml4dHVyZUhvb2tDb250cm9sbGVyIGZyb20gJy4vZml4dHVyZS1ob29rLWNvbnRyb2xsZXInO1xuaW1wb3J0IHsgRGljdGlvbmFyeSB9IGZyb20gJy4uL2NvbmZpZ3VyYXRpb24vaW50ZXJmYWNlcyc7XG5pbXBvcnQgQnJvd3NlckpvYlJlc3VsdCBmcm9tICcuL2Jyb3dzZXItam9iLXJlc3VsdCc7XG5pbXBvcnQgeyBCcm93c2VySm9iSW5pdCB9IGZyb20gJy4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgTWVzc2FnZUJ1cyBmcm9tICcuLi91dGlscy9tZXNzYWdlLWJ1cyc7XG5pbXBvcnQgVGVzdFJ1bkhvb2tDb250cm9sbGVyIGZyb20gJy4vdGVzdC1ydW4taG9vay1jb250cm9sbGVyJztcbmltcG9ydCBUZXN0UnVuIGZyb20gJy4uL3Rlc3QtcnVuJztcbi8vIEB0cy1pZ25vcmVcbmltcG9ydCB7IFRlc3RSdW4gYXMgTGVnYWN5VGVzdFJ1biB9IGZyb20gJ3Rlc3RjYWZlLWxlZ2FjeS1hcGknO1xuaW1wb3J0IHsgTmV4dFRlc3RSdW5JbmZvIH0gZnJvbSAnLi4vc2hhcmVkL3R5cGVzJztcblxuaW50ZXJmYWNlIEJyb3dzZXJKb2JSZXN1bHRJbmZvIHtcbiAgICBzdGF0dXM6IEJyb3dzZXJKb2JSZXN1bHQ7XG4gICAgZGF0YT86IGFueTtcbn1cblxuZW51bSBCcm93c2VySm9iU3RhdHVzIHsgaW5pdGlhbGl6ZWQsIHN0YXJ0aW5nLCBzdGFydGVkIH1cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQnJvd3NlckpvYiBleHRlbmRzIEFzeW5jRXZlbnRFbWl0dGVyIHtcbiAgICBwcml2YXRlIF9zdGF0dXM6IEJyb3dzZXJKb2JTdGF0dXM7XG4gICAgcHJpdmF0ZSBfc3RhcnRUaW1lOiBEYXRlO1xuICAgIHByaXZhdGUgX3RvdGFsOiBudW1iZXI7XG4gICAgcHJpdmF0ZSBfcGFzc2VkOiBudW1iZXI7XG4gICAgcHJpdmF0ZSByZWFkb25seSBfb3B0czogRGljdGlvbmFyeTxPcHRpb25WYWx1ZT47XG4gICAgcHJpdmF0ZSByZWFkb25seSBfcHJveHk6IFByb3h5O1xuICAgIHB1YmxpYyByZWFkb25seSBicm93c2VyQ29ubmVjdGlvbnM6IEJyb3dzZXJDb25uZWN0aW9uW107XG4gICAgcHJpdmF0ZSByZWFkb25seSBfc2NyZWVuc2hvdHM6IFNjcmVlbnNob3RzO1xuICAgIHB1YmxpYyByZWFkb25seSB3YXJuaW5nTG9nOiBXYXJuaW5nTG9nO1xuICAgIHB1YmxpYyByZWFkb25seSBmaXh0dXJlSG9va0NvbnRyb2xsZXI6IEZpeHR1cmVIb29rQ29udHJvbGxlcjtcbiAgICBwcml2YXRlIF9yZXN1bHQ6IEJyb3dzZXJKb2JSZXN1bHRJbmZvIHwgbnVsbDtcbiAgICBwcml2YXRlIF90ZXN0UnVuQ29udHJvbGxlclF1ZXVlOiBUZXN0UnVuQ29udHJvbGxlcltdO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX3JlcG9ydHNQZW5kaW5nOiBUZXN0UnVuQ29udHJvbGxlcltdO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX2Nvbm5lY3Rpb25FcnJvckxpc3RlbmVyOiAoZXJyb3I6IEVycm9yKSA9PiB2b2lkO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX2NvbXBsZXRpb25RdWV1ZTogVGVzdFJ1bkNvbnRyb2xsZXJbXTtcbiAgICBwcml2YXRlIF9yZXNvbHZlV2FpdGluZ0xhc3RUZXN0SW5GaXh0dXJlOiBGdW5jdGlvbiB8IG51bGw7XG4gICAgcHJpdmF0ZSByZWFkb25seSBfbWVzc2FnZUJ1czogTWVzc2FnZUJ1cztcbiAgICBwcml2YXRlIHJlYWRvbmx5IF90ZXN0UnVuSG9vazogVGVzdFJ1bkhvb2tDb250cm9sbGVyO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX2Rpc2FibGVDb25jdXJyZW5jeVF1ZXVlOiBEaWN0aW9uYXJ5PFRlc3RSdW5Db250cm9sbGVyW10+O1xuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yICh7XG4gICAgICAgIHRlc3RzLFxuICAgICAgICBicm93c2VyQ29ubmVjdGlvbnMsXG4gICAgICAgIHByb3h5LFxuICAgICAgICBzY3JlZW5zaG90cyxcbiAgICAgICAgd2FybmluZ0xvZyxcbiAgICAgICAgZml4dHVyZUhvb2tDb250cm9sbGVyLFxuICAgICAgICBvcHRzLFxuICAgICAgICBtZXNzYWdlQnVzLFxuICAgIH06IEJyb3dzZXJKb2JJbml0KSB7XG4gICAgICAgIHN1cGVyKCk7XG5cbiAgICAgICAgdGhpcy5fc3RhdHVzID0gQnJvd3NlckpvYlN0YXR1cy5pbml0aWFsaXplZDtcbiAgICAgICAgdGhpcy5fc3RhcnRUaW1lID0gbmV3IERhdGUoKTtcblxuICAgICAgICB0aGlzLl90b3RhbCAgICAgICAgICAgICAgICA9IDA7XG4gICAgICAgIHRoaXMuX3Bhc3NlZCAgICAgICAgICAgICAgID0gMDtcbiAgICAgICAgdGhpcy5fb3B0cyAgICAgICAgICAgICAgICAgPSBvcHRzO1xuICAgICAgICB0aGlzLl9wcm94eSAgICAgICAgICAgICAgICA9IHByb3h5O1xuICAgICAgICB0aGlzLmJyb3dzZXJDb25uZWN0aW9ucyAgICA9IGJyb3dzZXJDb25uZWN0aW9ucztcbiAgICAgICAgdGhpcy5fc2NyZWVuc2hvdHMgICAgICAgICAgPSBzY3JlZW5zaG90cztcbiAgICAgICAgdGhpcy53YXJuaW5nTG9nICAgICAgICAgICAgPSB3YXJuaW5nTG9nO1xuICAgICAgICB0aGlzLmZpeHR1cmVIb29rQ29udHJvbGxlciA9IGZpeHR1cmVIb29rQ29udHJvbGxlcjtcbiAgICAgICAgdGhpcy5fcmVzdWx0ICAgICAgICAgICAgICAgPSBudWxsO1xuICAgICAgICB0aGlzLl9tZXNzYWdlQnVzICAgICAgICAgICA9IG1lc3NhZ2VCdXM7XG4gICAgICAgIHRoaXMuX3Rlc3RSdW5Ib29rICAgICAgICAgID0gbmV3IFRlc3RSdW5Ib29rQ29udHJvbGxlcih0ZXN0cywgKG9wdHMuaG9va3MgYXMgR2xvYmFsSG9va3MpPy50ZXN0UnVuKTtcblxuICAgICAgICB0aGlzLl90ZXN0UnVuQ29udHJvbGxlclF1ZXVlID0gdGVzdHMubWFwKCh0ZXN0LCBpbmRleCkgPT4gdGhpcy5fY3JlYXRlVGVzdFJ1bkNvbnRyb2xsZXIodGVzdCwgaW5kZXgpKTtcblxuICAgICAgICB0aGlzLl9kaXNhYmxlQ29uY3VycmVuY3lRdWV1ZSA9IHt9O1xuICAgICAgICB0aGlzLl9jb21wbGV0aW9uUXVldWUgICAgICAgICA9IFtdO1xuICAgICAgICB0aGlzLl9yZXBvcnRzUGVuZGluZyAgICAgICAgICA9IFtdO1xuXG4gICAgICAgIHRoaXMuX2Nvbm5lY3Rpb25FcnJvckxpc3RlbmVyID0gKGVycm9yOiBFcnJvcikgPT4gdGhpcy5fc2V0UmVzdWx0KEJyb3dzZXJKb2JSZXN1bHQuZXJyb3JlZCwgZXJyb3IpO1xuXG4gICAgICAgIHRoaXMuX3Jlc29sdmVXYWl0aW5nTGFzdFRlc3RJbkZpeHR1cmUgPSBudWxsO1xuXG4gICAgICAgIHRoaXMuYnJvd3NlckNvbm5lY3Rpb25zLm1hcChiYyA9PiBiYy5vbmNlKCdlcnJvcicsIHRoaXMuX2Nvbm5lY3Rpb25FcnJvckxpc3RlbmVyKSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfY3JlYXRlVGVzdFJ1bkNvbnRyb2xsZXIgKHRlc3Q6IFRlc3QsIGluZGV4OiBudW1iZXIpOiBUZXN0UnVuQ29udHJvbGxlciB7XG4gICAgICAgIGNvbnN0IHRlc3RSdW5Db250cm9sbGVyID0gbmV3IFRlc3RSdW5Db250cm9sbGVyKHtcbiAgICAgICAgICAgIHRlc3QsXG4gICAgICAgICAgICBpbmRleDogICAgICAgICAgICAgICAgIGluZGV4ICsgMSxcbiAgICAgICAgICAgIHByb3h5OiAgICAgICAgICAgICAgICAgdGhpcy5fcHJveHksXG4gICAgICAgICAgICBzY3JlZW5zaG90czogICAgICAgICAgIHRoaXMuX3NjcmVlbnNob3RzLFxuICAgICAgICAgICAgd2FybmluZ0xvZzogICAgICAgICAgICB0aGlzLndhcm5pbmdMb2csXG4gICAgICAgICAgICBmaXh0dXJlSG9va0NvbnRyb2xsZXI6IHRoaXMuZml4dHVyZUhvb2tDb250cm9sbGVyLFxuICAgICAgICAgICAgb3B0czogICAgICAgICAgICAgICAgICB0aGlzLl9vcHRzLFxuICAgICAgICAgICAgbWVzc2FnZUJ1czogICAgICAgICAgICB0aGlzLl9tZXNzYWdlQnVzLFxuICAgICAgICAgICAgdGVzdFJ1bkhvb2s6ICAgICAgICAgICB0aGlzLl90ZXN0UnVuSG9vayxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGVzdFJ1bkNvbnRyb2xsZXIub24oJ3Rlc3QtcnVuLWNyZWF0ZScsIGFzeW5jIHRlc3RSdW5JbmZvID0+IHtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuZW1pdCgndGVzdC1ydW4tY3JlYXRlJywgdGVzdFJ1bkluZm8pO1xuICAgICAgICB9KTtcbiAgICAgICAgdGVzdFJ1bkNvbnRyb2xsZXIub24oJ3Rlc3QtcnVuLXJlYWR5JywgYXN5bmMgKCkgPT4ge1xuICAgICAgICAgICAgYXdhaXQgdGhpcy5lbWl0KCd0ZXN0LXJ1bi1yZWFkeScsIHRlc3RSdW5Db250cm9sbGVyKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRlc3RSdW5Db250cm9sbGVyLm9uKCd0ZXN0LXJ1bi1yZXN0YXJ0JywgYXN5bmMgKCkgPT4gdGhpcy5fb25UZXN0UnVuUmVzdGFydCh0ZXN0UnVuQ29udHJvbGxlcikpO1xuICAgICAgICB0ZXN0UnVuQ29udHJvbGxlci5vbigndGVzdC1ydW4tYmVmb3JlLWRvbmUnLCBhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLmVtaXQoJ3Rlc3QtcnVuLWJlZm9yZS1kb25lJywgdGVzdFJ1bkNvbnRyb2xsZXIpO1xuICAgICAgICB9KTtcbiAgICAgICAgdGVzdFJ1bkNvbnRyb2xsZXIub24oJ3Rlc3QtcnVuLWRvbmUnLCBhc3luYyAoKSA9PiB0aGlzLl9vblRlc3RSdW5Eb25lKHRlc3RSdW5Db250cm9sbGVyKSk7XG5cbiAgICAgICAgdGVzdFJ1bkNvbnRyb2xsZXIub24oJ3Rlc3QtYWN0aW9uLWRvbmUnLCBhc3luYyBhcmdzID0+IHtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuZW1pdCgndGVzdC1hY3Rpb24tZG9uZScsIGFyZ3MpO1xuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gdGVzdFJ1bkNvbnRyb2xsZXI7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyBfc2V0UmVzdWx0IChzdGF0dXM6IEJyb3dzZXJKb2JSZXN1bHQsIGRhdGE/OiBhbnkpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgaWYgKHRoaXMuX3Jlc3VsdClcbiAgICAgICAgICAgIHJldHVybjtcblxuICAgICAgICB0aGlzLl9yZXN1bHQgPSB7IHN0YXR1cywgZGF0YSB9O1xuXG4gICAgICAgIHRoaXMuYnJvd3NlckNvbm5lY3Rpb25zLmZvckVhY2goYmMgPT4gYmMucmVtb3ZlTGlzdGVuZXIoJ2Vycm9yJywgdGhpcy5fY29ubmVjdGlvbkVycm9yTGlzdGVuZXIpKTtcblxuICAgICAgICBhd2FpdCBQcm9taXNlLmFsbCh0aGlzLmJyb3dzZXJDb25uZWN0aW9ucy5tYXAoYmMgPT4gYmMucmVwb3J0Sm9iUmVzdWx0KCh0aGlzLl9yZXN1bHQgYXMgQnJvd3NlckpvYlJlc3VsdEluZm8pLnN0YXR1cywgKHRoaXMuX3Jlc3VsdCBhcyBCcm93c2VySm9iUmVzdWx0SW5mbykuZGF0YSkpKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9hZGRUb0NvbXBsZXRpb25RdWV1ZSAodGVzdFJ1bkluZm86IFRlc3RSdW5Db250cm9sbGVyKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2NvbXBsZXRpb25RdWV1ZS5wdXNoKHRlc3RSdW5JbmZvKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9yZW1vdmVGcm9tQ29tcGxldGlvblF1ZXVlICh0ZXN0UnVuSW5mbzogVGVzdFJ1bkNvbnRyb2xsZXIpOiB2b2lkIHtcbiAgICAgICAgcmVtb3ZlKHRoaXMuX2NvbXBsZXRpb25RdWV1ZSwgdGVzdFJ1bkluZm8pO1xuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgX29uVGVzdFJ1blJlc3RhcnQgKHRlc3RSdW5Db250cm9sbGVyOiBUZXN0UnVuQ29udHJvbGxlcik6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICB0aGlzLl9yZW1vdmVGcm9tQ29tcGxldGlvblF1ZXVlKHRlc3RSdW5Db250cm9sbGVyKTtcbiAgICAgICAgdGhpcy5fdGVzdFJ1bkNvbnRyb2xsZXJRdWV1ZS51bnNoaWZ0KHRlc3RSdW5Db250cm9sbGVyKTtcblxuICAgICAgICBhd2FpdCB0aGlzLmVtaXQoJ3Rlc3QtcnVuLXJlc3RhcnQnLCB0ZXN0UnVuQ29udHJvbGxlcik7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyBfb25UZXN0UnVuRG9uZSAodGVzdFJ1bkNvbnRyb2xsZXI6IFRlc3RSdW5Db250cm9sbGVyKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHRlc3RSdW5Db250cm9sbGVyLnRlc3RSdW4uZmluaXNoVGltZSA9IG5ldyBEYXRlKCk7XG5cbiAgICAgICAgdGhpcy5fdG90YWwrKztcblxuICAgICAgICBpZiAoIXRlc3RSdW5Db250cm9sbGVyLnRlc3RSdW4uZXJycy5sZW5ndGgpXG4gICAgICAgICAgICB0aGlzLl9wYXNzZWQrKztcblxuICAgICAgICB3aGlsZSAodGhpcy5fY29tcGxldGlvblF1ZXVlLmxlbmd0aCAmJiB0aGlzLl9jb21wbGV0aW9uUXVldWVbMF0uZG9uZSkge1xuICAgICAgICAgICAgdGVzdFJ1bkNvbnRyb2xsZXIgPSB0aGlzLl9jb21wbGV0aW9uUXVldWUuc2hpZnQoKSBhcyBUZXN0UnVuQ29udHJvbGxlcjtcblxuICAgICAgICAgICAgYXdhaXQgdGhpcy5lbWl0KCd0ZXN0LXJ1bi1kb25lJywgdGVzdFJ1bkNvbnRyb2xsZXIudGVzdFJ1bik7XG5cbiAgICAgICAgICAgIHJlbW92ZSh0aGlzLl9yZXBvcnRzUGVuZGluZywgdGVzdFJ1bkNvbnRyb2xsZXIpO1xuXG4gICAgICAgICAgICBpZiAoIXRoaXMuX3JlcG9ydHNQZW5kaW5nLmxlbmd0aCAmJiB0aGlzLl9yZXNvbHZlV2FpdGluZ0xhc3RUZXN0SW5GaXh0dXJlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fcmVzb2x2ZVdhaXRpbmdMYXN0VGVzdEluRml4dHVyZSgpO1xuXG4gICAgICAgICAgICAgICAgdGhpcy5fcmVzb2x2ZVdhaXRpbmdMYXN0VGVzdEluRml4dHVyZSA9IG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXRoaXMuX2NvbXBsZXRpb25RdWV1ZS5sZW5ndGggJiYgIXRoaXMuaGFzUXVldWVkVGVzdFJ1bnMpIHtcbiAgICAgICAgICAgIGlmICghdGhpcy5fb3B0cy5saXZlKVxuICAgICAgICAgICAgICAgIFNlc3Npb25Db250cm9sbGVyLmNsb3NlU2Vzc2lvbih0ZXN0UnVuQ29udHJvbGxlci50ZXN0UnVuKTtcblxuICAgICAgICAgICAgdGhpc1xuICAgICAgICAgICAgICAgIC5fc2V0UmVzdWx0KEJyb3dzZXJKb2JSZXN1bHQuZG9uZSwgeyB0b3RhbDogdGhpcy5fdG90YWwsIHBhc3NlZDogdGhpcy5fcGFzc2VkIH0pXG4gICAgICAgICAgICAgICAgLnRoZW4oKCkgPT4gdGhpcy5lbWl0KCdkb25lJykpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyBfaXNOZXh0VGVzdFJ1bkF2YWlsYWJsZSAodGVzdFJ1bkNvbnRyb2xsZXI6IFRlc3RSdW5Db250cm9sbGVyKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgICAgIC8vIE5PVEU6IGV2ZW50IHRhc2sgc3RhcnQgaXMgY3VycmVudGx5IGV4ZWN1dGluZyxcbiAgICAgICAgLy8gc28gdGVzdCBydW4gaXMgdGVtcG9yYXJ5IGJsb2NrZWRcbiAgICAgICAgaWYgKHRoaXMuX3N0YXR1cyA9PT0gQnJvd3NlckpvYlN0YXR1cy5zdGFydGluZylcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcblxuICAgICAgICAvLyBOT1RFOiBiZWZvcmUgaG9vayBmb3IgdGVzdCBydW4gZml4dHVyZSBpcyBjdXJyZW50bHlcbiAgICAgICAgLy8gZXhlY3V0aW5nLCBzbyB0ZXN0IHJ1biBpcyB0ZW1wb3JhcnkgYmxvY2tlZFxuICAgICAgICBjb25zdCBpc0Jsb2NrZWQgICAgICAgICAgICAgICAgID0gdGVzdFJ1bkNvbnRyb2xsZXIuYmxvY2tlZDtcbiAgICAgICAgY29uc3QgaXNDb25jdXJyZW5jeSAgICAgICAgICAgICA9IHRoaXMuX29wdHMuY29uY3VycmVuY3kgYXMgbnVtYmVyID4gMTtcbiAgICAgICAgY29uc3QgaGFzSW5jb21wbGV0ZVRlc3RSdW5zICAgICA9IHRoaXMuX2NvbXBsZXRpb25RdWV1ZS5zb21lKGNvbnRyb2xsZXIgPT4gIWNvbnRyb2xsZXIuZG9uZSk7XG4gICAgICAgIGNvbnN0IG5lZWRXYWl0TGFzdFRlc3RJbkZpeHR1cmUgPSB0aGlzLl9yZXBvcnRzUGVuZGluZy5zb21lKGNvbnRyb2xsZXIgPT4gY29udHJvbGxlci50ZXN0LmZpeHR1cmUgIT09IHRlc3RSdW5Db250cm9sbGVyLnRlc3QuZml4dHVyZSk7XG5cbiAgICAgICAgaWYgKGlzQmxvY2tlZCB8fCAoaGFzSW5jb21wbGV0ZVRlc3RSdW5zIHx8IG5lZWRXYWl0TGFzdFRlc3RJbkZpeHR1cmUpICYmICFpc0NvbmN1cnJlbmN5KSB7XG4gICAgICAgICAgICBjb25zdCBkaXNhYmxlUGFnZVJlbG9hZHMgPSB0ZXN0UnVuQ29udHJvbGxlci50ZXN0LmRpc2FibGVQYWdlUmVsb2FkcyB8fFxuICAgICAgICAgICAgICAgIHRoaXMuX29wdHMuZGlzYWJsZVBhZ2VSZWxvYWRzICYmIHRlc3RSdW5Db250cm9sbGVyLnRlc3QuZGlzYWJsZVBhZ2VSZWxvYWRzICE9PSBmYWxzZTtcblxuICAgICAgICAgICAgaWYgKCFuZWVkV2FpdExhc3RUZXN0SW5GaXh0dXJlIHx8ICFkaXNhYmxlUGFnZVJlbG9hZHMpXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuXG4gICAgICAgICAgICAvLyBOT1RFOiBpZiB3ZSBoYXZlIGBkaXNhYmxlUGFnZVJlbG9hZHNgIGVuYWJsZWQgYW5kIHRoZSBuZXh0IHRlc3QgaXMgZnJvbSBuZXh0XG4gICAgICAgICAgICAvLyBmaXh0dXJlLCB0aGVuIHdlIG5lZWQgdG8gd2FpdCB1bnRpbCBhbGwgcmVwb3J0ZXJzIGZpbmlzaGVkIHRvIHByZXZlbnRcbiAgICAgICAgICAgIC8vIHJlZGlyZWN0aW5nIHRvIHRoZSBgaWRsZWAgcGFnZVxuICAgICAgICAgICAgYXdhaXQgbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fcmVzb2x2ZVdhaXRpbmdMYXN0VGVzdEluRml4dHVyZSA9IHJlc29sdmU7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHByaXZhdGUgX2dldFRlc3RDb250cm9sbGVyUXVldWUgKGNvbm5lY3Rpb25JZDogc3RyaW5nKTogVGVzdFJ1bkNvbnRyb2xsZXJbXSB7XG4gICAgICAgIGlmICh0aGlzLl9kaXNhYmxlQ29uY3VycmVuY3lRdWV1ZVtjb25uZWN0aW9uSWRdPy5sZW5ndGgpXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fZGlzYWJsZUNvbmN1cnJlbmN5UXVldWVbY29ubmVjdGlvbklkXTtcblxuICAgICAgICByZXR1cm4gdGhpcy5fdGVzdFJ1bkNvbnRyb2xsZXJRdWV1ZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9nZXROZXh0Rml4dHVyZUZpcnN0VGVzdEluZGV4ICggZml4dHVyZUlkOiBzdHJpbmcgKTogbnVtYmVyIHtcbiAgICAgICAgY29uc3QgbmV4dEZpeHR1cmVGaXJzdFRlc3RJbmRleCA9IHRoaXMuX3Rlc3RSdW5Db250cm9sbGVyUXVldWUuZmluZEluZGV4KHRlc3RSdW4gPT4gdGVzdFJ1bi50ZXN0LmZpeHR1cmU/LmlkICE9PSBmaXh0dXJlSWQpO1xuXG4gICAgICAgIHJldHVybiBuZXh0Rml4dHVyZUZpcnN0VGVzdEluZGV4ID09PSAtMSA/IHRoaXMuX3Rlc3RSdW5Db250cm9sbGVyUXVldWUubGVuZ3RoIDogbmV4dEZpeHR1cmVGaXJzdFRlc3RJbmRleDtcbiAgICB9XG5cbiAgICBwcml2YXRlIF91cGRhdGVUZXN0Q29udHJvbGxlclF1ZXVlcyAoeyB0ZXN0IH06IFRlc3RSdW5Db250cm9sbGVyLCBjb25uZWN0aW9uSWQ6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICBpZiAoIXRlc3QuZGlzYWJsZUNvbmN1cnJlbmN5IHx8IHRoaXMuX2Rpc2FibGVDb25jdXJyZW5jeVF1ZXVlW2Nvbm5lY3Rpb25JZF0/Lmxlbmd0aClcbiAgICAgICAgICAgIHJldHVybjtcblxuICAgICAgICB0aGlzLl9kaXNhYmxlQ29uY3VycmVuY3lRdWV1ZVtjb25uZWN0aW9uSWRdID0gdGhpcy5fdGVzdFJ1bkNvbnRyb2xsZXJRdWV1ZS5zcGxpY2UoMCwgdGhpcy5fZ2V0TmV4dEZpeHR1cmVGaXJzdFRlc3RJbmRleCh0ZXN0LmZpeHR1cmU/LmlkIGFzIHN0cmluZykpO1xuICAgIH1cblxuICAgIC8vIEFQSVxuICAgIHB1YmxpYyBnZXQgaGFzUXVldWVkVGVzdFJ1bnMgKCk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAodGhpcy5fdGVzdFJ1bkNvbnRyb2xsZXJRdWV1ZS5sZW5ndGgpXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcblxuICAgICAgICBmb3IgKGNvbnN0IGNvbm5lY3Rpb25JZCBpbiB0aGlzLl9kaXNhYmxlQ29uY3VycmVuY3lRdWV1ZSkge1xuICAgICAgICAgICAgaWYgKHRoaXMuX2Rpc2FibGVDb25jdXJyZW5jeVF1ZXVlW2Nvbm5lY3Rpb25JZF0ubGVuZ3RoKVxuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgY3VycmVudFRlc3RSdW4gKCk6IExlZ2FjeVRlc3RSdW4gfCBUZXN0UnVuIHwgbnVsbCB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jb21wbGV0aW9uUXVldWUubGVuZ3RoID8gdGhpcy5fY29tcGxldGlvblF1ZXVlWzBdLnRlc3RSdW4gOiBudWxsO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBwb3BOZXh0VGVzdFJ1bkluZm8gKGNvbm5lY3Rpb246IEJyb3dzZXJDb25uZWN0aW9uKTogUHJvbWlzZTxOZXh0VGVzdFJ1bkluZm8gfCBudWxsPiB7XG4gICAgICAgIHdoaWxlICh0aGlzLmhhc1F1ZXVlZFRlc3RSdW5zKSB7XG4gICAgICAgICAgICBjb25zdCBjdXJyZW50UXVldWUgICAgICA9IHRoaXMuX2dldFRlc3RDb250cm9sbGVyUXVldWUoY29ubmVjdGlvbi5pZCk7XG4gICAgICAgICAgICBjb25zdCB0ZXN0UnVuQ29udHJvbGxlciA9IGN1cnJlbnRRdWV1ZVswXTtcblxuICAgICAgICAgICAgaWYgKCF0ZXN0UnVuQ29udHJvbGxlcilcbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgY29uc3QgaXNOZXh0VGVzdFJ1bkF2YWlsYWJsZSA9IGF3YWl0IHRoaXMuX2lzTmV4dFRlc3RSdW5BdmFpbGFibGUodGVzdFJ1bkNvbnRyb2xsZXIpO1xuXG4gICAgICAgICAgICBpZiAoIWlzTmV4dFRlc3RSdW5BdmFpbGFibGUpXG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIHRoaXMuX3JlcG9ydHNQZW5kaW5nLnB1c2godGVzdFJ1bkNvbnRyb2xsZXIpO1xuICAgICAgICAgICAgY3VycmVudFF1ZXVlLnNoaWZ0KCk7XG4gICAgICAgICAgICB0aGlzLl91cGRhdGVUZXN0Q29udHJvbGxlclF1ZXVlcyh0ZXN0UnVuQ29udHJvbGxlciwgY29ubmVjdGlvbi5pZCk7XG4gICAgICAgICAgICB0aGlzLl9hZGRUb0NvbXBsZXRpb25RdWV1ZSh0ZXN0UnVuQ29udHJvbGxlcik7XG5cbiAgICAgICAgICAgIGlmICh0aGlzLl9zdGF0dXMgPT09IEJyb3dzZXJKb2JTdGF0dXMuaW5pdGlhbGl6ZWQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9zdGF0dXMgPSBCcm93c2VySm9iU3RhdHVzLnN0YXJ0aW5nO1xuICAgICAgICAgICAgICAgIHRoaXMuX3N0YXJ0VGltZSAgID0gbmV3IERhdGUoKTtcblxuICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuZW1pdCgnc3RhcnQnLCB0aGlzLl9zdGFydFRpbWUpO1xuXG4gICAgICAgICAgICAgICAgdGhpcy5fc3RhdHVzID0gQnJvd3NlckpvYlN0YXR1cy5zdGFydGVkO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCB0ZXN0UnVuVXJsID0gYXdhaXQgdGVzdFJ1bkNvbnRyb2xsZXIuc3RhcnQoY29ubmVjdGlvbiwgdGhpcy5fc3RhcnRUaW1lKTtcblxuICAgICAgICAgICAgaWYgKHRlc3RSdW5VcmwpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICB0ZXN0UnVuSWQ6IHRlc3RSdW5Db250cm9sbGVyLnRlc3RSdW4uaWQsXG4gICAgICAgICAgICAgICAgICAgIHVybDogICAgICAgdGVzdFJ1blVybCxcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcHVibGljIGFib3J0ICgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jbGVhckxpc3RlbmVycygpO1xuICAgICAgICB0aGlzLl9zZXRSZXN1bHQoQnJvd3NlckpvYlJlc3VsdC5hYm9ydGVkKTtcbiAgICAgICAgdGhpcy5icm93c2VyQ29ubmVjdGlvbnMubWFwKGJjID0+IGJjLnJlbW92ZUpvYih0aGlzKSk7XG4gICAgfVxufVxuIl19
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "testcafe",
3
3
  "description": "Automated browser testing for the modern web development stack.",
4
4
  "license": "MIT",
5
- "version": "3.4.0-rc.1",
5
+ "version": "3.4.0-rc.2",
6
6
  "author": {
7
7
  "name": "Developer Express Inc.",
8
8
  "url": "https://www.devexpress.com/"