propagate-cli 1.12.3 → 1.12.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/constants.js CHANGED
@@ -21,6 +21,9 @@ _export(exports, {
21
21
  get EMPTY_STRING () {
22
22
  return EMPTY_STRING;
23
23
  },
24
+ get FULL_STOP () {
25
+ return FULL_STOP;
26
+ },
24
27
  get PACKAGE_JSON () {
25
28
  return PACKAGE_JSON;
26
29
  },
@@ -44,6 +47,7 @@ _export(exports, {
44
47
  }
45
48
  });
46
49
  var YES = "yes";
50
+ var FULL_STOP = ".";
47
51
  var PROPAGATE = "propagate";
48
52
  var DOUBLE_DOTS = "..";
49
53
  var EMPTY_STRING = "";
@@ -55,4 +59,4 @@ var PROMPT_ATTEMPTS = Infinity;
55
59
  var DEV_DEPENDENCIES = "devDependencies";
56
60
  var REPEATED_ATTEMPTS = 10;
57
61
 
58
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9jb25zdGFudHMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmV4cG9ydCBjb25zdCBZRVMgPSBcInllc1wiO1xuZXhwb3J0IGNvbnN0IFBST1BBR0FURSA9IFwicHJvcGFnYXRlXCI7XG5leHBvcnQgY29uc3QgRE9VQkxFX0RPVFMgPSBcIi4uXCI7XG5leHBvcnQgY29uc3QgRU1QVFlfU1RSSU5HID0gXCJcIjtcbmV4cG9ydCBjb25zdCBQQUNLQUdFX0pTT04gPSBcInBhY2thZ2UuanNvblwiO1xuZXhwb3J0IGNvbnN0IERFUEVOREVOQ0lFUyA9IFwiZGVwZW5kZW5jaWVzXCI7XG5leHBvcnQgY29uc3QgUFJPUEFHQVRFX0NMSSA9IFwiUHJvcGFnYXRlLUNMSVwiO1xuZXhwb3J0IGNvbnN0IFJFUEVBVEVEX0RFTEFZID0gMzAwMDtcbmV4cG9ydCBjb25zdCBQUk9NUFRfQVRURU1QVFMgPSBJbmZpbml0eTtcbmV4cG9ydCBjb25zdCBERVZfREVQRU5ERU5DSUVTID0gXCJkZXZEZXBlbmRlbmNpZXNcIjtcbmV4cG9ydCBjb25zdCBSRVBFQVRFRF9BVFRFTVBUUyA9IDEwO1xuIl0sIm5hbWVzIjpbIkRFUEVOREVOQ0lFUyIsIkRFVl9ERVBFTkRFTkNJRVMiLCJET1VCTEVfRE9UUyIsIkVNUFRZX1NUUklORyIsIlBBQ0tBR0VfSlNPTiIsIlBST01QVF9BVFRFTVBUUyIsIlBST1BBR0FURSIsIlBST1BBR0FURV9DTEkiLCJSRVBFQVRFRF9BVFRFTVBUUyIsIlJFUEVBVEVEX0RFTEFZIiwiWUVTIiwiSW5maW5pdHkiXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7OztRQU9hQTtlQUFBQTs7UUFJQUM7ZUFBQUE7O1FBUEFDO2VBQUFBOztRQUNBQztlQUFBQTs7UUFDQUM7ZUFBQUE7O1FBSUFDO2VBQUFBOztRQVBBQztlQUFBQTs7UUFLQUM7ZUFBQUE7O1FBSUFDO2VBQUFBOztRQUhBQztlQUFBQTs7UUFQQUM7ZUFBQUE7OztBQUFOLElBQU1BLE1BQU07QUFDWixJQUFNSixZQUFZO0FBQ2xCLElBQU1KLGNBQWM7QUFDcEIsSUFBTUMsZUFBZTtBQUNyQixJQUFNQyxlQUFlO0FBQ3JCLElBQU1KLGVBQWU7QUFDckIsSUFBTU8sZ0JBQWdCO0FBQ3RCLElBQU1FLGlCQUFpQjtBQUN2QixJQUFNSixrQkFBa0JNO0FBQ3hCLElBQU1WLG1CQUFtQjtBQUN6QixJQUFNTyxvQkFBb0IifQ==
62
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9jb25zdGFudHMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmV4cG9ydCBjb25zdCBZRVMgPSBcInllc1wiO1xuZXhwb3J0IGNvbnN0IEZVTExfU1RPUCA9IFwiLlwiO1xuZXhwb3J0IGNvbnN0IFBST1BBR0FURSA9IFwicHJvcGFnYXRlXCI7XG5leHBvcnQgY29uc3QgRE9VQkxFX0RPVFMgPSBcIi4uXCI7XG5leHBvcnQgY29uc3QgRU1QVFlfU1RSSU5HID0gXCJcIjtcbmV4cG9ydCBjb25zdCBQQUNLQUdFX0pTT04gPSBcInBhY2thZ2UuanNvblwiO1xuZXhwb3J0IGNvbnN0IERFUEVOREVOQ0lFUyA9IFwiZGVwZW5kZW5jaWVzXCI7XG5leHBvcnQgY29uc3QgUFJPUEFHQVRFX0NMSSA9IFwiUHJvcGFnYXRlLUNMSVwiO1xuZXhwb3J0IGNvbnN0IFJFUEVBVEVEX0RFTEFZID0gMzAwMDtcbmV4cG9ydCBjb25zdCBQUk9NUFRfQVRURU1QVFMgPSBJbmZpbml0eTtcbmV4cG9ydCBjb25zdCBERVZfREVQRU5ERU5DSUVTID0gXCJkZXZEZXBlbmRlbmNpZXNcIjtcbmV4cG9ydCBjb25zdCBSRVBFQVRFRF9BVFRFTVBUUyA9IDEwO1xuIl0sIm5hbWVzIjpbIkRFUEVOREVOQ0lFUyIsIkRFVl9ERVBFTkRFTkNJRVMiLCJET1VCTEVfRE9UUyIsIkVNUFRZX1NUUklORyIsIkZVTExfU1RPUCIsIlBBQ0tBR0VfSlNPTiIsIlBST01QVF9BVFRFTVBUUyIsIlBST1BBR0FURSIsIlBST1BBR0FURV9DTEkiLCJSRVBFQVRFRF9BVFRFTVBUUyIsIlJFUEVBVEVEX0RFTEFZIiwiWUVTIiwiSW5maW5pdHkiXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7OztRQVFhQTtlQUFBQTs7UUFJQUM7ZUFBQUE7O1FBUEFDO2VBQUFBOztRQUNBQztlQUFBQTs7UUFIQUM7ZUFBQUE7O1FBSUFDO2VBQUFBOztRQUlBQztlQUFBQTs7UUFQQUM7ZUFBQUE7O1FBS0FDO2VBQUFBOztRQUlBQztlQUFBQTs7UUFIQUM7ZUFBQUE7O1FBUkFDO2VBQUFBOzs7QUFBTixJQUFNQSxNQUFNO0FBQ1osSUFBTVAsWUFBWTtBQUNsQixJQUFNRyxZQUFZO0FBQ2xCLElBQU1MLGNBQWM7QUFDcEIsSUFBTUMsZUFBZTtBQUNyQixJQUFNRSxlQUFlO0FBQ3JCLElBQU1MLGVBQWU7QUFDckIsSUFBTVEsZ0JBQWdCO0FBQ3RCLElBQU1FLGlCQUFpQjtBQUN2QixJQUFNSixrQkFBa0JNO0FBQ3hCLElBQU1YLG1CQUFtQjtBQUN6QixJQUFNUSxvQkFBb0IifQ==
package/lib/release.js CHANGED
@@ -11,6 +11,7 @@ Object.defineProperty(exports, "default", {
11
11
  var _necessary = require("necessary");
12
12
  var _version = /*#__PURE__*/ _interop_require_default(require("./version"));
13
13
  var _packageJSON = require("./utilities/packageJSON");
14
+ var _terminal = require("./utilities/terminal");
14
15
  var _shell = require("./utilities/shell");
15
16
  var _configuration = require("./configuration");
16
17
  function _class_call_check(instance, Constructor) {
@@ -125,11 +126,14 @@ var Release = /*#__PURE__*/ function() {
125
126
  return;
126
127
  }
127
128
  specifiersLength === 1 ? console.log("Polling for the dependency:") : console.log("Polling for the dependenies:");
128
- var operations = specifiers.map(function(specifier) {
129
- return function(next, done, context, index) {
129
+ (0, _terminal.hideCursor)();
130
+ specifiers.forEach(function(specifier) {
131
+ console.log(" - ".concat(specifier));
132
+ });
133
+ var length = specifiersLength, operations = specifiers.map(function(specifier, index) {
134
+ return function(next, done, context) {
130
135
  var shellCommands = shellCommandsFromSpecifier(specifier);
131
- console.log(" - ".concat(specifier, " "));
132
- (0, _shell.executeRepeatedly)(shellCommands, quietly, function(success) {
136
+ (0, _shell.executeRepeatedly)(shellCommands, specifier, index, length, quietly, function(success) {
133
137
  if (success) {
134
138
  var polledSpecifier = specifier; ///
135
139
  prune(specifiers, function(specifier) {
@@ -144,6 +148,7 @@ var Release = /*#__PURE__*/ function() {
144
148
  });
145
149
  eventually(operations, function() {
146
150
  var specifiersLength = specifiers.length, success = specifiersLength === 0;
151
+ (0, _terminal.showCursor)();
147
152
  callback(success);
148
153
  });
149
154
  }
@@ -268,4 +273,4 @@ function shellCommandsFromSpecifier(specifier) {
268
273
  return shellCommands;
269
274
  }
270
275
 
271
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9yZWxlYXNlLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBhcnJheVV0aWxpdGllcywgdGVtcGxhdGVVdGlsaXRpZXMsIGFzeW5jaHJvbm91c1V0aWxpdGllcyB9IGZyb20gXCJuZWNlc3NhcnlcIlxuXG5pbXBvcnQgVmVyc2lvbiBmcm9tIFwiLi92ZXJzaW9uXCI7XG5cbmltcG9ydCB7IHJlYWRQYWNrYWdlSlNPTkZpbGUgfSBmcm9tIFwiLi91dGlsaXRpZXMvcGFja2FnZUpTT05cIjtcbmltcG9ydCB7IGV4ZWN1dGVQcm9tcHRseSwgZXhlY3V0ZVJlcGVhdGVkbHkgfSBmcm9tIFwiLi91dGlsaXRpZXMvc2hlbGxcIjtcbmltcG9ydCB7IHJldHJpZXZlU2hlbGxDb21tYW5kcywgcmV0cmlldmVJZ25vcmVkQnVpbGRzLCByZXRyaWV2ZUlnbm9yZWRQdWJsaXNoZXMgfSBmcm9tIFwiLi9jb25maWd1cmF0aW9uXCI7XG5cbmNvbnN0IHsgcHJ1bmUgfSA9IGFycmF5VXRpbGl0aWVzLFxuICAgICAgeyBldmVudHVhbGx5IH0gPSBhc3luY2hyb25vdXNVdGlsaXRpZXMsXG4gICAgICB7IHBhcnNlQ29udGVudCB9ID0gdGVtcGxhdGVVdGlsaXRpZXM7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFJlbGVhc2Uge1xuICBjb25zdHJ1Y3RvcihuYW1lLCB2ZXJzaW9uLCBkZXBlbmRlbmN5TWFwLCBkZXZEZXBlbmRlbmN5TWFwLCBzdWJEaXJlY3RvcnlQYXRoKSB7XG4gICAgdGhpcy5uYW1lID0gbmFtZTtcbiAgICB0aGlzLnZlcnNpb24gPSB2ZXJzaW9uO1xuICAgIHRoaXMuZGVwZW5kZW5jeU1hcCA9IGRlcGVuZGVuY3lNYXA7XG4gICAgdGhpcy5kZXZEZXBlbmRlbmN5TWFwID0gZGV2RGVwZW5kZW5jeU1hcDtcbiAgICB0aGlzLnN1YkRpcmVjdG9yeVBhdGggPSBzdWJEaXJlY3RvcnlQYXRoO1xuICB9XG5cbiAgZ2V0TmFtZSgpIHtcbiAgICByZXR1cm4gdGhpcy5uYW1lO1xuICB9XG5cbiAgZ2V0VmVyc2lvbigpIHtcbiAgICByZXR1cm4gdGhpcy52ZXJzaW9uO1xuICB9XG5cbiAgZ2V0RGVwZW5kZW5jeU1hcCgpIHtcbiAgICByZXR1cm4gdGhpcy5kZXBlbmRlbmN5TWFwO1xuICB9XG5cbiAgZ2V0RGV2RGVwZW5kZW5jeU1hcCgpIHtcbiAgICByZXR1cm4gdGhpcy5kZXZEZXBlbmRlbmN5TWFwO1xuICB9XG5cbiAgZ2V0U3ViRGlyZWN0b3J5UGF0aCgpIHtcbiAgICByZXR1cm4gdGhpcy5zdWJEaXJlY3RvcnlQYXRoO1xuICB9XG5cbiAgaXNQdWJsaXNoYWJsZSgpIHtcbiAgICBjb25zdCBwdWJsaXNoYWJsZSA9ICh0aGlzLm5hbWUgIT09IG51bGwpICYmICh0aGlzLnZlcnNpb24gIT09IG51bGwpO1xuXG4gICAgcmV0dXJuIHB1Ymxpc2hhYmxlO1xuICB9XG5cbiAgZ2V0VmVyc2lvblN0cmluZygpIHtcbiAgICBjb25zdCB2ZXJzaW9uU3RyaW5nID0gdGhpcy52ZXJzaW9uLmFzU3RyaW5nKCk7XG5cbiAgICByZXR1cm4gdmVyc2lvblN0cmluZzsgLy8vXG4gIH1cblxuICBnZXREZXBlbmRlbmN5TmFtZXMoKSB7XG4gICAgY29uc3QgZGVwZW5kZW5jeU5hbWVzID0gT2JqZWN0LmtleXModGhpcy5kZXBlbmRlbmN5TWFwKTtcblxuICAgIHJldHVybiBkZXBlbmRlbmN5TmFtZXM7XG4gIH1cblxuICBnZXREZXZEZXBlbmRlbmN5TmFtZXMoKSB7XG4gICAgY29uc3QgZGV2RGVwZW5kZW5jeU5hbWVzID0gT2JqZWN0LmtleXModGhpcy5kZXZEZXBlbmRlbmN5TWFwKTtcblxuICAgIHJldHVybiBkZXZEZXBlbmRlbmN5TmFtZXM7XG4gIH1cblxuICBnaXQocXVpZXRseSwgY2FsbGJhY2spIHtcbiAgICBsZXQgc2hlbGxDb21tYW5kcyA9IHJldHJpZXZlU2hlbGxDb21tYW5kcygpO1xuXG4gICAgY29uc3QgeyBnaXQgfSA9IHNoZWxsQ29tbWFuZHMsXG4gICAgICBnaXRTaGVsbENvbW1hbmRzID0gZ2l0O1xuXG4gICAgc2hlbGxDb21tYW5kcyA9IGdpdFNoZWxsQ29tbWFuZHM7IC8vL1xuXG4gICAgdGhpcy5leGVjdXRlU2hlbGxDb21tYW5kcyhzaGVsbENvbW1hbmRzLCBxdWlldGx5LCBjYWxsYmFjayk7XG4gIH1cblxuICBwb2xsKHNwZWNpZmllcnMsIHF1aWV0bHksIGNhbGxiYWNrKSB7XG4gICAgY29uc3Qgc3BlY2lmaWVyc0xlbmd0aCA9IHNwZWNpZmllcnMubGVuZ3RoO1xuXG4gICAgaWYgKHNwZWNpZmllcnNMZW5ndGggPT09IDApIHtcbiAgICAgIGNvbnN0IHN1Y2Nlc3MgPSB0cnVlO1xuXG4gICAgICBjYWxsYmFjayhzdWNjZXNzKTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIChzcGVjaWZpZXJzTGVuZ3RoID09PSAxKSA/XG4gICAgICBjb25zb2xlLmxvZyhgUG9sbGluZyBmb3IgdGhlIGRlcGVuZGVuY3k6YCkgOlxuICAgICAgICBjb25zb2xlLmxvZyhgUG9sbGluZyBmb3IgdGhlIGRlcGVuZGVuaWVzOmApO1xuXG4gICAgY29uc3Qgb3BlcmF0aW9ucyA9IHNwZWNpZmllcnMubWFwKChzcGVjaWZpZXIpID0+IHtcbiAgICAgIHJldHVybiAobmV4dCwgZG9uZSwgY29udGV4dCwgaW5kZXgpID0+IHtcbiAgICAgICAgY29uc3Qgc2hlbGxDb21tYW5kcyA9IHNoZWxsQ29tbWFuZHNGcm9tU3BlY2lmaWVyKHNwZWNpZmllcik7XG5cbiAgICAgICAgY29uc29sZS5sb2coYCAtICR7c3BlY2lmaWVyfSBgKTtcblxuICAgICAgICBleGVjdXRlUmVwZWF0ZWRseShzaGVsbENvbW1hbmRzLCBxdWlldGx5LCAoc3VjY2VzcykgPT4ge1xuICAgICAgICAgIGlmIChzdWNjZXNzKSB7XG4gICAgICAgICAgICBjb25zdCBwb2xsZWRTcGVjaWZpZXIgPSBzcGVjaWZpZXI7IC8vL1xuXG4gICAgICAgICAgICBwcnVuZShzcGVjaWZpZXJzLCAoc3BlY2lmaWVyKSA9PiB7XG4gICAgICAgICAgICAgIGlmIChzcGVjaWZpZXIgIT09IHBvbGxlZFNwZWNpZmllcikge1xuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBuZXh0KCk7XG4gICAgICAgIH0pO1xuICAgICAgfTtcbiAgICB9KTtcblxuICAgIGV2ZW50dWFsbHkob3BlcmF0aW9ucywgKCkgPT4ge1xuICAgICAgY29uc3Qgc3BlY2lmaWVyc0xlbmd0aCA9IHNwZWNpZmllcnMubGVuZ3RoLFxuICAgICAgICAgICAgc3VjY2VzcyA9IChzcGVjaWZpZXJzTGVuZ3RoID09PSAwKTtcblxuICAgICAgY2FsbGJhY2soc3VjY2Vzcyk7XG4gICAgfSk7XG4gIH1cblxuICBpbnN0YWxsKHF1aWV0bHksIGNhbGxiYWNrKSB7XG4gICAgbGV0IHNoZWxsQ29tbWFuZHMgPSByZXRyaWV2ZVNoZWxsQ29tbWFuZHMoKTtcblxuICAgIGNvbnN0IHsgaW5zdGFsbCB9ID0gc2hlbGxDb21tYW5kcyxcbiAgICAgICAgICBpbnN0YWxsU2hlbGxDb21tYW5kcyA9IGluc3RhbGw7XG5cbiAgICBzaGVsbENvbW1hbmRzID0gaW5zdGFsbFNoZWxsQ29tbWFuZHM7IC8vL1xuXG4gICAgdGhpcy5leGVjdXRlU2hlbGxDb21tYW5kcyhzaGVsbENvbW1hbmRzLCBxdWlldGx5LCBjYWxsYmFjayk7XG4gIH1cblxuICBidWlsZChxdWlldGx5LCBjYWxsYmFjaykge1xuICAgIGNvbnN0IGlnbm9yZWRCdWlsZHMgPSByZXRyaWV2ZUlnbm9yZWRCdWlsZHMoKSxcbiAgICAgICAgICBzdWJEaXJlY3RvcnlQYXRocyA9IGlnbm9yZWRCdWlsZHMsICAvLy9cbiAgICAgICAgICBzdWJEaXJlY3RvcnlQYXRoc0luY2x1ZGVzU3ViRGlyZWN0b3J5UGF0aCA9IHN1YkRpcmVjdG9yeVBhdGhzLmluY2x1ZGVzKHRoaXMuc3ViRGlyZWN0b3J5UGF0aCksXG4gICAgICAgICAgYnVpbGRJZ25vcmVkID0gc3ViRGlyZWN0b3J5UGF0aHNJbmNsdWRlc1N1YkRpcmVjdG9yeVBhdGg7IC8vL1xuXG4gICAgaWYgKGJ1aWxkSWdub3JlZCkge1xuICAgICAgY29uc29sZS5sb2coYElnbm9yaW5nIHRoZSAnJHt0aGlzLnN1YkRpcmVjdG9yeVBhdGh9JyBidWlsZC5gKTtcblxuICAgICAgY29uc3Qgc3VjY2VzcyA9IHRydWU7XG5cbiAgICAgIGNhbGxiYWNrKHN1Y2Nlc3MpO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgbGV0IHNoZWxsQ29tbWFuZHMgPSByZXRyaWV2ZVNoZWxsQ29tbWFuZHMoKTtcblxuICAgIGNvbnN0IHsgYnVpbGQgfSA9IHNoZWxsQ29tbWFuZHMsXG4gICAgICAgICAgYnVpbGRTaGVsbENvbW1hbmRzID0gYnVpbGQ7XG5cbiAgICBzaGVsbENvbW1hbmRzID0gYnVpbGRTaGVsbENvbW1hbmRzOyAvLy9cblxuICAgIHRoaXMuZXhlY3V0ZVNoZWxsQ29tbWFuZHMoc2hlbGxDb21tYW5kcywgcXVpZXRseSwgY2FsbGJhY2spO1xuICB9XG5cbiAgcHVibGlzaChxdWlldGx5LCBjYWxsYmFjaykge1xuICAgIGNvbnN0IGlnbm9yZWRQdWJsaXNoZXMgPSByZXRyaWV2ZUlnbm9yZWRQdWJsaXNoZXMoKSxcbiAgICAgICAgICBuYW1lcyA9IGlnbm9yZWRQdWJsaXNoZXMsXG4gICAgICAgICAgbmFtZXNJbmNsdWRlc05hbWUgPSBuYW1lcy5pbmNsdWRlcyh0aGlzLm5hbWUpLFxuICAgICAgICAgIHB1Ymxpc2hJZ25vcmVkID0gbmFtZXNJbmNsdWRlc05hbWU7IC8vL1xuXG4gICAgaWYgKHB1Ymxpc2hJZ25vcmVkKSB7XG4gICAgICBjb25zb2xlLmxvZyhgSWdub3JpbmcgdGhlICcke3RoaXMubmFtZX0nIHB1Ymxpc2guYCk7XG5cbiAgICAgIGNvbnN0IHN1Y2Nlc3MgPSB0cnVlO1xuXG4gICAgICBjYWxsYmFjayhzdWNjZXNzKTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGxldCBzaGVsbENvbW1hbmRzID0gcmV0cmlldmVTaGVsbENvbW1hbmRzKCk7XG5cbiAgICBjb25zdCB7IHB1Ymxpc2ggfSA9IHNoZWxsQ29tbWFuZHMsXG4gICAgICAgICAgcHVibGlzaFNoZWxsQ29tbWFuZHMgPSBwdWJsaXNoO1xuXG4gICAgc2hlbGxDb21tYW5kcyA9IHB1Ymxpc2hTaGVsbENvbW1hbmRzOyAvLy9cblxuICAgIHRoaXMuZXhlY3V0ZVNoZWxsQ29tbWFuZHMoc2hlbGxDb21tYW5kcywgcXVpZXRseSwgY2FsbGJhY2spO1xuICB9XG5cbiAgYnVtcFBhdGNoTnVtYmVyKCkgeyB0aGlzLnZlcnNpb24uYnVtcFBhdGNoTnVtYmVyKCk7IH1cblxuICBleGVjdXRlU2hlbGxDb21tYW5kcyhzaGVsbENvbW1hbmRzLCBxdWlldGx5LCBjYWxsYmFjaykge1xuICAgIGNvbnN0IGN1cnJlbnRXb3JraW5nRGlyZWN0b3J5UGF0aCA9IHByb2Nlc3MuY3dkKCk7XG5cbiAgICBwcm9jZXNzLmNoZGlyKHRoaXMuc3ViRGlyZWN0b3J5UGF0aCk7XG5cbiAgICBleGVjdXRlUHJvbXB0bHkoc2hlbGxDb21tYW5kcywgcXVpZXRseSwgKHN1Y2Nlc3MpID0+IHtcbiAgICAgIHByb2Nlc3MuY2hkaXIoY3VycmVudFdvcmtpbmdEaXJlY3RvcnlQYXRoKTtcblxuICAgICAgY2FsbGJhY2soc3VjY2Vzcyk7XG4gICAgfSk7XG4gIH1cblxuICB1cGRhdGVEZXBlbmRlbmN5VmVyc2lvbihuYW1lLCB2ZXJzaW9uU3RyaW5nKSB7XG4gICAgY29uc3Qgc3VjY2VzcyA9IHVwZGF0ZVNlbXZlcihuYW1lLCB2ZXJzaW9uU3RyaW5nLCB0aGlzLmRlcGVuZGVuY3lNYXApO1xuXG4gICAgaWYgKCFzdWNjZXNzKSB7XG4gICAgICBjb25zb2xlLmxvZyhgRWl0aGVyIHRoZSB2ZXJzaW9uIG9mIHRoZSAnJHt0aGlzLnN1YkRpcmVjdG9yeVBhdGh9JyByZWxlYXNlJ3MgJyR7bmFtZX0nIGRlcGVuZGVuY3kgaXMgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIHRoZSBwcm9wYWdhdGVkICcke3ZlcnNpb25TdHJpbmd9JyB2ZXJzaW9uIG9yIGl0IGNhbm5vdCBiZSBwYXJzZWQuYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHN1Y2Nlc3M7XG4gIH1cblxuICB1cGRhdGVEZXZEZXBlbmRlbmN5VmVyc2lvbihuYW1lLCB2ZXJzaW9uU3RyaW5nKSB7XG4gICAgY29uc3Qgc3VjY2VzcyA9IHVwZGF0ZVNlbXZlcihuYW1lLCB2ZXJzaW9uU3RyaW5nLCB0aGlzLmRldkRlcGVuZGVuY3lNYXApO1xuXG4gICAgaWYgKCFzdWNjZXNzKSB7XG4gICAgICBjb25zb2xlLmxvZyhgRWl0aGVyIHRoZSB2ZXJzaW9uIG9mIHRoZSAnJHt0aGlzLnN1YkRpcmVjdG9yeVBhdGh9JyByZWxlYXNlJ3MgJyR7bmFtZX0nIGRldmVsb3BlciBkZXBlbmRlbmN5IGlzIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byB0aGUgcHJvcGFnYXRlZCAnJHt2ZXJzaW9uU3RyaW5nfScgdmVyc2lvbiBvciBpdCBjYW5ub3QgYmUgcGFyc2VkLmApO1xuICAgIH1cblxuICAgIHJldHVybiBzdWNjZXNzO1xuICB9XG5cbiAgc3RhdGljIGZyb21TdWJEaXJlY3RvcnlQYXRoKHN1YkRpcmVjdG9yeVBhdGgpIHtcbiAgICBsZXQgcmVsZWFzZSA9IG51bGw7XG5cbiAgICBjb25zdCBwYWNrYWdlSlNPTiA9IHJlYWRQYWNrYWdlSlNPTkZpbGUoc3ViRGlyZWN0b3J5UGF0aCk7XG5cbiAgICBpZiAocGFja2FnZUpTT04gIT09IG51bGwpIHtcbiAgICAgIGxldCB7IHZlcnNpb24gPSBudWxsIH0gPSBwYWNrYWdlSlNPTjtcblxuICAgICAgY29uc3QgeyBuYW1lID0gbnVsbCwgZGVwZW5kZW5jaWVzID0ge30sIGRldkRlcGVuZGVuY2llcyA9IHt9IH0gPSBwYWNrYWdlSlNPTixcbiAgICAgICAgICAgIHZlcnNpb25TdHJpbmcgPSB2ZXJzaW9uOyAgLy8vXG5cbiAgICAgIHZlcnNpb24gPSBWZXJzaW9uLmZyb21WZXJzaW9uU3RyaW5nKHZlcnNpb25TdHJpbmcpO1xuXG4gICAgICBjb25zdCBkZXBlbmRlbmN5TWFwID0gZGVwZW5kZW5jaWVzLCAvLy9cbiAgICAgICAgICAgIGRldkRlcGVuZGVuY3lNYXAgPSBkZXZEZXBlbmRlbmNpZXM7IC8vL1xuXG4gICAgICByZWxlYXNlID0gbmV3IFJlbGVhc2UobmFtZSwgdmVyc2lvbiwgZGVwZW5kZW5jeU1hcCwgZGV2RGVwZW5kZW5jeU1hcCwgc3ViRGlyZWN0b3J5UGF0aCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlbGVhc2U7XG4gIH1cbn1cblxuZnVuY3Rpb24gdXBkYXRlU2VtdmVyKG5hbWUsIHZlcnNpb25TdHJpbmcsIG1hcCkge1xuICBsZXQgc3VjY2VzcyA9IGZhbHNlO1xuXG4gIGxldCBzZW12ZXIgPSBtYXBbbmFtZV0gfHwgbnVsbDtcblxuICBjb25zdCB2ZXJzaW9uID0gVmVyc2lvbi5mcm9tVmVyc2lvblN0cmluZyh2ZXJzaW9uU3RyaW5nKSxcbiAgICAgICAgZXhpc3RpbmdTZW12ZXIgPSBzZW12ZXIsIC8vL1xuICAgICAgICBleGlzdGluZ1ZlcnNpb24gPSBWZXJzaW9uLmZyb21TdHJpbmcoZXhpc3RpbmdTZW12ZXIpO1xuXG4gIGlmIChleGlzdGluZ1ZlcnNpb24gIT09IG51bGwpIHtcbiAgICBjb25zdCB2ZXJzaW9uR3JlYXRlclRoYW5FeGlzdGluZ1ZlcnNpb24gPSB2ZXJzaW9uLmlzR3JlYXRlclRoYW4oZXhpc3RpbmdWZXJzaW9uKTtcblxuICAgIHN1Y2Nlc3MgPSB2ZXJzaW9uR3JlYXRlclRoYW5FeGlzdGluZ1ZlcnNpb247ICAvLy9cblxuICAgIGlmIChzdWNjZXNzKSB7XG4gICAgICBzZW12ZXIgPSB2ZXJzaW9uLnVwZGF0ZVNlbXZlcihzZW12ZXIpO1xuXG4gICAgICBtYXBbbmFtZV0gPSBzZW12ZXI7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHN1Y2Nlc3M7XG59XG5cbmZ1bmN0aW9uIHNoZWxsQ29tbWFuZHNGcm9tU3BlY2lmaWVyKHNwZWNpZmllcikge1xuICBsZXQgc2hlbGxDb21tYW5kcyA9IHJldHJpZXZlU2hlbGxDb21tYW5kcygpO1xuXG4gIGNvbnN0IHsgcG9sbCB9ID0gc2hlbGxDb21tYW5kcyxcbiAgICAgICAgcG9sbFNoZWxsQ29tbWFuZHMgPSBwb2xsLCAvLy9cbiAgICAgICAgYXJncyA9IHtcbiAgICAgICAgICBzcGVjaWZpZXJcbiAgICAgICAgfTtcblxuICBzaGVsbENvbW1hbmRzID0gcGFyc2VDb250ZW50KHBvbGxTaGVsbENvbW1hbmRzLCBhcmdzKTtcblxuICByZXR1cm4gc2hlbGxDb21tYW5kcztcbn1cbiJdLCJuYW1lcyI6WyJSZWxlYXNlIiwicHJ1bmUiLCJhcnJheVV0aWxpdGllcyIsImV2ZW50dWFsbHkiLCJhc3luY2hyb25vdXNVdGlsaXRpZXMiLCJwYXJzZUNvbnRlbnQiLCJ0ZW1wbGF0ZVV0aWxpdGllcyIsIm5hbWUiLCJ2ZXJzaW9uIiwiZGVwZW5kZW5jeU1hcCIsImRldkRlcGVuZGVuY3lNYXAiLCJzdWJEaXJlY3RvcnlQYXRoIiwiZ2V0TmFtZSIsImdldFZlcnNpb24iLCJnZXREZXBlbmRlbmN5TWFwIiwiZ2V0RGV2RGVwZW5kZW5jeU1hcCIsImdldFN1YkRpcmVjdG9yeVBhdGgiLCJpc1B1Ymxpc2hhYmxlIiwicHVibGlzaGFibGUiLCJnZXRWZXJzaW9uU3RyaW5nIiwidmVyc2lvblN0cmluZyIsImFzU3RyaW5nIiwiZ2V0RGVwZW5kZW5jeU5hbWVzIiwiZGVwZW5kZW5jeU5hbWVzIiwiT2JqZWN0Iiwia2V5cyIsImdldERldkRlcGVuZGVuY3lOYW1lcyIsImRldkRlcGVuZGVuY3lOYW1lcyIsImdpdCIsInF1aWV0bHkiLCJjYWxsYmFjayIsInNoZWxsQ29tbWFuZHMiLCJyZXRyaWV2ZVNoZWxsQ29tbWFuZHMiLCJnaXRTaGVsbENvbW1hbmRzIiwiZXhlY3V0ZVNoZWxsQ29tbWFuZHMiLCJwb2xsIiwic3BlY2lmaWVycyIsInNwZWNpZmllcnNMZW5ndGgiLCJsZW5ndGgiLCJzdWNjZXNzIiwiY29uc29sZSIsImxvZyIsIm9wZXJhdGlvbnMiLCJtYXAiLCJzcGVjaWZpZXIiLCJuZXh0IiwiZG9uZSIsImNvbnRleHQiLCJpbmRleCIsInNoZWxsQ29tbWFuZHNGcm9tU3BlY2lmaWVyIiwiZXhlY3V0ZVJlcGVhdGVkbHkiLCJwb2xsZWRTcGVjaWZpZXIiLCJpbnN0YWxsIiwiaW5zdGFsbFNoZWxsQ29tbWFuZHMiLCJidWlsZCIsImlnbm9yZWRCdWlsZHMiLCJyZXRyaWV2ZUlnbm9yZWRCdWlsZHMiLCJzdWJEaXJlY3RvcnlQYXRocyIsInN1YkRpcmVjdG9yeVBhdGhzSW5jbHVkZXNTdWJEaXJlY3RvcnlQYXRoIiwiaW5jbHVkZXMiLCJidWlsZElnbm9yZWQiLCJidWlsZFNoZWxsQ29tbWFuZHMiLCJwdWJsaXNoIiwiaWdub3JlZFB1Ymxpc2hlcyIsInJldHJpZXZlSWdub3JlZFB1Ymxpc2hlcyIsIm5hbWVzIiwibmFtZXNJbmNsdWRlc05hbWUiLCJwdWJsaXNoSWdub3JlZCIsInB1Ymxpc2hTaGVsbENvbW1hbmRzIiwiYnVtcFBhdGNoTnVtYmVyIiwiY3VycmVudFdvcmtpbmdEaXJlY3RvcnlQYXRoIiwicHJvY2VzcyIsImN3ZCIsImNoZGlyIiwiZXhlY3V0ZVByb21wdGx5IiwidXBkYXRlRGVwZW5kZW5jeVZlcnNpb24iLCJ1cGRhdGVTZW12ZXIiLCJ1cGRhdGVEZXZEZXBlbmRlbmN5VmVyc2lvbiIsImZyb21TdWJEaXJlY3RvcnlQYXRoIiwicmVsZWFzZSIsInBhY2thZ2VKU09OIiwicmVhZFBhY2thZ2VKU09ORmlsZSIsImRlcGVuZGVuY2llcyIsImRldkRlcGVuZGVuY2llcyIsIlZlcnNpb24iLCJmcm9tVmVyc2lvblN0cmluZyIsInNlbXZlciIsImV4aXN0aW5nU2VtdmVyIiwiZXhpc3RpbmdWZXJzaW9uIiwiZnJvbVN0cmluZyIsInZlcnNpb25HcmVhdGVyVGhhbkV4aXN0aW5nVmVyc2lvbiIs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
276
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9yZWxlYXNlLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBhcnJheVV0aWxpdGllcywgdGVtcGxhdGVVdGlsaXRpZXMsIGFzeW5jaHJvbm91c1V0aWxpdGllcyB9IGZyb20gXCJuZWNlc3NhcnlcIlxuXG5pbXBvcnQgVmVyc2lvbiBmcm9tIFwiLi92ZXJzaW9uXCI7XG5cbmltcG9ydCB7IHJlYWRQYWNrYWdlSlNPTkZpbGUgfSBmcm9tIFwiLi91dGlsaXRpZXMvcGFja2FnZUpTT05cIjtcbmltcG9ydCB7IHNob3dDdXJzb3IsIGhpZGVDdXJzb3IgfSBmcm9tIFwiLi91dGlsaXRpZXMvdGVybWluYWxcIjtcbmltcG9ydCB7IGV4ZWN1dGVQcm9tcHRseSwgZXhlY3V0ZVJlcGVhdGVkbHkgfSBmcm9tIFwiLi91dGlsaXRpZXMvc2hlbGxcIjtcbmltcG9ydCB7IHJldHJpZXZlU2hlbGxDb21tYW5kcywgcmV0cmlldmVJZ25vcmVkQnVpbGRzLCByZXRyaWV2ZUlnbm9yZWRQdWJsaXNoZXMgfSBmcm9tIFwiLi9jb25maWd1cmF0aW9uXCI7XG5cbmNvbnN0IHsgcHJ1bmUgfSA9IGFycmF5VXRpbGl0aWVzLFxuICAgICAgeyBldmVudHVhbGx5IH0gPSBhc3luY2hyb25vdXNVdGlsaXRpZXMsXG4gICAgICB7IHBhcnNlQ29udGVudCB9ID0gdGVtcGxhdGVVdGlsaXRpZXM7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFJlbGVhc2Uge1xuICBjb25zdHJ1Y3RvcihuYW1lLCB2ZXJzaW9uLCBkZXBlbmRlbmN5TWFwLCBkZXZEZXBlbmRlbmN5TWFwLCBzdWJEaXJlY3RvcnlQYXRoKSB7XG4gICAgdGhpcy5uYW1lID0gbmFtZTtcbiAgICB0aGlzLnZlcnNpb24gPSB2ZXJzaW9uO1xuICAgIHRoaXMuZGVwZW5kZW5jeU1hcCA9IGRlcGVuZGVuY3lNYXA7XG4gICAgdGhpcy5kZXZEZXBlbmRlbmN5TWFwID0gZGV2RGVwZW5kZW5jeU1hcDtcbiAgICB0aGlzLnN1YkRpcmVjdG9yeVBhdGggPSBzdWJEaXJlY3RvcnlQYXRoO1xuICB9XG5cbiAgZ2V0TmFtZSgpIHtcbiAgICByZXR1cm4gdGhpcy5uYW1lO1xuICB9XG5cbiAgZ2V0VmVyc2lvbigpIHtcbiAgICByZXR1cm4gdGhpcy52ZXJzaW9uO1xuICB9XG5cbiAgZ2V0RGVwZW5kZW5jeU1hcCgpIHtcbiAgICByZXR1cm4gdGhpcy5kZXBlbmRlbmN5TWFwO1xuICB9XG5cbiAgZ2V0RGV2RGVwZW5kZW5jeU1hcCgpIHtcbiAgICByZXR1cm4gdGhpcy5kZXZEZXBlbmRlbmN5TWFwO1xuICB9XG5cbiAgZ2V0U3ViRGlyZWN0b3J5UGF0aCgpIHtcbiAgICByZXR1cm4gdGhpcy5zdWJEaXJlY3RvcnlQYXRoO1xuICB9XG5cbiAgaXNQdWJsaXNoYWJsZSgpIHtcbiAgICBjb25zdCBwdWJsaXNoYWJsZSA9ICh0aGlzLm5hbWUgIT09IG51bGwpICYmICh0aGlzLnZlcnNpb24gIT09IG51bGwpO1xuXG4gICAgcmV0dXJuIHB1Ymxpc2hhYmxlO1xuICB9XG5cbiAgZ2V0VmVyc2lvblN0cmluZygpIHtcbiAgICBjb25zdCB2ZXJzaW9uU3RyaW5nID0gdGhpcy52ZXJzaW9uLmFzU3RyaW5nKCk7XG5cbiAgICByZXR1cm4gdmVyc2lvblN0cmluZzsgLy8vXG4gIH1cblxuICBnZXREZXBlbmRlbmN5TmFtZXMoKSB7XG4gICAgY29uc3QgZGVwZW5kZW5jeU5hbWVzID0gT2JqZWN0LmtleXModGhpcy5kZXBlbmRlbmN5TWFwKTtcblxuICAgIHJldHVybiBkZXBlbmRlbmN5TmFtZXM7XG4gIH1cblxuICBnZXREZXZEZXBlbmRlbmN5TmFtZXMoKSB7XG4gICAgY29uc3QgZGV2RGVwZW5kZW5jeU5hbWVzID0gT2JqZWN0LmtleXModGhpcy5kZXZEZXBlbmRlbmN5TWFwKTtcblxuICAgIHJldHVybiBkZXZEZXBlbmRlbmN5TmFtZXM7XG4gIH1cblxuICBnaXQocXVpZXRseSwgY2FsbGJhY2spIHtcbiAgICBsZXQgc2hlbGxDb21tYW5kcyA9IHJldHJpZXZlU2hlbGxDb21tYW5kcygpO1xuXG4gICAgY29uc3QgeyBnaXQgfSA9IHNoZWxsQ29tbWFuZHMsXG4gICAgICBnaXRTaGVsbENvbW1hbmRzID0gZ2l0O1xuXG4gICAgc2hlbGxDb21tYW5kcyA9IGdpdFNoZWxsQ29tbWFuZHM7IC8vL1xuXG4gICAgdGhpcy5leGVjdXRlU2hlbGxDb21tYW5kcyhzaGVsbENvbW1hbmRzLCBxdWlldGx5LCBjYWxsYmFjayk7XG4gIH1cblxuICBwb2xsKHNwZWNpZmllcnMsIHF1aWV0bHksIGNhbGxiYWNrKSB7XG4gICAgY29uc3Qgc3BlY2lmaWVyc0xlbmd0aCA9IHNwZWNpZmllcnMubGVuZ3RoO1xuXG4gICAgaWYgKHNwZWNpZmllcnNMZW5ndGggPT09IDApIHtcbiAgICAgIGNvbnN0IHN1Y2Nlc3MgPSB0cnVlO1xuXG4gICAgICBjYWxsYmFjayhzdWNjZXNzKTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIChzcGVjaWZpZXJzTGVuZ3RoID09PSAxKSA/XG4gICAgICBjb25zb2xlLmxvZyhgUG9sbGluZyBmb3IgdGhlIGRlcGVuZGVuY3k6YCkgOlxuICAgICAgICBjb25zb2xlLmxvZyhgUG9sbGluZyBmb3IgdGhlIGRlcGVuZGVuaWVzOmApO1xuXG4gICAgaGlkZUN1cnNvcigpO1xuXG4gICAgc3BlY2lmaWVycy5mb3JFYWNoKChzcGVjaWZpZXIpID0+IHtcbiAgICAgIGNvbnNvbGUubG9nKGAgLSAke3NwZWNpZmllcn1gKTtcbiAgICB9KTtcblxuICAgIGNvbnN0IGxlbmd0aCA9IHNwZWNpZmllcnNMZW5ndGgsICAvLy9cbiAgICAgICAgICBvcGVyYXRpb25zID0gc3BlY2lmaWVycy5tYXAoKHNwZWNpZmllciwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgIHJldHVybiAobmV4dCwgZG9uZSwgY29udGV4dCkgPT4ge1xuICAgICAgICAgICAgICBjb25zdCBzaGVsbENvbW1hbmRzID0gc2hlbGxDb21tYW5kc0Zyb21TcGVjaWZpZXIoc3BlY2lmaWVyKTtcblxuICAgICAgICAgICAgICBleGVjdXRlUmVwZWF0ZWRseShzaGVsbENvbW1hbmRzLCBzcGVjaWZpZXIsIGluZGV4LCBsZW5ndGgsIHF1aWV0bHksIChzdWNjZXNzKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHN1Y2Nlc3MpIHtcbiAgICAgICAgICAgICAgICAgIGNvbnN0IHBvbGxlZFNwZWNpZmllciA9IHNwZWNpZmllcjsgLy8vXG5cbiAgICAgICAgICAgICAgICAgIHBydW5lKHNwZWNpZmllcnMsIChzcGVjaWZpZXIpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHNwZWNpZmllciAhPT0gcG9sbGVkU3BlY2lmaWVyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIG5leHQoKTtcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH0pO1xuXG4gICAgZXZlbnR1YWxseShvcGVyYXRpb25zLCAoKSA9PiB7XG4gICAgICBjb25zdCBzcGVjaWZpZXJzTGVuZ3RoID0gc3BlY2lmaWVycy5sZW5ndGgsXG4gICAgICAgICAgICBzdWNjZXNzID0gKHNwZWNpZmllcnNMZW5ndGggPT09IDApO1xuXG4gICAgICBzaG93Q3Vyc29yKCk7XG5cbiAgICAgIGNhbGxiYWNrKHN1Y2Nlc3MpO1xuICAgIH0pO1xuICB9XG5cbiAgaW5zdGFsbChxdWlldGx5LCBjYWxsYmFjaykge1xuICAgIGxldCBzaGVsbENvbW1hbmRzID0gcmV0cmlldmVTaGVsbENvbW1hbmRzKCk7XG5cbiAgICBjb25zdCB7IGluc3RhbGwgfSA9IHNoZWxsQ29tbWFuZHMsXG4gICAgICAgICAgaW5zdGFsbFNoZWxsQ29tbWFuZHMgPSBpbnN0YWxsO1xuXG4gICAgc2hlbGxDb21tYW5kcyA9IGluc3RhbGxTaGVsbENvbW1hbmRzOyAvLy9cblxuICAgIHRoaXMuZXhlY3V0ZVNoZWxsQ29tbWFuZHMoc2hlbGxDb21tYW5kcywgcXVpZXRseSwgY2FsbGJhY2spO1xuICB9XG5cbiAgYnVpbGQocXVpZXRseSwgY2FsbGJhY2spIHtcbiAgICBjb25zdCBpZ25vcmVkQnVpbGRzID0gcmV0cmlldmVJZ25vcmVkQnVpbGRzKCksXG4gICAgICAgICAgc3ViRGlyZWN0b3J5UGF0aHMgPSBpZ25vcmVkQnVpbGRzLCAgLy8vXG4gICAgICAgICAgc3ViRGlyZWN0b3J5UGF0aHNJbmNsdWRlc1N1YkRpcmVjdG9yeVBhdGggPSBzdWJEaXJlY3RvcnlQYXRocy5pbmNsdWRlcyh0aGlzLnN1YkRpcmVjdG9yeVBhdGgpLFxuICAgICAgICAgIGJ1aWxkSWdub3JlZCA9IHN1YkRpcmVjdG9yeVBhdGhzSW5jbHVkZXNTdWJEaXJlY3RvcnlQYXRoOyAvLy9cblxuICAgIGlmIChidWlsZElnbm9yZWQpIHtcbiAgICAgIGNvbnNvbGUubG9nKGBJZ25vcmluZyB0aGUgJyR7dGhpcy5zdWJEaXJlY3RvcnlQYXRofScgYnVpbGQuYCk7XG5cbiAgICAgIGNvbnN0IHN1Y2Nlc3MgPSB0cnVlO1xuXG4gICAgICBjYWxsYmFjayhzdWNjZXNzKTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGxldCBzaGVsbENvbW1hbmRzID0gcmV0cmlldmVTaGVsbENvbW1hbmRzKCk7XG5cbiAgICBjb25zdCB7IGJ1aWxkIH0gPSBzaGVsbENvbW1hbmRzLFxuICAgICAgICAgIGJ1aWxkU2hlbGxDb21tYW5kcyA9IGJ1aWxkO1xuXG4gICAgc2hlbGxDb21tYW5kcyA9IGJ1aWxkU2hlbGxDb21tYW5kczsgLy8vXG5cbiAgICB0aGlzLmV4ZWN1dGVTaGVsbENvbW1hbmRzKHNoZWxsQ29tbWFuZHMsIHF1aWV0bHksIGNhbGxiYWNrKTtcbiAgfVxuXG4gIHB1Ymxpc2gocXVpZXRseSwgY2FsbGJhY2spIHtcbiAgICBjb25zdCBpZ25vcmVkUHVibGlzaGVzID0gcmV0cmlldmVJZ25vcmVkUHVibGlzaGVzKCksXG4gICAgICAgICAgbmFtZXMgPSBpZ25vcmVkUHVibGlzaGVzLFxuICAgICAgICAgIG5hbWVzSW5jbHVkZXNOYW1lID0gbmFtZXMuaW5jbHVkZXModGhpcy5uYW1lKSxcbiAgICAgICAgICBwdWJsaXNoSWdub3JlZCA9IG5hbWVzSW5jbHVkZXNOYW1lOyAvLy9cblxuICAgIGlmIChwdWJsaXNoSWdub3JlZCkge1xuICAgICAgY29uc29sZS5sb2coYElnbm9yaW5nIHRoZSAnJHt0aGlzLm5hbWV9JyBwdWJsaXNoLmApO1xuXG4gICAgICBjb25zdCBzdWNjZXNzID0gdHJ1ZTtcblxuICAgICAgY2FsbGJhY2soc3VjY2Vzcyk7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBsZXQgc2hlbGxDb21tYW5kcyA9IHJldHJpZXZlU2hlbGxDb21tYW5kcygpO1xuXG4gICAgY29uc3QgeyBwdWJsaXNoIH0gPSBzaGVsbENvbW1hbmRzLFxuICAgICAgICAgIHB1Ymxpc2hTaGVsbENvbW1hbmRzID0gcHVibGlzaDtcblxuICAgIHNoZWxsQ29tbWFuZHMgPSBwdWJsaXNoU2hlbGxDb21tYW5kczsgLy8vXG5cbiAgICB0aGlzLmV4ZWN1dGVTaGVsbENvbW1hbmRzKHNoZWxsQ29tbWFuZHMsIHF1aWV0bHksIGNhbGxiYWNrKTtcbiAgfVxuXG4gIGJ1bXBQYXRjaE51bWJlcigpIHsgdGhpcy52ZXJzaW9uLmJ1bXBQYXRjaE51bWJlcigpOyB9XG5cbiAgZXhlY3V0ZVNoZWxsQ29tbWFuZHMoc2hlbGxDb21tYW5kcywgcXVpZXRseSwgY2FsbGJhY2spIHtcbiAgICBjb25zdCBjdXJyZW50V29ya2luZ0RpcmVjdG9yeVBhdGggPSBwcm9jZXNzLmN3ZCgpO1xuXG4gICAgcHJvY2Vzcy5jaGRpcih0aGlzLnN1YkRpcmVjdG9yeVBhdGgpO1xuXG4gICAgZXhlY3V0ZVByb21wdGx5KHNoZWxsQ29tbWFuZHMsIHF1aWV0bHksIChzdWNjZXNzKSA9PiB7XG4gICAgICBwcm9jZXNzLmNoZGlyKGN1cnJlbnRXb3JraW5nRGlyZWN0b3J5UGF0aCk7XG5cbiAgICAgIGNhbGxiYWNrKHN1Y2Nlc3MpO1xuICAgIH0pO1xuICB9XG5cbiAgdXBkYXRlRGVwZW5kZW5jeVZlcnNpb24obmFtZSwgdmVyc2lvblN0cmluZykge1xuICAgIGNvbnN0IHN1Y2Nlc3MgPSB1cGRhdGVTZW12ZXIobmFtZSwgdmVyc2lvblN0cmluZywgdGhpcy5kZXBlbmRlbmN5TWFwKTtcblxuICAgIGlmICghc3VjY2Vzcykge1xuICAgICAgY29uc29sZS5sb2coYEVpdGhlciB0aGUgdmVyc2lvbiBvZiB0aGUgJyR7dGhpcy5zdWJEaXJlY3RvcnlQYXRofScgcmVsZWFzZSdzICcke25hbWV9JyBkZXBlbmRlbmN5IGlzIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byB0aGUgcHJvcGFnYXRlZCAnJHt2ZXJzaW9uU3RyaW5nfScgdmVyc2lvbiBvciBpdCBjYW5ub3QgYmUgcGFyc2VkLmApO1xuICAgIH1cblxuICAgIHJldHVybiBzdWNjZXNzO1xuICB9XG5cbiAgdXBkYXRlRGV2RGVwZW5kZW5jeVZlcnNpb24obmFtZSwgdmVyc2lvblN0cmluZykge1xuICAgIGNvbnN0IHN1Y2Nlc3MgPSB1cGRhdGVTZW12ZXIobmFtZSwgdmVyc2lvblN0cmluZywgdGhpcy5kZXZEZXBlbmRlbmN5TWFwKTtcblxuICAgIGlmICghc3VjY2Vzcykge1xuICAgICAgY29uc29sZS5sb2coYEVpdGhlciB0aGUgdmVyc2lvbiBvZiB0aGUgJyR7dGhpcy5zdWJEaXJlY3RvcnlQYXRofScgcmVsZWFzZSdzICcke25hbWV9JyBkZXZlbG9wZXIgZGVwZW5kZW5jeSBpcyBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gdGhlIHByb3BhZ2F0ZWQgJyR7dmVyc2lvblN0cmluZ30nIHZlcnNpb24gb3IgaXQgY2Fubm90IGJlIHBhcnNlZC5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gc3VjY2VzcztcbiAgfVxuXG4gIHN0YXRpYyBmcm9tU3ViRGlyZWN0b3J5UGF0aChzdWJEaXJlY3RvcnlQYXRoKSB7XG4gICAgbGV0IHJlbGVhc2UgPSBudWxsO1xuXG4gICAgY29uc3QgcGFja2FnZUpTT04gPSByZWFkUGFja2FnZUpTT05GaWxlKHN1YkRpcmVjdG9yeVBhdGgpO1xuXG4gICAgaWYgKHBhY2thZ2VKU09OICE9PSBudWxsKSB7XG4gICAgICBsZXQgeyB2ZXJzaW9uID0gbnVsbCB9ID0gcGFja2FnZUpTT047XG5cbiAgICAgIGNvbnN0IHsgbmFtZSA9IG51bGwsIGRlcGVuZGVuY2llcyA9IHt9LCBkZXZEZXBlbmRlbmNpZXMgPSB7fSB9ID0gcGFja2FnZUpTT04sXG4gICAgICAgICAgICB2ZXJzaW9uU3RyaW5nID0gdmVyc2lvbjsgIC8vL1xuXG4gICAgICB2ZXJzaW9uID0gVmVyc2lvbi5mcm9tVmVyc2lvblN0cmluZyh2ZXJzaW9uU3RyaW5nKTtcblxuICAgICAgY29uc3QgZGVwZW5kZW5jeU1hcCA9IGRlcGVuZGVuY2llcywgLy8vXG4gICAgICAgICAgICBkZXZEZXBlbmRlbmN5TWFwID0gZGV2RGVwZW5kZW5jaWVzOyAvLy9cblxuICAgICAgcmVsZWFzZSA9IG5ldyBSZWxlYXNlKG5hbWUsIHZlcnNpb24sIGRlcGVuZGVuY3lNYXAsIGRldkRlcGVuZGVuY3lNYXAsIHN1YkRpcmVjdG9yeVBhdGgpO1xuICAgIH1cblxuICAgIHJldHVybiByZWxlYXNlO1xuICB9XG59XG5cbmZ1bmN0aW9uIHVwZGF0ZVNlbXZlcihuYW1lLCB2ZXJzaW9uU3RyaW5nLCBtYXApIHtcbiAgbGV0IHN1Y2Nlc3MgPSBmYWxzZTtcblxuICBsZXQgc2VtdmVyID0gbWFwW25hbWVdIHx8IG51bGw7XG5cbiAgY29uc3QgdmVyc2lvbiA9IFZlcnNpb24uZnJvbVZlcnNpb25TdHJpbmcodmVyc2lvblN0cmluZyksXG4gICAgICAgIGV4aXN0aW5nU2VtdmVyID0gc2VtdmVyLCAvLy9cbiAgICAgICAgZXhpc3RpbmdWZXJzaW9uID0gVmVyc2lvbi5mcm9tU3RyaW5nKGV4aXN0aW5nU2VtdmVyKTtcblxuICBpZiAoZXhpc3RpbmdWZXJzaW9uICE9PSBudWxsKSB7XG4gICAgY29uc3QgdmVyc2lvbkdyZWF0ZXJUaGFuRXhpc3RpbmdWZXJzaW9uID0gdmVyc2lvbi5pc0dyZWF0ZXJUaGFuKGV4aXN0aW5nVmVyc2lvbik7XG5cbiAgICBzdWNjZXNzID0gdmVyc2lvbkdyZWF0ZXJUaGFuRXhpc3RpbmdWZXJzaW9uOyAgLy8vXG5cbiAgICBpZiAoc3VjY2Vzcykge1xuICAgICAgc2VtdmVyID0gdmVyc2lvbi51cGRhdGVTZW12ZXIoc2VtdmVyKTtcblxuICAgICAgbWFwW25hbWVdID0gc2VtdmVyO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBzdWNjZXNzO1xufVxuXG5mdW5jdGlvbiBzaGVsbENvbW1hbmRzRnJvbVNwZWNpZmllcihzcGVjaWZpZXIpIHtcbiAgbGV0IHNoZWxsQ29tbWFuZHMgPSByZXRyaWV2ZVNoZWxsQ29tbWFuZHMoKTtcblxuICBjb25zdCB7IHBvbGwgfSA9IHNoZWxsQ29tbWFuZHMsXG4gICAgICAgIHBvbGxTaGVsbENvbW1hbmRzID0gcG9sbCwgLy8vXG4gICAgICAgIGFyZ3MgPSB7XG4gICAgICAgICAgc3BlY2lmaWVyXG4gICAgICAgIH07XG5cbiAgc2hlbGxDb21tYW5kcyA9IHBhcnNlQ29udGVudChwb2xsU2hlbGxDb21tYW5kcywgYXJncyk7XG5cbiAgcmV0dXJuIHNoZWxsQ29tbWFuZHM7XG59XG4iXSwibmFtZXMiOlsiUmVsZWFzZSIsInBydW5lIiwiYXJyYXlVdGlsaXRpZXMiLCJldmVudHVhbGx5IiwiYXN5bmNocm9ub3VzVXRpbGl0aWVzIiwicGFyc2VDb250ZW50IiwidGVtcGxhdGVVdGlsaXRpZXMiLCJuYW1lIiwidmVyc2lvbiIsImRlcGVuZGVuY3lNYXAiLCJkZXZEZXBlbmRlbmN5TWFwIiwic3ViRGlyZWN0b3J5UGF0aCIsImdldE5hbWUiLCJnZXRWZXJzaW9uIiwiZ2V0RGVwZW5kZW5jeU1hcCIsImdldERldkRlcGVuZGVuY3lNYXAiLCJnZXRTdWJEaXJlY3RvcnlQYXRoIiwiaXNQdWJsaXNoYWJsZSIsInB1Ymxpc2hhYmxlIiwiZ2V0VmVyc2lvblN0cmluZyIsInZlcnNpb25TdHJpbmciLCJhc1N0cmluZyIsImdldERlcGVuZGVuY3lOYW1lcyIsImRlcGVuZGVuY3lOYW1lcyIsIk9iamVjdCIsImtleXMiLCJnZXREZXZEZXBlbmRlbmN5TmFtZXMiLCJkZXZEZXBlbmRlbmN5TmFtZXMiLCJnaXQiLCJxdWlldGx5IiwiY2FsbGJhY2siLCJzaGVsbENvbW1hbmRzIiwicmV0cmlldmVTaGVsbENvbW1hbmRzIiwiZ2l0U2hlbGxDb21tYW5kcyIsImV4ZWN1dGVTaGVsbENvbW1hbmRzIiwicG9sbCIsInNwZWNpZmllcnMiLCJzcGVjaWZpZXJzTGVuZ3RoIiwibGVuZ3RoIiwic3VjY2VzcyIsImNvbnNvbGUiLCJsb2ciLCJoaWRlQ3Vyc29yIiwiZm9yRWFjaCIsInNwZWNpZmllciIsIm9wZXJhdGlvbnMiLCJtYXAiLCJpbmRleCIsIm5leHQiLCJkb25lIiwiY29udGV4dCIsInNoZWxsQ29tbWFuZHNGcm9tU3BlY2lmaWVyIiwiZXhlY3V0ZVJlcGVhdGVkbHkiLCJwb2xsZWRTcGVjaWZpZXIiLCJzaG93Q3Vyc29yIiwiaW5zdGFsbCIsImluc3RhbGxTaGVsbENvbW1hbmRzIiwiYnVpbGQiLCJpZ25vcmVkQnVpbGRzIiwicmV0cmlldmVJZ25vcmVkQnVpbGRzIiwic3ViRGlyZWN0b3J5UGF0aHMiLCJzdWJEaXJlY3RvcnlQYXRoc0luY2x1ZGVzU3ViRGlyZWN0b3J5UGF0aCIsImluY2x1ZGVzIiwiYnVpbGRJZ25vcmVkIiwiYnVpbGRTaGVsbENvbW1hbmRzIiwicHVibGlzaCIsImlnbm9yZWRQdWJsaXNoZXMiLCJyZXRyaWV2ZUlnbm9yZWRQdWJsaXNoZXMiLCJuYW1lcyIsIm5hbWVzSW5jbHVkZXNOYW1lIiwicHVibGlzaElnbm9yZWQiLCJwdWJsaXNoU2hlbGxDb21tYW5kcyIsImJ1bXBQYXRjaE51bWJlciIsImN1cnJlbnRXb3JraW5nRGlyZWN0b3J5UGF0aCIsInByb2Nlc3MiLCJjd2QiLCJjaGRpciIsImV4ZWN1dGVQcm9tcHRseSIsInVwZGF0ZURlcGVuZGVuY3lWZXJzaW9uIiwidXBkYXRlU2VtdmVyIiwidXBkYXRlRGV2RGVwZW5kZW5jeVZlcnNpb24iLCJmcm9tU3ViRGlyZWN0b3J5UGF0aCIsInJlbGVhc2UiLCJwYWNrYWdlSlNPTiIsInJlYWRQYWNrYWdlSlNPTkZpbGUiLCJkZXBlbmRlbmNpZXMiLCJkZXZEZXBlbmRlbmNpZXMiLCJWZXJzaW9uIiwiZnJvbVZlcnNpb25TdHJpbmciLCJzZW12ZXIiLCJleGlzdGluZ1NlbXZlciIsImV4aXN0aW5nVmVyc2lvbiIsImZyb21TdHJpbmciLCJ2ZXJzaW9uR3JlYXRlclRoYW5FeGlzdGluZ1ZlcnNpb24iLCJpc0dyZWF0ZXJUaGFuIiwicG9sbFNoZWxsQ29tbWFuZHMiLCJhcmdzIl0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7OztlQWVxQkE7Ozt5QkFib0Q7OERBRXJEOzJCQUVnQjt3QkFDRztxQkFDWTs2QkFDb0M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFdkYsSUFBTSxBQUFFQyxRQUFVQyx5QkFBYyxDQUF4QkQsT0FDRixBQUFFRSxhQUFlQyxnQ0FBcUIsQ0FBcENELFlBQ0YsQUFBRUUsZUFBaUJDLDRCQUFpQixDQUFsQ0Q7QUFFTyxJQUFBLEFBQU1MLHdCQUFOO2FBQU1BLFFBQ1BPLElBQUksRUFBRUMsT0FBTyxFQUFFQyxhQUFhLEVBQUVDLGdCQUFnQixFQUFFQyxnQkFBZ0I7Z0NBRHpEWDtRQUVqQixJQUFJLENBQUNPLElBQUksR0FBR0E7UUFDWixJQUFJLENBQUNDLE9BQU8sR0FBR0E7UUFDZixJQUFJLENBQUNDLGFBQWEsR0FBR0E7UUFDckIsSUFBSSxDQUFDQyxnQkFBZ0IsR0FBR0E7UUFDeEIsSUFBSSxDQUFDQyxnQkFBZ0IsR0FBR0E7O2tCQU5QWDs7WUFTbkJZLEtBQUFBO21CQUFBQSxTQUFBQTtnQkFDRSxPQUFPLElBQUksQ0FBQ0wsSUFBSTtZQUNsQjs7O1lB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
@@ -19,6 +19,7 @@ _export(exports, {
19
19
  var _child_process = /*#__PURE__*/ _interop_require_default(require("child_process"));
20
20
  var _necessary = require("necessary");
21
21
  var _validate = require("../utilities/validate");
22
+ var _terminal = require("../utilities/terminal");
22
23
  var _prompt = require("../utilities/prompt");
23
24
  var _messages = require("../messages");
24
25
  var _descriptions = require("../descriptions");
@@ -53,13 +54,15 @@ function executePromptly(shellCommands, quietly, callback) {
53
54
  callback(success);
54
55
  });
55
56
  }
56
- function executeRepeatedly(shellCommands, quietly, callback) {
57
+ function executeRepeatedly(shellCommands, specifier, index, length, quietly, callback) {
57
58
  var success = false;
58
- var delay = _constants.REPEATED_DELAY, attempts = _constants.REPEATED_ATTEMPTS, operation = function(next, done, context, index) {
59
+ var delay = _constants.REPEATED_DELAY, offset = length - index, attempts = _constants.REPEATED_ATTEMPTS, operation = function(next, done, context, index) {
59
60
  if (index === attempts) {
60
61
  done();
61
62
  return;
62
63
  }
64
+ var progressCount = index + 1, progressIndicator = _constants.FULL_STOP.repeat(progressCount);
65
+ (0, _terminal.offsetConsoleLog)(" - ".concat(specifier).concat(progressIndicator), offset);
63
66
  execAsync(shellCommands, quietly, function(error, output) {
64
67
  if (!error) {
65
68
  success = true;
@@ -101,4 +104,4 @@ function execAsync(shellCommands, quietly, callback) {
101
104
  });
102
105
  }
103
106
 
104
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvc2hlbGwuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCBjaGlsZFByb2Nlc3MgZnJvbSBcImNoaWxkX3Byb2Nlc3NcIjtcblxuaW1wb3J0IHsgZW5jb2RpbmdzLCBzaGVsbFV0aWxpdGllcywgYXN5bmNocm9ub3VzVXRpbGl0aWVzIH0gZnJvbSBcIm5lY2Vzc2FyeVwiO1xuXG5pbXBvcnQgeyB2YWxpZGF0ZUFuc3dlciB9IGZyb20gXCIuLi91dGlsaXRpZXMvdmFsaWRhdGVcIjtcbmltcG9ydCB7IGlzQW5zd2VyQWZmaXJtYXRpdmUgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL3Byb21wdFwiO1xuaW1wb3J0IHsgSU5WQUxJRF9BTlNXRVJfTUVTU0FHRSB9IGZyb20gXCIuLi9tZXNzYWdlc1wiO1xuaW1wb3J0IHsgRkFJTEVEX1NDUklQVF9ERVNDUklQVElPTiB9IGZyb20gXCIuLi9kZXNjcmlwdGlvbnNcIjtcbmltcG9ydCB7IFJFUEVBVEVEX0RFTEFZLCBQUk9NUFRfQVRURU1QVFMsIFJFUEVBVEVEX0FUVEVNUFRTIH0gZnJvbSBcIi4uL2NvbnN0YW50c1wiO1xuXG5jb25zdCB7IHByb21wdCB9ID0gc2hlbGxVdGlsaXRpZXMsXG4gICAgICB7IHdoaWxzdCB9ID0gYXN5bmNocm9ub3VzVXRpbGl0aWVzLFxuICAgICAgeyBVVEZfOF9FTkNPRElORyB9ID0gZW5jb2RpbmdzO1xuXG5leHBvcnQgZnVuY3Rpb24gZXhlY3V0ZVByb21wdGx5KHNoZWxsQ29tbWFuZHMsIHF1aWV0bHksIGNhbGxiYWNrKSB7XG4gIGNvbnN0IHN1Y2Nlc3MgPSBleGVjU3luYyhzaGVsbENvbW1hbmRzLCBxdWlldGx5KTtcblxuICBpZiAoc3VjY2Vzcykge1xuICAgIGNhbGxiYWNrKHN1Y2Nlc3MpO1xuXG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgYXR0ZW1wdHMgPSBQUk9NUFRfQVRURU1QVFMsXG4gICAgICAgIGRlc2NyaXB0aW9uID0gRkFJTEVEX1NDUklQVF9ERVNDUklQVElPTixcbiAgICAgICAgZXJyb3JNZXNzYWdlID0gSU5WQUxJRF9BTlNXRVJfTUVTU0FHRSxcbiAgICAgICAgdmFsaWRhdGlvbkZ1bmN0aW9uID0gdmFsaWRhdGVBbnN3ZXIsICAvLy9cbiAgICAgICAgb3B0aW9ucyA9IHtcbiAgICAgICAgICBhdHRlbXB0cyxcbiAgICAgICAgICBkZXNjcmlwdGlvbixcbiAgICAgICAgICBlcnJvck1lc3NhZ2UsXG4gICAgICAgICAgdmFsaWRhdGlvbkZ1bmN0aW9uXG4gICAgICAgIH07XG5cbiAgcHJvbXB0KG9wdGlvbnMsIChhbnN3ZXIpID0+IHtcbiAgICBsZXQgc3VjY2VzcztcblxuICAgIGNvbnN0IHZhbGlkID0gKGFuc3dlciAhPT0gbnVsbCk7XG5cbiAgICBpZiAodmFsaWQpIHtcbiAgICAgIGNvbnN0IGFmZmlybWF0aXZlID0gaXNBbnN3ZXJBZmZpcm1hdGl2ZShhbnN3ZXIpO1xuXG4gICAgICBzdWNjZXNzID0gYWZmaXJtYXRpdmUgP1xuICAgICAgICAgICAgICAgICAgZXhlY1N5bmMoc2hlbGxDb21tYW5kcywgcXVpZXRseSkgOlxuICAgICAgICAgICAgICAgICAgICB0cnVlOyAvLy9cbiAgICB9IGVsc2Uge1xuICAgICAgc3VjY2VzcyA9IGZhbHNlO1xuICAgIH1cblxuICAgIGNhbGxiYWNrKHN1Y2Nlc3MpO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGV4ZWN1dGVSZXBlYXRlZGx5KHNoZWxsQ29tbWFuZHMsIHF1aWV0bHksIGNhbGxiYWNrKSB7XG4gIGxldCBzdWNjZXNzID0gZmFsc2U7XG5cbiAgY29uc3QgZGVsYXkgPSBSRVBFQVRFRF9ERUxBWSxcbiAgICAgICAgYXR0ZW1wdHMgPSBSRVBFQVRFRF9BVFRFTVBUUyxcbiAgICAgICAgb3BlcmF0aW9uID0gKG5leHQsIGRvbmUsIGNvbnRleHQsIGluZGV4KSA9PiB7XG4gICAgICAgICAgaWYgKGluZGV4ID09PSBhdHRlbXB0cykge1xuICAgICAgICAgICAgZG9uZSgpO1xuXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgZXhlY0FzeW5jKHNoZWxsQ29tbWFuZHMsIHF1aWV0bHksIChlcnJvciwgb3V0cHV0KSA9PiB7XG4gICAgICAgICAgICBpZiAoIWVycm9yKSB7XG4gICAgICAgICAgICAgIHN1Y2Nlc3MgPSB0cnVlO1xuXG4gICAgICAgICAgICAgIGRvbmUoKTtcblxuICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHNldFRpbWVvdXQobmV4dCwgZGVsYXkpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9O1xuXG4gIHdoaWxzdChvcGVyYXRpb24sICgpID0+IHtcbiAgICBjYWxsYmFjayhzdWNjZXNzKTtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIGV4ZWNTeW5jKHNoZWxsQ29tbWFuZHMsIHF1aWV0bHkpIHtcbiAgbGV0IHN1Y2Nlc3M7XG5cbiAgdHJ5IHtcbiAgICBjb25zdCBlbmNvZGluZyA9IFVURl84X0VOQ09ESU5HLCAgLy8vXG4gICAgICAgICAgb3B0aW9ucyA9IHtcbiAgICAgICAgICAgIGVuY29kaW5nXG4gICAgICAgICAgfSxcbiAgICAgICAgICBvdXRwdXQgPSBjaGlsZFByb2Nlc3MuZXhlY1N5bmMoc2hlbGxDb21tYW5kcywgb3B0aW9ucyk7XG5cbiAgICBpZiAoIXF1aWV0bHkpIHtcbiAgICAgIHByb2Nlc3Muc3Rkb3V0LndyaXRlKG91dHB1dCk7XG4gICAgfVxuXG4gICAgc3VjY2VzcyA9IHRydWU7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgc3VjY2VzcyA9IGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuIHN1Y2Nlc3M7XG59XG5cbmZ1bmN0aW9uIGV4ZWNBc3luYyhzaGVsbENvbW1hbmRzLCBxdWlldGx5LCBjYWxsYmFjaykge1xuICBjb25zdCBlbmNvZGluZyA9IFVURl84X0VOQ09ESU5HLCAgLy8vXG4gICAgICAgIG9wdGlvbnMgPSB7XG4gICAgICAgICAgZW5jb2RpbmdcbiAgICAgICAgfTtcblxuICBjaGlsZFByb2Nlc3MuZXhlYyhzaGVsbENvbW1hbmRzLCBvcHRpb25zLCAoZXJyb3IsIHN0ZG91dCwgc3RkZXJyKSA9PiB7XG4gICAgY29uc3Qgb3V0cHV0ID0gZXJyb3IgP1xuICAgICAgICAgICAgICAgICAgICAgc3RkZXJyIDpcbiAgICAgICAgICAgICAgICAgICAgICAgc3Rkb3V0O1xuXG4gICAgaWYgKCFxdWlldGx5KSB7XG4gICAgICBwcm9jZXNzLnN0ZG91dC53cml0ZShvdXRwdXQpO1xuICAgIH1cblxuICAgIGNhbGxiYWNrKGVycm9yLCBvdXRwdXQpXG4gIH0pO1xufVxuIl0sIm5hbWVzIjpbImV4ZWN1dGVQcm9tcHRseSIsImV4ZWN1dGVSZXBlYXRlZGx5IiwicHJvbXB0Iiwic2hlbGxVdGlsaXRpZXMiLCJ3aGlsc3QiLCJhc3luY2hyb25vdXNVdGlsaXRpZXMiLCJVVEZfOF9FTkNPRElORyIsImVuY29kaW5ncyIsInNoZWxsQ29tbWFuZHMiLCJxdWlldGx5IiwiY2FsbGJhY2siLCJzdWNjZXNzIiwiZXhlY1N5bmMiLCJhdHRlbXB0cyIsIlBST01QVF9BVFRFTVBUUyIsImRlc2NyaXB0aW9uIiwiRkFJTEVEX1NDUklQVF9ERVNDUklQVElPTiIsImVycm9yTWVzc2FnZSIsIklOVkFMSURfQU5TV0VSX01FU1NBR0UiLCJ2YWxpZGF0aW9uRnVuY3Rpb24iLCJ2YWxpZGF0ZUFuc3dlciIsIm9wdGlvbnMiLCJhbnN3ZXIiLCJ2YWxpZCIsImFmZmlybWF0aXZlIiwiaXNBbnN3ZXJBZmZpcm1hdGl2ZSIsImRlbGF5IiwiUkVQRUFURURfREVMQVkiLCJSRVBFQVRFRF9BVFRFTVBUUyIsIm9wZXJhdGlvbiIsIm5leHQiLCJkb25lIiwiY29udGV4dCIsImluZGV4IiwiZXhlY0FzeW5jIiwiZXJyb3IiLCJvdXRwdXQiLCJzZXRUaW1lb3V0IiwiZW5jb2RpbmciLCJjaGlsZFByb2Nlc3MiLCJwcm9jZXNzIiwi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
107
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvc2hlbGwuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCBjaGlsZFByb2Nlc3MgZnJvbSBcImNoaWxkX3Byb2Nlc3NcIjtcblxuaW1wb3J0IHsgZW5jb2RpbmdzLCBzaGVsbFV0aWxpdGllcywgYXN5bmNocm9ub3VzVXRpbGl0aWVzIH0gZnJvbSBcIm5lY2Vzc2FyeVwiO1xuXG5pbXBvcnQgeyB2YWxpZGF0ZUFuc3dlciB9IGZyb20gXCIuLi91dGlsaXRpZXMvdmFsaWRhdGVcIjtcbmltcG9ydCB7IG9mZnNldENvbnNvbGVMb2cgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL3Rlcm1pbmFsXCI7XG5pbXBvcnQgeyBpc0Fuc3dlckFmZmlybWF0aXZlIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9wcm9tcHRcIjtcbmltcG9ydCB7IElOVkFMSURfQU5TV0VSX01FU1NBR0UgfSBmcm9tIFwiLi4vbWVzc2FnZXNcIjtcbmltcG9ydCB7IEZBSUxFRF9TQ1JJUFRfREVTQ1JJUFRJT04gfSBmcm9tIFwiLi4vZGVzY3JpcHRpb25zXCI7XG5pbXBvcnQgeyBGVUxMX1NUT1AsIFJFUEVBVEVEX0RFTEFZLCBQUk9NUFRfQVRURU1QVFMsIFJFUEVBVEVEX0FUVEVNUFRTIH0gZnJvbSBcIi4uL2NvbnN0YW50c1wiO1xuXG5jb25zdCB7IHByb21wdCB9ID0gc2hlbGxVdGlsaXRpZXMsXG4gICAgICB7IHdoaWxzdCB9ID0gYXN5bmNocm9ub3VzVXRpbGl0aWVzLFxuICAgICAgeyBVVEZfOF9FTkNPRElORyB9ID0gZW5jb2RpbmdzO1xuXG5leHBvcnQgZnVuY3Rpb24gZXhlY3V0ZVByb21wdGx5KHNoZWxsQ29tbWFuZHMsIHF1aWV0bHksIGNhbGxiYWNrKSB7XG4gIGNvbnN0IHN1Y2Nlc3MgPSBleGVjU3luYyhzaGVsbENvbW1hbmRzLCBxdWlldGx5KTtcblxuICBpZiAoc3VjY2Vzcykge1xuICAgIGNhbGxiYWNrKHN1Y2Nlc3MpO1xuXG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgYXR0ZW1wdHMgPSBQUk9NUFRfQVRURU1QVFMsXG4gICAgICAgIGRlc2NyaXB0aW9uID0gRkFJTEVEX1NDUklQVF9ERVNDUklQVElPTixcbiAgICAgICAgZXJyb3JNZXNzYWdlID0gSU5WQUxJRF9BTlNXRVJfTUVTU0FHRSxcbiAgICAgICAgdmFsaWRhdGlvbkZ1bmN0aW9uID0gdmFsaWRhdGVBbnN3ZXIsICAvLy9cbiAgICAgICAgb3B0aW9ucyA9IHtcbiAgICAgICAgICBhdHRlbXB0cyxcbiAgICAgICAgICBkZXNjcmlwdGlvbixcbiAgICAgICAgICBlcnJvck1lc3NhZ2UsXG4gICAgICAgICAgdmFsaWRhdGlvbkZ1bmN0aW9uXG4gICAgICAgIH07XG5cbiAgcHJvbXB0KG9wdGlvbnMsIChhbnN3ZXIpID0+IHtcbiAgICBsZXQgc3VjY2VzcztcblxuICAgIGNvbnN0IHZhbGlkID0gKGFuc3dlciAhPT0gbnVsbCk7XG5cbiAgICBpZiAodmFsaWQpIHtcbiAgICAgIGNvbnN0IGFmZmlybWF0aXZlID0gaXNBbnN3ZXJBZmZpcm1hdGl2ZShhbnN3ZXIpO1xuXG4gICAgICBzdWNjZXNzID0gYWZmaXJtYXRpdmUgP1xuICAgICAgICAgICAgICAgICAgZXhlY1N5bmMoc2hlbGxDb21tYW5kcywgcXVpZXRseSkgOlxuICAgICAgICAgICAgICAgICAgICB0cnVlOyAvLy9cbiAgICB9IGVsc2Uge1xuICAgICAgc3VjY2VzcyA9IGZhbHNlO1xuICAgIH1cblxuICAgIGNhbGxiYWNrKHN1Y2Nlc3MpO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGV4ZWN1dGVSZXBlYXRlZGx5KHNoZWxsQ29tbWFuZHMsIHNwZWNpZmllciwgaW5kZXgsIGxlbmd0aCwgcXVpZXRseSwgY2FsbGJhY2spIHtcbiAgbGV0IHN1Y2Nlc3MgPSBmYWxzZTtcblxuICBjb25zdCBkZWxheSA9IFJFUEVBVEVEX0RFTEFZLFxuICAgICAgICBvZmZzZXQgPSBsZW5ndGggLSBpbmRleCwgIC8vL1xuICAgICAgICBhdHRlbXB0cyA9IFJFUEVBVEVEX0FUVEVNUFRTLFxuICAgICAgICBvcGVyYXRpb24gPSAobmV4dCwgZG9uZSwgY29udGV4dCwgaW5kZXgpID0+IHtcbiAgICAgICAgICBpZiAoaW5kZXggPT09IGF0dGVtcHRzKSB7XG4gICAgICAgICAgICBkb25lKCk7XG5cbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb25zdCBwcm9ncmVzc0NvdW50ID0gKGluZGV4ICsgMSksXG4gICAgICAgICAgICAgICAgcHJvZ3Jlc3NJbmRpY2F0b3IgPSBGVUxMX1NUT1AucmVwZWF0KHByb2dyZXNzQ291bnQpO1xuXG4gICAgICAgICAgb2Zmc2V0Q29uc29sZUxvZyhgIC0gJHtzcGVjaWZpZXJ9JHtwcm9ncmVzc0luZGljYXRvcn1gLCBvZmZzZXQpO1xuXG4gICAgICAgICAgZXhlY0FzeW5jKHNoZWxsQ29tbWFuZHMsIHF1aWV0bHksIChlcnJvciwgb3V0cHV0KSA9PiB7XG4gICAgICAgICAgICBpZiAoIWVycm9yKSB7XG4gICAgICAgICAgICAgIHN1Y2Nlc3MgPSB0cnVlO1xuXG4gICAgICAgICAgICAgIGRvbmUoKTtcblxuICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHNldFRpbWVvdXQobmV4dCwgZGVsYXkpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9O1xuXG4gIHdoaWxzdChvcGVyYXRpb24sICgpID0+IHtcbiAgICBjYWxsYmFjayhzdWNjZXNzKTtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIGV4ZWNTeW5jKHNoZWxsQ29tbWFuZHMsIHF1aWV0bHkpIHtcbiAgbGV0IHN1Y2Nlc3M7XG5cbiAgdHJ5IHtcbiAgICBjb25zdCBlbmNvZGluZyA9IFVURl84X0VOQ09ESU5HLCAgLy8vXG4gICAgICAgICAgb3B0aW9ucyA9IHtcbiAgICAgICAgICAgIGVuY29kaW5nXG4gICAgICAgICAgfSxcbiAgICAgICAgICBvdXRwdXQgPSBjaGlsZFByb2Nlc3MuZXhlY1N5bmMoc2hlbGxDb21tYW5kcywgb3B0aW9ucyk7XG5cbiAgICBpZiAoIXF1aWV0bHkpIHtcbiAgICAgIHByb2Nlc3Muc3Rkb3V0LndyaXRlKG91dHB1dCk7XG4gICAgfVxuXG4gICAgc3VjY2VzcyA9IHRydWU7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgc3VjY2VzcyA9IGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuIHN1Y2Nlc3M7XG59XG5cbmZ1bmN0aW9uIGV4ZWNBc3luYyhzaGVsbENvbW1hbmRzLCBxdWlldGx5LCBjYWxsYmFjaykge1xuICBjb25zdCBlbmNvZGluZyA9IFVURl84X0VOQ09ESU5HLCAgLy8vXG4gICAgICAgIG9wdGlvbnMgPSB7XG4gICAgICAgICAgZW5jb2RpbmdcbiAgICAgICAgfTtcblxuICBjaGlsZFByb2Nlc3MuZXhlYyhzaGVsbENvbW1hbmRzLCBvcHRpb25zLCAoZXJyb3IsIHN0ZG91dCwgc3RkZXJyKSA9PiB7XG4gICAgY29uc3Qgb3V0cHV0ID0gZXJyb3IgP1xuICAgICAgICAgICAgICAgICAgICAgc3RkZXJyIDpcbiAgICAgICAgICAgICAgICAgICAgICAgc3Rkb3V0O1xuXG4gICAgaWYgKCFxdWlldGx5KSB7XG4gICAgICBwcm9jZXNzLnN0ZG91dC53cml0ZShvdXRwdXQpO1xuICAgIH1cblxuICAgIGNhbGxiYWNrKGVycm9yLCBvdXRwdXQpXG4gIH0pO1xufVxuIl0sIm5hbWVzIjpbImV4ZWN1dGVQcm9tcHRseSIsImV4ZWN1dGVSZXBlYXRlZGx5IiwicHJvbXB0Iiwic2hlbGxVdGlsaXRpZXMiLCJ3aGlsc3QiLCJhc3luY2hyb25vdXNVdGlsaXRpZXMiLCJVVEZfOF9FTkNPRElORyIsImVuY29kaW5ncyIsInNoZWxsQ29tbWFuZHMiLCJxdWlldGx5IiwiY2FsbGJhY2siLCJzdWNjZXNzIiwiZXhlY1N5bmMiLCJhdHRlbXB0cyIsIlBST01QVF9BVFRFTVBUUyIsImRlc2NyaXB0aW9uIiwiRkFJTEVEX1NDUklQVF9ERVNDUklQVElPTiIsImVycm9yTWVzc2FnZSIsIklOVkFMSURfQU5TV0VSX01FU1NBR0UiLCJ2YWxpZGF0aW9uRnVuY3Rpb24iLCJ2YWxpZGF0ZUFuc3dlciIsIm9wdGlvbnMiLCJhbnN3ZXIiLCJ2YWxpZCIsImFmZmlybWF0aXZlIiwiaXNBbnN3ZXJBZmZpcm1hdGl2ZSIsInNwZWNpZmllciIsImluZGV4IiwibGVuZ3RoIiwiZGVsYXkiLCJSRVBFQVRFRF9ERUxBWSIsIm9mZnNldCIsIlJFUEVBVEVEX0FUVEVNUFRTIiwib3BlcmF0aW9uIiwibmV4dCIsImRvbmUiLCJjb250ZXh0IiwicHJvZ3Jlc3NDb3VudCIsInByb2dyZXNzSW5kaWNhdG9yIiwiRlVMTF9TVE9QIiwicmVwZWF0Iiwib2Zmc2V0Q29uc29sZUxvZyIsImV4ZWNBc3luYyIsImVycm9yIiwib3V0cHV0Iiwic2V0VGltZW91dCIsImVuY29kaW5nIiwiY2hpbGRQcm9jZXNzIiwicHJvY2VzcyIsInN0ZG91dCIsIndyaXRlIiwiZXhlYyIsInN0ZGVyciJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7O1FBaUJnQkE7ZUFBQUE7O1FBdUNBQztlQUFBQTs7O29FQXREUzt5QkFFd0M7d0JBRWxDO3dCQUNFO3NCQUNHO3dCQUNHOzRCQUNHO3lCQUNvQzs7Ozs7O0FBRTlFLElBQU0sQUFBRUMsU0FBV0MseUJBQWMsQ0FBekJELFFBQ0YsQUFBRUUsU0FBV0MsZ0NBQXFCLENBQWhDRCxRQUNGLEFBQUVFLGlCQUFtQkMsb0JBQVMsQ0FBNUJEO0FBRUQsU0FBU04sZ0JBQWdCUSxhQUFhLEVBQUVDLE9BQU8sRUFBRUMsUUFBUTtJQUM5RCxJQUFNQyxVQUFVQyxTQUFTSixlQUFlQztJQUV4QyxJQUFJRSxTQUFTO1FBQ1hELFNBQVNDO1FBRVQ7SUFDRjtJQUVBLElBQU1FLFdBQVdDLDBCQUFlLEVBQzFCQyxjQUFjQyx1Q0FBeUIsRUFDdkNDLGVBQWVDLGdDQUFzQixFQUNyQ0MscUJBQXFCQyx3QkFBYyxFQUNuQ0MsVUFBVTtRQUNSUixVQUFBQTtRQUNBRSxhQUFBQTtRQUNBRSxjQUFBQTtRQUNBRSxvQkFBQUE7SUFDRjtJQUVOakIsT0FBT21CLFNBQVMsU0FBQ0M7UUFDZixJQUFJWDtRQUVKLElBQU1ZLFFBQVNELFdBQVc7UUFFMUIsSUFBSUMsT0FBTztZQUNULElBQU1DLGNBQWNDLElBQUFBLDJCQUFtQixFQUFDSDtZQUV4Q1gsVUFBVWEsY0FDRVosU0FBU0osZUFBZUMsV0FDdEIsTUFBTSxHQUFHO1FBQ3pCLE9BQU87WUFDTEUsVUFBVTtRQUNaO1FBRUFELFNBQVNDO0lBQ1g7QUFDRjtBQUVPLFNBQVNWLGtCQUFrQk8sYUFBYSxFQUFFa0IsU0FBUyxFQUFFQyxLQUFLLEVBQUVDLE1BQU0sRUFBRW5CLE9BQU8sRUFBRUMsUUFBUTtJQUMxRixJQUFJQyxVQUFVO0lBRWQsSUFBTWtCLFFBQVFDLHlCQUFjLEVBQ3RCQyxTQUFTSCxTQUFTRCxPQUNsQmQsV0FBV21CLDRCQUFpQixFQUM1QkMsWUFBWSxTQUFDQyxNQUFNQyxNQUFNQyxTQUFTVDtRQUNoQyxJQUFJQSxVQUFVZCxVQUFVO1lBQ3RCc0I7WUFFQTtRQUNGO1FBRUEsSUFBTUUsZ0JBQWlCVixRQUFRLEdBQ3pCVyxvQkFBb0JDLG9CQUFTLENBQUNDLE1BQU0sQ0FBQ0g7UUFFM0NJLElBQUFBLDBCQUFnQixFQUFDLEFBQUMsTUFBaUJILE9BQVpaLFdBQThCLE9BQWxCWSxvQkFBcUJQO1FBRXhEVyxVQUFVbEMsZUFBZUMsU0FBUyxTQUFDa0MsT0FBT0M7WUFDeEMsSUFBSSxDQUFDRCxPQUFPO2dCQUNWaEMsVUFBVTtnQkFFVndCO2dCQUVBO1lBQ0Y7WUFFQVUsV0FBV1gsTUFBTUw7UUFDbkI7SUFDRjtJQUVOekIsT0FBTzZCLFdBQVc7UUFDaEJ2QixTQUFTQztJQUNYO0FBQ0Y7QUFFQSxTQUFTQyxTQUFTSixhQUFhLEVBQUVDLE9BQU87SUFDdEMsSUFBSUU7SUFFSixJQUFJO1FBQ0YsSUFBTW1DLFdBQVd4QyxnQkFDWGUsVUFBVTtZQUNSeUIsVUFBQUE7UUFDRixHQUNBRixTQUFTRyxzQkFBWSxDQUFDbkMsUUFBUSxDQUFDSixlQUFlYTtRQUVwRCxJQUFJLENBQUNaLFNBQVM7WUFDWnVDLFFBQVFDLE1BQU0sQ0FBQ0MsS0FBSyxDQUFDTjtRQUN2QjtRQUVBakMsVUFBVTtJQUNaLEVBQUUsT0FBT2dDLE9BQU87UUFDZGhDLFVBQVU7SUFDWjtJQUVBLE9BQU9BO0FBQ1Q7QUFFQSxTQUFTK0IsVUFBVWxDLGFBQWEsRUFBRUMsT0FBTyxFQUFFQyxRQUFRO0lBQ2pELElBQU1vQyxXQUFXeEMsZ0JBQ1hlLFVBQVU7UUFDUnlCLFVBQUFBO0lBQ0Y7SUFFTkMsc0JBQVksQ0FBQ0ksSUFBSSxDQUFDM0MsZUFBZWEsU0FBUyxTQUFDc0IsT0FBT00sUUFBUUc7UUFDeEQsSUFBTVIsU0FBU0QsUUFDRVMsU0FDRUg7UUFFbkIsSUFBSSxDQUFDeEMsU0FBUztZQUNadUMsUUFBUUMsTUFBTSxDQUFDQyxLQUFLLENBQUNOO1FBQ3ZCO1FBRUFsQyxTQUFTaUMsT0FBT0M7SUFDbEI7QUFDRiJ9
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ function _export(target, all) {
6
+ for(var name in all)Object.defineProperty(target, name, {
7
+ enumerable: true,
8
+ get: Object.getOwnPropertyDescriptor(all, name).get
9
+ });
10
+ }
11
+ _export(exports, {
12
+ get hideCursor () {
13
+ return hideCursor;
14
+ },
15
+ get offsetConsoleLog () {
16
+ return offsetConsoleLog;
17
+ },
18
+ get showCursor () {
19
+ return showCursor;
20
+ }
21
+ });
22
+ var _nodereadline = /*#__PURE__*/ _interop_require_default(require("node:readline"));
23
+ function _interop_require_default(obj) {
24
+ return obj && obj.__esModule ? obj : {
25
+ default: obj
26
+ };
27
+ }
28
+ function hideCursor() {
29
+ process.stdout.write('\u001B[?25l');
30
+ }
31
+ function showCursor() {
32
+ process.stdout.write('\u001B[?25h');
33
+ }
34
+ function offsetConsoleLog(message, offset) {
35
+ _nodereadline.default.moveCursor(process.stdout, 0, -offset);
36
+ _nodereadline.default.clearLine(process.stdout, 0);
37
+ _nodereadline.default.cursorTo(process.stdout, 0);
38
+ process.stdout.write(message);
39
+ _nodereadline.default.moveCursor(process.stdout, 0, offset);
40
+ _nodereadline.default.cursorTo(process.stdout, 0);
41
+ }
42
+
43
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvdGVybWluYWwuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCByZWFkbGluZSBmcm9tICdub2RlOnJlYWRsaW5lJztcblxuZXhwb3J0IGZ1bmN0aW9uIGhpZGVDdXJzb3IoKSB7XG4gIHByb2Nlc3Muc3Rkb3V0LndyaXRlKCdcXHUwMDFCWz8yNWwnKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNob3dDdXJzb3IoKSB7XG4gIHByb2Nlc3Muc3Rkb3V0LndyaXRlKCdcXHUwMDFCWz8yNWgnKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG9mZnNldENvbnNvbGVMb2cobWVzc2FnZSwgb2Zmc2V0KSB7XG4gIHJlYWRsaW5lLm1vdmVDdXJzb3IocHJvY2Vzcy5zdGRvdXQsIDAsIC1vZmZzZXQpO1xuXG4gIHJlYWRsaW5lLmNsZWFyTGluZShwcm9jZXNzLnN0ZG91dCwgMCk7XG5cbiAgcmVhZGxpbmUuY3Vyc29yVG8ocHJvY2Vzcy5zdGRvdXQsIDApO1xuXG4gIHByb2Nlc3Muc3Rkb3V0LndyaXRlKG1lc3NhZ2UpO1xuXG4gIHJlYWRsaW5lLm1vdmVDdXJzb3IocHJvY2Vzcy5zdGRvdXQsIDAsIG9mZnNldCk7XG5cbiAgcmVhZGxpbmUuY3Vyc29yVG8ocHJvY2Vzcy5zdGRvdXQsIDApO1xufVxuIl0sIm5hbWVzIjpbImhpZGVDdXJzb3IiLCJvZmZzZXRDb25zb2xlTG9nIiwic2hvd0N1cnNvciIsInByb2Nlc3MiLCJzdGRvdXQiLCJ3cml0ZSIsIm1lc3NhZ2UiLCJvZmZzZXQiLCJyZWFkbGluZSIsIm1vdmVDdXJzb3IiLCJjbGVhckxpbmUiLCJjdXJzb3JUbyJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7O1FBSWdCQTtlQUFBQTs7UUFRQUM7ZUFBQUE7O1FBSkFDO2VBQUFBOzs7bUVBTks7Ozs7OztBQUVkLFNBQVNGO0lBQ2RHLFFBQVFDLE1BQU0sQ0FBQ0MsS0FBSyxDQUFDO0FBQ3ZCO0FBRU8sU0FBU0g7SUFDZEMsUUFBUUMsTUFBTSxDQUFDQyxLQUFLLENBQUM7QUFDdkI7QUFFTyxTQUFTSixpQkFBaUJLLE9BQU8sRUFBRUMsTUFBTTtJQUM5Q0MscUJBQVEsQ0FBQ0MsVUFBVSxDQUFDTixRQUFRQyxNQUFNLEVBQUUsR0FBRyxDQUFDRztJQUV4Q0MscUJBQVEsQ0FBQ0UsU0FBUyxDQUFDUCxRQUFRQyxNQUFNLEVBQUU7SUFFbkNJLHFCQUFRLENBQUNHLFFBQVEsQ0FBQ1IsUUFBUUMsTUFBTSxFQUFFO0lBRWxDRCxRQUFRQyxNQUFNLENBQUNDLEtBQUssQ0FBQ0M7SUFFckJFLHFCQUFRLENBQUNDLFVBQVUsQ0FBQ04sUUFBUUMsTUFBTSxFQUFFLEdBQUdHO0lBRXZDQyxxQkFBUSxDQUFDRyxRQUFRLENBQUNSLFFBQVFDLE1BQU0sRUFBRTtBQUNwQyJ9
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "propagate-cli",
3
3
  "author": "James Smith",
4
- "version": "1.12.3",
4
+ "version": "1.12.6",
5
5
  "license": "MIT, Anti-996",
6
6
  "homepage": "https://github.com/djalbat/propagate-cli",
7
7
  "description": "Propagate updated packages throughout a project.",
package/src/constants.js CHANGED
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
 
3
3
  export const YES = "yes";
4
+ export const FULL_STOP = ".";
4
5
  export const PROPAGATE = "propagate";
5
6
  export const DOUBLE_DOTS = "..";
6
7
  export const EMPTY_STRING = "";
package/src/release.js CHANGED
@@ -5,6 +5,7 @@ import { arrayUtilities, templateUtilities, asynchronousUtilities } from "necess
5
5
  import Version from "./version";
6
6
 
7
7
  import { readPackageJSONFile } from "./utilities/packageJSON";
8
+ import { showCursor, hideCursor } from "./utilities/terminal";
8
9
  import { executePromptly, executeRepeatedly } from "./utilities/shell";
9
10
  import { retrieveShellCommands, retrieveIgnoredBuilds, retrieveIgnoredPublishes } from "./configuration";
10
11
 
@@ -91,32 +92,39 @@ export default class Release {
91
92
  console.log(`Polling for the dependency:`) :
92
93
  console.log(`Polling for the dependenies:`);
93
94
 
94
- const operations = specifiers.map((specifier) => {
95
- return (next, done, context, index) => {
96
- const shellCommands = shellCommandsFromSpecifier(specifier);
95
+ hideCursor();
97
96
 
98
- console.log(` - ${specifier} `);
97
+ specifiers.forEach((specifier) => {
98
+ console.log(` - ${specifier}`);
99
+ });
99
100
 
100
- executeRepeatedly(shellCommands, quietly, (success) => {
101
- if (success) {
102
- const polledSpecifier = specifier; ///
101
+ const length = specifiersLength, ///
102
+ operations = specifiers.map((specifier, index) => {
103
+ return (next, done, context) => {
104
+ const shellCommands = shellCommandsFromSpecifier(specifier);
103
105
 
104
- prune(specifiers, (specifier) => {
105
- if (specifier !== polledSpecifier) {
106
- return true;
107
- }
108
- });
109
- }
106
+ executeRepeatedly(shellCommands, specifier, index, length, quietly, (success) => {
107
+ if (success) {
108
+ const polledSpecifier = specifier; ///
110
109
 
111
- next();
112
- });
113
- };
114
- });
110
+ prune(specifiers, (specifier) => {
111
+ if (specifier !== polledSpecifier) {
112
+ return true;
113
+ }
114
+ });
115
+ }
116
+
117
+ next();
118
+ });
119
+ };
120
+ });
115
121
 
116
122
  eventually(operations, () => {
117
123
  const specifiersLength = specifiers.length,
118
124
  success = (specifiersLength === 0);
119
125
 
126
+ showCursor();
127
+
120
128
  callback(success);
121
129
  });
122
130
  }
@@ -5,10 +5,11 @@ import childProcess from "child_process";
5
5
  import { encodings, shellUtilities, asynchronousUtilities } from "necessary";
6
6
 
7
7
  import { validateAnswer } from "../utilities/validate";
8
+ import { offsetConsoleLog } from "../utilities/terminal";
8
9
  import { isAnswerAffirmative } from "../utilities/prompt";
9
10
  import { INVALID_ANSWER_MESSAGE } from "../messages";
10
11
  import { FAILED_SCRIPT_DESCRIPTION } from "../descriptions";
11
- import { REPEATED_DELAY, PROMPT_ATTEMPTS, REPEATED_ATTEMPTS } from "../constants";
12
+ import { FULL_STOP, REPEATED_DELAY, PROMPT_ATTEMPTS, REPEATED_ATTEMPTS } from "../constants";
12
13
 
13
14
  const { prompt } = shellUtilities,
14
15
  { whilst } = asynchronousUtilities,
@@ -53,10 +54,11 @@ export function executePromptly(shellCommands, quietly, callback) {
53
54
  });
54
55
  }
55
56
 
56
- export function executeRepeatedly(shellCommands, quietly, callback) {
57
+ export function executeRepeatedly(shellCommands, specifier, index, length, quietly, callback) {
57
58
  let success = false;
58
59
 
59
60
  const delay = REPEATED_DELAY,
61
+ offset = length - index, ///
60
62
  attempts = REPEATED_ATTEMPTS,
61
63
  operation = (next, done, context, index) => {
62
64
  if (index === attempts) {
@@ -65,6 +67,11 @@ export function executeRepeatedly(shellCommands, quietly, callback) {
65
67
  return;
66
68
  }
67
69
 
70
+ const progressCount = (index + 1),
71
+ progressIndicator = FULL_STOP.repeat(progressCount);
72
+
73
+ offsetConsoleLog(` - ${specifier}${progressIndicator}`, offset);
74
+
68
75
  execAsync(shellCommands, quietly, (error, output) => {
69
76
  if (!error) {
70
77
  success = true;
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+
3
+ import readline from 'node:readline';
4
+
5
+ export function hideCursor() {
6
+ process.stdout.write('\u001B[?25l');
7
+ }
8
+
9
+ export function showCursor() {
10
+ process.stdout.write('\u001B[?25h');
11
+ }
12
+
13
+ export function offsetConsoleLog(message, offset) {
14
+ readline.moveCursor(process.stdout, 0, -offset);
15
+
16
+ readline.clearLine(process.stdout, 0);
17
+
18
+ readline.cursorTo(process.stdout, 0);
19
+
20
+ process.stdout.write(message);
21
+
22
+ readline.moveCursor(process.stdout, 0, offset);
23
+
24
+ readline.cursorTo(process.stdout, 0);
25
+ }