Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

node-tdd

Package Overview
Dependencies
Maintainers
1
Versions
167
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

node-tdd - npm Package Compare versions

Comparing version 2.11.5 to 2.12.0

lib/modules/request-recorder/util.js

72

lib/modules/request-recorder.js

@@ -9,2 +9,4 @@ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }

const http = require('http');
const path = require('path');

@@ -22,6 +24,11 @@

const {
buildKey,
tryParseJson,
convertHeaders
} = require('./request-recorder/util');
const nockBack = nock.back;
const nockRecorder = nock.recorder;
const buildKey = interceptor => `${interceptor.method} ${interceptor.basePath}${interceptor.uri}`;
module.exports = opts => {

@@ -77,2 +84,32 @@ Joi.assert(opts, Joi.object().keys({

assert(hasCassette === true);
if (anyFlagPresent(['magic', 'record'])) {
expectedCassette.push(async () => {
nockRecorder.rec({
output_objects: true,
dont_print: true,
enable_reqheaders_recording: false
});
await new Promise(resolve => {
const r = http.request(req, response => {
response.on('data', () => {});
response.on('end', resolve);
});
r.write(body);
r.end();
});
const recorded = nockRecorder.play();
nockRecorder.clear();
return recorded.map(record => Object.assign(record, {
headers: opts.stripHeaders === true ? undefined : convertHeaders(record.rawHeaders),
rawHeaders: undefined
}));
});
}
if (!anyFlagPresent(['magic', 'prune'])) {
expectedCassette.push(...pendingMocks.map(({
record
}) => record));
}
});

@@ -86,10 +123,3 @@ nockDone = await new Promise(resolve => nockBack(cassetteFile, {

const idx = pendingMocks.findIndex(m => m.idx === scopeIdx);
let requestBody = body;
try {
requestBody = JSON.parse(requestBody);
} catch (e) {
/* */
}
const requestBody = tryParseJson(body);
pendingMocks[idx].record.body = requestBody === null ? 'null' : requestBody;

@@ -120,11 +150,4 @@ return scope.body;

if (anyFlagPresent(['magic', 'response'])) {
let responseBody = [healSqsSendMessageBatch].reduce((respBody, fn) => fn(requestBodyString, respBody, scope), interceptor.body);
const responseBody = tryParseJson([healSqsSendMessageBatch].reduce((respBody, fn) => fn(requestBodyString, respBody, scope), interceptor.body)); // eslint-disable-next-line no-param-reassign
try {
responseBody = JSON.parse(responseBody);
} catch (e) {}
/* */
// eslint-disable-next-line no-param-reassign
interceptor.body = responseBody;

@@ -151,4 +174,13 @@ pendingMocks[idx].record.response = responseBody;

},
release: () => {
release: async () => {
assert(nockDone !== null);
for (let idx = 0; idx < expectedCassette.length; idx += 1) {
if (typeof expectedCassette[idx] === 'function') {
// eslint-disable-next-line no-await-in-loop
expectedCassette.splice(idx, 1, ...(await expectedCassette[idx]()));
idx -= 1;
}
}
nockDone();

@@ -190,2 +222,2 @@ nockDone = null;

};
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9tb2R1bGVzL3JlcXVlc3QtcmVjb3JkZXIuanMiXSwibmFtZXMiOlsiYXNzZXJ0IiwicmVxdWlyZSIsInBhdGgiLCJmcyIsIkpvaSIsIm5vY2siLCJub2NrTGlzdGVuZXIiLCJoZWFsU3FzU2VuZE1lc3NhZ2VCYXRjaCIsIm5vY2tCYWNrIiwiYmFjayIsImJ1aWxkS2V5IiwiaW50ZXJjZXB0b3IiLCJtZXRob2QiLCJiYXNlUGF0aCIsInVyaSIsIm1vZHVsZSIsImV4cG9ydHMiLCJvcHRzIiwib2JqZWN0Iiwia2V5cyIsImNhc3NldHRlRm9sZGVyIiwic3RyaW5nIiwic3RyaXBIZWFkZXJzIiwiYm9vbGVhbiIsInN0cmljdCIsImhlYWwiLCJhbHRlcm5hdGl2ZXMiLCJub2NrRG9uZSIsImNhc3NldHRlRmlsZVBhdGgiLCJrbm93bkNhc3NldHRlTmFtZXMiLCJyZWNvcmRzIiwib3V0T2ZPcmRlckVycm9ycyIsImV4cGVjdGVkQ2Fzc2V0dGUiLCJwZW5kaW5nTW9ja3MiLCJhbnlGbGFnUHJlc2VudCIsImZsYWdzIiwiQXJyYXkiLCJpc0FycmF5IiwibGVuZ3RoIiwibmVlZGxlRmxhZ3MiLCJzcGxpdCIsInNvbWUiLCJmbGFnIiwiaW5jbHVkZXMiLCJpbmplY3QiLCJjYXNzZXR0ZUZpbGUiLCJwdXNoIiwiam9pbiIsImhhc0Nhc3NldHRlIiwiZXhpc3RzU3luYyIsImNhc3NldHRlQ29udGVudCIsInNtYXJ0UmVhZCIsImRlZmluZSIsIm1hcCIsImUiLCJpZHgiLCJrZXkiLCJpbnRlcmNlcHRvcnMiLCJyZWNvcmQiLCJzZXRNb2RlIiwiZml4dHVyZXMiLCJzdWJzY3JpYmUiLCJfIiwicmVxIiwiYm9keSIsIlByb21pc2UiLCJyZXNvbHZlIiwiYmVmb3JlIiwic2NvcGUiLCJzY29wZUlkeCIsImZpbHRlcmluZ1JlcXVlc3RCb2R5IiwiZmluZEluZGV4IiwibSIsInJlcXVlc3RCb2R5IiwiSlNPTiIsInBhcnNlIiwiZmlsdGVyaW5nUGF0aCIsInJlcXVlc3RQYXRoIiwiYWZ0ZXIiLCJvbiIsInJlcXVlc3RCb2R5U3RyaW5nIiwicmVzcG9uc2VCb2R5IiwicmVkdWNlIiwicmVzcEJvZHkiLCJmbiIsInJlc3BvbnNlIiwic3BsaWNlIiwiYWZ0ZXJSZWNvcmQiLCJyZWNvcmRpbmdzIiwic3RyaW5naWZ5IiwiciIsInJlcyIsInJhd0hlYWRlcnMiLCJyZWxlYXNlIiwidW5zdWJzY3JpYmVBbGwiLCJzbWFydFdyaXRlIiwia2VlcE9yZGVyIiwiRXJyb3IiLCJzaHV0ZG93biIsInVuZXhwZWN0ZWRGaWxlcyIsIndhbGtEaXIiLCJmaWx0ZXIiLCJmIiwiZ2V0Iiwic2xpY2UiLCJ1bm1hdGNoZWRSZWNvcmRpbmdzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxNQUFNQSxNQUFNLEdBQUdDLE9BQU8sQ0FBQyxRQUFELENBQXRCOztBQUNBLE1BQU1DLElBQUksR0FBR0QsT0FBTyxDQUFDLE1BQUQsQ0FBcEI7O0FBQ0EsTUFBTUUsRUFBRSxHQUFHRixPQUFPLENBQUMsVUFBRCxDQUFsQjs7QUFDQSxNQUFNRyxHQUFHLEdBQUdILE9BQU8sQ0FBQyxZQUFELENBQW5COztBQUNBLE1BQU1JLElBQUksR0FBR0osT0FBTyxDQUFDLE1BQUQsQ0FBcEI7O0FBQ0EsTUFBTUssWUFBWSxHQUFHTCxPQUFPLENBQUMsa0NBQUQsQ0FBNUI7O0FBQ0EsTUFBTU0sdUJBQXVCLEdBQUdOLE9BQU8sQ0FBQyxnREFBRCxDQUF2Qzs7QUFFQSxNQUFNTyxRQUFRLEdBQUdILElBQUksQ0FBQ0ksSUFBdEI7O0FBRUEsTUFBTUMsUUFBUSxHQUFJQyxXQUFELElBQWtCLEdBQUVBLFdBQVcsQ0FBQ0MsTUFBTyxJQUFHRCxXQUFXLENBQUNFLFFBQVMsR0FBRUYsV0FBVyxDQUFDRyxHQUFJLEVBQWxHOztBQUVBQyxNQUFNLENBQUNDLE9BQVAsR0FBa0JDLElBQUQsSUFBVTtBQUN6QmIsRUFBQUEsR0FBRyxDQUFDSixNQUFKLENBQVdpQixJQUFYLEVBQWlCYixHQUFHLENBQUNjLE1BQUosR0FBYUMs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LEVBQUUsT0FBTztBQUNWekUsTUFBQUEsT0FBTyxFQUFFQSxPQUFPLENBQUMwRSxLQUFSLEVBREM7QUFFVnpFLE1BQUFBLGdCQUFnQixFQUFFQSxnQkFBZ0IsQ0FBQ3lFLEtBQWpCLEVBRlI7QUFHVkMsTUFBQUEsbUJBQW1CLEVBQUV4RSxZQUFZLENBQUNvQixHQUFiLENBQWtCQyxDQUFELElBQU9BLENBQUMsQ0FBQ0UsR0FBMUIsRUFBK0JnRCxLQUEvQixFQUhYO0FBSVZ4RSxNQUFBQSxnQkFBZ0IsRUFBRUEsZ0JBQWdCLENBQUN3RSxLQUFqQixFQUpSO0FBS1Y1RSxNQUFBQTtBQUxVLEtBQVA7QUFySEMsR0FBUjtBQTZIRCxDQXJKRCIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IGFzc2VydCA9IHJlcXVpcmUoJ2Fzc2VydCcpO1xuY29uc3QgcGF0aCA9IHJlcXVpcmUoJ3BhdGgnKTtcbmNvbnN0IGZzID0gcmVxdWlyZSgnc21hcnQtZnMnKTtcbmNvbnN0IEpvaSA9IHJlcXVpcmUoJ2pvaS1zdHJpY3QnKTtcbmNvbnN0IG5vY2sgPSByZXF1aXJlKCdub2NrJyk7XG5jb25zdCBub2NrTGlzdGVuZXIgPSByZXF1aXJlKCcuL3JlcXVlc3QtcmVjb3JkZXIvbm9jay1saXN0ZW5lcicpO1xuY29uc3QgaGVhbFNxc1NlbmRNZXNzYWdlQmF0Y2ggPSByZXF1aXJlKCcuL3JlcXVlc3QtcmVjb3JkZXIvaGVhbC1zcXMtc2VuZC1tZXNzYWdlLWJhdGNoJyk7XG5cbmNvbnN0IG5vY2tCYWNrID0gbm9jay5iYWNrO1xuXG5jb25zdCBidWlsZEtleSA9IChpbnRlcmNlcHRvcikgPT4gYCR7aW50ZXJjZXB0b3IubWV0aG9kfSAke2ludGVyY2VwdG9yLmJhc2VQYXRofSR7aW50ZXJjZXB0b3IudXJpfWA7XG5cbm1vZHVsZS5leHBvcnRzID0gKG9wdHMpID0+IHtcbiAgSm9pLmFzc2VydChvcHRzLCBKb2kub2JqZWN0KCkua2V5cyh7XG4gICAgY2Fzc2V0dGVGb2xkZXI6IEpvaS5zdHJpbmcoKSxcbiAgICBzdHJpcEhlYWRlcnM6IEpvaS5ib29sZWFuKCksXG4gICAgc3RyaWN0OiBKb2kuYm9vbGVhbigpLFxuICAgIGhlYWw6IEpvaS5hbHRlcm5hdGl2ZXMoSm9pLmJvb2xlYW4oKSwgSm9pLnN0cmluZygpKVxuICB9KSwgJ0ludmFsaWQgT3B0aW9ucyBQcm92aWRlZCcpO1xuICBsZXQgbm9ja0RvbmUgPSBudWxsO1xuICBsZXQgY2Fzc2V0dGVGaWxlUGF0aCA9IG51bGw7XG4gIGNvbnN0IGtub3duQ2Fzc2V0dGVOYW1lcyA9IFtdO1xuICBjb25zdCByZWNvcmRzID0gW107XG4gIGNvbnN0IG91dE9mT3JkZXJFcnJvcnMgPSBbXTtcbiAgY29uc3QgZXhwZWN0ZWRDYXNzZXR0ZSA9IFtdO1xuICBjb25zdCBwZW5kaW5nTW9ja3MgPSBbXTtcblxuICBjb25zdCBhbnlGbGFnUHJlc2VudCA9IChmbGFncykgPT4ge1xuICAgIGFzc2VydChBcnJheS5pc0FycmF5KGZsYWdzKSAmJiBmbGFncy5sZW5ndGggIT09IDApO1xuICAgIGlmICh0eXBlb2Ygb3B0cy5oZWFsICE9PSAnc3RyaW5nJykge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBjb25zdCBuZWVkbGVGbGFncyA9IG9wdHMuaGVhbC5zcGxpdCgnLCcpO1xuICAgIHJldHVybiBmbGFncy5zb21lKChmbGFnKSA9PiBuZWVkbGVGbGFncy5pbmNsdWRlcyhmbGFnKSk7XG4gIH07XG5cbiAgcmV0dXJuICh7XG4gICAgaW5qZWN0OiBhc3luYyAoY2Fzc2V0dGVGaWxlKSA9PiB7XG4gICAgICBhc3NlcnQobm9ja0RvbmUgPT09IG51bGwpO1xuICAgICAga25vd25DYXNzZXR0ZU5hbWVzLnB1c2goY2Fzc2V0dGVGaWxlKTtcbiAgICAgIHJlY29yZHMubGVuZ3RoID0gMDtcbiAgICAgIG91dE9mT3JkZXJFcnJvcnMubGVuZ3RoID0gMDtcbiAgICAgIGV4cGVjdGVkQ2Fzc2V0dGUubGVuZ3RoID0gMDtcbiAgICAgIHBlbmRpbmdNb2Nrcy5sZW5ndGggPSAwO1xuXG4gICAgICBjYXNzZXR0ZUZpbGVQYXRoID0gcGF0aC5qb2luKG9wdHMuY2Fzc2V0dGVGb2xkZXIsIGNhc3NldHRlRmlsZSk7XG4gICAgICBjb25zdCBoYXNDYXNzZXR0ZSA9IGZzLmV4aXN0c1N5bmMoY2Fzc2V0dGVGaWxlUGF0aCk7XG4gICAgICBpZiAoaGFzQ2Fzc2V0dGUpIHtcbiAgICAgICAgY29uc3QgY2Fzc2V0dGVDb250ZW50ID0gZnMuc21hcnRSZWFkKGNhc3NldHRlRmlsZVBhdGgpO1xuICAgICAgICBwZW5kaW5nTW9ja3MucHVzaCguLi5ub2NrXG4gICAgICAgICAgLmRlZmluZShjYXNzZXR0ZUNvbnRlbnQpXG4gICAgICAgICAgLm1hcCgoZSwgaWR4KSA9PiAoe1xuICAgICAgICAgICAgaWR4LFxuICAgICAgICAgICAga2V5OiBidWlsZEtleShlLmludGVyY2VwdG9yc1swXSksXG4gICAgICAgICAgICByZWNvcmQ6IGNhc3NldHRlQ29udGVudFtpZHhdXG4gICAgICAgICAgfSkpKTtcbiAgICAgIH1cblxuICAgICAgbm9ja0JhY2suc2V0TW9kZShoYXNDYXNzZXR0ZSA/ICdsb2NrZG93bicgOiAncmVjb3JkJyk7XG4gICAgICBub2NrQmFjay5maXh0dXJlcyA9IG9wdHMuY2Fzc2V0dGVGb2xkZXI7XG4gICAgICBub2NrTGlzdGVuZXIuc3Vic2NyaWJlKCdubyBtYXRjaCcsIChfLCByZXEsIGJvZHkpID0+IHtcbiAgICAgICAgYXNzZXJ0KGhhc0Nhc3NldHRlID09PSB0cnVlKTtcbiAgICAgIH0pO1xuICAgICAgbm9ja0RvbmUgPSBhd2FpdCBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4gbm9ja0JhY2soY2Fzc2V0dGVGaWxlLCB7XG4gICAgICAgIGJlZm9yZTogKHNjb3BlLCBzY29wZUlkeCkgPT4ge1xuICAgICAgICAgIHJlY29yZHMucHVzaCh7IC4uLnNjb3BlIH0pO1xuICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wYXJhbS1yZWFzc2lnblxuICAgICAgICAgIHNjb3BlLmZpbHRlcmluZ1JlcXVlc3RCb2R5ID0gKGJvZHkpID0+IHtcbiAgICAgICAgICAgIGlmIChhbnlGbGFnUHJlc2VudChbJ21hZ2ljJywgJ2JvZHknXSkpIHtcbiAgICAgICAgICAgICAgY29uc3QgaWR4ID0gcGVuZGluZ01vY2tzLmZpbmRJbmRleCgobSkgPT4gbS5pZHggPT09IHNjb3BlSWR4KTtcbiAgICAgICAgICAgICAgbGV0IHJlcXVlc3RCb2R5ID0gYm9keTtcbiAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICByZXF1ZXN0Qm9keSA9IEpTT04ucGFyc2UocmVxdWVzdEJvZHkpO1xuICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICAgLyogKi9cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBwZW5kaW5nTW9ja3NbaWR4XS5yZWNvcmQuYm9keSA9IHJlcXVlc3RCb2R5ID09PSBudWxsID8gJ251bGwnIDogcmVxdWVzdEJvZHk7XG4gICAgICAgICAgICAgIHJldHVybiBzY29wZS5ib2R5O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGJvZHk7XG4gICAgICAgICAgfTtcbiAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcGFyYW0tcmVhc3NpZ25cbiAgICAgICAgICBzY29wZS5maWx0ZXJpbmdQYXRoID0gKHJlcXVlc3RQYXRoKSA9PiB7XG4gICAgICAgICAgICBpZiAoYW55RmxhZ1ByZXNlbnQoWydtYWdpYycsICdwYXRoJ10pKSB7XG4gICAgICAgICAgICAgIGNvbnN0IGlkeCA9IHBlbmRpbmdNb2Nrcy5maW5kSW5kZXgoKG0pID0+IG0uaWR4ID09PSBzY29wZUlkeCk7XG4gICAgICAgICAgICAgIHBlbmRpbmdNb2Nrc1tpZHhdLnJlY29yZC5wYXRoID0gcmVxdWVzdFBhdGg7XG4gICAgICAgICAgICAgIHJldHVybiBzY29wZS5wYXRoO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHJlcXVlc3RQYXRoO1xuICAgICAgICAgIH07XG4gICAgICAgICAgcmV0dXJuIHNjb3BlO1xuICAgICAgICB9LFxuICAgICAgICBhZnRlcjogKHNjb3BlLCBzY29wZUlkeCkgPT4ge1xuICAgICAgICAgIHNjb3BlLm9uKCdyZXF1ZXN0JywgKHJlcSwgaW50ZXJjZXB0b3IsIHJlcXVlc3RCb2R5U3RyaW5nKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBpZHggPSBwZW5kaW5nTW9ja3MuZmluZEluZGV4KChlKSA9PiBlLmlkeCA9PT0gc2NvcGVJZHgpO1xuXG4gICAgICAgICAgICBpZiAoYW55RmxhZ1ByZXNlbnQoWydtYWdpYycsICdyZXNwb25zZSddKSkge1xuICAgICAgICAgICAgICBsZXQgcmVzcG9uc2VCb2R5ID0gW1xuICAgICAgICAgICAgICAgIGhlYWxTcXNTZW5kTWVzc2FnZUJhdGNoXG4gICAgICAgICAgICAgIF0ucmVkdWNlKFxuICAgICAgICAgICAgICAgIChyZXNwQm9keSwgZm4pID0+IGZuKHJlcXVlc3RCb2R5U3RyaW5nLCByZXNwQm9keSwgc2NvcGUpLFxuICAgICAgICAgICAgICAgIGludGVyY2VwdG9yLmJvZHlcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICByZXNwb25zZUJvZHkgPSBKU09OLnBhcnNlKHJlc3BvbnNlQm9keSk7XG4gICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICAvKiAqL1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wYXJhbS1yZWFzc2lnblxuICAgICAgICAgICAgICBpbnRlcmNlcHRvci5ib2R5ID0gcmVzcG9uc2VCb2R5O1xuICAgICAgICAgICAgICBwZW5kaW5nTW9ja3NbaWR4XS5yZWNvcmQucmVzcG9uc2UgPSByZXNwb25zZUJvZHk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGV4cGVjdGVkQ2Fzc2V0dGUucHVzaChwZW5kaW5nTW9ja3NbaWR4XS5yZWNvcmQpO1xuICAgICAgICAgICAgaWYgKGlkeCAhPT0gMCkge1xuICAgICAgICAgICAgICBvdXRPZk9yZGVyRXJyb3JzLnB1c2gocGVuZGluZ01vY2tzW2lkeF0ua2V5KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHBlbmRpbmdNb2Nrcy5zcGxpY2UoaWR4LCAxKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSxcbiAgICAgICAgYWZ0ZXJSZWNvcmQ6IChyZWNvcmRpbmdzKSA9PiBKU09OXG4gICAgICAgICAgLnN0cmluZ2lmeShvcHRzLnN0cmlwSGVhZGVycyA9PT0gdHJ1ZSA/IHJlY29yZGluZ3MubWFwKChyKSA9PiB7XG4gICAgICAgICAgICBjb25zdCByZXMgPSB7IC4uLnIgfTtcbiAgICAgICAgICAgIGRlbGV0ZSByZXMucmF3SGVhZGVycztcbiAgICAgICAgICAgIHJldHVybiByZXM7XG4gICAgICAgICAgfSkgOiByZWNvcmRpbmdzLCBudWxsLCAyKVxuICAgICAgfSwgcmVzb2x2ZSkpO1xuICAgIH0sXG4gICAgcmVsZWFzZTogKCkgPT4ge1xuICAgICAgYXNzZXJ0KG5vY2tEb25lICE9PSBudWxsKTtcbiAgICAgIG5vY2tEb25lKCk7XG4gICAgICBub2NrRG9uZSA9IG51bGw7XG4gICAgICBub2NrTGlzdGVuZXIudW5zdWJzY3JpYmVBbGwoJ25vIG1hdGNoJyk7XG4gICAgICBpZiAob3B0cy5oZWFsICE9PSBmYWxzZSkge1xuICAgICAgICBmcy5zbWFydFdyaXRlKGNhc3NldHRlRmlsZVBhdGgsIGV4cGVjdGVkQ2Fzc2V0dGUsIHtcbiAgICAgICAgICBrZWVwT3JkZXI6IG91dE9mT3JkZXJFcnJvcnMubGVuZ3RoID09PSAwICYmIHBlbmRpbmdNb2Nrcy5sZW5ndGggPT09IDBcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICBpZiAob3B0cy5zdHJpY3QgIT09IGZhbHNlKSB7XG4gICAgICAgIGlmIChvdXRPZk9yZGVyRXJyb3JzLmxlbmd0aCAhPT0gMCkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgT3V0IG9mIE9yZGVyIFJlY29yZGluZ3M6ICR7b3V0T2ZPcmRlckVycm9ycy5qb2luKCcsICcpfWApO1xuICAgICAgICB9XG4gICAgICAgIGlmIChwZW5kaW5nTW9ja3MubGVuZ3RoICE9PSAwKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbm1hdGNoZWQgUmVjb3JkaW5nczogJHtwZW5kaW5nTW9ja3MubWFwKChlKSA9PiBlLmtleSkuam9pbignLCAnKX1gKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAgc2h1dGRvd246ICgpID0+IHtcbiAgICAgIGNvbnN0IHVuZXhwZWN0ZWRGaWxlcyA9IGZzLndhbGtEaXIob3B0cy5jYXNzZXR0ZUZvbGRlcikuZmlsdGVyKChmKSA9PiAha25vd25DYXNzZXR0ZU5hbWVzLmluY2x1ZGVzKGYpKTtcbiAgICAgIGlmICh1bmV4cGVjdGVkRmlsZXMubGVuZ3RoICE9PSAwKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5leHBlY3RlZCBmaWxlKHMpIGluIGNhc3NldHRlIGZvbGRlcjogJHt1bmV4cGVjdGVkRmlsZXMuam9pbignLCAnKX1gKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIGdldDogKCkgPT4gKHtcbiAgICAgIHJlY29yZHM6IHJlY29yZHMuc2xpY2UoKSxcbiAgICAgIG91dE9mT3JkZXJFcnJvcnM6IG91dE9mT3JkZXJFcnJvcnMuc2xpY2UoKSxcbiAgICAgIHVubWF0Y2hlZFJlY29yZGluZ3M6IHBlbmRpbmdNb2Nrcy5tYXAoKGUpID0+IGUua2V5KS5zbGljZSgpLFxuICAgICAgZXhwZWN0ZWRDYXNzZXR0ZTogZXhwZWN0ZWRDYXNzZXR0ZS5zbGljZSgpLFxuICAgICAgY2Fzc2V0dGVGaWxlUGF0aFxuICAgIH0pXG4gIH0pO1xufTtcbiJdfQ==
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9tb2R1bGVzL3JlcXVlc3QtcmVjb3JkZXIuanMiXSwibmFtZXMiOlsiYXNzZXJ0IiwicmVxdWlyZSIsImh0dHAiLCJwYXRoIiwiZnMiLCJKb2kiLCJub2NrIiwibm9ja0xpc3RlbmVyIiwiaGVhbFNxc1NlbmRNZXNzYWdlQmF0Y2giLCJidWlsZEtleSIsInRyeVBhcnNlSnNvbiIsImNvbnZlcnRIZWFkZXJzIiwibm9ja0JhY2siLCJiYWNrIiwibm9ja1JlY29yZGVyIiwicmVjb3JkZXIiLCJtb2R1bGUiLCJleHBvcnRzIiwib3B0cyIsIm9iamVjdCIsImtleXMiLCJjYXNzZXR0ZUZvbGRlciIsInN0cmluZyIsInN0cmlwSGVhZGVycyIsImJvb2xlYW4iLCJzdHJpY3QiLCJoZWFsIiwiYWx0ZXJuYXRpdmVzIiwibm9ja0RvbmUiLCJjYXNzZXR0ZUZpbGVQYXRoIiwia25vd25DYXNzZXR0ZU5hbWVzIiwicmVjb3JkcyIsIm91dE9mT3JkZXJFcnJvcnMiLCJleHBlY3RlZENhc3NldHRlIiwicGVuZGluZ01vY2tzIiwiYW55RmxhZ1ByZXNlbnQiLCJmbGFncyIsIkFycmF5IiwiaXNBcnJheSIsImxlbmd0aCIsIm5lZWRsZUZsYWdzIiwic3BsaXQiLCJzb21lIiwiZmxhZyIsImluY2x1ZGVzIiwiaW5qZWN0IiwiY2Fzc2V0dGVGaWxlIiwicHVzaCIsImpvaW4iLCJoYXNDYXNzZXR0ZSIsImV4aXN0c1N5bmMiLCJjYXNzZXR0ZUNvbnRlbnQiLCJzbWFydFJlYWQiLCJkZWZpbmUiLCJtYXAiLCJlIiwiaWR4Iiwia2V5IiwiaW50ZXJjZXB0b3JzIiwicmVjb3JkIiwic2V0TW9kZSIsImZpeHR1cmVzIiwic3Vic2NyaWJlIiwiXyIsInJlcSIsImJvZHkiLCJyZWMiLCJvdXRwdXRfb2JqZWN0cyIsImRvbnRfcHJpbnQiLCJlbmFibGVfcmVxaGVhZGVyc19yZWNvcmRpbmciLCJQcm9taXNlIiwicmVzb2x2ZSIsInIiLCJyZXF1ZXN0IiwicmVzcG9uc2UiLCJvbiIsIndyaXRlIiwiZW5kIiwicmVjb3JkZWQiLCJwbGF5IiwiY2xlYXIiLCJPYmplY3QiLCJhc3NpZ24iLCJoZWFkZXJzIiwidW5kZWZpbmVkIiwicmF3SGVhZGVycyIsImJlZm9yZSIsInNjb3BlIiwic2NvcGVJZHgiLCJmaWx0ZXJpbmdSZXF1ZXN0Qm9keSIsImZpbmRJbmRleCIsIm0iLCJyZXF1ZXN0Qm9keSIsImZpbHRlcmluZ1BhdGgiLCJyZXF1ZXN0UGF0aCIsImFmdGVyIiwiaW50ZXJjZXB0b3IiLCJyZXF1ZXN0Qm9keVN0cmluZyIsInJlc3BvbnNlQm9keSIsInJlZHVjZSIsInJlc3BCb2R5IiwiZm4iLCJzcGxpY2UiLCJhZnRlclJlY29yZCIsInJlY29yZGluZ3MiLCJKU09OIiwic3RyaW5naWZ5IiwicmVzIiwicmVsZWFzZSIsInVuc3Vic2NyaWJlQWxsIiwic21hcnRXcml0ZSIsImtlZXBPcmRlciIsIkVycm9yIiwic2h1dGRvd24iLCJ1bmV4cGVjdGVkRmlsZXMiLCJ3YWxrRGlyIiwiZmlsdGVyIiwiZiIsImdldCIsInNsaWNlIiwidW5tYXRjaGVkUmVjb3JkaW5ncyJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsTUFBTUEsTUFBTSxHQUFHQyxPQUFPLENBQUMsUUFBRCxDQUF0Qjs7QUFDQSxNQUFNQyxJQUFJLEdBQUdELE9BQU8sQ0FBQyxNQUFELENBQXBCOztBQUNBLE1BQU1FLElBQUksR0FBR0YsT0FBTyxDQUFDLE1BQUQsQ0FBcEI7O0FBQ0EsTUFBTUcsRUFBRSxHQUFHSCxPQUFPLENBQUMsVUFBRCxDQUFsQjs7QUFDQSxNQUFNSSxHQUFHLEdBQUdKLE9BQU8sQ0FBQyxZQUFELENBQW5COztBQUNBLE1BQU1LLElBQUksR0FBR0wsT0FBTyxDQUFDLE1BQUQsQ0FBcEI7O0FBQ0EsTUFBTU0sWUFBWSxHQUFHTixPQUFPLENBQUMsa0NBQUQsQ0FBNUI7O0FBQ0EsTUFBTU8sdUJBQXVCLEdBQUdQLE9BQU8sQ0FBQyxnREFBRCxDQUF2Qzs7QUFDQSxNQUFNO0FBQUVRLEVBQUFBLFFBQUY7QUFBWUMsRUFBQUEsWUFBWjtBQUEwQkMsRUFBQUE7QUFBMUIsSUFBNkNWLE9BQU8sQ0FBQyx5QkFBRCxDQUExRDs7QUFFQSxNQUFNVyxRQUFRLEdBQUdOLElBQUksQ0FBQ08sSUFBdEI7QUFDQSxNQUFNQyxZQUFZLEdBQUdSLElBQUksQ0FBQ1MsUUFBMUI7O0FBRUFDLE1BQU0sQ0FBQ0MsT0FBUCxHQUFrQkMsSUFBRCxJQUFVO0FBQ3pCYixFQUFBQSxHQUFHLENBQUNMLE1BQUosQ0FBV2tCLElBQVgsRUFBaUJiLEdBQUcsQ0FBQ2MsTUFBSixHQUFhQyxJQUFiLENBQWtCO0FBQ2pDQyxJQUFBQSxjQUFjLEVBQUVoQixHQUFHLENBQUNpQixNQUFKLEVBRGlCO0FBRWpDQyxJQUFBQSxZQUFZLEVBQUVsQixHQUFHLENBQUNtQixPQUFKLEVBRm1CO0FBR2pDQyxJQUFBQSxNQUFNLEVBQUVwQixHQUFHLENBQUNtQixPQUFKLEVBSHlCO0FBSWpDRSxJQUFBQSxJQUFJLEVBQUVyQixHQUFHLENBQUNzQixZQUFKLENBQWlCdEIsR0FBRyxDQUFDbUIsT0FBSixFQUFqQixFQUFnQ25CLEdBQUcsQ0FBQ2lCLE1BQUosRUFBaEM7QUFKMkIsR0FBbEIsQ0FBakIsRUFLSSwwQkFMSjtBQU1BLE1BQUlNLFFBQVEsR0FBRyxJQUFmO0FBQ0EsTUFBSUMsZ0JBQWdCLEdBQUcsSUFBdkI7QUFDQSxRQUFNQyxrQkFBa0IsR0FBRyxFQUEzQjtBQUNBLFFBQU1DLE9BQU8sR0FBRyxFQUFoQjtBQUNBLFFBQU1DLGdCQUFnQixHQUFHLEVBQXpCO0FBQ0EsUUFBTUMsZ0JBQWdCLEdBQUcsRUFBekI7QUFDQSxRQUFNQyxZQUFZLEdBQUcsRUFBckI7O0FBRUEsUUFBTUMsY0FBYyxHQUFJQyxLQUFELElBQVc7QUFDaENwQyxJQUFBQSxNQUFNLENBQUNxQyxLQUFLLENBQUNDLE9BQU4sQ0FBY0YsS0FBZCxLQUF3QkEsS0FBSyxDQUFDRyxNQUFOLEtBQWlCLENBQTFDLENBQU47O0FBQ0EsUUFBSSxPQUFPckIsSUFBSSxDQUFDUSxJQUFaLEtBQXFCLFFBQXpCLEVBQW1DO0FBQ2pDLGFBQU8sS0FBUDtBQUNEOztBQUNELFVBQU1jLFdBQVcsR0FBR3RCLElBQUksQ0FBQ1EsSUFBTCxDQUFVZSxLQUFWLENBQWdCLEdBQWhCLENBQXBCO0FBQ0EsV0FBT0wsS0FBSyxDQUFDTSxJQUFOLENBQVlDLElBQUQsSUFBVUgsV0FBVyxDQUFDSSxRQUFaLENBQXFCRCxJQUFyQixDQUFyQixDQUFQO0FBQ0QsR0FQRDs7QUFTQSxTQUFRO0FBQ05FLElBQUFBLE1BQU0sRUFBRSxNQUFPQyxZQUFQLElBQXdCO0FBQzlCOUMsTUFBQUEsTUFBTSxDQUFDNEIsUUFBUSxLQUFLLElBQWQsQ0FBTjtBQUNBRSxNQUFBQSxrQkFBa0IsQ0FBQ2lCLElBQW5CLENBQXdCRCxZQUF4QjtBQUNBZixNQUFBQSxPQUFPLENBQUNRLE1BQVIsR0FBaUIsQ0FBakI7QUFDQVAsTUFBQUEsZ0JBQWdCLENBQUNPLE1BQWpCLEdBQTBCLENBQTFCO0FBQ0FOLE1BQUFBLGdCQUFnQixDQUFDTSxNQUFqQixHQUEwQixDQUExQjtBQUNBTCxNQUFBQSxZQUFZLENBQUNLLE1BQWIsR0FBc0IsQ0FBdEI7QUFFQVYsTUFBQUEsZ0JBQWdCLEdBQUcxQixJQUFJLENBQUM2QyxJQUFMLENBQVU5QixJQUFJLENBQUNHLGNBQWYsRUFBK0J5QixZQUEvQixDQUFuQjtBQUNBLFlBQU1HLFdBQVcsR0FBRzdDLEVBQUUsQ0FBQzhDLFVBQUgsQ0FBY3JCLGdCQUFkLENBQXBCOztBQUNBLFVBQUlvQixXQUFKLEVBQWlCO0FBQ2YsY0FBTUUsZUFBZSxHQUFHL0MsRUFBRSxDQUFDZ0QsU0FBSCxDQUFhdkIsZ0JBQWIsQ0FBeEI7QUFDQUssUUFBQUEsWUFBWSxDQUFDYSxJQUFiLENBQWtCLEdBQUd6QyxJQUFJLENBQ3RCK0MsTUFEa0IsQ0FDWEYsZUFEVyxFQUVsQkcsR0FGa0IsQ0FFZCxDQUFDQyxDQUFELEVBQUlDLEdBQUosTUFBYTtBQUNoQkEsVUFBQUEsR0FEZ0I7QUFFaEJDLFVBQUFBLEdBQUcsRUFBRWhELFFBQVEsQ0FBQzhDLENBQUMsQ0FBQ0csWUFBRixDQUFlLENBQWYsQ0FBRCxDQUZHO0FBR2hCQyxVQUFBQSxNQUFNLEVBQUVSLGVBQWUsQ0FBQ0ssR0FBRDtBQUhQLFNBQWIsQ0FGYyxDQUFyQjtBQU9EOztBQUVENUMsTUFBQUEsUUFBUSxDQUFDZ0QsT0FBVCxDQUFpQlgsV0FBVyxHQUFHLFVBQUgsR0FBZ0IsUUFBNUM7QUFDQXJDLE1BQUFBLFFBQVEsQ0FBQ2lELFFBQVQsR0FBb0IzQyxJQUFJLENBQUNHLGNBQXpCO0FBQ0FkLE1BQUFBLFlBQVksQ0FBQ3VELFNBQWIsQ0FBdUIsVUFBdkIsRUFBbUMsQ0FBQ0MsQ0FBRCxFQUFJQyxHQUFKLEVBQVNDLElBQVQsS0FBa0I7QUFDbkRqRSxRQUFBQSxNQUFNLENBQUNpRCxXQUFXLEtBQUssSUFBakIsQ0FBTjs7QUFDQSxZQUFJZCxjQUFjLENBQUMsQ0FBQyxPQUFELEVBQVUsUUFBVixDQUFELENBQWxCLEVBQXlDO0FBQ3ZDRixVQUFBQSxnQkFBZ0IsQ0FBQ2MsSUFBakIsQ0FBc0IsWUFBWTtBQUNoQ2pDLFlBQUFBLFlBQVksQ0FBQ29ELEdBQWIsQ0FBaUI7QUFDZkMsY0FBQUEsY0FBYyxFQUFFLElBREQ7QUFFZkMsY0FBQUEsVUFBVSxFQUFFLElBRkc7QUFHZkMsY0FBQUEsMkJBQTJCLEVBQUU7QUFIZCxhQUFqQjtBQUtBLGtCQUFNLElBQUlDLE9BQUosQ0FBYUMsT0FBRCxJQUFhO0FBQzdCLG9CQUFNQyxDQUFDLEdBQUd0RSxJQUFJLENBQUN1RSxPQUFMLENBQWFULEdBQWIsRUFBbUJVLFFBQUQsSUFBYztBQUN4Q0EsZ0JBQUFBLFFBQVEsQ0FBQ0MsRUFBVCxDQUFZLE1BQVosRUFBb0IsTUFBTSxDQUFFLENBQTVCO0FBQ0FELGdCQUFBQSxRQUFRLENBQUNDLEVBQVQsQ0FBWSxLQUFaLEVBQW1CSixPQUFuQjtBQUNELGVBSFMsQ0FBVjtBQUlBQyxjQUFBQSxDQUFDLENBQUNJLEtBQUYsQ0FBUVgsSUFBUjtBQUNBTyxjQUFBQSxDQUFDLENBQUNLLEdBQUY7QUFDRCxhQVBLLENBQU47QUFRQSxrQkFBTUMsUUFBUSxHQUFHaEUsWUFBWSxDQUFDaUUsSUFBYixFQUFqQjtBQUNBakUsWUFBQUEsWUFBWSxDQUFDa0UsS0FBYjtBQUNBLG1CQUFPRixRQUFRLENBQUN4QixHQUFULENBQWNLLE1BQUQsSUFBWXNCLE1BQU0sQ0FBQ0MsTUFBUCxDQUFjdkIsTUFBZCxFQUFzQjtBQUNwRHdCLGNBQUFBLE9BQU8sRUFBRWpFLElBQUksQ0FBQ0ssWUFBTCxLQUFzQixJQUF0QixHQUE2QjZELFNBQTdCLEdBQXlDekUsY0FBYyxDQUFDZ0QsTUFBTSxDQUFDMEIsVUFBUixDQURaO0FBRXBEQSxjQUFBQSxVQUFVLEVBQUVEO0FBRndDLGFBQXRCLENBQXpCLENBQVA7QUFJRCxXQXBCRDtBQXFCRDs7QUFDRCxZQUFJLENBQUNqRCxjQUFjLENBQUMsQ0FBQyxPQUFELEVBQVUsT0FBVixDQUFELENBQW5CLEVBQXlDO0FBQ3ZDRixVQUFBQSxnQkFBZ0IsQ0FBQ2MsSUFBakIsQ0FBc0IsR0FBR2IsWUFBWSxDQUFDb0IsR0FBYixDQUFpQixDQUFDO0FBQUVLLFlBQUFBO0FBQUYsV0FBRCxLQUFnQkEsTUFBakMsQ0FBekI7QUFDRDtBQUNGLE9BNUJEO0FBNkJBL0IsTUFBQUEsUUFBUSxHQUFHLE1BQU0sSUFBSTBDLE9BQUosQ0FBYUMsT0FBRCxJQUFhM0QsUUFBUSxDQUFDa0MsWUFBRCxFQUFlO0FBQy9Ed0MsUUFBQUEsTUFBTSxFQUFFLENBQUNDLEtBQUQsRUFBUUMsUUFBUixLQUFxQjtBQUMzQnpELFVBQUFBLE9BQU8sQ0FBQ2dCLElBQVIsbUJBQWtCd0MsS0FBbEIsR0FEMkIsQ0FFM0I7O0FBQ0FBLFVBQUFBLEtBQUssQ0FBQ0Usb0JBQU4sR0FBOEJ4QixJQUFELElBQVU7QUFDckMsZ0JBQUk5QixjQUFjLENBQUMsQ0FBQyxPQUFELEVBQVUsTUFBVixDQUFELENBQWxCLEVBQXVDO0FBQ3JDLG9CQUFNcUIsR0FBRyxHQUFHdEIsWUFBWSxDQUFDd0QsU0FBYixDQUF3QkMsQ0FBRCxJQUFPQSxDQUFDLENBQUNuQyxHQUFGLEtBQVVnQyxRQUF4QyxDQUFaO0FBQ0Esb0JBQU1JLFdBQVcsR0FBR2xGLFlBQVksQ0FBQ3VELElBQUQsQ0FBaEM7QUFDQS9CLGNBQUFBLFlBQVksQ0FBQ3NCLEdBQUQsQ0FBWixDQUFrQkcsTUFBbEIsQ0FBeUJNLElBQXpCLEdBQWdDMkIsV0FBVyxLQUFLLElBQWhCLEdBQXVCLE1BQXZCLEdBQWdDQSxXQUFoRTtBQUNBLHFCQUFPTCxLQUFLLENBQUN0QixJQUFiO0FBQ0Q7O0FBQ0QsbUJBQU9BLElBQVA7QUFDRCxXQVJELENBSDJCLENBWTNCOzs7QUFDQXNCLFVBQUFBLEtBQUssQ0FBQ00sYUFBTixHQUF1QkMsV0FBRCxJQUFpQjtBQUNyQyxnQkFBSTNELGNBQWMsQ0FBQyxDQUFDLE9BQUQsRUFBVSxNQUFWLENBQUQsQ0FBbEIsRUFBdUM7QUFDckMsb0JBQU1xQixHQUFHLEdBQUd0QixZQUFZLENBQUN3RCxTQUFiLENBQXdCQyxDQUFELElBQU9BLENBQUMsQ0FBQ25DLEdBQUYsS0FBVWdDLFFBQXhDLENBQVo7QUFDQXRELGNBQUFBLFlBQVksQ0FBQ3NCLEdBQUQsQ0FBWixDQUFrQkcsTUFBbEIsQ0FBeUJ4RCxJQUF6QixHQUFnQzJGLFdBQWhDO0FBQ0EscUJBQU9QLEtBQUssQ0FBQ3BGLElBQWI7QUFDRDs7QUFDRCxtQkFBTzJGLFdBQVA7QUFDRCxXQVBEOztBQVFBLGlCQUFPUCxLQUFQO0FBQ0QsU0F2QjhEO0FBd0IvRFEsUUFBQUEsS0FBSyxFQUFFLENBQUNSLEtBQUQsRUFBUUMsUUFBUixLQUFxQjtBQUMxQkQsVUFBQUEsS0FBSyxDQUFDWixFQUFOLENBQVMsU0FBVCxFQUFvQixDQUFDWCxHQUFELEVBQU1nQyxXQUFOLEVBQW1CQyxpQkFBbkIsS0FBeUM7QUFDM0Qsa0JBQU16QyxHQUFHLEdBQUd0QixZQUFZLENBQUN3RCxTQUFiLENBQXdCbkMsQ0FBRCxJQUFPQSxDQUFDLENBQUNDLEdBQUYsS0FBVWdDLFFBQXhDLENBQVo7O0FBRUEsZ0JBQUlyRCxjQUFjLENBQUMsQ0FBQyxPQUFELEVBQVUsVUFBVixDQUFELENBQWxCLEVBQTJDO0FBQ3pDLG9CQUFNK0QsWUFBWSxHQUFHeEYsWUFBWSxDQUFDLENBQ2hDRix1QkFEZ0MsRUFFaEMyRixNQUZnQyxDQUdoQyxDQUFDQyxRQUFELEVBQVdDLEVBQVgsS0FBa0JBLEVBQUUsQ0FBQ0osaUJBQUQsRUFBb0JHLFFBQXBCLEVBQThCYixLQUE5QixDQUhZLEVBSWhDUyxXQUFXLENBQUMvQixJQUpvQixDQUFELENBQWpDLENBRHlDLENBT3pDOztBQUNBK0IsY0FBQUEsV0FBVyxDQUFDL0IsSUFBWixHQUFtQmlDLFlBQW5CO0FBQ0FoRSxjQUFBQSxZQUFZLENBQUNzQixHQUFELENBQVosQ0FBa0JHLE1BQWxCLENBQXlCZSxRQUF6QixHQUFvQ3dCLFlBQXBDO0FBQ0Q7O0FBRURqRSxZQUFBQSxnQkFBZ0IsQ0FBQ2MsSUFBakIsQ0FBc0JiLFlBQVksQ0FBQ3NCLEdBQUQsQ0FBWixDQUFrQkcsTUFBeEM7O0FBQ0EsZ0JBQUlILEdBQUcsS0FBSyxDQUFaLEVBQWU7QUFDYnhCLGNBQUFBLGdCQUFnQixDQUFDZSxJQUFqQixDQUFzQmIsWUFBWSxDQUFDc0IsR0FBRCxDQUFaLENBQWtCQyxHQUF4QztBQUNEOztBQUNEdkIsWUFBQUEsWUFBWSxDQUFDb0UsTUFBYixDQUFvQjlDLEdBQXBCLEVBQXlCLENBQXpCO0FBQ0QsV0FwQkQ7QUFxQkQsU0E5QzhEO0FBK0MvRCtDLFFBQUFBLFdBQVcsRUFBR0MsVUFBRCxJQUFnQkMsSUFBSSxDQUM5QkMsU0FEMEIsQ0FDaEJ4RixJQUFJLENBQUNLLFlBQUwsS0FBc0IsSUFBdEIsR0FBNkJpRixVQUFVLENBQUNsRCxHQUFYLENBQWdCa0IsQ0FBRCxJQUFPO0FBQzVELGdCQUFNbUMsR0FBRyxxQkFBUW5DLENBQVIsQ0FBVDs7QUFDQSxpQkFBT21DLEdBQUcsQ0FBQ3RCLFVBQVg7QUFDQSxpQkFBT3NCLEdBQVA7QUFDRCxTQUp1QyxDQUE3QixHQUlOSCxVQUxzQixFQUtWLElBTFUsRUFLSixDQUxJO0FBL0NrQyxPQUFmLEVBcUQvQ2pDLE9BckQrQyxDQUFqQyxDQUFqQjtBQXNERCxLQTNHSztBQTRHTnFDLElBQUFBLE9BQU8sRUFBRSxZQUFZO0FBQ25CNUcsTUFBQUEsTUFBTSxDQUFDNEIsUUFBUSxLQUFLLElBQWQsQ0FBTjs7QUFDQSxXQUFLLElBQUk0QixHQUFHLEdBQUcsQ0FBZixFQUFrQkEsR0FBRyxHQUFHdkIsZ0JBQWdCLENBQUNNLE1BQXpDLEVBQWlEaUIsR0FBRyxJQUFJLENBQXhELEVBQTJEO0FBQ3pELFlBQUksT0FBT3ZCLGdCQUFnQixDQUFDdUIsR0FBRCxDQUF2QixLQUFpQyxVQUFyQyxFQUFpRDtBQUMvQztBQUNBdkIsVUFBQUEsZ0JBQWdCLENBQUNxRSxNQUFqQixDQUF3QjlDLEdBQXhCLEVBQTZCLENBQTdCLEVBQWdDLElBQUcsTUFBTXZCLGdCQUFnQixDQUFDdUIsR0FBRCxDQUFoQixFQUFULENBQWhDO0FBQ0FBLFVBQUFBLEdBQUcsSUFBSSxDQUFQO0FBQ0Q7QUFDRjs7QUFDRDVCLE1BQUFBLFFBQVE7QUFDUkEsTUFBQUEsUUFBUSxHQUFHLElBQVg7QUFDQXJCLE1BQUFBLFlBQVksQ0FBQ3NHLGNBQWIsQ0FBNEIsVUFBNUI7O0FBQ0EsVUFBSTNGLElBQUksQ0FBQ1EsSUFBTCxLQUFjLEtBQWxCLEVBQXlCO0FBQ3ZCdEIsUUFBQUEsRUFBRSxDQUFDMEcsVUFBSCxDQUFjakYsZ0JBQWQsRUFBZ0NJLGdCQUFoQyxFQUFrRDtBQUNoRDhFLFVBQUFBLFNBQVMsRUFBRS9FLGdCQUFnQixDQUFDTyxNQUFqQixLQUE0QixDQUE1QixJQUFpQ0wsWUFBWSxDQUFDSyxNQUFiLEtBQXdCO0FBRHBCLFNBQWxEO0FBR0Q7O0FBQ0QsVUFBSXJCLElBQUksQ0FBQ08sTUFBTCxLQUFnQixLQUFwQixFQUEyQjtBQUN6QixZQUFJTyxnQkFBZ0IsQ0FBQ08sTUFBakIsS0FBNEIsQ0FBaEMsRUFBbUM7QUFDakMsZ0JBQU0sSUFBSXlFLEtBQUosQ0FBVyw0QkFBMkJoRixnQkFBZ0IsQ0FBQ2dCLElBQWpCLENBQXNCLElBQXRCLENBQTRCLEVBQWxFLENBQU47QUFDRDs7QUFDRCxZQUFJZCxZQUFZLENBQUNLLE1BQWIsS0FBd0IsQ0FBNUIsRUFBK0I7QUFDN0IsZ0JBQU0sSUFBSXlFLEtBQUosQ0FBVyx5QkFBd0I5RSxZQUFZLENBQUNvQixHQUFiLENBQWtCQyxDQUFELElBQU9BLENBQUMsQ0FBQ0UsR0FBMUIsRUFBK0JULElBQS9CLENBQW9DLElBQXBDLENBQTBDLEVBQTdFLENBQU47QUFDRDtBQUNGO0FBQ0YsS0FySUs7QUFzSU5pRSxJQUFBQSxRQUFRLEVBQUUsTUFBTTtBQUNkLFlBQU1DLGVBQWUsR0FBRzlHLEVBQUUsQ0FBQytHLE9BQUgsQ0FBV2pHLElBQUksQ0FBQ0csY0FBaEIsRUFBZ0MrRixNQUFoQyxDQUF3Q0MsQ0FBRCxJQUFPLENBQUN2RixrQkFBa0IsQ0FBQ2MsUUFBbkIsQ0FBNEJ5RSxDQUE1QixDQUEvQyxDQUF4Qjs7QUFDQSxVQUFJSCxlQUFlLENBQUMzRSxNQUFoQixLQUEyQixDQUEvQixFQUFrQztBQUNoQyxjQUFNLElBQUl5RSxLQUFKLENBQVcsMENBQXlDRSxlQUFlLENBQUNsRSxJQUFoQixDQUFxQixJQUFyQixDQUEyQixFQUEvRSxDQUFOO0FBQ0Q7QUFDRixLQTNJSztBQTRJTnNFLElBQUFBLEdBQUcsRUFBRSxPQUFPO0FBQ1Z2RixNQUFBQSxPQUFPLEVBQUVBLE9BQU8sQ0FBQ3dGLEtBQVIsRUFEQztBQUVWdkYsTUFBQUEsZ0JBQWdCLEVBQUVBLGdCQUFnQixDQUFDdUYsS0FBakIsRUFGUjtBQUdWQyxNQUFBQSxtQkFBbUIsRUFBRXRGLFlBQVksQ0FBQ29CLEdBQWIsQ0FBa0JDLENBQUQsSUFBT0EsQ0FBQyxDQUFDRSxHQUExQixFQUErQjhELEtBQS9CLEVBSFg7QUFJVnRGLE1BQUFBLGdCQUFnQixFQUFFQSxnQkFBZ0IsQ0FBQ3NGLEtBQWpCLEVBSlI7QUFLVjFGLE1BQUFBO0FBTFUsS0FBUDtBQTVJQyxHQUFSO0FBb0pELENBNUtEIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgYXNzZXJ0ID0gcmVxdWlyZSgnYXNzZXJ0Jyk7XG5jb25zdCBodHRwID0gcmVxdWlyZSgnaHR0cCcpO1xuY29uc3QgcGF0aCA9IHJlcXVpcmUoJ3BhdGgnKTtcbmNvbnN0IGZzID0gcmVxdWlyZSgnc21hcnQtZnMnKTtcbmNvbnN0IEpvaSA9IHJlcXVpcmUoJ2pvaS1zdHJpY3QnKTtcbmNvbnN0IG5vY2sgPSByZXF1aXJlKCdub2NrJyk7XG5jb25zdCBub2NrTGlzdGVuZXIgPSByZXF1aXJlKCcuL3JlcXVlc3QtcmVjb3JkZXIvbm9jay1saXN0ZW5lcicpO1xuY29uc3QgaGVhbFNxc1NlbmRNZXNzYWdlQmF0Y2ggPSByZXF1aXJlKCcuL3JlcXVlc3QtcmVjb3JkZXIvaGVhbC1zcXMtc2VuZC1tZXNzYWdlLWJhdGNoJyk7XG5jb25zdCB7IGJ1aWxkS2V5LCB0cnlQYXJzZUpzb24sIGNvbnZlcnRIZWFkZXJzIH0gPSByZXF1aXJlKCcuL3JlcXVlc3QtcmVjb3JkZXIvdXRpbCcpO1xuXG5jb25zdCBub2NrQmFjayA9IG5vY2suYmFjaztcbmNvbnN0IG5vY2tSZWNvcmRlciA9IG5vY2sucmVjb3JkZXI7XG5cbm1vZHVsZS5leHBvcnRzID0gKG9wdHMpID0+IHtcbiAgSm9pLmFzc2VydChvcHRzLCBKb2kub2JqZWN0KCkua2V5cyh7XG4gICAgY2Fzc2V0dGVGb2xkZXI6IEpvaS5zdHJpbmcoKSxcbiAgICBzdHJpcEhlYWRlcnM6IEpvaS5ib29sZWFuKCksXG4gICAgc3RyaWN0OiBKb2kuYm9vbGVhbigpLFxuICAgIGhlYWw6IEpvaS5hbHRlcm5hdGl2ZXMoSm9pLmJvb2xlYW4oKSwgSm9pLnN0cmluZygpKVxuICB9KSwgJ0ludmFsaWQgT3B0aW9ucyBQcm92aWRlZCcpO1xuICBsZXQgbm9ja0RvbmUgPSBudWxsO1xuICBsZXQgY2Fzc2V0dGVGaWxlUGF0aCA9IG51bGw7XG4gIGNvbnN0IGtub3duQ2Fzc2V0dGVOYW1lcyA9IFtdO1xuICBjb25zdCByZWNvcmRzID0gW107XG4gIGNvbnN0IG91dE9mT3JkZXJFcnJvcnMgPSBbXTtcbiAgY29uc3QgZXhwZWN0ZWRDYXNzZXR0ZSA9IFtdO1xuICBjb25zdCBwZW5kaW5nTW9ja3MgPSBbXTtcblxuICBjb25zdCBhbnlGbGFnUHJlc2VudCA9IChmbGFncykgPT4ge1xuICAgIGFzc2VydChBcnJheS5pc0FycmF5KGZsYWdzKSAmJiBmbGFncy5sZW5ndGggIT09IDApO1xuICAgIGlmICh0eXBlb2Ygb3B0cy5oZWFsICE9PSAnc3RyaW5nJykge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBjb25zdCBuZWVkbGVGbGFncyA9IG9wdHMuaGVhbC5zcGxpdCgnLCcpO1xuICAgIHJldHVybiBmbGFncy5zb21lKChmbGFnKSA9PiBuZWVkbGVGbGFncy5pbmNsdWRlcyhmbGFnKSk7XG4gIH07XG5cbiAgcmV0dXJuICh7XG4gICAgaW5qZWN0OiBhc3luYyAoY2Fzc2V0dGVGaWxlKSA9PiB7XG4gICAgICBhc3NlcnQobm9ja0RvbmUgPT09IG51bGwpO1xuICAgICAga25vd25DYXNzZXR0ZU5hbWVzLnB1c2goY2Fzc2V0dGVGaWxlKTtcbiAgICAgIHJlY29yZHMubGVuZ3RoID0gMDtcbiAgICAgIG91dE9mT3JkZXJFcnJvcnMubGVuZ3RoID0gMDtcbiAgICAgIGV4cGVjdGVkQ2Fzc2V0dGUubGVuZ3RoID0gMDtcbiAgICAgIHBlbmRpbmdNb2Nrcy5sZW5ndGggPSAwO1xuXG4gICAgICBjYXNzZXR0ZUZpbGVQYXRoID0gcGF0aC5qb2luKG9wdHMuY2Fzc2V0dGVGb2xkZXIsIGNhc3NldHRlRmlsZSk7XG4gICAgICBjb25zdCBoYXNDYXNzZXR0ZSA9IGZzLmV4aXN0c1N5bmMoY2Fzc2V0dGVGaWxlUGF0aCk7XG4gICAgICBpZiAoaGFzQ2Fzc2V0dGUpIHtcbiAgICAgICAgY29uc3QgY2Fzc2V0dGVDb250ZW50ID0gZnMuc21hcnRSZWFkKGNhc3NldHRlRmlsZVBhdGgpO1xuICAgICAgICBwZW5kaW5nTW9ja3MucHVzaCguLi5ub2NrXG4gICAgICAgICAgLmRlZmluZShjYXNzZXR0ZUNvbnRlbnQpXG4gICAgICAgICAgLm1hcCgoZSwgaWR4KSA9PiAoe1xuICAgICAgICAgICAgaWR4LFxuICAgICAgICAgICAga2V5OiBidWlsZEtleShlLmludGVyY2VwdG9yc1swXSksXG4gICAgICAgICAgICByZWNvcmQ6IGNhc3NldHRlQ29udGVudFtpZHhdXG4gICAgICAgICAgfSkpKTtcbiAgICAgIH1cblxuICAgICAgbm9ja0JhY2suc2V0TW9kZShoYXNDYXNzZXR0ZSA/ICdsb2NrZG93bicgOiAncmVjb3JkJyk7XG4gICAgICBub2NrQmFjay5maXh0dXJlcyA9IG9wdHMuY2Fzc2V0dGVGb2xkZXI7XG4gICAgICBub2NrTGlzdGVuZXIuc3Vic2NyaWJlKCdubyBtYXRjaCcsIChfLCByZXEsIGJvZHkpID0+IHtcbiAgICAgICAgYXNzZXJ0KGhhc0Nhc3NldHRlID09PSB0cnVlKTtcbiAgICAgICAgaWYgKGFueUZsYWdQcmVzZW50KFsnbWFnaWMnLCAncmVjb3JkJ10pKSB7XG4gICAgICAgICAgZXhwZWN0ZWRDYXNzZXR0ZS5wdXNoKGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgIG5vY2tSZWNvcmRlci5yZWMoe1xuICAgICAgICAgICAgICBvdXRwdXRfb2JqZWN0czogdHJ1ZSxcbiAgICAgICAgICAgICAgZG9udF9wcmludDogdHJ1ZSxcbiAgICAgICAgICAgICAgZW5hYmxlX3JlcWhlYWRlcnNfcmVjb3JkaW5nOiBmYWxzZVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBhd2FpdCBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xuICAgICAgICAgICAgICBjb25zdCByID0gaHR0cC5yZXF1ZXN0KHJlcSwgKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICAgICAgcmVzcG9uc2Uub24oJ2RhdGEnLCAoKSA9PiB7fSk7XG4gICAgICAgICAgICAgICAgcmVzcG9uc2Uub24oJ2VuZCcsIHJlc29sdmUpO1xuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgci53cml0ZShib2R5KTtcbiAgICAgICAgICAgICAgci5lbmQoKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgY29uc3QgcmVjb3JkZWQgPSBub2NrUmVjb3JkZXIucGxheSgpO1xuICAgICAgICAgICAgbm9ja1JlY29yZGVyLmNsZWFyKCk7XG4gICAgICAgICAgICByZXR1cm4gcmVjb3JkZWQubWFwKChyZWNvcmQpID0+IE9iamVjdC5hc3NpZ24ocmVjb3JkLCB7XG4gICAgICAgICAgICAgIGhlYWRlcnM6IG9wdHMuc3RyaXBIZWFkZXJzID09PSB0cnVlID8gdW5kZWZpbmVkIDogY29udmVydEhlYWRlcnMocmVjb3JkLnJhd0hlYWRlcnMpLFxuICAgICAgICAgICAgICByYXdIZWFkZXJzOiB1bmRlZmluZWRcbiAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIWFueUZsYWdQcmVzZW50KFsnbWFnaWMnLCAncHJ1bmUnXSkpIHtcbiAgICAgICAgICBleHBlY3RlZENhc3NldHRlLnB1c2goLi4ucGVuZGluZ01vY2tzLm1hcCgoeyByZWNvcmQgfSkgPT4gcmVjb3JkKSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgbm9ja0RvbmUgPSBhd2FpdCBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4gbm9ja0JhY2soY2Fzc2V0dGVGaWxlLCB7XG4gICAgICAgIGJlZm9yZTogKHNjb3BlLCBzY29wZUlkeCkgPT4ge1xuICAgICAgICAgIHJlY29yZHMucHVzaCh7IC4uLnNjb3BlIH0pO1xuICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wYXJhbS1yZWFzc2lnblxuICAgICAgICAgIHNjb3BlLmZpbHRlcmluZ1JlcXVlc3RCb2R5ID0gKGJvZHkpID0+IHtcbiAgICAgICAgICAgIGlmIChhbnlGbGFnUHJlc2VudChbJ21hZ2ljJywgJ2JvZHknXSkpIHtcbiAgICAgICAgICAgICAgY29uc3QgaWR4ID0gcGVuZGluZ01vY2tzLmZpbmRJbmRleCgobSkgPT4gbS5pZHggPT09IHNjb3BlSWR4KTtcbiAgICAgICAgICAgICAgY29uc3QgcmVxdWVzdEJvZHkgPSB0cnlQYXJzZUpzb24oYm9keSk7XG4gICAgICAgICAgICAgIHBlbmRpbmdNb2Nrc1tpZHhdLnJlY29yZC5ib2R5ID0gcmVxdWVzdEJvZHkgPT09IG51bGwgPyAnbnVsbCcgOiByZXF1ZXN0Qm9keTtcbiAgICAgICAgICAgICAgcmV0dXJuIHNjb3BlLmJvZHk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gYm9keTtcbiAgICAgICAgICB9O1xuICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wYXJhbS1yZWFzc2lnblxuICAgICAgICAgIHNjb3BlLmZpbHRlcmluZ1BhdGggPSAocmVxdWVzdFBhdGgpID0+IHtcbiAgICAgICAgICAgIGlmIChhbnlGbGFnUHJlc2VudChbJ21hZ2ljJywgJ3BhdGgnXSkpIHtcbiAgICAgICAgICAgICAgY29uc3QgaWR4ID0gcGVuZGluZ01vY2tzLmZpbmRJbmRleCgobSkgPT4gbS5pZHggPT09IHNjb3BlSWR4KTtcbiAgICAgICAgICAgICAgcGVuZGluZ01vY2tzW2lkeF0ucmVjb3JkLnBhdGggPSByZXF1ZXN0UGF0aDtcbiAgICAgICAgICAgICAgcmV0dXJuIHNjb3BlLnBhdGg7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gcmVxdWVzdFBhdGg7XG4gICAgICAgICAgfTtcbiAgICAgICAgICByZXR1cm4gc2NvcGU7XG4gICAgICAgIH0sXG4gICAgICAgIGFmdGVyOiAoc2NvcGUsIHNjb3BlSWR4KSA9PiB7XG4gICAgICAgICAgc2NvcGUub24oJ3JlcXVlc3QnLCAocmVxLCBpbnRlcmNlcHRvciwgcmVxdWVzdEJvZHlTdHJpbmcpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGlkeCA9IHBlbmRpbmdNb2Nrcy5maW5kSW5kZXgoKGUpID0+IGUuaWR4ID09PSBzY29wZUlkeCk7XG5cbiAgICAgICAgICAgIGlmIChhbnlGbGFnUHJlc2VudChbJ21hZ2ljJywgJ3Jlc3BvbnNlJ10pKSB7XG4gICAgICAgICAgICAgIGNvbnN0IHJlc3BvbnNlQm9keSA9IHRyeVBhcnNlSnNvbihbXG4gICAgICAgICAgICAgICAgaGVhbFNxc1NlbmRNZXNzYWdlQmF0Y2hcbiAgICAgICAgICAgICAgXS5yZWR1Y2UoXG4gICAgICAgICAgICAgICAgKHJlc3BCb2R5LCBmbikgPT4gZm4ocmVxdWVzdEJvZHlTdHJpbmcsIHJlc3BCb2R5LCBzY29wZSksXG4gICAgICAgICAgICAgICAgaW50ZXJjZXB0b3IuYm9keVxuICAgICAgICAgICAgICApKTtcbiAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXBhcmFtLXJlYXNzaWduXG4gICAgICAgICAgICAgIGludGVyY2VwdG9yLmJvZHkgPSByZXNwb25zZUJvZHk7XG4gICAgICAgICAgICAgIHBlbmRpbmdNb2Nrc1tpZHhdLnJlY29yZC5yZXNwb25zZSA9IHJlc3BvbnNlQm9keTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZXhwZWN0ZWRDYXNzZXR0ZS5wdXNoKHBlbmRpbmdNb2Nrc1tpZHhdLnJlY29yZCk7XG4gICAgICAgICAgICBpZiAoaWR4ICE9PSAwKSB7XG4gICAgICAgICAgICAgIG91dE9mT3JkZXJFcnJvcnMucHVzaChwZW5kaW5nTW9ja3NbaWR4XS5rZXkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcGVuZGluZ01vY2tzLnNwbGljZShpZHgsIDEpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9LFxuICAgICAgICBhZnRlclJlY29yZDogKHJlY29yZGluZ3MpID0+IEpTT05cbiAgICAgICAgICAuc3RyaW5naWZ5KG9wdHMuc3RyaXBIZWFkZXJzID09PSB0cnVlID8gcmVjb3JkaW5ncy5tYXAoKHIpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHJlcyA9IHsgLi4uciB9O1xuICAgICAgICAgICAgZGVsZXRlIHJlcy5yYXdIZWFkZXJzO1xuICAgICAgICAgICAgcmV0dXJuIHJlcztcbiAgICAgICAgICB9KSA6IHJlY29yZGluZ3MsIG51bGwsIDIpXG4gICAgICB9LCByZXNvbHZlKSk7XG4gICAgfSxcbiAgICByZWxlYXNlOiBhc3luYyAoKSA9PiB7XG4gICAgICBhc3NlcnQobm9ja0RvbmUgIT09IG51bGwpO1xuICAgICAgZm9yIChsZXQgaWR4ID0gMDsgaWR4IDwgZXhwZWN0ZWRDYXNzZXR0ZS5sZW5ndGg7IGlkeCArPSAxKSB7XG4gICAgICAgIGlmICh0eXBlb2YgZXhwZWN0ZWRDYXNzZXR0ZVtpZHhdID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWF3YWl0LWluLWxvb3BcbiAgICAgICAgICBleHBlY3RlZENhc3NldHRlLnNwbGljZShpZHgsIDEsIC4uLmF3YWl0IGV4cGVjdGVkQ2Fzc2V0dGVbaWR4XSgpKTtcbiAgICAgICAgICBpZHggLT0gMTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgbm9ja0RvbmUoKTtcbiAgICAgIG5vY2tEb25lID0gbnVsbDtcbiAgICAgIG5vY2tMaXN0ZW5lci51bnN1YnNjcmliZUFsbCgnbm8gbWF0Y2gnKTtcbiAgICAgIGlmIChvcHRzLmhlYWwgIT09IGZhbHNlKSB7XG4gICAgICAgIGZzLnNtYXJ0V3JpdGUoY2Fzc2V0dGVGaWxlUGF0aCwgZXhwZWN0ZWRDYXNzZXR0ZSwge1xuICAgICAgICAgIGtlZXBPcmRlcjogb3V0T2ZPcmRlckVycm9ycy5sZW5ndGggPT09IDAgJiYgcGVuZGluZ01vY2tzLmxlbmd0aCA9PT0gMFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIGlmIChvcHRzLnN0cmljdCAhPT0gZmFsc2UpIHtcbiAgICAgICAgaWYgKG91dE9mT3JkZXJFcnJvcnMubGVuZ3RoICE9PSAwKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBPdXQgb2YgT3JkZXIgUmVjb3JkaW5nczogJHtvdXRPZk9yZGVyRXJyb3JzLmpvaW4oJywgJyl9YCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHBlbmRpbmdNb2Nrcy5sZW5ndGggIT09IDApIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFVubWF0Y2hlZCBSZWNvcmRpbmdzOiAke3BlbmRpbmdNb2Nrcy5tYXAoKGUpID0+IGUua2V5KS5qb2luKCcsICcpfWApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgICBzaHV0ZG93bjogKCkgPT4ge1xuICAgICAgY29uc3QgdW5leHBlY3RlZEZpbGVzID0gZnMud2Fsa0RpcihvcHRzLmNhc3NldHRlRm9sZGVyKS5maWx0ZXIoKGYpID0+ICFrbm93bkNhc3NldHRlTmFtZXMuaW5jbHVkZXMoZikpO1xuICAgICAgaWYgKHVuZXhwZWN0ZWRGaWxlcy5sZW5ndGggIT09IDApIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbmV4cGVjdGVkIGZpbGUocykgaW4gY2Fzc2V0dGUgZm9sZGVyOiAke3VuZXhwZWN0ZWRGaWxlcy5qb2luKCcsICcpfWApO1xuICAgICAgfVxuICAgIH0sXG4gICAgZ2V0OiAoKSA9PiAoe1xuICAgICAgcmVjb3JkczogcmVjb3Jkcy5zbGljZSgpLFxuICAgICAgb3V0T2ZPcmRlckVycm9yczogb3V0T2ZPcmRlckVycm9ycy5zbGljZSgpLFxuICAgICAgdW5tYXRjaGVkUmVjb3JkaW5nczogcGVuZGluZ01vY2tzLm1hcCgoZSkgPT4gZS5rZXkpLnNsaWNlKCksXG4gICAgICBleHBlY3RlZENhc3NldHRlOiBleHBlY3RlZENhc3NldHRlLnNsaWNlKCksXG4gICAgICBjYXNzZXR0ZUZpbGVQYXRoXG4gICAgfSlcbiAgfSk7XG59O1xuIl19

@@ -247,3 +247,3 @@ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }

if (requestRecorder !== null) {
requestRecorder.release();
await requestRecorder.release();
}

@@ -299,2 +299,2 @@

module.exports = desc;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsL2Rlc2MuanMiXSwibmFtZXMiOlsiYXNzZXJ0IiwicmVxdWlyZSIsInBhdGgiLCJmcyIsImNhbGxzaXRlcyIsImdldCIsIm1pbmltaXN0IiwidG1wIiwiSm9pIiwiUmVxdWVzdFJlY29yZGVyIiwiRW52TWFuYWdlciIsIlRpbWVLZWVwZXIiLCJMb2dSZWNvcmRlciIsIlJhbmRvbVNlZWRlciIsImdldFBhcmVudHMiLCJnZW5DYXNzZXR0ZU5hbWUiLCJtb2NoYSIsIml0Iiwic3BlY2lmeSIsImRlc2NyaWJlIiwiY29udGV4dCIsImJlZm9yZSIsImFmdGVyIiwiYmVmb3JlRWFjaCIsImFmdGVyRWFjaCIsImRlc2MiLCJzdWl0ZU5hbWUiLCJvcHRzT3JUZXN0cyIsInRlc3RzT3JOdWxsIiwib3B0cyIsInRlc3RzIiwidGVzdEZpbGUiLCJyZXNvbHZlIiwiZ2V0RmlsZU5hbWUiLCJuYW1lIiwiam9pbiIsImRpcm5hbWUiLCJyZXBsYWNlIiwiYmFzZW5hbWUiLCJvYmplY3QiLCJrZXlzIiwidXNlVG1wRGlyIiwiYm9vbGVhbiIsIm9wdGlvbmFsIiwidXNlTm9jayIsIm5vY2tGb2xkZXIiLCJzdHJpbmciLCJmaXh0dXJlRm9sZGVyIiwiZW52VmFyc0ZpbGUiLCJlbnZWYXJzIiwidW5rbm93biIsInBhdHRlcm4iLCJ0aW1lc3RhbXAiLCJhbHRlcm5hdGl2ZXMiLCJudW1iZXIiLCJpbnRlZ2VyIiwibWluIiwiZGF0ZSIsImlzbyIsInJlY29yZCIsImFueSIsImNyeXB0b1NlZWQiLCJ0aW1lb3V0Iiwibm9ja0hlYWwiLCJwcm9jZXNzIiwiYXJndiIsInNsaWNlIiwiZGlyIiwicmVxdWVzdFJlY29yZGVyIiwiZW52TWFuYWdlckZpbGUiLCJlbnZNYW5hZ2VyRGVzYyIsInRpbWVLZWVwZXIiLCJsb2dSZWNvcmRlciIsInJhbmRvbVNlZWRlciIsImdldEFyZ3MiLCJjYXB0dXJlIiwiZm4iLCJlIiwiQXNzZXJ0aW9uRXJyb3IiLCJtZXNzYWdlIiwiZml4dHVyZSIsImZpbGVwYXRoIiwiZ3Vlc3NGaWxlIiwic21hcnRSZWFkIiwicmVjb3JkZXIiLCJ2ZXJib3NlIiwicmVzZXQiLCJiZWZvcmVDYiIsImFmdGVyQ2IiLCJiZWZvcmVFYWNoQ2IiLCJhZnRlckVhY2hDYiIsInRlc3QiLCJsZW5ndGgiLCJleGlzdHNTeW5jIiwiYWxsb3dPdmVyd3JpdGUiLCJhcHBseSIsImluamVjdCIsInNlZWQiLCJyZXNlZWQiLCJjYXNzZXR0ZUZvbGRlciIsInN0cmlwSGVhZGVycyIsInN0cmljdCIsImhlYWwiLCJjYWxsIiwic2h1dGRvd24iLCJyZWxlYXNlIiwidW5hcHBseSIsInNldEdyYWNlZnVsQ2xlYW51cCIsImRpclN5bmMiLCJrZWVwIiwidW5zYWZlQ2xlYW51cCIsImN1cnJlbnRUZXN0IiwiaW5jbHVkZXMiLCJsb2dnZXIiLCJnbG9iYWxzUHJldiIsIk9iamVjdCIsInJlZHVjZSIsInAiLCJrZXkiLCJhc3NpZ24iLCJnbG9iYWwiLCJ0ZXN0TmFtZSIsInRvU3RyaW5nIiwiZG9uZSIsImVudHJpZXMiLCJmb3JFYWNoIiwiayIsInYiLCJtb2R1bGUiLCJleHBvcnRzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxNQUFNQSxNQUFNLEdBQUdDLE9BQU8sQ0FBQyxRQUFELENBQXRCOztBQUNBLE1BQU1DLElBQUksR0FBR0QsT0FBTyxDQUFDLE1BQUQsQ0FBcEI7O0FBQ0EsTUFBTUUsRUFBRSxHQUFHRixPQUFPLENBQUMsVUFBRCxDQUFsQjs7QUFDQSxNQUFNRyxTQUFTLEdBQUdILE9BQU8sQ0FBQyxXQUFELENBQXpCOztBQUNBLE1BQU1JLEdBQUcsR0FBR0osT0FBTyxDQUFDLFlBQUQsQ0FBbkI7O0FBQ0EsTUFBTUssUUFBUSxHQUFHTCxPQUFPLENBQUMsVUFBRCxDQUF4Qjs7QUFDQSxNQUFNTSxHQUFHLEdBQUdOLE9BQU8sQ0FBQyxLQUFELENBQW5COztBQUNBLE1BQU1PLEdBQUcsR0FBR1AsT0FBTyxDQUFDLFlBQUQsQ0FBbkI7O0FBQ0EsTUFBTVEsZUFBZSxH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LENBQUNDLENBQUQsRUFBSUMsQ0FBSixDQUFELEtBQVk7QUFDOUNQLFFBQUFBLE1BQU0sQ0FBQ00sQ0FBRCxDQUFOLEdBQVlDLENBQVo7QUFDRCxPQUZEO0FBR0QsS0F0SU0sR0FBUDtBQXVJRCxHQXhJRDtBQXlJRCxDQXJORDs7QUFzTkFDLE1BQU0sQ0FBQ0MsT0FBUCxHQUFpQnhHLElBQWpCIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgYXNzZXJ0ID0gcmVxdWlyZSgnYXNzZXJ0Jyk7XG5jb25zdCBwYXRoID0gcmVxdWlyZSgncGF0aCcpO1xuY29uc3QgZnMgPSByZXF1aXJlKCdzbWFydC1mcycpO1xuY29uc3QgY2FsbHNpdGVzID0gcmVxdWlyZSgnY2FsbHNpdGVzJyk7XG5jb25zdCBnZXQgPSByZXF1aXJlKCdsb2Rhc2guZ2V0Jyk7XG5jb25zdCBtaW5pbWlzdCA9IHJlcXVpcmUoJ21pbmltaXN0Jyk7XG5jb25zdCB0bXAgPSByZXF1aXJlKCd0bXAnKTtcbmNvbnN0IEpvaSA9IHJlcXVpcmUoJ2pvaS1zdHJpY3QnKTtcbmNvbnN0IFJlcXVlc3RSZWNvcmRlciA9IHJlcXVpcmUoJy4uL21vZHVsZXMvcmVxdWVzdC1yZWNvcmRlcicpO1xuY29uc3QgRW52TWFuYWdlciA9IHJlcXVpcmUoJy4uL21vZHVsZXMvZW52LW1hbmFnZXInKTtcbmNvbnN0IFRpbWVLZWVwZXIgPSByZXF1aXJlKCcuLi9tb2R1bGVzL3RpbWUta2VlcGVyJyk7XG5jb25zdCBMb2dSZWNvcmRlciA9IHJlcXVpcmUoJy4uL21vZHVsZXMvbG9nLXJlY29yZGVyJyk7XG5jb25zdCBSYW5kb21TZWVkZXIgPSByZXF1aXJlKCcuLi9tb2R1bGVzL3JhbmRvbS1zZWVkZXInKTtcbmNvbnN0IHsgZ2V0UGFyZW50cywgZ2VuQ2Fzc2V0dGVOYW1lIH0gPSByZXF1aXJlKCcuL21vY2hhLXRlc3QnKTtcblxuY29uc3QgbW9jaGEgPSB7XG4gIGl0LFxuICBzcGVjaWZ5LFxuICBkZXNjcmliZSxcbiAgY29udGV4dCxcbiAgYmVmb3JlLFxuICBhZnRlcixcbiAgYmVmb3JlRWFjaCxcbiAgYWZ0ZXJFYWNoXG59O1xuXG5jb25zdCBkZXNjID0gKHN1aXRlTmFtZSwgb3B0c09yVGVzdHMsIHRlc3RzT3JOdWxsID0gbnVsbCkgPT4ge1xuICBjb25zdCBvcHRzID0gdGVzdHNPck51bGwgPT09IG51bGwgPyB7fSA6IG9wdHNPclRlc3RzO1xuICBjb25zdCB0ZXN0cyA9IHRlc3RzT3JOdWxsID09PSBudWxsID8gb3B0c09yVGVzdHMgOiB0ZXN0c09yTnVsbDtcblxuICBjb25zdCB0ZXN0RmlsZSA9IHBhdGgucmVzb2x2ZShjYWxsc2l0ZXMoKVsxXS5nZXRGaWxlTmFtZSgpKTtcbiAgY29uc3QgcmVzb2x2ZSA9IChuYW1lKSA9PiBwYXRoLmpvaW4oXG4gICAgcGF0aC5kaXJuYW1lKHRlc3RGaWxlKSxcbiAgICBuYW1lLnJlcGxhY2UoL1xcJEZJTEVOQU1FL2csIHBhdGguYmFzZW5hbWUodGVzdEZpbGUpKVxuICApO1xuXG4gIEpvaS5hc3NlcnQob3B0cywgSm9pLm9iamVjdCgpLmtleXMoe1xuICAgIHVzZVRtcERpcjogSm9pLmJvb2xlYW4oKS5vcHRpb25hbCgpLFxuICAgIHVzZU5vY2s6IEpvaS5ib29sZWFuKCkub3B0aW9uYWwoKSxcbiAgICBub2NrRm9sZGVyOiBKb2kuc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICBmaXh0dXJlRm9sZGVyOiBKb2kuc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICBlbnZWYXJzRmlsZTogSm9pLnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgZW52VmFyczogSm9pLm9iamVjdCgpLm9wdGlvbmFsKCkudW5rbm93bih0cnVlKS5wYXR0ZXJuKEpvaS5zdHJpbmcoKSwgSm9pLnN0cmluZygpKSxcbiAgICB0aW1lc3RhbXA6IEpvaS5hbHRlcm5hdGl2ZXMoXG4gICAgICBKb2kubnVtYmVyKCkuaW50ZWdlcigpLm1pbigwKSxcbiAgICAgIEpvaS5kYXRlKCkuaXNvKClcbiAgICApLm9wdGlvbmFsKCksXG4gICAgcmVjb3JkOiBKb2kuYW55KCkub3B0aW9uYWwoKSxcbiAgICBjcnlwdG9TZWVkOiBKb2kuc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICB0aW1lb3V0OiBKb2kubnVtYmVyKCkub3B0aW9uYWwoKS5taW4oMClcbiAgfSksICdCYWQgT3B0aW9ucyBQcm92aWRlZCcpO1xuICBjb25zdCB1c2VUbXBEaXIgPSBnZXQob3B0cywgJ3VzZVRtcERpcicsIGZhbHNlKTtcbiAgY29uc3QgdXNlTm9jayA9IGdldChvcHRzLCAndXNlTm9jaycsIGZhbHNlKTtcbiAgY29uc3Qgbm9ja0ZvbGRlciA9IHJlc29sdmUoZ2V0KG9wdHMsICdub2NrRm9sZGVyJywgJyRGSUxFTkFNRV9fY2Fzc2V0dGVzJykpO1xuICBjb25zdCBmaXh0dXJlRm9sZGVyID0gcmVzb2x2ZShnZXQob3B0cywgJ2ZpeHR1cmVGb2xkZXInLCAnJEZJTEVOQU1FX19maXh0dXJlcycpKTtcbiAgY29uc3QgZW52VmFyc0ZpbGUgPSByZXNvbHZlKGdldChvcHRzLCAnZW52VmFyc0ZpbGUnLCAnJEZJTEVOQU1FLmVudi55bWwnKSk7XG4gIGNvbnN0IGVudlZhcnMgPSBnZXQob3B0cywgJ2VudlZhcnMnLCBudWxsKTtcbiAgY29uc3QgdGltZXN0YW1wID0gZ2V0KG9wdHMsICd0aW1lc3RhbXAnLCBudWxsKTtcbiAgY29uc3QgcmVjb3JkID0gZ2V0KG9wdHMsICdyZWNvcmQnLCBmYWxzZSk7XG4gIGNvbnN0IGNyeXB0b1NlZWQgPSBnZXQob3B0cywgJ2NyeXB0b1NlZWQnLCBudWxsKTtcbiAgY29uc3QgdGltZW91dCA9IGdldChvcHRzLCAndGltZW91dCcsIG51bGwpO1xuICBjb25zdCBub2NrSGVhbCA9IGdldChtaW5pbWlzdChwcm9jZXNzLmFyZ3Yuc2xpY2UoMikpLCAnbm9jay1oZWFsJywgZmFsc2UpO1xuXG4gIGxldCBkaXIgPSBudWxsO1xuICBsZXQgcmVxdWVzdFJlY29yZGVyID0gbnVsbDtcbiAgbGV0IGVudk1hbmFnZXJGaWxlID0gbnVsbDtcbiAgbGV0IGVudk1hbmFnZXJEZXNjID0gbnVsbDtcbiAgbGV0IHRpbWVLZWVwZXIgPSBudWxsO1xuICBsZXQgbG9nUmVjb3JkZXIgPSBudWxsO1xuICBsZXQgcmFuZG9tU2VlZGVyID0gbnVsbDtcblxuICBjb25zdCBnZXRBcmdzID0gKCkgPT4gKHtcbiAgICBjYXB0dXJlOiBhc3luYyAoZm4pID0+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IGZuKCk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHJldHVybiBlO1xuICAgICAgfVxuICAgICAgdGhyb3cgbmV3IGFzc2VydC5Bc3NlcnRpb25FcnJvcih7IG1lc3NhZ2U6ICdleHBlY3RlZCBbRnVuY3Rpb25dIHRvIHRocm93IGFuIGVycm9yJyB9KTtcbiAgICB9LFxuICAgIGZpeHR1cmU6IChuYW1lKSA9PiB7XG4gICAgICBjb25zdCBmaWxlcGF0aCA9IGZzLmd1ZXNzRmlsZShwYXRoLmpvaW4oZml4dHVyZUZvbGRlciwgbmFtZSkpO1xuICAgICAgaWYgKGZpbGVwYXRoID09PSBudWxsKSB7XG4gICAgICAgIHRocm93IG5ldyBhc3NlcnQuQXNzZXJ0aW9uRXJyb3IoeyBtZXNzYWdlOiBgZml4dHVyZSBcIiR7bmFtZX1cIiBub3QgZm91bmQgb3IgYW1iaWd1b3VzYCB9KTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBmcy5zbWFydFJlYWQoZmlsZXBhdGgpO1xuICAgIH0sXG4gICAgLi4uKGRpciA9PT0gbnVsbCA/IHt9IDogeyBkaXIgfSksXG4gICAgLi4uKGxvZ1JlY29yZGVyID09PSBudWxsID8ge30gOiB7XG4gICAgICByZWNvcmRlcjoge1xuICAgICAgICB2ZXJib3NlOiBsb2dSZWNvcmRlci52ZXJib3NlLFxuICAgICAgICBnZXQ6IGxvZ1JlY29yZGVyLmdldCxcbiAgICAgICAgcmVzZXQ6IGxvZ1JlY29yZGVyLnJlc2V0XG4gICAgICB9XG4gICAgfSlcbiAgfSk7XG4gIGxldCBiZWZvcmVDYiA9ICgpID0+IHt9O1xuICBsZXQgYWZ0ZXJDYiA9ICgpID0+IHt9O1xuICBsZXQgYmVmb3JlRWFjaENiID0gKCkgPT4ge307XG4gIGxldCBhZnRlckVhY2hDYiA9ICgpID0+IHt9O1xuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBmdW5jLW5hbWVzXG4gIG1vY2hhLmRlc2NyaWJlKHN1aXRlTmFtZSwgZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiAoYXN5bmMgKCkgPT4ge1xuICAgICAgaWYgKHRpbWVvdXQgIT09IG51bGwpIHtcbiAgICAgICAgdGhpcy50aW1lb3V0KHRpbWVvdXQpO1xuICAgICAgfVxuXG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZnVuYy1uYW1lc1xuICAgICAgbW9jaGEuYmVmb3JlKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIChhc3luYyAoKSA9PiB7XG4gICAgICAgICAgaWYgKGdldFBhcmVudHModGhpcy50ZXN0KS5sZW5ndGggPT09IDMgJiYgZnMuZXhpc3RzU3luYyhlbnZWYXJzRmlsZSkpIHtcbiAgICAgICAgICAgIGVudk1hbmFnZXJGaWxlID0gRW52TWFuYWdlcih7IGVudlZhcnM6IGZzLnNtYXJ0UmVhZChlbnZWYXJzRmlsZSksIGFsbG93T3ZlcndyaXRlOiBmYWxzZSB9KTtcbiAgICAgICAgICAgIGVudk1hbmFnZXJGaWxlLmFwcGx5KCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChlbnZWYXJzICE9PSBudWxsKSB7XG4gICAgICAgICAgICBlbnZNYW5hZ2VyRGVzYyA9IEVudk1hbmFnZXIoeyBlbnZWYXJzLCBhbGxvd092ZXJ3cml0ZTogZmFsc2UgfSk7XG4gICAgICAgICAgICBlbnZNYW5hZ2VyRGVzYy5hcHBseSgpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAodGltZXN0YW1wICE9PSBudWxsKSB7XG4gICAgICAgICAgICB0aW1lS2VlcGVyID0gVGltZUtlZXBlcih7IHRpbWVzdGFtcCB9KTtcbiAgICAgICAgICAgIHRpbWVLZWVwZXIuaW5qZWN0KCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChjcnlwdG9TZWVkICE9PSBudWxsKSB7XG4gICAgICAgICAgICByYW5kb21TZWVkZXIgPSBSYW5kb21TZWVkZXIoeyBzZWVkOiBjcnlwdG9TZWVkLCByZXNlZWQ6IGZhbHNlIH0pO1xuICAgICAgICAgICAgcmFuZG9tU2VlZGVyLmluamVjdCgpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAodXNlTm9jayA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgcmVxdWVzdFJlY29yZGVyID0gUmVxdWVzdFJlY29yZGVyKHtcbiAgICAgICAgICAgICAgY2Fzc2V0dGVGb2xkZXI6IGAke25vY2tGb2xkZXJ9L2AsXG4gICAgICAgICAgICAgIHN0cmlwSGVhZGVyczogZmFsc2UsXG4gICAgICAgICAgICAgIHN0cmljdDogdHJ1ZSxcbiAgICAgICAgICAgICAgaGVhbDogbm9ja0hlYWxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgICBhd2FpdCBiZWZvcmVDYi5jYWxsKHRoaXMpO1xuICAgICAgICB9KSgpO1xuICAgICAgfSk7XG5cbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBmdW5jLW5hbWVzXG4gICAgICBtb2NoYS5hZnRlcihmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiAoYXN5bmMgKCkgPT4ge1xuICAgICAgICAgIGlmIChyZXF1ZXN0UmVjb3JkZXIgIT09IG51bGwpIHtcbiAgICAgICAgICAgIHJlcXVlc3RSZWNvcmRlci5zaHV0ZG93bigpO1xuICAgICAgICAgICAgcmVxdWVzdFJlY29yZGVyID0gbnVsbDtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHJhbmRvbVNlZWRlciAhPT0gbnVsbCkge1xuICAgICAgICAgICAgcmFuZG9tU2VlZGVyLnJlbGVhc2UoKTtcbiAgICAgICAgICAgIHJhbmRvbVNlZWRlciA9IG51bGw7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICh0aW1lS2VlcGVyICE9PSBudWxsKSB7XG4gICAgICAgICAgICB0aW1lS2VlcGVyLnJlbGVhc2UoKTtcbiAgICAgICAgICAgIHRpbWVLZWVwZXIgPSBudWxsO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoZW52TWFuYWdlckRlc2MgIT09IG51bGwpIHtcbiAgICAgICAgICAgIGVudk1hbmFnZXJEZXNjLnVuYXBwbHkoKTtcbiAgICAgICAgICAgIGVudk1hbmFnZXJEZXNjID0gbnVsbDtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGVudk1hbmFnZXJGaWxlICE9PSBudWxsKSB7XG4gICAgICAgICAgICBlbnZNYW5hZ2VyRmlsZS51bmFwcGx5KCk7XG4gICAgICAgICAgICBlbnZNYW5hZ2VyRmlsZSA9IG51bGw7XG4gICAgICAgICAgfVxuICAgICAgICAgIGF3YWl0IGFmdGVyQ2IuY2FsbCh0aGlzKTtcbiAgICAgICAgfSkoKTtcbiAgICAgIH0pO1xuXG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZnVuYy1uYW1lc1xuICAgICAgbW9jaGEuYmVmb3JlRWFjaChmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiAoYXN5bmMgKCkgPT4ge1xuICAgICAgICAgIGlmICh1c2VUbXBEaXIgPT09IHRydWUpIHtcbiAgICAgICAgICAgIHRtcC5zZXRHcmFjZWZ1bENsZWFudXAoKTtcbiAgICAgICAgICAgIGRpciA9IHRtcC5kaXJTeW5jKHsga2VlcDogZmFsc2UsIHVuc2FmZUNsZWFudXA6IHRydWUgfSkubmFtZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHVzZU5vY2sgPT09IHRydWUpIHtcbiAgICAgICAgICAgIGF3YWl0IHJlcXVlc3RSZWNvcmRlci5pbmplY3QoZ2VuQ2Fzc2V0dGVOYW1lKHRoaXMuY3VycmVudFRlc3QpKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHJlY29yZCAhPT0gZmFsc2UpIHtcbiAgICAgICAgICAgIGxvZ1JlY29yZGVyID0gTG9nUmVjb3JkZXIoe1xuICAgICAgICAgICAgICB2ZXJib3NlOiBwcm9jZXNzLmFyZ3Yuc2xpY2UoMikuaW5jbHVkZXMoJy0tdmVyYm9zZScpLFxuICAgICAgICAgICAgICBsb2dnZXI6IHJlY29yZFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBsb2dSZWNvcmRlci5pbmplY3QoKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgYXdhaXQgYmVmb3JlRWFjaENiLmNhbGwodGhpcywgZ2V0QXJncygpKTtcbiAgICAgICAgfSkoKTtcbiAgICAgIH0pO1xuXG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZnVuYy1uYW1lc1xuICAgICAgbW9jaGEuYWZ0ZXJFYWNoKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIChhc3luYyAoKSA9PiB7XG4gICAgICAgICAgaWYgKGxvZ1JlY29yZGVyICE9PSBudWxsKSB7XG4gICAgICAgICAgICBsb2dSZWNvcmRlci5yZWxlYXNlKCk7XG4gICAgICAgICAgICBsb2dSZWNvcmRlciA9IG51bGw7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChyZXF1ZXN0UmVjb3JkZXIgIT09IG51bGwpIHtcbiAgICAgICAgICAgIHJlcXVlc3RSZWNvcmRlci5yZWxlYXNlKCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChkaXIgIT09IG51bGwpIHtcbiAgICAgICAgICAgIGRpciA9IG51bGw7XG4gICAgICAgICAgfVxuICAgICAgICAgIGF3YWl0IGFmdGVyRWFjaENiLmNhbGwodGhpcywgZ2V0QXJncygpKTtcbiAgICAgICAgfSkoKTtcbiAgICAgIH0pO1xuXG4gICAgICBjb25zdCBnbG9iYWxzUHJldiA9IE9iamVjdC5rZXlzKG1vY2hhKVxuICAgICAgICAucmVkdWNlKChwLCBrZXkpID0+IE9iamVjdC5hc3NpZ24ocCwgeyBba2V5XTogZ2xvYmFsW2tleV0gfSkpO1xuICAgICAgZ2xvYmFsLml0ID0gKHRlc3ROYW1lLCBmbikgPT4gbW9jaGEuaXQoXG4gICAgICAgIHRlc3ROYW1lLFxuICAgICAgICBmbi5sZW5ndGggPT09IDAgfHwgL15bXig9XSpcXCh7Ly50ZXN0KGZuLnRvU3RyaW5nKCkpXG4gICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGZ1bmMtbmFtZXNcbiAgICAgICAgICA/IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiBmbi5jYWxsKHRoaXMsIGdldEFyZ3MoKSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBmdW5jLW5hbWVzXG4gICAgICAgICAgOiBmdW5jdGlvbiAoZG9uZSkge1xuICAgICAgICAgICAgcmV0dXJuIGZuLmNhbGwodGhpcywgZG9uZSk7XG4gICAgICAgICAgfVxuICAgICAgKTtcbiAgICAgIGdsb2JhbC5zcGVjaWZ5ID0gZ2xvYmFsLml0O1xuICAgICAgZ2xvYmFsLmRlc2NyaWJlID0gZGVzYztcbiAgICAgIGdsb2JhbC5jb250ZXh0ID0gZ2xvYmFsLmRlc2NyaWJlO1xuICAgICAgZ2xvYmFsLmJlZm9yZSA9IChmbikgPT4ge1xuICAgICAgICBiZWZvcmVDYiA9IGZuO1xuICAgICAgfTtcbiAgICAgIGdsb2JhbC5hZnRlciA9IChmbikgPT4ge1xuICAgICAgICBhZnRlckNiID0gZm47XG4gICAgICB9O1xuICAgICAgZ2xvYmFsLmJlZm9yZUVhY2ggPSAoZm4pID0+IHtcbiAgICAgICAgYmVmb3JlRWFjaENiID0gZm47XG4gICAgICB9O1xuICAgICAgZ2xvYmFsLmFmdGVyRWFjaCA9IChmbikgPT4ge1xuICAgICAgICBhZnRlckVhY2hDYiA9IGZuO1xuICAgICAgfTtcbiAgICAgIGF3YWl0IHRlc3RzLmNhbGwodGhpcyk7XG4gICAgICBPYmplY3QuZW50cmllcyhnbG9iYWxzUHJldikuZm9yRWFjaCgoW2ssIHZdKSA9PiB7XG4gICAgICAgIGdsb2JhbFtrXSA9IHY7XG4gICAgICB9KTtcbiAgICB9KSgpO1xuICB9KTtcbn07XG5tb2R1bGUuZXhwb3J0cyA9IGRlc2M7XG4iXX0=
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsL2Rlc2MuanMiXSwibmFtZXMiOlsiYXNzZXJ0IiwicmVxdWlyZSIsInBhdGgiLCJmcyIsImNhbGxzaXRlcyIsImdldCIsIm1pbmltaXN0IiwidG1wIiwiSm9pIiwiUmVxdWVzdFJlY29yZGVyIiwiRW52TWFuYWdlciIsIlRpbWVLZWVwZXIiLCJMb2dSZWNvcmRlciIsIlJhbmRvbVNlZWRlciIsImdldFBhcmVudHMiLCJnZW5DYXNzZXR0ZU5hbWUiLCJtb2NoYSIsIml0Iiwic3BlY2lmeSIsImRlc2NyaWJlIiwiY29udGV4dCIsImJlZm9yZSIsImFmdGVyIiwiYmVmb3JlRWFjaCIsImFmdGVyRWFjaCIsImRlc2MiLCJzdWl0ZU5hbWUiLCJvcHRzT3JUZXN0cyIsInRlc3RzT3JOdWxsIiwib3B0cyIsInRlc3RzIiwidGVzdEZpbGUiLCJyZXNvbHZlIiwiZ2V0RmlsZU5hbWUiLCJuYW1lIiwiam9pbiIsImRpcm5hbWUiLCJyZXBsYWNlIiwiYmFzZW5hbWUiLCJvYmplY3QiLCJrZXlzIiwidXNlVG1wRGlyIiwiYm9vbGVhbiIsIm9wdGlvbmFsIiwidXNlTm9jayIsIm5vY2tGb2xkZXIiLCJzdHJpbmciLCJmaXh0dXJlRm9sZGVyIiwiZW52VmFyc0ZpbGUiLCJlbnZWYXJzIiwidW5rbm93biIsInBhdHRlcm4iLCJ0aW1lc3RhbXAiLCJhbHRlcm5hdGl2ZXMiLCJudW1iZXIiLCJpbnRlZ2VyIiwibWluIiwiZGF0ZSIsImlzbyIsInJlY29yZCIsImFueSIsImNyeXB0b1NlZWQiLCJ0aW1lb3V0Iiwibm9ja0hlYWwiLCJwcm9jZXNzIiwiYXJndiIsInNsaWNlIiwiZGlyIiwicmVxdWVzdFJlY29yZGVyIiwiZW52TWFuYWdlckZpbGUiLCJlbnZNYW5hZ2VyRGVzYyIsInRpbWVLZWVwZXIiLCJsb2dSZWNvcmRlciIsInJhbmRvbVNlZWRlciIsImdldEFyZ3MiLCJjYXB0dXJlIiwiZm4iLCJlIiwiQXNzZXJ0aW9uRXJyb3IiLCJtZXNzYWdlIiwiZml4dHVyZSIsImZpbGVwYXRoIiwiZ3Vlc3NGaWxlIiwic21hcnRSZWFkIiwicmVjb3JkZXIiLCJ2ZXJib3NlIiwicmVzZXQiLCJiZWZvcmVDYiIsImFmdGVyQ2IiLCJiZWZvcmVFYWNoQ2IiLCJhZnRlckVhY2hDYiIsInRlc3QiLCJsZW5ndGgiLCJleGlzdHNTeW5jIiwiYWxsb3dPdmVyd3JpdGUiLCJhcHBseSIsImluamVjdCIsInNlZWQiLCJyZXNlZWQiLCJjYXNzZXR0ZUZvbGRlciIsInN0cmlwSGVhZGVycyIsInN0cmljdCIsImhlYWwiLCJjYWxsIiwic2h1dGRvd24iLCJyZWxlYXNlIiwidW5hcHBseSIsInNldEdyYWNlZnVsQ2xlYW51cCIsImRpclN5bmMiLCJrZWVwIiwidW5zYWZlQ2xlYW51cCIsImN1cnJlbnRUZXN0IiwiaW5jbHVkZXMiLCJsb2dnZXIiLCJnbG9iYWxzUHJldiIsIk9iamVjdCIsInJlZHVjZSIsInAiLCJrZXkiLCJhc3NpZ24iLCJnbG9iYWwiLCJ0ZXN0TmFtZSIsInRvU3RyaW5nIiwiZG9uZSIsImVudHJpZXMiLCJmb3JFYWNoIiwiayIsInYiLCJtb2R1bGUiLCJleHBvcnRzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxNQUFNQSxNQUFNLEdBQUdDLE9BQU8sQ0FBQyxRQUFELENBQXRCOztBQUNBLE1BQU1DLElBQUksR0FBR0QsT0FBTyxDQUFDLE1BQUQsQ0FBcEI7O0FBQ0EsTUFBTUUsRUFBRSxHQUFHRixPQUFPLENBQUMsVUFBRCxDQUFsQjs7QUFDQSxNQUFNRyxTQUFTLEdBQUdILE9BQU8sQ0FBQyxXQUFELENBQXpCOztBQUNBLE1BQU1JLEdBQUcsR0FBR0osT0FBTyxDQUFDLFlBQUQsQ0FBbkI7O0FBQ0EsTUFBTUssUUFBUSxHQUFHTCxPQUFPLENBQUMsVUFBRCxDQUF4Qjs7QUFDQSxNQUFNTSxHQUFHLEdBQUdOLE9BQU8sQ0FBQyxLQUFELENBQW5COztBQUNBLE1BQU1PLEdBQUcsR0FBR1AsT0FBTyxDQUFDLFlBQUQsQ0FBbkI7O0FBQ0EsTUFBTVEsZUFBZSxH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LENBQUMsQ0FBQ0MsQ0FBRCxFQUFJQyxDQUFKLENBQUQsS0FBWTtBQUM5Q1AsUUFBQUEsTUFBTSxDQUFDTSxDQUFELENBQU4sR0FBWUMsQ0FBWjtBQUNELE9BRkQ7QUFHRCxLQXRJTSxHQUFQO0FBdUlELEdBeElEO0FBeUlELENBck5EOztBQXNOQUMsTUFBTSxDQUFDQyxPQUFQLEdBQWlCeEcsSUFBakIiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBhc3NlcnQgPSByZXF1aXJlKCdhc3NlcnQnKTtcbmNvbnN0IHBhdGggPSByZXF1aXJlKCdwYXRoJyk7XG5jb25zdCBmcyA9IHJlcXVpcmUoJ3NtYXJ0LWZzJyk7XG5jb25zdCBjYWxsc2l0ZXMgPSByZXF1aXJlKCdjYWxsc2l0ZXMnKTtcbmNvbnN0IGdldCA9IHJlcXVpcmUoJ2xvZGFzaC5nZXQnKTtcbmNvbnN0IG1pbmltaXN0ID0gcmVxdWlyZSgnbWluaW1pc3QnKTtcbmNvbnN0IHRtcCA9IHJlcXVpcmUoJ3RtcCcpO1xuY29uc3QgSm9pID0gcmVxdWlyZSgnam9pLXN0cmljdCcpO1xuY29uc3QgUmVxdWVzdFJlY29yZGVyID0gcmVxdWlyZSgnLi4vbW9kdWxlcy9yZXF1ZXN0LXJlY29yZGVyJyk7XG5jb25zdCBFbnZNYW5hZ2VyID0gcmVxdWlyZSgnLi4vbW9kdWxlcy9lbnYtbWFuYWdlcicpO1xuY29uc3QgVGltZUtlZXBlciA9IHJlcXVpcmUoJy4uL21vZHVsZXMvdGltZS1rZWVwZXInKTtcbmNvbnN0IExvZ1JlY29yZGVyID0gcmVxdWlyZSgnLi4vbW9kdWxlcy9sb2ctcmVjb3JkZXInKTtcbmNvbnN0IFJhbmRvbVNlZWRlciA9IHJlcXVpcmUoJy4uL21vZHVsZXMvcmFuZG9tLXNlZWRlcicpO1xuY29uc3QgeyBnZXRQYXJlbnRzLCBnZW5DYXNzZXR0ZU5hbWUgfSA9IHJlcXVpcmUoJy4vbW9jaGEtdGVzdCcpO1xuXG5jb25zdCBtb2NoYSA9IHtcbiAgaXQsXG4gIHNwZWNpZnksXG4gIGRlc2NyaWJlLFxuICBjb250ZXh0LFxuICBiZWZvcmUsXG4gIGFmdGVyLFxuICBiZWZvcmVFYWNoLFxuICBhZnRlckVhY2hcbn07XG5cbmNvbnN0IGRlc2MgPSAoc3VpdGVOYW1lLCBvcHRzT3JUZXN0cywgdGVzdHNPck51bGwgPSBudWxsKSA9PiB7XG4gIGNvbnN0IG9wdHMgPSB0ZXN0c09yTnVsbCA9PT0gbnVsbCA/IHt9IDogb3B0c09yVGVzdHM7XG4gIGNvbnN0IHRlc3RzID0gdGVzdHNPck51bGwgPT09IG51bGwgPyBvcHRzT3JUZXN0cyA6IHRlc3RzT3JOdWxsO1xuXG4gIGNvbnN0IHRlc3RGaWxlID0gcGF0aC5yZXNvbHZlKGNhbGxzaXRlcygpWzFdLmdldEZpbGVOYW1lKCkpO1xuICBjb25zdCByZXNvbHZlID0gKG5hbWUpID0+IHBhdGguam9pbihcbiAgICBwYXRoLmRpcm5hbWUodGVzdEZpbGUpLFxuICAgIG5hbWUucmVwbGFjZSgvXFwkRklMRU5BTUUvZywgcGF0aC5iYXNlbmFtZSh0ZXN0RmlsZSkpXG4gICk7XG5cbiAgSm9pLmFzc2VydChvcHRzLCBKb2kub2JqZWN0KCkua2V5cyh7XG4gICAgdXNlVG1wRGlyOiBKb2kuYm9vbGVhbigpLm9wdGlvbmFsKCksXG4gICAgdXNlTm9jazogSm9pLmJvb2xlYW4oKS5vcHRpb25hbCgpLFxuICAgIG5vY2tGb2xkZXI6IEpvaS5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgIGZpeHR1cmVGb2xkZXI6IEpvaS5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgIGVudlZhcnNGaWxlOiBKb2kuc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICBlbnZWYXJzOiBKb2kub2JqZWN0KCkub3B0aW9uYWwoKS51bmtub3duKHRydWUpLnBhdHRlcm4oSm9pLnN0cmluZygpLCBKb2kuc3RyaW5nKCkpLFxuICAgIHRpbWVzdGFtcDogSm9pLmFsdGVybmF0aXZlcyhcbiAgICAgIEpvaS5udW1iZXIoKS5pbnRlZ2VyKCkubWluKDApLFxuICAgICAgSm9pLmRhdGUoKS5pc28oKVxuICAgICkub3B0aW9uYWwoKSxcbiAgICByZWNvcmQ6IEpvaS5hbnkoKS5vcHRpb25hbCgpLFxuICAgIGNyeXB0b1NlZWQ6IEpvaS5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgIHRpbWVvdXQ6IEpvaS5udW1iZXIoKS5vcHRpb25hbCgpLm1pbigwKVxuICB9KSwgJ0JhZCBPcHRpb25zIFByb3ZpZGVkJyk7XG4gIGNvbnN0IHVzZVRtcERpciA9IGdldChvcHRzLCAndXNlVG1wRGlyJywgZmFsc2UpO1xuICBjb25zdCB1c2VOb2NrID0gZ2V0KG9wdHMsICd1c2VOb2NrJywgZmFsc2UpO1xuICBjb25zdCBub2NrRm9sZGVyID0gcmVzb2x2ZShnZXQob3B0cywgJ25vY2tGb2xkZXInLCAnJEZJTEVOQU1FX19jYXNzZXR0ZXMnKSk7XG4gIGNvbnN0IGZpeHR1cmVGb2xkZXIgPSByZXNvbHZlKGdldChvcHRzLCAnZml4dHVyZUZvbGRlcicsICckRklMRU5BTUVfX2ZpeHR1cmVzJykpO1xuICBjb25zdCBlbnZWYXJzRmlsZSA9IHJlc29sdmUoZ2V0KG9wdHMsICdlbnZWYXJzRmlsZScsICckRklMRU5BTUUuZW52LnltbCcpKTtcbiAgY29uc3QgZW52VmFycyA9IGdldChvcHRzLCAnZW52VmFycycsIG51bGwpO1xuICBjb25zdCB0aW1lc3RhbXAgPSBnZXQob3B0cywgJ3RpbWVzdGFtcCcsIG51bGwpO1xuICBjb25zdCByZWNvcmQgPSBnZXQob3B0cywgJ3JlY29yZCcsIGZhbHNlKTtcbiAgY29uc3QgY3J5cHRvU2VlZCA9IGdldChvcHRzLCAnY3J5cHRvU2VlZCcsIG51bGwpO1xuICBjb25zdCB0aW1lb3V0ID0gZ2V0KG9wdHMsICd0aW1lb3V0JywgbnVsbCk7XG4gIGNvbnN0IG5vY2tIZWFsID0gZ2V0KG1pbmltaXN0KHByb2Nlc3MuYXJndi5zbGljZSgyKSksICdub2NrLWhlYWwnLCBmYWxzZSk7XG5cbiAgbGV0IGRpciA9IG51bGw7XG4gIGxldCByZXF1ZXN0UmVjb3JkZXIgPSBudWxsO1xuICBsZXQgZW52TWFuYWdlckZpbGUgPSBudWxsO1xuICBsZXQgZW52TWFuYWdlckRlc2MgPSBudWxsO1xuICBsZXQgdGltZUtlZXBlciA9IG51bGw7XG4gIGxldCBsb2dSZWNvcmRlciA9IG51bGw7XG4gIGxldCByYW5kb21TZWVkZXIgPSBudWxsO1xuXG4gIGNvbnN0IGdldEFyZ3MgPSAoKSA9PiAoe1xuICAgIGNhcHR1cmU6IGFzeW5jIChmbikgPT4ge1xuICAgICAgdHJ5IHtcbiAgICAgICAgYXdhaXQgZm4oKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgcmV0dXJuIGU7XG4gICAgICB9XG4gICAgICB0aHJvdyBuZXcgYXNzZXJ0LkFzc2VydGlvbkVycm9yKHsgbWVzc2FnZTogJ2V4cGVjdGVkIFtGdW5jdGlvbl0gdG8gdGhyb3cgYW4gZXJyb3InIH0pO1xuICAgIH0sXG4gICAgZml4dHVyZTogKG5hbWUpID0+IHtcbiAgICAgIGNvbnN0IGZpbGVwYXRoID0gZnMuZ3Vlc3NGaWxlKHBhdGguam9pbihmaXh0dXJlRm9sZGVyLCBuYW1lKSk7XG4gICAgICBpZiAoZmlsZXBhdGggPT09IG51bGwpIHtcbiAgICAgICAgdGhyb3cgbmV3IGFzc2VydC5Bc3NlcnRpb25FcnJvcih7IG1lc3NhZ2U6IGBmaXh0dXJlIFwiJHtuYW1lfVwiIG5vdCBmb3VuZCBvciBhbWJpZ3VvdXNgIH0pO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGZzLnNtYXJ0UmVhZChmaWxlcGF0aCk7XG4gICAgfSxcbiAgICAuLi4oZGlyID09PSBudWxsID8ge30gOiB7IGRpciB9KSxcbiAgICAuLi4obG9nUmVjb3JkZXIgPT09IG51bGwgPyB7fSA6IHtcbiAgICAgIHJlY29yZGVyOiB7XG4gICAgICAgIHZlcmJvc2U6IGxvZ1JlY29yZGVyLnZlcmJvc2UsXG4gICAgICAgIGdldDogbG9nUmVjb3JkZXIuZ2V0LFxuICAgICAgICByZXNldDogbG9nUmVjb3JkZXIucmVzZXRcbiAgICAgIH1cbiAgICB9KVxuICB9KTtcbiAgbGV0IGJlZm9yZUNiID0gKCkgPT4ge307XG4gIGxldCBhZnRlckNiID0gKCkgPT4ge307XG4gIGxldCBiZWZvcmVFYWNoQ2IgPSAoKSA9PiB7fTtcbiAgbGV0IGFmdGVyRWFjaENiID0gKCkgPT4ge307XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGZ1bmMtbmFtZXNcbiAgbW9jaGEuZGVzY3JpYmUoc3VpdGVOYW1lLCBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIChhc3luYyAoKSA9PiB7XG4gICAgICBpZiAodGltZW91dCAhPT0gbnVsbCkge1xuICAgICAgICB0aGlzLnRpbWVvdXQodGltZW91dCk7XG4gICAgICB9XG5cbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBmdW5jLW5hbWVzXG4gICAgICBtb2NoYS5iZWZvcmUoZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gKGFzeW5jICgpID0+IHtcbiAgICAgICAgICBpZiAoZ2V0UGFyZW50cyh0aGlzLnRlc3QpLmxlbmd0aCA9PT0gMyAmJiBmcy5leGlzdHNTeW5jKGVudlZhcnNGaWxlKSkge1xuICAgICAgICAgICAgZW52TWFuYWdlckZpbGUgPSBFbnZNYW5hZ2VyKHsgZW52VmFyczogZnMuc21hcnRSZWFkKGVudlZhcnNGaWxlKSwgYWxsb3dPdmVyd3JpdGU6IGZhbHNlIH0pO1xuICAgICAgICAgICAgZW52TWFuYWdlckZpbGUuYXBwbHkoKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGVudlZhcnMgIT09IG51bGwpIHtcbiAgICAgICAgICAgIGVudk1hbmFnZXJEZXNjID0gRW52TWFuYWdlcih7IGVudlZhcnMsIGFsbG93T3ZlcndyaXRlOiBmYWxzZSB9KTtcbiAgICAgICAgICAgIGVudk1hbmFnZXJEZXNjLmFwcGx5KCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICh0aW1lc3RhbXAgIT09IG51bGwpIHtcbiAgICAgICAgICAgIHRpbWVLZWVwZXIgPSBUaW1lS2VlcGVyKHsgdGltZXN0YW1wIH0pO1xuICAgICAgICAgICAgdGltZUtlZXBlci5pbmplY3QoKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGNyeXB0b1NlZWQgIT09IG51bGwpIHtcbiAgICAgICAgICAgIHJhbmRvbVNlZWRlciA9IFJhbmRvbVNlZWRlcih7IHNlZWQ6IGNyeXB0b1NlZWQsIHJlc2VlZDogZmFsc2UgfSk7XG4gICAgICAgICAgICByYW5kb21TZWVkZXIuaW5qZWN0KCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICh1c2VOb2NrID09PSB0cnVlKSB7XG4gICAgICAgICAgICByZXF1ZXN0UmVjb3JkZXIgPSBSZXF1ZXN0UmVjb3JkZXIoe1xuICAgICAgICAgICAgICBjYXNzZXR0ZUZvbGRlcjogYCR7bm9ja0ZvbGRlcn0vYCxcbiAgICAgICAgICAgICAgc3RyaXBIZWFkZXJzOiBmYWxzZSxcbiAgICAgICAgICAgICAgc3RyaWN0OiB0cnVlLFxuICAgICAgICAgICAgICBoZWFsOiBub2NrSGVhbFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGF3YWl0IGJlZm9yZUNiLmNhbGwodGhpcyk7XG4gICAgICAgIH0pKCk7XG4gICAgICB9KTtcblxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGZ1bmMtbmFtZXNcbiAgICAgIG1vY2hhLmFmdGVyKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIChhc3luYyAoKSA9PiB7XG4gICAgICAgICAgaWYgKHJlcXVlc3RSZWNvcmRlciAhPT0gbnVsbCkge1xuICAgICAgICAgICAgcmVxdWVzdFJlY29yZGVyLnNodXRkb3duKCk7XG4gICAgICAgICAgICByZXF1ZXN0UmVjb3JkZXIgPSBudWxsO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAocmFuZG9tU2VlZGVyICE9PSBudWxsKSB7XG4gICAgICAgICAgICByYW5kb21TZWVkZXIucmVsZWFzZSgpO1xuICAgICAgICAgICAgcmFuZG9tU2VlZGVyID0gbnVsbDtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHRpbWVLZWVwZXIgIT09IG51bGwpIHtcbiAgICAgICAgICAgIHRpbWVLZWVwZXIucmVsZWFzZSgpO1xuICAgICAgICAgICAgdGltZUtlZXBlciA9IG51bGw7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChlbnZNYW5hZ2VyRGVzYyAhPT0gbnVsbCkge1xuICAgICAgICAgICAgZW52TWFuYWdlckRlc2MudW5hcHBseSgpO1xuICAgICAgICAgICAgZW52TWFuYWdlckRlc2MgPSBudWxsO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoZW52TWFuYWdlckZpbGUgIT09IG51bGwpIHtcbiAgICAgICAgICAgIGVudk1hbmFnZXJGaWxlLnVuYXBwbHkoKTtcbiAgICAgICAgICAgIGVudk1hbmFnZXJGaWxlID0gbnVsbDtcbiAgICAgICAgICB9XG4gICAgICAgICAgYXdhaXQgYWZ0ZXJDYi5jYWxsKHRoaXMpO1xuICAgICAgICB9KSgpO1xuICAgICAgfSk7XG5cbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBmdW5jLW5hbWVzXG4gICAgICBtb2NoYS5iZWZvcmVFYWNoKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIChhc3luYyAoKSA9PiB7XG4gICAgICAgICAgaWYgKHVzZVRtcERpciA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgdG1wLnNldEdyYWNlZnVsQ2xlYW51cCgpO1xuICAgICAgICAgICAgZGlyID0gdG1wLmRpclN5bmMoeyBrZWVwOiBmYWxzZSwgdW5zYWZlQ2xlYW51cDogdHJ1ZSB9KS5uYW1lO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAodXNlTm9jayA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgYXdhaXQgcmVxdWVzdFJlY29yZGVyLmluamVjdChnZW5DYXNzZXR0ZU5hbWUodGhpcy5jdXJyZW50VGVzdCkpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAocmVjb3JkICE9PSBmYWxzZSkge1xuICAgICAgICAgICAgbG9nUmVjb3JkZXIgPSBMb2dSZWNvcmRlcih7XG4gICAgICAgICAgICAgIHZlcmJvc2U6IHByb2Nlc3MuYXJndi5zbGljZSgyKS5pbmNsdWRlcygnLS12ZXJib3NlJyksXG4gICAgICAgICAgICAgIGxvZ2dlcjogcmVjb3JkXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGxvZ1JlY29yZGVyLmluamVjdCgpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBhd2FpdCBiZWZvcmVFYWNoQ2IuY2FsbCh0aGlzLCBnZXRBcmdzKCkpO1xuICAgICAgICB9KSgpO1xuICAgICAgfSk7XG5cbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBmdW5jLW5hbWVzXG4gICAgICBtb2NoYS5hZnRlckVhY2goZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gKGFzeW5jICgpID0+IHtcbiAgICAgICAgICBpZiAobG9nUmVjb3JkZXIgIT09IG51bGwpIHtcbiAgICAgICAgICAgIGxvZ1JlY29yZGVyLnJlbGVhc2UoKTtcbiAgICAgICAgICAgIGxvZ1JlY29yZGVyID0gbnVsbDtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHJlcXVlc3RSZWNvcmRlciAhPT0gbnVsbCkge1xuICAgICAgICAgICAgYXdhaXQgcmVxdWVzdFJlY29yZGVyLnJlbGVhc2UoKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGRpciAhPT0gbnVsbCkge1xuICAgICAgICAgICAgZGlyID0gbnVsbDtcbiAgICAgICAgICB9XG4gICAgICAgICAgYXdhaXQgYWZ0ZXJFYWNoQ2IuY2FsbCh0aGlzLCBnZXRBcmdzKCkpO1xuICAgICAgICB9KSgpO1xuICAgICAgfSk7XG5cbiAgICAgIGNvbnN0IGdsb2JhbHNQcmV2ID0gT2JqZWN0LmtleXMobW9jaGEpXG4gICAgICAgIC5yZWR1Y2UoKHAsIGtleSkgPT4gT2JqZWN0LmFzc2lnbihwLCB7IFtrZXldOiBnbG9iYWxba2V5XSB9KSk7XG4gICAgICBnbG9iYWwuaXQgPSAodGVzdE5hbWUsIGZuKSA9PiBtb2NoYS5pdChcbiAgICAgICAgdGVzdE5hbWUsXG4gICAgICAgIGZuLmxlbmd0aCA9PT0gMCB8fCAvXlteKD1dKlxcKHsvLnRlc3QoZm4udG9TdHJpbmcoKSlcbiAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZnVuYy1uYW1lc1xuICAgICAgICAgID8gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIGZuLmNhbGwodGhpcywgZ2V0QXJncygpKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGZ1bmMtbmFtZXNcbiAgICAgICAgICA6IGZ1bmN0aW9uIChkb25lKSB7XG4gICAgICAgICAgICByZXR1cm4gZm4uY2FsbCh0aGlzLCBkb25lKTtcbiAgICAgICAgICB9XG4gICAgICApO1xuICAgICAgZ2xvYmFsLnNwZWNpZnkgPSBnbG9iYWwuaXQ7XG4gICAgICBnbG9iYWwuZGVzY3JpYmUgPSBkZXNjO1xuICAgICAgZ2xvYmFsLmNvbnRleHQgPSBnbG9iYWwuZGVzY3JpYmU7XG4gICAgICBnbG9iYWwuYmVmb3JlID0gKGZuKSA9PiB7XG4gICAgICAgIGJlZm9yZUNiID0gZm47XG4gICAgICB9O1xuICAgICAgZ2xvYmFsLmFmdGVyID0gKGZuKSA9PiB7XG4gICAgICAgIGFmdGVyQ2IgPSBmbjtcbiAgICAgIH07XG4gICAgICBnbG9iYWwuYmVmb3JlRWFjaCA9IChmbikgPT4ge1xuICAgICAgICBiZWZvcmVFYWNoQ2IgPSBmbjtcbiAgICAgIH07XG4gICAgICBnbG9iYWwuYWZ0ZXJFYWNoID0gKGZuKSA9PiB7XG4gICAgICAgIGFmdGVyRWFjaENiID0gZm47XG4gICAgICB9O1xuICAgICAgYXdhaXQgdGVzdHMuY2FsbCh0aGlzKTtcbiAgICAgIE9iamVjdC5lbnRyaWVzKGdsb2JhbHNQcmV2KS5mb3JFYWNoKChbaywgdl0pID0+IHtcbiAgICAgICAgZ2xvYmFsW2tdID0gdjtcbiAgICAgIH0pO1xuICAgIH0pKCk7XG4gIH0pO1xufTtcbm1vZHVsZS5leHBvcnRzID0gZGVzYztcbiJdfQ==
{
"name": "node-tdd",
"version": "2.11.5",
"version": "2.12.0",
"description": "Drop in extension for mocha to abstract commonly used test setups",

@@ -47,5 +47,5 @@ "main": "lib/index.js",

"@babel/register": "7.10.1",
"@blackflux/eslint-plugin-rules": "1.3.29",
"@blackflux/eslint-plugin-rules": "1.3.30",
"@blackflux/robo-config-plugin": "3.4.11",
"aws-sdk": "2.698.0",
"aws-sdk": "2.699.0",
"aws-sdk-wrap": "4.4.7",

@@ -62,3 +62,3 @@ "babel-eslint": "10.1.0",

"fancy-log": "1.3.3",
"js-gardener": "2.0.162",
"js-gardener": "2.0.164",
"lambda-monitor-logger": "2.4.0",

@@ -65,0 +65,0 @@ "nyc": "15.1.0",

@@ -82,8 +82,12 @@ # node-tdd

- `--nock-heal`: Will try to heal ordering of nock cassette recordings
- `--nock-heal body`: Will try to heal bodies of nock cassette recordings (ordering is expected to be correct)
- `--nock-heal path`: Will try to heal paths of nock cassette recordings (ordering is expected to be correct)
- `--nock-heal response`: Will try to heal responses (ordering is expected to be correct)
- `--nock-heal magic`: Will try to heal bodies, paths and responses of nock cassette recordings (ordering is expected to be correct)
- `--nock-heal prune`: Will remove unmatched recordings from nock cassette
- `--nock-heal body`: Will try to heal bodies of nock cassette recordings
- `--nock-heal path`: Will try to heal paths of nock cassette recordings
- `--nock-heal response`: Will try to heal responses
- `--nock-heal record`: Will record the next unmatched request
- `--nock-heal magic`: Shorthand for `prune,body,path,response,record`
Note, different flags can be combined as e.g. `--nock-heal body,path`.
Notes:
- Different flags can be combined as e.g. `--nock-heal body,path`
- Healing cassettes containing out-of-order requests can result in undesired behaviour

@@ -90,0 +94,0 @@ ### Options

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc