Socket
Socket
Sign inDemoInstall

config-kit

Package Overview
Dependencies
31
Maintainers
2
Versions
20
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

Comparing version 1.5.0 to 1.6.0

dist/stores/xml-store.js

5

CHANGELOG.md

@@ -0,1 +1,6 @@

# v1.6.0 (Mar 3, 2021)
* feat: Added `.xml` store without schemas support.
* chore: Updated dependencies.
# v1.5.0 (Feb 3, 2021)

@@ -2,0 +7,0 @@

10

dist/index.js

@@ -30,2 +30,8 @@ "use strict";

});
Object.defineProperty(exports, "XMLStore", {
enumerable: true,
get: function () {
return _xmlStore.default;
}
});
Object.defineProperty(exports, "Layer", {

@@ -59,2 +65,4 @@ enumerable: true,

var _xmlStore = _interopRequireDefault(require("./stores/xml-store"));
var _layer = _interopRequireDefault(require("./layer"));

@@ -75,2 +83,2 @@

exports.default = _default;
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImluZGV4LmpzIl0sIm5hbWVzIjpbIkVycm9yIiwicHJlcGFyZVN0YWNrVHJhY2UiLCJyZXF1aXJlIiwiQ29uZmlnIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBS0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7Ozs7QUFYQTtBQUNBLElBQUksQ0FBQ0EsS0FBSyxDQUFDQyxpQkFBWCxFQUE4QjtBQUM3QkMsRUFBQUEsT0FBTyxDQUFDLDZCQUFELENBQVA7QUFDQTs7ZUFVY0MsZSIsInNvdXJjZXNDb250ZW50IjpbIi8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuaWYgKCFFcnJvci5wcmVwYXJlU3RhY2tUcmFjZSkge1xuXHRyZXF1aXJlKCdzb3VyY2UtbWFwLXN1cHBvcnQvcmVnaXN0ZXInKTtcbn1cblxuaW1wb3J0IENvbmZpZyBmcm9tICcuL2NvbmZpZyc7XG5pbXBvcnQgSm9pIGZyb20gJ2pvaSc7XG5pbXBvcnQgSlNTdG9yZSBmcm9tICcuL3N0b3Jlcy9qcy1zdG9yZSc7XG5pbXBvcnQgSlNPTlN0b3JlIGZyb20gJy4vc3RvcmVzL2pzb24tc3RvcmUnO1xuaW1wb3J0IExheWVyIGZyb20gJy4vbGF5ZXInO1xuaW1wb3J0IE5vZGUgZnJvbSAnLi9ub2RlJztcbmltcG9ydCBTdG9yZSBmcm9tICcuL3N0b3JlJztcblxuZXhwb3J0IGRlZmF1bHQgQ29uZmlnO1xuZXhwb3J0IHtcblx0Q29uZmlnLFxuXHRKb2ksXG5cdEpTU3RvcmUsXG5cdEpTT05TdG9yZSxcblx0TGF5ZXIsXG5cdE5vZGUsXG5cdFN0b3JlXG59O1xuIl0sImZpbGUiOiJpbmRleC5qcyJ9
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImluZGV4LmpzIl0sIm5hbWVzIjpbIkVycm9yIiwicHJlcGFyZVN0YWNrVHJhY2UiLCJyZXF1aXJlIiwiQ29uZmlnIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBS0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7Ozs7QUFaQTtBQUNBLElBQUksQ0FBQ0EsS0FBSyxDQUFDQyxpQkFBWCxFQUE4QjtBQUM3QkMsRUFBQUEsT0FBTyxDQUFDLDZCQUFELENBQVA7QUFDQTs7ZUFXY0MsZSIsInNvdXJjZXNDb250ZW50IjpbIi8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuaWYgKCFFcnJvci5wcmVwYXJlU3RhY2tUcmFjZSkge1xuXHRyZXF1aXJlKCdzb3VyY2UtbWFwLXN1cHBvcnQvcmVnaXN0ZXInKTtcbn1cblxuaW1wb3J0IENvbmZpZyBmcm9tICcuL2NvbmZpZyc7XG5pbXBvcnQgSm9pIGZyb20gJ2pvaSc7XG5pbXBvcnQgSlNTdG9yZSBmcm9tICcuL3N0b3Jlcy9qcy1zdG9yZSc7XG5pbXBvcnQgSlNPTlN0b3JlIGZyb20gJy4vc3RvcmVzL2pzb24tc3RvcmUnO1xuaW1wb3J0IFhNTFN0b3JlIGZyb20gJy4vc3RvcmVzL3htbC1zdG9yZSc7XG5pbXBvcnQgTGF5ZXIgZnJvbSAnLi9sYXllcic7XG5pbXBvcnQgTm9kZSBmcm9tICcuL25vZGUnO1xuaW1wb3J0IFN0b3JlIGZyb20gJy4vc3RvcmUnO1xuXG5leHBvcnQgZGVmYXVsdCBDb25maWc7XG5leHBvcnQge1xuXHRDb25maWcsXG5cdEpvaSxcblx0SlNTdG9yZSxcblx0SlNPTlN0b3JlLFxuXHRYTUxTdG9yZSxcblx0TGF5ZXIsXG5cdE5vZGUsXG5cdFN0b3JlXG59O1xuIl0sImZpbGUiOiJpbmRleC5qcyJ9

2

dist/layer.js

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

exports.default = Layer;
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxheWVyLmpzIl0sIm5hbWVzIjpbImxvZyIsImhpZ2hsaWdodCIsInNub29wbG9nZyIsInN0eWxlcyIsIkxheWVyIiwiY29uc3RydWN0b3IiLCJvcHRzIiwiTWFwIiwiYWxsb3dOdWxscyIsImlkIiwibmFtZXNwYWNlIiwib3JkZXIiLCJyZWFkb25seSIsInN0YXRpYyIsInZhbGlkYXRlIiwidW5kZWZpbmVkIiwiVHlwZUVycm9yIiwiZGVmYXVsdHMiLCJlbnYiLCJzY2hlbWEiLCJsb2FkU2NoZW1hIiwic3RvcmUiLCJTdG9yZSIsImRhdGEiLCJKU09OU3RvcmUiLCJtZXJnZSIsImZpbGUiLCJsb2FkIiwiZ3JhY2VmdWwiLCJkZWxldGUiLCJrZXkiLCJFcnJvciIsIlN0cmluZyIsImxlbmd0aCIsImFjdGlvbiIsInJlc29sdmVLZXkiLCJrZXlzIiwiZ2V0IiwibnNLZXkiLCJ2YWx1ZSIsImhhcyIsImV4aXN0cyIsImZzIiwiZXhpc3RzU3luYyIsIm1lc3NhZ2UiLCJleHQiLCJwYXRoIiwiZXh0bmFtZSIsInJlYWRKc29uU3luYyIsImUiLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsImN0eCIsIkpvaSIsImlzU2NoZW1hIiwidHlwZSIsImZvdW5kIiwiaXRlbSIsIiRfdGVybXMiLCJvYmplY3QiLCJPYmplY3QiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJjb21waWxlIiwid2FsayIsIl92YWxpZHMiLCJhZGQiLCJWYWx1ZXMiLCJmaW5kIiwicyIsInNsaWNlIiwic2F2ZSIsInNldCIsInRvU3RyaW5nIiwiYXJncyIsInVubG9hZCIsInVud2F0Y2giLCJoYW5kbGVyIiwid3JhcHBlZCIsIndhdGNoZXJNYXAiLCJ2YWxpZGF0b3IiLCJzY2hlbWFzIiwiZm4iLCJ3YXRjaCIsImZpbHRlciIsIm9iaiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOzs7Ozs7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LElBQUksQ0FBQyxLQUFLTSxTQUFMLElBQWtCbkUsY0FBbkI7QUFDZG9FLE1BQUFBLE9BQU8sRUFBRSxLQUFLL0QsTUFBTCxHQUFjLENBQUUsS0FBS0EsTUFBUCxDQUFkLEdBQWdDO0FBRDNCLE9BRVh3RCxJQUZXLEVBQWY7QUFJQTs7QUFFRCxNQUFJN0QsUUFBSixDQUFhcUUsRUFBYixFQUFpQjtBQUNoQixRQUFJLENBQUNBLEVBQUQsSUFBTyxPQUFPQSxFQUFQLEtBQWMsVUFBekIsRUFBcUM7QUFDcEMsWUFBTSxJQUFJbkUsU0FBSixDQUFjLHFDQUFkLENBQU47QUFDQTs7QUFDRCxTQUFLaUUsU0FBTCxHQUFpQkUsRUFBakI7QUFDQTtBQUVEO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUNDQyxFQUFBQSxLQUFLLENBQUNDLE1BQUQsRUFBU1AsT0FBVCxFQUFrQjtBQUN0QixVQUFNQyxPQUFPLEdBQUdPLEdBQUcsSUFBSVIsT0FBTyxDQUFDUSxHQUFELEVBQU0sSUFBTixDQUE5Qjs7QUFDQSxTQUFLTixVQUFMLENBQWdCUCxHQUFoQixDQUFvQkssT0FBcEIsRUFBNkJDLE9BQTdCO0FBQ0EsU0FBSzFELEtBQUwsQ0FBVytELEtBQVgsQ0FBaUJDLE1BQWpCLEVBQXlCTixPQUF6QjtBQUNBLFdBQU8sSUFBUDtBQUNBOztBQXZnQnlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGZzIGZyb20gJ2ZzLWV4dHJhJztcbmltcG9ydCBpbXBvcnRGcmVzaCBmcm9tICdpbXBvcnQtZnJlc2gnO1xuaW1wb3J0IEpvaSBmcm9tICdqb2knO1xuaW1wb3J0IEpTT05TdG9yZSBmcm9tICcuL3N0b3Jlcy9qc29uLXN0b3JlJztcbmltcG9ydCBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IHNub29wbG9nZyBmcm9tICdzbm9vcGxvZ2cnO1xuaW1wb3J0IFN0b3JlIGZyb20gJy4vc3RvcmUnO1xuaW1wb3J0IFZhbHVlcyBmcm9tICdqb2kvbGliL3ZhbHVlcyc7XG5pbXBvcnQgeyBnZXRTY2hlbWFJbml0aWFsVmFsdWVzLCB2YWxpZGF0ZSB9IGZyb20gJy4vdXRpbCc7XG5cbmNvbnN0IHsgbG9nIH0gPSBzbm9vcGxvZ2coJ2NvbmZpZy1raXQnKSgnanMtc3RvcmUnKTtcbmNvbnN0IHsgaGlnaGxpZ2h0IH0gPSBzbm9vcGxvZ2cuc3R5bGVzO1xuXG4vKipcbiAqIENvbnRhaW5zIGluZm9ybWF0aW9uIGFib3V0IGEgbGF5ZXIuIFRoZSBsYXllcidzIGRhdGEgaXMgbG9jYXRlZCBpbiB0aGUgbGF5ZXIncyBzdG9yZS5cbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTGF5ZXIge1xuXHQvKipcblx0ICogRm9yY2VzIGFsbCBub2RlcyBvZiBhIHNjaGVtYSB0byBhbGxvdyBudWxscy5cblx0ICogQHR5cGUge0Jvb2xlYW59XG5cdCAqL1xuXHRhbGxvd051bGxzID0gZmFsc2U7XG5cblx0LyoqXG5cdCAqIFRoZSBwYXRoIHRvIHRoZSBmaWxlIHRvIHdyaXRlIHRoZSBjb25maWcgZmlsZSB0by4gVGhpcyB2YWx1ZSBjYW4gYmUgb3ZlcndyaXR0ZW4gd2l0aCBhIGZpbGVcblx0ICogcGF0aCBzcGVjaWZpZWQgcGFzc2VkIGluIHdoZW4gc2F2aW5nLlxuXHQgKiBAcGFyYW0ge1N0cmluZ31cblx0ICovXG5cdGZpbGUgPSBudWxsO1xuXG5cdC8qKlxuXHQgKiBUaGUgbGF5ZXIgaWRlbnRpZmllci5cblx0ICogQHR5cGUge1N0cmluZ3xTeW1ib2x9XG5cdCAqL1xuXHRpZCA9IG51bGw7XG5cblx0LyoqXG5cdCAqIEFuIG9wdGlvbmFsIG5hbWUgb2YgdGhlIHNjb3BlIGVuY29tcGFzc2luZyB0aGlzIGxheWVyJ3MgZGF0YSBhbmQgc2NoZW1hLlxuXHQgKiBAdHlwZSB7U3RyaW5nfVxuXHQgKi9cblx0bmFtZXNwYWNlID0gbnVsbDtcblxuXHQvKipcblx0ICogVGhlIGxheWVyIHByZWNlZGVuY2UgaW4gdGhlIGxheWVyIGxpc3QuXG5cdCAqIEB0eXBlIHtOdW1iZXJ9XG5cdCAqL1xuXHRvcmRlciA9IDA7XG5cblx0LyoqXG5cdCAqIEluZGljYXRlcyBpZiB0aGUgdmFsdWVzIGluIHRoZSBzdG9yZSBjYW4gYmUgbW9kaWZpZWQuXG5cdCAqIEB0eXBlIHtCb29sZWFufVxuXHQgKi9cblx0cmVhZG9ubHkgPSBmYWxzZTtcblxuXHQvKipcblx0ICogVGhlIEpvaSBzY2hlbWEuXG5cdCAqIEB0eXBlIHtPYmplY3R9XG5cdCAqL1xuXHRzY2hlbWEgPSBudWxsO1xuXG5cdC8qKlxuXHQgKiBJbmRpY2F0ZXMgaWYgdGhpcyBsYXllciBjYW4gYmUgdW5sb2FkZWQuXG5cdCAqIEB0eXBlIHtCb29sZWFufVxuXHQgKi9cblx0c3RhdGljID0gZmFsc2U7XG5cblx0LyoqXG5cdCAqIEEgcmVmZXJlbmNlIHRvIHRoZSBsYXllcidzIGRhdGEgc3RvcmUgaW5zdGFuY2UuXG5cdCAqIEB0eXBlIHtTdG9yZX1cblx0ICovXG5cdHN0b3JlID0gbnVsbDtcblxuXHQvKipcblx0ICogQSBjdXN0b20gdmFsaWRhdGlvbiBjYWxsYmFjay4gSWYgbm90IHNldCwgZGVmYXVsdHMgdG8gdmFsaWRhdGluZyBhZ2FpbnN0IHRoaXMgbGF5ZXInc1xuXHQgKiBzY2hlbWEuXG5cdCAqIEB0eXBlIHtGdW5jdGlvbn1cblx0ICovXG5cdHZhbGlkYXRvciA9IG51bGw7XG5cblx0LyoqXG5cdCAqIEEgbG9va3VwIHRhYmxlIG9mIG9yaWdpbmFsIHdhdGNoIGhhbmRsZXJzIHRvIHRoZWlyIHdyYXBwZWQgY291bnRlcnBhcnRzIHNvIHRoYXQgaXQgY2FuXG5cdCAqIGFkZCBhIHJlZmVyZW5jZSB0byB0aGlzIGxheWVyIHRvIHRoZSBldmVudCBoYW5kbGVyLlxuXHQgKiBAdHlwZSB7TWFwfVxuXHQgKi9cblx0d2F0Y2hlck1hcCA9IG5ldyBNYXAoKTtcblxuXHQvKipcblx0ICogSW5pdGlhbGl6ZXMgdGhlIGxheWVyLCBsb2FkcyBhIGZpbGUsIGFuZCBpbml0aWFsaXplcyB0aGUgc2NoZW1hIG9iamVjdC5cblx0ICpcblx0ICogQHBhcmFtIHtPYmplY3R9IFtvcHRzXSAtIFZhcmlvdXMgb3B0aW9ucy5cblx0ICogQHBhcmFtIHtCb29sZWFufSBbb3B0cy5hbGxvd051bGxzXSAtIEZvcmNlcyBhbGwgbm9kZXMgb2YgYSBzY2hlbWEgdG8gYWxsb3cgbnVsbHMuXG5cdCAqIEBwYXJhbSB7T2JqZWN0fSBbb3B0cy5kYXRhXSAtIERhdGEgdG8gaW5pdGlhbGl6ZSB0aGUgYmFzZSBjb25maWcgbGF5ZXIgd2l0aC5cblx0ICogQHBhcmFtIHtTdHJpbmd9IFtvcHRzLmZpbGVdIC0gVGhlIGZpbGUgYmFja2luZyB0aGlzIGxheWVyJ3Mgc3RvcmUuXG5cdCAqIEBwYXJhbSB7Qm9vbGVhbn0gW29wdHMuZ3JhY2VmdWw9dHJ1ZV0gLSBUcnkgdG8gbG9hZCB0aGUgZmlsZSwgYnV0IGlmIGl0IGRvZXNuJ3QgZXhpc3QsIHRoZW5cblx0ICogZ3JhY2VmdWxseSBoYW5kbGUgdGhlIGVycm9yLlxuXHQgKiBAcGFyYW0ge1N0cmluZ3xTeW1ib2x9IFtvcHRzLmlkXSAtIFRoZSBsYXllciBpZC5cblx0ICogQHBhcmFtIHtTdHJpbmd9IFtvcHRzLm5hbWVzcGFjZV0gLSBUaGUgbmFtZSBvZiB0aGUgc2NvcGUgZW5jb21wYXNzaW5nIHRoaXMgbGF5ZXIncyBkYXRhIGFuZFxuXHQgKiBzY2hlbWEgaWYgbm90IGFscmVhZHkgZGVmaW5lZC5cblx0ICogQHBhcmFtIHtOdW1iZXJ9IFtvcHRzLm9yZGVyPTBdIC0gVGhlIGxheWVyIHByZWNlZGVuY2UuXG5cdCAqIEBwYXJhbSB7Qm9vbGVhbn0gW29wdHMucmVhZG9ubHldIC0gSW5kaWNhdGVzIGlmIHRoaXMgbGF5ZXIncyBkYXRhIGNhbiBiZSBjaGFuZ2VkLlxuXHQgKiBAcGFyYW0ge09iamVjdH0gW29wdHMuc2NoZW1hXSAtIEEgSm9pIHNjaGVtYSBvciBvYmplY3QgdG8gY29tcGlsZSBpbnRvIGEgSm9pIHNjaGVtYS5cblx0ICogQHBhcmFtIHtCb29sZWFufSBbb3B0cy5zdGF0aWNdIC0gSW5kaWNhdGVzIGlmIHRoaXMgbGF5ZXIgY2FuIGJlIHVubG9hZGVkLlxuXHQgKiBAcGFyYW0ge1N0b3JlfSBbb3B0cy5zdG9yZV0gLSBUaGUgZGF0YSBzdG9yZS4gRGVmYXVsdHMgdG8gYSBgSlNPTlN0b3JlYCBpbnN0YW5jZS5cblx0ICogQHBhcmFtIHtGdW5jdGlvbn0gW29wdHMudmFsaWRhdGVdIC0gQSBmdW5jdGlvbiB0byBjYWxsIGFuZCB2YWxpZGF0ZSBjaGFuZ2VzIGFnYWluc3QgYSBzY2hlbWEuXG5cdCAqIEBhY2Nlc3MgcHVibGljXG5cdCAqL1xuXHRjb25zdHJ1Y3RvcihvcHRzID0ge30pIHtcblx0XHR0aGlzLmFsbG93TnVsbHMgPSBvcHRzLmFsbG93TnVsbHM7XG5cdFx0dGhpcy5pZCAgICAgICAgID0gb3B0cy5pZCB8fCBudWxsO1xuXHRcdHRoaXMubmFtZXNwYWNlICA9IG9wdHMubmFtZXNwYWNlO1xuXHRcdHRoaXMub3JkZXIgICAgICA9IG9wdHMub3JkZXIgfHwgMDtcblx0XHR0aGlzLnJlYWRvbmx5ICAgPSAhIW9wdHMucmVhZG9ubHk7XG5cdFx0dGhpcy5zdGF0aWMgICAgID0gISFvcHRzLnN0YXRpYztcblxuXHRcdGlmIChvcHRzLnZhbGlkYXRlICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdGlmICh0eXBlb2Ygb3B0cy52YWxpZGF0ZSAhPT0gJ2Z1bmN0aW9uJykge1xuXHRcdFx0XHR0aHJvdyBuZXcgVHlwZUVycm9yKCdFeHBlY3RlZCB2YWxpZGF0ZSBjYWxsYmFjayB0byBiZSBhIGZ1bmN0aW9uJyk7XG5cdFx0XHR9XG5cdFx0XHR0aGlzLnZhbGlkYXRlID0gb3B0cy52YWxpZGF0ZTtcblx0XHR9XG5cblx0XHRsZXQgZGVmYXVsdHMsIGVudjtcblxuXHRcdGlmIChvcHRzLnNjaGVtYSkge1xuXHRcdFx0dGhpcy5sb2FkU2NoZW1hKG9wdHMuc2NoZW1hKTtcblx0XHRcdCh7IGRlZmF1bHRzLCBlbnYgfSA9IGdldFNjaGVtYUluaXRpYWxWYWx1ZXModGhpcy5zY2hlbWEpKTtcblx0XHR9XG5cblx0XHRpZiAob3B0cy5zdG9yZSBpbnN0YW5jZW9mIFN0b3JlKSB7XG5cdFx0XHR0aGlzLnN0b3JlID0gb3B0cy5zdG9yZTtcblx0XHRcdGlmICh0aGlzLnNjaGVtYSkge1xuXHRcdFx0XHR0aGlzLnN0b3JlLnNjaGVtYSA9IHRoaXMuc2NoZW1hO1xuXHRcdFx0fVxuXHRcdH0gZWxzZSBpZiAodHlwZW9mIG9wdHMuc3RvcmUgPT09ICdmdW5jdGlvbicpIHtcblx0XHRcdHRoaXMuc3RvcmUgPSBuZXcgb3B0cy5zdG9yZSh7IGRhdGE6IGRlZmF1bHRzLCBzY2hlbWE6IHRoaXMuc2NoZW1hIH0pO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLnN0b3JlID0gbmV3IEpTT05TdG9yZShvcHRzLnN0b3JlIHx8IHsgZGF0YTogZGVmYXVsdHMsIHNjaGVtYTogdGhpcy5zY2hlbWEgfSk7XG5cdFx0fVxuXG5cdFx0bGV0IHsgZGF0YSB9ID0gb3B0cztcblx0XHRpZiAoZGF0YSkge1xuXHRcdFx0aWYgKHR5cGVvZiBkYXRhICE9PSAnb2JqZWN0Jykge1xuXHRcdFx0XHR0aHJvdyBuZXcgVHlwZUVycm9yKCdFeHBlY3RlZCBsYXllciBkYXRhIHRvIGJlIGFuIG9iamVjdCcpO1xuXHRcdFx0fVxuXG5cdFx0XHRpZiAoZGF0YSAmJiB0eXBlb2YgZGF0YSA9PT0gJ29iamVjdCcpIHtcblx0XHRcdFx0dGhpcy5tZXJnZSh0aGlzLm5hbWVzcGFjZSA/IHsgW3RoaXMubmFtZXNwYWNlXTogZGF0YSB9IDogZGF0YSk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0aWYgKG9wdHMuZmlsZSkge1xuXHRcdFx0dGhpcy5sb2FkKG9wdHMuZmlsZSwgb3B0cy5ncmFjZWZ1bCAhPT0gZmFsc2UpO1xuXHRcdH1cblxuXHRcdGlmIChlbnYpIHtcblx0XHRcdC8vIHdlIGNhbiBtZXJnZSB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUgdmFsdWVzIGRpcmVjdGx5IGludG8gdGhlIHN0b3JlIHNpbmNlIHdlJ3ZlXG5cdFx0XHQvLyBhbHJlYWR5IGRvbmUgdGhlIHZhbGlkYXRpb24gaW4gYGdldFNjaGVtYUluaXRpYWxWYWx1ZXMoKWBcblx0XHRcdHRoaXMuc3RvcmUubWVyZ2UoZW52KTtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogU2V0cyBhIHZhbHVlIGZvciB0aGUgc3BlY2lmaWVkIGtleS5cblx0ICpcblx0ICogQHBhcmFtIHtBcnJheS48U3RyaW5nPn0ga2V5IC0gVGhlIGtleSB0byBzZXQuXG5cdCAqIEByZXR1cm5zIHtCb29sZWFufVxuXHQgKi9cblx0ZGVsZXRlKGtleSkge1xuXHRcdGlmICh0aGlzLnJlYWRvbmx5KSB7XG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoYExheWVyIFwiJHtTdHJpbmcodGhpcy5pZCl9XCIgaXMgcmVhZG9ubHlgKTtcblx0XHR9XG5cblx0XHRpZiAoIWtleSB8fCAha2V5Lmxlbmd0aCkge1xuXHRcdFx0dGhyb3cgbmV3IEVycm9yKCdNaXNzaW5nIHJlcXVpcmVkIGNvbmZpZyBrZXknKTtcblx0XHR9XG5cblx0XHR0aGlzLnZhbGlkYXRlKHsgYWN0aW9uOiAnZGVsZXRlJywga2V5IH0pO1xuXHRcdGlmIChrZXkgPSB0aGlzLnJlc29sdmVLZXkoa2V5KSkge1xuXHRcdFx0Y29uc3Qga2V5cyA9IHRoaXMubmFtZXNwYWNlICYmIHRoaXMuc3RvcmUua2V5cygpO1xuXHRcdFx0aWYgKGtleXMgJiYga2V5cy5sZW5ndGggPT09IDEgJiYga2V5c1swXSA9PT0gdGhpcy5uYW1lc3BhY2UpIHtcblx0XHRcdFx0Ly8gZGF0YSBpcyBuYW1lc3BhY2VkLCBzbyB3ZSBuZWVkIHRvIGFkZCB0aGUgbmFtZXNwYWNlIGJhY2tcblx0XHRcdFx0cmV0dXJuIHRoaXMuc3RvcmUuZGVsZXRlKFsgdGhpcy5uYW1lc3BhY2UsIC4uLmtleSBdKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHJldHVybiB0aGlzLnN0b3JlLmRlbGV0ZShrZXkpO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHJldHVybiBmYWxzZTtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZXRyaWV2ZXMgYSB2YWx1ZSBmb3IgdGhlIHNwZWNpZmllZCBrZXkuXG5cdCAqXG5cdCAqIEBwYXJhbSB7QXJyYXkuPFN0cmluZz59IFtrZXldIC0gVGhlIGtleSB0byBnZXQuIFdoZW4gYHVuZGVmaW5lZGAsIHRoZSBlbnRpcmUgY29uZmlnIGlzXG5cdCAqIHJldHVybmVkLlxuXHQgKiBAcmV0dXJucyB7Kn1cblx0ICogQGFjY2VzcyBwdWJsaWNcblx0ICovXG5cdGdldChrZXkpIHtcblx0XHRsZXQgbnNLZXkgPSB0aGlzLnJlc29sdmVLZXkoa2V5KTtcblx0XHRpZiAobnNLZXkgPT09IG51bGwpIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHRjb25zdCBrZXlzID0gdGhpcy5uYW1lc3BhY2UgJiYgdGhpcy5zdG9yZS5rZXlzKCk7XG5cdFx0bGV0IHZhbHVlO1xuXHRcdGlmIChrZXlzICYmIGtleXMubGVuZ3RoID09PSAxICYmIGtleXNbMF0gPT09IHRoaXMubmFtZXNwYWNlKSB7XG5cdFx0XHQvLyBkYXRhIGlzIG5hbWVzcGFjZWQsIHNvIHdlIG5lZWQgdG8gYWRkIHRoZSBuYW1lc3BhY2UgYmFja1xuXHRcdFx0dmFsdWUgPSB0aGlzLnN0b3JlLmdldChbIHRoaXMubmFtZXNwYWNlLCAuLi5uc0tleSBdKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dmFsdWUgPSB0aGlzLnN0b3JlLmdldChuc0tleSk7XG5cdFx0fVxuXG5cdFx0aWYgKCFuc0tleT8ubGVuZ3RoICYmIHZhbHVlID09PSB1bmRlZmluZWQpIHtcblx0XHRcdC8vIHNldCB0byBlbXB0eSBvYmplY3QgaWYgdmFsdWVcblx0XHRcdHZhbHVlID0ge307XG5cdFx0fVxuXG5cdFx0aWYgKGtleS5sZW5ndGggJiYgdGhpcy5uYW1lc3BhY2UgJiYga2V5WzBdID09PSB0aGlzLm5hbWVzcGFjZSkge1xuXHRcdFx0cmV0dXJuIHZhbHVlO1xuXHRcdH1cblxuXHRcdHJldHVybiB0aGlzLm5hbWVzcGFjZSA/IHsgW3RoaXMubmFtZXNwYWNlXTogdmFsdWUgfSA6IHZhbHVlO1xuXHR9XG5cblx0LyoqXG5cdCAqIERldGVybWluZXMgaWYgYSBrZXkgaXMgc2V0LlxuXHQgKlxuXHQgKiBAcGFyYW0ge0FycmF5LjxTdHJpbmc+fSBba2V5XSAtIFRoZSBrZXkgdG8gY2hlY2suXG5cdCAqIEByZXR1cm5zIHtCb29sZWFufVxuXHQgKiBAYWNjZXNzIHB1YmxpY1xuXHQgKi9cblx0aGFzKGtleSkge1xuXHRcdGNvbnN0IG5zS2V5ID0gdGhpcy5yZXNvbHZlS2V5KGtleSk7XG5cdFx0aWYgKG5zS2V5ID09PSBudWxsKSB7XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fVxuXG5cdFx0Y29uc3Qga2V5cyA9IHRoaXMubmFtZXNwYWNlICYmIHRoaXMuc3RvcmUua2V5cygpO1xuXHRcdGlmIChrZXlzICYmIGtleXMubGVuZ3RoID09PSAxICYmIGtleXNbMF0gPT09IHRoaXMubmFtZXNwYWNlKSB7XG5cdFx0XHQvLyBkYXRhIGlzIG5hbWVzcGFjZWQsIHNvIHdlIG5lZWQgdG8gYWRkIHRoZSBuYW1lc3BhY2UgYmFja1xuXHRcdFx0cmV0dXJuIHRoaXMuc3RvcmUuaGFzKFsgdGhpcy5uYW1lc3BhY2UsIC4uLm5zS2V5IF0pO1xuXHRcdH1cblxuXHRcdHJldHVybiB0aGlzLnN0b3JlLmhhcyhuc0tleSk7XG5cdH1cblxuXHQvKipcblx0ICogTG9hZHMgYSBjb25maWcgZmlsZS5cblx0ICpcblx0ICogQHBhcmFtIHtTdHJpbmd9IGZpbGUgLSBUaGUgcGF0aCB0byB0aGUgY29uZmlnIGZpbGUgdG8gbG9hZC5cblx0ICogQHBhcmFtIHtCb29sZWFufSBbZ3JhY2VmdWw9ZmFsc2VdIC0gV2hlbiBgdHJ1ZWAsIGRvZXNuJ3QgZXJyb3IgaWYgdGhlIGNvbmZpZyBmaWxlIGRvZXMgbm90XG5cdCAqIGV4aXN0LlxuXHQgKiBAcmV0dXJucyB7TGF5ZXJ9XG5cdCAqIEBhY2Nlc3MgcHVibGljXG5cdCAqL1xuXHRsb2FkKGZpbGUsIGdyYWNlZnVsKSB7XG5cdFx0aWYgKCFmaWxlIHx8IHR5cGVvZiBmaWxlICE9PSAnc3RyaW5nJykge1xuXHRcdFx0dGhyb3cgbmV3IFR5cGVFcnJvcignRXhwZWN0ZWQgY29uZmlnIGZpbGUgcGF0aCB0byBiZSBhIHN0cmluZycpO1xuXHRcdH1cblxuXHRcdGNvbnN0IGV4aXN0cyA9IGZzLmV4aXN0c1N5bmMoZmlsZSk7XG5cdFx0dGhpcy5maWxlID0gZmlsZTtcblxuXHRcdGlmIChncmFjZWZ1bCAmJiAhZXhpc3RzKSB7XG5cdFx0XHRsb2coYCR7U3RyaW5nKHRoaXMuaWQpfSBHcmFjZWZ1bGx5IGhhbmRsaW5nIG5vbi1leGlzdGVudCBjb25maWcgZmlsZTogJHtoaWdobGlnaHQoZmlsZSl9YCk7XG5cdFx0fVxuXG5cdFx0aWYgKCFncmFjZWZ1bCB8fCBleGlzdHMpIHtcblx0XHRcdHRoaXMuc3RvcmUubG9hZChmaWxlKTtcblx0XHRcdGNvbnN0IGRhdGEgPSB0aGlzLnN0b3JlLmdldCgpO1xuXHRcdFx0dGhpcy52YWxpZGF0ZSh7XG5cdFx0XHRcdGFjdGlvbjogJ2xvYWQnLFxuXHRcdFx0XHRtZXNzYWdlOiAnRmFpbGVkIHRvIGxvYWQgY29uZmlnIGZpbGUnLFxuXHRcdFx0XHR2YWx1ZTogdGhpcy5uYW1lc3BhY2UgPyB7IFt0aGlzLm5hbWVzcGFjZV06IGRhdGEgfSA6IGRhdGFcblx0XHRcdH0pO1xuXHRcdH1cblxuXHRcdHJldHVybiB0aGlzO1xuXHR9XG5cblx0LyoqXG5cdCAqIExvYWRzIGEgc2NoZW1hIGZyb20gYSBmaWxlIG9yIG9iamVjdC5cblx0ICpcblx0ICogQHBhcmFtIHtTdHJpbmd8T2JqZWN0fSBzY2hlbWEgLSBUaGUgcGF0aCB0byB0aGUgY29uZmlnIGZpbGUgdG8gbG9hZCBvciBKb2kgc2NoZW1hLlxuXHQgKiBAcmV0dXJucyB7TGF5ZXJ9XG5cdCAqIEBhY2Nlc3MgcHVibGljXG5cdCAqL1xuXHRsb2FkU2NoZW1hKHNjaGVtYSkge1xuXHRcdGlmICghc2NoZW1hKSB7XG5cdFx0XHR0aHJvdyBuZXcgVHlwZUVycm9yKCdFeHBlY3RlZCBzY2hlbWEgdG8gYmUgYW4gb2JqZWN0IG9yIGZpbGUnKTtcblx0XHR9XG5cblx0XHRpZiAodHlwZW9mIHNjaGVtYSA9PT0gJ3N0cmluZycpIHtcblx0XHRcdGlmICghZnMuZXhpc3RzU3luYyhzY2hlbWEpKSB7XG5cdFx0XHRcdHRocm93IG5ldyBFcnJvcihgRmlsZSBub3QgZm91bmQ6ICR7c2NoZW1hfWApO1xuXHRcdFx0fVxuXG5cdFx0XHRjb25zdCBleHQgPSBwYXRoLmV4dG5hbWUoc2NoZW1hKTtcblx0XHRcdGlmIChleHQgIT09ICcuanMnICYmIGV4dCAhPT0gJy5qc29uJykge1xuXHRcdFx0XHR0aHJvdyBuZXcgRXJyb3IoYFVuc3VwcG9ydGVkIHNjaGVtYSBmaWxlIHR5cGU6ICR7ZXh0fWApO1xuXHRcdFx0fVxuXG5cdFx0XHRsb2coYCR7U3RyaW5nKHRoaXMuaWQpfSBMb2FkaW5nICR7aGlnaGxpZ2h0KHNjaGVtYSl9YCk7XG5cdFx0XHRpZiAoZXh0ID09PSAnLmpzb24nKSB7XG5cdFx0XHRcdHRyeSB7XG5cdFx0XHRcdFx0c2NoZW1hID0gZnMucmVhZEpzb25TeW5jKHNjaGVtYSk7XG5cdFx0XHRcdH0gY2F0Y2ggKGUpIHtcblx0XHRcdFx0XHR0aHJvdyBuZXcgRXJyb3IoYEZhaWxlZCB0byBwYXJzZSBzY2hlbWEganNvbiBmaWxlOiAke2UubWVzc2FnZX1gKTtcblx0XHRcdFx0fVxuXHRcdFx0fSBlbHNlIGlmIChleHQgPT09ICcuanMnKSB7XG5cdFx0XHRcdHRyeSB7XG5cdFx0XHRcdFx0c2NoZW1hID0gaW1wb3J0RnJlc2goc2NoZW1hKTtcblx0XHRcdFx0fSBjYXRjaCAoZSkge1xuXHRcdFx0XHRcdHRocm93IG5ldyBFcnJvcihgRmFpbGVkIHRvIHBhcnNlIHNjaGVtYSBqcyBmaWxlOiAke2UubWVzc2FnZX1gKTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdC8vIGNoZWNrIGlmIHdlIGhhdmUgYSBiYWJlbCB0cmFuc3BpbGVkIGZpbGVcblx0XHRcdFx0aWYgKHNjaGVtYSAmJiB0eXBlb2Ygc2NoZW1hID09PSAnb2JqZWN0JyAmJiBzY2hlbWEuX19lc01vZHVsZSAmJiBzY2hlbWEuZGVmYXVsdCkge1xuXHRcdFx0XHRcdHNjaGVtYSA9IHNjaGVtYS5kZWZhdWx0O1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0aWYgKHR5cGVvZiBzY2hlbWEgPT09ICdmdW5jdGlvbicpIHtcblx0XHRcdFx0XHRzY2hlbWEgPSBzY2hlbWEoeyBjdHg6IHRoaXMsIEpvaSB9KTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdGlmICghc2NoZW1hIHx8IHR5cGVvZiBzY2hlbWEgIT09ICdvYmplY3QnKSB7XG5cdFx0XHR0aHJvdyBuZXcgVHlwZUVycm9yKCdFeHBlY3RlZCBzY2hlbWEgdG8gYmUgYW4gb2JqZWN0IG9yIGZpbGUnKTtcblx0XHR9XG5cblx0XHRpZiAoSm9pLmlzU2NoZW1hKHNjaGVtYSkpIHtcblx0XHRcdGlmIChzY2hlbWEudHlwZSAhPT0gJ29iamVjdCcpIHtcblx0XHRcdFx0dGhyb3cgbmV3IFR5cGVFcnJvcignRXhwZWN0ZWQgc2NoZW1hIHJvb3QgdG8gYmUgYW4gb2JqZWN0Jyk7XG5cdFx0XHR9XG5cblx0XHRcdGlmICh0aGlzLm5hbWVzcGFjZSkge1xuXHRcdFx0XHRsZXQgZm91bmQgPSBmYWxzZTtcblx0XHRcdFx0Zm9yIChjb25zdCBpdGVtIG9mIHNjaGVtYS4kX3Rlcm1zLmtleXMpIHtcblx0XHRcdFx0XHRpZiAoaXRlbS5rZXkgPT09IHRoaXMubmFtZXNwYWNlICYmIGl0ZW0uc2NoZW1hLnR5cGUgPT09ICdvYmplY3QnKSB7XG5cdFx0XHRcdFx0XHRmb3VuZCA9IHRydWU7XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKCFmb3VuZCkge1xuXHRcdFx0XHRcdHNjaGVtYSA9IEpvaS5vYmplY3QoeyBbdGhpcy5uYW1lc3BhY2VdOiBzY2hlbWEgfSk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9IGVsc2Uge1xuXHRcdFx0aWYgKHRoaXMubmFtZXNwYWNlICYmICFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoc2NoZW1hLCB0aGlzLm5hbWVzcGFjZSkpIHtcblx0XHRcdFx0c2NoZW1hID0geyBbdGhpcy5uYW1lc3BhY2VdOiBzY2hlbWEgfTtcblx0XHRcdH1cblx0XHRcdGxvZyhgJHtTdHJpbmcodGhpcy5pZCl9IENvbXBpbGluZyBzY2hlbWEuLi5gKTtcblx0XHRcdHNjaGVtYSA9IEpvaS5jb21waWxlKHNjaGVtYSk7XG5cdFx0fVxuXG5cdFx0aWYgKHRoaXMuYWxsb3dOdWxscykge1xuXHRcdFx0bG9nKGAke1N0cmluZyh0aGlzLmlkKX0gRm9yY2luZyBudWxscyBvbiBzY2hlbWFgKTtcblx0XHRcdChmdW5jdGlvbiB3YWxrKHNjaGVtYSkge1xuXHRcdFx0XHRpZiAoc2NoZW1hLl92YWxpZHMpIHtcblx0XHRcdFx0XHRzY2hlbWEuX3ZhbGlkcy5hZGQobnVsbCk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0c2NoZW1hLl92YWxpZHMgPSBuZXcgVmFsdWVzKFsgbnVsbCBdKTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGlmIChzY2hlbWEudHlwZSA9PT0gJ29iamVjdCcgJiYgc2NoZW1hLiRfdGVybXMua2V5cykge1xuXHRcdFx0XHRcdGZvciAoY29uc3QgaXRlbSBvZiBzY2hlbWEuJF90ZXJtcy5rZXlzKSB7XG5cdFx0XHRcdFx0XHR3YWxrKGl0ZW0uc2NoZW1hKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH0oc2NoZW1hKSk7XG5cdFx0fVxuXG5cdFx0dGhpcy5zY2hlbWEgPSBzY2hlbWE7XG5cblx0XHQvLyB3aGVuIGxvYWRTY2hlbWEoKSBpcyBjYWxsZWQgZnJvbSB0aGUgY29uc3RydWN0b3IsIGB0aGlzLnN0b3JlYCB3aWxsIG5vdCBoYXZlIGJlZW4gc2V0XG5cdFx0Ly8geWV0LCBzbyB0aGlzIGlzIHJlYWxseSBmb3IgdGhlIHB1YmxpYyBBUElcblx0XHRpZiAodGhpcy5zdG9yZSkge1xuXHRcdFx0dGhpcy5zdG9yZS5zY2hlbWEgPSB0aGlzLm5hbWVzcGFjZSAmJiBzY2hlbWEuJF90ZXJtcy5rZXlzPy5maW5kKHMgPT4gcy5rZXkgPT09IHRoaXMubmFtZXNwYWNlKT8uc2NoZW1hIHx8IHNjaGVtYTtcblx0XHR9XG5cblx0XHRyZXR1cm4gdGhpcztcblx0fVxuXG5cdC8qKlxuXHQgKiBEZWVwbHkgbWVyZ2VzIGFuIG9iamVjdCBpbnRvIGEgbGF5ZXIncyBzdG9yZS5cblx0ICpcblx0ICogQHBhcmFtIHtPYmplY3R9IHZhbHVlIC0gVGhlIGRhdGEgdG8gbWVyZ2UuXG5cdCAqIEByZXR1cm5zIHtMYXllcn1cblx0ICogQGFjY2VzcyBwdWJsaWNcblx0ICovXG5cdG1lcmdlKHZhbHVlKSB7XG5cdFx0aWYgKHRoaXMucmVhZG9ubHkpIHtcblx0XHRcdHRocm93IG5ldyBFcnJvcihgTGF5ZXIgXCIke1N0cmluZyh0aGlzLmlkKX1cIiBpcyByZWFkb25seWApO1xuXHRcdH1cblx0XHR0aGlzLnZhbGlkYXRlKHsgYWN0aW9uOiAnbWVyZ2UnLCB2YWx1ZSB9KTtcblx0XHRpZiAoKCF0aGlzLm5hbWVzcGFjZSB8fCAodmFsdWUgPSB2YWx1ZVt0aGlzLm5hbWVzcGFjZV0pKSAmJiB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnKSB7XG5cdFx0XHR0aGlzLnN0b3JlLm1lcmdlKHZhbHVlKTtcblx0XHR9XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cblxuXHQvKipcblx0ICogQ2hlY2tzIGlmIHRoaXMgbGF5ZXIgaGFzIGEgbmFtZXNwYWNlcyBhbmQgaWYgdGhlIGtleSBoYXMgdGhlIG5hbWVzcGFjZSwgdGhlbiByZXR1cm5zIHRoZVxuXHQgKiByZXNvbHZlZCBrZXkuXG5cdCAqXG5cdCAqIEBwYXJhbSB7QXJyYXkuPFN0cmluZz59IGtleSAtIFRoZSBrZXkgdG8gcmVzb2x2ZS5cblx0ICogQHJldHVybnMge0FycmF5LjxTdHJpbmc+fVxuXHQgKiBAYWNjZXNzIHByaXZhdGVcblx0ICovXG5cdHJlc29sdmVLZXkoa2V5KSB7XG5cdFx0aWYgKGtleS5sZW5ndGggJiYgdGhpcy5uYW1lc3BhY2UpIHtcblx0XHRcdHJldHVybiBrZXlbMF0gPT09IHRoaXMubmFtZXNwYWNlID8ga2V5LnNsaWNlKDEpIDogbnVsbDtcblx0XHR9XG5cdFx0cmV0dXJuIGtleTtcblx0fVxuXG5cdC8qKlxuXHQgKiBTYXZlcyBhIHNwZWNpZmljIGxheWVyJ3Mgc3RvcmUgdG8gZGlzay5cblx0ICpcblx0ICogQHBhcmFtIHtTdHJpbmd9IFtmaWxlXSAtIFRoZSBmaWxlIHRvIHdyaXRlIHRoZSBsYXllcnMgc3RvcmUgdG8uXG5cdCAqIEByZXR1cm5zIHtMYXllcn1cblx0ICogQGFjY2VzcyBwdWJsaWNcblx0ICovXG5cdHNhdmUoZmlsZSkge1xuXHRcdGxvZyhgJHtTdHJpbmcodGhpcy5pZCl9IFNhdmluZyB0byBmaWxlOiAke2hpZ2hsaWdodChmaWxlIHx8IHRoaXMuZmlsZSl9YCk7XG5cdFx0dGhpcy5zdG9yZS5zYXZlKGZpbGUgfHwgdGhpcy5maWxlKTtcblx0XHRyZXR1cm4gdGhpcztcblx0fVxuXG5cdC8qKlxuXHQgKiBTZXRzIGEgdmFsdWUgZm9yIHRoZSBzcGVjaWZpZWQga2V5LlxuXHQgKlxuXHQgKiBAcGFyYW0ge0FycmF5LjxTdHJpbmc+fSBrZXkgLSBUaGUga2V5IHRvIHNldC5cblx0ICogQHBhcmFtIHsqfSBbdmFsdWVdIC0gVGhlIHZhbHVlO1xuXHQgKiBAcGFyYW0ge1N0cmluZ30gW2FjdGlvbj1cInNldFwiXSAtIEFuIGFjdGlvbiBoaW50IGZvciB2YWxpZGF0aW9uLlxuXHQgKiBAcmV0dXJucyB7TGF5ZXJ9XG5cdCAqL1xuXHRzZXQoa2V5LCB2YWx1ZSwgYWN0aW9uID0gJ3NldCcpIHtcblx0XHRpZiAodGhpcy5yZWFkb25seSkge1xuXHRcdFx0dGhyb3cgbmV3IEVycm9yKGBMYXllciBcIiR7U3RyaW5nKHRoaXMuaWQpfVwiIGlzIHJlYWRvbmx5YCk7XG5cdFx0fVxuXG5cdFx0aWYgKCFrZXkgfHwgIWtleS5sZW5ndGgpIHtcblx0XHRcdHRocm93IG5ldyBFcnJvcignTWlzc2luZyByZXF1aXJlZCBjb25maWcga2V5Jyk7XG5cdFx0fVxuXG5cdFx0dGhpcy52YWxpZGF0ZSh7IGFjdGlvbiwga2V5LCB2YWx1ZSB9KTtcblx0XHRpZiAoa2V5ID0gdGhpcy5yZXNvbHZlS2V5KGtleSkpIHtcblx0XHRcdGNvbnN0IGtleXMgPSB0aGlzLm5hbWVzcGFjZSAmJiB0aGlzLnN0b3JlLmtleXMoKTtcblx0XHRcdGlmIChrZXlzICYmIGtleXMubGVuZ3RoID09PSAxICYmIGtleXNbMF0gPT09IHRoaXMubmFtZXNwYWNlKSB7XG5cdFx0XHRcdC8vIGRhdGEgaXMgbmFtZXNwYWNlZCwgc28gd2UgbmVlZCB0byBhZGQgdGhlIG5hbWVzcGFjZSBiYWNrXG5cdFx0XHRcdHRoaXMuc3RvcmUuc2V0KFsgdGhpcy5uYW1lc3BhY2UsIC4uLmtleSBdLCB2YWx1ZSk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHR0aGlzLnN0b3JlLnNldChrZXksIHZhbHVlKTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRyZXR1cm4gdGhpcztcblx0fVxuXG5cdC8qKlxuXHQgKiBSZXR1cm5zIGEgdmFsdWUgb2YgdGhlIHN0b3JlIGFzIGEgc3RyaW5nLlxuXHQgKlxuXHQgKiBAcGFyYW0geyp9IFthcmdzXSAtIFZhcmlvdXMgYXJndW1lbnRzIHRvIHBhc3MgaW50byB0aGUgc3RvcmUncyBgdG9TdHJpbmcoKWAuXG5cdCAqIEByZXR1cm5zIHtTdHJpbmd9XG5cdCAqIEBhY2Nlc3MgcHVibGljXG5cdCAqL1xuXHR0b1N0cmluZyguLi5hcmdzKSB7XG5cdFx0cmV0dXJuIHRoaXMuc3RvcmU/LnRvU3RyaW5nKC4uLmFyZ3MpIHx8ICcnO1xuXHR9XG5cblx0LyoqXG5cdCAqIENoZWNrcyBpZiB0aGlzIGxheWVyIGNhbiBiZSB1bmxvYWRlZC5cblx0ICpcblx0ICogQHJldHVybnMge0xheWVyfVxuXHQgKiBAYWNjZXNzIHB1YmxpY1xuXHQgKi9cblx0dW5sb2FkKCkge1xuXHRcdGlmICh0aGlzLnN0YXRpYykge1xuXHRcdFx0dGhyb3cgbmV3IEVycm9yKCdDYW5ub3QgdW5sb2FkIHN0YXRpYyBsYXllcicpO1xuXHRcdH1cblx0XHRyZXR1cm4gdGhpcztcblx0fVxuXG5cdC8qKlxuXHQgKiBSZW1vdmVzIGEgd2F0Y2ggaGFuZGxlci5cblx0ICpcblx0ICogQHBhcmFtIHtGdW5jdGlvbn0gaGFuZGxlciAtIEEgY2FsbGJhY2sgdG8gZmlyZSB3aGVuIGEgY2hhbmdlIG9jY3Vycy5cblx0ICogQHJldHVybnMge0xheWVyfVxuXHQgKiBAYWNjZXNzIHB1YmxpY1xuXHQgKi9cblx0dW53YXRjaChoYW5kbGVyKSB7XG5cdFx0Y29uc3Qgd3JhcHBlZCA9IHRoaXMud2F0Y2hlck1hcC5nZXQoaGFuZGxlcik7XG5cdFx0aWYgKHdyYXBwZWQpIHtcblx0XHRcdHRoaXMuc3RvcmUudW53YXRjaCh3cmFwcGVkKTtcblx0XHRcdHRoaXMud2F0Y2hlck1hcC5kZWxldGUoaGFuZGxlcik7XG5cdFx0fVxuXHRcdHJldHVybiB0aGlzO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJldHVybnMgYSB2YWxpZGF0b3IgZnVuY3Rpb24gdGhhdCBlaXRoZXIgaW52b2tlcyB0aGUgY3VzdG9tIHZhbGlkYXRvciBvciB0aGUgZGVmYXVsdFxuXHQgKiB2YWxpZGF0b3IuXG5cdCAqXG5cdCAqIEB0eXBlIHtGdW5jdGlvbn1cblx0ICovXG5cdGdldCB2YWxpZGF0ZSgpIHtcblx0XHRyZXR1cm4gYXJncyA9PiAodGhpcy52YWxpZGF0b3IgfHwgdmFsaWRhdGUpKHtcblx0XHRcdHNjaGVtYXM6IHRoaXMuc2NoZW1hID8gWyB0aGlzLnNjaGVtYSBdIDogW10sXG5cdFx0XHQuLi5hcmdzXG5cdFx0fSk7XG5cdH1cblxuXHRzZXQgdmFsaWRhdGUoZm4pIHtcblx0XHRpZiAoIWZuIHx8IHR5cGVvZiBmbiAhPT0gJ2Z1bmN0aW9uJykge1xuXHRcdFx0dGhyb3cgbmV3IFR5cGVFcnJvcignRXhwZWN0ZWQgdmFsaWRhdG9yIHRvIGJlIGEgZnVuY3Rpb24nKTtcblx0XHR9XG5cdFx0dGhpcy52YWxpZGF0b3IgPSBmbjtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZWdpc3RlcnMgYSB3YXRjaCBoYW5kbGVyLlxuXHQgKlxuXHQgKiBAcGFyYW0ge0FycmF5LjxTdHJpbmc+fSBbZmlsdGVyXSAtIEEgcHJvcGVydHkgbmFtZSBvciBhcnJheSBvZiBuZXN0ZWQgcHJvcGVydGllcyB0byB3YXRjaC5cblx0ICogQHBhcmFtIHtGdW5jdGlvbn0gaGFuZGxlciAtIEEgY2FsbGJhY2sgdG8gZmlyZSB3aGVuIGEgY2hhbmdlIG9jY3Vycy5cblx0ICogQHJldHVybnMge0xheWVyfVxuXHQgKiBAYWNjZXNzIHB1YmxpY1xuXHQgKi9cblx0d2F0Y2goZmlsdGVyLCBoYW5kbGVyKSB7XG5cdFx0Y29uc3Qgd3JhcHBlZCA9IG9iaiA9PiBoYW5kbGVyKG9iaiwgdGhpcyk7XG5cdFx0dGhpcy53YXRjaGVyTWFwLnNldChoYW5kbGVyLCB3cmFwcGVkKTtcblx0XHR0aGlzLnN0b3JlLndhdGNoKGZpbHRlciwgd3JhcHBlZCk7XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cbn1cbiJdLCJmaWxlIjoibGF5ZXIuanMifQ==
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxheWVyLmpzIl0sIm5hbWVzIjpbImxvZyIsImhpZ2hsaWdodCIsInNub29wbG9nZyIsInN0eWxlcyIsIkxheWVyIiwiY29uc3RydWN0b3IiLCJvcHRzIiwiTWFwIiwiYWxsb3dOdWxscyIsImlkIiwibmFtZXNwYWNlIiwib3JkZXIiLCJyZWFkb25seSIsInN0YXRpYyIsInZhbGlkYXRlIiwidW5kZWZpbmVkIiwiVHlwZUVycm9yIiwiZGVmYXVsdHMiLCJlbnYiLCJzY2hlbWEiLCJsb2FkU2NoZW1hIiwic3RvcmUiLCJTdG9yZSIsImRhdGEiLCJKU09OU3RvcmUiLCJtZXJnZSIsImZpbGUiLCJsb2FkIiwiZ3JhY2VmdWwiLCJkZWxldGUiLCJrZXkiLCJFcnJvciIsIlN0cmluZyIsImxlbmd0aCIsImFjdGlvbiIsInJlc29sdmVLZXkiLCJrZXlzIiwiZ2V0IiwibnNLZXkiLCJ2YWx1ZSIsImhhcyIsImV4aXN0cyIsImZzIiwiZXhpc3RzU3luYyIsIm1lc3NhZ2UiLCJleHQiLCJwYXRoIiwiZXh0bmFtZSIsInJlYWRKc29uU3luYyIsImUiLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsImN0eCIsIkpvaSIsImlzU2NoZW1hIiwidHlwZSIsImZvdW5kIiwiaXRlbSIsIiRfdGVybXMiLCJvYmplY3QiLCJPYmplY3QiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJjb21waWxlIiwid2FsayIsIl92YWxpZHMiLCJhZGQiLCJWYWx1ZXMiLCJmaW5kIiwicyIsInNsaWNlIiwic2F2ZSIsInNldCIsInRvU3RyaW5nIiwiYXJncyIsInVubG9hZCIsInVud2F0Y2giLCJoYW5kbGVyIiwid3JhcHBlZCIsIndhdGNoZXJNYXAiLCJ2YWxpZGF0b3IiLCJzY2hlbWFzIiwiZm4iLCJ3YXRjaCIsImZpbHRlciIsIm9iaiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOzs7Ozs7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LElBQUksQ0FBQyxLQUFLTSxTQUFMLElBQWtCbkUsY0FBbkI7QUFDZG9FLE1BQUFBLE9BQU8sRUFBRSxLQUFLL0QsTUFBTCxHQUFjLENBQUUsS0FBS0EsTUFBUCxDQUFkLEdBQWdDO0FBRDNCLE9BRVh3RCxJQUZXLEVBQWY7QUFJQTs7QUFFVyxNQUFSN0QsUUFBUSxDQUFDcUUsRUFBRCxFQUFLO0FBQ2hCLFFBQUksQ0FBQ0EsRUFBRCxJQUFPLE9BQU9BLEVBQVAsS0FBYyxVQUF6QixFQUFxQztBQUNwQyxZQUFNLElBQUluRSxTQUFKLENBQWMscUNBQWQsQ0FBTjtBQUNBOztBQUNELFNBQUtpRSxTQUFMLEdBQWlCRSxFQUFqQjtBQUNBO0FBRUQ7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQ0NDLEVBQUFBLEtBQUssQ0FBQ0MsTUFBRCxFQUFTUCxPQUFULEVBQWtCO0FBQ3RCLFVBQU1DLE9BQU8sR0FBR08sR0FBRyxJQUFJUixPQUFPLENBQUNRLEdBQUQsRUFBTSxJQUFOLENBQTlCOztBQUNBLFNBQUtOLFVBQUwsQ0FBZ0JQLEdBQWhCLENBQW9CSyxPQUFwQixFQUE2QkMsT0FBN0I7QUFDQSxTQUFLMUQsS0FBTCxDQUFXK0QsS0FBWCxDQUFpQkMsTUFBakIsRUFBeUJOLE9BQXpCO0FBQ0EsV0FBTyxJQUFQO0FBQ0E7O0FBdmdCeUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZnMgZnJvbSAnZnMtZXh0cmEnO1xuaW1wb3J0IGltcG9ydEZyZXNoIGZyb20gJ2ltcG9ydC1mcmVzaCc7XG5pbXBvcnQgSm9pIGZyb20gJ2pvaSc7XG5pbXBvcnQgSlNPTlN0b3JlIGZyb20gJy4vc3RvcmVzL2pzb24tc3RvcmUnO1xuaW1wb3J0IHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgc25vb3Bsb2dnIGZyb20gJ3Nub29wbG9nZyc7XG5pbXBvcnQgU3RvcmUgZnJvbSAnLi9zdG9yZSc7XG5pbXBvcnQgVmFsdWVzIGZyb20gJ2pvaS9saWIvdmFsdWVzJztcbmltcG9ydCB7IGdldFNjaGVtYUluaXRpYWxWYWx1ZXMsIHZhbGlkYXRlIH0gZnJvbSAnLi91dGlsJztcblxuY29uc3QgeyBsb2cgfSA9IHNub29wbG9nZygnY29uZmlnLWtpdCcpKCdqcy1zdG9yZScpO1xuY29uc3QgeyBoaWdobGlnaHQgfSA9IHNub29wbG9nZy5zdHlsZXM7XG5cbi8qKlxuICogQ29udGFpbnMgaW5mb3JtYXRpb24gYWJvdXQgYSBsYXllci4gVGhlIGxheWVyJ3MgZGF0YSBpcyBsb2NhdGVkIGluIHRoZSBsYXllcidzIHN0b3JlLlxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBMYXllciB7XG5cdC8qKlxuXHQgKiBGb3JjZXMgYWxsIG5vZGVzIG9mIGEgc2NoZW1hIHRvIGFsbG93IG51bGxzLlxuXHQgKiBAdHlwZSB7Qm9vbGVhbn1cblx0ICovXG5cdGFsbG93TnVsbHMgPSBmYWxzZTtcblxuXHQvKipcblx0ICogVGhlIHBhdGggdG8gdGhlIGZpbGUgdG8gd3JpdGUgdGhlIGNvbmZpZyBmaWxlIHRvLiBUaGlzIHZhbHVlIGNhbiBiZSBvdmVyd3JpdHRlbiB3aXRoIGEgZmlsZVxuXHQgKiBwYXRoIHNwZWNpZmllZCBwYXNzZWQgaW4gd2hlbiBzYXZpbmcuXG5cdCAqIEBwYXJhbSB7U3RyaW5nfVxuXHQgKi9cblx0ZmlsZSA9IG51bGw7XG5cblx0LyoqXG5cdCAqIFRoZSBsYXllciBpZGVudGlmaWVyLlxuXHQgKiBAdHlwZSB7U3RyaW5nfFN5bWJvbH1cblx0ICovXG5cdGlkID0gbnVsbDtcblxuXHQvKipcblx0ICogQW4gb3B0aW9uYWwgbmFtZSBvZiB0aGUgc2NvcGUgZW5jb21wYXNzaW5nIHRoaXMgbGF5ZXIncyBkYXRhIGFuZCBzY2hlbWEuXG5cdCAqIEB0eXBlIHtTdHJpbmd9XG5cdCAqL1xuXHRuYW1lc3BhY2UgPSBudWxsO1xuXG5cdC8qKlxuXHQgKiBUaGUgbGF5ZXIgcHJlY2VkZW5jZSBpbiB0aGUgbGF5ZXIgbGlzdC5cblx0ICogQHR5cGUge051bWJlcn1cblx0ICovXG5cdG9yZGVyID0gMDtcblxuXHQvKipcblx0ICogSW5kaWNhdGVzIGlmIHRoZSB2YWx1ZXMgaW4gdGhlIHN0b3JlIGNhbiBiZSBtb2RpZmllZC5cblx0ICogQHR5cGUge0Jvb2xlYW59XG5cdCAqL1xuXHRyZWFkb25seSA9IGZhbHNlO1xuXG5cdC8qKlxuXHQgKiBUaGUgSm9pIHNjaGVtYS5cblx0ICogQHR5cGUge09iamVjdH1cblx0ICovXG5cdHNjaGVtYSA9IG51bGw7XG5cblx0LyoqXG5cdCAqIEluZGljYXRlcyBpZiB0aGlzIGxheWVyIGNhbiBiZSB1bmxvYWRlZC5cblx0ICogQHR5cGUge0Jvb2xlYW59XG5cdCAqL1xuXHRzdGF0aWMgPSBmYWxzZTtcblxuXHQvKipcblx0ICogQSByZWZlcmVuY2UgdG8gdGhlIGxheWVyJ3MgZGF0YSBzdG9yZSBpbnN0YW5jZS5cblx0ICogQHR5cGUge1N0b3JlfVxuXHQgKi9cblx0c3RvcmUgPSBudWxsO1xuXG5cdC8qKlxuXHQgKiBBIGN1c3RvbSB2YWxpZGF0aW9uIGNhbGxiYWNrLiBJZiBub3Qgc2V0LCBkZWZhdWx0cyB0byB2YWxpZGF0aW5nIGFnYWluc3QgdGhpcyBsYXllcidzXG5cdCAqIHNjaGVtYS5cblx0ICogQHR5cGUge0Z1bmN0aW9ufVxuXHQgKi9cblx0dmFsaWRhdG9yID0gbnVsbDtcblxuXHQvKipcblx0ICogQSBsb29rdXAgdGFibGUgb2Ygb3JpZ2luYWwgd2F0Y2ggaGFuZGxlcnMgdG8gdGhlaXIgd3JhcHBlZCBjb3VudGVycGFydHMgc28gdGhhdCBpdCBjYW5cblx0ICogYWRkIGEgcmVmZXJlbmNlIHRvIHRoaXMgbGF5ZXIgdG8gdGhlIGV2ZW50IGhhbmRsZXIuXG5cdCAqIEB0eXBlIHtNYXB9XG5cdCAqL1xuXHR3YXRjaGVyTWFwID0gbmV3IE1hcCgpO1xuXG5cdC8qKlxuXHQgKiBJbml0aWFsaXplcyB0aGUgbGF5ZXIsIGxvYWRzIGEgZmlsZSwgYW5kIGluaXRpYWxpemVzIHRoZSBzY2hlbWEgb2JqZWN0LlxuXHQgKlxuXHQgKiBAcGFyYW0ge09iamVjdH0gW29wdHNdIC0gVmFyaW91cyBvcHRpb25zLlxuXHQgKiBAcGFyYW0ge0Jvb2xlYW59IFtvcHRzLmFsbG93TnVsbHNdIC0gRm9yY2VzIGFsbCBub2RlcyBvZiBhIHNjaGVtYSB0byBhbGxvdyBudWxscy5cblx0ICogQHBhcmFtIHtPYmplY3R9IFtvcHRzLmRhdGFdIC0gRGF0YSB0byBpbml0aWFsaXplIHRoZSBiYXNlIGNvbmZpZyBsYXllciB3aXRoLlxuXHQgKiBAcGFyYW0ge1N0cmluZ30gW29wdHMuZmlsZV0gLSBUaGUgZmlsZSBiYWNraW5nIHRoaXMgbGF5ZXIncyBzdG9yZS5cblx0ICogQHBhcmFtIHtCb29sZWFufSBbb3B0cy5ncmFjZWZ1bD10cnVlXSAtIFRyeSB0byBsb2FkIHRoZSBmaWxlLCBidXQgaWYgaXQgZG9lc24ndCBleGlzdCwgdGhlblxuXHQgKiBncmFjZWZ1bGx5IGhhbmRsZSB0aGUgZXJyb3IuXG5cdCAqIEBwYXJhbSB7U3RyaW5nfFN5bWJvbH0gW29wdHMuaWRdIC0gVGhlIGxheWVyIGlkLlxuXHQgKiBAcGFyYW0ge1N0cmluZ30gW29wdHMubmFtZXNwYWNlXSAtIFRoZSBuYW1lIG9mIHRoZSBzY29wZSBlbmNvbXBhc3NpbmcgdGhpcyBsYXllcidzIGRhdGEgYW5kXG5cdCAqIHNjaGVtYSBpZiBub3QgYWxyZWFkeSBkZWZpbmVkLlxuXHQgKiBAcGFyYW0ge051bWJlcn0gW29wdHMub3JkZXI9MF0gLSBUaGUgbGF5ZXIgcHJlY2VkZW5jZS5cblx0ICogQHBhcmFtIHtCb29sZWFufSBbb3B0cy5yZWFkb25seV0gLSBJbmRpY2F0ZXMgaWYgdGhpcyBsYXllcidzIGRhdGEgY2FuIGJlIGNoYW5nZWQuXG5cdCAqIEBwYXJhbSB7T2JqZWN0fSBbb3B0cy5zY2hlbWFdIC0gQSBKb2kgc2NoZW1hIG9yIG9iamVjdCB0byBjb21waWxlIGludG8gYSBKb2kgc2NoZW1hLlxuXHQgKiBAcGFyYW0ge0Jvb2xlYW59IFtvcHRzLnN0YXRpY10gLSBJbmRpY2F0ZXMgaWYgdGhpcyBsYXllciBjYW4gYmUgdW5sb2FkZWQuXG5cdCAqIEBwYXJhbSB7U3RvcmV9IFtvcHRzLnN0b3JlXSAtIFRoZSBkYXRhIHN0b3JlLiBEZWZhdWx0cyB0byBhIGBKU09OU3RvcmVgIGluc3RhbmNlLlxuXHQgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbb3B0cy52YWxpZGF0ZV0gLSBBIGZ1bmN0aW9uIHRvIGNhbGwgYW5kIHZhbGlkYXRlIGNoYW5nZXMgYWdhaW5zdCBhIHNjaGVtYS5cblx0ICogQGFjY2VzcyBwdWJsaWNcblx0ICovXG5cdGNvbnN0cnVjdG9yKG9wdHMgPSB7fSkge1xuXHRcdHRoaXMuYWxsb3dOdWxscyA9IG9wdHMuYWxsb3dOdWxscztcblx0XHR0aGlzLmlkICAgICAgICAgPSBvcHRzLmlkIHx8IG51bGw7XG5cdFx0dGhpcy5uYW1lc3BhY2UgID0gb3B0cy5uYW1lc3BhY2U7XG5cdFx0dGhpcy5vcmRlciAgICAgID0gb3B0cy5vcmRlciB8fCAwO1xuXHRcdHRoaXMucmVhZG9ubHkgICA9ICEhb3B0cy5yZWFkb25seTtcblx0XHR0aGlzLnN0YXRpYyAgICAgPSAhIW9wdHMuc3RhdGljO1xuXG5cdFx0aWYgKG9wdHMudmFsaWRhdGUgIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0aWYgKHR5cGVvZiBvcHRzLnZhbGlkYXRlICE9PSAnZnVuY3Rpb24nKSB7XG5cdFx0XHRcdHRocm93IG5ldyBUeXBlRXJyb3IoJ0V4cGVjdGVkIHZhbGlkYXRlIGNhbGxiYWNrIHRvIGJlIGEgZnVuY3Rpb24nKTtcblx0XHRcdH1cblx0XHRcdHRoaXMudmFsaWRhdGUgPSBvcHRzLnZhbGlkYXRlO1xuXHRcdH1cblxuXHRcdGxldCBkZWZhdWx0cywgZW52O1xuXG5cdFx0aWYgKG9wdHMuc2NoZW1hKSB7XG5cdFx0XHR0aGlzLmxvYWRTY2hlbWEob3B0cy5zY2hlbWEpO1xuXHRcdFx0KHsgZGVmYXVsdHMsIGVudiB9ID0gZ2V0U2NoZW1hSW5pdGlhbFZhbHVlcyh0aGlzLnNjaGVtYSkpO1xuXHRcdH1cblxuXHRcdGlmIChvcHRzLnN0b3JlIGluc3RhbmNlb2YgU3RvcmUpIHtcblx0XHRcdHRoaXMuc3RvcmUgPSBvcHRzLnN0b3JlO1xuXHRcdFx0aWYgKHRoaXMuc2NoZW1hKSB7XG5cdFx0XHRcdHRoaXMuc3RvcmUuc2NoZW1hID0gdGhpcy5zY2hlbWE7XG5cdFx0XHR9XG5cdFx0fSBlbHNlIGlmICh0eXBlb2Ygb3B0cy5zdG9yZSA9PT0gJ2Z1bmN0aW9uJykge1xuXHRcdFx0dGhpcy5zdG9yZSA9IG5ldyBvcHRzLnN0b3JlKHsgZGF0YTogZGVmYXVsdHMsIHNjaGVtYTogdGhpcy5zY2hlbWEgfSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRoaXMuc3RvcmUgPSBuZXcgSlNPTlN0b3JlKG9wdHMuc3RvcmUgfHwgeyBkYXRhOiBkZWZhdWx0cywgc2NoZW1hOiB0aGlzLnNjaGVtYSB9KTtcblx0XHR9XG5cblx0XHRsZXQgeyBkYXRhIH0gPSBvcHRzO1xuXHRcdGlmIChkYXRhKSB7XG5cdFx0XHRpZiAodHlwZW9mIGRhdGEgIT09ICdvYmplY3QnKSB7XG5cdFx0XHRcdHRocm93IG5ldyBUeXBlRXJyb3IoJ0V4cGVjdGVkIGxheWVyIGRhdGEgdG8gYmUgYW4gb2JqZWN0Jyk7XG5cdFx0XHR9XG5cblx0XHRcdGlmIChkYXRhICYmIHR5cGVvZiBkYXRhID09PSAnb2JqZWN0Jykge1xuXHRcdFx0XHR0aGlzLm1lcmdlKHRoaXMubmFtZXNwYWNlID8geyBbdGhpcy5uYW1lc3BhY2VdOiBkYXRhIH0gOiBkYXRhKTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRpZiAob3B0cy5maWxlKSB7XG5cdFx0XHR0aGlzLmxvYWQob3B0cy5maWxlLCBvcHRzLmdyYWNlZnVsICE9PSBmYWxzZSk7XG5cdFx0fVxuXG5cdFx0aWYgKGVudikge1xuXHRcdFx0Ly8gd2UgY2FuIG1lcmdlIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSB2YWx1ZXMgZGlyZWN0bHkgaW50byB0aGUgc3RvcmUgc2luY2Ugd2UndmVcblx0XHRcdC8vIGFscmVhZHkgZG9uZSB0aGUgdmFsaWRhdGlvbiBpbiBgZ2V0U2NoZW1hSW5pdGlhbFZhbHVlcygpYFxuXHRcdFx0dGhpcy5zdG9yZS5tZXJnZShlbnYpO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBTZXRzIGEgdmFsdWUgZm9yIHRoZSBzcGVjaWZpZWQga2V5LlxuXHQgKlxuXHQgKiBAcGFyYW0ge0FycmF5LjxTdHJpbmc+fSBrZXkgLSBUaGUga2V5IHRvIHNldC5cblx0ICogQHJldHVybnMge0Jvb2xlYW59XG5cdCAqL1xuXHRkZWxldGUoa2V5KSB7XG5cdFx0aWYgKHRoaXMucmVhZG9ubHkpIHtcblx0XHRcdHRocm93IG5ldyBFcnJvcihgTGF5ZXIgXCIke1N0cmluZyh0aGlzLmlkKX1cIiBpcyByZWFkb25seWApO1xuXHRcdH1cblxuXHRcdGlmICgha2V5IHx8ICFrZXkubGVuZ3RoKSB7XG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoJ01pc3NpbmcgcmVxdWlyZWQgY29uZmlnIGtleScpO1xuXHRcdH1cblxuXHRcdHRoaXMudmFsaWRhdGUoeyBhY3Rpb246ICdkZWxldGUnLCBrZXkgfSk7XG5cdFx0aWYgKGtleSA9IHRoaXMucmVzb2x2ZUtleShrZXkpKSB7XG5cdFx0XHRjb25zdCBrZXlzID0gdGhpcy5uYW1lc3BhY2UgJiYgdGhpcy5zdG9yZS5rZXlzKCk7XG5cdFx0XHRpZiAoa2V5cyAmJiBrZXlzLmxlbmd0aCA9PT0gMSAmJiBrZXlzWzBdID09PSB0aGlzLm5hbWVzcGFjZSkge1xuXHRcdFx0XHQvLyBkYXRhIGlzIG5hbWVzcGFjZWQsIHNvIHdlIG5lZWQgdG8gYWRkIHRoZSBuYW1lc3BhY2UgYmFja1xuXHRcdFx0XHRyZXR1cm4gdGhpcy5zdG9yZS5kZWxldGUoWyB0aGlzLm5hbWVzcGFjZSwgLi4ua2V5IF0pO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0cmV0dXJuIHRoaXMuc3RvcmUuZGVsZXRlKGtleSk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJldHJpZXZlcyBhIHZhbHVlIGZvciB0aGUgc3BlY2lmaWVkIGtleS5cblx0ICpcblx0ICogQHBhcmFtIHtBcnJheS48U3RyaW5nPn0gW2tleV0gLSBUaGUga2V5IHRvIGdldC4gV2hlbiBgdW5kZWZpbmVkYCwgdGhlIGVudGlyZSBjb25maWcgaXNcblx0ICogcmV0dXJuZWQuXG5cdCAqIEByZXR1cm5zIHsqfVxuXHQgKiBAYWNjZXNzIHB1YmxpY1xuXHQgKi9cblx0Z2V0KGtleSkge1xuXHRcdGxldCBuc0tleSA9IHRoaXMucmVzb2x2ZUtleShrZXkpO1xuXHRcdGlmIChuc0tleSA9PT0gbnVsbCkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdGNvbnN0IGtleXMgPSB0aGlzLm5hbWVzcGFjZSAmJiB0aGlzLnN0b3JlLmtleXMoKTtcblx0XHRsZXQgdmFsdWU7XG5cdFx0aWYgKGtleXMgJiYga2V5cy5sZW5ndGggPT09IDEgJiYga2V5c1swXSA9PT0gdGhpcy5uYW1lc3BhY2UpIHtcblx0XHRcdC8vIGRhdGEgaXMgbmFtZXNwYWNlZCwgc28gd2UgbmVlZCB0byBhZGQgdGhlIG5hbWVzcGFjZSBiYWNrXG5cdFx0XHR2YWx1ZSA9IHRoaXMuc3RvcmUuZ2V0KFsgdGhpcy5uYW1lc3BhY2UsIC4uLm5zS2V5IF0pO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR2YWx1ZSA9IHRoaXMuc3RvcmUuZ2V0KG5zS2V5KTtcblx0XHR9XG5cblx0XHRpZiAoIW5zS2V5Py5sZW5ndGggJiYgdmFsdWUgPT09IHVuZGVmaW5lZCkge1xuXHRcdFx0Ly8gc2V0IHRvIGVtcHR5IG9iamVjdCBpZiB2YWx1ZVxuXHRcdFx0dmFsdWUgPSB7fTtcblx0XHR9XG5cblx0XHRpZiAoa2V5Lmxlbmd0aCAmJiB0aGlzLm5hbWVzcGFjZSAmJiBrZXlbMF0gPT09IHRoaXMubmFtZXNwYWNlKSB7XG5cdFx0XHRyZXR1cm4gdmFsdWU7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHRoaXMubmFtZXNwYWNlID8geyBbdGhpcy5uYW1lc3BhY2VdOiB2YWx1ZSB9IDogdmFsdWU7XG5cdH1cblxuXHQvKipcblx0ICogRGV0ZXJtaW5lcyBpZiBhIGtleSBpcyBzZXQuXG5cdCAqXG5cdCAqIEBwYXJhbSB7QXJyYXkuPFN0cmluZz59IFtrZXldIC0gVGhlIGtleSB0byBjaGVjay5cblx0ICogQHJldHVybnMge0Jvb2xlYW59XG5cdCAqIEBhY2Nlc3MgcHVibGljXG5cdCAqL1xuXHRoYXMoa2V5KSB7XG5cdFx0Y29uc3QgbnNLZXkgPSB0aGlzLnJlc29sdmVLZXkoa2V5KTtcblx0XHRpZiAobnNLZXkgPT09IG51bGwpIHtcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9XG5cblx0XHRjb25zdCBrZXlzID0gdGhpcy5uYW1lc3BhY2UgJiYgdGhpcy5zdG9yZS5rZXlzKCk7XG5cdFx0aWYgKGtleXMgJiYga2V5cy5sZW5ndGggPT09IDEgJiYga2V5c1swXSA9PT0gdGhpcy5uYW1lc3BhY2UpIHtcblx0XHRcdC8vIGRhdGEgaXMgbmFtZXNwYWNlZCwgc28gd2UgbmVlZCB0byBhZGQgdGhlIG5hbWVzcGFjZSBiYWNrXG5cdFx0XHRyZXR1cm4gdGhpcy5zdG9yZS5oYXMoWyB0aGlzLm5hbWVzcGFjZSwgLi4ubnNLZXkgXSk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHRoaXMuc3RvcmUuaGFzKG5zS2V5KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBMb2FkcyBhIGNvbmZpZyBmaWxlLlxuXHQgKlxuXHQgKiBAcGFyYW0ge1N0cmluZ30gZmlsZSAtIFRoZSBwYXRoIHRvIHRoZSBjb25maWcgZmlsZSB0byBsb2FkLlxuXHQgKiBAcGFyYW0ge0Jvb2xlYW59IFtncmFjZWZ1bD1mYWxzZV0gLSBXaGVuIGB0cnVlYCwgZG9lc24ndCBlcnJvciBpZiB0aGUgY29uZmlnIGZpbGUgZG9lcyBub3Rcblx0ICogZXhpc3QuXG5cdCAqIEByZXR1cm5zIHtMYXllcn1cblx0ICogQGFjY2VzcyBwdWJsaWNcblx0ICovXG5cdGxvYWQoZmlsZSwgZ3JhY2VmdWwpIHtcblx0XHRpZiAoIWZpbGUgfHwgdHlwZW9mIGZpbGUgIT09ICdzdHJpbmcnKSB7XG5cdFx0XHR0aHJvdyBuZXcgVHlwZUVycm9yKCdFeHBlY3RlZCBjb25maWcgZmlsZSBwYXRoIHRvIGJlIGEgc3RyaW5nJyk7XG5cdFx0fVxuXG5cdFx0Y29uc3QgZXhpc3RzID0gZnMuZXhpc3RzU3luYyhmaWxlKTtcblx0XHR0aGlzLmZpbGUgPSBmaWxlO1xuXG5cdFx0aWYgKGdyYWNlZnVsICYmICFleGlzdHMpIHtcblx0XHRcdGxvZyhgJHtTdHJpbmcodGhpcy5pZCl9IEdyYWNlZnVsbHkgaGFuZGxpbmcgbm9uLWV4aXN0ZW50IGNvbmZpZyBmaWxlOiAke2hpZ2hsaWdodChmaWxlKX1gKTtcblx0XHR9XG5cblx0XHRpZiAoIWdyYWNlZnVsIHx8IGV4aXN0cykge1xuXHRcdFx0dGhpcy5zdG9yZS5sb2FkKGZpbGUpO1xuXHRcdFx0Y29uc3QgZGF0YSA9IHRoaXMuc3RvcmUuZ2V0KCk7XG5cdFx0XHR0aGlzLnZhbGlkYXRlKHtcblx0XHRcdFx0YWN0aW9uOiAnbG9hZCcsXG5cdFx0XHRcdG1lc3NhZ2U6ICdGYWlsZWQgdG8gbG9hZCBjb25maWcgZmlsZScsXG5cdFx0XHRcdHZhbHVlOiB0aGlzLm5hbWVzcGFjZSA/IHsgW3RoaXMubmFtZXNwYWNlXTogZGF0YSB9IDogZGF0YVxuXHRcdFx0fSk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cblxuXHQvKipcblx0ICogTG9hZHMgYSBzY2hlbWEgZnJvbSBhIGZpbGUgb3Igb2JqZWN0LlxuXHQgKlxuXHQgKiBAcGFyYW0ge1N0cmluZ3xPYmplY3R9IHNjaGVtYSAtIFRoZSBwYXRoIHRvIHRoZSBjb25maWcgZmlsZSB0byBsb2FkIG9yIEpvaSBzY2hlbWEuXG5cdCAqIEByZXR1cm5zIHtMYXllcn1cblx0ICogQGFjY2VzcyBwdWJsaWNcblx0ICovXG5cdGxvYWRTY2hlbWEoc2NoZW1hKSB7XG5cdFx0aWYgKCFzY2hlbWEpIHtcblx0XHRcdHRocm93IG5ldyBUeXBlRXJyb3IoJ0V4cGVjdGVkIHNjaGVtYSB0byBiZSBhbiBvYmplY3Qgb3IgZmlsZScpO1xuXHRcdH1cblxuXHRcdGlmICh0eXBlb2Ygc2NoZW1hID09PSAnc3RyaW5nJykge1xuXHRcdFx0aWYgKCFmcy5leGlzdHNTeW5jKHNjaGVtYSkpIHtcblx0XHRcdFx0dGhyb3cgbmV3IEVycm9yKGBGaWxlIG5vdCBmb3VuZDogJHtzY2hlbWF9YCk7XG5cdFx0XHR9XG5cblx0XHRcdGNvbnN0IGV4dCA9IHBhdGguZXh0bmFtZShzY2hlbWEpO1xuXHRcdFx0aWYgKGV4dCAhPT0gJy5qcycgJiYgZXh0ICE9PSAnLmpzb24nKSB7XG5cdFx0XHRcdHRocm93IG5ldyBFcnJvcihgVW5zdXBwb3J0ZWQgc2NoZW1hIGZpbGUgdHlwZTogJHtleHR9YCk7XG5cdFx0XHR9XG5cblx0XHRcdGxvZyhgJHtTdHJpbmcodGhpcy5pZCl9IExvYWRpbmcgJHtoaWdobGlnaHQoc2NoZW1hKX1gKTtcblx0XHRcdGlmIChleHQgPT09ICcuanNvbicpIHtcblx0XHRcdFx0dHJ5IHtcblx0XHRcdFx0XHRzY2hlbWEgPSBmcy5yZWFkSnNvblN5bmMoc2NoZW1hKTtcblx0XHRcdFx0fSBjYXRjaCAoZSkge1xuXHRcdFx0XHRcdHRocm93IG5ldyBFcnJvcihgRmFpbGVkIHRvIHBhcnNlIHNjaGVtYSBqc29uIGZpbGU6ICR7ZS5tZXNzYWdlfWApO1xuXHRcdFx0XHR9XG5cdFx0XHR9IGVsc2UgaWYgKGV4dCA9PT0gJy5qcycpIHtcblx0XHRcdFx0dHJ5IHtcblx0XHRcdFx0XHRzY2hlbWEgPSBpbXBvcnRGcmVzaChzY2hlbWEpO1xuXHRcdFx0XHR9IGNhdGNoIChlKSB7XG5cdFx0XHRcdFx0dGhyb3cgbmV3IEVycm9yKGBGYWlsZWQgdG8gcGFyc2Ugc2NoZW1hIGpzIGZpbGU6ICR7ZS5tZXNzYWdlfWApO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Ly8gY2hlY2sgaWYgd2UgaGF2ZSBhIGJhYmVsIHRyYW5zcGlsZWQgZmlsZVxuXHRcdFx0XHRpZiAoc2NoZW1hICYmIHR5cGVvZiBzY2hlbWEgPT09ICdvYmplY3QnICYmIHNjaGVtYS5fX2VzTW9kdWxlICYmIHNjaGVtYS5kZWZhdWx0KSB7XG5cdFx0XHRcdFx0c2NoZW1hID0gc2NoZW1hLmRlZmF1bHQ7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRpZiAodHlwZW9mIHNjaGVtYSA9PT0gJ2Z1bmN0aW9uJykge1xuXHRcdFx0XHRcdHNjaGVtYSA9IHNjaGVtYSh7IGN0eDogdGhpcywgSm9pIH0pO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0aWYgKCFzY2hlbWEgfHwgdHlwZW9mIHNjaGVtYSAhPT0gJ29iamVjdCcpIHtcblx0XHRcdHRocm93IG5ldyBUeXBlRXJyb3IoJ0V4cGVjdGVkIHNjaGVtYSB0byBiZSBhbiBvYmplY3Qgb3IgZmlsZScpO1xuXHRcdH1cblxuXHRcdGlmIChKb2kuaXNTY2hlbWEoc2NoZW1hKSkge1xuXHRcdFx0aWYgKHNjaGVtYS50eXBlICE9PSAnb2JqZWN0Jykge1xuXHRcdFx0XHR0aHJvdyBuZXcgVHlwZUVycm9yKCdFeHBlY3RlZCBzY2hlbWEgcm9vdCB0byBiZSBhbiBvYmplY3QnKTtcblx0XHRcdH1cblxuXHRcdFx0aWYgKHRoaXMubmFtZXNwYWNlKSB7XG5cdFx0XHRcdGxldCBmb3VuZCA9IGZhbHNlO1xuXHRcdFx0XHRmb3IgKGNvbnN0IGl0ZW0gb2Ygc2NoZW1hLiRfdGVybXMua2V5cykge1xuXHRcdFx0XHRcdGlmIChpdGVtLmtleSA9PT0gdGhpcy5uYW1lc3BhY2UgJiYgaXRlbS5zY2hlbWEudHlwZSA9PT0gJ29iamVjdCcpIHtcblx0XHRcdFx0XHRcdGZvdW5kID0gdHJ1ZTtcblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0XHRpZiAoIWZvdW5kKSB7XG5cdFx0XHRcdFx0c2NoZW1hID0gSm9pLm9iamVjdCh7IFt0aGlzLm5hbWVzcGFjZV06IHNjaGVtYSB9KTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH0gZWxzZSB7XG5cdFx0XHRpZiAodGhpcy5uYW1lc3BhY2UgJiYgIU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzY2hlbWEsIHRoaXMubmFtZXNwYWNlKSkge1xuXHRcdFx0XHRzY2hlbWEgPSB7IFt0aGlzLm5hbWVzcGFjZV06IHNjaGVtYSB9O1xuXHRcdFx0fVxuXHRcdFx0bG9nKGAke1N0cmluZyh0aGlzLmlkKX0gQ29tcGlsaW5nIHNjaGVtYS4uLmApO1xuXHRcdFx0c2NoZW1hID0gSm9pLmNvbXBpbGUoc2NoZW1hKTtcblx0XHR9XG5cblx0XHRpZiAodGhpcy5hbGxvd051bGxzKSB7XG5cdFx0XHRsb2coYCR7U3RyaW5nKHRoaXMuaWQpfSBGb3JjaW5nIG51bGxzIG9uIHNjaGVtYWApO1xuXHRcdFx0KGZ1bmN0aW9uIHdhbGsoc2NoZW1hKSB7XG5cdFx0XHRcdGlmIChzY2hlbWEuX3ZhbGlkcykge1xuXHRcdFx0XHRcdHNjaGVtYS5fdmFsaWRzLmFkZChudWxsKTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRzY2hlbWEuX3ZhbGlkcyA9IG5ldyBWYWx1ZXMoWyBudWxsIF0pO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0aWYgKHNjaGVtYS50eXBlID09PSAnb2JqZWN0JyAmJiBzY2hlbWEuJF90ZXJtcy5rZXlzKSB7XG5cdFx0XHRcdFx0Zm9yIChjb25zdCBpdGVtIG9mIHNjaGVtYS4kX3Rlcm1zLmtleXMpIHtcblx0XHRcdFx0XHRcdHdhbGsoaXRlbS5zY2hlbWEpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fShzY2hlbWEpKTtcblx0XHR9XG5cblx0XHR0aGlzLnNjaGVtYSA9IHNjaGVtYTtcblxuXHRcdC8vIHdoZW4gbG9hZFNjaGVtYSgpIGlzIGNhbGxlZCBmcm9tIHRoZSBjb25zdHJ1Y3RvciwgYHRoaXMuc3RvcmVgIHdpbGwgbm90IGhhdmUgYmVlbiBzZXRcblx0XHQvLyB5ZXQsIHNvIHRoaXMgaXMgcmVhbGx5IGZvciB0aGUgcHVibGljIEFQSVxuXHRcdGlmICh0aGlzLnN0b3JlKSB7XG5cdFx0XHR0aGlzLnN0b3JlLnNjaGVtYSA9IHRoaXMubmFtZXNwYWNlICYmIHNjaGVtYS4kX3Rlcm1zLmtleXM/LmZpbmQocyA9PiBzLmtleSA9PT0gdGhpcy5uYW1lc3BhY2UpPy5zY2hlbWEgfHwgc2NoZW1hO1xuXHRcdH1cblxuXHRcdHJldHVybiB0aGlzO1xuXHR9XG5cblx0LyoqXG5cdCAqIERlZXBseSBtZXJnZXMgYW4gb2JqZWN0IGludG8gYSBsYXllcidzIHN0b3JlLlxuXHQgKlxuXHQgKiBAcGFyYW0ge09iamVjdH0gdmFsdWUgLSBUaGUgZGF0YSB0byBtZXJnZS5cblx0ICogQHJldHVybnMge0xheWVyfVxuXHQgKiBAYWNjZXNzIHB1YmxpY1xuXHQgKi9cblx0bWVyZ2UodmFsdWUpIHtcblx0XHRpZiAodGhpcy5yZWFkb25seSkge1xuXHRcdFx0dGhyb3cgbmV3IEVycm9yKGBMYXllciBcIiR7U3RyaW5nKHRoaXMuaWQpfVwiIGlzIHJlYWRvbmx5YCk7XG5cdFx0fVxuXHRcdHRoaXMudmFsaWRhdGUoeyBhY3Rpb246ICdtZXJnZScsIHZhbHVlIH0pO1xuXHRcdGlmICgoIXRoaXMubmFtZXNwYWNlIHx8ICh2YWx1ZSA9IHZhbHVlW3RoaXMubmFtZXNwYWNlXSkpICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcpIHtcblx0XHRcdHRoaXMuc3RvcmUubWVyZ2UodmFsdWUpO1xuXHRcdH1cblx0XHRyZXR1cm4gdGhpcztcblx0fVxuXG5cdC8qKlxuXHQgKiBDaGVja3MgaWYgdGhpcyBsYXllciBoYXMgYSBuYW1lc3BhY2VzIGFuZCBpZiB0aGUga2V5IGhhcyB0aGUgbmFtZXNwYWNlLCB0aGVuIHJldHVybnMgdGhlXG5cdCAqIHJlc29sdmVkIGtleS5cblx0ICpcblx0ICogQHBhcmFtIHtBcnJheS48U3RyaW5nPn0ga2V5IC0gVGhlIGtleSB0byByZXNvbHZlLlxuXHQgKiBAcmV0dXJucyB7QXJyYXkuPFN0cmluZz59XG5cdCAqIEBhY2Nlc3MgcHJpdmF0ZVxuXHQgKi9cblx0cmVzb2x2ZUtleShrZXkpIHtcblx0XHRpZiAoa2V5Lmxlbmd0aCAmJiB0aGlzLm5hbWVzcGFjZSkge1xuXHRcdFx0cmV0dXJuIGtleVswXSA9PT0gdGhpcy5uYW1lc3BhY2UgPyBrZXkuc2xpY2UoMSkgOiBudWxsO1xuXHRcdH1cblx0XHRyZXR1cm4ga2V5O1xuXHR9XG5cblx0LyoqXG5cdCAqIFNhdmVzIGEgc3BlY2lmaWMgbGF5ZXIncyBzdG9yZSB0byBkaXNrLlxuXHQgKlxuXHQgKiBAcGFyYW0ge1N0cmluZ30gW2ZpbGVdIC0gVGhlIGZpbGUgdG8gd3JpdGUgdGhlIGxheWVycyBzdG9yZSB0by5cblx0ICogQHJldHVybnMge0xheWVyfVxuXHQgKiBAYWNjZXNzIHB1YmxpY1xuXHQgKi9cblx0c2F2ZShmaWxlKSB7XG5cdFx0bG9nKGAke1N0cmluZyh0aGlzLmlkKX0gU2F2aW5nIHRvIGZpbGU6ICR7aGlnaGxpZ2h0KGZpbGUgfHwgdGhpcy5maWxlKX1gKTtcblx0XHR0aGlzLnN0b3JlLnNhdmUoZmlsZSB8fCB0aGlzLmZpbGUpO1xuXHRcdHJldHVybiB0aGlzO1xuXHR9XG5cblx0LyoqXG5cdCAqIFNldHMgYSB2YWx1ZSBmb3IgdGhlIHNwZWNpZmllZCBrZXkuXG5cdCAqXG5cdCAqIEBwYXJhbSB7QXJyYXkuPFN0cmluZz59IGtleSAtIFRoZSBrZXkgdG8gc2V0LlxuXHQgKiBAcGFyYW0geyp9IFt2YWx1ZV0gLSBUaGUgdmFsdWU7XG5cdCAqIEBwYXJhbSB7U3RyaW5nfSBbYWN0aW9uPVwic2V0XCJdIC0gQW4gYWN0aW9uIGhpbnQgZm9yIHZhbGlkYXRpb24uXG5cdCAqIEByZXR1cm5zIHtMYXllcn1cblx0ICovXG5cdHNldChrZXksIHZhbHVlLCBhY3Rpb24gPSAnc2V0Jykge1xuXHRcdGlmICh0aGlzLnJlYWRvbmx5KSB7XG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoYExheWVyIFwiJHtTdHJpbmcodGhpcy5pZCl9XCIgaXMgcmVhZG9ubHlgKTtcblx0XHR9XG5cblx0XHRpZiAoIWtleSB8fCAha2V5Lmxlbmd0aCkge1xuXHRcdFx0dGhyb3cgbmV3IEVycm9yKCdNaXNzaW5nIHJlcXVpcmVkIGNvbmZpZyBrZXknKTtcblx0XHR9XG5cblx0XHR0aGlzLnZhbGlkYXRlKHsgYWN0aW9uLCBrZXksIHZhbHVlIH0pO1xuXHRcdGlmIChrZXkgPSB0aGlzLnJlc29sdmVLZXkoa2V5KSkge1xuXHRcdFx0Y29uc3Qga2V5cyA9IHRoaXMubmFtZXNwYWNlICYmIHRoaXMuc3RvcmUua2V5cygpO1xuXHRcdFx0aWYgKGtleXMgJiYga2V5cy5sZW5ndGggPT09IDEgJiYga2V5c1swXSA9PT0gdGhpcy5uYW1lc3BhY2UpIHtcblx0XHRcdFx0Ly8gZGF0YSBpcyBuYW1lc3BhY2VkLCBzbyB3ZSBuZWVkIHRvIGFkZCB0aGUgbmFtZXNwYWNlIGJhY2tcblx0XHRcdFx0dGhpcy5zdG9yZS5zZXQoWyB0aGlzLm5hbWVzcGFjZSwgLi4ua2V5IF0sIHZhbHVlKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHRoaXMuc3RvcmUuc2V0KGtleSwgdmFsdWUpO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHJldHVybiB0aGlzO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJldHVybnMgYSB2YWx1ZSBvZiB0aGUgc3RvcmUgYXMgYSBzdHJpbmcuXG5cdCAqXG5cdCAqIEBwYXJhbSB7Kn0gW2FyZ3NdIC0gVmFyaW91cyBhcmd1bWVudHMgdG8gcGFzcyBpbnRvIHRoZSBzdG9yZSdzIGB0b1N0cmluZygpYC5cblx0ICogQHJldHVybnMge1N0cmluZ31cblx0ICogQGFjY2VzcyBwdWJsaWNcblx0ICovXG5cdHRvU3RyaW5nKC4uLmFyZ3MpIHtcblx0XHRyZXR1cm4gdGhpcy5zdG9yZT8udG9TdHJpbmcoLi4uYXJncykgfHwgJyc7XG5cdH1cblxuXHQvKipcblx0ICogQ2hlY2tzIGlmIHRoaXMgbGF5ZXIgY2FuIGJlIHVubG9hZGVkLlxuXHQgKlxuXHQgKiBAcmV0dXJucyB7TGF5ZXJ9XG5cdCAqIEBhY2Nlc3MgcHVibGljXG5cdCAqL1xuXHR1bmxvYWQoKSB7XG5cdFx0aWYgKHRoaXMuc3RhdGljKSB7XG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoJ0Nhbm5vdCB1bmxvYWQgc3RhdGljIGxheWVyJyk7XG5cdFx0fVxuXHRcdHJldHVybiB0aGlzO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJlbW92ZXMgYSB3YXRjaCBoYW5kbGVyLlxuXHQgKlxuXHQgKiBAcGFyYW0ge0Z1bmN0aW9ufSBoYW5kbGVyIC0gQSBjYWxsYmFjayB0byBmaXJlIHdoZW4gYSBjaGFuZ2Ugb2NjdXJzLlxuXHQgKiBAcmV0dXJucyB7TGF5ZXJ9XG5cdCAqIEBhY2Nlc3MgcHVibGljXG5cdCAqL1xuXHR1bndhdGNoKGhhbmRsZXIpIHtcblx0XHRjb25zdCB3cmFwcGVkID0gdGhpcy53YXRjaGVyTWFwLmdldChoYW5kbGVyKTtcblx0XHRpZiAod3JhcHBlZCkge1xuXHRcdFx0dGhpcy5zdG9yZS51bndhdGNoKHdyYXBwZWQpO1xuXHRcdFx0dGhpcy53YXRjaGVyTWFwLmRlbGV0ZShoYW5kbGVyKTtcblx0XHR9XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cblxuXHQvKipcblx0ICogUmV0dXJucyBhIHZhbGlkYXRvciBmdW5jdGlvbiB0aGF0IGVpdGhlciBpbnZva2VzIHRoZSBjdXN0b20gdmFsaWRhdG9yIG9yIHRoZSBkZWZhdWx0XG5cdCAqIHZhbGlkYXRvci5cblx0ICpcblx0ICogQHR5cGUge0Z1bmN0aW9ufVxuXHQgKi9cblx0Z2V0IHZhbGlkYXRlKCkge1xuXHRcdHJldHVybiBhcmdzID0+ICh0aGlzLnZhbGlkYXRvciB8fCB2YWxpZGF0ZSkoe1xuXHRcdFx0c2NoZW1hczogdGhpcy5zY2hlbWEgPyBbIHRoaXMuc2NoZW1hIF0gOiBbXSxcblx0XHRcdC4uLmFyZ3Ncblx0XHR9KTtcblx0fVxuXG5cdHNldCB2YWxpZGF0ZShmbikge1xuXHRcdGlmICghZm4gfHwgdHlwZW9mIGZuICE9PSAnZnVuY3Rpb24nKSB7XG5cdFx0XHR0aHJvdyBuZXcgVHlwZUVycm9yKCdFeHBlY3RlZCB2YWxpZGF0b3IgdG8gYmUgYSBmdW5jdGlvbicpO1xuXHRcdH1cblx0XHR0aGlzLnZhbGlkYXRvciA9IGZuO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJlZ2lzdGVycyBhIHdhdGNoIGhhbmRsZXIuXG5cdCAqXG5cdCAqIEBwYXJhbSB7QXJyYXkuPFN0cmluZz59IFtmaWx0ZXJdIC0gQSBwcm9wZXJ0eSBuYW1lIG9yIGFycmF5IG9mIG5lc3RlZCBwcm9wZXJ0aWVzIHRvIHdhdGNoLlxuXHQgKiBAcGFyYW0ge0Z1bmN0aW9ufSBoYW5kbGVyIC0gQSBjYWxsYmFjayB0byBmaXJlIHdoZW4gYSBjaGFuZ2Ugb2NjdXJzLlxuXHQgKiBAcmV0dXJucyB7TGF5ZXJ9XG5cdCAqIEBhY2Nlc3MgcHVibGljXG5cdCAqL1xuXHR3YXRjaChmaWx0ZXIsIGhhbmRsZXIpIHtcblx0XHRjb25zdCB3cmFwcGVkID0gb2JqID0+IGhhbmRsZXIob2JqLCB0aGlzKTtcblx0XHR0aGlzLndhdGNoZXJNYXAuc2V0KGhhbmRsZXIsIHdyYXBwZWQpO1xuXHRcdHRoaXMuc3RvcmUud2F0Y2goZmlsdGVyLCB3cmFwcGVkKTtcblx0XHRyZXR1cm4gdGhpcztcblx0fVxufVxuIl0sImZpbGUiOiJsYXllci5qcyJ9

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

}
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm5vZGUuanMiXSwibmFtZXMiOlsiTm9kZSIsImNvbnN0cnVjdG9yIiwidmFsdWUiLCJwYXJlbnQiLCJjbHMiLCJPYmplY3QiLCJnZXRQcm90b3R5cGVPZiIsImludGVybmFsIiwiaGFzaCIsImhhc2hlcyIsImxpc3RlbmVycyIsInBhcmVudHMiLCJTZXQiLCJwcmV2aW91cyIsInBhdXNlZCIsInBlbmRpbmciLCJzY2hlbWEiLCJub3RpZnkiLCJ0YXJnZXQiLCJsaXN0ZW5lciIsImZpbHRlciIsImZvdW5kIiwiZmlsdGVyT2JqZWN0Iiwibm9kZSIsImhhc1ByZXYiLCJoYXMiLCJjaGFuZ2VkIiwiZ2V0IiwiV2Vha01hcCIsInNldCIsIk1ldGEiLCJwYXVzZSIsInJlaGFzaCIsImlzQXJyYXkiLCJBcnJheSIsImtleXMiLCJSZWZsZWN0Iiwib3duS2V5cyIsImtleSIsInJlc3VtZSIsIk1hdGgiLCJtYXgiLCJ1bndhdGNoIiwiVHlwZUVycm9yIiwiZGVsZXRlIiwic2l6ZSIsIndhdGNoIiwiTWFwIiwiUHJveHkiLCJkZWxldGVQcm9wZXJ0eSIsInByb3AiLCJyZXN1bHQiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJhZGRpdGl2ZSIsImFyZ3MiLCJhcHBseSIsImxlbmd0aCIsInN0YXJ0IiwiZGVsZXRlQ291bnQiLCJpdGVtcyIsInVuZGVmaW5lZCIsImFyciIsInNwbGljZSIsIml0ZW0iLCJFcnJvciIsImRlc2MiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJEYXRlIiwicHJvY2VzcyIsImVudiIsIkpTT04iLCJhZGQiLCJvblNldCIsImRlZmluZVByb3BlcnR5IiwibWVyZ2UiLCJtaXgiLCJzcmMiLCJkZXN0Iiwic3JjVmFsdWUiLCJTeW1ib2wiLCJpIiwibGVuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUE7Ozs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNlLE1BQU1BLElBQU4sQ0FBVztBQUN6QjtBQUNEO0FBQ0E7QUFDQTs7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QUFMLEVBQXVEO0FBQ3REakIsTUFBQUEsS0FBSyxHQUFHLEtBQVI7QUFDQW5CLE1BQUFBLEtBQUssR0FBRzRELFNBQVI7QUFDQTtBQUNBOztBQUNEdEQsSUFBQUEsSUFBSSxHQUFHTixLQUFLLENBQUNGLElBQUksQ0FBQzhCLElBQU4sQ0FBTCxDQUFpQnJCLE1BQWpCLENBQXdCNkIsR0FBeEIsQ0FBUDs7QUFDQSxRQUFJOUIsSUFBSSxLQUFLc0QsU0FBYixFQUF3QjtBQUN2QnRELE1BQUFBLElBQUksR0FBRyxJQUFQO0FBQ0E7O0FBQ0ROLElBQUFBLEtBQUssR0FBR0EsS0FBSyxDQUFDb0MsR0FBRCxDQUFiO0FBQ0E7O0FBRUQsU0FBTztBQUFFakIsSUFBQUEsS0FBRjtBQUFTYixJQUFBQSxJQUFUO0FBQWVOLElBQUFBO0FBQWYsR0FBUDtBQUNBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaGFzaFZhbHVlIH0gZnJvbSAnLi91dGlsJztcblxuLyoqXG4gKiBBIG5vZGUgaXMgdmFsdWUgaW4gYW4gb2JqZWN0LiBJdCB3cmFwcyBhIHRoZSB2YWx1ZSBpbiBhIHByb3h5IHNvIHRoYXQgd2UgY2FuIGxpc3RlbiBmb3Igd2hlbiB0aGVcbiAqIG5vZGUgaXMgY2hhbmdlZC4gV2UgY2FuIGFsc28gc3RvcmUgYXJiaXRyYXJ5IGRhdGEgaW4gdGhlIG5vZGUncyBtZXRhZGF0YS5cbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTm9kZSB7XG5cdC8qKlxuXHQgKiBUaGUga2V5IGZvciB0aGUgaW50ZXJuYWwgbWV0YWRhdGEuXG5cdCAqIEB0eXBlIHtTeW1ib2x9XG5cdCAqL1xuXHRzdGF0aWMgTWV0YSA9IFN5bWJvbCgnbWV0YScpO1xuXG5cdC8qKlxuXHQgKiBJbml0aWFsaXplcyB0aGUgbm9kZSBwcm94eSBhbmQgbWV0YWRhdGEuXG5cdCAqXG5cdCAqIEBwYXJhbSB7Kn0gdmFsdWUgLSBUaGUgaW5pdGlhbCB2YWx1ZSBvZiB0aGlzIG5vZGUuXG5cdCAqIEBwYXJhbSB7Tm9kZX0gW3BhcmVudF0gLSBUaGUgbm9kZSByZWZlcmVuY2UgdG8gdGhlIHBhcmVudCBub2RlLlxuXHQgKiBAYWNjZXNzIHB1YmxpY1xuXHQgKi9cblx0Y29uc3RydWN0b3IodmFsdWUsIHBhcmVudCkge1xuXHRcdGNvbnN0IGNscyA9IE9iamVjdC5nZXRQcm90b3R5cGVPZih0aGlzKS5jb25zdHJ1Y3Rvcjtcblx0XHRjb25zdCBpbnRlcm5hbCA9IHtcblx0XHRcdGNscyxcblx0XHRcdGhhc2g6ICAgICAgbnVsbCxcblx0XHRcdGhhc2hlczogICAgbnVsbCxcblx0XHRcdGxpc3RlbmVyczogbnVsbCxcblx0XHRcdHBhcmVudHM6ICAgbmV3IFNldCgpLFxuXHRcdFx0cHJldmlvdXM6ICBudWxsLFxuXHRcdFx0cGF1c2VkOiAgICAwLFxuXHRcdFx0cGVuZGluZzogICAwLFxuXHRcdFx0c2NoZW1hOiAgICBudWxsLFxuXG5cdFx0XHQvKipcblx0XHRcdCAqIERpc3BhdGNoZXMgY2hhbmdlIG5vdGlmaWNhdGlvbnMgdG8gdGhlIGxpc3RlbmVycy5cblx0XHRcdCAqXG5cdFx0XHQgKiBAcGFyYW0ge05vZGV9IHRhcmdldCAtIFRoZSBub2RlIHRoYXQgY2hhbmdlZC5cblx0XHRcdCAqL1xuXHRcdFx0bm90aWZ5KHRhcmdldCkge1xuXHRcdFx0XHQvLyBpZiB3ZSdyZSBwYXVzZWQsIGFkZCB0aGlzIG9iamVjdCB0byB0aGUgbGlzdCBvZiBvYmplY3RzIHRoYXQgbWF5IGhhdmUgY2hhbmdlZFxuXHRcdFx0XHRpZiAodGhpcy5wYXVzZWQpIHtcblx0XHRcdFx0XHR0aGlzLnBlbmRpbmcrKztcblx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQvLyBub3RpZnkgYWxsIG9mIHRoaXMgb2JqZWN0J3MgbGlzdGVuZXJzXG5cdFx0XHRcdGlmICh0aGlzLmxpc3RlbmVycykge1xuXHRcdFx0XHRcdGZvciAoY29uc3QgWyBsaXN0ZW5lciwgZmlsdGVyIF0gb2YgdGhpcy5saXN0ZW5lcnMpIHtcblx0XHRcdFx0XHRcdGlmIChmaWx0ZXIpIHtcblx0XHRcdFx0XHRcdFx0Y29uc3QgeyBmb3VuZCwgaGFzaCwgdmFsdWUgfSA9IGZpbHRlck9iamVjdChub2RlLCBmaWx0ZXIpO1xuXHRcdFx0XHRcdFx0XHRjb25zdCBoYXNQcmV2ID0gdGhpcy5wcmV2aW91cz8uaGFzKGxpc3RlbmVyKTtcblx0XHRcdFx0XHRcdFx0Y29uc3QgY2hhbmdlZCA9IChmb3VuZCAmJiAhaGFzUHJldikgfHwgKGhhc1ByZXYgJiYgaGFzaCAhPT0gdGhpcy5wcmV2aW91cy5nZXQobGlzdGVuZXIpKTtcblxuXHRcdFx0XHRcdFx0XHRpZiAoIXRoaXMucHJldmlvdXMpIHtcblx0XHRcdFx0XHRcdFx0XHR0aGlzLnByZXZpb3VzID0gbmV3IFdlYWtNYXAoKTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHR0aGlzLnByZXZpb3VzLnNldChsaXN0ZW5lciwgaGFzaCk7XG5cblx0XHRcdFx0XHRcdFx0aWYgKGNoYW5nZWQpIHtcblx0XHRcdFx0XHRcdFx0XHRsaXN0ZW5lcih2YWx1ZSk7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdGxpc3RlbmVyKHRhcmdldCk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cblx0XHRcdFx0Ly8gbm90aWZ5IGFsbCBvZiB0aGlzIG9iamVjdCdzIHBhcmVudHNcblx0XHRcdFx0Zm9yIChjb25zdCBwYXJlbnQgb2YgdGhpcy5wYXJlbnRzKSB7XG5cdFx0XHRcdFx0cGFyZW50W05vZGUuTWV0YV0ubm90aWZ5KHRhcmdldCk7XG5cdFx0XHRcdH1cblx0XHRcdH0sXG5cblx0XHRcdC8qKlxuXHRcdFx0ICogSW5jcmVtZW50cyB0aGUgcGF1c2UgY291bnRlciB1bnRpbCB0aGUgY291bnRlciByZXNldHMgdG8gemVybyBhbmQgcmVzdW1lc1xuXHRcdFx0ICogbm90aWZpY2F0aW9ucy5cblx0XHRcdCAqL1xuXHRcdFx0cGF1c2UoKSB7XG5cdFx0XHRcdHRoaXMucGF1c2VkKys7XG5cdFx0XHR9LFxuXG5cdFx0XHQvKipcblx0XHRcdCAqIFJlY29tcHV0ZXMgdGhlIGhhc2ggbG9va3VwIGZvciBhbGwgcHJvcGVydGllcywgdGhlbiByZWNvbXB1dGVzIHRoaXMgb2JqZWN0J3MgaGFzaC5cblx0XHRcdCAqIElmIGFueSBwcm9wZXJ0aWVzIGFyZSBub3QgYWxyZWFkeSBOb2RlcywgdGhlbiBjcmVhdGUgdGhlbS5cblx0XHRcdCAqL1xuXHRcdFx0cmVoYXNoKCkge1xuXHRcdFx0XHRjb25zdCBpc0FycmF5ID0gQXJyYXkuaXNBcnJheShub2RlKTtcblx0XHRcdFx0Y29uc3Qga2V5cyA9IFJlZmxlY3Qub3duS2V5cyhub2RlKTtcblx0XHRcdFx0Y29uc3QgeyBoYXNoIH0gPSB0aGlzO1xuXG5cdFx0XHRcdHRoaXMuaGFzaGVzID0gaXNBcnJheSA/IFtdIDoge307XG5cblx0XHRcdFx0Zm9yIChjb25zdCBrZXkgb2Yga2V5cykge1xuXHRcdFx0XHRcdGlmIChrZXkgPT09IE5vZGUuTWV0YSB8fCAoaXNBcnJheSAmJiBrZXkgPT09ICdsZW5ndGgnKSkge1xuXHRcdFx0XHRcdFx0Y29udGludWU7XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0aWYgKG5vZGVba2V5XSAmJiB0eXBlb2Ygbm9kZVtrZXldID09PSAnb2JqZWN0Jykge1xuXHRcdFx0XHRcdFx0aWYgKCFub2RlW2tleV0/LltOb2RlLk1ldGFdKSB7XG5cdFx0XHRcdFx0XHRcdG5vZGVba2V5XSA9IG5ldyBjbHMobm9kZVtrZXldLCBub2RlKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdHRoaXMuaGFzaGVzW2tleV0gPSBub2RlW2tleV1bTm9kZS5NZXRhXS5oYXNoO1xuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHR0aGlzLmhhc2hlc1trZXldID0gaGFzaFZhbHVlKG5vZGVba2V5XSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cblx0XHRcdFx0dGhpcy5oYXNoID0gaGFzaFZhbHVlKHRoaXMuaGFzaGVzKTtcblxuXHRcdFx0XHRpZiAoaGFzaCAhPT0gdGhpcy5oYXNoKSB7XG5cdFx0XHRcdFx0Zm9yIChjb25zdCBwYXJlbnQgb2YgdGhpcy5wYXJlbnRzKSB7XG5cdFx0XHRcdFx0XHRwYXJlbnRbTm9kZS5NZXRhXS5yZWhhc2goKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH0sXG5cblx0XHRcdC8qKlxuXHRcdFx0ICogVW5wYXVzZXMgbm90aWZpY2F0aW9ucyBhbmQgc2VuZHMgb3V0IGFueSBwZW5kaW5nIG5vdGlmaWNhdGlvbnMuXG5cdFx0XHQgKi9cblx0XHRcdHJlc3VtZSgpIHtcblx0XHRcdFx0dGhpcy5wYXVzZWQgPSBNYXRoLm1heCgwLCB0aGlzLnBhdXNlZCAtIDEpO1xuXHRcdFx0XHRpZiAodGhpcy5wYXVzZWQgPT09IDAgJiYgdGhpcy5wZW5kaW5nID4gMCkge1xuXHRcdFx0XHRcdHRoaXMucGVuZGluZyA9IDA7XG5cdFx0XHRcdFx0dGhpcy5ub3RpZnkobm9kZSk7XG5cdFx0XHRcdH1cblx0XHRcdH0sXG5cblx0XHRcdC8qKlxuXHRcdFx0ICogUmVtb3ZlcyBhIGxpc3RlbmVyLlxuXHRcdFx0ICpcblx0XHRcdCAqIEBwYXJhbSB7RnVuY3Rpb259IFtsaXN0ZW5lcl0gLSBUaGUgZnVuY3Rpb24gdG8gY2FsbCB3aGVuIHNvbWV0aGluZyBjaGFuZ2VzLlxuXHRcdFx0ICovXG5cdFx0XHR1bndhdGNoKGxpc3RlbmVyKSB7XG5cdFx0XHRcdGlmIChsaXN0ZW5lciAmJiB0eXBlb2YgbGlzdGVuZXIgIT09ICdmdW5jdGlvbicpIHtcblx0XHRcdFx0XHR0aHJvdyBuZXcgVHlwZUVycm9yKCdFeHBlY3RlZCBsaXN0ZW5lciB0byBiZSBhIGZ1bmN0aW9uJyk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRpZiAoIXRoaXMubGlzdGVuZXJzKSB7XG5cdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0aWYgKGxpc3RlbmVyKSB7XG5cdFx0XHRcdFx0dGhpcy5saXN0ZW5lcnMuZGVsZXRlKGxpc3RlbmVyKTtcblx0XHRcdFx0XHRpZiAodGhpcy5wcmV2aW91cykge1xuXHRcdFx0XHRcdFx0dGhpcy5wcmV2aW91cy5kZWxldGUobGlzdGVuZXIpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHQvLyByZW1vdmUgYWxsIGxpc3RlbmVyc1xuXHRcdFx0XHRcdGZvciAoY29uc3QgWyBsaXN0ZW5lciBdIG9mIHRoaXMubGlzdGVuZXJzKSB7XG5cdFx0XHRcdFx0XHR0aGlzLmxpc3RlbmVycy5kZWxldGUobGlzdGVuZXIpO1xuXHRcdFx0XHRcdFx0aWYgKHRoaXMucHJldmlvdXMpIHtcblx0XHRcdFx0XHRcdFx0dGhpcy5wcmV2aW91cy5kZWxldGUobGlzdGVuZXIpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXG5cdFx0XHRcdGlmICghdGhpcy5saXN0ZW5lcnMuc2l6ZSkge1xuXHRcdFx0XHRcdHRoaXMubGlzdGVuZXJzID0gbnVsbDtcblx0XHRcdFx0XHR0aGlzLnByZXZpb3VzID0gbnVsbDtcblx0XHRcdFx0fVxuXHRcdFx0fSxcblxuXHRcdFx0LyoqXG5cdFx0XHQgKiBBZGRzIGEgbGlzdGVuZXIgdG8gYmUgY2FsbGVkIHdoZW4gdGhlIHNwZWNpZmllZCBvYmplY3Qgb3IgYW55IG9mIGl0c1xuXHRcdFx0ICogcHJvcGVydGllcy9lbGVtZW50cyBhcmUgY2hhbmdlZC5cblx0XHRcdCAqXG5cdFx0XHQgKiBAcGFyYW0ge1N0cmluZ3xBcnJheS48U3RyaW5nPn0gW2ZpbHRlcl0gLSBBIHByb3BlcnR5IG5hbWUgb3IgYXJyYXkgb2YgbmVzdGVkXG5cdFx0XHQgKiBwcm9wZXJ0aWVzIHRvIHdhdGNoLlxuXHRcdFx0ICogQHBhcmFtIHtGdW5jdGlvbn0gbGlzdGVuZXIgLSBUaGUgZnVuY3Rpb24gdG8gY2FsbCB3aGVuIHNvbWV0aGluZyBjaGFuZ2VzLlxuXHRcdFx0ICovXG5cdFx0XHR3YXRjaChmaWx0ZXIsIGxpc3RlbmVyKSB7XG5cdFx0XHRcdGlmICh0eXBlb2YgZmlsdGVyID09PSAnZnVuY3Rpb24nKSB7XG5cdFx0XHRcdFx0bGlzdGVuZXIgPSBmaWx0ZXI7XG5cdFx0XHRcdFx0ZmlsdGVyID0gbnVsbDtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGlmIChmaWx0ZXIpIHtcblx0XHRcdFx0XHRpZiAodHlwZW9mIGZpbHRlciA9PT0gJ3N0cmluZycpIHtcblx0XHRcdFx0XHRcdGZpbHRlciA9IFsgZmlsdGVyIF07XG5cdFx0XHRcdFx0fSBlbHNlIGlmICghQXJyYXkuaXNBcnJheShmaWx0ZXIpKSB7XG5cdFx0XHRcdFx0XHR0aHJvdyBuZXcgVHlwZUVycm9yKCdFeHBlY3RlZCBmaWx0ZXIgdG8gYmUgYSBzdHJpbmcgb3IgYXJyYXkgb2Ygc3RyaW5ncycpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXG5cdFx0XHRcdGlmICh0eXBlb2YgbGlzdGVuZXIgIT09ICdmdW5jdGlvbicpIHtcblx0XHRcdFx0XHR0aHJvdyBuZXcgVHlwZUVycm9yKCdFeHBlY3RlZCBsaXN0ZW5lciB0byBiZSBhIGZ1bmN0aW9uJyk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRpZiAoIXRoaXMubGlzdGVuZXJzKSB7XG5cdFx0XHRcdFx0dGhpcy5saXN0ZW5lcnMgPSBuZXcgTWFwKCk7XG5cdFx0XHRcdH1cblx0XHRcdFx0dGhpcy5saXN0ZW5lcnMuc2V0KGxpc3RlbmVyLCBmaWx0ZXIpO1xuXG5cdFx0XHRcdGlmIChmaWx0ZXIpIHtcblx0XHRcdFx0XHRjb25zdCB7IGZvdW5kLCBoYXNoIH0gPSBmaWx0ZXJPYmplY3Qobm9kZSwgZmlsdGVyKTtcblx0XHRcdFx0XHRpZiAoZm91bmQpIHtcblx0XHRcdFx0XHRcdGlmICghdGhpcy5wcmV2aW91cykge1xuXHRcdFx0XHRcdFx0XHR0aGlzLnByZXZpb3VzID0gbmV3IFdlYWtNYXAoKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdHRoaXMucHJldmlvdXMuc2V0KGxpc3RlbmVyLCBoYXNoKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9O1xuXG5cdFx0Y29uc3QgaXNBcnJheSA9IEFycmF5LmlzQXJyYXkodmFsdWUpO1xuXG5cdFx0Y29uc3Qgbm9kZSA9IG5ldyBQcm94eShpc0FycmF5ID8gW10gOiB7fSwge1xuXHRcdFx0ZGVsZXRlUHJvcGVydHkodGFyZ2V0LCBwcm9wKSB7XG5cdFx0XHRcdGxldCByZXN1bHQgPSB0cnVlO1xuXG5cdFx0XHRcdGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodGFyZ2V0LCBwcm9wKSkge1xuXHRcdFx0XHRcdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtZXhwcmVzc2lvbnNcblx0XHRcdFx0XHR0YXJnZXRbcHJvcF0/LltOb2RlLk1ldGFdPy5wYXJlbnRzLmRlbGV0ZShub2RlKTtcblx0XHRcdFx0XHRyZXN1bHQgPSBkZWxldGUgdGFyZ2V0W3Byb3BdO1xuXG5cdFx0XHRcdFx0ZGVsZXRlIGludGVybmFsLmhhc2hlc1twcm9wXTtcblx0XHRcdFx0XHRpbnRlcm5hbC5oYXNoID0gaGFzaFZhbHVlKGludGVybmFsLmhhc2hlcyk7XG5cblx0XHRcdFx0XHRpZiAocmVzdWx0KSB7XG5cdFx0XHRcdFx0XHRpbnRlcm5hbC5ub3RpZnkobm9kZSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cblx0XHRcdFx0cmV0dXJuIHJlc3VsdDtcblx0XHRcdH0sXG5cblx0XHRcdGdldCh0YXJnZXQsIHByb3ApIHtcblx0XHRcdFx0aWYgKEFycmF5LmlzQXJyYXkodGFyZ2V0KSkge1xuXHRcdFx0XHRcdGNvbnN0IGFkZGl0aXZlID0gcHJvcCA9PT0gJ3B1c2gnIHx8IHByb3AgPT09ICd1bnNoaWZ0JztcblxuXHRcdFx0XHRcdGlmIChhZGRpdGl2ZSB8fCBwcm9wID09PSAncG9wJyB8fCBwcm9wID09PSAnc2hpZnQnKSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gZnVuY3Rpb24gKC4uLmFyZ3MpIHtcblx0XHRcdFx0XHRcdFx0aW50ZXJuYWwucGF1c2UoKTtcblx0XHRcdFx0XHRcdFx0Y29uc3QgcmVzdWx0ID0gQXJyYXkucHJvdG90eXBlW3Byb3BdLmFwcGx5KHRhcmdldCwgYXJncyk7XG5cblx0XHRcdFx0XHRcdFx0aW50ZXJuYWwucmVoYXNoKCk7XG5cdFx0XHRcdFx0XHRcdGludGVybmFsLnJlc3VtZSgpO1xuXG5cdFx0XHRcdFx0XHRcdGlmICghYWRkaXRpdmUgfHwgYXJncy5sZW5ndGgpIHtcblx0XHRcdFx0XHRcdFx0XHRpbnRlcm5hbC5ub3RpZnkobm9kZSk7XG5cdFx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0XHRyZXR1cm4gcmVzdWx0O1xuXHRcdFx0XHRcdFx0fTtcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRpZiAocHJvcCA9PT0gJ3NwbGljZScpIHtcblx0XHRcdFx0XHRcdHJldHVybiBmdW5jdGlvbiAoc3RhcnQsIGRlbGV0ZUNvdW50LCAuLi5pdGVtcykge1xuXHRcdFx0XHRcdFx0XHRpbnRlcm5hbC5wYXVzZSgpO1xuXG5cdFx0XHRcdFx0XHRcdGlmIChzdGFydCAhPT0gdW5kZWZpbmVkICYmIGRlbGV0ZUNvdW50ID09PSB1bmRlZmluZWQpIHtcblx0XHRcdFx0XHRcdFx0XHRkZWxldGVDb3VudCA9IHRoaXMubGVuZ3RoIC0gc3RhcnQ7XG5cdFx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0XHRjb25zdCB7IGhhc2ggfSA9IGludGVybmFsO1xuXHRcdFx0XHRcdFx0XHRjb25zdCBhcnIgPSBBcnJheS5wcm90b3R5cGUuc3BsaWNlLmNhbGwodGFyZ2V0LCBzdGFydCwgZGVsZXRlQ291bnQsIC4uLml0ZW1zKTtcblx0XHRcdFx0XHRcdFx0Zm9yIChjb25zdCBpdGVtIG9mIGFycikge1xuXHRcdFx0XHRcdFx0XHRcdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtZXhwcmVzc2lvbnNcblx0XHRcdFx0XHRcdFx0XHRpdGVtPy5bTm9kZS5NZXRhXT8ucGFyZW50cy5kZWxldGUobm9kZSk7XG5cdFx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0XHRpbnRlcm5hbC5yZWhhc2goKTtcblx0XHRcdFx0XHRcdFx0aW50ZXJuYWwucmVzdW1lKCk7XG5cblx0XHRcdFx0XHRcdFx0aWYgKGludGVybmFsLmhhc2ggIT09IGhhc2gpIHtcblx0XHRcdFx0XHRcdFx0XHRpbnRlcm5hbC5ub3RpZnkobm9kZSk7XG5cdFx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0XHRyZXR1cm4gYXJyO1xuXHRcdFx0XHRcdFx0fTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRyZXR1cm4gdGFyZ2V0W3Byb3BdO1xuXHRcdFx0fSxcblxuXHRcdFx0c2V0KHRhcmdldCwgcHJvcCwgdmFsdWUpIHtcblx0XHRcdFx0aWYgKHRhcmdldCA9PT0gdmFsdWUpIHtcblx0XHRcdFx0XHR0aHJvdyBuZXcgRXJyb3IoJ0Nhbm5vdCBzZXQgb2JqZWN0IHByb3BlcnR5IHRvIGl0c2VsZicpO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0bGV0IGhhc2ggPSBudWxsO1xuXHRcdFx0XHRjb25zdCBkZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0YXJnZXQsIHByb3ApO1xuXG5cdFx0XHRcdGlmICh2YWx1ZSAmJiB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmICEodmFsdWUgaW5zdGFuY2VvZiBEYXRlKSAmJiB2YWx1ZSAhPT0gcHJvY2Vzcy5lbnYgJiYgdmFsdWUgIT09IEpTT04gJiYgdmFsdWUgIT09IE1hdGgpIHtcblx0XHRcdFx0XHRpZiAodmFsdWVbTm9kZS5NZXRhXSkge1xuXHRcdFx0XHRcdFx0dmFsdWVbTm9kZS5NZXRhXS5wYXJlbnRzLmFkZChub2RlKTtcblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0dmFsdWUgPSBuZXcgY2xzKHZhbHVlLCBub2RlKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0KHsgaGFzaCB9ID0gdmFsdWVbTm9kZS5NZXRhXSk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0aGFzaCA9IGhhc2hWYWx1ZSh2YWx1ZSk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRsZXQgY2hhbmdlZCA9IHRydWU7XG5cblx0XHRcdFx0aWYgKGRlc2MpIHtcblx0XHRcdFx0XHRpZiAoaW50ZXJuYWwuaGFzaGVzW3Byb3BdID09PSBoYXNoKSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRpbnRlcm5hbC5wYXJlbnRzLmRlbGV0ZShub2RlKTtcblxuXHRcdFx0XHRcdC8vIGlmIHRoZSBkZXN0aW5hdGlvbiBwcm9wZXJ0eSBoYXMgYSBzZXR0ZXIsIHRoZW4gd2UgY2FuJ3QgYXNzdW1lIHdlIG5lZWQgdG9cblx0XHRcdFx0XHQvLyBmaXJlIGEgZGVsZXRlXG5cdFx0XHRcdFx0aWYgKHR5cGVvZiBkZXNjLnNldCAhPT0gJ2Z1bmN0aW9uJyAmJiAoIUFycmF5LmlzQXJyYXkodGFyZ2V0KSB8fCBwcm9wICE9PSAnbGVuZ3RoJykpIHtcblx0XHRcdFx0XHRcdGRlbGV0ZSB0YXJnZXRbcHJvcF07XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cblx0XHRcdFx0dGFyZ2V0W3Byb3BdID0gdmFsdWU7XG5cblx0XHRcdFx0aWYgKHR5cGVvZiBjbHMub25TZXQgPT09ICdmdW5jdGlvbicpIHtcblx0XHRcdFx0XHRjbHMub25TZXQoeyBpbnRlcm5hbCwgbm9kZSwgcHJvcCwgdGFyZ2V0LCB2YWx1ZSB9KTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGludGVybmFsLmhhc2hlc1twcm9wXSA9IGhhc2g7XG5cdFx0XHRcdGludGVybmFsLmhhc2ggPSBoYXNoVmFsdWUoaW50ZXJuYWwuaGFzaGVzKTtcblxuXHRcdFx0XHRmb3IgKGNvbnN0IHBhcmVudCBvZiBpbnRlcm5hbC5wYXJlbnRzKSB7XG5cdFx0XHRcdFx0cGFyZW50W05vZGUuTWV0YV0ucmVoYXNoKCk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRpZiAoY2hhbmdlZCkge1xuXHRcdFx0XHRcdGludGVybmFsLm5vdGlmeShub2RlKTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdHJldHVybiB0cnVlO1xuXHRcdFx0fVxuXHRcdH0pO1xuXG5cdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KG5vZGUsIE5vZGUuTWV0YSwgeyB2YWx1ZTogaW50ZXJuYWwgfSk7XG5cblx0XHQvLyBpZiB2YWx1ZSBpcyBhbiBvYmplY3QsIHdlIGNvcHkgdGhlIHZhbHVlIGludG8gdGhpcyBub2RlIGluc3RhbmNlXG5cdFx0aWYgKHZhbHVlICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcpIHtcblx0XHRcdGludGVybmFsLmhhc2hlcyA9IGlzQXJyYXkgPyBbXSA6IHt9O1xuXHRcdFx0aW50ZXJuYWwuaGFzaCA9IGhhc2hWYWx1ZShpbnRlcm5hbC5oYXNoZXMpO1xuXHRcdFx0Zm9yIChjb25zdCBrZXkgb2YgUmVmbGVjdC5vd25LZXlzKHZhbHVlKSkge1xuXHRcdFx0XHRpZiAoa2V5ID09PSBOb2RlLk1ldGEgfHwgKGlzQXJyYXkgJiYga2V5ID09PSAnbGVuZ3RoJykpIHtcblx0XHRcdFx0XHRjb250aW51ZTtcblx0XHRcdFx0fVxuXHRcdFx0XHRub2RlW2tleV0gPSB2YWx1ZVtrZXldO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdGlmIChwYXJlbnQgIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0aWYgKCFwYXJlbnQ/LltOb2RlLk1ldGFdKSB7XG5cdFx0XHRcdHRocm93IG5ldyBUeXBlRXJyb3IoJ0V4cGVjdGVkIHBhcmVudCB0byBiZSBhIE5vZGUnKTtcblx0XHRcdH1cblxuXHRcdFx0aWYgKHZhbHVlID09PSBwYXJlbnQgfHwgdmFsdWUgPT09IHBhcmVudFtOb2RlLk1ldGFdLnZhbHVlKSB7XG5cdFx0XHRcdHRocm93IG5ldyBFcnJvcignUGFyZW50IG11c3QgYmUgbm90IGJlIHRoZSBzYW1lIGFzIHRoZSBub2RlJyk7XG5cdFx0XHR9XG5cblx0XHRcdGludGVybmFsLnBhcmVudHMuYWRkKHBhcmVudCk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIG5vZGU7XG5cdH1cblxuXHQvKipcblx0ICogUmVjdXJzaXZlbHkgbWVyZ2UgdGhlIHZhbHVlIGludG8gdGhpcyBvYmplY3QuXG5cdCAqXG5cdCAqIEBwYXJhbSB7Tm9kZX0gbm9kZSAtIFRoZSBub2RlIHRvIHBhdXNlLlxuXHQgKiBAcGFyYW0ge09iamVjdH0gdmFsdWUgLSBUaGUgdmFsdWUgdG8gbWVyZ2UuXG5cdCAqIEBhY2Nlc3MgcHVibGljXG5cdCAqL1xuXHRzdGF0aWMgbWVyZ2Uobm9kZSwgdmFsdWUpIHtcblx0XHRpZiAoIW5vZGU/LltOb2RlLk1ldGFdKSB7XG5cdFx0XHR0aHJvdyBuZXcgVHlwZUVycm9yKCdFeHBlY3RlZCBtZXJnZSBkZXN0aW5hdGlvbiB0byBiZSBhIE5vZGUgaW5zdGFuY2UnKTtcblx0XHR9XG5cblx0XHRpZiAoIXZhbHVlIHx8IHR5cGVvZiB2YWx1ZSAhPT0gJ29iamVjdCcgfHwgQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcblx0XHRcdHRocm93IG5ldyBUeXBlRXJyb3IoJ0V4cGVjdGVkIG1lcmdlIHNvdXJjZSB0byBiZSBhbiBvYmplY3QnKTtcblx0XHR9XG5cblx0XHRub2RlW05vZGUuTWV0YV0ucGF1c2UoKTtcblxuXHRcdChmdW5jdGlvbiBtaXgoc3JjLCBkZXN0KSB7XG5cdFx0XHRmb3IgKGNvbnN0IGtleSBvZiBSZWZsZWN0Lm93bktleXMoc3JjKSkge1xuXHRcdFx0XHRpZiAoa2V5ID09PSBOb2RlLk1ldGEpIHtcblx0XHRcdFx0XHRjb250aW51ZTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGNvbnN0IHNyY1ZhbHVlID0gc3JjW2tleV07XG5cblx0XHRcdFx0aWYgKHNyY1ZhbHVlICE9PSBudWxsICYmIHR5cGVvZiBzcmNWYWx1ZSA9PT0gJ29iamVjdCcgJiYgIUFycmF5LmlzQXJyYXkoc3JjVmFsdWUpKSB7XG5cdFx0XHRcdFx0aWYgKCFkZXN0W2tleV0/LltOb2RlLk1ldGFdKSB7XG5cdFx0XHRcdFx0XHRkZXN0W2tleV0gPSB7fTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0bWl4KHNyY1ZhbHVlLCBkZXN0W2tleV0pO1xuXHRcdFx0XHR9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkoZGVzdFtrZXldKSAmJiBBcnJheS5pc0FycmF5KHNyY1ZhbHVlKSkge1xuXHRcdFx0XHRcdC8vIG92ZXJ3cml0ZSBkZXN0aW5hdGlvbiB3aXRoIG5ldyB2YWx1ZXNcblx0XHRcdFx0XHRkZXN0W2tleV0uc3BsaWNlKDAsIGRlc3Rba2V5XS5sZW5ndGgsIC4uLnNyY1ZhbHVlKTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRkZXN0W2tleV0gPSBzcmNWYWx1ZTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH0odmFsdWUsIG5vZGUpKTtcblxuXHRcdG5vZGVbTm9kZS5NZXRhXS5yZXN1bWUoKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBQYXVzZXMgYWxsIGNoYW5nZSBub3RpZmljYXRpb25zIHVudGlsIHJlc3VtZWQuXG5cdCAqXG5cdCAqIEBwYXJhbSB7Tm9kZX0gbm9kZSAtIFRoZSBub2RlIHRvIHBhdXNlLlxuXHQgKiBAcmV0dXJucyB7Qm9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgaXQgd2FzIGFscmVhZHkgcGF1c2VkLlxuXHQgKiBAYWNjZXNzIHB1YmxpY1xuXHQgKi9cblx0c3RhdGljIHBhdXNlKG5vZGUpIHtcblx0XHRyZXR1cm4gbm9kZVtOb2RlLk1ldGFdLnBhdXNlKCk7XG5cdH1cblxuXHQvKipcblx0ICogVW5wYXVzZXMgbm90aWZpY2F0aW9ucyBhbmQgc2VuZHMgb3V0IGFueSBwZW5kaW5nIG5vdGlmaWNhdGlvbnMuXG5cdCAqXG5cdCAqIEBwYXJhbSB7Tm9kZX0gbm9kZSAtIFRoZSBub2RlIHRvIHJlc3VtZS5cblx0ICogQGFjY2VzcyBwdWJsaWNcblx0ICovXG5cdHN0YXRpYyByZXN1bWUobm9kZSkge1xuXHRcdG5vZGVbTm9kZS5NZXRhXS5yZXN1bWUoKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZW1vdmVzIGEgbGlzdGVuZXIuXG5cdCAqXG5cdCAqIEBwYXJhbSB7Tm9kZX0gbm9kZSAtIFRoZSBub2RlIHRvIHVud2F0Y2guXG5cdCAqIEBwYXJhbSB7RnVuY3Rpb259IFtsaXN0ZW5lcl0gLSBUaGUgZnVuY3Rpb24gdG8gY2FsbCB3aGVuIHNvbWV0aGluZyBjaGFuZ2VzLlxuXHQgKiBAYWNjZXNzIHB1YmxpY1xuXHQgKi9cblx0c3RhdGljIHVud2F0Y2gobm9kZSwgbGlzdGVuZXIpIHtcblx0XHRub2RlW05vZGUuTWV0YV0udW53YXRjaChsaXN0ZW5lcik7XG5cdH1cblxuXHQvKipcblx0ICogQWRkcyBhIGxpc3RlbmVyIHRvIGJlIGNhbGxlZCB3aGVuIHRoZSBzcGVjaWZpZWQgb2JqZWN0IG9yIGFueSBvZiBpdHMgcHJvcGVydGllcy9lbGVtZW50cyBhcmVcblx0ICogY2hhbmdlZC5cblx0ICpcblx0ICogQHBhcmFtIHtOb2RlfSBub2RlIC0gVGhlIG5vZGUgdG8gd2F0Y2guXG5cdCAqIEBwYXJhbSB7U3RyaW5nfEFycmF5LjxTdHJpbmc+fSBbZmlsdGVyXSAtIEEgcHJvcGVydHkgbmFtZSBvciBhcnJheSBvZiBuZXN0ZWQgcHJvcGVydGllcyB0b1xuXHQgKiB3YXRjaC5cblx0ICogQHBhcmFtIHtGdW5jdGlvbn0gbGlzdGVuZXIgLSBUaGUgZnVuY3Rpb24gdG8gY2FsbCB3aGVuIHNvbWV0aGluZyBjaGFuZ2VzLlxuXHQgKiBAYWNjZXNzIHB1YmxpY1xuXHQgKi9cblx0c3RhdGljIHdhdGNoKG5vZGUsIGZpbHRlciwgbGlzdGVuZXIpIHtcblx0XHRub2RlW05vZGUuTWV0YV0ud2F0Y2goZmlsdGVyLCBsaXN0ZW5lcik7XG5cdH1cbn1cblxuLyoqXG4gKiBGaWx0ZXJzIHRoZSBzcGVjaWZpZWQgbm9kZS5cbiAqXG4gKiBAcGFyYW0ge05vZGV9IG5vZGUgLSBUaGUgbm9kZSB0byBmaWx0ZXIuXG4gKiBAcGFyYW0ge0FycmF5LjxTdHJpbmc+fSBmaWx0ZXIgLSBUaGUgZmlsdGVyIHRvIGFwcGx5IHRvIHRoZSBub2RlLlxuICogQHJldHVybnMge09iamVjdH1cbiAqL1xuZnVuY3Rpb24gZmlsdGVyT2JqZWN0KG5vZGUsIGZpbHRlcikge1xuXHRsZXQgZm91bmQgPSB0cnVlO1xuXHRsZXQgaGFzaCA9IG51bGw7XG5cdGxldCB2YWx1ZSA9IG5vZGU7XG5cblx0Ly8gZmluZCB0aGUgdmFsdWUgd2UncmUgaW50ZXJlc3RlZCBpblxuXHRmb3IgKGxldCBpID0gMCwgbGVuID0gZmlsdGVyLmxlbmd0aDsgdmFsdWUgJiYgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiBpIDwgbGVuOyBpKyspIHtcblx0XHRjb25zdCBrZXkgPSBmaWx0ZXJbaV07XG5cdFx0aWYgKCFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodmFsdWUsIGtleSkpIHtcblx0XHRcdGZvdW5kID0gZmFsc2U7XG5cdFx0XHR2YWx1ZSA9IHVuZGVmaW5lZDtcblx0XHRcdGJyZWFrO1xuXHRcdH1cblx0XHRoYXNoID0gdmFsdWVbTm9kZS5NZXRhXS5oYXNoZXNba2V5XTtcblx0XHRpZiAoaGFzaCA9PT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRoYXNoID0gbnVsbDtcblx0XHR9XG5cdFx0dmFsdWUgPSB2YWx1ZVtrZXldO1xuXHR9XG5cblx0cmV0dXJuIHsgZm91bmQsIGhhc2gsIHZhbHVlIH07XG59XG4iXSwiZmlsZSI6Im5vZGUuanMifQ==
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm5vZGUuanMiXSwibmFtZXMiOlsiTm9kZSIsImNvbnN0cnVjdG9yIiwidmFsdWUiLCJwYXJlbnQiLCJjbHMiLCJPYmplY3QiLCJnZXRQcm90b3R5cGVPZiIsImludGVybmFsIiwiaGFzaCIsImhhc2hlcyIsImxpc3RlbmVycyIsInBhcmVudHMiLCJTZXQiLCJwcmV2aW91cyIsInBhdXNlZCIsInBlbmRpbmciLCJzY2hlbWEiLCJub3RpZnkiLCJ0YXJnZXQiLCJsaXN0ZW5lciIsImZpbHRlciIsImZvdW5kIiwiZmlsdGVyT2JqZWN0Iiwibm9kZSIsImhhc1ByZXYiLCJoYXMiLCJjaGFuZ2VkIiwiZ2V0IiwiV2Vha01hcCIsInNldCIsIk1ldGEiLCJwYXVzZSIsInJlaGFzaCIsImlzQXJyYXkiLCJBcnJheSIsImtleXMiLCJSZWZsZWN0Iiwib3duS2V5cyIsImtleSIsInJlc3VtZSIsIk1hdGgiLCJtYXgiLCJ1bndhdGNoIiwiVHlwZUVycm9yIiwiZGVsZXRlIiwic2l6ZSIsIndhdGNoIiwiTWFwIiwiUHJveHkiLCJkZWxldGVQcm9wZXJ0eSIsInByb3AiLCJyZXN1bHQiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJhZGRpdGl2ZSIsImFyZ3MiLCJhcHBseSIsImxlbmd0aCIsInN0YXJ0IiwiZGVsZXRlQ291bnQiLCJpdGVtcyIsInVuZGVmaW5lZCIsImFyciIsInNwbGljZSIsIml0ZW0iLCJFcnJvciIsImRlc2MiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJEYXRlIiwicHJvY2VzcyIsImVudiIsIkpTT04iLCJhZGQiLCJvblNldCIsImRlZmluZVByb3BlcnR5IiwibWVyZ2UiLCJtaXgiLCJzcmMiLCJkZXN0Iiwic3JjVmFsdWUiLCJTeW1ib2wiLCJpIiwibGVuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUE7Ozs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNlLE1BQU1BLElBQU4sQ0FBVztBQUN6QjtBQUNEO0FBQ0E7QUFDQTs7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QUN0RGpCLE1BQUFBLEtBQUssR0FBRyxLQUFSO0FBQ0FuQixNQUFBQSxLQUFLLEdBQUc0RCxTQUFSO0FBQ0E7QUFDQTs7QUFDRHRELElBQUFBLElBQUksR0FBR04sS0FBSyxDQUFDRixJQUFJLENBQUM4QixJQUFOLENBQUwsQ0FBaUJyQixNQUFqQixDQUF3QjZCLEdBQXhCLENBQVA7O0FBQ0EsUUFBSTlCLElBQUksS0FBS3NELFNBQWIsRUFBd0I7QUFDdkJ0RCxNQUFBQSxJQUFJLEdBQUcsSUFBUDtBQUNBOztBQUNETixJQUFBQSxLQUFLLEdBQUdBLEtBQUssQ0FBQ29DLEdBQUQsQ0FBYjtBQUNBOztBQUVELFNBQU87QUFBRWpCLElBQUFBLEtBQUY7QUFBU2IsSUFBQUEsSUFBVDtBQUFlTixJQUFBQTtBQUFmLEdBQVA7QUFDQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGhhc2hWYWx1ZSB9IGZyb20gJy4vdXRpbCc7XG5cbi8qKlxuICogQSBub2RlIGlzIHZhbHVlIGluIGFuIG9iamVjdC4gSXQgd3JhcHMgYSB0aGUgdmFsdWUgaW4gYSBwcm94eSBzbyB0aGF0IHdlIGNhbiBsaXN0ZW4gZm9yIHdoZW4gdGhlXG4gKiBub2RlIGlzIGNoYW5nZWQuIFdlIGNhbiBhbHNvIHN0b3JlIGFyYml0cmFyeSBkYXRhIGluIHRoZSBub2RlJ3MgbWV0YWRhdGEuXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE5vZGUge1xuXHQvKipcblx0ICogVGhlIGtleSBmb3IgdGhlIGludGVybmFsIG1ldGFkYXRhLlxuXHQgKiBAdHlwZSB7U3ltYm9sfVxuXHQgKi9cblx0c3RhdGljIE1ldGEgPSBTeW1ib2woJ21ldGEnKTtcblxuXHQvKipcblx0ICogSW5pdGlhbGl6ZXMgdGhlIG5vZGUgcHJveHkgYW5kIG1ldGFkYXRhLlxuXHQgKlxuXHQgKiBAcGFyYW0geyp9IHZhbHVlIC0gVGhlIGluaXRpYWwgdmFsdWUgb2YgdGhpcyBub2RlLlxuXHQgKiBAcGFyYW0ge05vZGV9IFtwYXJlbnRdIC0gVGhlIG5vZGUgcmVmZXJlbmNlIHRvIHRoZSBwYXJlbnQgbm9kZS5cblx0ICogQGFjY2VzcyBwdWJsaWNcblx0ICovXG5cdGNvbnN0cnVjdG9yKHZhbHVlLCBwYXJlbnQpIHtcblx0XHRjb25zdCBjbHMgPSBPYmplY3QuZ2V0UHJvdG90eXBlT2YodGhpcykuY29uc3RydWN0b3I7XG5cdFx0Y29uc3QgaW50ZXJuYWwgPSB7XG5cdFx0XHRjbHMsXG5cdFx0XHRoYXNoOiAgICAgIG51bGwsXG5cdFx0XHRoYXNoZXM6ICAgIG51bGwsXG5cdFx0XHRsaXN0ZW5lcnM6IG51bGwsXG5cdFx0XHRwYXJlbnRzOiAgIG5ldyBTZXQoKSxcblx0XHRcdHByZXZpb3VzOiAgbnVsbCxcblx0XHRcdHBhdXNlZDogICAgMCxcblx0XHRcdHBlbmRpbmc6ICAgMCxcblx0XHRcdHNjaGVtYTogICAgbnVsbCxcblxuXHRcdFx0LyoqXG5cdFx0XHQgKiBEaXNwYXRjaGVzIGNoYW5nZSBub3RpZmljYXRpb25zIHRvIHRoZSBsaXN0ZW5lcnMuXG5cdFx0XHQgKlxuXHRcdFx0ICogQHBhcmFtIHtOb2RlfSB0YXJnZXQgLSBUaGUgbm9kZSB0aGF0IGNoYW5nZWQuXG5cdFx0XHQgKi9cblx0XHRcdG5vdGlmeSh0YXJnZXQpIHtcblx0XHRcdFx0Ly8gaWYgd2UncmUgcGF1c2VkLCBhZGQgdGhpcyBvYmplY3QgdG8gdGhlIGxpc3Qgb2Ygb2JqZWN0cyB0aGF0IG1heSBoYXZlIGNoYW5nZWRcblx0XHRcdFx0aWYgKHRoaXMucGF1c2VkKSB7XG5cdFx0XHRcdFx0dGhpcy5wZW5kaW5nKys7XG5cdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Ly8gbm90aWZ5IGFsbCBvZiB0aGlzIG9iamVjdCdzIGxpc3RlbmVyc1xuXHRcdFx0XHRpZiAodGhpcy5saXN0ZW5lcnMpIHtcblx0XHRcdFx0XHRmb3IgKGNvbnN0IFsgbGlzdGVuZXIsIGZpbHRlciBdIG9mIHRoaXMubGlzdGVuZXJzKSB7XG5cdFx0XHRcdFx0XHRpZiAoZmlsdGVyKSB7XG5cdFx0XHRcdFx0XHRcdGNvbnN0IHsgZm91bmQsIGhhc2gsIHZhbHVlIH0gPSBmaWx0ZXJPYmplY3Qobm9kZSwgZmlsdGVyKTtcblx0XHRcdFx0XHRcdFx0Y29uc3QgaGFzUHJldiA9IHRoaXMucHJldmlvdXM/LmhhcyhsaXN0ZW5lcik7XG5cdFx0XHRcdFx0XHRcdGNvbnN0IGNoYW5nZWQgPSAoZm91bmQgJiYgIWhhc1ByZXYpIHx8IChoYXNQcmV2ICYmIGhhc2ggIT09IHRoaXMucHJldmlvdXMuZ2V0KGxpc3RlbmVyKSk7XG5cblx0XHRcdFx0XHRcdFx0aWYgKCF0aGlzLnByZXZpb3VzKSB7XG5cdFx0XHRcdFx0XHRcdFx0dGhpcy5wcmV2aW91cyA9IG5ldyBXZWFrTWFwKCk7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0dGhpcy5wcmV2aW91cy5zZXQobGlzdGVuZXIsIGhhc2gpO1xuXG5cdFx0XHRcdFx0XHRcdGlmIChjaGFuZ2VkKSB7XG5cdFx0XHRcdFx0XHRcdFx0bGlzdGVuZXIodmFsdWUpO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRsaXN0ZW5lcih0YXJnZXQpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXG5cdFx0XHRcdC8vIG5vdGlmeSBhbGwgb2YgdGhpcyBvYmplY3QncyBwYXJlbnRzXG5cdFx0XHRcdGZvciAoY29uc3QgcGFyZW50IG9mIHRoaXMucGFyZW50cykge1xuXHRcdFx0XHRcdHBhcmVudFtOb2RlLk1ldGFdLm5vdGlmeSh0YXJnZXQpO1xuXHRcdFx0XHR9XG5cdFx0XHR9LFxuXG5cdFx0XHQvKipcblx0XHRcdCAqIEluY3JlbWVudHMgdGhlIHBhdXNlIGNvdW50ZXIgdW50aWwgdGhlIGNvdW50ZXIgcmVzZXRzIHRvIHplcm8gYW5kIHJlc3VtZXNcblx0XHRcdCAqIG5vdGlmaWNhdGlvbnMuXG5cdFx0XHQgKi9cblx0XHRcdHBhdXNlKCkge1xuXHRcdFx0XHR0aGlzLnBhdXNlZCsrO1xuXHRcdFx0fSxcblxuXHRcdFx0LyoqXG5cdFx0XHQgKiBSZWNvbXB1dGVzIHRoZSBoYXNoIGxvb2t1cCBmb3IgYWxsIHByb3BlcnRpZXMsIHRoZW4gcmVjb21wdXRlcyB0aGlzIG9iamVjdCdzIGhhc2guXG5cdFx0XHQgKiBJZiBhbnkgcHJvcGVydGllcyBhcmUgbm90IGFscmVhZHkgTm9kZXMsIHRoZW4gY3JlYXRlIHRoZW0uXG5cdFx0XHQgKi9cblx0XHRcdHJlaGFzaCgpIHtcblx0XHRcdFx0Y29uc3QgaXNBcnJheSA9IEFycmF5LmlzQXJyYXkobm9kZSk7XG5cdFx0XHRcdGNvbnN0IGtleXMgPSBSZWZsZWN0Lm93bktleXMobm9kZSk7XG5cdFx0XHRcdGNvbnN0IHsgaGFzaCB9ID0gdGhpcztcblxuXHRcdFx0XHR0aGlzLmhhc2hlcyA9IGlzQXJyYXkgPyBbXSA6IHt9O1xuXG5cdFx0XHRcdGZvciAoY29uc3Qga2V5IG9mIGtleXMpIHtcblx0XHRcdFx0XHRpZiAoa2V5ID09PSBOb2RlLk1ldGEgfHwgKGlzQXJyYXkgJiYga2V5ID09PSAnbGVuZ3RoJykpIHtcblx0XHRcdFx0XHRcdGNvbnRpbnVlO1xuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdGlmIChub2RlW2tleV0gJiYgdHlwZW9mIG5vZGVba2V5XSA9PT0gJ29iamVjdCcpIHtcblx0XHRcdFx0XHRcdGlmICghbm9kZVtrZXldPy5bTm9kZS5NZXRhXSkge1xuXHRcdFx0XHRcdFx0XHRub2RlW2tleV0gPSBuZXcgY2xzKG5vZGVba2V5XSwgbm9kZSk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR0aGlzLmhhc2hlc1trZXldID0gbm9kZVtrZXldW05vZGUuTWV0YV0uaGFzaDtcblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0dGhpcy5oYXNoZXNba2V5XSA9IGhhc2hWYWx1ZShub2RlW2tleV0pO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXG5cdFx0XHRcdHRoaXMuaGFzaCA9IGhhc2hWYWx1ZSh0aGlzLmhhc2hlcyk7XG5cblx0XHRcdFx0aWYgKGhhc2ggIT09IHRoaXMuaGFzaCkge1xuXHRcdFx0XHRcdGZvciAoY29uc3QgcGFyZW50IG9mIHRoaXMucGFyZW50cykge1xuXHRcdFx0XHRcdFx0cGFyZW50W05vZGUuTWV0YV0ucmVoYXNoKCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9LFxuXG5cdFx0XHQvKipcblx0XHRcdCAqIFVucGF1c2VzIG5vdGlmaWNhdGlvbnMgYW5kIHNlbmRzIG91dCBhbnkgcGVuZGluZyBub3RpZmljYXRpb25zLlxuXHRcdFx0ICovXG5cdFx0XHRyZXN1bWUoKSB7XG5cdFx0XHRcdHRoaXMucGF1c2VkID0gTWF0aC5tYXgoMCwgdGhpcy5wYXVzZWQgLSAxKTtcblx0XHRcdFx0aWYgKHRoaXMucGF1c2VkID09PSAwICYmIHRoaXMucGVuZGluZyA+IDApIHtcblx0XHRcdFx0XHR0aGlzLnBlbmRpbmcgPSAwO1xuXHRcdFx0XHRcdHRoaXMubm90aWZ5KG5vZGUpO1xuXHRcdFx0XHR9XG5cdFx0XHR9LFxuXG5cdFx0XHQvKipcblx0XHRcdCAqIFJlbW92ZXMgYSBsaXN0ZW5lci5cblx0XHRcdCAqXG5cdFx0XHQgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbbGlzdGVuZXJdIC0gVGhlIGZ1bmN0aW9uIHRvIGNhbGwgd2hlbiBzb21ldGhpbmcgY2hhbmdlcy5cblx0XHRcdCAqL1xuXHRcdFx0dW53YXRjaChsaXN0ZW5lcikge1xuXHRcdFx0XHRpZiAobGlzdGVuZXIgJiYgdHlwZW9mIGxpc3RlbmVyICE9PSAnZnVuY3Rpb24nKSB7XG5cdFx0XHRcdFx0dGhyb3cgbmV3IFR5cGVFcnJvcignRXhwZWN0ZWQgbGlzdGVuZXIgdG8gYmUgYSBmdW5jdGlvbicpO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0aWYgKCF0aGlzLmxpc3RlbmVycykge1xuXHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGlmIChsaXN0ZW5lcikge1xuXHRcdFx0XHRcdHRoaXMubGlzdGVuZXJzLmRlbGV0ZShsaXN0ZW5lcik7XG5cdFx0XHRcdFx0aWYgKHRoaXMucHJldmlvdXMpIHtcblx0XHRcdFx0XHRcdHRoaXMucHJldmlvdXMuZGVsZXRlKGxpc3RlbmVyKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0Ly8gcmVtb3ZlIGFsbCBsaXN0ZW5lcnNcblx0XHRcdFx0XHRmb3IgKGNvbnN0IFsgbGlzdGVuZXIgXSBvZiB0aGlzLmxpc3RlbmVycykge1xuXHRcdFx0XHRcdFx0dGhpcy5saXN0ZW5lcnMuZGVsZXRlKGxpc3RlbmVyKTtcblx0XHRcdFx0XHRcdGlmICh0aGlzLnByZXZpb3VzKSB7XG5cdFx0XHRcdFx0XHRcdHRoaXMucHJldmlvdXMuZGVsZXRlKGxpc3RlbmVyKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRpZiAoIXRoaXMubGlzdGVuZXJzLnNpemUpIHtcblx0XHRcdFx0XHR0aGlzLmxpc3RlbmVycyA9IG51bGw7XG5cdFx0XHRcdFx0dGhpcy5wcmV2aW91cyA9IG51bGw7XG5cdFx0XHRcdH1cblx0XHRcdH0sXG5cblx0XHRcdC8qKlxuXHRcdFx0ICogQWRkcyBhIGxpc3RlbmVyIHRvIGJlIGNhbGxlZCB3aGVuIHRoZSBzcGVjaWZpZWQgb2JqZWN0IG9yIGFueSBvZiBpdHNcblx0XHRcdCAqIHByb3BlcnRpZXMvZWxlbWVudHMgYXJlIGNoYW5nZWQuXG5cdFx0XHQgKlxuXHRcdFx0ICogQHBhcmFtIHtTdHJpbmd8QXJyYXkuPFN0cmluZz59IFtmaWx0ZXJdIC0gQSBwcm9wZXJ0eSBuYW1lIG9yIGFycmF5IG9mIG5lc3RlZFxuXHRcdFx0ICogcHJvcGVydGllcyB0byB3YXRjaC5cblx0XHRcdCAqIEBwYXJhbSB7RnVuY3Rpb259IGxpc3RlbmVyIC0gVGhlIGZ1bmN0aW9uIHRvIGNhbGwgd2hlbiBzb21ldGhpbmcgY2hhbmdlcy5cblx0XHRcdCAqL1xuXHRcdFx0d2F0Y2goZmlsdGVyLCBsaXN0ZW5lcikge1xuXHRcdFx0XHRpZiAodHlwZW9mIGZpbHRlciA9PT0gJ2Z1bmN0aW9uJykge1xuXHRcdFx0XHRcdGxpc3RlbmVyID0gZmlsdGVyO1xuXHRcdFx0XHRcdGZpbHRlciA9IG51bGw7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRpZiAoZmlsdGVyKSB7XG5cdFx0XHRcdFx0aWYgKHR5cGVvZiBmaWx0ZXIgPT09ICdzdHJpbmcnKSB7XG5cdFx0XHRcdFx0XHRmaWx0ZXIgPSBbIGZpbHRlciBdO1xuXHRcdFx0XHRcdH0gZWxzZSBpZiAoIUFycmF5LmlzQXJyYXkoZmlsdGVyKSkge1xuXHRcdFx0XHRcdFx0dGhyb3cgbmV3IFR5cGVFcnJvcignRXhwZWN0ZWQgZmlsdGVyIHRvIGJlIGEgc3RyaW5nIG9yIGFycmF5IG9mIHN0cmluZ3MnKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRpZiAodHlwZW9mIGxpc3RlbmVyICE9PSAnZnVuY3Rpb24nKSB7XG5cdFx0XHRcdFx0dGhyb3cgbmV3IFR5cGVFcnJvcignRXhwZWN0ZWQgbGlzdGVuZXIgdG8gYmUgYSBmdW5jdGlvbicpO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0aWYgKCF0aGlzLmxpc3RlbmVycykge1xuXHRcdFx0XHRcdHRoaXMubGlzdGVuZXJzID0gbmV3IE1hcCgpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHRoaXMubGlzdGVuZXJzLnNldChsaXN0ZW5lciwgZmlsdGVyKTtcblxuXHRcdFx0XHRpZiAoZmlsdGVyKSB7XG5cdFx0XHRcdFx0Y29uc3QgeyBmb3VuZCwgaGFzaCB9ID0gZmlsdGVyT2JqZWN0KG5vZGUsIGZpbHRlcik7XG5cdFx0XHRcdFx0aWYgKGZvdW5kKSB7XG5cdFx0XHRcdFx0XHRpZiAoIXRoaXMucHJldmlvdXMpIHtcblx0XHRcdFx0XHRcdFx0dGhpcy5wcmV2aW91cyA9IG5ldyBXZWFrTWFwKCk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR0aGlzLnByZXZpb3VzLnNldChsaXN0ZW5lciwgaGFzaCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fTtcblxuXHRcdGNvbnN0IGlzQXJyYXkgPSBBcnJheS5pc0FycmF5KHZhbHVlKTtcblxuXHRcdGNvbnN0IG5vZGUgPSBuZXcgUHJveHkoaXNBcnJheSA/IFtdIDoge30sIHtcblx0XHRcdGRlbGV0ZVByb3BlcnR5KHRhcmdldCwgcHJvcCkge1xuXHRcdFx0XHRsZXQgcmVzdWx0ID0gdHJ1ZTtcblxuXHRcdFx0XHRpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHRhcmdldCwgcHJvcCkpIHtcblx0XHRcdFx0XHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLWV4cHJlc3Npb25zXG5cdFx0XHRcdFx0dGFyZ2V0W3Byb3BdPy5bTm9kZS5NZXRhXT8ucGFyZW50cy5kZWxldGUobm9kZSk7XG5cdFx0XHRcdFx0cmVzdWx0ID0gZGVsZXRlIHRhcmdldFtwcm9wXTtcblxuXHRcdFx0XHRcdGRlbGV0ZSBpbnRlcm5hbC5oYXNoZXNbcHJvcF07XG5cdFx0XHRcdFx0aW50ZXJuYWwuaGFzaCA9IGhhc2hWYWx1ZShpbnRlcm5hbC5oYXNoZXMpO1xuXG5cdFx0XHRcdFx0aWYgKHJlc3VsdCkge1xuXHRcdFx0XHRcdFx0aW50ZXJuYWwubm90aWZ5KG5vZGUpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXG5cdFx0XHRcdHJldHVybiByZXN1bHQ7XG5cdFx0XHR9LFxuXG5cdFx0XHRnZXQodGFyZ2V0LCBwcm9wKSB7XG5cdFx0XHRcdGlmIChBcnJheS5pc0FycmF5KHRhcmdldCkpIHtcblx0XHRcdFx0XHRjb25zdCBhZGRpdGl2ZSA9IHByb3AgPT09ICdwdXNoJyB8fCBwcm9wID09PSAndW5zaGlmdCc7XG5cblx0XHRcdFx0XHRpZiAoYWRkaXRpdmUgfHwgcHJvcCA9PT0gJ3BvcCcgfHwgcHJvcCA9PT0gJ3NoaWZ0Jykge1xuXHRcdFx0XHRcdFx0cmV0dXJuIGZ1bmN0aW9uICguLi5hcmdzKSB7XG5cdFx0XHRcdFx0XHRcdGludGVybmFsLnBhdXNlKCk7XG5cdFx0XHRcdFx0XHRcdGNvbnN0IHJlc3VsdCA9IEFycmF5LnByb3RvdHlwZVtwcm9wXS5hcHBseSh0YXJnZXQsIGFyZ3MpO1xuXG5cdFx0XHRcdFx0XHRcdGludGVybmFsLnJlaGFzaCgpO1xuXHRcdFx0XHRcdFx0XHRpbnRlcm5hbC5yZXN1bWUoKTtcblxuXHRcdFx0XHRcdFx0XHRpZiAoIWFkZGl0aXZlIHx8IGFyZ3MubGVuZ3RoKSB7XG5cdFx0XHRcdFx0XHRcdFx0aW50ZXJuYWwubm90aWZ5KG5vZGUpO1xuXHRcdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdFx0cmV0dXJuIHJlc3VsdDtcblx0XHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0aWYgKHByb3AgPT09ICdzcGxpY2UnKSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gZnVuY3Rpb24gKHN0YXJ0LCBkZWxldGVDb3VudCwgLi4uaXRlbXMpIHtcblx0XHRcdFx0XHRcdFx0aW50ZXJuYWwucGF1c2UoKTtcblxuXHRcdFx0XHRcdFx0XHRpZiAoc3RhcnQgIT09IHVuZGVmaW5lZCAmJiBkZWxldGVDb3VudCA9PT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRcdFx0XHRcdFx0ZGVsZXRlQ291bnQgPSB0aGlzLmxlbmd0aCAtIHN0YXJ0O1xuXHRcdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdFx0Y29uc3QgeyBoYXNoIH0gPSBpbnRlcm5hbDtcblx0XHRcdFx0XHRcdFx0Y29uc3QgYXJyID0gQXJyYXkucHJvdG90eXBlLnNwbGljZS5jYWxsKHRhcmdldCwgc3RhcnQsIGRlbGV0ZUNvdW50LCAuLi5pdGVtcyk7XG5cdFx0XHRcdFx0XHRcdGZvciAoY29uc3QgaXRlbSBvZiBhcnIpIHtcblx0XHRcdFx0XHRcdFx0XHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLWV4cHJlc3Npb25zXG5cdFx0XHRcdFx0XHRcdFx0aXRlbT8uW05vZGUuTWV0YV0/LnBhcmVudHMuZGVsZXRlKG5vZGUpO1xuXHRcdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdFx0aW50ZXJuYWwucmVoYXNoKCk7XG5cdFx0XHRcdFx0XHRcdGludGVybmFsLnJlc3VtZSgpO1xuXG5cdFx0XHRcdFx0XHRcdGlmIChpbnRlcm5hbC5oYXNoICE9PSBoYXNoKSB7XG5cdFx0XHRcdFx0XHRcdFx0aW50ZXJuYWwubm90aWZ5KG5vZGUpO1xuXHRcdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdFx0cmV0dXJuIGFycjtcblx0XHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cblx0XHRcdFx0cmV0dXJuIHRhcmdldFtwcm9wXTtcblx0XHRcdH0sXG5cblx0XHRcdHNldCh0YXJnZXQsIHByb3AsIHZhbHVlKSB7XG5cdFx0XHRcdGlmICh0YXJnZXQgPT09IHZhbHVlKSB7XG5cdFx0XHRcdFx0dGhyb3cgbmV3IEVycm9yKCdDYW5ub3Qgc2V0IG9iamVjdCBwcm9wZXJ0eSB0byBpdHNlbGYnKTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGxldCBoYXNoID0gbnVsbDtcblx0XHRcdFx0Y29uc3QgZGVzYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodGFyZ2V0LCBwcm9wKTtcblxuXHRcdFx0XHRpZiAodmFsdWUgJiYgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiAhKHZhbHVlIGluc3RhbmNlb2YgRGF0ZSkgJiYgdmFsdWUgIT09IHByb2Nlc3MuZW52ICYmIHZhbHVlICE9PSBKU09OICYmIHZhbHVlICE9PSBNYXRoKSB7XG5cdFx0XHRcdFx0aWYgKHZhbHVlW05vZGUuTWV0YV0pIHtcblx0XHRcdFx0XHRcdHZhbHVlW05vZGUuTWV0YV0ucGFyZW50cy5hZGQobm9kZSk7XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdHZhbHVlID0gbmV3IGNscyh2YWx1ZSwgbm9kZSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdCh7IGhhc2ggfSA9IHZhbHVlW05vZGUuTWV0YV0pO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdGhhc2ggPSBoYXNoVmFsdWUodmFsdWUpO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0bGV0IGNoYW5nZWQgPSB0cnVlO1xuXG5cdFx0XHRcdGlmIChkZXNjKSB7XG5cdFx0XHRcdFx0aWYgKGludGVybmFsLmhhc2hlc1twcm9wXSA9PT0gaGFzaCkge1xuXHRcdFx0XHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0aW50ZXJuYWwucGFyZW50cy5kZWxldGUobm9kZSk7XG5cblx0XHRcdFx0XHQvLyBpZiB0aGUgZGVzdGluYXRpb24gcHJvcGVydHkgaGFzIGEgc2V0dGVyLCB0aGVuIHdlIGNhbid0IGFzc3VtZSB3ZSBuZWVkIHRvXG5cdFx0XHRcdFx0Ly8gZmlyZSBhIGRlbGV0ZVxuXHRcdFx0XHRcdGlmICh0eXBlb2YgZGVzYy5zZXQgIT09ICdmdW5jdGlvbicgJiYgKCFBcnJheS5pc0FycmF5KHRhcmdldCkgfHwgcHJvcCAhPT0gJ2xlbmd0aCcpKSB7XG5cdFx0XHRcdFx0XHRkZWxldGUgdGFyZ2V0W3Byb3BdO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXG5cdFx0XHRcdHRhcmdldFtwcm9wXSA9IHZhbHVlO1xuXG5cdFx0XHRcdGlmICh0eXBlb2YgY2xzLm9uU2V0ID09PSAnZnVuY3Rpb24nKSB7XG5cdFx0XHRcdFx0Y2xzLm9uU2V0KHsgaW50ZXJuYWwsIG5vZGUsIHByb3AsIHRhcmdldCwgdmFsdWUgfSk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRpbnRlcm5hbC5oYXNoZXNbcHJvcF0gPSBoYXNoO1xuXHRcdFx0XHRpbnRlcm5hbC5oYXNoID0gaGFzaFZhbHVlKGludGVybmFsLmhhc2hlcyk7XG5cblx0XHRcdFx0Zm9yIChjb25zdCBwYXJlbnQgb2YgaW50ZXJuYWwucGFyZW50cykge1xuXHRcdFx0XHRcdHBhcmVudFtOb2RlLk1ldGFdLnJlaGFzaCgpO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0aWYgKGNoYW5nZWQpIHtcblx0XHRcdFx0XHRpbnRlcm5hbC5ub3RpZnkobm9kZSk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHRcdH1cblx0XHR9KTtcblxuXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShub2RlLCBOb2RlLk1ldGEsIHsgdmFsdWU6IGludGVybmFsIH0pO1xuXG5cdFx0Ly8gaWYgdmFsdWUgaXMgYW4gb2JqZWN0LCB3ZSBjb3B5IHRoZSB2YWx1ZSBpbnRvIHRoaXMgbm9kZSBpbnN0YW5jZVxuXHRcdGlmICh2YWx1ZSAmJiB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnKSB7XG5cdFx0XHRpbnRlcm5hbC5oYXNoZXMgPSBpc0FycmF5ID8gW10gOiB7fTtcblx0XHRcdGludGVybmFsLmhhc2ggPSBoYXNoVmFsdWUoaW50ZXJuYWwuaGFzaGVzKTtcblx0XHRcdGZvciAoY29uc3Qga2V5IG9mIFJlZmxlY3Qub3duS2V5cyh2YWx1ZSkpIHtcblx0XHRcdFx0aWYgKGtleSA9PT0gTm9kZS5NZXRhIHx8IChpc0FycmF5ICYmIGtleSA9PT0gJ2xlbmd0aCcpKSB7XG5cdFx0XHRcdFx0Y29udGludWU7XG5cdFx0XHRcdH1cblx0XHRcdFx0bm9kZVtrZXldID0gdmFsdWVba2V5XTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRpZiAocGFyZW50ICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdGlmICghcGFyZW50Py5bTm9kZS5NZXRhXSkge1xuXHRcdFx0XHR0aHJvdyBuZXcgVHlwZUVycm9yKCdFeHBlY3RlZCBwYXJlbnQgdG8gYmUgYSBOb2RlJyk7XG5cdFx0XHR9XG5cblx0XHRcdGlmICh2YWx1ZSA9PT0gcGFyZW50IHx8IHZhbHVlID09PSBwYXJlbnRbTm9kZS5NZXRhXS52YWx1ZSkge1xuXHRcdFx0XHR0aHJvdyBuZXcgRXJyb3IoJ1BhcmVudCBtdXN0IGJlIG5vdCBiZSB0aGUgc2FtZSBhcyB0aGUgbm9kZScpO1xuXHRcdFx0fVxuXG5cdFx0XHRpbnRlcm5hbC5wYXJlbnRzLmFkZChwYXJlbnQpO1xuXHRcdH1cblxuXHRcdHJldHVybiBub2RlO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJlY3Vyc2l2ZWx5IG1lcmdlIHRoZSB2YWx1ZSBpbnRvIHRoaXMgb2JqZWN0LlxuXHQgKlxuXHQgKiBAcGFyYW0ge05vZGV9IG5vZGUgLSBUaGUgbm9kZSB0byBwYXVzZS5cblx0ICogQHBhcmFtIHtPYmplY3R9IHZhbHVlIC0gVGhlIHZhbHVlIHRvIG1lcmdlLlxuXHQgKiBAYWNjZXNzIHB1YmxpY1xuXHQgKi9cblx0c3RhdGljIG1lcmdlKG5vZGUsIHZhbHVlKSB7XG5cdFx0aWYgKCFub2RlPy5bTm9kZS5NZXRhXSkge1xuXHRcdFx0dGhyb3cgbmV3IFR5cGVFcnJvcignRXhwZWN0ZWQgbWVyZ2UgZGVzdGluYXRpb24gdG8gYmUgYSBOb2RlIGluc3RhbmNlJyk7XG5cdFx0fVxuXG5cdFx0aWYgKCF2YWx1ZSB8fCB0eXBlb2YgdmFsdWUgIT09ICdvYmplY3QnIHx8IEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG5cdFx0XHR0aHJvdyBuZXcgVHlwZUVycm9yKCdFeHBlY3RlZCBtZXJnZSBzb3VyY2UgdG8gYmUgYW4gb2JqZWN0Jyk7XG5cdFx0fVxuXG5cdFx0bm9kZVtOb2RlLk1ldGFdLnBhdXNlKCk7XG5cblx0XHQoZnVuY3Rpb24gbWl4KHNyYywgZGVzdCkge1xuXHRcdFx0Zm9yIChjb25zdCBrZXkgb2YgUmVmbGVjdC5vd25LZXlzKHNyYykpIHtcblx0XHRcdFx0aWYgKGtleSA9PT0gTm9kZS5NZXRhKSB7XG5cdFx0XHRcdFx0Y29udGludWU7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRjb25zdCBzcmNWYWx1ZSA9IHNyY1trZXldO1xuXG5cdFx0XHRcdGlmIChzcmNWYWx1ZSAhPT0gbnVsbCAmJiB0eXBlb2Ygc3JjVmFsdWUgPT09ICdvYmplY3QnICYmICFBcnJheS5pc0FycmF5KHNyY1ZhbHVlKSkge1xuXHRcdFx0XHRcdGlmICghZGVzdFtrZXldPy5bTm9kZS5NZXRhXSkge1xuXHRcdFx0XHRcdFx0ZGVzdFtrZXldID0ge307XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdG1peChzcmNWYWx1ZSwgZGVzdFtrZXldKTtcblx0XHRcdFx0fSBlbHNlIGlmIChBcnJheS5pc0FycmF5KGRlc3Rba2V5XSkgJiYgQXJyYXkuaXNBcnJheShzcmNWYWx1ZSkpIHtcblx0XHRcdFx0XHQvLyBvdmVyd3JpdGUgZGVzdGluYXRpb24gd2l0aCBuZXcgdmFsdWVzXG5cdFx0XHRcdFx0ZGVzdFtrZXldLnNwbGljZSgwLCBkZXN0W2tleV0ubGVuZ3RoLCAuLi5zcmNWYWx1ZSk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0ZGVzdFtrZXldID0gc3JjVmFsdWU7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9KHZhbHVlLCBub2RlKSk7XG5cblx0XHRub2RlW05vZGUuTWV0YV0ucmVzdW1lKCk7XG5cdH1cblxuXHQvKipcblx0ICogUGF1c2VzIGFsbCBjaGFuZ2Ugbm90aWZpY2F0aW9ucyB1bnRpbCByZXN1bWVkLlxuXHQgKlxuXHQgKiBAcGFyYW0ge05vZGV9IG5vZGUgLSBUaGUgbm9kZSB0byBwYXVzZS5cblx0ICogQHJldHVybnMge0Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGl0IHdhcyBhbHJlYWR5IHBhdXNlZC5cblx0ICogQGFjY2VzcyBwdWJsaWNcblx0ICovXG5cdHN0YXRpYyBwYXVzZShub2RlKSB7XG5cdFx0cmV0dXJuIG5vZGVbTm9kZS5NZXRhXS5wYXVzZSgpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFVucGF1c2VzIG5vdGlmaWNhdGlvbnMgYW5kIHNlbmRzIG91dCBhbnkgcGVuZGluZyBub3RpZmljYXRpb25zLlxuXHQgKlxuXHQgKiBAcGFyYW0ge05vZGV9IG5vZGUgLSBUaGUgbm9kZSB0byByZXN1bWUuXG5cdCAqIEBhY2Nlc3MgcHVibGljXG5cdCAqL1xuXHRzdGF0aWMgcmVzdW1lKG5vZGUpIHtcblx0XHRub2RlW05vZGUuTWV0YV0ucmVzdW1lKCk7XG5cdH1cblxuXHQvKipcblx0ICogUmVtb3ZlcyBhIGxpc3RlbmVyLlxuXHQgKlxuXHQgKiBAcGFyYW0ge05vZGV9IG5vZGUgLSBUaGUgbm9kZSB0byB1bndhdGNoLlxuXHQgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbbGlzdGVuZXJdIC0gVGhlIGZ1bmN0aW9uIHRvIGNhbGwgd2hlbiBzb21ldGhpbmcgY2hhbmdlcy5cblx0ICogQGFjY2VzcyBwdWJsaWNcblx0ICovXG5cdHN0YXRpYyB1bndhdGNoKG5vZGUsIGxpc3RlbmVyKSB7XG5cdFx0bm9kZVtOb2RlLk1ldGFdLnVud2F0Y2gobGlzdGVuZXIpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEFkZHMgYSBsaXN0ZW5lciB0byBiZSBjYWxsZWQgd2hlbiB0aGUgc3BlY2lmaWVkIG9iamVjdCBvciBhbnkgb2YgaXRzIHByb3BlcnRpZXMvZWxlbWVudHMgYXJlXG5cdCAqIGNoYW5nZWQuXG5cdCAqXG5cdCAqIEBwYXJhbSB7Tm9kZX0gbm9kZSAtIFRoZSBub2RlIHRvIHdhdGNoLlxuXHQgKiBAcGFyYW0ge1N0cmluZ3xBcnJheS48U3RyaW5nPn0gW2ZpbHRlcl0gLSBBIHByb3BlcnR5IG5hbWUgb3IgYXJyYXkgb2YgbmVzdGVkIHByb3BlcnRpZXMgdG9cblx0ICogd2F0Y2guXG5cdCAqIEBwYXJhbSB7RnVuY3Rpb259IGxpc3RlbmVyIC0gVGhlIGZ1bmN0aW9uIHRvIGNhbGwgd2hlbiBzb21ldGhpbmcgY2hhbmdlcy5cblx0ICogQGFjY2VzcyBwdWJsaWNcblx0ICovXG5cdHN0YXRpYyB3YXRjaChub2RlLCBmaWx0ZXIsIGxpc3RlbmVyKSB7XG5cdFx0bm9kZVtOb2RlLk1ldGFdLndhdGNoKGZpbHRlciwgbGlzdGVuZXIpO1xuXHR9XG59XG5cbi8qKlxuICogRmlsdGVycyB0aGUgc3BlY2lmaWVkIG5vZGUuXG4gKlxuICogQHBhcmFtIHtOb2RlfSBub2RlIC0gVGhlIG5vZGUgdG8gZmlsdGVyLlxuICogQHBhcmFtIHtBcnJheS48U3RyaW5nPn0gZmlsdGVyIC0gVGhlIGZpbHRlciB0byBhcHBseSB0byB0aGUgbm9kZS5cbiAqIEByZXR1cm5zIHtPYmplY3R9XG4gKi9cbmZ1bmN0aW9uIGZpbHRlck9iamVjdChub2RlLCBmaWx0ZXIpIHtcblx0bGV0IGZvdW5kID0gdHJ1ZTtcblx0bGV0IGhhc2ggPSBudWxsO1xuXHRsZXQgdmFsdWUgPSBub2RlO1xuXG5cdC8vIGZpbmQgdGhlIHZhbHVlIHdlJ3JlIGludGVyZXN0ZWQgaW5cblx0Zm9yIChsZXQgaSA9IDAsIGxlbiA9IGZpbHRlci5sZW5ndGg7IHZhbHVlICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgaSA8IGxlbjsgaSsrKSB7XG5cdFx0Y29uc3Qga2V5ID0gZmlsdGVyW2ldO1xuXHRcdGlmICghT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHZhbHVlLCBrZXkpKSB7XG5cdFx0XHRmb3VuZCA9IGZhbHNlO1xuXHRcdFx0dmFsdWUgPSB1bmRlZmluZWQ7XG5cdFx0XHRicmVhaztcblx0XHR9XG5cdFx0aGFzaCA9IHZhbHVlW05vZGUuTWV0YV0uaGFzaGVzW2tleV07XG5cdFx0aWYgKGhhc2ggPT09IHVuZGVmaW5lZCkge1xuXHRcdFx0aGFzaCA9IG51bGw7XG5cdFx0fVxuXHRcdHZhbHVlID0gdmFsdWVba2V5XTtcblx0fVxuXG5cdHJldHVybiB7IGZvdW5kLCBoYXNoLCB2YWx1ZSB9O1xufVxuIl0sImZpbGUiOiJub2RlLmpzIn0=

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

_defineProperty(Store, "extension", null);
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInN0b3JlLmpzIl0sIm5hbWVzIjpbIlN0b3JlIiwiY29uc3RydWN0b3IiLCJvcHRzIiwibmV3IiwidGFyZ2V0IiwiVHlwZUVycm9yIiwiZGVsZXRlIiwia2V5IiwiRXJyb3IiLCJnZXQiLCJoYXMiLCJrZXlzIiwibG9hZCIsImZpbGUiLCJtZXJnZSIsInZhbHVlIiwic2F2ZSIsInNjaGVtYSIsIl9zY2hlbWEiLCJuZXdTY2hlbWEiLCJKb2kiLCJpc1NjaGVtYSIsInR5cGUiLCJzZXQiLCJ1bndhdGNoIiwiaGFuZGxlciIsIndhdGNoIiwiZmlsdGVyIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBRUE7Ozs7OztBQUVBO0FBQ0E7QUFDQTtBQUNlLE1BQU1BLEtBQU4sQ0FBWTtBQUMxQjtBQUNEO0FBQ0E7QUFDQTs7QUFHQztBQUNEO0FBQ0E7QUFDQTtBQUNBOztBQUdDO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0NDLEVBQUFBLFdBQVcsQ0FBQ0MsSUFBSSxHQUFHLEVBQVIsRUFBWTtBQUFBLHFDQVRiLElBU2E7O0FBQ3RCLFFBQUlDLEdBQUcsQ0FBQ0MsTUFBSixLQUFlSixLQUFuQixFQUEwQjtBQUN6QixZQUFNLElBQUlLLFNBQUosQ0FBYyxnREFBZCxDQUFOO0FBQ0E7O0FBRUQsUUFBSSxDQUFDSCxJQUFELElBQVMsT0FBT0EsSUFBUCxLQUFnQixRQUE3QixFQUF1QztBQUN0QyxZQUFNLElBQUlHLFNBQUosQ0FBYyx3Q0FBZCxDQUFOO0FBQ0E7QUFDRDtBQUVEO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQ0NDLEVBQUFBLE1BQU0sQ0FBQ0MsR0FBRCxFQUFNO0FBQ1gsVUFBTSxJQUFJQyxLQUFKLENBQVUsMEJBQVYsQ0FBTjtBQUNBO0FBRUQ7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUNDQyxFQUFBQSxHQUFHLENBQUNGLEdBQUQsRUFBTTtBQUNSLFVBQU0sSUFBSUMsS0FBSixDQUFVLHVCQUFWLENBQU47QUFDQTtBQUVEO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQ0NFLEVBQUFBLEdBQUcsQ0FBQ0gsR0FBRCxFQUFNO0FBQ1IsVUFBTSxJQUFJQyxLQUFKLENBQVUsdUJBQVYsQ0FBTjtBQUNBO0FBRUQ7QUFDRDtBQUNBO0FBQ0E7QUFDQTs7O0FBQ0NHLEVBQUFBLElBQUksR0FBRztBQUNOLFVBQU0sSUFBSUgsS0FBSixDQUFVLHdCQUFWLENBQU47QUFDQTtBQUVEO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQ0NJLEVBQUFBLElBQUksQ0FBQ0MsSUFBRCxFQUFPO0FBQ1YsVUFBTSxJQUFJTCxLQUFKLENBQVUsd0JBQVYsQ0FBTjtBQUNBO0FBRUQ7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFDQ00sRUFBQUEsS0FBSyxDQUFDQyxLQUFELEVBQVE7QUFDWixVQUFNLElBQUlQLEtBQUosQ0FBVSx5QkFBVixDQUFOO0FBQ0E7QUFFRDtBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUNDUSxFQUFBQSxJQUFJLENBQUNILElBQUQsRUFBTztBQUNWLFVBQU0sSUFBSUwsS0FBSixDQUFVLHdCQUFWLENBQU47QUFDQTtBQUVEO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7OztBQUNDLE1BQUlTLE1BQUosR0FBYTtBQUNaLFdBQU8sS0FBS0MsT0FBWjtBQUNBOztBQUVELE1BQUlELE1BQUosQ0FBV0UsU0FBWCxFQUFzQjtBQUNyQixRQUFJQSxTQUFTLEtBQUssQ0FBQ0MsYUFBSUMsUUFBSixDQUFhRixTQUFiLENBQUQsSUFBNEJBLFNBQVMsQ0FBQ0csSUFBVixLQUFtQixRQUFwRCxDQUFiLEVBQTRFO0FBQzNFLFlBQU0sSUFBSWpCLFNBQUosQ0FBYyxzQ0FBZCxDQUFOO0FBQ0E7O0FBQ0QsU0FBS2EsT0FBTCxHQUFlQyxTQUFmO0FBQ0E7QUFFRDtBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQ0NJLEVBQUFBLEdBQUcsQ0FBQ2hCLEdBQUQsRUFBTVEsS0FBTixFQUFhO0FBQ2YsVUFBTSxJQUFJUCxLQUFKLENBQVUsdUJBQVYsQ0FBTjtBQUNBO0FBRUQ7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFDQ2dCLEVBQUFBLE9BQU8sQ0FBQ0MsT0FBRCxFQUFVLENBQ2hCO0FBQ0E7QUFFRDtBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQ0NDLEVBQUFBLEtBQUssQ0FBQ0MsTUFBRCxFQUFTRixPQUFULEVBQWtCLENBQ3RCO0FBQ0E7O0FBbkp5Qjs7OztnQkFBTnpCLEssZUFLRCxJIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50IG5vLXVudXNlZC12YXJzOiAwICovXG5cbmltcG9ydCBKb2kgZnJvbSAnam9pJztcblxuLyoqXG4gKiBBIGJhc2UgY2xhc3MgZm9yIGFsbCBzdG9yZSBpbXBsZW1udGF0aW9ucy5cbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgU3RvcmUge1xuXHQvKipcblx0ICogVGhlIGZpbGUgZXh0ZW5zaW9uIGFzc29jaWF0ZWQgdG8gdGhpcyB0eXBlIG9mIHN0b3JlLlxuXHQgKiBAdHlwZSB7U3RyaW5nfVxuXHQgKi9cblx0c3RhdGljIGV4dGVuc2lvbiA9IG51bGw7XG5cblx0LyoqXG5cdCAqIEEgSm9pIHNjaGVtYS4gVGhlIGBMYXllcmAgd2lsbCBwYXNzIGluIHRoZSBzY2hlbWEgaW50byB0aGUgYHNjaGVtYWAgc2V0dGVyIGR1cmluZ1xuXHQgKiBjb25zdHJ1Y3Rpb24gb3Igd2hlbiB0aGUgc2NoZW1hIGlzIGxvYWRlZC5cblx0ICogQHR5cGUge09iamVjdH1cblx0ICovXG5cdF9zY2hlbWEgPSBudWxsO1xuXG5cdC8qKlxuXHQgKiBJbml0aWFsaXplcyB0aGUgc3RvcmUuXG5cdCAqXG5cdCAqIEBwYXJhbSB7T2JqZWN0fSBbb3B0c10gLSBWYXJpb3VzIG9wdGlvbnMuXG5cdCAqIEBwYXJhbSB7U3RyaW5nfSBbb3B0cy5maWxlXSAtIFRoZSBmaWxlIGJhY2tpbmcgdGhpcyBsYXllcidzIHN0b3JlLlxuXHQgKiBAYWNjZXNzIHB1YmxpY1xuXHQgKi9cblx0Y29uc3RydWN0b3Iob3B0cyA9IHt9KSB7XG5cdFx0aWYgKG5ldy50YXJnZXQgPT09IFN0b3JlKSB7XG5cdFx0XHR0aHJvdyBuZXcgVHlwZUVycm9yKCdDYW5ub3QgY3JlYXRlIGluc3RhbmNlIG9mIGFic3RyYWN0IFN0b3JlIGNsYXNzJyk7XG5cdFx0fVxuXG5cdFx0aWYgKCFvcHRzIHx8IHR5cGVvZiBvcHRzICE9PSAnb2JqZWN0Jykge1xuXHRcdFx0dGhyb3cgbmV3IFR5cGVFcnJvcignRXhwZWN0ZWQgc3RvcmUgb3B0aW9ucyB0byBiZSBhbiBvYmplY3QnKTtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogRGVsZXRlcyBhIGNvbmZpZyB2YWx1ZS5cblx0ICpcblx0ICogQHBhcmFtIHtBcnJheS48U3RyaW5nPn0ga2V5IC0gVGhlIGtleSB0byBkZWxldGUuXG5cdCAqIEBhY2Nlc3MgcHVibGljXG5cdCAqL1xuXHRkZWxldGUoa2V5KSB7XG5cdFx0dGhyb3cgbmV3IEVycm9yKCdkZWxldGUoKSBub3QgaW1wbGVtZW50ZWQnKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZXRyaWV2ZXMgYSB2YWx1ZSBmb3IgdGhlIHNwZWNpZmllZCBrZXkuXG5cdCAqXG5cdCAqIEBwYXJhbSB7QXJyYXkuPFN0cmluZz59IFtrZXldIC0gVGhlIGtleSB0byBnZXQuIFdoZW4gYHVuZGVmaW5lZGAsIHRoZSBlbnRpcmUgY29uZmlnIGlzXG5cdCAqIHJldHVybmVkLlxuXHQgKiBAYWNjZXNzIHB1YmxpY1xuXHQgKi9cblx0Z2V0KGtleSkge1xuXHRcdHRocm93IG5ldyBFcnJvcignZ2V0KCkgbm90IGltcGxlbWVudGVkJyk7XG5cdH1cblxuXHQvKipcblx0ICogRGV0ZXJtaW5lcyBpZiBhIGtleSBpcyBzZXQuXG5cdCAqXG5cdCAqIEBwYXJhbSB7QXJyYXkuPFN0cmluZz59IFtrZXldIC0gVGhlIGtleSB0byBjaGVjay5cblx0ICogQGFjY2VzcyBwdWJsaWNcblx0ICovXG5cdGhhcyhrZXkpIHtcblx0XHR0aHJvdyBuZXcgRXJyb3IoJ2hhcygpIG5vdCBpbXBsZW1lbnRlZCcpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJldHVybnMgYW4gYXJyYXkgb2YgdGhlIG5hbWVzIG9mIHRoZSBrZXlzIGRlZmluZWQgb24gdGhlIG9iamVjdC5cblx0ICpcblx0ICogQGFjY2VzcyBwdWJsaWNcblx0ICovXG5cdGtleXMoKSB7XG5cdFx0dGhyb3cgbmV3IEVycm9yKCdrZXlzKCkgbm90IGltcGxlbWVudGVkJyk7XG5cdH1cblxuXHQvKipcblx0ICogTG9hZHMgYSBjb25maWcgZmlsZS5cblx0ICpcblx0ICogQHBhcmFtIHtTdHJpbmd9IGZpbGUgLSBUaGUgcGF0aCB0byB0aGUgY29uZmlnIGZpbGUgdG8gbG9hZC5cblx0ICogQGFjY2VzcyBwdWJsaWNcblx0ICovXG5cdGxvYWQoZmlsZSkge1xuXHRcdHRocm93IG5ldyBFcnJvcignbG9hZCgpIG5vdCBpbXBsZW1lbnRlZCcpO1xuXHR9XG5cblx0LyoqXG5cdCAqIERlZXBseSBtZXJnZXMgYW4gb2JqZWN0IGludG8gYSBsYXllcidzIHN0b3JlLlxuXHQgKlxuXHQgKiBAcGFyYW0ge09iamVjdH0gdmFsdWUgLSBUaGUgZGF0YSB0byBtZXJnZS5cblx0ICogQGFjY2VzcyBwdWJsaWNcblx0ICovXG5cdG1lcmdlKHZhbHVlKSB7XG5cdFx0dGhyb3cgbmV3IEVycm9yKCdtZXJnZSgpIG5vdCBpbXBsZW1lbnRlZCcpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFNhdmVzIHRoZSBkYXRhIHRvIGRpc2suXG5cdCAqXG5cdCAqIEBwYXJhbSB7U3RyaW5nfSBmaWxlIC0gVGhlIGZpbGVuYW1lIHRvIHNhdmUgdGhlIGRhdGEgdG8uXG5cdCAqIEBhY2Nlc3MgcHVibGljXG5cdCAqL1xuXHRzYXZlKGZpbGUpIHtcblx0XHR0aHJvdyBuZXcgRXJyb3IoJ3NhdmUoKSBub3QgaW1wbGVtZW50ZWQnKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBBIEpvaSBzY2hlbWEgb2JqZWN0LlxuXHQgKiBAdHlwZSB7T2JqZWN0fVxuXHQgKiBAYWNjZXNzIHB1YmxpY1xuXHQgKi9cblx0Z2V0IHNjaGVtYSgpIHtcblx0XHRyZXR1cm4gdGhpcy5fc2NoZW1hO1xuXHR9XG5cblx0c2V0IHNjaGVtYShuZXdTY2hlbWEpIHtcblx0XHRpZiAobmV3U2NoZW1hICYmICghSm9pLmlzU2NoZW1hKG5ld1NjaGVtYSkgfHwgbmV3U2NoZW1hLnR5cGUgIT09ICdvYmplY3QnKSkge1xuXHRcdFx0dGhyb3cgbmV3IFR5cGVFcnJvcignRXhwZWN0ZWQgc2NoZW1hIHJvb3QgdG8gYmUgYW4gb2JqZWN0Jyk7XG5cdFx0fVxuXHRcdHRoaXMuX3NjaGVtYSA9IG5ld1NjaGVtYTtcblx0fVxuXG5cdC8qKlxuXHQgKiBTZXRzIHRoZSB2YWx1ZSBmb3IgYSBnaXZlbiBjb25maWcga2V5LlxuXHQgKlxuXHQgKiBAcGFyYW0ge0FycmF5LjxTdHJpbmc+fSBrZXkgLSBUaGUga2V5IHRvIHNldC5cblx0ICogQHBhcmFtIHsqfSB2YWx1ZSAtIFRoZSB2YWx1ZSB0byBzZXQuXG5cdCAqIEBhY2Nlc3MgcHVibGljXG5cdCAqL1xuXHRzZXQoa2V5LCB2YWx1ZSkge1xuXHRcdHRocm93IG5ldyBFcnJvcignc2V0KCkgbm90IGltcGxlbWVudGVkJyk7XG5cdH1cblxuXHQvKipcblx0ICogUmVtb3ZlcyBhIHdhdGNoIGhhbmRsZXIuXG5cdCAqXG5cdCAqIEBwYXJhbSB7RnVuY3Rpb259IGhhbmRsZXIgLSBBIGNhbGxiYWNrIHRvIGZpcmUgd2hlbiBhIGNoYW5nZSBvY2N1cnMuXG5cdCAqIEBhY2Nlc3MgcHVibGljXG5cdCAqL1xuXHR1bndhdGNoKGhhbmRsZXIpIHtcblx0XHQvLyBub3RoaW5nIHRvIGRvXG5cdH1cblxuXHQvKipcblx0ICogUmVnaXN0ZXJzIGEgd2F0Y2ggaGFuZGxlci5cblx0ICpcblx0ICogQHBhcmFtIHtBcnJheS48U3RyaW5nPn0gW2ZpbHRlcl0gLSBBIHByb3BlcnR5IG5hbWUgb3IgYXJyYXkgb2YgbmVzdGVkIHByb3BlcnRpZXMgdG8gd2F0Y2guXG5cdCAqIEBwYXJhbSB7RnVuY3Rpb259IGhhbmRsZXIgLSBBIGNhbGxiYWNrIHRvIGZpcmUgd2hlbiBhIGNoYW5nZSBvY2N1cnMuXG5cdCAqIEBhY2Nlc3MgcHVibGljXG5cdCAqL1xuXHR3YXRjaChmaWx0ZXIsIGhhbmRsZXIpIHtcblx0XHQvLyBub3RoaW5nIHRvIGRvXG5cdH1cbn1cbiJdLCJmaWxlIjoic3RvcmUuanMifQ==
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInN0b3JlLmpzIl0sIm5hbWVzIjpbIlN0b3JlIiwiY29uc3RydWN0b3IiLCJvcHRzIiwibmV3IiwidGFyZ2V0IiwiVHlwZUVycm9yIiwiZGVsZXRlIiwia2V5IiwiRXJyb3IiLCJnZXQiLCJoYXMiLCJrZXlzIiwibG9hZCIsImZpbGUiLCJtZXJnZSIsInZhbHVlIiwic2F2ZSIsInNjaGVtYSIsIl9zY2hlbWEiLCJuZXdTY2hlbWEiLCJKb2kiLCJpc1NjaGVtYSIsInR5cGUiLCJzZXQiLCJ1bndhdGNoIiwiaGFuZGxlciIsIndhdGNoIiwiZmlsdGVyIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBRUE7Ozs7OztBQUVBO0FBQ0E7QUFDQTtBQUNlLE1BQU1BLEtBQU4sQ0FBWTtBQUMxQjtBQUNEO0FBQ0E7QUFDQTs7QUFHQztBQUNEO0FBQ0E7QUFDQTtBQUNBOztBQUdDO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0NDLEVBQUFBLFdBQVcsQ0FBQ0MsSUFBSSxHQUFHLEVBQVIsRUFBWTtBQUFBLHFDQVRiLElBU2E7O0FBQ3RCLFFBQUlDLEdBQUcsQ0FBQ0MsTUFBSixLQUFlSixLQUFuQixFQUEwQjtBQUN6QixZQUFNLElBQUlLLFNBQUosQ0FBYyxnREFBZCxDQUFOO0FBQ0E7O0FBRUQsUUFBSSxDQUFDSCxJQUFELElBQVMsT0FBT0EsSUFBUCxLQUFnQixRQUE3QixFQUF1QztBQUN0QyxZQUFNLElBQUlHLFNBQUosQ0FBYyx3Q0FBZCxDQUFOO0FBQ0E7QUFDRDtBQUVEO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQ0NDLEVBQUFBLE1BQU0sQ0FBQ0MsR0FBRCxFQUFNO0FBQ1gsVUFBTSxJQUFJQyxLQUFKLENBQVUsMEJBQVYsQ0FBTjtBQUNBO0FBRUQ7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUNDQyxFQUFBQSxHQUFHLENBQUNGLEdBQUQsRUFBTTtBQUNSLFVBQU0sSUFBSUMsS0FBSixDQUFVLHVCQUFWLENBQU47QUFDQTtBQUVEO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQ0NFLEVBQUFBLEdBQUcsQ0FBQ0gsR0FBRCxFQUFNO0FBQ1IsVUFBTSxJQUFJQyxLQUFKLENBQVUsdUJBQVYsQ0FBTjtBQUNBO0FBRUQ7QUFDRDtBQUNBO0FBQ0E7QUFDQTs7O0FBQ0NHLEVBQUFBLElBQUksR0FBRztBQUNOLFVBQU0sSUFBSUgsS0FBSixDQUFVLHdCQUFWLENBQU47QUFDQTtBQUVEO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQ0NJLEVBQUFBLElBQUksQ0FBQ0MsSUFBRCxFQUFPO0FBQ1YsVUFBTSxJQUFJTCxLQUFKLENBQVUsd0JBQVYsQ0FBTjtBQUNBO0FBRUQ7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFDQ00sRUFBQUEsS0FBSyxDQUFDQyxLQUFELEVBQVE7QUFDWixVQUFNLElBQUlQLEtBQUosQ0FBVSx5QkFBVixDQUFOO0FBQ0E7QUFFRDtBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUNDUSxFQUFBQSxJQUFJLENBQUNILElBQUQsRUFBTztBQUNWLFVBQU0sSUFBSUwsS0FBSixDQUFVLHdCQUFWLENBQU47QUFDQTtBQUVEO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7OztBQUNXLE1BQU5TLE1BQU0sR0FBRztBQUNaLFdBQU8sS0FBS0MsT0FBWjtBQUNBOztBQUVTLE1BQU5ELE1BQU0sQ0FBQ0UsU0FBRCxFQUFZO0FBQ3JCLFFBQUlBLFNBQVMsS0FBSyxDQUFDQyxhQUFJQyxRQUFKLENBQWFGLFNBQWIsQ0FBRCxJQUE0QkEsU0FBUyxDQUFDRyxJQUFWLEtBQW1CLFFBQXBELENBQWIsRUFBNEU7QUFDM0UsWUFBTSxJQUFJakIsU0FBSixDQUFjLHNDQUFkLENBQU47QUFDQTs7QUFDRCxTQUFLYSxPQUFMLEdBQWVDLFNBQWY7QUFDQTtBQUVEO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFDQ0ksRUFBQUEsR0FBRyxDQUFDaEIsR0FBRCxFQUFNUSxLQUFOLEVBQWE7QUFDZixVQUFNLElBQUlQLEtBQUosQ0FBVSx1QkFBVixDQUFOO0FBQ0E7QUFFRDtBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUNDZ0IsRUFBQUEsT0FBTyxDQUFDQyxPQUFELEVBQVUsQ0FDaEI7QUFDQTtBQUVEO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFDQ0MsRUFBQUEsS0FBSyxDQUFDQyxNQUFELEVBQVNGLE9BQVQsRUFBa0IsQ0FDdEI7QUFDQTs7QUFuSnlCOzs7O2dCQUFOekIsSyxlQUtELEkiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQgbm8tdW51c2VkLXZhcnM6IDAgKi9cblxuaW1wb3J0IEpvaSBmcm9tICdqb2knO1xuXG4vKipcbiAqIEEgYmFzZSBjbGFzcyBmb3IgYWxsIHN0b3JlIGltcGxlbW50YXRpb25zLlxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTdG9yZSB7XG5cdC8qKlxuXHQgKiBUaGUgZmlsZSBleHRlbnNpb24gYXNzb2NpYXRlZCB0byB0aGlzIHR5cGUgb2Ygc3RvcmUuXG5cdCAqIEB0eXBlIHtTdHJpbmd9XG5cdCAqL1xuXHRzdGF0aWMgZXh0ZW5zaW9uID0gbnVsbDtcblxuXHQvKipcblx0ICogQSBKb2kgc2NoZW1hLiBUaGUgYExheWVyYCB3aWxsIHBhc3MgaW4gdGhlIHNjaGVtYSBpbnRvIHRoZSBgc2NoZW1hYCBzZXR0ZXIgZHVyaW5nXG5cdCAqIGNvbnN0cnVjdGlvbiBvciB3aGVuIHRoZSBzY2hlbWEgaXMgbG9hZGVkLlxuXHQgKiBAdHlwZSB7T2JqZWN0fVxuXHQgKi9cblx0X3NjaGVtYSA9IG51bGw7XG5cblx0LyoqXG5cdCAqIEluaXRpYWxpemVzIHRoZSBzdG9yZS5cblx0ICpcblx0ICogQHBhcmFtIHtPYmplY3R9IFtvcHRzXSAtIFZhcmlvdXMgb3B0aW9ucy5cblx0ICogQHBhcmFtIHtTdHJpbmd9IFtvcHRzLmZpbGVdIC0gVGhlIGZpbGUgYmFja2luZyB0aGlzIGxheWVyJ3Mgc3RvcmUuXG5cdCAqIEBhY2Nlc3MgcHVibGljXG5cdCAqL1xuXHRjb25zdHJ1Y3RvcihvcHRzID0ge30pIHtcblx0XHRpZiAobmV3LnRhcmdldCA9PT0gU3RvcmUpIHtcblx0XHRcdHRocm93IG5ldyBUeXBlRXJyb3IoJ0Nhbm5vdCBjcmVhdGUgaW5zdGFuY2Ugb2YgYWJzdHJhY3QgU3RvcmUgY2xhc3MnKTtcblx0XHR9XG5cblx0XHRpZiAoIW9wdHMgfHwgdHlwZW9mIG9wdHMgIT09ICdvYmplY3QnKSB7XG5cdFx0XHR0aHJvdyBuZXcgVHlwZUVycm9yKCdFeHBlY3RlZCBzdG9yZSBvcHRpb25zIHRvIGJlIGFuIG9iamVjdCcpO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBEZWxldGVzIGEgY29uZmlnIHZhbHVlLlxuXHQgKlxuXHQgKiBAcGFyYW0ge0FycmF5LjxTdHJpbmc+fSBrZXkgLSBUaGUga2V5IHRvIGRlbGV0ZS5cblx0ICogQGFjY2VzcyBwdWJsaWNcblx0ICovXG5cdGRlbGV0ZShrZXkpIHtcblx0XHR0aHJvdyBuZXcgRXJyb3IoJ2RlbGV0ZSgpIG5vdCBpbXBsZW1lbnRlZCcpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJldHJpZXZlcyBhIHZhbHVlIGZvciB0aGUgc3BlY2lmaWVkIGtleS5cblx0ICpcblx0ICogQHBhcmFtIHtBcnJheS48U3RyaW5nPn0gW2tleV0gLSBUaGUga2V5IHRvIGdldC4gV2hlbiBgdW5kZWZpbmVkYCwgdGhlIGVudGlyZSBjb25maWcgaXNcblx0ICogcmV0dXJuZWQuXG5cdCAqIEBhY2Nlc3MgcHVibGljXG5cdCAqL1xuXHRnZXQoa2V5KSB7XG5cdFx0dGhyb3cgbmV3IEVycm9yKCdnZXQoKSBub3QgaW1wbGVtZW50ZWQnKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBEZXRlcm1pbmVzIGlmIGEga2V5IGlzIHNldC5cblx0ICpcblx0ICogQHBhcmFtIHtBcnJheS48U3RyaW5nPn0gW2tleV0gLSBUaGUga2V5IHRvIGNoZWNrLlxuXHQgKiBAYWNjZXNzIHB1YmxpY1xuXHQgKi9cblx0aGFzKGtleSkge1xuXHRcdHRocm93IG5ldyBFcnJvcignaGFzKCkgbm90IGltcGxlbWVudGVkJyk7XG5cdH1cblxuXHQvKipcblx0ICogUmV0dXJucyBhbiBhcnJheSBvZiB0aGUgbmFtZXMgb2YgdGhlIGtleXMgZGVmaW5lZCBvbiB0aGUgb2JqZWN0LlxuXHQgKlxuXHQgKiBAYWNjZXNzIHB1YmxpY1xuXHQgKi9cblx0a2V5cygpIHtcblx0XHR0aHJvdyBuZXcgRXJyb3IoJ2tleXMoKSBub3QgaW1wbGVtZW50ZWQnKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBMb2FkcyBhIGNvbmZpZyBmaWxlLlxuXHQgKlxuXHQgKiBAcGFyYW0ge1N0cmluZ30gZmlsZSAtIFRoZSBwYXRoIHRvIHRoZSBjb25maWcgZmlsZSB0byBsb2FkLlxuXHQgKiBAYWNjZXNzIHB1YmxpY1xuXHQgKi9cblx0bG9hZChmaWxlKSB7XG5cdFx0dGhyb3cgbmV3IEVycm9yKCdsb2FkKCkgbm90IGltcGxlbWVudGVkJyk7XG5cdH1cblxuXHQvKipcblx0ICogRGVlcGx5IG1lcmdlcyBhbiBvYmplY3QgaW50byBhIGxheWVyJ3Mgc3RvcmUuXG5cdCAqXG5cdCAqIEBwYXJhbSB7T2JqZWN0fSB2YWx1ZSAtIFRoZSBkYXRhIHRvIG1lcmdlLlxuXHQgKiBAYWNjZXNzIHB1YmxpY1xuXHQgKi9cblx0bWVyZ2UodmFsdWUpIHtcblx0XHR0aHJvdyBuZXcgRXJyb3IoJ21lcmdlKCkgbm90IGltcGxlbWVudGVkJyk7XG5cdH1cblxuXHQvKipcblx0ICogU2F2ZXMgdGhlIGRhdGEgdG8gZGlzay5cblx0ICpcblx0ICogQHBhcmFtIHtTdHJpbmd9IGZpbGUgLSBUaGUgZmlsZW5hbWUgdG8gc2F2ZSB0aGUgZGF0YSB0by5cblx0ICogQGFjY2VzcyBwdWJsaWNcblx0ICovXG5cdHNhdmUoZmlsZSkge1xuXHRcdHRocm93IG5ldyBFcnJvcignc2F2ZSgpIG5vdCBpbXBsZW1lbnRlZCcpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEEgSm9pIHNjaGVtYSBvYmplY3QuXG5cdCAqIEB0eXBlIHtPYmplY3R9XG5cdCAqIEBhY2Nlc3MgcHVibGljXG5cdCAqL1xuXHRnZXQgc2NoZW1hKCkge1xuXHRcdHJldHVybiB0aGlzLl9zY2hlbWE7XG5cdH1cblxuXHRzZXQgc2NoZW1hKG5ld1NjaGVtYSkge1xuXHRcdGlmIChuZXdTY2hlbWEgJiYgKCFKb2kuaXNTY2hlbWEobmV3U2NoZW1hKSB8fCBuZXdTY2hlbWEudHlwZSAhPT0gJ29iamVjdCcpKSB7XG5cdFx0XHR0aHJvdyBuZXcgVHlwZUVycm9yKCdFeHBlY3RlZCBzY2hlbWEgcm9vdCB0byBiZSBhbiBvYmplY3QnKTtcblx0XHR9XG5cdFx0dGhpcy5fc2NoZW1hID0gbmV3U2NoZW1hO1xuXHR9XG5cblx0LyoqXG5cdCAqIFNldHMgdGhlIHZhbHVlIGZvciBhIGdpdmVuIGNvbmZpZyBrZXkuXG5cdCAqXG5cdCAqIEBwYXJhbSB7QXJyYXkuPFN0cmluZz59IGtleSAtIFRoZSBrZXkgdG8gc2V0LlxuXHQgKiBAcGFyYW0geyp9IHZhbHVlIC0gVGhlIHZhbHVlIHRvIHNldC5cblx0ICogQGFjY2VzcyBwdWJsaWNcblx0ICovXG5cdHNldChrZXksIHZhbHVlKSB7XG5cdFx0dGhyb3cgbmV3IEVycm9yKCdzZXQoKSBub3QgaW1wbGVtZW50ZWQnKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZW1vdmVzIGEgd2F0Y2ggaGFuZGxlci5cblx0ICpcblx0ICogQHBhcmFtIHtGdW5jdGlvbn0gaGFuZGxlciAtIEEgY2FsbGJhY2sgdG8gZmlyZSB3aGVuIGEgY2hhbmdlIG9jY3Vycy5cblx0ICogQGFjY2VzcyBwdWJsaWNcblx0ICovXG5cdHVud2F0Y2goaGFuZGxlcikge1xuXHRcdC8vIG5vdGhpbmcgdG8gZG9cblx0fVxuXG5cdC8qKlxuXHQgKiBSZWdpc3RlcnMgYSB3YXRjaCBoYW5kbGVyLlxuXHQgKlxuXHQgKiBAcGFyYW0ge0FycmF5LjxTdHJpbmc+fSBbZmlsdGVyXSAtIEEgcHJvcGVydHkgbmFtZSBvciBhcnJheSBvZiBuZXN0ZWQgcHJvcGVydGllcyB0byB3YXRjaC5cblx0ICogQHBhcmFtIHtGdW5jdGlvbn0gaGFuZGxlciAtIEEgY2FsbGJhY2sgdG8gZmlyZSB3aGVuIGEgY2hhbmdlIG9jY3Vycy5cblx0ICogQGFjY2VzcyBwdWJsaWNcblx0ICovXG5cdHdhdGNoKGZpbHRlciwgaGFuZGxlcikge1xuXHRcdC8vIG5vdGhpbmcgdG8gZG9cblx0fVxufVxuIl0sImZpbGUiOiJzdG9yZS5qcyJ9
{
"name": "config-kit",
"version": "1.5.0",
"version": "1.6.0",
"description": "A universal, layered configuration system.",

@@ -25,7 +25,9 @@ "main": "./dist/index.js",

"dependencies": {
"detect-indent": "^6.0.0",
"fs-extra": "^9.1.0",
"import-fresh": "^3.3.0",
"joi": "^17.3.0",
"joi": "^17.4.0",
"snooplogg": "^3.0.2",
"source-map-support": "^0.5.19"
"source-map-support": "^0.5.19",
"xmldom": "^0.4.0"
},

@@ -32,0 +34,0 @@ "devDependencies": {

@@ -14,2 +14,3 @@ # config-kit

* Schema validation using [joi]
* Support for `.json`, `.js`, and `.xml` data stores
* Default values

@@ -16,0 +17,0 @@ * Environment variable precedence

Sorry, the diff of this file is too big to display

SocketSocket SOC 2 Logo

Product

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

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc