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

config-kit

Package Overview
Dependencies
Maintainers
2
Versions
20
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

config-kit - npm Package Compare versions

Comparing version 1.6.2 to 1.7.0

dist/fsutil.js

6

CHANGELOG.md

@@ -0,1 +1,7 @@

# v1.7.0 (Jun 8, 2021)
* feat: Added `applyOwner` flag with default of `true` which sets the owner of the metadata file
to the owner of closest existing parent directory to protect against commands run as sudo.
* chore: Updated dependencies.
# v1.6.2 (Apr 21, 2021)

@@ -2,0 +8,0 @@

12

dist/layer-list.js

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

function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }

@@ -83,2 +83,4 @@ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }

* @param {Boolean} [opts.allowUnknown=true] - Allows object values to contain unknown keys.
* @param {Boolean} [opts.applyOwner=true] - When `true`, determines the owner of the closest
* existing parent directory and apply the owner to the file and any newly created directories.
* @param {Object} [opts.data] - Datwa to initialize the base config layer with.

@@ -119,4 +121,6 @@ * @param {String} [opts.file] - The file to associate with the base layer.

this.allowUnknown = opts.allowUnknown !== false;
this.applyOwner = opts.applyOwner !== false;
this.layers.push(this.map[Base] = new _layer.default({
allowNulls: opts.allowNulls,
applyOwner: opts.applyOwner,
data: opts.data,

@@ -209,2 +213,6 @@ file: opts.file,

if (!Object.prototype.hasOwnProperty.call(layer, 'applyOwner')) {
layer.applyOwner = this.applyOwner;
}
if (!isLayer) {

@@ -440,2 +448,2 @@ log(`Creating new layer: ${highlight(String(id))}`);

exports.default = LayerList;
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxheWVyLWxpc3QuanMiXSwibmFtZXMiOlsibG9nIiwiaGlnaGxpZ2h0Iiwic25vb3Bsb2dnIiwic3R5bGVzIiwiQWxsIiwiU3ltYm9sIiwiQmFzZSIsIml0ZXJhdG9yIiwiTGF5ZXJMaXN0IiwiY29uc3RydWN0b3IiLCJvcHRzIiwiaSIsImxheWVycyIsImxlbmd0aCIsIm5leHQiLCJkb25lIiwidmFsdWUiLCJ1bmRlZmluZWQiLCJhbGxvd051bGxzIiwiYWxsb3dVbmtub3duIiwicHVzaCIsIm1hcCIsIkxheWVyIiwiZGF0YSIsImZpbGUiLCJpZCIsIm9yZGVyIiwiSW5maW5pdHkiLCJyZWFkb25seSIsInNjaGVtYSIsInN0YXRpYyIsInN0b3JlIiwidmFsaWRhdGUiLCJhcmdzIiwidmFsaWRhdGVPcHRpb25zIiwiYWRkIiwibGF5ZXIiLCJUeXBlRXJyb3IiLCJBcnJheSIsImlzQXJyYXkiLCJFcnJvciIsImV4aXN0aW5nIiwicHJvcCIsIk9iamVjdCIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImlzTGF5ZXIiLCJzY2hlbWFzIiwiU2V0IiwiYmFzZSIsImZpbmQiLCJmcm9tIiwiU3RyaW5nIiwicCIsImZpbmRJbmRleCIsInNwbGljZSIsImluc2VydGVkIiwiZmlsdGVyIiwiaGFuZGxlciIsIndhdGNoZXJzIiwid2F0Y2giLCJnZXQiLCJxdWVyeSIsInJldmVyc2UiLCJpZHMiLCJyZW1vdmUiLCJpZE9yTGF5ZXIiLCJ1bmxvYWQiLCJzZXQiLCJ0b1N0cmluZyIsImluZGVudGF0aW9uIiwib2JqIiwiY2ZnIiwiSlNPTiIsInN0cmluZ2lmeSIsIk1hdGgiLCJtYXgiLCJ1bndhdGNoIiwibmFtZSIsImpvaW4iLCJmaWx0ZXJIYXNoIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7Ozs7Ozs7Ozs7OztBQUVBLE1BQU07QUFBRUEsRUFBQUE7QUFBRixJQUFVLHdCQUFVLFlBQVYsRUFBd0IsWUFBeEIsQ0FBaEI7QUFD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O0FBQ0E7QUFDRDtBQUVEO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFDQ0UsRUFBQUEsS0FBSyxDQUFDSCxNQUFELEVBQVNDLE9BQVQsRUFBa0I7QUFDdEIsUUFBSSxDQUFDQSxPQUFELElBQVksT0FBT0EsT0FBUCxLQUFtQixVQUFuQyxFQUErQztBQUM5QyxZQUFNLElBQUl0QixTQUFKLENBQWMsbUNBQWQsQ0FBTjtBQUNBOztBQUVEckMsSUFBQUEsR0FBRyxDQUFFLHdCQUF1QkMsU0FBUyxDQUFFLEdBQUUwRCxPQUFPLENBQUNvQixJQUFLLElBQWpCLENBQXNCLElBQUdyQixNQUFNLENBQUM3QyxNQUFQLEdBQWdCNkMsTUFBTSxDQUFDc0IsSUFBUCxDQUFZLEdBQVosQ0FBaEIsR0FBbUMsRUFBRyxFQUFqRyxDQUFIO0FBRUEsU0FBS3BCLFFBQUwsQ0FBY3hDLElBQWQsQ0FBbUI7QUFBRXNDLE1BQUFBLE1BQUY7QUFBVXVCLE1BQUFBLFVBQVUsRUFBRSxxQkFBVXZCLE1BQVYsQ0FBdEI7QUFBeUNDLE1BQUFBO0FBQXpDLEtBQW5COztBQUVBLFNBQUssTUFBTXZCLEtBQVgsSUFBb0IsS0FBS3hCLE1BQXpCLEVBQWlDO0FBQ2hDd0IsTUFBQUEsS0FBSyxDQUFDeUIsS0FBTixDQUFZSCxNQUFaLEVBQW9CQyxPQUFwQjtBQUNBO0FBQ0Q7O0FBaFY2QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBMYXllciBmcm9tICcuL2xheWVyJztcbmltcG9ydCBzbm9vcGxvZ2cgZnJvbSAnc25vb3Bsb2dnJztcbmltcG9ydCB7IGFycmF5aWZ5LCBoYXNoVmFsdWUsIHZhbGlkYXRlIH0gZnJvbSAnLi91dGlsJztcblxuY29uc3QgeyBsb2cgfSA9IHNub29wbG9nZygnY29uZmlnLWtpdCcpKCdsYXllci1saXN0Jyk7XG5jb25zdCB7IGhpZ2hsaWdodCB9ID0gc25vb3Bsb2dnLnN0eWxlcztcblxuLyoqXG4gKiBBIHVuaXF1ZSBzeW1ib2wgdXNlZCB0byBxdWVyeSBhbGwgbGF5ZXJzLlxuICogQHR5cGUge1N5bWJvbH1cbiAqL1xuZXhwb3J0IGNvbnN0IEFsbCA9IFN5bWJvbCgnYWxsJyk7XG5cbi8qKlxuICogVGhlIGlkIGZvciB0aGUgYmFzZSBsYXllci5cbiAqIEB0eXBlIHtTeW1ib2x9XG4gKi9cbmV4cG9ydCBjb25zdCBCYXNlID0gU3ltYm9sKCdiYXNlJyk7XG5cbi8qKlxuICogQW4gaW5kZXhlZCBsaXN0IG9mIGVsZW1lbnRzLlxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBMYXllckxpc3Qge1xuXHQvKipcblx0ICogRm9yY2VzIGFsbCBub2RlcyBvZiBhIHNjaGVtYSB0byBhbGxvdyBudWxscy5cblx0ICogQHR5cGUge0Jvb2xlYW59XG5cdCAqL1xuXHRhbGxvd051bGxzID0gZmFsc2U7XG5cblx0LyoqXG5cdCAqIEFsbG93cyBvYmplY3QgdmFsdWVzIHRvIGNvbnRhaW4gdW5rbm93biBrZXlzLlxuXHQgKiBAdHlwZSB7Qm9vbGVhbn1cblx0ICovXG5cdGFsbG93VW5rbm93biA9IHRydWU7XG5cblx0LyoqXG5cdCAqIFRoZSBvcmRlcmVkIGxpc3Qgb2YgbGF5ZXJzLlxuXHQgKiBAdHlwZSB7QXJyYXkuPExheWVyPn1cblx0ICovXG5cdGxheWVycyA9IFtdO1xuXG5cdC8qKlxuXHQgKiBBIHF1aWNrIGxvb2t1cCBiYXNlZCBvbiBpZC5cblx0ICogQHR5cGUge29iamVjdH1cblx0ICovXG5cdG1hcCA9IHt9O1xuXG5cdC8qKlxuXHQgKiBBIGxpc3Qgb2YgYWxsIGFjdGl2ZSB3YXRjaGVycy5cblx0ICogQHR5cGUge0FycmF5LjxPYmplY3Q+fVxuXHQgKi9cblx0d2F0Y2hlcnMgPSBbXTtcblxuXHQvKipcblx0ICogSW5pdGlhbGl6ZXMgdGhlIG9wdGlvbnMuXG5cdCAqXG5cdCAqIEBwYXJhbSB7T2JqZWN0fSBbb3B0c10gLSBWYXJpb3VzIG9wdGlvbnMuXG5cdCAqIEBwYXJhbSB7Qm9vbGVhbn0gW29wdHMuYWxsb3dOdWxsc10gLSBGb3JjZXMgYWxsIG5vZGVzIG9mIGEgc2NoZW1hIHRvIGFsbG93IG51bGxzLlxuXHQgKiBAcGFyYW0ge0Jvb2xlYW59IFtvcHRzLmFsbG93VW5rbm93bj10cnVlXSAtIEFsbG93cyBvYmplY3QgdmFsdWVzIHRvIGNvbnRhaW4gdW5rbm93biBrZXlzLlxuXHQgKiBAcGFyYW0ge09iamVjdH0gW29wdHMuZGF0YV0gLSBEYXR3YSB0byBpbml0aWFsaXplIHRoZSBiYXNlIGNvbmZpZyBsYXllciB3aXRoLlxuXHQgKiBAcGFyYW0ge1N0cmluZ30gW29wdHMuZmlsZV0gLSBUaGUgZmlsZSB0byBhc3NvY2lhdGUgd2l0aCB0aGUgYmFzZSBsYXllci5cblx0ICogQHBhcmFtIHtPYmplY3R9IFtvcHRzLnNjaGVtYV0gLSBBIEpvaSBzY2hlbWEgZm9yIHRoZSBiYXNlIGxheWVyLlxuXHQgKiBAcGFyYW0ge1N0b3JlfEZ1bmN0aW9ufSBbb3B0cy5zdG9yZV0gLSBBIHN0b3JlIGluc3RhbmNlIG9yIHN0b3JlIGNsYXNzIHRvIHVzZSBmb3IgdGhlIGJhc2Vcblx0ICogbGF5ZXIuXG5cdCAqIEBhY2Nlc3MgcHVibGljXG5cdCAqL1xuXHRjb25zdHJ1Y3RvcihvcHRzID0ge30pIHtcblx0XHR0aGlzLmFsbG93TnVsbHMgPSBvcHRzLmFsbG93TnVsbHM7XG5cdFx0dGhpcy5hbGxvd1Vua25vd24gPSBvcHRzLmFsbG93VW5rbm93biAhPT0gZmFsc2U7XG5cblx0XHR0aGlzLmxheWVycy5wdXNoKHRoaXMubWFwW0Jhc2VdID0gbmV3IExheWVyKHtcblx0XHRcdGFsbG93TnVsbHM6IG9wdHMuYWxsb3dOdWxscyxcblx0XHRcdGRhdGE6ICAgICAgIG9wdHMuZGF0YSxcblx0XHRcdGZpbGU6ICAgICAgIG9wdHMuZmlsZSxcblx0XHRcdGlkOiAgICAgICAgIEJhc2UsXG5cdFx0XHRvcmRlcjogICAgICAtSW5maW5pdHksXG5cdFx0XHRyZWFkb25seTogICBmYWxzZSxcblx0XHRcdHNjaGVtYTogICAgIG9wdHMuc2NoZW1hLFxuXHRcdFx0c3RhdGljOiAgICAgdHJ1ZSxcblx0XHRcdHN0b3JlOiAgICAgIG9wdHMuc3RvcmUsXG5cdFx0XHR2YWxpZGF0ZTogICBhcmdzID0+IHZhbGlkYXRlKHtcblx0XHRcdFx0Li4uYXJncyxcblx0XHRcdFx0dmFsaWRhdGVPcHRpb25zOiB7XG5cdFx0XHRcdFx0YWxsb3dVbmtub3duOiB0aGlzLmFsbG93VW5rbm93bixcblx0XHRcdFx0XHQuLi5hcmdzLnZhbGlkYXRlT3B0aW9uc1xuXHRcdFx0XHR9XG5cdFx0XHR9KVxuXHRcdH0pKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBBZGRzIGEgbGF5ZXIuIElmIHRoZSBsYXllciBpZCBhbHJlYWR5IGV4aXN0cywgaXQgd2lsbCByZXBsYWNlIGl0LlxuXHQgKlxuXHQgKiBAcGFyYW0ge0xheWVyfE9iamVjdHxTdHJpbmd9IGxheWVyIC0gVGhlIGxheWVyLCBsYXllciBjb250cnVjdG9yIGFyZ3VtZW50cywgb3IgbGF5ZXIgaWQuXG5cdCAqIEByZXR1cm5zIHtMYXllcn1cblx0ICogQGFjY2VzcyBwdWJsaWNcblx0ICovXG5cdGFkZChsYXllcikge1xuXHRcdGlmICghbGF5ZXIpIHtcblx0XHRcdHRocm93IG5ldyBUeXBlRXJyb3IoJ0V4cGVjdGVkIGxheWVyIHRvIGJlIGFuIG9iamVjdCcpO1xuXHRcdH1cblxuXHRcdGlmICh0eXBlb2YgbGF5ZXIgPT09ICdzdHJpbmcnIHx8IHR5cGVvZiBsYXllciA9PT0gJ3N5bWJvbCcpIHtcblx0XHRcdGxheWVyID0geyBpZDogbGF5ZXIgfTtcblx0XHR9XG5cblx0XHRpZiAodHlwZW9mIGxheWVyICE9PSAnb2JqZWN0JyB8fCBBcnJheS5pc0FycmF5KGxheWVyKSkge1xuXHRcdFx0dGhyb3cgbmV3IFR5cGVFcnJvcignRXhwZWN0ZWQgbGF5ZXIgdG8gYmUgYW4gb2JqZWN0Jyk7XG5cdFx0fVxuXG5cdFx0Y29uc3QgeyBpZCB9ID0gbGF5ZXI7XG5cblx0XHRpZiAoIWlkKSB7XG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoJ0V4cGVjdGVkIGxheWVyIHRvIGhhdmUgYW4gaWQnKTtcblx0XHR9XG5cblx0XHRjb25zdCBleGlzdGluZyA9IHRoaXMubWFwW2lkXTtcblx0XHRpZiAoZXhpc3RpbmcpIHtcblx0XHRcdGZvciAoY29uc3QgcHJvcCBvZiBbICduYW1lc3BhY2UnLCAnb3JkZXInLCAncmVhZG9ubHknLCAnc2NoZW1hJywgJ3N0YXRpYycgXSkge1xuXHRcdFx0XHRpZiAoIU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChsYXllciwgcHJvcCkpIHtcblx0XHRcdFx0XHRsYXllcltwcm9wXSA9IGV4aXN0aW5nW3Byb3BdO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Y29uc3QgaXNMYXllciA9IGxheWVyIGluc3RhbmNlb2YgTGF5ZXI7XG5cdFx0aWYgKGlzTGF5ZXIgfHwgIWxheWVyLnZhbGlkYXRlKSB7XG5cdFx0XHRsYXllci52YWxpZGF0ZSA9IGFyZ3MgPT4ge1xuXHRcdFx0XHRjb25zdCBzY2hlbWFzID0gbmV3IFNldCgpO1xuXHRcdFx0XHRjb25zdCBiYXNlID0gdGhpcy5sYXllcnMuZmluZChsYXllciA9PiBsYXllci5pZCA9PT0gQmFzZSk/LnNjaGVtYTtcblx0XHRcdFx0aWYgKGJhc2UpIHtcblx0XHRcdFx0XHRzY2hlbWFzLmFkZChiYXNlKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRpZiAoYXJncy5zY2hlbWFzKSB7XG5cdFx0XHRcdFx0Zm9yIChjb25zdCBzY2hlbWEgb2YgYXJncy5zY2hlbWFzKSB7XG5cdFx0XHRcdFx0XHRzY2hlbWFzLmFkZChzY2hlbWEpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXG5cdFx0XHRcdHJldHVybiB2YWxpZGF0ZSh7XG5cdFx0XHRcdFx0Li4uYXJncyxcblx0XHRcdFx0XHRzY2hlbWFzOiBBcnJheS5mcm9tKHNjaGVtYXMpLFxuXHRcdFx0XHRcdHZhbGlkYXRlT3B0aW9uczoge1xuXHRcdFx0XHRcdFx0YWxsb3dVbmtub3duOiB0aGlzLmFsbG93VW5rbm93blxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSk7XG5cdFx0XHR9O1xuXHRcdH1cblxuXHRcdGxheWVyLmFsbG93TnVsbHMgPSB0aGlzLmFsbG93TnVsbHM7XG5cblx0XHRpZiAoIWlzTGF5ZXIpIHtcblx0XHRcdGxvZyhgQ3JlYXRpbmcgbmV3IGxheWVyOiAke2hpZ2hsaWdodChTdHJpbmcoaWQpKX1gKTtcblx0XHRcdGxheWVyID0gbmV3IExheWVyKGxheWVyKTtcblx0XHR9IGVsc2UgaWYgKGV4aXN0aW5nICYmIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChleGlzdGluZywgJ2ZpbGUnKSkge1xuXHRcdFx0bGF5ZXIuZmlsZSA9IGV4aXN0aW5nLmZpbGU7XG5cdFx0fVxuXG5cdFx0dGhpcy5tYXBbaWRdID0gbGF5ZXI7XG5cblx0XHRpZiAoZXhpc3RpbmcpIHtcblx0XHRcdGNvbnN0IHAgPSB0aGlzLmxheWVycy5maW5kSW5kZXgoZXhpc3RpbmcgPT4gZXhpc3RpbmcuaWQgPT09IGlkKTtcblx0XHRcdGlmIChwICE9PSAtMSkge1xuXHRcdFx0XHR0aGlzLmxheWVycy5zcGxpY2UocCwgMSk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0bGV0IGluc2VydGVkO1xuXHRcdGZvciAobGV0IGkgPSB0aGlzLmxheWVycy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuXHRcdFx0aWYgKGxheWVyLm9yZGVyID49IHRoaXMubGF5ZXJzW2ldLm9yZGVyKSB7XG5cdFx0XHRcdGluc2VydGVkID0gISF0aGlzLmxheWVycy5zcGxpY2UoaSArIDEsIDAsIGxheWVyKTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdGlmICghaW5zZXJ0ZWQpIHtcblx0XHRcdHRoaXMubGF5ZXJzLnB1c2gobGF5ZXIpO1xuXHRcdH1cblxuXHRcdC8vIGFkZCB0aGUgd2F0Y2hlcnMgdG8gdGhpcyBsYXllclxuXHRcdGZvciAoY29uc3QgeyBmaWx0ZXIsIGhhbmRsZXIgfSBvZiB0aGlzLndhdGNoZXJzKSB7XG5cdFx0XHRsYXllci53YXRjaChmaWx0ZXIsIGhhbmRsZXIpO1xuXHRcdH1cblxuXHRcdHJldHVybiBsYXllcjtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZXR1cm5zIGEgbGF5ZXIgYnkgaWQuXG5cdCAqXG5cdCAqIEBwYXJhbSB7U3RyaW5nfFN5bWJvbH0gaWQgLSBUaGUgbGF5ZXIgaWQuXG5cdCAqIEByZXR1cm5zIHtMYXllcn1cblx0ICogQGFjY2VzcyBwdWJsaWNcblx0ICovXG5cdGdldChpZCkge1xuXHRcdHJldHVybiB0aGlzLm1hcFtpZF07XG5cdH1cblxuXHQvKipcblx0ICogRmluZHMgYWxsIGxheWVycyB0aGF0IG1hdGNoIGEgc3BlY2lmaWVkIGlkcy5cblx0ICpcblx0ICogQHBhcmFtIHtTdHJpbmd8U3ltYm9sfEFycmF5LjxTdHJpbmd8U3ltYm9sPn0gaWQgLSBUaGUgbGF5ZXIgaWQgb3IgaWRzLlxuXHQgKiBAcGFyYW0ge0Jvb2xlYW59IFtyZXZlcnNlXSAtIFdoZW4gYHRydWVgLCB0aGUgcmVzdWx0cyBhcmUgaXRlcmF0ZWQgaW4gcmV2ZXJzZSBvcmRlci5cblx0ICogQHJldHVybnMge09iamVjdH1cblx0ICogQGFjY2VzcyBwdWJsaWNcblx0ICovXG5cdHF1ZXJ5KGlkLCByZXZlcnNlKSB7XG5cdFx0bGV0IGlkcyA9IFtdO1xuXHRcdGlmIChpZCA9PT0gdW5kZWZpbmVkIHx8IGlkID09PSBBbGwpIHtcblx0XHRcdGlkcyA9IHRoaXMubGF5ZXJzLm1hcChsYXllciA9PiBsYXllci5pZCk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGlkcyA9IGFycmF5aWZ5KGlkLCB0cnVlKS5maWx0ZXIoaWQgPT4gdGhpcy5tYXBbaWRdKTtcblx0XHRcdGlmICghaWRzLmxlbmd0aCkge1xuXHRcdFx0XHR0aHJvdyBuZXcgRXJyb3IoYExheWVyIFwiJHtTdHJpbmcoaWQpfVwiIG5vdCBmb3VuZGApO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdGlmIChyZXZlcnNlKSB7XG5cdFx0XHRpZHMucmV2ZXJzZSgpO1xuXHRcdH1cblxuXHRcdHJldHVybiB7XG5cdFx0XHRbU3ltYm9sLml0ZXJhdG9yXTogKCkgPT4ge1xuXHRcdFx0XHRsZXQgaSA9IDA7XG5cdFx0XHRcdHJldHVybiB7XG5cdFx0XHRcdFx0bmV4dDogKCkgPT4ge1xuXHRcdFx0XHRcdFx0Y29uc3QgZG9uZSA9IGkgPj0gaWRzLmxlbmd0aDtcblx0XHRcdFx0XHRcdHJldHVybiB7IGRvbmUsIHZhbHVlOiBkb25lID8gdW5kZWZpbmVkIDogdGhpcy5tYXBbaWRzW2krK11dIH07XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9O1xuXHRcdFx0fVxuXHRcdH07XG5cdH1cblxuXHQvKipcblx0ICogRGVzdHJveXMgYSBsYXllciBieSBpZCBvciBsYXllciByZWZlcmVuY2UuXG5cdCAqXG5cdCAqIEBwYXJhbSB7U3RyaW5nfFN5bWJvbHxBcnJheS48U3RyaW5nfFN5bWJvbD59IGlkT3JMYXllciAtIFRoZSBsYXllciBpZCBvciBpZHMuXG5cdCAqIEBwYXJhbSB7Qm9vbGVhbn0gW3JldmVyc2VdIC0gV2hlbiBgdHJ1ZWAsIHRoZSByZXN1bHRzIGFyZSBpdGVyYXRlZCBpbiByZXZlcnNlIG9yZGVyLlxuXHQgKiBAcmV0dXJucyB7T2JqZWN0fVxuXHQgKiBAYWNjZXNzIHB1YmxpY1xuXHQgKi9cblx0cmVtb3ZlKGlkT3JMYXllcikge1xuXHRcdGNvbnN0IGxheWVyID0gdGhpcy5tYXBbaWRPckxheWVyXTtcblx0XHRjb25zdCBwID0gdGhpcy5sYXllcnMuZmluZEluZGV4KGxheWVyID0+IGxheWVyID09PSBpZE9yTGF5ZXIgfHwgbGF5ZXIuaWQgPT09IGlkT3JMYXllcik7XG5cdFx0aWYgKGxheWVyKSB7XG5cdFx0XHRsb2coYFVubG9hZGluZyBsYXllcjogJHtoaWdobGlnaHQoU3RyaW5nKGlkT3JMYXllcikpfWApO1xuXHRcdFx0dGhpcy5tYXBbaWRPckxheWVyXS51bmxvYWQoKTtcblx0XHRcdGRlbGV0ZSB0aGlzLm1hcFtpZE9yTGF5ZXJdO1xuXHRcdH1cblx0XHRpZiAocCAhPT0gLTEpIHtcblx0XHRcdHRoaXMubGF5ZXJzLnNwbGljZShwLCAxKTtcblx0XHRcdHJldHVybiB0cnVlO1xuXHRcdH1cblx0XHRyZXR1cm4gZmFsc2U7XG5cdH1cblxuXHQvKipcblx0ICogQSByZXZlcnNlIGl0ZXJhdG9yLlxuXHQgKlxuXHQgKiBAdHlwZSB7T2JqZWN0fVxuXHQgKiBAYWNjZXNzIHB1YmxpY1xuXHQgKi9cblx0cmV2ZXJzZSA9IHtcblx0XHRbU3ltYm9sLml0ZXJhdG9yXTogKCkgPT4ge1xuXHRcdFx0bGV0IGkgPSB0aGlzLmxheWVycy5sZW5ndGggLSAxO1xuXHRcdFx0cmV0dXJuIHtcblx0XHRcdFx0bmV4dDogKCkgPT4ge1xuXHRcdFx0XHRcdGNvbnN0IGRvbmUgPSBpIDwgMDtcblx0XHRcdFx0XHRyZXR1cm4geyBkb25lLCB2YWx1ZTogZG9uZSA/IHVuZGVmaW5lZCA6IHRoaXMubGF5ZXJzW2ktLV0gfTtcblx0XHRcdFx0fVxuXHRcdFx0fTtcblx0XHR9XG5cdH07XG5cblx0LyoqXG5cdCAqIEFuIGFsaWFzIGZvciBgYWRkKClgLlxuXHQgKlxuXHQgKiBAcGFyYW0ge0xheWVyfE9iamVjdHxTdHJpbmd9IGxheWVyIC0gVGhlIGxheWVyLCBsYXllciBjb250cnVjdG9yIGFyZ3VtZW50cywgb3IgbGF5ZXIgaWQuXG5cdCAqIEByZXR1cm5zIHtMYXllcn1cblx0ICogQGFjY2VzcyBwdWJsaWNcblx0ICovXG5cdHNldChsYXllcikge1xuXHRcdHJldHVybiB0aGlzLmFkZChsYXllcik7XG5cdH1cblxuXHQvKipcblx0ICogQSByZXZlcnNlIGl0ZXJhdG9yLlxuXHQgKlxuXHQgKiBAcmV0dXJucyB7T2JqZWN0fVxuXHQgKiBAYWNjZXNzIHB1YmxpY1xuXHQgKi9cblx0W1N5bWJvbC5pdGVyYXRvcl0oKSB7XG5cdFx0bGV0IGkgPSAwO1xuXHRcdHJldHVybiB7XG5cdFx0XHRuZXh0OiAoKSA9PiB7XG5cdFx0XHRcdGNvbnN0IGRvbmUgPSBpID49IHRoaXMubGF5ZXJzLmxlbmd0aDtcblx0XHRcdFx0cmV0dXJuIHsgZG9uZSwgdmFsdWU6IGRvbmUgPyB1bmRlZmluZWQgOiB0aGlzLmxheWVyc1tpKytdIH07XG5cdFx0XHR9XG5cdFx0fTtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZXR1cm5zIGEgc3RyaW5nIHByZXByZXNlbnRhdGlvbiBvZiBlYWNoIGxheWVyLlxuXHQgKlxuXHQgKiBAcGFyYW0ge051bWJlcn0gW2luZGVudGF0aW9uPTJdIFRoZSBudW1iZXIgb2Ygc3BhY2VzIHRvIGluZGVudCB0aGUgSlNPTiBmb3JtYXR0ZWQgb3V0cHV0LlxuXHQgKiBAcmV0dXJucyB7U3RyaW5nfVxuXHQgKiBAYWNjZXNzIHB1YmxpY1xuXHQgKi9cblx0dG9TdHJpbmcoaW5kZW50YXRpb24gPSAyKSB7XG5cdFx0Y29uc3Qgb2JqID0ge307XG5cdFx0Zm9yIChjb25zdCBsYXllciBvZiB0aGlzLmxheWVycykge1xuXHRcdFx0Y29uc3QgY2ZnID0gbGF5ZXIuc3RvcmUuZ2V0KCk7XG5cdFx0XHRvYmpbU3RyaW5nKGxheWVyLmlkKV0gPSBjZmcgPT09IHVuZGVmaW5lZCA/IHt9IDogY2ZnO1xuXHRcdH1cblx0XHRyZXR1cm4gSlNPTi5zdHJpbmdpZnkob2JqLCBudWxsLCBNYXRoLm1heChpbmRlbnRhdGlvbiwgMCkpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJlbW92ZXMgYSB3YXRjaCBoYW5kbGVyIGZyb20gYWxsIGxheWVycy5cblx0ICpcblx0ICogQHBhcmFtIHtGdW5jdGlvbn0gaGFuZGxlciAtIEEgY2FsbGJhY2sgdG8gZmlyZSB3aGVuIGEgY2hhbmdlIG9jY3Vycy5cblx0ICogQGFjY2VzcyBwdWJsaWNcblx0ICovXG5cdHVud2F0Y2goaGFuZGxlcikge1xuXHRcdGlmICghaGFuZGxlciB8fCB0eXBlb2YgaGFuZGxlciAhPT0gJ2Z1bmN0aW9uJykge1xuXHRcdFx0dGhyb3cgbmV3IFR5cGVFcnJvcignRXhwZWN0ZWQgaGFuZGxlciB0byBiZSBhIGZ1bmN0aW9uJyk7XG5cdFx0fVxuXG5cdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLndhdGNoZXJzLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRpZiAodGhpcy53YXRjaGVyc1tpXS5oYW5kbGVyID09PSBoYW5kbGVyKSB7XG5cdFx0XHRcdHRoaXMud2F0Y2hlcnMuc3BsaWNlKGktLSwgMSk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Zm9yIChjb25zdCBsYXllciBvZiB0aGlzLmxheWVycykge1xuXHRcdFx0bGF5ZXIudW53YXRjaChoYW5kbGVyKTtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogUmVnaXN0ZXJzIGEgd2F0Y2ggaGFuZGxlciBvbiBhbGwgbGF5ZXJzLlxuXHQgKlxuXHQgKiBAcGFyYW0ge0FycmF5LjxTdHJpbmc+fSBbZmlsdGVyXSAtIEEgcHJvcGVydHkgbmFtZSBvciBhcnJheSBvZiBuZXN0ZWQgcHJvcGVydGllcyB0byB3YXRjaC5cblx0ICogQHBhcmFtIHtGdW5jdGlvbn0gaGFuZGxlciAtIEEgY2FsbGJhY2sgdG8gZmlyZSB3aGVuIGEgY2hhbmdlIG9jY3Vycy5cblx0ICogQGFjY2VzcyBwdWJsaWNcblx0ICovXG5cdHdhdGNoKGZpbHRlciwgaGFuZGxlcikge1xuXHRcdGlmICghaGFuZGxlciB8fCB0eXBlb2YgaGFuZGxlciAhPT0gJ2Z1bmN0aW9uJykge1xuXHRcdFx0dGhyb3cgbmV3IFR5cGVFcnJvcignRXhwZWN0ZWQgaGFuZGxlciB0byBiZSBhIGZ1bmN0aW9uJyk7XG5cdFx0fVxuXG5cdFx0bG9nKGBSZWdpc3RlcmluZyB3YXRjaGVyOiAke2hpZ2hsaWdodChgJHtoYW5kbGVyLm5hbWV9KClgKX0gJHtmaWx0ZXIubGVuZ3RoID8gZmlsdGVyLmpvaW4oJy4nKSA6ICcnfWApO1xuXG5cdFx0dGhpcy53YXRjaGVycy5wdXNoKHsgZmlsdGVyLCBmaWx0ZXJIYXNoOiBoYXNoVmFsdWUoZmlsdGVyKSwgaGFuZGxlciB9KTtcblxuXHRcdGZvciAoY29uc3QgbGF5ZXIgb2YgdGhpcy5sYXllcnMpIHtcblx0XHRcdGxheWVyLndhdGNoKGZpbHRlciwgaGFuZGxlcik7XG5cdFx0fVxuXHR9XG59XG4iXSwiZmlsZSI6ImxheWVyLWxpc3QuanMifQ==
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxheWVyLWxpc3QuanMiXSwibmFtZXMiOlsibG9nIiwiaGlnaGxpZ2h0Iiwic25vb3Bsb2dnIiwic3R5bGVzIiwiQWxsIiwiU3ltYm9sIiwiQmFzZSIsIml0ZXJhdG9yIiwiTGF5ZXJMaXN0IiwiY29uc3RydWN0b3IiLCJvcHRzIiwiaSIsImxheWVycyIsImxlbmd0aCIsIm5leHQiLCJkb25lIiwidmFsdWUiLCJ1bmRlZmluZWQiLCJhbGxvd051bGxzIiwiYWxsb3dVbmtub3duIiwiYXBwbHlPd25lciIsInB1c2giLCJtYXAiLCJMYXllciIsImRhdGEiLCJmaWxlIiwiaWQiLCJvcmRlciIsIkluZmluaXR5IiwicmVhZG9ubHkiLCJzY2hlbWEiLCJzdGF0aWMiLCJzdG9yZSIsInZhbGlkYXRlIiwiYXJncyIsInZhbGlkYXRlT3B0aW9ucyIsImFkZCIsImxheWVyIiwiVHlwZUVycm9yIiwiQXJyYXkiLCJpc0FycmF5IiwiRXJyb3IiLCJleGlzdGluZyIsInByb3AiLCJPYmplY3QiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJpc0xheWVyIiwic2NoZW1hcyIsIlNldCIsImJhc2UiLCJmaW5kIiwiZnJvbSIsIlN0cmluZyIsInAiLCJmaW5kSW5kZXgiLCJzcGxpY2UiLCJpbnNlcnRlZCIsImZpbHRlciIsImhhbmRsZXIiLCJ3YXRjaGVycyIsIndhdGNoIiwiZ2V0IiwicXVlcnkiLCJyZXZlcnNlIiwiaWRzIiwicmVtb3ZlIiwiaWRPckxheWVyIiwidW5sb2FkIiwic2V0IiwidG9TdHJpbmciLCJpbmRlbnRhdGlvbiIsIm9iaiIsImNmZyIsIkpTT04iLCJzdHJpbmdpZnkiLCJNYXRoIiwibWF4IiwidW53YXRjaCIsIm5hbWUiLCJqb2luIiwiZmlsdGVySGFzaCJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBOztBQUNBOztBQUNBOzs7Ozs7Ozs7Ozs7QUFFQSxNQUFNO0FBQUVBLEVBQUFBO0FBQUYsSUFBVSx3QkFBVSxZQUFWLEVBQXdCLFlB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ciBmcm9tICcuL2xheWVyJztcbmltcG9ydCBzbm9vcGxvZ2cgZnJvbSAnc25vb3Bsb2dnJztcbmltcG9ydCB7IGFycmF5aWZ5LCBoYXNoVmFsdWUsIHZhbGlkYXRlIH0gZnJvbSAnLi91dGlsJztcblxuY29uc3QgeyBsb2cgfSA9IHNub29wbG9nZygnY29uZmlnLWtpdCcpKCdsYXllci1saXN0Jyk7XG5jb25zdCB7IGhpZ2hsaWdodCB9ID0gc25vb3Bsb2dnLnN0eWxlcztcblxuLyoqXG4gKiBBIHVuaXF1ZSBzeW1ib2wgdXNlZCB0byBxdWVyeSBhbGwgbGF5ZXJzLlxuICogQHR5cGUge1N5bWJvbH1cbiAqL1xuZXhwb3J0IGNvbnN0IEFsbCA9IFN5bWJvbCgnYWxsJyk7XG5cbi8qKlxuICogVGhlIGlkIGZvciB0aGUgYmFzZSBsYXllci5cbiAqIEB0eXBlIHtTeW1ib2x9XG4gKi9cbmV4cG9ydCBjb25zdCBCYXNlID0gU3ltYm9sKCdiYXNlJyk7XG5cbi8qKlxuICogQW4gaW5kZXhlZCBsaXN0IG9mIGVsZW1lbnRzLlxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBMYXllckxpc3Qge1xuXHQvKipcblx0ICogRm9yY2VzIGFsbCBub2RlcyBvZiBhIHNjaGVtYSB0byBhbGxvdyBudWxscy5cblx0ICogQHR5cGUge0Jvb2xlYW59XG5cdCAqL1xuXHRhbGxvd051bGxzID0gZmFsc2U7XG5cblx0LyoqXG5cdCAqIEFsbG93cyBvYmplY3QgdmFsdWVzIHRvIGNvbnRhaW4gdW5rbm93biBrZXlzLlxuXHQgKiBAdHlwZSB7Qm9vbGVhbn1cblx0ICovXG5cdGFsbG93VW5rbm93biA9IHRydWU7XG5cblx0LyoqXG5cdCAqIFRoZSBvcmRlcmVkIGxpc3Qgb2YgbGF5ZXJzLlxuXHQgKiBAdHlwZSB7QXJyYXkuPExheWVyPn1cblx0ICovXG5cdGxheWVycyA9IFtdO1xuXG5cdC8qKlxuXHQgKiBBIHF1aWNrIGxvb2t1cCBiYXNlZCBvbiBpZC5cblx0ICogQHR5cGUge29iamVjdH1cblx0ICovXG5cdG1hcCA9IHt9O1xuXG5cdC8qKlxuXHQgKiBBIGxpc3Qgb2YgYWxsIGFjdGl2ZSB3YXRjaGVycy5cblx0ICogQHR5cGUge0FycmF5LjxPYmplY3Q+fVxuXHQgKi9cblx0d2F0Y2hlcnMgPSBbXTtcblxuXHQvKipcblx0ICogSW5pdGlhbGl6ZXMgdGhlIG9wdGlvbnMuXG5cdCAqXG5cdCAqIEBwYXJhbSB7T2JqZWN0fSBbb3B0c10gLSBWYXJpb3VzIG9wdGlvbnMuXG5cdCAqIEBwYXJhbSB7Qm9vbGVhbn0gW29wdHMuYWxsb3dOdWxsc10gLSBGb3JjZXMgYWxsIG5vZGVzIG9mIGEgc2NoZW1hIHRvIGFsbG93IG51bGxzLlxuXHQgKiBAcGFyYW0ge0Jvb2xlYW59IFtvcHRzLmFsbG93VW5rbm93bj10cnVlXSAtIEFsbG93cyBvYmplY3QgdmFsdWVzIHRvIGNvbnRhaW4gdW5rbm93biBrZXlzLlxuXHQgKiBAcGFyYW0ge0Jvb2xlYW59IFtvcHRzLmFwcGx5T3duZXI9dHJ1ZV0gLSBXaGVuIGB0cnVlYCwgZGV0ZXJtaW5lcyB0aGUgb3duZXIgb2YgdGhlIGNsb3Nlc3Rcblx0ICogZXhpc3RpbmcgcGFyZW50IGRpcmVjdG9yeSBhbmQgYXBwbHkgdGhlIG93bmVyIHRvIHRoZSBmaWxlIGFuZCBhbnkgbmV3bHkgY3JlYXRlZCBkaXJlY3Rvcmllcy5cblx0ICogQHBhcmFtIHtPYmplY3R9IFtvcHRzLmRhdGFdIC0gRGF0d2EgdG8gaW5pdGlhbGl6ZSB0aGUgYmFzZSBjb25maWcgbGF5ZXIgd2l0aC5cblx0ICogQHBhcmFtIHtTdHJpbmd9IFtvcHRzLmZpbGVdIC0gVGhlIGZpbGUgdG8gYXNzb2NpYXRlIHdpdGggdGhlIGJhc2UgbGF5ZXIuXG5cdCAqIEBwYXJhbSB7T2JqZWN0fSBbb3B0cy5zY2hlbWFdIC0gQSBKb2kgc2NoZW1hIGZvciB0aGUgYmFzZSBsYXllci5cblx0ICogQHBhcmFtIHtTdG9yZXxGdW5jdGlvbn0gW29wdHMuc3RvcmVdIC0gQSBzdG9yZSBpbnN0YW5jZSBvciBzdG9yZSBjbGFzcyB0byB1c2UgZm9yIHRoZSBiYXNlXG5cdCAqIGxheWVyLlxuXHQgKiBAYWNjZXNzIHB1YmxpY1xuXHQgKi9cblx0Y29uc3RydWN0b3Iob3B0cyA9IHt9KSB7XG5cdFx0dGhpcy5hbGxvd051bGxzICAgPSBvcHRzLmFsbG93TnVsbHM7XG5cdFx0dGhpcy5hbGxvd1Vua25vd24gPSBvcHRzLmFsbG93VW5rbm93biAhPT0gZmFsc2U7XG5cdFx0dGhpcy5hcHBseU93bmVyICAgPSBvcHRzLmFwcGx5T3duZXIgIT09IGZhbHNlO1xuXG5cdFx0dGhpcy5sYXllcnMucHVzaCh0aGlzLm1hcFtCYXNlXSA9IG5ldyBMYXllcih7XG5cdFx0XHRhbGxvd051bGxzOiBvcHRzLmFsbG93TnVsbHMsXG5cdFx0XHRhcHBseU93bmVyOiBvcHRzLmFwcGx5T3duZXIsXG5cdFx0XHRkYXRhOiAgICAgICBvcHRzLmRhdGEsXG5cdFx0XHRmaWxlOiAgICAgICBvcHRzLmZpbGUsXG5cdFx0XHRpZDogICAgICAgICBCYXNlLFxuXHRcdFx0b3JkZXI6ICAgICAgLUluZmluaXR5LFxuXHRcdFx0cmVhZG9ubHk6ICAgZmFsc2UsXG5cdFx0XHRzY2hlbWE6ICAgICBvcHRzLnNjaGVtYSxcblx0XHRcdHN0YXRpYzogICAgIHRydWUsXG5cdFx0XHRzdG9yZTogICAgICBvcHRzLnN0b3JlLFxuXHRcdFx0dmFsaWRhdGU6ICAgYXJncyA9PiB2YWxpZGF0ZSh7XG5cdFx0XHRcdC4uLmFyZ3MsXG5cdFx0XHRcdHZhbGlkYXRlT3B0aW9uczoge1xuXHRcdFx0XHRcdGFsbG93VW5rbm93bjogdGhpcy5hbGxvd1Vua25vd24sXG5cdFx0XHRcdFx0Li4uYXJncy52YWxpZGF0ZU9wdGlvbnNcblx0XHRcdFx0fVxuXHRcdFx0fSlcblx0XHR9KSk7XG5cdH1cblxuXHQvKipcblx0ICogQWRkcyBhIGxheWVyLiBJZiB0aGUgbGF5ZXIgaWQgYWxyZWFkeSBleGlzdHMsIGl0IHdpbGwgcmVwbGFjZSBpdC5cblx0ICpcblx0ICogQHBhcmFtIHtMYXllcnxPYmplY3R8U3RyaW5nfSBsYXllciAtIFRoZSBsYXllciwgbGF5ZXIgY29udHJ1Y3RvciBhcmd1bWVudHMsIG9yIGxheWVyIGlkLlxuXHQgKiBAcmV0dXJucyB7TGF5ZXJ9XG5cdCAqIEBhY2Nlc3MgcHVibGljXG5cdCAqL1xuXHRhZGQobGF5ZXIpIHtcblx0XHRpZiAoIWxheWVyKSB7XG5cdFx0XHR0aHJvdyBuZXcgVHlwZUVycm9yKCdFeHBlY3RlZCBsYXllciB0byBiZSBhbiBvYmplY3QnKTtcblx0XHR9XG5cblx0XHRpZiAodHlwZW9mIGxheWVyID09PSAnc3RyaW5nJyB8fCB0eXBlb2YgbGF5ZXIgPT09ICdzeW1ib2wnKSB7XG5cdFx0XHRsYXllciA9IHsgaWQ6IGxheWVyIH07XG5cdFx0fVxuXG5cdFx0aWYgKHR5cGVvZiBsYXllciAhPT0gJ29iamVjdCcgfHwgQXJyYXkuaXNBcnJheShsYXllcikpIHtcblx0XHRcdHRocm93IG5ldyBUeXBlRXJyb3IoJ0V4cGVjdGVkIGxheWVyIHRvIGJlIGFuIG9iamVjdCcpO1xuXHRcdH1cblxuXHRcdGNvbnN0IHsgaWQgfSA9IGxheWVyO1xuXG5cdFx0aWYgKCFpZCkge1xuXHRcdFx0dGhyb3cgbmV3IEVycm9yKCdFeHBlY3RlZCBsYXllciB0byBoYXZlIGFuIGlkJyk7XG5cdFx0fVxuXG5cdFx0Y29uc3QgZXhpc3RpbmcgPSB0aGlzLm1hcFtpZF07XG5cdFx0aWYgKGV4aXN0aW5nKSB7XG5cdFx0XHRmb3IgKGNvbnN0IHByb3Agb2YgWyAnbmFtZXNwYWNlJywgJ29yZGVyJywgJ3JlYWRvbmx5JywgJ3NjaGVtYScsICdzdGF0aWMnIF0pIHtcblx0XHRcdFx0aWYgKCFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobGF5ZXIsIHByb3ApKSB7XG5cdFx0XHRcdFx0bGF5ZXJbcHJvcF0gPSBleGlzdGluZ1twcm9wXTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdGNvbnN0IGlzTGF5ZXIgPSBsYXllciBpbnN0YW5jZW9mIExheWVyO1xuXHRcdGlmIChpc0xheWVyIHx8ICFsYXllci52YWxpZGF0ZSkge1xuXHRcdFx0bGF5ZXIudmFsaWRhdGUgPSBhcmdzID0+IHtcblx0XHRcdFx0Y29uc3Qgc2NoZW1hcyA9IG5ldyBTZXQoKTtcblx0XHRcdFx0Y29uc3QgYmFzZSA9IHRoaXMubGF5ZXJzLmZpbmQobGF5ZXIgPT4gbGF5ZXIuaWQgPT09IEJhc2UpPy5zY2hlbWE7XG5cdFx0XHRcdGlmIChiYXNlKSB7XG5cdFx0XHRcdFx0c2NoZW1hcy5hZGQoYmFzZSk7XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKGFyZ3Muc2NoZW1hcykge1xuXHRcdFx0XHRcdGZvciAoY29uc3Qgc2NoZW1hIG9mIGFyZ3Muc2NoZW1hcykge1xuXHRcdFx0XHRcdFx0c2NoZW1hcy5hZGQoc2NoZW1hKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRyZXR1cm4gdmFsaWRhdGUoe1xuXHRcdFx0XHRcdC4uLmFyZ3MsXG5cdFx0XHRcdFx0c2NoZW1hczogQXJyYXkuZnJvbShzY2hlbWFzKSxcblx0XHRcdFx0XHR2YWxpZGF0ZU9wdGlvbnM6IHtcblx0XHRcdFx0XHRcdGFsbG93VW5rbm93bjogdGhpcy5hbGxvd1Vua25vd25cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pO1xuXHRcdFx0fTtcblx0XHR9XG5cblx0XHRsYXllci5hbGxvd051bGxzID0gdGhpcy5hbGxvd051bGxzO1xuXHRcdGlmICghT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGxheWVyLCAnYXBwbHlPd25lcicpKSB7XG5cdFx0XHRsYXllci5hcHBseU93bmVyID0gdGhpcy5hcHBseU93bmVyO1xuXHRcdH1cblxuXHRcdGlmICghaXNMYXllcikge1xuXHRcdFx0bG9nKGBDcmVhdGluZyBuZXcgbGF5ZXI6ICR7aGlnaGxpZ2h0KFN0cmluZyhpZCkpfWApO1xuXHRcdFx0bGF5ZXIgPSBuZXcgTGF5ZXIobGF5ZXIpO1xuXHRcdH0gZWxzZSBpZiAoZXhpc3RpbmcgJiYgT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGV4aXN0aW5nLCAnZmlsZScpKSB7XG5cdFx0XHRsYXllci5maWxlID0gZXhpc3RpbmcuZmlsZTtcblx0XHR9XG5cblx0XHR0aGlzLm1hcFtpZF0gPSBsYXllcjtcblxuXHRcdGlmIChleGlzdGluZykge1xuXHRcdFx0Y29uc3QgcCA9IHRoaXMubGF5ZXJzLmZpbmRJbmRleChleGlzdGluZyA9PiBleGlzdGluZy5pZCA9PT0gaWQpO1xuXHRcdFx0aWYgKHAgIT09IC0xKSB7XG5cdFx0XHRcdHRoaXMubGF5ZXJzLnNwbGljZShwLCAxKTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRsZXQgaW5zZXJ0ZWQ7XG5cdFx0Zm9yIChsZXQgaSA9IHRoaXMubGF5ZXJzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG5cdFx0XHRpZiAobGF5ZXIub3JkZXIgPj0gdGhpcy5sYXllcnNbaV0ub3JkZXIpIHtcblx0XHRcdFx0aW5zZXJ0ZWQgPSAhIXRoaXMubGF5ZXJzLnNwbGljZShpICsgMSwgMCwgbGF5ZXIpO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdH1cblx0XHR9XG5cdFx0aWYgKCFpbnNlcnRlZCkge1xuXHRcdFx0dGhpcy5sYXllcnMucHVzaChsYXllcik7XG5cdFx0fVxuXG5cdFx0Ly8gYWRkIHRoZSB3YXRjaGVycyB0byB0aGlzIGxheWVyXG5cdFx0Zm9yIChjb25zdCB7IGZpbHRlciwgaGFuZGxlciB9IG9mIHRoaXMud2F0Y2hlcnMpIHtcblx0XHRcdGxheWVyLndhdGNoKGZpbHRlciwgaGFuZGxlcik7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGxheWVyO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJldHVybnMgYSBsYXllciBieSBpZC5cblx0ICpcblx0ICogQHBhcmFtIHtTdHJpbmd8U3ltYm9sfSBpZCAtIFRoZSBsYXllciBpZC5cblx0ICogQHJldHVybnMge0xheWVyfVxuXHQgKiBAYWNjZXNzIHB1YmxpY1xuXHQgKi9cblx0Z2V0KGlkKSB7XG5cdFx0cmV0dXJuIHRoaXMubWFwW2lkXTtcblx0fVxuXG5cdC8qKlxuXHQgKiBGaW5kcyBhbGwgbGF5ZXJzIHRoYXQgbWF0Y2ggYSBzcGVjaWZpZWQgaWRzLlxuXHQgKlxuXHQgKiBAcGFyYW0ge1N0cmluZ3xTeW1ib2x8QXJyYXkuPFN0cmluZ3xTeW1ib2w+fSBpZCAtIFRoZSBsYXllciBpZCBvciBpZHMuXG5cdCAqIEBwYXJhbSB7Qm9vbGVhbn0gW3JldmVyc2VdIC0gV2hlbiBgdHJ1ZWAsIHRoZSByZXN1bHRzIGFyZSBpdGVyYXRlZCBpbiByZXZlcnNlIG9yZGVyLlxuXHQgKiBAcmV0dXJucyB7T2JqZWN0fVxuXHQgKiBAYWNjZXNzIHB1YmxpY1xuXHQgKi9cblx0cXVlcnkoaWQsIHJldmVyc2UpIHtcblx0XHRsZXQgaWRzID0gW107XG5cdFx0aWYgKGlkID09PSB1bmRlZmluZWQgfHwgaWQgPT09IEFsbCkge1xuXHRcdFx0aWRzID0gdGhpcy5sYXllcnMubWFwKGxheWVyID0+IGxheWVyLmlkKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0aWRzID0gYXJyYXlpZnkoaWQsIHRydWUpLmZpbHRlcihpZCA9PiB0aGlzLm1hcFtpZF0pO1xuXHRcdFx0aWYgKCFpZHMubGVuZ3RoKSB7XG5cdFx0XHRcdHRocm93IG5ldyBFcnJvcihgTGF5ZXIgXCIke1N0cmluZyhpZCl9XCIgbm90IGZvdW5kYCk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0aWYgKHJldmVyc2UpIHtcblx0XHRcdGlkcy5yZXZlcnNlKCk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHtcblx0XHRcdFtTeW1ib2wuaXRlcmF0b3JdOiAoKSA9PiB7XG5cdFx0XHRcdGxldCBpID0gMDtcblx0XHRcdFx0cmV0dXJuIHtcblx0XHRcdFx0XHRuZXh0OiAoKSA9PiB7XG5cdFx0XHRcdFx0XHRjb25zdCBkb25lID0gaSA+PSBpZHMubGVuZ3RoO1xuXHRcdFx0XHRcdFx0cmV0dXJuIHsgZG9uZSwgdmFsdWU6IGRvbmUgPyB1bmRlZmluZWQgOiB0aGlzLm1hcFtpZHNbaSsrXV0gfTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH07XG5cdFx0XHR9XG5cdFx0fTtcblx0fVxuXG5cdC8qKlxuXHQgKiBEZXN0cm95cyBhIGxheWVyIGJ5IGlkIG9yIGxheWVyIHJlZmVyZW5jZS5cblx0ICpcblx0ICogQHBhcmFtIHtTdHJpbmd8U3ltYm9sfEFycmF5LjxTdHJpbmd8U3ltYm9sPn0gaWRPckxheWVyIC0gVGhlIGxheWVyIGlkIG9yIGlkcy5cblx0ICogQHBhcmFtIHtCb29sZWFufSBbcmV2ZXJzZV0gLSBXaGVuIGB0cnVlYCwgdGhlIHJlc3VsdHMgYXJlIGl0ZXJhdGVkIGluIHJldmVyc2Ugb3JkZXIuXG5cdCAqIEByZXR1cm5zIHtPYmplY3R9XG5cdCAqIEBhY2Nlc3MgcHVibGljXG5cdCAqL1xuXHRyZW1vdmUoaWRPckxheWVyKSB7XG5cdFx0Y29uc3QgbGF5ZXIgPSB0aGlzLm1hcFtpZE9yTGF5ZXJdO1xuXHRcdGNvbnN0IHAgPSB0aGlzLmxheWVycy5maW5kSW5kZXgobGF5ZXIgPT4gbGF5ZXIgPT09IGlkT3JMYXllciB8fCBsYXllci5pZCA9PT0gaWRPckxheWVyKTtcblx0XHRpZiAobGF5ZXIpIHtcblx0XHRcdGxvZyhgVW5sb2FkaW5nIGxheWVyOiAke2hpZ2hsaWdodChTdHJpbmcoaWRPckxheWVyKSl9YCk7XG5cdFx0XHR0aGlzLm1hcFtpZE9yTGF5ZXJdLnVubG9hZCgpO1xuXHRcdFx0ZGVsZXRlIHRoaXMubWFwW2lkT3JMYXllcl07XG5cdFx0fVxuXHRcdGlmIChwICE9PSAtMSkge1xuXHRcdFx0dGhpcy5sYXllcnMuc3BsaWNlKHAsIDEpO1xuXHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0fVxuXHRcdHJldHVybiBmYWxzZTtcblx0fVxuXG5cdC8qKlxuXHQgKiBBIHJldmVyc2UgaXRlcmF0b3IuXG5cdCAqXG5cdCAqIEB0eXBlIHtPYmplY3R9XG5cdCAqIEBhY2Nlc3MgcHVibGljXG5cdCAqL1xuXHRyZXZlcnNlID0ge1xuXHRcdFtTeW1ib2wuaXRlcmF0b3JdOiAoKSA9PiB7XG5cdFx0XHRsZXQgaSA9IHRoaXMubGF5ZXJzLmxlbmd0aCAtIDE7XG5cdFx0XHRyZXR1cm4ge1xuXHRcdFx0XHRuZXh0OiAoKSA9PiB7XG5cdFx0XHRcdFx0Y29uc3QgZG9uZSA9IGkgPCAwO1xuXHRcdFx0XHRcdHJldHVybiB7IGRvbmUsIHZhbHVlOiBkb25lID8gdW5kZWZpbmVkIDogdGhpcy5sYXllcnNbaS0tXSB9O1xuXHRcdFx0XHR9XG5cdFx0XHR9O1xuXHRcdH1cblx0fTtcblxuXHQvKipcblx0ICogQW4gYWxpYXMgZm9yIGBhZGQoKWAuXG5cdCAqXG5cdCAqIEBwYXJhbSB7TGF5ZXJ8T2JqZWN0fFN0cmluZ30gbGF5ZXIgLSBUaGUgbGF5ZXIsIGxheWVyIGNvbnRydWN0b3IgYXJndW1lbnRzLCBvciBsYXllciBpZC5cblx0ICogQHJldHVybnMge0xheWVyfVxuXHQgKiBAYWNjZXNzIHB1YmxpY1xuXHQgKi9cblx0c2V0KGxheWVyKSB7XG5cdFx0cmV0dXJuIHRoaXMuYWRkKGxheWVyKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBBIHJldmVyc2UgaXRlcmF0b3IuXG5cdCAqXG5cdCAqIEByZXR1cm5zIHtPYmplY3R9XG5cdCAqIEBhY2Nlc3MgcHVibGljXG5cdCAqL1xuXHRbU3ltYm9sLml0ZXJhdG9yXSgpIHtcblx0XHRsZXQgaSA9IDA7XG5cdFx0cmV0dXJuIHtcblx0XHRcdG5leHQ6ICgpID0+IHtcblx0XHRcdFx0Y29uc3QgZG9uZSA9IGkgPj0gdGhpcy5sYXllcnMubGVuZ3RoO1xuXHRcdFx0XHRyZXR1cm4geyBkb25lLCB2YWx1ZTogZG9uZSA/IHVuZGVmaW5lZCA6IHRoaXMubGF5ZXJzW2krK10gfTtcblx0XHRcdH1cblx0XHR9O1xuXHR9XG5cblx0LyoqXG5cdCAqIFJldHVybnMgYSBzdHJpbmcgcHJlcHJlc2VudGF0aW9uIG9mIGVhY2ggbGF5ZXIuXG5cdCAqXG5cdCAqIEBwYXJhbSB7TnVtYmVyfSBbaW5kZW50YXRpb249Ml0gVGhlIG51bWJlciBvZiBzcGFjZXMgdG8gaW5kZW50IHRoZSBKU09OIGZvcm1hdHRlZCBvdXRwdXQuXG5cdCAqIEByZXR1cm5zIHtTdHJpbmd9XG5cdCAqIEBhY2Nlc3MgcHVibGljXG5cdCAqL1xuXHR0b1N0cmluZyhpbmRlbnRhdGlvbiA9IDIpIHtcblx0XHRjb25zdCBvYmogPSB7fTtcblx0XHRmb3IgKGNvbnN0IGxheWVyIG9mIHRoaXMubGF5ZXJzKSB7XG5cdFx0XHRjb25zdCBjZmcgPSBsYXllci5zdG9yZS5nZXQoKTtcblx0XHRcdG9ialtTdHJpbmcobGF5ZXIuaWQpXSA9IGNmZyA9PT0gdW5kZWZpbmVkID8ge30gOiBjZmc7XG5cdFx0fVxuXHRcdHJldHVybiBKU09OLnN0cmluZ2lmeShvYmosIG51bGwsIE1hdGgubWF4KGluZGVudGF0aW9uLCAwKSk7XG5cdH1cblxuXHQvKipcblx0ICogUmVtb3ZlcyBhIHdhdGNoIGhhbmRsZXIgZnJvbSBhbGwgbGF5ZXJzLlxuXHQgKlxuXHQgKiBAcGFyYW0ge0Z1bmN0aW9ufSBoYW5kbGVyIC0gQSBjYWxsYmFjayB0byBmaXJlIHdoZW4gYSBjaGFuZ2Ugb2NjdXJzLlxuXHQgKiBAYWNjZXNzIHB1YmxpY1xuXHQgKi9cblx0dW53YXRjaChoYW5kbGVyKSB7XG5cdFx0aWYgKCFoYW5kbGVyIHx8IHR5cGVvZiBoYW5kbGVyICE9PSAnZnVuY3Rpb24nKSB7XG5cdFx0XHR0aHJvdyBuZXcgVHlwZUVycm9yKCdFeHBlY3RlZCBoYW5kbGVyIHRvIGJlIGEgZnVuY3Rpb24nKTtcblx0XHR9XG5cblx0XHRmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMud2F0Y2hlcnMubGVuZ3RoOyBpKyspIHtcblx0XHRcdGlmICh0aGlzLndhdGNoZXJzW2ldLmhhbmRsZXIgPT09IGhhbmRsZXIpIHtcblx0XHRcdFx0dGhpcy53YXRjaGVycy5zcGxpY2UoaS0tLCAxKTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRmb3IgKGNvbnN0IGxheWVyIG9mIHRoaXMubGF5ZXJzKSB7XG5cdFx0XHRsYXllci51bndhdGNoKGhhbmRsZXIpO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBSZWdpc3RlcnMgYSB3YXRjaCBoYW5kbGVyIG9uIGFsbCBsYXllcnMuXG5cdCAqXG5cdCAqIEBwYXJhbSB7QXJyYXkuPFN0cmluZz59IFtmaWx0ZXJdIC0gQSBwcm9wZXJ0eSBuYW1lIG9yIGFycmF5IG9mIG5lc3RlZCBwcm9wZXJ0aWVzIHRvIHdhdGNoLlxuXHQgKiBAcGFyYW0ge0Z1bmN0aW9ufSBoYW5kbGVyIC0gQSBjYWxsYmFjayB0byBmaXJlIHdoZW4gYSBjaGFuZ2Ugb2NjdXJzLlxuXHQgKiBAYWNjZXNzIHB1YmxpY1xuXHQgKi9cblx0d2F0Y2goZmlsdGVyLCBoYW5kbGVyKSB7XG5cdFx0aWYgKCFoYW5kbGVyIHx8IHR5cGVvZiBoYW5kbGVyICE9PSAnZnVuY3Rpb24nKSB7XG5cdFx0XHR0aHJvdyBuZXcgVHlwZUVycm9yKCdFeHBlY3RlZCBoYW5kbGVyIHRvIGJlIGEgZnVuY3Rpb24nKTtcblx0XHR9XG5cblx0XHRsb2coYFJlZ2lzdGVyaW5nIHdhdGNoZXI6ICR7aGlnaGxpZ2h0KGAke2hhbmRsZXIubmFtZX0oKWApfSAke2ZpbHRlci5sZW5ndGggPyBmaWx0ZXIuam9pbignLicpIDogJyd9YCk7XG5cblx0XHR0aGlzLndhdGNoZXJzLnB1c2goeyBmaWx0ZXIsIGZpbHRlckhhc2g6IGhhc2hWYWx1ZShmaWx0ZXIpLCBoYW5kbGVyIH0pO1xuXG5cdFx0Zm9yIChjb25zdCBsYXllciBvZiB0aGlzLmxheWVycykge1xuXHRcdFx0bGF5ZXIud2F0Y2goZmlsdGVyLCBoYW5kbGVyKTtcblx0XHR9XG5cdH1cbn1cbiJdLCJmaWxlIjoibGF5ZXItbGlzdC5qcyJ9

8

dist/layer.js

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

function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }

@@ -109,2 +109,4 @@ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }

* @param {Boolean} [opts.allowNulls] - Forces all nodes of a schema to allow nulls.
* @param {Boolean} [opts.applyOwner=true] - When `true`, determines the owner of the closest
* existing parent directory and apply the owner to the file and any newly created directories.
* @param {Object} [opts.data] - Data to initialize the base config layer with.

@@ -181,2 +183,3 @@ * @param {String} [opts.file] - The file backing this layer's store.

this.store = new opts.store({
applyOwner: opts.applyOwner,
data: defaults,

@@ -187,2 +190,3 @@ schema: this.schema

this.store = new _jsonStore.default(opts.store || {
applyOwner: opts.applyOwner,
data: defaults,

@@ -660,2 +664,2 @@ schema: this.schema

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

@@ -33,2 +33,4 @@ "use strict";

* @param {Object} [opts] - Various options.
* @param {Boolean} [opts.applyOwner=true] - When `true`, determines the owner of the closest
* existing parent directory and apply the owner to the file and any newly created directories.
* @param {String} [opts.file] - The file backing this layer's store.

@@ -47,2 +49,4 @@ * @access public

}
this.applyOwner = opts.applyOwner !== false;
}

@@ -183,2 +187,2 @@ /**

_defineProperty(Store, "extension", null);
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInN0b3JlLmpzIl0sIm5hbWVzIjpbIlN0b3JlIiwiY29uc3RydWN0b3IiLCJvcHRzIiwibmV3IiwidGFyZ2V0IiwiVHlwZUVycm9yIiwiZGVsZXRlIiwia2V5IiwiRXJyb3IiLCJnZXQiLCJoYXMiLCJrZXlzIiwibG9hZCIsImZpbGUiLCJtZXJnZSIsInZhbHVlIiwic2F2ZSIsInNjaGVtYSIsIl9zY2hlbWEiLCJuZXdTY2hlbWEiLCJKb2kiLCJpc1NjaGVtYSIsInR5cGUiLCJzZXQiLCJ1bndhdGNoIiwiaGFuZGxlciIsIndhdGNoIiwiZmlsdGVyIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBRUE7Ozs7OztBQUVBO0FBQ0E7QUFDQTtBQUNlLE1BQU1BLEtBQU4sQ0FBWTtBQUMxQjtBQUNEO0FBQ0E7QUFDQTs7QUFHQztBQUNEO0FBQ0E7QUFDQTtBQUNBOztBQUdDO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0NDLEVBQUFBLFdBQVcsQ0FBQ0MsSUFBSSxHQUFHLEVBQVIsRUFBWTtBQUFBLHFDQVRiLElBU2E7O0FBQ3RCLFFBQUlDLEdBQUcsQ0FBQ0MsTUFBSixLQUFlSixLQUFuQixFQUEwQjtBQUN6QixZQUFNLElBQUlLLFNBQUosQ0FBYyxnREFBZCxDQUFOO0FBQ0E7O0FBRUQsUUFBSSxDQUFDSCxJQUFELElBQVMsT0FBT0EsSUFBUCxLQUFnQixRQUE3QixFQUF1QztBQUN0QyxZQUFNLElBQUlHLFNBQUosQ0FBYyx3Q0FBZCxDQUFOO0FBQ0E7QUFDRDtBQUVEO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQ0NDLEVBQUFBLE1BQU0sQ0FBQ0MsR0FBRCxFQUFNO0FBQ1gsVUFBTSxJQUFJQyxLQUFKLENBQVUsMEJBQVYsQ0FBTjtBQUNBO0FBRUQ7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUNDQyxFQUFBQSxHQUFHLENBQUNGLEdBQUQsRUFBTTtBQUNSLFVBQU0sSUFBSUMsS0FBSixDQUFVLHVCQUFWLENBQU47QUFDQTtBQUVEO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQ0NFLEVBQUFBLEdBQUcsQ0FBQ0gsR0FBRCxFQUFNO0FBQ1IsVUFBTSxJQUFJQyxLQUFKLENBQVUsdUJBQVYsQ0FBTjtBQUNBO0FBRUQ7QUFDRDtBQUNBO0FBQ0E7QUFDQTs7O0FBQ0NHLEVBQUFBLElBQUksR0FBRztBQUNOLFVBQU0sSUFBSUgsS0FBSixDQUFVLHdCQUFWLENBQU47QUFDQTtBQUVEO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQ0NJLEVBQUFBLElBQUksQ0FBQ0MsSUFBRCxFQUFPO0FBQ1YsVUFBTSxJQUFJTCxLQUFKLENBQVUsd0JBQVYsQ0FBTjtBQUNBO0FBRUQ7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFDQ00sRUFBQUEsS0FBSyxDQUFDQyxLQUFELEVBQVE7QUFDWixVQUFNLElBQUlQLEtBQUosQ0FBVSx5QkFBVixDQUFOO0FBQ0E7QUFFRDtBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUNDUSxFQUFBQSxJQUFJLENBQUNILElBQUQsRUFBTztBQUNWLFVBQU0sSUFBSUwsS0FBSixDQUFVLHdCQUFWLENBQU47QUFDQTtBQUVEO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7OztBQUNXLE1BQU5TLE1BQU0sR0FBRztBQUNaLFdBQU8sS0FBS0MsT0FBWjtBQUNBOztBQUVTLE1BQU5ELE1BQU0sQ0FBQ0UsU0FBRCxFQUFZO0FBQ3JCLFFBQUlBLFNBQVMsS0FBSyxDQUFDQyxhQUFJQyxRQUFKLENBQWFGLFNBQWIsQ0FBRCxJQUE0QkEsU0FBUyxDQUFDRyxJQUFWLEtBQW1CLFFBQXBELENBQWIsRUFBNEU7QUFDM0UsWUFBTSxJQUFJakIsU0FBSixDQUFjLHNDQUFkLENBQU47QUFDQTs7QUFDRCxTQUFLYSxPQUFMLEdBQWVDLFNBQWY7QUFDQTtBQUVEO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFDQ0ksRUFBQUEsR0FBRyxDQUFDaEIsR0FBRCxFQUFNUSxLQUFOLEVBQWE7QUFDZixVQUFNLElBQUlQLEtBQUosQ0FBVSx1QkFBVixDQUFOO0FBQ0E7QUFFRDtBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUNDZ0IsRUFBQUEsT0FBTyxDQUFDQyxPQUFELEVBQVUsQ0FDaEI7QUFDQTtBQUVEO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFDQ0MsRUFBQUEsS0FBSyxDQUFDQyxNQUFELEVBQVNGLE9BQVQsRUFBa0IsQ0FDdEI7QUFDQTs7QUFuSnlCOzs7O2dCQUFOekIsSyxlQUtELEkiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQgbm8tdW51c2VkLXZhcnM6IDAgKi9cblxuaW1wb3J0IEpvaSBmcm9tICdqb2knO1xuXG4vKipcbiAqIEEgYmFzZSBjbGFzcyBmb3IgYWxsIHN0b3JlIGltcGxlbW50YXRpb25zLlxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTdG9yZSB7XG5cdC8qKlxuXHQgKiBUaGUgZmlsZSBleHRlbnNpb24gYXNzb2NpYXRlZCB0byB0aGlzIHR5cGUgb2Ygc3RvcmUuXG5cdCAqIEB0eXBlIHtTdHJpbmd9XG5cdCAqL1xuXHRzdGF0aWMgZXh0ZW5zaW9uID0gbnVsbDtcblxuXHQvKipcblx0ICogQSBKb2kgc2NoZW1hLiBUaGUgYExheWVyYCB3aWxsIHBhc3MgaW4gdGhlIHNjaGVtYSBpbnRvIHRoZSBgc2NoZW1hYCBzZXR0ZXIgZHVyaW5nXG5cdCAqIGNvbnN0cnVjdGlvbiBvciB3aGVuIHRoZSBzY2hlbWEgaXMgbG9hZGVkLlxuXHQgKiBAdHlwZSB7T2JqZWN0fVxuXHQgKi9cblx0X3NjaGVtYSA9IG51bGw7XG5cblx0LyoqXG5cdCAqIEluaXRpYWxpemVzIHRoZSBzdG9yZS5cblx0ICpcblx0ICogQHBhcmFtIHtPYmplY3R9IFtvcHRzXSAtIFZhcmlvdXMgb3B0aW9ucy5cblx0ICogQHBhcmFtIHtTdHJpbmd9IFtvcHRzLmZpbGVdIC0gVGhlIGZpbGUgYmFja2luZyB0aGlzIGxheWVyJ3Mgc3RvcmUuXG5cdCAqIEBhY2Nlc3MgcHVibGljXG5cdCAqL1xuXHRjb25zdHJ1Y3RvcihvcHRzID0ge30pIHtcblx0XHRpZiAobmV3LnRhcmdldCA9PT0gU3RvcmUpIHtcblx0XHRcdHRocm93IG5ldyBUeXBlRXJyb3IoJ0Nhbm5vdCBjcmVhdGUgaW5zdGFuY2Ugb2YgYWJzdHJhY3QgU3RvcmUgY2xhc3MnKTtcblx0XHR9XG5cblx0XHRpZiAoIW9wdHMgfHwgdHlwZW9mIG9wdHMgIT09ICdvYmplY3QnKSB7XG5cdFx0XHR0aHJvdyBuZXcgVHlwZUVycm9yKCdFeHBlY3RlZCBzdG9yZSBvcHRpb25zIHRvIGJlIGFuIG9iamVjdCcpO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBEZWxldGVzIGEgY29uZmlnIHZhbHVlLlxuXHQgKlxuXHQgKiBAcGFyYW0ge0FycmF5LjxTdHJpbmc+fSBrZXkgLSBUaGUga2V5IHRvIGRlbGV0ZS5cblx0ICogQGFjY2VzcyBwdWJsaWNcblx0ICovXG5cdGRlbGV0ZShrZXkpIHtcblx0XHR0aHJvdyBuZXcgRXJyb3IoJ2RlbGV0ZSgpIG5vdCBpbXBsZW1lbnRlZCcpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJldHJpZXZlcyBhIHZhbHVlIGZvciB0aGUgc3BlY2lmaWVkIGtleS5cblx0ICpcblx0ICogQHBhcmFtIHtBcnJheS48U3RyaW5nPn0gW2tleV0gLSBUaGUga2V5IHRvIGdldC4gV2hlbiBgdW5kZWZpbmVkYCwgdGhlIGVudGlyZSBjb25maWcgaXNcblx0ICogcmV0dXJuZWQuXG5cdCAqIEBhY2Nlc3MgcHVibGljXG5cdCAqL1xuXHRnZXQoa2V5KSB7XG5cdFx0dGhyb3cgbmV3IEVycm9yKCdnZXQoKSBub3QgaW1wbGVtZW50ZWQnKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBEZXRlcm1pbmVzIGlmIGEga2V5IGlzIHNldC5cblx0ICpcblx0ICogQHBhcmFtIHtBcnJheS48U3RyaW5nPn0gW2tleV0gLSBUaGUga2V5IHRvIGNoZWNrLlxuXHQgKiBAYWNjZXNzIHB1YmxpY1xuXHQgKi9cblx0aGFzKGtleSkge1xuXHRcdHRocm93IG5ldyBFcnJvcignaGFzKCkgbm90IGltcGxlbWVudGVkJyk7XG5cdH1cblxuXHQvKipcblx0ICogUmV0dXJucyBhbiBhcnJheSBvZiB0aGUgbmFtZXMgb2YgdGhlIGtleXMgZGVmaW5lZCBvbiB0aGUgb2JqZWN0LlxuXHQgKlxuXHQgKiBAYWNjZXNzIHB1YmxpY1xuXHQgKi9cblx0a2V5cygpIHtcblx0XHR0aHJvdyBuZXcgRXJyb3IoJ2tleXMoKSBub3QgaW1wbGVtZW50ZWQnKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBMb2FkcyBhIGNvbmZpZyBmaWxlLlxuXHQgKlxuXHQgKiBAcGFyYW0ge1N0cmluZ30gZmlsZSAtIFRoZSBwYXRoIHRvIHRoZSBjb25maWcgZmlsZSB0byBsb2FkLlxuXHQgKiBAYWNjZXNzIHB1YmxpY1xuXHQgKi9cblx0bG9hZChmaWxlKSB7XG5cdFx0dGhyb3cgbmV3IEVycm9yKCdsb2FkKCkgbm90IGltcGxlbWVudGVkJyk7XG5cdH1cblxuXHQvKipcblx0ICogRGVlcGx5IG1lcmdlcyBhbiBvYmplY3QgaW50byBhIGxheWVyJ3Mgc3RvcmUuXG5cdCAqXG5cdCAqIEBwYXJhbSB7T2JqZWN0fSB2YWx1ZSAtIFRoZSBkYXRhIHRvIG1lcmdlLlxuXHQgKiBAYWNjZXNzIHB1YmxpY1xuXHQgKi9cblx0bWVyZ2UodmFsdWUpIHtcblx0XHR0aHJvdyBuZXcgRXJyb3IoJ21lcmdlKCkgbm90IGltcGxlbWVudGVkJyk7XG5cdH1cblxuXHQvKipcblx0ICogU2F2ZXMgdGhlIGRhdGEgdG8gZGlzay5cblx0ICpcblx0ICogQHBhcmFtIHtTdHJpbmd9IGZpbGUgLSBUaGUgZmlsZW5hbWUgdG8gc2F2ZSB0aGUgZGF0YSB0by5cblx0ICogQGFjY2VzcyBwdWJsaWNcblx0ICovXG5cdHNhdmUoZmlsZSkge1xuXHRcdHRocm93IG5ldyBFcnJvcignc2F2ZSgpIG5vdCBpbXBsZW1lbnRlZCcpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEEgSm9pIHNjaGVtYSBvYmplY3QuXG5cdCAqIEB0eXBlIHtPYmplY3R9XG5cdCAqIEBhY2Nlc3MgcHVibGljXG5cdCAqL1xuXHRnZXQgc2NoZW1hKCkge1xuXHRcdHJldHVybiB0aGlzLl9zY2hlbWE7XG5cdH1cblxuXHRzZXQgc2NoZW1hKG5ld1NjaGVtYSkge1xuXHRcdGlmIChuZXdTY2hlbWEgJiYgKCFKb2kuaXNTY2hlbWEobmV3U2NoZW1hKSB8fCBuZXdTY2hlbWEudHlwZSAhPT0gJ29iamVjdCcpKSB7XG5cdFx0XHR0aHJvdyBuZXcgVHlwZUVycm9yKCdFeHBlY3RlZCBzY2hlbWEgcm9vdCB0byBiZSBhbiBvYmplY3QnKTtcblx0XHR9XG5cdFx0dGhpcy5fc2NoZW1hID0gbmV3U2NoZW1hO1xuXHR9XG5cblx0LyoqXG5cdCAqIFNldHMgdGhlIHZhbHVlIGZvciBhIGdpdmVuIGNvbmZpZyBrZXkuXG5cdCAqXG5cdCAqIEBwYXJhbSB7QXJyYXkuPFN0cmluZz59IGtleSAtIFRoZSBrZXkgdG8gc2V0LlxuXHQgKiBAcGFyYW0geyp9IHZhbHVlIC0gVGhlIHZhbHVlIHRvIHNldC5cblx0ICogQGFjY2VzcyBwdWJsaWNcblx0ICovXG5cdHNldChrZXksIHZhbHVlKSB7XG5cdFx0dGhyb3cgbmV3IEVycm9yKCdzZXQoKSBub3QgaW1wbGVtZW50ZWQnKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZW1vdmVzIGEgd2F0Y2ggaGFuZGxlci5cblx0ICpcblx0ICogQHBhcmFtIHtGdW5jdGlvbn0gaGFuZGxlciAtIEEgY2FsbGJhY2sgdG8gZmlyZSB3aGVuIGEgY2hhbmdlIG9jY3Vycy5cblx0ICogQGFjY2VzcyBwdWJsaWNcblx0ICovXG5cdHVud2F0Y2goaGFuZGxlcikge1xuXHRcdC8vIG5vdGhpbmcgdG8gZG9cblx0fVxuXG5cdC8qKlxuXHQgKiBSZWdpc3RlcnMgYSB3YXRjaCBoYW5kbGVyLlxuXHQgKlxuXHQgKiBAcGFyYW0ge0FycmF5LjxTdHJpbmc+fSBbZmlsdGVyXSAtIEEgcHJvcGVydHkgbmFtZSBvciBhcnJheSBvZiBuZXN0ZWQgcHJvcGVydGllcyB0byB3YXRjaC5cblx0ICogQHBhcmFtIHtGdW5jdGlvbn0gaGFuZGxlciAtIEEgY2FsbGJhY2sgdG8gZmlyZSB3aGVuIGEgY2hhbmdlIG9jY3Vycy5cblx0ICogQGFjY2VzcyBwdWJsaWNcblx0ICovXG5cdHdhdGNoKGZpbHRlciwgaGFuZGxlcikge1xuXHRcdC8vIG5vdGhpbmcgdG8gZG9cblx0fVxufVxuIl0sImZpbGUiOiJzdG9yZS5qcyJ9
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInN0b3JlLmpzIl0sIm5hbWVzIjpbIlN0b3JlIiwiY29uc3RydWN0b3IiLCJvcHRzIiwibmV3IiwidGFyZ2V0IiwiVHlwZUVycm9yIiwiYXBwbHlPd25lciIsImRlbGV0ZSIsImtleSIsIkVycm9yIiwiZ2V0IiwiaGFzIiwia2V5cyIsImxvYWQiLCJmaWxlIiwibWVyZ2UiLCJ2YWx1ZSIsInNhdmUiLCJzY2hlbWEiLCJfc2NoZW1hIiwibmV3U2NoZW1hIiwiSm9pIiwiaXNTY2hlbWEiLCJ0eXBlIiwic2V0IiwidW53YXRjaCIsImhhbmRsZXIiLCJ3YXRjaCIsImZpbHRlciJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUVBOzs7Ozs7QUFFQTtBQUNBO0FBQ0E7QUFDZSxNQUFNQSxLQUFOLENBQVk7QUFDMUI7QUFDRDtBQUNBO0FBQ0E7O0FBR0M7QUFDRDtBQUNBO0FBQ0E7QUFDQTs7QUFHQztBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQ0MsRUFBQUEsV0FBVyxDQUFDQyxJQUFJLEdBQUcsRUFBUixFQUFZO0FBQUEscUNBWGIsSUFXYTs7QUFDdEIsUUFBSUMsR0FBRyxDQUFDQyxNQUFKLEtBQWVKLEtBQW5CLEVBQTBCO0FBQ3pCLFlBQU0sSUFBSUssU0FBSixDQUFjLGdEQUFkLENBQU47QUFDQTs7QUFFRCxRQUFJLENBQUNILElBQUQsSUFBUyxPQUFPQSxJQUFQLEtBQWdCLFFBQTdCLEVBQXVDO0FBQ3RDLFlBQU0sSUFBSUcsU0FBSixDQUFjLHdDQUFkLENBQU47QUFDQTs7QUFFRCxTQUFLQyxVQUFMLEdBQWtCSixJQUFJLENBQUNJLFVBQUwsS0FBb0IsS0FBdEM7QUFDQTtBQUVEO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQ0NDLEVBQUFBLE1BQU0sQ0FBQ0MsR0FBRCxFQUFNO0FBQ1gsVUFBTSxJQUFJQyxLQUFKLENBQVUsMEJBQVYsQ0FBTjtBQUNBO0FBRUQ7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUNDQyxFQUFBQSxHQUFHLENBQUNGLEdBQUQsRUFBTTtBQUNSLFVBQU0sSUFBSUMsS0FBSixDQUFVLHVCQUFWLENBQU47QUFDQTtBQUVEO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQ0NFLEVBQUFBLEdBQUcsQ0FBQ0gsR0FBRCxFQUFNO0FBQ1IsVUFBTSxJQUFJQyxLQUFKLENBQVUsdUJBQVYsQ0FBTjtBQUNBO0FBRUQ7QUFDRDtBQUNBO0FBQ0E7QUFDQTs7O0FBQ0NHLEVBQUFBLElBQUksR0FBRztBQUNOLFVBQU0sSUFBSUgsS0FBSixDQUFVLHdCQUFWLENBQU47QUFDQTtBQUVEO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQ0NJLEVBQUFBLElBQUksQ0FBQ0MsSUFBRCxFQUFPO0FBQ1YsVUFBTSxJQUFJTCxLQUFKLENBQVUsd0JBQVYsQ0FBTjtBQUNBO0FBRUQ7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFDQ00sRUFBQUEsS0FBSyxDQUFDQyxLQUFELEVBQVE7QUFDWixVQUFNLElBQUlQLEtBQUosQ0FBVSx5QkFBVixDQUFOO0FBQ0E7QUFFRDtBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUNDUSxFQUFBQSxJQUFJLENBQUNILElBQUQsRUFBTztBQUNWLFVBQU0sSUFBSUwsS0FBSixDQUFVLHdCQUFWLENBQU47QUFDQTtBQUVEO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7OztBQUNXLE1BQU5TLE1BQU0sR0FBRztBQUNaLFdBQU8sS0FBS0MsT0FBWjtBQUNBOztBQUVTLE1BQU5ELE1BQU0sQ0FBQ0UsU0FBRCxFQUFZO0FBQ3JCLFFBQUlBLFNBQVMsS0FBSyxDQUFDQyxhQUFJQyxRQUFKLENBQWFGLFNBQWIsQ0FBRCxJQUE0QkEsU0FBUyxDQUFDRyxJQUFWLEtBQW1CLFFBQXBELENBQWIsRUFBNEU7QUFDM0UsWUFBTSxJQUFJbEIsU0FBSixDQUFjLHNDQUFkLENBQU47QUFDQTs7QUFDRCxTQUFLYyxPQUFMLEdBQWVDLFNBQWY7QUFDQTtBQUVEO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFDQ0ksRUFBQUEsR0FBRyxDQUFDaEIsR0FBRCxFQUFNUSxLQUFOLEVBQWE7QUFDZixVQUFNLElBQUlQLEtBQUosQ0FBVSx1QkFBVixDQUFOO0FBQ0E7QUFFRDtBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUNDZ0IsRUFBQUEsT0FBTyxDQUFDQyxPQUFELEVBQVUsQ0FDaEI7QUFDQTtBQUVEO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFDQ0MsRUFBQUEsS0FBSyxDQUFDQyxNQUFELEVBQVNGLE9BQVQsRUFBa0IsQ0FDdEI7QUFDQTs7QUF2SnlCOzs7O2dCQUFOMUIsSyxlQUtELEkiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQgbm8tdW51c2VkLXZhcnM6IDAgKi9cblxuaW1wb3J0IEpvaSBmcm9tICdqb2knO1xuXG4vKipcbiAqIEEgYmFzZSBjbGFzcyBmb3IgYWxsIHN0b3JlIGltcGxlbW50YXRpb25zLlxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTdG9yZSB7XG5cdC8qKlxuXHQgKiBUaGUgZmlsZSBleHRlbnNpb24gYXNzb2NpYXRlZCB0byB0aGlzIHR5cGUgb2Ygc3RvcmUuXG5cdCAqIEB0eXBlIHtTdHJpbmd9XG5cdCAqL1xuXHRzdGF0aWMgZXh0ZW5zaW9uID0gbnVsbDtcblxuXHQvKipcblx0ICogQSBKb2kgc2NoZW1hLiBUaGUgYExheWVyYCB3aWxsIHBhc3MgaW4gdGhlIHNjaGVtYSBpbnRvIHRoZSBgc2NoZW1hYCBzZXR0ZXIgZHVyaW5nXG5cdCAqIGNvbnN0cnVjdGlvbiBvciB3aGVuIHRoZSBzY2hlbWEgaXMgbG9hZGVkLlxuXHQgKiBAdHlwZSB7T2JqZWN0fVxuXHQgKi9cblx0X3NjaGVtYSA9IG51bGw7XG5cblx0LyoqXG5cdCAqIEluaXRpYWxpemVzIHRoZSBzdG9yZS5cblx0ICpcblx0ICogQHBhcmFtIHtPYmplY3R9IFtvcHRzXSAtIFZhcmlvdXMgb3B0aW9ucy5cblx0ICogQHBhcmFtIHtCb29sZWFufSBbb3B0cy5hcHBseU93bmVyPXRydWVdIC0gV2hlbiBgdHJ1ZWAsIGRldGVybWluZXMgdGhlIG93bmVyIG9mIHRoZSBjbG9zZXN0XG5cdCAqIGV4aXN0aW5nIHBhcmVudCBkaXJlY3RvcnkgYW5kIGFwcGx5IHRoZSBvd25lciB0byB0aGUgZmlsZSBhbmQgYW55IG5ld2x5IGNyZWF0ZWQgZGlyZWN0b3JpZXMuXG5cdCAqIEBwYXJhbSB7U3RyaW5nfSBbb3B0cy5maWxlXSAtIFRoZSBmaWxlIGJhY2tpbmcgdGhpcyBsYXllcidzIHN0b3JlLlxuXHQgKiBAYWNjZXNzIHB1YmxpY1xuXHQgKi9cblx0Y29uc3RydWN0b3Iob3B0cyA9IHt9KSB7XG5cdFx0aWYgKG5ldy50YXJnZXQgPT09IFN0b3JlKSB7XG5cdFx0XHR0aHJvdyBuZXcgVHlwZUVycm9yKCdDYW5ub3QgY3JlYXRlIGluc3RhbmNlIG9mIGFic3RyYWN0IFN0b3JlIGNsYXNzJyk7XG5cdFx0fVxuXG5cdFx0aWYgKCFvcHRzIHx8IHR5cGVvZiBvcHRzICE9PSAnb2JqZWN0Jykge1xuXHRcdFx0dGhyb3cgbmV3IFR5cGVFcnJvcignRXhwZWN0ZWQgc3RvcmUgb3B0aW9ucyB0byBiZSBhbiBvYmplY3QnKTtcblx0XHR9XG5cblx0XHR0aGlzLmFwcGx5T3duZXIgPSBvcHRzLmFwcGx5T3duZXIgIT09IGZhbHNlO1xuXHR9XG5cblx0LyoqXG5cdCAqIERlbGV0ZXMgYSBjb25maWcgdmFsdWUuXG5cdCAqXG5cdCAqIEBwYXJhbSB7QXJyYXkuPFN0cmluZz59IGtleSAtIFRoZSBrZXkgdG8gZGVsZXRlLlxuXHQgKiBAYWNjZXNzIHB1YmxpY1xuXHQgKi9cblx0ZGVsZXRlKGtleSkge1xuXHRcdHRocm93IG5ldyBFcnJvcignZGVsZXRlKCkgbm90IGltcGxlbWVudGVkJyk7XG5cdH1cblxuXHQvKipcblx0ICogUmV0cmlldmVzIGEgdmFsdWUgZm9yIHRoZSBzcGVjaWZpZWQga2V5LlxuXHQgKlxuXHQgKiBAcGFyYW0ge0FycmF5LjxTdHJpbmc+fSBba2V5XSAtIFRoZSBrZXkgdG8gZ2V0LiBXaGVuIGB1bmRlZmluZWRgLCB0aGUgZW50aXJlIGNvbmZpZyBpc1xuXHQgKiByZXR1cm5lZC5cblx0ICogQGFjY2VzcyBwdWJsaWNcblx0ICovXG5cdGdldChrZXkpIHtcblx0XHR0aHJvdyBuZXcgRXJyb3IoJ2dldCgpIG5vdCBpbXBsZW1lbnRlZCcpO1xuXHR9XG5cblx0LyoqXG5cdCAqIERldGVybWluZXMgaWYgYSBrZXkgaXMgc2V0LlxuXHQgKlxuXHQgKiBAcGFyYW0ge0FycmF5LjxTdHJpbmc+fSBba2V5XSAtIFRoZSBrZXkgdG8gY2hlY2suXG5cdCAqIEBhY2Nlc3MgcHVibGljXG5cdCAqL1xuXHRoYXMoa2V5KSB7XG5cdFx0dGhyb3cgbmV3IEVycm9yKCdoYXMoKSBub3QgaW1wbGVtZW50ZWQnKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZXR1cm5zIGFuIGFycmF5IG9mIHRoZSBuYW1lcyBvZiB0aGUga2V5cyBkZWZpbmVkIG9uIHRoZSBvYmplY3QuXG5cdCAqXG5cdCAqIEBhY2Nlc3MgcHVibGljXG5cdCAqL1xuXHRrZXlzKCkge1xuXHRcdHRocm93IG5ldyBFcnJvcigna2V5cygpIG5vdCBpbXBsZW1lbnRlZCcpO1xuXHR9XG5cblx0LyoqXG5cdCAqIExvYWRzIGEgY29uZmlnIGZpbGUuXG5cdCAqXG5cdCAqIEBwYXJhbSB7U3RyaW5nfSBmaWxlIC0gVGhlIHBhdGggdG8gdGhlIGNvbmZpZyBmaWxlIHRvIGxvYWQuXG5cdCAqIEBhY2Nlc3MgcHVibGljXG5cdCAqL1xuXHRsb2FkKGZpbGUpIHtcblx0XHR0aHJvdyBuZXcgRXJyb3IoJ2xvYWQoKSBub3QgaW1wbGVtZW50ZWQnKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBEZWVwbHkgbWVyZ2VzIGFuIG9iamVjdCBpbnRvIGEgbGF5ZXIncyBzdG9yZS5cblx0ICpcblx0ICogQHBhcmFtIHtPYmplY3R9IHZhbHVlIC0gVGhlIGRhdGEgdG8gbWVyZ2UuXG5cdCAqIEBhY2Nlc3MgcHVibGljXG5cdCAqL1xuXHRtZXJnZSh2YWx1ZSkge1xuXHRcdHRocm93IG5ldyBFcnJvcignbWVyZ2UoKSBub3QgaW1wbGVtZW50ZWQnKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBTYXZlcyB0aGUgZGF0YSB0byBkaXNrLlxuXHQgKlxuXHQgKiBAcGFyYW0ge1N0cmluZ30gZmlsZSAtIFRoZSBmaWxlbmFtZSB0byBzYXZlIHRoZSBkYXRhIHRvLlxuXHQgKiBAYWNjZXNzIHB1YmxpY1xuXHQgKi9cblx0c2F2ZShmaWxlKSB7XG5cdFx0dGhyb3cgbmV3IEVycm9yKCdzYXZlKCkgbm90IGltcGxlbWVudGVkJyk7XG5cdH1cblxuXHQvKipcblx0ICogQSBKb2kgc2NoZW1hIG9iamVjdC5cblx0ICogQHR5cGUge09iamVjdH1cblx0ICogQGFjY2VzcyBwdWJsaWNcblx0ICovXG5cdGdldCBzY2hlbWEoKSB7XG5cdFx0cmV0dXJuIHRoaXMuX3NjaGVtYTtcblx0fVxuXG5cdHNldCBzY2hlbWEobmV3U2NoZW1hKSB7XG5cdFx0aWYgKG5ld1NjaGVtYSAmJiAoIUpvaS5pc1NjaGVtYShuZXdTY2hlbWEpIHx8IG5ld1NjaGVtYS50eXBlICE9PSAnb2JqZWN0JykpIHtcblx0XHRcdHRocm93IG5ldyBUeXBlRXJyb3IoJ0V4cGVjdGVkIHNjaGVtYSByb290IHRvIGJlIGFuIG9iamVjdCcpO1xuXHRcdH1cblx0XHR0aGlzLl9zY2hlbWEgPSBuZXdTY2hlbWE7XG5cdH1cblxuXHQvKipcblx0ICogU2V0cyB0aGUgdmFsdWUgZm9yIGEgZ2l2ZW4gY29uZmlnIGtleS5cblx0ICpcblx0ICogQHBhcmFtIHtBcnJheS48U3RyaW5nPn0ga2V5IC0gVGhlIGtleSB0byBzZXQuXG5cdCAqIEBwYXJhbSB7Kn0gdmFsdWUgLSBUaGUgdmFsdWUgdG8gc2V0LlxuXHQgKiBAYWNjZXNzIHB1YmxpY1xuXHQgKi9cblx0c2V0KGtleSwgdmFsdWUpIHtcblx0XHR0aHJvdyBuZXcgRXJyb3IoJ3NldCgpIG5vdCBpbXBsZW1lbnRlZCcpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJlbW92ZXMgYSB3YXRjaCBoYW5kbGVyLlxuXHQgKlxuXHQgKiBAcGFyYW0ge0Z1bmN0aW9ufSBoYW5kbGVyIC0gQSBjYWxsYmFjayB0byBmaXJlIHdoZW4gYSBjaGFuZ2Ugb2NjdXJzLlxuXHQgKiBAYWNjZXNzIHB1YmxpY1xuXHQgKi9cblx0dW53YXRjaChoYW5kbGVyKSB7XG5cdFx0Ly8gbm90aGluZyB0byBkb1xuXHR9XG5cblx0LyoqXG5cdCAqIFJlZ2lzdGVycyBhIHdhdGNoIGhhbmRsZXIuXG5cdCAqXG5cdCAqIEBwYXJhbSB7QXJyYXkuPFN0cmluZz59IFtmaWx0ZXJdIC0gQSBwcm9wZXJ0eSBuYW1lIG9yIGFycmF5IG9mIG5lc3RlZCBwcm9wZXJ0aWVzIHRvIHdhdGNoLlxuXHQgKiBAcGFyYW0ge0Z1bmN0aW9ufSBoYW5kbGVyIC0gQSBjYWxsYmFjayB0byBmaXJlIHdoZW4gYSBjaGFuZ2Ugb2NjdXJzLlxuXHQgKiBAYWNjZXNzIHB1YmxpY1xuXHQgKi9cblx0d2F0Y2goZmlsdGVyLCBoYW5kbGVyKSB7XG5cdFx0Ly8gbm90aGluZyB0byBkb1xuXHR9XG59XG4iXSwiZmlsZSI6InN0b3JlLmpzIn0=

@@ -18,2 +18,4 @@ "use strict";

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

@@ -242,11 +244,8 @@

const tmpFile = `${file}.${Date.now()}.tmp`;
_fsExtra.default.outputJsonSync(tmpFile, this.data, {
spaces: 2
(0, _fsutil.writeFileSync)(tmpFile, JSON.stringify(this.data, null, 2), {
applyOwner: this.applyOwner
});
_fsExtra.default.moveSync(tmpFile, file, {
overwrite: true
(0, _fsutil.moveSync)(tmpFile, file, {
applyOwner: this.applyOwner
});
log(`Wrote config file: ${highlight(file)}`);

@@ -335,2 +334,2 @@ return this;

_defineProperty(JSONStore, "extension", '.json');
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInN0b3Jlcy9qc29uLXN0b3JlLmpzIl0sIm5hbWVzIjpbImxvZyIsImhpZ2hsaWdodCIsInNub29wbG9nZyIsInN0eWxlcyIsIkpTT05TdG9yZSIsIlN0b3JlIiwiY29uc3RydWN0b3IiLCJvcHRzIiwiZGF0YSIsIlR5cGVFcnJvciIsIk5vZGUiLCJkZWxldGUiLCJrZXkiLCJzdGFjayIsImxlbiIsImxlbmd0aCIsImZvdW5kIiwicHJvcCIsImkiLCJ1bmRlZmluZWQiLCJPYmplY3QiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJwb3AiLCJrZXlzIiwicHVzaCIsImdldCIsIkFycmF5IiwiaXNBcnJheSIsImhhcyIsImdldE93blByb3BlcnR5TmFtZXMiLCJsb2FkIiwiZmlsZSIsImZzIiwiZXhpc3RzU3luYyIsImVyciIsIkVycm9yIiwiY29kZSIsImNvbnRlbnQiLCJyZWFkRmlsZVN5bmMiLCJlIiwibWVzc2FnZSIsIkpTT04iLCJwYXJzZSIsIm1lcmdlIiwic2F2ZSIsImV4dCIsInBhdGgiLCJleHRuYW1lIiwiZXh0ZW5zaW9uIiwidG1wRmlsZSIsIkRhdGUiLCJub3ciLCJvdXRwdXRKc29uU3luYyIsInNwYWNlcyIsIm1vdmVTeW5jIiwib3ZlcndyaXRlIiwic2V0IiwidmFsdWUiLCJwYXVzZSIsIm9iaiIsInNlZ21lbnQiLCJyZXN1bWUiLCJ0b1N0cmluZyIsImluZGVudGF0aW9uIiwic3RyaW5naWZ5IiwidW53YXRjaCIsImhhbmRsZXIiLCJ3YXRjaCIsImZpbHRlciJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOzs7Ozs7QUFFQSxNQUFNO0FBQUVBLEVBQUFBO0FBQUYsSUFBVSx3QkFBVSxZQUFWLEVBQXdCLFlBQXhCLENBQWhCO0FBQ0EsTUFBTTtBQUFFQyxFQUFBQTtBQUFGLElBQWdCQyxtQkFBVUMsTUFBaEM7QUFFQTtBQUNBO0FBQ0E7O0FBQ2UsTUFBTUMsU0FBTixTQUF3QkMs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ZGUnO1xuaW1wb3J0IHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgc25vb3Bsb2dnIGZyb20gJ3Nub29wbG9nZyc7XG5pbXBvcnQgU3RvcmUgZnJvbSAnLi4vc3RvcmUnO1xuXG5jb25zdCB7IGxvZyB9ID0gc25vb3Bsb2dnKCdjb25maWcta2l0JykoJ2pzb24tc3RvcmUnKTtcbmNvbnN0IHsgaGlnaGxpZ2h0IH0gPSBzbm9vcGxvZ2cuc3R5bGVzO1xuXG4vKipcbiAqIExvYWRzIGAuanNvbmAgY29uZmlnIGZpbGVzLlxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBKU09OU3RvcmUgZXh0ZW5kcyBTdG9yZSB7XG5cdC8qKlxuXHQgKiBUaGUgZmlsZSBleHRlbnNpb24gYXNzb2NpYXRlZCB0byB0aGlzIHR5cGUgb2Ygc3RvcmUuXG5cdCAqIEB0eXBlIHtTdHJpbmd9XG5cdCAqL1xuXHRzdGF0aWMgZXh0ZW5zaW9uID0gJy5qc29uJztcblxuXHQvKipcblx0ICogSW5pdGlhbGl6ZXMgdGhlIHN0b3JlLlxuXHQgKlxuXHQgKiBAcGFyYW0ge09iamVjdH0gW29wdHNdIC0gVmFyaW91cyBvcHRpb25zLlxuXHQgKiBAcGFyYW0ge09iamVjdH0gW29wdHMuZGF0YV0gLSBBIGRhdGEgb2JqZWN0IHRvIGluaXRpYWxpemUgdGhlIHN0b3JlIHdpdGguXG5cdCAqIEBhY2Nlc3MgcHVibGljXG5cdCAqL1xuXHRjb25zdHJ1Y3RvcihvcHRzID0ge30pIHtcblx0XHRzdXBlcihvcHRzKTtcblxuXHRcdGNvbnN0IGRhdGEgPSBvcHRzLmRhdGEgfHwge307XG5cdFx0aWYgKHR5cGVvZiBkYXRhICE9PSAnb2JqZWN0Jykge1xuXHRcdFx0dGhyb3cgbmV3IFR5cGVFcnJvcignRXhwZWN0ZWQgY29uZmlnIGRhdGEgdG8gYmUgYW4gb2JqZWN0Jyk7XG5cdFx0fVxuXG5cdFx0LyoqXG5cdFx0ICogVGhlIGRhdGEgaW4gdGhpcyBzdG9yZS5cblx0XHQgKiBAdHlwZSB7T2JqZWN0fVxuXHRcdCAqL1xuXHRcdHRoaXMuZGF0YSA9IG5ldyBOb2RlKGRhdGEpO1xuXHR9XG5cblx0LyoqXG5cdCAqIERlbGV0ZXMgYSBjb25maWcgdmFsdWUuXG5cdCAqXG5cdCAqIEBwYXJhbSB7QXJyYXkuPFN0cmluZz59IGtleSAtIFRoZSBrZXkgdG8gZGVsZXRlLlxuXHQgKiBAcmV0dXJucyB7Qm9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIHZhbHVlIHdhcyBkZWxldGVkLlxuXHQgKiBAYWNjZXNzIHB1YmxpY1xuXHQgKi9cblx0ZGVsZXRlKGtleSkge1xuXHRcdGNvbnN0IHN0YWNrID0gW107XG5cdFx0Y29uc3QgbGVuID0ga2V5Lmxlbmd0aDtcblx0XHRsZXQgZm91bmQgPSBmYWxzZTtcblx0XHRsZXQgeyBkYXRhIH0gPSB0aGlzO1xuXHRcdGxldCBwcm9wO1xuXG5cdFx0Zm9yIChsZXQgaSA9IDA7IGRhdGEgIT09IHVuZGVmaW5lZCAmJiAocHJvcCA9IGtleVtpXSk7IGkrKykge1xuXHRcdFx0aWYgKCFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZGF0YSwgcHJvcCkpIHtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHR9XG5cblx0XHRcdGlmIChpICsgMSA9PT0gbGVuKSB7XG5cdFx0XHRcdGZvdW5kID0gdHJ1ZTtcblx0XHRcdFx0ZGVsZXRlIGRhdGFbcHJvcF07XG5cblx0XHRcdFx0d2hpbGUgKGRhdGEgPSBzdGFjay5wb3AoKSkge1xuXHRcdFx0XHRcdGlmIChPYmplY3Qua2V5cyhkYXRhW2tleVstLWldXSkubGVuZ3RoKSB7XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0ZGVsZXRlIGRhdGFba2V5W2ldXTtcblx0XHRcdFx0fVxuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0c3RhY2sucHVzaChkYXRhKTtcblx0XHRcdFx0ZGF0YSA9IGRhdGFbcHJvcF07XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGZvdW5kO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJldHJpZXZlcyBhIHZhbHVlIGZvciB0aGUgc3BlY2lmaWVkIGtleS5cblx0ICpcblx0ICogQHBhcmFtIHtBcnJheS48U3RyaW5nPn0gW2tleV0gLSBUaGUga2V5IHRvIGdldC4gV2hlbiBgdW5kZWZpbmVkYCwgdGhlIGVudGlyZSBjb25maWcgaXNcblx0ICogcmV0dXJuZWQuXG5cdCAqIEByZXR1cm5zIHsqfVxuXHQgKiBAYWNjZXNzIHB1YmxpY1xuXHQgKi9cblx0Z2V0KGtleSkge1xuXHRcdGxldCB7IGRhdGEgfSA9IHRoaXM7XG5cblx0XHRpZiAoa2V5Py5sZW5ndGgpIHtcblx0XHRcdGZvciAobGV0IGkgPSAwLCBwcm9wOyBkYXRhICE9PSB1bmRlZmluZWQgJiYgKHByb3AgPSBrZXlbaSsrXSk7IGRhdGEgPSBkYXRhW3Byb3BdKSB7XG5cdFx0XHRcdGlmICh0eXBlb2YgZGF0YSAhPT0gJ29iamVjdCcpIHtcblx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblx0XHRpZiAoIWRhdGEgfHwgdHlwZW9mIGRhdGEgIT09ICdvYmplY3QnIHx8IEFycmF5LmlzQXJyYXkoZGF0YSkgfHwgT2JqZWN0LmtleXMoZGF0YSkubGVuZ3RoKSB7XG5cdFx0XHRyZXR1cm4gZGF0YTtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogRGV0ZXJtaW5lcyBpZiBhIGtleSBpcyBzZXQuXG5cdCAqXG5cdCAqIEBwYXJhbSB7QXJyYXkuPFN0cmluZz59IFtrZXldIC0gVGhlIGtleSB0byBjaGVjay5cblx0ICogQHJldHVybnMge0Jvb2xlYW59XG5cdCAqIEBhY2Nlc3MgcHVibGljXG5cdCAqL1xuXHRoYXMoa2V5KSB7XG5cdFx0bGV0IHsgZGF0YSB9ID0gdGhpcztcblxuXHRcdGlmIChrZXk/Lmxlbmd0aCkge1xuXHRcdFx0Zm9yIChsZXQgaSA9IDAsIHByb3A7IGRhdGEgIT09IHVuZGVmaW5lZCAmJiAocHJvcCA9IGtleVtpKytdKTsgZGF0YSA9IGRhdGFbcHJvcF0pIHtcblx0XHRcdFx0aWYgKHR5cGVvZiBkYXRhICE9PSAnb2JqZWN0Jykge1xuXHRcdFx0XHRcdHJldHVybiBmYWxzZTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHJldHVybiBkYXRhICE9PSB1bmRlZmluZWQ7XG5cdH1cblxuXHQvKipcblx0ICogUmV0dXJucyBhbiBhcnJheSBvZiB0aGUgbmFtZXMgb2YgdGhlIGtleXMgZGVmaW5lZCBvbiB0aGUgb2JqZWN0LlxuXHQgKlxuXHQgKiBAcmV0dXJucyB7QXJyYXkuPFN0cmluZz59XG5cdCAqIEBhY2Nlc3MgcHVibGljXG5cdCAqL1xuXHRrZXlzKCkge1xuXHRcdHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh0aGlzLmRhdGEpO1xuXHR9XG5cblx0LyoqXG5cdCAqIExvYWRzIGEgY29uZmlnIGZpbGUuXG5cdCAqXG5cdCAqIEBwYXJhbSB7U3RyaW5nfSBmaWxlIC0gVGhlIHBhdGggdG8gdGhlIGNvbmZpZyBmaWxlIHRvIGxvYWQuXG5cdCAqIEByZXR1cm5zIHtKU09OU3RvcmV9XG5cdCAqIEBhY2Nlc3MgcHVibGljXG5cdCAqL1xuXHRsb2FkKGZpbGUpIHtcblx0XHRpZiAoIWZzLmV4aXN0c1N5bmMoZmlsZSkpIHtcblx0XHRcdGNvbnN0IGVyciA9IG5ldyBFcnJvcihgRmlsZSBub3QgZm91bmQ6ICR7ZmlsZX1gKTtcblx0XHRcdGVyci5jb2RlID0gJ0VOT0VOVCc7XG5cdFx0XHR0aHJvdyBlcnI7XG5cdFx0fVxuXG5cdFx0bGV0IGNvbnRlbnQ7XG5cdFx0bGV0IGRhdGE7XG5cblx0XHRsb2coYExvYWRpbmcgJHtoaWdobGlnaHQoZmlsZSl9YCk7XG5cdFx0dHJ5IHtcblx0XHRcdGNvbnRlbnQgPSBmcy5yZWFkRmlsZVN5bmMoZmlsZSwgJ3V0ZjgnKTtcblx0XHR9IGNhdGNoIChlKSB7XG5cdFx0XHRlLm1lc3NhZ2UgPSBgRmFpbGVkIHRvIGxvYWQgY29uZmlnIGZpbGU6ICR7ZS5tZXNzYWdlfWA7XG5cdFx0XHR0aHJvdyBlO1xuXHRcdH1cblxuXHRcdHRyeSB7XG5cdFx0XHRkYXRhID0gSlNPTi5wYXJzZShjb250ZW50KTtcblx0XHR9IGNhdGNoIChlKSB7XG5cdFx0XHRlLm1lc3NhZ2UgPSBgRmFpbGVkIHRvIGxvYWQgY29uZmlnIGZpbGU6ICR7ZS5tZXNzYWdlfWA7XG5cdFx0XHR0aHJvdyBlO1xuXHRcdH1cblxuXHRcdGlmICghZGF0YSB8fCB0eXBlb2YgZGF0YSAhPT0gJ29iamVjdCcpIHtcblx0XHRcdHRocm93IG5ldyBUeXBlRXJyb3IoJ0V4cGVjdGVkIGNvbmZpZyBmaWxlIHRvIGJlIGFuIG9iamVjdCcpO1xuXHRcdH1cblxuXHRcdE5vZGUubWVyZ2UodGhpcy5kYXRhLCBkYXRhKTtcblxuXHRcdHJldHVybiB0aGlzO1xuXHR9XG5cblx0LyoqXG5cdCAqIERlZXBseSBtZXJnZXMgYW4gb2JqZWN0IGludG8gYSBsYXllcidzIHN0b3JlLlxuXHQgKlxuXHQgKiBAcGFyYW0ge09iamVjdH0gZGF0YSAtIFRoZSBkYXRhIHRvIG1lcmdlLlxuXHQgKiBAcmV0dXJucyB7SlNPTlN0b3JlfVxuXHQgKiBAYWNjZXNzIHB1YmxpY1xuXHQgKi9cblx0bWVyZ2UoZGF0YSkge1xuXHRcdE5vZGUubWVyZ2UodGhpcy5kYXRhLCBkYXRhKTtcblx0XHRyZXR1cm4gdGhpcztcblx0fVxuXG5cdC8qKlxuXHQgKiBTYXZlcyB0aGUgZGF0YSB0byBkaXNrLlxuXHQgKlxuXHQgKiBAcGFyYW0ge1N0cmluZ30gZmlsZSAtIFRoZSBmaWxlbmFtZSB0byBzYXZlIHRoZSBkYXRhIHRvLlxuXHQgKiBAcmV0dXJucyB7SlNPTlN0b3JlfVxuXHQgKiBAYWNjZXNzIHB1YmxpY1xuXHQgKi9cblx0c2F2ZShmaWxlKSB7XG5cdFx0aWYgKCFmaWxlIHx8IHR5cGVvZiBmaWxlICE9PSAnc3RyaW5nJykge1xuXHRcdFx0dGhyb3cgbmV3IFR5cGVFcnJvcignRXhwZWN0ZWQgY29uZmlnIGZpbGUgcGF0aCB0byBiZSBhIHN0cmluZycpO1xuXHRcdH1cblxuXHRcdGNvbnN0IGV4dCA9IHBhdGguZXh0bmFtZShmaWxlKTtcblx0XHRpZiAoZXh0ICE9PSBKU09OU3RvcmUuZXh0ZW5zaW9uKSB7XG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoYEV4cGVjdGVkIEpTT04gY29uZmlnIGZpbGUgdG8gaGF2ZSBcIiR7SlNPTlN0b3JlLmV4dGVuc2lvbn1cIiBleHRlbnNpb24sIGZvdW5kIFwiJHtleHR9XCJgKTtcblx0XHR9XG5cblx0XHRjb25zdCB0bXBGaWxlID0gYCR7ZmlsZX0uJHtEYXRlLm5vdygpfS50bXBgO1xuXHRcdGZzLm91dHB1dEpzb25TeW5jKHRtcEZpbGUsIHRoaXMuZGF0YSwgeyBzcGFjZXM6IDIgfSk7XG5cdFx0ZnMubW92ZVN5bmModG1wRmlsZSwgZmlsZSwgeyBvdmVyd3JpdGU6IHRydWUgfSk7XG5cdFx0bG9nKGBXcm90ZSBjb25maWcgZmlsZTogJHtoaWdobGlnaHQoZmlsZSl9YCk7XG5cblx0XHRyZXR1cm4gdGhpcztcblx0fVxuXG5cdC8qKlxuXHQgKiBTZXRzIHRoZSB2YWx1ZSBmb3IgYSBnaXZlbiBjb25maWcga2V5LlxuXHQgKlxuXHQgKiBAcGFyYW0ge0FycmF5LjxTdHJpbmc+fSBrZXkgLSBUaGUga2V5IHRvIHNldC5cblx0ICogQHBhcmFtIHsqfSB2YWx1ZSAtIFRoZSB2YWx1ZSB0byBzZXQuXG5cdCAqIEByZXR1cm5zIHtKU09OU3RvcmV9XG5cdCAqIEBhY2Nlc3MgcHVibGljXG5cdCAqL1xuXHRzZXQoa2V5LCB2YWx1ZSkge1xuXHRcdE5vZGUucGF1c2UodGhpcy5kYXRhKTtcblxuXHRcdGxldCBvYmogPSB0aGlzLmRhdGE7XG5cdFx0Zm9yIChsZXQgaSA9IDAsIGxlbiA9IGtleS5sZW5ndGg7IGkgPCBsZW47IGkrKykge1xuXHRcdFx0Y29uc3Qgc2VnbWVudCA9IGtleVtpXTtcblx0XHRcdGlmIChpICsgMSA8IGxlbikge1xuXHRcdFx0XHRpZiAodHlwZW9mIG9ialtzZWdtZW50XSAhPT0gJ29iamVjdCcgfHwgQXJyYXkuaXNBcnJheShvYmpbc2VnbWVudF0pKSB7XG5cdFx0XHRcdFx0b2JqW3NlZ21lbnRdID0ge307XG5cdFx0XHRcdH1cblx0XHRcdFx0b2JqID0gb2JqW3NlZ21lbnRdO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0b2JqW3NlZ21lbnRdID0gdmFsdWU7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Tm9kZS5yZXN1bWUodGhpcy5kYXRhKTtcblxuXHRcdHJldHVybiB0aGlzO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJldHVybnMgdGhlIGRhdGEgYXMgYSBKU09OLWVuY29kZWQgc3RyaW5nLlxuXHQgKlxuXHQgKiBAcGFyYW0ge051bWJlcn0gW2luZGVudGF0aW9uPTJdIFRoZSBudW1iZXIgb2Ygc3BhY2VzIHRvIGluZGVudCB0aGUgSlNPTiBmb3JtYXR0ZWQgb3V0cHV0LlxuXHQgKiBAcmV0dXJucyB7U3RyaW5nfVxuXHQgKiBAYWNjZXNzIHB1YmxpY1xuXHQgKi9cblx0dG9TdHJpbmcoaW5kZW50YXRpb24pIHtcblx0XHRyZXR1cm4gSlNPTi5zdHJpbmdpZnkodGhpcy5kYXRhLCBudWxsLCBpbmRlbnRhdGlvbik7XG5cdH1cblxuXHQvKipcblx0ICogUmVtb3ZlcyBhIHdhdGNoIGhhbmRsZXIuXG5cdCAqXG5cdCAqIEBwYXJhbSB7RnVuY3Rpb259IGhhbmRsZXIgLSBBIGNhbGxiYWNrIHRvIGZpcmUgd2hlbiBhIGNoYW5nZSBvY2N1cnMuXG5cdCAqIEByZXR1cm5zIHtKU09OU3RvcmV9XG5cdCAqIEBhY2Nlc3MgcHVibGljXG5cdCAqL1xuXHR1bndhdGNoKGhhbmRsZXIpIHtcblx0XHROb2RlLnVud2F0Y2godGhpcy5kYXRhLCBoYW5kbGVyKTtcblx0XHRyZXR1cm4gdGhpcztcblx0fVxuXG5cdC8qKlxuXHQgKiBSZWdpc3RlcnMgYSB3YXRjaCBoYW5kbGVyLlxuXHQgKlxuXHQgKiBAcGFyYW0ge0FycmF5LjxTdHJpbmc+fSBbZmlsdGVyXSAtIEEgcHJvcGVydHkgbmFtZSBvciBhcnJheSBvZiBuZXN0ZWQgcHJvcGVydGllcyB0byB3YXRjaC5cblx0ICogQHBhcmFtIHtGdW5jdGlvbn0gaGFuZGxlciAtIEEgY2FsbGJhY2sgdG8gZmlyZSB3aGVuIGEgY2hhbmdlIG9jY3Vycy5cblx0ICogQHJldHVybnMge0pTT05TdG9yZX1cblx0ICogQGFjY2VzcyBwdWJsaWNcblx0ICovXG5cdHdhdGNoKGZpbHRlciwgaGFuZGxlcikge1xuXHRcdE5vZGUud2F0Y2godGhpcy5kYXRhLCBmaWx0ZXI/Lmxlbmd0aCA/IGZpbHRlciA6IG51bGwsIGhhbmRsZXIpO1xuXHRcdHJldHVybiB0aGlzO1xuXHR9XG59XG4iXSwiZmlsZSI6InN0b3Jlcy9qc29uLXN0b3JlLmpzIn0=
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInN0b3Jlcy9qc29uLXN0b3JlLmpzIl0sIm5hbWVzIjpbImxvZyIsImhpZ2hsaWdodCIsInNub29wbG9nZyIsInN0eWxlcyIsIkpTT05TdG9yZSIsIlN0b3JlIiwiY29uc3RydWN0b3IiLCJvcHRzIiwiZGF0YSIsIlR5cGVFcnJvciIsIk5vZGUiLCJkZWxldGUiLCJrZXkiLCJzdGFjayIsImxlbiIsImxlbmd0aCIsImZvdW5kIiwicHJvcCIsImkiLCJ1bmRlZmluZWQiLCJPYmplY3QiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJwb3AiLCJrZXlzIiwicHVzaCIsImdldCIsIkFycmF5IiwiaXNBcnJheSIsImhhcyIsImdldE93blByb3BlcnR5TmFtZXMiLCJsb2FkIiwiZmlsZSIsImZzIiwiZXhpc3RzU3luYyIsImVyciIsIkVycm9yIiwiY29kZSIsImNvbnRlbnQiLCJyZWFkRmlsZVN5bmMiLCJlIiwibWVzc2FnZSIsIkpTT04iLCJwYXJzZSIsIm1lcmdlIiwic2F2ZSIsImV4dCIsInBhdGgiLCJleHRuYW1lIiwiZXh0ZW5zaW9uIiwidG1wRmlsZSIsIkRhdGUiLCJub3ciLCJzdHJpbmdpZnkiLCJhcHBseU93bmVyIiwic2V0IiwidmFsdWUiLCJwYXVzZSIsIm9iaiIsInNlZ21lbnQiLCJyZXN1bWUiLCJ0b1N0cmluZyIsImluZGVudGF0aW9uIiwidW53YXRjaCIsImhhbmRsZXIiLCJ3YXRjaCIsImZpbHRlciJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOzs7Ozs7QUFFQSxNQUFNO0FBQUVBLEVBQUFBO0FBQUYsSUFBVSx3QkFBVSxZQUFWLEVBQXdCLFlBQXhCLENBQWhCO0FBQ0EsTUFBTTtBQUFFQyxFQUFBQTtBQUFGLElBQWdCQyxtQkFBVUMsTUFBaEM7QUFFQTtBQUNBO0FBQ0E7O0FBQ2UsTUFBTUMsU0FBTixTQUF3QkMsY0FBeEIsQ0FBOEI7QUFDNUM7QUFDRDtBQUNBO0FB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bm9kZSc7XG5pbXBvcnQgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCBzbm9vcGxvZ2cgZnJvbSAnc25vb3Bsb2dnJztcbmltcG9ydCBTdG9yZSBmcm9tICcuLi9zdG9yZSc7XG5pbXBvcnQgeyBtb3ZlU3luYywgd3JpdGVGaWxlU3luYyB9IGZyb20gJy4uL2ZzdXRpbCc7XG5cbmNvbnN0IHsgbG9nIH0gPSBzbm9vcGxvZ2coJ2NvbmZpZy1raXQnKSgnanNvbi1zdG9yZScpO1xuY29uc3QgeyBoaWdobGlnaHQgfSA9IHNub29wbG9nZy5zdHlsZXM7XG5cbi8qKlxuICogTG9hZHMgYC5qc29uYCBjb25maWcgZmlsZXMuXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEpTT05TdG9yZSBleHRlbmRzIFN0b3JlIHtcblx0LyoqXG5cdCAqIFRoZSBmaWxlIGV4dGVuc2lvbiBhc3NvY2lhdGVkIHRvIHRoaXMgdHlwZSBvZiBzdG9yZS5cblx0ICogQHR5cGUge1N0cmluZ31cblx0ICovXG5cdHN0YXRpYyBleHRlbnNpb24gPSAnLmpzb24nO1xuXG5cdC8qKlxuXHQgKiBJbml0aWFsaXplcyB0aGUgc3RvcmUuXG5cdCAqXG5cdCAqIEBwYXJhbSB7T2JqZWN0fSBbb3B0c10gLSBWYXJpb3VzIG9wdGlvbnMuXG5cdCAqIEBwYXJhbSB7T2JqZWN0fSBbb3B0cy5kYXRhXSAtIEEgZGF0YSBvYmplY3QgdG8gaW5pdGlhbGl6ZSB0aGUgc3RvcmUgd2l0aC5cblx0ICogQGFjY2VzcyBwdWJsaWNcblx0ICovXG5cdGNvbnN0cnVjdG9yKG9wdHMgPSB7fSkge1xuXHRcdHN1cGVyKG9wdHMpO1xuXG5cdFx0Y29uc3QgZGF0YSA9IG9wdHMuZGF0YSB8fCB7fTtcblx0XHRpZiAodHlwZW9mIGRhdGEgIT09ICdvYmplY3QnKSB7XG5cdFx0XHR0aHJvdyBuZXcgVHlwZUVycm9yKCdFeHBlY3RlZCBjb25maWcgZGF0YSB0byBiZSBhbiBvYmplY3QnKTtcblx0XHR9XG5cblx0XHQvKipcblx0XHQgKiBUaGUgZGF0YSBpbiB0aGlzIHN0b3JlLlxuXHRcdCAqIEB0eXBlIHtPYmplY3R9XG5cdFx0ICovXG5cdFx0dGhpcy5kYXRhID0gbmV3IE5vZGUoZGF0YSk7XG5cdH1cblxuXHQvKipcblx0ICogRGVsZXRlcyBhIGNvbmZpZyB2YWx1ZS5cblx0ICpcblx0ICogQHBhcmFtIHtBcnJheS48U3RyaW5nPn0ga2V5IC0gVGhlIGtleSB0byBkZWxldGUuXG5cdCAqIEByZXR1cm5zIHtCb29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgdmFsdWUgd2FzIGRlbGV0ZWQuXG5cdCAqIEBhY2Nlc3MgcHVibGljXG5cdCAqL1xuXHRkZWxldGUoa2V5KSB7XG5cdFx0Y29uc3Qgc3RhY2sgPSBbXTtcblx0XHRjb25zdCBsZW4gPSBrZXkubGVuZ3RoO1xuXHRcdGxldCBmb3VuZCA9IGZhbHNlO1xuXHRcdGxldCB7IGRhdGEgfSA9IHRoaXM7XG5cdFx0bGV0IHByb3A7XG5cblx0XHRmb3IgKGxldCBpID0gMDsgZGF0YSAhPT0gdW5kZWZpbmVkICYmIChwcm9wID0ga2V5W2ldKTsgaSsrKSB7XG5cdFx0XHRpZiAoIU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChkYXRhLCBwcm9wKSkge1xuXHRcdFx0XHRicmVhaztcblx0XHRcdH1cblxuXHRcdFx0aWYgKGkgKyAxID09PSBsZW4pIHtcblx0XHRcdFx0Zm91bmQgPSB0cnVlO1xuXHRcdFx0XHRkZWxldGUgZGF0YVtwcm9wXTtcblxuXHRcdFx0XHR3aGlsZSAoZGF0YSA9IHN0YWNrLnBvcCgpKSB7XG5cdFx0XHRcdFx0aWYgKE9iamVjdC5rZXlzKGRhdGFba2V5Wy0taV1dKS5sZW5ndGgpIHtcblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRkZWxldGUgZGF0YVtrZXlbaV1dO1xuXHRcdFx0XHR9XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRzdGFjay5wdXNoKGRhdGEpO1xuXHRcdFx0XHRkYXRhID0gZGF0YVtwcm9wXTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRyZXR1cm4gZm91bmQ7XG5cdH1cblxuXHQvKipcblx0ICogUmV0cmlldmVzIGEgdmFsdWUgZm9yIHRoZSBzcGVjaWZpZWQga2V5LlxuXHQgKlxuXHQgKiBAcGFyYW0ge0FycmF5LjxTdHJpbmc+fSBba2V5XSAtIFRoZSBrZXkgdG8gZ2V0LiBXaGVuIGB1bmRlZmluZWRgLCB0aGUgZW50aXJlIGNvbmZpZyBpc1xuXHQgKiByZXR1cm5lZC5cblx0ICogQHJldHVybnMgeyp9XG5cdCAqIEBhY2Nlc3MgcHVibGljXG5cdCAqL1xuXHRnZXQoa2V5KSB7XG5cdFx0bGV0IHsgZGF0YSB9ID0gdGhpcztcblxuXHRcdGlmIChrZXk/Lmxlbmd0aCkge1xuXHRcdFx0Zm9yIChsZXQgaSA9IDAsIHByb3A7IGRhdGEgIT09IHVuZGVmaW5lZCAmJiAocHJvcCA9IGtleVtpKytdKTsgZGF0YSA9IGRhdGFbcHJvcF0pIHtcblx0XHRcdFx0aWYgKHR5cGVvZiBkYXRhICE9PSAnb2JqZWN0Jykge1xuXHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdGlmICghZGF0YSB8fCB0eXBlb2YgZGF0YSAhPT0gJ29iamVjdCcgfHwgQXJyYXkuaXNBcnJheShkYXRhKSB8fCBPYmplY3Qua2V5cyhkYXRhKS5sZW5ndGgpIHtcblx0XHRcdHJldHVybiBkYXRhO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBEZXRlcm1pbmVzIGlmIGEga2V5IGlzIHNldC5cblx0ICpcblx0ICogQHBhcmFtIHtBcnJheS48U3RyaW5nPn0gW2tleV0gLSBUaGUga2V5IHRvIGNoZWNrLlxuXHQgKiBAcmV0dXJucyB7Qm9vbGVhbn1cblx0ICogQGFjY2VzcyBwdWJsaWNcblx0ICovXG5cdGhhcyhrZXkpIHtcblx0XHRsZXQgeyBkYXRhIH0gPSB0aGlzO1xuXG5cdFx0aWYgKGtleT8ubGVuZ3RoKSB7XG5cdFx0XHRmb3IgKGxldCBpID0gMCwgcHJvcDsgZGF0YSAhPT0gdW5kZWZpbmVkICYmIChwcm9wID0ga2V5W2krK10pOyBkYXRhID0gZGF0YVtwcm9wXSkge1xuXHRcdFx0XHRpZiAodHlwZW9mIGRhdGEgIT09ICdvYmplY3QnKSB7XG5cdFx0XHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGRhdGEgIT09IHVuZGVmaW5lZDtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZXR1cm5zIGFuIGFycmF5IG9mIHRoZSBuYW1lcyBvZiB0aGUga2V5cyBkZWZpbmVkIG9uIHRoZSBvYmplY3QuXG5cdCAqXG5cdCAqIEByZXR1cm5zIHtBcnJheS48U3RyaW5nPn1cblx0ICogQGFjY2VzcyBwdWJsaWNcblx0ICovXG5cdGtleXMoKSB7XG5cdFx0cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHRoaXMuZGF0YSk7XG5cdH1cblxuXHQvKipcblx0ICogTG9hZHMgYSBjb25maWcgZmlsZS5cblx0ICpcblx0ICogQHBhcmFtIHtTdHJpbmd9IGZpbGUgLSBUaGUgcGF0aCB0byB0aGUgY29uZmlnIGZpbGUgdG8gbG9hZC5cblx0ICogQHJldHVybnMge0pTT05TdG9yZX1cblx0ICogQGFjY2VzcyBwdWJsaWNcblx0ICovXG5cdGxvYWQoZmlsZSkge1xuXHRcdGlmICghZnMuZXhpc3RzU3luYyhmaWxlKSkge1xuXHRcdFx0Y29uc3QgZXJyID0gbmV3IEVycm9yKGBGaWxlIG5vdCBmb3VuZDogJHtmaWxlfWApO1xuXHRcdFx0ZXJyLmNvZGUgPSAnRU5PRU5UJztcblx0XHRcdHRocm93IGVycjtcblx0XHR9XG5cblx0XHRsZXQgY29udGVudDtcblx0XHRsZXQgZGF0YTtcblxuXHRcdGxvZyhgTG9hZGluZyAke2hpZ2hsaWdodChmaWxlKX1gKTtcblx0XHR0cnkge1xuXHRcdFx0Y29udGVudCA9IGZzLnJlYWRGaWxlU3luYyhmaWxlLCAndXRmOCcpO1xuXHRcdH0gY2F0Y2ggKGUpIHtcblx0XHRcdGUubWVzc2FnZSA9IGBGYWlsZWQgdG8gbG9hZCBjb25maWcgZmlsZTogJHtlLm1lc3NhZ2V9YDtcblx0XHRcdHRocm93IGU7XG5cdFx0fVxuXG5cdFx0dHJ5IHtcblx0XHRcdGRhdGEgPSBKU09OLnBhcnNlKGNvbnRlbnQpO1xuXHRcdH0gY2F0Y2ggKGUpIHtcblx0XHRcdGUubWVzc2FnZSA9IGBGYWlsZWQgdG8gbG9hZCBjb25maWcgZmlsZTogJHtlLm1lc3NhZ2V9YDtcblx0XHRcdHRocm93IGU7XG5cdFx0fVxuXG5cdFx0aWYgKCFkYXRhIHx8IHR5cGVvZiBkYXRhICE9PSAnb2JqZWN0Jykge1xuXHRcdFx0dGhyb3cgbmV3IFR5cGVFcnJvcignRXhwZWN0ZWQgY29uZmlnIGZpbGUgdG8gYmUgYW4gb2JqZWN0Jyk7XG5cdFx0fVxuXG5cdFx0Tm9kZS5tZXJnZSh0aGlzLmRhdGEsIGRhdGEpO1xuXG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cblxuXHQvKipcblx0ICogRGVlcGx5IG1lcmdlcyBhbiBvYmplY3QgaW50byBhIGxheWVyJ3Mgc3RvcmUuXG5cdCAqXG5cdCAqIEBwYXJhbSB7T2JqZWN0fSBkYXRhIC0gVGhlIGRhdGEgdG8gbWVyZ2UuXG5cdCAqIEByZXR1cm5zIHtKU09OU3RvcmV9XG5cdCAqIEBhY2Nlc3MgcHVibGljXG5cdCAqL1xuXHRtZXJnZShkYXRhKSB7XG5cdFx0Tm9kZS5tZXJnZSh0aGlzLmRhdGEsIGRhdGEpO1xuXHRcdHJldHVybiB0aGlzO1xuXHR9XG5cblx0LyoqXG5cdCAqIFNhdmVzIHRoZSBkYXRhIHRvIGRpc2suXG5cdCAqXG5cdCAqIEBwYXJhbSB7U3RyaW5nfSBmaWxlIC0gVGhlIGZpbGVuYW1lIHRvIHNhdmUgdGhlIGRhdGEgdG8uXG5cdCAqIEByZXR1cm5zIHtKU09OU3RvcmV9XG5cdCAqIEBhY2Nlc3MgcHVibGljXG5cdCAqL1xuXHRzYXZlKGZpbGUpIHtcblx0XHRpZiAoIWZpbGUgfHwgdHlwZW9mIGZpbGUgIT09ICdzdHJpbmcnKSB7XG5cdFx0XHR0aHJvdyBuZXcgVHlwZUVycm9yKCdFeHBlY3RlZCBjb25maWcgZmlsZSBwYXRoIHRvIGJlIGEgc3RyaW5nJyk7XG5cdFx0fVxuXG5cdFx0Y29uc3QgZXh0ID0gcGF0aC5leHRuYW1lKGZpbGUpO1xuXHRcdGlmIChleHQgIT09IEpTT05TdG9yZS5leHRlbnNpb24pIHtcblx0XHRcdHRocm93IG5ldyBFcnJvcihgRXhwZWN0ZWQgSlNPTiBjb25maWcgZmlsZSB0byBoYXZlIFwiJHtKU09OU3RvcmUuZXh0ZW5zaW9ufVwiIGV4dGVuc2lvbiwgZm91bmQgXCIke2V4dH1cImApO1xuXHRcdH1cblxuXHRcdGNvbnN0IHRtcEZpbGUgPSBgJHtmaWxlfS4ke0RhdGUubm93KCl9LnRtcGA7XG5cdFx0d3JpdGVGaWxlU3luYyh0bXBGaWxlLCBKU09OLnN0cmluZ2lmeSh0aGlzLmRhdGEsIG51bGwsIDIpLCB7IGFwcGx5T3duZXI6IHRoaXMuYXBwbHlPd25lciB9KTtcblx0XHRtb3ZlU3luYyh0bXBGaWxlLCBmaWxlLCB7IGFwcGx5T3duZXI6IHRoaXMuYXBwbHlPd25lciB9KTtcblx0XHRsb2coYFdyb3RlIGNvbmZpZyBmaWxlOiAke2hpZ2hsaWdodChmaWxlKX1gKTtcblxuXHRcdHJldHVybiB0aGlzO1xuXHR9XG5cblx0LyoqXG5cdCAqIFNldHMgdGhlIHZhbHVlIGZvciBhIGdpdmVuIGNvbmZpZyBrZXkuXG5cdCAqXG5cdCAqIEBwYXJhbSB7QXJyYXkuPFN0cmluZz59IGtleSAtIFRoZSBrZXkgdG8gc2V0LlxuXHQgKiBAcGFyYW0geyp9IHZhbHVlIC0gVGhlIHZhbHVlIHRvIHNldC5cblx0ICogQHJldHVybnMge0pTT05TdG9yZX1cblx0ICogQGFjY2VzcyBwdWJsaWNcblx0ICovXG5cdHNldChrZXksIHZhbHVlKSB7XG5cdFx0Tm9kZS5wYXVzZSh0aGlzLmRhdGEpO1xuXG5cdFx0bGV0IG9iaiA9IHRoaXMuZGF0YTtcblx0XHRmb3IgKGxldCBpID0gMCwgbGVuID0ga2V5Lmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7XG5cdFx0XHRjb25zdCBzZWdtZW50ID0ga2V5W2ldO1xuXHRcdFx0aWYgKGkgKyAxIDwgbGVuKSB7XG5cdFx0XHRcdGlmICh0eXBlb2Ygb2JqW3NlZ21lbnRdICE9PSAnb2JqZWN0JyB8fCBBcnJheS5pc0FycmF5KG9ialtzZWdtZW50XSkpIHtcblx0XHRcdFx0XHRvYmpbc2VnbWVudF0gPSB7fTtcblx0XHRcdFx0fVxuXHRcdFx0XHRvYmogPSBvYmpbc2VnbWVudF07XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRvYmpbc2VnbWVudF0gPSB2YWx1ZTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHROb2RlLnJlc3VtZSh0aGlzLmRhdGEpO1xuXG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cblxuXHQvKipcblx0ICogUmV0dXJucyB0aGUgZGF0YSBhcyBhIEpTT04tZW5jb2RlZCBzdHJpbmcuXG5cdCAqXG5cdCAqIEBwYXJhbSB7TnVtYmVyfSBbaW5kZW50YXRpb249Ml0gVGhlIG51bWJlciBvZiBzcGFjZXMgdG8gaW5kZW50IHRoZSBKU09OIGZvcm1hdHRlZCBvdXRwdXQuXG5cdCAqIEByZXR1cm5zIHtTdHJpbmd9XG5cdCAqIEBhY2Nlc3MgcHVibGljXG5cdCAqL1xuXHR0b1N0cmluZyhpbmRlbnRhdGlvbikge1xuXHRcdHJldHVybiBKU09OLnN0cmluZ2lmeSh0aGlzLmRhdGEsIG51bGwsIGluZGVudGF0aW9uKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZW1vdmVzIGEgd2F0Y2ggaGFuZGxlci5cblx0ICpcblx0ICogQHBhcmFtIHtGdW5jdGlvbn0gaGFuZGxlciAtIEEgY2FsbGJhY2sgdG8gZmlyZSB3aGVuIGEgY2hhbmdlIG9jY3Vycy5cblx0ICogQHJldHVybnMge0pTT05TdG9yZX1cblx0ICogQGFjY2VzcyBwdWJsaWNcblx0ICovXG5cdHVud2F0Y2goaGFuZGxlcikge1xuXHRcdE5vZGUudW53YXRjaCh0aGlzLmRhdGEsIGhhbmRsZXIpO1xuXHRcdHJldHVybiB0aGlzO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJlZ2lzdGVycyBhIHdhdGNoIGhhbmRsZXIuXG5cdCAqXG5cdCAqIEBwYXJhbSB7QXJyYXkuPFN0cmluZz59IFtmaWx0ZXJdIC0gQSBwcm9wZXJ0eSBuYW1lIG9yIGFycmF5IG9mIG5lc3RlZCBwcm9wZXJ0aWVzIHRvIHdhdGNoLlxuXHQgKiBAcGFyYW0ge0Z1bmN0aW9ufSBoYW5kbGVyIC0gQSBjYWxsYmFjayB0byBmaXJlIHdoZW4gYSBjaGFuZ2Ugb2NjdXJzLlxuXHQgKiBAcmV0dXJucyB7SlNPTlN0b3JlfVxuXHQgKiBAYWNjZXNzIHB1YmxpY1xuXHQgKi9cblx0d2F0Y2goZmlsdGVyLCBoYW5kbGVyKSB7XG5cdFx0Tm9kZS53YXRjaCh0aGlzLmRhdGEsIGZpbHRlcj8ubGVuZ3RoID8gZmlsdGVyIDogbnVsbCwgaGFuZGxlcik7XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cbn1cbiJdLCJmaWxlIjoic3RvcmVzL2pzb24tc3RvcmUuanMifQ==

@@ -24,2 +24,4 @@ "use strict";

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

@@ -282,9 +284,8 @@

const tmpFile = `${file}.${Date.now()}.tmp`;
_fsExtra.default.writeFileSync(tmpFile, this.doc.toString());
_fsExtra.default.moveSync(tmpFile, file, {
overwrite: true
(0, _fsutil.writeFileSync)(tmpFile, this.doc.toString(), {
applyOwner: this.applyOwner
});
(0, _fsutil.moveSync)(tmpFile, file, {
applyOwner: this.applyOwner
});
log(`Wrote config file: ${highlight(file)}`);

@@ -388,2 +389,2 @@ return this;

_defineProperty(XMLStore, "extension", '.xml');
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInN0b3Jlcy94bWwtc3RvcmUuanMiXSwibmFtZXMiOlsibG9nIiwiaGlnaGxpZ2h0Iiwic25vb3Bsb2dnIiwic3R5bGVzIiwiWE1MU3RvcmUiLCJTdG9yZSIsImNvbnN0cnVjdG9yIiwib3B0cyIsInNjaGVtYSIsIlR5cGVFcnJvciIsIl9zY2hlbWEiLCJsb2FkRnJvbVN0cmluZyIsImRhdGEiLCJtZXJnZSIsImRlbGV0ZSIsImtleSIsInN0YWNrIiwibGVuIiwibGVuZ3RoIiwiZm91bmQiLCJwcm9wIiwiaSIsInVuZGVmaW5lZCIsIk9iamVjdCIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsInBvcCIsImtleXMiLCJwdXNoIiwiZ2V0Iiwibm9kZSIsImhhcyIsImxvYWQiLCJmaWxlIiwiZnMiLCJleGlzdHNTeW5jIiwiZXJyIiwiRXJyb3IiLCJjb2RlIiwicmVhZEZpbGVTeW5jIiwic3RyIiwiZXJyb3JNc2ciLCJwYXJzZXIiLCJET01QYXJzZXIiLCJlcnJvckhhbmRsZXIiLCJkb2MiLCJwYXJzZUZyb21TdHJpbmciLCJmb3VuZFBJTiIsImNoaWxkIiwiZmlyc3RDaGlsZCIsIm5leHRTaWJsaW5nIiwibm9kZVR5cGUiLCJQUk9DRVNTSU5HX0lOU1RSVUNUSU9OX05PREUiLCJwaW4iLCJjcmVhdGVQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24iLCJpbnNlcnRCZWZvcmUiLCJjcmVhdGVUZXh0Tm9kZSIsImluZGVudCIsImxpbmVFbmRpbmciLCJyZWdlbiIsIlhOb2RlIiwiY3JlYXRlTm9kZSIsImRvbU5vZGUiLCJleGlzdGluZ05vZGUiLCJzYXZlIiwiZXh0IiwicGF0aCIsImV4dG5hbWUiLCJleHRlbnNpb24iLCJ0bXBGaWxlIiwiRGF0ZSIsIm5vdyIsIndyaXRlRmlsZVN5bmMiLCJ0b1N0cmluZyIsIm1vdmVTeW5jIiwib3ZlcndyaXRlIiwibmV3U2NoZW1hIiwic2V0IiwidmFsdWUiLCJwYXVzZSIsIm9iaiIsInNlZ21lbnQiLCJBcnJheSIs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QU8sQ0FBQ0MsT0FBRCxFQUFVO0FBQ2hCLFNBQUszRSxJQUFMLENBQVVpRCxlQUFNMkIsSUFBaEIsRUFBc0JGLE9BQXRCLENBQThCQyxPQUE5Qjs7QUFDQSxXQUFPLElBQVA7QUFDQTtBQUVEO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQ0NFLEVBQUFBLEtBQUssQ0FBQ0MsTUFBRCxFQUFTSCxPQUFULEVBQWtCO0FBQ3RCLFNBQUszRSxJQUFMLENBQVVpRCxlQUFNMkIsSUFBaEIsRUFBc0JDLEtBQXRCLENBQTRCQyxNQUE1QixFQUFvQ0gsT0FBcEM7O0FBQ0EsV0FBTyxJQUFQO0FBQ0E7O0FBMVQwQzs7OztnQkFBdkJuRixRLGVBS0QsTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBkZXRlY3RJbmRlbnQgZnJvbSAnZGV0ZWN0LWluZGVudCc7XG5pbXBvcnQgZnMgZnJvbSAnZnMtZXh0cmEnO1xuaW1wb3J0IHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgc25vb3Bsb2dnIGZyb20gJ3Nub29wbG9nZyc7XG5pbXBvcnQgU3RvcmUgZnJvbSAnLi4vc3RvcmUnO1xuaW1wb3J0IFhOb2RlIGZyb20gJy4veG1sL3hub2RlJztcbmltcG9ydCB7IGRldGVjdExpbmVFbmRpbmdzLCB1bmVzY2FwZVNlcXVlbmNlIH0gZnJvbSAnLi94bWwvdXRpbCc7XG5pbXBvcnQgeyBET01QYXJzZXIgfSBmcm9tICd4bWxkb20nO1xuXG5jb25zdCB7IGxvZyB9ID0gc25vb3Bsb2dnKCdjb25maWcta2l0JykoJ3htbCcpO1xuY29uc3QgeyBoaWdobGlnaHQgfSA9IHNub29wbG9nZy5zdHlsZXM7XG5cbi8qKlxuICogTG9hZHMgYC54bWxgIGNvbmZpZyBmaWxlcy5cbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgWE1MU3RvcmUgZXh0ZW5kcyBTdG9yZSB7XG5cdC8qKlxuXHQgKiBUaGUgZmlsZSBleHRlbnNpb24gYXNzb2NpYXRlZCB0byB0aGlzIHR5cGUgb2Ygc3RvcmUuXG5cdCAqIEB0eXBlIHtTdHJpbmd9XG5cdCAqL1xuXHRzdGF0aWMgZXh0ZW5zaW9uID0gJy54bWwnO1xuXG5cdC8qKlxuXHQgKiBJbml0aWFsaXplcyB0aGUgc3RvcmUuXG5cdCAqXG5cdCAqIEBwYXJhbSB7T2JqZWN0fSBbb3B0c10gLSBWYXJpb3VzIG9wdGlvbnMuXG5cdCAqIEBwYXJhbSB7T2JqZWN0fSBbb3B0cy5kYXRhXSAtIEEgZGF0YSBvYmplY3QgdG8gaW5pdGlhbGl6ZSB0aGUgc3RvcmUgd2l0aC5cblx0ICogQHBhcmFtIHtPYmplY3R9IFtvcHRzLnNjaGVtYV0gLSBBIEpvaSBzY2hlbWEgb2JqZWN0LiBUaGlzIGlzIG9ubHkgdXNlZCB3aGVuIGEgY29uZmlnLWtpdFxuXHQgKiBsYXllciBpcyBiZWluZyBpbml0aWFsaXplZCB3aXRoIGFuIGV4aXN0aW5nIGBYTUxTdG9yZWAgaW5zdGFuY2Ugb3IgZm9yIHVuaXQgdGVzdHMuXG5cdCAqIEBhY2Nlc3MgcHVibGljXG5cdCAqL1xuXHRjb25zdHJ1Y3RvcihvcHRzID0ge30pIHtcblx0XHRzdXBlcihvcHRzKTtcblxuXHRcdGlmIChvcHRzLnNjaGVtYSkge1xuXHRcdFx0aWYgKHR5cGVvZiBvcHRzLnNjaGVtYSAhPT0gJ29iamVjdCcpIHtcblx0XHRcdFx0dGhyb3cgbmV3IFR5cGVFcnJvcignRXhwZWN0ZWQgc2NoZW1hIHRvIGJlIGFuIG9iamVjdCcpO1xuXHRcdFx0fVxuXHRcdFx0dGhpcy5fc2NoZW1hID0gb3B0cy5zY2hlbWE7XG5cdFx0fVxuXG5cdFx0dGhpcy5sb2FkRnJvbVN0cmluZygpO1xuXG5cdFx0aWYgKG9wdHMuZGF0YSkge1xuXHRcdFx0dGhpcy5tZXJnZShvcHRzLmRhdGEpO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBEZWxldGVzIGEgY29uZmlnIHZhbHVlLlxuXHQgKlxuXHQgKiBAcGFyYW0ge0FycmF5LjxTdHJpbmc+fSBrZXkgLSBUaGUga2V5IHRvIGRlbGV0ZS5cblx0ICogQHJldHVybnMge0Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSB2YWx1ZSB3YXMgZGVsZXRlZC5cblx0ICogQGFjY2VzcyBwdWJsaWNcblx0ICovXG5cdGRlbGV0ZShrZXkpIHtcblx0XHRjb25zdCBzdGFjayA9IFtdO1xuXHRcdGNvbnN0IGxlbiA9IGtleS5sZW5ndGg7XG5cdFx0bGV0IGZvdW5kID0gZmFsc2U7XG5cdFx0bGV0IHsgZGF0YSB9ID0gdGhpcztcblx0XHRsZXQgcHJvcDtcblxuXHRcdGZvciAobGV0IGkgPSAwOyBkYXRhICE9PSB1bmRlZmluZWQgJiYgKHByb3AgPSBrZXlbaV0pOyBpKyspIHtcblx0XHRcdGlmICghT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGRhdGEsIHByb3ApKSB7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0fVxuXG5cdFx0XHRpZiAoaSArIDEgPT09IGxlbikge1xuXHRcdFx0XHRmb3VuZCA9IHRydWU7XG5cdFx0XHRcdGRlbGV0ZSBkYXRhW3Byb3BdO1xuXG5cdFx0XHRcdHdoaWxlIChkYXRhID0gc3RhY2sucG9wKCkpIHtcblx0XHRcdFx0XHRpZiAoT2JqZWN0LmtleXMoZGF0YVtrZXlbLS1pXV0pLmxlbmd0aCkge1xuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGRlbGV0ZSBkYXRhW2tleVtpXV07XG5cdFx0XHRcdH1cblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHN0YWNrLnB1c2goZGF0YSk7XG5cdFx0XHRcdGRhdGEgPSBkYXRhW3Byb3BdO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHJldHVybiBmb3VuZDtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZXRyaWV2ZXMgYSB2YWx1ZSBmb3IgdGhlIHNwZWNpZmllZCBrZXkuXG5cdCAqXG5cdCAqIEBwYXJhbSB7QXJyYXkuPFN0cmluZz59IFtrZXldIC0gVGhlIGtleSB0byBnZXQuIFdoZW4gYHVuZGVmaW5lZGAsIHRoZSBlbnRpcmUgY29uZmlnIGlzXG5cdCAqIHJldHVybmVkLlxuXHQgKiBAcmV0dXJucyB7Kn1cblx0ICogQGFjY2VzcyBwdWJsaWNcblx0ICovXG5cdGdldChrZXkpIHtcblx0XHRsZXQgbm9kZSA9IHRoaXMuZGF0YTtcblxuXHRcdGlmIChrZXk/Lmxlbmd0aCkge1xuXHRcdFx0Zm9yIChsZXQgaSA9IDAsIHByb3A7IG5vZGUgIT09IHVuZGVmaW5lZCAmJiAocHJvcCA9IGtleVtpKytdKTsgbm9kZSA9IG5vZGVbcHJvcF0pIHtcblx0XHRcdFx0aWYgKHR5cGVvZiBub2RlICE9PSAnb2JqZWN0Jykge1xuXHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHJldHVybiBub2RlO1xuXHR9XG5cblx0LyoqXG5cdCAqIERldGVybWluZXMgaWYgYSBrZXkgaXMgc2V0LlxuXHQgKlxuXHQgKiBAcGFyYW0ge0FycmF5LjxTdHJpbmc+fSBba2V5XSAtIFRoZSBrZXkgdG8gY2hlY2suXG5cdCAqIEByZXR1cm5zIHtCb29sZWFufVxuXHQgKiBAYWNjZXNzIHB1YmxpY1xuXHQgKi9cblx0aGFzKGtleSkge1xuXHRcdGxldCBub2RlID0gdGhpcy5kYXRhO1xuXG5cdFx0aWYgKGtleT8ubGVuZ3RoKSB7XG5cdFx0XHRmb3IgKGxldCBpID0gMCwgcHJvcDsgbm9kZSAhPT0gdW5kZWZpbmVkICYmIChwcm9wID0ga2V5W2krK10pOyBub2RlID0gbm9kZVtwcm9wXSkge1xuXHRcdFx0XHRpZiAodHlwZW9mIG5vZGUgIT09ICdvYmplY3QnKSB7XG5cdFx0XHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIG5vZGUgIT09IHVuZGVmaW5lZDtcblx0fVxuXG5cdC8qKlxuXHQgKiBMb2FkcyBhIGNvbmZpZyBmaWxlLlxuXHQgKlxuXHQgKiBAcGFyYW0ge1N0cmluZ30gZmlsZSAtIFRoZSBwYXRoIHRvIHRoZSB4bWwgZmlsZSB0byBsb2FkLlxuXHQgKiBAcmV0dXJucyB7WE1MU3RvcmV9XG5cdCAqIEBhY2Nlc3MgcHVibGljXG5cdCAqL1xuXHRsb2FkKGZpbGUpIHtcblx0XHRpZiAoIWZzLmV4aXN0c1N5bmMoZmlsZSkpIHtcblx0XHRcdGNvbnN0IGVyciA9IG5ldyBFcnJvcihgRmlsZSBub3QgZm91bmQ6ICR7ZmlsZX1gKTtcblx0XHRcdGVyci5jb2RlID0gJ0VOT0VOVCc7XG5cdFx0XHR0aHJvdyBlcnI7XG5cdFx0fVxuXG5cdFx0bG9nKGBMb2FkaW5nICR7aGlnaGxpZ2h0KGZpbGUpfWApO1xuXHRcdHJldHVybiB0aGlzLmxvYWRGcm9tU3RyaW5nKGZzLnJlYWRGaWxlU3luYyhmaWxlLCAndXRmOCcpKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBQYXJzZSBhIHN0cmluZyBjb250YWluaW5nIHRoZSBYTUwgZG9jdW1lbnQuXG5cdCAqXG5cdCAqIEBwYXJhbSB7U3RyaW5nfSBbc3RyXSAtIEFuIFhNTCBzdHJpbmcuXG5cdCAqIEByZXR1cm5zIHtYTUxTdG9yZX1cblx0ICogQGFjY2VzcyBwdWJsaWNcblx0ICovXG5cdGxvYWRGcm9tU3RyaW5nKHN0ciA9ICc8P3htbCB2ZXJzaW9uPVwiMS4wXCIgZW5jb2Rpbmc9XCJVVEYtOFwiPz4nKSB7XG5cdFx0aWYgKHN0ciAmJiB0eXBlb2Ygc3RyICE9PSAnc3RyaW5nJykge1xuXHRcdFx0dGhyb3cgbmV3IFR5cGVFcnJvcignRXhwZWN0ZWQgc3RyaW5nIGNvbnRhaW5pbmcgWE1MIHRvIHBhcnNlJyk7XG5cdFx0fVxuXG5cdFx0bGV0IGVycm9yTXNnO1xuXHRcdGNvbnN0IHBhcnNlciA9IG5ldyBET01QYXJzZXIoe1xuXHRcdFx0ZXJyb3JIYW5kbGVyOiBlcnIgPT4gZXJyb3JNc2cgPSBlcnJcblx0XHR9KTtcblx0XHRjb25zdCBkb2MgPSBwYXJzZXIucGFyc2VGcm9tU3RyaW5nKHN0ciwgJ3RleHQveG1sJyk7XG5cdFx0aWYgKGVycm9yTXNnKSB7XG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoZXJyb3JNc2cpO1xuXHRcdH1cblxuXHRcdGxldCBmb3VuZFBJTiA9IGZhbHNlO1xuXHRcdGxldCBjaGlsZCA9IGRvYy5maXJzdENoaWxkO1xuXHRcdGZvciAoOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC5uZXh0U2libGluZykge1xuXHRcdFx0aWYgKGNoaWxkLm5vZGVUeXBlID09PSBkb2MuUFJPQ0VTU0lOR19JTlNUUlVDVElPTl9OT0RFKSB7XG5cdFx0XHRcdGZvdW5kUElOID0gdHJ1ZTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdGlmICghZm91bmRQSU4pIHtcblx0XHRcdGNvbnN0IHBpbiA9IGRvYy5jcmVhdGVQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24oJ3htbCcsICd2ZXJzaW9uPVwiMS4wXCIgZW5jb2Rpbmc9XCJVVEYtOFwiJyk7XG5cdFx0XHRkb2MuaW5zZXJ0QmVmb3JlKGRvYy5jcmVhdGVUZXh0Tm9kZSgnXFxuJyksIGRvYy5maXJzdENoaWxkKTtcblx0XHRcdGRvYy5pbnNlcnRCZWZvcmUocGluLCBkb2MuZmlyc3RDaGlsZCk7XG5cdFx0fVxuXG5cdFx0ZG9jLmluZGVudCA9IGRldGVjdEluZGVudChzdHIpLmluZGVudCB8fCAnXFx0Jztcblx0XHRkb2MubGluZUVuZGluZyA9IGRldGVjdExpbmVFbmRpbmdzKHN0cik7XG5cdFx0bG9nKGBEZXRlY3RlZCBsaW5lIGVuZGluZyAke2hpZ2hsaWdodCh1bmVzY2FwZVNlcXVlbmNlKGRvYy5saW5lRW5kaW5nKSl9IGluZGVudCAke2hpZ2hsaWdodCh1bmVzY2FwZVNlcXVlbmNlKGRvYy5pbmRlbnQpKX1gKTtcblxuXHRcdHRoaXMuZG9jID0gZG9jO1xuXG5cdFx0dGhpcy5yZWdlbigpO1xuXG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cblxuXHQvKipcblx0ICogRGVlcGx5IG1lcmdlcyBhbiBvYmplY3QgaW50byBhIGxheWVyJ3Mgc3RvcmUuXG5cdCAqXG5cdCAqIEBwYXJhbSB7T2JqZWN0fSBkYXRhIC0gVGhlIGRhdGEgdG8gbWVyZ2UuXG5cdCAqIEByZXR1cm5zIHtYTUxTdG9yZX1cblx0ICogQGFjY2VzcyBwdWJsaWNcblx0ICovXG5cdG1lcmdlKGRhdGEpIHtcblx0XHRpZiAoIWRhdGEgfHwgdHlwZW9mIGRhdGEgIT09ICdvYmplY3QnKSB7XG5cdFx0XHR0aHJvdyBuZXcgVHlwZUVycm9yKCdFeHBlY3RlZCBkYXRhIHRvIGJlIGFuIG9iamVjdCcpO1xuXHRcdH1cblx0XHRYTm9kZS5tZXJnZSh0aGlzLmRhdGEsIGRhdGEpO1xuXHRcdHJldHVybiB0aGlzO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJlZ2VuZXJhdGVzIHRoZSBkYXRhIHRyZWUgYnkgc2ltdWx0YW5lb3VzbHkgd2Fsa2luZyB0aGUgc2NoZW1hIGFuZCBYTUwgZG9jdW1lbnQuXG5cdCAqXG5cdCAqIEBhY2Nlc3MgcHJpdmF0ZVxuXHQgKi9cblx0cmVnZW4oKSB7XG5cdFx0aWYgKCF0aGlzLmRvYyAmJiAhdGhpcy5fc2NoZW1hKSB7XG5cdFx0XHR0aGlzLmRhdGEgPSBudWxsO1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdHRoaXMuZGF0YSA9IFhOb2RlLmNyZWF0ZU5vZGUoe1xuXHRcdFx0ZG9tTm9kZTogICAgICB0aGlzLmRvYyxcblx0XHRcdGV4aXN0aW5nTm9kZTogdGhpcy5kYXRhLFxuXHRcdFx0c2NoZW1hOiAgICAgICB0aGlzLl9zY2hlbWFcblx0XHR9KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBTYXZlcyB0aGUgZGF0YSB0byBkaXNrLlxuXHQgKlxuXHQgKiBAcGFyYW0ge1N0cmluZ30gZmlsZSAtIFRoZSBmaWxlbmFtZSB0byBzYXZlIHRoZSBkYXRhIHRvLlxuXHQgKiBAcmV0dXJucyB7WE1MU3RvcmV9XG5cdCAqIEBhY2Nlc3MgcHVibGljXG5cdCAqL1xuXHRzYXZlKGZpbGUpIHtcblx0XHRpZiAoIWZpbGUgfHwgdHlwZW9mIGZpbGUgIT09ICdzdHJpbmcnKSB7XG5cdFx0XHR0aHJvdyBuZXcgVHlwZUVycm9yKCdFeHBlY3RlZCBjb25maWcgZmlsZSBwYXRoIHRvIGJlIGEgc3RyaW5nJyk7XG5cdFx0fVxuXG5cdFx0Y29uc3QgZXh0ID0gcGF0aC5leHRuYW1lKGZpbGUpO1xuXHRcdGlmIChleHQgIT09IFhNTFN0b3JlLmV4dGVuc2lvbikge1xuXHRcdFx0dGhyb3cgbmV3IEVycm9yKGBFeHBlY3RlZCBYTUwgY29uZmlnIGZpbGUgdG8gaGF2ZSBcIiR7WE1MU3RvcmUuZXh0ZW5zaW9ufVwiIGV4dGVuc2lvbiwgZm91bmQgXCIke2V4dH1cImApO1xuXHRcdH1cblxuXHRcdGNvbnN0IHRtcEZpbGUgPSBgJHtmaWxlfS4ke0RhdGUubm93KCl9LnRtcGA7XG5cdFx0ZnMud3JpdGVGaWxlU3luYyh0bXBGaWxlLCB0aGlzLmRvYy50b1N0cmluZygpKTtcblx0XHRmcy5tb3ZlU3luYyh0bXBGaWxlLCBmaWxlLCB7IG92ZXJ3cml0ZTogdHJ1ZSB9KTtcblx0XHRsb2coYFdyb3RlIGNvbmZpZyBmaWxlOiAke2hpZ2hsaWdodChmaWxlKX1gKTtcblxuXHRcdHJldHVybiB0aGlzO1xuXHR9XG5cblx0LyoqXG5cdCAqIEEgSm9pIHNjaGVtYSBvYmplY3QuXG5cdCAqIEB0eXBlIHtPYmplY3R9XG5cdCAqIEBhY2Nlc3MgcHVibGljXG5cdCAqL1xuXHRnZXQgc2NoZW1hKCkge1xuXHRcdHJldHVybiBzdXBlci5zY2hlbWE7XG5cdH1cblxuXHRzZXQgc2NoZW1hKG5ld1NjaGVtYSkge1xuXHRcdHN1cGVyLnNjaGVtYSA9IG5ld1NjaGVtYTtcblx0XHR0aGlzLnJlZ2VuKCk7XG5cdH1cblxuXHQvKipcblx0ICogU2V0cyB0aGUgdmFsdWUgZm9yIGEgZ2l2ZW4gY29uZmlnIGtleS5cblx0ICpcblx0ICogQHBhcmFtIHtBcnJheS48U3RyaW5nPn0ga2V5IC0gVGhlIGtleSB0byBzZXQuXG5cdCAqIEBwYXJhbSB7Kn0gdmFsdWUgLSBUaGUgdmFsdWUgdG8gc2V0LlxuXHQgKiBAcmV0dXJucyB7WE1MU3RvcmV9XG5cdCAqIEBhY2Nlc3MgcHVibGljXG5cdCAqL1xuXHRzZXQoa2V5LCB2YWx1ZSkge1xuXHRcdFhOb2RlLnBhdXNlKHRoaXMuZGF0YSk7XG5cblx0XHRsZXQgb2JqID0gdGhpcy5kYXRhO1xuXHRcdGZvciAobGV0IGkgPSAwLCBsZW4gPSBrZXkubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcblx0XHRcdGNvbnN0IHNlZ21lbnQgPSBrZXlbaV07XG5cdFx0XHRpZiAoaSArIDEgPCBsZW4pIHtcblx0XHRcdFx0aWYgKHR5cGVvZiBvYmpbc2VnbWVudF0gIT09ICdvYmplY3QnIHx8IEFycmF5LmlzQXJyYXkob2JqW3NlZ21lbnRdKSkge1xuXHRcdFx0XHRcdG9ialtzZWdtZW50XSA9IHt9O1xuXHRcdFx0XHRcdC8vIG9ialtzZWdtZW50XVtYTm9kZS5NZXRhXS5kb21Ob2RlID0gY3JlYXRlRE9NTm9kZShzZWdtZW50LCB1bmRlZmluZWQsIG9ialtYTm9kZS5NZXRhXS5kb21Ob2RlKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRvYmogPSBvYmpbc2VnbWVudF07XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRvYmpbc2VnbWVudF0gPSB2YWx1ZTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRYTm9kZS5yZXN1bWUodGhpcy5kYXRhKTtcblxuXHRcdHJldHVybiB0aGlzO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJldHVybnMgdGhlIGRhdGEgYXMgYSBKU09OLWVuY29kZWQgc3RyaW5nLlxuXHQgKlxuXHQgKiBAcmV0dXJucyB7U3RyaW5nfVxuXHQgKiBAYWNjZXNzIHB1YmxpY1xuXHQgKi9cblx0dG9TdHJpbmcoKSB7XG5cdFx0cmV0dXJuIHRoaXMuZG9jLnRvU3RyaW5nKCk7XG5cdH1cblxuXHQvKipcblx0ICogUmVtb3ZlcyBhIHdhdGNoIGhhbmRsZXIuXG5cdCAqXG5cdCAqIEBwYXJhbSB7RnVuY3Rpb259IGhhbmRsZXIgLSBBIGNhbGxiYWNrIHRvIGZpcmUgd2hlbiBhIGNoYW5nZSBvY2N1cnMuXG5cdCAqIEByZXR1cm5zIHtYTUxTdG9yZX1cblx0ICogQGFjY2VzcyBwdWJsaWNcblx0ICovXG5cdHVud2F0Y2goaGFuZGxlcikge1xuXHRcdHRoaXMuZGF0YVtYTm9kZS5NZXRhXS51bndhdGNoKGhhbmRsZXIpO1xuXHRcdHJldHVybiB0aGlzO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJlZ2lzdGVycyBhIHdhdGNoIGhhbmRsZXIuXG5cdCAqXG5cdCAqIEBwYXJhbSB7U3RyaW5nfEFycmF5LjxTdHJpbmc+fSBbZmlsdGVyXSAtIEEgcHJvcGVydHkgbmFtZSBvciBhcnJheSBvZiBuZXN0ZWQgcHJvcGVydGllcyB0b1xuXHQgKiB3YXRjaC5cblx0ICogQHBhcmFtIHtGdW5jdGlvbn0gaGFuZGxlciAtIEEgY2FsbGJhY2sgdG8gZmlyZSB3aGVuIGEgY2hhbmdlIG9jY3Vycy5cblx0ICogQHJldHVybnMge1hNTFN0b3JlfVxuXHQgKiBAYWNjZXNzIHB1YmxpY1xuXHQgKi9cblx0d2F0Y2goZmlsdGVyLCBoYW5kbGVyKSB7XG5cdFx0dGhpcy5kYXRhW1hOb2RlLk1ldGFdLndhdGNoKGZpbHRlciwgaGFuZGxlcik7XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cbn1cbiJdLCJmaWxlIjoic3RvcmVzL3htbC1zdG9yZS5qcyJ9
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInN0b3Jlcy94bWwtc3RvcmUuanMiXSwibmFtZXMiOlsibG9nIiwiaGlnaGxpZ2h0Iiwic25vb3Bsb2dnIiwic3R5bGVzIiwiWE1MU3RvcmUiLCJTdG9yZSIsImNvbnN0cnVjdG9yIiwib3B0cyIsInNjaGVtYSIsIlR5cGVFcnJvciIsIl9zY2hlbWEiLCJsb2FkRnJvbVN0cmluZyIsImRhdGEiLCJtZXJnZSIsImRlbGV0ZSIsImtleSIsInN0YWNrIiwibGVuIiwibGVuZ3RoIiwiZm91bmQiLCJwcm9wIiwiaSIsInVuZGVmaW5lZCIsIk9iamVjdCIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsInBvcCIsImtleXMiLCJwdXNoIiwiZ2V0Iiwibm9kZSIsImhhcyIsImxvYWQiLCJmaWxlIiwiZnMiLCJleGlzdHNTeW5jIiwiZXJyIiwiRXJyb3IiLCJjb2RlIiwicmVhZEZpbGVTeW5jIiwic3RyIiwiZXJyb3JNc2ciLCJwYXJzZXIiLCJET01QYXJzZXIiLCJlcnJvckhhbmRsZXIiLCJkb2MiLCJwYXJzZUZyb21TdHJpbmciLCJmb3VuZFBJTiIsImNoaWxkIiwiZmlyc3RDaGlsZCIsIm5leHRTaWJsaW5nIiwibm9kZVR5cGUiLCJQUk9DRVNTSU5HX0lOU1RSVUNUSU9OX05PREUiLCJwaW4iLCJjcmVhdGVQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24iLCJpbnNlcnRCZWZvcmUiLCJjcmVhdGVUZXh0Tm9kZSIsImluZGVudCIsImxpbmVFbmRpbmciLCJyZWdlbiIsIlhOb2RlIiwiY3JlYXRlTm9kZSIsImRvbU5vZGUiLCJleGlzdGluZ05vZGUiLCJzYXZlIiwiZXh0IiwicGF0aCIsImV4dG5hbWUiLCJleHRlbnNpb24iLCJ0bXBGaWxlIiwiRGF0ZSIsIm5vdyIsInRvU3RyaW5nIiwiYXBwbHlPd25lciIsIm5ld1NjaGVtYSIsInNldCIsInZhbHVlIiwicGF1c2UiLCJvYmoiLCJzZWdtZW50IiwiQXJyYXkiLCJpc0FycmF5IiwicmVzdW1lIiwidW53YXRj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TyxDQUFDQyxPQUFELEVBQVU7QUFDaEIsU0FBS3pFLElBQUwsQ0FBVWlELGVBQU15QixJQUFoQixFQUFzQkYsT0FBdEIsQ0FBOEJDLE9BQTlCOztBQUNBLFdBQU8sSUFBUDtBQUNBO0FBRUQ7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFDQ0UsRUFBQUEsS0FBSyxDQUFDQyxNQUFELEVBQVNILE9BQVQsRUFBa0I7QUFDdEIsU0FBS3pFLElBQUwsQ0FBVWlELGVBQU15QixJQUFoQixFQUFzQkMsS0FBdEIsQ0FBNEJDLE1BQTVCLEVBQW9DSCxPQUFwQzs7QUFDQSxXQUFPLElBQVA7QUFDQTs7QUExVDBDOzs7O2dCQUF2QmpGLFEsZUFLRCxNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGRldGVjdEluZGVudCBmcm9tICdkZXRlY3QtaW5kZW50JztcbmltcG9ydCBmcyBmcm9tICdmcy1leHRyYSc7XG5pbXBvcnQgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCBzbm9vcGxvZ2cgZnJvbSAnc25vb3Bsb2dnJztcbmltcG9ydCBTdG9yZSBmcm9tICcuLi9zdG9yZSc7XG5pbXBvcnQgWE5vZGUgZnJvbSAnLi94bWwveG5vZGUnO1xuaW1wb3J0IHsgZGV0ZWN0TGluZUVuZGluZ3MsIHVuZXNjYXBlU2VxdWVuY2UgfSBmcm9tICcuL3htbC91dGlsJztcbmltcG9ydCB7IERPTVBhcnNlciB9IGZyb20gJ3htbGRvbSc7XG5pbXBvcnQgeyBtb3ZlU3luYywgd3JpdGVGaWxlU3luYyB9IGZyb20gJy4uL2ZzdXRpbCc7XG5cbmNvbnN0IHsgbG9nIH0gPSBzbm9vcGxvZ2coJ2NvbmZpZy1raXQnKSgneG1sJyk7XG5jb25zdCB7IGhpZ2hsaWdodCB9ID0gc25vb3Bsb2dnLnN0eWxlcztcblxuLyoqXG4gKiBMb2FkcyBgLnhtbGAgY29uZmlnIGZpbGVzLlxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBYTUxTdG9yZSBleHRlbmRzIFN0b3JlIHtcblx0LyoqXG5cdCAqIFRoZSBmaWxlIGV4dGVuc2lvbiBhc3NvY2lhdGVkIHRvIHRoaXMgdHlwZSBvZiBzdG9yZS5cblx0ICogQHR5cGUge1N0cmluZ31cblx0ICovXG5cdHN0YXRpYyBleHRlbnNpb24gPSAnLnhtbCc7XG5cblx0LyoqXG5cdCAqIEluaXRpYWxpemVzIHRoZSBzdG9yZS5cblx0ICpcblx0ICogQHBhcmFtIHtPYmplY3R9IFtvcHRzXSAtIFZhcmlvdXMgb3B0aW9ucy5cblx0ICogQHBhcmFtIHtPYmplY3R9IFtvcHRzLmRhdGFdIC0gQSBkYXRhIG9iamVjdCB0byBpbml0aWFsaXplIHRoZSBzdG9yZSB3aXRoLlxuXHQgKiBAcGFyYW0ge09iamVjdH0gW29wdHMuc2NoZW1hXSAtIEEgSm9pIHNjaGVtYSBvYmplY3QuIFRoaXMgaXMgb25seSB1c2VkIHdoZW4gYSBjb25maWcta2l0XG5cdCAqIGxheWVyIGlzIGJlaW5nIGluaXRpYWxpemVkIHdpdGggYW4gZXhpc3RpbmcgYFhNTFN0b3JlYCBpbnN0YW5jZSBvciBmb3IgdW5pdCB0ZXN0cy5cblx0ICogQGFjY2VzcyBwdWJsaWNcblx0ICovXG5cdGNvbnN0cnVjdG9yKG9wdHMgPSB7fSkge1xuXHRcdHN1cGVyKG9wdHMpO1xuXG5cdFx0aWYgKG9wdHMuc2NoZW1hKSB7XG5cdFx0XHRpZiAodHlwZW9mIG9wdHMuc2NoZW1hICE9PSAnb2JqZWN0Jykge1xuXHRcdFx0XHR0aHJvdyBuZXcgVHlwZUVycm9yKCdFeHBlY3RlZCBzY2hlbWEgdG8gYmUgYW4gb2JqZWN0Jyk7XG5cdFx0XHR9XG5cdFx0XHR0aGlzLl9zY2hlbWEgPSBvcHRzLnNjaGVtYTtcblx0XHR9XG5cblx0XHR0aGlzLmxvYWRGcm9tU3RyaW5nKCk7XG5cblx0XHRpZiAob3B0cy5kYXRhKSB7XG5cdFx0XHR0aGlzLm1lcmdlKG9wdHMuZGF0YSk7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIERlbGV0ZXMgYSBjb25maWcgdmFsdWUuXG5cdCAqXG5cdCAqIEBwYXJhbSB7QXJyYXkuPFN0cmluZz59IGtleSAtIFRoZSBrZXkgdG8gZGVsZXRlLlxuXHQgKiBAcmV0dXJucyB7Qm9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIHZhbHVlIHdhcyBkZWxldGVkLlxuXHQgKiBAYWNjZXNzIHB1YmxpY1xuXHQgKi9cblx0ZGVsZXRlKGtleSkge1xuXHRcdGNvbnN0IHN0YWNrID0gW107XG5cdFx0Y29uc3QgbGVuID0ga2V5Lmxlbmd0aDtcblx0XHRsZXQgZm91bmQgPSBmYWxzZTtcblx0XHRsZXQgeyBkYXRhIH0gPSB0aGlzO1xuXHRcdGxldCBwcm9wO1xuXG5cdFx0Zm9yIChsZXQgaSA9IDA7IGRhdGEgIT09IHVuZGVmaW5lZCAmJiAocHJvcCA9IGtleVtpXSk7IGkrKykge1xuXHRcdFx0aWYgKCFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZGF0YSwgcHJvcCkpIHtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHR9XG5cblx0XHRcdGlmIChpICsgMSA9PT0gbGVuKSB7XG5cdFx0XHRcdGZvdW5kID0gdHJ1ZTtcblx0XHRcdFx0ZGVsZXRlIGRhdGFbcHJvcF07XG5cblx0XHRcdFx0d2hpbGUgKGRhdGEgPSBzdGFjay5wb3AoKSkge1xuXHRcdFx0XHRcdGlmIChPYmplY3Qua2V5cyhkYXRhW2tleVstLWldXSkubGVuZ3RoKSB7XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0ZGVsZXRlIGRhdGFba2V5W2ldXTtcblx0XHRcdFx0fVxuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0c3RhY2sucHVzaChkYXRhKTtcblx0XHRcdFx0ZGF0YSA9IGRhdGFbcHJvcF07XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGZvdW5kO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJldHJpZXZlcyBhIHZhbHVlIGZvciB0aGUgc3BlY2lmaWVkIGtleS5cblx0ICpcblx0ICogQHBhcmFtIHtBcnJheS48U3RyaW5nPn0gW2tleV0gLSBUaGUga2V5IHRvIGdldC4gV2hlbiBgdW5kZWZpbmVkYCwgdGhlIGVudGlyZSBjb25maWcgaXNcblx0ICogcmV0dXJuZWQuXG5cdCAqIEByZXR1cm5zIHsqfVxuXHQgKiBAYWNjZXNzIHB1YmxpY1xuXHQgKi9cblx0Z2V0KGtleSkge1xuXHRcdGxldCBub2RlID0gdGhpcy5kYXRhO1xuXG5cdFx0aWYgKGtleT8ubGVuZ3RoKSB7XG5cdFx0XHRmb3IgKGxldCBpID0gMCwgcHJvcDsgbm9kZSAhPT0gdW5kZWZpbmVkICYmIChwcm9wID0ga2V5W2krK10pOyBub2RlID0gbm9kZVtwcm9wXSkge1xuXHRcdFx0XHRpZiAodHlwZW9mIG5vZGUgIT09ICdvYmplY3QnKSB7XG5cdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIG5vZGU7XG5cdH1cblxuXHQvKipcblx0ICogRGV0ZXJtaW5lcyBpZiBhIGtleSBpcyBzZXQuXG5cdCAqXG5cdCAqIEBwYXJhbSB7QXJyYXkuPFN0cmluZz59IFtrZXldIC0gVGhlIGtleSB0byBjaGVjay5cblx0ICogQHJldHVybnMge0Jvb2xlYW59XG5cdCAqIEBhY2Nlc3MgcHVibGljXG5cdCAqL1xuXHRoYXMoa2V5KSB7XG5cdFx0bGV0IG5vZGUgPSB0aGlzLmRhdGE7XG5cblx0XHRpZiAoa2V5Py5sZW5ndGgpIHtcblx0XHRcdGZvciAobGV0IGkgPSAwLCBwcm9wOyBub2RlICE9PSB1bmRlZmluZWQgJiYgKHByb3AgPSBrZXlbaSsrXSk7IG5vZGUgPSBub2RlW3Byb3BdKSB7XG5cdFx0XHRcdGlmICh0eXBlb2Ygbm9kZSAhPT0gJ29iamVjdCcpIHtcblx0XHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblx0XHRyZXR1cm4gbm9kZSAhPT0gdW5kZWZpbmVkO1xuXHR9XG5cblx0LyoqXG5cdCAqIExvYWRzIGEgY29uZmlnIGZpbGUuXG5cdCAqXG5cdCAqIEBwYXJhbSB7U3RyaW5nfSBmaWxlIC0gVGhlIHBhdGggdG8gdGhlIHhtbCBmaWxlIHRvIGxvYWQuXG5cdCAqIEByZXR1cm5zIHtYTUxTdG9yZX1cblx0ICogQGFjY2VzcyBwdWJsaWNcblx0ICovXG5cdGxvYWQoZmlsZSkge1xuXHRcdGlmICghZnMuZXhpc3RzU3luYyhmaWxlKSkge1xuXHRcdFx0Y29uc3QgZXJyID0gbmV3IEVycm9yKGBGaWxlIG5vdCBmb3VuZDogJHtmaWxlfWApO1xuXHRcdFx0ZXJyLmNvZGUgPSAnRU5PRU5UJztcblx0XHRcdHRocm93IGVycjtcblx0XHR9XG5cblx0XHRsb2coYExvYWRpbmcgJHtoaWdobGlnaHQoZmlsZSl9YCk7XG5cdFx0cmV0dXJuIHRoaXMubG9hZEZyb21TdHJpbmcoZnMucmVhZEZpbGVTeW5jKGZpbGUsICd1dGY4JykpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFBhcnNlIGEgc3RyaW5nIGNvbnRhaW5pbmcgdGhlIFhNTCBkb2N1bWVudC5cblx0ICpcblx0ICogQHBhcmFtIHtTdHJpbmd9IFtzdHJdIC0gQW4gWE1MIHN0cmluZy5cblx0ICogQHJldHVybnMge1hNTFN0b3JlfVxuXHQgKiBAYWNjZXNzIHB1YmxpY1xuXHQgKi9cblx0bG9hZEZyb21TdHJpbmcoc3RyID0gJzw/eG1sIHZlcnNpb249XCIxLjBcIiBlbmNvZGluZz1cIlVURi04XCI/PicpIHtcblx0XHRpZiAoc3RyICYmIHR5cGVvZiBzdHIgIT09ICdzdHJpbmcnKSB7XG5cdFx0XHR0aHJvdyBuZXcgVHlwZUVycm9yKCdFeHBlY3RlZCBzdHJpbmcgY29udGFpbmluZyBYTUwgdG8gcGFyc2UnKTtcblx0XHR9XG5cblx0XHRsZXQgZXJyb3JNc2c7XG5cdFx0Y29uc3QgcGFyc2VyID0gbmV3IERPTVBhcnNlcih7XG5cdFx0XHRlcnJvckhhbmRsZXI6IGVyciA9PiBlcnJvck1zZyA9IGVyclxuXHRcdH0pO1xuXHRcdGNvbnN0IGRvYyA9IHBhcnNlci5wYXJzZUZyb21TdHJpbmcoc3RyLCAndGV4dC94bWwnKTtcblx0XHRpZiAoZXJyb3JNc2cpIHtcblx0XHRcdHRocm93IG5ldyBFcnJvcihlcnJvck1zZyk7XG5cdFx0fVxuXG5cdFx0bGV0IGZvdW5kUElOID0gZmFsc2U7XG5cdFx0bGV0IGNoaWxkID0gZG9jLmZpcnN0Q2hpbGQ7XG5cdFx0Zm9yICg7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLm5leHRTaWJsaW5nKSB7XG5cdFx0XHRpZiAoY2hpbGQubm9kZVR5cGUgPT09IGRvYy5QUk9DRVNTSU5HX0lOU1RSVUNUSU9OX05PREUpIHtcblx0XHRcdFx0Zm91bmRQSU4gPSB0cnVlO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdH1cblx0XHR9XG5cdFx0aWYgKCFmb3VuZFBJTikge1xuXHRcdFx0Y29uc3QgcGluID0gZG9jLmNyZWF0ZVByb2Nlc3NpbmdJbnN0cnVjdGlvbigneG1sJywgJ3ZlcnNpb249XCIxLjBcIiBlbmNvZGluZz1cIlVURi04XCInKTtcblx0XHRcdGRvYy5pbnNlcnRCZWZvcmUoZG9jLmNyZWF0ZVRleHROb2RlKCdcXG4nKSwgZG9jLmZpcnN0Q2hpbGQpO1xuXHRcdFx0ZG9jLmluc2VydEJlZm9yZShwaW4sIGRvYy5maXJzdENoaWxkKTtcblx0XHR9XG5cblx0XHRkb2MuaW5kZW50ID0gZGV0ZWN0SW5kZW50KHN0cikuaW5kZW50IHx8ICdcXHQnO1xuXHRcdGRvYy5saW5lRW5kaW5nID0gZGV0ZWN0TGluZUVuZGluZ3Moc3RyKTtcblx0XHRsb2coYERldGVjdGVkIGxpbmUgZW5kaW5nICR7aGlnaGxpZ2h0KHVuZXNjYXBlU2VxdWVuY2UoZG9jLmxpbmVFbmRpbmcpKX0gaW5kZW50ICR7aGlnaGxpZ2h0KHVuZXNjYXBlU2VxdWVuY2UoZG9jLmluZGVudCkpfWApO1xuXG5cdFx0dGhpcy5kb2MgPSBkb2M7XG5cblx0XHR0aGlzLnJlZ2VuKCk7XG5cblx0XHRyZXR1cm4gdGhpcztcblx0fVxuXG5cdC8qKlxuXHQgKiBEZWVwbHkgbWVyZ2VzIGFuIG9iamVjdCBpbnRvIGEgbGF5ZXIncyBzdG9yZS5cblx0ICpcblx0ICogQHBhcmFtIHtPYmplY3R9IGRhdGEgLSBUaGUgZGF0YSB0byBtZXJnZS5cblx0ICogQHJldHVybnMge1hNTFN0b3JlfVxuXHQgKiBAYWNjZXNzIHB1YmxpY1xuXHQgKi9cblx0bWVyZ2UoZGF0YSkge1xuXHRcdGlmICghZGF0YSB8fCB0eXBlb2YgZGF0YSAhPT0gJ29iamVjdCcpIHtcblx0XHRcdHRocm93IG5ldyBUeXBlRXJyb3IoJ0V4cGVjdGVkIGRhdGEgdG8gYmUgYW4gb2JqZWN0Jyk7XG5cdFx0fVxuXHRcdFhOb2RlLm1lcmdlKHRoaXMuZGF0YSwgZGF0YSk7XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cblxuXHQvKipcblx0ICogUmVnZW5lcmF0ZXMgdGhlIGRhdGEgdHJlZSBieSBzaW11bHRhbmVvdXNseSB3YWxraW5nIHRoZSBzY2hlbWEgYW5kIFhNTCBkb2N1bWVudC5cblx0ICpcblx0ICogQGFjY2VzcyBwcml2YXRlXG5cdCAqL1xuXHRyZWdlbigpIHtcblx0XHRpZiAoIXRoaXMuZG9jICYmICF0aGlzLl9zY2hlbWEpIHtcblx0XHRcdHRoaXMuZGF0YSA9IG51bGw7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0dGhpcy5kYXRhID0gWE5vZGUuY3JlYXRlTm9kZSh7XG5cdFx0XHRkb21Ob2RlOiAgICAgIHRoaXMuZG9jLFxuXHRcdFx0ZXhpc3RpbmdOb2RlOiB0aGlzLmRhdGEsXG5cdFx0XHRzY2hlbWE6ICAgICAgIHRoaXMuX3NjaGVtYVxuXHRcdH0pO1xuXHR9XG5cblx0LyoqXG5cdCAqIFNhdmVzIHRoZSBkYXRhIHRvIGRpc2suXG5cdCAqXG5cdCAqIEBwYXJhbSB7U3RyaW5nfSBmaWxlIC0gVGhlIGZpbGVuYW1lIHRvIHNhdmUgdGhlIGRhdGEgdG8uXG5cdCAqIEByZXR1cm5zIHtYTUxTdG9yZX1cblx0ICogQGFjY2VzcyBwdWJsaWNcblx0ICovXG5cdHNhdmUoZmlsZSkge1xuXHRcdGlmICghZmlsZSB8fCB0eXBlb2YgZmlsZSAhPT0gJ3N0cmluZycpIHtcblx0XHRcdHRocm93IG5ldyBUeXBlRXJyb3IoJ0V4cGVjdGVkIGNvbmZpZyBmaWxlIHBhdGggdG8gYmUgYSBzdHJpbmcnKTtcblx0XHR9XG5cblx0XHRjb25zdCBleHQgPSBwYXRoLmV4dG5hbWUoZmlsZSk7XG5cdFx0aWYgKGV4dCAhPT0gWE1MU3RvcmUuZXh0ZW5zaW9uKSB7XG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoYEV4cGVjdGVkIFhNTCBjb25maWcgZmlsZSB0byBoYXZlIFwiJHtYTUxTdG9yZS5leHRlbnNpb259XCIgZXh0ZW5zaW9uLCBmb3VuZCBcIiR7ZXh0fVwiYCk7XG5cdFx0fVxuXG5cdFx0Y29uc3QgdG1wRmlsZSA9IGAke2ZpbGV9LiR7RGF0ZS5ub3coKX0udG1wYDtcblx0XHR3cml0ZUZpbGVTeW5jKHRtcEZpbGUsIHRoaXMuZG9jLnRvU3RyaW5nKCksIHsgYXBwbHlPd25lcjogdGhpcy5hcHBseU93bmVyIH0pO1xuXHRcdG1vdmVTeW5jKHRtcEZpbGUsIGZpbGUsIHsgYXBwbHlPd25lcjogdGhpcy5hcHBseU93bmVyIH0pO1xuXHRcdGxvZyhgV3JvdGUgY29uZmlnIGZpbGU6ICR7aGlnaGxpZ2h0KGZpbGUpfWApO1xuXG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cblxuXHQvKipcblx0ICogQSBKb2kgc2NoZW1hIG9iamVjdC5cblx0ICogQHR5cGUge09iamVjdH1cblx0ICogQGFjY2VzcyBwdWJsaWNcblx0ICovXG5cdGdldCBzY2hlbWEoKSB7XG5cdFx0cmV0dXJuIHN1cGVyLnNjaGVtYTtcblx0fVxuXG5cdHNldCBzY2hlbWEobmV3U2NoZW1hKSB7XG5cdFx0c3VwZXIuc2NoZW1hID0gbmV3U2NoZW1hO1xuXHRcdHRoaXMucmVnZW4oKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBTZXRzIHRoZSB2YWx1ZSBmb3IgYSBnaXZlbiBjb25maWcga2V5LlxuXHQgKlxuXHQgKiBAcGFyYW0ge0FycmF5LjxTdHJpbmc+fSBrZXkgLSBUaGUga2V5IHRvIHNldC5cblx0ICogQHBhcmFtIHsqfSB2YWx1ZSAtIFRoZSB2YWx1ZSB0byBzZXQuXG5cdCAqIEByZXR1cm5zIHtYTUxTdG9yZX1cblx0ICogQGFjY2VzcyBwdWJsaWNcblx0ICovXG5cdHNldChrZXksIHZhbHVlKSB7XG5cdFx0WE5vZGUucGF1c2UodGhpcy5kYXRhKTtcblxuXHRcdGxldCBvYmogPSB0aGlzLmRhdGE7XG5cdFx0Zm9yIChsZXQgaSA9IDAsIGxlbiA9IGtleS5sZW5ndGg7IGkgPCBsZW47IGkrKykge1xuXHRcdFx0Y29uc3Qgc2VnbWVudCA9IGtleVtpXTtcblx0XHRcdGlmIChpICsgMSA8IGxlbikge1xuXHRcdFx0XHRpZiAodHlwZW9mIG9ialtzZWdtZW50XSAhPT0gJ29iamVjdCcgfHwgQXJyYXkuaXNBcnJheShvYmpbc2VnbWVudF0pKSB7XG5cdFx0XHRcdFx0b2JqW3NlZ21lbnRdID0ge307XG5cdFx0XHRcdFx0Ly8gb2JqW3NlZ21lbnRdW1hOb2RlLk1ldGFdLmRvbU5vZGUgPSBjcmVhdGVET01Ob2RlKHNlZ21lbnQsIHVuZGVmaW5lZCwgb2JqW1hOb2RlLk1ldGFdLmRvbU5vZGUpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdG9iaiA9IG9ialtzZWdtZW50XTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdG9ialtzZWdtZW50XSA9IHZhbHVlO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdFhOb2RlLnJlc3VtZSh0aGlzLmRhdGEpO1xuXG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cblxuXHQvKipcblx0ICogUmV0dXJucyB0aGUgZGF0YSBhcyBhIEpTT04tZW5jb2RlZCBzdHJpbmcuXG5cdCAqXG5cdCAqIEByZXR1cm5zIHtTdHJpbmd9XG5cdCAqIEBhY2Nlc3MgcHVibGljXG5cdCAqL1xuXHR0b1N0cmluZygpIHtcblx0XHRyZXR1cm4gdGhpcy5kb2MudG9TdHJpbmcoKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZW1vdmVzIGEgd2F0Y2ggaGFuZGxlci5cblx0ICpcblx0ICogQHBhcmFtIHtGdW5jdGlvbn0gaGFuZGxlciAtIEEgY2FsbGJhY2sgdG8gZmlyZSB3aGVuIGEgY2hhbmdlIG9jY3Vycy5cblx0ICogQHJldHVybnMge1hNTFN0b3JlfVxuXHQgKiBAYWNjZXNzIHB1YmxpY1xuXHQgKi9cblx0dW53YXRjaChoYW5kbGVyKSB7XG5cdFx0dGhpcy5kYXRhW1hOb2RlLk1ldGFdLnVud2F0Y2goaGFuZGxlcik7XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cblxuXHQvKipcblx0ICogUmVnaXN0ZXJzIGEgd2F0Y2ggaGFuZGxlci5cblx0ICpcblx0ICogQHBhcmFtIHtTdHJpbmd8QXJyYXkuPFN0cmluZz59IFtmaWx0ZXJdIC0gQSBwcm9wZXJ0eSBuYW1lIG9yIGFycmF5IG9mIG5lc3RlZCBwcm9wZXJ0aWVzIHRvXG5cdCAqIHdhdGNoLlxuXHQgKiBAcGFyYW0ge0Z1bmN0aW9ufSBoYW5kbGVyIC0gQSBjYWxsYmFjayB0byBmaXJlIHdoZW4gYSBjaGFuZ2Ugb2NjdXJzLlxuXHQgKiBAcmV0dXJucyB7WE1MU3RvcmV9XG5cdCAqIEBhY2Nlc3MgcHVibGljXG5cdCAqL1xuXHR3YXRjaChmaWx0ZXIsIGhhbmRsZXIpIHtcblx0XHR0aGlzLmRhdGFbWE5vZGUuTWV0YV0ud2F0Y2goZmlsdGVyLCBoYW5kbGVyKTtcblx0XHRyZXR1cm4gdGhpcztcblx0fVxufVxuIl0sImZpbGUiOiJzdG9yZXMveG1sLXN0b3JlLmpzIn0=
{
"name": "config-kit",
"version": "1.6.2",
"version": "1.7.0",
"description": "A universal, layered configuration system.",

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

"dependencies": {
"detect-indent": "^6.0.0",
"detect-indent": "^6.1.0",
"fs-extra": "^9.1.0",

@@ -35,3 +35,3 @@ "import-fresh": "^3.3.0",

"devDependencies": {
"appcd-gulp": "^3.1.5",
"appcd-gulp": "^3.2.0",
"tmp": "^0.2.1"

@@ -38,0 +38,0 @@ },

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

* Support for array type values
* Apply parent directory owner when running as sudo

@@ -22,0 +23,0 @@ ## Installation

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

SocketSocket SOC 2 Logo

Product

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

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc