Comparing version 1.2.0 to 1.2.1
@@ -0,1 +1,7 @@ | ||
# 1.2.1 (Jun 15, 2020) | ||
* fix: Force all options after an extension is found to be an argument. | ||
* fix: Sort commands and extensions alphabetically in the help output. | ||
* chore: Updated dependencies. | ||
# 1.2.0 (Jun 3, 2020) | ||
@@ -2,0 +8,0 @@ |
@@ -215,17 +215,16 @@ "use strict"; | ||
if (!hidden && !clikitHelp) { | ||
const labels = [name]; | ||
const labels = new Set([name]); | ||
for (const [alias, display] of Object.entries(aliases)) { | ||
if (display === 'visible') { | ||
labels.push(alias); | ||
labels.add(alias); | ||
} | ||
} | ||
labels.sort((a, b) => { | ||
return a.length === b.length ? a.localeCompare(b) : a.length - b.length; | ||
}); | ||
entries.push({ | ||
name, | ||
desc, | ||
label: labels.join(', '), | ||
label: Array.from(labels).sort((a, b) => { | ||
return a.length === b.length ? a.localeCompare(b) : a.length - b.length; | ||
}).join(', '), | ||
aliases: aliases ? Object.keys(aliases) : null | ||
@@ -246,2 +245,2 @@ }); | ||
exports.default = CommandMap; | ||
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInBhcnNlci9jb21tYW5kLW1hcC5qcyJdLCJuYW1lcyI6WyJDb21tYW5kIiwianNSZWdFeHAiLCJDb21tYW5kTWFwIiwiTWFwIiwiY29uc3RydWN0b3IiLCJhZGQiLCJjbWQiLCJwYXJhbXMiLCJFIiwiSU5WQUxJRF9BUkdVTUVOVCIsIm5hbWUiLCJzY29wZSIsInZhbHVlIiwicmVxdWlyZSIsImRlZmF1bHQiLCJ1bmRlZmluZWQiLCJhY3Rpb24iLCJyZXN1bHRzIiwiY29tbWFuZHMiLCJjbGlraXQiLCJTZXQiLCJoYXMiLCJ2YWx1ZXMiLCJBcnJheSIsImlzQXJyYXkiLCJpdCIsInBhdGgiLCJyZXNvbHZlIiwic3RhdCIsImZzIiwic3RhdFN5bmMiLCJkaXIiLCJpc0RpcmVjdG9yeSIsImZpbGVzIiwicmVhZGRpclN5bmMiLCJtIiwiZmlsZW5hbWUiLCJtYXRjaCIsIm1vZHVsZSIsImpvaW4iLCJfX2VzTW9kdWxlIiwic2V0IiwicHVzaCIsImUiLCJjb2RlIiwiRklMRV9OT1RfRk9VTkQiLCJJTlZBTElEX0NPTU1BTkQiLCJmcm9tIiwiT2JqZWN0IiwiZW50cmllcyIsImNvdW50Iiwic2l6ZSIsImdlbmVyYXRlSGVscCIsImtleXMiLCJhbGlhc2VzIiwiY2xpa2l0SGVscCIsImRlc2MiLCJoaWRkZW4iLCJnZXQiLCJsYWJlbHMiLCJhbGlhcyIsImRpc3BsYXkiLCJzb3J0IiwiYSIsImIiLCJsZW5ndGgiLCJsb2NhbGVDb21wYXJlIiwibGFiZWwiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFFQTs7OztBQUVBLElBQUlBLE9BQUo7QUFFQTs7Ozs7O0FBS0EsTUFBTUMsUUFBUSxHQUFHLFlBQWpCO0FBRUE7Ozs7OztBQUtlLE1BQU1DLFVBQU4sU0FBeUJDLEdBQXpCLENBQTZCO0FBQzNDOzs7OztBQUtBQyxFQUFBQSxXQUFXLEdBQUc7QUFDYjtBQUNBLGtDQUFtQixJQUFuQixFQUF5QixZQUF6QjtBQUNBO0FBRUQ7Ozs7Ozs7Ozs7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QixDQUF4QixHQUE2Q0QsQ0FBQyxDQUFDRSxNQUFGLEdBQVdELENBQUMsQ0FBQ0MsTUFBakU7QUFDQSxTQUZEO0FBSUFoQixRQUFBQSxPQUFPLENBQUNQLElBQVIsQ0FBYTtBQUNaaEMsVUFBQUEsSUFEWTtBQUVaOEMsVUFBQUEsSUFGWTtBQUdaVyxVQUFBQSxLQUFLLEVBQUVSLE1BQU0sQ0FBQ3BCLElBQVAsQ0FBWSxJQUFaLENBSEs7QUFJWmUsVUFBQUEsT0FBTyxFQUFFQSxPQUFPLEdBQUdOLE1BQU0sQ0FBQ0ssSUFBUCxDQUFZQyxPQUFaLENBQUgsR0FBMEI7QUFKOUIsU0FBYjtBQU1BO0FBQ0Q7O0FBRURMLElBQUFBLE9BQU8sQ0FBQ2EsSUFBUixDQUFhLENBQUNDLENBQUQsRUFBSUMsQ0FBSixLQUFVRCxDQUFDLENBQUNJLEtBQUYsQ0FBUUQsYUFBUixDQUFzQkYsQ0FBQyxDQUFDRyxLQUF4QixDQUF2QjtBQUVBLFdBQU87QUFDTmpCLE1BQUFBLEtBQUssRUFBRUQsT0FBTyxDQUFDZ0IsTUFEVDtBQUVOaEIsTUFBQUE7QUFGTSxLQUFQO0FBSUE7O0FBckswQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBFIGZyb20gJy4uL2xpYi9lcnJvcnMnO1xuaW1wb3J0IGZzIGZyb20gJ2ZzJztcbmltcG9ydCBwYXRoIGZyb20gJ3BhdGgnO1xuXG5pbXBvcnQgeyBkZWNsYXJlQ0xJS2l0Q2xhc3MgfSBmcm9tICcuLi9saWIvdXRpbCc7XG5cbmxldCBDb21tYW5kO1xuXG4vKipcbiAqIE1hdGNoZXNcbiAqXG4gKiBAdHlwZSB7UmVnRXhwfVxuICovXG5jb25zdCBqc1JlZ0V4cCA9IC9eKC4rKVxcLmpzJC87XG5cbi8qKlxuICogU3RvcmVzIGEgbWFwIG9mIGBDb21tYW5kYCBpbnN0YW5jZXMgdGhhdCBoYXZlIGJlZW4gcmVnaXN0ZXJlZCBmb3IgYSBjb250ZXh0LlxuICpcbiAqIEBleHRlbmRzIHtNYXB9XG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIENvbW1hbmRNYXAgZXh0ZW5kcyBNYXAge1xuXHQvKipcblx0ICogRGVjbGFyZXMgdGhlIGNsYXNzIG5hbWUuXG5cdCAqXG5cdCAqIEBhY2Nlc3MgcHVibGljXG5cdCAqL1xuXHRjb25zdHJ1Y3RvcigpIHtcblx0XHRzdXBlcigpO1xuXHRcdGRlY2xhcmVDTElLaXRDbGFzcyh0aGlzLCAnQ29tbWFuZE1hcCcpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEFkZHMgYSBjb21tYW5kIHRvIHRoZSBtYXAuXG5cdCAqXG5cdCAqIEBwYXJhbSB7T2JqZWN0fFN0cmluZ3xDb21tYW5kfENvbW1hbmRNYXB8QXJyYXkuPE9iamVjdHxTdHJpbmd8Q29tbWFuZD59IGNtZCAtIEFuIG9iamVjdCB1c2VkXG5cdCAqIGZvciBgQ29tbWFuZGAgY29uc3RydWN0b3IgcGFyYW1zLCBhIHBhdGggdG8gYSBkaXJlY3Rvcnkgb3IgYSBgLmpzYCBmaWxlLCBhIGBDb21tYW5kYFxuXHQgKiBpbnN0YW5jZSwgb3IgYW4gYXJyYXkgb2YgdGhvc2UgdHlwZXMuIE1heSBhbHNvIGJlIGEgYENvbW1hbmRNYXBgIGluc3RhbmNlLiBJZiBgY21kYCBpcyBhXG5cdCAqIGBTdHJpbmdgIGFuZCBgcGFyYW1zYCBpcyBwcmVzZW50LCB0aGVuIGl0IHdpbGwgdHJlYXQgYGNtZGAgYXMgdGhlIGNvbW1hbmQgbmFtZSwgbm90IGEgZmlsZVxuXHQgKiBwYXRoLlxuXHQgKiBAcGFyYW0ge09iamVjdHxGdW5jdGlvbn0gW3BhcmFtc10gLSBXaGVuIGBjbWRgIGlzIHRoZSBjb21tYW5kIG5hbWUsIHRoZW4gdGhpcyBpcyB0aGUgb3B0aW9uc1xuXHQgKiB0byBwYXNzIGludG8gdGhlIGBDb21tYW5kYCBjb25zdHJ1Y3Rvci5cblx0ICogQHJldHVybnMge0FycmF5LjxDb21tYW5kPn1cblx0ICogQGFjY2VzcyBwdWJsaWNcblx0ICovXG5cdGFkZChjbWQsIHBhcmFtcykge1xuXHRcdGlmICghY21kKSB7XG5cdFx0XHR0aHJvdyBFLklOVkFMSURfQVJHVU1FTlQoJ0ludmFsaWQgY29tbWFuZCcsIHsgbmFtZTogJ2NtZCcsIHNjb3BlOiAnQ29tbWFuZE1hcC5hZGQnLCB2YWx1ZTogY21kIH0pO1xuXHRcdH1cblxuXHRcdGlmICghQ29tbWFuZCkge1xuXHRcdFx0Q29tbWFuZCA9IHJlcXVpcmUoJy4vY29tbWFuZCcpLmRlZmF1bHQ7XG5cdFx0fVxuXG5cdFx0aWYgKHBhcmFtcyAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRpZiAodHlwZW9mIGNtZCAhPT0gJ3N0cmluZycpIHtcblx0XHRcdFx0dGhyb3cgRS5JTlZBTElEX0FSR1VNRU5UKCdDb21tYW5kIHBhcmFtZXRlcnMgYXJlIG9ubHkgYWxsb3dlZCB3aGVuIGNvbW1hbmQgaXMgYSBzdHJpbmcnLCB7IG5hbWU6ICdjbWQnLCBzY29wZTogJ0NvbW1hbmRNYXAuYWRkJywgdmFsdWU6IHsgY21kLCBwYXJhbXMgfSB9KTtcblx0XHRcdH0gZWxzZSBpZiAodHlwZW9mIHBhcmFtcyA9PT0gJ2Z1bmN0aW9uJykge1xuXHRcdFx0XHRwYXJhbXMgPSB7IGFjdGlvbjogcGFyYW1zIH07XG5cdFx0XHR9IGVsc2UgaWYgKHR5cGVvZiBwYXJhbXMgIT09ICdvYmplY3QnKSB7XG5cdFx0XHRcdHRocm93IEUuSU5WQUxJRF9BUkdVTUVOVCgnRXhwZWN0ZWQgY29tbWFuZCBwYXJhbWV0ZXJzIHRvIGJlIGFuIG9iamVjdCBvciBmdW5jdGlvbicsIHsgbmFtZTogJ3BhcmFtcycsIHNjb3BlOiAnQ29tbWFuZE1hcC5hZGQnLCB2YWx1ZTogeyBjbWQsIHBhcmFtcyB9IH0pO1xuXHRcdFx0fVxuXHRcdFx0Y21kID0gbmV3IENvbW1hbmQoY21kLCBwYXJhbXMpO1xuXHRcdH1cblxuXHRcdGNvbnN0IHJlc3VsdHMgPSBbXTtcblx0XHRjb25zdCBjb21tYW5kcyA9IHR5cGVvZiBjbWQgPT09ICdvYmplY3QnICYmIGNtZC5jbGlraXQgaW5zdGFuY2VvZiBTZXQgJiYgKGNtZC5jbGlraXQuaGFzKCdDb21tYW5kTGlzdCcpIHx8IGNtZC5jbGlraXQuaGFzKCdDb21tYW5kTWFwJykpID9cblx0XHRcdGNtZC52YWx1ZXMoKSA6XG5cdFx0XHRBcnJheS5pc0FycmF5KGNtZCkgPyBjbWQgOiBbIGNtZCBdO1xuXG5cdFx0Zm9yIChsZXQgaXQgb2YgY29tbWFuZHMpIHtcblx0XHRcdGNtZCA9IG51bGw7XG5cblx0XHRcdGlmIChpdCBpbnN0YW5jZW9mIENvbW1hbmQpIHtcblx0XHRcdFx0Y21kID0gaXQ7XG5cdFx0XHR9IGVsc2UgaWYgKHR5cGVvZiBpdCA9PT0gJ3N0cmluZycpIHtcblx0XHRcdFx0Ly8gcGF0aFxuXHRcdFx0XHRpdCA9IHBhdGgucmVzb2x2ZShpdCk7XG5cblx0XHRcdFx0dHJ5IHtcblx0XHRcdFx0XHRjb25zdCBzdGF0ID0gZnMuc3RhdFN5bmMoaXQpO1xuXHRcdFx0XHRcdGNvbnN0IGRpciA9IHN0YXQuaXNEaXJlY3RvcnkoKSA/IGl0IDogJyc7XG5cdFx0XHRcdFx0Y29uc3QgZmlsZXMgPSBkaXIgPyBmcy5yZWFkZGlyU3luYyhpdCkgOiBbIGl0IF07XG5cdFx0XHRcdFx0bGV0IG07XG5cdFx0XHRcdFx0Zm9yIChjb25zdCBmaWxlbmFtZSBvZiBmaWxlcykge1xuXHRcdFx0XHRcdFx0aWYgKG0gPSBmaWxlbmFtZS5tYXRjaChqc1JlZ0V4cCkpIHtcblx0XHRcdFx0XHRcdFx0Y29uc3QgbW9kdWxlID0gcmVxdWlyZShwYXRoLmpvaW4oZGlyLCBmaWxlbmFtZSkpO1xuXHRcdFx0XHRcdFx0XHRjbWQgPSBuZXcgQ29tbWFuZChtWzFdLCBtb2R1bGUuX19lc01vZHVsZSA/IG1vZHVsZS5kZWZhdWx0IDogbW9kdWxlKTtcblx0XHRcdFx0XHRcdFx0dGhpcy5zZXQoY21kLm5hbWUsIGNtZCk7XG5cdFx0XHRcdFx0XHRcdHJlc3VsdHMucHVzaChjbWQpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSBjYXRjaCAoZSkge1xuXHRcdFx0XHRcdGlmIChlLmNvZGUgPT09ICdFTk9FTlQnKSB7XG5cdFx0XHRcdFx0XHR0aHJvdyBFLkZJTEVfTk9UX0ZPVU5EKGBDb21tYW5kIHBhdGggZG9lcyBub3QgZXhpc3Q6ICR7aXR9YCwgeyBuYW1lOiAnY29tbWFuZCcsIHNjb3BlOiAnQ29tbWFuZE1hcC5hZGQnLCB2YWx1ZTogaXQgfSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHRocm93IGU7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRjb250aW51ZTtcblxuXHRcdFx0fSBlbHNlIGlmIChpdCAmJiB0eXBlb2YgaXQgPT09ICdvYmplY3QnKSB7XG5cdFx0XHRcdC8vIGN0b3IgcGFyYW1zIG9yIENvbW1hbmQtbGlrZVxuXHRcdFx0XHRpZiAoaXQuY2xpa2l0IGluc3RhbmNlb2YgU2V0KSB7XG5cdFx0XHRcdFx0aWYgKGl0LmNsaWtpdC5oYXMoJ0V4dGVuc2lvbicpKSB7XG5cdFx0XHRcdFx0XHQvLyBhY3Rpb25zIGFuZCBleHRlbnNpb25zIG5vdCBzdXBwb3J0ZWQgaGVyZVxuXHRcdFx0XHRcdFx0Y29udGludWU7XG5cdFx0XHRcdFx0fSBlbHNlIGlmIChpdC5jbGlraXQuaGFzKCdDb21tYW5kJykpIHtcblx0XHRcdFx0XHRcdGNtZCA9IG5ldyBDb21tYW5kKGl0Lm5hbWUsIGl0KTtcblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0dGhyb3cgRS5JTlZBTElEX0NPTU1BTkQoYEludmFsaWQgY29tbWFuZDogY2xpLWtpdCB0eXBlIFwiJHtBcnJheS5mcm9tKGl0LmNsaWtpdClbMF19XCIgbm90IHN1cHBvcnRlZGAsIHsgbmFtZTogJ2NvbW1hbmQnLCBzY29wZTogJ0NvbW1hbmRNYXAuYWRkJywgdmFsdWU6IGl0IH0pO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSBlbHNlIGlmIChpdC5uYW1lICYmIHR5cGVvZiBpdC5uYW1lID09PSAnc3RyaW5nJykge1xuXHRcdFx0XHRcdC8vIHRoZSBvYmplY3QgaXMgY29tbWFuZCBjdG9yIHBhcmFtc1xuXHRcdFx0XHRcdGNtZCA9IG5ldyBDb21tYW5kKGl0Lm5hbWUsIGl0KTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHQvLyBhbiBvYmplY3Qgb2YgY29tbWFuZCBuYW1lcyB0byBhIHBhdGgsIGN0b3IgcGFyYW1zLCBDb21tYW5kIG9iamVjdCwgb3IgQ29tbWFuZC1saWtlIG9iamVjdFxuXG5cdFx0XHRcdFx0Zm9yIChjb25zdCBbIG5hbWUsIHZhbHVlIF0gb2YgT2JqZWN0LmVudHJpZXMoaXQpKSB7XG5cdFx0XHRcdFx0XHRjbWQgPSBuZXcgQ29tbWFuZChuYW1lLCB2YWx1ZSk7XG5cdFx0XHRcdFx0XHR0aGlzLnNldChjbWQubmFtZSwgY21kKTtcblx0XHRcdFx0XHRcdHJlc3VsdHMucHVzaChjbWQpO1xuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdGNvbnRpbnVlO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdGlmIChjbWQgaW5zdGFuY2VvZiBDb21tYW5kKSB7XG5cdFx0XHRcdHRoaXMuc2V0KGNtZC5uYW1lLCBjbWQpO1xuXHRcdFx0XHRyZXN1bHRzLnB1c2goY21kKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHRocm93IEUuSU5WQUxJRF9BUkdVTUVOVChgSW52YWxpZCBjb21tYW5kIFwiJHtpdH1cIiwgZXhwZWN0ZWQgYW4gb2JqZWN0YCwgeyBuYW1lOiAnY29tbWFuZCcsIHNjb3BlOiAnQ29tbWFuZE1hcC5hZGQnLCB2YWx1ZTogaXQgfSk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHJlc3VsdHM7XG5cdH1cblxuXHQvKipcblx0ICogUmV0dXJucyB0aGUgbnVtYmVyIG9mIGNvbW1hbmRzLlxuXHQgKlxuXHQgKiBAcmV0dXJucyB7TnVtYmVyfVxuXHQgKiBAYWNjZXNzIHB1YmxpY1xuXHQgKi9cblx0Z2V0IGNvdW50KCkge1xuXHRcdHJldHVybiB0aGlzLnNpemU7XG5cdH1cblxuXHQvKipcblx0ICogR2VuZXJhdGVzIGFuIG9iamVjdCBjb250YWluaW5nIHRoZSBjb21tYW5kcyBmb3IgdGhlIGhlbHAgc2NyZWVuLlxuXHQgKlxuXHQgKiBAcmV0dXJucyB7T2JqZWN0fVxuXHQgKiBAYWNjZXNzIHB1YmxpY1xuXHQgKi9cblx0Z2VuZXJhdGVIZWxwKCkge1xuXHRcdGNvbnN0IGVudHJpZXMgPSBbXTtcblxuXHRcdGZvciAoY29uc3QgY21kIG9mIEFycmF5LmZyb20odGhpcy5rZXlzKCkpKSB7XG5cdFx0XHRjb25zdCB7IGFsaWFzZXMsIGNsaWtpdEhlbHAsIGRlc2MsIGhpZGRlbiwgbmFtZSB9ID0gdGhpcy5nZXQoY21kKTtcblx0XHRcdGlmICghaGlkZGVuICYmICFjbGlraXRIZWxwKSB7XG5cdFx0XHRcdGNvbnN0IGxhYmVscyA9IFsgbmFtZSBdO1xuXHRcdFx0XHRmb3IgKGNvbnN0IFsgYWxpYXMsIGRpc3BsYXkgXSBvZiBPYmplY3QuZW50cmllcyhhbGlhc2VzKSkge1xuXHRcdFx0XHRcdGlmIChkaXNwbGF5ID09PSAndmlzaWJsZScpIHtcblx0XHRcdFx0XHRcdGxhYmVscy5wdXNoKGFsaWFzKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdFx0bGFiZWxzLnNvcnQoKGEsIGIpID0+IHtcblx0XHRcdFx0XHRyZXR1cm4gYS5sZW5ndGggPT09IGIubGVuZ3RoID8gYS5sb2NhbGVDb21wYXJlKGIpIDogYS5sZW5ndGggLSBiLmxlbmd0aDtcblx0XHRcdFx0fSk7XG5cblx0XHRcdFx0ZW50cmllcy5wdXNoKHtcblx0XHRcdFx0XHRuYW1lLFxuXHRcdFx0XHRcdGRlc2MsXG5cdFx0XHRcdFx0bGFiZWw6IGxhYmVscy5qb2luKCcsICcpLFxuXHRcdFx0XHRcdGFsaWFzZXM6IGFsaWFzZXMgPyBPYmplY3Qua2V5cyhhbGlhc2VzKSA6IG51bGxcblx0XHRcdFx0fSk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0ZW50cmllcy5zb3J0KChhLCBiKSA9PiBhLmxhYmVsLmxvY2FsZUNvbXBhcmUoYi5sYWJlbCkpO1xuXG5cdFx0cmV0dXJuIHtcblx0XHRcdGNvdW50OiBlbnRyaWVzLmxlbmd0aCxcblx0XHRcdGVudHJpZXNcblx0XHR9O1xuXHR9XG59XG4iXSwiZmlsZSI6InBhcnNlci9jb21tYW5kLW1hcC5qcyJ9 | ||
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInBhcnNlci9jb21tYW5kLW1hcC5qcyJdLCJuYW1lcyI6WyJDb21tYW5kIiwianNSZWdFeHAiLCJDb21tYW5kTWFwIiwiTWFwIiwiY29uc3RydWN0b3IiLCJhZGQiLCJjbWQiLCJwYXJhbXMiLCJFIiwiSU5WQUxJRF9BUkdVTUVOVCIsIm5hbWUiLCJzY29wZSIsInZhbHVlIiwicmVxdWlyZSIsImRlZmF1bHQiLCJ1bmRlZmluZWQiLCJhY3Rpb24iLCJyZXN1bHRzIiwiY29tbWFuZHMiLCJjbGlraXQiLCJTZXQiLCJoYXMiLCJ2YWx1ZXMiLCJBcnJheSIsImlzQXJyYXkiLCJpdCIsInBhdGgiLCJyZXNvbHZlIiwic3RhdCIsImZzIiwic3RhdFN5bmMiLCJkaXIiLCJpc0RpcmVjdG9yeSIsImZpbGVzIiwicmVhZGRpclN5bmMiLCJtIiwiZmlsZW5hbWUiLCJtYXRjaCIsIm1vZHVsZSIsImpvaW4iLCJfX2VzTW9kdWxlIiwic2V0IiwicHVzaCIsImUiLCJjb2RlIiwiRklMRV9OT1RfRk9VTkQiLCJJTlZBTElEX0NPTU1BTkQiLCJmcm9tIiwiT2JqZWN0IiwiZW50cmllcyIsImNvdW50Iiwic2l6ZSIsImdlbmVyYXRlSGVscCIsImtleXMiLCJhbGlhc2VzIiwiY2xpa2l0SGVscCIsImRlc2MiLCJoaWRkZW4iLCJnZXQiLCJsYWJlbHMiLCJhbGlhcyIsImRpc3BsYXkiLCJsYWJlbCIsInNvcnQiLCJhIiwiYiIsImxlbmd0aCIsImxvY2FsZUNvbXBhcmUiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFFQTs7OztBQUVBLElBQUlBLE9BQUo7QUFFQTs7Ozs7O0FBS0EsTUFBTUMsUUFBUSxHQUFHLFlBQWpCO0FBRUE7Ozs7OztBQUtlLE1BQU1DLFVBQU4sU0FBeUJDLEdBQXpCLENBQTZCO0FBQzNDOzs7OztBQUtBQyxFQUFBQSxXQUFXLEdBQUc7QUFDYjtBQUNBLGtDQUFtQixJQUFuQixFQUF5QixZQUF6QjtBQUNBO0FBRUQ7Ozs7Ozs7Ozs7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bUJJLElBQW5CLENBQXdCLENBQUNDLENBQUQsRUFBSUMsQ0FBSixLQUFVO0FBQ3hDLG1CQUFPRCxDQUFDLENBQUNFLE1BQUYsS0FBYUQsQ0FBQyxDQUFDQyxNQUFmLEdBQXdCRixDQUFDLENBQUNHLGFBQUYsQ0FBZ0JGLENBQWhCLENBQXhCLEdBQTZDRCxDQUFDLENBQUNFLE1BQUYsR0FBV0QsQ0FBQyxDQUFDQyxNQUFqRTtBQUNBLFdBRk0sRUFFSjNCLElBRkksQ0FFQyxJQUZELENBSEs7QUFNWmUsVUFBQUEsT0FBTyxFQUFFQSxPQUFPLEdBQUdOLE1BQU0sQ0FBQ0ssSUFBUCxDQUFZQyxPQUFaLENBQUgsR0FBMEI7QUFOOUIsU0FBYjtBQVFBO0FBQ0Q7O0FBRURMLElBQUFBLE9BQU8sQ0FBQ2MsSUFBUixDQUFhLENBQUNDLENBQUQsRUFBSUMsQ0FBSixLQUFVRCxDQUFDLENBQUNGLEtBQUYsQ0FBUUssYUFBUixDQUFzQkYsQ0FBQyxDQUFDSCxLQUF4QixDQUF2QjtBQUVBLFdBQU87QUFDTlosTUFBQUEsS0FBSyxFQUFFRCxPQUFPLENBQUNpQixNQURUO0FBRU5qQixNQUFBQTtBQUZNLEtBQVA7QUFJQTs7QUFySzBDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEUgZnJvbSAnLi4vbGliL2Vycm9ycyc7XG5pbXBvcnQgZnMgZnJvbSAnZnMnO1xuaW1wb3J0IHBhdGggZnJvbSAncGF0aCc7XG5cbmltcG9ydCB7IGRlY2xhcmVDTElLaXRDbGFzcyB9IGZyb20gJy4uL2xpYi91dGlsJztcblxubGV0IENvbW1hbmQ7XG5cbi8qKlxuICogTWF0Y2hlc1xuICpcbiAqIEB0eXBlIHtSZWdFeHB9XG4gKi9cbmNvbnN0IGpzUmVnRXhwID0gL14oLispXFwuanMkLztcblxuLyoqXG4gKiBTdG9yZXMgYSBtYXAgb2YgYENvbW1hbmRgIGluc3RhbmNlcyB0aGF0IGhhdmUgYmVlbiByZWdpc3RlcmVkIGZvciBhIGNvbnRleHQuXG4gKlxuICogQGV4dGVuZHMge01hcH1cbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQ29tbWFuZE1hcCBleHRlbmRzIE1hcCB7XG5cdC8qKlxuXHQgKiBEZWNsYXJlcyB0aGUgY2xhc3MgbmFtZS5cblx0ICpcblx0ICogQGFjY2VzcyBwdWJsaWNcblx0ICovXG5cdGNvbnN0cnVjdG9yKCkge1xuXHRcdHN1cGVyKCk7XG5cdFx0ZGVjbGFyZUNMSUtpdENsYXNzKHRoaXMsICdDb21tYW5kTWFwJyk7XG5cdH1cblxuXHQvKipcblx0ICogQWRkcyBhIGNvbW1hbmQgdG8gdGhlIG1hcC5cblx0ICpcblx0ICogQHBhcmFtIHtPYmplY3R8U3RyaW5nfENvbW1hbmR8Q29tbWFuZE1hcHxBcnJheS48T2JqZWN0fFN0cmluZ3xDb21tYW5kPn0gY21kIC0gQW4gb2JqZWN0IHVzZWRcblx0ICogZm9yIGBDb21tYW5kYCBjb25zdHJ1Y3RvciBwYXJhbXMsIGEgcGF0aCB0byBhIGRpcmVjdG9yeSBvciBhIGAuanNgIGZpbGUsIGEgYENvbW1hbmRgXG5cdCAqIGluc3RhbmNlLCBvciBhbiBhcnJheSBvZiB0aG9zZSB0eXBlcy4gTWF5IGFsc28gYmUgYSBgQ29tbWFuZE1hcGAgaW5zdGFuY2UuIElmIGBjbWRgIGlzIGFcblx0ICogYFN0cmluZ2AgYW5kIGBwYXJhbXNgIGlzIHByZXNlbnQsIHRoZW4gaXQgd2lsbCB0cmVhdCBgY21kYCBhcyB0aGUgY29tbWFuZCBuYW1lLCBub3QgYSBmaWxlXG5cdCAqIHBhdGguXG5cdCAqIEBwYXJhbSB7T2JqZWN0fEZ1bmN0aW9ufSBbcGFyYW1zXSAtIFdoZW4gYGNtZGAgaXMgdGhlIGNvbW1hbmQgbmFtZSwgdGhlbiB0aGlzIGlzIHRoZSBvcHRpb25zXG5cdCAqIHRvIHBhc3MgaW50byB0aGUgYENvbW1hbmRgIGNvbnN0cnVjdG9yLlxuXHQgKiBAcmV0dXJucyB7QXJyYXkuPENvbW1hbmQ+fVxuXHQgKiBAYWNjZXNzIHB1YmxpY1xuXHQgKi9cblx0YWRkKGNtZCwgcGFyYW1zKSB7XG5cdFx0aWYgKCFjbWQpIHtcblx0XHRcdHRocm93IEUuSU5WQUxJRF9BUkdVTUVOVCgnSW52YWxpZCBjb21tYW5kJywgeyBuYW1lOiAnY21kJywgc2NvcGU6ICdDb21tYW5kTWFwLmFkZCcsIHZhbHVlOiBjbWQgfSk7XG5cdFx0fVxuXG5cdFx0aWYgKCFDb21tYW5kKSB7XG5cdFx0XHRDb21tYW5kID0gcmVxdWlyZSgnLi9jb21tYW5kJykuZGVmYXVsdDtcblx0XHR9XG5cblx0XHRpZiAocGFyYW1zICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdGlmICh0eXBlb2YgY21kICE9PSAnc3RyaW5nJykge1xuXHRcdFx0XHR0aHJvdyBFLklOVkFMSURfQVJHVU1FTlQoJ0NvbW1hbmQgcGFyYW1ldGVycyBhcmUgb25seSBhbGxvd2VkIHdoZW4gY29tbWFuZCBpcyBhIHN0cmluZycsIHsgbmFtZTogJ2NtZCcsIHNjb3BlOiAnQ29tbWFuZE1hcC5hZGQnLCB2YWx1ZTogeyBjbWQsIHBhcmFtcyB9IH0pO1xuXHRcdFx0fSBlbHNlIGlmICh0eXBlb2YgcGFyYW1zID09PSAnZnVuY3Rpb24nKSB7XG5cdFx0XHRcdHBhcmFtcyA9IHsgYWN0aW9uOiBwYXJhbXMgfTtcblx0XHRcdH0gZWxzZSBpZiAodHlwZW9mIHBhcmFtcyAhPT0gJ29iamVjdCcpIHtcblx0XHRcdFx0dGhyb3cgRS5JTlZBTElEX0FSR1VNRU5UKCdFeHBlY3RlZCBjb21tYW5kIHBhcmFtZXRlcnMgdG8gYmUgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uJywgeyBuYW1lOiAncGFyYW1zJywgc2NvcGU6ICdDb21tYW5kTWFwLmFkZCcsIHZhbHVlOiB7IGNtZCwgcGFyYW1zIH0gfSk7XG5cdFx0XHR9XG5cdFx0XHRjbWQgPSBuZXcgQ29tbWFuZChjbWQsIHBhcmFtcyk7XG5cdFx0fVxuXG5cdFx0Y29uc3QgcmVzdWx0cyA9IFtdO1xuXHRcdGNvbnN0IGNvbW1hbmRzID0gdHlwZW9mIGNtZCA9PT0gJ29iamVjdCcgJiYgY21kLmNsaWtpdCBpbnN0YW5jZW9mIFNldCAmJiAoY21kLmNsaWtpdC5oYXMoJ0NvbW1hbmRMaXN0JykgfHwgY21kLmNsaWtpdC5oYXMoJ0NvbW1hbmRNYXAnKSkgP1xuXHRcdFx0Y21kLnZhbHVlcygpIDpcblx0XHRcdEFycmF5LmlzQXJyYXkoY21kKSA/IGNtZCA6IFsgY21kIF07XG5cblx0XHRmb3IgKGxldCBpdCBvZiBjb21tYW5kcykge1xuXHRcdFx0Y21kID0gbnVsbDtcblxuXHRcdFx0aWYgKGl0IGluc3RhbmNlb2YgQ29tbWFuZCkge1xuXHRcdFx0XHRjbWQgPSBpdDtcblx0XHRcdH0gZWxzZSBpZiAodHlwZW9mIGl0ID09PSAnc3RyaW5nJykge1xuXHRcdFx0XHQvLyBwYXRoXG5cdFx0XHRcdGl0ID0gcGF0aC5yZXNvbHZlKGl0KTtcblxuXHRcdFx0XHR0cnkge1xuXHRcdFx0XHRcdGNvbnN0IHN0YXQgPSBmcy5zdGF0U3luYyhpdCk7XG5cdFx0XHRcdFx0Y29uc3QgZGlyID0gc3RhdC5pc0RpcmVjdG9yeSgpID8gaXQgOiAnJztcblx0XHRcdFx0XHRjb25zdCBmaWxlcyA9IGRpciA/IGZzLnJlYWRkaXJTeW5jKGl0KSA6IFsgaXQgXTtcblx0XHRcdFx0XHRsZXQgbTtcblx0XHRcdFx0XHRmb3IgKGNvbnN0IGZpbGVuYW1lIG9mIGZpbGVzKSB7XG5cdFx0XHRcdFx0XHRpZiAobSA9IGZpbGVuYW1lLm1hdGNoKGpzUmVnRXhwKSkge1xuXHRcdFx0XHRcdFx0XHRjb25zdCBtb2R1bGUgPSByZXF1aXJlKHBhdGguam9pbihkaXIsIGZpbGVuYW1lKSk7XG5cdFx0XHRcdFx0XHRcdGNtZCA9IG5ldyBDb21tYW5kKG1bMV0sIG1vZHVsZS5fX2VzTW9kdWxlID8gbW9kdWxlLmRlZmF1bHQgOiBtb2R1bGUpO1xuXHRcdFx0XHRcdFx0XHR0aGlzLnNldChjbWQubmFtZSwgY21kKTtcblx0XHRcdFx0XHRcdFx0cmVzdWx0cy5wdXNoKGNtZCk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9IGNhdGNoIChlKSB7XG5cdFx0XHRcdFx0aWYgKGUuY29kZSA9PT0gJ0VOT0VOVCcpIHtcblx0XHRcdFx0XHRcdHRocm93IEUuRklMRV9OT1RfRk9VTkQoYENvbW1hbmQgcGF0aCBkb2VzIG5vdCBleGlzdDogJHtpdH1gLCB7IG5hbWU6ICdjb21tYW5kJywgc2NvcGU6ICdDb21tYW5kTWFwLmFkZCcsIHZhbHVlOiBpdCB9KTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0dGhyb3cgZTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGNvbnRpbnVlO1xuXG5cdFx0XHR9IGVsc2UgaWYgKGl0ICYmIHR5cGVvZiBpdCA9PT0gJ29iamVjdCcpIHtcblx0XHRcdFx0Ly8gY3RvciBwYXJhbXMgb3IgQ29tbWFuZC1saWtlXG5cdFx0XHRcdGlmIChpdC5jbGlraXQgaW5zdGFuY2VvZiBTZXQpIHtcblx0XHRcdFx0XHRpZiAoaXQuY2xpa2l0LmhhcygnRXh0ZW5zaW9uJykpIHtcblx0XHRcdFx0XHRcdC8vIGFjdGlvbnMgYW5kIGV4dGVuc2lvbnMgbm90IHN1cHBvcnRlZCBoZXJlXG5cdFx0XHRcdFx0XHRjb250aW51ZTtcblx0XHRcdFx0XHR9IGVsc2UgaWYgKGl0LmNsaWtpdC5oYXMoJ0NvbW1hbmQnKSkge1xuXHRcdFx0XHRcdFx0Y21kID0gbmV3IENvbW1hbmQoaXQubmFtZSwgaXQpO1xuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHR0aHJvdyBFLklOVkFMSURfQ09NTUFORChgSW52YWxpZCBjb21tYW5kOiBjbGkta2l0IHR5cGUgXCIke0FycmF5LmZyb20oaXQuY2xpa2l0KVswXX1cIiBub3Qgc3VwcG9ydGVkYCwgeyBuYW1lOiAnY29tbWFuZCcsIHNjb3BlOiAnQ29tbWFuZE1hcC5hZGQnLCB2YWx1ZTogaXQgfSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9IGVsc2UgaWYgKGl0Lm5hbWUgJiYgdHlwZW9mIGl0Lm5hbWUgPT09ICdzdHJpbmcnKSB7XG5cdFx0XHRcdFx0Ly8gdGhlIG9iamVjdCBpcyBjb21tYW5kIGN0b3IgcGFyYW1zXG5cdFx0XHRcdFx0Y21kID0gbmV3IENvbW1hbmQoaXQubmFtZSwgaXQpO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdC8vIGFuIG9iamVjdCBvZiBjb21tYW5kIG5hbWVzIHRvIGEgcGF0aCwgY3RvciBwYXJhbXMsIENvbW1hbmQgb2JqZWN0LCBvciBDb21tYW5kLWxpa2Ugb2JqZWN0XG5cblx0XHRcdFx0XHRmb3IgKGNvbnN0IFsgbmFtZSwgdmFsdWUgXSBvZiBPYmplY3QuZW50cmllcyhpdCkpIHtcblx0XHRcdFx0XHRcdGNtZCA9IG5ldyBDb21tYW5kKG5hbWUsIHZhbHVlKTtcblx0XHRcdFx0XHRcdHRoaXMuc2V0KGNtZC5uYW1lLCBjbWQpO1xuXHRcdFx0XHRcdFx0cmVzdWx0cy5wdXNoKGNtZCk7XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0Y29udGludWU7XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0aWYgKGNtZCBpbnN0YW5jZW9mIENvbW1hbmQpIHtcblx0XHRcdFx0dGhpcy5zZXQoY21kLm5hbWUsIGNtZCk7XG5cdFx0XHRcdHJlc3VsdHMucHVzaChjbWQpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0dGhyb3cgRS5JTlZBTElEX0FSR1VNRU5UKGBJbnZhbGlkIGNvbW1hbmQgXCIke2l0fVwiLCBleHBlY3RlZCBhbiBvYmplY3RgLCB7IG5hbWU6ICdjb21tYW5kJywgc2NvcGU6ICdDb21tYW5kTWFwLmFkZCcsIHZhbHVlOiBpdCB9KTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRyZXR1cm4gcmVzdWx0cztcblx0fVxuXG5cdC8qKlxuXHQgKiBSZXR1cm5zIHRoZSBudW1iZXIgb2YgY29tbWFuZHMuXG5cdCAqXG5cdCAqIEByZXR1cm5zIHtOdW1iZXJ9XG5cdCAqIEBhY2Nlc3MgcHVibGljXG5cdCAqL1xuXHRnZXQgY291bnQoKSB7XG5cdFx0cmV0dXJuIHRoaXMuc2l6ZTtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZW5lcmF0ZXMgYW4gb2JqZWN0IGNvbnRhaW5pbmcgdGhlIGNvbW1hbmRzIGZvciB0aGUgaGVscCBzY3JlZW4uXG5cdCAqXG5cdCAqIEByZXR1cm5zIHtPYmplY3R9XG5cdCAqIEBhY2Nlc3MgcHVibGljXG5cdCAqL1xuXHRnZW5lcmF0ZUhlbHAoKSB7XG5cdFx0Y29uc3QgZW50cmllcyA9IFtdO1xuXG5cdFx0Zm9yIChjb25zdCBjbWQgb2YgQXJyYXkuZnJvbSh0aGlzLmtleXMoKSkpIHtcblx0XHRcdGNvbnN0IHsgYWxpYXNlcywgY2xpa2l0SGVscCwgZGVzYywgaGlkZGVuLCBuYW1lIH0gPSB0aGlzLmdldChjbWQpO1xuXHRcdFx0aWYgKCFoaWRkZW4gJiYgIWNsaWtpdEhlbHApIHtcblx0XHRcdFx0Y29uc3QgbGFiZWxzID0gbmV3IFNldChbIG5hbWUgXSk7XG5cblx0XHRcdFx0Zm9yIChjb25zdCBbIGFsaWFzLCBkaXNwbGF5IF0gb2YgT2JqZWN0LmVudHJpZXMoYWxpYXNlcykpIHtcblx0XHRcdFx0XHRpZiAoZGlzcGxheSA9PT0gJ3Zpc2libGUnKSB7XG5cdFx0XHRcdFx0XHRsYWJlbHMuYWRkKGFsaWFzKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRlbnRyaWVzLnB1c2goe1xuXHRcdFx0XHRcdG5hbWUsXG5cdFx0XHRcdFx0ZGVzYyxcblx0XHRcdFx0XHRsYWJlbDogQXJyYXkuZnJvbShsYWJlbHMpLnNvcnQoKGEsIGIpID0+IHtcblx0XHRcdFx0XHRcdHJldHVybiBhLmxlbmd0aCA9PT0gYi5sZW5ndGggPyBhLmxvY2FsZUNvbXBhcmUoYikgOiBhLmxlbmd0aCAtIGIubGVuZ3RoO1xuXHRcdFx0XHRcdH0pLmpvaW4oJywgJyksXG5cdFx0XHRcdFx0YWxpYXNlczogYWxpYXNlcyA/IE9iamVjdC5rZXlzKGFsaWFzZXMpIDogbnVsbFxuXHRcdFx0XHR9KTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRlbnRyaWVzLnNvcnQoKGEsIGIpID0+IGEubGFiZWwubG9jYWxlQ29tcGFyZShiLmxhYmVsKSk7XG5cblx0XHRyZXR1cm4ge1xuXHRcdFx0Y291bnQ6IGVudHJpZXMubGVuZ3RoLFxuXHRcdFx0ZW50cmllc1xuXHRcdH07XG5cdH1cbn1cbiJdLCJmaWxlIjoicGFyc2VyL2NvbW1hbmQtbWFwLmpzIn0= |
@@ -223,3 +223,4 @@ "use strict"; | ||
results.commands.count += ext.count; | ||
results.commands.entries.push(...ext.entries); // update the default command | ||
results.commands.entries.push(...ext.entries); | ||
results.commands.entries.sort((a, b) => a.name.localeCompare(b.name)); // update the default command | ||
@@ -454,2 +455,2 @@ if (this.defaultCommand) { | ||
exports.default = Context; | ||
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInBhcnNlci9jb250ZXh0LmpzIl0sIm5hbWVzIjpbImxvZyIsImhpZ2hsaWdodCIsIm5vdGUiLCJkZWJ1ZyIsInN0eWxlcyIsIkNvbnRleHQiLCJIb29rRW1pdHRlciIsImNvbnN0cnVjdG9yIiwicGFyYW1zIiwiaW5pdCIsImFyZ3VtZW50IiwiYXJnIiwiYXJncyIsImFkZCIsInJldiIsImNvbW1hbmQiLCJjbWQiLCJjbWRzIiwiY29tbWFuZHMiLCJuYW1lIiwicmVnaXN0ZXIiLCJleHRlbnNpb24iLCJleHQiLCJleHRzIiwiZXh0ZW5zaW9ucyIsImdlbmVyYXRlSGVscCIsIm9wdHMiLCJob29rIiwicmVzdWx0cyIsInNjb3BlcyIsImN0eCIsInB1c2giLCJ0aXRsZSIsIm9wdGlvbnMiLCJjb250ZXh0cyIsInVuc2hpZnQiLCJwYXJlbnQiLCJsb25ncyIsIlNldCIsInNob3J0cyIsImoiLCJsZW5ndGgiLCJPYmplY3QiLCJ2YWx1ZXMiLCJncm91cHMiLCJpIiwibG9uZyIsInNob3J0IiwibnVrZSIsImhhcyIsImNvdW50Iiwic3BsaWNlIiwiZGVzYyIsIlN0cmluZyIsInRyaW0iLCJyZXBsYWNlIiwiYyIsInRvTG9jYWxlVXBwZXJDYXNlIiwiZW50cmllcyIsImRlZmF1bHRDb21tYW5kIiwiZGVmYXVsdCIsImFyZ3VtZW50cyIsInJlZHVjZSIsInAiLCJ1c2FnZSIsIkFycmF5IiwiaXNBcnJheSIsInBhcmVudENvbnRleHROYW1lcyIsImFwcGx5Iiwic2xpY2UiLCJtYXAiLCJtdWx0aXBsZSIsInJlcXVpcmVkIiwidGV4dCIsImpvaW4iLCJlcnJvciIsInVuZGVmaW5lZCIsInN1Z2dlc3Rpb25zIiwid2FybmluZ3MiLCJnZXQiLCJkZWZhdWx0VmFsdWUiLCJ2YWx1ZSIsImNsaWtpdCIsIkUiLCJJTlZBTElEX0FSR1VNRU5UIiwic2NvcGUiLCJBcmd1bWVudExpc3QiLCJhdXRvSGlkZUJhbm5lciIsImJhbm5lciIsIkNvbW1hbmRNYXAiLCJlcnJvcklmVW5rbm93bkNvbW1hbmQiLCJFeHRlbnNpb25NYXAiLCJoZWxwRXhpdENvZGUiLCJoZWxwVGVtcGxhdGVGaWxlIiwiaGlkZU5vQmFubmVyT3B0aW9uIiwiaGlkZU5vQ29sb3JPcHRpb24iLCJsb29rdXAiLCJMb29rdXAiLCJub2RlVmVyc2lvbiIsIk9wdGlvbk1hcCIsInNob3dCYW5uZXJGb3JFeHRlcm5hbENMSXMiLCJzaG93SGVscE9uRXJyb3IiLCJ0cmVhdFVua25vd25PcHRpb25zQXNBcmd1bWVudHMiLCJ2ZXJzaW9uIiwib3B0aW9uIiwiZm9ybWF0Iiwib3B0IiwiYWxpYXMiLCJ2aXNpYmxlIiwiYWxpYXNlcyIsInByb3AiLCJpdCIsImRlc3QiLCJrZXlzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBRUE7Ozs7QUFFQSxNQUFNO0FBQUVBLEVBQUFBO0FBQUYsSUFBVSxvQkFBTSxpQkFBTixDQUFoQjtBQUNBLE1BQU07QUFBRUMsRUFBQUEsU0FBRjtBQUFhQyxFQUFBQTtBQUFiLElBQXNCQyxlQUFNQyxNQUFsQztBQUVBOzs7Ozs7O0FBTWUsTUFBTUMsT0FBTixTQUFzQkMsb0JBQXRCLENBQWtDO0FBQ2hEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQW1DQUMsRUFBQUEsV0FBVyxDQUFDQyxNQUFNLEdBQUcsRUFBVixFQUFjO0FBQ3hCO0FBQ0Esa0NBQW1CLElBQW5CLEVBQXlCLFNBQXpCO0FBQ0EsU0FBS0MsSUFBTCxDQUFVRCxNQUFWO0FBQ0E7QUFFRDs7Ozs7Ozs7Ozs7O0FBVUFFLEVBQUFBLFFBQVEsQ0FBQ0MsR0FBRCxFQUFNO0FBQ2IsU0FBS0MsSUFBTCxDQUFVQyxHQUFWLENBQWNGLEdBQWQ7QUFDQSxTQUFLRyxHQUFMO0FBQ0EsV0FBTyxJQUFQO0FBQ0E7QUFFRDs7Ozs7Ozs7Ozs7Ozs7O0FBYUFDLEVBQUFBLE9BQU8sQ0FBQ0MsR0FBRCxFQUFNUixNQUFOLEVBQWM7QUFDcEIsVUFBTVMs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Q0FBQzNFLE1BQUgsR0FBWSxJQUFaO0FBQ0EsU0FBSzRELE1BQUwsQ0FBWWdCLElBQVosRUFBa0JELEVBQUUsQ0FBQzVGLElBQXJCLElBQTZCNEYsRUFBN0I7O0FBRUEsUUFBSUEsRUFBRSxDQUFDRixPQUFQLEVBQWdCO0FBQ2YsV0FBSyxNQUFNRixLQUFYLElBQW9CakUsTUFBTSxDQUFDdUUsSUFBUCxDQUFZRixFQUFFLENBQUNGLE9BQWYsQ0FBcEIsRUFBNkM7QUFDNUMsWUFBSSxDQUFDLEtBQUtHLElBQUwsRUFBVy9ELEdBQVgsQ0FBZTBELEtBQWYsQ0FBTCxFQUE0QjtBQUMzQixlQUFLWCxNQUFMLENBQVlnQixJQUFaLEVBQWtCTCxLQUFsQixJQUEyQkksRUFBM0I7QUFDQTtBQUNEO0FBQ0Q7QUFDRDs7QUEzWCtDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEFyZ3VtZW50TGlzdCBmcm9tICcuL2FyZ3VtZW50LWxpc3QnO1xuaW1wb3J0IENvbW1hbmRNYXAgZnJvbSAnLi9jb21tYW5kLW1hcCc7XG5pbXBvcnQgZGVidWcgZnJvbSAnLi4vbGliL2RlYnVnJztcbmltcG9ydCBFIGZyb20gJy4uL2xpYi9lcnJvcnMnO1xuaW1wb3J0IEV4dGVuc2lvbk1hcCBmcm9tICcuL2V4dGVuc2lvbi1tYXAnO1xuaW1wb3J0IEhvb2tFbWl0dGVyIGZyb20gJ2hvb2stZW1pdHRlcic7XG5pbXBvcnQgTG9va3VwIGZyb20gJy4vbG9va3VwJztcbmltcG9ydCBPcHRpb25NYXAgZnJvbSAnLi9vcHRpb24tbWFwJztcblxuaW1wb3J0IHsgZGVjbGFyZUNMSUtpdENsYXNzIH0gZnJvbSAnLi4vbGliL3V0aWwnO1xuXG5jb25zdCB7IGxvZyB9ID0gZGVidWcoJ2NsaS1raXQ6Y29udGV4dCcpO1xuY29uc3QgeyBoaWdobGlnaHQsIG5vdGUgfSA9IGRlYnVnLnN0eWxlcztcblxuLyoqXG4gKiBEZWZpbmVzIGEgY29udGV4dCB0aGF0IGNvbnRhaW5zIGNvbW1hbmRzLCBvcHRpb25zLCBhbmQgYXJncy4gU2VydmVzIGFzIHRoZVxuICogYmFzZSBjbGFzcyBmb3IgYENMSWAgYW5kIGBDb250ZXh0YCBvYmplY3RzLlxuICpcbiAqIEBleHRlbmRzIHtIb29rRW1pdHRlcn1cbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQ29udGV4dCBleHRlbmRzIEhvb2tFbWl0dGVyIHtcblx0LyoqXG5cdCAqIENvbnN0cnVjdHMgYSBjb250ZXh0IGluc3RhbmNlLlxuXHQgKlxuXHQgKiBAcGFyYW0ge09iamVjdHxDb250ZXh0fSBbcGFyYW1zXSAtIFZhcmlvdXMgcGFyYW1ldGVycy5cblx0ICogQHBhcmFtIHtPYmplY3R8U3RyaW5nfEFyZ3VtZW50fEFyZ3VtZW50TGlzdHxBcnJheTxPYmplY3R8U3RyaW5nfEFyZ3VtZW50Pn0gW3BhcmFtcy5hcmdzXSAtXG5cdCAqIEFuIG9iamVjdCBvZiBhcmd1bWVudCBuYW1lcyB0byBhcmd1bWVudCBkZXNjcmlwdG9ycywgYW4gYXJndW1lbnQgbmFtZSwgYW4gYEFyZ3VtZW50YFxuXHQgKiBpbnN0YW5jZSwgYW4gYEFyZ3VtZW50TGlzdGAgaW5zdGFuY2UsIG9yIGFycmF5IG9mIG9iamVjdCBkZXNjcmlwdG9ycywgYXJndW1lbnQgbmFtZXMsIGFuZFxuXHQgKiBgQXJndW1lbnRgIGluc3RhbmNlcy5cblx0ICogQHBhcmFtIHtCb29sZWFufSBbcGFyYW1zLmNhbWVsQ2FzZT10cnVlXSAtIENhbWVsIGNhc2Ugb3B0aW9uIG5hbWVzLlxuXHQgKiBAcGFyYW0ge09iamVjdHxTdHJpbmd8Q29tbWFuZHxDb21tYW5kTWFwfEFycmF5LjxPYmplY3R8U3RyaW5nfENvbW1hbmQ+fSBbcGFyYW1zLmNvbW1hbmRzXSAtXG5cdCAqIEFuIG9iamVjdCB1c2VkIGZvciBgQ29tbWFuZGAgY29uc3RydWN0b3IgcGFyYW1zLCBhIHBhdGggdG8gYSBkaXJlY3Rvcnkgb3IgYSBgLmpzYCBmaWxlLCBhXG5cdCAqIGBDb21tYW5kYCBpbnN0YW5jZSwgb3IgYW4gYXJyYXkgb2YgdGhvc2UgdHlwZXMuIE1heSBhbHNvIGJlIGEgYENvbW1hbmRNYXBgIGluc3RhbmNlLiBJZlxuXHQgKiBgY21kYCBpcyBhIGBTdHJpbmdgIGFuZCBgcGFyYW1zYCBpcyBwcmVzZW50LCB0aGVuIGl0IHdpbGwgdHJlYXQgYGNtZGAgYXMgdGhlIGNvbW1hbmQgbmFtZSxcblx0ICogbm90IGEgZmlsZSBwYXRoLlxuXHQgKiBAcGFyYW0ge1N0cmluZ30gW3BhcmFtcy5kZXNjXSAtIFRoZSBkZXNjcmlwdGlvbiBvZiB0aGUgQ0xJIG9yIGNvbW1hbmQgZGlzcGxheWVkIGluIHRoZSBoZWxwXG5cdCAqIG91dHB1dC4gSWYgY29udGV4dCBpcyBhIGNvbW1hbmQgd2l0aCBhIGhlbHAgaGVhZGVyIGRlZmluZWQsIHRoaXMgZGVzY3JpcHRpb24gaXMgbm90XG5cdCAqIGRpc3BsYXllZC5cblx0ICogQHBhcmFtIHtPYmplY3R8U3RyaW5nfEV4dGVuc2lvbnxFeHRlbnNpb25NYXB8QXJyYXkuPFN0cmluZ3xFeHRlbnNpb24+fSBbcGFyYW1zLmV4dGVuc2lvbnNdIC1cblx0ICogQW4gb2JqZWN0IG9mIGV4dGVuc2lvbiBuYW1lcyB0byBleHRlbnNpb24gcGF0aHMgb3IgaW5zdGFuY2VzLCBhbiBleHRlbnNpb24gcGF0aCwgYW5cblx0ICogYEV4dGVuc2lvbmAgaW5zdGFuY2UsIG9yIGFuIGFycmF5IG9mIHRob3NlIHR5cGVzLiBBbiBleHRlbnNpb24gcGF0aCBtYXkgYmUgYSBkaXJlY3Rvcnlcblx0ICogY29udGFpbmluZyBhIE5vZGUuanMgbW9kdWxlLCBhIHBhdGggdG8gYSBgLmpzYCBmaWxlLCBvciB0aGUgbmFtZSBvZiBhIGV4ZWN1dGFibGUuIE1heSBhbHNvXG5cdCAqIGJlIGFuIGBFeHRlbnNpb25NYXBgIGluc3RhbmNlLlxuXHQgKiBAcGFyYW0ge1N0cmluZ30gW3BhcmFtcy5uYW1lXSAtIFRoZSBuYW1lIG9mIHRoZSBjb250ZXh0IHN1Y2ggYXMgdGhlIHByb2dyYW0gb3IgdGhlIGNvbW1hbmRcblx0ICogbmFtZS5cblx0ICogQHBhcmFtIHtPYmplY3R8T3B0aW9ufE9wdGlvbk1hcHxBcnJheTxPYmplY3R8T3B0aW9ufFN0cmluZz59IFtwYXJhbXMub3B0aW9uc10gLSBBbiBvYmplY3Qgb2Zcblx0ICogZm9ybWF0IHRvIGBPcHRpb25gIGNvbnN0cnVjdG9yIHBhcmFtcywgYW4gYE9wdGlvbmAgaW5zdGFuY2UsIG9yIGFuIGFycmF5IG9mIGBPcHRpb25gXG5cdCAqIGNvbnN0cnVjdG9yIHBhcmFtcyBhbmQgYE9wdGlvbmAgaW5zdGFuY2VzIGdyb3VwZWQgYnkgYFN0cmluZ2AgbGFiZWxzLlxuXHQgKiBAcGFyYW0ge0NvbnRleHR9IFtwYXJhbXMucGFyZW50XSAtIFRoZSBwYXJlbnQgY29udGV4dC5cblx0ICogQHBhcmFtIHtTdHJpbmd9IFtwYXJhbXMudGl0bGVdIC0gVGhlIGNvbnRleHQgdGl0bGUuXG5cdCAqIEBwYXJhbSB7Qm9vbGVhbn0gW3BhcmFtcy50cmVhdFVua25vd25PcHRpb25zQXNBcmd1bWVudHM9ZmFsc2VdIC0gV2hlbiBgdHJ1ZWAsIGFueSBhcmd1bWVudCBpc1xuXHQgKiBlbmNvdW50ZXJlZCBkdXJpbmcgcGFyc2luZyB0aGF0IHJlc2VtYmxlcyBhIG9wdGlvbiB0aGF0IGRvZXMgbm90IGV4aXN0LCBpdCB3aWxsIGFkZCBpdFxuXHQgKiB1bnRvdWNoZWQgdG8gYF9gIGFzIGFuIGFyZ3VtZW50IGFzIHdlbGwgYXMgdG8gYGFyZ3ZgIGFzIGEgYm9vbGVhbiBmbGFnLiBXaGVuIGBmYWxzZWAsIGl0IHdpbGxcblx0ICogb25seSBhZGQgdGhlIGFyZ3VtZW50IHRvIGBhcmd2YCBhcyBhIGJvb2xlYW4gZmxhZy5cblx0ICogQGFjY2VzcyBwdWJsaWNcblx0ICovXG5cdGNvbnN0cnVjdG9yKHBhcmFtcyA9IHt9KSB7XG5cdFx0c3VwZXIoKTtcblx0XHRkZWNsYXJlQ0xJS2l0Q2xhc3ModGhpcywgJ0NvbnRleHQnKTtcblx0XHR0aGlzLmluaXQocGFyYW1zKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBBZGRzIGFuIGFyZ3VtZW50IHRvIHRoaXMgY29udGV4dC5cblx0ICpcblx0ICogQHBhcmFtIHtPYmplY3R8U3RyaW5nfEFyZ3VtZW50fEFyZ3VtZW50TGlzdHxBcnJheTxPYmplY3R8U3RyaW5nfEFyZ3VtZW50Pn0gYXJnIC0gQW4gb2JqZWN0XG5cdCAqIG9mIGFyZ3VtZW50IG5hbWVzIHRvIGFyZ3VtZW50IGRlc2NyaXB0b3JzLCBhbiBhcmd1bWVudCBuYW1lLCBhbiBgQXJndW1lbnRgIGluc3RhbmNlLCBhblxuXHQgKiBgQXJndW1lbnRMaXN0YCBpbnN0YW5jZSwgb3IgYXJyYXkgb2Ygb2JqZWN0IGRlc2NyaXB0b3JzLCBhcmd1bWVudCBuYW1lcywgYW5kIGBBcmd1bWVudGBcblx0ICogaW5zdGFuY2VzLlxuXHQgKiBAcmV0dXJucyB7Q29udGV4dH1cblx0ICogQGFjY2VzcyBwdWJsaWNcblx0ICovXG5cdGFyZ3VtZW50KGFyZykge1xuXHRcdHRoaXMuYXJncy5hZGQoYXJnKTtcblx0XHR0aGlzLnJldisrO1xuXHRcdHJldHVybiB0aGlzO1xuXHR9XG5cblx0LyoqXG5cdCAqIEFkZHMgYSBjb21tYW5kIHRvIHRoaXMgY29udGV4dC5cblx0ICpcblx0ICogQHBhcmFtIHtPYmplY3R8U3RyaW5nfENvbW1hbmR8Q29tbWFuZE1hcHxBcnJheS48T2JqZWN0fFN0cmluZ3xDb21tYW5kPn0gY21kIC0gQW4gb2JqZWN0XG5cdCAqIHVzZWQgZm9yIGBDb21tYW5kYCBjb25zdHJ1Y3RvciBwYXJhbXMsIGEgcGF0aCB0byBhIGRpcmVjdG9yeSBvciBhIGAuanNgIGZpbGUsIGEgYENvbW1hbmRgXG5cdCAqIGluc3RhbmNlLCBvciBhbiBhcnJheSBvZiB0aG9zZSB0eXBlcy4gTWF5IGFsc28gYmUgYSBgQ29tbWFuZE1hcGAgaW5zdGFuY2UuIElmIGBjbWRgIGlzIGFcblx0ICogYFN0cmluZ2AgYW5kIGBwYXJhbXNgIGlzIHByZXNlbnQsIHRoZW4gaXQgd2lsbCB0cmVhdCBgY21kYCBhcyB0aGUgY29tbWFuZCBuYW1lLCBub3QgYSBmaWxlXG5cdCAqIHBhdGguXG5cdCAqIEBwYXJhbSB7T2JqZWN0fSBbcGFyYW1zXSAtIFdoZW4gYGNtZGAgaXMgdGhlIGNvbW1hbmQgbmFtZSwgdGhlbiB0aGlzIGlzIHRoZSBvcHRpb25zIHRvIHBhc3Ncblx0ICogaW50byB0aGUgYENvbW1hbmRgIGNvbnN0cnVjdG9yLlxuXHQgKiBAcmV0dXJucyB7Q29udGV4dH1cblx0ICogQGFjY2VzcyBwdWJsaWNcblx0ICovXG5cdGNvbW1hbmQoY21kLCBwYXJhbXMpIHtcblx0XHRjb25zdCBjbWRzID0gdGhpcy5jb21tYW5kcy5hZGQoY21kLCBwYXJhbXMpO1xuXHRcdGZvciAoY29uc3QgY21kIG9mIGNtZHMpIHtcblx0XHRcdGxvZyhgQWRkaW5nIGNvbW1hbmQ6ICR7aGlnaGxpZ2h0KGNtZC5uYW1lKX0gJHtub3RlKGAoJHt0aGlzLm5hbWV9KWApfWApO1xuXHRcdFx0dGhpcy5yZWdpc3RlcihjbWQpO1xuXHRcdH1cblx0XHR0aGlzLnJldisrO1xuXHRcdHJldHVybiB0aGlzO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJlZ2lzdGVycyBhbiBleHRlcm5hbCBwYWNrYWdlIGFzIGEgY29tbWFuZCBjb250ZXh0IHRoYXQgaW52b2tlcyB0aGUgcGFja2FnZS5cblx0ICpcblx0ICogQHBhcmFtIHtPYmplY3R8U3RyaW5nfEV4dGVuc2lvbnxFeHRlbnNpb25NYXB8QXJyYXkuPFN0cmluZ3xFeHRlbnNpb24+fSBleHQgLSBBbiBvYmplY3Qgb2Zcblx0ICogZXh0ZW5zaW9uIG5hbWVzIHRvIGV4dGVuc2lvbiBwYXRocyBvciBpbnN0YW5jZXMsIGFuIGV4dGVuc2lvbiBwYXRoLCBhbiBgRXh0ZW5zaW9uYCBpbnN0YW5jZSxcblx0ICogb3IgYW4gYXJyYXkgb2YgdGhvc2UgdHlwZXMuIEFuIGV4dGVuc2lvbiBwYXRoIG1heSBiZSBhIGRpcmVjdG9yeSBjb250YWluaW5nIGEgTm9kZS5qc1xuXHQgKiBtb2R1bGUsIGEgcGF0aCB0byBhIGAuanNgIGZpbGUsIG9yIHRoZSBuYW1lIG9mIGEgZXhlY3V0YWJsZS4gTWF5IGFsc28gYmUgYW4gYEV4dGVuc2lvbk1hcGBcblx0ICogaW5zdGFuY2UuXG5cdCAqIEBwYXJhbSB7U3RyaW5nfSBbbmFtZV0gLSBUaGUgZXh0ZW5zaW9uIG5hbWUgdXNlZCBmb3IgdGhlIGNvbnRleHQgbmFtZS4gSWYgbm90IHNldCwgaXQgd2lsbFxuXHQgKiBhdHRlbXB0IHRvIGZpbmQgYSBgcGFja2FnZS5qc29uYCB3aXRoIGEgYGNsaS1raXQubmFtZWAgdmFsdWUuXG5cdCAqIEByZXR1cm5zIHtDb250ZXh0fVxuXHQgKiBAYWNjZXNzIHB1YmxpY1xuXHQgKi9cblx0ZXh0ZW5zaW9uKGV4dCwgbmFtZSkge1xuXHRcdGNvbnN0IGV4dHMgPSB0aGlzLmV4dGVuc2lvbnMuYWRkKGV4dCwgbmFtZSk7XG5cdFx0Zm9yIChjb25zdCBleHQgb2YgZXh0cykge1xuXHRcdFx0bG9nKGBBZGRpbmcgZXh0ZW5zaW9uOiAke2hpZ2hsaWdodChleHQubmFtZSl9ICR7bm90ZShgKCR7dGhpcy5uYW1lfSlgKX1gKTtcblx0XHRcdHRoaXMucmVnaXN0ZXIoZXh0KTtcblx0XHR9XG5cdFx0dGhpcy5yZXYrKztcblx0XHRyZXR1cm4gdGhpcztcblx0fVxuXG5cdC8qKlxuXHQgKiBSZW5kZXJzIHRoZSBoZWxwIHNjcmVlbiBmb3IgdGhpcyBjb250ZXh0IGluY2x1ZGluZyB0aGUgcGFyZW50IGNvbnRleHRzLlxuXHQgKlxuXHQgKiBAcGFyYW0ge09iamVjdH0gW29wdHNdIC0gVmFyaW91cyBwYXJhbWV0ZXJzLlxuXHQgKiBAcmV0dXJucyB7UHJvbWlzZTxPYmplY3Q+fVxuXHQgKiBAYWNjZXNzIHByaXZhdGVcblx0ICovXG5cdGdlbmVyYXRlSGVscChvcHRzID0ge30pIHtcblx0XHRyZXR1cm4gdGhpcy5ob29rKCdnZW5lcmF0ZUhlbHAnLCByZXN1bHRzID0+IHtcblx0XHRcdGNvbnN0IHNjb3BlcyA9IFtdO1xuXHRcdFx0bGV0IGN0eCA9IHRoaXM7XG5cblx0XHRcdHdoaWxlIChjdHgpIHtcblx0XHRcdFx0c2NvcGVzLnB1c2goe1xuXHRcdFx0XHRcdHRpdGxlOiBgJHtjdHgudGl0bGV9IG9wdGlvbnNgLFxuXHRcdFx0XHRcdG5hbWU6IGN0eC5uYW1lLFxuXHRcdFx0XHRcdC4uLmN0eC5vcHRpb25zLmdlbmVyYXRlSGVscCgpXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRyZXN1bHRzLmNvbnRleHRzLnVuc2hpZnQoY3R4Lm5hbWUpO1xuXHRcdFx0XHRjdHggPSBjdHgucGFyZW50O1xuXHRcdFx0fVxuXG5cdFx0XHQvLyByZW1vdmUgZHVwbGljYXRlIG9wdGlvbnNcblx0XHRcdGNvbnN0IGxvbmdzID0gbmV3IFNldCgpO1xuXHRcdFx0Y29uc3Qgc2hvcnRzID0gbmV3IFNldCgpO1xuXHRcdFx0bGV0IGogPSBzY29wZXMubGVuZ3RoO1xuXHRcdFx0d2hpbGUgKGotLSkge1xuXHRcdFx0XHRmb3IgKGNvbnN0IG9wdGlvbnMgb2YgT2JqZWN0LnZhbHVlcyhzY29wZXNbal0uZ3JvdXBzKSkge1xuXHRcdFx0XHRcdGZvciAobGV0IGkgPSAwOyBpIDwgb3B0aW9ucy5sZW5ndGg7IGkrKykge1xuXHRcdFx0XHRcdFx0Y29uc3QgeyBsb25nLCBzaG9ydCB9ID0gb3B0aW9uc1tpXTtcblx0XHRcdFx0XHRcdGxldCBudWtlID0gZmFsc2U7XG5cdFx0XHRcdFx0XHRpZiAobG9uZyAhPT0gbnVsbCkge1xuXHRcdFx0XHRcdFx0XHRpZiAobG9uZ3MuaGFzKGxvbmcpKSB7XG5cdFx0XHRcdFx0XHRcdFx0bnVrZSA9IHRydWU7XG5cdFx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdFx0bG9uZ3MuYWRkKGxvbmcpO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRpZiAoc2hvcnQgIT09IG51bGwpIHtcblx0XHRcdFx0XHRcdFx0aWYgKHNob3J0cy5oYXMoc2hvcnQpKSB7XG5cdFx0XHRcdFx0XHRcdFx0bnVrZSA9IHRydWU7XG5cdFx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdFx0c2hvcnRzLmFkZChzaG9ydCk7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdGlmIChudWtlKSB7XG5cdFx0XHRcdFx0XHRcdHNjb3Blc1tqXS5jb3VudC0tO1xuXHRcdFx0XHRcdFx0XHRvcHRpb25zLnNwbGljZShpLS0sIDEpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHQvLyBzZXQgdGhlIGRlc2NyaXB0aW9uXG5cdFx0XHRyZXN1bHRzLmRlc2MgPSB0aGlzLmRlc2MgPyBTdHJpbmcodGhpcy5kZXNjKS50cmltKCkucmVwbGFjZSgvXlxcdy8sIGMgPT4gYy50b0xvY2FsZVVwcGVyQ2FzZSgpKSA6IG51bGw7XG5cblx0XHRcdC8vIHNldCB0aGUgY29tbWFuZHNcblx0XHRcdHJlc3VsdHMuY29tbWFuZHMgPSB7XG5cdFx0XHRcdHRpdGxlOiB0aGlzLnBhcmVudCA/IGAke3RoaXMudGl0bGV9IGNvbW1hbmRzYCA6ICdDb21tYW5kcycsXG5cdFx0XHRcdC4uLnRoaXMuY29tbWFuZHMuZ2VuZXJhdGVIZWxwKClcblx0XHRcdH07XG5cblx0XHRcdGNvbnN0IGV4dCA9IHRoaXMuZXh0ZW5zaW9ucy5nZW5lcmF0ZUhlbHAoKTtcblx0XHRcdHJlc3VsdHMuY29tbWFuZHMuY291bnQgKz0gZXh0LmNvdW50O1xuXHRcdFx0cmVzdWx0cy5jb21tYW5kcy5lbnRyaWVzLnB1c2goLi4uZXh0LmVudHJpZXMpO1xuXG5cdFx0XHQvLyB1cGRhdGUgdGhlIGRlZmF1bHQgY29tbWFuZFxuXHRcdFx0aWYgKHRoaXMuZGVmYXVsdENvbW1hbmQpIHtcblx0XHRcdFx0Zm9yIChjb25zdCBjbWQgb2YgcmVzdWx0cy5jb21tYW5kcy5lbnRyaWVzKSB7XG5cdFx0XHRcdFx0aWYgKGNtZC5uYW1lID09PSB0aGlzLmRlZmF1bHRDb21tYW5kKSB7XG5cdFx0XHRcdFx0XHRjbWQuZGVmYXVsdCA9IHRydWU7XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0Ly8gc2V0IHRoZSBhcmd1bWVudHNcblx0XHRcdHJlc3VsdHMuYXJndW1lbnRzID0ge1xuXHRcdFx0XHR0aXRsZTogdGhpcy5wYXJlbnQgPyBgJHt0aGlzLnRpdGxlfSBhcmd1bWVudHNgIDogJ0FyZ3VtZW50cycsXG5cdFx0XHRcdC4uLnRoaXMuYXJncy5nZW5lcmF0ZUhlbHAoKVxuXHRcdFx0fTtcblxuXHRcdFx0Ly8gc2V0IHRoZSBvcHRpb25zXG5cdFx0XHRyZXN1bHRzLm9wdGlvbnMgPSB7XG5cdFx0XHRcdGNvdW50OiBzY29wZXMucmVkdWNlKChwLCBjKSA9PiBwICsgYy5jb3VudCwgMCksXG5cdFx0XHRcdHNjb3Blc1xuXHRcdFx0fTtcblxuXHRcdFx0Ly8gc2V0IHRoZSB1c2FnZSBsaW5lXG5cdFx0XHRjb25zdCB1c2FnZSA9IFtdO1xuXHRcdFx0aWYgKEFycmF5LmlzQXJyYXkob3B0cy5wYXJlbnRDb250ZXh0TmFtZXMpKSB7XG5cdFx0XHRcdHVzYWdlLnB1c2guYXBwbHkodXNhZ2UsIG9wdHMucGFyZW50Q29udGV4dE5hbWVzKTtcblx0XHRcdH1cblx0XHRcdHVzYWdlLnB1c2guYXBwbHkodXNhZ2UsIHJlc3VsdHMuY29udGV4dHMuc2xpY2UoKSk7XG5cdFx0XHRyZXN1bHRzLmNvbW1hbmRzLmNvdW50ICYmIHVzYWdlLnB1c2goJzxjb21tYW5kPicpO1xuXHRcdFx0cmVzdWx0cy5vcHRpb25zLmNvdW50ICYmIHVzYWdlLnB1c2goJ1tvcHRpb25zXScpO1xuXHRcdFx0dXNhZ2UucHVzaC5hcHBseSh1c2FnZSwgcmVzdWx0cy5hcmd1bWVudHMuZW50cmllcy5tYXAoYXJnID0+IHtcblx0XHRcdFx0Y29uc3QgbmFtZSA9IGA8JHthcmcubmFtZX0ke2FyZy5tdWx0aXBsZSA/ICcuLi4nIDogJyd9PmA7XG5cdFx0XHRcdHJldHVybiBhcmcucmVxdWlyZWQgPyBuYW1lIDogYFske25hbWV9XWA7XG5cdFx0XHR9KSk7XG5cdFx0XHRyZXN1bHRzLnVzYWdlID0ge1xuXHRcdFx0XHR0aXRsZTogJ1VzYWdlJyxcblx0XHRcdFx0dGV4dDogdXNhZ2Uuam9pbignICcpXG5cdFx0XHR9O1xuXG5cdFx0XHRyZXR1cm4gcmVzdWx0cztcblx0XHR9KSh7XG5cdFx0XHRjb250ZXh0czogW10sXG5cdFx0XHRlcnJvcjogdW5kZWZpbmVkLFxuXHRcdFx0c3VnZ2VzdGlvbnM6IFtdLFxuXHRcdFx0d2FybmluZ3M6IHVuZGVmaW5lZFxuXHRcdH0pO1xuXHR9XG5cblx0LyoqXG5cdCAqIFNjYW4gcGFyZW50IGNvbnRleHRzIHRvIGZpbmQgdGhlIHNwZWNpZmllZCBwcm9wZXJ0eSBpbiB0aGUgdG9wLW1vc3QgY29udGV4dC5cblx0ICpcblx0ICogQHBhcmFtIHtTdHJpbmd9IG5hbWUgLSBUaGUgcHJvcGVydHkgbmFtZS5cblx0ICogQHBhcmFtIHsqfSBkZWZhdWx0VmFsdWUgLSBBIGRlZmF1bHQgdmFsdWUgaWYgbm8gdmFsdWUgaXMgZm91bmQuXG5cdCAqIEByZXR1cm5zIHsqfVxuXHQgKiBAYWNjZXNzIHByaXZhdGVcblx0ICovXG5cdGdldChuYW1lLCBkZWZhdWx0VmFsdWUpIHtcblx0XHRsZXQgdmFsdWUgPSB0aGlzW25hbWVdO1xuXHRcdGZvciAobGV0IHAgPSB0aGlzLnBhcmVudDsgcDsgcCA9IHAucGFyZW50KSB7XG5cdFx0XHR2YWx1ZSA9IHAuZ2V0KG5hbWUsIHZhbHVlKTtcblx0XHR9XG5cdFx0cmV0dXJuIHZhbHVlICE9PSB1bmRlZmluZWQgPyB2YWx1ZSA6IGRlZmF1bHRWYWx1ZTtcblx0fVxuXG5cdC8qKlxuXHQgKiBJbml0aWFsaXplcyB0aGlzIGNvbnRleHQgd2l0aCBwYXJhbXMuXG5cdCAqXG5cdCAqIEBwYXJhbSB7T2JqZWN0fENvbnRleHR9IHBhcmFtcyAtIFZhcmlvdXMgcGFyYW1ldGVyc1xuXHQgKiBAYWNjZXNzIHByaXZhdGVcblx0ICovXG5cdGluaXQocGFyYW1zKSB7XG5cdFx0aWYgKCFwYXJhbXMgfHwgdHlwZW9mIHBhcmFtcyAhPT0gJ29iamVjdCcgfHwgKHBhcmFtcy5jbGlraXQgaW5zdGFuY2VvZiBTZXQgJiYgIXBhcmFtcy5jbGlraXQuaGFzKCdDb250ZXh0JykpKSB7XG5cdFx0XHR0aHJvdyBFLklOVkFMSURfQVJHVU1FTlQoJ0V4cGVjdGVkIHBhcmFtZXRlcnMgdG8gYmUgYW4gb2JqZWN0IG9yIENvbnRleHQnLCB7IG5hbWU6ICdwYXJhbXMnLCBzY29wZTogJ0NvbnRleHQuaW5pdCcsIHZhbHVlOiBwYXJhbXMgfSk7XG5cdFx0fVxuXG5cdFx0aWYgKHBhcmFtcy5jbGlraXQgaW5zdGFuY2VvZiBTZXQgJiYgIXBhcmFtcy5jbGlraXQuaGFzKCdDb250ZXh0JykpIHtcblx0XHRcdHRocm93IEUuSU5WQUxJRF9BUkdVTUVOVCgnRXhwZWN0ZWQgcGFyYW1ldGVycyB0byBiZSBhbiBvYmplY3Qgb3IgQ29udGV4dCcsIHsgbmFtZTogJ3BhcmFtcycsIHNjb3BlOiAnQ29udGV4dC5pbml0JywgdmFsdWU6IHBhcmFtcyB9KTtcblx0XHR9XG5cblx0XHR0aGlzLmFyZ3MgICAgICAgICAgICAgICAgICAgICAgICAgICA9IG5ldyBBcmd1bWVudExpc3QoKTtcblx0XHR0aGlzLmF1dG9IaWRlQmFubmVyICAgICAgICAgICAgICAgICA9IHBhcmFtcy5hdXRvSGlkZUJhbm5lcjtcblx0XHR0aGlzLmJhbm5lciAgICAgICAgICAgICAgICAgICAgICAgICA9IHBhcmFtcy5iYW5uZXI7XG5cdFx0dGhpcy5jb21tYW5kcyAgICAgICAgICAgICAgICAgICAgICAgPSBuZXcgQ29tbWFuZE1hcCgpO1xuXHRcdHRoaXMuZGVmYXVsdENvbW1hbmQgICAgICAgICAgICAgICAgID0gcGFyYW1zLmRlZmF1bHRDb21tYW5kO1xuXHRcdHRoaXMuZGVzYyAgICAgICAgICAgICAgICAgICAgICAgICAgID0gcGFyYW1zLmRlc2M7XG5cdFx0dGhpcy5lcnJvcklmVW5rbm93bkNvbW1hbmQgICAgICAgICAgPSBwYXJhbXMuZXJyb3JJZlVua25vd25Db21tYW5kO1xuXHRcdHRoaXMuZXh0ZW5zaW9ucyAgICAgICAgICAgICAgICAgICAgID0gbmV3IEV4dGVuc2lvbk1hcCgpO1xuXHRcdHRoaXMuaGVscEV4aXRDb2RlICAgICAgICAgICAgICAgICAgID0gcGFyYW1zLmhlbHBFeGl0Q29kZTtcblx0XHR0aGlzLmhlbHBUZW1wbGF0ZUZpbGUgICAgICAgICAgICAgICA9IHBhcmFtcy5oZWxwVGVtcGxhdGVGaWxlO1xuXHRcdHRoaXMuaGlkZU5vQmFubmVyT3B0aW9uICAgICAgICAgICAgID0gcGFyYW1zLmhpZGVOb0Jhbm5lck9wdGlvbjtcblx0XHR0aGlzLmhpZGVOb0NvbG9yT3B0aW9uICAgICAgICAgICAgICA9IHBhcmFtcy5oaWRlTm9Db2xvck9wdGlvbjtcblx0XHR0aGlzLmxvb2t1cCAgICAgICAgICAgICAgICAgICAgICAgICA9IG5ldyBMb29rdXAoKTtcblx0XHR0aGlzLm5hbWUgICAgICAgICAgICAgICAgICAgICAgICAgICA9IHBhcmFtcy5uYW1lO1xuXHRcdHRoaXMubm9kZVZlcnNpb24gICAgICAgICAgICAgICAgICAgID0gcGFyYW1zLm5vZGVWZXJzaW9uO1xuXHRcdHRoaXMub3B0aW9ucyAgICAgICAgICAgICAgICAgICAgICAgID0gbmV3IE9wdGlvbk1hcCgpO1xuXHRcdHRoaXMucGFyZW50ICAgICAgICAgICAgICAgICAgICAgICAgID0gcGFyYW1zLnBhcmVudDtcblx0XHR0aGlzLnJldiAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IDA7XG5cdFx0dGhpcy5zaG93QmFubmVyRm9yRXh0ZXJuYWxDTElzICAgICAgPSBwYXJhbXMuc2hvd0Jhbm5lckZvckV4dGVybmFsQ0xJcztcblx0XHR0aGlzLnNob3dIZWxwT25FcnJvciAgICAgICAgICAgICAgICA9IHBhcmFtcy5zaG93SGVscE9uRXJyb3I7XG5cdFx0dGhpcy50aXRsZSAgICAgICAgICAgICAgICAgICAgICAgICAgPSBwYXJhbXMudGl0bGUgfHwgcGFyYW1zLm5hbWU7XG5cdFx0dGhpcy50cmVhdFVua25vd25PcHRpb25zQXNBcmd1bWVudHMgPSAhIXBhcmFtcy50cmVhdFVua25vd25PcHRpb25zQXNBcmd1bWVudHM7XG5cdFx0dGhpcy52ZXJzaW9uICAgICAgICAgICAgICAgICAgICAgICAgPSBwYXJhbXMudmVyc2lvbjtcblxuXHRcdHBhcmFtcy5hcmdzICAgICAgICYmIHRoaXMuYXJndW1lbnQocGFyYW1zLmFyZ3MpO1xuXHRcdHBhcmFtcy5jb21tYW5kcyAgICYmIHRoaXMuY29tbWFuZChwYXJhbXMuY29tbWFuZHMpO1xuXHRcdHBhcmFtcy5leHRlbnNpb25zICYmIHRoaXMuZXh0ZW5zaW9uKHBhcmFtcy5leHRlbnNpb25zKTtcblx0XHRwYXJhbXMub3B0aW9ucyAgICAmJiB0aGlzLm9wdGlvbihwYXJhbXMub3B0aW9ucyk7XG5cdH1cblxuXHQvKipcblx0ICogQWRkcyBhbiBvcHRpb24gdG8gdGhpcyBjb250ZXh0LlxuXHQgKlxuXHQgKiBAcGFyYW0ge1N0cmluZ3xPYmplY3R8T3B0aW9ufE9wdGlvbk1hcHxBcnJheTxPYmplY3R8T3B0aW9ufFN0cmluZz59IGZvcm1hdCAtIEFuIG9wdGlvblxuXHQgKiBmb3JtYXQsIGFuIG9iamVjdCBvZiBmb3JtYXQgdG8gb3B0aW9uIGRlc2NyaXB0aW9ucywgYE9wdGlvbmAgY29uc3RydWN0b3IgcGFyYW1zIG9yIGBPcHRpb25gXG5cdCAqIGluc3RhbmNlcywgYW4gYE9wdGlvbmAgaW5zdGFuY2UsIGFuIGBPcHRpb25NYXBgIGluc3RhbmNlLCBvciBhbiBhcnJheSBvZiBgT3B0aW9uYFxuXHQgKiBjb25zdHJ1Y3RvciBwYXJhbXMgYW5kIGBPcHRpb25gIGluc3RhbmNlcyBncm91cGVkIGJ5IGBTdHJpbmdgIGxhYmVscy5cblx0ICogQHBhcmFtIHtPYmplY3R8T3B0aW9ufFN0cmluZ30gW3BhcmFtc10gLSBXaGVuIGBmb3JtYXRgIGlzIGEgZm9ybWF0IHN0cmluZywgdGhlbiB0aGlzXG5cdCAqIGFyZ3VtZW50IGlzIGVpdGhlciBgT3B0aW9uYCBjb25zdHJ1Y3RvciBwYXJhbWV0ZXJzLCBhbiBgT3B0aW9uYCBpbnN0YW5jZSwgb3IgYW4gb3B0aW9uXG5cdCAqIGRlc2NyaXB0aW9uLlxuXHQgKiBAcmV0dXJucyB7Q29udGV4dH1cblx0ICogQGFjY2VzcyBwdWJsaWNcblx0ICpcblx0ICogQGV4YW1wbGVcblx0ICogICBjdHgub3B0aW9uKCctLWZvbycpOyAvLyBmb3JtYXQgZmxhZ1xuXHQgKiAgIGN0eC5vcHRpb24oJy0tZm9vJywgJ2VuYWJsZXMgZm9vIG1vZGUnKTsgLy8gZm9ybWF0IHdpdGggZGVzY3JpcHRpb25cblx0ICogICBjdHgub3B0aW9uKCctLWZvbycsIHsgZGVzYzogJ2VuYWJsZXMgZm9vIG1vZGUnIH0pOyAvLyBmb3JtYXQgd2l0aCBPcHRpb24gY3RvciBwYXJhbXNcblx0ICogICBjdHgub3B0aW9uKHsgJy0tZm9vJzogbnVsbCB9KTsgLy8gb2JqZWN0IHdpdGggZm9ybWF0IGZsYWdcblx0ICogICBjdHgub3B0aW9uKHsgJy0tZm9vJzogeyBkZXNjOiAnZW5hYmxlcyBmb28gbW9kZScgfSB9KTsgLy8gb2JqZWN0IHdpdGggT3B0aW9uIGN0b3IgcGFyYW1zXG5cdCAqICAgY3R4Lm9wdGlvbih7ICctLWZvbyc6IG5ldyBPcHRpb24oKSB9KTsgLy8gb2JqZWN0IG9mIGBPcHRpb25gIGluc3RhbmNlXG5cdCAqICAgY3R4Lm9wdGlvbihuZXcgT3B0aW9uKCctLWZvbycpKTsgLy8gYE9wdGlvbmAgaW5zdGFuY2Vcblx0ICogICBjdHgub3B0aW9uKG5ldyBPcHRpb25NYXAoKSk7IC8vIGBPcHRpb25NYXBgIGZyb20gYW5vdGhlciBpbnN0YW5jZVxuXHQgKiAgIGN0eC5vcHRpb24oWyAnU29tZSBHcm91cCcsIG5ldyBPcHRpb24oJy0tZm9vJyksICdBbm90aGVyIEdyb3VwJywgeyAnLS1iYXInOiBudWxsIH0gXSk7IC8vIGFuIGFycmF5IG9mIGdyb3VwZWQgb3B0aW9uc1xuXHQgKi9cblx0b3B0aW9uKGZvcm1hdCwgcGFyYW1zKSB7XG5cdFx0Y29uc3Qgb3B0cyA9IHRoaXMub3B0aW9ucy5hZGQoZm9ybWF0LCBwYXJhbXMpO1xuXG5cdFx0Zm9yIChjb25zdCBvcHQgb2Ygb3B0cykge1xuXHRcdFx0b3B0LnBhcmVudCA9IHRoaXM7XG5cblx0XHRcdGlmIChvcHQubG9uZykge1xuXHRcdFx0XHR0aGlzLmxvb2t1cC5sb25nW29wdC5sb25nXSA9IG9wdDtcblx0XHRcdH1cblxuXHRcdFx0aWYgKG9wdC5zaG9ydCkge1xuXHRcdFx0XHR0aGlzLmxvb2t1cC5zaG9ydFtvcHQuc2hvcnRdID0gb3B0O1xuXHRcdFx0fVxuXG5cdFx0XHRmb3IgKGNvbnN0IFsgYWxpYXMsIHZpc2libGUgXSBvZiBPYmplY3QuZW50cmllcyhvcHQuYWxpYXNlcy5sb25nKSkge1xuXHRcdFx0XHRpZiAodmlzaWJsZSkge1xuXHRcdFx0XHRcdHRoaXMubG9va3VwLmxvbmdbYWxpYXNdID0gb3B0O1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdGZvciAoY29uc3QgWyBhbGlhcywgdmlzaWJsZSBdIG9mIE9iamVjdC5lbnRyaWVzKG9wdC5hbGlhc2VzLnNob3J0KSkge1xuXHRcdFx0XHRpZiAodmlzaWJsZSkge1xuXHRcdFx0XHRcdHRoaXMubG9va3VwLnNob3J0W2FsaWFzXSA9IG9wdDtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHRoaXMucmV2Kys7XG5cblx0XHRyZXR1cm4gdGhpcztcblx0fVxuXG5cdC8qKlxuXHQgKiBTY2FuIHBhcmVudCBjb250ZXh0cyB0byBmaW5kIHRoZSBzcGVjaWZpZWQgcHJvcGVydHkgaW4gdGhlIGJvdHRvbS1tb3N0IGNvbnRleHQuXG5cdCAqXG5cdCAqIEBwYXJhbSB7U3RyaW5nfSBuYW1lIC0gVGhlIHByb3BlcnR5IG5hbWUuXG5cdCAqIEBwYXJhbSB7Kn0gZGVmYXVsdFZhbHVlIC0gQSBkZWZhdWx0IHZhbHVlIGlmIG5vIHZhbHVlIGlzIGZvdW5kLlxuXHQgKiBAcmV0dXJucyB7Kn1cblx0ICogQGFjY2VzcyBwcml2YXRlXG5cdCAqL1xuXHRwcm9wKG5hbWUsIGRlZmF1bHRWYWx1ZSkge1xuXHRcdGxldCB2YWx1ZSA9IHRoaXNbbmFtZV07XG5cdFx0Zm9yIChsZXQgcCA9IHRoaXMucGFyZW50OyB2YWx1ZSA9PT0gdW5kZWZpbmVkICYmIHA7IHAgPSBwLnBhcmVudCkge1xuXHRcdFx0dmFsdWUgPSBwLnByb3AobmFtZSwgdmFsdWUpO1xuXHRcdH1cblx0XHRyZXR1cm4gdmFsdWUgIT09IHVuZGVmaW5lZCA/IHZhbHVlIDogZGVmYXVsdFZhbHVlO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJlZ2lzdGVycyBhIGNvbW1hbmQgb3IgZXh0ZW5zaW9uIHRvIGFkZCB0byB0aGUgbG9va3VwLlxuXHQgKlxuXHQgKiBAcGFyYW0ge0NvbW1hbmR8RXh0ZW5zaW9ufSBpdCAtIFRoZSBjb21tYW5kIG9yIGV4dGVuc2lvbiBpbnN0YW5jZS5cblx0ICogQGFjY2VzcyBwcml2YXRlXG5cdCAqL1xuXHRyZWdpc3RlcihpdCkge1xuXHRcdGxldCBkZXN0O1xuXHRcdGlmIChpdC5jbGlraXQuaGFzKCdFeHRlbnNpb24nKSkge1xuXHRcdFx0ZGVzdCA9ICdleHRlbnNpb25zJztcblx0XHR9IGVsc2UgaWYgKGl0LmNsaWtpdC5oYXMoJ0NvbW1hbmQnKSkge1xuXHRcdFx0ZGVzdCA9ICdjb21tYW5kcyc7XG5cdFx0fVxuXG5cdFx0aWYgKCFkZXN0KSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0aXQucGFyZW50ID0gdGhpcztcblx0XHR0aGlzLmxvb2t1cFtkZXN0XVtpdC5uYW1lXSA9IGl0O1xuXG5cdFx0aWYgKGl0LmFsaWFzZXMpIHtcblx0XHRcdGZvciAoY29uc3QgYWxpYXMgb2YgT2JqZWN0LmtleXMoaXQuYWxpYXNlcykpIHtcblx0XHRcdFx0aWYgKCF0aGlzW2Rlc3RdLmhhcyhhbGlhcykpIHtcblx0XHRcdFx0XHR0aGlzLmxvb2t1cFtkZXN0XVthbGlhc10gPSBpdDtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fVxufVxuIl0sImZpbGUiOiJwYXJzZXIvY29udGV4dC5qcyJ9 | ||
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInBhcnNlci9jb250ZXh0LmpzIl0sIm5hbWVzIjpbImxvZyIsImhpZ2hsaWdodCIsIm5vdGUiLCJkZWJ1ZyIsInN0eWxlcyIsIkNvbnRleHQiLCJIb29rRW1pdHRlciIsImNvbnN0cnVjdG9yIiwicGFyYW1zIiwiaW5pdCIsImFyZ3VtZW50IiwiYXJnIiwiYXJncyIsImFkZCIsInJldiIsImNvbW1hbmQiLCJjbWQiLCJjbWRzIiwiY29tbWFuZHMiLCJuYW1lIiwicmVnaXN0ZXIiLCJleHRlbnNpb24iLCJleHQiLCJleHRzIiwiZXh0ZW5zaW9ucyIsImdlbmVyYXRlSGVscCIsIm9wdHMiLCJob29rIiwicmVzdWx0cyIsInNjb3BlcyIsImN0eCIsInB1c2giLCJ0aXRsZSIsIm9wdGlvbnMiLCJjb250ZXh0cyIsInVuc2hpZnQiLCJwYXJlbnQiLCJsb25ncyIsIlNldCIsInNob3J0cyIsImoiLCJsZW5ndGgiLCJPYmplY3QiLCJ2YWx1ZXMiLCJncm91cHMiLCJpIiwibG9uZyIsInNob3J0IiwibnVrZSIsImhhcyIsImNvdW50Iiwic3BsaWNlIiwiZGVzYyIsIlN0cmluZyIsInRyaW0iLCJyZXBsYWNlIiwiYyIsInRvTG9jYWxlVXBwZXJDYXNlIiwiZW50cmllcyIsInNvcnQiLCJhIiwiYiIsImxvY2FsZUNvbXBhcmUiLCJkZWZhdWx0Q29tbWFuZCIsImRlZmF1bHQiLCJhcmd1bWVudHMiLCJyZWR1Y2UiLCJwIiwidXNhZ2UiLCJBcnJheSIsImlzQXJyYXkiLCJwYXJlbnRDb250ZXh0TmFtZXMiLCJhcHBseSIsInNsaWNlIiwibWFwIiwibXVsdGlwbGUiLCJyZXF1aXJlZCIsInRleHQiLCJqb2luIiwiZXJyb3IiLCJ1bmRlZmluZWQiLCJzdWdnZXN0aW9ucyIsIndhcm5pbmdzIiwiZ2V0IiwiZGVmYXVsdFZhbHVlIiwidmFsdWUiLCJjbGlraXQiLCJFIiwiSU5WQUxJRF9BUkdVTUVOVCIsInNjb3BlIiwiQXJndW1lbnRMaXN0IiwiYXV0b0hpZGVCYW5uZXIiLCJiYW5uZXIiLCJDb21tYW5kTWFwIiwiZXJyb3JJZlVua25vd25Db21tYW5kIiwiRXh0ZW5zaW9uTWFwIiwiaGVscEV4aXRDb2RlIiwiaGVscFRlbXBsYXRlRmlsZSIsImhpZGVOb0Jhbm5lck9wdGlvbiIsImhpZGVOb0NvbG9yT3B0aW9uIiwibG9va3VwIiwiTG9va3VwIiwibm9kZVZlcnNpb24iLCJPcHRpb25NYXAiLCJzaG93QmFubmVyRm9yRXh0ZXJuYWxDTElzIiwic2hvd0hlbHBPbkVycm9yIiwidHJlYXRVbmtub3duT3B0aW9uc0FzQXJndW1lbnRzIiwidmVyc2lvbiIsIm9wdGlvbiIsImZvcm1hdCIsIm9wdCIsImFsaWFzIiwidmlzaWJsZSIsImFsaWFzZXMiLCJwcm9wIiwiaXQiLCJkZXN0Iiwia2V5cyJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUVBOzs7O0FBRUEsTUFBTTtBQUFFQSxFQUFBQTtBQUFGLElBQVUsb0JBQU0saUJBQU4sQ0FBaEI7QUFDQSxNQUFNO0FBQUVDLEVBQUFBLFNBQUY7QUFBYUMsRUFBQUE7QUFBYixJQUFzQkMsZUFBTUMsTUFBbEM7QUFFQTs7Ozs7OztBQU1lLE1BQU1DLE9BQU4sU0FBc0JDLG9CQUF0QixDQUFrQztBQUNoRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFtQ0FDLEVBQUFBLFdBQVcsQ0FBQ0MsTUFBTSxHQUFHLEVBQVYsRUFBYztBQUN4QjtBQUNBLGtDQUFtQixJQUFuQixFQUF5QixTQUF6QjtBQUNBLFNBQUtDLElBQUwsQ0FBVUQsTUFBVjtBQUNBO0FBRUQ7Ozs7Ozs7Ozs7OztBQVVBRSxFQUFBQSxRQUFRLENBQUNDLEdBQUQsRUFBTTtBQUNiLFNBQUtDLElBQUwsQ0FBVUMsR0FBVixDQUFjRixHQUFkO0FBQ0EsU0FBS0csR0FBTDtBQUNBLFdBQU8sSUFBUDtBQUNBO0FBRUQ7Ozs7Ozs7Ozs7Ozs7OztBQWFBQyxFQUFBQSxPQUFPLENBQUNDLEdB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Qm1FLE1BQUFBLElBQUksR0FBRyxZQUFQO0FBQ0EsS0FGRCxNQUVPLElBQUlELEVBQUUsQ0FBQzdCLE1BQUgsQ0FBVXJDLEdBQVYsQ0FBYyxTQUFkLENBQUosRUFBOEI7QUFDcENtRSxNQUFBQSxJQUFJLEdBQUcsVUFBUDtBQUNBOztBQUVELFFBQUksQ0FBQ0EsSUFBTCxFQUFXO0FBQ1Y7QUFDQTs7QUFFREQsSUFBQUEsRUFBRSxDQUFDL0UsTUFBSCxHQUFZLElBQVo7QUFDQSxTQUFLZ0UsTUFBTCxDQUFZZ0IsSUFBWixFQUFrQkQsRUFBRSxDQUFDaEcsSUFBckIsSUFBNkJnRyxFQUE3Qjs7QUFFQSxRQUFJQSxFQUFFLENBQUNGLE9BQVAsRUFBZ0I7QUFDZixXQUFLLE1BQU1GLEtBQVgsSUFBb0JyRSxNQUFNLENBQUMyRSxJQUFQLENBQVlGLEVBQUUsQ0FBQ0YsT0FBZixDQUFwQixFQUE2QztBQUM1QyxZQUFJLENBQUMsS0FBS0csSUFBTCxFQUFXbkUsR0FBWCxDQUFlOEQsS0FBZixDQUFMLEVBQTRCO0FBQzNCLGVBQUtYLE1BQUwsQ0FBWWdCLElBQVosRUFBa0JMLEtBQWxCLElBQTJCSSxFQUEzQjtBQUNBO0FBQ0Q7QUFDRDtBQUNEOztBQTVYK0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgQXJndW1lbnRMaXN0IGZyb20gJy4vYXJndW1lbnQtbGlzdCc7XG5pbXBvcnQgQ29tbWFuZE1hcCBmcm9tICcuL2NvbW1hbmQtbWFwJztcbmltcG9ydCBkZWJ1ZyBmcm9tICcuLi9saWIvZGVidWcnO1xuaW1wb3J0IEUgZnJvbSAnLi4vbGliL2Vycm9ycyc7XG5pbXBvcnQgRXh0ZW5zaW9uTWFwIGZyb20gJy4vZXh0ZW5zaW9uLW1hcCc7XG5pbXBvcnQgSG9va0VtaXR0ZXIgZnJvbSAnaG9vay1lbWl0dGVyJztcbmltcG9ydCBMb29rdXAgZnJvbSAnLi9sb29rdXAnO1xuaW1wb3J0IE9wdGlvbk1hcCBmcm9tICcuL29wdGlvbi1tYXAnO1xuXG5pbXBvcnQgeyBkZWNsYXJlQ0xJS2l0Q2xhc3MgfSBmcm9tICcuLi9saWIvdXRpbCc7XG5cbmNvbnN0IHsgbG9nIH0gPSBkZWJ1ZygnY2xpLWtpdDpjb250ZXh0Jyk7XG5jb25zdCB7IGhpZ2hsaWdodCwgbm90ZSB9ID0gZGVidWcuc3R5bGVzO1xuXG4vKipcbiAqIERlZmluZXMgYSBjb250ZXh0IHRoYXQgY29udGFpbnMgY29tbWFuZHMsIG9wdGlvbnMsIGFuZCBhcmdzLiBTZXJ2ZXMgYXMgdGhlXG4gKiBiYXNlIGNsYXNzIGZvciBgQ0xJYCBhbmQgYENvbnRleHRgIG9iamVjdHMuXG4gKlxuICogQGV4dGVuZHMge0hvb2tFbWl0dGVyfVxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBDb250ZXh0IGV4dGVuZHMgSG9va0VtaXR0ZXIge1xuXHQvKipcblx0ICogQ29uc3RydWN0cyBhIGNvbnRleHQgaW5zdGFuY2UuXG5cdCAqXG5cdCAqIEBwYXJhbSB7T2JqZWN0fENvbnRleHR9IFtwYXJhbXNdIC0gVmFyaW91cyBwYXJhbWV0ZXJzLlxuXHQgKiBAcGFyYW0ge09iamVjdHxTdHJpbmd8QXJndW1lbnR8QXJndW1lbnRMaXN0fEFycmF5PE9iamVjdHxTdHJpbmd8QXJndW1lbnQ+fSBbcGFyYW1zLmFyZ3NdIC1cblx0ICogQW4gb2JqZWN0IG9mIGFyZ3VtZW50IG5hbWVzIHRvIGFyZ3VtZW50IGRlc2NyaXB0b3JzLCBhbiBhcmd1bWVudCBuYW1lLCBhbiBgQXJndW1lbnRgXG5cdCAqIGluc3RhbmNlLCBhbiBgQXJndW1lbnRMaXN0YCBpbnN0YW5jZSwgb3IgYXJyYXkgb2Ygb2JqZWN0IGRlc2NyaXB0b3JzLCBhcmd1bWVudCBuYW1lcywgYW5kXG5cdCAqIGBBcmd1bWVudGAgaW5zdGFuY2VzLlxuXHQgKiBAcGFyYW0ge0Jvb2xlYW59IFtwYXJhbXMuY2FtZWxDYXNlPXRydWVdIC0gQ2FtZWwgY2FzZSBvcHRpb24gbmFtZXMuXG5cdCAqIEBwYXJhbSB7T2JqZWN0fFN0cmluZ3xDb21tYW5kfENvbW1hbmRNYXB8QXJyYXkuPE9iamVjdHxTdHJpbmd8Q29tbWFuZD59IFtwYXJhbXMuY29tbWFuZHNdIC1cblx0ICogQW4gb2JqZWN0IHVzZWQgZm9yIGBDb21tYW5kYCBjb25zdHJ1Y3RvciBwYXJhbXMsIGEgcGF0aCB0byBhIGRpcmVjdG9yeSBvciBhIGAuanNgIGZpbGUsIGFcblx0ICogYENvbW1hbmRgIGluc3RhbmNlLCBvciBhbiBhcnJheSBvZiB0aG9zZSB0eXBlcy4gTWF5IGFsc28gYmUgYSBgQ29tbWFuZE1hcGAgaW5zdGFuY2UuIElmXG5cdCAqIGBjbWRgIGlzIGEgYFN0cmluZ2AgYW5kIGBwYXJhbXNgIGlzIHByZXNlbnQsIHRoZW4gaXQgd2lsbCB0cmVhdCBgY21kYCBhcyB0aGUgY29tbWFuZCBuYW1lLFxuXHQgKiBub3QgYSBmaWxlIHBhdGguXG5cdCAqIEBwYXJhbSB7U3RyaW5nfSBbcGFyYW1zLmRlc2NdIC0gVGhlIGRlc2NyaXB0aW9uIG9mIHRoZSBDTEkgb3IgY29tbWFuZCBkaXNwbGF5ZWQgaW4gdGhlIGhlbHBcblx0ICogb3V0cHV0LiBJZiBjb250ZXh0IGlzIGEgY29tbWFuZCB3aXRoIGEgaGVscCBoZWFkZXIgZGVmaW5lZCwgdGhpcyBkZXNjcmlwdGlvbiBpcyBub3Rcblx0ICogZGlzcGxheWVkLlxuXHQgKiBAcGFyYW0ge09iamVjdHxTdHJpbmd8RXh0ZW5zaW9ufEV4dGVuc2lvbk1hcHxBcnJheS48U3RyaW5nfEV4dGVuc2lvbj59IFtwYXJhbXMuZXh0ZW5zaW9uc10gLVxuXHQgKiBBbiBvYmplY3Qgb2YgZXh0ZW5zaW9uIG5hbWVzIHRvIGV4dGVuc2lvbiBwYXRocyBvciBpbnN0YW5jZXMsIGFuIGV4dGVuc2lvbiBwYXRoLCBhblxuXHQgKiBgRXh0ZW5zaW9uYCBpbnN0YW5jZSwgb3IgYW4gYXJyYXkgb2YgdGhvc2UgdHlwZXMuIEFuIGV4dGVuc2lvbiBwYXRoIG1heSBiZSBhIGRpcmVjdG9yeVxuXHQgKiBjb250YWluaW5nIGEgTm9kZS5qcyBtb2R1bGUsIGEgcGF0aCB0byBhIGAuanNgIGZpbGUsIG9yIHRoZSBuYW1lIG9mIGEgZXhlY3V0YWJsZS4gTWF5IGFsc29cblx0ICogYmUgYW4gYEV4dGVuc2lvbk1hcGAgaW5zdGFuY2UuXG5cdCAqIEBwYXJhbSB7U3RyaW5nfSBbcGFyYW1zLm5hbWVdIC0gVGhlIG5hbWUgb2YgdGhlIGNvbnRleHQgc3VjaCBhcyB0aGUgcHJvZ3JhbSBvciB0aGUgY29tbWFuZFxuXHQgKiBuYW1lLlxuXHQgKiBAcGFyYW0ge09iamVjdHxPcHRpb258T3B0aW9uTWFwfEFycmF5PE9iamVjdHxPcHRpb258U3RyaW5nPn0gW3BhcmFtcy5vcHRpb25zXSAtIEFuIG9iamVjdCBvZlxuXHQgKiBmb3JtYXQgdG8gYE9wdGlvbmAgY29uc3RydWN0b3IgcGFyYW1zLCBhbiBgT3B0aW9uYCBpbnN0YW5jZSwgb3IgYW4gYXJyYXkgb2YgYE9wdGlvbmBcblx0ICogY29uc3RydWN0b3IgcGFyYW1zIGFuZCBgT3B0aW9uYCBpbnN0YW5jZXMgZ3JvdXBlZCBieSBgU3RyaW5nYCBsYWJlbHMuXG5cdCAqIEBwYXJhbSB7Q29udGV4dH0gW3BhcmFtcy5wYXJlbnRdIC0gVGhlIHBhcmVudCBjb250ZXh0LlxuXHQgKiBAcGFyYW0ge1N0cmluZ30gW3BhcmFtcy50aXRsZV0gLSBUaGUgY29udGV4dCB0aXRsZS5cblx0ICogQHBhcmFtIHtCb29sZWFufSBbcGFyYW1zLnRyZWF0VW5rbm93bk9wdGlvbnNBc0FyZ3VtZW50cz1mYWxzZV0gLSBXaGVuIGB0cnVlYCwgYW55IGFyZ3VtZW50IGlzXG5cdCAqIGVuY291bnRlcmVkIGR1cmluZyBwYXJzaW5nIHRoYXQgcmVzZW1ibGVzIGEgb3B0aW9uIHRoYXQgZG9lcyBub3QgZXhpc3QsIGl0IHdpbGwgYWRkIGl0XG5cdCAqIHVudG91Y2hlZCB0byBgX2AgYXMgYW4gYXJndW1lbnQgYXMgd2VsbCBhcyB0byBgYXJndmAgYXMgYSBib29sZWFuIGZsYWcuIFdoZW4gYGZhbHNlYCwgaXQgd2lsbFxuXHQgKiBvbmx5IGFkZCB0aGUgYXJndW1lbnQgdG8gYGFyZ3ZgIGFzIGEgYm9vbGVhbiBmbGFnLlxuXHQgKiBAYWNjZXNzIHB1YmxpY1xuXHQgKi9cblx0Y29uc3RydWN0b3IocGFyYW1zID0ge30pIHtcblx0XHRzdXBlcigpO1xuXHRcdGRlY2xhcmVDTElLaXRDbGFzcyh0aGlzLCAnQ29udGV4dCcpO1xuXHRcdHRoaXMuaW5pdChwYXJhbXMpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEFkZHMgYW4gYXJndW1lbnQgdG8gdGhpcyBjb250ZXh0LlxuXHQgKlxuXHQgKiBAcGFyYW0ge09iamVjdHxTdHJpbmd8QXJndW1lbnR8QXJndW1lbnRMaXN0fEFycmF5PE9iamVjdHxTdHJpbmd8QXJndW1lbnQ+fSBhcmcgLSBBbiBvYmplY3Rcblx0ICogb2YgYXJndW1lbnQgbmFtZXMgdG8gYXJndW1lbnQgZGVzY3JpcHRvcnMsIGFuIGFyZ3VtZW50IG5hbWUsIGFuIGBBcmd1bWVudGAgaW5zdGFuY2UsIGFuXG5cdCAqIGBBcmd1bWVudExpc3RgIGluc3RhbmNlLCBvciBhcnJheSBvZiBvYmplY3QgZGVzY3JpcHRvcnMsIGFyZ3VtZW50IG5hbWVzLCBhbmQgYEFyZ3VtZW50YFxuXHQgKiBpbnN0YW5jZXMuXG5cdCAqIEByZXR1cm5zIHtDb250ZXh0fVxuXHQgKiBAYWNjZXNzIHB1YmxpY1xuXHQgKi9cblx0YXJndW1lbnQoYXJnKSB7XG5cdFx0dGhpcy5hcmdzLmFkZChhcmcpO1xuXHRcdHRoaXMucmV2Kys7XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cblxuXHQvKipcblx0ICogQWRkcyBhIGNvbW1hbmQgdG8gdGhpcyBjb250ZXh0LlxuXHQgKlxuXHQgKiBAcGFyYW0ge09iamVjdHxTdHJpbmd8Q29tbWFuZHxDb21tYW5kTWFwfEFycmF5LjxPYmplY3R8U3RyaW5nfENvbW1hbmQ+fSBjbWQgLSBBbiBvYmplY3Rcblx0ICogdXNlZCBmb3IgYENvbW1hbmRgIGNvbnN0cnVjdG9yIHBhcmFtcywgYSBwYXRoIHRvIGEgZGlyZWN0b3J5IG9yIGEgYC5qc2AgZmlsZSwgYSBgQ29tbWFuZGBcblx0ICogaW5zdGFuY2UsIG9yIGFuIGFycmF5IG9mIHRob3NlIHR5cGVzLiBNYXkgYWxzbyBiZSBhIGBDb21tYW5kTWFwYCBpbnN0YW5jZS4gSWYgYGNtZGAgaXMgYVxuXHQgKiBgU3RyaW5nYCBhbmQgYHBhcmFtc2AgaXMgcHJlc2VudCwgdGhlbiBpdCB3aWxsIHRyZWF0IGBjbWRgIGFzIHRoZSBjb21tYW5kIG5hbWUsIG5vdCBhIGZpbGVcblx0ICogcGF0aC5cblx0ICogQHBhcmFtIHtPYmplY3R9IFtwYXJhbXNdIC0gV2hlbiBgY21kYCBpcyB0aGUgY29tbWFuZCBuYW1lLCB0aGVuIHRoaXMgaXMgdGhlIG9wdGlvbnMgdG8gcGFzc1xuXHQgKiBpbnRvIHRoZSBgQ29tbWFuZGAgY29uc3RydWN0b3IuXG5cdCAqIEByZXR1cm5zIHtDb250ZXh0fVxuXHQgKiBAYWNjZXNzIHB1YmxpY1xuXHQgKi9cblx0Y29tbWFuZChjbWQsIHBhcmFtcykge1xuXHRcdGNvbnN0IGNtZHMgPSB0aGlzLmNvbW1hbmRzLmFkZChjbWQsIHBhcmFtcyk7XG5cdFx0Zm9yIChjb25zdCBjbWQgb2YgY21kcykge1xuXHRcdFx0bG9nKGBBZGRpbmcgY29tbWFuZDogJHtoaWdobGlnaHQoY21kLm5hbWUpfSAke25vdGUoYCgke3RoaXMubmFtZX0pYCl9YCk7XG5cdFx0XHR0aGlzLnJlZ2lzdGVyKGNtZCk7XG5cdFx0fVxuXHRcdHRoaXMucmV2Kys7XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cblxuXHQvKipcblx0ICogUmVnaXN0ZXJzIGFuIGV4dGVybmFsIHBhY2thZ2UgYXMgYSBjb21tYW5kIGNvbnRleHQgdGhhdCBpbnZva2VzIHRoZSBwYWNrYWdlLlxuXHQgKlxuXHQgKiBAcGFyYW0ge09iamVjdHxTdHJpbmd8RXh0ZW5zaW9ufEV4dGVuc2lvbk1hcHxBcnJheS48U3RyaW5nfEV4dGVuc2lvbj59IGV4dCAtIEFuIG9iamVjdCBvZlxuXHQgKiBleHRlbnNpb24gbmFtZXMgdG8gZXh0ZW5zaW9uIHBhdGhzIG9yIGluc3RhbmNlcywgYW4gZXh0ZW5zaW9uIHBhdGgsIGFuIGBFeHRlbnNpb25gIGluc3RhbmNlLFxuXHQgKiBvciBhbiBhcnJheSBvZiB0aG9zZSB0eXBlcy4gQW4gZXh0ZW5zaW9uIHBhdGggbWF5IGJlIGEgZGlyZWN0b3J5IGNvbnRhaW5pbmcgYSBOb2RlLmpzXG5cdCAqIG1vZHVsZSwgYSBwYXRoIHRvIGEgYC5qc2AgZmlsZSwgb3IgdGhlIG5hbWUgb2YgYSBleGVjdXRhYmxlLiBNYXkgYWxzbyBiZSBhbiBgRXh0ZW5zaW9uTWFwYFxuXHQgKiBpbnN0YW5jZS5cblx0ICogQHBhcmFtIHtTdHJpbmd9IFtuYW1lXSAtIFRoZSBleHRlbnNpb24gbmFtZSB1c2VkIGZvciB0aGUgY29udGV4dCBuYW1lLiBJZiBub3Qgc2V0LCBpdCB3aWxsXG5cdCAqIGF0dGVtcHQgdG8gZmluZCBhIGBwYWNrYWdlLmpzb25gIHdpdGggYSBgY2xpLWtpdC5uYW1lYCB2YWx1ZS5cblx0ICogQHJldHVybnMge0NvbnRleHR9XG5cdCAqIEBhY2Nlc3MgcHVibGljXG5cdCAqL1xuXHRleHRlbnNpb24oZXh0LCBuYW1lKSB7XG5cdFx0Y29uc3QgZXh0cyA9IHRoaXMuZXh0ZW5zaW9ucy5hZGQoZXh0LCBuYW1lKTtcblx0XHRmb3IgKGNvbnN0IGV4dCBvZiBleHRzKSB7XG5cdFx0XHRsb2coYEFkZGluZyBleHRlbnNpb246ICR7aGlnaGxpZ2h0KGV4dC5uYW1lKX0gJHtub3RlKGAoJHt0aGlzLm5hbWV9KWApfWApO1xuXHRcdFx0dGhpcy5yZWdpc3RlcihleHQpO1xuXHRcdH1cblx0XHR0aGlzLnJldisrO1xuXHRcdHJldHVybiB0aGlzO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJlbmRlcnMgdGhlIGhlbHAgc2NyZWVuIGZvciB0aGlzIGNvbnRleHQgaW5jbHVkaW5nIHRoZSBwYXJlbnQgY29udGV4dHMuXG5cdCAqXG5cdCAqIEBwYXJhbSB7T2JqZWN0fSBbb3B0c10gLSBWYXJpb3VzIHBhcmFtZXRlcnMuXG5cdCAqIEByZXR1cm5zIHtQcm9taXNlPE9iamVjdD59XG5cdCAqIEBhY2Nlc3MgcHJpdmF0ZVxuXHQgKi9cblx0Z2VuZXJhdGVIZWxwKG9wdHMgPSB7fSkge1xuXHRcdHJldHVybiB0aGlzLmhvb2soJ2dlbmVyYXRlSGVscCcsIHJlc3VsdHMgPT4ge1xuXHRcdFx0Y29uc3Qgc2NvcGVzID0gW107XG5cdFx0XHRsZXQgY3R4ID0gdGhpcztcblxuXHRcdFx0d2hpbGUgKGN0eCkge1xuXHRcdFx0XHRzY29wZXMucHVzaCh7XG5cdFx0XHRcdFx0dGl0bGU6IGAke2N0eC50aXRsZX0gb3B0aW9uc2AsXG5cdFx0XHRcdFx0bmFtZTogY3R4Lm5hbWUsXG5cdFx0XHRcdFx0Li4uY3R4Lm9wdGlvbnMuZ2VuZXJhdGVIZWxwKClcblx0XHRcdFx0fSk7XG5cdFx0XHRcdHJlc3VsdHMuY29udGV4dHMudW5zaGlmdChjdHgubmFtZSk7XG5cdFx0XHRcdGN0eCA9IGN0eC5wYXJlbnQ7XG5cdFx0XHR9XG5cblx0XHRcdC8vIHJlbW92ZSBkdXBsaWNhdGUgb3B0aW9uc1xuXHRcdFx0Y29uc3QgbG9uZ3MgPSBuZXcgU2V0KCk7XG5cdFx0XHRjb25zdCBzaG9ydHMgPSBuZXcgU2V0KCk7XG5cdFx0XHRsZXQgaiA9IHNjb3Blcy5sZW5ndGg7XG5cdFx0XHR3aGlsZSAoai0tKSB7XG5cdFx0XHRcdGZvciAoY29uc3Qgb3B0aW9ucyBvZiBPYmplY3QudmFsdWVzKHNjb3Blc1tqXS5ncm91cHMpKSB7XG5cdFx0XHRcdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCBvcHRpb25zLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRcdFx0XHRjb25zdCB7IGxvbmcsIHNob3J0IH0gPSBvcHRpb25zW2ldO1xuXHRcdFx0XHRcdFx0bGV0IG51a2UgPSBmYWxzZTtcblx0XHRcdFx0XHRcdGlmIChsb25nICE9PSBudWxsKSB7XG5cdFx0XHRcdFx0XHRcdGlmIChsb25ncy5oYXMobG9uZykpIHtcblx0XHRcdFx0XHRcdFx0XHRudWtlID0gdHJ1ZTtcblx0XHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0XHRsb25ncy5hZGQobG9uZyk7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdGlmIChzaG9ydCAhPT0gbnVsbCkge1xuXHRcdFx0XHRcdFx0XHRpZiAoc2hvcnRzLmhhcyhzaG9ydCkpIHtcblx0XHRcdFx0XHRcdFx0XHRudWtlID0gdHJ1ZTtcblx0XHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0XHRzaG9ydHMuYWRkKHNob3J0KTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0aWYgKG51a2UpIHtcblx0XHRcdFx0XHRcdFx0c2NvcGVzW2pdLmNvdW50LS07XG5cdFx0XHRcdFx0XHRcdG9wdGlvbnMuc3BsaWNlKGktLSwgMSk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdC8vIHNldCB0aGUgZGVzY3JpcHRpb25cblx0XHRcdHJlc3VsdHMuZGVzYyA9IHRoaXMuZGVzYyA/IFN0cmluZyh0aGlzLmRlc2MpLnRyaW0oKS5yZXBsYWNlKC9eXFx3LywgYyA9PiBjLnRvTG9jYWxlVXBwZXJDYXNlKCkpIDogbnVsbDtcblxuXHRcdFx0Ly8gc2V0IHRoZSBjb21tYW5kc1xuXHRcdFx0cmVzdWx0cy5jb21tYW5kcyA9IHtcblx0XHRcdFx0dGl0bGU6IHRoaXMucGFyZW50ID8gYCR7dGhpcy50aXRsZX0gY29tbWFuZHNgIDogJ0NvbW1hbmRzJyxcblx0XHRcdFx0Li4udGhpcy5jb21tYW5kcy5nZW5lcmF0ZUhlbHAoKVxuXHRcdFx0fTtcblxuXHRcdFx0Y29uc3QgZXh0ID0gdGhpcy5leHRlbnNpb25zLmdlbmVyYXRlSGVscCgpO1xuXHRcdFx0cmVzdWx0cy5jb21tYW5kcy5jb3VudCArPSBleHQuY291bnQ7XG5cdFx0XHRyZXN1bHRzLmNvbW1hbmRzLmVudHJpZXMucHVzaCguLi5leHQuZW50cmllcyk7XG5cdFx0XHRyZXN1bHRzLmNvbW1hbmRzLmVudHJpZXMuc29ydCgoYSwgYikgPT4gYS5uYW1lLmxvY2FsZUNvbXBhcmUoYi5uYW1lKSk7XG5cblx0XHRcdC8vIHVwZGF0ZSB0aGUgZGVmYXVsdCBjb21tYW5kXG5cdFx0XHRpZiAodGhpcy5kZWZhdWx0Q29tbWFuZCkge1xuXHRcdFx0XHRmb3IgKGNvbnN0IGNtZCBvZiByZXN1bHRzLmNvbW1hbmRzLmVudHJpZXMpIHtcblx0XHRcdFx0XHRpZiAoY21kLm5hbWUgPT09IHRoaXMuZGVmYXVsdENvbW1hbmQpIHtcblx0XHRcdFx0XHRcdGNtZC5kZWZhdWx0ID0gdHJ1ZTtcblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHQvLyBzZXQgdGhlIGFyZ3VtZW50c1xuXHRcdFx0cmVzdWx0cy5hcmd1bWVudHMgPSB7XG5cdFx0XHRcdHRpdGxlOiB0aGlzLnBhcmVudCA/IGAke3RoaXMudGl0bGV9IGFyZ3VtZW50c2AgOiAnQXJndW1lbnRzJyxcblx0XHRcdFx0Li4udGhpcy5hcmdzLmdlbmVyYXRlSGVscCgpXG5cdFx0XHR9O1xuXG5cdFx0XHQvLyBzZXQgdGhlIG9wdGlvbnNcblx0XHRcdHJlc3VsdHMub3B0aW9ucyA9IHtcblx0XHRcdFx0Y291bnQ6IHNjb3Blcy5yZWR1Y2UoKHAsIGMpID0+IHAgKyBjLmNvdW50LCAwKSxcblx0XHRcdFx0c2NvcGVzXG5cdFx0XHR9O1xuXG5cdFx0XHQvLyBzZXQgdGhlIHVzYWdlIGxpbmVcblx0XHRcdGNvbnN0IHVzYWdlID0gW107XG5cdFx0XHRpZiAoQXJyYXkuaXNBcnJheShvcHRzLnBhcmVudENvbnRleHROYW1lcykpIHtcblx0XHRcdFx0dXNhZ2UucHVzaC5hcHBseSh1c2FnZSwgb3B0cy5wYXJlbnRDb250ZXh0TmFtZXMpO1xuXHRcdFx0fVxuXHRcdFx0dXNhZ2UucHVzaC5hcHBseSh1c2FnZSwgcmVzdWx0cy5jb250ZXh0cy5zbGljZSgpKTtcblx0XHRcdHJlc3VsdHMuY29tbWFuZHMuY291bnQgJiYgdXNhZ2UucHVzaCgnPGNvbW1hbmQ+Jyk7XG5cdFx0XHRyZXN1bHRzLm9wdGlvbnMuY291bnQgJiYgdXNhZ2UucHVzaCgnW29wdGlvbnNdJyk7XG5cdFx0XHR1c2FnZS5wdXNoLmFwcGx5KHVzYWdlLCByZXN1bHRzLmFyZ3VtZW50cy5lbnRyaWVzLm1hcChhcmcgPT4ge1xuXHRcdFx0XHRjb25zdCBuYW1lID0gYDwke2FyZy5uYW1lfSR7YXJnLm11bHRpcGxlID8gJy4uLicgOiAnJ30+YDtcblx0XHRcdFx0cmV0dXJuIGFyZy5yZXF1aXJlZCA/IG5hbWUgOiBgWyR7bmFtZX1dYDtcblx0XHRcdH0pKTtcblx0XHRcdHJlc3VsdHMudXNhZ2UgPSB7XG5cdFx0XHRcdHRpdGxlOiAnVXNhZ2UnLFxuXHRcdFx0XHR0ZXh0OiB1c2FnZS5qb2luKCcgJylcblx0XHRcdH07XG5cblx0XHRcdHJldHVybiByZXN1bHRzO1xuXHRcdH0pKHtcblx0XHRcdGNvbnRleHRzOiBbXSxcblx0XHRcdGVycm9yOiB1bmRlZmluZWQsXG5cdFx0XHRzdWdnZXN0aW9uczogW10sXG5cdFx0XHR3YXJuaW5nczogdW5kZWZpbmVkXG5cdFx0fSk7XG5cdH1cblxuXHQvKipcblx0ICogU2NhbiBwYXJlbnQgY29udGV4dHMgdG8gZmluZCB0aGUgc3BlY2lmaWVkIHByb3BlcnR5IGluIHRoZSB0b3AtbW9zdCBjb250ZXh0LlxuXHQgKlxuXHQgKiBAcGFyYW0ge1N0cmluZ30gbmFtZSAtIFRoZSBwcm9wZXJ0eSBuYW1lLlxuXHQgKiBAcGFyYW0geyp9IGRlZmF1bHRWYWx1ZSAtIEEgZGVmYXVsdCB2YWx1ZSBpZiBubyB2YWx1ZSBpcyBmb3VuZC5cblx0ICogQHJldHVybnMgeyp9XG5cdCAqIEBhY2Nlc3MgcHJpdmF0ZVxuXHQgKi9cblx0Z2V0KG5hbWUsIGRlZmF1bHRWYWx1ZSkge1xuXHRcdGxldCB2YWx1ZSA9IHRoaXNbbmFtZV07XG5cdFx0Zm9yIChsZXQgcCA9IHRoaXMucGFyZW50OyBwOyBwID0gcC5wYXJlbnQpIHtcblx0XHRcdHZhbHVlID0gcC5nZXQobmFtZSwgdmFsdWUpO1xuXHRcdH1cblx0XHRyZXR1cm4gdmFsdWUgIT09IHVuZGVmaW5lZCA/IHZhbHVlIDogZGVmYXVsdFZhbHVlO1xuXHR9XG5cblx0LyoqXG5cdCAqIEluaXRpYWxpemVzIHRoaXMgY29udGV4dCB3aXRoIHBhcmFtcy5cblx0ICpcblx0ICogQHBhcmFtIHtPYmplY3R8Q29udGV4dH0gcGFyYW1zIC0gVmFyaW91cyBwYXJhbWV0ZXJzXG5cdCAqIEBhY2Nlc3MgcHJpdmF0ZVxuXHQgKi9cblx0aW5pdChwYXJhbXMpIHtcblx0XHRpZiAoIXBhcmFtcyB8fCB0eXBlb2YgcGFyYW1zICE9PSAnb2JqZWN0JyB8fCAocGFyYW1zLmNsaWtpdCBpbnN0YW5jZW9mIFNldCAmJiAhcGFyYW1zLmNsaWtpdC5oYXMoJ0NvbnRleHQnKSkpIHtcblx0XHRcdHRocm93IEUuSU5WQUxJRF9BUkdVTUVOVCgnRXhwZWN0ZWQgcGFyYW1ldGVycyB0byBiZSBhbiBvYmplY3Qgb3IgQ29udGV4dCcsIHsgbmFtZTogJ3BhcmFtcycsIHNjb3BlOiAnQ29udGV4dC5pbml0JywgdmFsdWU6IHBhcmFtcyB9KTtcblx0XHR9XG5cblx0XHRpZiAocGFyYW1zLmNsaWtpdCBpbnN0YW5jZW9mIFNldCAmJiAhcGFyYW1zLmNsaWtpdC5oYXMoJ0NvbnRleHQnKSkge1xuXHRcdFx0dGhyb3cgRS5JTlZBTElEX0FSR1VNRU5UKCdFeHBlY3RlZCBwYXJhbWV0ZXJzIHRvIGJlIGFuIG9iamVjdCBvciBDb250ZXh0JywgeyBuYW1lOiAncGFyYW1zJywgc2NvcGU6ICdDb250ZXh0LmluaXQnLCB2YWx1ZTogcGFyYW1zIH0pO1xuXHRcdH1cblxuXHRcdHRoaXMuYXJncyAgICAgICAgICAgICAgICAgICAgICAgICAgID0gbmV3IEFyZ3VtZW50TGlzdCgpO1xuXHRcdHRoaXMuYXV0b0hpZGVCYW5uZXIgICAgICAgICAgICAgICAgID0gcGFyYW1zLmF1dG9IaWRlQmFubmVyO1xuXHRcdHRoaXMuYmFubmVyICAgICAgICAgICAgICAgICAgICAgICAgID0gcGFyYW1zLmJhbm5lcjtcblx0XHR0aGlzLmNvbW1hbmRzICAgICAgICAgICAgICAgICAgICAgICA9IG5ldyBDb21tYW5kTWFwKCk7XG5cdFx0dGhpcy5kZWZhdWx0Q29tbWFuZCAgICAgICAgICAgICAgICAgPSBwYXJhbXMuZGVmYXVsdENvbW1hbmQ7XG5cdFx0dGhpcy5kZXNjICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBwYXJhbXMuZGVzYztcblx0XHR0aGlzLmVycm9ySWZVbmtub3duQ29tbWFuZCAgICAgICAgICA9IHBhcmFtcy5lcnJvcklmVW5rbm93bkNvbW1hbmQ7XG5cdFx0dGhpcy5leHRlbnNpb25zICAgICAgICAgICAgICAgICAgICAgPSBuZXcgRXh0ZW5zaW9uTWFwKCk7XG5cdFx0dGhpcy5oZWxwRXhpdENvZGUgICAgICAgICAgICAgICAgICAgPSBwYXJhbXMuaGVscEV4aXRDb2RlO1xuXHRcdHRoaXMuaGVscFRlbXBsYXRlRmlsZSAgICAgICAgICAgICAgID0gcGFyYW1zLmhlbHBUZW1wbGF0ZUZpbGU7XG5cdFx0dGhpcy5oaWRlTm9CYW5uZXJPcHRpb24gICAgICAgICAgICAgPSBwYXJhbXMuaGlkZU5vQmFubmVyT3B0aW9uO1xuXHRcdHRoaXMuaGlkZU5vQ29sb3JPcHRpb24gICAgICAgICAgICAgID0gcGFyYW1zLmhpZGVOb0NvbG9yT3B0aW9uO1xuXHRcdHRoaXMubG9va3VwICAgICAgICAgICAgICAgICAgICAgICAgID0gbmV3IExvb2t1cCgpO1xuXHRcdHRoaXMubmFtZSAgICAgICAgICAgICAgICAgICAgICAgICAgID0gcGFyYW1zLm5hbWU7XG5cdFx0dGhpcy5ub2RlVmVyc2lvbiAgICAgICAgICAgICAgICAgICAgPSBwYXJhbXMubm9kZVZlcnNpb247XG5cdFx0dGhpcy5vcHRpb25zICAgICAgICAgICAgICAgICAgICAgICAgPSBuZXcgT3B0aW9uTWFwKCk7XG5cdFx0dGhpcy5wYXJlbnQgICAgICAgICAgICAgICAgICAgICAgICAgPSBwYXJhbXMucGFyZW50O1xuXHRcdHRoaXMucmV2ICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gMDtcblx0XHR0aGlzLnNob3dCYW5uZXJGb3JFeHRlcm5hbENMSXMgICAgICA9IHBhcmFtcy5zaG93QmFubmVyRm9yRXh0ZXJuYWxDTElzO1xuXHRcdHRoaXMuc2hvd0hlbHBPbkVycm9yICAgICAgICAgICAgICAgID0gcGFyYW1zLnNob3dIZWxwT25FcnJvcjtcblx0XHR0aGlzLnRpdGxlICAgICAgICAgICAgICAgICAgICAgICAgICA9IHBhcmFtcy50aXRsZSB8fCBwYXJhbXMubmFtZTtcblx0XHR0aGlzLnRyZWF0VW5rbm93bk9wdGlvbnNBc0FyZ3VtZW50cyA9ICEhcGFyYW1zLnRyZWF0VW5rbm93bk9wdGlvbnNBc0FyZ3VtZW50cztcblx0XHR0aGlzLnZlcnNpb24gICAgICAgICAgICAgICAgICAgICAgICA9IHBhcmFtcy52ZXJzaW9uO1xuXG5cdFx0cGFyYW1zLmFyZ3MgICAgICAgJiYgdGhpcy5hcmd1bWVudChwYXJhbXMuYXJncyk7XG5cdFx0cGFyYW1zLmNvbW1hbmRzICAgJiYgdGhpcy5jb21tYW5kKHBhcmFtcy5jb21tYW5kcyk7XG5cdFx0cGFyYW1zLmV4dGVuc2lvbnMgJiYgdGhpcy5leHRlbnNpb24ocGFyYW1zLmV4dGVuc2lvbnMpO1xuXHRcdHBhcmFtcy5vcHRpb25zICAgICYmIHRoaXMub3B0aW9uKHBhcmFtcy5vcHRpb25zKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBBZGRzIGFuIG9wdGlvbiB0byB0aGlzIGNvbnRleHQuXG5cdCAqXG5cdCAqIEBwYXJhbSB7U3RyaW5nfE9iamVjdHxPcHRpb258T3B0aW9uTWFwfEFycmF5PE9iamVjdHxPcHRpb258U3RyaW5nPn0gZm9ybWF0IC0gQW4gb3B0aW9uXG5cdCAqIGZvcm1hdCwgYW4gb2JqZWN0IG9mIGZvcm1hdCB0byBvcHRpb24gZGVzY3JpcHRpb25zLCBgT3B0aW9uYCBjb25zdHJ1Y3RvciBwYXJhbXMgb3IgYE9wdGlvbmBcblx0ICogaW5zdGFuY2VzLCBhbiBgT3B0aW9uYCBpbnN0YW5jZSwgYW4gYE9wdGlvbk1hcGAgaW5zdGFuY2UsIG9yIGFuIGFycmF5IG9mIGBPcHRpb25gXG5cdCAqIGNvbnN0cnVjdG9yIHBhcmFtcyBhbmQgYE9wdGlvbmAgaW5zdGFuY2VzIGdyb3VwZWQgYnkgYFN0cmluZ2AgbGFiZWxzLlxuXHQgKiBAcGFyYW0ge09iamVjdHxPcHRpb258U3RyaW5nfSBbcGFyYW1zXSAtIFdoZW4gYGZvcm1hdGAgaXMgYSBmb3JtYXQgc3RyaW5nLCB0aGVuIHRoaXNcblx0ICogYXJndW1lbnQgaXMgZWl0aGVyIGBPcHRpb25gIGNvbnN0cnVjdG9yIHBhcmFtZXRlcnMsIGFuIGBPcHRpb25gIGluc3RhbmNlLCBvciBhbiBvcHRpb25cblx0ICogZGVzY3JpcHRpb24uXG5cdCAqIEByZXR1cm5zIHtDb250ZXh0fVxuXHQgKiBAYWNjZXNzIHB1YmxpY1xuXHQgKlxuXHQgKiBAZXhhbXBsZVxuXHQgKiAgIGN0eC5vcHRpb24oJy0tZm9vJyk7IC8vIGZvcm1hdCBmbGFnXG5cdCAqICAgY3R4Lm9wdGlvbignLS1mb28nLCAnZW5hYmxlcyBmb28gbW9kZScpOyAvLyBmb3JtYXQgd2l0aCBkZXNjcmlwdGlvblxuXHQgKiAgIGN0eC5vcHRpb24oJy0tZm9vJywgeyBkZXNjOiAnZW5hYmxlcyBmb28gbW9kZScgfSk7IC8vIGZvcm1hdCB3aXRoIE9wdGlvbiBjdG9yIHBhcmFtc1xuXHQgKiAgIGN0eC5vcHRpb24oeyAnLS1mb28nOiBudWxsIH0pOyAvLyBvYmplY3Qgd2l0aCBmb3JtYXQgZmxhZ1xuXHQgKiAgIGN0eC5vcHRpb24oeyAnLS1mb28nOiB7IGRlc2M6ICdlbmFibGVzIGZvbyBtb2RlJyB9IH0pOyAvLyBvYmplY3Qgd2l0aCBPcHRpb24gY3RvciBwYXJhbXNcblx0ICogICBjdHgub3B0aW9uKHsgJy0tZm9vJzogbmV3IE9wdGlvbigpIH0pOyAvLyBvYmplY3Qgb2YgYE9wdGlvbmAgaW5zdGFuY2Vcblx0ICogICBjdHgub3B0aW9uKG5ldyBPcHRpb24oJy0tZm9vJykpOyAvLyBgT3B0aW9uYCBpbnN0YW5jZVxuXHQgKiAgIGN0eC5vcHRpb24obmV3IE9wdGlvbk1hcCgpKTsgLy8gYE9wdGlvbk1hcGAgZnJvbSBhbm90aGVyIGluc3RhbmNlXG5cdCAqICAgY3R4Lm9wdGlvbihbICdTb21lIEdyb3VwJywgbmV3IE9wdGlvbignLS1mb28nKSwgJ0Fub3RoZXIgR3JvdXAnLCB7ICctLWJhcic6IG51bGwgfSBdKTsgLy8gYW4gYXJyYXkgb2YgZ3JvdXBlZCBvcHRpb25zXG5cdCAqL1xuXHRvcHRpb24oZm9ybWF0LCBwYXJhbXMpIHtcblx0XHRjb25zdCBvcHRzID0gdGhpcy5vcHRpb25zLmFkZChmb3JtYXQsIHBhcmFtcyk7XG5cblx0XHRmb3IgKGNvbnN0IG9wdCBvZiBvcHRzKSB7XG5cdFx0XHRvcHQucGFyZW50ID0gdGhpcztcblxuXHRcdFx0aWYgKG9wdC5sb25nKSB7XG5cdFx0XHRcdHRoaXMubG9va3VwLmxvbmdbb3B0LmxvbmddID0gb3B0O1xuXHRcdFx0fVxuXG5cdFx0XHRpZiAob3B0LnNob3J0KSB7XG5cdFx0XHRcdHRoaXMubG9va3VwLnNob3J0W29wdC5zaG9ydF0gPSBvcHQ7XG5cdFx0XHR9XG5cblx0XHRcdGZvciAoY29uc3QgWyBhbGlhcywgdmlzaWJsZSBdIG9mIE9iamVjdC5lbnRyaWVzKG9wdC5hbGlhc2VzLmxvbmcpKSB7XG5cdFx0XHRcdGlmICh2aXNpYmxlKSB7XG5cdFx0XHRcdFx0dGhpcy5sb29rdXAubG9uZ1thbGlhc10gPSBvcHQ7XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0Zm9yIChjb25zdCBbIGFsaWFzLCB2aXNpYmxlIF0gb2YgT2JqZWN0LmVudHJpZXMob3B0LmFsaWFzZXMuc2hvcnQpKSB7XG5cdFx0XHRcdGlmICh2aXNpYmxlKSB7XG5cdFx0XHRcdFx0dGhpcy5sb29rdXAuc2hvcnRbYWxpYXNdID0gb3B0O1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0dGhpcy5yZXYrKztcblxuXHRcdHJldHVybiB0aGlzO1xuXHR9XG5cblx0LyoqXG5cdCAqIFNjYW4gcGFyZW50IGNvbnRleHRzIHRvIGZpbmQgdGhlIHNwZWNpZmllZCBwcm9wZXJ0eSBpbiB0aGUgYm90dG9tLW1vc3QgY29udGV4dC5cblx0ICpcblx0ICogQHBhcmFtIHtTdHJpbmd9IG5hbWUgLSBUaGUgcHJvcGVydHkgbmFtZS5cblx0ICogQHBhcmFtIHsqfSBkZWZhdWx0VmFsdWUgLSBBIGRlZmF1bHQgdmFsdWUgaWYgbm8gdmFsdWUgaXMgZm91bmQuXG5cdCAqIEByZXR1cm5zIHsqfVxuXHQgKiBAYWNjZXNzIHByaXZhdGVcblx0ICovXG5cdHByb3AobmFtZSwgZGVmYXVsdFZhbHVlKSB7XG5cdFx0bGV0IHZhbHVlID0gdGhpc1tuYW1lXTtcblx0XHRmb3IgKGxldCBwID0gdGhpcy5wYXJlbnQ7IHZhbHVlID09PSB1bmRlZmluZWQgJiYgcDsgcCA9IHAucGFyZW50KSB7XG5cdFx0XHR2YWx1ZSA9IHAucHJvcChuYW1lLCB2YWx1ZSk7XG5cdFx0fVxuXHRcdHJldHVybiB2YWx1ZSAhPT0gdW5kZWZpbmVkID8gdmFsdWUgOiBkZWZhdWx0VmFsdWU7XG5cdH1cblxuXHQvKipcblx0ICogUmVnaXN0ZXJzIGEgY29tbWFuZCBvciBleHRlbnNpb24gdG8gYWRkIHRvIHRoZSBsb29rdXAuXG5cdCAqXG5cdCAqIEBwYXJhbSB7Q29tbWFuZHxFeHRlbnNpb259IGl0IC0gVGhlIGNvbW1hbmQgb3IgZXh0ZW5zaW9uIGluc3RhbmNlLlxuXHQgKiBAYWNjZXNzIHByaXZhdGVcblx0ICovXG5cdHJlZ2lzdGVyKGl0KSB7XG5cdFx0bGV0IGRlc3Q7XG5cdFx0aWYgKGl0LmNsaWtpdC5oYXMoJ0V4dGVuc2lvbicpKSB7XG5cdFx0XHRkZXN0ID0gJ2V4dGVuc2lvbnMnO1xuXHRcdH0gZWxzZSBpZiAoaXQuY2xpa2l0LmhhcygnQ29tbWFuZCcpKSB7XG5cdFx0XHRkZXN0ID0gJ2NvbW1hbmRzJztcblx0XHR9XG5cblx0XHRpZiAoIWRlc3QpIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHRpdC5wYXJlbnQgPSB0aGlzO1xuXHRcdHRoaXMubG9va3VwW2Rlc3RdW2l0Lm5hbWVdID0gaXQ7XG5cblx0XHRpZiAoaXQuYWxpYXNlcykge1xuXHRcdFx0Zm9yIChjb25zdCBhbGlhcyBvZiBPYmplY3Qua2V5cyhpdC5hbGlhc2VzKSkge1xuXHRcdFx0XHRpZiAoIXRoaXNbZGVzdF0uaGFzKGFsaWFzKSkge1xuXHRcdFx0XHRcdHRoaXMubG9va3VwW2Rlc3RdW2FsaWFzXSA9IGl0O1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG59XG4iXSwiZmlsZSI6InBhcnNlci9jb250ZXh0LmpzIn0= |
@@ -142,17 +142,16 @@ "use strict"; | ||
if (!hidden && !clikitHelp) { | ||
const labels = [name]; | ||
const labels = new Set([name]); | ||
for (const [alias, display] of Object.entries(aliases)) { | ||
if (display === 'visible') { | ||
labels.push(alias); | ||
labels.add(alias); | ||
} | ||
} | ||
labels.sort((a, b) => { | ||
return a.length === b.length ? a.localeCompare(b) : a.length - b.length; | ||
}); | ||
entries.push({ | ||
name, | ||
desc, | ||
label: labels.join(', '), | ||
label: Array.from(labels).sort((a, b) => { | ||
return a.length === b.length ? a.localeCompare(b) : a.length - b.length; | ||
}).join(', '), | ||
aliases: aliases ? Object.keys(aliases) : null | ||
@@ -173,2 +172,2 @@ }); | ||
exports.default = ExtensionMap; | ||
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInBhcnNlci9leHRlbnNpb24tbWFwLmpzIl0sIm5hbWVzIjpbIkV4dGVuc2lvbiIsIkV4dGVuc2lvbk1hcCIsIk1hcCIsImNvbnN0cnVjdG9yIiwiYWRkIiwiZXh0IiwibmFtZSIsIkUiLCJJTlZBTElEX0FSR1VNRU5UIiwic2NvcGUiLCJ2YWx1ZSIsInJlcXVpcmUiLCJkZWZhdWx0IiwicmVzdWx0cyIsImV4dGVuc2lvbnMiLCJjbGlraXQiLCJTZXQiLCJoYXMiLCJlbnRyaWVzIiwiT2JqZWN0IiwiQXJyYXkiLCJpc0FycmF5IiwiaXQiLCJwYXRoT3JFeHQiLCJzZXQiLCJwdXNoIiwiY291bnQiLCJzaXplIiwiZ2VuZXJhdGVIZWxwIiwiY21kIiwiZnJvbSIsImtleXMiLCJhbGlhc2VzIiwiY2xpa2l0SGVscCIsImRlc2MiLCJoaWRkZW4iLCJnZXQiLCJsYWJlbHMiLCJhbGlhcyIsImRpc3BsYXkiLCJzb3J0IiwiYSIsImIiLCJsZW5ndGgiLCJsb2NhbGVDb21wYXJlIiwibGFiZWwiLCJqb2luIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUE7O0FBRUE7Ozs7QUFFQSxJQUFJQSxTQUFKO0FBRUE7Ozs7OztBQUtlLE1BQU1DLFlBQU4sU0FBMkJDLEdBQTNCLENBQStCO0FBQzdDOzs7OztBQUtBQyxFQUFBQSxXQUFXLEdBQUc7QUFDYjtBQUNBLGtDQUFtQixJQUFuQixFQUF5QixjQUF6QjtBQUNBO0FBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBcUJBQyxFQUFBQSxHQUFHLENBQUNDLEdBQUQsRUFBTUMsSUFBTixFQUFZO0FBQ2QsUUFBSSxDQUFDRCxHQUFMLEVBQVU7QUFDVCxZQUFNRSxnQkFBRUMsZ0JBQUYsQ0FBbUIsMERBQW5CLEVBQStFO0FBQUVGLFFBQUFBLElBQUksRUFBRSxLQUFSO0FBQWVHLFFBQUFBLEtBQUssRUFBRSxrQkFBdEI7QUFBMENDLFFBQUFBLEtBQUssRUFBRUw7QUFBakQsT0FBL0UsQ0FBTjtBQUNBOztBQUVELFFBQUlDLElBQUks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LEVBQUlDLENBQUosS0FBVUQsQ0FBQyxDQUFDSSxLQUFGLENBQVFELGFBQVIsQ0FBc0JGLENBQUMsQ0FBQ0csS0FBeEIsQ0FBdkI7QUFFQSxXQUFPO0FBQ05uQixNQUFBQSxLQUFLLEVBQUVSLE9BQU8sQ0FBQ3lCLE1BRFQ7QUFFTnpCLE1BQUFBO0FBRk0sS0FBUDtBQUlBOztBQWxJNEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgRSBmcm9tICcuLi9saWIvZXJyb3JzJztcblxuaW1wb3J0IHsgZGVjbGFyZUNMSUtpdENsYXNzIH0gZnJvbSAnLi4vbGliL3V0aWwnO1xuXG5sZXQgRXh0ZW5zaW9uO1xuXG4vKipcbiAqIFN0b3JlcyBhIG1hcCBvZiBgRXh0ZW5zaW9uYCBpbnN0YW5jZXMgdGhhdCBoYXZlIGJlZW4gcmVnaXN0ZXJlZCBmb3IgYSBjb250ZXh0LlxuICpcbiAqIEBleHRlbmRzIHtNYXB9XG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEV4dGVuc2lvbk1hcCBleHRlbmRzIE1hcCB7XG5cdC8qKlxuXHQgKiBEZWNsYXJlcyB0aGUgY2xhc3MgbmFtZS5cblx0ICpcblx0ICogQGFjY2VzcyBwdWJsaWNcblx0ICovXG5cdGNvbnN0cnVjdG9yKCkge1xuXHRcdHN1cGVyKCk7XG5cdFx0ZGVjbGFyZUNMSUtpdENsYXNzKHRoaXMsICdFeHRlbnNpb25NYXAnKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBBZGRzIGFuIGV4dGVuc2lvbiB0byB0aGUgbWFwLlxuXHQgKlxuXHQgKiBAcGFyYW0ge09iamVjdHxTdHJpbmd8RXh0ZW5zaW9ufEV4dGVuc2lvbk1hcHxBcnJheS48U3RyaW5nfEV4dGVuc2lvbj59IGV4dCAtIEFuIG9iamVjdCBvZlxuXHQgKiBleHRlbnNpb24gbmFtZXMgdG8gZXh0ZW5zaW9uIHBhdGhzIG9yIGluc3RhbmNlcywgYW4gZXh0ZW5zaW9uIHBhdGgsIGFuIGBFeHRlbnNpb25gIGluc3RhbmNlLFxuXHQgKiBvciBhbiBhcnJheSBvZiB0aG9zZSB0eXBlcy4gQW4gZXh0ZW5zaW9uIHBhdGggbWF5IGJlIGEgZGlyZWN0b3J5IGNvbnRhaW5pbmcgYSBOb2RlLmpzXG5cdCAqIG1vZHVsZSwgYSBwYXRoIHRvIGEgYC5qc2AgZmlsZSwgb3IgdGhlIG5hbWUgb2YgYSBleGVjdXRhYmxlLiBNYXkgYWxzbyBiZSBhbiBgRXh0ZW5zaW9uTWFwYFxuXHQgKiBpbnN0YW5jZS5cblx0ICogQHBhcmFtIHtTdHJpbmd9IFtuYW1lXSAtIFRoZSBleHRlbnNpb24gbmFtZSB1c2VkIGZvciB0aGUgY29udGV4dCBuYW1lLiBJZiBub3Qgc2V0LCBpdCB3aWxsXG5cdCAqIGF0dGVtcHQgdG8gZmluZCBhIGBwYWNrYWdlLmpzb25gIHdpdGggYSBgY2xpLWtpdC5uYW1lYCB2YWx1ZS5cblx0ICogQHJldHVybnMge0FycmF5LjxFeHRlbnNpb24+fVxuXHQgKiBAYWNjZXNzIHB1YmxpY1xuXHQgKlxuXHQgKiBAZXhhbXBsZVxuXHQgKiAgIC5hZGQoeyBmb286ICcvcGF0aC90by9leHQnLCBiYXI6IG5ldyBFeHRlbnNpb24oKSB9KVxuXHQgKiAgIC5hZGQoJy9wYXRoL3RvL2V4dCcpO1xuXHQgKiAgIC5hZGQoJy9wYXRoL3RvL2V4dCcsICdmb28nKTtcblx0ICogICAuYWRkKG5ldyBFeHRlbnNpb24oKSlcblx0ICogICAuYWRkKG5ldyBFeHRlbnNpb25NYXAoKSlcblx0ICogICAuYWRkKFsgJy9wYXRoL3RvL2V4dCcsIG5ldyBFeHRlbnNpb24oKSBdKVxuXHQgKi9cblx0YWRkKGV4dCwgbmFtZSkge1xuXHRcdGlmICghZXh0KSB7XG5cdFx0XHR0aHJvdyBFLklOVkFMSURfQVJHVU1FTlQoJ0V4cGVjdGVkIGV4dGVuc2lvbiB0byBiZSBhbiBleHRlbnNpb24gaW5zdGFuY2Ugb3IgYSBwYXRoJywgeyBuYW1lOiAnZXh0Jywgc2NvcGU6ICdFeHRlbnNpb25NYXAuYWRkJywgdmFsdWU6IGV4dCB9KTtcblx0XHR9XG5cblx0XHRpZiAobmFtZSAmJiB0eXBlb2YgbmFtZSAhPT0gJ3N0cmluZycpIHtcblx0XHRcdHRocm93IEUuSU5WQUxJRF9BUkdVTUVOVCgnRXhwZWN0ZWQgZXh0ZW5zaW9uIG5hbWUgdG8gYmUgYSBzdHJpbmcnLCB7IG5hbWU6ICduYW1lJywgc2NvcGU6ICdFeHRlbnNpb25NYXAuYWRkJywgdmFsdWU6IG5hbWUgfSk7XG5cdFx0fVxuXG5cdFx0aWYgKCFFeHRlbnNpb24pIHtcblx0XHRcdEV4dGVuc2lvbiA9IHJlcXVpcmUoJy4vZXh0ZW5zaW9uJykuZGVmYXVsdDtcblx0XHR9XG5cblx0XHRjb25zdCByZXN1bHRzID0gW107XG5cdFx0Y29uc3QgZXh0ZW5zaW9ucyA9IHR5cGVvZiBleHQgPT09ICdvYmplY3QnXG5cdFx0XHQ/IChcblx0XHRcdFx0ZXh0LmNsaWtpdCBpbnN0YW5jZW9mIFNldCAmJiBleHQuY2xpa2l0LmhhcygnRXh0ZW5zaW9uJylcblx0XHRcdFx0XHQ/IFsgZXh0IF1cblx0XHRcdFx0XHQ6IGV4dC5jbGlraXQgaW5zdGFuY2VvZiBTZXQgJiYgZXh0LmNsaWtpdC5oYXMoJ0V4dGVuc2lvbk1hcCcpXG5cdFx0XHRcdFx0XHQ/IGV4dC5lbnRyaWVzKClcblx0XHRcdFx0XHRcdDogT2JqZWN0LmVudHJpZXMoZXh0KVxuXHRcdFx0KVxuXHRcdFx0OiBBcnJheS5pc0FycmF5KGV4dCkgPyBleHQgOiBbIGV4dCBdO1xuXG5cdFx0Ly8gYXQgdGhpcyBwb2ludCwgd2UgaGF2ZSBhbiBhcnJheSBvZiBgU3RyaW5nc2AgKHBhdGhzKSwgQXJyYXkgW25hbWUsZXh0XSwgYW5kIEV4dGVuc2lvbiBpbnN0YW5jZXNcblxuXHRcdGZvciAobGV0IGl0IG9mIGV4dGVuc2lvbnMpIHtcblx0XHRcdGxldCBleHQgPSBudWxsO1xuXG5cdFx0XHRpZiAoaXQgaW5zdGFuY2VvZiBFeHRlbnNpb24pIHtcblx0XHRcdFx0ZXh0ID0gaXQ7XG5cdFx0XHR9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkoaXQpKSB7XG5cdFx0XHRcdC8vIFtuYW1lLGV4dF1cblx0XHRcdFx0Y29uc3QgWyBuYW1lLCBwYXRoT3JFeHQgXSA9IGl0O1xuXHRcdFx0XHRleHQgPSBwYXRoT3JFeHQgaW5zdGFuY2VvZiBFeHRlbnNpb24gPyBwYXRoT3JFeHQgOiBuZXcgRXh0ZW5zaW9uKHBhdGhPckV4dCwgeyBuYW1lIH0pO1xuXHRcdFx0fSBlbHNlIGlmIChpdCAmJiAodHlwZW9mIGl0ID09PSAnc3RyaW5nJyB8fCAodHlwZW9mIGl0ID09PSAnb2JqZWN0JyAmJiBpdC5jbGlraXQgaW5zdGFuY2VvZiBTZXQgJiYgaXQuY2xpa2l0LmhhcygnRXh0ZW5zaW9uJykpKSkge1xuXHRcdFx0XHQvLyBwYXRoIG9yIHBhcmFtc1xuXHRcdFx0XHRleHQgPSBuZXcgRXh0ZW5zaW9uKGl0LCB7IG5hbWUgfSk7XG5cdFx0XHR9XG5cblx0XHRcdGlmIChleHQpIHtcblx0XHRcdFx0dGhpcy5zZXQoZXh0Lm5hbWUsIGV4dCk7XG5cdFx0XHRcdHJlc3VsdHMucHVzaChleHQpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0dGhyb3cgRS5JTlZBTElEX0FSR1VNRU5UKGBJbnZhbGlkIGV4dGVuc2lvbiBcIiR7aXR9XCIsIGV4cGVjdGVkIGEgdmFsaWQgcGF0aCBvciBhbiBvYmplY3RgLCB7IG5hbWU6ICdleHRlbnNpb24nLCBzY29wZTogJ0V4dGVuc2lvbk1hcC5hZGQnLCB2YWx1ZTogaXQgfSk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHJlc3VsdHM7XG5cdH1cblxuXHQvKipcblx0ICogUmV0dXJucyB0aGUgbnVtYmVyIG9mIGV4dGVuc2lvbnMuXG5cdCAqXG5cdCAqIEByZXR1cm5zIHtOdW1iZXJ9XG5cdCAqIEBhY2Nlc3MgcHVibGljXG5cdCAqL1xuXHRnZXQgY291bnQoKSB7XG5cdFx0cmV0dXJuIHRoaXMuc2l6ZTtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZW5lcmF0ZXMgYW4gb2JqZWN0IGNvbnRhaW5pbmcgdGhlIGV4dGVuc2lvbnMgZm9yIHRoZSBoZWxwIHNjcmVlbi5cblx0ICpcblx0ICogQHJldHVybnMge09iamVjdH1cblx0ICogQGFjY2VzcyBwdWJsaWNcblx0ICovXG5cdGdlbmVyYXRlSGVscCgpIHtcblx0XHRjb25zdCBlbnRyaWVzID0gW107XG5cblx0XHRmb3IgKGNvbnN0IGNtZCBvZiBBcnJheS5mcm9tKHRoaXMua2V5cygpKSkge1xuXHRcdFx0Y29uc3QgeyBhbGlhc2VzLCBjbGlraXRIZWxwLCBkZXNjLCBoaWRkZW4sIG5hbWUgfSA9IHRoaXMuZ2V0KGNtZCk7XG5cdFx0XHRpZiAoIWhpZGRlbiAmJiAhY2xpa2l0SGVscCkge1xuXHRcdFx0XHRjb25zdCBsYWJlbHMgPSBbIG5hbWUgXTtcblx0XHRcdFx0Zm9yIChjb25zdCBbIGFsaWFzLCBkaXNwbGF5IF0gb2YgT2JqZWN0LmVudHJpZXMoYWxpYXNlcykpIHtcblx0XHRcdFx0XHRpZiAoZGlzcGxheSA9PT0gJ3Zpc2libGUnKSB7XG5cdFx0XHRcdFx0XHRsYWJlbHMucHVzaChhbGlhcyk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHRcdGxhYmVscy5zb3J0KChhLCBiKSA9PiB7XG5cdFx0XHRcdFx0cmV0dXJuIGEubGVuZ3RoID09PSBiLmxlbmd0aCA/IGEubG9jYWxlQ29tcGFyZShiKSA6IGEubGVuZ3RoIC0gYi5sZW5ndGg7XG5cdFx0XHRcdH0pO1xuXG5cdFx0XHRcdGVudHJpZXMucHVzaCh7XG5cdFx0XHRcdFx0bmFtZSxcblx0XHRcdFx0XHRkZXNjLFxuXHRcdFx0XHRcdGxhYmVsOiBsYWJlbHMuam9pbignLCAnKSxcblx0XHRcdFx0XHRhbGlhc2VzOiBhbGlhc2VzID8gT2JqZWN0LmtleXMoYWxpYXNlcykgOiBudWxsXG5cdFx0XHRcdH0pO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdGVudHJpZXMuc29ydCgoYSwgYikgPT4gYS5sYWJlbC5sb2NhbGVDb21wYXJlKGIubGFiZWwpKTtcblxuXHRcdHJldHVybiB7XG5cdFx0XHRjb3VudDogZW50cmllcy5sZW5ndGgsXG5cdFx0XHRlbnRyaWVzXG5cdFx0fTtcblx0fVxufVxuIl0sImZpbGUiOiJwYXJzZXIvZXh0ZW5zaW9uLW1hcC5qcyJ9 | ||
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInBhcnNlci9leHRlbnNpb24tbWFwLmpzIl0sIm5hbWVzIjpbIkV4dGVuc2lvbiIsIkV4dGVuc2lvbk1hcCIsIk1hcCIsImNvbnN0cnVjdG9yIiwiYWRkIiwiZXh0IiwibmFtZSIsIkUiLCJJTlZBTElEX0FSR1VNRU5UIiwic2NvcGUiLCJ2YWx1ZSIsInJlcXVpcmUiLCJkZWZhdWx0IiwicmVzdWx0cyIsImV4dGVuc2lvbnMiLCJjbGlraXQiLCJTZXQiLCJoYXMiLCJlbnRyaWVzIiwiT2JqZWN0IiwiQXJyYXkiLCJpc0FycmF5IiwiaXQiLCJwYXRoT3JFeHQiLCJzZXQiLCJwdXNoIiwiY291bnQiLCJzaXplIiwiZ2VuZXJhdGVIZWxwIiwiY21kIiwiZnJvbSIsImtleXMiLCJhbGlhc2VzIiwiY2xpa2l0SGVscCIsImRlc2MiLCJoaWRkZW4iLCJnZXQiLCJsYWJlbHMiLCJhbGlhcyIsImRpc3BsYXkiLCJsYWJlbCIsInNvcnQiLCJhIiwiYiIsImxlbmd0aCIsImxvY2FsZUNvbXBhcmUiLCJqb2luIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUE7O0FBRUE7Ozs7QUFFQSxJQUFJQSxTQUFKO0FBRUE7Ozs7OztBQUtlLE1BQU1DLFlBQU4sU0FBMkJDLEdBQTNCLENBQStCO0FBQzdDOzs7OztBQUtBQyxFQUFBQSxXQUFXLEdBQUc7QUFDYjtBQUNBLGtDQUFtQixJQUFuQixFQUF5QixjQUF6QjtBQUNBO0FBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBcUJBQyxFQUFBQSxHQUFHLENBQUNDLEdBQUQsRUFBTUMsSUFBTixFQUFZO0FBQ2QsUUFBSSxDQUFDRCxHQUFMLEVBQVU7QUFDVCxZQUFNRSxnQkFBRUMsZ0JBQUYsQ0FBbUIsMERBQW5CLEVBQStFO0FBQUVGLFFBQUFBLElBQUksRUFBRSxLQUFSO0FBQWVHLFFBQUFBLEtBQUssRUFBRSxrQkFBdEI7QUFBMENDLFFBQUFBLEtBQUssRUFBRUw7QUFBakQsT0FBL0UsQ0FBTjtBQUNBOztBQUVELFFBQUlDLElBQUks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T0FBTyxDQUFDdUIsSUFBUixDQUFhLENBQUNDLENBQUQsRUFBSUMsQ0FBSixLQUFVRCxDQUFDLENBQUNGLEtBQUYsQ0FBUUssYUFBUixDQUFzQkYsQ0FBQyxDQUFDSCxLQUF4QixDQUF2QjtBQUVBLFdBQU87QUFDTmQsTUFBQUEsS0FBSyxFQUFFUixPQUFPLENBQUMwQixNQURUO0FBRU4xQixNQUFBQTtBQUZNLEtBQVA7QUFJQTs7QUFsSTRDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEUgZnJvbSAnLi4vbGliL2Vycm9ycyc7XG5cbmltcG9ydCB7IGRlY2xhcmVDTElLaXRDbGFzcyB9IGZyb20gJy4uL2xpYi91dGlsJztcblxubGV0IEV4dGVuc2lvbjtcblxuLyoqXG4gKiBTdG9yZXMgYSBtYXAgb2YgYEV4dGVuc2lvbmAgaW5zdGFuY2VzIHRoYXQgaGF2ZSBiZWVuIHJlZ2lzdGVyZWQgZm9yIGEgY29udGV4dC5cbiAqXG4gKiBAZXh0ZW5kcyB7TWFwfVxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBFeHRlbnNpb25NYXAgZXh0ZW5kcyBNYXAge1xuXHQvKipcblx0ICogRGVjbGFyZXMgdGhlIGNsYXNzIG5hbWUuXG5cdCAqXG5cdCAqIEBhY2Nlc3MgcHVibGljXG5cdCAqL1xuXHRjb25zdHJ1Y3RvcigpIHtcblx0XHRzdXBlcigpO1xuXHRcdGRlY2xhcmVDTElLaXRDbGFzcyh0aGlzLCAnRXh0ZW5zaW9uTWFwJyk7XG5cdH1cblxuXHQvKipcblx0ICogQWRkcyBhbiBleHRlbnNpb24gdG8gdGhlIG1hcC5cblx0ICpcblx0ICogQHBhcmFtIHtPYmplY3R8U3RyaW5nfEV4dGVuc2lvbnxFeHRlbnNpb25NYXB8QXJyYXkuPFN0cmluZ3xFeHRlbnNpb24+fSBleHQgLSBBbiBvYmplY3Qgb2Zcblx0ICogZXh0ZW5zaW9uIG5hbWVzIHRvIGV4dGVuc2lvbiBwYXRocyBvciBpbnN0YW5jZXMsIGFuIGV4dGVuc2lvbiBwYXRoLCBhbiBgRXh0ZW5zaW9uYCBpbnN0YW5jZSxcblx0ICogb3IgYW4gYXJyYXkgb2YgdGhvc2UgdHlwZXMuIEFuIGV4dGVuc2lvbiBwYXRoIG1heSBiZSBhIGRpcmVjdG9yeSBjb250YWluaW5nIGEgTm9kZS5qc1xuXHQgKiBtb2R1bGUsIGEgcGF0aCB0byBhIGAuanNgIGZpbGUsIG9yIHRoZSBuYW1lIG9mIGEgZXhlY3V0YWJsZS4gTWF5IGFsc28gYmUgYW4gYEV4dGVuc2lvbk1hcGBcblx0ICogaW5zdGFuY2UuXG5cdCAqIEBwYXJhbSB7U3RyaW5nfSBbbmFtZV0gLSBUaGUgZXh0ZW5zaW9uIG5hbWUgdXNlZCBmb3IgdGhlIGNvbnRleHQgbmFtZS4gSWYgbm90IHNldCwgaXQgd2lsbFxuXHQgKiBhdHRlbXB0IHRvIGZpbmQgYSBgcGFja2FnZS5qc29uYCB3aXRoIGEgYGNsaS1raXQubmFtZWAgdmFsdWUuXG5cdCAqIEByZXR1cm5zIHtBcnJheS48RXh0ZW5zaW9uPn1cblx0ICogQGFjY2VzcyBwdWJsaWNcblx0ICpcblx0ICogQGV4YW1wbGVcblx0ICogICAuYWRkKHsgZm9vOiAnL3BhdGgvdG8vZXh0JywgYmFyOiBuZXcgRXh0ZW5zaW9uKCkgfSlcblx0ICogICAuYWRkKCcvcGF0aC90by9leHQnKTtcblx0ICogICAuYWRkKCcvcGF0aC90by9leHQnLCAnZm9vJyk7XG5cdCAqICAgLmFkZChuZXcgRXh0ZW5zaW9uKCkpXG5cdCAqICAgLmFkZChuZXcgRXh0ZW5zaW9uTWFwKCkpXG5cdCAqICAgLmFkZChbICcvcGF0aC90by9leHQnLCBuZXcgRXh0ZW5zaW9uKCkgXSlcblx0ICovXG5cdGFkZChleHQsIG5hbWUpIHtcblx0XHRpZiAoIWV4dCkge1xuXHRcdFx0dGhyb3cgRS5JTlZBTElEX0FSR1VNRU5UKCdFeHBlY3RlZCBleHRlbnNpb24gdG8gYmUgYW4gZXh0ZW5zaW9uIGluc3RhbmNlIG9yIGEgcGF0aCcsIHsgbmFtZTogJ2V4dCcsIHNjb3BlOiAnRXh0ZW5zaW9uTWFwLmFkZCcsIHZhbHVlOiBleHQgfSk7XG5cdFx0fVxuXG5cdFx0aWYgKG5hbWUgJiYgdHlwZW9mIG5hbWUgIT09ICdzdHJpbmcnKSB7XG5cdFx0XHR0aHJvdyBFLklOVkFMSURfQVJHVU1FTlQoJ0V4cGVjdGVkIGV4dGVuc2lvbiBuYW1lIHRvIGJlIGEgc3RyaW5nJywgeyBuYW1lOiAnbmFtZScsIHNjb3BlOiAnRXh0ZW5zaW9uTWFwLmFkZCcsIHZhbHVlOiBuYW1lIH0pO1xuXHRcdH1cblxuXHRcdGlmICghRXh0ZW5zaW9uKSB7XG5cdFx0XHRFeHRlbnNpb24gPSByZXF1aXJlKCcuL2V4dGVuc2lvbicpLmRlZmF1bHQ7XG5cdFx0fVxuXG5cdFx0Y29uc3QgcmVzdWx0cyA9IFtdO1xuXHRcdGNvbnN0IGV4dGVuc2lvbnMgPSB0eXBlb2YgZXh0ID09PSAnb2JqZWN0J1xuXHRcdFx0PyAoXG5cdFx0XHRcdGV4dC5jbGlraXQgaW5zdGFuY2VvZiBTZXQgJiYgZXh0LmNsaWtpdC5oYXMoJ0V4dGVuc2lvbicpXG5cdFx0XHRcdFx0PyBbIGV4dCBdXG5cdFx0XHRcdFx0OiBleHQuY2xpa2l0IGluc3RhbmNlb2YgU2V0ICYmIGV4dC5jbGlraXQuaGFzKCdFeHRlbnNpb25NYXAnKVxuXHRcdFx0XHRcdFx0PyBleHQuZW50cmllcygpXG5cdFx0XHRcdFx0XHQ6IE9iamVjdC5lbnRyaWVzKGV4dClcblx0XHRcdClcblx0XHRcdDogQXJyYXkuaXNBcnJheShleHQpID8gZXh0IDogWyBleHQgXTtcblxuXHRcdC8vIGF0IHRoaXMgcG9pbnQsIHdlIGhhdmUgYW4gYXJyYXkgb2YgYFN0cmluZ3NgIChwYXRocyksIEFycmF5IFtuYW1lLGV4dF0sIGFuZCBFeHRlbnNpb24gaW5zdGFuY2VzXG5cblx0XHRmb3IgKGxldCBpdCBvZiBleHRlbnNpb25zKSB7XG5cdFx0XHRsZXQgZXh0ID0gbnVsbDtcblxuXHRcdFx0aWYgKGl0IGluc3RhbmNlb2YgRXh0ZW5zaW9uKSB7XG5cdFx0XHRcdGV4dCA9IGl0O1xuXHRcdFx0fSBlbHNlIGlmIChBcnJheS5pc0FycmF5KGl0KSkge1xuXHRcdFx0XHQvLyBbbmFtZSxleHRdXG5cdFx0XHRcdGNvbnN0IFsgbmFtZSwgcGF0aE9yRXh0IF0gPSBpdDtcblx0XHRcdFx0ZXh0ID0gcGF0aE9yRXh0IGluc3RhbmNlb2YgRXh0ZW5zaW9uID8gcGF0aE9yRXh0IDogbmV3IEV4dGVuc2lvbihwYXRoT3JFeHQsIHsgbmFtZSB9KTtcblx0XHRcdH0gZWxzZSBpZiAoaXQgJiYgKHR5cGVvZiBpdCA9PT0gJ3N0cmluZycgfHwgKHR5cGVvZiBpdCA9PT0gJ29iamVjdCcgJiYgaXQuY2xpa2l0IGluc3RhbmNlb2YgU2V0ICYmIGl0LmNsaWtpdC5oYXMoJ0V4dGVuc2lvbicpKSkpIHtcblx0XHRcdFx0Ly8gcGF0aCBvciBwYXJhbXNcblx0XHRcdFx0ZXh0ID0gbmV3IEV4dGVuc2lvbihpdCwgeyBuYW1lIH0pO1xuXHRcdFx0fVxuXG5cdFx0XHRpZiAoZXh0KSB7XG5cdFx0XHRcdHRoaXMuc2V0KGV4dC5uYW1lLCBleHQpO1xuXHRcdFx0XHRyZXN1bHRzLnB1c2goZXh0KTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHRocm93IEUuSU5WQUxJRF9BUkdVTUVOVChgSW52YWxpZCBleHRlbnNpb24gXCIke2l0fVwiLCBleHBlY3RlZCBhIHZhbGlkIHBhdGggb3IgYW4gb2JqZWN0YCwgeyBuYW1lOiAnZXh0ZW5zaW9uJywgc2NvcGU6ICdFeHRlbnNpb25NYXAuYWRkJywgdmFsdWU6IGl0IH0pO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHJldHVybiByZXN1bHRzO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJldHVybnMgdGhlIG51bWJlciBvZiBleHRlbnNpb25zLlxuXHQgKlxuXHQgKiBAcmV0dXJucyB7TnVtYmVyfVxuXHQgKiBAYWNjZXNzIHB1YmxpY1xuXHQgKi9cblx0Z2V0IGNvdW50KCkge1xuXHRcdHJldHVybiB0aGlzLnNpemU7XG5cdH1cblxuXHQvKipcblx0ICogR2VuZXJhdGVzIGFuIG9iamVjdCBjb250YWluaW5nIHRoZSBleHRlbnNpb25zIGZvciB0aGUgaGVscCBzY3JlZW4uXG5cdCAqXG5cdCAqIEByZXR1cm5zIHtPYmplY3R9XG5cdCAqIEBhY2Nlc3MgcHVibGljXG5cdCAqL1xuXHRnZW5lcmF0ZUhlbHAoKSB7XG5cdFx0Y29uc3QgZW50cmllcyA9IFtdO1xuXG5cdFx0Zm9yIChjb25zdCBjbWQgb2YgQXJyYXkuZnJvbSh0aGlzLmtleXMoKSkpIHtcblx0XHRcdGNvbnN0IHsgYWxpYXNlcywgY2xpa2l0SGVscCwgZGVzYywgaGlkZGVuLCBuYW1lIH0gPSB0aGlzLmdldChjbWQpO1xuXHRcdFx0aWYgKCFoaWRkZW4gJiYgIWNsaWtpdEhlbHApIHtcblx0XHRcdFx0Y29uc3QgbGFiZWxzID0gbmV3IFNldChbIG5hbWUgXSk7XG5cblx0XHRcdFx0Zm9yIChjb25zdCBbIGFsaWFzLCBkaXNwbGF5IF0gb2YgT2JqZWN0LmVudHJpZXMoYWxpYXNlcykpIHtcblx0XHRcdFx0XHRpZiAoZGlzcGxheSA9PT0gJ3Zpc2libGUnKSB7XG5cdFx0XHRcdFx0XHRsYWJlbHMuYWRkKGFsaWFzKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRlbnRyaWVzLnB1c2goe1xuXHRcdFx0XHRcdG5hbWUsXG5cdFx0XHRcdFx0ZGVzYyxcblx0XHRcdFx0XHRsYWJlbDogQXJyYXkuZnJvbShsYWJlbHMpLnNvcnQoKGEsIGIpID0+IHtcblx0XHRcdFx0XHRcdHJldHVybiBhLmxlbmd0aCA9PT0gYi5sZW5ndGggPyBhLmxvY2FsZUNvbXBhcmUoYikgOiBhLmxlbmd0aCAtIGIubGVuZ3RoO1xuXHRcdFx0XHRcdH0pLmpvaW4oJywgJyksXG5cdFx0XHRcdFx0YWxpYXNlczogYWxpYXNlcyA/IE9iamVjdC5rZXlzKGFsaWFzZXMpIDogbnVsbFxuXHRcdFx0XHR9KTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRlbnRyaWVzLnNvcnQoKGEsIGIpID0+IGEubGFiZWwubG9jYWxlQ29tcGFyZShiLmxhYmVsKSk7XG5cblx0XHRyZXR1cm4ge1xuXHRcdFx0Y291bnQ6IGVudHJpZXMubGVuZ3RoLFxuXHRcdFx0ZW50cmllc1xuXHRcdH07XG5cdH1cbn1cbiJdLCJmaWxlIjoicGFyc2VyL2V4dGVuc2lvbi1tYXAuanMifQ== |
{ | ||
"name": "cli-kit", | ||
"version": "1.2.0", | ||
"version": "1.2.1", | ||
"description": "Everything you need to create awesome command line interfaces", | ||
@@ -44,3 +44,3 @@ "main": "./dist/index.js", | ||
"fast-levenshtein": "^2.0.6", | ||
"fs-extra": "^9.0.0", | ||
"fs-extra": "^9.0.1", | ||
"hook-emitter": "^4.1.0", | ||
@@ -57,3 +57,3 @@ "lodash.camelcase": "^4.3.0", | ||
"devDependencies": { | ||
"@babel/core": "^7.10.1", | ||
"@babel/core": "^7.10.2", | ||
"@babel/plugin-proposal-class-properties": "^7.10.1", | ||
@@ -72,5 +72,5 @@ "@babel/plugin-proposal-optional-chaining": "^7.10.1", | ||
"esdoc-standard-plugin": "^1.0.0", | ||
"eslint": "^7.1.0", | ||
"eslint": "^7.2.0", | ||
"eslint-plugin-chai-expect": "^2.1.0", | ||
"eslint-plugin-mocha": "^7.0.0", | ||
"eslint-plugin-mocha": "^7.0.1", | ||
"eslint-plugin-promise": "^4.2.1", | ||
@@ -86,4 +86,4 @@ "eslint-plugin-security": "^1.4.0", | ||
"memory-streams": "^0.1.3", | ||
"mocha": "^7.2.0", | ||
"nyc": "^15.0.1", | ||
"mocha": "^8.0.1", | ||
"nyc": "^15.1.0", | ||
"sinon": "^9.0.2", | ||
@@ -90,0 +90,0 @@ "sinon-chai": "^3.5.0", |
Sorry, the diff of this file is too big to display
590792
6322
Updatedfs-extra@^9.0.1