New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

teen_process

Package Overview
Dependencies
Maintainers
8
Versions
163
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

teen_process - npm Package Compare versions

Comparing version 1.15.0 to 1.16.0

build/lib/helpers.js

10

build/lib/exec.js

@@ -21,2 +21,4 @@ "use strict";

var _helpers = require("./helpers");
const MAX_BUFFER_SIZE = 100 * 1024 * 1024;

@@ -50,9 +52,7 @@

proc.on('error', err => {
let msg = `Command '${rep}' errored out: ${err.stack}`;
if (err.errno === 'ENOENT') {
msg = `Command '${cmd}' not found. Is it installed?`;
err = (0, _helpers.formatEnoent)(err, cmd, opts.cwd);
}
reject(new Error(msg));
reject(err);
});

@@ -176,2 +176,2 @@

//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9leGVjLmpzIl0sIm5hbWVzIjpbIk1BWF9CVUZGRVJfU0laRSIsImV4ZWMiLCJjbWQiLCJhcmdzIiwib3B0cyIsInJlcCIsIk9iamVjdCIsImFzc2lnbiIsInRpbWVvdXQiLCJlbmNvZGluZyIsImtpbGxTaWduYWwiLCJjd2QiLCJ1bmRlZmluZWQiLCJlbnYiLCJwcm9jZXNzIiwiaWdub3JlT3V0cHV0Iiwic3RkaW8iLCJpc0J1ZmZlciIsInNoZWxsIiwibG9nZ2VyIiwibWF4U3Rkb3V0QnVmZmVyU2l6ZSIsIm1heFN0ZGVyckJ1ZmZlclNpemUiLCJCIiwicmVzb2x2ZSIsInJlamVjdCIsInByb2MiLCJzdGRvdXRBcnIiLCJzdGRlcnJBcnIiLCJ0aW1lciIsIm9uIiwiZXJyIiwibXNnIiwic3RhY2siLCJlcnJubyIsIkVycm9yIiwic3RkaW4iLCJzeXNjYWxsIiwiaGFuZGxlU3RyZWFtIiwic3RyZWFtVHlwZSIsInN0cmVhbVByb3BzIiwiXyIsImNhcGl0YWxpemUiLCJjaHVua3MiLCJtYXhTaXplIiwic2l6ZSIsImNodW5rIiwicHVzaCIsImxlbmd0aCIsInNoaWZ0IiwiaXNGdW5jdGlvbiIsImRlYnVnIiwidG9TdHJpbmciLCJnZXRTdGRpbyIsInN0ZG91dCIsInN0ZGVyciIsIkJ1ZmZlciIsImNvbmNhdCIsImNvZGUiLCJjbGVhclRpbWVvdXQiLCJzZXRUaW1lb3V0Iiwia2lsbCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBRUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBRUEsTUFBTUEsZUFBZSxHQUFHLE1BQU0sSUFBTixHQUFhLElBQXJDOztBQUVBLGVBQWVDLElBQWYsQ0FBcUJDLEdBQXJCLEVBQTBCQyxJQUFJLEdBQUcsRUFBakMsRUFBcUNDLElBQUksR0FBRyxFQUE1QyxFQUFnRDtBQUU5QyxRQUFNQyxHQUFHLEdBQUcsdUJBQU0sQ0FBQ0gsR0FBRCxFQUFNLEdBQUdDLElBQVQsQ0FBTixDQUFaO0FBSUFDLEVBQUFBLElBQUksR0FBR0Us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O0FBQ2hCb0IsTUFBQUEsS0FBSyxHQUFHK0IsVUFBVSxDQUFDLE1BQU07QUFDdkIsWUFBSTtBQUFDTixVQUFBQSxNQUFEO0FBQVNDLFVBQUFBO0FBQVQsWUFBbUJGLFFBQVEsQ0FBQ2hELElBQUksQ0FBQ2EsUUFBTixDQUEvQjtBQUNBLFlBQUlhLEdBQUcsR0FBRyxJQUFJSSxLQUFKLENBQVcsWUFBVzdCLEdBQUkscUJBQW9CRCxJQUFJLENBQUNJLE9BQVEsSUFBM0QsQ0FBVjtBQUNBc0IsUUFBQUEsR0FBRyxHQUFHeEIsTUFBTSxDQUFDQyxNQUFQLENBQWN1QixHQUFkLEVBQW1CO0FBQUN1QixVQUFBQSxNQUFEO0FBQVNDLFVBQUFBLE1BQVQ7QUFBaUJHLFVBQUFBLElBQUksRUFBRTtBQUF2QixTQUFuQixDQUFOO0FBQ0FqQyxRQUFBQSxNQUFNLENBQUNNLEdBQUQsQ0FBTjtBQUdBTCxRQUFBQSxJQUFJLENBQUNtQyxJQUFMLENBQVV4RCxJQUFJLENBQUNNLFVBQWY7QUFDRCxPQVJpQixFQVFmTixJQUFJLENBQUNJLE9BUlUsQ0FBbEI7QUFTRDtBQUNGLEdBckdZLENBQWI7QUFzR0Q7O2VBR2NQLEkiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBwcm9taXNlL3ByZWZlci1hd2FpdC10by1jYWxsYmFja3MgKi9cblxuaW1wb3J0IHsgc3Bhd24gfSBmcm9tICdjaGlsZF9wcm9jZXNzJztcbmltcG9ydCB7IHF1b3RlIH0gZnJvbSAnc2hlbGwtcXVvdGUnO1xuaW1wb3J0IEIgZnJvbSAnYmx1ZWJpcmQnO1xuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcblxuY29uc3QgTUFYX0JVRkZFUl9TSVpFID0gMTAwICogMTAyNCAqIDEwMjQ7XG5cbmFzeW5jIGZ1bmN0aW9uIGV4ZWMgKGNtZCwgYXJncyA9IFtdLCBvcHRzID0ge30pIHtcbiAgLy8gZ2V0IGEgcXVvdGVkIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBjb21tYW5kIGZvciBlcnJvciBzdHJpbmdzXG4gIGNvbnN0IHJlcCA9IHF1b3RlKFtjbWQsIC4uLmFyZ3NdKTtcblxuICAvLyBleHRlbmQgZGVmYXVsdCBvcHRpb25zOyB3ZSdyZSBiYXNpY2FsbHkgcmUtaW1wbGVtZW50aW5nIGV4ZWMncyBvcHRpb25zXG4gIC8vIGZvciB1c2UgaGVyZSB3aXRoIHNwYXduIHVuZGVyIHRoZSBob29kXG4gIG9wdHMgPSBPYmplY3QuYXNzaWduKHtcbiAgICB0aW1lb3V0OiBudWxsLFxuICAgIGVuY29kaW5nOiAndXRmOCcsXG4gICAga2lsbFNpZ25hbDogJ1NJR1RFUk0nLFxuICAgIGN3ZDogdW5kZWZpbmVkLFxuICAgIGVudjogcHJvY2Vzcy5lbnYsXG4gICAgaWdub3JlT3V0cHV0OiBmYWxzZSxcbiAgICBzdGRpbzogJ2luaGVyaXQnLFxuICAgIGlzQnVmZmVyOiBmYWxzZSxcbiAgICBzaGVsbDogdW5kZWZpbmVkLFxuICAgIGxvZ2dlcjogdW5kZWZpbmVkLFxuICAgIG1heFN0ZG91dEJ1ZmZlclNpemU6IE1BWF9CVUZGRVJfU0laRSxcbiAgICBtYXhTdGRlcnJCdWZmZXJTaXplOiBNQVhfQlVGRkVSX1NJWkUsXG4gIH0sIG9wdHMpO1xuXG4gIC8vIHRoaXMgaXMgYW4gYXN5bmMgZnVuY3Rpb24sIHNvIHJldHVybiBhIHByb21pc2VcbiAgcmV0dXJuIGF3YWl0IG5ldyBCKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAvLyBzcGF3biB0aGUgY2hpbGQgcHJvY2VzcyB3aXRoIG9wdGlvbnM7IHdlIGRvbid0IGN1cnJlbnRseSBleHBvc2UgYW55IG9mXG4gICAgLy8gdGhlIG90aGVyICdzcGF3bicgb3B0aW9ucyB0aHJvdWdoIHRoZSBBUElcbiAgICBsZXQgcHJvYyA9IHNwYXduKGNtZCwgYXJncywge2N3ZDogb3B0cy5jd2QsIGVudjogb3B0cy5lbnYsIHNoZWxsOiBvcHRzLnNoZWxsfSk7XG4gICAgbGV0IHN0ZG91dEFyciA9IFtdLCBzdGRlcnJBcnIgPSBbXSwgdGltZXIgPSBudWxsO1xuXG4gICAgLy8gaWYgdGhlIHByb2Nlc3MgZXJyb3JzIG91dCwgcmVqZWN0IHRoZSBwcm9taXNlXG4gICAgcHJvYy5vbignZXJyb3InLCAoZXJyKSA9PiB7XG4gICAgICBsZXQgbXNnID0gYENvbW1hbmQgJyR7cmVwfScgZXJyb3JlZCBvdXQ6ICR7ZXJyLnN0YWNrfWA7XG4gICAgICBpZiAoZXJyLmVycm5vID09PSAnRU5PRU5UJykge1xuICAgICAgICBtc2cgPSBgQ29tbWFuZCAnJHtjbWR9JyBub3QgZm91bmQuIElzIGl0IGluc3RhbGxlZD9gO1xuICAgICAgfVxuICAgICAgcmVqZWN0KG5ldyBFcnJvcihtc2cpKTtcbiAgICB9KTtcbiAgICBpZiAocHJvYy5zdGRpbikge1xuICAgICAgcHJvYy5zdGRpbi5vbignZXJyb3InLCAoZXJyKSA9PiB7XG4gICAgICAgIHJlamVjdChuZXcgRXJyb3IoYFN0YW5kYXJkIGlucHV0ICcke2Vyci5zeXNjYWxsfScgZXJyb3I6ICR7ZXJyLnN0YWNrfWApKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgICBjb25zdCBoYW5kbGVTdHJlYW0gPSAoc3RyZWFtVHlwZSwgc3RyZWFtUHJvcHMpID0+IHtcbiAgICAgIGlmICghcHJvY1tzdHJlYW1UeXBlXSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHByb2Nbc3RyZWFtVHlwZV0ub24oJ2Vycm9yJywgKGVycikgPT4ge1xuICAgICAgICByZWplY3QobmV3IEVycm9yKGAke18uY2FwaXRhbGl6ZShzdHJlYW1UeXBlKX0gJyR7ZXJyLnN5c2NhbGx9JyBlcnJvcjogJHtlcnIuc3RhY2t9YCkpO1xuICAgICAgfSk7XG5cbiAgICAgIGlmIChvcHRzLmlnbm9yZU91dHB1dCkge1xuICAgICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vbm9kZWpzL25vZGUvaXNzdWVzLzQyMzZcbiAgICAgICAgcHJvY1tzdHJlYW1UeXBlXS5vbignZGF0YScsICgpID0+IHt9KTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICAvLyBrZWVwIHRyYWNrIG9mIHRoZSBzdHJlYW0gaWYgd2UgZG9uJ3Qgd2FudCB0byBpZ25vcmUgaXRcbiAgICAgIGNvbnN0IHtjaHVua3MsIG1heFNpemV9ID0gc3RyZWFtUHJvcHM7XG4gICAgICBsZXQgc2l6ZSA9IDA7XG4gICAgICBwcm9jW3N0cmVhbVR5cGVdLm9uKCdkYXRhJywgKGNodW5rKSA9PiB7XG4gICAgICAgIGNodW5rcy5wdXNoKGNodW5rKTtcbiAgICAgICAgc2l6ZSArPSBjaHVuay5sZW5ndGg7XG4gICAgICAgIHdoaWxlIChjaHVua3MubGVuZ3RoID4gMSAmJiBzaXplID49IG1heFNpemUpIHtcbiAgICAgICAgICBzaXplIC09IGNodW5rc1swXS5sZW5ndGg7XG4gICAgICAgICAgY2h1bmtzLnNoaWZ0KCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG9wdHMubG9nZ2VyICYmIF8uaXNGdW5jdGlvbihvcHRzLmxvZ2dlci5kZWJ1ZykpIHtcbiAgICAgICAgICBvcHRzLmxvZ2dlci5kZWJ1ZyhjaHVuay50b1N0cmluZygpKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfTtcbiAgICBoYW5kbGVTdHJlYW0oJ3N0ZG91dCcsIHtcbiAgICAgIG1heFNpemU6IG9wdHMubWF4U3Rkb3V0QnVmZmVyU2l6ZSxcbiAgICAgIGNodW5rczogc3Rkb3V0QXJyLFxuICAgIH0pO1xuICAgIGhhbmRsZVN0cmVhbSgnc3RkZXJyJywge1xuICAgICAgbWF4U2l6ZTogb3B0cy5tYXhTdGRlcnJCdWZmZXJTaXplLFxuICAgICAgY2h1bmtzOiBzdGRlcnJBcnIsXG4gICAgfSk7XG5cbiAgICBmdW5jdGlvbiBnZXRTdGRpbyAoaXNCdWZmZXIpIHtcbiAgICAgIGxldCBzdGRvdXQsIHN0ZGVycjtcbiAgICAgIGlmIChpc0J1ZmZlcikge1xuICAgICAgICBzdGRvdXQgPSBCdWZmZXIuY29uY2F0KHN0ZG91dEFycik7XG4gICAgICAgIHN0ZGVyciA9IEJ1ZmZlci5jb25jYXQoc3RkZXJyQXJyKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHN0ZG91dCA9IEJ1ZmZlci5jb25jYXQoc3Rkb3V0QXJyKS50b1N0cmluZyhvcHRzLmVuY29kaW5nKTtcbiAgICAgICAgc3RkZXJyID0gQnVmZmVyLmNvbmNhdChzdGRlcnJBcnIpLnRvU3RyaW5nKG9wdHMuZW5jb2RpbmcpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHtzdGRvdXQsIHN0ZGVycn07XG4gICAgfVxuXG4gICAgLy8gaWYgdGhlIHByb2Nlc3MgZW5kcywgZWl0aGVyIHJlc29sdmUgb3IgcmVqZWN0IHRoZSBwcm9taXNlIGJhc2VkIG9uIHRoZVxuICAgIC8vIGV4aXQgY29kZSBvZiB0aGUgcHJvY2Vzcy4gZWl0aGVyIHdheSwgYXR0YWNoIHN0ZG91dCwgc3RkZXJyLCBhbmQgY29kZS5cbiAgICAvLyBBbHNvIGNsZWFuIHVwIHRoZSB0aW1lciBpZiBpdCBleGlzdHNcbiAgICBwcm9jLm9uKCdjbG9zZScsIChjb2RlKSA9PiB7XG4gICAgICBpZiAodGltZXIpIHtcbiAgICAgICAgY2xlYXJUaW1lb3V0KHRpbWVyKTtcbiAgICAgIH1cbiAgICAgIGxldCB7c3Rkb3V0LCBzdGRlcnJ9ID0gZ2V0U3RkaW8ob3B0cy5pc0J1ZmZlcik7XG4gICAgICBpZiAoY29kZSA9PT0gMCkge1xuICAgICAgICByZXNvbHZlKHtzdGRvdXQsIHN0ZGVyciwgY29kZX0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbGV0IGVyciA9IG5ldyBFcnJvcihgQ29tbWFuZCAnJHtyZXB9JyBleGl0ZWQgd2l0aCBjb2RlICR7Y29kZX1gKTtcbiAgICAgICAgZXJyID0gT2JqZWN0LmFzc2lnbihlcnIsIHtzdGRvdXQsIHN0ZGVyciwgY29kZX0pO1xuICAgICAgICByZWplY3QoZXJyKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIC8vIGlmIHdlIHNldCBhIHRpbWVvdXQgb24gdGhlIGNoaWxkIHByb2Nlc3MsIGN1dCBpbnRvIHRoZSBleGVjdXRpb24gYW5kXG4gICAgLy8gcmVqZWN0IGlmIHRoZSB0aW1lb3V0IGlzIHJlYWNoZWQuIEF0dGFjaCB0aGUgc3Rkb3V0L3N0ZGVyciB3ZSBjdXJyZW50bHlcbiAgICAvLyBoYXZlIGluIGNhc2UgaXQncyBoZWxwZnVsIGluIGRlYnVnZ2luZ1xuICAgIGlmIChvcHRzLnRpbWVvdXQpIHtcbiAgICAgIHRpbWVyID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIGxldCB7c3Rkb3V0LCBzdGRlcnJ9ID0gZ2V0U3RkaW8ob3B0cy5pc0J1ZmZlcik7XG4gICAgICAgIGxldCBlcnIgPSBuZXcgRXJyb3IoYENvbW1hbmQgJyR7cmVwfScgdGltZWQgb3V0IGFmdGVyICR7b3B0cy50aW1lb3V0fW1zYCk7XG4gICAgICAgIGVyciA9IE9iamVjdC5hc3NpZ24oZXJyLCB7c3Rkb3V0LCBzdGRlcnIsIGNvZGU6IG51bGx9KTtcbiAgICAgICAgcmVqZWN0KGVycik7XG4gICAgICAgIC8vIHJlamVjdCBhbmQgVEhFTiBraWxsIHRvIGF2b2lkIHJhY2UgY29uZGl0aW9ucyB3aXRoIHRoZSBoYW5kbGVyc1xuICAgICAgICAvLyBhYm92ZVxuICAgICAgICBwcm9jLmtpbGwob3B0cy5raWxsU2lnbmFsKTtcbiAgICAgIH0sIG9wdHMudGltZW91dCk7XG4gICAgfVxuICB9KTtcbn1cblxuZXhwb3J0IHsgZXhlYyB9O1xuZXhwb3J0IGRlZmF1bHQgZXhlYztcbiJdLCJmaWxlIjoibGliL2V4ZWMuanMiLCJzb3VyY2VSb290IjoiLi4vLi4ifQ==
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9leGVjLmpzIl0sIm5hbWVzIjpbIk1BWF9CVUZGRVJfU0laRSIsImV4ZWMiLCJjbWQiLCJhcmdzIiwib3B0cyIsInJlcCIsIk9iamVjdCIsImFzc2lnbiIsInRpbWVvdXQiLCJlbmNvZGluZyIsImtpbGxTaWduYWwiLCJjd2QiLCJ1bmRlZmluZWQiLCJlbnYiLCJwcm9jZXNzIiwiaWdub3JlT3V0cHV0Iiwic3RkaW8iLCJpc0J1ZmZlciIsInNoZWxsIiwibG9nZ2VyIiwibWF4U3Rkb3V0QnVmZmVyU2l6ZSIsIm1heFN0ZGVyckJ1ZmZlclNpemUiLCJCIiwicmVzb2x2ZSIsInJlamVjdCIsInByb2MiLCJzdGRvdXRBcnIiLCJzdGRlcnJBcnIiLCJ0aW1lciIsIm9uIiwiZXJyIiwiZXJybm8iLCJzdGRpbiIsIkVycm9yIiwic3lzY2FsbCIsInN0YWNrIiwiaGFuZGxlU3RyZWFtIiwic3RyZWFtVHlwZSIsInN0cmVhbVByb3BzIiwiXyIsImNhcGl0YWxpemUiLCJjaHVua3MiLCJtYXhTaXplIiwic2l6ZSIsImNodW5rIiwicHVzaCIsImxlbmd0aCIsInNoaWZ0IiwiaXNGdW5jdGlvbiIsImRlYnVnIiwidG9TdHJpbmciLCJnZXRTdGRpbyIsInN0ZG91dCIsInN0ZGVyciIsIkJ1ZmZlciIsImNvbmNhdCIsImNvZGUiLCJjbGVhclRpbWVvdXQiLCJzZXRUaW1lb3V0Iiwia2lsbCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBRUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBRUEsTUFBTUEsZUFBZSxHQUFHLE1BQU0sSUFBTixHQUFhLElBQXJDOztBQUVBLGVBQWVDLElBQWYsQ0FBcUJDLEdBQXJCLEVBQTBCQyxJQUFJLEdBQUcsRUFBakMsRUFBcUNDLElBQUksR0FBRyxFQUE1QyxFQUFnRDtBQUU5QyxRQUFNQyxHQUFHLEdBQUcsdUJBQU0sQ0FBQ0gsR0FBRCxFQUFNLEdBQUdDLElBQVQsQ0FBTixDQUFaO0FBSUFDLEVBQUFBLElBQUksR0FBR0Us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QUFBQ04sVUFBQUEsTUFBRDtBQUFTQyxVQUFBQTtBQUFULFlBQW1CRixRQUFRLENBQUMvQyxJQUFJLENBQUNhLFFBQU4sQ0FBL0I7QUFDQSxZQUFJYSxHQUFHLEdBQUcsSUFBSUcsS0FBSixDQUFXLFlBQVc1QixHQUFJLHFCQUFvQkQsSUFBSSxDQUFDSSxPQUFRLElBQTNELENBQVY7QUFDQXNCLFFBQUFBLEdBQUcsR0FBR3hCLE1BQU0sQ0FBQ0MsTUFBUCxDQUFjdUIsR0FBZCxFQUFtQjtBQUFDc0IsVUFBQUEsTUFBRDtBQUFTQyxVQUFBQSxNQUFUO0FBQWlCRyxVQUFBQSxJQUFJLEVBQUU7QUFBdkIsU0FBbkIsQ0FBTjtBQUNBaEMsUUFBQUEsTUFBTSxDQUFDTSxHQUFELENBQU47QUFHQUwsUUFBQUEsSUFBSSxDQUFDa0MsSUFBTCxDQUFVdkQsSUFBSSxDQUFDTSxVQUFmO0FBQ0QsT0FSaUIsRUFRZk4sSUFBSSxDQUFDSSxPQVJVLENBQWxCO0FBU0Q7QUFDRixHQXBHWSxDQUFiO0FBcUdEOztlQUdjUCxJIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgcHJvbWlzZS9wcmVmZXItYXdhaXQtdG8tY2FsbGJhY2tzICovXG5cbmltcG9ydCB7IHNwYXduIH0gZnJvbSAnY2hpbGRfcHJvY2Vzcyc7XG5pbXBvcnQgeyBxdW90ZSB9IGZyb20gJ3NoZWxsLXF1b3RlJztcbmltcG9ydCBCIGZyb20gJ2JsdWViaXJkJztcbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBmb3JtYXRFbm9lbnQgfSBmcm9tICcuL2hlbHBlcnMnO1xuXG5jb25zdCBNQVhfQlVGRkVSX1NJWkUgPSAxMDAgKiAxMDI0ICogMTAyNDtcblxuYXN5bmMgZnVuY3Rpb24gZXhlYyAoY21kLCBhcmdzID0gW10sIG9wdHMgPSB7fSkge1xuICAvLyBnZXQgYSBxdW90ZWQgcmVwcmVzZW50YXRpb24gb2YgdGhlIGNvbW1hbmQgZm9yIGVycm9yIHN0cmluZ3NcbiAgY29uc3QgcmVwID0gcXVvdGUoW2NtZCwgLi4uYXJnc10pO1xuXG4gIC8vIGV4dGVuZCBkZWZhdWx0IG9wdGlvbnM7IHdlJ3JlIGJhc2ljYWxseSByZS1pbXBsZW1lbnRpbmcgZXhlYydzIG9wdGlvbnNcbiAgLy8gZm9yIHVzZSBoZXJlIHdpdGggc3Bhd24gdW5kZXIgdGhlIGhvb2RcbiAgb3B0cyA9IE9iamVjdC5hc3NpZ24oe1xuICAgIHRpbWVvdXQ6IG51bGwsXG4gICAgZW5jb2Rpbmc6ICd1dGY4JyxcbiAgICBraWxsU2lnbmFsOiAnU0lHVEVSTScsXG4gICAgY3dkOiB1bmRlZmluZWQsXG4gICAgZW52OiBwcm9jZXNzLmVudixcbiAgICBpZ25vcmVPdXRwdXQ6IGZhbHNlLFxuICAgIHN0ZGlvOiAnaW5oZXJpdCcsXG4gICAgaXNCdWZmZXI6IGZhbHNlLFxuICAgIHNoZWxsOiB1bmRlZmluZWQsXG4gICAgbG9nZ2VyOiB1bmRlZmluZWQsXG4gICAgbWF4U3Rkb3V0QnVmZmVyU2l6ZTogTUFYX0JVRkZFUl9TSVpFLFxuICAgIG1heFN0ZGVyckJ1ZmZlclNpemU6IE1BWF9CVUZGRVJfU0laRSxcbiAgfSwgb3B0cyk7XG5cbiAgLy8gdGhpcyBpcyBhbiBhc3luYyBmdW5jdGlvbiwgc28gcmV0dXJuIGEgcHJvbWlzZVxuICByZXR1cm4gYXdhaXQgbmV3IEIoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIC8vIHNwYXduIHRoZSBjaGlsZCBwcm9jZXNzIHdpdGggb3B0aW9uczsgd2UgZG9uJ3QgY3VycmVudGx5IGV4cG9zZSBhbnkgb2ZcbiAgICAvLyB0aGUgb3RoZXIgJ3NwYXduJyBvcHRpb25zIHRocm91Z2ggdGhlIEFQSVxuICAgIGxldCBwcm9jID0gc3Bhd24oY21kLCBhcmdzLCB7Y3dkOiBvcHRzLmN3ZCwgZW52OiBvcHRzLmVudiwgc2hlbGw6IG9wdHMuc2hlbGx9KTtcbiAgICBsZXQgc3Rkb3V0QXJyID0gW10sIHN0ZGVyckFyciA9IFtdLCB0aW1lciA9IG51bGw7XG5cbiAgICAvLyBpZiB0aGUgcHJvY2VzcyBlcnJvcnMgb3V0LCByZWplY3QgdGhlIHByb21pc2VcbiAgICBwcm9jLm9uKCdlcnJvcicsIChlcnIpID0+IHtcbiAgICAgIGlmIChlcnIuZXJybm8gPT09ICdFTk9FTlQnKSB7XG4gICAgICAgIGVyciA9IGZvcm1hdEVub2VudChlcnIsIGNtZCwgb3B0cy5jd2QpO1xuICAgICAgfVxuICAgICAgcmVqZWN0KGVycik7XG4gICAgfSk7XG4gICAgaWYgKHByb2Muc3RkaW4pIHtcbiAgICAgIHByb2Muc3RkaW4ub24oJ2Vycm9yJywgKGVycikgPT4ge1xuICAgICAgICByZWplY3QobmV3IEVycm9yKGBTdGFuZGFyZCBpbnB1dCAnJHtlcnIuc3lzY2FsbH0nIGVycm9yOiAke2Vyci5zdGFja31gKSk7XG4gICAgICB9KTtcbiAgICB9XG4gICAgY29uc3QgaGFuZGxlU3RyZWFtID0gKHN0cmVhbVR5cGUsIHN0cmVhbVByb3BzKSA9PiB7XG4gICAgICBpZiAoIXByb2Nbc3RyZWFtVHlwZV0pIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBwcm9jW3N0cmVhbVR5cGVdLm9uKCdlcnJvcicsIChlcnIpID0+IHtcbiAgICAgICAgcmVqZWN0KG5ldyBFcnJvcihgJHtfLmNhcGl0YWxpemUoc3RyZWFtVHlwZSl9ICcke2Vyci5zeXNjYWxsfScgZXJyb3I6ICR7ZXJyLnN0YWNrfWApKTtcbiAgICAgIH0pO1xuXG4gICAgICBpZiAob3B0cy5pZ25vcmVPdXRwdXQpIHtcbiAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL25vZGVqcy9ub2RlL2lzc3Vlcy80MjM2XG4gICAgICAgIHByb2Nbc3RyZWFtVHlwZV0ub24oJ2RhdGEnLCAoKSA9PiB7fSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgLy8ga2VlcCB0cmFjayBvZiB0aGUgc3RyZWFtIGlmIHdlIGRvbid0IHdhbnQgdG8gaWdub3JlIGl0XG4gICAgICBjb25zdCB7Y2h1bmtzLCBtYXhTaXplfSA9IHN0cmVhbVByb3BzO1xuICAgICAgbGV0IHNpemUgPSAwO1xuICAgICAgcHJvY1tzdHJlYW1UeXBlXS5vbignZGF0YScsIChjaHVuaykgPT4ge1xuICAgICAgICBjaHVua3MucHVzaChjaHVuayk7XG4gICAgICAgIHNpemUgKz0gY2h1bmsubGVuZ3RoO1xuICAgICAgICB3aGlsZSAoY2h1bmtzLmxlbmd0aCA+IDEgJiYgc2l6ZSA+PSBtYXhTaXplKSB7XG4gICAgICAgICAgc2l6ZSAtPSBjaHVua3NbMF0ubGVuZ3RoO1xuICAgICAgICAgIGNodW5rcy5zaGlmdCgpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChvcHRzLmxvZ2dlciAmJiBfLmlzRnVuY3Rpb24ob3B0cy5sb2dnZXIuZGVidWcpKSB7XG4gICAgICAgICAgb3B0cy5sb2dnZXIuZGVidWcoY2h1bmsudG9TdHJpbmcoKSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH07XG4gICAgaGFuZGxlU3RyZWFtKCdzdGRvdXQnLCB7XG4gICAgICBtYXhTaXplOiBvcHRzLm1heFN0ZG91dEJ1ZmZlclNpemUsXG4gICAgICBjaHVua3M6IHN0ZG91dEFycixcbiAgICB9KTtcbiAgICBoYW5kbGVTdHJlYW0oJ3N0ZGVycicsIHtcbiAgICAgIG1heFNpemU6IG9wdHMubWF4U3RkZXJyQnVmZmVyU2l6ZSxcbiAgICAgIGNodW5rczogc3RkZXJyQXJyLFxuICAgIH0pO1xuXG4gICAgZnVuY3Rpb24gZ2V0U3RkaW8gKGlzQnVmZmVyKSB7XG4gICAgICBsZXQgc3Rkb3V0LCBzdGRlcnI7XG4gICAgICBpZiAoaXNCdWZmZXIpIHtcbiAgICAgICAgc3Rkb3V0ID0gQnVmZmVyLmNvbmNhdChzdGRvdXRBcnIpO1xuICAgICAgICBzdGRlcnIgPSBCdWZmZXIuY29uY2F0KHN0ZGVyckFycik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzdGRvdXQgPSBCdWZmZXIuY29uY2F0KHN0ZG91dEFycikudG9TdHJpbmcob3B0cy5lbmNvZGluZyk7XG4gICAgICAgIHN0ZGVyciA9IEJ1ZmZlci5jb25jYXQoc3RkZXJyQXJyKS50b1N0cmluZyhvcHRzLmVuY29kaW5nKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB7c3Rkb3V0LCBzdGRlcnJ9O1xuICAgIH1cblxuICAgIC8vIGlmIHRoZSBwcm9jZXNzIGVuZHMsIGVpdGhlciByZXNvbHZlIG9yIHJlamVjdCB0aGUgcHJvbWlzZSBiYXNlZCBvbiB0aGVcbiAgICAvLyBleGl0IGNvZGUgb2YgdGhlIHByb2Nlc3MuIGVpdGhlciB3YXksIGF0dGFjaCBzdGRvdXQsIHN0ZGVyciwgYW5kIGNvZGUuXG4gICAgLy8gQWxzbyBjbGVhbiB1cCB0aGUgdGltZXIgaWYgaXQgZXhpc3RzXG4gICAgcHJvYy5vbignY2xvc2UnLCAoY29kZSkgPT4ge1xuICAgICAgaWYgKHRpbWVyKSB7XG4gICAgICAgIGNsZWFyVGltZW91dCh0aW1lcik7XG4gICAgICB9XG4gICAgICBsZXQge3N0ZG91dCwgc3RkZXJyfSA9IGdldFN0ZGlvKG9wdHMuaXNCdWZmZXIpO1xuICAgICAgaWYgKGNvZGUgPT09IDApIHtcbiAgICAgICAgcmVzb2x2ZSh7c3Rkb3V0LCBzdGRlcnIsIGNvZGV9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGxldCBlcnIgPSBuZXcgRXJyb3IoYENvbW1hbmQgJyR7cmVwfScgZXhpdGVkIHdpdGggY29kZSAke2NvZGV9YCk7XG4gICAgICAgIGVyciA9IE9iamVjdC5hc3NpZ24oZXJyLCB7c3Rkb3V0LCBzdGRlcnIsIGNvZGV9KTtcbiAgICAgICAgcmVqZWN0KGVycik7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICAvLyBpZiB3ZSBzZXQgYSB0aW1lb3V0IG9uIHRoZSBjaGlsZCBwcm9jZXNzLCBjdXQgaW50byB0aGUgZXhlY3V0aW9uIGFuZFxuICAgIC8vIHJlamVjdCBpZiB0aGUgdGltZW91dCBpcyByZWFjaGVkLiBBdHRhY2ggdGhlIHN0ZG91dC9zdGRlcnIgd2UgY3VycmVudGx5XG4gICAgLy8gaGF2ZSBpbiBjYXNlIGl0J3MgaGVscGZ1bCBpbiBkZWJ1Z2dpbmdcbiAgICBpZiAob3B0cy50aW1lb3V0KSB7XG4gICAgICB0aW1lciA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBsZXQge3N0ZG91dCwgc3RkZXJyfSA9IGdldFN0ZGlvKG9wdHMuaXNCdWZmZXIpO1xuICAgICAgICBsZXQgZXJyID0gbmV3IEVycm9yKGBDb21tYW5kICcke3JlcH0nIHRpbWVkIG91dCBhZnRlciAke29wdHMudGltZW91dH1tc2ApO1xuICAgICAgICBlcnIgPSBPYmplY3QuYXNzaWduKGVyciwge3N0ZG91dCwgc3RkZXJyLCBjb2RlOiBudWxsfSk7XG4gICAgICAgIHJlamVjdChlcnIpO1xuICAgICAgICAvLyByZWplY3QgYW5kIFRIRU4ga2lsbCB0byBhdm9pZCByYWNlIGNvbmRpdGlvbnMgd2l0aCB0aGUgaGFuZGxlcnNcbiAgICAgICAgLy8gYWJvdmVcbiAgICAgICAgcHJvYy5raWxsKG9wdHMua2lsbFNpZ25hbCk7XG4gICAgICB9LCBvcHRzLnRpbWVvdXQpO1xuICAgIH1cbiAgfSk7XG59XG5cbmV4cG9ydCB7IGV4ZWMgfTtcbmV4cG9ydCBkZWZhdWx0IGV4ZWM7XG4iXSwiZmlsZSI6ImxpYi9leGVjLmpzIiwic291cmNlUm9vdCI6Ii4uLy4uIn0=

