Socket
Socket
Sign inDemoInstall

proxima_datareader

Package Overview
Dependencies
18
Maintainers
1
Versions
29
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

Comparing version 1.0.4 to 1.1.0

dist/askUser.js

8

dist/defaults.js

@@ -11,5 +11,9 @@ "use strict";

encodings: ['win1251', 'utf-8', 'ascii', 'base64', 'hex', 'utf8', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'latin1', 'binary'],
searchTypes: ['drugCode', 'drugName']
searchTypes: {
drugCode: 'number',
drugName: 'string'
},
renderTypes: ['total', 'detailed']
};
exports["default"] = _default;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9kZWZhdWx0cy5qcyJdLCJuYW1lcyI6WyJkZWZhdWx0U291cmNlUGF0aCIsImRlZmF1bHRLZXlzU291cmNlIiwiZW5jb2RpbmdzIiwic2VhcmNoVHlwZXMiXSwibWFwcGluZ3MiOiI7Ozs7OztlQUFlO0FBQ2JBLEVBQUFBLGlCQUFpQixFQUFFLHdDQUROO0FBRWJDLEVBQUFBLGlCQUFpQixFQUFFLHdDQUZOO0FBR2JDLEVBQUFBLFNBQVMsRUFBRSxDQUFDLFNBQUQsRUFBWSxPQUFaLEVBQXFCLE9BQXJCLEVBQThCLFFBQTlCLEVBQXdDLEtBQXhDLEVBQStDLE1BQS9DLEVBQ1QsTUFEUyxFQUNELE9BREMsRUFDUSxTQURSLEVBQ21CLFVBRG5CLEVBQytCLFFBRC9CLEVBQ3lDLFFBRHpDLENBSEU7QUFLYkMsRUFBQUEsV0FBVyxFQUFFLENBQUMsVUFBRCxFQUFhLFVBQWI7QUFMQSxDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQge1xuICBkZWZhdWx0U291cmNlUGF0aDogJ34vRG9jdW1lbnRzL1Byb3hpbWEvS3lpdmZhcm0vaW5jb21pbmcvJyxcbiAgZGVmYXVsdEtleXNTb3VyY2U6ICd+L0RvY3VtZW50cy9Qcm94aW1hL0t5aXZmYXJtL2NvZGVzLnR4dCcsXG4gIGVuY29kaW5nczogWyd3aW4xMjUxJywgJ3V0Zi04JywgJ2FzY2lpJywgJ2Jhc2U2NCcsICdoZXgnLCAndXRmOCcsXG4gICAgJ3VjczInLCAndWNzLTInLCAndXRmMTZsZScsICd1dGYtMTZsZScsICdsYXRpbjEnLCAnYmluYXJ5J10sXG4gIHNlYXJjaFR5cGVzOiBbJ2RydWdDb2RlJywgJ2RydWdOYW1lJ10sXG59O1xuIl19
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9kZWZhdWx0cy5qcyJdLCJuYW1lcyI6WyJkZWZhdWx0U291cmNlUGF0aCIsImRlZmF1bHRLZXlzU291cmNlIiwiZW5jb2RpbmdzIiwic2VhcmNoVHlwZXMiLCJkcnVnQ29kZSIsImRydWdOYW1lIiwicmVuZGVyVHlwZXMiXSwibWFwcGluZ3MiOiI7Ozs7OztlQUFlO0FBQ2JBLEVBQUFBLGlCQUFpQixFQUFFLHdDQUROO0FBRWJDLEVBQUFBLGlCQUFpQixFQUFFLHdDQUZOO0FBR2JDLEVBQUFBLFNBQVMsRUFBRSxDQUFDLFNBQUQsRUFBWSxPQUFaLEVBQXFCLE9BQXJCLEVBQThCLFFBQTlCLEVBQXdDLEtBQXhDLEVBQStDLE1BQS9DLEVBQ1QsTUFEUyxFQUNELE9BREMsRUFDUSxTQURSLEVBQ21CLFVBRG5CLEVBQytCLFFBRC9CLEVBQ3lDLFFBRHpDLENBSEU7QUFLYkMsRUFBQUEsV0FBVyxFQUFFO0FBQ1hDLElBQUFBLFFBQVEsRUFBRSxRQURDO0FBRVhDLElBQUFBLFFBQVEsRUFBRTtBQUZDLEdBTEE7QUFTYkMsRUFBQUEsV0FBVyxFQUFFLENBQUMsT0FBRCxFQUFVLFVBQVY7QUFUQSxDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQge1xuICBkZWZhdWx0U291cmNlUGF0aDogJ34vRG9jdW1lbnRzL1Byb3hpbWEvS3lpdmZhcm0vaW5jb21pbmcvJyxcbiAgZGVmYXVsdEtleXNTb3VyY2U6ICd+L0RvY3VtZW50cy9Qcm94aW1hL0t5aXZmYXJtL2NvZGVzLnR4dCcsXG4gIGVuY29kaW5nczogWyd3aW4xMjUxJywgJ3V0Zi04JywgJ2FzY2lpJywgJ2Jhc2U2NCcsICdoZXgnLCAndXRmOCcsXG4gICAgJ3VjczInLCAndWNzLTInLCAndXRmMTZsZScsICd1dGYtMTZsZScsICdsYXRpbjEnLCAnYmluYXJ5J10sXG4gIHNlYXJjaFR5cGVzOiB7XG4gICAgZHJ1Z0NvZGU6ICdudW1iZXInLFxuICAgIGRydWdOYW1lOiAnc3RyaW5nJyxcbiAgfSxcbiAgcmVuZGVyVHlwZXM6IFsndG90YWwnLCAnZGV0YWlsZWQnXSxcbn07XG4iXX0=

@@ -16,3 +16,3 @@ "use strict";

var _readlineSync = _interopRequireDefault(require("readline-sync"));
var _askUser = require("./askUser");

@@ -48,6 +48,21 @@ var _processors = require("./processors");

