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

cci-pingu

Package Overview
Dependencies
Maintainers
1
Versions
25
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

cci-pingu - npm Package Compare versions

Comparing version 2.7.15 to 2.8.0

57

dist/lib/task.js

@@ -7,5 +7,5 @@ 'use strict';

var _superagent = require('superagent');
var _request = require('request');
var _superagent2 = _interopRequireDefault(_superagent);
var _request2 = _interopRequireDefault(_request);

@@ -127,3 +127,7 @@ var _fs = require('fs');

downloadError = false;
_superagent2.default.get(url).query({ 'circle-token': config.token }).timeout(config.timeout * 1000).on('error', function (err) {
(0, _request2.default)({
method: 'GET',
url: url + '?circle-token=' + config.token,
timeout: config.timeout * 1000
}).on('error', function (err) {
console.error('Download failed: ' + JSON.stringify(err) + '.');

@@ -195,4 +199,4 @@ console.warn('CCI task finished with failure.');

updateResponse(res, []);
if (!res.ok) {
console.error('Status: ' + res.status + ', ' + res.text);
if (res.statusCode !== 200) {
console.error('Status: ' + res.statusCode + ', ' + res.statusMessage);
console.warn('CCI task finished with failure.');

@@ -202,3 +206,12 @@ scheduleNext();

// res.ok
console.log('Response from CCI server:\n' + JSON.stringify(res.body, null, 4));
var body = void 0;
try {
body = JSON.parse(res.body);
} catch (e) {
console.error('Cannot parse response form the server!');
console.warn('CCI task finished with failure.');
scheduleNext();
return;
}
console.log('Response from CCI server:\n' + JSON.stringify(body, null, 4));
var prefixes = config.artifacts.map(function (item) {

@@ -208,3 +221,3 @@ return { name: item, found: false };

var urls = [];
res.body.forEach(function (item) {
body.forEach(function (item) {
prefixes.forEach(function (prefix) {

@@ -248,4 +261,4 @@ if (item.path.indexOf(prefix.name) !== -1) {

updateResponse(res);
if (!res.ok) {
console.error('Status: ' + res.status + ', ' + res.text);
if (res.statusCode !== 200) {
console.error('Status: ' + res.statusCode + ', ' + res.statusMessage);
console.warn('CCI task finished with failure.');

@@ -259,3 +272,11 @@ scheduleNext();

// res.ok
var builds = res.body;
var builds = void 0;
try {
builds = JSON.parse(res.body);
} catch (e) {
console.error('Cannot parse response form the server!');
console.warn('CCI task finished with failure.');
scheduleNext();
return;
}
if (!options.install) {

@@ -292,3 +313,8 @@ console.log('Response from CCI server:\n' + JSON.stringify(builds, null, 4));

console.log('Getting info about build ' + config._last + ' artifacts.');
_superagent2.default.get(config.cci_url + apiPath).query({ 'circle-token': config.token }).set('Accept', 'application/json').timeout(config.timeout * 1000).end(cciArtifactsInfoHandler);
(0, _request2.default)({
method: 'GET',
url: config.cci_url + apiPath + '?circle-token=' + config.token,
headers: { Accept: 'application/json' },
timeout: config.timeout * 1000
}, cciArtifactsInfoHandler);
}

@@ -320,6 +346,11 @@ }

console.log('Getting info about last successful build of ' + config._name + '.');
_superagent2.default.get(config.cci_url + apiPath).query({ 'circle-token': config.token, filter: 'successful', limit: 100 }).set('Accept', 'application/json').timeout(config.timeout * 1000).end(cciBuildInfoHandler);
(0, _request2.default)({
method: 'GET',
url: config.cci_url + apiPath + '?circle-token=' + config.token + '&filter=successful&limit=100',
headers: { Accept: 'application/json' },
timeout: config.timeout * 1000
}, cciBuildInfoHandler);
};
exports.default = _module;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL2xpYi90YXNrLmpzIl0sIm5hbWVzIjpbIm1vZHVsZSIsIm9wdGlvbnMiLCJjb25maWciLCJkb3dubG9hZEVycm9yIiwiRVhJVF9DT0RFIiwidXBkYXRlUmVzcG9uc2UiLCJyZXMiLCJkZWZhdWx0Qm9keSIsInRleHQiLCJib2R5IiwiSlNPTiIsInBhcnNlIiwiZSIsInNjaGVkdWxlTmV4dCIsIl9zYXZlIiwibGFzdCIsIl9sYXN0IiwiY2ZnRmlsZSIsIndyaXRlIiwiY29uc29sZSIsImluZm8iLCJwcm9jZXNzIiwiZXhpdCIsInNldFRpbWVvdXQiLCJydW4iLCJpbnRlcnZhbCIsImxvZ1ByZWZpeGVkIiwicHJlZml4IiwibG9nRm4iLCJkYXRhIiwidG9TdHJpbmciLCJzcGxpdCIsInNsaWNlIiwibWFwIiwicyIsImpvaW4iLCJzdGFydFNjcmlwdCIsInNjcmlwdEZpbGUiLCJwYXRoIiwicmVzb2x2ZSIsInNjcmlwdCIsIl90YXJnZXQiLCJjd2QiLCJkaXJuYW1lIiwic3Rkb3V0Iiwib24iLCJzdGRlcnIiLCJ3YXJuIiwiZXJyIiwiZXJyb3IiLCJzdHJpbmdpZnkiLCJjb2RlIiwibWVzc2FnZSIsImNjaURvd25sb2FkT25lIiwiX3VybHMiLCJsZW5ndGgiLCJ1cmwiLCJwb3AiLCJmaWxlbmFtZSIsInN0cmVhbU5hbWUiLCJkZWNvZGVVUklDb21wb25lbnQiLCJzdHJlYW0iLCJmcyIsImNyZWF0ZVdyaXRlU3RyZWFtIiwic3RhcnQiLCJEYXRlIiwiZ2V0VGltZSIsInJlcXVlc3QiLCJnZXQiLCJxdWVyeSIsInRva2VuIiwidGltZW91dCIsImR1ciIsInNwbGljZSIsIm5leHRUaWNrIiwicGlwZSIsImNjaURvd25sb2FkIiwic3RhdFN5bmMiLCJkaXJlY3RvcnkiLCJiYXNlbmFtZSIsImkiLCJsb2ciLCJta2RpclN5bmMiLCJjY2lBcnRpZmFjdHNJbmZvSGFuZGxlciIsIm9rIiwic3RhdHVzIiwicHJlZml4ZXMiLCJhcnRpZmFjdHMiLCJuYW1lIiwiaXRlbSIsImZvdW5kIiwidXJscyIsImZvckVhY2giLCJpbmRleE9mIiwicHVzaCIsImFsbEZvdW5kIiwiY2NpQnVpbGRJbmZvSGFuZGxlciIsImJ1aWxkcyIsImluc3RhbGwiLCJvcmRlcl9ieSIsIndvcmtmbG93c19qb2JfbmFtZSIsImJ1aWxkIiwid29ya2Zsb3dzIiwiam9iX25hbWUiLCJidWlsZF9udW0iLCJfbmFtZSIsImFwaVBhdGgiLCJob3N0aW5nIiwib3JnYW5pc2F0aW9uIiwicHJvamVjdCIsImNjaV91cmwiLCJzZXQiLCJlbmQiLCJfb3B0aW9ucyIsInJlYWQiLCJpZ25vcmVfYnJhbmNoIiwiYnJhbmNoIiwiZmlsdGVyIiwibGltaXQiXSwibWFwcGluZ3MiOiI7Ozs7OztBQU1BOzs7O0FBQ0E7Ozs7QUFDQTs7OztBQUNBOztBQUNBOzs7O0FBQ0E7Ozs7OztBQVhBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBU0EsSUFBTUEsVUFBUyxFQUFmO0FBQ0EsSUFBSUMsZ0JBQUosQyxDQUFhO0FBQ2IsSUFBSUMsZUFBSixDLENBQWE7QUFDYixJQUFJQyxzQkFBSixDLENBQW1COztBQUVuQixJQUFJQyxrQkFBSixDLENBQWU7O0FBRWYsSUFBTUMsaUJBQWlCLFNBQWpCQSxjQUFpQixDQUFDQyxHQUFELEVBQTZCO0FBQUEsTUFBdkJDLFdBQXVCLHVFQUFULElBQVM7O0FBQ2xELE1BQUlELElBQUlFLElBQVIsRUFBYztBQUNaLFFBQUk7QUFDRkYsVUFBSUcsSUFBSixHQUFXQyxLQUFLQyxLQUFMLENBQVdMLElBQUlFLElBQWYsQ0FBWDtBQUNELEtBRkQsQ0FFRSxPQUFPSSxDQUFQLEVBQVU7QUFDVk4sVUFBSUcsSUFBSixHQUFXRixXQUFYO0FBQ0Q7QUFDRjtBQUNGLENBUkQ7O0FBVUEsSUFBTU0sZUFBZSxTQUFmQSxZQUFlLEdBQU07QUFDekIsTUFBSVgsT0FBT1ksS0FBWCxFQUFrQjtBQUNoQlosV0FBT2EsSUFBUCxHQUFjYixPQUFPYyxLQUFyQjtBQUNBLFFBQUlmLFFBQVFnQixPQUFSLENBQWdC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RDFHLE9BQU8yRyxPQUFsRSxFQUEyRSxNQUEzRSxFQUFtRjNHLE9BQU9rSCxNQUExRixFQUFrR2pGLElBQWxHLENBQXVHLEdBQXZHLENBSE47QUFJQWhCLFVBQVE4RCxHQUFSLENBQVksaURBQWlEL0UsT0FBT3VHLEtBQXhELEdBQWdFLEdBQTVFO0FBQ0F0Qyx1QkFDR0MsR0FESCxDQUNPbEUsT0FBTzRHLE9BQVAsR0FBaUJKLE9BRHhCLEVBRUdyQyxLQUZILENBRVMsRUFBRSxnQkFBZ0JuRSxPQUFPb0UsS0FBekIsRUFBZ0MrQyxRQUFRLFlBQXhDLEVBQXNEQyxPQUFPLEdBQTdELEVBRlQsRUFHR1AsR0FISCxDQUdPLFFBSFAsRUFHaUIsa0JBSGpCLEVBSUd4QyxPQUpILENBSVdyRSxPQUFPcUUsT0FBUCxHQUFpQixJQUo1QixFQUtHeUMsR0FMSCxDQUtPaEIsbUJBTFA7QUFNRCxDQTNCRDs7a0JBNkJlaEcsTyIsImZpbGUiOiJ0YXNrLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLy8gTW9kdWxlIGZvciB0YWxraW5nIHRvIENDSSwgZ2V0dGluZyB0aGUgYXJ0aWZhY3RzLCBkb3dubG9hZGluZyB0aGVtLFxuLy8gc3RhcnRpbmcgdGhlIGFjdGlvbiBzY3JpcHQsIHNhdmluZyB0aGUgdXBkYXRlZCBjb25maWcgZmlsZSwgLi4uXG4vL1xuLy8gVGhlIHRhc2sucnVuKCkgc2NoZWR1bGVzIG5leHQgcnVuIGFzIG5lZWRlZC5cbi8vIEFsbCBkaXNrIG9wZXJhdGlvbnMgYXJlIHN5bmNocm9ub3VzLlxuXG5pbXBvcnQgcmVxdWVzdCBmcm9tICdzdXBlcmFnZW50JztcbmltcG9ydCBmcyBmcm9tICdmcyc7XG5pbXBvcnQgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCB7IHNwYXduIH0gZnJvbSAnY2hpbGRfcHJvY2Vzcyc7XG5pbXBvcnQgb3JkZXJCeSBmcm9tICdsb2Rhc2gub3JkZXJieSc7XG5pbXBvcnQgZmlsdGVyIGZyb20gJ2xvZGFzaC5maWx0ZXInO1xuXG5jb25zdCBtb2R1bGUgPSB7fTtcbmxldCBvcHRpb25zOyAvLyBzZXQgb25jZSBhdCBmaXJzdCBydW4oKVxubGV0IGNvbmZpZzsgIC8vIHJlLXJlYWQgaW4gZWFjaCBpdGVyYXRpb25cbmxldCBkb3dubG9hZEVycm9yOyAvLyBzdG9wIHRoZSBwcm9jZXNzIGluIGNhc2UgZG93bmxvYWQgZmFpbGVkXG5cbmxldCBFWElUX0NPREU7IC8vIHJldHVybiBjb2RlIGZvciAnLS1ydW4tb25jZScgbW9kZVxuXG5jb25zdCB1cGRhdGVSZXNwb25zZSA9IChyZXMsIGRlZmF1bHRCb2R5ID0gbnVsbCkgPT4ge1xuICBpZiAocmVzLnRleHQpIHtcbiAgICB0cnkge1xuICAgICAgcmVzLmJvZHkgPSBKU09OLnBhcnNlKHJlcy50ZXh0KTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICByZXMuYm9keSA9IGRlZmF1bHRCb2R5O1xuICAgIH1cbiAgfVxufTtcblxuY29uc3Qgc2NoZWR1bGVOZXh0ID0gKCkgPT4ge1xuICBpZiAoY29uZmlnLl9zYXZlKSB7XG4gICAgY29uZmlnLmxhc3QgPSBjb25maWcuX2xhc3Q7XG4gICAgaWYgKG9wdGlvbnMuY2ZnRmlsZS53cml0ZShjb25maWcpKSB7XG4gICAgICBjb25zb2xlLmluZm8oJ05ldyBjb25maWd1cmF0aW9uIGZpbGUgcmV2aXNpb24gc3VjY2Vzc2Z1bGx5IHNhdmVkLicpO1xuICAgIH1cbiAgfVxuICBpZiAob3B0aW9uc1sncnVuLW9uY2UnXSkge1xuICAgIGNvbnNvbGUuaW5mbygnQ0NJLVBJTkdVIGFib3V0IHRvIGV4aXQuIFRoYW5rcyBmb3IgZmx5aW5nIHdpdGggdXMhJyk7XG4gICAgcHJvY2Vzcy5leGl0KEVYSVRfQ09ERSk7XG4gIH0gZWxzZSB7XG4gICAgc2V0VGltZW91dChtb2R1bGUucnVuLCBjb25maWcuaW50ZXJ2YWwgKiAxMDAwKTtcbiAgICBjb25zb2xlLmluZm8oJ05leHQgQ0NJIHRhc2sgc2NoZWR1bGVkIGluICcgKyBjb25maWcuaW50ZXJ2YWwgKyAnIHNlY29uZHMuJyk7XG4gIH1cbn07XG5cbmNvbnN0IGxvZ1ByZWZpeGVkID0gKHByZWZpeCwgbG9nRm4pID0+IChkYXRhKSA9PiB7XG4gIGxvZ0ZuKGRhdGEudG9TdHJpbmcoKS5zcGxpdCgnXFxuJykuc2xpY2UoMCwgLTEpLm1hcCgocykgPT4gYCR7cHJlZml4fSAke3N9YCkuam9pbignXFxuJykpO1xufTtcblxuY29uc3Qgc3RhcnRTY3JpcHQgPSAoKSA9PiB7XG4gIGNvbnN0IHNjcmlwdEZpbGUgPSBwYXRoLnJlc29sdmUoY29uZmlnLnNjcmlwdCk7XG4gIGNvbnNvbGUuaW5mbygnRXhlY3V0aW5nIFwiJyArIHNjcmlwdEZpbGUgKyAnXCIuJyk7XG4gIHRyeSB7XG4gICAgY29uc3Qgc2NyaXB0ID0gc3Bhd24oc2NyaXB0RmlsZSwgWyBjb25maWcuX3RhcmdldCwgY29uZmlnLl9sYXN0IF0sIHsgY3dkOiBwYXRoLmRpcm5hbWUoc2NyaXB0RmlsZSkgfSk7XG4gICAgc2NyaXB0LnN0ZG91dC5vbignZGF0YScsIGxvZ1ByZWZpeGVkKCcqJywgY29uc29sZS5pbmZvKSk7XG4gICAgc2NyaXB0LnN0ZGVyci5vbignZGF0YScsIGxvZ1ByZWZpeGVkKCchJywgY29uc29sZS53YXJuKSk7XG4gICAgc2NyaXB0Lm9uKCdlcnJvcicsIChlcnIpID0+IHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0ZhaWxlZCB0byBzdGFydCBzY3JpcHQgXCInICsgc2NyaXB0RmlsZSArICdcIi4nKTtcbiAgICAgIGNvbnNvbGUuZXJyb3IoSlNPTi5zdHJpbmdpZnkoZXJyKSk7XG4gICAgICBjb25zb2xlLndhcm4oJ0NDSSB0YXNrIGZpbmlzaGVkIHdpdGggZmFpbHVyZS4nKTtcbiAgICAgIHNjaGVkdWxlTmV4dCgpO1xuICAgIH0pO1xuICAgIHNjcmlwdC5vbignY2xvc2UnLCAoY29kZSkgPT4ge1xuICAgICAgaWYgKCFjb2RlKSB7IC8vIHN1Y2Nlc3NcbiAgICAgICAgY29uc29sZS5pbmZvKCdDQ0kgdGFzayBzdWNjZXNzZnVsbHkgZmluaXNoZWQuJyk7XG4gICAgICAgIGNvbmZpZy5fc2F2ZSA9IHRydWU7XG4gICAgICB9IGVsc2UgeyAvLyBmYWlsXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ0luc3RhbGxhdGlvbiBzY3JpcHQgZmFpbGVkIHdpdGggZXhpdCBjb2RlICgnICsgY29kZSArICcpLicpO1xuICAgICAgfVxuICAgICAgRVhJVF9DT0RFID0gY29kZTtcbiAgICAgIHNjaGVkdWxlTmV4dCgpO1xuICAgIH0pO1xuICB9IGNhdGNoIChlKSB7IC8vIHNwYXduIGNhbiB0aHJvdyBleGNlcHRpb25zIG9uIGl0cyBvd25cbiAgICBjb25zb2xlLmVycm9yKCdGYWlsZWQgdG8gc3RhcnQgc2NyaXB0IFwiJyArIHNjcmlwdEZpbGUgKyAnXCIuJyk7XG4gICAgY29uc29sZS5lcnJvcihlLm1lc3NhZ2UpO1xuICAgIGNvbnNvbGUud2FybignQ0NJIHRhc2sgZmluaXNoZWQgd2l0aCBmYWlsdXJlLicpO1xuICAgIHNjaGVkdWxlTmV4dCgpO1xuICB9XG59O1xuXG5jb25zdCBjY2lEb3dubG9hZE9uZSA9ICgpID0+IHtcbiAgaWYgKCFjb25maWcuX3VybHMubGVuZ3RoKSB7XG4gICAgc3RhcnRTY3JpcHQoKTtcbiAgfSBlbHNlIHtcbiAgICBjb25zdCB1cmwgPSBjb25maWcuX3VybHMucG9wKCk7XG4gICAgbGV0IGZpbGVuYW1lID0gdXJsLnNwbGl0KCcvJyk7XG4gICAgZmlsZW5hbWUgPSBmaWxlbmFtZVtmaWxlbmFtZS5sZW5ndGggLSAxXTtcbiAgICBjb25zdCBzdHJlYW1OYW1lID0gcGF0aC5qb2luKGNvbmZpZy5fdGFyZ2V0LCBkZWNvZGVVUklDb21wb25lbnQoZmlsZW5hbWUpKTtcbiAgICBjb25zdCBzdHJlYW0gPSBmcy5jcmVhdGVXcml0ZVN0cmVhbShzdHJlYW1OYW1lKTtcbiAgICBjb25zb2xlLmluZm8oJ0Rvd25sb2FkaW5nIFwiJyArIGRlY29kZVVSSUNvbXBvbmVudCh1cmwpICsgJ1wiLicpO1xuICAgIGNvbnN0IHN0YXJ0ID0gKG5ldyBEYXRlKCkpLmdldFRpbWUoKTtcbiAgICBkb3dubG9hZEVycm9yID0gZmFsc2U7XG4gICAgcmVxdWVzdFxuICAgICAgLmdldCh1cmwpXG4gICAgICAucXVlcnkoeyAnY2lyY2xlLXRva2VuJzogY29uZmlnLnRva2VuIH0pXG4gICAgICAudGltZW91dChjb25maWcudGltZW91dCAqIDEwMDApXG4gICAgICAub24oJ2Vycm9yJywgKGVycikgPT4ge1xuICAgICAgICBjb25zb2xlLmVycm9yKCdEb3dubG9hZCBmYWlsZWQ6ICcgKyBKU09OLnN0cmluZ2lmeShlcnIpICsgJy4nKTtcbiAgICAgICAgY29uc29sZS53YXJuKCdDQ0kgdGFzayBmaW5pc2hlZCB3aXRoIGZhaWx1cmUuJyk7XG4gICAgICAgIGRvd25sb2FkRXJyb3IgPSB0cnVlO1xuICAgICAgICBzY2hlZHVsZU5leHQoKTtcbiAgICAgIH0pXG4gICAgICAub24oJ2VuZCcsICgpID0+IHtcbiAgICAgICAgaWYgKGRvd25sb2FkRXJyb3IpIHsgcmV0dXJuOyB9XG4gICAgICAgIGxldCBkdXIgPSAobmV3IERhdGUoKSkuZ2V0VGltZSgpIC0gc3RhcnQ7XG4gICAgICAgIGlmIChkdXIgPiA5OTkpIHtcbiAgICAgICAgICBkdXIgPSAoJycgKyBkdXIpLnNwbGl0KCcnKTtcbiAgICAgICAgICBkdXIuc3BsaWNlKGR1ci5sZW5ndGggLSAzLCAwLCAnLicpO1xuICAgICAgICAgIGR1ciA9IGR1ci5qb2luKCcnKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zb2xlLmluZm8oJ1NhdmVkIGFzIFwiJyArIHN0cmVhbU5hbWUgKyAnXCIgaW4gJyArIGR1ciArICcgbXMuJyk7XG4gICAgICAgIHByb2Nlc3MubmV4dFRpY2soY2NpRG93bmxvYWRPbmUpO1xuICAgICAgfSlcbiAgICAgIC5waXBlKHN0cmVhbSk7XG4gIH1cbn07XG5jb25zdCBjY2lEb3dubG9hZCA9ICgpID0+IHtcbiAgLy8gY3JlYXRlIHRhcmdldCBkaXJlY3RvcnlcbiAgdHJ5IHtcbiAgICBmcy5zdGF0U3luYyhjb25maWcuZGlyZWN0b3J5KTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIGNvbnNvbGUuZXJyb3IoJ0RpcmVjdG9yeSBcIicgKyBjb25maWcuZGlyZWN0b3J5ICsgJ1wiIGRvZXMgbm90IGV4aXN0LCBjYW5ub3Qgd3JpdGUgdGhlcmUuJyk7XG4gICAgY29uc29sZS53YXJuKCdDQ0kgdGFzayBmaW5pc2hlZCB3aXRoIGZhaWx1cmUuJyk7XG4gICAgc2NoZWR1bGVOZXh0KCk7XG4gICAgcmV0dXJuO1xuICB9XG4gIGNvbnN0IGJhc2VuYW1lID0gJ2J1aWxkLScgKyBjb25maWcuX2xhc3Q7XG4gIGxldCBkaXJuYW1lO1xuICB0cnkge1xuICAgIGxldCBpID0gMTtcbiAgICB3aGlsZSAodHJ1ZSkgeyAgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1jb25zdGFudC1jb25kaXRpb25cbiAgICAgIGRpcm5hbWUgPSBiYXNlbmFtZSArIChpID4gMSA/ICcuJyArIGkgOiAnJyk7XG4gICAgICBmcy5zdGF0U3luYyhwYXRoLmpvaW4oY29uZmlnLmRpcmVjdG9yeSwgZGlybmFtZSkpO1xuICAgICAgaSsrO1xuICAgIH1cbiAgfSBjYXRjaCAoZSkge1xuICAgIC8vIGV4Y2VwdGlvbiBpcyBmaW5lXG4gIH1cbiAgLy8gY3JlYXRlIG5ldyBkaXJcbiAgY29uZmlnLl90YXJnZXQgPSBwYXRoLnJlc29sdmUocGF0aC5qb2luKGNvbmZpZy5kaXJlY3RvcnksIGRpcm5hbWUpKTtcbiAgY29uc29sZS5sb2coJ0NyZWF0aW5nIGFydGlmYWN0IGRpcmVjdG9yeSBcIicgKyBjb25maWcuX3RhcmdldCArICdcIi4nKTtcbiAgdHJ5IHtcbiAgICBmcy5ta2RpclN5bmMoY29uZmlnLl90YXJnZXQpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgY29uc29sZS5lcnJvcignVGFyZ2V0IGRpcmVjdG9yeSBcIicgKyBjb25maWcuX3RhcmdldCArICdcIiBjYW5ub3QgYmUgY3JlYXRlZC4nKTtcbiAgICBjb25zb2xlLndhcm4oJ0NDSSB0YXNrIGZpbmlzaGVkIHdpdGggZmFpbHVyZS4nKTtcbiAgICBzY2hlZHVsZU5leHQoKTtcbiAgICByZXR1cm47XG4gIH1cblxuICAvLyBzdGFydCB0aGUgZG93bmxvYWRzXG4gIGNjaURvd25sb2FkT25lKCk7XG59O1xuXG5jb25zdCBjY2lBcnRpZmFjdHNJbmZvSGFuZGxlciA9IChlcnIsIHJlcykgPT4ge1xuICBpZiAoZXJyKSB7XG4gICAgY29uc29sZS5lcnJvcihKU09OLnN0cmluZ2lmeShlcnIpKTtcbiAgICBjb25zb2xlLndhcm4oJ0NDSSB0YXNrIGZpbmlzaGVkIHdpdGggZmFpbHVyZS4nKTtcbiAgICBzY2hlZHVsZU5leHQoKTtcbiAgICByZXR1cm47XG4gIH1cbiAgdXBkYXRlUmVzcG9uc2UocmVzLCBbXSk7XG4gIGlmICghcmVzLm9rKSB7XG4gICAgY29uc29sZS5lcnJvcignU3RhdHVzOiAnICsgcmVzLnN0YXR1cyArICcsICcgKyByZXMudGV4dCk7XG4gICAgY29uc29sZS53YXJuKCdDQ0kgdGFzayBmaW5pc2hlZCB3aXRoIGZhaWx1cmUuJyk7XG4gICAgc2NoZWR1bGVOZXh0KCk7XG4gIH0gZWxzZSB7IC8vIHJlcy5va1xuICAgIGNvbnNvbGUubG9nKCdSZXNwb25zZSBmcm9tIENDSSBzZXJ2ZXI6XFxuJyArIEpTT04uc3RyaW5naWZ5KHJlcy5ib2R5LCBudWxsLCA0KSk7XG4gICAgY29uc3QgcHJlZml4ZXMgPSBjb25maWcuYXJ0aWZhY3RzLm1hcChpdGVtID0+IHtcbiAgICAgIHJldHVybiB7IG5hbWU6IGl0ZW0sIGZvdW5kOiBmYWxzZSB9O1xuICAgIH0pO1xuICAgIGNvbnN0IHVybHMgPSBbXTtcbiAgICByZXMuYm9keS5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgICAgcHJlZml4ZXMuZm9yRWFjaChwcmVmaXggPT4ge1xuICAgICAgICBpZiAoaXRlbS5wYXRoLmluZGV4T2YocHJlZml4Lm5hbWUpICE9PSAtMSkge1xuICAgICAgICAgIHVybHMucHVzaChpdGVtLnVybCk7XG4gICAgICAgICAgcHJlZml4LmZvdW5kID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG4gICAgY29uc29sZS5sb2coJ0NvbGxlY3RlZCBhcnRpZmFjdCBVUkxzICh0byBkb3dubG9hZCk6XFxuJyArIEpTT04uc3RyaW5naWZ5KHVybHMsIG51bGwsIDQpKTtcbiAgICBsZXQgYWxsRm91bmQgPSB0cnVlO1xuICAgIHByZWZpeGVzLmZvckVhY2gocHJlZml4ID0+IHsgaWYgKCFwcmVmaXguZm91bmQpIHsgYWxsRm91bmQgPSBmYWxzZTsgfSB9KTtcbiAgICBpZiAoIWFsbEZvdW5kKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdOb3QgYWxsIGFydGlmYWN0cyBmb3VuZCEgTWlzc2luZzonKTtcbiAgICAgIHByZWZpeGVzLmZvckVhY2gocHJlZml4ID0+IHsgaWYgKCFwcmVmaXguZm91bmQpIHsgY29uc29sZS5lcnJvcignKyAnICsgcHJlZml4Lm5hbWUpOyB9IH0pO1xuICAgICAgY29uc29sZS53YXJuKCdDQ0kgdGFzayBmaW5pc2hlZCB3aXRoIGZhaWx1cmUuJyk7XG4gICAgICBzY2hlZHVsZU5leHQoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uZmlnLl91cmxzID0gdXJscztcbiAgICAgIGNjaURvd25sb2FkKCk7XG4gICAgfVxuICB9XG59O1xuXG5jb25zdCBjY2lCdWlsZEluZm9IYW5kbGVyID0gKGVyciwgcmVzKSA9PiB7XG4gIGlmIChlcnIpIHtcbiAgICBjb25zb2xlLmVycm9yKEpTT04uc3RyaW5naWZ5KGVycikpO1xuICAgIGNvbnNvbGUud2FybignQ0NJIHRhc2sgZmluaXNoZWQgd2l0aCBmYWlsdXJlLicpO1xuICAgIHNjaGVkdWxlTmV4dCgpO1xuICAgIHJldHVybjtcbiAgfVxuICB1cGRhdGVSZXNwb25zZShyZXMpO1xuICBpZiAoIXJlcy5vaykge1xuICAgIGNvbnNvbGUuZXJyb3IoJ1N0YXR1czogJyArIHJlcy5zdGF0dXMgKyAnLCAnICsgcmVzLnRleHQpO1xuICAgIGNvbnNvbGUud2FybignQ0NJIHRhc2sgZmluaXNoZWQgd2l0aCBmYWlsdXJlLicpO1xuICAgIHNjaGVkdWxlTmV4dCgpO1xuICB9IGVsc2UgaWYgKCFyZXMuYm9keSB8fCAhcmVzLmJvZHkubGVuZ3RoKSB7XG4gICAgY29uc29sZS5lcnJvcignTm8gc3VjY2Vzc2Z1bCBidWlsZCBmb3VuZCEnKTtcbiAgICBjb25zb2xlLndhcm4oJ0NDSSB0YXNrIGZpbmlzaGVkIHdpdGggZmFpbHVyZS4nKTtcbiAgICBzY2hlZHVsZU5leHQoKTtcbiAgfSBlbHNlIHsgLy8gcmVzLm9rXG4gICAgbGV0IGJ1aWxkcyA9IHJlcy5ib2R5O1xuICAgIGlmICghb3B0aW9ucy5pbnN0YWxsKSB7XG4gICAgICBjb25zb2xlLmxvZygnUmVzcG9uc2UgZnJvbSBDQ0kgc2VydmVyOlxcbicgKyBKU09OLnN0cmluZ2lmeShidWlsZHMsIG51bGwsIDQpKTtcbiAgICAgIGJ1aWxkcyA9IG9yZGVyQnkoYnVpbGRzLCBbIGNvbmZpZy5vcmRlcl9ieSBdLCBbICdkZXNjJyBdKTtcbiAgICAgIGlmIChjb25maWcud29ya2Zsb3dzX2pvYl9uYW1lKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKCdGaWx0ZXJpbmcgdGhlIGF2YWlsYWJsZSBzdWNjZXNzZnVsIGJ1aWxkcyBvbiB3b3JrZmxvd3Mgam9iIG5hbWUgPSAnICsgY29uZmlnLndvcmtmbG93c19qb2JfbmFtZSArICcuJyk7XG4gICAgICAgIGJ1aWxkcyA9IGZpbHRlcihidWlsZHMsIChidWlsZCkgPT4gKGJ1aWxkLndvcmtmbG93cyAmJiAoYnVpbGQud29ya2Zsb3dzLmpvYl9uYW1lID09PSBjb25maWcud29ya2Zsb3dzX2pvYl9uYW1lKSkpO1xuICAgICAgICBpZiAoIWJ1aWxkcy5sZW5ndGgpIHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKCdObyBzdWNjZXNzZnVsIGJ1aWxkIHdpdGggc3BlY2lmaWVkIHdvcmtmbG93cyBqb2IgbmFtZSBmb3VuZCEnKTtcbiAgICAgICAgICBjb25zb2xlLndhcm4oJ0NDSSB0YXNrIGZpbmlzaGVkIHdpdGggZmFpbHVyZS4nKTtcbiAgICAgICAgICBzY2hlZHVsZU5leHQoKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgY29uZmlnLl9sYXN0ID0gYnVpbGRzWzBdLmJ1aWxkX251bTtcbiAgICAhb3B0aW9ucy5pbnN0YWxsICYmIGNvbnNvbGUuaW5mbygnTGFzdCBzdWNjZXNzZnVsICcgKyBjb25maWcuX25hbWUgKyAnIGJ1aWxkIG51bWJlcjogJyArIGNvbmZpZy5fbGFzdCArICcuJyk7XG4gICAgaWYgKCFvcHRpb25zLmluc3RhbGwgJiYgKGNvbmZpZy5sYXN0ID09PSBjb25maWcuX2xhc3QpKSB7XG4gICAgICBjb25zb2xlLmluZm8oJ0J1aWxkICcgKyBjb25maWcuX2xhc3QgKyAnIGFscmVhZHkgaW5zdGFsbGVkLicpO1xuICAgICAgY29uc29sZS5pbmZvKCdDQ0kgdGFzayBzdWNjZXNzZnVsbHkgZmluaXNoZWQuJyk7XG4gICAgICBFWElUX0NPREUgPSAwO1xuICAgICAgc2NoZWR1bGVOZXh0KCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChvcHRpb25zLmluc3RhbGwgJiYgKGNvbmZpZy5sYXN0ID09PSBjb25maWcuX2xhc3QpKSB7XG4gICAgICAgIGNvbnNvbGUuaW5mbygnQnVpbGQgJyArIGNvbmZpZy5fbGFzdCArICcgYWxyZWFkeSBpbnN0YWxsZWQsIGFib3V0IHRvIGluc3RhbGwgaXQgYWdhaW4uLi4nKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnNvbGUuaW5mbygnQnVpbGQgJyArIGNvbmZpZy5fbGFzdCArICcgaXMgbm90IGluc3RhbGxlZCB5ZXQuJyk7XG4gICAgICB9XG4gICAgICBjb25zdCBhcGlQYXRoID0gWycvYXBpL3YxLjEvcHJvamVjdCcsIGNvbmZpZy5ob3N0aW5nLCBjb25maWcub3JnYW5pc2F0aW9uLFxuICAgICAgICBjb25maWcucHJvamVjdCwgY29uZmlnLl9sYXN0LCAnYXJ0aWZhY3RzJ10uam9pbignLycpO1xuICAgICAgY29uc29sZS5sb2coJ0dldHRpbmcgaW5mbyBhYm91dCBidWlsZCAnICsgY29uZmlnLl9sYXN0ICsgJyBhcnRpZmFjdHMuJyk7XG4gICAgICByZXF1ZXN0XG4gICAgICAgIC5nZXQoY29uZmlnLmNjaV91cmwgKyBhcGlQYXRoKVxuICAgICAgICAucXVlcnkoeyAnY2lyY2xlLXRva2VuJzogY29uZmlnLnRva2VuIH0pXG4gICAgICAgIC5zZXQoJ0FjY2VwdCcsICdhcHBsaWNhdGlvbi9qc29uJylcbiAgICAgICAgLnRpbWVvdXQoY29uZmlnLnRpbWVvdXQgKiAxMDAwKVxuICAgICAgICAuZW5kKGNjaUFydGlmYWN0c0luZm9IYW5kbGVyKTtcbiAgICB9XG4gIH1cbn07XG5cbm1vZHVsZS5ydW4gPSAoX29wdGlvbnMgPSBudWxsKSA9PiB7XG4gIEVYSVRfQ09ERSA9IDE7ICAgLy8gdXBkYXRlIHRvIDAgb24gZmluYWwgc3VjY2Vzc1xuICBpZiAoX29wdGlvbnMpIHsgb3B0aW9ucyA9IF9vcHRpb25zOyB9XG4gIGNvbmZpZyA9IG9wdGlvbnMuY2ZnRmlsZS5yZWFkKCk7XG4gIGlmIChjb25maWcuaWdub3JlX2JyYW5jaCkge1xuICAgIGNvbmZpZy5icmFuY2ggPSAnPEFOWT4nO1xuICB9XG4gIGNvbmZpZy5fbmFtZSA9IFtjb25maWcuaG9zdGluZywgY29uZmlnLm9yZ2FuaXNhdGlvbiwgY29uZmlnLnByb2plY3QsIGNvbmZpZy5icmFuY2hdLmpvaW4oJy8nKTtcbiAgY29uc29sZS5pbmZvKCdDQ0kgdGFzayBzdGFydGVkLicpO1xuICBpZiAob3B0aW9ucy5pbnN0YWxsKSB7XG4gICAgY2NpQnVpbGRJbmZvSGFuZGxlcihudWxsLCB7XG4gICAgICBvazogdHJ1ZSxcbiAgICAgIGJvZHk6IFsgeyBidWlsZF9udW06IG9wdGlvbnMuaW5zdGFsbCB9IF1cbiAgICB9KTtcbiAgICByZXR1cm47XG4gIH1cbiAgY29uc3QgYXBpUGF0aCA9XG4gICAgY29uZmlnLmlnbm9yZV9icmFuY2hcbiAgICAgID8gWycvYXBpL3YxLjEvcHJvamVjdCcsIGNvbmZpZy5ob3N0aW5nLCBjb25maWcub3JnYW5pc2F0aW9uLCBjb25maWcucHJvamVjdF0uam9pbignLycpXG4gICAgICA6IFsnL2FwaS92MS4xL3Byb2plY3QnLCBjb25maWcuaG9zdGluZywgY29uZmlnLm9yZ2FuaXNhdGlvbiwgY29uZmlnLnByb2plY3QsICd0cmVlJywgY29uZmlnLmJyYW5jaF0uam9pbignLycpO1xuICBjb25zb2xlLmxvZygnR2V0dGluZyBpbmZvIGFib3V0IGxhc3Qgc3VjY2Vzc2Z1bCBidWlsZCBvZiAnICsgY29uZmlnLl9uYW1lICsgJy4nKTtcbiAgcmVxdWVzdFxuICAgIC5nZXQoY29uZmlnLmNjaV91cmwgKyBhcGlQYXRoKVxuICAgIC5xdWVyeSh7ICdjaXJjbGUtdG9rZW4nOiBjb25maWcudG9rZW4sIGZpbHRlcjogJ3N1Y2Nlc3NmdWwnLCBsaW1pdDogMTAwIH0pXG4gICAgLnNldCgnQWNjZXB0JywgJ2FwcGxpY2F0aW9uL2pzb24nKVxuICAgIC50aW1lb3V0KGNvbmZpZy50aW1lb3V0ICogMTAwMClcbiAgICAuZW5kKGNjaUJ1aWxkSW5mb0hhbmRsZXIpO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgbW9kdWxlO1xuIl19
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL2xpYi90YXNrLmpzIl0sIm5hbWVzIjpbIm1vZHVsZSIsIm9wdGlvbnMiLCJjb25maWciLCJkb3dubG9hZEVycm9yIiwiRVhJVF9DT0RFIiwidXBkYXRlUmVzcG9uc2UiLCJyZXMiLCJkZWZhdWx0Qm9keSIsInRleHQiLCJib2R5IiwiSlNPTiIsInBhcnNlIiwiZSIsInNjaGVkdWxlTmV4dCIsIl9zYXZlIiwibGFzdCIsIl9sYXN0IiwiY2ZnRmlsZSIsIndyaXRlIiwiY29uc29sZSIsImluZm8iLCJwcm9jZXNzIiwiZXhpdCIsInNldFRpbWVvdXQiLCJydW4iLCJpbnRlcnZhbCIsImxvZ1ByZWZpeGVkIiwicHJlZml4IiwibG9nRm4iLCJkYXRhIiwidG9TdHJpbmciLCJzcGxpdCIsInNsaWNlIiwibWFwIiwicyIsImpvaW4iLCJzdGFydFNjcmlwdCIsInNjcmlwdEZpbGUiLCJwYXRoIiwicmVzb2x2ZSIsInNjcmlwdCIsIl90YXJnZXQiLCJjd2QiLCJkaXJuYW1lIiwic3Rkb3V0Iiwib24iLCJzdGRlcnIiLCJ3YXJuIiwiZXJyIiwiZXJyb3IiLCJzdHJpbmdpZnkiLCJjb2RlIiwibWVzc2FnZSIsImNjaURvd25sb2FkT25lIiwiX3VybHMiLCJsZW5ndGgiLCJ1cmwiLCJwb3AiLCJmaWxlbmFtZSIsInN0cmVhbU5hbWUiLCJkZWNvZGVVUklDb21wb25lbnQiLCJzdHJlYW0iLCJmcyIsImNyZWF0ZVdyaXRlU3RyZWFtIiwic3RhcnQiLCJEYXRlIiwiZ2V0VGltZSIsIm1ldGhvZCIsInRva2VuIiwidGltZW91dCIsImR1ciIsInNwbGljZSIsIm5leHRUaWNrIiwicGlwZSIsImNjaURvd25sb2FkIiwic3RhdFN5bmMiLCJkaXJlY3RvcnkiLCJiYXNlbmFtZSIsImkiLCJsb2ciLCJta2RpclN5bmMiLCJjY2lBcnRpZmFjdHNJbmZvSGFuZGxlciIsInN0YXR1c0NvZGUiLCJzdGF0dXNNZXNzYWdlIiwicHJlZml4ZXMiLCJhcnRpZmFjdHMiLCJuYW1lIiwiaXRlbSIsImZvdW5kIiwidXJscyIsImZvckVhY2giLCJpbmRleE9mIiwicHVzaCIsImFsbEZvdW5kIiwiY2NpQnVpbGRJbmZvSGFuZGxlciIsImJ1aWxkcyIsImluc3RhbGwiLCJvcmRlcl9ieSIsIndvcmtmbG93c19qb2JfbmFtZSIsImJ1aWxkIiwid29ya2Zsb3dzIiwiam9iX25hbWUiLCJidWlsZF9udW0iLCJfbmFtZSIsImFwaVBhdGgiLCJob3N0aW5nIiwib3JnYW5pc2F0aW9uIiwicHJvamVjdCIsImNjaV91cmwiLCJoZWFkZXJzIiwiQWNjZXB0IiwiX29wdGlvbnMiLCJyZWFkIiwiaWdub3JlX2JyYW5jaCIsImJyYW5jaCIsIm9rIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFNQTs7OztBQUNBOzs7O0FBQ0E7Ozs7QUFDQTs7QUFDQTs7OztBQUNBOzs7Ozs7QUFYQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQVNBLElBQU1BLFVBQVMsRUFBZjtBQUNBLElBQUlDLGdCQUFKLEMsQ0FBYTtBQUNiLElBQUlDLGVBQUosQyxDQUFhO0FBQ2IsSUFBSUMsc0JBQUosQyxDQUFtQjs7QUFFbkIsSUFBSUMsa0JBQUosQyxDQUFlOztBQUVmLElBQU1DLGlCQUFpQixTQUFqQkEsY0FBaUIsQ0FBQ0MsR0FBRCxFQUE2QjtBQUFBLE1BQXZCQyxXQUF1Qix1RUFBVCxJQUFTOztBQUNsRCxNQUFJRCxJQUFJRSxJQUFSLEVBQWM7QUFDWixRQUFJO0FBQ0ZGLFVBQUlHLElBQUosR0FBV0MsS0FBS0MsS0FBTCxDQUFXTCxJQUFJRSxJQUFmLENBQVg7QUFDRCxLQUZELENBRUUsT0FBT0ksQ0FBUCxFQUFVO0FBQ1ZOLFVBQUlHLElBQUosR0FBV0YsV0FBWDtBQUNEO0FBQ0Y7QUFDRixDQVJEOztBQVVBLElBQU1NLGVBQWUsU0FBZkEsWUFBZSxHQUFNO0FBQ3pCLE1BQUlYLE9BQU9ZLEtBQVgsRUFBa0I7QUFDaEJaLFdBQU9hLElBQVAsR0FBY2IsT0FBT2MsS0FBckI7QUFDQSxRQUFJZixRQUFRZ0IsT0FBUixDQUFnQkMsS0FB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eEJxQixVQUFJLElBRG9CO0FBRXhCMUcsWUFBTSxDQUFFLEVBQUU2RixXQUFXckcsUUFBUStGLE9BQXJCLEVBQUY7QUFGa0IsS0FBMUI7QUFJQTtBQUNEO0FBQ0QsTUFBTVEsVUFDSnRHLE9BQU8rRyxhQUFQLEdBQ0ksQ0FBQyxtQkFBRCxFQUFzQi9HLE9BQU91RyxPQUE3QixFQUFzQ3ZHLE9BQU93RyxZQUE3QyxFQUEyRHhHLE9BQU95RyxPQUFsRSxFQUEyRXhFLElBQTNFLENBQWdGLEdBQWhGLENBREosR0FFSSxDQUFDLG1CQUFELEVBQXNCakMsT0FBT3VHLE9BQTdCLEVBQXNDdkcsT0FBT3dHLFlBQTdDLEVBQTJEeEcsT0FBT3lHLE9BQWxFLEVBQTJFLE1BQTNFLEVBQW1GekcsT0FBT2dILE1BQTFGLEVBQWtHL0UsSUFBbEcsQ0FBdUcsR0FBdkcsQ0FITjtBQUlBaEIsVUFBUTRELEdBQVIsQ0FBWSxpREFBaUQ3RSxPQUFPcUcsS0FBeEQsR0FBZ0UsR0FBNUU7QUFDQSx5QkFBUTtBQUNOcEMsWUFBUSxLQURGO0FBRU5YLFNBQVF0RCxPQUFPMEcsT0FBUCxHQUFpQkosT0FBekIsc0JBQWlEdEcsT0FBT2tFLEtBQXhELGlDQUZNO0FBR055QyxhQUFTLEVBQUVDLFFBQVEsa0JBQVYsRUFISDtBQUlOekMsYUFBU25FLE9BQU9tRSxPQUFQLEdBQWlCO0FBSnBCLEdBQVIsRUFLR3lCLG1CQUxIO0FBTUQsQ0EzQkQ7O2tCQTZCZTlGLE8iLCJmaWxlIjoidGFzay5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8vIE1vZHVsZSBmb3IgdGFsa2luZyB0byBDQ0ksIGdldHRpbmcgdGhlIGFydGlmYWN0cywgZG93bmxvYWRpbmcgdGhlbSxcbi8vIHN0YXJ0aW5nIHRoZSBhY3Rpb24gc2NyaXB0LCBzYXZpbmcgdGhlIHVwZGF0ZWQgY29uZmlnIGZpbGUsIC4uLlxuLy9cbi8vIFRoZSB0YXNrLnJ1bigpIHNjaGVkdWxlcyBuZXh0IHJ1biBhcyBuZWVkZWQuXG4vLyBBbGwgZGlzayBvcGVyYXRpb25zIGFyZSBzeW5jaHJvbm91cy5cblxuaW1wb3J0IHJlcXVlc3QgZnJvbSAncmVxdWVzdCc7XG5pbXBvcnQgZnMgZnJvbSAnZnMnO1xuaW1wb3J0IHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgeyBzcGF3biB9IGZyb20gJ2NoaWxkX3Byb2Nlc3MnO1xuaW1wb3J0IG9yZGVyQnkgZnJvbSAnbG9kYXNoLm9yZGVyYnknO1xuaW1wb3J0IGZpbHRlciBmcm9tICdsb2Rhc2guZmlsdGVyJztcblxuY29uc3QgbW9kdWxlID0ge307XG5sZXQgb3B0aW9uczsgLy8gc2V0IG9uY2UgYXQgZmlyc3QgcnVuKClcbmxldCBjb25maWc7ICAvLyByZS1yZWFkIGluIGVhY2ggaXRlcmF0aW9uXG5sZXQgZG93bmxvYWRFcnJvcjsgLy8gc3RvcCB0aGUgcHJvY2VzcyBpbiBjYXNlIGRvd25sb2FkIGZhaWxlZFxuXG5sZXQgRVhJVF9DT0RFOyAvLyByZXR1cm4gY29kZSBmb3IgJy0tcnVuLW9uY2UnIG1vZGVcblxuY29uc3QgdXBkYXRlUmVzcG9uc2UgPSAocmVzLCBkZWZhdWx0Qm9keSA9IG51bGwpID0+IHtcbiAgaWYgKHJlcy50ZXh0KSB7XG4gICAgdHJ5IHtcbiAgICAgIHJlcy5ib2R5ID0gSlNPTi5wYXJzZShyZXMudGV4dCk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgcmVzLmJvZHkgPSBkZWZhdWx0Qm9keTtcbiAgICB9XG4gIH1cbn07XG5cbmNvbnN0IHNjaGVkdWxlTmV4dCA9ICgpID0+IHtcbiAgaWYgKGNvbmZpZy5fc2F2ZSkge1xuICAgIGNvbmZpZy5sYXN0ID0gY29uZmlnLl9sYXN0O1xuICAgIGlmIChvcHRpb25zLmNmZ0ZpbGUud3JpdGUoY29uZmlnKSkge1xuICAgICAgY29uc29sZS5pbmZvKCdOZXcgY29uZmlndXJhdGlvbiBmaWxlIHJldmlzaW9uIHN1Y2Nlc3NmdWxseSBzYXZlZC4nKTtcbiAgICB9XG4gIH1cbiAgaWYgKG9wdGlvbnNbJ3J1bi1vbmNlJ10pIHtcbiAgICBjb25zb2xlLmluZm8oJ0NDSS1QSU5HVSBhYm91dCB0byBleGl0LiBUaGFua3MgZm9yIGZseWluZyB3aXRoIHVzIScpO1xuICAgIHByb2Nlc3MuZXhpdChFWElUX0NPREUpO1xuICB9IGVsc2Uge1xuICAgIHNldFRpbWVvdXQobW9kdWxlLnJ1biwgY29uZmlnLmludGVydmFsICogMTAwMCk7XG4gICAgY29uc29sZS5pbmZvKCdOZXh0IENDSSB0YXNrIHNjaGVkdWxlZCBpbiAnICsgY29uZmlnLmludGVydmFsICsgJyBzZWNvbmRzLicpO1xuICB9XG59O1xuXG5jb25zdCBsb2dQcmVmaXhlZCA9IChwcmVmaXgsIGxvZ0ZuKSA9PiAoZGF0YSkgPT4ge1xuICBsb2dGbihkYXRhLnRvU3RyaW5nKCkuc3BsaXQoJ1xcbicpLnNsaWNlKDAsIC0xKS5tYXAoKHMpID0+IGAke3ByZWZpeH0gJHtzfWApLmpvaW4oJ1xcbicpKTtcbn07XG5cbmNvbnN0IHN0YXJ0U2NyaXB0ID0gKCkgPT4ge1xuICBjb25zdCBzY3JpcHRGaWxlID0gcGF0aC5yZXNvbHZlKGNvbmZpZy5zY3JpcHQpO1xuICBjb25zb2xlLmluZm8oJ0V4ZWN1dGluZyBcIicgKyBzY3JpcHRGaWxlICsgJ1wiLicpO1xuICB0cnkge1xuICAgIGNvbnN0IHNjcmlwdCA9IHNwYXduKHNjcmlwdEZpbGUsIFsgY29uZmlnLl90YXJnZXQsIGNvbmZpZy5fbGFzdCBdLCB7IGN3ZDogcGF0aC5kaXJuYW1lKHNjcmlwdEZpbGUpIH0pO1xuICAgIHNjcmlwdC5zdGRvdXQub24oJ2RhdGEnLCBsb2dQcmVmaXhlZCgnKicsIGNvbnNvbGUuaW5mbykpO1xuICAgIHNjcmlwdC5zdGRlcnIub24oJ2RhdGEnLCBsb2dQcmVmaXhlZCgnIScsIGNvbnNvbGUud2FybikpO1xuICAgIHNjcmlwdC5vbignZXJyb3InLCAoZXJyKSA9PiB7XG4gICAgICBjb25zb2xlLmVycm9yKCdGYWlsZWQgdG8gc3RhcnQgc2NyaXB0IFwiJyArIHNjcmlwdEZpbGUgKyAnXCIuJyk7XG4gICAgICBjb25zb2xlLmVycm9yKEpTT04uc3RyaW5naWZ5KGVycikpO1xuICAgICAgY29uc29sZS53YXJuKCdDQ0kgdGFzayBmaW5pc2hlZCB3aXRoIGZhaWx1cmUuJyk7XG4gICAgICBzY2hlZHVsZU5leHQoKTtcbiAgICB9KTtcbiAgICBzY3JpcHQub24oJ2Nsb3NlJywgKGNvZGUpID0+IHtcbiAgICAgIGlmICghY29kZSkgeyAvLyBzdWNjZXNzXG4gICAgICAgIGNvbnNvbGUuaW5mbygnQ0NJIHRhc2sgc3VjY2Vzc2Z1bGx5IGZpbmlzaGVkLicpO1xuICAgICAgICBjb25maWcuX3NhdmUgPSB0cnVlO1xuICAgICAgfSBlbHNlIHsgLy8gZmFpbFxuICAgICAgICBjb25zb2xlLmVycm9yKCdJbnN0YWxsYXRpb24gc2NyaXB0IGZhaWxlZCB3aXRoIGV4aXQgY29kZSAoJyArIGNvZGUgKyAnKS4nKTtcbiAgICAgIH1cbiAgICAgIEVYSVRfQ09ERSA9IGNvZGU7XG4gICAgICBzY2hlZHVsZU5leHQoKTtcbiAgICB9KTtcbiAgfSBjYXRjaCAoZSkgeyAvLyBzcGF3biBjYW4gdGhyb3cgZXhjZXB0aW9ucyBvbiBpdHMgb3duXG4gICAgY29uc29sZS5lcnJvcignRmFpbGVkIHRvIHN0YXJ0IHNjcmlwdCBcIicgKyBzY3JpcHRGaWxlICsgJ1wiLicpO1xuICAgIGNvbnNvbGUuZXJyb3IoZS5tZXNzYWdlKTtcbiAgICBjb25zb2xlLndhcm4oJ0NDSSB0YXNrIGZpbmlzaGVkIHdpdGggZmFpbHVyZS4nKTtcbiAgICBzY2hlZHVsZU5leHQoKTtcbiAgfVxufTtcblxuY29uc3QgY2NpRG93bmxvYWRPbmUgPSAoKSA9PiB7XG4gIGlmICghY29uZmlnLl91cmxzLmxlbmd0aCkge1xuICAgIHN0YXJ0U2NyaXB0KCk7XG4gIH0gZWxzZSB7XG4gICAgY29uc3QgdXJsID0gY29uZmlnLl91cmxzLnBvcCgpO1xuICAgIGxldCBmaWxlbmFtZSA9IHVybC5zcGxpdCgnLycpO1xuICAgIGZpbGVuYW1lID0gZmlsZW5hbWVbZmlsZW5hbWUubGVuZ3RoIC0gMV07XG4gICAgY29uc3Qgc3RyZWFtTmFtZSA9IHBhdGguam9pbihjb25maWcuX3RhcmdldCwgZGVjb2RlVVJJQ29tcG9uZW50KGZpbGVuYW1lKSk7XG4gICAgY29uc3Qgc3RyZWFtID0gZnMuY3JlYXRlV3JpdGVTdHJlYW0oc3RyZWFtTmFtZSk7XG4gICAgY29uc29sZS5pbmZvKCdEb3dubG9hZGluZyBcIicgKyBkZWNvZGVVUklDb21wb25lbnQodXJsKSArICdcIi4nKTtcbiAgICBjb25zdCBzdGFydCA9IChuZXcgRGF0ZSgpKS5nZXRUaW1lKCk7XG4gICAgZG93bmxvYWRFcnJvciA9IGZhbHNlO1xuICAgIHJlcXVlc3Qoe1xuICAgICAgbWV0aG9kOiAnR0VUJyxcbiAgICAgIHVybDogYCR7dXJsfT9jaXJjbGUtdG9rZW49JHtjb25maWcudG9rZW59YCxcbiAgICAgIHRpbWVvdXQ6IGNvbmZpZy50aW1lb3V0ICogMTAwMFxuICAgIH0pXG4gICAgICAub24oJ2Vycm9yJywgKGVycikgPT4ge1xuICAgICAgICBjb25zb2xlLmVycm9yKCdEb3dubG9hZCBmYWlsZWQ6ICcgKyBKU09OLnN0cmluZ2lmeShlcnIpICsgJy4nKTtcbiAgICAgICAgY29uc29sZS53YXJuKCdDQ0kgdGFzayBmaW5pc2hlZCB3aXRoIGZhaWx1cmUuJyk7XG4gICAgICAgIGRvd25sb2FkRXJyb3IgPSB0cnVlO1xuICAgICAgICBzY2hlZHVsZU5leHQoKTtcbiAgICAgIH0pXG4gICAgICAub24oJ2VuZCcsICgpID0+IHtcbiAgICAgICAgaWYgKGRvd25sb2FkRXJyb3IpIHsgcmV0dXJuOyB9XG4gICAgICAgIGxldCBkdXIgPSAobmV3IERhdGUoKSkuZ2V0VGltZSgpIC0gc3RhcnQ7XG4gICAgICAgIGlmIChkdXIgPiA5OTkpIHtcbiAgICAgICAgICBkdXIgPSAoJycgKyBkdXIpLnNwbGl0KCcnKTtcbiAgICAgICAgICBkdXIuc3BsaWNlKGR1ci5sZW5ndGggLSAzLCAwLCAnLicpO1xuICAgICAgICAgIGR1ciA9IGR1ci5qb2luKCcnKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zb2xlLmluZm8oJ1NhdmVkIGFzIFwiJyArIHN0cmVhbU5hbWUgKyAnXCIgaW4gJyArIGR1ciArICcgbXMuJyk7XG4gICAgICAgIHByb2Nlc3MubmV4dFRpY2soY2NpRG93bmxvYWRPbmUpO1xuICAgICAgfSlcbiAgICAgIC5waXBlKHN0cmVhbSk7XG4gIH1cbn07XG5jb25zdCBjY2lEb3dubG9hZCA9ICgpID0+IHtcbiAgLy8gY3JlYXRlIHRhcmdldCBkaXJlY3RvcnlcbiAgdHJ5IHtcbiAgICBmcy5zdGF0U3luYyhjb25maWcuZGlyZWN0b3J5KTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIGNvbnNvbGUuZXJyb3IoJ0RpcmVjdG9yeSBcIicgKyBjb25maWcuZGlyZWN0b3J5ICsgJ1wiIGRvZXMgbm90IGV4aXN0LCBjYW5ub3Qgd3JpdGUgdGhlcmUuJyk7XG4gICAgY29uc29sZS53YXJuKCdDQ0kgdGFzayBmaW5pc2hlZCB3aXRoIGZhaWx1cmUuJyk7XG4gICAgc2NoZWR1bGVOZXh0KCk7XG4gICAgcmV0dXJuO1xuICB9XG4gIGNvbnN0IGJhc2VuYW1lID0gJ2J1aWxkLScgKyBjb25maWcuX2xhc3Q7XG4gIGxldCBkaXJuYW1lO1xuICB0cnkge1xuICAgIGxldCBpID0gMTtcbiAgICB3aGlsZSAodHJ1ZSkgeyAgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1jb25zdGFudC1jb25kaXRpb25cbiAgICAgIGRpcm5hbWUgPSBiYXNlbmFtZSArIChpID4gMSA/ICcuJyArIGkgOiAnJyk7XG4gICAgICBmcy5zdGF0U3luYyhwYXRoLmpvaW4oY29uZmlnLmRpcmVjdG9yeSwgZGlybmFtZSkpO1xuICAgICAgaSsrO1xuICAgIH1cbiAgfSBjYXRjaCAoZSkge1xuICAgIC8vIGV4Y2VwdGlvbiBpcyBmaW5lXG4gIH1cbiAgLy8gY3JlYXRlIG5ldyBkaXJcbiAgY29uZmlnLl90YXJnZXQgPSBwYXRoLnJlc29sdmUocGF0aC5qb2luKGNvbmZpZy5kaXJlY3RvcnksIGRpcm5hbWUpKTtcbiAgY29uc29sZS5sb2coJ0NyZWF0aW5nIGFydGlmYWN0IGRpcmVjdG9yeSBcIicgKyBjb25maWcuX3RhcmdldCArICdcIi4nKTtcbiAgdHJ5IHtcbiAgICBmcy5ta2RpclN5bmMoY29uZmlnLl90YXJnZXQpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgY29uc29sZS5lcnJvcignVGFyZ2V0IGRpcmVjdG9yeSBcIicgKyBjb25maWcuX3RhcmdldCArICdcIiBjYW5ub3QgYmUgY3JlYXRlZC4nKTtcbiAgICBjb25zb2xlLndhcm4oJ0NDSSB0YXNrIGZpbmlzaGVkIHdpdGggZmFpbHVyZS4nKTtcbiAgICBzY2hlZHVsZU5leHQoKTtcbiAgICByZXR1cm47XG4gIH1cblxuICAvLyBzdGFydCB0aGUgZG93bmxvYWRzXG4gIGNjaURvd25sb2FkT25lKCk7XG59O1xuXG5jb25zdCBjY2lBcnRpZmFjdHNJbmZvSGFuZGxlciA9IChlcnIsIHJlcykgPT4ge1xuICBpZiAoZXJyKSB7XG4gICAgY29uc29sZS5lcnJvcihKU09OLnN0cmluZ2lmeShlcnIpKTtcbiAgICBjb25zb2xlLndhcm4oJ0NDSSB0YXNrIGZpbmlzaGVkIHdpdGggZmFpbHVyZS4nKTtcbiAgICBzY2hlZHVsZU5leHQoKTtcbiAgICByZXR1cm47XG4gIH1cbiAgdXBkYXRlUmVzcG9uc2UocmVzLCBbXSk7XG4gIGlmIChyZXMuc3RhdHVzQ29kZSAhPT0gMjAwKSB7XG4gICAgY29uc29sZS5lcnJvcignU3RhdHVzOiAnICsgcmVzLnN0YXR1c0NvZGUgKyAnLCAnICsgcmVzLnN0YXR1c01lc3NhZ2UpO1xuICAgIGNvbnNvbGUud2FybignQ0NJIHRhc2sgZmluaXNoZWQgd2l0aCBmYWlsdXJlLicpO1xuICAgIHNjaGVkdWxlTmV4dCgpO1xuICB9IGVsc2UgeyAvLyByZXMub2tcbiAgICBsZXQgYm9keTtcbiAgICB0cnkge1xuICAgICAgYm9keSA9IEpTT04ucGFyc2UocmVzLmJvZHkpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0Nhbm5vdCBwYXJzZSByZXNwb25zZSBmb3JtIHRoZSBzZXJ2ZXIhJyk7XG4gICAgICBjb25zb2xlLndhcm4oJ0NDSSB0YXNrIGZpbmlzaGVkIHdpdGggZmFpbHVyZS4nKTtcbiAgICAgIHNjaGVkdWxlTmV4dCgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zb2xlLmxvZygnUmVzcG9uc2UgZnJvbSBDQ0kgc2VydmVyOlxcbicgKyBKU09OLnN0cmluZ2lmeShib2R5LCBudWxsLCA0KSk7XG4gICAgY29uc3QgcHJlZml4ZXMgPSBjb25maWcuYXJ0aWZhY3RzLm1hcChpdGVtID0+IHtcbiAgICAgIHJldHVybiB7IG5hbWU6IGl0ZW0sIGZvdW5kOiBmYWxzZSB9O1xuICAgIH0pO1xuICAgIGNvbnN0IHVybHMgPSBbXTtcbiAgICBib2R5LmZvckVhY2goaXRlbSA9PiB7XG4gICAgICBwcmVmaXhlcy5mb3JFYWNoKHByZWZpeCA9PiB7XG4gICAgICAgIGlmIChpdGVtLnBhdGguaW5kZXhPZihwcmVmaXgubmFtZSkgIT09IC0xKSB7XG4gICAgICAgICAgdXJscy5wdXNoKGl0ZW0udXJsKTtcbiAgICAgICAgICBwcmVmaXguZm91bmQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KTtcbiAgICBjb25zb2xlLmxvZygnQ29sbGVjdGVkIGFydGlmYWN0IFVSTHMgKHRvIGRvd25sb2FkKTpcXG4nICsgSlNPTi5zdHJpbmdpZnkodXJscywgbnVsbCwgNCkpO1xuICAgIGxldCBhbGxGb3VuZCA9IHRydWU7XG4gICAgcHJlZml4ZXMuZm9yRWFjaChwcmVmaXggPT4geyBpZiAoIXByZWZpeC5mb3VuZCkgeyBhbGxGb3VuZCA9IGZhbHNlOyB9IH0pO1xuICAgIGlmICghYWxsRm91bmQpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ05vdCBhbGwgYXJ0aWZhY3RzIGZvdW5kISBNaXNzaW5nOicpO1xuICAgICAgcHJlZml4ZXMuZm9yRWFjaChwcmVmaXggPT4geyBpZiAoIXByZWZpeC5mb3VuZCkgeyBjb25zb2xlLmVycm9yKCcrICcgKyBwcmVmaXgubmFtZSk7IH0gfSk7XG4gICAgICBjb25zb2xlLndhcm4oJ0NDSSB0YXNrIGZpbmlzaGVkIHdpdGggZmFpbHVyZS4nKTtcbiAgICAgIHNjaGVkdWxlTmV4dCgpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25maWcuX3VybHMgPSB1cmxzO1xuICAgICAgY2NpRG93bmxvYWQoKTtcbiAgICB9XG4gIH1cbn07XG5cbmNvbnN0IGNjaUJ1aWxkSW5mb0hhbmRsZXIgPSAoZXJyLCByZXMpID0+IHtcbiAgaWYgKGVycikge1xuICAgIGNvbnNvbGUuZXJyb3IoSlNPTi5zdHJpbmdpZnkoZXJyKSk7XG4gICAgY29uc29sZS53YXJuKCdDQ0kgdGFzayBmaW5pc2hlZCB3aXRoIGZhaWx1cmUuJyk7XG4gICAgc2NoZWR1bGVOZXh0KCk7XG4gICAgcmV0dXJuO1xuICB9XG4gIHVwZGF0ZVJlc3BvbnNlKHJlcyk7XG4gIGlmIChyZXMuc3RhdHVzQ29kZSAhPT0gMjAwKSB7XG4gICAgY29uc29sZS5lcnJvcignU3RhdHVzOiAnICsgcmVzLnN0YXR1c0NvZGUgKyAnLCAnICsgcmVzLnN0YXR1c01lc3NhZ2UpO1xuICAgIGNvbnNvbGUud2FybignQ0NJIHRhc2sgZmluaXNoZWQgd2l0aCBmYWlsdXJlLicpO1xuICAgIHNjaGVkdWxlTmV4dCgpO1xuICB9IGVsc2UgaWYgKCFyZXMuYm9keSB8fCAhcmVzLmJvZHkubGVuZ3RoKSB7XG4gICAgY29uc29sZS5lcnJvcignTm8gc3VjY2Vzc2Z1bCBidWlsZCBmb3VuZCEnKTtcbiAgICBjb25zb2xlLndhcm4oJ0NDSSB0YXNrIGZpbmlzaGVkIHdpdGggZmFpbHVyZS4nKTtcbiAgICBzY2hlZHVsZU5leHQoKTtcbiAgfSBlbHNlIHsgLy8gcmVzLm9rXG4gICAgbGV0IGJ1aWxkcztcbiAgICB0cnkge1xuICAgICAgYnVpbGRzID0gSlNPTi5wYXJzZShyZXMuYm9keSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgY29uc29sZS5lcnJvcignQ2Fubm90IHBhcnNlIHJlc3BvbnNlIGZvcm0gdGhlIHNlcnZlciEnKTtcbiAgICAgIGNvbnNvbGUud2FybignQ0NJIHRhc2sgZmluaXNoZWQgd2l0aCBmYWlsdXJlLicpO1xuICAgICAgc2NoZWR1bGVOZXh0KCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICghb3B0aW9ucy5pbnN0YWxsKSB7XG4gICAgICBjb25zb2xlLmxvZygnUmVzcG9uc2UgZnJvbSBDQ0kgc2VydmVyOlxcbicgKyBKU09OLnN0cmluZ2lmeShidWlsZHMsIG51bGwsIDQpKTtcbiAgICAgIGJ1aWxkcyA9IG9yZGVyQnkoYnVpbGRzLCBbIGNvbmZpZy5vcmRlcl9ieSBdLCBbICdkZXNjJyBdKTtcbiAgICAgIGlmIChjb25maWcud29ya2Zsb3dzX2pvYl9uYW1lKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKCdGaWx0ZXJpbmcgdGhlIGF2YWlsYWJsZSBzdWNjZXNzZnVsIGJ1aWxkcyBvbiB3b3JrZmxvd3Mgam9iIG5hbWUgPSAnICsgY29uZmlnLndvcmtmbG93c19qb2JfbmFtZSArICcuJyk7XG4gICAgICAgIGJ1aWxkcyA9IGZpbHRlcihidWlsZHMsIChidWlsZCkgPT4gKGJ1aWxkLndvcmtmbG93cyAmJiAoYnVpbGQud29ya2Zsb3dzLmpvYl9uYW1lID09PSBjb25maWcud29ya2Zsb3dzX2pvYl9uYW1lKSkpO1xuICAgICAgICBpZiAoIWJ1aWxkcy5sZW5ndGgpIHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKCdObyBzdWNjZXNzZnVsIGJ1aWxkIHdpdGggc3BlY2lmaWVkIHdvcmtmbG93cyBqb2IgbmFtZSBmb3VuZCEnKTtcbiAgICAgICAgICBjb25zb2xlLndhcm4oJ0NDSSB0YXNrIGZpbmlzaGVkIHdpdGggZmFpbHVyZS4nKTtcbiAgICAgICAgICBzY2hlZHVsZU5leHQoKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgY29uZmlnLl9sYXN0ID0gYnVpbGRzWzBdLmJ1aWxkX251bTtcbiAgICAhb3B0aW9ucy5pbnN0YWxsICYmIGNvbnNvbGUuaW5mbygnTGFzdCBzdWNjZXNzZnVsICcgKyBjb25maWcuX25hbWUgKyAnIGJ1aWxkIG51bWJlcjogJyArIGNvbmZpZy5fbGFzdCArICcuJyk7XG4gICAgaWYgKCFvcHRpb25zLmluc3RhbGwgJiYgKGNvbmZpZy5sYXN0ID09PSBjb25maWcuX2xhc3QpKSB7XG4gICAgICBjb25zb2xlLmluZm8oJ0J1aWxkICcgKyBjb25maWcuX2xhc3QgKyAnIGFscmVhZHkgaW5zdGFsbGVkLicpO1xuICAgICAgY29uc29sZS5pbmZvKCdDQ0kgdGFzayBzdWNjZXNzZnVsbHkgZmluaXNoZWQuJyk7XG4gICAgICBFWElUX0NPREUgPSAwO1xuICAgICAgc2NoZWR1bGVOZXh0KCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChvcHRpb25zLmluc3RhbGwgJiYgKGNvbmZpZy5sYXN0ID09PSBjb25maWcuX2xhc3QpKSB7XG4gICAgICAgIGNvbnNvbGUuaW5mbygnQnVpbGQgJyArIGNvbmZpZy5fbGFzdCArICcgYWxyZWFkeSBpbnN0YWxsZWQsIGFib3V0IHRvIGluc3RhbGwgaXQgYWdhaW4uLi4nKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnNvbGUuaW5mbygnQnVpbGQgJyArIGNvbmZpZy5fbGFzdCArICcgaXMgbm90IGluc3RhbGxlZCB5ZXQuJyk7XG4gICAgICB9XG4gICAgICBjb25zdCBhcGlQYXRoID0gWycvYXBpL3YxLjEvcHJvamVjdCcsIGNvbmZpZy5ob3N0aW5nLCBjb25maWcub3JnYW5pc2F0aW9uLFxuICAgICAgICBjb25maWcucHJvamVjdCwgY29uZmlnLl9sYXN0LCAnYXJ0aWZhY3RzJ10uam9pbignLycpO1xuICAgICAgY29uc29sZS5sb2coJ0dldHRpbmcgaW5mbyBhYm91dCBidWlsZCAnICsgY29uZmlnLl9sYXN0ICsgJyBhcnRpZmFjdHMuJyk7XG4gICAgICByZXF1ZXN0KHtcbiAgICAgICAgbWV0aG9kOiAnR0VUJyxcbiAgICAgICAgdXJsOiBgJHtjb25maWcuY2NpX3VybCArIGFwaVBhdGh9P2NpcmNsZS10b2tlbj0ke2NvbmZpZy50b2tlbn1gLFxuICAgICAgICBoZWFkZXJzOiB7IEFjY2VwdDogJ2FwcGxpY2F0aW9uL2pzb24nIH0sXG4gICAgICAgIHRpbWVvdXQ6IGNvbmZpZy50aW1lb3V0ICogMTAwMFxuICAgICAgfSwgY2NpQXJ0aWZhY3RzSW5mb0hhbmRsZXIpO1xuICAgIH1cbiAgfVxufTtcblxubW9kdWxlLnJ1biA9IChfb3B0aW9ucyA9IG51bGwpID0+IHtcbiAgRVhJVF9DT0RFID0gMTsgICAvLyB1cGRhdGUgdG8gMCBvbiBmaW5hbCBzdWNjZXNzXG4gIGlmIChfb3B0aW9ucykgeyBvcHRpb25zID0gX29wdGlvbnM7IH1cbiAgY29uZmlnID0gb3B0aW9ucy5jZmdGaWxlLnJlYWQoKTtcbiAgaWYgKGNvbmZpZy5pZ25vcmVfYnJhbmNoKSB7XG4gICAgY29uZmlnLmJyYW5jaCA9ICc8QU5ZPic7XG4gIH1cbiAgY29uZmlnLl9uYW1lID0gW2NvbmZpZy5ob3N0aW5nLCBjb25maWcub3JnYW5pc2F0aW9uLCBjb25maWcucHJvamVjdCwgY29uZmlnLmJyYW5jaF0uam9pbignLycpO1xuICBjb25zb2xlLmluZm8oJ0NDSSB0YXNrIHN0YXJ0ZWQuJyk7XG4gIGlmIChvcHRpb25zLmluc3RhbGwpIHtcbiAgICBjY2lCdWlsZEluZm9IYW5kbGVyKG51bGwsIHtcbiAgICAgIG9rOiB0cnVlLFxuICAgICAgYm9keTogWyB7IGJ1aWxkX251bTogb3B0aW9ucy5pbnN0YWxsIH0gXVxuICAgIH0pO1xuICAgIHJldHVybjtcbiAgfVxuICBjb25zdCBhcGlQYXRoID1cbiAgICBjb25maWcuaWdub3JlX2JyYW5jaFxuICAgICAgPyBbJy9hcGkvdjEuMS9wcm9qZWN0JywgY29uZmlnLmhvc3RpbmcsIGNvbmZpZy5vcmdhbmlzYXRpb24sIGNvbmZpZy5wcm9qZWN0XS5qb2luKCcvJylcbiAgICAgIDogWycvYXBpL3YxLjEvcHJvamVjdCcsIGNvbmZpZy5ob3N0aW5nLCBjb25maWcub3JnYW5pc2F0aW9uLCBjb25maWcucHJvamVjdCwgJ3RyZWUnLCBjb25maWcuYnJhbmNoXS5qb2luKCcvJyk7XG4gIGNvbnNvbGUubG9nKCdHZXR0aW5nIGluZm8gYWJvdXQgbGFzdCBzdWNjZXNzZnVsIGJ1aWxkIG9mICcgKyBjb25maWcuX25hbWUgKyAnLicpO1xuICByZXF1ZXN0KHtcbiAgICBtZXRob2Q6ICdHRVQnLFxuICAgIHVybDogYCR7Y29uZmlnLmNjaV91cmwgKyBhcGlQYXRofT9jaXJjbGUtdG9rZW49JHtjb25maWcudG9rZW59JmZpbHRlcj1zdWNjZXNzZnVsJmxpbWl0PTEwMGAsXG4gICAgaGVhZGVyczogeyBBY2NlcHQ6ICdhcHBsaWNhdGlvbi9qc29uJyB9LFxuICAgIHRpbWVvdXQ6IGNvbmZpZy50aW1lb3V0ICogMTAwMFxuICB9LCBjY2lCdWlsZEluZm9IYW5kbGVyKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IG1vZHVsZTtcbiJdfQ==

@@ -7,3 +7,3 @@ 'use strict';

// generated code, please see package.json
exports.default = '2.7.15';
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL2xpYi92ZXJzaW9uLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUE7a0JBQ2UsUSIsImZpbGUiOiJ2ZXJzaW9uLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLy8gZ2VuZXJhdGVkIGNvZGUsIHBsZWFzZSBzZWUgcGFja2FnZS5qc29uXG5leHBvcnQgZGVmYXVsdCAnMi43LjE1JztcbiJdfQ==
exports.default = '2.8.0';
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL2xpYi92ZXJzaW9uLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUE7a0JBQ2UsTyIsImZpbGUiOiJ2ZXJzaW9uLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLy8gZ2VuZXJhdGVkIGNvZGUsIHBsZWFzZSBzZWUgcGFja2FnZS5qc29uXG5leHBvcnQgZGVmYXVsdCAnMi44LjAnO1xuIl19
{
"name": "cci-pingu",
"version": "2.7.15",
"version": "2.8.0",
"description": "Periodically check for new builds (artifacts) on CircleCI and install them in turn",

@@ -38,7 +38,7 @@ "license": "MIT",

"babel-preset-stage-0": "6.24.1",
"eslint": "5.16.0",
"eslint-config-standard": "12.0.0",
"eslint-plugin-import": "2.17.2",
"eslint-plugin-node": "9.0.1",
"eslint-plugin-promise": "4.1.1",
"eslint": "6.0.1",
"eslint-config-standard": "13.0.1",
"eslint-plugin-import": "2.18.0",
"eslint-plugin-node": "9.1.0",
"eslint-plugin-promise": "4.2.1",
"eslint-plugin-standard": "4.0.0",

@@ -51,6 +51,8 @@ "mocha": "6.1.4"

"lodash.orderby": "4.6.0",
"superagent": "5.0.5"
"request": "2.88.0"
},
"renovate": {
"extends": ["config:base"],
"extends": [
"config:base"
],
"bumpVersion": "patch",

@@ -57,0 +59,0 @@ "automerge": true,

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