@@ -22,2 +22,4 @@ "use strict";

var _helpers = require("./helpers");
const {

@@ -148,3 +150,5 @@ EventEmitter

if (err.errno === 'ENOENT') {
err = new Error(`Command '${this.cmd}' not found. Is it installed?`);
var _this$opts;
err = (0, _helpers.formatEnoent)(err, this.cmd, (_this$opts = this.opts) === null || _this$opts === void 0 ? void 0 : _this$opts.cwd);
}

@@ -265,2 +269,2 @@

//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9zdWJwcm9jZXNzLmpzIl0sIm5hbWVzIjpbIkV2ZW50RW1pdHRlciIsImV2ZW50cyIsIk1BWF9MSU5FX1BPUlRJT05fTEVOR1RIIiwiY3V0U3VmZml4Iiwic3RyIiwic3VmZml4TGVuZ3RoIiwibGVuZ3RoIiwic3Vic3RyIiwiU3ViUHJvY2VzcyIsImNvbnN0cnVjdG9yIiwiY21kIiwiYXJncyIsIm9wdHMiLCJFcnJvciIsIl8iLCJpc1N0cmluZyIsImlzQXJyYXkiLCJwcm9jIiwiZXhwZWN0aW5nRXhpdCIsInJlcCIsImlzUnVubmluZyIsImVtaXRMaW5lcyIsInN0cmVhbSIsImxpbmVzIiwibGluZSIsImVtaXQiLCJ0b1VwcGVyQ2FzZSIsInN0YXJ0Iiwic3RhcnREZXRlY3RvciIsInRpbWVvdXRNcyIsImRldGFjaCIsInN0YXJ0RGVsYXkiLCJnZW5lcmljU3RhcnREZXRlY3RvciIsInN0ZG91dCIsInN0ZGVyciIsImlzTnVtYmVyIiwiaXNCb29sZWFuIiwiZGV0YWNoZWQiLCJCIiwicmVzb2x2ZSIsInJlamVjdCIsInNldEVuY29kaW5nIiwiZW5jb2RpbmciLCJsYXN0TGluZVBvcnRpb24iLCJoYW5kbGVPdXRwdXQiLCJzdHJlYW1zIiwiZSIsInN0cmVhbU5hbWUiLCJzdHJlYW1EYXRhIiwidG9QYWlycyIsInNwbGl0IiwibWFwIiwieCIsImxhc3QiLCJyZXN1bHRMaW5lcyIsInNsaWNlIiwiY3VycmVudFBvcnRpb24iLCJvbiIsImVyciIsInJlbW92ZUFsbExpc3RlbmVycyIsImtpbGwiLCJlcnJubyIsImNodW5rIiwidG9TdHJpbmciLCJjb2RlIiwic2lnbmFsIiwiaGFuZGxlTGFzdExpbmVzIiwiZXZlbnQiLCJzZXRUaW1lb3V0IiwiZmluYWxseSIsInVucmVmIiwibGFzdExpbmVzIiwic3RvcCIsInRpbWVvdXQiLCJqb2luIiwiYWxsb3dlZEV4aXRDb2RlcyIsImluZGV4T2YiLCJkZXRhY2hQcm9jZXNzIiwicGlkIl0sIm1hcHBpbmdzIjoi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UCxLQUFKLENBQVcsMkRBQTBELEtBQUtNLEdBQUksSUFBOUUsQ0FBTjtBQUNEOztBQUVELFdBQU8sTUFBTSxJQUFJbUIsaUJBQUosQ0FBTSxDQUFDQyxPQUFELEVBQVVDLE1BQVYsS0FBcUI7QUFDdEMsV0FBS3ZCLElBQUwsQ0FBVXdDLEVBQVYsQ0FBYSxNQUFiLEVBQXNCTyxJQUFELElBQVU7QUFDN0IsWUFBSVcsZ0JBQWdCLENBQUNDLE9BQWpCLENBQXlCWixJQUF6QixNQUFtQyxDQUFDLENBQXhDLEVBQTJDO0FBQ3pDeEIsVUFBQUEsTUFBTSxDQUFDLElBQUkzQixLQUFKLENBQVcsK0JBQThCbUQsSUFBSyxXQUFVLEtBQUs3QyxHQUFJLElBQWpFLENBQUQsQ0FBTjtBQUNELFNBRkQsTUFFTztBQUNMb0IsVUFBQUEsT0FBTyxDQUFDeUIsSUFBRCxDQUFQO0FBQ0Q7QUFDRixPQU5EO0FBT0QsS0FSWSxDQUFiO0FBU0Q7O0FBS0RhLEVBQUFBLGFBQWEsR0FBSTtBQUNmLFFBQUksQ0FBQyxLQUFLakUsSUFBTCxDQUFVeUIsUUFBZixFQUF5QjtBQUV2QixZQUFNLElBQUl4QixLQUFKLENBQVcscUVBQVgsQ0FBTjtBQUNEOztBQUNELFFBQUksS0FBS0ksSUFBVCxFQUFlO0FBQ2IsV0FBS0EsSUFBTCxDQUFVcUQsS0FBVjtBQUNEO0FBQ0Y7O0FBRUQsTUFBSVEsR0FBSixHQUFXO0FBQ1QsV0FBTyxLQUFLN0QsSUFBTCxHQUFZLEtBQUtBLElBQUwsQ0FBVTZELEdBQXRCLEdBQTRCLElBQW5DO0FBQ0Q7O0FBcFBtQzs7O2VBd1B2QnRFLFUiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBwcm9taXNlL3ByZWZlci1hd2FpdC10by1jYWxsYmFja3MgKi9cblxuaW1wb3J0IHsgc3Bhd24gfSBmcm9tICdjaGlsZF9wcm9jZXNzJztcbmltcG9ydCBldmVudHMgZnJvbSAnZXZlbnRzJztcbmNvbnN0IHsgRXZlbnRFbWl0dGVyIH0gPSBldmVudHM7XG5pbXBvcnQgQiBmcm9tICdibHVlYmlyZCc7XG5pbXBvcnQgeyBxdW90ZSB9IGZyb20gJ3NoZWxsLXF1b3RlJztcbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5cbi8vIFRoaXMgaXMgbmVlZGVkIHRvIGF2b2lkIG1lbW9yeSBsZWFrc1xuLy8gd2hlbiB0aGUgcHJvY2VzcyBvdXRwdXQgaXMgdG9vIGxvbmcgYW5kIGNvbnRhaW5zXG4vLyBubyBsaW5lIGJyZWFrc1xuY29uc3QgTUFYX0xJTkVfUE9SVElPTl9MRU5HVEggPSAweEZGRkY7XG5cbmZ1bmN0aW9uIGN1dFN1ZmZpeCAoc3RyLCBzdWZmaXhMZW5ndGgpIHtcbiAgcmV0dXJuIHN0ci5sZW5ndGggPiBzdWZmaXhMZW5ndGhcbiAgICAvLyBodHRwczovL2J1Z3MuY2hyb21pdW0ub3JnL3AvdjgvaXNzdWVzL2RldGFpbD9pZD0yODY5XG4gICAgPyBgICR7c3RyLnN1YnN0cihzdHIubGVuZ3RoIC0gc3VmZml4TGVuZ3RoKX1gLnN1YnN0cigxKVxuICAgIDogc3RyO1xufVxuXG5cbmNsYXNzIFN1YlByb2Nlc3MgZXh0ZW5kcyBFdmVudEVtaXR0ZXIge1xuICBjb25zdHJ1Y3RvciAoY21kLCBhcmdzID0gW10sIG9wdHMgPSB7fSkge1xuICAgIHN1cGVyKCk7XG4gICAgaWYgKCFjbWQpIHRocm93IG5ldyBFcnJvcignQ29tbWFuZCBpcyByZXF1aXJlZCcpOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIGN1cmx5XG4gICAgaWYgKCFfLmlzU3RyaW5nKGNtZCkpIHRocm93IG5ldyBFcnJvcignQ29tbWFuZCBtdXN0IGJlIGEgc3RyaW5nJyk7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgY3VybHlcbiAgICBpZiAoIV8uaXNBcnJheShhcmdzKSkgdGhyb3cgbmV3IEVycm9yKCdBcmdzIG11c3QgYmUgYW4gYXJyYXknKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBjdXJseVxuXG4gICAgdGhpcy5jbWQgPSBjbWQ7XG4gICAgdGhpcy5hcmdzID0gYXJncztcbiAgICB0aGlzLnByb2MgPSBudWxsO1xuICAgIHRoaXMub3B0cyA9IG9wdHM7XG4gICAgdGhpcy5leHBlY3RpbmdFeGl0ID0gZmFsc2U7XG5cbiAgICAvLyBnZXQgYSBxdW90ZWQgcmVwcmVzZW50YXRpb24gb2YgdGhlIGNvbW1hbmQgZm9yIGVycm9yIHN0cmluZ3NcbiAgICB0aGlzLnJlcCA9IHF1b3RlKFtjbWQsIC4uLmFyZ3NdKTtcbiAgfVxuXG4gIGdldCBpc1J1bm5pbmcgKCkge1xuICAgIC8vIHByZXNlbmNlIG9mIGBwcm9jYCBtZWFucyB3ZSBoYXZlIGNvbm5lY3RlZCBhbmQgc3RhcnRlZFxuICAgIHJldHVybiAhIXRoaXMucHJvYztcbiAgfVxuXG4gIGVtaXRMaW5lcyAoc3RyZWFtLCBsaW5lcykge1xuICAgIGZvciAobGV0IGxpbmUgb2YgbGluZXMpIHtcbiAgICAgIHRoaXMuZW1pdCgnc3RyZWFtLWxpbmUnLCBgWyR7c3RyZWFtLnRvVXBwZXJDYXNlKCl9XSAke2xpbmV9YCk7XG4gICAgfVxuICB9XG5cbiAgLy8gc3Bhd24gdGhlIHN1YnByb2Nlc3MgYW5kIHJldHVybiBjb250cm9sIHdoZW5ldmVyIHdlIGRlZW0gdGhhdCBpdCBoYXMgZnVsbHlcbiAgLy8gXCJzdGFydGVkXCJcbiAgYXN5bmMgc3RhcnQgKHN0YXJ0RGV0ZWN0b3IgPSBudWxsLCB0aW1lb3V0TXMgPSBudWxsLCBkZXRhY2ggPSBmYWxzZSkge1xuICAgIGxldCBzdGFydERlbGF5ID0gMTA7XG5cbiAgICBjb25zdCBnZW5lcmljU3RhcnREZXRlY3RvciA9IGZ1bmN0aW9uIGdlbmVyaWNTdGFydERldGVjdG9yIChzdGRvdXQsIHN0ZGVycikge1xuICAgICAgcmV0dXJuIHN0ZG91dCB8fCBzdGRlcnI7XG4gICAgfTtcblxuICAgIC8vIHRoZSBkZWZhdWx0IHN0YXJ0IGRldGVjdG9yIHNpbXBseSByZXR1cm5zIHRydWUgd2hlbiB3ZSBnZXQgYW55IG91dHB1dFxuICAgIGlmIChzdGFydERldGVjdG9yID09PSBudWxsKSB7XG4gICAgICBzdGFydERldGVjdG9yID0gZ2VuZXJpY1N0YXJ0RGV0ZWN0b3I7XG4gICAgfVxuXG4gICAgLy8gaWYgdGhlIHVzZXIgcGFzc2VzIGEgbnVtYmVyLCB0aGVuIHdlIHNpbXBseSBkZWxheSBhIGNlcnRhaW4gYW1vdW50IG9mXG4gICAgLy8gdGltZSBiZWZvcmUgcmV0dXJuaW5nIGNvbnRyb2wsIHJhdGhlciB0aGFuIHdhaXRpbmcgZm9yIGEgY29uZGl0aW9uXG4gICAgaWYgKF8uaXNOdW1iZXIoc3RhcnREZXRlY3RvcikpIHtcbiAgICAgIHN0YXJ0RGVsYXkgPSBzdGFydERldGVjdG9yO1xuICAgICAgc3RhcnREZXRlY3RvciA9IG51bGw7XG4gICAgfVxuXG4gICAgLy8gaWYgdGhlIHVzZXIgcGFzc2VzIGluIGEgYm9vbGVhbiBhcyBvbmUgb2YgdGhlIGFyZ3VtZW50cywgdXNlIGl0IGZvciBgZGV0YWNoYFxuICAgIGlmIChfLmlzQm9vbGVhbihzdGFydERldGVjdG9yKSAmJiBzdGFydERldGVjdG9yKSB7XG4gICAgICBpZiAoIXRoaXMub3B0cy5kZXRhY2hlZCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFVuYWJsZSB0byBkZXRhY2ggcHJvY2VzcyB0aGF0IGlzIG5vdCBzdGFydGVkIHdpdGggJ2RldGFjaGVkJyBvcHRpb25gKTtcbiAgICAgIH1cbiAgICAgIGRldGFjaCA9IHRydWU7XG4gICAgICBzdGFydERldGVjdG9yID0gZ2VuZXJpY1N0YXJ0RGV0ZWN0b3I7XG4gICAgfSBlbHNlIGlmIChfLmlzQm9vbGVhbih0aW1lb3V0TXMpICYmIHRpbWVvdXRNcykge1xuICAgICAgaWYgKCF0aGlzLm9wdHMuZGV0YWNoZWQpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbmFibGUgdG8gZGV0YWNoIHByb2Nlc3MgdGhhdCBpcyBub3Qgc3RhcnRlZCB3aXRoICdkZXRhY2hlZCcgb3B0aW9uYCk7XG4gICAgICB9XG4gICAgICBkZXRhY2ggPSB0cnVlO1xuICAgICAgdGltZW91dE1zID0gbnVsbDtcbiAgICB9XG5cbiAgICAvLyByZXR1cm4gYSBwcm9taXNlIHNvIHdlIGNhbiB3cmFwIHRoZSBhc3luYyBiZWhhdmlvclxuICAgIHJldHVybiBhd2FpdCBuZXcgQigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAvLyBhY3R1YWxseSBzcGF3biB0aGUgc3VicHJvY1xuICAgICAgdGhpcy5wcm9jID0gc3Bhd24odGhpcy5jbWQsIHRoaXMuYXJncywgdGhpcy5vcHRzKTtcblxuICAgICAgaWYgKHRoaXMucHJvYy5zdGRvdXQpIHtcbiAgICAgICAgdGhpcy5wcm9jLnN0ZG91dC5zZXRFbmNvZGluZyh0aGlzLm9wdHMuZW5jb2RpbmcgfHwgJ3V0ZjgnKTtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLnByb2Muc3RkZXJyKSB7XG4gICAgICAgIHRoaXMucHJvYy5zdGRlcnIuc2V0RW5jb2RpbmcodGhpcy5vcHRzLmVuY29kaW5nIHx8ICd1dGY4Jyk7XG4gICAgICB9XG4gICAgICB0aGlzLmxhc3RMaW5lUG9ydGlvbiA9IHtzdGRvdXQ6ICcnLCBzdGRlcnI6ICcnfTtcblxuICAgICAgLy8gdGhpcyBmdW5jdGlvbiBoYW5kbGVzIG91dHB1dCB0aGF0IHdlIGNvbGxlY3QgZnJvbSB0aGUgc3VicHJvY1xuICAgICAgY29uc3QgaGFuZGxlT3V0cHV0ID0gKHN0cmVhbXMpID0+IHtcbiAgICAgICAgY29uc3Qge3N0ZG91dCwgc3RkZXJyfSA9IHN0cmVhbXM7XG4gICAgICAgIC8vIGlmIHdlIGhhdmUgYSBzdGFydERldGVjdG9yLCBydW4gaXQgb24gdGhlIG91dHB1dCBzbyB3ZSBjYW4gcmVzb2x2ZS9cbiAgICAgICAgLy8gcmVqZWN0IGFuZCBtb3ZlIG9uIGZyb20gc3RhcnRcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBpZiAoc3RhcnREZXRlY3RvciAmJiBzdGFydERldGVjdG9yKHN0ZG91dCwgc3RkZXJyKSkge1xuICAgICAgICAgICAgc3RhcnREZXRlY3RvciA9IG51bGw7XG4gICAgICAgICAgICByZXNvbHZlKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgcmVqZWN0KGUpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gZW1pdCB0aGUgYWN0dWFsIG91dHB1dCBmb3Igd2hvbWV2ZXIncyBsaXN0ZW5pbmdcbiAgICAgICAgdGhpcy5lbWl0KCdvdXRwdXQnLCBzdGRvdXQsIHN0ZGVycik7XG5cbiAgICAgICAgLy8gd2UgYWxzbyB3YW50IHRvIGVtaXQgbGluZXMsIGJ1dCBpdCdzIG1vcmUgY29tcGxleCBzaW5jZSBvdXRwdXRcbiAgICAgICAgLy8gY29tZXMgaW4gY2h1bmtzIGFuZCBhIGxpbmUgY291bGQgY29tZSBpbiB0d28gZGlmZmVyZW50IGNodW5rcywgc29cbiAgICAgICAgLy8gd2UgaGF2ZSBsb2dpYyB0byBoYW5kbGUgdGhhdCBjYXNlICh1c2luZyB0aGlzLmxhc3RMaW5lUG9ydGlvbiB0b1xuICAgICAgICAvLyByZW1lbWJlciBhIGxpbmUgdGhhdCBzdGFydGVkIGJ1dCBkaWQgbm90IGZpbmlzaCBpbiB0aGUgbGFzdCBjaHVuaylcbiAgICAgICAgZm9yIChjb25zdCBbc3RyZWFtTmFtZSwgc3RyZWFtRGF0YV0gb2YgXy50b1BhaXJzKHN0cmVhbXMpKSB7XG4gICAgICAgICAgaWYgKCFzdHJlYW1EYXRhKSBjb250aW51ZTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBjdXJseVxuICAgICAgICAgIGNvbnN0IGxpbmVzID0gc3RyZWFtRGF0YS5zcGxpdCgnXFxuJylcbiAgICAgICAgICAgIC8vIGh0dHBzOi8vYnVncy5jaHJvbWl1bS5vcmcvcC92OC9pc3N1ZXMvZGV0YWlsP2lkPTI4NjlcbiAgICAgICAgICAgIC5tYXAoKHgpID0+IGAgJHt4fWAuc3Vic3RyKDEpKTtcbiAgICAgICAgICBpZiAobGluZXMubGVuZ3RoID4gMSkge1xuICAgICAgICAgICAgbGluZXNbMF0gPSB0aGlzLmxhc3RMaW5lUG9ydGlvbltzdHJlYW1OYW1lXSArIGxpbmVzWzBdO1xuICAgICAgICAgICAgdGhpcy5sYXN0TGluZVBvcnRpb25bc3RyZWFtTmFtZV0gPSBjdXRTdWZmaXgoXy5sYXN0KGxpbmVzKSwgTUFYX0xJTkVfUE9SVElPTl9MRU5HVEgpO1xuICAgICAgICAgICAgY29uc3QgcmVzdWx0TGluZXMgPSBsaW5lcy5zbGljZSgwLCAtMSk7XG4gICAgICAgICAgICB0aGlzLmVtaXQoYGxpbmVzLSR7c3RyZWFtTmFtZX1gLCByZXN1bHRMaW5lcyk7XG4gICAgICAgICAgICB0aGlzLmVtaXRMaW5lcyhzdHJlYW1OYW1lLCByZXN1bHRMaW5lcyk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRQb3J0aW9uID0gY3V0U3VmZml4KGxpbmVzWzBdLCBNQVhfTElORV9QT1JUSU9OX0xFTkdUSCk7XG4gICAgICAgICAgICBpZiAodGhpcy5sYXN0TGluZVBvcnRpb25bc3RyZWFtTmFtZV0ubGVuZ3RoICsgY3VycmVudFBvcnRpb24ubGVuZ3RoID4gTUFYX0xJTkVfUE9SVElPTl9MRU5HVEgpIHtcbiAgICAgICAgICAgICAgdGhpcy5sYXN0TGluZVBvcnRpb25bc3RyZWFtTmFtZV0gPSBjdXJyZW50UG9ydGlvbjtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHRoaXMubGFzdExpbmVQb3J0aW9uW3N0cmVhbU5hbWVdICs9IGN1cnJlbnRQb3J0aW9uO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfTtcblxuICAgICAgLy8gaWYgd2UgZ2V0IGFuIGVycm9yIHNwYXduaW5nIHRoZSBwcm9jLCByZWplY3QgYW5kIGNsZWFuIHVwIHRoZSBwcm9jXG4gICAgICB0aGlzLnByb2Mub24oJ2Vycm9yJywgZXJyID0+IHtcbiAgICAgICAgdGhpcy5wcm9jLnJlbW92ZUFsbExpc3RlbmVycygnZXhpdCcpO1xuICAgICAgICB0aGlzLnByb2Mua2lsbCgnU0lHSU5UJyk7XG5cbiAgICAgICAgaWYgKGVyci5lcnJubyA9PT0gJ0VOT0VOVCcpIHtcbiAgICAgICAgICBlcnIgPSBuZXcgRXJyb3IoYENvbW1hbmQgJyR7dGhpcy5jbWR9JyBub3QgZm91bmQuIElzIGl0IGluc3RhbGxlZD9gKTtcbiAgICAgICAgfVxuICAgICAgICByZWplY3QoZXJyKTtcbiAgICAgIH0pO1xuXG4gICAgICBpZiAodGhpcy5wcm9jLnN0ZG91dCkge1xuICAgICAgICB0aGlzLnByb2Muc3Rkb3V0Lm9uKCdkYXRhJywgKGNodW5rKSA9PiBoYW5kbGVPdXRwdXQoe3N0ZG91dDogY2h1bmsudG9TdHJpbmcoKSwgc3RkZXJyOiAnJ30pKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMucHJvYy5zdGRlcnIpIHtcbiAgICAgICAgdGhpcy5wcm9jLnN0ZGVyci5vbignZGF0YScsIChjaHVuaykgPT4gaGFuZGxlT3V0cHV0KHtzdGRvdXQ6ICcnLCBzdGRlcnI6IGNodW5rLnRvU3RyaW5nKCl9KSk7XG4gICAgICB9XG5cbiAgICAgIC8vIHdoZW4gdGhlIHByb2MgZXhpdHMsIHdlIG1pZ2h0IHN0aWxsIGhhdmUgYSBidWZmZXIgb2YgbGluZXMgd2Ugd2VyZVxuICAgICAgLy8gd2FpdGluZyBvbiBtb3JlIGNodW5rcyB0byBjb21wbGV0ZS4gR28gYWhlYWQgYW5kIGVtaXQgdGhvc2UsIHRoZW5cbiAgICAgIC8vIHJlLWVtaXQgdGhlIGV4aXQgc28gYSBsaXN0ZW5lciBjYW4gaGFuZGxlIHRoZSBwb3NzaWJseS11bmV4cGVjdGVkIGV4aXRcbiAgICAgIHRoaXMucHJvYy5vbignZXhpdCcsIChjb2RlLCBzaWduYWwpID0+IHtcbiAgICAgICAgdGhpcy5oYW5kbGVMYXN0TGluZXMoKTtcblxuICAgICAgICB0aGlzLmVtaXQoJ2V4aXQnLCBjb2RlLCBzaWduYWwpO1xuXG4gICAgICAgIC8vIGluIGFkZGl0aW9uIHRvIHRoZSBiYXJlIGV4aXQgZXZlbnQsIGFsc28gZW1pdCBvbmUgb2YgdGhyZWUgb3RoZXJcbiAgICAgICAgLy8gZXZlbnRzIHRoYXQgY29udGFpbiBtb3JlIGhlbHBmdWwgaW5mb3JtYXRpb246XG4gICAgICAgIC8vICdzdG9wJzogd2Ugc3RvcHBlZCB0aGlzXG4gICAgICAgIC8vICdkaWUnOiB0aGUgcHJvY2VzcyBlbmRlZCBvdXQgb2Ygb3VyIGNvbnRyb2wgd2l0aCBhIG5vbi16ZXJvIGV4aXRcbiAgICAgICAgLy8gJ2VuZCc6IHRoZSBwcm9jZXNzIGVuZGVkIG91dCBvZiBvdXIgY29udHJvbCB3aXRoIGEgemVybyBleGl0XG4gICAgICAgIGxldCBldmVudCA9IHRoaXMuZXhwZWN0aW5nRXhpdCA/ICdzdG9wJyA6ICdkaWUnO1xuICAgICAgICBpZiAoIXRoaXMuZXhwZWN0aW5nRXhpdCAmJiBjb2RlID09PSAwKSB7XG4gICAgICAgICAgZXZlbnQgPSAnZW5kJztcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmVtaXQoZXZlbnQsIGNvZGUsIHNpZ25hbCk7XG5cbiAgICAgICAgLy8gZmluYWxseSBjbGVhbiB1cCB0aGUgcHJvYyBhbmQgbWFrZSBzdXJlIHRvIHJlc2V0IG91ciBleGl0XG4gICAgICAgIC8vIGV4cGVjdGF0aW9uc1xuICAgICAgICB0aGlzLnByb2MgPSBudWxsO1xuICAgICAgICB0aGlzLmV4cGVjdGluZ0V4aXQgPSBmYWxzZTtcbiAgICAgIH0pO1xuXG4gICAgICAvLyBpZiB0aGUgdXNlciBoYXNuJ3QgZ2l2ZW4gdXMgYSBzdGFydERldGVjdG9yLCBpbnN0ZWFkIGp1c3QgcmVzb2x2ZVxuICAgICAgLy8gd2hlbiBzdGFydERlbGF5IG1zIGhhdmUgcGFzc2VkXG4gICAgICBpZiAoIXN0YXJ0RGV0ZWN0b3IpIHtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7IHJlc29sdmUoKTsgfSwgc3RhcnREZWxheSk7XG4gICAgICB9XG5cbiAgICAgIC8vIGlmIHRoZSB1c2VyIGhhcyBnaXZlbiB1cyBhIHRpbWVvdXQsIHN0YXJ0IHRoZSBjbG9jayBmb3IgcmVqZWN0aW5nXG4gICAgICAvLyB0aGUgcHJvbWlzZSBpZiB3ZSB0YWtlIHRvbyBsb25nIHRvIHN0YXJ0XG4gICAgICBpZiAoXy5pc051bWJlcih0aW1lb3V0TXMpKSB7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIHJlamVjdChuZXcgRXJyb3IoYFRoZSBwcm9jZXNzIGRpZCBub3Qgc3RhcnQgd2l0aGluICR7dGltZW91dE1zfW1zIGAgK1xuICAgICAgICAgICAgYChjbWQ6ICcke3RoaXMucmVwfScpYCkpO1xuICAgICAgICB9LCB0aW1lb3V0TXMpO1xuICAgICAgfVxuICAgIH0pLmZpbmFsbHkoKCkgPT4ge1xuICAgICAgaWYgKGRldGFjaCAmJiB0aGlzLnByb2MpIHtcbiAgICAgICAgdGhpcy5wcm9jLnVucmVmKCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBoYW5kbGVMYXN0TGluZXMgKCkge1xuICAgIGZvciAobGV0IHN0cmVhbSBvZiBbJ3N0ZG91dCcsICdzdGRlcnInXSkge1xuICAgICAgaWYgKHRoaXMubGFzdExpbmVQb3J0aW9uW3N0cmVhbV0pIHtcbiAgICAgICAgY29uc3QgbGFzdExpbmVzID0gW3RoaXMubGFzdExpbmVQb3J0aW9uW3N0cmVhbV1dO1xuICAgICAgICB0aGlzLmVtaXQoYGxpbmVzLSR7c3RyZWFtfWAsIGxhc3RMaW5lcyk7XG4gICAgICAgIHRoaXMuZW1pdExpbmVzKHN0cmVhbSwgbGFzdExpbmVzKTtcbiAgICAgICAgdGhpcy5sYXN0TGluZVBvcnRpb25bc3RyZWFtXSA9ICcnO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGFzeW5jIHN0b3AgKHNpZ25hbCA9ICdTSUdURVJNJywgdGltZW91dCA9IDEwMDAwKSB7XG4gICAgaWYgKCF0aGlzLmlzUnVubmluZykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBDYW4ndCBzdG9wIHByb2Nlc3M7IGl0J3Mgbm90IGN1cnJlbnRseSBydW5uaW5nIChjbWQ6ICcke3RoaXMucmVwfScpYCk7XG4gICAgfVxuICAgIC8vIG1ha2Ugc3VyZSB0byBlbWl0IGFueSBkYXRhIGluIG91ciBsaW5lcyBidWZmZXIgd2hlbmV2ZXIgd2UncmUgZG9uZSB3aXRoXG4gICAgLy8gdGhlIHByb2NcbiAgICB0aGlzLmhhbmRsZUxhc3RMaW5lcygpO1xuICAgIHJldHVybiBhd2FpdCBuZXcgQigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICB0aGlzLnByb2Mub24oJ2Nsb3NlJywgcmVzb2x2ZSk7XG4gICAgICB0aGlzLmV4cGVjdGluZ0V4aXQgPSB0cnVlO1xuICAgICAgdGhpcy5wcm9jLmtpbGwoc2lnbmFsKTtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICByZWplY3QobmV3IEVycm9yKGBQcm9jZXNzIGRpZG4ndCBlbmQgYWZ0ZXIgJHt0aW1lb3V0fW1zIChjbWQ6ICcke3RoaXMucmVwfScpYCkpO1xuICAgICAgfSwgdGltZW91dCk7XG4gICAgfSk7XG4gIH1cblxuICBhc3luYyBqb2luIChhbGxvd2VkRXhpdENvZGVzID0gWzBdKSB7XG4gICAgaWYgKCF0aGlzLmlzUnVubmluZykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBDYW5ub3Qgam9pbiBwcm9jZXNzOyBpdCBpcyBub3QgY3VycmVudGx5IHJ1bm5pbmcgKGNtZDogJyR7dGhpcy5yZXB9JylgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gYXdhaXQgbmV3IEIoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgdGhpcy5wcm9jLm9uKCdleGl0JywgKGNvZGUpID0+IHtcbiAgICAgICAgaWYgKGFsbG93ZWRFeGl0Q29kZXMuaW5kZXhPZihjb2RlKSA9PT0gLTEpIHtcbiAgICAgICAgICByZWplY3QobmV3IEVycm9yKGBQcm9jZXNzIGVuZGVkIHdpdGggZXhpdGNvZGUgJHtjb2RlfSAoY21kOiAnJHt0aGlzLnJlcH0nKWApKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXNvbHZlKGNvZGUpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qXG4gICAqIFRoaXMgd2lsbCBvbmx5IHdvcmsgaWYgdGhlIHByb2Nlc3MgaXMgY3JlYXRlZCB3aXRoIHRoZSBgZGV0YWNoZWRgIG9wdGlvblxuICAgKi9cbiAgZGV0YWNoUHJvY2VzcyAoKSB7XG4gICAgaWYgKCF0aGlzLm9wdHMuZGV0YWNoZWQpIHtcbiAgICAgIC8vIHRoaXMgbWVhbnMgdGhhdCB0aGVyZSBpcyBhIG1pc2NvbmZpZ3VyYXRpb24gaW4gdGhlIGNhbGxpbmcgY29kZVxuICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbmFibGUgdG8gZGV0YWNoIHByb2Nlc3MgdGhhdCBpcyBub3Qgc3RhcnRlZCB3aXRoICdkZXRhY2hlZCcgb3B0aW9uYCk7XG4gICAgfVxuICAgIGlmICh0aGlzLnByb2MpIHtcbiAgICAgIHRoaXMucHJvYy51bnJlZigpO1xuICAgIH1cbiAgfVxuXG4gIGdldCBwaWQgKCkge1xuICAgIHJldHVybiB0aGlzLnByb2MgPyB0aGlzLnByb2MucGlkIDogbnVsbDtcbiAgfVxufVxuXG5leHBvcnQgeyBTdWJQcm9jZXNzIH07XG5leHBvcnQgZGVmYXVsdCBTdWJQcm9jZXNzO1xuIl0sImZpbGUiOiJsaWIvc3VicHJvY2Vzcy5qcyIsInNvdXJjZVJvb3QiOiIuLi8uLiJ9
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9zdWJwcm9jZXNzLmpzIl0sIm5hbWVzIjpbIkV2ZW50RW1pdHRlciIsImV2ZW50cyIsIk1BWF9MSU5FX1BPUlRJT05fTEVOR1RIIiwiY3V0U3VmZml4Iiwic3RyIiwic3VmZml4TGVuZ3RoIiwibGVuZ3RoIiwic3Vic3RyIiwiU3ViUHJvY2VzcyIsImNvbnN0cnVjdG9yIiwiY21kIiwiYXJncyIsIm9wdHMiLCJFcnJvciIsIl8iLCJpc1N0cmluZyIsImlzQXJyYXkiLCJwcm9jIiwiZXhwZWN0aW5nRXhpdCIsInJlcCIsImlzUnVubmluZyIsImVtaXRMaW5lcyIsInN0cmVhbSIsImxpbmVzIiwibGluZSIsImVtaXQiLCJ0b1VwcGVyQ2FzZSIsInN0YXJ0Iiwic3RhcnREZXRlY3RvciIsInRpbWVvdXRNcyIsImRldGFjaCIsInN0YXJ0RGVsYXkiLCJnZW5lcmljU3RhcnREZXRlY3RvciIsInN0ZG91dCIsInN0ZGVyciIsImlzTnVtYmVyIiwiaXNCb29sZWFuIiwiZGV0YWNoZWQiLCJCIiwicmVzb2x2ZSIsInJlamVjdCIsInNldEVuY29kaW5nIiwiZW5jb2RpbmciLCJsYXN0TGluZVBvcnRpb24iLCJoYW5kbGVPdXRwdXQiLCJzdHJlYW1zIiwiZSIsInN0cmVhbU5hbWUiLCJzdHJlYW1EYXRhIiwidG9QYWlycyIsInNwbGl0IiwibWFwIiwieCIsImxhc3QiLCJyZXN1bHRMaW5lcyIsInNsaWNlIiwiY3VycmVudFBvcnRpb24iLCJvbiIsImVyciIsInJlbW92ZUFsbExpc3RlbmVycyIsImtpbGwiLCJlcnJubyIsImN3ZCIsImNodW5rIiwidG9TdHJpbmciLCJjb2RlIiwic2lnbmFsIiwiaGFuZGxlTGFzdExpbmVzIiwiZXZlbnQiLCJzZXRUaW1lb3V0IiwiZmluYWxseSIsInVucmVmIiwibGFzdExpbmVzIiwic3RvcCIsInRpbWVvdXQiLCJqb2luIiwiYWxsb3dlZEV4aXRDb2RlcyIsImluZGV4T2YiLCJkZXRhY2hQcm9jZXNzIiwicGlkIl0sIm1hcHBp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QUNsQyxRQUFJLENBQUMsS0FBS3hELFNBQVYsRUFBcUI7QUFDbkIsWUFBTSxJQUFJUCxLQUFKLENBQVcsMkRBQTBELEtBQUtNLEdBQUksSUFBOUUsQ0FBTjtBQUNEOztBQUVELFdBQU8sTUFBTSxJQUFJbUIsaUJBQUosQ0FBTSxDQUFDQyxPQUFELEVBQVVDLE1BQVYsS0FBcUI7QUFDdEMsV0FBS3ZCLElBQUwsQ0FBVXdDLEVBQVYsQ0FBYSxNQUFiLEVBQXNCUSxJQUFELElBQVU7QUFDN0IsWUFBSVcsZ0JBQWdCLENBQUNDLE9BQWpCLENBQXlCWixJQUF6QixNQUFtQyxDQUFDLENBQXhDLEVBQTJDO0FBQ3pDekIsVUFBQUEsTUFBTSxDQUFDLElBQUkzQixLQUFKLENBQVcsK0JBQThCb0QsSUFBSyxXQUFVLEtBQUs5QyxHQUFJLElBQWpFLENBQUQsQ0FBTjtBQUNELFNBRkQsTUFFTztBQUNMb0IsVUFBQUEsT0FBTyxDQUFDMEIsSUFBRCxDQUFQO0FBQ0Q7QUFDRixPQU5EO0FBT0QsS0FSWSxDQUFiO0FBU0Q7O0FBS0RhLEVBQUFBLGFBQWEsR0FBSTtBQUNmLFFBQUksQ0FBQyxLQUFLbEUsSUFBTCxDQUFVeUIsUUFBZixFQUF5QjtBQUV2QixZQUFNLElBQUl4QixLQUFKLENBQVcscUVBQVgsQ0FBTjtBQUNEOztBQUNELFFBQUksS0FBS0ksSUFBVCxFQUFlO0FBQ2IsV0FBS0EsSUFBTCxDQUFVc0QsS0FBVjtBQUNEO0FBQ0Y7O0FBRUQsTUFBSVEsR0FBSixHQUFXO0FBQ1QsV0FBTyxLQUFLOUQsSUFBTCxHQUFZLEtBQUtBLElBQUwsQ0FBVThELEdBQXRCLEdBQTRCLElBQW5DO0FBQ0Q7O0FBcFBtQzs7O2VBd1B2QnZFLFUiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBwcm9taXNlL3ByZWZlci1hd2FpdC10by1jYWxsYmFja3MgKi9cblxuaW1wb3J0IHsgc3Bhd24gfSBmcm9tICdjaGlsZF9wcm9jZXNzJztcbmltcG9ydCBldmVudHMgZnJvbSAnZXZlbnRzJztcbmNvbnN0IHsgRXZlbnRFbWl0dGVyIH0gPSBldmVudHM7XG5pbXBvcnQgQiBmcm9tICdibHVlYmlyZCc7XG5pbXBvcnQgeyBxdW90ZSB9IGZyb20gJ3NoZWxsLXF1b3RlJztcbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBmb3JtYXRFbm9lbnQgfSBmcm9tICcuL2hlbHBlcnMnO1xuXG5cbi8vIFRoaXMgaXMgbmVlZGVkIHRvIGF2b2lkIG1lbW9yeSBsZWFrc1xuLy8gd2hlbiB0aGUgcHJvY2VzcyBvdXRwdXQgaXMgdG9vIGxvbmcgYW5kIGNvbnRhaW5zXG4vLyBubyBsaW5lIGJyZWFrc1xuY29uc3QgTUFYX0xJTkVfUE9SVElPTl9MRU5HVEggPSAweEZGRkY7XG5cbmZ1bmN0aW9uIGN1dFN1ZmZpeCAoc3RyLCBzdWZmaXhMZW5ndGgpIHtcbiAgcmV0dXJuIHN0ci5sZW5ndGggPiBzdWZmaXhMZW5ndGhcbiAgICAvLyBodHRwczovL2J1Z3MuY2hyb21pdW0ub3JnL3AvdjgvaXNzdWVzL2RldGFpbD9pZD0yODY5XG4gICAgPyBgICR7c3RyLnN1YnN0cihzdHIubGVuZ3RoIC0gc3VmZml4TGVuZ3RoKX1gLnN1YnN0cigxKVxuICAgIDogc3RyO1xufVxuXG5cbmNsYXNzIFN1YlByb2Nlc3MgZXh0ZW5kcyBFdmVudEVtaXR0ZXIge1xuICBjb25zdHJ1Y3RvciAoY21kLCBhcmdzID0gW10sIG9wdHMgPSB7fSkge1xuICAgIHN1cGVyKCk7XG4gICAgaWYgKCFjbWQpIHRocm93IG5ldyBFcnJvcignQ29tbWFuZCBpcyByZXF1aXJlZCcpOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIGN1cmx5XG4gICAgaWYgKCFfLmlzU3RyaW5nKGNtZCkpIHRocm93IG5ldyBFcnJvcignQ29tbWFuZCBtdXN0IGJlIGEgc3RyaW5nJyk7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgY3VybHlcbiAgICBpZiAoIV8uaXNBcnJheShhcmdzKSkgdGhyb3cgbmV3IEVycm9yKCdBcmdzIG11c3QgYmUgYW4gYXJyYXknKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBjdXJseVxuXG4gICAgdGhpcy5jbWQgPSBjbWQ7XG4gICAgdGhpcy5hcmdzID0gYXJncztcbiAgICB0aGlzLnByb2MgPSBudWxsO1xuICAgIHRoaXMub3B0cyA9IG9wdHM7XG4gICAgdGhpcy5leHBlY3RpbmdFeGl0ID0gZmFsc2U7XG5cbiAgICAvLyBnZXQgYSBxdW90ZWQgcmVwcmVzZW50YXRpb24gb2YgdGhlIGNvbW1hbmQgZm9yIGVycm9yIHN0cmluZ3NcbiAgICB0aGlzLnJlcCA9IHF1b3RlKFtjbWQsIC4uLmFyZ3NdKTtcbiAgfVxuXG4gIGdldCBpc1J1bm5pbmcgKCkge1xuICAgIC8vIHByZXNlbmNlIG9mIGBwcm9jYCBtZWFucyB3ZSBoYXZlIGNvbm5lY3RlZCBhbmQgc3RhcnRlZFxuICAgIHJldHVybiAhIXRoaXMucHJvYztcbiAgfVxuXG4gIGVtaXRMaW5lcyAoc3RyZWFtLCBsaW5lcykge1xuICAgIGZvciAobGV0IGxpbmUgb2YgbGluZXMpIHtcbiAgICAgIHRoaXMuZW1pdCgnc3RyZWFtLWxpbmUnLCBgWyR7c3RyZWFtLnRvVXBwZXJDYXNlKCl9XSAke2xpbmV9YCk7XG4gICAgfVxuICB9XG5cbiAgLy8gc3Bhd24gdGhlIHN1YnByb2Nlc3MgYW5kIHJldHVybiBjb250cm9sIHdoZW5ldmVyIHdlIGRlZW0gdGhhdCBpdCBoYXMgZnVsbHlcbiAgLy8gXCJzdGFydGVkXCJcbiAgYXN5bmMgc3RhcnQgKHN0YXJ0RGV0ZWN0b3IgPSBudWxsLCB0aW1lb3V0TXMgPSBudWxsLCBkZXRhY2ggPSBmYWxzZSkge1xuICAgIGxldCBzdGFydERlbGF5ID0gMTA7XG5cbiAgICBjb25zdCBnZW5lcmljU3RhcnREZXRlY3RvciA9IGZ1bmN0aW9uIGdlbmVyaWNTdGFydERldGVjdG9yIChzdGRvdXQsIHN0ZGVycikge1xuICAgICAgcmV0dXJuIHN0ZG91dCB8fCBzdGRlcnI7XG4gICAgfTtcblxuICAgIC8vIHRoZSBkZWZhdWx0IHN0YXJ0IGRldGVjdG9yIHNpbXBseSByZXR1cm5zIHRydWUgd2hlbiB3ZSBnZXQgYW55IG91dHB1dFxuICAgIGlmIChzdGFydERldGVjdG9yID09PSBudWxsKSB7XG4gICAgICBzdGFydERldGVjdG9yID0gZ2VuZXJpY1N0YXJ0RGV0ZWN0b3I7XG4gICAgfVxuXG4gICAgLy8gaWYgdGhlIHVzZXIgcGFzc2VzIGEgbnVtYmVyLCB0aGVuIHdlIHNpbXBseSBkZWxheSBhIGNlcnRhaW4gYW1vdW50IG9mXG4gICAgLy8gdGltZSBiZWZvcmUgcmV0dXJuaW5nIGNvbnRyb2wsIHJhdGhlciB0aGFuIHdhaXRpbmcgZm9yIGEgY29uZGl0aW9uXG4gICAgaWYgKF8uaXNOdW1iZXIoc3RhcnREZXRlY3RvcikpIHtcbiAgICAgIHN0YXJ0RGVsYXkgPSBzdGFydERldGVjdG9yO1xuICAgICAgc3RhcnREZXRlY3RvciA9IG51bGw7XG4gICAgfVxuXG4gICAgLy8gaWYgdGhlIHVzZXIgcGFzc2VzIGluIGEgYm9vbGVhbiBhcyBvbmUgb2YgdGhlIGFyZ3VtZW50cywgdXNlIGl0IGZvciBgZGV0YWNoYFxuICAgIGlmIChfLmlzQm9vbGVhbihzdGFydERldGVjdG9yKSAmJiBzdGFydERldGVjdG9yKSB7XG4gICAgICBpZiAoIXRoaXMub3B0cy5kZXRhY2hlZCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFVuYWJsZSB0byBkZXRhY2ggcHJvY2VzcyB0aGF0IGlzIG5vdCBzdGFydGVkIHdpdGggJ2RldGFjaGVkJyBvcHRpb25gKTtcbiAgICAgIH1cbiAgICAgIGRldGFjaCA9IHRydWU7XG4gICAgICBzdGFydERldGVjdG9yID0gZ2VuZXJpY1N0YXJ0RGV0ZWN0b3I7XG4gICAgfSBlbHNlIGlmIChfLmlzQm9vbGVhbih0aW1lb3V0TXMpICYmIHRpbWVvdXRNcykge1xuICAgICAgaWYgKCF0aGlzLm9wdHMuZGV0YWNoZWQpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbmFibGUgdG8gZGV0YWNoIHByb2Nlc3MgdGhhdCBpcyBub3Qgc3RhcnRlZCB3aXRoICdkZXRhY2hlZCcgb3B0aW9uYCk7XG4gICAgICB9XG4gICAgICBkZXRhY2ggPSB0cnVlO1xuICAgICAgdGltZW91dE1zID0gbnVsbDtcbiAgICB9XG5cbiAgICAvLyByZXR1cm4gYSBwcm9taXNlIHNvIHdlIGNhbiB3cmFwIHRoZSBhc3luYyBiZWhhdmlvclxuICAgIHJldHVybiBhd2FpdCBuZXcgQigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAvLyBhY3R1YWxseSBzcGF3biB0aGUgc3VicHJvY1xuICAgICAgdGhpcy5wcm9jID0gc3Bhd24odGhpcy5jbWQsIHRoaXMuYXJncywgdGhpcy5vcHRzKTtcblxuICAgICAgaWYgKHRoaXMucHJvYy5zdGRvdXQpIHtcbiAgICAgICAgdGhpcy5wcm9jLnN0ZG91dC5zZXRFbmNvZGluZyh0aGlzLm9wdHMuZW5jb2RpbmcgfHwgJ3V0ZjgnKTtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLnByb2Muc3RkZXJyKSB7XG4gICAgICAgIHRoaXMucHJvYy5zdGRlcnIuc2V0RW5jb2RpbmcodGhpcy5vcHRzLmVuY29kaW5nIHx8ICd1dGY4Jyk7XG4gICAgICB9XG4gICAgICB0aGlzLmxhc3RMaW5lUG9ydGlvbiA9IHtzdGRvdXQ6ICcnLCBzdGRlcnI6ICcnfTtcblxuICAgICAgLy8gdGhpcyBmdW5jdGlvbiBoYW5kbGVzIG91dHB1dCB0aGF0IHdlIGNvbGxlY3QgZnJvbSB0aGUgc3VicHJvY1xuICAgICAgY29uc3QgaGFuZGxlT3V0cHV0ID0gKHN0cmVhbXMpID0+IHtcbiAgICAgICAgY29uc3Qge3N0ZG91dCwgc3RkZXJyfSA9IHN0cmVhbXM7XG4gICAgICAgIC8vIGlmIHdlIGhhdmUgYSBzdGFydERldGVjdG9yLCBydW4gaXQgb24gdGhlIG91dHB1dCBzbyB3ZSBjYW4gcmVzb2x2ZS9cbiAgICAgICAgLy8gcmVqZWN0IGFuZCBtb3ZlIG9uIGZyb20gc3RhcnRcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBpZiAoc3RhcnREZXRlY3RvciAmJiBzdGFydERldGVjdG9yKHN0ZG91dCwgc3RkZXJyKSkge1xuICAgICAgICAgICAgc3RhcnREZXRlY3RvciA9IG51bGw7XG4gICAgICAgICAgICByZXNvbHZlKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgcmVqZWN0KGUpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gZW1pdCB0aGUgYWN0dWFsIG91dHB1dCBmb3Igd2hvbWV2ZXIncyBsaXN0ZW5pbmdcbiAgICAgICAgdGhpcy5lbWl0KCdvdXRwdXQnLCBzdGRvdXQsIHN0ZGVycik7XG5cbiAgICAgICAgLy8gd2UgYWxzbyB3YW50IHRvIGVtaXQgbGluZXMsIGJ1dCBpdCdzIG1vcmUgY29tcGxleCBzaW5jZSBvdXRwdXRcbiAgICAgICAgLy8gY29tZXMgaW4gY2h1bmtzIGFuZCBhIGxpbmUgY291bGQgY29tZSBpbiB0d28gZGlmZmVyZW50IGNodW5rcywgc29cbiAgICAgICAgLy8gd2UgaGF2ZSBsb2dpYyB0byBoYW5kbGUgdGhhdCBjYXNlICh1c2luZyB0aGlzLmxhc3RMaW5lUG9ydGlvbiB0b1xuICAgICAgICAvLyByZW1lbWJlciBhIGxpbmUgdGhhdCBzdGFydGVkIGJ1dCBkaWQgbm90IGZpbmlzaCBpbiB0aGUgbGFzdCBjaHVuaylcbiAgICAgICAgZm9yIChjb25zdCBbc3RyZWFtTmFtZSwgc3RyZWFtRGF0YV0gb2YgXy50b1BhaXJzKHN0cmVhbXMpKSB7XG4gICAgICAgICAgaWYgKCFzdHJlYW1EYXRhKSBjb250aW51ZTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBjdXJseVxuICAgICAgICAgIGNvbnN0IGxpbmVzID0gc3RyZWFtRGF0YS5zcGxpdCgnXFxuJylcbiAgICAgICAgICAgIC8vIGh0dHBzOi8vYnVncy5jaHJvbWl1bS5vcmcvcC92OC9pc3N1ZXMvZGV0YWlsP2lkPTI4NjlcbiAgICAgICAgICAgIC5tYXAoKHgpID0+IGAgJHt4fWAuc3Vic3RyKDEpKTtcbiAgICAgICAgICBpZiAobGluZXMubGVuZ3RoID4gMSkge1xuICAgICAgICAgICAgbGluZXNbMF0gPSB0aGlzLmxhc3RMaW5lUG9ydGlvbltzdHJlYW1OYW1lXSArIGxpbmVzWzBdO1xuICAgICAgICAgICAgdGhpcy5sYXN0TGluZVBvcnRpb25bc3RyZWFtTmFtZV0gPSBjdXRTdWZmaXgoXy5sYXN0KGxpbmVzKSwgTUFYX0xJTkVfUE9SVElPTl9MRU5HVEgpO1xuICAgICAgICAgICAgY29uc3QgcmVzdWx0TGluZXMgPSBsaW5lcy5zbGljZSgwLCAtMSk7XG4gICAgICAgICAgICB0aGlzLmVtaXQoYGxpbmVzLSR7c3RyZWFtTmFtZX1gLCByZXN1bHRMaW5lcyk7XG4gICAgICAgICAgICB0aGlzLmVtaXRMaW5lcyhzdHJlYW1OYW1lLCByZXN1bHRMaW5lcyk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRQb3J0aW9uID0gY3V0U3VmZml4KGxpbmVzWzBdLCBNQVhfTElORV9QT1JUSU9OX0xFTkdUSCk7XG4gICAgICAgICAgICBpZiAodGhpcy5sYXN0TGluZVBvcnRpb25bc3RyZWFtTmFtZV0ubGVuZ3RoICsgY3VycmVudFBvcnRpb24ubGVuZ3RoID4gTUFYX0xJTkVfUE9SVElPTl9MRU5HVEgpIHtcbiAgICAgICAgICAgICAgdGhpcy5sYXN0TGluZVBvcnRpb25bc3RyZWFtTmFtZV0gPSBjdXJyZW50UG9ydGlvbjtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHRoaXMubGFzdExpbmVQb3J0aW9uW3N0cmVhbU5hbWVdICs9IGN1cnJlbnRQb3J0aW9uO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfTtcblxuICAgICAgLy8gaWYgd2UgZ2V0IGFuIGVycm9yIHNwYXduaW5nIHRoZSBwcm9jLCByZWplY3QgYW5kIGNsZWFuIHVwIHRoZSBwcm9jXG4gICAgICB0aGlzLnByb2Mub24oJ2Vycm9yJywgKGVycikgPT4ge1xuICAgICAgICB0aGlzLnByb2MucmVtb3ZlQWxsTGlzdGVuZXJzKCdleGl0Jyk7XG4gICAgICAgIHRoaXMucHJvYy5raWxsKCdTSUdJTlQnKTtcblxuICAgICAgICBpZiAoZXJyLmVycm5vID09PSAnRU5PRU5UJykge1xuICAgICAgICAgIGVyciA9IGZvcm1hdEVub2VudChlcnIsIHRoaXMuY21kLCB0aGlzLm9wdHM/LmN3ZCk7XG4gICAgICAgIH1cbiAgICAgICAgcmVqZWN0KGVycik7XG4gICAgICB9KTtcblxuICAgICAgaWYgKHRoaXMucHJvYy5zdGRvdXQpIHtcbiAgICAgICAgdGhpcy5wcm9jLnN0ZG91dC5vbignZGF0YScsIChjaHVuaykgPT4gaGFuZGxlT3V0cHV0KHtzdGRvdXQ6IGNodW5rLnRvU3RyaW5nKCksIHN0ZGVycjogJyd9KSk7XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLnByb2Muc3RkZXJyKSB7XG4gICAgICAgIHRoaXMucHJvYy5zdGRlcnIub24oJ2RhdGEnLCAoY2h1bmspID0+IGhhbmRsZU91dHB1dCh7c3Rkb3V0OiAnJywgc3RkZXJyOiBjaHVuay50b1N0cmluZygpfSkpO1xuICAgICAgfVxuXG4gICAgICAvLyB3aGVuIHRoZSBwcm9jIGV4aXRzLCB3ZSBtaWdodCBzdGlsbCBoYXZlIGEgYnVmZmVyIG9mIGxpbmVzIHdlIHdlcmVcbiAgICAgIC8vIHdhaXRpbmcgb24gbW9yZSBjaHVua3MgdG8gY29tcGxldGUuIEdvIGFoZWFkIGFuZCBlbWl0IHRob3NlLCB0aGVuXG4gICAgICAvLyByZS1lbWl0IHRoZSBleGl0IHNvIGEgbGlzdGVuZXIgY2FuIGhhbmRsZSB0aGUgcG9zc2libHktdW5leHBlY3RlZCBleGl0XG4gICAgICB0aGlzLnByb2Mub24oJ2V4aXQnLCAoY29kZSwgc2lnbmFsKSA9PiB7XG4gICAgICAgIHRoaXMuaGFuZGxlTGFzdExpbmVzKCk7XG5cbiAgICAgICAgdGhpcy5lbWl0KCdleGl0JywgY29kZSwgc2lnbmFsKTtcblxuICAgICAgICAvLyBpbiBhZGRpdGlvbiB0byB0aGUgYmFyZSBleGl0IGV2ZW50LCBhbHNvIGVtaXQgb25lIG9mIHRocmVlIG90aGVyXG4gICAgICAgIC8vIGV2ZW50cyB0aGF0IGNvbnRhaW4gbW9yZSBoZWxwZnVsIGluZm9ybWF0aW9uOlxuICAgICAgICAvLyAnc3RvcCc6IHdlIHN0b3BwZWQgdGhpc1xuICAgICAgICAvLyAnZGllJzogdGhlIHByb2Nlc3MgZW5kZWQgb3V0IG9mIG91ciBjb250cm9sIHdpdGggYSBub24temVybyBleGl0XG4gICAgICAgIC8vICdlbmQnOiB0aGUgcHJvY2VzcyBlbmRlZCBvdXQgb2Ygb3VyIGNvbnRyb2wgd2l0aCBhIHplcm8gZXhpdFxuICAgICAgICBsZXQgZXZlbnQgPSB0aGlzLmV4cGVjdGluZ0V4aXQgPyAnc3RvcCcgOiAnZGllJztcbiAgICAgICAgaWYgKCF0aGlzLmV4cGVjdGluZ0V4aXQgJiYgY29kZSA9PT0gMCkge1xuICAgICAgICAgIGV2ZW50ID0gJ2VuZCc7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5lbWl0KGV2ZW50LCBjb2RlLCBzaWduYWwpO1xuXG4gICAgICAgIC8vIGZpbmFsbHkgY2xlYW4gdXAgdGhlIHByb2MgYW5kIG1ha2Ugc3VyZSB0byByZXNldCBvdXIgZXhpdFxuICAgICAgICAvLyBleHBlY3RhdGlvbnNcbiAgICAgICAgdGhpcy5wcm9jID0gbnVsbDtcbiAgICAgICAgdGhpcy5leHBlY3RpbmdFeGl0ID0gZmFsc2U7XG4gICAgICB9KTtcblxuICAgICAgLy8gaWYgdGhlIHVzZXIgaGFzbid0IGdpdmVuIHVzIGEgc3RhcnREZXRlY3RvciwgaW5zdGVhZCBqdXN0IHJlc29sdmVcbiAgICAgIC8vIHdoZW4gc3RhcnREZWxheSBtcyBoYXZlIHBhc3NlZFxuICAgICAgaWYgKCFzdGFydERldGVjdG9yKSB7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4geyByZXNvbHZlKCk7IH0sIHN0YXJ0RGVsYXkpO1xuICAgICAgfVxuXG4gICAgICAvLyBpZiB0aGUgdXNlciBoYXMgZ2l2ZW4gdXMgYSB0aW1lb3V0LCBzdGFydCB0aGUgY2xvY2sgZm9yIHJlamVjdGluZ1xuICAgICAgLy8gdGhlIHByb21pc2UgaWYgd2UgdGFrZSB0b28gbG9uZyB0byBzdGFydFxuICAgICAgaWYgKF8uaXNOdW1iZXIodGltZW91dE1zKSkge1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICByZWplY3QobmV3IEVycm9yKGBUaGUgcHJvY2VzcyBkaWQgbm90IHN0YXJ0IHdpdGhpbiAke3RpbWVvdXRNc31tcyBgICtcbiAgICAgICAgICAgIGAoY21kOiAnJHt0aGlzLnJlcH0nKWApKTtcbiAgICAgICAgfSwgdGltZW91dE1zKTtcbiAgICAgIH1cbiAgICB9KS5maW5hbGx5KCgpID0+IHtcbiAgICAgIGlmIChkZXRhY2ggJiYgdGhpcy5wcm9jKSB7XG4gICAgICAgIHRoaXMucHJvYy51bnJlZigpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgaGFuZGxlTGFzdExpbmVzICgpIHtcbiAgICBmb3IgKGxldCBzdHJlYW0gb2YgWydzdGRvdXQnLCAnc3RkZXJyJ10pIHtcbiAgICAgIGlmICh0aGlzLmxhc3RMaW5lUG9ydGlvbltzdHJlYW1dKSB7XG4gICAgICAgIGNvbnN0IGxhc3RMaW5lcyA9IFt0aGlzLmxhc3RMaW5lUG9ydGlvbltzdHJlYW1dXTtcbiAgICAgICAgdGhpcy5lbWl0KGBsaW5lcy0ke3N0cmVhbX1gLCBsYXN0TGluZXMpO1xuICAgICAgICB0aGlzLmVtaXRMaW5lcyhzdHJlYW0sIGxhc3RMaW5lcyk7XG4gICAgICAgIHRoaXMubGFzdExpbmVQb3J0aW9uW3N0cmVhbV0gPSAnJztcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBhc3luYyBzdG9wIChzaWduYWwgPSAnU0lHVEVSTScsIHRpbWVvdXQgPSAxMDAwMCkge1xuICAgIGlmICghdGhpcy5pc1J1bm5pbmcpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgQ2FuJ3Qgc3RvcCBwcm9jZXNzOyBpdCdzIG5vdCBjdXJyZW50bHkgcnVubmluZyAoY21kOiAnJHt0aGlzLnJlcH0nKWApO1xuICAgIH1cbiAgICAvLyBtYWtlIHN1cmUgdG8gZW1pdCBhbnkgZGF0YSBpbiBvdXIgbGluZXMgYnVmZmVyIHdoZW5ldmVyIHdlJ3JlIGRvbmUgd2l0aFxuICAgIC8vIHRoZSBwcm9jXG4gICAgdGhpcy5oYW5kbGVMYXN0TGluZXMoKTtcbiAgICByZXR1cm4gYXdhaXQgbmV3IEIoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgdGhpcy5wcm9jLm9uKCdjbG9zZScsIHJlc29sdmUpO1xuICAgICAgdGhpcy5leHBlY3RpbmdFeGl0ID0gdHJ1ZTtcbiAgICAgIHRoaXMucHJvYy5raWxsKHNpZ25hbCk7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgcmVqZWN0KG5ldyBFcnJvcihgUHJvY2VzcyBkaWRuJ3QgZW5kIGFmdGVyICR7dGltZW91dH1tcyAoY21kOiAnJHt0aGlzLnJlcH0nKWApKTtcbiAgICAgIH0sIHRpbWVvdXQpO1xuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgam9pbiAoYWxsb3dlZEV4aXRDb2RlcyA9IFswXSkge1xuICAgIGlmICghdGhpcy5pc1J1bm5pbmcpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgQ2Fubm90IGpvaW4gcHJvY2VzczsgaXQgaXMgbm90IGN1cnJlbnRseSBydW5uaW5nIChjbWQ6ICcke3RoaXMucmVwfScpYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGF3YWl0IG5ldyBCKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIHRoaXMucHJvYy5vbignZXhpdCcsIChjb2RlKSA9PiB7XG4gICAgICAgIGlmIChhbGxvd2VkRXhpdENvZGVzLmluZGV4T2YoY29kZSkgPT09IC0xKSB7XG4gICAgICAgICAgcmVqZWN0KG5ldyBFcnJvcihgUHJvY2VzcyBlbmRlZCB3aXRoIGV4aXRjb2RlICR7Y29kZX0gKGNtZDogJyR7dGhpcy5yZXB9JylgKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmVzb2x2ZShjb2RlKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICAvKlxuICAgKiBUaGlzIHdpbGwgb25seSB3b3JrIGlmIHRoZSBwcm9jZXNzIGlzIGNyZWF0ZWQgd2l0aCB0aGUgYGRldGFjaGVkYCBvcHRpb25cbiAgICovXG4gIGRldGFjaFByb2Nlc3MgKCkge1xuICAgIGlmICghdGhpcy5vcHRzLmRldGFjaGVkKSB7XG4gICAgICAvLyB0aGlzIG1lYW5zIHRoYXQgdGhlcmUgaXMgYSBtaXNjb25maWd1cmF0aW9uIGluIHRoZSBjYWxsaW5nIGNvZGVcbiAgICAgIHRocm93IG5ldyBFcnJvcihgVW5hYmxlIHRvIGRldGFjaCBwcm9jZXNzIHRoYXQgaXMgbm90IHN0YXJ0ZWQgd2l0aCAnZGV0YWNoZWQnIG9wdGlvbmApO1xuICAgIH1cbiAgICBpZiAodGhpcy5wcm9jKSB7XG4gICAgICB0aGlzLnByb2MudW5yZWYoKTtcbiAgICB9XG4gIH1cblxuICBnZXQgcGlkICgpIHtcbiAgICByZXR1cm4gdGhpcy5wcm9jID8gdGhpcy5wcm9jLnBpZCA6IG51bGw7XG4gIH1cbn1cblxuZXhwb3J0IHsgU3ViUHJvY2VzcyB9O1xuZXhwb3J0IGRlZmF1bHQgU3ViUHJvY2VzcztcbiJdLCJmaWxlIjoibGliL3N1YnByb2Nlc3MuanMiLCJzb3VyY2VSb290IjoiLi4vLi4ifQ==

@@ -7,2 +7,3 @@ /* eslint-disable promise/prefer-await-to-callbacks */

import _ from 'lodash';
import { formatEnoent } from './helpers';

@@ -41,7 +42,6 @@ const MAX_BUFFER_SIZE = 100 * 1024 * 1024;

proc.on('error', (err) => {
let msg = `Command '${rep}' errored out: ${err.stack}`;
if (err.errno === 'ENOENT') {
msg = `Command '${cmd}' not found. Is it installed?`;
err = formatEnoent(err, cmd, opts.cwd);
}
reject(new Error(msg));
reject(err);
});

@@ -48,0 +48,0 @@ if (proc.stdin) {

@@ -9,3 +9,5 @@ /* eslint-disable promise/prefer-await-to-callbacks */

import _ from 'lodash';
import { formatEnoent } from './helpers';
// This is needed to avoid memory leaks

@@ -145,3 +147,3 @@ // when the process output is too long and contains

// if we get an error spawning the proc, reject and clean up the proc
this.proc.on('error', err => {
this.proc.on('error', (err) => {
this.proc.removeAllListeners('exit');

@@ -151,3 +153,3 @@ this.proc.kill('SIGINT');

if (err.errno === 'ENOENT') {
err = new Error(`Command '${this.cmd}' not found. Is it installed?`);
err = formatEnoent(err, this.cmd, this.opts?.cwd);
}

@@ -154,0 +156,0 @@ reject(err);

@@ -8,3 +8,3 @@ {

],
"version": "1.15.0",
"version": "1.16.0",
"author": "appium",

@@ -38,3 +38,4 @@ "license": "Apache-2.0",

"shell-quote": "^1.4.3",
"source-map-support": "^0.5.3"
"source-map-support": "^0.5.3",
"which": "^2.0.2"
},

@@ -57,4 +58,3 @@ "scripts": {

"devDependencies": {
"ajv": "^6.5.3",
"appium-gulp-plugins": "^4.0.0",
"appium-gulp-plugins": "^5.4.1",
"appium-support": "^2.0.10",

@@ -66,6 +66,3 @@ "chai": "^4.1.2",

"pre-commit": "^1.2.2"
},
"greenkeeper": {
"ignore": []
}
}
node-teen_process
=================
[![Greenkeeper badge](https://badges.greenkeeper.io/appium/node-teen_process.svg)](https://greenkeeper.io/)
A grown-up version of Node's child_process. `exec` is really useful, but it

@@ -7,0 +5,0 @@ suffers many limitations. This is an es7 (`async`/`await`) implementation of

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