encodings = _defaults["default"].encodings,
searchTypes = _defaults["default"].searchTypes;
searchTypes = _defaults["default"].searchTypes,
renderTypes = _defaults["default"].renderTypes;
var _default = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {
var emptyAndZerosOnly,
searchParams,
_searchParams,
searchTypeName,
keysDataType,
_getKeysData,
_getKeysData2,
keys,
keysFolder,
newPath,
resFolder,
resFolderFilesList,
jsonFilesList,
dataToRenderPath,
selectedDataPath,
filesSource,

@@ -61,12 +76,3 @@ paths,

encoding,
keysPath,
searchTypePos,
keysFolder,
newPath,
resFolder,
keysContent,
keys,
processedDataName,
processedDataPath,
searchType,
dataStream,

@@ -80,32 +86,14 @@ _args = arguments;

emptyAndZerosOnly = _args.length > 0 && _args[0] !== undefined ? _args[0] : false;
filesSource = _readlineSync["default"].questionPath('Please type files source:', {
exists: true,
isDirectory: true,
defaultInput: defaultSourcePath
});
console.log("".concat(filesSource, "\n"));
paths = (0, _processors.makePaths)(filesSource);
_$partition = _lodash["default"].partition(paths, function (pathToFile) {
return _lodash["default"].isArray(pathToFile);
}), _$partition2 = _slicedToArray(_$partition, 2), emptySources = _$partition2[0], notEmptySources = _$partition2[1]; // const encodingPos = readlineSync.keyInSelect(encodings, 'Please select files encoding');
searchParams = (0, _askUser.getSearchParams)(searchTypes);
_encodings = _slicedToArray(encodings, 1), encoding = _encodings[0];
keysPath = _readlineSync["default"].questionPath('\nPlease type search keys source:', {
exists: true,
isFile: true,
defaultInput: defaultKeysSource
});
console.log("".concat(keysPath, "\n"));
searchTypePos = _readlineSync["default"].keyInSelect(searchTypes, 'Please select type of data search:');
if (!(searchTypePos === -1)) {
_context.next = 12;
if (searchParams) {
_context.next = 4;
break;
}
console.log('See you next time )\n');
return _context.abrupt("return");
case 12:
keysFolder = _path["default"].dirname(keysPath);
case 4:
_searchParams = _slicedToArray(searchParams, 2), searchTypeName = _searchParams[0], keysDataType = _searchParams[1];
_getKeysData = (0, _askUser.getKeysData)(searchTypeName, keysDataType, defaultKeysSource), _getKeysData2 = _slicedToArray(_getKeysData, 2), keys = _getKeysData2[0], keysFolder = _getKeysData2[1];
newPath = _path["default"].join(keysFolder, 'processedData');

@@ -115,14 +103,41 @@ resFolder = _fs["default"].existsSync(newPath) ? newPath : _fs["default"].mkdirSync(newPath, {

});
resFolderFilesList = _fs["default"].readdirSync(resFolder);
jsonFilesList = resFolderFilesList.filter(function (fileName) {
return fileName && _path["default"].extname(fileName) === '.json';
});
if (!(jsonFilesList.length > 0)) {
_context.next = 16;
break;
}
dataToRenderPath = (0, _askUser.selectProcessOrRender)(jsonFilesList);
if (!dataToRenderPath) {
_context.next = 16;
break;
}
selectedDataPath = _path["default"].join(resFolder, dataToRenderPath);
(0, _renderers["default"])(selectedDataPath, renderTypes, resFolder);
return _context.abrupt("return");
case 16:
filesSource = (0, _askUser.getFilesSource)(defaultSourcePath);
paths = (0, _processors.makePaths)(filesSource);
_$partition = _lodash["default"].partition(paths, function (pathToFile) {
return _lodash["default"].isArray(pathToFile);
}), _$partition2 = _slicedToArray(_$partition, 2), emptySources = _$partition2[0], notEmptySources = _$partition2[1];
if (!(emptySources.length > 0)) {
_context.next = 18;
_context.next = 22;
break;
}
_context.next = 18;
_context.next = 22;
return (0, _writers.writeDownPaths)(emptySources, resFolder, 'empty');
case 18:
case 22:
if (!emptyAndZerosOnly) {
_context.next = 20;
_context.next = 24;
break;

@@ -133,21 +148,15 @@ }

case 20:
keysContent = _fs["default"].readFileSync(keysPath, 'utf-8');
keys = keysContent.trim().split('\r\n').map(function (key) {
return key.trim();
});
processedDataName = _readlineSync["default"].question('Enter a name for processed data file (default name is "processed"):', {
defaultInput: 'processedData'
});
processedDataPath = _path["default"].join(resFolder, "".concat(processedDataName, ".json"));
case 24:
// const encodingPos = readlineSync.keyInSelect(encodings, 'Please select files encoding');
_encodings = _slicedToArray(encodings, 1), encoding = _encodings[0];
processedDataPath = (0, _askUser.getProcessedDataPath)(resFolder);
console.log('\nData-processing is ongoing...\n');
searchType = searchTypes[searchTypePos];
dataStream = (0, _processors.makeDataStream)(notEmptySources, searchType, keys, encoding);
dataStream = (0, _processors.makeDataStream)(notEmptySources, searchTypeName, keys, encoding);
(0, _processors.makeDataSelection)(dataStream).then(function (totalInfo) {
return (0, _processors.writeToJson)(totalInfo, processedDataPath);
}).then(function () {
(0, _renderers["default"])(processedDataPath, resFolder);
(0, _renderers["default"])(processedDataPath, renderTypes, resFolder);
});
case 28:
case 29:
case "end":

@@ -161,2 +170,2 @@ return _context.stop();

exports["default"] = _default;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC5qcyJdLCJuYW1lcyI6WyJkZWZhdWx0U291cmNlUGF0aCIsImRlZmF1bHRWYWx1ZXMiLCJkZWZhdWx0S2V5c1NvdXJjZSIsImVuY29kaW5ncyIsInNlYXJjaFR5cGVzIiwiZW1wdHlBbmRaZXJvc09ubHkiLCJmaWxlc1NvdXJjZSIsInJlYWRsaW5lU3luYyIsInF1ZXN0aW9uUGF0aCIsImV4aXN0cyIsImlzRGlyZWN0b3J5IiwiZGVmYXVsdElucHV0IiwiY29uc29sZSIsImxvZyIsInBhdGhzIiwiXyIsInBhcnRpdGlvbiIsInBhdGhUb0ZpbGUiLCJpc0FycmF5IiwiZW1wdHlTb3VyY2VzIiwibm90RW1wdHlTb3VyY2VzIiwiZW5jb2RpbmciLCJrZXlzUGF0aCIsImlzRmlsZSIsInNlYXJjaFR5cGVQb3MiLCJrZXlJblNlbGVjdCIsImtleXNGb2xkZXIiLCJwYXRoIiwiZGlybmFtZSIsIm5ld1BhdGgiLCJqb2luIiwicmVzRm9sZGVyIiwiZnMiLCJleGlzdHNTeW5jIiwibWtkaXJTeW5jIiwicmVjdXJzaXZlIiwibGVuZ3RoIiwia2V5c0NvbnRlbnQiLCJyZWFkRmlsZVN5bmMiLCJrZXlzIiwidHJpbSIsInNwbGl0IiwibWFwIiwia2V5IiwicHJvY2Vzc2VkRGF0YU5hbWUiLCJxdWVzdGlvbiIsInByb2Nlc3NlZERhdGFQYXRoIiwic2VhcmNoVHlwZSIsImRhdGFTdHJlYW0iLCJ0aGVuIiwidG90YWxJbmZvIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBTUE7O0FBRUE7O0FBQ0E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBR0VBLGlCLEdBSUVDLG9CLENBSkZELGlCO0lBQ0FFLGlCLEdBR0VELG9CLENBSEZDLGlCO0lBQ0FDLFMsR0FFRUYsb0IsQ0FGRkUsUztJQUNBQyxXLEdBQ0VILG9CLENBREZHLFc7O29GQUdhO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7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LENBM0NqQjtBQTRDUHdCLFVBQUFBLFVBNUNPLEdBNENNLGdDQUFlNUIsZUFBZixFQUFnQzJCLFVBQWhDLEVBQTRDUixJQUE1QyxFQUFrRGxCLFFBQWxELENBNUNOO0FBOENiLDZDQUFrQjJCLFVBQWxCLEVBQ0dDLElBREgsQ0FDUSxVQUFBQyxTQUFTO0FBQUEsbUJBQUksNkJBQVlBLFNBQVosRUFBdUJKLGlCQUF2QixDQUFKO0FBQUEsV0FEakIsRUFFR0csSUFGSCxDQUVRLFlBQU07QUFDVix1Q0FBV0gsaUJBQVgsRUFBOEJmLFNBQTlCO0FBQ0QsV0FKSDs7QUE5Q2E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBmcyBmcm9tICdmcyc7XG5pbXBvcnQgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCAncmVnZW5lcmF0b3ItcnVudGltZSc7XG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHJlYWRsaW5lU3luYyBmcm9tICdyZWFkbGluZS1zeW5jJztcbmltcG9ydCB7XG4gIG1ha2VQYXRocyxcbiAgbWFrZURhdGFTdHJlYW0sXG4gIG1ha2VEYXRhU2VsZWN0aW9uLFxuICB3cml0ZVRvSnNvbixcbn0gZnJvbSAnLi9wcm9jZXNzb3JzJztcbmltcG9ydCBtYWtlUmVuZGVyIGZyb20gJy4vcmVuZGVyZXJzJztcblxuaW1wb3J0IHsgd3JpdGVEb3duUGF0aHMgfSBmcm9tICcuL3dyaXRlcnMnO1xuaW1wb3J0IGRlZmF1bHRWYWx1ZXMgZnJvbSAnLi9kZWZhdWx0cyc7XG5cbmNvbnN0IHtcbiAgZGVmYXVsdFNvdXJjZVBhdGgsXG4gIGRlZmF1bHRLZXlzU291cmNlLFxuICBlbmNvZGluZ3MsXG4gIHNlYXJjaFR5cGVzLFxufSA9IGRlZmF1bHRWYWx1ZXM7XG5cbmV4cG9ydCBkZWZhdWx0IGFzeW5jIChlbXB0eUFuZFplcm9zT25seSA9IGZhbHNlKSA9PiB7XG4gIGNvbnN0IGZpbGVzU291cmNlID0gcmVhZGxpbmVTeW5jLnF1ZXN0aW9uUGF0aCgnUGxlYXNlIHR5cGUgZmlsZXMgc291cmNlOicsIHtcbiAgICBleGlzdHM6IHRydWUsXG4gICAgaXNEaXJlY3Rvcnk6IHRydWUsXG4gICAgZGVmYXVsdElucHV0OiBkZWZhdWx0U291cmNlUGF0aCxcbiAgfSk7XG4gIGNvbnNvbGUubG9nKGAke2ZpbGVzU291cmNlfVxcbmApO1xuXG4gIGNvbnN0IHBhdGhzID0gbWFrZVBhdGhzKGZpbGVzU291cmNlKTtcbiAgY29uc3QgW2VtcHR5U291cmNlcywgbm90RW1wdHlTb3VyY2VzXSA9IF8ucGFydGl0aW9uKHBhdGhzLCBwYXRoVG9GaWxlID0+IF8uaXNBcnJheShwYXRoVG9GaWxlKSk7XG4gIC8vIGNvbnN0IGVuY29kaW5nUG9zID0gcmVhZGxpbmVTeW5jLmtleUluU2VsZWN0KGVuY29kaW5ncywgJ1BsZWFzZSBzZWxlY3QgZmlsZXMgZW5jb2RpbmcnKTtcbiAgY29uc3QgW2VuY29kaW5nXSA9IGVuY29kaW5ncztcblxuICBjb25zdCBrZXlzUGF0aCA9IHJlYWRsaW5lU3luYy5xdWVzdGlvblBhdGgoJ1xcblBsZWFzZSB0eXBlIHNlYXJjaCBrZXlzIHNvdXJjZTonLCB7XG4gICAgZXhpc3RzOiB0cnVlLFxuICAgIGlzRmlsZTogdHJ1ZSxcbiAgICBkZWZhdWx0SW5wdXQ6IGRlZmF1bHRLZXlzU291cmNlLFxuICB9KTtcbiAgY29uc29sZS5sb2coYCR7a2V5c1BhdGh9XFxuYCk7XG4gIGNvbnN0IHNlYXJjaFR5cGVQb3MgPSByZWFkbGluZVN5bmMua2V5SW5TZWxlY3Qoc2VhcmNoVHlwZXMsICdQbGVhc2Ugc2VsZWN0IHR5cGUgb2YgZGF0YSBzZWFyY2g6Jyk7XG5cbiAgaWYgKHNlYXJjaFR5cGVQb3MgPT09IC0xKSB7XG4gICAgY29uc29sZS5sb2coJ1NlZSB5b3UgbmV4dCB0aW1lIClcXG4nKTtcbiAgICByZXR1cm47XG4gIH1cbiAgY29uc3Qga2V5c0ZvbGRlciA9IHBhdGguZGlybmFtZShrZXlzUGF0aCk7XG4gIGNvbnN0IG5ld1BhdGggPSBwYXRoLmpvaW4oa2V5c0ZvbGRlciwgJ3Byb2Nlc3NlZERhdGEnKTtcbiAgY29uc3QgcmVzRm9sZGVyID0gZnMuZXhpc3RzU3luYyhuZXdQYXRoKSA/IG5ld1BhdGggOiBmcy5ta2RpclN5bmMobmV3UGF0aCwgeyByZWN1cnNpdmU6IHRydWUgfSk7XG5cbiAgaWYgKGVtcHR5U291cmNlcy5sZW5ndGggPiAwKSB7XG4gICAgYXdhaXQgd3JpdGVEb3duUGF0aHMoZW1wdHlTb3VyY2VzLCByZXNGb2xkZXIsICdlbXB0eScpO1xuICB9XG4gIGlmIChlbXB0eUFuZFplcm9zT25seSkge1xuICAgIHJldHVybjtcbiAgfVxuICBjb25zdCBrZXlzQ29udGVudCA9IGZzLnJlYWRGaWxlU3luYyhrZXlzUGF0aCwgJ3V0Zi04Jyk7XG4gIGNvbnN0IGtleXMgPSBrZXlzQ29udGVudC50cmltKCkuc3BsaXQoJ1xcclxcbicpLm1hcChrZXkgPT4ga2V5LnRyaW0oKSk7XG5cbiAgY29uc3QgcHJvY2Vzc2VkRGF0YU5hbWUgPSByZWFkbGluZVN5bmNcbiAgICAucXVlc3Rpb24oJ0VudGVyIGEgbmFtZSBmb3IgcHJvY2Vzc2VkIGRhdGEgZmlsZSAoZGVmYXVsdCBuYW1lIGlzIFwicHJvY2Vzc2VkXCIpOicsIHsgZGVmYXVsdElucHV0OiAncHJvY2Vzc2VkRGF0YScgfSk7XG4gIGNvbnN0IHByb2Nlc3NlZERhdGFQYXRoID0gcGF0aC5qb2luKHJlc0ZvbGRlciwgYCR7cHJvY2Vzc2VkRGF0YU5hbWV9Lmpzb25gKTtcbiAgY29uc29sZS5sb2coJ1xcbkRhdGEtcHJvY2Vzc2luZyBpcyBvbmdvaW5nLi4uXFxuJyk7XG5cbiAgY29uc3Qgc2VhcmNoVHlwZSA9IHNlYXJjaFR5cGVzW3NlYXJjaFR5cGVQb3NdO1xuICBjb25zdCBkYXRhU3RyZWFtID0gbWFrZURhdGFTdHJlYW0obm90RW1wdHlTb3VyY2VzLCBzZWFyY2hUeXBlLCBrZXlzLCBlbmNvZGluZyk7XG5cbiAgbWFrZURhdGFTZWxlY3Rpb24oZGF0YVN0cmVhbSlcbiAgICAudGhlbih0b3RhbEluZm8gPT4gd3JpdGVUb0pzb24odG90YWxJbmZvLCBwcm9jZXNzZWREYXRhUGF0aCkpXG4gICAgLnRoZW4oKCkgPT4ge1xuICAgICAgbWFrZVJlbmRlcihwcm9jZXNzZWREYXRhUGF0aCwgcmVzRm9sZGVyKTtcbiAgICB9KTtcbn07XG4iXX0=
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC5qcyJdLCJuYW1lcyI6WyJkZWZhdWx0U291cmNlUGF0aCIsImRlZmF1bHRWYWx1ZXMiLCJkZWZhdWx0S2V5c1NvdXJjZSIsImVuY29kaW5ncyIsInNlYXJjaFR5cGVzIiwicmVuZGVyVHlwZXMiLCJlbXB0eUFuZFplcm9zT25seSIsInNlYXJjaFBhcmFtcyIsInNlYXJjaFR5cGVOYW1lIiwia2V5c0RhdGFUeXBlIiwia2V5cyIsImtleXNGb2xkZXIiLCJuZXdQYXRoIiwicGF0aCIsImpvaW4iLCJyZXNGb2xkZXIiLCJmcyIsImV4aXN0c1N5bmMiLCJta2RpclN5bmMiLCJyZWN1cnNpdmUiLCJyZXNGb2xkZXJGaWxlc0xpc3QiLCJyZWFkZGlyU3luYyIsImpzb25GaWxlc0xpc3QiLCJmaWx0ZXIiLCJmaWxlTmFtZSIsImV4dG5hbWUiLCJsZW5ndGgiLCJkYXRhVG9SZW5kZXJQYXRoIiwic2VsZWN0ZWREYXRhUGF0aCIsImZpbGVzU291cmNlIiwicGF0aHMiLCJfIiwicGFydGl0aW9uIiwicGF0aFRvRmlsZSIsImlzQXJyYXkiLCJlbXB0eVNvdXJjZXMiLCJub3RFbXB0eVNvdXJjZXMiLCJlbmNvZGluZyIsInByb2Nlc3NlZERhdGFQYXRoIiwiY29uc29sZSIsImxvZyIsImRhdGFTdHJlYW0iLCJ0aGVuIiwidG90YWxJbmZvIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBT0E7O0FBTUE7O0FBQ0E7O0FBQ0E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBR0VBLGlCLEdBS0VDLG9CLENBTEZELGlCO0lBQ0FFLGlCLEdBSUVELG9CLENBSkZDLGlCO0lBQ0FDLFMsR0FHRUYsb0IsQ0FIRkUsUztJQUNBQyxXLEdBRUVILG9CLENBRkZHLFc7SUFDQUMsVyxHQUNFSixvQixDQURGSSxXOztvRkFHYTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFB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dXJjZXNDb250ZW50IjpbImltcG9ydCBmcyBmcm9tICdmcyc7XG5pbXBvcnQgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCAncmVnZW5lcmF0b3ItcnVudGltZSc7XG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHtcbiAgZ2V0U2VhcmNoUGFyYW1zLFxuICBnZXRLZXlzRGF0YSxcbiAgZ2V0RmlsZXNTb3VyY2UsXG4gIGdldFByb2Nlc3NlZERhdGFQYXRoLFxuICBzZWxlY3RQcm9jZXNzT3JSZW5kZXIsXG59IGZyb20gJy4vYXNrVXNlcic7XG5pbXBvcnQge1xuICBtYWtlUGF0aHMsXG4gIG1ha2VEYXRhU3RyZWFtLFxuICBtYWtlRGF0YVNlbGVjdGlvbixcbiAgd3JpdGVUb0pzb24sXG59IGZyb20gJy4vcHJvY2Vzc29ycyc7XG5pbXBvcnQgbWFrZVJlbmRlciBmcm9tICcuL3JlbmRlcmVycyc7XG5pbXBvcnQgeyB3cml0ZURvd25QYXRocyB9IGZyb20gJy4vd3JpdGVycyc7XG5pbXBvcnQgZGVmYXVsdFZhbHVlcyBmcm9tICcuL2RlZmF1bHRzJztcblxuY29uc3Qge1xuICBkZWZhdWx0U291cmNlUGF0aCxcbiAgZGVmYXVsdEtleXNTb3VyY2UsXG4gIGVuY29kaW5ncyxcbiAgc2VhcmNoVHlwZXMsXG4gIHJlbmRlclR5cGVzLFxufSA9IGRlZmF1bHRWYWx1ZXM7XG5cbmV4cG9ydCBkZWZhdWx0IGFzeW5jIChlbXB0eUFuZFplcm9zT25seSA9IGZhbHNlKSA9PiB7XG4gIGNvbnN0IHNlYXJjaFBhcmFtcyA9IGdldFNlYXJjaFBhcmFtcyhzZWFyY2hUeXBlcyk7XG4gIGlmICghc2VhcmNoUGFyYW1zKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIGNvbnN0IFtzZWFyY2hUeXBlTmFtZSwga2V5c0RhdGFUeXBlXSA9IHNlYXJjaFBhcmFtcztcbiAgY29uc3QgW2tleXMsIGtleXNGb2xkZXJdID0gZ2V0S2V5c0RhdGEoc2VhcmNoVHlwZU5hbWUsIGtleXNEYXRhVHlwZSwgZGVmYXVsdEtleXNTb3VyY2UpO1xuICBjb25zdCBuZXdQYXRoID0gcGF0aC5qb2luKGtleXNGb2xkZXIsICdwcm9jZXNzZWREYXRhJyk7XG4gIGNvbnN0IHJlc0ZvbGRlciA9IGZzLmV4aXN0c1N5bmMobmV3UGF0aCkgPyBuZXdQYXRoIDogZnMubWtkaXJTeW5jKG5ld1BhdGgsIHsgcmVjdXJzaXZlOiB0cnVlIH0pO1xuXG4gIGNvbnN0IHJlc0ZvbGRlckZpbGVzTGlzdCA9IGZzLnJlYWRkaXJTeW5jKHJlc0ZvbGRlcik7XG4gIGNvbnN0IGpzb25GaWxlc0xpc3QgPSByZXNGb2xkZXJGaWxlc0xpc3RcbiAgICAuZmlsdGVyKGZpbGVOYW1lID0+IGZpbGVOYW1lICYmIHBhdGguZXh0bmFtZShmaWxlTmFtZSkgPT09ICcuanNvbicpO1xuICBpZiAoanNvbkZpbGVzTGlzdC5sZW5ndGggPiAwKSB7XG4gICAgY29uc3QgZGF0YVRvUmVuZGVyUGF0aCA9IHNlbGVjdFByb2Nlc3NPclJlbmRlcihqc29uRmlsZXNMaXN0KTtcbiAgICBpZiAoZGF0YVRvUmVuZGVyUGF0aCkge1xuICAgICAgY29uc3Qgc2VsZWN0ZWREYXRhUGF0aCA9IHBhdGguam9pbihyZXNGb2xkZXIsIGRhdGFUb1JlbmRlclBhdGgpO1xuICAgICAgbWFrZVJlbmRlcihzZWxlY3RlZERhdGFQYXRoLCByZW5kZXJUeXBlcywgcmVzRm9sZGVyKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gIH1cblxuICBjb25zdCBmaWxlc1NvdXJjZSA9IGdldEZpbGVzU291cmNlKGRlZmF1bHRTb3VyY2VQYXRoKTtcbiAgY29uc3QgcGF0aHMgPSBtYWtlUGF0aHMoZmlsZXNTb3VyY2UpO1xuICBjb25zdCBbZW1wdHlTb3VyY2VzLCBub3RFbXB0eVNvdXJjZXNdID0gXy5wYXJ0aXRpb24ocGF0aHMsIHBhdGhUb0ZpbGUgPT4gXy5pc0FycmF5KHBhdGhUb0ZpbGUpKTtcbiAgaWYgKGVtcHR5U291cmNlcy5sZW5ndGggPiAwKSB7XG4gICAgYXdhaXQgd3JpdGVEb3duUGF0aHMoZW1wdHlTb3VyY2VzLCByZXNGb2xkZXIsICdlbXB0eScpO1xuICB9XG4gIGlmIChlbXB0eUFuZFplcm9zT25seSkge1xuICAgIHJldHVybjtcbiAgfVxuICAvLyBjb25zdCBlbmNvZGluZ1BvcyA9IHJlYWRsaW5lU3luYy5rZXlJblNlbGVjdChlbmNvZGluZ3MsICdQbGVhc2Ugc2VsZWN0IGZpbGVzIGVuY29kaW5nJyk7XG4gIGNvbnN0IFtlbmNvZGluZ10gPSBlbmNvZGluZ3M7XG4gIGNvbnN0IHByb2Nlc3NlZERhdGFQYXRoID0gZ2V0UHJvY2Vzc2VkRGF0YVBhdGgocmVzRm9sZGVyKTtcblxuICBjb25zb2xlLmxvZygnXFxuRGF0YS1wcm9jZXNzaW5nIGlzIG9uZ29pbmcuLi5cXG4nKTtcblxuICBjb25zdCBkYXRhU3RyZWFtID0gbWFrZURhdGFTdHJlYW0obm90RW1wdHlTb3VyY2VzLCBzZWFyY2hUeXBlTmFtZSwga2V5cywgZW5jb2RpbmcpO1xuICBtYWtlRGF0YVNlbGVjdGlvbihkYXRhU3RyZWFtKVxuICAgIC50aGVuKHRvdGFsSW5mbyA9PiB3cml0ZVRvSnNvbih0b3RhbEluZm8sIHByb2Nlc3NlZERhdGFQYXRoKSlcbiAgICAudGhlbigoKSA9PiB7XG4gICAgICBtYWtlUmVuZGVyKHByb2Nlc3NlZERhdGFQYXRoLCByZW5kZXJUeXBlcywgcmVzRm9sZGVyKTtcbiAgICB9KTtcbn07XG4iXX0=

@@ -308,2 +308,2 @@ "use strict";

exports.selectZeroMovements = selectZeroMovements;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9wcm9jZXNzb3JzLmpzIl0sIm5hbWVzIjpbImZpbGVUeXBlcyIsIm1ha2VQYXRocyIsInNvdXJjZSIsInBhdGhzTGlzdCIsImluZm8iLCJmcyIsInN0YXRTeW5jIiwic2l6ZSIsImlzRGlyZWN0b3J5IiwiaXNDb3JyZWN0Rm9ybWF0IiwiaW5jbHVkZXMiLCJkaXJDb250ZW50IiwicmVhZGRpclN5bmMiLCJyZXNDb250ZW50Q29sbCIsInJlZHVjZSIsImFjYyIsIm5hbWUiLCJpbm5lclBhdGgiLCJnZXRNYXRjaGVkIiwic3RyVG9TZWFyY2giLCJzZWFyY2hUeXBlIiwiY29udGVudCIsInNwbGl0IiwiZmlsdGVyIiwibGluZSIsImRydWdDb2RlIiwiY291bnRJbiIsImNvdW50T3V0IiwiaXNTYW1lQ29kZSIsIm5hbWVJbmNsdWRlc1N0ciIsInRvTG93ZXJDYXNlIiwiaXNNYXRjaGVkIiwibm90WmVybyIsIk51bWJlciIsImxpbmVzIiwibGVuZ3RoIiwicHJvY2Vzc0RhdGEiLCJmaWxlUGF0aCIsInRvdGFsSW5mbyIsImNoYWluRHJ1Z0NvZGUiLCJyZW1haW5zIiwicHJpY2VJbiIsInByaWNlT3V0IiwiZGF0ZVN0YXJ0IiwiZGF0ZUVuZCIsImV4aXN0ZWRJdGVtSW5mbyIsInJlbGF0ZWRQYXRoSW5mbyIsInJlbWFpbnNOdW0iLCJwY3NJbiIsInBjc091dCIsIml0ZW1JbmZvIiwiY291bnRJblRvdGFsIiwibW9uZXlJblRvdGFsIiwiY291bnRPdXRUb3RhbCIsIm1vbmV5T3V0VG90YWwiLCJtb25leUluIiwibW9uZXlPdXQiLCJjb3VudCIsIm1ha2VKc29uQ2h1bmsiLCJkYXRhIiwidG90YWxTaXplIiwiZmluYWxTdHIiLCJfIiwia2V5cyIsImtleSIsInZhbHVlIiwianNvblN0ciIsIkpTT04iLCJzdHJpbmdpZnkiLCJtYWtlRGF0YVN0cmVhbSIsInBhdGhEYXRhQ29sbCIsImVuY29kaW5nIiwicmVhZGFibGVQYXRocyIsIkN1c3RvbVJlYWRlciIsIm9iamVjdE1vZGUiLCJoaWdoV2F0ZXJNYXJrIiwiZ2V0Q29udGVudCIsIlRyYW5zZm9ybSIsInJlYWRhYmxlT2JqZWN0TW9kZSIsIndyaXRhYmxlT2JqZWN0TW9kZSIsInRyYW5zZm9ybSIsImNodW5rIiwiZW5jIiwiY2IiLCJzdHIiLCJyZWFkRmlsZVN5bmMiLCJkZWNvZGVkIiwiaWNvbnYiLCJkZWNvZGUiLCJwdXNoIiwic2VsZWN0RGF0YSIsImNoIiwic2VsZWN0ZWREYXRhIiwibWFwIiwiU3RyaW5nIiwiZGF0YUNvbGwiLCJwaXBlIiwibWFrZURhdGFTZWxlY3Rpb24iLCJkYXRhU3RyZWFtIiwiUHJvbWlzZSIsInJlc29sdmUiLCJyZWplY3QiLCJvbiIsImRhdGFQYWlyIiwicHJvY2Vzc2VkRGF0YSIsIm5ld0FjYyIsIndyaXRlVG9Kc29uIiwicHJvY2Vzc2VkRGF0YVBhdGgiLCJvYmpUb0FyciIsInJlYWRhYmxlVG90YWxJbmZvIiwidHJhbnNmb3JtVG9Kc29uIiwid3JpdGFibGVKc29uIiwiY3JlYXRlV3JpdGVTdHJlYW0iLCJzdHJlYW1zSW5Qcm9taXNlIiwiY29uc29sZSIsImxvZyIsInNlbGVjdFplcm9Nb3ZlbWVudHMiLCJzZXBhcmF0ZWRJdGVtcyIsInBhcnRpdGlvbiIsImhhc1plcm9zIiwiZXZlcnkiLCJpc1plcm8iLCJ6ZXJvQ291bnRzIiwicmVzdCIsInVuemlwIiwibWF0Y2hlZFBhdGhzIiwiZGF0YVBhdGhzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVBLElBQU1BLFNBQVMsR0FBRyxDQUFDLE1BQUQsRUFBUyxNQUFULEVBQWlCLE1BQWpCLEVBQXlCLE1BQXpCLEVBQWlDLE1BQWpDLEVBQXlDLE1BQXpDLENBQWxCOztBQUVPLElBQU1DLFNBQVMsR0FBRyxTQUFaQSxTQUFZLENBQUNDLE1BQUQsRUFBNEI7QUFBQSxNQUFuQkMsU0FBbUIsdUVB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QUM5QyxZQUFELEVBQWtCO0FBQ25ELE1BQU0rQyxjQUFjLEdBQUd2RCxtQkFBRXdELFNBQUYsQ0FBWWhELFlBQVosRUFBMEIsaUJBQWlCO0FBQUE7QUFBQSxRQUFiakQsT0FBYTs7QUFDaEUsUUFBTWtHLFFBQVEsR0FBR2xHLE9BQU8sQ0FBQ0MsS0FBUixDQUFjLElBQWQsRUFBb0JrRyxLQUFwQixDQUEwQixVQUFDaEcsSUFBRCxFQUFVO0FBQUEseUJBSS9DQSxJQUFJLENBQUNGLEtBQUwsQ0FBVyxJQUFYLENBSitDO0FBQUE7QUFBQSxVQUVqREksT0FGaUQ7QUFBQSxVQUdqREMsUUFIaUQ7O0FBS25ELFVBQU04RixNQUFNLEdBQUd4RixNQUFNLENBQUNQLE9BQUQsQ0FBTixLQUFvQixDQUFwQixJQUF5Qk8sTUFBTSxDQUFDTixRQUFELENBQU4sS0FBcUIsQ0FBN0Q7QUFDQSxhQUFPOEYsTUFBUDtBQUNELEtBUGdCLENBQWpCO0FBU0EsV0FBT0YsUUFBUDtBQUNELEdBWHNCLENBQXZCOztBQURtRCx1Q0FjeEJGLGNBZHdCO0FBQUEsTUFjNUNLLFVBZDRDO0FBQUEsTUFjaENDLElBZGdDOztBQUFBLGdCQWU1QjdELG1CQUFFOEQsS0FBRixDQUFRRixVQUFSLENBZjRCO0FBQUE7QUFBQSxNQWU1Q0csWUFmNEM7O0FBQUEsaUJBZ0IvQi9ELG1CQUFFOEQsS0FBRixDQUFRRCxJQUFSLENBaEIrQjtBQUFBO0FBQUEsTUFnQjVDRyxTQWhCNEM7O0FBa0JuRCxTQUFPLENBQUNELFlBQUQsRUFBZUMsU0FBZixDQUFQO0FBQ0QsQ0FuQk0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZnMgZnJvbSAnZnMnO1xuaW1wb3J0IHsgVHJhbnNmb3JtIH0gZnJvbSAnc3RyZWFtJztcbmltcG9ydCB7IGpvaW4sIGV4dG5hbWUgfSBmcm9tICdwYXRoJztcbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgKiBhcyBpY29udiBmcm9tICdpY29udi1saXRlJztcbmltcG9ydCBDdXN0b21SZWFkZXIgZnJvbSAnLi9TdHJlYW1SZWFkZXInO1xuaW1wb3J0ICdyZWdlbmVyYXRvci1ydW50aW1lJztcblxuY29uc3QgZmlsZVR5cGVzID0gWycubWRyJywgJy5td3InLCAnLm1tcicsICcubWRpJywgJy5td2knLCAnLm1taSddO1xuXG5leHBvcnQgY29uc3QgbWFrZVBhdGhzID0gKHNvdXJjZSwgcGF0aHNMaXN0ID0gW10pID0+IHtcbiAgY29uc3QgaW5mbyA9IGZzLnN0YXRTeW5jKHNvdXJjZSk7XG4gIGlmIChpbmZvLnNpemUgPT09IDApIHtcbiAgICByZXR1cm4gW1tzb3VyY2VdXTtcbiAgfVxuICBpZiAoIWluZm8uaXNEaXJlY3RvcnkoKSkge1xuICAgIGNvbnN0IGlzQ29ycmVjdEZvcm1hdCA9IGZpbGVUeXBlcy5pbmNsdWRlcyhleHRuYW1lKHNvdXJjZSkpO1xuICAgIHJldHVybiBpc0NvcnJlY3RGb3JtYXQgPyBbc291cmNlXSA6IFtdO1xuICB9XG4gIGNvbnN0IGRpckNvbnRlbnQgPSBmcy5yZWFkZGlyU3luYyhzb3VyY2UpO1xuICBjb25zdCByZXNDb250ZW50Q29sbCA9IGRpckNvbnRlbnRcbiAgICAucmVkdWNlKChhY2MsIG5hbWUpID0+IHtcbiAgICAgIGNvbnN0IGlubmVyUGF0aCA9IGpvaW4oc291cmNlLCBuYW1lKTtcbiAgICAgIHJldHVybiBbLi4uYWNjLCAuLi5tYWtlUGF0aHMoaW5uZXJQYXRoKV07XG4gICAgfSwgcGF0aHNMaXN0KTtcbiAgcmV0dXJuIHJlc0NvbnRlbnRDb2xsO1xufTtcblxuXG5jb25zdCBnZXRNYXRjaGVkID0gKHN0clRvU2VhcmNoLCBzZWFyY2hUeXBlLCBjb250ZW50KSA9PiBjb250ZW50LnNwbGl0KCdcXG4nKS5maWx0ZXIoKGxpbmUpID0+IHtcbiAgY29uc3QgW1xuICAgIGRydWdDb2RlLFxuICAgIG5hbWUsLFxuICAgIGNvdW50SW4sLFxuICAgIGNvdW50T3V0LFxuICBdID0gbGluZS5zcGxpdCgnXFx0Jyk7XG4gIGlmICghbmFtZSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBjb25zdCBpc1NhbWVDb2RlID0gZHJ1Z0NvZGUgPT09IHN0clRvU2VhcmNoO1xuICBjb25zdCBuYW1lSW5jbHVkZXNTdHIgPSBuYW1lLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoc3RyVG9TZWFyY2gudG9Mb3dlckNhc2UoKSk7XG4gIGNvbnN0IGlzTWF0Y2hlZCA9IHNlYXJjaFR5cGUgPT09ICdkcnVnQ29kZScgPyBpc1NhbWVDb2RlIDogbmFtZUluY2x1ZGVzU3RyO1xuICBjb25zdCBub3RaZXJvID0gTnVtYmVyKGNvdW50SW4pICE9PSAwIHx8IE51bWJlcihjb3VudE91dCkgIT09IDA7XG4gIHJldHVybiBpc01hdGNoZWQgJiYgbm90WmVybztcbn0pLmZpbHRlcigoWywgbGluZXNdKSA9PiBsaW5lcy5sZW5ndGggPiAwKTtcblxuY29uc3QgcHJvY2Vzc0RhdGEgPSAoY29udGVudCwgZmlsZVBhdGgsIHRvdGFsSW5mbykgPT4gY29udGVudFxuICAucmVkdWNlKChhY2MsIGxpbmUpID0+IHtcbiAgICBjb25zdCBbXG4gICAgICBjaGFpbkRydWdDb2RlLFxuICAgICAgbmFtZSxcbiAgICAgIHJlbWFpbnMsXG4gICAgICBjb3VudEluLFxuICAgICAgcHJpY2VJbixcbiAgICAgIGNvdW50T3V0LFxuICAgICAgcHJpY2VPdXQsXG4gICAgICBkYXRlU3RhcnQsXG4gICAgICBkYXRlRW5kLFxuICAgIF0gPSBsaW5lLnNwbGl0KCdcXHQnKTtcblxuICAgIGNvbnN0IGV4aXN0ZWRJdGVtSW5mbyA9IGFjY1tjaGFpbkRydWdDb2RlXSB8fCB7fTtcbiAgICBjb25zdCByZWxhdGVkUGF0aEluZm8gPSBleGlzdGVkSXRlbUluZm9bZmlsZVBhdGhdIHx8IHt9O1xuICAgIGNvbnN0IHJlbWFpbnNOdW0gPSBOdW1iZXIocmVtYWlucyk7XG4gICAgY29uc3QgcGNzSW4gPSBOdW1iZXIoY291bnRJbik7XG4gICAgY29uc3QgcGNzT3V0ID0gTnVtYmVyKGNvdW50T3V0KTtcblxuICAgIGNvbnN0IGl0ZW1JbmZvID0ge1xuICAgICAgW2NoYWluRHJ1Z0NvZGVdOiB7XG4gICAgICAgIC4uLmV4aXN0ZWRJdGVtSW5mbyxcbiAgICAgICAgbmFtZSxcbiAgICAgICAgY291bnRJblRvdGFsOiAoZXhpc3RlZEl0ZW1JbmZvLmNvdW50SW5Ub3RhbCB8fCAwKSArIHBjc0luLFxuICAgICAgICBtb25leUluVG90YWw6IChleGlzdGVkSXRlbUluZm8ubW9uZXlJblRvdGFsIHx8IDApICsgcHJpY2VJbiAqIHBjc0luLFxuICAgICAgICBjb3VudE91dFRvdGFsOiAoZXhpc3RlZEl0ZW1JbmZvLmNvdW50T3V0VG90YWwgfHwgMCkgKyBwY3NPdXQsXG4gICAgICAgIG1vbmV5T3V0VG90YWw6IChleGlzdGVkSXRlbUluZm8ubW9uZXlPdXRUb3RhbCB8fCAwKSArIHByaWNlT3V0ICogcGNzT3V0LFxuICAgICAgICBbZmlsZVBhdGhdOiB7XG4gICAgICAgICAgcmVtYWluczogKHJlbGF0ZWRQYXRoSW5mby5yZW1haW5zIHx8IDApICsgcmVtYWluc051bSxcbiAgICAgICAgICBjb3VudEluOiAocmVsYXRlZFBhdGhJbmZvLmNvdW50SW4gfHwgMCkgKyBwY3NJbixcbiAgICAgICAgICBtb25leUluOiAocmVsYXRlZFBhdGhJbmZvLm1vbmV5SW4gfHwgMCkgKyBwcmljZUluICogcGNzSW4sXG4gICAgICAgICAgY291bnRPdXQ6IChyZWxhdGVkUGF0aEluZm8uY291bnRPdXQgfHwgMCkgKyBwY3NPdXQsXG4gICAgICAgICAgbW9uZXlPdXQ6IChyZWxhdGVkUGF0aEluZm8ubW9uZXlPdXQgfHwgMCkgKyBwcmljZU91dCAqIHBjc091dCxcbiAgICAgICAgICBkYXRlU3RhcnQsXG4gICAgICAgICAgZGF0ZUVuZCxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfTtcblxuICAgIHJldHVybiB7IC4uLmFjYywgLi4uaXRlbUluZm8gfTtcbiAgfSwgdG90YWxJbmZvKTtcblxubGV0IGNvdW50ID0gMDtcbmNvbnN0IG1ha2VKc29uQ2h1bmsgPSAoZGF0YSwgdG90YWxTaXplKSA9PiB7XG4gIGNvdW50ICs9IDE7XG4gIGxldCBmaW5hbFN0ciA9ICcnO1xuICBjb25zdCBba2V5XSA9IF8ua2V5cyhkYXRhKTtcbiAgY29uc3QgdmFsdWUgPSBkYXRhW2tleV07XG4gIGNvbnN0IGpzb25TdHIgPSBgXCIke2tleX1cIjoke0pTT04uc3RyaW5naWZ5KHZhbHVlKX1gO1xuICBzd2l0Y2ggKGNvdW50KSB7XG4gICAgY2FzZSAxOlxuICAgICAgZmluYWxTdHIgPSBgeyR7anNvblN0cn0sYDtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgdG90YWxTaXplOlxuICAgICAgZmluYWxTdHIgPSBgJHtqc29uU3RyfX1gO1xuICAgICAgYnJlYWs7XG4gICAgZGVmYXVsdDpcbiAgICAgIGZpbmFsU3RyID0gYCR7anNvblN0cn0sYDtcbiAgfVxuICByZXR1cm4gZmluYWxTdHI7XG59O1xuXG5leHBvcnQgY29uc3QgbWFrZURhdGFTdHJlYW0gPSAocGF0aERhdGFDb2xsLCBzZWFyY2hUeXBlLCBrZXlzLCBlbmNvZGluZykgPT4ge1xuICBjb25zdCByZWFkYWJsZVBhdGhzID0gbmV3IEN1c3RvbVJlYWRlcihwYXRoRGF0YUNvbGwsIHtcbiAgICBvYmplY3RNb2RlOiB0cnVlLFxuICAgIGhpZ2hXYXRlck1hcms6IDEsXG4gIH0pO1xuXG4gIGNvbnN0IGdldENvbnRlbnQgPSBuZXcgVHJhbnNmb3JtKHtcbiAgICByZWFkYWJsZU9iamVjdE1vZGU6IHRydWUsXG4gICAgd3JpdGFibGVPYmplY3RNb2RlOiB0cnVlLFxuICAgIHRyYW5zZm9ybShjaHVuaywgZW5jLCBjYikge1xuICAgICAgY29uc3Qgc3RyID0gZnMucmVhZEZpbGVTeW5jKGNodW5rWzBdKTtcbiAgICAgIGNvbnN0IGRlY29kZWQgPSBpY29udi5kZWNvZGUoc3RyLCBlbmNvZGluZyk7XG4gICAgICB0aGlzLnB1c2goW2NodW5rWzBdLCBkZWNvZGVkXSk7XG4gICAgICBjYigpO1xuICAgIH0sXG4gIH0pO1xuXG4gIGNvbnN0IHNlbGVjdERhdGEgPSBuZXcgVHJhbnNmb3JtKHtcbiAgICByZWFkYWJsZU9iamVjdE1vZGU6IHRydWUsXG4gICAgd3JpdGFibGVPYmplY3RNb2RlOiB0cnVlLFxuICAgIHRyYW5zZm9ybShjaCwgZW5jLCBjYikge1xuICAgICAgY29uc3QgW2ZpbGVQYXRoLCBkYXRhXSA9IGNoO1xuICAgICAgY29uc3Qgc2VsZWN0ZWREYXRhID0ga2V5c1xuICAgICAgICAubWFwKGtleSA9PiBnZXRNYXRjaGVkKFN0cmluZyhrZXkpLCBzZWFyY2hUeXBlLCBkYXRhKSlcbiAgICAgICAgLmZpbHRlcihkYXRhQ29sbCA9PiBkYXRhQ29sbC5sZW5ndGggPiAwKTtcbiAgICAgIGlmIChzZWxlY3RlZERhdGEubGVuZ3RoID4gMCkge1xuICAgICAgICB0aGlzLnB1c2goW3NlbGVjdGVkRGF0YSwgZmlsZVBhdGhdKTtcbiAgICAgIH1cbiAgICAgIGNiKCk7XG4gICAgfSxcbiAgfSk7XG4gIHJldHVybiByZWFkYWJsZVBhdGhzXG4gICAgLnBpcGUoZ2V0Q29udGVudClcbiAgICAucGlwZShzZWxlY3REYXRhKTtcbn07XG5cbmV4cG9ydCBjb25zdCBtYWtlRGF0YVNlbGVjdGlvbiA9IGRhdGFTdHJlYW0gPT4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICBsZXQgdG90YWxJbmZvID0ge307XG4gIGRhdGFTdHJlYW1cbiAgICAub24oJ2RhdGEnLCAoZGF0YVBhaXIpID0+IHtcbiAgICAgIGNvbnN0IFtzZWxlY3RlZERhdGEsIGZpbGVQYXRoXSA9IGRhdGFQYWlyO1xuICAgICAgY29uc3QgcHJvY2Vzc2VkRGF0YSA9IHNlbGVjdGVkRGF0YS5yZWR1Y2UoKGFjYywgZGF0YUNvbGwpID0+IHtcbiAgICAgICAgY29uc3QgbmV3QWNjID0gcHJvY2Vzc0RhdGEoZGF0YUNvbGwsIGZpbGVQYXRoLCBhY2MpO1xuICAgICAgICByZXR1cm4gbmV3QWNjO1xuICAgICAgfSwgdG90YWxJbmZvKTtcbiAgICAgIHRvdGFsSW5mbyA9IHByb2Nlc3NlZERhdGE7XG4gICAgfSlcbiAgICAub24oJ2VuZCcsICgpID0+IHtcbiAgICAgIHJlc29sdmUodG90YWxJbmZvKTtcbiAgICB9KVxuICAgIC5vbignZXJyb3InLCByZWplY3QpO1xufSk7XG5cbmV4cG9ydCBjb25zdCB3cml0ZVRvSnNvbiA9ICh0b3RhbEluZm8sIHByb2Nlc3NlZERhdGFQYXRoKSA9PiB7XG4gIGNvbnN0IG9ialRvQXJyID0gXy5tYXAodG90YWxJbmZvLCAodmFsdWUsIGtleSkgPT4gKHsgW2tleV06IHZhbHVlIH0pKTtcbiAgY29uc3QgcmVhZGFibGVUb3RhbEluZm8gPSBuZXcgQ3VzdG9tUmVhZGVyKG9ialRvQXJyLCB7XG4gICAgb2JqZWN0TW9kZTogdHJ1ZSxcbiAgICBoaWdoV2F0ZXJNYXJrOiAxLFxuICB9KTtcblxuICBjb25zdCB0cmFuc2Zvcm1Ub0pzb24gPSBuZXcgVHJhbnNmb3JtKHtcbiAgICB3cml0YWJsZU9iamVjdE1vZGU6IHRydWUsXG4gICAgdHJhbnNmb3JtKFtjaHVua10sIGVuYywgY2IpIHtcbiAgICAgIGNvbnN0IGRhdGEgPSBtYWtlSnNvbkNodW5rKGNodW5rLCBvYmpUb0Fyci5sZW5ndGgpO1xuICAgICAgdGhpcy5wdXNoKGRhdGEpO1xuICAgICAgY2IoKTtcbiAgICB9LFxuICB9KTtcblxuICBjb25zdCB3cml0YWJsZUpzb24gPSBmcy5jcmVhdGVXcml0ZVN0cmVhbShwcm9jZXNzZWREYXRhUGF0aCk7XG4gIGNvbnN0IHN0cmVhbXNJblByb21pc2UgPSBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgcmVhZGFibGVUb3RhbEluZm9cbiAgICAgIC5waXBlKHRyYW5zZm9ybVRvSnNvbilcbiAgICAgIC5waXBlKHdyaXRhYmxlSnNvbilcbiAgICAgIC5vbignZmluaXNoJywgKCkgPT4ge1xuICAgICAgICBjb25zb2xlLmxvZyhgU3RydWN0dXJlZCBKU09OLWRhdGEgYXJlIHNhdmVkIGluICR7cHJvY2Vzc2VkRGF0YVBhdGh9XFxuYCk7XG4gICAgICAgIHJlc29sdmUoKTtcbiAgICAgIH0pXG4gICAgICAub24oJ2Vycm9yJywgcmVqZWN0KTtcbiAgfSk7XG5cbiAgcmV0dXJuIHN0cmVhbXNJblByb21pc2U7XG59O1xuXG5leHBvcnQgY29uc3Qgc2VsZWN0WmVyb01vdmVtZW50cyA9IChwYXRoRGF0YUNvbGwpID0+IHtcbiAgY29uc3Qgc2VwYXJhdGVkSXRlbXMgPSBfLnBhcnRpdGlvbihwYXRoRGF0YUNvbGwsIChbLCBjb250ZW50XSkgPT4ge1xuICAgIGNvbnN0IGhhc1plcm9zID0gY29udGVudC5zcGxpdCgnXFxuJykuZXZlcnkoKGxpbmUpID0+IHtcbiAgICAgIGNvbnN0IFssLCxcbiAgICAgICAgY291bnRJbiwsXG4gICAgICAgIGNvdW50T3V0LFxuICAgICAgXSA9IGxpbmUuc3BsaXQoJ1xcdCcpO1xuICAgICAgY29uc3QgaXNaZXJvID0gTnVtYmVyKGNvdW50SW4pID09PSAwICYmIE51bWJlcihjb3VudE91dCkgPT09IDA7XG4gICAgICByZXR1cm4gaXNaZXJvO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIGhhc1plcm9zO1xuICB9KTtcblxuICBjb25zdCBbemVyb0NvdW50cywgcmVzdF0gPSBzZXBhcmF0ZWRJdGVtcztcbiAgY29uc3QgW21hdGNoZWRQYXRoc10gPSBfLnVuemlwKHplcm9Db3VudHMpO1xuICBjb25zdCBbZGF0YVBhdGhzXSA9IF8udW56aXAocmVzdCk7XG5cbiAgcmV0dXJuIFttYXRjaGVkUGF0aHMsIGRhdGFQYXRoc107XG59O1xuIl19
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9wcm9jZXNzb3JzLmpzIl0sIm5hbWVzIjpbImZpbGVUeXBlcyIsIm1ha2VQYXRocyIsInNvdXJjZSIsInBhdGhzTGlzdCIsImluZm8iLCJmcyIsInN0YXRTeW5jIiwic2l6ZSIsImlzRGlyZWN0b3J5IiwiaXNDb3JyZWN0Rm9ybWF0IiwiaW5jbHVkZXMiLCJkaXJDb250ZW50IiwicmVhZGRpclN5bmMiLCJyZXNDb250ZW50Q29sbCIsInJlZHVjZSIsImFjYyIsIm5hbWUiLCJpbm5lclBhdGgiLCJnZXRNYXRjaGVkIiwic3RyVG9TZWFyY2giLCJzZWFyY2hUeXBlIiwiY29udGVudCIsInNwbGl0IiwiZmlsdGVyIiwibGluZSIsImRydWdDb2RlIiwiY291bnRJbiIsImNvdW50T3V0IiwiaXNTYW1lQ29kZSIsIm5hbWVJbmNsdWRlc1N0ciIsInRvTG93ZXJDYXNlIiwiaXNNYXRjaGVkIiwibm90WmVybyIsIk51bWJlciIsImxpbmVzIiwibGVuZ3RoIiwicHJvY2Vzc0RhdGEiLCJmaWxlUGF0aCIsInRvdGFsSW5mbyIsImNoYWluRHJ1Z0NvZGUiLCJyZW1haW5zIiwicHJpY2VJbiIsInByaWNlT3V0IiwiZGF0ZVN0YXJ0IiwiZGF0ZUVuZCIsImV4aXN0ZWRJdGVtSW5mbyIsInJlbGF0ZWRQYXRoSW5mbyIsInJlbWFpbnNOdW0iLCJwY3NJbiIsInBjc091dCIsIml0ZW1JbmZvIiwiY291bnRJblRvdGFsIiwibW9uZXlJblRvdGFsIiwiY291bnRPdXRUb3RhbCIsIm1vbmV5T3V0VG90YWwiLCJtb25leUluIiwibW9uZXlPdXQiLCJjb3VudCIsIm1ha2VKc29uQ2h1bmsiLCJkYXRhIiwidG90YWxTaXplIiwiZmluYWxTdHIiLCJfIiwia2V5cyIsImtleSIsInZhbHVlIiwianNvblN0ciIsIkpTT04iLCJzdHJpbmdpZnkiLCJtYWtlRGF0YVN0cmVhbSIsInBhdGhEYXRhQ29sbCIsImVuY29kaW5nIiwicmVhZGFibGVQYXRocyIsIkN1c3RvbVJlYWRlciIsIm9iamVjdE1vZGUiLCJoaWdoV2F0ZXJNYXJrIiwiZ2V0Q29udGVudCIsIlRyYW5zZm9ybSIsInJlYWRhYmxlT2JqZWN0TW9kZSIsIndyaXRhYmxlT2JqZWN0TW9kZSIsInRyYW5zZm9ybSIsImNodW5rIiwiZW5jIiwiY2IiLCJzdHIiLCJyZWFkRmlsZVN5bmMiLCJkZWNvZGVkIiwiaWNvbnYiLCJkZWNvZGUiLCJwdXNoIiwic2VsZWN0RGF0YSIsImNoIiwic2VsZWN0ZWREYXRhIiwibWFwIiwiU3RyaW5nIiwiZGF0YUNvbGwiLCJwaXBlIiwibWFrZURhdGFTZWxlY3Rpb24iLCJkYXRhU3RyZWFtIiwiUHJvbWlzZSIsInJlc29sdmUiLCJyZWplY3QiLCJvbiIsImRhdGFQYWlyIiwicHJvY2Vzc2VkRGF0YSIsIm5ld0FjYyIsIndyaXRlVG9Kc29uIiwicHJvY2Vzc2VkRGF0YVBhdGgiLCJvYmpUb0FyciIsInJlYWRhYmxlVG90YWxJbmZvIiwidHJhbnNmb3JtVG9Kc29uIiwid3JpdGFibGVKc29uIiwiY3JlYXRlV3JpdGVTdHJlYW0iLCJzdHJlYW1zSW5Qcm9taXNlIiwiY29uc29sZSIsImxvZyIsInNlbGVjdFplcm9Nb3ZlbWVudHMiLCJzZXBhcmF0ZWRJdGVtcyIsInBhcnRpdGlvbiIsImhhc1plcm9zIiwiZXZlcnkiLCJpc1plcm8iLCJ6ZXJvQ291bnRzIiwicmVzdCIsInVuemlwIiwibWF0Y2hlZFBhdGhzIiwiZGF0YVBhdGhzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVBLElBQU1BLFNBQVMsR0FBRyxDQUFDLE1BQUQsRUFBUyxNQUFULEVBQWlCLE1BQWpCLEVBQXlCLE1BQXpCLEVBQWlDLE1BQWpDLEVBQXlDLE1BQXpDLENBQWxCOztBQUVPLElBQU1DLFNBQVMsR0FBRyxTQUFaQSxTQUFZLENBQUNDLE1BQUQsRUFBNEI7QUFBQSxNQUFuQkMsU0FBbUIsdUVB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QUM5QyxZQUFELEVBQWtCO0FBQ25ELE1BQU0rQyxjQUFjLEdBQUd2RCxtQkFBRXdELFNBQUYsQ0FBWWhELFlBQVosRUFBMEIsaUJBQWlCO0FBQUE7QUFBQSxRQUFiakQsT0FBYTs7QUFDaEUsUUFBTWtHLFFBQVEsR0FBR2xHLE9BQU8sQ0FBQ0MsS0FBUixDQUFjLElBQWQsRUFBb0JrRyxLQUFwQixDQUEwQixVQUFDaEcsSUFBRCxFQUFVO0FBQUEseUJBSS9DQSxJQUFJLENBQUNGLEtBQUwsQ0FBVyxJQUFYLENBSitDO0FBQUE7QUFBQSxVQUVqREksT0FGaUQ7QUFBQSxVQUdqREMsUUFIaUQ7O0FBS25ELFVBQU04RixNQUFNLEdBQUd4RixNQUFNLENBQUNQLE9BQUQsQ0FBTixLQUFvQixDQUFwQixJQUF5Qk8sTUFBTSxDQUFDTixRQUFELENBQU4sS0FBcUIsQ0FBN0Q7QUFDQSxhQUFPOEYsTUFBUDtBQUNELEtBUGdCLENBQWpCO0FBU0EsV0FBT0YsUUFBUDtBQUNELEdBWHNCLENBQXZCOztBQURtRCx1Q0FjeEJGLGNBZHdCO0FBQUEsTUFjNUNLLFVBZDRDO0FBQUEsTUFjaENDLElBZGdDOztBQUFBLGdCQWU1QjdELG1CQUFFOEQsS0FBRixDQUFRRixVQUFSLENBZjRCO0FBQUE7QUFBQSxNQWU1Q0csWUFmNEM7O0FBQUEsaUJBZ0IvQi9ELG1CQUFFOEQsS0FBRixDQUFRRCxJQUFSLENBaEIrQjtBQUFBO0FBQUEsTUFnQjVDRyxTQWhCNEM7O0FBa0JuRCxTQUFPLENBQUNELFlBQUQsRUFBZUMsU0FBZixDQUFQO0FBQ0QsQ0FuQk0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZnMgZnJvbSAnZnMnO1xuaW1wb3J0IHsgVHJhbnNmb3JtIH0gZnJvbSAnc3RyZWFtJztcbmltcG9ydCB7IGpvaW4sIGV4dG5hbWUgfSBmcm9tICdwYXRoJztcbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgKiBhcyBpY29udiBmcm9tICdpY29udi1saXRlJztcbmltcG9ydCBDdXN0b21SZWFkZXIgZnJvbSAnLi9TdHJlYW1SZWFkZXInO1xuaW1wb3J0ICdyZWdlbmVyYXRvci1ydW50aW1lJztcblxuY29uc3QgZmlsZVR5cGVzID0gWycubWRyJywgJy5td3InLCAnLm1tcicsICcubWRpJywgJy5td2knLCAnLm1taSddO1xuXG5leHBvcnQgY29uc3QgbWFrZVBhdGhzID0gKHNvdXJjZSwgcGF0aHNMaXN0ID0gW10pID0+IHtcbiAgY29uc3QgaW5mbyA9IGZzLnN0YXRTeW5jKHNvdXJjZSk7XG4gIGlmIChpbmZvLnNpemUgPT09IDApIHtcbiAgICByZXR1cm4gW1tzb3VyY2VdXTtcbiAgfVxuICBpZiAoIWluZm8uaXNEaXJlY3RvcnkoKSkge1xuICAgIGNvbnN0IGlzQ29ycmVjdEZvcm1hdCA9IGZpbGVUeXBlcy5pbmNsdWRlcyhleHRuYW1lKHNvdXJjZSkpO1xuICAgIHJldHVybiBpc0NvcnJlY3RGb3JtYXQgPyBbc291cmNlXSA6IFtdO1xuICB9XG4gIGNvbnN0IGRpckNvbnRlbnQgPSBmcy5yZWFkZGlyU3luYyhzb3VyY2UpO1xuICBjb25zdCByZXNDb250ZW50Q29sbCA9IGRpckNvbnRlbnRcbiAgICAucmVkdWNlKChhY2MsIG5hbWUpID0+IHtcbiAgICAgIGNvbnN0IGlubmVyUGF0aCA9IGpvaW4oc291cmNlLCBuYW1lKTtcbiAgICAgIHJldHVybiBbLi4uYWNjLCAuLi5tYWtlUGF0aHMoaW5uZXJQYXRoKV07XG4gICAgfSwgcGF0aHNMaXN0KTtcbiAgcmV0dXJuIHJlc0NvbnRlbnRDb2xsO1xufTtcblxuY29uc3QgZ2V0TWF0Y2hlZCA9IChzdHJUb1NlYXJjaCwgc2VhcmNoVHlwZSwgY29udGVudCkgPT4gY29udGVudC5zcGxpdCgnXFxuJykuZmlsdGVyKChsaW5lKSA9PiB7XG4gIGNvbnN0IFtcbiAgICBkcnVnQ29kZSxcbiAgICBuYW1lLCxcbiAgICBjb3VudEluLCxcbiAgICBjb3VudE91dCxcbiAgXSA9IGxpbmUuc3BsaXQoJ1xcdCcpO1xuICBpZiAoIW5hbWUpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgY29uc3QgaXNTYW1lQ29kZSA9IGRydWdDb2RlID09PSBzdHJUb1NlYXJjaDtcbiAgY29uc3QgbmFtZUluY2x1ZGVzU3RyID0gbmFtZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHN0clRvU2VhcmNoLnRvTG93ZXJDYXNlKCkpO1xuICBjb25zdCBpc01hdGNoZWQgPSBzZWFyY2hUeXBlID09PSAnZHJ1Z0NvZGUnID8gaXNTYW1lQ29kZSA6IG5hbWVJbmNsdWRlc1N0cjtcbiAgY29uc3Qgbm90WmVybyA9IE51bWJlcihjb3VudEluKSAhPT0gMCB8fCBOdW1iZXIoY291bnRPdXQpICE9PSAwO1xuICByZXR1cm4gaXNNYXRjaGVkICYmIG5vdFplcm87XG59KS5maWx0ZXIoKFssIGxpbmVzXSkgPT4gbGluZXMubGVuZ3RoID4gMCk7XG5cbmNvbnN0IHByb2Nlc3NEYXRhID0gKGNvbnRlbnQsIGZpbGVQYXRoLCB0b3RhbEluZm8pID0+IGNvbnRlbnRcbiAgLnJlZHVjZSgoYWNjLCBsaW5lKSA9PiB7XG4gICAgY29uc3QgW1xuICAgICAgY2hhaW5EcnVnQ29kZSxcbiAgICAgIG5hbWUsXG4gICAgICByZW1haW5zLFxuICAgICAgY291bnRJbixcbiAgICAgIHByaWNlSW4sXG4gICAgICBjb3VudE91dCxcbiAgICAgIHByaWNlT3V0LFxuICAgICAgZGF0ZVN0YXJ0LFxuICAgICAgZGF0ZUVuZCxcbiAgICBdID0gbGluZS5zcGxpdCgnXFx0Jyk7XG5cbiAgICBjb25zdCBleGlzdGVkSXRlbUluZm8gPSBhY2NbY2hhaW5EcnVnQ29kZV0gfHwge307XG4gICAgY29uc3QgcmVsYXRlZFBhdGhJbmZvID0gZXhpc3RlZEl0ZW1JbmZvW2ZpbGVQYXRoXSB8fCB7fTtcbiAgICBjb25zdCByZW1haW5zTnVtID0gTnVtYmVyKHJlbWFpbnMpO1xuICAgIGNvbnN0IHBjc0luID0gTnVtYmVyKGNvdW50SW4pO1xuICAgIGNvbnN0IHBjc091dCA9IE51bWJlcihjb3VudE91dCk7XG5cbiAgICBjb25zdCBpdGVtSW5mbyA9IHtcbiAgICAgIFtjaGFpbkRydWdDb2RlXToge1xuICAgICAgICAuLi5leGlzdGVkSXRlbUluZm8sXG4gICAgICAgIG5hbWUsXG4gICAgICAgIGNvdW50SW5Ub3RhbDogKGV4aXN0ZWRJdGVtSW5mby5jb3VudEluVG90YWwgfHwgMCkgKyBwY3NJbixcbiAgICAgICAgbW9uZXlJblRvdGFsOiAoZXhpc3RlZEl0ZW1JbmZvLm1vbmV5SW5Ub3RhbCB8fCAwKSArIHByaWNlSW4gKiBwY3NJbixcbiAgICAgICAgY291bnRPdXRUb3RhbDogKGV4aXN0ZWRJdGVtSW5mby5jb3VudE91dFRvdGFsIHx8IDApICsgcGNzT3V0LFxuICAgICAgICBtb25leU91dFRvdGFsOiAoZXhpc3RlZEl0ZW1JbmZvLm1vbmV5T3V0VG90YWwgfHwgMCkgKyBwcmljZU91dCAqIHBjc091dCxcbiAgICAgICAgW2ZpbGVQYXRoXToge1xuICAgICAgICAgIHJlbWFpbnM6IChyZWxhdGVkUGF0aEluZm8ucmVtYWlucyB8fCAwKSArIHJlbWFpbnNOdW0sXG4gICAgICAgICAgY291bnRJbjogKHJlbGF0ZWRQYXRoSW5mby5jb3VudEluIHx8IDApICsgcGNzSW4sXG4gICAgICAgICAgbW9uZXlJbjogKHJlbGF0ZWRQYXRoSW5mby5tb25leUluIHx8IDApICsgcHJpY2VJbiAqIHBjc0luLFxuICAgICAgICAgIGNvdW50T3V0OiAocmVsYXRlZFBhdGhJbmZvLmNvdW50T3V0IHx8IDApICsgcGNzT3V0LFxuICAgICAgICAgIG1vbmV5T3V0OiAocmVsYXRlZFBhdGhJbmZvLm1vbmV5T3V0IHx8IDApICsgcHJpY2VPdXQgKiBwY3NPdXQsXG4gICAgICAgICAgZGF0ZVN0YXJ0LFxuICAgICAgICAgIGRhdGVFbmQsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH07XG5cbiAgICByZXR1cm4geyAuLi5hY2MsIC4uLml0ZW1JbmZvIH07XG4gIH0sIHRvdGFsSW5mbyk7XG5cbmxldCBjb3VudCA9IDA7XG5jb25zdCBtYWtlSnNvbkNodW5rID0gKGRhdGEsIHRvdGFsU2l6ZSkgPT4ge1xuICBjb3VudCArPSAxO1xuICBsZXQgZmluYWxTdHIgPSAnJztcbiAgY29uc3QgW2tleV0gPSBfLmtleXMoZGF0YSk7XG4gIGNvbnN0IHZhbHVlID0gZGF0YVtrZXldO1xuICBjb25zdCBqc29uU3RyID0gYFwiJHtrZXl9XCI6JHtKU09OLnN0cmluZ2lmeSh2YWx1ZSl9YDtcbiAgc3dpdGNoIChjb3VudCkge1xuICAgIGNhc2UgMTpcbiAgICAgIGZpbmFsU3RyID0gYHske2pzb25TdHJ9LGA7XG4gICAgICBicmVhaztcbiAgICBjYXNlIHRvdGFsU2l6ZTpcbiAgICAgIGZpbmFsU3RyID0gYCR7anNvblN0cn19YDtcbiAgICAgIGJyZWFrO1xuICAgIGRlZmF1bHQ6XG4gICAgICBmaW5hbFN0ciA9IGAke2pzb25TdHJ9LGA7XG4gIH1cbiAgcmV0dXJuIGZpbmFsU3RyO1xufTtcblxuZXhwb3J0IGNvbnN0IG1ha2VEYXRhU3RyZWFtID0gKHBhdGhEYXRhQ29sbCwgc2VhcmNoVHlwZSwga2V5cywgZW5jb2RpbmcpID0+IHtcbiAgY29uc3QgcmVhZGFibGVQYXRocyA9IG5ldyBDdXN0b21SZWFkZXIocGF0aERhdGFDb2xsLCB7XG4gICAgb2JqZWN0TW9kZTogdHJ1ZSxcbiAgICBoaWdoV2F0ZXJNYXJrOiAxLFxuICB9KTtcblxuICBjb25zdCBnZXRDb250ZW50ID0gbmV3IFRyYW5zZm9ybSh7XG4gICAgcmVhZGFibGVPYmplY3RNb2RlOiB0cnVlLFxuICAgIHdyaXRhYmxlT2JqZWN0TW9kZTogdHJ1ZSxcbiAgICB0cmFuc2Zvcm0oY2h1bmssIGVuYywgY2IpIHtcbiAgICAgIGNvbnN0IHN0ciA9IGZzLnJlYWRGaWxlU3luYyhjaHVua1swXSk7XG4gICAgICBjb25zdCBkZWNvZGVkID0gaWNvbnYuZGVjb2RlKHN0ciwgZW5jb2RpbmcpO1xuICAgICAgdGhpcy5wdXNoKFtjaHVua1swXSwgZGVjb2RlZF0pO1xuICAgICAgY2IoKTtcbiAgICB9LFxuICB9KTtcblxuICBjb25zdCBzZWxlY3REYXRhID0gbmV3IFRyYW5zZm9ybSh7XG4gICAgcmVhZGFibGVPYmplY3RNb2RlOiB0cnVlLFxuICAgIHdyaXRhYmxlT2JqZWN0TW9kZTogdHJ1ZSxcbiAgICB0cmFuc2Zvcm0oY2gsIGVuYywgY2IpIHtcbiAgICAgIGNvbnN0IFtmaWxlUGF0aCwgZGF0YV0gPSBjaDtcbiAgICAgIGNvbnN0IHNlbGVjdGVkRGF0YSA9IGtleXNcbiAgICAgICAgLm1hcChrZXkgPT4gZ2V0TWF0Y2hlZChTdHJpbmcoa2V5KSwgc2VhcmNoVHlwZSwgZGF0YSkpXG4gICAgICAgIC5maWx0ZXIoZGF0YUNvbGwgPT4gZGF0YUNvbGwubGVuZ3RoID4gMCk7XG4gICAgICBpZiAoc2VsZWN0ZWREYXRhLmxlbmd0aCA+IDApIHtcbiAgICAgICAgdGhpcy5wdXNoKFtzZWxlY3RlZERhdGEsIGZpbGVQYXRoXSk7XG4gICAgICB9XG4gICAgICBjYigpO1xuICAgIH0sXG4gIH0pO1xuICByZXR1cm4gcmVhZGFibGVQYXRoc1xuICAgIC5waXBlKGdldENvbnRlbnQpXG4gICAgLnBpcGUoc2VsZWN0RGF0YSk7XG59O1xuXG5leHBvcnQgY29uc3QgbWFrZURhdGFTZWxlY3Rpb24gPSBkYXRhU3RyZWFtID0+IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgbGV0IHRvdGFsSW5mbyA9IHt9O1xuICBkYXRhU3RyZWFtXG4gICAgLm9uKCdkYXRhJywgKGRhdGFQYWlyKSA9PiB7XG4gICAgICBjb25zdCBbc2VsZWN0ZWREYXRhLCBmaWxlUGF0aF0gPSBkYXRhUGFpcjtcbiAgICAgIGNvbnN0IHByb2Nlc3NlZERhdGEgPSBzZWxlY3RlZERhdGEucmVkdWNlKChhY2MsIGRhdGFDb2xsKSA9PiB7XG4gICAgICAgIGNvbnN0IG5ld0FjYyA9IHByb2Nlc3NEYXRhKGRhdGFDb2xsLCBmaWxlUGF0aCwgYWNjKTtcbiAgICAgICAgcmV0dXJuIG5ld0FjYztcbiAgICAgIH0sIHRvdGFsSW5mbyk7XG4gICAgICB0b3RhbEluZm8gPSBwcm9jZXNzZWREYXRhO1xuICAgIH0pXG4gICAgLm9uKCdlbmQnLCAoKSA9PiB7XG4gICAgICByZXNvbHZlKHRvdGFsSW5mbyk7XG4gICAgfSlcbiAgICAub24oJ2Vycm9yJywgcmVqZWN0KTtcbn0pO1xuXG5leHBvcnQgY29uc3Qgd3JpdGVUb0pzb24gPSAodG90YWxJbmZvLCBwcm9jZXNzZWREYXRhUGF0aCkgPT4ge1xuICBjb25zdCBvYmpUb0FyciA9IF8ubWFwKHRvdGFsSW5mbywgKHZhbHVlLCBrZXkpID0+ICh7IFtrZXldOiB2YWx1ZSB9KSk7XG4gIGNvbnN0IHJlYWRhYmxlVG90YWxJbmZvID0gbmV3IEN1c3RvbVJlYWRlcihvYmpUb0Fyciwge1xuICAgIG9iamVjdE1vZGU6IHRydWUsXG4gICAgaGlnaFdhdGVyTWFyazogMSxcbiAgfSk7XG5cbiAgY29uc3QgdHJhbnNmb3JtVG9Kc29uID0gbmV3IFRyYW5zZm9ybSh7XG4gICAgd3JpdGFibGVPYmplY3RNb2RlOiB0cnVlLFxuICAgIHRyYW5zZm9ybShbY2h1bmtdLCBlbmMsIGNiKSB7XG4gICAgICBjb25zdCBkYXRhID0gbWFrZUpzb25DaHVuayhjaHVuaywgb2JqVG9BcnIubGVuZ3RoKTtcbiAgICAgIHRoaXMucHVzaChkYXRhKTtcbiAgICAgIGNiKCk7XG4gICAgfSxcbiAgfSk7XG5cbiAgY29uc3Qgd3JpdGFibGVKc29uID0gZnMuY3JlYXRlV3JpdGVTdHJlYW0ocHJvY2Vzc2VkRGF0YVBhdGgpO1xuICBjb25zdCBzdHJlYW1zSW5Qcm9taXNlID0gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIHJlYWRhYmxlVG90YWxJbmZvXG4gICAgICAucGlwZSh0cmFuc2Zvcm1Ub0pzb24pXG4gICAgICAucGlwZSh3cml0YWJsZUpzb24pXG4gICAgICAub24oJ2ZpbmlzaCcsICgpID0+IHtcbiAgICAgICAgY29uc29sZS5sb2coYFN0cnVjdHVyZWQgSlNPTi1kYXRhIGFyZSBzYXZlZCBpbiAke3Byb2Nlc3NlZERhdGFQYXRofVxcbmApO1xuICAgICAgICByZXNvbHZlKCk7XG4gICAgICB9KVxuICAgICAgLm9uKCdlcnJvcicsIHJlamVjdCk7XG4gIH0pO1xuXG4gIHJldHVybiBzdHJlYW1zSW5Qcm9taXNlO1xufTtcblxuZXhwb3J0IGNvbnN0IHNlbGVjdFplcm9Nb3ZlbWVudHMgPSAocGF0aERhdGFDb2xsKSA9PiB7XG4gIGNvbnN0IHNlcGFyYXRlZEl0ZW1zID0gXy5wYXJ0aXRpb24ocGF0aERhdGFDb2xsLCAoWywgY29udGVudF0pID0+IHtcbiAgICBjb25zdCBoYXNaZXJvcyA9IGNvbnRlbnQuc3BsaXQoJ1xcbicpLmV2ZXJ5KChsaW5lKSA9PiB7XG4gICAgICBjb25zdCBbLCwsXG4gICAgICAgIGNvdW50SW4sLFxuICAgICAgICBjb3VudE91dCxcbiAgICAgIF0gPSBsaW5lLnNwbGl0KCdcXHQnKTtcbiAgICAgIGNvbnN0IGlzWmVybyA9IE51bWJlcihjb3VudEluKSA9PT0gMCAmJiBOdW1iZXIoY291bnRPdXQpID09PSAwO1xuICAgICAgcmV0dXJuIGlzWmVybztcbiAgICB9KTtcblxuICAgIHJldHVybiBoYXNaZXJvcztcbiAgfSk7XG5cbiAgY29uc3QgW3plcm9Db3VudHMsIHJlc3RdID0gc2VwYXJhdGVkSXRlbXM7XG4gIGNvbnN0IFttYXRjaGVkUGF0aHNdID0gXy51bnppcCh6ZXJvQ291bnRzKTtcbiAgY29uc3QgW2RhdGFQYXRoc10gPSBfLnVuemlwKHJlc3QpO1xuXG4gIHJldHVybiBbbWF0Y2hlZFBhdGhzLCBkYXRhUGF0aHNdO1xufTtcbiJdfQ==

@@ -8,8 +8,4 @@ "use strict";

var _path = _interopRequireDefault(require("path"));
var _fs = _interopRequireDefault(require("fs"));
var _readlineSync = _interopRequireDefault(require("readline-sync"));
var _stream = require("stream");

@@ -23,2 +19,4 @@

var _askUser = require("../askUser");
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }

@@ -38,12 +36,6 @@

var renderAndWrite = function renderAndWrite(content, renderFn, parentFolder) {
var renderAndWrite = function renderAndWrite(content, renderFn, renderedDataPath) {
var data = JSON.parse(content);
var renderedDataColl = renderFn(data);
var renderedDataName = _readlineSync["default"].question('\nEnter a name for rendered data file (default name is "rendered"):', {
defaultInput: 'renderedData'
});
var renderedDataPath = _path["default"].join(parentFolder, "".concat(renderedDataName, ".txt"));
var renderedToDestination = _fs["default"].createWriteStream(renderedDataPath);

@@ -74,3 +66,3 @@

var _default = function _default(processedDataPath, resFolder) {
var _default = function _default(processedDataPath, renderTypes, resFolder) {
var renderFunctions = {

@@ -80,7 +72,12 @@ total: _totalValues["default"],

};
var renderTypes = ['total', 'detailed'];
var params = (0, _askUser.getRenderParams)(renderTypes, resFolder);
var positionNum = _readlineSync["default"].keyInSelect(renderTypes, 'Please select render type:');
if (!params) {
return;
}
var renderType = renderTypes[positionNum];
var _params = _slicedToArray(params, 2),
renderedDataPath = _params[0],
renderType = _params[1];
var render = renderFunctions[renderType];

@@ -92,3 +89,3 @@ var content = '';

}).on('end', function () {
renderAndWrite(content, render, resFolder);
renderAndWrite(content, render, renderedDataPath);
});

@@ -98,2 +95,2 @@ };

exports["default"] = _default;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9yZW5kZXJlcnMvaW5kZXguanMiXSwibmFtZXMiOlsicmVuZGVyQW5kV3JpdGUiLCJjb250ZW50IiwicmVuZGVyRm4iLCJwYXJlbnRGb2xkZXIiLCJkYXRhIiwiSlNPTiIsInBhcnNlIiwicmVuZGVyZWREYXRhQ29sbCIsInJlbmRlcmVkRGF0YU5hbWUiLCJyZWFkbGluZVN5bmMiLCJxdWVzdGlvbiIsImRlZmF1bHRJbnB1dCIsInJlbmRlcmVkRGF0YVBhdGgiLCJwYXRoIiwiam9pbiIsInJlbmRlcmVkVG9EZXN0aW5hdGlvbiIsImZzIiwiY3JlYXRlV3JpdGVTdHJlYW0iLCJtYWtlUmVhZGFibGVSZW5kZXJlZERhdGEiLCJDdXN0b21SZWFkZXIiLCJvYmplY3RNb2RlIiwiaGlnaFdhdGVyTWFyayIsImNvdW50IiwibWFrZUZpbmFsU3RyIiwiVHJhbnNmb3JtIiwid3JpdGFibGVPYmplY3RNb2RlIiwidHJhbnNmb3JtIiwiZW5jIiwiY2IiLCJjaCIsInJlc1N0ciIsImxlbmd0aCIsInB1c2giLCJwaXBlIiwib24iLCJjb25zb2xlIiwibG9nIiwicHJvY2Vzc2VkRGF0YVBhdGgiLCJyZXNGb2xkZXIiLCJyZW5kZXJGdW5jdGlvbnMiLCJ0b3RhbCIsImRldGFpbGVkIiwicmVuZGVyVHlwZXMiLCJwb3NpdGlvbk51bSIsImtleUluU2VsZWN0IiwicmVuZGVyVHlwZSIsInJlbmRlciIsImNyZWF0ZVJlYWRTdHJlYW0iLCJjaHVuayJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOzs7Ozs7Ozs7Ozs7Ozs7O0FBRUEsSUFBTUEsY0FBYyxHQUFHLFNBQWpCQSxjQUFpQixDQUFDQyxPQUFELEVBQVVDLFFBQVYsRUFBb0JDLFlBQXBCLEVBQXFDO0FBQzFELE1BQU1DLElBQUksR0FBR0MsSUFBSSxDQUFDQyxLQUFMLENBQVdMLE9BQVgsQ0FBYjtBQUNBLE1BQU1NLGdCQUFnQixHQUFHTCxRQUFRLENBQUNFLElBQUQsQ0FBakM7O0FBQ0EsTUFBTUksZ0JBQWdCLEdBQUdDLHlCQUN0QkMsUUFEc0IsQ0FDYixxRUFEYSxFQUMwRDtBQUMvRUMsSUFBQUEsWUFBWSxFQUFFO0FBRGlFLEdBRDFELENBQXpCOztBQUlBLE1BQU1DLGdCQUFnQixHQUFHQyxpQkFBS0MsSUFBTCxDQUFVWCxZQUFWLFlBQTJCSyxnQkFBM0IsVUFBekI7O0FBQ0EsTUFBTU8scUJBQXFCLEdBQUdDLGVBQUdDLGlCQUFILENBQXFCTCxnQkFBckIsQ0FBOUI7O0FBRUEsTUFBTU0sd0JBQXdCLEdBQUcsSUFBSUMsd0JBQUosQ0FBaUJaLGdCQUFqQixFQUFtQztBQUNsRWEsSUFBQUEsVUFBVSxFQUFFLElBRHNEO0FBRWxFQyxJQUFBQSxhQUFhLEVBQUU7QUFGbUQsR0FBbkMsQ0FBakM7QUFLQSxNQUFJQyxLQUFLLEdBQUcsQ0FBWjtBQUNBLE1BQU1DLFlBQVksR0FBRyxJQUFJQyxpQkFBSixDQUFjO0FBQ2pDQyxJQUFBQSxrQkFBa0IsRUFBRSxJQURhO0FBRWpDQyxJQUFBQSxTQUZpQywyQkFFakJDLEdBRmlCLEVBRVpDLEVBRlksRUFFUjtBQUFBO0FBQUEsVUFBZEMsRUFBYzs7QUFDdkJQLE1BQUFBLEtBQUssSUFBSSxDQUFUO0FBQ0EsVUFBTVEsTUFBTSxHQUFHUixLQUFLLEdBQUdmLGdCQUFnQixDQUFDd0IsTUFBekIsYUFBcUNGLEVBQXJDLFVBQThDQSxFQUE3RDtBQUNBLFdBQUtHLElBQUwsQ0FBVUYsTUFBVjtBQUNBRixNQUFBQSxFQUFFO0FBQ0g7QUFQZ0MsR0FBZCxDQUFyQjtBQVVBVixFQUFBQSx3QkFBd0IsQ0FDckJlLElBREgsQ0FDUVYsWUFEUixFQUVHVSxJQUZILENBRVFsQixxQkFGUixFQUdHbUIsRUFISCxDQUdNLFFBSE4sRUFHZ0IsWUFBTTtBQUNsQkMsSUFBQUEsT0FBTyxDQUFDQyxHQUFSLHNDQUEwQ3hCLGdCQUExQztBQUNBdUIsSUFBQUEsT0FBTyxDQUFDQyxHQUFSLENBQVksNENBQVo7QUFDRCxHQU5IO0FBT0QsQ0FqQ0Q7O2VBbUNlLGtCQUFDQyxpQkFBRCxFQUFvQkMsU0FBcEIsRUFBa0M7QUFDL0MsTUFBTUMsZUFBZSxHQUFHO0FBQ3RCQyxJQUFBQSxLQUFLLEVBQUxBLHVCQURzQjtBQUV0QkMsSUFBQUEsUUFBUSxFQUFSQTtBQUZzQixHQUF4QjtBQUlBLE1BQU1DLFdBQVcsR0FBRyxDQUFDLE9BQUQsRUFBVSxVQUFWLENBQXBCOztBQUNBLE1BQU1DLFdBQVcsR0FBR2xDLHlCQUFhbUMsV0FBYixDQUF5QkYsV0FBekIsRUFBc0MsNEJBQXRDLENBQXBCOztBQUNBLE1BQU1HLFVBQVUsR0FBR0gsV0FBVyxDQUFDQyxXQUFELENBQTlCO0FBQ0EsTUFBTUcsTUFBTSxHQUFHUCxlQUFlLENBQUNNLFVBQUQsQ0FBOUI7QUFFQSxNQUFJNUMsT0FBTyxHQUFHLEVBQWQ7O0FBQ0FlLGlCQUFHK0IsZ0JBQUgsQ0FBb0JWLGlCQUFwQixFQUNHSCxFQURILENBQ00sTUFETixFQUNjLFVBQUNjLEtBQUQsRUFBVztBQUNyQi9DLElBQUFBLE9BQU8sSUFBSStDLEtBQVg7QUFDRCxHQUhILEVBSUdkLEVBSkgsQ0FJTSxLQUpOLEVBSWEsWUFBTTtBQUNmbEMsSUFBQUEsY0FBYyxDQUFDQyxPQUFELEVBQVU2QyxNQUFWLEVBQWtCUixTQUFsQixDQUFkO0FBQ0QsR0FOSDtBQU9ELEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCBmcyBmcm9tICdmcyc7XG5pbXBvcnQgcmVhZGxpbmVTeW5jIGZyb20gJ3JlYWRsaW5lLXN5bmMnO1xuaW1wb3J0IHsgVHJhbnNmb3JtIH0gZnJvbSAnc3RyZWFtJztcbmltcG9ydCBDdXN0b21SZWFkZXIgZnJvbSAnLi4vU3RyZWFtUmVhZGVyJztcbmltcG9ydCB0b3RhbCBmcm9tICcuL3RvdGFsVmFsdWVzJztcbmltcG9ydCBkZXRhaWxlZCBmcm9tICcuL2RldGFpbGVkVmFsdWVzJztcblxuY29uc3QgcmVuZGVyQW5kV3JpdGUgPSAoY29udGVudCwgcmVuZGVyRm4sIHBhcmVudEZvbGRlcikgPT4ge1xuICBjb25zdCBkYXRhID0gSlNPTi5wYXJzZShjb250ZW50KTtcbiAgY29uc3QgcmVuZGVyZWREYXRhQ29sbCA9IHJlbmRlckZuKGRhdGEpO1xuICBjb25zdCByZW5kZXJlZERhdGFOYW1lID0gcmVhZGxpbmVTeW5jXG4gICAgLnF1ZXN0aW9uKCdcXG5FbnRlciBhIG5hbWUgZm9yIHJlbmRlcmVkIGRhdGEgZmlsZSAoZGVmYXVsdCBuYW1lIGlzIFwicmVuZGVyZWRcIik6Jywge1xuICAgICAgZGVmYXVsdElucHV0OiAncmVuZGVyZWREYXRhJyxcbiAgICB9KTtcbiAgY29uc3QgcmVuZGVyZWREYXRhUGF0aCA9IHBhdGguam9pbihwYXJlbnRGb2xkZXIsIGAke3JlbmRlcmVkRGF0YU5hbWV9LnR4dGApO1xuICBjb25zdCByZW5kZXJlZFRvRGVzdGluYXRpb24gPSBmcy5jcmVhdGVXcml0ZVN0cmVhbShyZW5kZXJlZERhdGFQYXRoKTtcblxuICBjb25zdCBtYWtlUmVhZGFibGVSZW5kZXJlZERhdGEgPSBuZXcgQ3VzdG9tUmVhZGVyKHJlbmRlcmVkRGF0YUNvbGwsIHtcbiAgICBvYmplY3RNb2RlOiB0cnVlLFxuICAgIGhpZ2hXYXRlck1hcms6IDEsXG4gIH0pO1xuXG4gIGxldCBjb3VudCA9IDA7XG4gIGNvbnN0IG1ha2VGaW5hbFN0ciA9IG5ldyBUcmFuc2Zvcm0oe1xuICAgIHdyaXRhYmxlT2JqZWN0TW9kZTogdHJ1ZSxcbiAgICB0cmFuc2Zvcm0oW2NoXSwgZW5jLCBjYikge1xuICAgICAgY291bnQgKz0gMTtcbiAgICAgIGNvbnN0IHJlc1N0ciA9IGNvdW50IDwgcmVuZGVyZWREYXRhQ29sbC5sZW5ndGggPyBgJHtjaH1cXG5gIDogY2g7XG4gICAgICB0aGlzLnB1c2gocmVzU3RyKTtcbiAgICAgIGNiKCk7XG4gICAgfSxcbiAgfSk7XG5cbiAgbWFrZVJlYWRhYmxlUmVuZGVyZWREYXRhXG4gICAgLnBpcGUobWFrZUZpbmFsU3RyKVxuICAgIC5waXBlKHJlbmRlcmVkVG9EZXN0aW5hdGlvbilcbiAgICAub24oJ2ZpbmlzaCcsICgpID0+IHtcbiAgICAgIGNvbnNvbGUubG9nKGBSZW5kZXJlZCBkYXRhIGFyZSBzYXZlZCBpbiAke3JlbmRlcmVkRGF0YVBhdGh9XFxuYCk7XG4gICAgICBjb25zb2xlLmxvZygnXFxuLS0tLS0tLSBBbGwgZGF0YSBhcmUgcHJvY2Vzc2VkIC0tLS0tLS1cXG4nKTtcbiAgICB9KTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IChwcm9jZXNzZWREYXRhUGF0aCwgcmVzRm9sZGVyKSA9PiB7XG4gIGNvbnN0IHJlbmRlckZ1bmN0aW9ucyA9IHtcbiAgICB0b3RhbCxcbiAgICBkZXRhaWxlZCxcbiAgfTtcbiAgY29uc3QgcmVuZGVyVHlwZXMgPSBbJ3RvdGFsJywgJ2RldGFpbGVkJ107XG4gIGNvbnN0IHBvc2l0aW9uTnVtID0gcmVhZGxpbmVTeW5jLmtleUluU2VsZWN0KHJlbmRlclR5cGVzLCAnUGxlYXNlIHNlbGVjdCByZW5kZXIgdHlwZTonKTtcbiAgY29uc3QgcmVuZGVyVHlwZSA9IHJlbmRlclR5cGVzW3Bvc2l0aW9uTnVtXTtcbiAgY29uc3QgcmVuZGVyID0gcmVuZGVyRnVuY3Rpb25zW3JlbmRlclR5cGVdO1xuXG4gIGxldCBjb250ZW50ID0gJyc7XG4gIGZzLmNyZWF0ZVJlYWRTdHJlYW0ocHJvY2Vzc2VkRGF0YVBhdGgpXG4gICAgLm9uKCdkYXRhJywgKGNodW5rKSA9PiB7XG4gICAgICBjb250ZW50ICs9IGNodW5rO1xuICAgIH0pXG4gICAgLm9uKCdlbmQnLCAoKSA9PiB7XG4gICAgICByZW5kZXJBbmRXcml0ZShjb250ZW50LCByZW5kZXIsIHJlc0ZvbGRlcik7XG4gICAgfSk7XG59O1xuIl19
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9yZW5kZXJlcnMvaW5kZXguanMiXSwibmFtZXMiOlsicmVuZGVyQW5kV3JpdGUiLCJjb250ZW50IiwicmVuZGVyRm4iLCJyZW5kZXJlZERhdGFQYXRoIiwiZGF0YSIsIkpTT04iLCJwYXJzZSIsInJlbmRlcmVkRGF0YUNvbGwiLCJyZW5kZXJlZFRvRGVzdGluYXRpb24iLCJmcyIsImNyZWF0ZVdyaXRlU3RyZWFtIiwibWFrZVJlYWRhYmxlUmVuZGVyZWREYXRhIiwiQ3VzdG9tUmVhZGVyIiwib2JqZWN0TW9kZSIsImhpZ2hXYXRlck1hcmsiLCJjb3VudCIsIm1ha2VGaW5hbFN0ciIsIlRyYW5zZm9ybSIsIndyaXRhYmxlT2JqZWN0TW9kZSIsInRyYW5zZm9ybSIsImVuYyIsImNiIiwiY2giLCJyZXNTdHIiLCJsZW5ndGgiLCJwdXNoIiwicGlwZSIsIm9uIiwiY29uc29sZSIsImxvZyIsInByb2Nlc3NlZERhdGFQYXRoIiwicmVuZGVyVHlwZXMiLCJyZXNGb2xkZXIiLCJyZW5kZXJGdW5jdGlvbnMiLCJ0b3RhbCIsImRldGFpbGVkIiwicGFyYW1zIiwicmVuZGVyVHlwZSIsInJlbmRlciIsImNyZWF0ZVJlYWRTdHJlYW0iLCJjaHVuayJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOzs7Ozs7Ozs7Ozs7Ozs7O0FBRUEsSUFBTUEsY0FBYyxHQUFHLFNBQWpCQSxjQUFpQixDQUFDQyxPQUFELEVBQVVDLFFBQVYsRUFBb0JDLGdCQUFwQixFQUF5QztBQUM5RCxNQUFNQyxJQUFJLEdBQUdDLElBQUksQ0FBQ0MsS0FBTCxDQUFXTCxPQUFYLENBQWI7QUFDQSxNQUFNTSxnQkFBZ0IsR0FBR0wsUUFBUSxDQUFDRSxJQUFELENBQWpDOztBQUNBLE1BQU1JLHFCQUFxQixHQUFHQyxlQUFHQyxpQkFBSCxDQUFxQlAsZ0JBQXJCLENBQTlCOztBQUVBLE1BQU1RLHdCQUF3QixHQUFHLElBQUlDLHdCQUFKLENBQWlCTCxnQkFBakIsRUFBbUM7QUFDbEVNLElBQUFBLFVBQVUsRUFBRSxJQURzRDtBQUVsRUMsSUFBQUEsYUFBYSxFQUFFO0FBRm1ELEdBQW5DLENBQWpDO0FBS0EsTUFBSUMsS0FBSyxHQUFHLENBQVo7QUFDQSxNQUFNQyxZQUFZLEdBQUcsSUFBSUMsaUJBQUosQ0FBYztBQUNqQ0MsSUFBQUEsa0JBQWtCLEVBQUUsSUFEYTtBQUVqQ0MsSUFBQUEsU0FGaUMsMkJBRWpCQyxHQUZpQixFQUVaQyxFQUZZLEVBRVI7QUFBQTtBQUFBLFVBQWRDLEVBQWM7O0FBQ3ZCUCxNQUFBQSxLQUFLLElBQUksQ0FBVDtBQUNBLFVBQU1RLE1BQU0sR0FBR1IsS0FBSyxHQUFHUixnQkFBZ0IsQ0FBQ2lCLE1BQXpCLGFBQXFDRixFQUFyQyxVQUE4Q0EsRUFBN0Q7QUFDQSxXQUFLRyxJQUFMLENBQVVGLE1BQVY7QUFDQUYsTUFBQUEsRUFBRTtBQUNIO0FBUGdDLEdBQWQsQ0FBckI7QUFVQVYsRUFBQUEsd0JBQXdCLENBQ3JCZSxJQURILENBQ1FWLFlBRFIsRUFFR1UsSUFGSCxDQUVRbEIscUJBRlIsRUFHR21CLEVBSEgsQ0FHTSxRQUhOLEVBR2dCLFlBQU07QUFDbEJDLElBQUFBLE9BQU8sQ0FBQ0MsR0FBUixzQ0FBMEMxQixnQkFBMUM7QUFDQXlCLElBQUFBLE9BQU8sQ0FBQ0MsR0FBUixDQUFZLDRDQUFaO0FBQ0QsR0FOSDtBQU9ELENBNUJEOztlQThCZSxrQkFBQ0MsaUJBQUQsRUFBb0JDLFdBQXBCLEVBQWlDQyxTQUFqQyxFQUErQztBQUM1RCxNQUFNQyxlQUFlLEdBQUc7QUFDdEJDLElBQUFBLEtBQUssRUFBTEEsdUJBRHNCO0FBRXRCQyxJQUFBQSxRQUFRLEVBQVJBO0FBRnNCLEdBQXhCO0FBSUEsTUFBTUMsTUFBTSxHQUFHLDhCQUFnQkwsV0FBaEIsRUFBNkJDLFNBQTdCLENBQWY7O0FBQ0EsTUFBSSxDQUFDSSxNQUFMLEVBQWE7QUFDWDtBQUNEOztBQVIyRCwrQkFTckJBLE1BVHFCO0FBQUEsTUFTckRqQyxnQkFUcUQ7QUFBQSxNQVNuQ2tDLFVBVG1DOztBQVU1RCxNQUFNQyxNQUFNLEdBQUdMLGVBQWUsQ0FBQ0ksVUFBRCxDQUE5QjtBQUVBLE1BQUlwQyxPQUFPLEdBQUcsRUFBZDs7QUFDQVEsaUJBQUc4QixnQkFBSCxDQUFvQlQsaUJBQXBCLEVBQ0dILEVBREgsQ0FDTSxNQUROLEVBQ2MsVUFBQ2EsS0FBRCxFQUFXO0FBQ3JCdkMsSUFBQUEsT0FBTyxJQUFJdUMsS0FBWDtBQUNELEdBSEgsRUFJR2IsRUFKSCxDQUlNLEtBSk4sRUFJYSxZQUFNO0FBQ2YzQixJQUFBQSxjQUFjLENBQUNDLE9BQUQsRUFBVXFDLE1BQVYsRUFBa0JuQyxnQkFBbEIsQ0FBZDtBQUNELEdBTkg7QUFPRCxDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGZzIGZyb20gJ2ZzJztcbmltcG9ydCB7IFRyYW5zZm9ybSB9IGZyb20gJ3N0cmVhbSc7XG5pbXBvcnQgQ3VzdG9tUmVhZGVyIGZyb20gJy4uL1N0cmVhbVJlYWRlcic7XG5pbXBvcnQgdG90YWwgZnJvbSAnLi90b3RhbFZhbHVlcyc7XG5pbXBvcnQgZGV0YWlsZWQgZnJvbSAnLi9kZXRhaWxlZFZhbHVlcyc7XG5pbXBvcnQgeyBnZXRSZW5kZXJQYXJhbXMgfSBmcm9tICcuLi9hc2tVc2VyJztcblxuY29uc3QgcmVuZGVyQW5kV3JpdGUgPSAoY29udGVudCwgcmVuZGVyRm4sIHJlbmRlcmVkRGF0YVBhdGgpID0+IHtcbiAgY29uc3QgZGF0YSA9IEpTT04ucGFyc2UoY29udGVudCk7XG4gIGNvbnN0IHJlbmRlcmVkRGF0YUNvbGwgPSByZW5kZXJGbihkYXRhKTtcbiAgY29uc3QgcmVuZGVyZWRUb0Rlc3RpbmF0aW9uID0gZnMuY3JlYXRlV3JpdGVTdHJlYW0ocmVuZGVyZWREYXRhUGF0aCk7XG5cbiAgY29uc3QgbWFrZVJlYWRhYmxlUmVuZGVyZWREYXRhID0gbmV3IEN1c3RvbVJlYWRlcihyZW5kZXJlZERhdGFDb2xsLCB7XG4gICAgb2JqZWN0TW9kZTogdHJ1ZSxcbiAgICBoaWdoV2F0ZXJNYXJrOiAxLFxuICB9KTtcblxuICBsZXQgY291bnQgPSAwO1xuICBjb25zdCBtYWtlRmluYWxTdHIgPSBuZXcgVHJhbnNmb3JtKHtcbiAgICB3cml0YWJsZU9iamVjdE1vZGU6IHRydWUsXG4gICAgdHJhbnNmb3JtKFtjaF0sIGVuYywgY2IpIHtcbiAgICAgIGNvdW50ICs9IDE7XG4gICAgICBjb25zdCByZXNTdHIgPSBjb3VudCA8IHJlbmRlcmVkRGF0YUNvbGwubGVuZ3RoID8gYCR7Y2h9XFxuYCA6IGNoO1xuICAgICAgdGhpcy5wdXNoKHJlc1N0cik7XG4gICAgICBjYigpO1xuICAgIH0sXG4gIH0pO1xuXG4gIG1ha2VSZWFkYWJsZVJlbmRlcmVkRGF0YVxuICAgIC5waXBlKG1ha2VGaW5hbFN0cilcbiAgICAucGlwZShyZW5kZXJlZFRvRGVzdGluYXRpb24pXG4gICAgLm9uKCdmaW5pc2gnLCAoKSA9PiB7XG4gICAgICBjb25zb2xlLmxvZyhgUmVuZGVyZWQgZGF0YSBhcmUgc2F2ZWQgaW4gJHtyZW5kZXJlZERhdGFQYXRofVxcbmApO1xuICAgICAgY29uc29sZS5sb2coJ1xcbi0tLS0tLS0gQWxsIGRhdGEgYXJlIHByb2Nlc3NlZCAtLS0tLS0tXFxuJyk7XG4gICAgfSk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCAocHJvY2Vzc2VkRGF0YVBhdGgsIHJlbmRlclR5cGVzLCByZXNGb2xkZXIpID0+IHtcbiAgY29uc3QgcmVuZGVyRnVuY3Rpb25zID0ge1xuICAgIHRvdGFsLFxuICAgIGRldGFpbGVkLFxuICB9O1xuICBjb25zdCBwYXJhbXMgPSBnZXRSZW5kZXJQYXJhbXMocmVuZGVyVHlwZXMsIHJlc0ZvbGRlcik7XG4gIGlmICghcGFyYW1zKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIGNvbnN0IFtyZW5kZXJlZERhdGFQYXRoLCByZW5kZXJUeXBlXSA9IHBhcmFtcztcbiAgY29uc3QgcmVuZGVyID0gcmVuZGVyRnVuY3Rpb25zW3JlbmRlclR5cGVdO1xuXG4gIGxldCBjb250ZW50ID0gJyc7XG4gIGZzLmNyZWF0ZVJlYWRTdHJlYW0ocHJvY2Vzc2VkRGF0YVBhdGgpXG4gICAgLm9uKCdkYXRhJywgKGNodW5rKSA9PiB7XG4gICAgICBjb250ZW50ICs9IGNodW5rO1xuICAgIH0pXG4gICAgLm9uKCdlbmQnLCAoKSA9PiB7XG4gICAgICByZW5kZXJBbmRXcml0ZShjb250ZW50LCByZW5kZXIsIHJlbmRlcmVkRGF0YVBhdGgpO1xuICAgIH0pO1xufTtcbiJdfQ==
{
"name": "proxima_datareader",
"version": "1.0.4",
"version": "1.1.0",
"description": "data reader & selector 4 incoming data files having 1 of following extensions: \n'.mdr', '.mwr', '.mmr', '.mdi', '.mwi', '.mmi'",

@@ -41,3 +41,4 @@ "scripts": {

"regenerator-runtime": "^0.13.7",
"save": "^2.4.0"
"save": "^2.4.0",
"validator": "^13.1.17"
},

@@ -44,0 +45,0 @@ "repository": {

@@ -6,3 +6,7 @@ export default {

'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'latin1', 'binary'],
searchTypes: ['drugCode', 'drugName'],
searchTypes: {
drugCode: 'number',
drugName: 'string',
},
renderTypes: ['total', 'detailed'],
};

@@ -5,4 +5,10 @@ import fs from 'fs';

import _ from 'lodash';
import readlineSync from 'readline-sync';
import {
getSearchParams,
getKeysData,
getFilesSource,
getProcessedDataPath,
selectProcessOrRender,
} from './askUser';
import {
makePaths,

@@ -14,3 +20,2 @@ makeDataStream,

import makeRender from './renderers';
import { writeDownPaths } from './writers';

@@ -24,33 +29,30 @@ import defaultValues from './defaults';

searchTypes,
renderTypes,
} = defaultValues;
export default async (emptyAndZerosOnly = false) => {
const filesSource = readlineSync.questionPath('Please type files source:', {
exists: true,
isDirectory: true,
defaultInput: defaultSourcePath,
});
console.log(`${filesSource}\n`);
const paths = makePaths(filesSource);
const [emptySources, notEmptySources] = _.partition(paths, pathToFile => _.isArray(pathToFile));
// const encodingPos = readlineSync.keyInSelect(encodings, 'Please select files encoding');
const [encoding] = encodings;
const keysPath = readlineSync.questionPath('\nPlease type search keys source:', {
exists: true,
isFile: true,
defaultInput: defaultKeysSource,
});
console.log(`${keysPath}\n`);
const searchTypePos = readlineSync.keyInSelect(searchTypes, 'Please select type of data search:');
if (searchTypePos === -1) {
console.log('See you next time )\n');
const searchParams = getSearchParams(searchTypes);
if (!searchParams) {
return;
}
const keysFolder = path.dirname(keysPath);
const [searchTypeName, keysDataType] = searchParams;
const [keys, keysFolder] = getKeysData(searchTypeName, keysDataType, defaultKeysSource);
const newPath = path.join(keysFolder, 'processedData');
const resFolder = fs.existsSync(newPath) ? newPath : fs.mkdirSync(newPath, { recursive: true });
const resFolderFilesList = fs.readdirSync(resFolder);
const jsonFilesList = resFolderFilesList
.filter(fileName => fileName && path.extname(fileName) === '.json');
if (jsonFilesList.length > 0) {
const dataToRenderPath = selectProcessOrRender(jsonFilesList);
if (dataToRenderPath) {
const selectedDataPath = path.join(resFolder, dataToRenderPath);
makeRender(selectedDataPath, renderTypes, resFolder);
return;
}
}
const filesSource = getFilesSource(defaultSourcePath);
const paths = makePaths(filesSource);
const [emptySources, notEmptySources] = _.partition(paths, pathToFile => _.isArray(pathToFile));
if (emptySources.length > 0) {

@@ -62,18 +64,14 @@ await writeDownPaths(emptySources, resFolder, 'empty');

}
const keysContent = fs.readFileSync(keysPath, 'utf-8');
const keys = keysContent.trim().split('\r\n').map(key => key.trim());
// const encodingPos = readlineSync.keyInSelect(encodings, 'Please select files encoding');
const [encoding] = encodings;
const processedDataPath = getProcessedDataPath(resFolder);
const processedDataName = readlineSync
.question('Enter a name for processed data file (default name is "processed"):', { defaultInput: 'processedData' });
const processedDataPath = path.join(resFolder, `${processedDataName}.json`);
console.log('\nData-processing is ongoing...\n');
const searchType = searchTypes[searchTypePos];
const dataStream = makeDataStream(notEmptySources, searchType, keys, encoding);
const dataStream = makeDataStream(notEmptySources, searchTypeName, keys, encoding);
makeDataSelection(dataStream)
.then(totalInfo => writeToJson(totalInfo, processedDataPath))
.then(() => {
makeRender(processedDataPath, resFolder);
makeRender(processedDataPath, renderTypes, resFolder);
});
};

@@ -29,3 +29,2 @@ import fs from 'fs';

const getMatched = (strToSearch, searchType, content) => content.split('\n').filter((line) => {

@@ -32,0 +31,0 @@ const [

@@ -1,4 +0,2 @@

import path from 'path';
import fs from 'fs';
import readlineSync from 'readline-sync';
import { Transform } from 'stream';

@@ -8,11 +6,7 @@ import CustomReader from '../StreamReader';

import detailed from './detailedValues';
import { getRenderParams } from '../askUser';
const renderAndWrite = (content, renderFn, parentFolder) => {
const renderAndWrite = (content, renderFn, renderedDataPath) => {
const data = JSON.parse(content);
const renderedDataColl = renderFn(data);
const renderedDataName = readlineSync
.question('\nEnter a name for rendered data file (default name is "rendered"):', {
defaultInput: 'renderedData',
});
const renderedDataPath = path.join(parentFolder, `${renderedDataName}.txt`);
const renderedToDestination = fs.createWriteStream(renderedDataPath);

@@ -45,3 +39,3 @@

export default (processedDataPath, resFolder) => {
export default (processedDataPath, renderTypes, resFolder) => {
const renderFunctions = {

@@ -51,5 +45,7 @@ total,

};
const renderTypes = ['total', 'detailed'];
const positionNum = readlineSync.keyInSelect(renderTypes, 'Please select render type:');
const renderType = renderTypes[positionNum];
const params = getRenderParams(renderTypes, resFolder);
if (!params) {
return;
}
const [renderedDataPath, renderType] = params;
const render = renderFunctions[renderType];

@@ -63,4 +59,4 @@

.on('end', () => {
renderAndWrite(content, render, resFolder);
renderAndWrite(content, render, renderedDataPath);
});
};
SocketSocket SOC 2 Logo

Product

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

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc