nsc-react-component 2.8.40 → 2.8.42
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/base/upload/index.js
CHANGED
|
@@ -229,7 +229,7 @@ var NscUpload = /*#__PURE__*/function (_React$PureComponent) {
|
|
|
229
229
|
var _beforeUpload = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee3(file, ofileList) {
|
|
230
230
|
var _this2 = this;
|
|
231
231
|
|
|
232
|
-
var _this$props2, _this$props2$maxSize, maxSize, allowFileSuffix, _this$props2$checkSam, checkSameFile, maxCount, showUploadList, propsList, _this$state, fileList, fileListStore, size, fileNames, checkList, res,
|
|
232
|
+
var _this$props2, _this$props2$maxSize, maxSize, allowFileSuffix, _this$props2$checkSam, checkSameFile, maxCount, showUploadList, propsList, _this$state, fileList, fileListStore, size, fileNames, checkList, res, newList;
|
|
233
233
|
|
|
234
234
|
return regeneratorRuntime.wrap(function _callee3$(_context3) {
|
|
235
235
|
while (1) {
|
|
@@ -307,7 +307,6 @@ var NscUpload = /*#__PURE__*/function (_React$PureComponent) {
|
|
|
307
307
|
return _context3.abrupt("return", false);
|
|
308
308
|
|
|
309
309
|
case 24:
|
|
310
|
-
onListChange = this.props.onListChange;
|
|
311
310
|
newList = _toConsumableArray(fileList);
|
|
312
311
|
ofileList.map( /*#__PURE__*/function () {
|
|
313
312
|
var _ref2 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2(item) {
|
|
@@ -346,12 +345,7 @@ var NscUpload = /*#__PURE__*/function (_React$PureComponent) {
|
|
|
346
345
|
newList.splice(0, 1);
|
|
347
346
|
}
|
|
348
347
|
|
|
349
|
-
|
|
350
|
-
fileList: newList
|
|
351
|
-
});
|
|
352
|
-
onListChange && onListChange(newList);
|
|
353
|
-
|
|
354
|
-
case 30:
|
|
348
|
+
case 27:
|
|
355
349
|
case "end":
|
|
356
350
|
return _context3.stop();
|
|
357
351
|
}
|
|
@@ -384,7 +378,6 @@ var NscUpload = /*#__PURE__*/function (_React$PureComponent) {
|
|
|
384
378
|
var percent = _ref3.percent,
|
|
385
379
|
file = _ref3.file;
|
|
386
380
|
var fileList = this.state.fileList;
|
|
387
|
-
var onListChange = this.props.onListChange;
|
|
388
381
|
var newList = [];
|
|
389
382
|
fileList.map(function (item) {
|
|
390
383
|
var newFile = _objectSpread({}, item);
|
|
@@ -398,13 +391,11 @@ var NscUpload = /*#__PURE__*/function (_React$PureComponent) {
|
|
|
398
391
|
this.setState({
|
|
399
392
|
fileList: newList
|
|
400
393
|
});
|
|
401
|
-
onListChange && onListChange(newList);
|
|
402
394
|
}
|
|
403
395
|
}, {
|
|
404
396
|
key: "onComplete",
|
|
405
397
|
value: function onComplete(file) {
|
|
406
398
|
var fileList = this.state.fileList;
|
|
407
|
-
var onListChange = this.props.onListChange;
|
|
408
399
|
var newList = [];
|
|
409
400
|
fileList.map(function (item) {
|
|
410
401
|
var newFile = _objectSpread({}, item);
|
|
@@ -420,23 +411,26 @@ var NscUpload = /*#__PURE__*/function (_React$PureComponent) {
|
|
|
420
411
|
this.setState({
|
|
421
412
|
fileList: newList
|
|
422
413
|
});
|
|
414
|
+
var onListChange = this.props.onListChange;
|
|
415
|
+
this.setState({
|
|
416
|
+
fileList: fileList
|
|
417
|
+
});
|
|
423
418
|
onListChange && onListChange(newList);
|
|
424
419
|
}
|
|
425
420
|
}, {
|
|
426
421
|
key: "onDelete",
|
|
427
422
|
value: function onDelete(file) {
|
|
428
423
|
var fileList = this.state.fileList;
|
|
429
|
-
var onListChange = this.props.onListChange;
|
|
430
424
|
var newList = [];
|
|
431
425
|
fileList.map(function (item) {
|
|
432
|
-
|
|
426
|
+
//通过文件名判断,上传是文件名是唯一的
|
|
427
|
+
if (item.name !== file.name || item.fileId !== file.fileId || item.uid !== file.uid) {
|
|
433
428
|
newList.push(item);
|
|
434
429
|
}
|
|
435
430
|
});
|
|
436
431
|
this.setState({
|
|
437
432
|
fileList: newList
|
|
438
433
|
});
|
|
439
|
-
onListChange && onListChange(newList);
|
|
440
434
|
}
|
|
441
435
|
}, {
|
|
442
436
|
key: "render",
|
|
@@ -444,7 +438,6 @@ var NscUpload = /*#__PURE__*/function (_React$PureComponent) {
|
|
|
444
438
|
var _this3 = this;
|
|
445
439
|
|
|
446
440
|
var _this$props3 = this.props,
|
|
447
|
-
useDefaultList = _this$props3.useDefaultList,
|
|
448
441
|
fileList = _this$props3.fileList,
|
|
449
442
|
fileCard = _this$props3.fileCard,
|
|
450
443
|
_this$props3$showUplo = _this$props3.showUploadList,
|
|
@@ -543,7 +536,18 @@ var NscUpload = /*#__PURE__*/function (_React$PureComponent) {
|
|
|
543
536
|
|
|
544
537
|
return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(_Upload, _extends({}, defaultProps, newprops, {
|
|
545
538
|
beforeUpload: this.beforeUpload.bind(this),
|
|
546
|
-
fileList: fileList ? this.state.fileListStore : this.state.fileList
|
|
539
|
+
fileList: fileList ? this.state.fileListStore : this.state.fileList,
|
|
540
|
+
onChange: function onChange(_ref4) {
|
|
541
|
+
var file = _ref4.file,
|
|
542
|
+
fileList = _ref4.fileList;
|
|
543
|
+
var onListChange = _this3.props.onListChange;
|
|
544
|
+
|
|
545
|
+
_this3.setState({
|
|
546
|
+
fileList: fileList
|
|
547
|
+
});
|
|
548
|
+
|
|
549
|
+
onListChange && onListChange(fileList);
|
|
550
|
+
}
|
|
547
551
|
})));
|
|
548
552
|
}
|
|
549
553
|
}]);
|
|
@@ -552,4 +556,4 @@ var NscUpload = /*#__PURE__*/function (_React$PureComponent) {
|
|
|
552
556
|
}(React.PureComponent);
|
|
553
557
|
|
|
554
558
|
export default withZhLocale(NscUpload);
|
|
555
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2Jhc2UvdXBsb2FkL2luZGV4LnRzeCJdLCJuYW1lcyI6WyJSZWFjdCIsImZpbGUiLCJtZXNzYWdlIiwid2l0aFpoTG9jYWxlIiwib21pdCIsImdldExlc3MiLCJzdHlsZXMiLCJjbHMiLCJGaWxlSWNvbiIsIkRlbGV0ZU91dGxpbmVkIiwiRG93bmxvYWRPdXRsaW5lZCIsIkV5ZU91dGxpbmVkIiwidXBsb2FkIiwiZG93bmxvYWQiLCJwcmV2aWV3RG9jdW1lbnQiLCJOc2NVcGxvYWQiLCJmaWxlTGlzdCIsInZpZXdJZCIsImZpbGVMaXN0U3RvcmUiLCJmaWxlTmFtZXMiLCJvcHRpb25zIiwicHJvcHMiLCJvbkNvbXBsZXRlIiwib25Qcm9jZXNzIiwic2xpY2VTaXplIiwib25Qcm9ncmVzcyIsInRvdGFsUHJvZ3Jlc3MiLCJwZXJjZW50IiwicGFydFNpemUiLCJyZXMiLCJmaWxlSWQiLCJjb2RlIiwiZGF0YSIsImF0dGFjaElkIiwib25TdWNjZXNzIiwib25FcnJvciIsInN0YXR1cyIsImNvbnZlcnRGaWxlTGlzdCIsImxpc3QiLCJuZXdGaWxlTGlzdCIsIm9sZExpc3QiLCJtYXAiLCJpdGVtIiwidGVtcCIsIm5hbWUiLCJmaWxlTmFtZSIsInR5cGUiLCJzaXplIiwicHVzaCIsInNldFN0YXRlIiwicHJlUHJvcHMiLCJwcmVTdGF0ZSIsIkpTT04iLCJzdHJpbmdpZnkiLCJzdGF0ZSIsIm9maWxlTGlzdCIsIm1heFNpemUiLCJhbGxvd0ZpbGVTdWZmaXgiLCJjaGVja1NhbWVGaWxlIiwibWF4Q291bnQiLCJzaG93VXBsb2FkTGlzdCIsInByb3BzTGlzdCIsImNoZWNrRmlsZVR5cGUiLCJlcnJvciIsImNoZWNrTGlzdCIsImluZGV4T2YiLCJiZWZvcmVVcGxvYWQiLCJvbkxpc3RDaGFuZ2UiLCJuZXdMaXN0IiwidWlkIiwibGVuZ3RoIiwic3BsaWNlIiwibmFtZXMiLCJzcGxpdCIsInN1ZmZpeCIsIm5ld0ZpbGUiLCJ1cmwiLCJ3aW5kb3ciLCJsb2NhbFN0b3JhZ2UiLCJnZXRJdGVtIiwidXNlRGVmYXVsdExpc3QiLCJmaWxlQ2FyZCIsInNob3dEb3dubG9hZEljb24iLCJzaG93UHJldmlld0ljb24iLCJzaG93UmVtb3ZlSWNvbiIsImRvd25sb2FkSWNvbiIsInJlbW92ZUljb24iLCJwcmV2aWV3SWNvbiIsIm5ld3Byb3BzIiwiZGVmYXVsdFByb3BzIiwiY3VzdG9tUmVxdWVzdCIsImJpbmQiLCJtdWx0aXBsZSIsIml0ZW1SZW5kZXIiLCJvcmlnaW5Ob2RlIiwiY3VyckZpbGVMaXN0Iiwib25QcmV2aWV3IiwiY3Vyc29yIiwib25Eb3dubG9hZCIsIm9uUmVtb3ZlIiwib25EZWxldGUiLCJ3aWR0aCIsIlB1cmVDb21wb25lbnQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxPQUFPLEtBQUtBLEtBQVosTUFBdUIsT0FBdkI7QUFFQSxPQUFPQyxJQUFQLE1BQWlCLFVBQWpCO0FBQ0EsT0FBT0MsT0FBUCxNQUFvQixZQUFwQjtBQUNBLE9BQU9DLFlBQVAsTUFBeUIsd0JBQXpCO0FBQ0EsT0FBT0MsSUFBUCxNQUFpQixTQUFqQjtBQUNBLFNBQVNDLE9BQVQsUUFBd0IsYUFBeEI7QUFDQSxPQUFPQyxNQUFQLE1BQW1CLGNBQW5CO0FBQ0EsT0FBT0MsR0FBUCxNQUFnQixZQUFoQjtBQUNBLE9BQU9DLFFBQVAsTUFBcUIsb0JBQXJCO0FBQ0EsU0FDRUMsY0FERixFQUVFQyxnQkFGRixFQUdFQyxXQUhGLFFBSU8sbUJBSlA7QUFNQSxJQUFRQyxNQUFSLEdBQThDWCxJQUE5QyxDQUFRVyxNQUFSO0FBQUEsSUFBZ0JDLFFBQWhCLEdBQThDWixJQUE5QyxDQUFnQlksUUFBaEI7QUFBQSxJQUEwQkMsZUFBMUIsR0FBOENiLElBQTlDLENBQTBCYSxlQUExQjs7SUFhTUMsUzs7Ozs7Ozs7Ozs7Ozs7Ozs0REFDSTtBQUFFQyxNQUFBQSxRQUFRLEVBQUUsRUFBWjtB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UUFBQSxZQUFZLEVBQUUsS0FBS3RCLFlBQUwsQ0FBa0J5QixJQUFsQixDQUF1QixJQUF2QixDQUhoQjtBQUlFLFFBQUEsUUFBUSxFQUFFM0UsUUFBUSxHQUFHLEtBQUtzQyxLQUFMLENBQVdwQyxhQUFkLEdBQThCLEtBQUtvQyxLQUFMLENBQVd0QztBQUo3RCxTQURGLENBREY7QUFVRDs7OztFQTFXcUJoQixLQUFLLENBQUNzRyxhOztBQTRXOUIsZUFBZW5HLFlBQVksQ0FBQ1ksU0FBRCxDQUEzQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIFJlYWN0IGZyb20gXCJyZWFjdFwiO1xyXG5pbXBvcnQgeyBVcGxvYWQsIFVwbG9hZFByb3BzIH0gZnJvbSBcImFudGRcIjtcclxuaW1wb3J0IGZpbGUgZnJvbSBcIm5zYy1maWxlXCI7XHJcbmltcG9ydCBtZXNzYWdlIGZyb20gXCIuLi9tZXNzYWdlXCI7XHJcbmltcG9ydCB3aXRoWmhMb2NhbGUgZnJvbSBcIi4uL2NvbW1vbi93aXRoWmhMb2NhbGVcIjtcclxuaW1wb3J0IG9taXQgZnJvbSBcIm9taXQuanNcIjtcclxuaW1wb3J0IHsgZ2V0TGVzcyB9IGZyb20gXCIuLi8uLi91dGlsc1wiO1xyXG5pbXBvcnQgc3R5bGVzIGZyb20gXCIuL2luZGV4Lmxlc3NcIjtcclxuaW1wb3J0IGNscyBmcm9tIFwiY2xhc3NuYW1lc1wiO1xyXG5pbXBvcnQgRmlsZUljb24gZnJvbSBcIi4uL2NvbW1vbi9GaWxlSWNvblwiO1xyXG5pbXBvcnQge1xyXG4gIERlbGV0ZU91dGxpbmVkLFxyXG4gIERvd25sb2FkT3V0bGluZWQsXHJcbiAgRXllT3V0bGluZWQsXHJcbn0gZnJvbSBcIkBhbnQtZGVzaWduL2ljb25zXCI7XHJcbmltcG9ydCBQZGZWaWV3ZXIgZnJvbSBcIi4uL3BkZnZpd2VyXCI7XHJcbmNvbnN0IHsgdXBsb2FkLCBkb3dubG9hZCwgcHJldmlld0RvY3VtZW50IH0gPSBmaWxlO1xyXG5cclxuaW50ZXJmYWNlIElVcGxvYWRQcm9wcyBleHRlbmRzIFVwbG9hZFByb3BzIHtcclxuICBzbGljZVNpemU/OiBudW1iZXI7XHJcbiAgbWF4U2l6ZT86IG51bWJlciB8IGJvb2xlYW47XHJcbiAgb25Qcm9jZXNzPzogKHByb2Nlc3MpID0+IHZvaWQ7XHJcbiAgb25Db21wbGV0ZT86ICh7IGZpbGUsIGZpbGVJZCwgc3RhdHVzIH0pID0+IHZvaWQ7XHJcbiAgYWxsb3dGaWxlU3VmZml4PzogQXJyYXk8U3RyaW5nPjsgLy/lhYHorrjkuIrkvKDmianlsZXlkI0s5LiN5bimLlxyXG4gIHVzZURlZmF1bHRMaXN0PzogYm9vbGVhbjsgLy/mmK/lkKbkvb/nlKjpu5jorqTnmoRmaWxlTGlzdFxyXG4gIGZpbGVDYXJkPzogYm9vbGVhbjtcclxuICBvbkxpc3RDaGFuZ2U/OiBhbnk7XHJcbiAgY2hlY2tTYW1lRmlsZT86IGJvb2xlYW47XHJcbn1cclxuY2xhc3MgTnNjVXBsb2FkIGV4dGVuZHMgUmVhY3QuUHVyZUNvbXBvbmVudDxJVXBsb2FkUHJvcHMsIGFueT4ge1xyXG4gIHN0YXRlID0geyBmaWxlTGlzdDogW10sIHZpZXdJZDogXCJcIiwgZmlsZUxpc3RTdG9yZTogW10sIGZpbGVOYW1lczogW10gfTtcclxuICBjb21wb25lbnREaWRNb3VudCgpIHtcclxuICAgIGlmICh0aGlzLnByb3BzLmZpbGVMaXN0KSB7XHJcbiAgICAgIHRoaXMuY29udmVydEZpbGVMaXN0KCk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGNvbnZlcnRGaWxlTGlzdChsaXN0PzogQXJyYXk8T2JqZWN0Pikge1xyXG4gICAgY29uc3QgeyBmaWxlTGlzdCB9ID0gdGhpcy5wcm9wcztcclxuICAgIGNvbnN0IG5ld0ZpbGVMaXN0ID0gW107XHJcbiAgICBsZXQgb2xkTGlzdCA9IGxpc3QgPyBsaXN0IDogZmlsZUxpc3Q7XHJcbiAgICBvbGRMaXN0Lm1hcCgoaXRlbTogYW55KSA9PiB7XHJcbiAgICAgIGxldCB0ZW1wID0ge1xyXG4gICAgICAgIC4uLml0ZW0sXHJcbiAgICAgICAgbmFtZTogaXRlbS5uYW1lIHx8IGl0ZW0uZmlsZU5hbWUsXHJcbiAgICAgICAgdHlwZTogaXRlbS50eXBlLFxyXG4gICAgICAgIHNpemU6IGl0ZW0uc2l6ZSxcclxuICAgICAgfTtcclxuICAgICAgbmV3RmlsZUxpc3QucHVzaCh0ZW1wKTtcclxuICAgIH0pO1xyXG4gICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgIGZpbGVMaXN0OiBuZXdGaWxlTGlzdCxcclxuICAgICAgZmlsZUxpc3RTdG9yZTogZmlsZUxpc3QsXHJcbiAgICB9KTtcclxuICB9XHJcbiAgY29tcG9uZW50RGlkVXBkYXRlKHByZVByb3BzLCBwcmVTdGF0ZSkge1xyXG4gICAgaWYgKHRoaXMucHJvcHMuZmlsZUxpc3QpIHtcclxuICAgICAgaWYgKFxyXG4gICAgICAgIEpTT04uc3RyaW5naWZ5KHRoaXMucHJvcHMuZmlsZUxpc3QpICE9PVxyXG4gICAgICAgIEpTT04uc3RyaW5naWZ5KHRoaXMuc3RhdGUuZmlsZUxpc3RTdG9yZSlcclxuICAgICAgKSB7XHJcbiAgICAgICAgdGhpcy5jb252ZXJ0RmlsZUxpc3QoKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuICBnZXRGaWxlTGlzdCgpIHtcclxuICAgIHJldHVybiB0aGlzLnN0YXRlLmZpbGVMaXN0O1xyXG4gIH1cclxuICBzZXRGaWxlTGlzdChmaWxlTGlzdDogQXJyYXk8T2JqZWN0Pikge1xyXG4gICAgdGhpcy5jb252ZXJ0RmlsZUxpc3QoZmlsZUxpc3QpO1xyXG4gIH1cclxuICBhc3luYyBiZWZvcmVVcGxvYWQoZmlsZSwgb2ZpbGVMaXN0KSB7XHJcbiAgICBsZXQge1xyXG4gICAgICBtYXhTaXplID0gMTAwLFxyXG4gICAgICBhbGxvd0ZpbGVTdWZmaXgsXHJcbiAgICAgIGNoZWNrU2FtZUZpbGUgPSB0cnVlLFxyXG4gICAgICBtYXhDb3VudCxcclxuICAgICAgc2hvd1VwbG9hZExpc3QsXHJcbiAgICAgIGZpbGVMaXN0OiBwcm9wc0xpc3QsXHJcbiAgICB9ID0gdGhpcy5wcm9wcztcclxuICAgIGxldCB7IGZpbGVMaXN0LCBmaWxlTGlzdFN0b3JlIH0gPSB0aGlzLnN0YXRlO1xyXG5cclxuICAgIGxldCBzaXplOiBudW1iZXI7XHJcbiAgICBpZiAoYWxsb3dGaWxlU3VmZml4ICYmICF0aGlzLmNoZWNrRmlsZVR5cGUoZmlsZSkpIHtcclxuICAgICAgbWVzc2FnZS5lcnJvcihcclxuICAgICAgICBgJHtmaWxlLm5hbWV95paH5Lu257G75Z6L5LiN5YWB6K645LiK5Lyg77yM6K+35LiK5Lyg5ZCO57yA5Li6JHthbGxvd0ZpbGVTdWZmaXh955qE57G75Z6L5paH5Lu277yBYFxyXG4gICAgICApO1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICBpZiAobWF4U2l6ZSAhPT0gZmFsc2UpIHtcclxuICAgICAgaWYgKG1heFNpemUgPT09IHRydWUpIHtcclxuICAgICAgICBtYXhTaXplID0gMTAwO1xyXG4gICAgICB9XHJcbiAgICAgIHNpemUgPSBtYXhTaXplICogMTAyNCAqIDEwMjQ7XHJcbiAgICAgIGlmIChzaXplIDwgZmlsZS5zaXplKSB7XHJcbiAgICAgICAgbWVzc2FnZS5lcnJvcihgJHtmaWxlLm5hbWV95paH5Lu25aSn5bCP6LaF6L+HJHttYXhTaXplfU3vvIzor7fph43mlrDkuIrkvKDvvIFgKTtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGxldCBmaWxlTmFtZXMgPSBbXTtcclxuICAgIGlmIChjaGVja1NhbWVGaWxlKSB7XHJcbiAgICAgIGNvbnN0IGNoZWNrTGlzdCA9IHRoaXMucHJvcHMuZmlsZUxpc3QgPyBmaWxlTGlzdFN0b3JlIDogZmlsZUxpc3Q7XHJcbiAgICAgIGNoZWNrTGlzdC5tYXAoKGl0ZW0pID0+IHtcclxuICAgICAgICBmaWxlTmFtZXMucHVzaChpdGVtLm5hbWUgfHwgaXRlbS5maWxlTmFtZSk7XHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgaWYgKGZpbGVOYW1lcy5pbmRleE9mKGZpbGUubmFtZSkgPiAtMSAmJiBzaG93VXBsb2FkTGlzdCAhPT0gZmFsc2UpIHtcclxuICAgICAgICBtZXNzYWdlLmVycm9yKGDmlofku7Yke2ZpbGUubmFtZX3lt7LlnKjkuIrkvKDliJfooajkuK3vvIzor7fph43mlrDpgInmi6nmlofku7bvvIFgKTtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5wcm9wcy5iZWZvcmVVcGxvYWQpIHtcclxuICAgICAgY29uc3QgcmVzID0gYXdhaXQgdGhpcy5wcm9wcy5iZWZvcmVVcGxvYWQoZmlsZSwgb2ZpbGVMaXN0KTtcclxuICAgICAgaWYgKHJlcyA9PT0gZmFsc2UpIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGNvbnN0IHsgb25MaXN0Q2hhbmdlIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgY29uc3QgbmV3TGlzdCA9IFsuLi5maWxlTGlzdF07XHJcbiAgICBvZmlsZUxpc3QubWFwKGFzeW5jIChpdGVtKSA9PiB7XHJcbiAgICAgIGlmIChcclxuICAgICAgICAhKFxyXG4gICAgICAgICAgKGFsbG93RmlsZVN1ZmZpeCAmJiAhdGhpcy5jaGVja0ZpbGVUeXBlKGl0ZW0pKSB8fFxyXG4gICAgICAgICAgc2l6ZSA8IGl0ZW0uc2l6ZSB8fFxyXG4gICAgICAgICAgKGNoZWNrU2FtZUZpbGUgJiYgZmlsZU5hbWVzLmluZGV4T2YoaXRlbS5uYW1lKSA+IC0xKVxyXG4gICAgICAgIClcclxuICAgICAgKSB7XHJcbiAgICAgICAgY29uc3QgdGVtcCA9IHtcclxuICAgICAgICAgIGZpbGVOYW1lOiBpdGVtLm5hbWUsXHJcbiAgICAgICAgICBwZXJjZW50OiAwLFxyXG4gICAgICAgICAgc3RhdHVzOiBcInVwbG9hZGluZ1wiLFxyXG4gICAgICAgICAgdWlkOiBpdGVtLnVpZCxcclxuICAgICAgICAgIG5hbWU6IGl0ZW0ubmFtZSxcclxuICAgICAgICAgIHR5cGU6IGl0ZW0udHlwZSxcclxuICAgICAgICAgIHNpemU6IGl0ZW0uc2l6ZSxcclxuICAgICAgICB9O1xyXG4gICAgICAgIG5ld0xpc3QucHVzaCh0ZW1wKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICBpZiAobWF4Q291bnQgJiYgbmV3TGlzdC5sZW5ndGggPiBtYXhDb3VudCkge1xyXG4gICAgICBuZXdMaXN0LnNwbGljZSgwLCAxKTtcclxuICAgIH1cclxuICAgIHRoaXMuc2V0U3RhdGUoeyBmaWxlTGlzdDogbmV3TGlzdCB9KTtcclxuICAgIG9uTGlzdENoYW5nZSAmJiBvbkxpc3RDaGFuZ2UobmV3TGlzdCk7XHJcbiAgfVxyXG4gIGNoZWNrRmlsZVR5cGUoZmlsZSkge1xyXG4gICAgY29uc3QgeyBhbGxvd0ZpbGVTdWZmaXggfSA9IHRoaXMucHJvcHM7XHJcbiAgICBjb25zdCBuYW1lcyA9IGZpbGUubmFtZS5zcGxpdChcIi5cIik7XHJcbiAgICBjb25zdCBzdWZmaXggPSBuYW1lc1tuYW1lcy5sZW5ndGggLSAxXTtcclxuICAgIGlmIChhbGxvd0ZpbGVTdWZmaXguaW5kZXhPZihzdWZmaXgpID4gLTEpIHtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG4gIG9uUHJvY2Vzcyh7IHBlcmNlbnQsIGZpbGUgfTogYW55KSB7XHJcbiAgICBjb25zdCB7IGZpbGVMaXN0IH0gPSB0aGlzLnN0YXRlO1xyXG4gICAgY29uc3QgeyBvbkxpc3RDaGFuZ2UgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBjb25zdCBuZXdMaXN0OiBhbnkgPSBbXTtcclxuICAgIGZpbGVMaXN0Lm1hcCgoaXRlbTogYW55KSA9PiB7XHJcbiAgICAgIGNvbnN0IG5ld0ZpbGUgPSB7IC4uLml0ZW0gfTtcclxuICAgICAgaWYgKGZpbGUudWlkID09IGl0ZW0udWlkKSB7XHJcbiAgICAgICAgbmV3RmlsZS5wZXJjZW50ID0gcGVyY2VudDtcclxuICAgICAgfVxyXG4gICAgICBuZXdMaXN0LnB1c2gobmV3RmlsZSk7XHJcbiAgICB9KTtcclxuICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICBmaWxlTGlzdDogbmV3TGlzdCxcclxuICAgIH0pO1xyXG4gICAgb25MaXN0Q2hhbmdlICYmIG9uTGlzdENoYW5nZShuZXdMaXN0KTtcclxuICB9XHJcbiAgb25Db21wbGV0ZShmaWxlKSB7XHJcbiAgICBjb25zdCB7IGZpbGVMaXN0IH0gPSB0aGlzLnN0YXRlO1xyXG4gICAgY29uc3QgeyBvbkxpc3RDaGFuZ2UgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBjb25zdCBuZXdMaXN0OiBhbnkgPSBbXTtcclxuICAgIGZpbGVMaXN0Lm1hcCgoaXRlbTogYW55KSA9PiB7XHJcbiAgICAgIGNvbnN0IG5ld0ZpbGUgPSB7IC4uLml0ZW0gfTtcclxuICAgICAgaWYgKGZpbGUuZmlsZS51aWQgPT0gaXRlbS51aWQpIHtcclxuICAgICAgICBuZXdGaWxlLnN0YXR1cyA9IGZpbGUuc3RhdHVzID09IFwic3VjY2Vzc1wiID8gXCJkb25lXCIgOiBmaWxlLnN0YXR1cztcclxuICAgICAgICBuZXdGaWxlLmZpbGVJZCA9IGZpbGUuZmlsZUlkO1xyXG4gICAgICAgIG5ld0ZpbGUudXJsID0gYC9hcGkvanF1aWNrLXJlc291cmNlL29zcy9lbmRwb2ludC9kb3dubG9hZC1maWxlcz9hdHRhY2hJZD0ke1xyXG4gICAgICAgICAgZmlsZS5maWxlSWRcclxuICAgICAgICB9Jl90cGs9JHt3aW5kb3cubG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJ0b2tlblwiKX1gO1xyXG4gICAgICB9XHJcbiAgICAgIG5ld0xpc3QucHVzaChuZXdGaWxlKTtcclxuICAgIH0pO1xyXG4gICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgIGZpbGVMaXN0OiBuZXdMaXN0LFxyXG4gICAgfSk7XHJcbiAgICBvbkxpc3RDaGFuZ2UgJiYgb25MaXN0Q2hhbmdlKG5ld0xpc3QpO1xyXG4gIH1cclxuICBjdXN0b21SZXF1ZXN0ID0gYXN5bmMgKG9wdGlvbnMpID0+IHtcclxuICAgIGNvbnN0IGZpbGUgPSBvcHRpb25zLmZpbGU7XHJcbiAgICBjb25zdCB7IG9uQ29tcGxldGUsIG9uUHJvY2Vzcywgc2xpY2VTaXplIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgY29uc3Qgb25Qcm9ncmVzcyA9ICh0b3RhbFByb2dyZXNzOiBhbnkpID0+IHtcclxuICAgICAgb3B0aW9ucy5vblByb2dyZXNzKHsgcGVyY2VudDogdG90YWxQcm9ncmVzcyB9LCBmaWxlKTtcclxuICAgICAgdGhpcy5vblByb2Nlc3MoeyBwZXJjZW50OiB0b3RhbFByb2dyZXNzLCBmaWxlOiBmaWxlIH0pO1xyXG4gICAgICBvblByb2Nlc3MgJiYgb25Qcm9jZXNzKHsgcGVyY2VudDogdG90YWxQcm9ncmVzcywgZmlsZTogZmlsZSB9KTtcclxuICAgIH07XHJcbiAgICB0cnkge1xyXG4gICAgICBjb25zdCByZXM6IGFueSA9IGF3YWl0IHVwbG9hZCh7XHJcbiAgICAgICAgZmlsZTogZmlsZSxcclxuICAgICAgICBvblByb2dyZXNzOiBvblByb2dyZXNzLFxyXG4gICAgICAgIHBhcnRTaXplOiBzbGljZVNpemUsXHJcbiAgICAgIH0pO1xyXG4gICAgICBsZXQgZmlsZUlkID0gbnVsbDtcclxuICAgICAgaWYgKHJlcy5jb2RlID09IDIwMCkge1xyXG4gICAgICAgIGZpbGVJZCA9IHJlcy5kYXRhLmF0dGFjaElkO1xyXG4gICAgICAgIG9wdGlvbnMub25TdWNjZXNzKCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgb3B0aW9ucy5vbkVycm9yKCk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5vbkNvbXBsZXRlKHtcclxuICAgICAgICBmaWxlOiBvcHRpb25zLmZpbGUsXHJcbiAgICAgICAgZmlsZUlkOiBmaWxlSWQsXHJcbiAgICAgICAgc3RhdHVzOiByZXMuY29kZSA9PSAyMDAgPyBcInN1Y2Nlc3NcIiA6IFwiZXJyb3JcIixcclxuICAgICAgfSk7XHJcbiAgICAgIG9uQ29tcGxldGUgJiZcclxuICAgICAgICBvbkNvbXBsZXRlKHtcclxuICAgICAgICAgIGZpbGU6IG9wdGlvbnMuZmlsZSxcclxuICAgICAgICAgIGZpbGVJZDogZmlsZUlkLFxyXG4gICAgICAgICAgc3RhdHVzOiByZXMuY29kZSA9PSAyMDAgPyBcInN1Y2Nlc3NcIiA6IFwiZXJyb3JcIixcclxuICAgICAgICB9KTtcclxuICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgdGhpcy5vbkNvbXBsZXRlKHtcclxuICAgICAgICBmaWxlOiBvcHRpb25zLmZpbGUsXHJcbiAgICAgICAgZmlsZUlkOiBcIlwiLFxyXG4gICAgICAgIHN0YXR1czogXCJlcnJvclwiLFxyXG4gICAgICB9KTtcclxuICAgICAgb25Db21wbGV0ZSAmJlxyXG4gICAgICAgIG9uQ29tcGxldGUoeyBmaWxlOiBvcHRpb25zLmZpbGUsIGZpbGVJZDogXCJcIiwgc3RhdHVzOiBcImVycm9yXCIgfSk7XHJcbiAgICAgIG9wdGlvbnMub25FcnJvcigpO1xyXG4gICAgfVxyXG4gIH07XHJcbiAgb25EZWxldGUoZmlsZSkge1xyXG4gICAgY29uc3QgeyBmaWxlTGlzdCB9ID0gdGhpcy5zdGF0ZTtcclxuICAgIGNvbnN0IHsgb25MaXN0Q2hhbmdlIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgY29uc3QgbmV3TGlzdDogYW55ID0gW107XHJcbiAgICBmaWxlTGlzdC5tYXAoKGl0ZW06IGFueSkgPT4ge1xyXG4gICAgICBpZiAoaXRlbS5maWxlSWQgIT09IGZpbGUuZmlsZUlkIHx8IGl0ZW0udWlkICE9PSBmaWxlLnVpZCkge1xyXG4gICAgICAgIG5ld0xpc3QucHVzaChpdGVtKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgZmlsZUxpc3Q6IG5ld0xpc3QsXHJcbiAgICB9KTtcclxuICAgIG9uTGlzdENoYW5nZSAmJiBvbkxpc3RDaGFuZ2UobmV3TGlzdCk7XHJcbiAgfVxyXG4gIHJlbmRlcigpOiBSZWFjdC5SZWFjdE5vZGUge1xyXG4gICAgbGV0IHtcclxuICAgICAgdXNlRGVmYXVsdExpc3QsXHJcbiAgICAgIGZpbGVMaXN0LFxyXG4gICAgICBmaWxlQ2FyZCxcclxuICAgICAgc2hvd1VwbG9hZExpc3QgPSB7XHJcbiAgICAgICAgc2hvd0Rvd25sb2FkSWNvbjogdHJ1ZSxcclxuICAgICAgICBzaG93UHJldmlld0ljb246IGZhbHNlLFxyXG4gICAgICAgIHNob3dSZW1vdmVJY29uOiB0cnVlLFxyXG4gICAgICAgIGRvd25sb2FkSWNvbjogbnVsbCxcclxuICAgICAgICByZW1vdmVJY29uOiBudWxsLFxyXG4gICAgICAgIHByZXZpZXdJY29uOiBudWxsLFxyXG4gICAgICB9IGFzIGFueSxcclxuICAgIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgY29uc3QgbmV3cHJvcHMgPSBvbWl0KHRoaXMucHJvcHMsIFtcclxuICAgICAgXCJzbGljZVNpemVcIixcclxuICAgICAgXCJtYXhTaXplXCIsXHJcbiAgICAgIFwib25Db21wbGV0ZVwiLFxyXG4gICAgICBcIm9uUHJvY2Vzc1wiLFxyXG4gICAgICBcImFsbG93RmlsZVN1ZmZpeFwiLFxyXG4gICAgICBcInVzZURlZmF1bHRMaXN0XCIsXHJcbiAgICAgIFwiZmlsZUNhcmRcIixcclxuICAgICAgXCJvbkxpc3RDaGFuZ2VcIixcclxuICAgIF0pO1xyXG4gICAgbGV0IGRlZmF1bHRQcm9wcyA9IHtcclxuICAgICAgY3VzdG9tUmVxdWVzdDogdGhpcy5jdXN0b21SZXF1ZXN0LmJpbmQodGhpcyksXHJcbiAgICAgIG11bHRpcGxlOiB0cnVlLFxyXG4gICAgfSBhcyBJVXBsb2FkUHJvcHM7XHJcbiAgICBpZiAoZmlsZUNhcmQpIHtcclxuICAgICAgZGVmYXVsdFByb3BzID0ge1xyXG4gICAgICAgIC4uLmRlZmF1bHRQcm9wcyxcclxuICAgICAgICBpdGVtUmVuZGVyOiAob3JpZ2luTm9kZSwgZmlsZTogYW55LCBjdXJyRmlsZUxpc3QpID0+IHtcclxuICAgICAgICAgIGNvbnN0IG5hbWUgPSBmaWxlLm5hbWUgfHwgZmlsZS5maWxlTmFtZTtcclxuICAgICAgICAgIGNvbnN0IG5hbWVzID0gbmFtZT8uc3BsaXQoXCIuXCIpO1xyXG4gICAgICAgICAgY29uc3Qgc3VmZml4ID0gbmFtZXMgPyBuYW1lc1tuYW1lcy5sZW5ndGggLSAxXSA6IFwiXCI7XHJcbiAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwiZmlsZS1pdGVtXCIpfT5cclxuICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2NscyhnZXRMZXNzKHN0eWxlcywgXCJjb250ZW50XCIpLCB7XHJcbiAgICAgICAgICAgICAgICAgIFtnZXRMZXNzKHN0eWxlcywgXCJjb250ZW50X2Vycm9yXCIpXTogZmlsZS5zdGF0dXMgPT0gXCJlcnJvclwiLFxyXG4gICAgICAgICAgICAgICAgfSl9XHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcIm1hcmstcGljdHVyZVwiKX0+XHJcbiAgICAgICAgICAgICAgICAgIDxGaWxlSWNvbiBzdWZmaXg9e3N1ZmZpeH0gZmlsZUlkPXtmaWxlLmZpbGVJZH0gLz5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcIm5hbWVcIil9PlxyXG4gICAgICAgICAgICAgICAgICB7ZmlsZS5uYW1lIHx8IGZpbGUuZmlsZU5hbWV9XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJpY29uXCIpfT5cclxuICAgICAgICAgICAgICAgICAge3Nob3dVcGxvYWRMaXN0LnNob3dQcmV2aWV3SWNvbiAmJiBmaWxlLnN0YXR1cyA9PSBcImRvbmVcIiAmJiAoXHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5wcm9wcy5vblByZXZpZXcpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnByb3BzLm9uUHJldmlldyhmaWxlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBwcmV2aWV3RG9jdW1lbnQoZmlsZS5maWxlSWQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3sgY3Vyc29yOiBcInBvaW50ZXJcIiB9fVxyXG4gICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgIHtzaG93VXBsb2FkTGlzdC5kb3dubG9hZEljb24gPyAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNob3dVcGxvYWRMaXN0LmRvd25sb2FkSWNvblxyXG4gICAgICAgICAgICAgICAgICAgICAgKSA6IChcclxuICAgICAgICAgICAgICAgICAgICAgICAgPEV5ZU91dGxpbmVkIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICAgICAgICB7c2hvd1VwbG9hZExpc3Quc2hvd0Rvd25sb2FkSWNvbiAmJiBmaWxlLnN0YXR1cyA9PSBcImRvbmVcIiAmJiAoXHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5wcm9wcy5vbkRvd25sb2FkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wcm9wcy5vbkRvd25sb2FkKGZpbGUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGRvd25sb2FkKGZpbGUuZmlsZUlkKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXt7IGN1cnNvcjogXCJwb2ludGVyXCIgfX1cclxuICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICB7c2hvd1VwbG9hZExpc3QuZG93bmxvYWRJY29uID8gKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzaG93VXBsb2FkTGlzdC5kb3dubG9hZEljb25cclxuICAgICAgICAgICAgICAgICAgICAgICkgOiAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxEb3dubG9hZE91dGxpbmVkIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICAgICAgICB7c2hvd1VwbG9hZExpc3Quc2hvd1JlbW92ZUljb24gJiYgKFxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMucHJvcHMub25SZW1vdmUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnByb3BzLm9uUmVtb3ZlKGZpbGUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMub25EZWxldGUoZmlsZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17eyBjdXJzb3I6IFwicG9pbnRlclwiIH19XHJcbiAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAge3Nob3dVcGxvYWRMaXN0LmRvd25sb2FkSWNvbiA/IChcclxuICAgICAgICAgICAgICAgICAgICAgICAgc2hvd1VwbG9hZExpc3QuZG93bmxvYWRJY29uXHJcbiAgICAgICAgICAgICAgICAgICAgICApIDogKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8RGVsZXRlT3V0bGluZWQgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICB7ZmlsZS5zdGF0dXMgPT0gXCJ1cGxvYWRpbmdcIiAmJiAoXHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwicHJvY2Vzc1wiKX0+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcInBlcmNlbnRcIil9XHJcbiAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3sgd2lkdGg6IGZpbGUucGVyY2VudCArIFwiJVwiIH19XHJcbiAgICAgICAgICAgICAgICAgID48L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9LFxyXG4gICAgICB9O1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgZGVmYXVsdFByb3BzID0ge1xyXG4gICAgICAgIC4uLmRlZmF1bHRQcm9wcyxcclxuICAgICAgICBvbkRvd25sb2FkOiAoZmlsZTogYW55KSA9PiB7XHJcbiAgICAgICAgICBkb3dubG9hZChmaWxlLmZpbGVJZCk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBvblJlbW92ZTogKGZpbGUpID0+IHtcclxuICAgICAgICAgIHRoaXMub25EZWxldGUoZmlsZSk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBvblByZXZpZXc6IChmaWxlOiBhbnkpID0+IHtcclxuICAgICAgICAgIGlmIChmaWxlPy5maWxlSWQpIHtcclxuICAgICAgICAgICAgcHJldmlld0RvY3VtZW50KGZpbGUuZmlsZUlkKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIHNob3dVcGxvYWRMaXN0OiB7IC4uLnNob3dVcGxvYWRMaXN0IH0sXHJcbiAgICAgIH07XHJcbiAgICB9XHJcbiAgICByZXR1cm4gKFxyXG4gICAgICA8PlxyXG4gICAgICAgIDxVcGxvYWRcclxuICAgICAgICAgIHsuLi5kZWZhdWx0UHJvcHN9XHJcbiAgICAgICAgICB7Li4ubmV3cHJvcHN9XHJcbiAgICAgICAgICBiZWZvcmVVcGxvYWQ9e3RoaXMuYmVmb3JlVXBsb2FkLmJpbmQodGhpcyl9XHJcbiAgICAgICAgICBmaWxlTGlzdD17ZmlsZUxpc3QgPyB0aGlzLnN0YXRlLmZpbGVMaXN0U3RvcmUgOiB0aGlzLnN0YXRlLmZpbGVMaXN0fVxyXG4gICAgICAgIC8+XHJcbiAgICAgIDwvPlxyXG4gICAgKTtcclxuICB9XHJcbn1cclxuZXhwb3J0IGRlZmF1bHQgd2l0aFpoTG9jYWxlKE5zY1VwbG9hZCk7XHJcbiJdfQ==
|
|
559
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2Jhc2UvdXBsb2FkL2luZGV4LnRzeCJdLCJuYW1lcyI6WyJSZWFjdCIsImZpbGUiLCJtZXNzYWdlIiwid2l0aFpoTG9jYWxlIiwib21pdCIsImdldExlc3MiLCJzdHlsZXMiLCJjbHMiLCJGaWxlSWNvbiIsIkRlbGV0ZU91dGxpbmVkIiwiRG93bmxvYWRPdXRsaW5lZCIsIkV5ZU91dGxpbmVkIiwidXBsb2FkIiwiZG93bmxvYWQiLCJwcmV2aWV3RG9jdW1lbnQiLCJOc2NVcGxvYWQiLCJmaWxlTGlzdCIsInZpZXdJZCIsImZpbGVMaXN0U3RvcmUiLCJmaWxlTmFtZXMiLCJvcHRpb25zIiwicHJvcHMiLCJvbkNvbXBsZXRlIiwib25Qcm9jZXNzIiwic2xpY2VTaXplIiwib25Qcm9ncmVzcyIsInRvdGFsUHJvZ3Jlc3MiLCJwZXJjZW50IiwicGFydFNpemUiLCJyZXMiLCJmaWxlSWQiLCJjb2RlIiwiZGF0YSIsImF0dGFjaElkIiwib25TdWNjZXNzIiwib25FcnJvciIsInN0YXR1cyIsImNvbnZlcnRGaWxlTGlzdCIsImxpc3QiLCJuZXdGaWxlTGlzdCIsIm9sZExpc3QiLCJtYXAiLCJpdGVtIiwidGVtcCIsIm5hbWUiLCJmaWxlTmFtZSIsInR5cGUiLCJzaXplIiwicHVzaCIsInNldFN0YXRlIiwicHJlUHJvcHMiLCJwcmVTdGF0ZSIsIkpTT04iLCJzdHJpbmdpZnkiLCJzdGF0ZSIsIm9maWxlTGlzdCIsIm1heFNpemUiLCJhbGxvd0ZpbGVTdWZmaXgiLCJjaGVja1NhbWVGaWxlIiwibWF4Q291bnQiLCJzaG93VXBsb2FkTGlzdCIsInByb3BzTGlzdCIsImNoZWNrRmlsZVR5cGUiLCJlcnJvciIsImNoZWNrTGlzdCIsImluZGV4T2YiLCJiZWZvcmVVcGxvYWQiLCJuZXdMaXN0IiwidWlkIiwibGVuZ3RoIiwic3BsaWNlIiwibmFtZXMiLCJzcGxpdCIsInN1ZmZpeCIsIm5ld0ZpbGUiLCJ1cmwiLCJ3aW5kb3ciLCJsb2NhbFN0b3JhZ2UiLCJnZXRJdGVtIiwib25MaXN0Q2hhbmdlIiwiZmlsZUNhcmQiLCJzaG93RG93bmxvYWRJY29uIiwic2hvd1ByZXZpZXdJY29uIiwic2hvd1JlbW92ZUljb24iLCJkb3dubG9hZEljb24iLCJyZW1vdmVJY29uIiwicHJldmlld0ljb24iLCJuZXdwcm9wcyIsImRlZmF1bHRQcm9wcyIsImN1c3RvbVJlcXVlc3QiLCJiaW5kIiwibXVsdGlwbGUiLCJpdGVtUmVuZGVyIiwib3JpZ2luTm9kZSIsImN1cnJGaWxlTGlzdCIsIm9uUHJldmlldyIsImN1cnNvciIsIm9uRG93bmxvYWQiLCJvblJlbW92ZSIsIm9uRGVsZXRlIiwid2lkdGgiLCJQdXJlQ29tcG9uZW50Il0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsT0FBTyxLQUFLQSxLQUFaLE1BQXVCLE9BQXZCO0FBRUEsT0FBT0MsSUFBUCxNQUFpQixVQUFqQjtBQUNBLE9BQU9DLE9BQVAsTUFBb0IsWUFBcEI7QUFDQSxPQUFPQyxZQUFQLE1BQXlCLHdCQUF6QjtBQUNBLE9BQU9DLElBQVAsTUFBaUIsU0FBakI7QUFDQSxTQUFTQyxPQUFULFFBQXdCLGFBQXhCO0FBQ0EsT0FBT0MsTUFBUCxNQUFtQixjQUFuQjtBQUNBLE9BQU9DLEdBQVAsTUFBZ0IsWUFBaEI7QUFDQSxPQUFPQyxRQUFQLE1BQXFCLG9CQUFyQjtBQUNBLFNBQ0VDLGNBREYsRUFFRUMsZ0JBRkYsRUFHRUMsV0FIRixRQUlPLG1CQUpQO0FBTUEsSUFBUUMsTUFBUixHQUE4Q1gsSUFBOUMsQ0FBUVcsTUFBUjtBQUFBLElBQWdCQyxRQUFoQixHQUE4Q1osSUFBOUMsQ0FBZ0JZLFFBQWhCO0FBQUEsSUFBMEJDLGVBQTFCLEdBQThDYixJQUE5QyxDQUEwQmEsZUFBMUI7O0lBYU1DLFM7Ozs7Ozs7Ozs7Ozs7Ozs7NERBQ0k7QUFBRUMsTUFBQUEsUUFBUSxFQUFFLEVBQVo7QUFBZ0JDLE1BQUFBLE1BQU0s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QSxVQUFBLE1BQUksQ0FBQzlCLFFBQUwsQ0FBYztBQUNaakMsWUFBQUEsUUFBUSxFQUFFQTtBQURFLFdBQWQ7O0FBR0ErRCxVQUFBQSxZQUFZLElBQUlBLFlBQVksQ0FBQy9ELFFBQUQsQ0FBNUI7QUFDRDtBQVhILFNBREYsQ0FERjtBQWlCRDs7OztFQWhYcUJoQixLQUFLLENBQUNxRyxhOztBQWtYOUIsZUFBZWxHLFlBQVksQ0FBQ1ksU0FBRCxDQUEzQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIFJlYWN0IGZyb20gXCJyZWFjdFwiO1xyXG5pbXBvcnQgeyBVcGxvYWQsIFVwbG9hZFByb3BzIH0gZnJvbSBcImFudGRcIjtcclxuaW1wb3J0IGZpbGUgZnJvbSBcIm5zYy1maWxlXCI7XHJcbmltcG9ydCBtZXNzYWdlIGZyb20gXCIuLi9tZXNzYWdlXCI7XHJcbmltcG9ydCB3aXRoWmhMb2NhbGUgZnJvbSBcIi4uL2NvbW1vbi93aXRoWmhMb2NhbGVcIjtcclxuaW1wb3J0IG9taXQgZnJvbSBcIm9taXQuanNcIjtcclxuaW1wb3J0IHsgZ2V0TGVzcyB9IGZyb20gXCIuLi8uLi91dGlsc1wiO1xyXG5pbXBvcnQgc3R5bGVzIGZyb20gXCIuL2luZGV4Lmxlc3NcIjtcclxuaW1wb3J0IGNscyBmcm9tIFwiY2xhc3NuYW1lc1wiO1xyXG5pbXBvcnQgRmlsZUljb24gZnJvbSBcIi4uL2NvbW1vbi9GaWxlSWNvblwiO1xyXG5pbXBvcnQge1xyXG4gIERlbGV0ZU91dGxpbmVkLFxyXG4gIERvd25sb2FkT3V0bGluZWQsXHJcbiAgRXllT3V0bGluZWQsXHJcbn0gZnJvbSBcIkBhbnQtZGVzaWduL2ljb25zXCI7XHJcbmltcG9ydCBQZGZWaWV3ZXIgZnJvbSBcIi4uL3BkZnZpd2VyXCI7XHJcbmNvbnN0IHsgdXBsb2FkLCBkb3dubG9hZCwgcHJldmlld0RvY3VtZW50IH0gPSBmaWxlO1xyXG5cclxuaW50ZXJmYWNlIElVcGxvYWRQcm9wcyBleHRlbmRzIFVwbG9hZFByb3BzIHtcclxuICBzbGljZVNpemU/OiBudW1iZXI7XHJcbiAgbWF4U2l6ZT86IG51bWJlciB8IGJvb2xlYW47XHJcbiAgb25Qcm9jZXNzPzogKHByb2Nlc3MpID0+IHZvaWQ7XHJcbiAgb25Db21wbGV0ZT86ICh7IGZpbGUsIGZpbGVJZCwgc3RhdHVzIH0pID0+IHZvaWQ7XHJcbiAgYWxsb3dGaWxlU3VmZml4PzogQXJyYXk8U3RyaW5nPjsgLy/lhYHorrjkuIrkvKDmianlsZXlkI0s5LiN5bimLlxyXG4gIHVzZURlZmF1bHRMaXN0PzogYm9vbGVhbjsgLy/mmK/lkKbkvb/nlKjpu5jorqTnmoRmaWxlTGlzdFxyXG4gIGZpbGVDYXJkPzogYm9vbGVhbjtcclxuICBvbkxpc3RDaGFuZ2U/OiBhbnk7XHJcbiAgY2hlY2tTYW1lRmlsZT86IGJvb2xlYW47XHJcbn1cclxuY2xhc3MgTnNjVXBsb2FkIGV4dGVuZHMgUmVhY3QuUHVyZUNvbXBvbmVudDxJVXBsb2FkUHJvcHMsIGFueT4ge1xyXG4gIHN0YXRlID0geyBmaWxlTGlzdDogW10sIHZpZXdJZDogXCJcIiwgZmlsZUxpc3RTdG9yZTogW10sIGZpbGVOYW1lczogW10gfTtcclxuICBjb21wb25lbnREaWRNb3VudCgpIHtcclxuICAgIGlmICh0aGlzLnByb3BzLmZpbGVMaXN0KSB7XHJcbiAgICAgIHRoaXMuY29udmVydEZpbGVMaXN0KCk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGNvbnZlcnRGaWxlTGlzdChsaXN0PzogQXJyYXk8T2JqZWN0Pikge1xyXG4gICAgY29uc3QgeyBmaWxlTGlzdCB9ID0gdGhpcy5wcm9wcztcclxuICAgIGNvbnN0IG5ld0ZpbGVMaXN0ID0gW107XHJcbiAgICBsZXQgb2xkTGlzdCA9IGxpc3QgPyBsaXN0IDogZmlsZUxpc3Q7XHJcbiAgICBvbGRMaXN0Lm1hcCgoaXRlbTogYW55KSA9PiB7XHJcbiAgICAgIGxldCB0ZW1wID0ge1xyXG4gICAgICAgIC4uLml0ZW0sXHJcbiAgICAgICAgbmFtZTogaXRlbS5uYW1lIHx8IGl0ZW0uZmlsZU5hbWUsXHJcbiAgICAgICAgdHlwZTogaXRlbS50eXBlLFxyXG4gICAgICAgIHNpemU6IGl0ZW0uc2l6ZSxcclxuICAgICAgfTtcclxuICAgICAgbmV3RmlsZUxpc3QucHVzaCh0ZW1wKTtcclxuICAgIH0pO1xyXG4gICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgIGZpbGVMaXN0OiBuZXdGaWxlTGlzdCxcclxuICAgICAgZmlsZUxpc3RTdG9yZTogZmlsZUxpc3QsXHJcbiAgICB9KTtcclxuICB9XHJcbiAgY29tcG9uZW50RGlkVXBkYXRlKHByZVByb3BzLCBwcmVTdGF0ZSkge1xyXG4gICAgaWYgKHRoaXMucHJvcHMuZmlsZUxpc3QpIHtcclxuICAgICAgaWYgKFxyXG4gICAgICAgIEpTT04uc3RyaW5naWZ5KHRoaXMucHJvcHMuZmlsZUxpc3QpICE9PVxyXG4gICAgICAgIEpTT04uc3RyaW5naWZ5KHRoaXMuc3RhdGUuZmlsZUxpc3RTdG9yZSlcclxuICAgICAgKSB7XHJcbiAgICAgICAgdGhpcy5jb252ZXJ0RmlsZUxpc3QoKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuICBnZXRGaWxlTGlzdCgpIHtcclxuICAgIHJldHVybiB0aGlzLnN0YXRlLmZpbGVMaXN0O1xyXG4gIH1cclxuICBzZXRGaWxlTGlzdChmaWxlTGlzdDogQXJyYXk8T2JqZWN0Pikge1xyXG4gICAgdGhpcy5jb252ZXJ0RmlsZUxpc3QoZmlsZUxpc3QpO1xyXG4gIH1cclxuICBhc3luYyBiZWZvcmVVcGxvYWQoZmlsZSwgb2ZpbGVMaXN0KSB7XHJcbiAgICBsZXQge1xyXG4gICAgICBtYXhTaXplID0gMTAwLFxyXG4gICAgICBhbGxvd0ZpbGVTdWZmaXgsXHJcbiAgICAgIGNoZWNrU2FtZUZpbGUgPSB0cnVlLFxyXG4gICAgICBtYXhDb3VudCxcclxuICAgICAgc2hvd1VwbG9hZExpc3QsXHJcbiAgICAgIGZpbGVMaXN0OiBwcm9wc0xpc3QsXHJcbiAgICB9ID0gdGhpcy5wcm9wcztcclxuICAgIGxldCB7IGZpbGVMaXN0LCBmaWxlTGlzdFN0b3JlIH0gPSB0aGlzLnN0YXRlO1xyXG4gICAgbGV0IHNpemU6IG51bWJlcjtcclxuICAgIGlmIChhbGxvd0ZpbGVTdWZmaXggJiYgIXRoaXMuY2hlY2tGaWxlVHlwZShmaWxlKSkge1xyXG4gICAgICBtZXNzYWdlLmVycm9yKFxyXG4gICAgICAgIGAke2ZpbGUubmFtZX3mlofku7bnsbvlnovkuI3lhYHorrjkuIrkvKDvvIzor7fkuIrkvKDlkI7nvIDkuLoke2FsbG93RmlsZVN1ZmZpeH3nmoTnsbvlnovmlofku7bvvIFgXHJcbiAgICAgICk7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIGlmIChtYXhTaXplICE9PSBmYWxzZSkge1xyXG4gICAgICBpZiAobWF4U2l6ZSA9PT0gdHJ1ZSkge1xyXG4gICAgICAgIG1heFNpemUgPSAxMDA7XHJcbiAgICAgIH1cclxuICAgICAgc2l6ZSA9IG1heFNpemUgKiAxMDI0ICogMTAyNDtcclxuICAgICAgaWYgKHNpemUgPCBmaWxlLnNpemUpIHtcclxuICAgICAgICBtZXNzYWdlLmVycm9yKGAke2ZpbGUubmFtZX3mlofku7blpKflsI/otoXov4cke21heFNpemV9Te+8jOivt+mHjeaWsOS4iuS8oO+8gWApO1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgbGV0IGZpbGVOYW1lcyA9IFtdO1xyXG4gICAgaWYgKGNoZWNrU2FtZUZpbGUpIHtcclxuICAgICAgY29uc3QgY2hlY2tMaXN0ID0gdGhpcy5wcm9wcy5maWxlTGlzdCA/IGZpbGVMaXN0U3RvcmUgOiBmaWxlTGlzdDtcclxuICAgICAgY2hlY2tMaXN0Lm1hcCgoaXRlbSkgPT4ge1xyXG4gICAgICAgIGZpbGVOYW1lcy5wdXNoKGl0ZW0ubmFtZSB8fCBpdGVtLmZpbGVOYW1lKTtcclxuICAgICAgfSk7XHJcblxyXG4gICAgICBpZiAoZmlsZU5hbWVzLmluZGV4T2YoZmlsZS5uYW1lKSA+IC0xICYmIHNob3dVcGxvYWRMaXN0ICE9PSBmYWxzZSkge1xyXG4gICAgICAgIG1lc3NhZ2UuZXJyb3IoYOaWh+S7tiR7ZmlsZS5uYW1lfeW3suWcqOS4iuS8oOWIl+ihqOS4re+8jOivt+mHjeaWsOmAieaLqeaWh+S7tu+8gWApO1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLnByb3BzLmJlZm9yZVVwbG9hZCkge1xyXG4gICAgICBjb25zdCByZXMgPSBhd2FpdCB0aGlzLnByb3BzLmJlZm9yZVVwbG9hZChmaWxlLCBvZmlsZUxpc3QpO1xyXG4gICAgICBpZiAocmVzID09PSBmYWxzZSkge1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgY29uc3QgbmV3TGlzdCA9IFsuLi5maWxlTGlzdF07XHJcbiAgICBvZmlsZUxpc3QubWFwKGFzeW5jIChpdGVtKSA9PiB7XHJcbiAgICAgIGlmIChcclxuICAgICAgICAhKFxyXG4gICAgICAgICAgKGFsbG93RmlsZVN1ZmZpeCAmJiAhdGhpcy5jaGVja0ZpbGVUeXBlKGl0ZW0pKSB8fFxyXG4gICAgICAgICAgc2l6ZSA8IGl0ZW0uc2l6ZSB8fFxyXG4gICAgICAgICAgKGNoZWNrU2FtZUZpbGUgJiYgZmlsZU5hbWVzLmluZGV4T2YoaXRlbS5uYW1lKSA+IC0xKVxyXG4gICAgICAgIClcclxuICAgICAgKSB7XHJcbiAgICAgICAgY29uc3QgdGVtcCA9IHtcclxuICAgICAgICAgIGZpbGVOYW1lOiBpdGVtLm5hbWUsXHJcbiAgICAgICAgICBwZXJjZW50OiAwLFxyXG4gICAgICAgICAgc3RhdHVzOiBcInVwbG9hZGluZ1wiLFxyXG4gICAgICAgICAgdWlkOiBpdGVtLnVpZCxcclxuICAgICAgICAgIG5hbWU6IGl0ZW0ubmFtZSxcclxuICAgICAgICAgIHR5cGU6IGl0ZW0udHlwZSxcclxuICAgICAgICAgIHNpemU6IGl0ZW0uc2l6ZSxcclxuICAgICAgICB9O1xyXG4gICAgICAgIG5ld0xpc3QucHVzaCh0ZW1wKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICBpZiAobWF4Q291bnQgJiYgbmV3TGlzdC5sZW5ndGggPiBtYXhDb3VudCkge1xyXG4gICAgICBuZXdMaXN0LnNwbGljZSgwLCAxKTtcclxuICAgIH1cclxuICB9XHJcbiAgY2hlY2tGaWxlVHlwZShmaWxlKSB7XHJcbiAgICBjb25zdCB7IGFsbG93RmlsZVN1ZmZpeCB9ID0gdGhpcy5wcm9wcztcclxuICAgIGNvbnN0IG5hbWVzID0gZmlsZS5uYW1lLnNwbGl0KFwiLlwiKTtcclxuICAgIGNvbnN0IHN1ZmZpeCA9IG5hbWVzW25hbWVzLmxlbmd0aCAtIDFdO1xyXG4gICAgaWYgKGFsbG93RmlsZVN1ZmZpeC5pbmRleE9mKHN1ZmZpeCkgPiAtMSkge1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcbiAgb25Qcm9jZXNzKHsgcGVyY2VudCwgZmlsZSB9OiBhbnkpIHtcclxuICAgIGNvbnN0IHsgZmlsZUxpc3QgfSA9IHRoaXMuc3RhdGU7XHJcbiAgICBjb25zdCBuZXdMaXN0OiBhbnkgPSBbXTtcclxuICAgIGZpbGVMaXN0Lm1hcCgoaXRlbTogYW55KSA9PiB7XHJcbiAgICAgIGNvbnN0IG5ld0ZpbGUgPSB7IC4uLml0ZW0gfTtcclxuICAgICAgaWYgKGZpbGUudWlkID09IGl0ZW0udWlkKSB7XHJcbiAgICAgICAgbmV3RmlsZS5wZXJjZW50ID0gcGVyY2VudDtcclxuICAgICAgfVxyXG4gICAgICBuZXdMaXN0LnB1c2gobmV3RmlsZSk7XHJcbiAgICB9KTtcclxuICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICBmaWxlTGlzdDogbmV3TGlzdCxcclxuICAgIH0pO1xyXG4gIH1cclxuICBvbkNvbXBsZXRlKGZpbGUpIHtcclxuICAgIGNvbnN0IHsgZmlsZUxpc3QgfSA9IHRoaXMuc3RhdGU7XHJcbiAgICBjb25zdCBuZXdMaXN0OiBhbnkgPSBbXTtcclxuICAgIGZpbGVMaXN0Lm1hcCgoaXRlbTogYW55KSA9PiB7XHJcbiAgICAgIGNvbnN0IG5ld0ZpbGUgPSB7IC4uLml0ZW0gfTtcclxuICAgICAgaWYgKGZpbGUuZmlsZS51aWQgPT0gaXRlbS51aWQpIHtcclxuICAgICAgICBuZXdGaWxlLnN0YXR1cyA9IGZpbGUuc3RhdHVzID09IFwic3VjY2Vzc1wiID8gXCJkb25lXCIgOiBmaWxlLnN0YXR1cztcclxuICAgICAgICBuZXdGaWxlLmZpbGVJZCA9IGZpbGUuZmlsZUlkO1xyXG4gICAgICAgIG5ld0ZpbGUudXJsID0gYC9hcGkvanF1aWNrLXJlc291cmNlL29zcy9lbmRwb2ludC9kb3dubG9hZC1maWxlcz9hdHRhY2hJZD0ke1xyXG4gICAgICAgICAgZmlsZS5maWxlSWRcclxuICAgICAgICB9Jl90cGs9JHt3aW5kb3cubG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJ0b2tlblwiKX1gO1xyXG4gICAgICB9XHJcbiAgICAgIG5ld0xpc3QucHVzaChuZXdGaWxlKTtcclxuICAgIH0pO1xyXG4gICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgIGZpbGVMaXN0OiBuZXdMaXN0LFxyXG4gICAgfSk7XHJcbiAgICBjb25zdCB7IG9uTGlzdENoYW5nZSB9ID0gdGhpcy5wcm9wcztcclxuICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICBmaWxlTGlzdDogZmlsZUxpc3QsXHJcbiAgICB9KTtcclxuICAgIG9uTGlzdENoYW5nZSAmJiBvbkxpc3RDaGFuZ2UobmV3TGlzdCk7XHJcbiAgfVxyXG4gIGN1c3RvbVJlcXVlc3QgPSBhc3luYyAob3B0aW9ucykgPT4ge1xyXG4gICAgY29uc3QgZmlsZSA9IG9wdGlvbnMuZmlsZTtcclxuICAgIGNvbnN0IHsgb25Db21wbGV0ZSwgb25Qcm9jZXNzLCBzbGljZVNpemUgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBjb25zdCBvblByb2dyZXNzID0gKHRvdGFsUHJvZ3Jlc3M6IGFueSkgPT4ge1xyXG4gICAgICBvcHRpb25zLm9uUHJvZ3Jlc3MoeyBwZXJjZW50OiB0b3RhbFByb2dyZXNzIH0sIGZpbGUpO1xyXG4gICAgICB0aGlzLm9uUHJvY2Vzcyh7IHBlcmNlbnQ6IHRvdGFsUHJvZ3Jlc3MsIGZpbGU6IGZpbGUgfSk7XHJcbiAgICAgIG9uUHJvY2VzcyAmJiBvblByb2Nlc3MoeyBwZXJjZW50OiB0b3RhbFByb2dyZXNzLCBmaWxlOiBmaWxlIH0pO1xyXG4gICAgfTtcclxuICAgIHRyeSB7XHJcbiAgICAgIGNvbnN0IHJlczogYW55ID0gYXdhaXQgdXBsb2FkKHtcclxuICAgICAgICBmaWxlOiBmaWxlLFxyXG4gICAgICAgIG9uUHJvZ3Jlc3M6IG9uUHJvZ3Jlc3MsXHJcbiAgICAgICAgcGFydFNpemU6IHNsaWNlU2l6ZSxcclxuICAgICAgfSk7XHJcbiAgICAgIGxldCBmaWxlSWQgPSBudWxsO1xyXG4gICAgICBpZiAocmVzLmNvZGUgPT0gMjAwKSB7XHJcbiAgICAgICAgZmlsZUlkID0gcmVzLmRhdGEuYXR0YWNoSWQ7XHJcbiAgICAgICAgb3B0aW9ucy5vblN1Y2Nlc3MoKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBvcHRpb25zLm9uRXJyb3IoKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLm9uQ29tcGxldGUoe1xyXG4gICAgICAgIGZpbGU6IG9wdGlvbnMuZmlsZSxcclxuICAgICAgICBmaWxlSWQ6IGZpbGVJZCxcclxuICAgICAgICBzdGF0dXM6IHJlcy5jb2RlID09IDIwMCA/IFwic3VjY2Vzc1wiIDogXCJlcnJvclwiLFxyXG4gICAgICB9KTtcclxuICAgICAgb25Db21wbGV0ZSAmJlxyXG4gICAgICAgIG9uQ29tcGxldGUoe1xyXG4gICAgICAgICAgZmlsZTogb3B0aW9ucy5maWxlLFxyXG4gICAgICAgICAgZmlsZUlkOiBmaWxlSWQsXHJcbiAgICAgICAgICBzdGF0dXM6IHJlcy5jb2RlID09IDIwMCA/IFwic3VjY2Vzc1wiIDogXCJlcnJvclwiLFxyXG4gICAgICAgIH0pO1xyXG4gICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICB0aGlzLm9uQ29tcGxldGUoe1xyXG4gICAgICAgIGZpbGU6IG9wdGlvbnMuZmlsZSxcclxuICAgICAgICBmaWxlSWQ6IFwiXCIsXHJcbiAgICAgICAgc3RhdHVzOiBcImVycm9yXCIsXHJcbiAgICAgIH0pO1xyXG4gICAgICBvbkNvbXBsZXRlICYmXHJcbiAgICAgICAgb25Db21wbGV0ZSh7IGZpbGU6IG9wdGlvbnMuZmlsZSwgZmlsZUlkOiBcIlwiLCBzdGF0dXM6IFwiZXJyb3JcIiB9KTtcclxuICAgICAgb3B0aW9ucy5vbkVycm9yKCk7XHJcbiAgICB9XHJcbiAgfTtcclxuICBvbkRlbGV0ZShmaWxlKSB7XHJcbiAgICBjb25zdCB7IGZpbGVMaXN0IH0gPSB0aGlzLnN0YXRlO1xyXG4gICAgY29uc3QgbmV3TGlzdDogYW55ID0gW107XHJcbiAgICBmaWxlTGlzdC5tYXAoKGl0ZW06IGFueSkgPT4ge1xyXG4gICAgICAvL+mAmui/h+aWh+S7tuWQjeWIpOaWre+8jOS4iuS8oOaYr+aWh+S7tuWQjeaYr+WUr+S4gOeahFxyXG4gICAgICBpZiAoXHJcbiAgICAgICAgaXRlbS5uYW1lICE9PSBmaWxlLm5hbWUgfHxcclxuICAgICAgICBpdGVtLmZpbGVJZCAhPT0gZmlsZS5maWxlSWQgfHxcclxuICAgICAgICBpdGVtLnVpZCAhPT0gZmlsZS51aWRcclxuICAgICAgKSB7XHJcbiAgICAgICAgbmV3TGlzdC5wdXNoKGl0ZW0pO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICBmaWxlTGlzdDogbmV3TGlzdCxcclxuICAgIH0pO1xyXG4gIH1cclxuICByZW5kZXIoKTogUmVhY3QuUmVhY3ROb2RlIHtcclxuICAgIGxldCB7XHJcbiAgICAgIGZpbGVMaXN0LFxyXG4gICAgICBmaWxlQ2FyZCxcclxuICAgICAgc2hvd1VwbG9hZExpc3QgPSB7XHJcbiAgICAgICAgc2hvd0Rvd25sb2FkSWNvbjogdHJ1ZSxcclxuICAgICAgICBzaG93UHJldmlld0ljb246IGZhbHNlLFxyXG4gICAgICAgIHNob3dSZW1vdmVJY29uOiB0cnVlLFxyXG4gICAgICAgIGRvd25sb2FkSWNvbjogbnVsbCxcclxuICAgICAgICByZW1vdmVJY29uOiBudWxsLFxyXG4gICAgICAgIHByZXZpZXdJY29uOiBudWxsLFxyXG4gICAgICB9IGFzIGFueSxcclxuICAgIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgY29uc3QgbmV3cHJvcHMgPSBvbWl0KHRoaXMucHJvcHMsIFtcclxuICAgICAgXCJzbGljZVNpemVcIixcclxuICAgICAgXCJtYXhTaXplXCIsXHJcbiAgICAgIFwib25Db21wbGV0ZVwiLFxyXG4gICAgICBcIm9uUHJvY2Vzc1wiLFxyXG4gICAgICBcImFsbG93RmlsZVN1ZmZpeFwiLFxyXG4gICAgICBcInVzZURlZmF1bHRMaXN0XCIsXHJcbiAgICAgIFwiZmlsZUNhcmRcIixcclxuICAgICAgXCJvbkxpc3RDaGFuZ2VcIixcclxuICAgIF0pO1xyXG4gICAgbGV0IGRlZmF1bHRQcm9wcyA9IHtcclxuICAgICAgY3VzdG9tUmVxdWVzdDogdGhpcy5jdXN0b21SZXF1ZXN0LmJpbmQodGhpcyksXHJcbiAgICAgIG11bHRpcGxlOiB0cnVlLFxyXG4gICAgfSBhcyBJVXBsb2FkUHJvcHM7XHJcbiAgICBpZiAoZmlsZUNhcmQpIHtcclxuICAgICAgZGVmYXVsdFByb3BzID0ge1xyXG4gICAgICAgIC4uLmRlZmF1bHRQcm9wcyxcclxuICAgICAgICBpdGVtUmVuZGVyOiAob3JpZ2luTm9kZSwgZmlsZTogYW55LCBjdXJyRmlsZUxpc3QpID0+IHtcclxuICAgICAgICAgIGNvbnN0IG5hbWUgPSBmaWxlLm5hbWUgfHwgZmlsZS5maWxlTmFtZTtcclxuICAgICAgICAgIGNvbnN0IG5hbWVzID0gbmFtZT8uc3BsaXQoXCIuXCIpO1xyXG4gICAgICAgICAgY29uc3Qgc3VmZml4ID0gbmFtZXMgPyBuYW1lc1tuYW1lcy5sZW5ndGggLSAxXSA6IFwiXCI7XHJcbiAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwiZmlsZS1pdGVtXCIpfT5cclxuICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2NscyhnZXRMZXNzKHN0eWxlcywgXCJjb250ZW50XCIpLCB7XHJcbiAgICAgICAgICAgICAgICAgIFtnZXRMZXNzKHN0eWxlcywgXCJjb250ZW50X2Vycm9yXCIpXTogZmlsZS5zdGF0dXMgPT0gXCJlcnJvclwiLFxyXG4gICAgICAgICAgICAgICAgfSl9XHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcIm1hcmstcGljdHVyZVwiKX0+XHJcbiAgICAgICAgICAgICAgICAgIDxGaWxlSWNvbiBzdWZmaXg9e3N1ZmZpeH0gZmlsZUlkPXtmaWxlLmZpbGVJZH0gLz5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcIm5hbWVcIil9PlxyXG4gICAgICAgICAgICAgICAgICB7ZmlsZS5uYW1lIHx8IGZpbGUuZmlsZU5hbWV9XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJpY29uXCIpfT5cclxuICAgICAgICAgICAgICAgICAge3Nob3dVcGxvYWRMaXN0LnNob3dQcmV2aWV3SWNvbiAmJiBmaWxlLnN0YXR1cyA9PSBcImRvbmVcIiAmJiAoXHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5wcm9wcy5vblByZXZpZXcpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnByb3BzLm9uUHJldmlldyhmaWxlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBwcmV2aWV3RG9jdW1lbnQoZmlsZS5maWxlSWQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3sgY3Vyc29yOiBcInBvaW50ZXJcIiB9fVxyXG4gICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgIHtzaG93VXBsb2FkTGlzdC5kb3dubG9hZEljb24gPyAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNob3dVcGxvYWRMaXN0LmRvd25sb2FkSWNvblxyXG4gICAgICAgICAgICAgICAgICAgICAgKSA6IChcclxuICAgICAgICAgICAgICAgICAgICAgICAgPEV5ZU91dGxpbmVkIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICAgICAgICB7c2hvd1VwbG9hZExpc3Quc2hvd0Rvd25sb2FkSWNvbiAmJiBmaWxlLnN0YXR1cyA9PSBcImRvbmVcIiAmJiAoXHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5wcm9wcy5vbkRvd25sb2FkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wcm9wcy5vbkRvd25sb2FkKGZpbGUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGRvd25sb2FkKGZpbGUuZmlsZUlkKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXt7IGN1cnNvcjogXCJwb2ludGVyXCIgfX1cclxuICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICB7c2hvd1VwbG9hZExpc3QuZG93bmxvYWRJY29uID8gKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzaG93VXBsb2FkTGlzdC5kb3dubG9hZEljb25cclxuICAgICAgICAgICAgICAgICAgICAgICkgOiAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxEb3dubG9hZE91dGxpbmVkIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICAgICAgICB7c2hvd1VwbG9hZExpc3Quc2hvd1JlbW92ZUljb24gJiYgKFxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMucHJvcHMub25SZW1vdmUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnByb3BzLm9uUmVtb3ZlKGZpbGUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMub25EZWxldGUoZmlsZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17eyBjdXJzb3I6IFwicG9pbnRlclwiIH19XHJcbiAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAge3Nob3dVcGxvYWRMaXN0LmRvd25sb2FkSWNvbiA/IChcclxuICAgICAgICAgICAgICAgICAgICAgICAgc2hvd1VwbG9hZExpc3QuZG93bmxvYWRJY29uXHJcbiAgICAgICAgICAgICAgICAgICAgICApIDogKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8RGVsZXRlT3V0bGluZWQgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICB7ZmlsZS5zdGF0dXMgPT0gXCJ1cGxvYWRpbmdcIiAmJiAoXHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwicHJvY2Vzc1wiKX0+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcInBlcmNlbnRcIil9XHJcbiAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3sgd2lkdGg6IGZpbGUucGVyY2VudCArIFwiJVwiIH19XHJcbiAgICAgICAgICAgICAgICAgID48L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9LFxyXG4gICAgICB9O1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgZGVmYXVsdFByb3BzID0ge1xyXG4gICAgICAgIC4uLmRlZmF1bHRQcm9wcyxcclxuICAgICAgICBvbkRvd25sb2FkOiAoZmlsZTogYW55KSA9PiB7XHJcbiAgICAgICAgICBkb3dubG9hZChmaWxlLmZpbGVJZCk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBvblJlbW92ZTogKGZpbGUpID0+IHtcclxuICAgICAgICAgIHRoaXMub25EZWxldGUoZmlsZSk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBvblByZXZpZXc6IChmaWxlOiBhbnkpID0+IHtcclxuICAgICAgICAgIGlmIChmaWxlPy5maWxlSWQpIHtcclxuICAgICAgICAgICAgcHJldmlld0RvY3VtZW50KGZpbGUuZmlsZUlkKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIHNob3dVcGxvYWRMaXN0OiB7IC4uLnNob3dVcGxvYWRMaXN0IH0sXHJcbiAgICAgIH07XHJcbiAgICB9XHJcbiAgICByZXR1cm4gKFxyXG4gICAgICA8PlxyXG4gICAgICAgIDxVcGxvYWRcclxuICAgICAgICAgIHsuLi5kZWZhdWx0UHJvcHN9XHJcbiAgICAgICAgICB7Li4ubmV3cHJvcHN9XHJcbiAgICAgICAgICBiZWZvcmVVcGxvYWQ9e3RoaXMuYmVmb3JlVXBsb2FkLmJpbmQodGhpcyl9XHJcbiAgICAgICAgICBmaWxlTGlzdD17ZmlsZUxpc3QgPyB0aGlzLnN0YXRlLmZpbGVMaXN0U3RvcmUgOiB0aGlzLnN0YXRlLmZpbGVMaXN0fVxyXG4gICAgICAgICAgb25DaGFuZ2U9eyh7IGZpbGUsIGZpbGVMaXN0IH0pID0+IHtcclxuICAgICAgICAgICAgY29uc3QgeyBvbkxpc3RDaGFuZ2UgfSA9IHRoaXMucHJvcHM7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgICAgIGZpbGVMaXN0OiBmaWxlTGlzdCxcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIG9uTGlzdENoYW5nZSAmJiBvbkxpc3RDaGFuZ2UoZmlsZUxpc3QpO1xyXG4gICAgICAgICAgfX1cclxuICAgICAgICAvPlxyXG4gICAgICA8Lz5cclxuICAgICk7XHJcbiAgfVxyXG59XHJcbmV4cG9ydCBkZWZhdWx0IHdpdGhaaExvY2FsZShOc2NVcGxvYWQpO1xyXG4iXX0=
|
|
@@ -4,7 +4,7 @@ var _excluded = ["children", "pageType", "onClick", "icon", "show"],
|
|
|
4
4
|
_excluded2 = ["children", "pageType", "onClick", "icon", "recordShow"],
|
|
5
5
|
_excluded3 = ["children", "pageType", "onClick", "recordShow", "icon", "show"],
|
|
6
6
|
_excluded4 = ["children", "pageType", "onClick", "recordShow", "icon"],
|
|
7
|
-
_excluded5 = ["store", "filterColumn", "actionColumn", "showRowSelection", "columnOrder", "rowSelection", "expandable"],
|
|
7
|
+
_excluded5 = ["store", "filterColumn", "actionColumn", "showRowSelection", "columnOrder", "rowSelection", "expandable", "parantSelect"],
|
|
8
8
|
_excluded6 = ["store", "showSearch", "titleAlias"];
|
|
9
9
|
|
|
10
10
|
function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
|
|
@@ -625,21 +625,31 @@ var BasePage = /*#__PURE__*/function (_PureComponent) {
|
|
|
625
625
|
_this$props$treeProps2 = _this$props$treeProps.searchKey,
|
|
626
626
|
searchKey = _this$props$treeProps2 === void 0 ? "key" : _this$props$treeProps2,
|
|
627
627
|
_this$props$treeProps3 = _this$props$treeProps.searchField,
|
|
628
|
-
searchField = _this$props$treeProps3 === void 0 ? "" : _this$props$treeProps3
|
|
628
|
+
searchField = _this$props$treeProps3 === void 0 ? "" : _this$props$treeProps3,
|
|
629
|
+
_this$props$treeProps4 = _this$props$treeProps.parantSelect,
|
|
630
|
+
parantSelect = _this$props$treeProps4 === void 0 ? true : _this$props$treeProps4;
|
|
629
631
|
var treeSelectedKey = this.state.treeSelectedKey;
|
|
630
632
|
var selected = obj.selected,
|
|
631
633
|
selectedNodes = obj.selectedNodes;
|
|
632
634
|
|
|
633
635
|
if (selected) {
|
|
634
|
-
|
|
635
|
-
|
|
636
|
-
|
|
636
|
+
keyword = selectedNodes[0].dataref.attribute[searchKey];
|
|
637
|
+
|
|
638
|
+
if (parantSelect) {
|
|
637
639
|
this.setState({
|
|
638
640
|
treeSelectedKey: selectedKeys[0],
|
|
639
641
|
treeSearchPrams: _defineProperty({}, searchField, keyword)
|
|
640
642
|
});
|
|
641
|
-
}
|
|
642
|
-
|
|
643
|
+
} else {
|
|
644
|
+
if (selectedNodes[0].isLeaf || !selectedNodes[0].children) {
|
|
645
|
+
if (selectedKeys[0] !== treeSelectedKey) {
|
|
646
|
+
this.setState({
|
|
647
|
+
treeSelectedKey: selectedKeys[0],
|
|
648
|
+
treeSearchPrams: _defineProperty({}, searchField, keyword)
|
|
649
|
+
});
|
|
650
|
+
}
|
|
651
|
+
}
|
|
652
|
+
}
|
|
643
653
|
} else {
|
|
644
654
|
this.setState({
|
|
645
655
|
treeSelectedKey: keyword,
|
|
@@ -750,6 +760,8 @@ var BasePage = /*#__PURE__*/function (_PureComponent) {
|
|
|
750
760
|
rowSelection = _tableProps$rowSelect === void 0 ? {} : _tableProps$rowSelect,
|
|
751
761
|
_tableProps$expandabl = tableProps.expandable,
|
|
752
762
|
expandable = _tableProps$expandabl === void 0 ? {} : _tableProps$expandabl,
|
|
763
|
+
_tableProps$parantSel = tableProps.parantSelect,
|
|
764
|
+
parantSelect = _tableProps$parantSel === void 0 ? true : _tableProps$parantSel,
|
|
753
765
|
othertableParams = _objectWithoutProperties(tableProps, _excluded5);
|
|
754
766
|
|
|
755
767
|
var _treeProps$store = treeProps.store,
|
|
@@ -1066,4 +1078,4 @@ var BasePage = /*#__PURE__*/function (_PureComponent) {
|
|
|
1066
1078
|
}(PureComponent);
|
|
1067
1079
|
|
|
1068
1080
|
export default BasePage;
|
|
1069
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL3BhZ2UvQmFzZVBhZ2UvaW5kZXgudHN4Il0sIm5hbWVzIjpbIlJlYWN0IiwiUHVyZUNvbXBvbmVudCIsIlRhYmxlIiwiVHJlZSIsIkJ1dHRvbiIsIk1vZGFsIiwiUG9wb3ZlciIsIm1lc3NhZ2UiLCJJY29uIiwiaWNvblR5cGUiLCJFZGl0b3JGb3JtIiwiY2xzIiwic3R5bGVzIiwidXRpbHMiLCJEb3duT3V0bGluZWQiLCJFeWVPdXRsaW5lZCIsIkVkaXRPdXRsaW5lZCIsIlJpZ2h0T3V0bGluZWQiLCJQbHVzT3V0bGluZWQiLCJFbGxpcHNpc091dGxpbmVkIiwiZ2V0TGVzcyIsInJlcXVlc3QiLCJvbWl0IiwiY29uZmlnIiwiZ2V0U3RvcmFnZSIsIkhlYWRlclNlYXJjaCIsIkJhc2VQYWdlIiwicHJvcHMiLCJjcmVhdGVSZWYiLCJjaGVja2VkVHJlZUtleXMiLCJzdGF0ZSIsIm5hbWUiLCJ1c2VyVHlwZSIsImFjY291bnQiLCJ2YWx1ZSIsImRlcHRJZCIsIm9uU2VhcmNoIiwic2VsZWN0ZWQiLCJyZXMiLCJrZXkiLCJrZXlzIiwibGVuZ3RoIiwic3RvcmVQcmVmaXgiLCJ0eXBlIiwiY29udGVudCIsInNpemUiLCJzZWxlY3RlZFJvd0tleXMiLCJzZWxlY3RlZFJvd0RhdGFzIiwidHJlZVNlbGVjdGVkS2V5IiwiZXhwYW5kIiwiZm9ybVR5cGUiLCJ0YWJsZVNpemUiLCJ0cmVlU2VhcmNoUHJhbXMiLCJpbml0RGF0YSIsInBhcmFtcyIsImNhbGxCYWNrIiwic2VhcmNoUmVmIiwiY3VycmVudCIsInNldFNlYXJjaFBhcmFtcyIsImVkaXRvcmZsYWciLCJlZGl0b3JSZWYiLCJzaG93IiwiaGlkZUZvcm0iLCJsb2FkaW5nIiwic2V0TG9hZGluZyIsImRlbGV0ZVVybCIsIm9uRGVsZXRlIiwiZGVsZXRlUGFyYW1zIiwid2FybmluZyIsIkVycm9yIiwiY29uZmlybSIsIm9uT2siLCJkZWZhdWx0UGFyYW1zIiwibWV0aG9kIiwiaWRzIiwiam9pbiIsInJlcXVlc3RQYXJhbXMiLCJ0aGVuIiwiY29kZSIsInN1Y2Nlc3MiLCJlcnJvciIsImNhdGNoIiwiY29uc29sZSIsImxvZyIsInRhYmxlUmVmIiwic3RvcmUiLCJsb2FkIiwib25DYWxsQmFja3MiLCJ0YWJsZUxvYWQiLCJvblNlYXJjaENhbGxCYWNrIiwiY2FsbGJhY2siLCJhdXRvTG9hZCIsInJlbG9hZCIsImRhdGEiLCJyZWNvcmRzIiwiY3VycmVudFBhZ2UiLCJyZWNvcmQiLCJ0YWJsZVByb3BzIiwicm93S2V5IiwibmV3U2VsZWN0ZWRSb3dLZXlzIiwibmV3U2VsZWN0ZWRSb3dEYXRhcyIsIm1hcCIsIml0ZW0iLCJpbmRleCIsInNwbGljZSIsInNldFN0YXRlIiwic2VsZWN0ZWRSb3dzIiwiY2hhbmdlUm93cyIsIm5ld2lkcyIsIm5ld2RhdGFzIiwiY2hhbmdlSWRzIiwiaW5kZXhPZiIsInB1c2giLCJzZWxlY3RlZFJvd0tleXNTdG9yZSIsInNlbGVjdGVkUm93RGF0YXNTdG9yZSIsImZyb21WYWx1ZSIsImdldFNlYXJjaFZhbHVlcyIsInJlc0tleSIsImNoaWxkTm9kZXMiLCJjaGlsZHJlbiIsImdldENoaWxkcmVuRGF0YSIsInRvb2xidXR0b25zIiwibWFyZ2luZmxhZyIsImZsYWciLCJzaG93U2VhcmNoIiwicGFnZVR5cGUiLCJvbkNsaWNrIiwiaWNvbiIsIm1hcmdpbkxlZnQiLCJjb2x1bW5CdXR0b25zIiwiZWRpdG9yRm9ybSIsImJ1dHRvbnMiLCJhY3Rpb25Qb3JwcyIsImJhc2VBY3Rpb25Db2x1bW4iLCJuZXdCdXR0b25zIiwic2hvd0ljb24iLCJyZWNvcmRTaG93IiwiZXZhbCIsInNlbGVjdGVkS2V5cyIsIm9iaiIsImtleXdvcmQiLCJ0cmVlUHJvcHMiLCJzZWFyY2hLZXkiLCJzZWFyY2hGaWVsZCIsInNlbGVjdGVkTm9kZXMiLCJkYXRhcmVmIiwiYXR0cmlidXRlIiwib25UcmVlU2VsZWN0IiwidHJlZVNlbGVjdENhbGxCYWNrIiwidGV4dCIsIm5ld1RleHQiLCJpIiwibGFiZWwiLCJzZXREYXRhIiwidHJlZVJlZiIsImNvbHVtbnMiLCJzdWJtaXRVcmwiLCJmb3JtUHJvcHMiLCJzaG93TGVmdCIsInN1Ym1pdFBhcmFtcyIsInNob3dUb29sQnV0dG9uIiwib25TaG93Rm9ybSIsImZvcm1DaGFuZ2VWYWxpZCIsImNsYXNzTmFtZSIsInRvb2xCdXR0b25Qb3NpdGlvbiIsImZpbHRlckNvbHVtbiIsImFjdGlvbkNvbHVtbiIsInNob3dSb3dTZWxlY3Rpb24iLCJjb2x1bW5PcmRlciIsInJvd1NlbGVjdGlvbiIsImV4cGFuZGFibGUiLCJvdGhlcnRhYmxlUGFyYW1zIiwidHJlZVN0b3JlIiwidHJlZVNlYXJjaCIsInRpdGxlQWxpYXMiLCJvdGhlcnRyZWVQYXJhbXMiLCJ0YWJsZVBhcmFtcyIsIm9uU2VsZWN0Iiwicm93U2VsZWN0aW9uT25TZWxlY3QiLCJiaW5kIiwib25TZWxlY3RBbGwiLCJyb3dTZWxlY3Rpb25PblNlbGVjdEFsbCIsImNvbHVtbldpZHRoIiwidGFibGVDb2x1bW4iLCJzZWFyY2hGb3JtcyIsImVkaXRvckZvcm1zIiwiZGVmYXVsdFZhbHVlIiwidGVtcCIsInNlYXJjaCIsImZpZWxkIiwiZGF0YUluZGV4IiwidGl0bGUiLCJsYWJlbENvbCIsIndyYXBwZXJDb2wiLCJlZGl0b3IiLCJydWxlcyIsInNwYW4iLCJkaWN0TmFtZSIsInVuZGVmaW5lZCIsImNvbHVtblNlYXJjaCIsImZpbHRlclByb3BzIiwidGVtcFByb3AiLCJzdHlsZSIsInJlbmRlciIsImdldFRleHQiLCJlbGxpcHNpcyIsImNvbHVtblNob3ciLCJzZWxmQnV0dG9ucyIsInNob3dGb3JtIiwiZGVsZXRlMyIsIkFycmF5IiwiaXNBcnJheSIsImFsaWduIiwidGV4dEFsaWduIiwid2lkdGgiLCJmaXhlZCIsInJlbmRlckNsb3VtbkJ1dHRvbiIsInJlYWNvcmQiLCJzZWFyY2hGbGFnIiwidG9vbEZsYWciLCJwYWdpbmF0aW9uIiwic2Nyb2xsIiwieCIsInRhYmxlVG9vbCIsInBhZ2VUaXRsZSIsImRpc3BsYXkiLCJ0cmVlU2VsZWN0Iiwib25SZXNldCIsInNlYXJjaEZvcm1Qcm9wcyIsInJlbmRlclRvb2xCdXR0b25zIiwidG9vbGJhciIsInRvb2xzIiwiZXhwYW5kSWNvbiIsImV4cGFuZGVkIiwib25FeHBhbmQiLCJlIiwib25Ub29sQ2xpY2siLCJvblJlZnJlc2giLCJ0YWJsZVJlbG9hZCIsIm9uU3VibWl0Iiwib25IaWRlRm9ybSIsIm9uRm9ybUNoYW5nZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxPQUFPQSxLQUFQLElBQWdCQyxhQUFoQixRQUFnRCxPQUFoRDtBQUNBLE9BQU9DLEtBQVAsTUFBa0Isa0JBQWxCO0FBQ0EsT0FBT0MsSUFBUCxNQUFpQixpQkFBakI7QUFFQSxPQUFPQyxNQUFQLE1BQW1CLG1CQUFuQjtBQUNBLE9BQU9DLEtBQVAsTUFBa0Isa0JBQWxCO0FBQ0EsT0FBT0MsT0FBUCxNQUFvQixvQkFBcEI7QUFDQSxPQUFPQyxPQUFQLE1BQW9CLG9CQUFwQjtBQUNBLE9BQU9DLElBQVAsTUFBaUIsNEJBQWpCO0FBQ0EsU0FBU0MsUUFBVCxRQUF5QixpQkFBekI7QUFDQSxPQUFPQyxVQUFQLE1BQXVCLFFBQXZCO0FBQ0EsT0FBT0MsR0FBUCxNQUFnQixZQUFoQjtBQUNBLE9BQU9DLE1BQVAsTUFBbUIscUJBQW5CO0FBR0EsU0FBU0MsS0FBVCxRQUFzQix1QkFBdEI7QUFDQSxTQUNFQyxZQURGLEVBRUVDLFdBRkYsRUFHRUMsWUFIRixFQUlFQyxhQUpGLEVBS0VDLFlBTEYsRUFNRUMsZ0JBTkYsUUFPTyxtQkFQUDtBQVFBLFNBQVNDLE9BQVQsUUFBaUMsYUFBakM7QUFDQSxPQUFPQyxPQUFQLE1BQW9CLGFBQXBCO0FBQ0EsT0FBT0MsSUFBUCxNQUFpQixTQUFqQjtBQUNBLE9BQU9DLE1BQVAsTUFBbUIsY0FBbkI7QUFDQSxTQUFTQyxVQUFULFFBQTJCLG1CQUEzQjtBQUVBLE9B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LFNBakNIO0FBa0NFLFFBQUEsT0FBTztBQUNMbUwsVUFBQUEsV0FBVyxFQUFFO0FBQ1hDLFlBQUFBLFNBQVMsRUFBRSxxQkFBTTtBQUNmLGtCQUFNdkwsTUFBTSxHQUFHLE1BQUksQ0FBQzhELGVBQUwsRUFBZjs7QUFDQSxjQUFBLE1BQUksQ0FBQzVCLFNBQUwsQ0FBZWxDLE1BQWY7QUFDRDtBQUpVO0FBRFIsV0FPRjJDLFVBQVUsQ0FBQ3FJLE9BUFQ7QUFsQ1QsU0EyQ010RCxXQTNDTixFQVRGLENBcEJGLENBbEJGLEVBOEZHOUMsVUFBVSxpQkFDVCxvQkFBQyxVQUFEO0FBQ0UsUUFBQSxHQUFHLEVBQUUsS0FBS3RFLFNBRFo7QUFFRSxRQUFBLFFBQVEsRUFBRSxLQUFLa0wsV0FBTCxDQUFpQjNELElBQWpCLENBQXNCLElBQXRCLENBRlo7QUFHRSxRQUFBLFNBQVMsRUFBRU0sV0FIYjtBQUlFLFFBQUEsU0FBUyxFQUFFN0IsU0FKYjtBQUtFLFFBQUEsWUFBWSxFQUFFRyxZQUxoQjtBQU1FLFFBQUEsUUFBUSxFQUFFLEtBQUtwSSxLQUFMLENBQVdvTixRQU52QjtBQU9FLFFBQUEsWUFBWSxFQUFFckQsWUFQaEI7QUFRRSxRQUFBLFVBQVUsRUFBRSxLQUFLL0osS0FBTCxDQUFXcU4sVUFSekI7QUFTRSxRQUFBLFlBQVksRUFBRSxLQUFLck4sS0FBTCxDQUFXc04sWUFUM0I7QUFVRSxRQUFBLFFBQVEsRUFBRSxLQUFLdE4sS0FBTCxDQUFXdUIsUUFBWCxJQUF1QixNQVZuQztBQVdFLFFBQUEsV0FBVyxFQUFFZ0gsZUFYZjtBQVlFLFFBQUEsVUFBVSxvQkFBT0wsU0FBUDtBQVpaLFFBL0ZKLENBTkYsQ0FERjtBQXdIRDs7OztFQTUxQm9CNUosYTs7QUE4MUJ2QixlQUFleUIsUUFBZiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwgeyBQdXJlQ29tcG9uZW50LCBSZWFjdE5vZGUgfSBmcm9tIFwicmVhY3RcIjtcclxuaW1wb3J0IFRhYmxlIGZyb20gXCIuLi8uLi9iYXNlL3RhYmxlXCI7XHJcbmltcG9ydCBUcmVlIGZyb20gXCIuLi8uLi9iYXNlL3RyZWVcIjtcclxuaW1wb3J0IEZvcm0gZnJvbSBcIi4uLy4uL2Jhc2UvZm9ybVwiO1xyXG5pbXBvcnQgQnV0dG9uIGZyb20gXCIuLi8uLi9iYXNlL2J1dHRvblwiO1xyXG5pbXBvcnQgTW9kYWwgZnJvbSBcIi4uLy4uL2Jhc2UvbW9kYWxcIjtcclxuaW1wb3J0IFBvcG92ZXIgZnJvbSBcIi4uLy4uL2Jhc2UvcG9wb3ZlclwiO1xyXG5pbXBvcnQgbWVzc2FnZSBmcm9tIFwiLi4vLi4vYmFzZS9tZXNzYWdlXCI7XHJcbmltcG9ydCBJY29uIGZyb20gXCIuLi8uLi9iYXNlL2NvbW1vbi9JY29uRm9udFwiO1xyXG5pbXBvcnQgeyBpY29uVHlwZSB9IGZyb20gXCIuLi8uLi9jb25zdGFudHNcIjtcclxuaW1wb3J0IEVkaXRvckZvcm0gZnJvbSBcIi4vRm9ybVwiO1xyXG5pbXBvcnQgY2xzIGZyb20gXCJjbGFzc25hbWVzXCI7XHJcbmltcG9ydCBzdHlsZXMgZnJvbSBcIi4vaW5kZXgubW9kdWxlLmxlc3NcIjtcclxuaW1wb3J0IFN0b3JlLCB7IFBhZ2VTdG9yZSwgU3RvcmVQcm9wcyB9IGZyb20gXCJAYmotbnNjL21zblwiO1xyXG5pbXBvcnQgUm93IGZyb20gXCIuLi8uLi9iYXNlL2dyaWQvUm93XCI7XHJcbmltcG9ydCB7IHV0aWxzIH0gZnJvbSBcIkBiai1uc2MvbXNuL2xpYi91dGlsc1wiO1xyXG5pbXBvcnQge1xyXG4gIERvd25PdXRsaW5lZCxcclxuICBFeWVPdXRsaW5lZCxcclxuICBFZGl0T3V0bGluZWQsXHJcbiAgUmlnaHRPdXRsaW5lZCxcclxuICBQbHVzT3V0bGluZWQsXHJcbiAgRWxsaXBzaXNPdXRsaW5lZCxcclxufSBmcm9tIFwiQGFudC1kZXNpZ24vaWNvbnNcIjtcclxuaW1wb3J0IHsgZ2V0TGVzcywgZ2V0Tm9kZSB9IGZyb20gXCIuLi8uLi91dGlsc1wiO1xyXG5pbXBvcnQgcmVxdWVzdCBmcm9tIFwibnNjLXJlcXVlc3RcIjtcclxuaW1wb3J0IG9taXQgZnJvbSBcIm9taXQuanNcIjtcclxuaW1wb3J0IGNvbmZpZyBmcm9tIFwiLi4vLi4vY29uZmlnXCI7XHJcbmltcG9ydCB7IGdldFN0b3JhZ2UgfSBmcm9tIFwiQGJqLW5zYy9mdW5jdGlvbnNcIjtcclxuaW1wb3J0IHsgSUZvcm1Qcm9wcyB9IGZyb20gXCIuLi8uLi9iYXNlL2Zvcm0vRm9ybVwiO1xyXG5pbXBvcnQgSGVhZGVyU2VhcmNoIGZyb20gXCIuLi9IZWFkZXJTZWFyY2hcIjtcclxuaW50ZXJmYWNlIFRhYmxlUHJvcHMge1xyXG4gIGFjdGlvbkNvbHVtbj86IGJvb2xlYW47IC8v5piv5ZCm5pi+56S65pON5L2c5YiXXHJcbiAgc3RvcmU/OiBTdG9yZVByb3BzO1xyXG4gIGZpbHRlckNvbHVtbj86IGJvb2xlYW47IC8v5piv5ZCm5pi+56S66L+H5ruk5oyJ6ZKuXHJcbiAgc2hvd1Jvd1NlbGVjdGlvbj86IGJvb2xlYW47IC8v5piv5ZCm6KGo5qC85Yu+6YCJ5YiXXHJcbiAgcGFnaW5hdGlvbj86IGJvb2xlYW47IC8v5piv5ZCm5pi+56S65YiG6aG1XHJcbiAgY29sdW1uT3JkZXI/OiBib29sZWFuOyAvL+aYr+WQpuaYvuekuuihqOagvOW6j+WIl1xyXG4gIFtwcm9wc05hbWU6IHN0cmluZ106IGFueTtcclxufVxyXG5pbnRlcmZhY2UgVHJlZVByb3BzIHtcclxuICBzdG9yZT86IFN0b3JlUHJvcHM7XHJcbiAgc2hvd1NlYXJjaD86IGJvb2xlYW47IC8v5piv5ZCm5pi+56S65pCc57Si5qGGXHJcbiAgc2VhcmNoS2V5Pzogc3RyaW5nOyAvL+aQnOe0onZhbHVl5a+55bqU55qEa2V5XHJcbiAgc2VhcmNoRmllbGQ/OiBzdHJpbmc7IC8v5p+l6K+i5a+55bqU55qEa2V5XHJcbiAgdGl0bGVBbGlhcz86IHN0cmluZzsgLy/moJF0aXRsZeWvueW6lOeahGtleSzpu5jorqR0aXRsZVxyXG4gIG5vZGVQb3Jwcz86IG9iamVjdDtcclxuICBbcHJvcHNOYW1lOiBzdHJpbmddOiBhbnk7XHJcbn1cclxuaW50ZXJmYWNlIEZvcm1Qcm9wcyBleHRlbmRzIElGb3JtUHJvcHMge31cclxuaW50ZXJmYWNlIE5TQ0Jhc2VCYWdlUHJvcHMge1xyXG4gIHNob3dTZWFyY2g/OiBib29sZWFuOyAvL+aYr+WQpuaYvuekuuWktOmDqOaQnOe0ouagj1xyXG4gIHRhYmxlUHJvcHM/OiBUYWJsZVByb3BzOyAvL+ihqOagvOWPguaVsFxyXG4gIHRyZWVQcm9wcz86IFRyZWVQcm9wczsgLy/lt6bkvqfmoJHlj4LmlbBcclxuICBzdWJtaXRQYXJhbXM/OiBPYmplY3Q7IC8v5re75Yqg5Y+C5pWw77yM6buY6K6kbW90aG9kOnBvc3TvvIwg5Y+C5pWw6YCa6L+HZGF0YeS8oOmAklxyXG4gIHN1Ym1pdFVybD86IHN0cmluZztcclxuICBvblN1Ym1pdD86ICh2YWx1ZT86IGFueSwgbGFiZWw/OiBhbnkpID0+IHZvaWQ7XHJcbiAgY29sdW1uczogQXJyYXk8T2JqZWN0PjtcclxuICBzaG93TGVmdD86IGJvb2xlYW47IC8v5piv5ZCm5pi+56S65bem5L6n55uu5b2V5qCRXHJcbiAgc2hvd1Rvb2xCdXR0b24/OiBib29sZWFuOyAvL+aYr+WQpuaYvuekuuaMiemSruagj1xyXG4gIGVkaXRvckZvcm0/OiBib29sZWFuOyAvL+aYr+WQpumcgOimgeihqOWNleWKn+iDvSAsIOS4umZhbHNlIOe8lui+ke+8jOafpeeci++8jOaWsOWinuWKn+iDveWdh+S4jeWPr+eUqFxyXG4gIGRlbGV0ZVVybD86IHN0cmluZzsgLy/liKDpmaR1cmxcclxuICBvbkRlbGV0ZT86IChzZWxlY3RlZEtleXM/OiBBcnJheTxhbnk+KSA9PiB2b2lkOyAvL+WIoOmZpOWPguaVsO+8jOm7mOiupG1vdGhvZDpwb3N077yMIOWPguaVsOmAmui/h2lkc+aLvOaOpeS8oOmAkue7meWQjuWPsFxyXG4gIGRlbGV0ZVBhcmFtcz86IE9iamVjdDtcclxuICBjaGlsZHJlbj86IFJlYWN0LlJlYWN0Tm9kZTtcclxuICBvblNlYXJjaD86ICh2YWx1ZT86IGFueSkgPT4gdm9pZDtcclxuICBvblJlc2V0PzogKCkgPT4gdm9pZDtcclxuICBpbml0RGF0YT86IGFueTsgLy/liJ3lp4vljJblm57osIPlh73mlbDvvIzlnKhjb21wb25lbnREaWRNb3VudOS4reiwg+eUqFxyXG4gIGJ1dHRvbnM/OiBBcnJheTxzdHJpbmc+OyAvL+aMiemSrumbhuWQiCAgWydhZGQnLCdkZWxldGUnLCdzZWFyY2gnLCdlZGl0b3InXVxyXG4gIG9uU2hvd0Zvcm0/OiAodmFsdWU/OiBhbnksIGVkaXRvckZsYWc/OiBzdHJpbmcpID0+IHZvaWQ7IC8v5omT5byA6KGo5Y2V5Zue6LCDXHJcbiAgb25IaWRlRm9ybT86ICgpID0+IHZvaWQ7IC8v5omT5byA6KGo5Y2V5Zue6LCDXHJcbiAgb25Gb3JtQ2hhbmdlPzogKGNoYW5nZWRWYWx1ZXM/OiBhbnksIGFsbFZhbHVlcz86IGFueSkgPT4gdm9pZDsgLy/ooajljZVvbkNoYW5nZeWbnuiwg1xyXG4gIGZvcm1UeXBlPzogXCJtb2RhbFwiIHwgXCJkcmF3ZXJcIjtcclxuICBmb3JtQ2hhbmdlVmFsaWQ/OiBib29sZWFuOyAvL+ihqOWNleagoemqjFxyXG4gIGNsYXNzTmFtZT86IGFueTtcclxuICB0b29sQnV0dG9uUG9zaXRpb24/OiBcInJpZ2h0XCIgfCBcImJ1dHRvbVwiO1xyXG4gIHBhZ2VUaXRsZT86IHN0cmluZyB8IFJlYWN0Tm9kZTtcclxuICBmb3JtUHJvcHM/OiBGb3JtUHJvcHM7XHJcbiAgYWN0aW9uUG9ycHM/OiB7IHRleHRBbGlnbj86IHN0cmluZzsgc2hvd0ljb24/OiBib29sZWFuOyB3aWR0aD86IG51bWJlciB9O1xyXG4gIHNlYXJjaEZvcm1Qcm9wcz86IHsgd3JhcHBlckNvbD86IGFueTsgbGFiZWxDb2w/OiBhbnkgfTtcclxuICBvblRyZWVTZWxlY3Q/OiAodmFsdWU/OiBhbnksIGVkaXRvckZsYWc/OiBzdHJpbmcpID0+IHZvaWQ7IC8v5omT5byA6KGo5Y2V5Zue6LCDXHJcbiAgb25DYWxsQmFja3M/OiB7XHJcbiAgICB0cmVlU2VsZWN0Q2FsbEJhY2s/OiBhbnk7XHJcbiAgICBvblNlYXJjaENhbGxCYWNrPzogYW55O1xyXG4gIH07XHJcbn1cclxuXHJcbmNsYXNzIEJhc2VQYWdlIGV4dGVuZHMgUHVyZUNvbXBvbmVudDxOU0NCYXNlQmFnZVByb3BzLCBhbnk+IHtcclxuICB0YWJsZVJlZiA9IFJlYWN0LmNyZWF0ZVJlZjxhbnk+KCk7XHJcbiAgdHJlZVJlZiA9IFJlYWN0LmNyZWF0ZVJlZjxhbnk+KCk7XHJcbiAgc2VhcmNoUmVmID0gUmVhY3QuY3JlYXRlUmVmPGFueT4oKTtcclxuICBlZGl0b3JSZWYgPSBSZWFjdC5jcmVhdGVSZWY8YW55PigpO1xyXG4gIGRhdGVGb3JtYXQgPSB7fSBhcyBhbnk7XHJcbiAgY29uc3RydWN0b3IocHJvcHM6IGFueSkge1xyXG4gICAgc3VwZXIocHJvcHMpO1xyXG4gICAgbGV0IHsgc3RvcmVQcmVmaXggfSA9IGNvbmZpZygpO1xyXG4gICAgbGV0IHR5cGUgPSBnZXRTdG9yYWdlKFxyXG4gICAgICBzdG9yZVByZWZpeCA/IHN0b3JlUHJlZml4ICsgXCItXCIgKyBcImZvcm1UeXBlXCIgOiBcImZvcm1UeXBlXCJcclxuICAgICk7XHJcbiAgICB0eXBlID0gdHlwZT8uY29udGVudDtcclxuICAgIGxldCBzaXplID0gZ2V0U3RvcmFnZShcclxuICAgICAgc3RvcmVQcmVmaXggPyBzdG9yZVByZWZpeCArIFwiLVwiICsgXCJ0YWJsZVNpemVcIiA6IFwidGFibGVTaXplXCJcclxuICAgICk7XHJcbiAgICBzaXplID0gc2l6ZT8uY29udGVudDtcclxuICAgIHRoaXMuc3RhdGUgPSB7XHJcbiAgICAgIHR5cGU6IFwiYWRkXCIsXHJcbiAgICAgIHNlbGVjdGVkUm93S2V5czogW10sXHJcbiAgICAgIHNlbGVjdGVkUm93RGF0YXM6IFtdLFxyXG4gICAgICB0cmVlU2VsZWN0ZWRLZXk6IFwiXCIsXHJcbiAgICAgIGV4cGFuZDogZmFsc2UsXHJcbiAgICAgIGZvcm1UeXBlOiB0eXBlIHx8IFwibW9kYWxcIixcclxuICAgICAgdGFibGVTaXplOiBzaXplIHx8IFwiZGVmYXVsdFwiLFxyXG4gICAgICB0cmVlU2VhcmNoUHJhbXM6IHt9LFxyXG4gICAgfTtcclxuICB9XHJcbiAgY29tcG9uZW50RGlkTW91bnQoKSB7XHJcbiAgICBjb25zdCB7IGluaXREYXRhIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgaW5pdERhdGEgJiYgaW5pdERhdGEoKTtcclxuICB9XHJcblxyXG4gIHNldFNlYXJjaFBhcmFtcyhwYXJhbXMsIGNhbGxCYWNrKSB7XHJcbiAgICB0aGlzLnNlYXJjaFJlZi5jdXJyZW50Py5zZXRTZWFyY2hQYXJhbXMocGFyYW1zKTtcclxuICAgIGNhbGxCYWNrICYmIGNhbGxCYWNrKHBhcmFtcyk7XHJcbiAgfVxyXG5cclxuICBvblNlbGVjdCA9IChjaGVja2VkVHJlZUtleXM6IGFueSkgPT4ge1xyXG4gICAgY29uc3QgeyBuYW1lLCB1c2VyVHlwZSwgYWNjb3VudCB9ID0gdGhpcy5zdGF0ZTtcclxuICAgIGNvbnN0IHZhbHVlID0geyBuYW1lLCB1c2VyVHlwZSwgYWNjb3VudCwgZGVwdElkOiBjaGVja2VkVHJlZUtleXNbMF0gfTtcclxuICAgIGlmICh0aGlzLnByb3BzLm9uU2VhcmNoKSB7XHJcbiAgICAgIHRoaXMucHJvcHMub25TZWFyY2godmFsdWUpO1xyXG4gICAgfVxyXG4gICAgLy8gdGhpcy50YWJsZUxvYWQodmFsdWUpO1xyXG4gIH07XHJcblxyXG4gIC8v5pi+56S66KGo5Y2VXHJcbiAgc2hvd0Zvcm0odmFsdWU/OiBhbnksIGVkaXRvcmZsYWcgPSBcImFkZFwiKSB7XHJcbiAgICB0aGlzLmVkaXRvclJlZi5jdXJyZW50Py5zaG93KHZhbHVlLCBlZGl0b3JmbGFnKTtcclxuICB9XHJcblxyXG4gIC8v5YWz6Zet6KGo5Y2VXHJcbiAgaGlkZUZvcm0oKSB7XHJcbiAgICB0aGlzLmVkaXRvclJlZi5jdXJyZW50Py5oaWRlRm9ybSgpO1xyXG4gIH1cclxuXHJcbiAgc2V0TG9hZGluZyhsb2FkaW5nOiBib29sZWFuKSB7XHJcbiAgICB0aGlzLmVkaXRvclJlZi5jdXJyZW50Py5zZXRMb2FkaW5nKGxvYWRpbmcpO1xyXG4gIH1cclxuXHJcbiAgLy/mibnph4/liKDpmaRcclxuICBvbkRlbGV0ZSgpIHtcclxuICAgIGNvbnN0IHsgZGVsZXRlVXJsLCBvbkRlbGV0ZSwgZGVsZXRlUGFyYW1zIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgY29uc3QgeyBzZWxlY3RlZFJvd0tleXMgfSA9IHRoaXMuc3RhdGU7XHJcbiAgICBpZiAoc2VsZWN0ZWRSb3dLZXlzLmxlbmd0aCA9PSAwKSB7XHJcbiAgICAgIG1lc3NhZ2Uud2FybmluZyhcIuivt+mAieaLqeimgeWIoOmZpOeahOaVsOaNru+8gVwiKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgaWYgKG9uRGVsZXRlKSB7XHJcbiAgICAgIG9uRGVsZXRlICYmIG9uRGVsZXRlKHNlbGVjdGVkUm93S2V5cyk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGlmICghZGVsZXRlVXJsKSB7XHJcbiAgICAgIHRocm93IG5ldyBFcnJvcihcInVybOS4jeiDveS4uuepuu+8gVwiKTtcclxuICAgIH1cclxuICAgIE1vZGFsLmNvbmZpcm0oe1xyXG4gICAgICBjb250ZW50OiBcIuaYr+WQpuehruiupOWIoOmZpOaJgOmAiemhue+8n1wiLFxyXG4gICAgICAvLyBjZW50ZXJlZDp0cnVlLFxyXG4gICAgICBvbk9rOiAoKSA9PiB7XHJcbiAgICAgICAgY29uc3QgZGVmYXVsdFBhcmFtcyA9IHtcclxuICAgICAgICAgIG1ldGhvZDogXCJwb3N0XCIsXHJcbiAgICAgICAgICBwYXJhbXM6IHsgaWRzOiBzZWxlY3RlZFJvd0tleXMuam9pbigpIH0sXHJcbiAgICAgICAgfTtcclxuICAgICAgICBsZXQgcmVxdWVzdFBhcmFtcyA9IHt9IGFzIGFueTtcclxuICAgICAgICBpZiAoZGVmYXVsdFBhcmFtcykge1xyXG4gICAgICAgICAgcmVxdWVzdFBhcmFtcyA9IHsgLi4uZGVsZXRlUGFyYW1zIH07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJlcXVlc3RQYXJhbXMgPSB7IC4uLmRlZmF1bHRQYXJhbXMgfTtcclxuICAgICAgICByZXF1ZXN0KGRlbGV0ZVVybCwge1xyXG4gICAgICAgICAgLi4ucmVxdWVzdFBhcmFtcyxcclxuICAgICAgICB9KVxyXG4gICAgICAgICAgLnRoZW4oZnVuY3Rpb24gKHJlczogYW55KSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHsgY29kZSB9ID0gcmVzO1xyXG4gICAgICAgICAgICBpZiAoY29kZSA9PT0gMjAwKSB7XHJcbiAgICAgICAgICAgICAgbWVzc2FnZS5zdWNjZXNzKFwi5Yig6Zmk5oiQ5Yqf77yBXCIpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIG1lc3NhZ2UuZXJyb3IoXCLliKDpmaTlpLHotKXvvIFcIik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgICAuY2F0Y2goZnVuY3Rpb24gKGVycm9yOiBhbnkpIHtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coXCJlcnJvclwiLCBlcnJvcik7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgfSxcclxuICAgIH0pO1xyXG4gIH1cclxuICB0YWJsZUxvYWQocGFyYW1zOiBhbnkpIHtcclxuICAgIHRoaXMudGFibGVSZWYuY3VycmVudD8uc3RvcmUubG9hZCh7XHJcbiAgICAgIHBhcmFtczogcGFyYW1zLFxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIC8v5p+l6K+iXHJcbiAgb25TZWFyY2gocGFyYW1zKSB7XHJcbiAgICBjb25zdCB7IG9uU2VhcmNoLCBvbkNhbGxCYWNrcyB9ID0gdGhpcy5wcm9wcztcclxuICAgIGlmIChvblNlYXJjaCkge1xyXG4gICAgICBvblNlYXJjaCh7IC4uLnBhcmFtcywgLi4udGhpcy5zdGF0ZS50cmVlU2VhcmNoUHJhbXMgfSk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMudGFibGVMb2FkKHsgLi4ucGFyYW1zLCAuLi50aGlzLnN0YXRlLnRyZWVTZWFyY2hQcmFtcyB9KTtcclxuICAgIG9uQ2FsbEJhY2tzPy5vblNlYXJjaENhbGxCYWNrICYmXHJcbiAgICAgIHV0aWxzLmNhbGxiYWNrKG9uQ2FsbEJhY2tzPy5vblNlYXJjaENhbGxCYWNrLCB0aGlzLCBbcGFyYW1zXSk7XHJcbiAgfVxyXG4gIC8v6KGo5qC86YeN5paw5Yqg6L29XHJcbiAgdGFibGVSZWxvYWQocGFyYW1zID0ge30sIGF1dG9Mb2FkID0gdHJ1ZSkge1xyXG4gICAgdGhpcy50YWJsZVJlZi5jdXJyZW50Py5zdG9yZS5yZWxvYWQoe1xyXG4gICAgICBjYWxsYmFjazogKHJlcykgPT4ge1xyXG4gICAgICAgIGlmIChcclxuICAgICAgICAgIGF1dG9Mb2FkICYmXHJcbiAgICAgICAgICByZXM/LmRhdGE/LnJlY29yZHM/Lmxlbmd0aCA9PSAwICYmXHJcbiAgICAgICAgICB0aGlzLnN0YXRlLmN1cnJlbnRQYWdlICE9PSAxXHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICB0aGlzLnRhYmxlUmVmLmN1cnJlbnQ/LnN0b3JlLnJlbG9hZCh7XHJcbiAgICAgICAgICAgIHBhcmFtczogeyBjdXJyZW50OiAxLCAuLi5wYXJhbXMgfSxcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfSxcclxuICAgIH0pO1xyXG4gIH1cclxuICByb3dTZWxlY3Rpb25PblNlbGVjdChyZWNvcmQ6IGFueSwgc2VsZWN0ZWQ6IGFueSkge1xyXG4gICAgY29uc3QgeyBzZWxlY3RlZFJvd0tleXMsIHNlbGVjdGVkUm93RGF0YXMgfSA9IHRoaXMuc3RhdGU7XHJcbiAgICBjb25zdCB7IHRhYmxlUHJvcHMgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBjb25zdCB7IHJvd0tleSA9IFwiaWRcIiB9ID0gdGFibGVQcm9wcztcclxuICAgIGxldCBuZXdTZWxlY3RlZFJvd0tleXMgPSBbLi4uc2VsZWN0ZWRSb3dLZXlzXTtcclxuICAgIGxldCBuZXdTZWxlY3RlZFJvd0RhdGFzID0gWy4uLnNlbGVjdGVkUm93RGF0YXNdO1xyXG4gICAgaWYgKHNlbGVjdGVkKSB7XHJcbiAgICAgIG5ld1NlbGVjdGVkUm93S2V5cyA9IFsuLi5uZXdTZWxlY3RlZFJvd0tleXMsIHJlY29yZFtyb3dLZXldXTtcclxuICAgICAgbmV3U2VsZWN0ZWRSb3dEYXRhcyA9IFsuLi5uZXdTZWxlY3RlZFJvd0RhdGFzLCByZWNvcmRdO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgc2VsZWN0ZWRSb3dLZXlzLm1hcCgoaXRlbTogYW55LCBpbmRleDogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKGl0ZW0gPT09IHJlY29yZFtyb3dLZXldKSB7XHJcbiAgICAgICAgICBuZXdTZWxlY3RlZFJvd0tleXMuc3BsaWNlKGluZGV4LCAxKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgICBzZWxlY3RlZFJvd0RhdGFzLm1hcCgoaXRlbTogYW55LCBpbmRleDogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKGl0ZW1bcm93S2V5XSA9PT0gcmVjb3JkW3Jvd0tleV0pIHtcclxuICAgICAgICAgIG5ld1NlbGVjdGVkUm93RGF0YXMuc3BsaWNlKGluZGV4LCAxKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgIHNlbGVjdGVkUm93S2V5czogbmV3U2VsZWN0ZWRSb3dLZXlzLFxyXG4gICAgICBzZWxlY3RlZFJvd0RhdGFzOiBuZXdTZWxlY3RlZFJvd0RhdGFzLFxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIHJvd1NlbGVjdGlvbk9uU2VsZWN0QWxsKHNlbGVjdGVkOiBhbnksIHNlbGVjdGVkUm93czogYW55LCBjaGFuZ2VSb3dzOiBhbnkpIHtcclxuICAgIGNvbnN0IHsgc2VsZWN0ZWRSb3dLZXlzLCBzZWxlY3RlZFJvd0RhdGFzIH0gPSB0aGlzLnN0YXRlO1xyXG4gICAgY29uc3QgeyB0YWJsZVByb3BzIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgY29uc3QgeyByb3dLZXkgPSBcImlkXCIgfSA9IHRhYmxlUHJvcHM7XHJcbiAgICBsZXQgbmV3aWRzOiBhbnkgPSBbXTtcclxuICAgIGxldCBuZXdkYXRhczogYW55ID0gW107XHJcbiAgICBpZiAoY2hhbmdlUm93cy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGxldCBjaGFuZ2VJZHMgPSBjaGFuZ2VSb3dzLm1hcCgoaXRlbTogYW55KSA9PiBpdGVtW3Jvd0tleV0pO1xyXG4gICAgICBpZiAoc2VsZWN0ZWQpIHtcclxuICAgICAgICBuZXdpZHMgPSBbLi4uc2VsZWN0ZWRSb3dLZXlzLCAuLi5jaGFuZ2VJZHNdO1xyXG4gICAgICAgIG5ld2RhdGFzID0gWy4uLnNlbGVjdGVkUm93RGF0YXMsIC4uLmNoYW5nZVJvd3NdO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHNlbGVjdGVkUm93S2V5cy5tYXAoKGl0ZW06IGFueSwgaW5kZXg6IGFueSkgPT4ge1xyXG4gICAgICAgICAgaWYgKGNoYW5nZUlkcy5pbmRleE9mKGl0ZW0pID09IC0xKSB7XHJcbiAgICAgICAgICAgIG5ld2lkcy5wdXNoKGl0ZW0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHNlbGVjdGVkUm93RGF0YXMubWFwKChpdGVtOiBhbnksIGluZGV4OiBhbnkpID0+IHtcclxuICAgICAgICAgIGlmIChjaGFuZ2VJZHMuaW5kZXhPZihpdGVtW3Jvd0tleV0pID09IC0xKSB7XHJcbiAgICAgICAgICAgIG5ld2RhdGFzLnB1c2goaXRlbSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIG5ld2lkcyA9IFsuLi5zZWxlY3RlZFJvd0tleXNdO1xyXG4gICAgICBuZXdkYXRhcyA9IFsuLi5zZWxlY3RlZFJvd0RhdGFzXTtcclxuICAgIH1cclxuICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICBzZWxlY3RlZFJvd0tleXM6IFsuLi5uZXdpZHNdLFxyXG4gICAgICBzZWxlY3RlZFJvd0RhdGFzOiBbLi4ubmV3ZGF0YXNdLFxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIGdldFNlbGVjdGVkUm93S2V5cygpIHtcclxuICAgIHJldHVybiB0aGlzLnN0YXRlLnNlbGVjdGVkUm93S2V5cztcclxuICB9XHJcbiAgZ2V0U2VsZWN0ZWRSb3dEYXRhcygpIHtcclxuICAgIHJldHVybiB0aGlzLnN0YXRlLnNlbGVjdGVkUm93RGF0YXM7XHJcbiAgfVxyXG4gIHJlc2V0U2VsZWN0ZWRSb3dLZXlzKCkge1xyXG4gICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgIHNlbGVjdGVkUm93S2V5czogW10sXHJcbiAgICAgIHNlbGVjdGVkUm93RGF0YXM6IFtdLFxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIHNldFNlbGVjdGVkUm93S2V5cyhkYXRhKSB7XHJcbiAgICBjb25zdCB7IGN1cnJlbnRQYWdlIH0gPSB0aGlzLnN0YXRlO1xyXG4gICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgIHNlbGVjdGVkUm93S2V5czogZGF0YSxcclxuICAgICAgc2VsZWN0ZWRSb3dLZXlzU3RvcmU6IHsgW2N1cnJlbnRQYWdlXTogZGF0YSB9LFxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIHNldFNlbGVjdGVkUm93RGF0YXMoZGF0YSkge1xyXG4gICAgY29uc3QgeyBjdXJyZW50UGFnZSB9ID0gdGhpcy5zdGF0ZTtcclxuICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICBzZWxlY3RlZFJvd0RhdGFzOiBkYXRhLFxyXG4gICAgICBzZWxlY3RlZFJvd0RhdGFzU3RvcmU6IHsgW2N1cnJlbnRQYWdlXTogZGF0YSB9LFxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIGdldFNlYXJjaFZhbHVlcygpIHtcclxuICAgIGNvbnN0IGZyb21WYWx1ZSA9IHRoaXMuc2VhcmNoUmVmPy5jdXJyZW50Py5nZXRTZWFyY2hWYWx1ZXMoKTtcclxuICAgIHJldHVybiB7IC4uLmZyb21WYWx1ZSwgLi4udGhpcy5zdGF0ZS50cmVlU2VhcmNoUHJhbXMgfTtcclxuICB9XHJcblxyXG4gIGdldENoaWxkcmVuRGF0YShkYXRhLCBrZXlzID0gW10pIHtcclxuICAgIGNvbnN0IHsgdGFibGVQcm9wcyB9ID0gdGhpcy5wcm9wcztcclxuICAgIGNvbnN0IHsgcm93S2V5ID0gXCJpZFwiIH0gPSB0YWJsZVByb3BzO1xyXG4gICAgbGV0IHJlc0tleSA9IFtdO1xyXG4gICAgaWYgKGRhdGEuY2hpbGROb2Rlcykge1xyXG4gICAgICBjb25zdCBjaGlsZHJlbiA9IGRhdGEuY2hpbGROb2RlcztcclxuICAgICAgY2hpbGRyZW4ubWFwKChpdGVtLCBpbmRleCkgPT4ge1xyXG4gICAgICAgIGlmIChpdGVtLmNoaWxkTm9kZXMpIHtcclxuICAgICAgICAgIHRoaXMuZ2V0Q2hpbGRyZW5EYXRhKGl0ZW0uY2hpbGROb2Rlcywga2V5cyk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHJlc0tleSA9IFsuLi5rZXlzLCBpdGVtW3Jvd0tleV1dO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXNLZXkgPSBbLi4ua2V5cywgZGF0YVtyb3dLZXldXTtcclxuICAgIH1cclxuICAgIHJldHVybiByZXNLZXk7XHJcbiAgfVxyXG5cclxuICByZW5kZXJUb29sQnV0dG9ucyh0b29sYnV0dG9uczogYW55LCBtYXJnaW5mbGFnID0gZmFsc2UpIHtcclxuICAgIGNvbnN0IGZsYWcgPSB0b29sYnV0dG9ucy5sZW5ndGggPiA1O1xyXG4gICAgY29uc3QgeyBzaG93U2VhcmNoID0gdHJ1ZSB9ID0gdGhpcy5wcm9wcztcclxuICAgIGNvbnN0IGNvbnRlbnQgPSB0b29sYnV0dG9ucy5tYXAoKGl0ZW06IGFueSwgaW5kZXg6IGFueSkgPT4ge1xyXG4gICAgICBjb25zdCB7IGNoaWxkcmVuLCBwYWdlVHlwZSwgb25DbGljaywgaWNvbiwgc2hvdywgLi4ucGFyYW1zIH0gPSBpdGVtLnByb3BzO1xyXG4gICAgICBpZiAoaW5kZXggPiA0KSB7XHJcbiAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgY2xhc3NOYW1lPXtjbHMoXHJcbiAgICAgICAgICAgICAgZ2V0TGVzcyhzdHlsZXMsIFwiZWRpdG9yXCIpLFxyXG4gICAgICAgICAgICAgIGdldExlc3Moc3R5bGVzLCBcImNvbnRlbnQtaXRlbVwiKVxyXG4gICAgICAgICAgICApfVxyXG4gICAgICAgICAgICBrZXk9e2luZGV4fVxyXG4gICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XHJcbiAgICAgICAgICAgICAgb25DbGljayAmJiBvbkNsaWNrKCk7XHJcbiAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgIHsuLi5wYXJhbXN9XHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwiaWNvblwiKX0+e2ljb259PC9zcGFuPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcInRleHRcIil9PntjaGlsZHJlbn08L3NwYW4+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICApO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIHJldHVybiAoXHJcbiAgICAgIDxkaXZcclxuICAgICAgICBjbGFzc05hbWU9e2NscyhnZXRMZXNzKHN0eWxlcywgXCJ0b29sLWJ1dHRvbnNcIiksIHtcclxuICAgICAgICAgIFtnZXRMZXNzKHN0eWxlcywgXCJ0b29sLWJ1dHRvbnMtbWFyZ2luXCIpXTogIXNob3dTZWFyY2ggfHwgbWFyZ2luZmxhZyxcclxuICAgICAgICB9KX1cclxuICAgICAgICBzdHlsZT17eyBtYXJnaW5MZWZ0OiAwIH19XHJcbiAgICAgID5cclxuICAgICAgICB7dG9vbGJ1dHRvbnMubWFwKChpdGVtOiBhbnksIGluZGV4OiBhbnkpID0+IHtcclxuICAgICAgICAgIGlmIChmbGFnKSB7XHJcbiAgICAgICAgICAgIGlmIChpbmRleCA8IDQpIHtcclxuICAgICAgICAgICAgICByZXR1cm4gPGRpdiBrZXk9e2luZGV4fT57aXRlbX08L2Rpdj47XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaW5kZXggPT0gNCkge1xyXG4gICAgICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgICAgICA8UG9wb3ZlclxyXG4gICAgICAgICAgICAgICAgICBjb250ZW50PXtjb250ZW50fVxyXG4gICAgICAgICAgICAgICAgICB0aXRsZT17bnVsbH1cclxuICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tXCJcclxuICAgICAgICAgICAgICAgICAgdHJpZ2dlcj17W1wiY2xpY2tcIl19XHJcbiAgICAgICAgICAgICAgICAgIGtleT17aW5kZXh9XHJcbiAgICAgICAgICAgICAgICAgIC8vIG92ZXJsYXlDbGFzc05hbWU9e3N0eWxlc1sncG9wLWJveCddfVxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICA8QnV0dG9uIHR5cGU9XCJwcmltYXJ5XCI+XHJcbiAgICAgICAgICAgICAgICAgICAg5pu05aSaIDxEb3duT3V0bGluZWQgLz5cclxuICAgICAgICAgICAgICAgICAgPC9CdXR0b24+XHJcbiAgICAgICAgICAgICAgICA8L1BvcG92ZXI+XHJcbiAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgcmV0dXJuIDxkaXYga2V5PXtpbmRleH0+e2l0ZW19PC9kaXY+O1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pfVxyXG4gICAgICA8L2Rpdj5cclxuICAgICk7XHJcbiAgfVxyXG4gIHJlbmRlckNsb3VtbkJ1dHRvbihjb2x1bW5CdXR0b25zOiBhbnksIHJlY29yZDogYW55KSB7XHJcbiAgICBjb25zdCB7IGVkaXRvckZvcm0gPSB0cnVlLCBidXR0b25zID0gW10sIGFjdGlvblBvcnBzIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgY29uc3QgeyBiYXNlQWN0aW9uQ29sdW1uIH0gPSBjb25maWcoKTtcclxuICAgIGNvbnN0IG5ld0J1dHRvbnMgPSBbXTtcclxuICAgIGxldCBzaG93SWNvbiA9IHRydWU7XHJcbiAgICBpZiAoYWN0aW9uUG9ycHM/LnNob3dJY29uID09PSBmYWxzZSkgc2hvd0ljb24gPSBmYWxzZTtcclxuICAgIGVsc2UgaWYgKGJhc2VBY3Rpb25Db2x1bW4uc2hvd0ljb24gPT09IGZhbHNlKSBzaG93SWNvbiA9IGZhbHNlO1xyXG4gICAgY29sdW1uQnV0dG9ucy5tYXAoKGl0ZW06IGFueSwgaW5kZXg6IGFueSkgPT4ge1xyXG4gICAgICBjb25zdCB7IGNoaWxkcmVuLCBwYWdlVHlwZSwgb25DbGljaywgaWNvbiwgcmVjb3JkU2hvdywgLi4ucGFyYW1zIH0gPVxyXG4gICAgICAgIGl0ZW0ucHJvcHM7XHJcbiAgICAgIGlmIChyZWNvcmRTaG93KSB7XHJcbiAgICAgICAgaWYgKHR5cGVvZiByZWNvcmRTaG93ID09IFwic3RyaW5nXCIpIHtcclxuICAgICAgICAgIGlmIChldmFsKHJlY29yZFNob3cpKSB7XHJcbiAgICAgICAgICAgIG5ld0J1dHRvbnMucHVzaChpdGVtKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiByZWNvcmRTaG93ID09IFwiZnVuY3Rpb25cIikge1xyXG4gICAgICAgICAgY29uc3Qgc2hvdyA9IHJlY29yZFNob3cocmVjb3JkKTtcclxuICAgICAgICAgIHNob3cgJiYgbmV3QnV0dG9ucy5wdXNoKGl0ZW0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBuZXdCdXR0b25zLnB1c2goaXRlbSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgY29uc3QgZmxhZyA9IG5ld0J1dHRvbnMubGVuZ3RoID4gMztcclxuXHJcbiAgICBjb25zdCBjb250ZW50ID0gbmV3QnV0dG9ucy5tYXAoKGl0ZW06IGFueSwgaW5kZXg6IGFueSkgPT4ge1xyXG4gICAgICBjb25zdCB7IGNoaWxkcmVuLCBwYWdlVHlwZSwgb25DbGljaywgcmVjb3JkU2hvdywgaWNvbiwgc2hvdywgLi4ucGFyYW1zIH0gPVxyXG4gICAgICAgIGl0ZW0ucHJvcHM7XHJcbiAgICAgIGlmIChpbmRleCA+IDIpIHtcclxuICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICBjbGFzc05hbWU9e2NscyhcclxuICAgICAgICAgICAgICBnZXRMZXNzKHN0eWxlcywgXCJlZGl0b3JcIiksXHJcbiAgICAgICAgICAgICAgZ2V0TGVzcyhzdHlsZXMsIFwiY29udGVudC1pdGVtXCIpXHJcbiAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgIGtleT17aW5kZXh9XHJcbiAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcclxuICAgICAgICAgICAgICBvbkNsaWNrICYmIG9uQ2xpY2socmVjb3JkKTtcclxuICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgey4uLnBhcmFtc31cclxuICAgICAgICAgID5cclxuICAgICAgICAgICAge3Nob3dJY29uICE9PSBmYWxzZSAmJiAoXHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJpY29uXCIpfT57aWNvbn08L3NwYW4+XHJcbiAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwidGV4dFwiKX0+e2NoaWxkcmVufTwvc3Bhbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHJldHVybiBuZXdCdXR0b25zLm1hcCgoaXRlbTogYW55LCBpbmRleDogYW55KSA9PiB7XHJcbiAgICAgIGNvbnN0IHsgY2hpbGRyZW4sIHBhZ2VUeXBlLCBvbkNsaWNrLCByZWNvcmRTaG93LCBpY29uLCAuLi5wYXJhbXMgfSA9XHJcbiAgICAgICAgaXRlbS5wcm9wcztcclxuICAgICAgaWYgKGZsYWcpIHtcclxuICAgICAgICBpZiAoaW5kZXggPCAzKSB7XHJcbiAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbHMoZ2V0TGVzcyhzdHlsZXMsIFwiZWRpdG9yXCIpLCB7XHJcbiAgICAgICAgICAgICAgICBbZ2V0TGVzcyhzdHlsZXMsIFwiZWRpdG9yX2ZpcnN0XCIpXTogaW5kZXggPT09IDAsXHJcbiAgICAgICAgICAgICAgfSl9XHJcbiAgICAgICAgICAgICAga2V5PXtpbmRleH1cclxuICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBvbkNsaWNrICYmIG9uQ2xpY2socmVjb3JkKTtcclxuICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgIHsuLi5wYXJhbXN9XHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICB7c2hvd0ljb24gIT09IGZhbHNlICYmIChcclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwiaWNvblwiKX0+e2ljb259PC9zcGFuPlxyXG4gICAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJ0ZXh0XCIpfT57Y2hpbGRyZW59PC9zcGFuPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfSBlbHNlIGlmIChpbmRleCA9PSAzKSB7XHJcbiAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICA8UG9wb3ZlclxyXG4gICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbVwiXHJcbiAgICAgICAgICAgICAgdGl0bGU9e251bGx9XHJcbiAgICAgICAgICAgICAgY29udGVudD17Y29udGVudH1cclxuICAgICAgICAgICAgICB0cmlnZ2VyPXtbXCJjbGlja1wiXX1cclxuICAgICAgICAgICAgICBrZXk9e2luZGV4fVxyXG4gICAgICAgICAgICAgIC8vIG92ZXJsYXlDbGFzc05hbWU9e3N0eWxlc1sncG9wJ119XHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwiZWRpdG9yXCIpfT5cclxuICAgICAgICAgICAgICAgIDxFbGxpcHNpc091dGxpbmVkIC8+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvUG9wb3Zlcj5cclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICBjbGFzc05hbWU9e2NscyhnZXRMZXNzKHN0eWxlcywgXCJlZGl0b3JcIiksIHtcclxuICAgICAgICAgICAgICBbZ2V0TGVzcyhzdHlsZXMsIFwiZWRpdG9yX2ZpcnN0XCIpXTogaW5kZXggPT09IDAsXHJcbiAgICAgICAgICAgIH0pfVxyXG4gICAgICAgICAgICBrZXk9e2luZGV4fVxyXG4gICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XHJcbiAgICAgICAgICAgICAgb25DbGljayAmJiBvbkNsaWNrKHJlY29yZCk7XHJcbiAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgIHsuLi5wYXJhbXN9XHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIHtzaG93SWNvbiAhPT0gZmFsc2UgJiYgKFxyXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwiaWNvblwiKX0+e2ljb259PC9zcGFuPlxyXG4gICAgICAgICAgICApfVxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcInRleHRcIil9PntjaGlsZHJlbn08L3NwYW4+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICApO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIC8vIH1cclxuICB9XHJcbiAgLy/moJHngrnlh7vkuovku7ZcclxuICB0cmVlU2VsZWN0KHNlbGVjdGVkS2V5czogYW55LCBvYmo6IGFueSkge1xyXG4gICAgbGV0IGtleXdvcmQgPSBcIlwiO1xyXG4gICAgY29uc3QgeyBzZWFyY2hLZXkgPSBcImtleVwiLCBzZWFyY2hGaWVsZCA9IFwiXCIgfSA9IHRoaXMucHJvcHMudHJlZVByb3BzO1xyXG4gICAgY29uc3QgeyB0cmVlU2VsZWN0ZWRLZXkgfSA9IHRoaXMuc3RhdGU7XHJcbiAgICBjb25zdCB7IHNlbGVjdGVkLCBzZWxlY3RlZE5vZGVzIH0gPSBvYmo7XHJcblxyXG4gICAgaWYgKHNlbGVjdGVkKSB7XHJcbiAgICAgIC8vIGlmIChzZWxlY3RlZE5vZGVzWzBdLmlzTGVhZiB8fCAhc2VsZWN0ZWROb2Rlc1swXS5jaGlsZHJlbikge1xyXG4gICAgICAgIGlmIChzZWxlY3RlZEtleXNbMF0gIT09IHRyZWVTZWxlY3RlZEtleSkge1xyXG4gICAgICAgICAga2V5d29yZCA9IHNlbGVjdGVkTm9kZXNbMF0uZGF0YXJlZi5hdHRyaWJ1dGVbc2VhcmNoS2V5XTtcclxuICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgICB0cmVlU2VsZWN0ZWRLZXk6IHNlbGVjdGVkS2V5c1swXSxcclxuICAgICAgICAgICAgdHJlZVNlYXJjaFByYW1zOiB7IFtzZWFyY2hGaWVsZF06IGtleXdvcmQgfSxcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgLy8gfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgdHJlZVNlbGVjdGVkS2V5OiBrZXl3b3JkLFxyXG4gICAgICAgIHRyZWVTZWFyY2hQcmFtczoge30sXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMucHJvcHMub25UcmVlU2VsZWN0KSB7XHJcbiAgICAgIHRoaXMucHJvcHMub25UcmVlU2VsZWN0KHNlbGVjdGVkS2V5cywgb2JqKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgY29uc3QgZnJvbVZhbHVlID0gdGhpcy5zZWFyY2hSZWY/LmN1cnJlbnQ/LmdldFNlYXJjaFZhbHVlcygpIHx8IHt9O1xyXG4gICAgc2VhcmNoRmllbGQgJiYgdGhpcy50YWJsZUxvYWQoeyAuLi5mcm9tVmFsdWUsIFtzZWFyY2hGaWVsZF06IGtleXdvcmQgfSk7XHJcbiAgICB0aGlzLnByb3BzLm9uQ2FsbEJhY2tzPy50cmVlU2VsZWN0Q2FsbEJhY2sgJiZcclxuICAgICAgdXRpbHMuY2FsbGJhY2sodGhpcy5wcm9wcy5vbkNhbGxCYWNrcz8udHJlZVNlbGVjdENhbGxCYWNrLCB0aGlzLCBbXHJcbiAgICAgICAgc2VsZWN0ZWRLZXlzLFxyXG4gICAgICAgIG9iaixcclxuICAgICAgXSk7XHJcbiAgfVxyXG4gIHJlc2V0U2VhcmNoKCkge1xyXG4gICAgdGhpcy5zZWFyY2hSZWYuY3VycmVudD8uKCk7XHJcbiAgfVxyXG4gIGdldFRleHQocHJvcHMsIHRleHQpIHtcclxuICAgIGxldCBuZXdUZXh0ID0gdGV4dDtcclxuICAgIGlmIChwcm9wcz8uZGF0YSAmJiBwcm9wcz8uZGF0YT8ubGVuZ3RoID4gMCkge1xyXG4gICAgICBsZXQgZGF0YSA9IHByb3BzLmRhdGE7XHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZGF0YT8ubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBpZiAoZGF0YVtpXS52YWx1ZSA9PSB0ZXh0KSB7XHJcbiAgICAgICAgICBuZXdUZXh0ID0gZGF0YVtpXS5sYWJlbDtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBuZXdUZXh0O1xyXG4gIH1cclxuICBzZXRUYWJsZURhdGEoZGF0YSkge1xyXG4gICAgdGhpcy50YWJsZVJlZi5jdXJyZW50Py5zdG9yZS5zZXREYXRhKGRhdGEpO1xyXG4gIH1cclxuICBzZXRUcmVlRGF0YShkYXRhKSB7XHJcbiAgICB0aGlzLnRyZWVSZWYuY3VycmVudD8uc3RvcmUuc2V0RGF0YShkYXRhKTtcclxuICB9XHJcbiAgZ2V0U2VsZWN0ZWRLZXkgPSAoc2VsZWN0ZWQpID0+IHtcclxuICAgIGxldCByZXMgPSBbXTtcclxuICAgIGZvciAobGV0IGtleSBpbiBzZWxlY3RlZCkge1xyXG4gICAgICBjb25zdCBrZXlzID0gc2VsZWN0ZWRba2V5XTtcclxuICAgICAgaWYgKGtleXMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIHJlcyA9IFsuLi5yZXMsIC4uLmtleXNdO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcmVzO1xyXG4gIH07XHJcbiAgcmVuZGVyKCkge1xyXG4gICAgY29uc3Qge1xyXG4gICAgICBjb2x1bW5zID0gW10sXHJcbiAgICAgIHNob3dTZWFyY2ggPSB0cnVlLFxyXG4gICAgICBjaGlsZHJlbixcclxuICAgICAgc3VibWl0VXJsID0gXCJcIixcclxuICAgICAgdGFibGVQcm9wcyA9IHt9LFxyXG4gICAgICB0cmVlUHJvcHMgPSB7fSxcclxuICAgICAgZm9ybVByb3BzID0ge30sXHJcbiAgICAgIHNob3dMZWZ0ID0gZmFsc2UsXHJcbiAgICAgIHN1Ym1pdFBhcmFtcyA9IHt9LFxyXG4gICAgICBzaG93VG9vbEJ1dHRvbiA9IHRydWUsXHJcbiAgICAgIGJ1dHRvbnMgPSBbXSxcclxuICAgICAgZWRpdG9yRm9ybSA9IHRydWUsXHJcbiAgICAgIG9uU2hvd0Zvcm0sXHJcbiAgICAgIGZvcm1DaGFuZ2VWYWxpZCA9IHRydWUsXHJcbiAgICAgIGNsYXNzTmFtZSxcclxuICAgICAgdG9vbEJ1dHRvblBvc2l0aW9uID0gXCJidXR0b21cIixcclxuICAgICAgYWN0aW9uUG9ycHMsXHJcbiAgICB9ID0gdGhpcy5wcm9wcztcclxuICAgIGNvbnN0IHtcclxuICAgICAgc3RvcmUgPSB7fSxcclxuICAgICAgZmlsdGVyQ29sdW1uID0gdHJ1ZSxcclxuICAgICAgYWN0aW9uQ29sdW1uID0gdHJ1ZSxcclxuICAgICAgc2hvd1Jvd1NlbGVjdGlvbiA9IHRydWUsXHJcbiAgICAgIGNvbHVtbk9yZGVyID0gdHJ1ZSxcclxuICAgICAgcm93U2VsZWN0aW9uID0ge30sXHJcbiAgICAgIGV4cGFuZGFibGUgPSB7fSxcclxuICAgICAgLi4ub3RoZXJ0YWJsZVBhcmFtc1xyXG4gICAgfSA9IHRhYmxlUHJvcHM7XHJcblxyXG4gICAgY29uc3Qge1xyXG4gICAgICBzdG9yZTogdHJlZVN0b3JlID0ge30sXHJcbiAgICAgIHNob3dTZWFyY2g6IHRyZWVTZWFyY2ggPSB0cnVlLFxyXG4gICAgICB0aXRsZUFsaWFzID0gXCJ0aXRsZVwiLFxyXG4gICAgICAuLi5vdGhlcnRyZWVQYXJhbXNcclxuICAgIH0gPSB0cmVlUHJvcHM7XHJcblxyXG4gICAgbGV0IHRhYmxlUGFyYW1zID0geyBmaWx0ZXJDb2x1bW4sIHN0b3JlLCAuLi5vdGhlcnRhYmxlUGFyYW1zIH0gYXMgYW55O1xyXG4gICAgaWYgKHNob3dSb3dTZWxlY3Rpb24pIHtcclxuICAgICAgdGFibGVQYXJhbXMgPSB7XHJcbiAgICAgICAgLi4udGFibGVQYXJhbXMsXHJcbiAgICAgICAgcm93U2VsZWN0aW9uOiB7XHJcbiAgICAgICAgICBzZWxlY3RlZFJvd0tleXM6IHRoaXMuc3RhdGUuc2VsZWN0ZWRSb3dLZXlzLFxyXG4gICAgICAgICAgb25TZWxlY3Q6IHRoaXMucm93U2VsZWN0aW9uT25TZWxlY3QuYmluZCh0aGlzKSxcclxuICAgICAgICAgIG9uU2VsZWN0QWxsOiB0aGlzLnJvd1NlbGVjdGlvbk9uU2VsZWN0QWxsLmJpbmQodGhpcyksXHJcbiAgICAgICAgICBjb2x1bW5XaWR0aDogNDAsXHJcbiAgICAgICAgICAuLi5yb3dTZWxlY3Rpb24sXHJcbiAgICAgICAgfSxcclxuICAgICAgfTtcclxuICAgIH1cclxuICAgIGxldCB0YWJsZUNvbHVtbjogYW55W10gPSBbXTtcclxuICAgIGNvbnN0IHNlYXJjaEZvcm1zOiBhbnkgPSBbXTtcclxuICAgIGNvbnN0IGVkaXRvckZvcm1zOiBhbnkgPSBbXTtcclxuICAgIGNvbnN0IGRlZmF1bHRWYWx1ZTogYW55ID0ge307XHJcbiAgICBjb25zdCBjb2x1bW5CdXR0b25zOiBhbnkgPSBbXTtcclxuICAgIGNvbHVtbnMubWFwKChpdGVtOiBhbnkpID0+IHtcclxuICAgICAgbGV0IHRlbXAgPSB7IC4uLml0ZW0gfTtcclxuICAgICAgaWYgKHRlbXAuc2VhcmNoID09PSB0cnVlIHx8IHRlbXAuc2VhcmNoPy5zaG93ID09PSB0cnVlKSB7XHJcbiAgICAgICAgc2VhcmNoRm9ybXMucHVzaCh7XHJcbiAgICAgICAgICBuYW1lOiB0ZW1wLmZpZWxkIHx8IHRlbXAuZGF0YUluZGV4LFxyXG4gICAgICAgICAgbGFiZWw6IHRlbXAuc2VhcmNoPy5sYWJlbCB8fCB0ZW1wLnRpdGxlLFxyXG4gICAgICAgICAgdHlwZTogdGVtcC50eXBlLFxyXG4gICAgICAgICAgcHJvcHM6IHRlbXAucHJvcHMsXHJcbiAgICAgICAgICBsYWJlbENvbDogdGVtcC5zZWFyY2g/LmxhYmVsQ29sLFxyXG4gICAgICAgICAgd3JhcHBlckNvbDogdGVtcC5zZWFyY2g/LndyYXBwZXJDb2wsXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgICAgZGVsZXRlIHRlbXAuc2VhcmNoO1xyXG4gICAgICB0ZW1wLmVkaXRvciAhPT0gZmFsc2UgJiZcclxuICAgICAgICBlZGl0b3JGb3Jtcy5wdXNoKHtcclxuICAgICAgICAgIG5hbWU6IHRlbXAuZmllbGQgfHwgdGVtcC5kYXRhSW5kZXgsXHJcbiAgICAgICAgICBsYWJlbDogdGVtcC50aXRsZSxcclxuICAgICAgICAgIHJ1bGVzOiB0ZW1wLnJ1bGVzID8gdGVtcC5ydWxlcyA6IFtdLFxyXG4gICAgICAgICAgdHlwZTogdGVtcC50eXBlLFxyXG4gICAgICAgICAgc3BhbjogdGVtcC5zcGFuLFxyXG4gICAgICAgICAgZGljdE5hbWU6IHRlbXAuZGljdE5hbWUsXHJcbiAgICAgICAgICBwcm9wczogb21pdCh7IC4uLnRlbXAucHJvcHMgfSwgW1wiZGVmYXVsdFZhbHVlXCIsIFwidmFsdWVcIl0pLFxyXG4gICAgICAgIH0pO1xyXG4gICAgICBpZiAoXHJcbiAgICAgICAgdGVtcC5wcm9wcz8uZGVmYXVsdFZhbHVlICE9PSB1bmRlZmluZWQgJiZcclxuICAgICAgICB0ZW1wLnByb3BzPy5kZWZhdWx0VmFsdWUgIT09IG51bGxcclxuICAgICAgKSB7XHJcbiAgICAgICAgY29uc3QgbmFtZSA9IHRlbXAuZmllbGQgfHwgdGVtcC5kYXRhSW5kZXg7XHJcbiAgICAgICAgZGVmYXVsdFZhbHVlW25hbWVdID0gdGVtcC5wcm9wcz8uZGVmYXVsdFZhbHVlO1xyXG4gICAgICB9XHJcbiAgICAgIGRlbGV0ZSB0ZW1wLnJ1bGVzO1xyXG4gICAgICBkZWxldGUgdGVtcC5zcGFuO1xyXG4gICAgICBpZiAodGVtcC5jb2x1bW5TZWFyY2gpIHtcclxuICAgICAgICB0ZW1wLmZpbHRlclByb3BzID0ge1xyXG4gICAgICAgICAgdHlwZTogdGVtcC50eXBlLFxyXG4gICAgICAgICAgcHJvcHM6IHRlbXAucHJvcHMsXHJcbiAgICAgICAgfTtcclxuICAgICAgfVxyXG4gICAgICBkZWxldGUgdGVtcC50eXBlO1xyXG4gICAgICBsZXQgdGVtcFByb3AgPSB7IC4uLnRlbXAucHJvcHMgfTtcclxuICAgICAgaWYgKHRlbXAuc3R5bGUpIHtcclxuICAgICAgICB0ZW1wID0ge1xyXG4gICAgICAgICAgcmVuZGVyOiAodGV4dDogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgICAgPD5cclxuICAgICAgICAgICAgICAgIHt0ZXh0ICE9PSBcIlwiICYmIHRleHQgIT09IG51bGwgJiYgdGV4dCAhPT0gdW5kZWZpbmVkICYmIChcclxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJjb2wtYmFja1wiKX0+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJjb2wtdGV4dFwiKX0+XHJcbiAgICAgICAgICAgICAgICAgICAgICB7dGhpcy5nZXRUZXh0KHRlbXBQcm9wLCB0ZXh0KX1cclxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgICAgPC8+XHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgZWxsaXBzaXM6IHRydWUsXHJcbiAgICAgICAgICAuLi50ZW1wLFxyXG4gICAgICAgIH07XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGVtcCA9IHtcclxuICAgICAgICAgIHJlbmRlcjogKHRleHQ6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4gPD57dGhpcy5nZXRUZXh0KHRlbXBQcm9wLCB0ZXh0KX08Lz47XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgLi4udGVtcCxcclxuICAgICAgICB9O1xyXG4gICAgICB9XHJcbiAgICAgIGRlbGV0ZSB0ZW1wLnByb3BzO1xyXG4gICAgICBpZiAodGVtcD8uY29sdW1uU2hvdyAhPT0gZmFsc2UpIHRhYmxlQ29sdW1uLnB1c2godGVtcCk7XHJcbiAgICB9KTtcclxuICAgIGNvbnN0IHNlbGZCdXR0b25zOiBhbnkgPSBbXTtcclxuICAgIGNvbnN0IHsgYmFzZUFjdGlvbkNvbHVtbiB9ID0gY29uZmlnKCk7XHJcbiAgICBsZXQgc2hvd0ljb24gPSB0cnVlO1xyXG4gICAgaWYgKGFjdGlvblBvcnBzPy5zaG93SWNvbiA9PT0gZmFsc2UpIHNob3dJY29uID0gZmFsc2U7XHJcbiAgICBlbHNlIGlmIChiYXNlQWN0aW9uQ29sdW1uLnNob3dJY29uID09PSBmYWxzZSkgc2hvd0ljb24gPSBmYWxzZTtcclxuICAgIGlmIChlZGl0b3JGb3JtID09IHRydWUpIHtcclxuICAgICAgaWYgKGJ1dHRvbnMuaW5kZXhPZihcInNlYXJjaFwiKSA+IC0xKSB7XHJcbiAgICAgICAgY29sdW1uQnV0dG9ucy5wdXNoKFxyXG4gICAgICAgICAgPEJ1dHRvblxyXG4gICAgICAgICAgICBvbkNsaWNrPXsocmVjb3JkOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICBpZiAob25TaG93Rm9ybSkge1xyXG4gICAgICAgICAgICAgICAgb25TaG93Rm9ybShyZWNvcmQuYXR0cmlidXRlIHx8IHJlY29yZCwgXCJkZXRhaWxcIik7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIHRoaXMuc2hvd0Zvcm0ocmVjb3JkLmF0dHJpYnV0ZSB8fCByZWNvcmQsIFwiZGV0YWlsXCIpO1xyXG4gICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICBpY29uPXs8RXllT3V0bGluZWQgLz59XHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIOafpeeci1xyXG4gICAgICAgICAgPC9CdXR0b24+XHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgICBpZiAoYnV0dG9ucy5pbmRleE9mKFwiZWRpdG9yXCIpID4gLTEpIHtcclxuICAgICAgICBjb2x1bW5CdXR0b25zLnB1c2goXHJcbiAgICAgICAgICA8QnV0dG9uXHJcbiAgICAgICAgICAgIG9uQ2xpY2s9eyhyZWNvcmQ6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgIGlmIChvblNob3dGb3JtKSB7XHJcbiAgICAgICAgICAgICAgICBvblNob3dGb3JtKHJlY29yZC5hdHRyaWJ1dGUgfHwgcmVjb3JkLCBcImVkaXRvclwiKTtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgdGhpcy5zaG93Rm9ybShyZWNvcmQuYXR0cmlidXRlIHx8IHJlY29yZCwgXCJlZGl0b3JcIik7XHJcbiAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgIGljb249ezxFZGl0T3V0bGluZWQgLz59XHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIOe8lui+kVxyXG4gICAgICAgICAgPC9CdXR0b24+XHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKGJ1dHRvbnMuaW5kZXhPZihcImFkZFwiKSA+IC0xKSB7XHJcbiAgICAgIHNlbGZCdXR0b25zLnB1c2goXHJcbiAgICAgICAgPEJ1dHRvblxyXG4gICAgICAgICAgdHlwZT17XCJwcmltYXJ5XCJ9XHJcbiAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IHsgb25TaG93Rm9ybSB9ID0gdGhpcy5wcm9wcztcclxuICAgICAgICAgICAgaWYgKG9uU2hvd0Zvcm0pIHtcclxuICAgICAgICAgICAgICBvblNob3dGb3JtKCk7XHJcbiAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMuc2hvd0Zvcm0oKTtcclxuICAgICAgICAgIH19XHJcbiAgICAgICAgICBpY29uPXs8UGx1c091dGxpbmVkIC8+fVxyXG4gICAgICAgID5cclxuICAgICAgICAgIOa3u+WKoFxyXG4gICAgICAgIDwvQnV0dG9uPlxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gICAgaWYgKGJ1dHRvbnMuaW5kZXhPZihcImRlbGV0ZVwiKSA+IC0xKSB7XHJcbiAgICAgIHNlbGZCdXR0b25zLnB1c2goXHJcbiAgICAgICAgPEJ1dHRvblxyXG4gICAgICAgICAgLy8gdHlwZT17XCJwcmltYXJ5XCJ9XHJcbiAgICAgICAgICBvbkNsaWNrPXt0aGlzLm9uRGVsZXRlLmJpbmQodGhpcyl9XHJcbiAgICAgICAgICBpY29uPXs8SWNvbiB0eXBlPXtpY29uVHlwZS5kZWxldGUzfSAvPn1cclxuICAgICAgICAgIGRhbmdlclxyXG4gICAgICAgID5cclxuICAgICAgICAgIOWIoOmZpFxyXG4gICAgICAgIDwvQnV0dG9uPlxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gICAgaWYgKEFycmF5LmlzQXJyYXkoY2hpbGRyZW4pKSB7XHJcbiAgICAgIGNoaWxkcmVuLm1hcCgoaXRlbTogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKGl0ZW0/LnByb3BzPy5wYWdlVHlwZSA9PSBcInRvb2xCdXR0b25cIikge1xyXG4gICAgICAgICAgc2VsZkJ1dHRvbnMucHVzaChpdGVtKTtcclxuICAgICAgICB9IGVsc2UgaWYgKGl0ZW0/LnByb3BzPy5wYWdlVHlwZSA9PSBcImNsb3VtbkJ1dHRvblwiKSB7XHJcbiAgICAgICAgICBjb2x1bW5CdXR0b25zLnB1c2goaXRlbSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH0gZWxzZSBpZiAoY2hpbGRyZW4pIHtcclxuICAgICAgY29uc3QgeyBwcm9wcyB9OiBhbnkgPSBjaGlsZHJlbjtcclxuICAgICAgaWYgKHByb3BzPy5wYWdlVHlwZSA9PSBcInRvb2xCdXR0b25cIikge1xyXG4gICAgICAgIHNlbGZCdXR0b25zLnB1c2goY2hpbGRyZW4pO1xyXG4gICAgICB9IGVsc2UgaWYgKHByb3BzPy5wYWdlVHlwZSA9PSBcImNsb3VtbkJ1dHRvblwiKSB7XHJcbiAgICAgICAgY29sdW1uQnV0dG9ucy5wdXNoKGNoaWxkcmVuKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgYWN0aW9uQ29sdW1uICYmXHJcbiAgICAgIHRhYmxlQ29sdW1uLnB1c2goe1xyXG4gICAgICAgIHRpdGxlOiBcIuaTjeS9nFwiLFxyXG4gICAgICAgIGRhdGFJbmRleDogXCJhY3Rpb25cIixcclxuICAgICAgICBhbGlnbjogYWN0aW9uUG9ycHM/LnRleHRBbGlnblxyXG4gICAgICAgICAgPyBhY3Rpb25Qb3Jwcz8udGV4dEFsaWduXHJcbiAgICAgICAgICA6IGJhc2VBY3Rpb25Db2x1bW4udGV4dEFsaWduXHJcbiAgICAgICAgICA/IGJhc2VBY3Rpb25Db2x1bW4udGV4dEFsaWduXHJcbiAgICAgICAgICA6IFwiY2VudGVyXCIsXHJcbiAgICAgICAgd2lkdGg6IGFjdGlvblBvcnBzPy53aWR0aFxyXG4gICAgICAgICAgPyBhY3Rpb25Qb3Jwcz8ud2lkdGhcclxuICAgICAgICAgIDogYmFzZUFjdGlvbkNvbHVtbi53aWR0aFxyXG4gICAgICAgICAgPyBiYXNlQWN0aW9uQ29sdW1uLndpZHRoXHJcbiAgICAgICAgICA6IDIwMCxcclxuICAgICAgICBmaXhlZDogXCJyaWdodFwiLFxyXG4gICAgICAgIGVsbGlwc2lzOiB0cnVlLFxyXG4gICAgICAgIHJlbmRlcjogKHRleHQ6IGFueSwgcmVjb3JkOiBhbnkpID0+IHtcclxuICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJhY3Rpb25cIil9PlxyXG4gICAgICAgICAgICAgIHt0aGlzLnJlbmRlckNsb3VtbkJ1dHRvbihjb2x1bW5CdXR0b25zLCByZWNvcmQpfVxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfSxcclxuICAgICAgfSk7XHJcbiAgICBpZiAoY29sdW1uT3JkZXIpXHJcbiAgICAgIHRhYmxlQ29sdW1uID0gW1xyXG4gICAgICAgIHtcclxuICAgICAgICAgIHRpdGxlOiBcIuW6j+WPt1wiLFxyXG4gICAgICAgICAgd2lkdGg6IDgwLFxyXG4gICAgICAgICAgYWxpZ246IFwiY2VudGVyXCIsXHJcbiAgICAgICAgICByZW5kZXI6ICh0ZXh0LCByZWFjb3JkLCBpbmRleCkgPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4gPD57aW5kZXggKyAxfTwvPjtcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgfSxcclxuICAgICAgICAuLi50YWJsZUNvbHVtbixcclxuICAgICAgXTtcclxuICAgIGxldCBzZWFyY2hGbGFnID0gc2hvd1NlYXJjaCAmJiBzZWFyY2hGb3Jtcy5sZW5ndGggPiAwO1xyXG4gICAgbGV0IHRvb2xGbGFnID0gc2hvd1Rvb2xCdXR0b24gJiYgc2VsZkJ1dHRvbnMubGVuZ3RoID4gMDtcclxuICAgIGlmICh0YWJsZVByb3BzLnBhZ2luYXRpb24gIT09IGZhbHNlKSB7XHJcbiAgICAgIGNvbnN0IHNjcm9sbCA9IHRhYmxlUGFyYW1zLnNjcm9sbDtcclxuICAgICAgdGFibGVQYXJhbXMgPSB7XHJcbiAgICAgICAgLi4udGFibGVQYXJhbXMsXHJcbiAgICAgICAgc2Nyb2xsOiB7IHg6IFwibWF4LWNvbnRlbnRcIiwgLi4uc2Nyb2xsIH0sXHJcbiAgICAgIH07XHJcbiAgICB9XHJcbiAgICBsZXQgeyB0YWJsZVRvb2wgfSA9IGNvbmZpZygpO1xyXG4gICAgcmV0dXJuIChcclxuICAgICAgPGRpdiBjbGFzc05hbWU9e2NscyhnZXRMZXNzKHN0eWxlcywgXCJwYWdlXCIpLCBjbGFzc05hbWUpfT5cclxuICAgICAgICB7dGhpcy5wcm9wcy5wYWdlVGl0bGUgJiYgKFxyXG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2NscyhnZXRMZXNzKHN0eWxlcywgXCJwYWdlLXRpdGxlXCIpKX0+XHJcbiAgICAgICAgICAgIHt0aGlzLnByb3BzLnBhZ2VUaXRsZX1cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICl9XHJcbiAgICAgICAgPGRpdlxyXG4gICAgICAgICAgY2xhc3NOYW1lPXtjbHMoZ2V0TGVzcyhzdHlsZXMsIFwicGFnZS1wYW5lXCIpKX1cclxuICAgICAgICAgIHN0eWxlPXt7IGRpc3BsYXk6IFwiZmxleFwiIH19XHJcbiAgICAgICAgPlxyXG4gICAgICAgICAge3Nob3dMZWZ0ICYmIChcclxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcImxlZnRcIil9PlxyXG4gICAgICAgICAgICAgIDxUcmVlXHJcbiAgICAgICAgICAgICAgICBzdG9yZT17eyAuLi50cmVlU3RvcmUgfX1cclxuICAgICAgICAgICAgICAgIHNob3dJY29uPXtmYWxzZX1cclxuICAgICAgICAgICAgICAgIGNoZWNrYWJsZT17ZmFsc2V9XHJcbiAgICAgICAgICAgICAgICBzZWFyY2hhYmxlPXt0cmVlU2VhcmNofVxyXG4gICAgICAgICAgICAgICAgb25TZWxlY3Q9e3RoaXMudHJlZVNlbGVjdC5iaW5kKHRoaXMpfVxyXG4gICAgICAgICAgICAgICAgc2VsZWN0ZWRLZXlzPXtbdGhpcy5zdGF0ZS50cmVlU2VsZWN0ZWRLZXldfVxyXG4gICAgICAgICAgICAgICAgdGl0bGVBbGlhcz17dGl0bGVBbGlhc31cclxuICAgICAgICAgICAgICAgIHsuLi5vdGhlcnRyZWVQYXJhbXN9XHJcbiAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICApfVxyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICBjbGFzc05hbWU9e2NscyhnZXRMZXNzKHN0eWxlcywgXCJyaWdodFwiKSwge1xyXG4gICAgICAgICAgICAgIFtnZXRMZXNzKHN0eWxlcywgXCJuby1sZWZ0LXJpZ2h0XCIpXTogIXNob3dMZWZ0LFxyXG4gICAgICAgICAgICB9KX1cclxuICAgICAgICAgID5cclxuICAgICAgICAgICAge3Nob3dTZWFyY2ggJiYgc2VhcmNoRm9ybXMubGVuZ3RoID4gMCAmJiAoXHJcbiAgICAgICAgICAgICAgPEhlYWRlclNlYXJjaFxyXG4gICAgICAgICAgICAgICAgc2VhcmNoRm9ybXM9e3NlYXJjaEZvcm1zfVxyXG4gICAgICAgICAgICAgICAgdG9vbEJ1dHRvblBvc2l0aW9uPXt0b29sQnV0dG9uUG9zaXRpb259XHJcbiAgICAgICAgICAgICAgICBvblNlYXJjaD17dGhpcy5vblNlYXJjaC5iaW5kKHRoaXMpfVxyXG4gICAgICAgICAgICAgICAgb25SZXNldD17dGhpcy5wcm9wcy5vblJlc2V0fVxyXG4gICAgICAgICAgICAgICAgcmVmPXt0aGlzLnNlYXJjaFJlZn1cclxuICAgICAgICAgICAgICAgIHNlYXJjaEZvcm1Qcm9wcz17dGhpcy5wcm9wcy5zZWFyY2hGb3JtUHJvcHN9XHJcbiAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgKX1cclxuXHJcbiAgICAgICAgICAgIHtzaG93VG9vbEJ1dHRvbiAmJlxyXG4gICAgICAgICAgICAgIHNlbGZCdXR0b25zLmxlbmd0aCA+IDAgJiZcclxuICAgICAgICAgICAgICB0b29sQnV0dG9uUG9zaXRpb24gPT0gXCJidXR0b21cIiAmJlxyXG4gICAgICAgICAgICAgIHRoaXMucmVuZGVyVG9vbEJ1dHRvbnMoc2VsZkJ1dHRvbnMsIHNlYXJjaEZvcm1zLmxlbmd0aCA9PSAwKX1cclxuICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xzKGdldExlc3Moc3R5bGVzLCBcInRhYmxlXCIpLCB7XHJcbiAgICAgICAgICAgICAgICBbZ2V0TGVzcyhzdHlsZXMsIFwidGFibGUtdG9wXCIpXTpcclxuICAgICAgICAgICAgICAgICAgKHNlYXJjaEZsYWcgJiYgIXRvb2xGbGFnKSB8fFxyXG4gICAgICAgICAgICAgICAgICB0YWJsZVByb3BzLnRvb2xiYXIgPT0gZmFsc2UgfHxcclxuICAgICAgICAgICAgICAgICAgdGFibGVQcm9wcy50b29sYmFyPy50b29scz8ubGVuZ3RoID09IDAgfHxcclxuICAgICAgICAgICAgICAgICAgdGFibGVUb29sPy50b29scz8ubGVuZ3RoID09IDAsXHJcbiAgICAgICAgICAgICAgfSl9XHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8VGFibGVcclxuICAgICAgICAgICAgICAgIHJlZj17dGhpcy50YWJsZVJlZn1cclxuICAgICAgICAgICAgICAgIGNvbHVtbnM9e3RhYmxlQ29sdW1ufVxyXG4gICAgICAgICAgICAgICAgZXhwYW5kYWJsZT17e1xyXG4gICAgICAgICAgICAgICAgICBleHBhbmRJY29uOiAoeyBleHBhbmRlZCwgb25FeHBhbmQsIHJlY29yZCB9KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgICAgICAgICAgIDw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHtleHBhbmRlZCA/IChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8RG93bk91dGxpbmVkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoZSkgPT4gb25FeHBhbmQocmVjb3JkLCBlKX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwiZXhwYW5kLWljb25cIil9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgKSA6IChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICByZWNvcmQuY2hpbGROb2RlcyAmJiAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8UmlnaHRPdXRsaW5lZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoZSkgPT4gb25FeHBhbmQocmVjb3JkLCBlKX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJleHBhbmQtaWNvblwiKX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICAgICAgICAgICAgPC8+XHJcbiAgICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgLi4uZXhwYW5kYWJsZSxcclxuICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICBjb2x1bW5PcmRlcj17dHJ1ZX1cclxuICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsocGFnaW5hdGlvbikgPT4ge1xyXG4gICAgICAgICAgICAgICAgICBjb25zdCB7IGN1cnJlbnRQYWdlIH0gPSB0aGlzLnN0YXRlO1xyXG4gICAgICAgICAgICAgICAgICBpZiAoY3VycmVudFBhZ2UgIT09IHBhZ2luYXRpb24uY3VycmVudCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgY3VycmVudFBhZ2U6IHBhZ2luYXRpb24uY3VycmVudCxcclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgIHRvb2xiYXI9e3tcclxuICAgICAgICAgICAgICAgICAgb25Ub29sQ2xpY2s6IHtcclxuICAgICAgICAgICAgICAgICAgICBvblJlZnJlc2g6ICgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHBhcmFtcyA9IHRoaXMuZ2V0U2VhcmNoVmFsdWVzKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRhYmxlTG9hZChwYXJhbXMpO1xyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgIC4uLnRhYmxlUHJvcHMudG9vbGJhcixcclxuICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICB7Li4udGFibGVQYXJhbXN9XHJcbiAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIHtlZGl0b3JGb3JtICYmIChcclxuICAgICAgICAgICAgPEVkaXRvckZvcm1cclxuICAgICAgICAgICAgICByZWY9e3RoaXMuZWRpdG9yUmVmfVxyXG4gICAgICAgICAgICAgIGNhbGxCYWNrPXt0aGlzLnRhYmxlUmVsb2FkLmJpbmQodGhpcyl9XHJcbiAgICAgICAgICAgICAgZm9ybVByb3BzPXtlZGl0b3JGb3Jtc31cclxuICAgICAgICAgICAgICBzdWJtaXRVcmw9e3N1Ym1pdFVybH1cclxuICAgICAgICAgICAgICBzdWJtaXRQYXJhbXM9e3N1Ym1pdFBhcmFtc31cclxuICAgICAgICAgICAgICBvblN1Ym1pdD17dGhpcy5wcm9wcy5vblN1Ym1pdH1cclxuICAgICAgICAgICAgICBkZWZhdWx0VmFsdWU9e2RlZmF1bHRWYWx1ZX1cclxuICAgICAgICAgICAgICBvbkhpZGVGb3JtPXt0aGlzLnByb3BzLm9uSGlkZUZvcm19XHJcbiAgICAgICAgICAgICAgb25Gb3JtQ2hhbmdlPXt0aGlzLnByb3BzLm9uRm9ybUNoYW5nZX1cclxuICAgICAgICAgICAgICBmb3JtVHlwZT17dGhpcy5wcm9wcy5mb3JtVHlwZSB8fCBcImF1dG9cIn1cclxuICAgICAgICAgICAgICBjaGFuZ2VWYWxpZD17Zm9ybUNoYW5nZVZhbGlkfVxyXG4gICAgICAgICAgICAgIG90aGVyUHJvcHM9e3sgLi4uZm9ybVByb3BzIH19XHJcbiAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICApfVxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICk7XHJcbiAgfVxyXG59XHJcbmV4cG9ydCBkZWZhdWx0IEJhc2VQYWdlO1xyXG4iXX0=
|
|
1081
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL3BhZ2UvQmFzZVBhZ2UvaW5kZXgudHN4Il0sIm5hbWVzIjpbIlJlYWN0IiwiUHVyZUNvbXBvbmVudCIsIlRhYmxlIiwiVHJlZSIsIkJ1dHRvbiIsIk1vZGFsIiwiUG9wb3ZlciIsIm1lc3NhZ2UiLCJJY29uIiwiaWNvblR5cGUiLCJFZGl0b3JGb3JtIiwiY2xzIiwic3R5bGVzIiwidXRpbHMiLCJEb3duT3V0bGluZWQiLCJFeWVPdXRsaW5lZCIsIkVkaXRPdXRsaW5lZCIsIlJpZ2h0T3V0bGluZWQiLCJQbHVzT3V0bGluZWQiLCJFbGxpcHNpc091dGxpbmVkIiwiZ2V0TGVzcyIsInJlcXVlc3QiLCJvbWl0IiwiY29uZmlnIiwiZ2V0U3RvcmFnZSIsIkhlYWRlclNlYXJjaCIsIkJhc2VQYWdlIiwicHJvcHMiLCJjcmVhdGVSZWYiLCJjaGVja2VkVHJlZUtleXMiLCJzdGF0ZSIsIm5hbWUiLCJ1c2VyVHlwZSIsImFjY291bnQiLCJ2YWx1ZSIsImRlcHRJZCIsIm9uU2VhcmNoIiwic2VsZWN0ZWQiLCJyZXMiLCJrZXkiLCJrZXlzIiwibGVuZ3RoIiwic3RvcmVQcmVmaXgiLCJ0eXBlIiwiY29udGVudCIsInNpemUiLCJzZWxlY3RlZFJvd0tleXMiLCJzZWxlY3RlZFJvd0RhdGFzIiwidHJlZVNlbGVjdGVkS2V5IiwiZXhwYW5kIiwiZm9ybVR5cGUiLCJ0YWJsZVNpemUiLCJ0cmVlU2VhcmNoUHJhbXMiLCJpbml0RGF0YSIsInBhcmFtcyIsImNhbGxCYWNrIiwic2VhcmNoUmVmIiwiY3VycmVudCIsInNldFNlYXJjaFBhcmFtcyIsImVkaXRvcmZsYWciLCJlZGl0b3JSZWYiLCJzaG93IiwiaGlkZUZvcm0iLCJsb2FkaW5nIiwic2V0TG9hZGluZyIsImRlbGV0ZVVybCIsIm9uRGVsZXRlIiwiZGVsZXRlUGFyYW1zIiwid2FybmluZyIsIkVycm9yIiwiY29uZmlybSIsIm9uT2siLCJkZWZhdWx0UGFyYW1zIiwibWV0aG9kIiwiaWRzIiwiam9pbiIsInJlcXVlc3RQYXJhbXMiLCJ0aGVuIiwiY29kZSIsInN1Y2Nlc3MiLCJlcnJvciIsImNhdGNoIiwiY29uc29sZSIsImxvZyIsInRhYmxlUmVmIiwic3RvcmUiLCJsb2FkIiwib25DYWxsQmFja3MiLCJ0YWJsZUxvYWQiLCJvblNlYXJjaENhbGxCYWNrIiwiY2FsbGJhY2siLCJhdXRvTG9hZCIsInJlbG9hZCIsImRhdGEiLCJyZWNvcmRzIiwiY3VycmVudFBhZ2UiLCJyZWNvcmQiLCJ0YWJsZVByb3BzIiwicm93S2V5IiwibmV3U2VsZWN0ZWRSb3dLZXlzIiwibmV3U2VsZWN0ZWRSb3dEYXRhcyIsIm1hcCIsIml0ZW0iLCJpbmRleCIsInNwbGljZSIsInNldFN0YXRlIiwic2VsZWN0ZWRSb3dzIiwiY2hhbmdlUm93cyIsIm5ld2lkcyIsIm5ld2RhdGFzIiwiY2hhbmdlSWRzIiwiaW5kZXhPZiIsInB1c2giLCJzZWxlY3RlZFJvd0tleXNTdG9yZSIsInNlbGVjdGVkUm93RGF0YXNTdG9yZSIsImZyb21WYWx1ZSIsImdldFNlYXJjaFZhbHVlcyIsInJlc0tleSIsImNoaWxkTm9kZXMiLCJjaGlsZHJlbiIsImdldENoaWxkcmVuRGF0YSIsInRvb2xidXR0b25zIiwibWFyZ2luZmxhZyIsImZsYWciLCJzaG93U2VhcmNoIiwicGFnZVR5cGUiLCJvbkNsaWNrIiwiaWNvbiIsIm1hcmdpbkxlZnQiLCJjb2x1bW5CdXR0b25zIiwiZWRpdG9yRm9ybSIsImJ1dHRvbnMiLCJhY3Rpb25Qb3JwcyIsImJhc2VBY3Rpb25Db2x1bW4iLCJuZXdCdXR0b25zIiwic2hvd0ljb24iLCJyZWNvcmRTaG93IiwiZXZhbCIsInNlbGVjdGVkS2V5cyIsIm9iaiIsImtleXdvcmQiLCJ0cmVlUHJvcHMiLCJzZWFyY2hLZXkiLCJzZWFyY2hGaWVsZCIsInBhcmFudFNlbGVjdCIsInNlbGVjdGVkTm9kZXMiLCJkYXRhcmVmIiwiYXR0cmlidXRlIiwiaXNMZWFmIiwib25UcmVlU2VsZWN0IiwidHJlZVNlbGVjdENhbGxCYWNrIiwidGV4dCIsIm5ld1RleHQiLCJpIiwibGFiZWwiLCJzZXREYXRhIiwidHJlZVJlZiIsImNvbHVtbnMiLCJzdWJtaXRVcmwiLCJmb3JtUHJvcHMiLCJzaG93TGVmdCIsInN1Ym1pdFBhcmFtcyIsInNob3dUb29sQnV0dG9uIiwib25TaG93Rm9ybSIsImZvcm1DaGFuZ2VWYWxpZCIsImNsYXNzTmFtZSIsInRvb2xCdXR0b25Qb3NpdGlvbiIsImZpbHRlckNvbHVtbiIsImFjdGlvbkNvbHVtbiIsInNob3dSb3dTZWxlY3Rpb24iLCJjb2x1bW5PcmRlciIsInJvd1NlbGVjdGlvbiIsImV4cGFuZGFibGUiLCJvdGhlcnRhYmxlUGFyYW1zIiwidHJlZVN0b3JlIiwidHJlZVNlYXJjaCIsInRpdGxlQWxpYXMiLCJvdGhlcnRyZWVQYXJhbXMiLCJ0YWJsZVBhcmFtcyIsIm9uU2VsZWN0Iiwicm93U2VsZWN0aW9uT25TZWxlY3QiLCJiaW5kIiwib25TZWxlY3RBbGwiLCJyb3dTZWxlY3Rpb25PblNlbGVjdEFsbCIsImNvbHVtbldpZHRoIiwidGFibGVDb2x1bW4iLCJzZWFyY2hGb3JtcyIsImVkaXRvckZvcm1zIiwiZGVmYXVsdFZhbHVlIiwidGVtcCIsInNlYXJjaCIsImZpZWxkIiwiZGF0YUluZGV4IiwidGl0bGUiLCJsYWJlbENvbCIsIndyYXBwZXJDb2wiLCJlZGl0b3IiLCJydWxlcyIsInNwYW4iLCJkaWN0TmFtZSIsInVuZGVmaW5lZCIsImNvbHVtblNlYXJjaCIsImZpbHRlclByb3BzIiwidGVtcFByb3AiLCJzdHlsZSIsInJlbmRlciIsImdldFRleHQiLCJlbGxpcHNpcyIsImNvbHVtblNob3ciLCJzZWxmQnV0dG9ucyIsInNob3dGb3JtIiwiZGVsZXRlMyIsIkFycmF5IiwiaXNBcnJheSIsImFsaWduIiwidGV4dEFsaWduIiwid2lkdGgiLCJmaXhlZCIsInJlbmRlckNsb3VtbkJ1dHRvbiIsInJlYWNvcmQiLCJzZWFyY2hGbGFnIiwidG9vbEZsYWciLCJwYWdpbmF0aW9uIiwic2Nyb2xsIiwieCIsInRhYmxlVG9vbCIsInBhZ2VUaXRsZSIsImRpc3BsYXkiLCJ0cmVlU2VsZWN0Iiwib25SZXNldCIsInNlYXJjaEZvcm1Qcm9wcyIsInJlbmRlclRvb2xCdXR0b25zIiwidG9vbGJhciIsInRvb2xzIiwiZXhwYW5kSWNvbiIsImV4cGFuZGVkIiwib25FeHBhbmQiLCJlIiwib25Ub29sQ2xpY2siLCJvblJlZnJlc2giLCJ0YWJsZVJlbG9hZCIsIm9uU3VibWl0Iiwib25IaWRlRm9ybSIsIm9uRm9ybUNoYW5nZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxPQUFPQSxLQUFQLElBQWdCQyxhQUFoQixRQUFnRCxPQUFoRDtBQUNBLE9BQU9DLEtBQVAsTUFBa0Isa0JBQWxCO0FBQ0EsT0FBT0MsSUFBUCxNQUFpQixpQkFBakI7QUFFQSxPQUFPQyxNQUFQLE1BQW1CLG1CQUFuQjtBQUNBLE9BQU9DLEtBQVAsTUFBa0Isa0JBQWxCO0FBQ0EsT0FBT0MsT0FBUCxNQUFvQixvQkFBcEI7QUFDQSxPQUFPQyxPQUFQLE1BQW9CLG9CQUFwQjtBQUNBLE9BQU9DLElBQVAsTUFBaUIsNEJBQWpCO0FBQ0EsU0FBU0MsUUFBVCxRQUF5QixpQkFBekI7QUFDQSxPQUFPQyxVQUFQLE1BQXVCLFFBQXZCO0FBQ0EsT0FBT0MsR0FBUCxNQUFnQixZQUFoQjtBQUNBLE9BQU9DLE1BQVAsTUFBbUIscUJBQW5CO0FBR0EsU0FBU0MsS0FBVCxRQUFzQix1QkFBdEI7QUFDQSxTQUNFQyxZQURGLEVBRUVDLFdBRkYsRUFHRUMsWUFIRixFQUlFQyxhQUpGLEVBS0VDLFlBTEYsRUFNRUMsZ0JBTkYsUUFPTyxtQkFQUDtBQVFBLFNBQVNDLE9BQVQsUUFBaUMsYUFBakM7QUFDQSxPQUFPQyxPQUFQLE1BQW9CLGFBQXBCO0FBQ0EsT0FBT0MsSUFBUCxNQUFpQixTQUFqQjtBQUNBLE9BQU9DLE1BQVAsTUFBbUIsY0FBbkI7QUFDQSxTQUFTQyxV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QUEsVUFBVSxFQUFFLEtBQUtqSyxLQUFMLENBQVd1TixVQVJ6QjtBQVNFLFFBQUEsWUFBWSxFQUFFLEtBQUt2TixLQUFMLENBQVd3TixZQVQzQjtBQVVFLFFBQUEsUUFBUSxFQUFFLEtBQUt4TixLQUFMLENBQVd1QixRQUFYLElBQXVCLE1BVm5DO0FBV0UsUUFBQSxXQUFXLEVBQUVrSCxlQVhmO0FBWUUsUUFBQSxVQUFVLG9CQUFPTCxTQUFQO0FBWlosUUEvRkosQ0FORixDQURGO0FBd0hEOzs7O0VBeDJCb0I5SixhOztBQTAyQnZCLGVBQWV5QixRQUFmIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0LCB7IFB1cmVDb21wb25lbnQsIFJlYWN0Tm9kZSB9IGZyb20gXCJyZWFjdFwiO1xyXG5pbXBvcnQgVGFibGUgZnJvbSBcIi4uLy4uL2Jhc2UvdGFibGVcIjtcclxuaW1wb3J0IFRyZWUgZnJvbSBcIi4uLy4uL2Jhc2UvdHJlZVwiO1xyXG5pbXBvcnQgRm9ybSBmcm9tIFwiLi4vLi4vYmFzZS9mb3JtXCI7XHJcbmltcG9ydCBCdXR0b24gZnJvbSBcIi4uLy4uL2Jhc2UvYnV0dG9uXCI7XHJcbmltcG9ydCBNb2RhbCBmcm9tIFwiLi4vLi4vYmFzZS9tb2RhbFwiO1xyXG5pbXBvcnQgUG9wb3ZlciBmcm9tIFwiLi4vLi4vYmFzZS9wb3BvdmVyXCI7XHJcbmltcG9ydCBtZXNzYWdlIGZyb20gXCIuLi8uLi9iYXNlL21lc3NhZ2VcIjtcclxuaW1wb3J0IEljb24gZnJvbSBcIi4uLy4uL2Jhc2UvY29tbW9uL0ljb25Gb250XCI7XHJcbmltcG9ydCB7IGljb25UeXBlIH0gZnJvbSBcIi4uLy4uL2NvbnN0YW50c1wiO1xyXG5pbXBvcnQgRWRpdG9yRm9ybSBmcm9tIFwiLi9Gb3JtXCI7XHJcbmltcG9ydCBjbHMgZnJvbSBcImNsYXNzbmFtZXNcIjtcclxuaW1wb3J0IHN0eWxlcyBmcm9tIFwiLi9pbmRleC5tb2R1bGUubGVzc1wiO1xyXG5pbXBvcnQgU3RvcmUsIHsgUGFnZVN0b3JlLCBTdG9yZVByb3BzIH0gZnJvbSBcIkBiai1uc2MvbXNuXCI7XHJcbmltcG9ydCBSb3cgZnJvbSBcIi4uLy4uL2Jhc2UvZ3JpZC9Sb3dcIjtcclxuaW1wb3J0IHsgdXRpbHMgfSBmcm9tIFwiQGJqLW5zYy9tc24vbGliL3V0aWxzXCI7XHJcbmltcG9ydCB7XHJcbiAgRG93bk91dGxpbmVkLFxyXG4gIEV5ZU91dGxpbmVkLFxyXG4gIEVkaXRPdXRsaW5lZCxcclxuICBSaWdodE91dGxpbmVkLFxyXG4gIFBsdXNPdXRsaW5lZCxcclxuICBFbGxpcHNpc091dGxpbmVkLFxyXG59IGZyb20gXCJAYW50LWRlc2lnbi9pY29uc1wiO1xyXG5pbXBvcnQgeyBnZXRMZXNzLCBnZXROb2RlIH0gZnJvbSBcIi4uLy4uL3V0aWxzXCI7XHJcbmltcG9ydCByZXF1ZXN0IGZyb20gXCJuc2MtcmVxdWVzdFwiO1xyXG5pbXBvcnQgb21pdCBmcm9tIFwib21pdC5qc1wiO1xyXG5pbXBvcnQgY29uZmlnIGZyb20gXCIuLi8uLi9jb25maWdcIjtcclxuaW1wb3J0IHsgZ2V0U3RvcmFnZSB9IGZyb20gXCJAYmotbnNjL2Z1bmN0aW9uc1wiO1xyXG5pbXBvcnQgeyBJRm9ybVByb3BzIH0gZnJvbSBcIi4uLy4uL2Jhc2UvZm9ybS9Gb3JtXCI7XHJcbmltcG9ydCBIZWFkZXJTZWFyY2ggZnJvbSBcIi4uL0hlYWRlclNlYXJjaFwiO1xyXG5pbnRlcmZhY2UgVGFibGVQcm9wcyB7XHJcbiAgYWN0aW9uQ29sdW1uPzogYm9vbGVhbjsgLy/mmK/lkKbmmL7npLrmk43kvZzliJdcclxuICBzdG9yZT86IFN0b3JlUHJvcHM7XHJcbiAgZmlsdGVyQ29sdW1uPzogYm9vbGVhbjsgLy/mmK/lkKbmmL7npLrov4fmu6TmjInpkq5cclxuICBzaG93Um93U2VsZWN0aW9uPzogYm9vbGVhbjsgLy/mmK/lkKbooajmoLzli77pgInliJdcclxuICBwYWdpbmF0aW9uPzogYm9vbGVhbjsgLy/mmK/lkKbmmL7npLrliIbpobVcclxuICBjb2x1bW5PcmRlcj86IGJvb2xlYW47IC8v5piv5ZCm5pi+56S66KGo5qC85bqP5YiXXHJcbiAgW3Byb3BzTmFtZTogc3RyaW5nXTogYW55O1xyXG59XHJcbmludGVyZmFjZSBUcmVlUHJvcHMge1xyXG4gIHN0b3JlPzogU3RvcmVQcm9wcztcclxuICBzaG93U2VhcmNoPzogYm9vbGVhbjsgLy/mmK/lkKbmmL7npLrmkJzntKLmoYZcclxuICBzZWFyY2hLZXk/OiBzdHJpbmc7IC8v5pCc57SidmFsdWXlr7nlupTnmoRrZXlcclxuICBzZWFyY2hGaWVsZD86IHN0cmluZzsgLy/mn6Xor6Llr7nlupTnmoRrZXlcclxuICB0aXRsZUFsaWFzPzogc3RyaW5nOyAvL+agkXRpdGxl5a+55bqU55qEa2V5LOm7mOiupHRpdGxlXHJcbiAgbm9kZVBvcnBzPzogb2JqZWN0O1xyXG4gIHBhcmFudFNlbGVjdD86IGJvb2xlYW47XHJcbiAgW3Byb3BzTmFtZTogc3RyaW5nXTogYW55O1xyXG59XHJcbmludGVyZmFjZSBGb3JtUHJvcHMgZXh0ZW5kcyBJRm9ybVByb3BzIHt9XHJcbmludGVyZmFjZSBOU0NCYXNlQmFnZVByb3BzIHtcclxuICBzaG93U2VhcmNoPzogYm9vbGVhbjsgLy/mmK/lkKbmmL7npLrlpLTpg6jmkJzntKLmoI9cclxuICB0YWJsZVByb3BzPzogVGFibGVQcm9wczsgLy/ooajmoLzlj4LmlbBcclxuICB0cmVlUHJvcHM/OiBUcmVlUHJvcHM7IC8v5bem5L6n5qCR5Y+C5pWwXHJcbiAgc3VibWl0UGFyYW1zPzogT2JqZWN0OyAvL+a3u+WKoOWPguaVsO+8jOm7mOiupG1vdGhvZDpwb3N077yMIOWPguaVsOmAmui/h2RhdGHkvKDpgJJcclxuICBzdWJtaXRVcmw/OiBzdHJpbmc7XHJcbiAgb25TdWJtaXQ/OiAodmFsdWU/OiBhbnksIGxhYmVsPzogYW55KSA9PiB2b2lkO1xyXG4gIGNvbHVtbnM6IEFycmF5PE9iamVjdD47XHJcbiAgc2hvd0xlZnQ/OiBib29sZWFuOyAvL+aYr+WQpuaYvuekuuW3puS+p+ebruW9leagkVxyXG4gIHNob3dUb29sQnV0dG9uPzogYm9vbGVhbjsgLy/mmK/lkKbmmL7npLrmjInpkq7moI9cclxuICBlZGl0b3JGb3JtPzogYm9vbGVhbjsgLy/mmK/lkKbpnIDopoHooajljZXlip/og70gLCDkuLpmYWxzZSDnvJbovpHvvIzmn6XnnIvvvIzmlrDlop7lip/og73lnYfkuI3lj6/nlKhcclxuICBkZWxldGVVcmw/OiBzdHJpbmc7IC8v5Yig6ZmkdXJsXHJcbiAgb25EZWxldGU/OiAoc2VsZWN0ZWRLZXlzPzogQXJyYXk8YW55PikgPT4gdm9pZDsgLy/liKDpmaTlj4LmlbDvvIzpu5jorqRtb3Rob2Q6cG9zdO+8jCDlj4LmlbDpgJrov4dpZHPmi7zmjqXkvKDpgJLnu5nlkI7lj7BcclxuICBkZWxldGVQYXJhbXM/OiBPYmplY3Q7XHJcbiAgY2hpbGRyZW4/OiBSZWFjdC5SZWFjdE5vZGU7XHJcbiAgb25TZWFyY2g/OiAodmFsdWU/OiBhbnkpID0+IHZvaWQ7XHJcbiAgb25SZXNldD86ICgpID0+IHZvaWQ7XHJcbiAgaW5pdERhdGE/OiBhbnk7IC8v5Yid5aeL5YyW5Zue6LCD5Ye95pWw77yM5ZyoY29tcG9uZW50RGlkTW91bnTkuK3osIPnlKhcclxuICBidXR0b25zPzogQXJyYXk8c3RyaW5nPjsgLy/mjInpkq7pm4blkIggIFsnYWRkJywnZGVsZXRlJywnc2VhcmNoJywnZWRpdG9yJ11cclxuICBvblNob3dGb3JtPzogKHZhbHVlPzogYW55LCBlZGl0b3JGbGFnPzogc3RyaW5nKSA9PiB2b2lkOyAvL+aJk+W8gOihqOWNleWbnuiwg1xyXG4gIG9uSGlkZUZvcm0/OiAoKSA9PiB2b2lkOyAvL+aJk+W8gOihqOWNleWbnuiwg1xyXG4gIG9uRm9ybUNoYW5nZT86IChjaGFuZ2VkVmFsdWVzPzogYW55LCBhbGxWYWx1ZXM/OiBhbnkpID0+IHZvaWQ7IC8v6KGo5Y2Vb25DaGFuZ2Xlm57osINcclxuICBmb3JtVHlwZT86IFwibW9kYWxcIiB8IFwiZHJhd2VyXCI7XHJcbiAgZm9ybUNoYW5nZVZhbGlkPzogYm9vbGVhbjsgLy/ooajljZXmoKHpqoxcclxuICBjbGFzc05hbWU/OiBhbnk7XHJcbiAgdG9vbEJ1dHRvblBvc2l0aW9uPzogXCJyaWdodFwiIHwgXCJidXR0b21cIjtcclxuICBwYWdlVGl0bGU/OiBzdHJpbmcgfCBSZWFjdE5vZGU7XHJcbiAgZm9ybVByb3BzPzogRm9ybVByb3BzO1xyXG4gIGFjdGlvblBvcnBzPzogeyB0ZXh0QWxpZ24/OiBzdHJpbmc7IHNob3dJY29uPzogYm9vbGVhbjsgd2lkdGg/OiBudW1iZXIgfTtcclxuICBzZWFyY2hGb3JtUHJvcHM/OiB7IHdyYXBwZXJDb2w/OiBhbnk7IGxhYmVsQ29sPzogYW55IH07XHJcbiAgb25UcmVlU2VsZWN0PzogKHZhbHVlPzogYW55LCBlZGl0b3JGbGFnPzogc3RyaW5nKSA9PiB2b2lkOyAvL+aJk+W8gOihqOWNleWbnuiwg1xyXG4gIG9uQ2FsbEJhY2tzPzoge1xyXG4gICAgdHJlZVNlbGVjdENhbGxCYWNrPzogYW55O1xyXG4gICAgb25TZWFyY2hDYWxsQmFjaz86IGFueTtcclxuICB9O1xyXG59XHJcblxyXG5jbGFzcyBCYXNlUGFnZSBleHRlbmRzIFB1cmVDb21wb25lbnQ8TlNDQmFzZUJhZ2VQcm9wcywgYW55PiB7XHJcbiAgdGFibGVSZWYgPSBSZWFjdC5jcmVhdGVSZWY8YW55PigpO1xyXG4gIHRyZWVSZWYgPSBSZWFjdC5jcmVhdGVSZWY8YW55PigpO1xyXG4gIHNlYXJjaFJlZiA9IFJlYWN0LmNyZWF0ZVJlZjxhbnk+KCk7XHJcbiAgZWRpdG9yUmVmID0gUmVhY3QuY3JlYXRlUmVmPGFueT4oKTtcclxuICBkYXRlRm9ybWF0ID0ge30gYXMgYW55O1xyXG4gIGNvbnN0cnVjdG9yKHByb3BzOiBhbnkpIHtcclxuICAgIHN1cGVyKHByb3BzKTtcclxuICAgIGxldCB7IHN0b3JlUHJlZml4IH0gPSBjb25maWcoKTtcclxuICAgIGxldCB0eXBlID0gZ2V0U3RvcmFnZShcclxuICAgICAgc3RvcmVQcmVmaXggPyBzdG9yZVByZWZpeCArIFwiLVwiICsgXCJmb3JtVHlwZVwiIDogXCJmb3JtVHlwZVwiXHJcbiAgICApO1xyXG4gICAgdHlwZSA9IHR5cGU/LmNvbnRlbnQ7XHJcbiAgICBsZXQgc2l6ZSA9IGdldFN0b3JhZ2UoXHJcbiAgICAgIHN0b3JlUHJlZml4ID8gc3RvcmVQcmVmaXggKyBcIi1cIiArIFwidGFibGVTaXplXCIgOiBcInRhYmxlU2l6ZVwiXHJcbiAgICApO1xyXG4gICAgc2l6ZSA9IHNpemU/LmNvbnRlbnQ7XHJcbiAgICB0aGlzLnN0YXRlID0ge1xyXG4gICAgICB0eXBlOiBcImFkZFwiLFxyXG4gICAgICBzZWxlY3RlZFJvd0tleXM6IFtdLFxyXG4gICAgICBzZWxlY3RlZFJvd0RhdGFzOiBbXSxcclxuICAgICAgdHJlZVNlbGVjdGVkS2V5OiBcIlwiLFxyXG4gICAgICBleHBhbmQ6IGZhbHNlLFxyXG4gICAgICBmb3JtVHlwZTogdHlwZSB8fCBcIm1vZGFsXCIsXHJcbiAgICAgIHRhYmxlU2l6ZTogc2l6ZSB8fCBcImRlZmF1bHRcIixcclxuICAgICAgdHJlZVNlYXJjaFByYW1zOiB7fSxcclxuICAgIH07XHJcbiAgfVxyXG4gIGNvbXBvbmVudERpZE1vdW50KCkge1xyXG4gICAgY29uc3QgeyBpbml0RGF0YSB9ID0gdGhpcy5wcm9wcztcclxuICAgIGluaXREYXRhICYmIGluaXREYXRhKCk7XHJcbiAgfVxyXG5cclxuICBzZXRTZWFyY2hQYXJhbXMocGFyYW1zLCBjYWxsQmFjaykge1xyXG4gICAgdGhpcy5zZWFyY2hSZWYuY3VycmVudD8uc2V0U2VhcmNoUGFyYW1zKHBhcmFtcyk7XHJcbiAgICBjYWxsQmFjayAmJiBjYWxsQmFjayhwYXJhbXMpO1xyXG4gIH1cclxuXHJcbiAgb25TZWxlY3QgPSAoY2hlY2tlZFRyZWVLZXlzOiBhbnkpID0+IHtcclxuICAgIGNvbnN0IHsgbmFtZSwgdXNlclR5cGUsIGFjY291bnQgfSA9IHRoaXMuc3RhdGU7XHJcbiAgICBjb25zdCB2YWx1ZSA9IHsgbmFtZSwgdXNlclR5cGUsIGFjY291bnQsIGRlcHRJZDogY2hlY2tlZFRyZWVLZXlzWzBdIH07XHJcbiAgICBpZiAodGhpcy5wcm9wcy5vblNlYXJjaCkge1xyXG4gICAgICB0aGlzLnByb3BzLm9uU2VhcmNoKHZhbHVlKTtcclxuICAgIH1cclxuICAgIC8vIHRoaXMudGFibGVMb2FkKHZhbHVlKTtcclxuICB9O1xyXG5cclxuICAvL+aYvuekuuihqOWNlVxyXG4gIHNob3dGb3JtKHZhbHVlPzogYW55LCBlZGl0b3JmbGFnID0gXCJhZGRcIikge1xyXG4gICAgdGhpcy5lZGl0b3JSZWYuY3VycmVudD8uc2hvdyh2YWx1ZSwgZWRpdG9yZmxhZyk7XHJcbiAgfVxyXG5cclxuICAvL+WFs+mXreihqOWNlVxyXG4gIGhpZGVGb3JtKCkge1xyXG4gICAgdGhpcy5lZGl0b3JSZWYuY3VycmVudD8uaGlkZUZvcm0oKTtcclxuICB9XHJcblxyXG4gIHNldExvYWRpbmcobG9hZGluZzogYm9vbGVhbikge1xyXG4gICAgdGhpcy5lZGl0b3JSZWYuY3VycmVudD8uc2V0TG9hZGluZyhsb2FkaW5nKTtcclxuICB9XHJcblxyXG4gIC8v5om56YeP5Yig6ZmkXHJcbiAgb25EZWxldGUoKSB7XHJcbiAgICBjb25zdCB7IGRlbGV0ZVVybCwgb25EZWxldGUsIGRlbGV0ZVBhcmFtcyB9ID0gdGhpcy5wcm9wcztcclxuICAgIGNvbnN0IHsgc2VsZWN0ZWRSb3dLZXlzIH0gPSB0aGlzLnN0YXRlO1xyXG4gICAgaWYgKHNlbGVjdGVkUm93S2V5cy5sZW5ndGggPT0gMCkge1xyXG4gICAgICBtZXNzYWdlLndhcm5pbmcoXCLor7fpgInmi6nopoHliKDpmaTnmoTmlbDmja7vvIFcIik7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGlmIChvbkRlbGV0ZSkge1xyXG4gICAgICBvbkRlbGV0ZSAmJiBvbkRlbGV0ZShzZWxlY3RlZFJvd0tleXMpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBpZiAoIWRlbGV0ZVVybCkge1xyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJ1cmzkuI3og73kuLrnqbrvvIFcIik7XHJcbiAgICB9XHJcbiAgICBNb2RhbC5jb25maXJtKHtcclxuICAgICAgY29udGVudDogXCLmmK/lkKbnoa7orqTliKDpmaTmiYDpgInpobnvvJ9cIixcclxuICAgICAgLy8gY2VudGVyZWQ6dHJ1ZSxcclxuICAgICAgb25PazogKCkgPT4ge1xyXG4gICAgICAgIGNvbnN0IGRlZmF1bHRQYXJhbXMgPSB7XHJcbiAgICAgICAgICBtZXRob2Q6IFwicG9zdFwiLFxyXG4gICAgICAgICAgcGFyYW1zOiB7IGlkczogc2VsZWN0ZWRSb3dLZXlzLmpvaW4oKSB9LFxyXG4gICAgICAgIH07XHJcbiAgICAgICAgbGV0IHJlcXVlc3RQYXJhbXMgPSB7fSBhcyBhbnk7XHJcbiAgICAgICAgaWYgKGRlZmF1bHRQYXJhbXMpIHtcclxuICAgICAgICAgIHJlcXVlc3RQYXJhbXMgPSB7IC4uLmRlbGV0ZVBhcmFtcyB9O1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXF1ZXN0UGFyYW1zID0geyAuLi5kZWZhdWx0UGFyYW1zIH07XHJcbiAgICAgICAgcmVxdWVzdChkZWxldGVVcmwsIHtcclxuICAgICAgICAgIC4uLnJlcXVlc3RQYXJhbXMsXHJcbiAgICAgICAgfSlcclxuICAgICAgICAgIC50aGVuKGZ1bmN0aW9uIChyZXM6IGFueSkge1xyXG4gICAgICAgICAgICBjb25zdCB7IGNvZGUgfSA9IHJlcztcclxuICAgICAgICAgICAgaWYgKGNvZGUgPT09IDIwMCkge1xyXG4gICAgICAgICAgICAgIG1lc3NhZ2Uuc3VjY2VzcyhcIuWIoOmZpOaIkOWKn++8gVwiKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICBtZXNzYWdlLmVycm9yKFwi5Yig6Zmk5aSx6LSl77yBXCIpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgICAgLmNhdGNoKGZ1bmN0aW9uIChlcnJvcjogYW55KSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiZXJyb3JcIiwgZXJyb3IpO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgIH0sXHJcbiAgICB9KTtcclxuICB9XHJcbiAgdGFibGVMb2FkKHBhcmFtczogYW55KSB7XHJcbiAgICB0aGlzLnRhYmxlUmVmLmN1cnJlbnQ/LnN0b3JlLmxvYWQoe1xyXG4gICAgICBwYXJhbXM6IHBhcmFtcyxcclxuICAgIH0pO1xyXG4gIH1cclxuICAvL+afpeivolxyXG4gIG9uU2VhcmNoKHBhcmFtcykge1xyXG4gICAgY29uc3QgeyBvblNlYXJjaCwgb25DYWxsQmFja3MgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBpZiAob25TZWFyY2gpIHtcclxuICAgICAgb25TZWFyY2goeyAuLi5wYXJhbXMsIC4uLnRoaXMuc3RhdGUudHJlZVNlYXJjaFByYW1zIH0pO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLnRhYmxlTG9hZCh7IC4uLnBhcmFtcywgLi4udGhpcy5zdGF0ZS50cmVlU2VhcmNoUHJhbXMgfSk7XHJcbiAgICBvbkNhbGxCYWNrcz8ub25TZWFyY2hDYWxsQmFjayAmJlxyXG4gICAgICB1dGlscy5jYWxsYmFjayhvbkNhbGxCYWNrcz8ub25TZWFyY2hDYWxsQmFjaywgdGhpcywgW3BhcmFtc10pO1xyXG4gIH1cclxuICAvL+ihqOagvOmHjeaWsOWKoOi9vVxyXG4gIHRhYmxlUmVsb2FkKHBhcmFtcyA9IHt9LCBhdXRvTG9hZCA9IHRydWUpIHtcclxuICAgIHRoaXMudGFibGVSZWYuY3VycmVudD8uc3RvcmUucmVsb2FkKHtcclxuICAgICAgY2FsbGJhY2s6IChyZXMpID0+IHtcclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICBhdXRvTG9hZCAmJlxyXG4gICAgICAgICAgcmVzPy5kYXRhPy5yZWNvcmRzPy5sZW5ndGggPT0gMCAmJlxyXG4gICAgICAgICAgdGhpcy5zdGF0ZS5jdXJyZW50UGFnZSAhPT0gMVxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgdGhpcy50YWJsZVJlZi5jdXJyZW50Py5zdG9yZS5yZWxvYWQoe1xyXG4gICAgICAgICAgICBwYXJhbXM6IHsgY3VycmVudDogMSwgLi4ucGFyYW1zIH0sXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgIH0sXHJcbiAgICB9KTtcclxuICB9XHJcbiAgcm93U2VsZWN0aW9uT25TZWxlY3QocmVjb3JkOiBhbnksIHNlbGVjdGVkOiBhbnkpIHtcclxuICAgIGNvbnN0IHsgc2VsZWN0ZWRSb3dLZXlzLCBzZWxlY3RlZFJvd0RhdGFzIH0gPSB0aGlzLnN0YXRlO1xyXG4gICAgY29uc3QgeyB0YWJsZVByb3BzIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgY29uc3QgeyByb3dLZXkgPSBcImlkXCIgfSA9IHRhYmxlUHJvcHM7XHJcbiAgICBsZXQgbmV3U2VsZWN0ZWRSb3dLZXlzID0gWy4uLnNlbGVjdGVkUm93S2V5c107XHJcbiAgICBsZXQgbmV3U2VsZWN0ZWRSb3dEYXRhcyA9IFsuLi5zZWxlY3RlZFJvd0RhdGFzXTtcclxuICAgIGlmIChzZWxlY3RlZCkge1xyXG4gICAgICBuZXdTZWxlY3RlZFJvd0tleXMgPSBbLi4ubmV3U2VsZWN0ZWRSb3dLZXlzLCByZWNvcmRbcm93S2V5XV07XHJcbiAgICAgIG5ld1NlbGVjdGVkUm93RGF0YXMgPSBbLi4ubmV3U2VsZWN0ZWRSb3dEYXRhcywgcmVjb3JkXTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHNlbGVjdGVkUm93S2V5cy5tYXAoKGl0ZW06IGFueSwgaW5kZXg6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChpdGVtID09PSByZWNvcmRbcm93S2V5XSkge1xyXG4gICAgICAgICAgbmV3U2VsZWN0ZWRSb3dLZXlzLnNwbGljZShpbmRleCwgMSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgICAgc2VsZWN0ZWRSb3dEYXRhcy5tYXAoKGl0ZW06IGFueSwgaW5kZXg6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChpdGVtW3Jvd0tleV0gPT09IHJlY29yZFtyb3dLZXldKSB7XHJcbiAgICAgICAgICBuZXdTZWxlY3RlZFJvd0RhdGFzLnNwbGljZShpbmRleCwgMSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICBzZWxlY3RlZFJvd0tleXM6IG5ld1NlbGVjdGVkUm93S2V5cyxcclxuICAgICAgc2VsZWN0ZWRSb3dEYXRhczogbmV3U2VsZWN0ZWRSb3dEYXRhcyxcclxuICAgIH0pO1xyXG4gIH1cclxuICByb3dTZWxlY3Rpb25PblNlbGVjdEFsbChzZWxlY3RlZDogYW55LCBzZWxlY3RlZFJvd3M6IGFueSwgY2hhbmdlUm93czogYW55KSB7XHJcbiAgICBjb25zdCB7IHNlbGVjdGVkUm93S2V5cywgc2VsZWN0ZWRSb3dEYXRhcyB9ID0gdGhpcy5zdGF0ZTtcclxuICAgIGNvbnN0IHsgdGFibGVQcm9wcyB9ID0gdGhpcy5wcm9wcztcclxuICAgIGNvbnN0IHsgcm93S2V5ID0gXCJpZFwiIH0gPSB0YWJsZVByb3BzO1xyXG4gICAgbGV0IG5ld2lkczogYW55ID0gW107XHJcbiAgICBsZXQgbmV3ZGF0YXM6IGFueSA9IFtdO1xyXG4gICAgaWYgKGNoYW5nZVJvd3MubGVuZ3RoID4gMCkge1xyXG4gICAgICBsZXQgY2hhbmdlSWRzID0gY2hhbmdlUm93cy5tYXAoKGl0ZW06IGFueSkgPT4gaXRlbVtyb3dLZXldKTtcclxuICAgICAgaWYgKHNlbGVjdGVkKSB7XHJcbiAgICAgICAgbmV3aWRzID0gWy4uLnNlbGVjdGVkUm93S2V5cywgLi4uY2hhbmdlSWRzXTtcclxuICAgICAgICBuZXdkYXRhcyA9IFsuLi5zZWxlY3RlZFJvd0RhdGFzLCAuLi5jaGFuZ2VSb3dzXTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBzZWxlY3RlZFJvd0tleXMubWFwKChpdGVtOiBhbnksIGluZGV4OiBhbnkpID0+IHtcclxuICAgICAgICAgIGlmIChjaGFuZ2VJZHMuaW5kZXhPZihpdGVtKSA9PSAtMSkge1xyXG4gICAgICAgICAgICBuZXdpZHMucHVzaChpdGVtKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgICBzZWxlY3RlZFJvd0RhdGFzLm1hcCgoaXRlbTogYW55LCBpbmRleDogYW55KSA9PiB7XHJcbiAgICAgICAgICBpZiAoY2hhbmdlSWRzLmluZGV4T2YoaXRlbVtyb3dLZXldKSA9PSAtMSkge1xyXG4gICAgICAgICAgICBuZXdkYXRhcy5wdXNoKGl0ZW0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBuZXdpZHMgPSBbLi4uc2VsZWN0ZWRSb3dLZXlzXTtcclxuICAgICAgbmV3ZGF0YXMgPSBbLi4uc2VsZWN0ZWRSb3dEYXRhc107XHJcbiAgICB9XHJcbiAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgc2VsZWN0ZWRSb3dLZXlzOiBbLi4ubmV3aWRzXSxcclxuICAgICAgc2VsZWN0ZWRSb3dEYXRhczogWy4uLm5ld2RhdGFzXSxcclxuICAgIH0pO1xyXG4gIH1cclxuICBnZXRTZWxlY3RlZFJvd0tleXMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5zdGF0ZS5zZWxlY3RlZFJvd0tleXM7XHJcbiAgfVxyXG4gIGdldFNlbGVjdGVkUm93RGF0YXMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5zdGF0ZS5zZWxlY3RlZFJvd0RhdGFzO1xyXG4gIH1cclxuICByZXNldFNlbGVjdGVkUm93S2V5cygpIHtcclxuICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICBzZWxlY3RlZFJvd0tleXM6IFtdLFxyXG4gICAgICBzZWxlY3RlZFJvd0RhdGFzOiBbXSxcclxuICAgIH0pO1xyXG4gIH1cclxuICBzZXRTZWxlY3RlZFJvd0tleXMoZGF0YSkge1xyXG4gICAgY29uc3QgeyBjdXJyZW50UGFnZSB9ID0gdGhpcy5zdGF0ZTtcclxuICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICBzZWxlY3RlZFJvd0tleXM6IGRhdGEsXHJcbiAgICAgIHNlbGVjdGVkUm93S2V5c1N0b3JlOiB7IFtjdXJyZW50UGFnZV06IGRhdGEgfSxcclxuICAgIH0pO1xyXG4gIH1cclxuICBzZXRTZWxlY3RlZFJvd0RhdGFzKGRhdGEpIHtcclxuICAgIGNvbnN0IHsgY3VycmVudFBhZ2UgfSA9IHRoaXMuc3RhdGU7XHJcbiAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgc2VsZWN0ZWRSb3dEYXRhczogZGF0YSxcclxuICAgICAgc2VsZWN0ZWRSb3dEYXRhc1N0b3JlOiB7IFtjdXJyZW50UGFnZV06IGRhdGEgfSxcclxuICAgIH0pO1xyXG4gIH1cclxuICBnZXRTZWFyY2hWYWx1ZXMoKSB7XHJcbiAgICBjb25zdCBmcm9tVmFsdWUgPSB0aGlzLnNlYXJjaFJlZj8uY3VycmVudD8uZ2V0U2VhcmNoVmFsdWVzKCk7XHJcbiAgICByZXR1cm4geyAuLi5mcm9tVmFsdWUsIC4uLnRoaXMuc3RhdGUudHJlZVNlYXJjaFByYW1zIH07XHJcbiAgfVxyXG5cclxuICBnZXRDaGlsZHJlbkRhdGEoZGF0YSwga2V5cyA9IFtdKSB7XHJcbiAgICBjb25zdCB7IHRhYmxlUHJvcHMgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBjb25zdCB7IHJvd0tleSA9IFwiaWRcIiB9ID0gdGFibGVQcm9wcztcclxuICAgIGxldCByZXNLZXkgPSBbXTtcclxuICAgIGlmIChkYXRhLmNoaWxkTm9kZXMpIHtcclxuICAgICAgY29uc3QgY2hpbGRyZW4gPSBkYXRhLmNoaWxkTm9kZXM7XHJcbiAgICAgIGNoaWxkcmVuLm1hcCgoaXRlbSwgaW5kZXgpID0+IHtcclxuICAgICAgICBpZiAoaXRlbS5jaGlsZE5vZGVzKSB7XHJcbiAgICAgICAgICB0aGlzLmdldENoaWxkcmVuRGF0YShpdGVtLmNoaWxkTm9kZXMsIGtleXMpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICByZXNLZXkgPSBbLi4ua2V5cywgaXRlbVtyb3dLZXldXTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmVzS2V5ID0gWy4uLmtleXMsIGRhdGFbcm93S2V5XV07XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcmVzS2V5O1xyXG4gIH1cclxuXHJcbiAgcmVuZGVyVG9vbEJ1dHRvbnModG9vbGJ1dHRvbnM6IGFueSwgbWFyZ2luZmxhZyA9IGZhbHNlKSB7XHJcbiAgICBjb25zdCBmbGFnID0gdG9vbGJ1dHRvbnMubGVuZ3RoID4gNTtcclxuICAgIGNvbnN0IHsgc2hvd1NlYXJjaCA9IHRydWUgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBjb25zdCBjb250ZW50ID0gdG9vbGJ1dHRvbnMubWFwKChpdGVtOiBhbnksIGluZGV4OiBhbnkpID0+IHtcclxuICAgICAgY29uc3QgeyBjaGlsZHJlbiwgcGFnZVR5cGUsIG9uQ2xpY2ssIGljb24sIHNob3csIC4uLnBhcmFtcyB9ID0gaXRlbS5wcm9wcztcclxuICAgICAgaWYgKGluZGV4ID4gNCkge1xyXG4gICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xzKFxyXG4gICAgICAgICAgICAgIGdldExlc3Moc3R5bGVzLCBcImVkaXRvclwiKSxcclxuICAgICAgICAgICAgICBnZXRMZXNzKHN0eWxlcywgXCJjb250ZW50LWl0ZW1cIilcclxuICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAga2V5PXtpbmRleH1cclxuICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xyXG4gICAgICAgICAgICAgIG9uQ2xpY2sgJiYgb25DbGljaygpO1xyXG4gICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICB7Li4ucGFyYW1zfVxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcImljb25cIil9PntpY29ufTwvc3Bhbj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJ0ZXh0XCIpfT57Y2hpbGRyZW59PC9zcGFuPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gKFxyXG4gICAgICA8ZGl2XHJcbiAgICAgICAgY2xhc3NOYW1lPXtjbHMoZ2V0TGVzcyhzdHlsZXMsIFwidG9vbC1idXR0b25zXCIpLCB7XHJcbiAgICAgICAgICBbZ2V0TGVzcyhzdHlsZXMsIFwidG9vbC1idXR0b25zLW1hcmdpblwiKV06ICFzaG93U2VhcmNoIHx8IG1hcmdpbmZsYWcsXHJcbiAgICAgICAgfSl9XHJcbiAgICAgICAgc3R5bGU9e3sgbWFyZ2luTGVmdDogMCB9fVxyXG4gICAgICA+XHJcbiAgICAgICAge3Rvb2xidXR0b25zLm1hcCgoaXRlbTogYW55LCBpbmRleDogYW55KSA9PiB7XHJcbiAgICAgICAgICBpZiAoZmxhZykge1xyXG4gICAgICAgICAgICBpZiAoaW5kZXggPCA0KSB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIDxkaXYga2V5PXtpbmRleH0+e2l0ZW19PC9kaXY+O1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGluZGV4ID09IDQpIHtcclxuICAgICAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICAgICAgPFBvcG92ZXJcclxuICAgICAgICAgICAgICAgICAgY29udGVudD17Y29udGVudH1cclxuICAgICAgICAgICAgICAgICAgdGl0bGU9e251bGx9XHJcbiAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbVwiXHJcbiAgICAgICAgICAgICAgICAgIHRyaWdnZXI9e1tcImNsaWNrXCJdfVxyXG4gICAgICAgICAgICAgICAgICBrZXk9e2luZGV4fVxyXG4gICAgICAgICAgICAgICAgICAvLyBvdmVybGF5Q2xhc3NOYW1lPXtzdHlsZXNbJ3BvcC1ib3gnXX1cclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgPEJ1dHRvbiB0eXBlPVwicHJpbWFyeVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIOabtOWkmiA8RG93bk91dGxpbmVkIC8+XHJcbiAgICAgICAgICAgICAgICAgIDwvQnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPC9Qb3BvdmVyPlxyXG4gICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHJldHVybiA8ZGl2IGtleT17aW5kZXh9PntpdGVtfTwvZGl2PjtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KX1cclxuICAgICAgPC9kaXY+XHJcbiAgICApO1xyXG4gIH1cclxuICByZW5kZXJDbG91bW5CdXR0b24oY29sdW1uQnV0dG9uczogYW55LCByZWNvcmQ6IGFueSkge1xyXG4gICAgY29uc3QgeyBlZGl0b3JGb3JtID0gdHJ1ZSwgYnV0dG9ucyA9IFtdLCBhY3Rpb25Qb3JwcyB9ID0gdGhpcy5wcm9wcztcclxuICAgIGNvbnN0IHsgYmFzZUFjdGlvbkNvbHVtbiB9ID0gY29uZmlnKCk7XHJcbiAgICBjb25zdCBuZXdCdXR0b25zID0gW107XHJcbiAgICBsZXQgc2hvd0ljb24gPSB0cnVlO1xyXG4gICAgaWYgKGFjdGlvblBvcnBzPy5zaG93SWNvbiA9PT0gZmFsc2UpIHNob3dJY29uID0gZmFsc2U7XHJcbiAgICBlbHNlIGlmIChiYXNlQWN0aW9uQ29sdW1uLnNob3dJY29uID09PSBmYWxzZSkgc2hvd0ljb24gPSBmYWxzZTtcclxuICAgIGNvbHVtbkJ1dHRvbnMubWFwKChpdGVtOiBhbnksIGluZGV4OiBhbnkpID0+IHtcclxuICAgICAgY29uc3QgeyBjaGlsZHJlbiwgcGFnZVR5cGUsIG9uQ2xpY2ssIGljb24sIHJlY29yZFNob3csIC4uLnBhcmFtcyB9ID1cclxuICAgICAgICBpdGVtLnByb3BzO1xyXG4gICAgICBpZiAocmVjb3JkU2hvdykge1xyXG4gICAgICAgIGlmICh0eXBlb2YgcmVjb3JkU2hvdyA9PSBcInN0cmluZ1wiKSB7XHJcbiAgICAgICAgICBpZiAoZXZhbChyZWNvcmRTaG93KSkge1xyXG4gICAgICAgICAgICBuZXdCdXR0b25zLnB1c2goaXRlbSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgcmVjb3JkU2hvdyA9PSBcImZ1bmN0aW9uXCIpIHtcclxuICAgICAgICAgIGNvbnN0IHNob3cgPSByZWNvcmRTaG93KHJlY29yZCk7XHJcbiAgICAgICAgICBzaG93ICYmIG5ld0J1dHRvbnMucHVzaChpdGVtKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgbmV3QnV0dG9ucy5wdXNoKGl0ZW0pO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIGNvbnN0IGZsYWcgPSBuZXdCdXR0b25zLmxlbmd0aCA+IDM7XHJcblxyXG4gICAgY29uc3QgY29udGVudCA9IG5ld0J1dHRvbnMubWFwKChpdGVtOiBhbnksIGluZGV4OiBhbnkpID0+IHtcclxuICAgICAgY29uc3QgeyBjaGlsZHJlbiwgcGFnZVR5cGUsIG9uQ2xpY2ssIHJlY29yZFNob3csIGljb24sIHNob3csIC4uLnBhcmFtcyB9ID1cclxuICAgICAgICBpdGVtLnByb3BzO1xyXG4gICAgICBpZiAoaW5kZXggPiAyKSB7XHJcbiAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgY2xhc3NOYW1lPXtjbHMoXHJcbiAgICAgICAgICAgICAgZ2V0TGVzcyhzdHlsZXMsIFwiZWRpdG9yXCIpLFxyXG4gICAgICAgICAgICAgIGdldExlc3Moc3R5bGVzLCBcImNvbnRlbnQtaXRlbVwiKVxyXG4gICAgICAgICAgICApfVxyXG4gICAgICAgICAgICBrZXk9e2luZGV4fVxyXG4gICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XHJcbiAgICAgICAgICAgICAgb25DbGljayAmJiBvbkNsaWNrKHJlY29yZCk7XHJcbiAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgIHsuLi5wYXJhbXN9XHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIHtzaG93SWNvbiAhPT0gZmFsc2UgJiYgKFxyXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwiaWNvblwiKX0+e2ljb259PC9zcGFuPlxyXG4gICAgICAgICAgICApfVxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcInRleHRcIil9PntjaGlsZHJlbn08L3NwYW4+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICApO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICByZXR1cm4gbmV3QnV0dG9ucy5tYXAoKGl0ZW06IGFueSwgaW5kZXg6IGFueSkgPT4ge1xyXG4gICAgICBjb25zdCB7IGNoaWxkcmVuLCBwYWdlVHlwZSwgb25DbGljaywgcmVjb3JkU2hvdywgaWNvbiwgLi4ucGFyYW1zIH0gPVxyXG4gICAgICAgIGl0ZW0ucHJvcHM7XHJcbiAgICAgIGlmIChmbGFnKSB7XHJcbiAgICAgICAgaWYgKGluZGV4IDwgMykge1xyXG4gICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xzKGdldExlc3Moc3R5bGVzLCBcImVkaXRvclwiKSwge1xyXG4gICAgICAgICAgICAgICAgW2dldExlc3Moc3R5bGVzLCBcImVkaXRvcl9maXJzdFwiKV06IGluZGV4ID09PSAwLFxyXG4gICAgICAgICAgICAgIH0pfVxyXG4gICAgICAgICAgICAgIGtleT17aW5kZXh9XHJcbiAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgb25DbGljayAmJiBvbkNsaWNrKHJlY29yZCk7XHJcbiAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICB7Li4ucGFyYW1zfVxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAge3Nob3dJY29uICE9PSBmYWxzZSAmJiAoXHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcImljb25cIil9PntpY29ufTwvc3Bhbj5cclxuICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwidGV4dFwiKX0+e2NoaWxkcmVufTwvc3Bhbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoaW5kZXggPT0gMykge1xyXG4gICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgPFBvcG92ZXJcclxuICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b21cIlxyXG4gICAgICAgICAgICAgIHRpdGxlPXtudWxsfVxyXG4gICAgICAgICAgICAgIGNvbnRlbnQ9e2NvbnRlbnR9XHJcbiAgICAgICAgICAgICAgdHJpZ2dlcj17W1wiY2xpY2tcIl19XHJcbiAgICAgICAgICAgICAga2V5PXtpbmRleH1cclxuICAgICAgICAgICAgICAvLyBvdmVybGF5Q2xhc3NOYW1lPXtzdHlsZXNbJ3BvcCddfVxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcImVkaXRvclwiKX0+XHJcbiAgICAgICAgICAgICAgICA8RWxsaXBzaXNPdXRsaW5lZCAvPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L1BvcG92ZXI+XHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgY2xhc3NOYW1lPXtjbHMoZ2V0TGVzcyhzdHlsZXMsIFwiZWRpdG9yXCIpLCB7XHJcbiAgICAgICAgICAgICAgW2dldExlc3Moc3R5bGVzLCBcImVkaXRvcl9maXJzdFwiKV06IGluZGV4ID09PSAwLFxyXG4gICAgICAgICAgICB9KX1cclxuICAgICAgICAgICAga2V5PXtpbmRleH1cclxuICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xyXG4gICAgICAgICAgICAgIG9uQ2xpY2sgJiYgb25DbGljayhyZWNvcmQpO1xyXG4gICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICB7Li4ucGFyYW1zfVxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICB7c2hvd0ljb24gIT09IGZhbHNlICYmIChcclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcImljb25cIil9PntpY29ufTwvc3Bhbj5cclxuICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJ0ZXh0XCIpfT57Y2hpbGRyZW59PC9zcGFuPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICAvLyB9XHJcbiAgfVxyXG4gIC8v5qCR54K55Ye75LqL5Lu2XHJcbiAgdHJlZVNlbGVjdChzZWxlY3RlZEtleXM6IGFueSwgb2JqOiBhbnkpIHtcclxuICAgIGxldCBrZXl3b3JkID0gXCJcIjtcclxuICAgIGNvbnN0IHtcclxuICAgICAgc2VhcmNoS2V5ID0gXCJrZXlcIixcclxuICAgICAgc2VhcmNoRmllbGQgPSBcIlwiLFxyXG4gICAgICBwYXJhbnRTZWxlY3QgPSB0cnVlLFxyXG4gICAgfSA9IHRoaXMucHJvcHMudHJlZVByb3BzO1xyXG4gICAgY29uc3QgeyB0cmVlU2VsZWN0ZWRLZXkgfSA9IHRoaXMuc3RhdGU7XHJcbiAgICBjb25zdCB7IHNlbGVjdGVkLCBzZWxlY3RlZE5vZGVzIH0gPSBvYmo7XHJcblxyXG4gICAgaWYgKHNlbGVjdGVkKSB7XHJcbiAgICAgIGtleXdvcmQgPSBzZWxlY3RlZE5vZGVzWzBdLmRhdGFyZWYuYXR0cmlidXRlW3NlYXJjaEtleV07XHJcbiAgICAgIGlmIChwYXJhbnRTZWxlY3QpIHtcclxuICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgIHRyZWVTZWxlY3RlZEtleTogc2VsZWN0ZWRLZXlzWzBdLFxyXG4gICAgICAgICAgdHJlZVNlYXJjaFByYW1zOiB7IFtzZWFyY2hGaWVsZF06IGtleXdvcmQgfSxcclxuICAgICAgICB9KTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBpZiAoc2VsZWN0ZWROb2Rlc1swXS5pc0xlYWYgfHwgIXNlbGVjdGVkTm9kZXNbMF0uY2hpbGRyZW4pIHtcclxuICAgICAgICAgIGlmIChzZWxlY3RlZEtleXNbMF0gIT09IHRyZWVTZWxlY3RlZEtleSkge1xyXG4gICAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgICAgICB0cmVlU2VsZWN0ZWRLZXk6IHNlbGVjdGVkS2V5c1swXSxcclxuICAgICAgICAgICAgICB0cmVlU2VhcmNoUHJhbXM6IHsgW3NlYXJjaEZpZWxkXToga2V5d29yZCB9LFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgIHRyZWVTZWxlY3RlZEtleToga2V5d29yZCxcclxuICAgICAgICB0cmVlU2VhcmNoUHJhbXM6IHt9LFxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLnByb3BzLm9uVHJlZVNlbGVjdCkge1xyXG4gICAgICB0aGlzLnByb3BzLm9uVHJlZVNlbGVjdChzZWxlY3RlZEtleXMsIG9iaik7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnN0IGZyb21WYWx1ZSA9IHRoaXMuc2VhcmNoUmVmPy5jdXJyZW50Py5nZXRTZWFyY2hWYWx1ZXMoKSB8fCB7fTtcclxuICAgIHNlYXJjaEZpZWxkICYmIHRoaXMudGFibGVMb2FkKHsgLi4uZnJvbVZhbHVlLCBbc2VhcmNoRmllbGRdOiBrZXl3b3JkIH0pO1xyXG4gICAgdGhpcy5wcm9wcy5vbkNhbGxCYWNrcz8udHJlZVNlbGVjdENhbGxCYWNrICYmXHJcbiAgICAgIHV0aWxzLmNhbGxiYWNrKHRoaXMucHJvcHMub25DYWxsQmFja3M/LnRyZWVTZWxlY3RDYWxsQmFjaywgdGhpcywgW1xyXG4gICAgICAgIHNlbGVjdGVkS2V5cyxcclxuICAgICAgICBvYmosXHJcbiAgICAgIF0pO1xyXG4gIH1cclxuICByZXNldFNlYXJjaCgpIHtcclxuICAgIHRoaXMuc2VhcmNoUmVmLmN1cnJlbnQ/LigpO1xyXG4gIH1cclxuICBnZXRUZXh0KHByb3BzLCB0ZXh0KSB7XHJcbiAgICBsZXQgbmV3VGV4dCA9IHRleHQ7XHJcbiAgICBpZiAocHJvcHM/LmRhdGEgJiYgcHJvcHM/LmRhdGE/Lmxlbmd0aCA+IDApIHtcclxuICAgICAgbGV0IGRhdGEgPSBwcm9wcy5kYXRhO1xyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGRhdGE/Lmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgaWYgKGRhdGFbaV0udmFsdWUgPT0gdGV4dCkge1xyXG4gICAgICAgICAgbmV3VGV4dCA9IGRhdGFbaV0ubGFiZWw7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbmV3VGV4dDtcclxuICB9XHJcbiAgc2V0VGFibGVEYXRhKGRhdGEpIHtcclxuICAgIHRoaXMudGFibGVSZWYuY3VycmVudD8uc3RvcmUuc2V0RGF0YShkYXRhKTtcclxuICB9XHJcbiAgc2V0VHJlZURhdGEoZGF0YSkge1xyXG4gICAgdGhpcy50cmVlUmVmLmN1cnJlbnQ/LnN0b3JlLnNldERhdGEoZGF0YSk7XHJcbiAgfVxyXG4gIGdldFNlbGVjdGVkS2V5ID0gKHNlbGVjdGVkKSA9PiB7XHJcbiAgICBsZXQgcmVzID0gW107XHJcbiAgICBmb3IgKGxldCBrZXkgaW4gc2VsZWN0ZWQpIHtcclxuICAgICAgY29uc3Qga2V5cyA9IHNlbGVjdGVkW2tleV07XHJcbiAgICAgIGlmIChrZXlzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICByZXMgPSBbLi4ucmVzLCAuLi5rZXlzXTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJlcztcclxuICB9O1xyXG4gIHJlbmRlcigpIHtcclxuICAgIGNvbnN0IHtcclxuICAgICAgY29sdW1ucyA9IFtdLFxyXG4gICAgICBzaG93U2VhcmNoID0gdHJ1ZSxcclxuICAgICAgY2hpbGRyZW4sXHJcbiAgICAgIHN1Ym1pdFVybCA9IFwiXCIsXHJcbiAgICAgIHRhYmxlUHJvcHMgPSB7fSxcclxuICAgICAgdHJlZVByb3BzID0ge30sXHJcbiAgICAgIGZvcm1Qcm9wcyA9IHt9LFxyXG4gICAgICBzaG93TGVmdCA9IGZhbHNlLFxyXG4gICAgICBzdWJtaXRQYXJhbXMgPSB7fSxcclxuICAgICAgc2hvd1Rvb2xCdXR0b24gPSB0cnVlLFxyXG4gICAgICBidXR0b25zID0gW10sXHJcbiAgICAgIGVkaXRvckZvcm0gPSB0cnVlLFxyXG4gICAgICBvblNob3dGb3JtLFxyXG4gICAgICBmb3JtQ2hhbmdlVmFsaWQgPSB0cnVlLFxyXG4gICAgICBjbGFzc05hbWUsXHJcbiAgICAgIHRvb2xCdXR0b25Qb3NpdGlvbiA9IFwiYnV0dG9tXCIsXHJcbiAgICAgIGFjdGlvblBvcnBzLFxyXG4gICAgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBjb25zdCB7XHJcbiAgICAgIHN0b3JlID0ge30sXHJcbiAgICAgIGZpbHRlckNvbHVtbiA9IHRydWUsXHJcbiAgICAgIGFjdGlvbkNvbHVtbiA9IHRydWUsXHJcbiAgICAgIHNob3dSb3dTZWxlY3Rpb24gPSB0cnVlLFxyXG4gICAgICBjb2x1bW5PcmRlciA9IHRydWUsXHJcbiAgICAgIHJvd1NlbGVjdGlvbiA9IHt9LFxyXG4gICAgICBleHBhbmRhYmxlID0ge30sXHJcbiAgICAgIHBhcmFudFNlbGVjdCA9IHRydWUsXHJcbiAgICAgIC4uLm90aGVydGFibGVQYXJhbXNcclxuICAgIH0gPSB0YWJsZVByb3BzO1xyXG5cclxuICAgIGNvbnN0IHtcclxuICAgICAgc3RvcmU6IHRyZWVTdG9yZSA9IHt9LFxyXG4gICAgICBzaG93U2VhcmNoOiB0cmVlU2VhcmNoID0gdHJ1ZSxcclxuICAgICAgdGl0bGVBbGlhcyA9IFwidGl0bGVcIixcclxuICAgICAgLi4ub3RoZXJ0cmVlUGFyYW1zXHJcbiAgICB9ID0gdHJlZVByb3BzO1xyXG5cclxuICAgIGxldCB0YWJsZVBhcmFtcyA9IHsgZmlsdGVyQ29sdW1uLCBzdG9yZSwgLi4ub3RoZXJ0YWJsZVBhcmFtcyB9IGFzIGFueTtcclxuICAgIGlmIChzaG93Um93U2VsZWN0aW9uKSB7XHJcbiAgICAgIHRhYmxlUGFyYW1zID0ge1xyXG4gICAgICAgIC4uLnRhYmxlUGFyYW1zLFxyXG4gICAgICAgIHJvd1NlbGVjdGlvbjoge1xyXG4gICAgICAgICAgc2VsZWN0ZWRSb3dLZXlzOiB0aGlzLnN0YXRlLnNlbGVjdGVkUm93S2V5cyxcclxuICAgICAgICAgIG9uU2VsZWN0OiB0aGlzLnJvd1NlbGVjdGlvbk9uU2VsZWN0LmJpbmQodGhpcyksXHJcbiAgICAgICAgICBvblNlbGVjdEFsbDogdGhpcy5yb3dTZWxlY3Rpb25PblNlbGVjdEFsbC5iaW5kKHRoaXMpLFxyXG4gICAgICAgICAgY29sdW1uV2lkdGg6IDQwLFxyXG4gICAgICAgICAgLi4ucm93U2VsZWN0aW9uLFxyXG4gICAgICAgIH0sXHJcbiAgICAgIH07XHJcbiAgICB9XHJcbiAgICBsZXQgdGFibGVDb2x1bW46IGFueVtdID0gW107XHJcbiAgICBjb25zdCBzZWFyY2hGb3JtczogYW55ID0gW107XHJcbiAgICBjb25zdCBlZGl0b3JGb3JtczogYW55ID0gW107XHJcbiAgICBjb25zdCBkZWZhdWx0VmFsdWU6IGFueSA9IHt9O1xyXG4gICAgY29uc3QgY29sdW1uQnV0dG9uczogYW55ID0gW107XHJcbiAgICBjb2x1bW5zLm1hcCgoaXRlbTogYW55KSA9PiB7XHJcbiAgICAgIGxldCB0ZW1wID0geyAuLi5pdGVtIH07XHJcbiAgICAgIGlmICh0ZW1wLnNlYXJjaCA9PT0gdHJ1ZSB8fCB0ZW1wLnNlYXJjaD8uc2hvdyA9PT0gdHJ1ZSkge1xyXG4gICAgICAgIHNlYXJjaEZvcm1zLnB1c2goe1xyXG4gICAgICAgICAgbmFtZTogdGVtcC5maWVsZCB8fCB0ZW1wLmRhdGFJbmRleCxcclxuICAgICAgICAgIGxhYmVsOiB0ZW1wLnNlYXJjaD8ubGFiZWwgfHwgdGVtcC50aXRsZSxcclxuICAgICAgICAgIHR5cGU6IHRlbXAudHlwZSxcclxuICAgICAgICAgIHByb3BzOiB0ZW1wLnByb3BzLFxyXG4gICAgICAgICAgbGFiZWxDb2w6IHRlbXAuc2VhcmNoPy5sYWJlbENvbCxcclxuICAgICAgICAgIHdyYXBwZXJDb2w6IHRlbXAuc2VhcmNoPy53cmFwcGVyQ29sLFxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICAgIGRlbGV0ZSB0ZW1wLnNlYXJjaDtcclxuICAgICAgdGVtcC5lZGl0b3IgIT09IGZhbHNlICYmXHJcbiAgICAgICAgZWRpdG9yRm9ybXMucHVzaCh7XHJcbiAgICAgICAgICBuYW1lOiB0ZW1wLmZpZWxkIHx8IHRlbXAuZGF0YUluZGV4LFxyXG4gICAgICAgICAgbGFiZWw6IHRlbXAudGl0bGUsXHJcbiAgICAgICAgICBydWxlczogdGVtcC5ydWxlcyA/IHRlbXAucnVsZXMgOiBbXSxcclxuICAgICAgICAgIHR5cGU6IHRlbXAudHlwZSxcclxuICAgICAgICAgIHNwYW46IHRlbXAuc3BhbixcclxuICAgICAgICAgIGRpY3ROYW1lOiB0ZW1wLmRpY3ROYW1lLFxyXG4gICAgICAgICAgcHJvcHM6IG9taXQoeyAuLi50ZW1wLnByb3BzIH0sIFtcImRlZmF1bHRWYWx1ZVwiLCBcInZhbHVlXCJdKSxcclxuICAgICAgICB9KTtcclxuICAgICAgaWYgKFxyXG4gICAgICAgIHRlbXAucHJvcHM/LmRlZmF1bHRWYWx1ZSAhPT0gdW5kZWZpbmVkICYmXHJcbiAgICAgICAgdGVtcC5wcm9wcz8uZGVmYXVsdFZhbHVlICE9PSBudWxsXHJcbiAgICAgICkge1xyXG4gICAgICAgIGNvbnN0IG5hbWUgPSB0ZW1wLmZpZWxkIHx8IHRlbXAuZGF0YUluZGV4O1xyXG4gICAgICAgIGRlZmF1bHRWYWx1ZVtuYW1lXSA9IHRlbXAucHJvcHM/LmRlZmF1bHRWYWx1ZTtcclxuICAgICAgfVxyXG4gICAgICBkZWxldGUgdGVtcC5ydWxlcztcclxuICAgICAgZGVsZXRlIHRlbXAuc3BhbjtcclxuICAgICAgaWYgKHRlbXAuY29sdW1uU2VhcmNoKSB7XHJcbiAgICAgICAgdGVtcC5maWx0ZXJQcm9wcyA9IHtcclxuICAgICAgICAgIHR5cGU6IHRlbXAudHlwZSxcclxuICAgICAgICAgIHByb3BzOiB0ZW1wLnByb3BzLFxyXG4gICAgICAgIH07XHJcbiAgICAgIH1cclxuICAgICAgZGVsZXRlIHRlbXAudHlwZTtcclxuICAgICAgbGV0IHRlbXBQcm9wID0geyAuLi50ZW1wLnByb3BzIH07XHJcbiAgICAgIGlmICh0ZW1wLnN0eWxlKSB7XHJcbiAgICAgICAgdGVtcCA9IHtcclxuICAgICAgICAgIHJlbmRlcjogKHRleHQ6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICAgIDw+XHJcbiAgICAgICAgICAgICAgICB7dGV4dCAhPT0gXCJcIiAmJiB0ZXh0ICE9PSBudWxsICYmIHRleHQgIT09IHVuZGVmaW5lZCAmJiAoXHJcbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwiY29sLWJhY2tcIil9PlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwiY29sLXRleHRcIil9PlxyXG4gICAgICAgICAgICAgICAgICAgICAge3RoaXMuZ2V0VGV4dCh0ZW1wUHJvcCwgdGV4dCl9XHJcbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICAgIDwvPlxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIGVsbGlwc2lzOiB0cnVlLFxyXG4gICAgICAgICAgLi4udGVtcCxcclxuICAgICAgICB9O1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRlbXAgPSB7XHJcbiAgICAgICAgICByZW5kZXI6ICh0ZXh0OiBhbnkpID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuIDw+e3RoaXMuZ2V0VGV4dCh0ZW1wUHJvcCwgdGV4dCl9PC8+O1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIC4uLnRlbXAsXHJcbiAgICAgICAgfTtcclxuICAgICAgfVxyXG4gICAgICBkZWxldGUgdGVtcC5wcm9wcztcclxuICAgICAgaWYgKHRlbXA/LmNvbHVtblNob3cgIT09IGZhbHNlKSB0YWJsZUNvbHVtbi5wdXNoKHRlbXApO1xyXG4gICAgfSk7XHJcbiAgICBjb25zdCBzZWxmQnV0dG9uczogYW55ID0gW107XHJcbiAgICBjb25zdCB7IGJhc2VBY3Rpb25Db2x1bW4gfSA9IGNvbmZpZygpO1xyXG4gICAgbGV0IHNob3dJY29uID0gdHJ1ZTtcclxuICAgIGlmIChhY3Rpb25Qb3Jwcz8uc2hvd0ljb24gPT09IGZhbHNlKSBzaG93SWNvbiA9IGZhbHNlO1xyXG4gICAgZWxzZSBpZiAoYmFzZUFjdGlvbkNvbHVtbi5zaG93SWNvbiA9PT0gZmFsc2UpIHNob3dJY29uID0gZmFsc2U7XHJcbiAgICBpZiAoZWRpdG9yRm9ybSA9PSB0cnVlKSB7XHJcbiAgICAgIGlmIChidXR0b25zLmluZGV4T2YoXCJzZWFyY2hcIikgPiAtMSkge1xyXG4gICAgICAgIGNvbHVtbkJ1dHRvbnMucHVzaChcclxuICAgICAgICAgIDxCdXR0b25cclxuICAgICAgICAgICAgb25DbGljaz17KHJlY29yZDogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgaWYgKG9uU2hvd0Zvcm0pIHtcclxuICAgICAgICAgICAgICAgIG9uU2hvd0Zvcm0ocmVjb3JkLmF0dHJpYnV0ZSB8fCByZWNvcmQsIFwiZGV0YWlsXCIpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB0aGlzLnNob3dGb3JtKHJlY29yZC5hdHRyaWJ1dGUgfHwgcmVjb3JkLCBcImRldGFpbFwiKTtcclxuICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgaWNvbj17PEV5ZU91dGxpbmVkIC8+fVxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICDmn6XnnItcclxuICAgICAgICAgIDwvQnV0dG9uPlxyXG4gICAgICAgICk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKGJ1dHRvbnMuaW5kZXhPZihcImVkaXRvclwiKSA+IC0xKSB7XHJcbiAgICAgICAgY29sdW1uQnV0dG9ucy5wdXNoKFxyXG4gICAgICAgICAgPEJ1dHRvblxyXG4gICAgICAgICAgICBvbkNsaWNrPXsocmVjb3JkOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICBpZiAob25TaG93Rm9ybSkge1xyXG4gICAgICAgICAgICAgICAgb25TaG93Rm9ybShyZWNvcmQuYXR0cmlidXRlIHx8IHJlY29yZCwgXCJlZGl0b3JcIik7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIHRoaXMuc2hvd0Zvcm0ocmVjb3JkLmF0dHJpYnV0ZSB8fCByZWNvcmQsIFwiZWRpdG9yXCIpO1xyXG4gICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICBpY29uPXs8RWRpdE91dGxpbmVkIC8+fVxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICDnvJbovpFcclxuICAgICAgICAgIDwvQnV0dG9uPlxyXG4gICAgICAgICk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGlmIChidXR0b25zLmluZGV4T2YoXCJhZGRcIikgPiAtMSkge1xyXG4gICAgICBzZWxmQnV0dG9ucy5wdXNoKFxyXG4gICAgICAgIDxCdXR0b25cclxuICAgICAgICAgIHR5cGU9e1wicHJpbWFyeVwifVxyXG4gICAgICAgICAgb25DbGljaz17KCkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCB7IG9uU2hvd0Zvcm0gfSA9IHRoaXMucHJvcHM7XHJcbiAgICAgICAgICAgIGlmIChvblNob3dGb3JtKSB7XHJcbiAgICAgICAgICAgICAgb25TaG93Rm9ybSgpO1xyXG4gICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLnNob3dGb3JtKCk7XHJcbiAgICAgICAgICB9fVxyXG4gICAgICAgICAgaWNvbj17PFBsdXNPdXRsaW5lZCAvPn1cclxuICAgICAgICA+XHJcbiAgICAgICAgICDmt7vliqBcclxuICAgICAgICA8L0J1dHRvbj5cclxuICAgICAgKTtcclxuICAgIH1cclxuICAgIGlmIChidXR0b25zLmluZGV4T2YoXCJkZWxldGVcIikgPiAtMSkge1xyXG4gICAgICBzZWxmQnV0dG9ucy5wdXNoKFxyXG4gICAgICAgIDxCdXR0b25cclxuICAgICAgICAgIC8vIHR5cGU9e1wicHJpbWFyeVwifVxyXG4gICAgICAgICAgb25DbGljaz17dGhpcy5vbkRlbGV0ZS5iaW5kKHRoaXMpfVxyXG4gICAgICAgICAgaWNvbj17PEljb24gdHlwZT17aWNvblR5cGUuZGVsZXRlM30gLz59XHJcbiAgICAgICAgICBkYW5nZXJcclxuICAgICAgICA+XHJcbiAgICAgICAgICDliKDpmaRcclxuICAgICAgICA8L0J1dHRvbj5cclxuICAgICAgKTtcclxuICAgIH1cclxuICAgIGlmIChBcnJheS5pc0FycmF5KGNoaWxkcmVuKSkge1xyXG4gICAgICBjaGlsZHJlbi5tYXAoKGl0ZW06IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChpdGVtPy5wcm9wcz8ucGFnZVR5cGUgPT0gXCJ0b29sQnV0dG9uXCIpIHtcclxuICAgICAgICAgIHNlbGZCdXR0b25zLnB1c2goaXRlbSk7XHJcbiAgICAgICAgfSBlbHNlIGlmIChpdGVtPy5wcm9wcz8ucGFnZVR5cGUgPT0gXCJjbG91bW5CdXR0b25cIikge1xyXG4gICAgICAgICAgY29sdW1uQnV0dG9ucy5wdXNoKGl0ZW0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2UgaWYgKGNoaWxkcmVuKSB7XHJcbiAgICAgIGNvbnN0IHsgcHJvcHMgfTogYW55ID0gY2hpbGRyZW47XHJcbiAgICAgIGlmIChwcm9wcz8ucGFnZVR5cGUgPT0gXCJ0b29sQnV0dG9uXCIpIHtcclxuICAgICAgICBzZWxmQnV0dG9ucy5wdXNoKGNoaWxkcmVuKTtcclxuICAgICAgfSBlbHNlIGlmIChwcm9wcz8ucGFnZVR5cGUgPT0gXCJjbG91bW5CdXR0b25cIikge1xyXG4gICAgICAgIGNvbHVtbkJ1dHRvbnMucHVzaChjaGlsZHJlbik7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGFjdGlvbkNvbHVtbiAmJlxyXG4gICAgICB0YWJsZUNvbHVtbi5wdXNoKHtcclxuICAgICAgICB0aXRsZTogXCLmk43kvZxcIixcclxuICAgICAgICBkYXRhSW5kZXg6IFwiYWN0aW9uXCIsXHJcbiAgICAgICAgYWxpZ246IGFjdGlvblBvcnBzPy50ZXh0QWxpZ25cclxuICAgICAgICAgID8gYWN0aW9uUG9ycHM/LnRleHRBbGlnblxyXG4gICAgICAgICAgOiBiYXNlQWN0aW9uQ29sdW1uLnRleHRBbGlnblxyXG4gICAgICAgICAgPyBiYXNlQWN0aW9uQ29sdW1uLnRleHRBbGlnblxyXG4gICAgICAgICAgOiBcImNlbnRlclwiLFxyXG4gICAgICAgIHdpZHRoOiBhY3Rpb25Qb3Jwcz8ud2lkdGhcclxuICAgICAgICAgID8gYWN0aW9uUG9ycHM/LndpZHRoXHJcbiAgICAgICAgICA6IGJhc2VBY3Rpb25Db2x1bW4ud2lkdGhcclxuICAgICAgICAgID8gYmFzZUFjdGlvbkNvbHVtbi53aWR0aFxyXG4gICAgICAgICAgOiAyMDAsXHJcbiAgICAgICAgZml4ZWQ6IFwicmlnaHRcIixcclxuICAgICAgICBlbGxpcHNpczogdHJ1ZSxcclxuICAgICAgICByZW5kZXI6ICh0ZXh0OiBhbnksIHJlY29yZDogYW55KSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwiYWN0aW9uXCIpfT5cclxuICAgICAgICAgICAgICB7dGhpcy5yZW5kZXJDbG91bW5CdXR0b24oY29sdW1uQnV0dG9ucywgcmVjb3JkKX1cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH0sXHJcbiAgICAgIH0pO1xyXG4gICAgaWYgKGNvbHVtbk9yZGVyKVxyXG4gICAgICB0YWJsZUNvbHVtbiA9IFtcclxuICAgICAgICB7XHJcbiAgICAgICAgICB0aXRsZTogXCLluo/lj7dcIixcclxuICAgICAgICAgIHdpZHRoOiA4MCxcclxuICAgICAgICAgIGFsaWduOiBcImNlbnRlclwiLFxyXG4gICAgICAgICAgcmVuZGVyOiAodGV4dCwgcmVhY29yZCwgaW5kZXgpID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuIDw+e2luZGV4ICsgMX08Lz47XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgLi4udGFibGVDb2x1bW4sXHJcbiAgICAgIF07XHJcbiAgICBsZXQgc2VhcmNoRmxhZyA9IHNob3dTZWFyY2ggJiYgc2VhcmNoRm9ybXMubGVuZ3RoID4gMDtcclxuICAgIGxldCB0b29sRmxhZyA9IHNob3dUb29sQnV0dG9uICYmIHNlbGZCdXR0b25zLmxlbmd0aCA+IDA7XHJcbiAgICBpZiAodGFibGVQcm9wcy5wYWdpbmF0aW9uICE9PSBmYWxzZSkge1xyXG4gICAgICBjb25zdCBzY3JvbGwgPSB0YWJsZVBhcmFtcy5zY3JvbGw7XHJcbiAgICAgIHRhYmxlUGFyYW1zID0ge1xyXG4gICAgICAgIC4uLnRhYmxlUGFyYW1zLFxyXG4gICAgICAgIHNjcm9sbDogeyB4OiBcIm1heC1jb250ZW50XCIsIC4uLnNjcm9sbCB9LFxyXG4gICAgICB9O1xyXG4gICAgfVxyXG4gICAgbGV0IHsgdGFibGVUb29sIH0gPSBjb25maWcoKTtcclxuICAgIHJldHVybiAoXHJcbiAgICAgIDxkaXYgY2xhc3NOYW1lPXtjbHMoZ2V0TGVzcyhzdHlsZXMsIFwicGFnZVwiKSwgY2xhc3NOYW1lKX0+XHJcbiAgICAgICAge3RoaXMucHJvcHMucGFnZVRpdGxlICYmIChcclxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtjbHMoZ2V0TGVzcyhzdHlsZXMsIFwicGFnZS10aXRsZVwiKSl9PlxyXG4gICAgICAgICAgICB7dGhpcy5wcm9wcy5wYWdlVGl0bGV9XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICApfVxyXG4gICAgICAgIDxkaXZcclxuICAgICAgICAgIGNsYXNzTmFtZT17Y2xzKGdldExlc3Moc3R5bGVzLCBcInBhZ2UtcGFuZVwiKSl9XHJcbiAgICAgICAgICBzdHlsZT17eyBkaXNwbGF5OiBcImZsZXhcIiB9fVxyXG4gICAgICAgID5cclxuICAgICAgICAgIHtzaG93TGVmdCAmJiAoXHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJsZWZ0XCIpfT5cclxuICAgICAgICAgICAgICA8VHJlZVxyXG4gICAgICAgICAgICAgICAgc3RvcmU9e3sgLi4udHJlZVN0b3JlIH19XHJcbiAgICAgICAgICAgICAgICBzaG93SWNvbj17ZmFsc2V9XHJcbiAgICAgICAgICAgICAgICBjaGVja2FibGU9e2ZhbHNlfVxyXG4gICAgICAgICAgICAgICAgc2VhcmNoYWJsZT17dHJlZVNlYXJjaH1cclxuICAgICAgICAgICAgICAgIG9uU2VsZWN0PXt0aGlzLnRyZWVTZWxlY3QuYmluZCh0aGlzKX1cclxuICAgICAgICAgICAgICAgIHNlbGVjdGVkS2V5cz17W3RoaXMuc3RhdGUudHJlZVNlbGVjdGVkS2V5XX1cclxuICAgICAgICAgICAgICAgIHRpdGxlQWxpYXM9e3RpdGxlQWxpYXN9XHJcbiAgICAgICAgICAgICAgICB7Li4ub3RoZXJ0cmVlUGFyYW1zfVxyXG4gICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgKX1cclxuICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgY2xhc3NOYW1lPXtjbHMoZ2V0TGVzcyhzdHlsZXMsIFwicmlnaHRcIiksIHtcclxuICAgICAgICAgICAgICBbZ2V0TGVzcyhzdHlsZXMsIFwibm8tbGVmdC1yaWdodFwiKV06ICFzaG93TGVmdCxcclxuICAgICAgICAgICAgfSl9XHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIHtzaG93U2VhcmNoICYmIHNlYXJjaEZvcm1zLmxlbmd0aCA+IDAgJiYgKFxyXG4gICAgICAgICAgICAgIDxIZWFkZXJTZWFyY2hcclxuICAgICAgICAgICAgICAgIHNlYXJjaEZvcm1zPXtzZWFyY2hGb3Jtc31cclxuICAgICAgICAgICAgICAgIHRvb2xCdXR0b25Qb3NpdGlvbj17dG9vbEJ1dHRvblBvc2l0aW9ufVxyXG4gICAgICAgICAgICAgICAgb25TZWFyY2g9e3RoaXMub25TZWFyY2guYmluZCh0aGlzKX1cclxuICAgICAgICAgICAgICAgIG9uUmVzZXQ9e3RoaXMucHJvcHMub25SZXNldH1cclxuICAgICAgICAgICAgICAgIHJlZj17dGhpcy5zZWFyY2hSZWZ9XHJcbiAgICAgICAgICAgICAgICBzZWFyY2hGb3JtUHJvcHM9e3RoaXMucHJvcHMuc2VhcmNoRm9ybVByb3BzfVxyXG4gICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICl9XHJcblxyXG4gICAgICAgICAgICB7c2hvd1Rvb2xCdXR0b24gJiZcclxuICAgICAgICAgICAgICBzZWxmQnV0dG9ucy5sZW5ndGggPiAwICYmXHJcbiAgICAgICAgICAgICAgdG9vbEJ1dHRvblBvc2l0aW9uID09IFwiYnV0dG9tXCIgJiZcclxuICAgICAgICAgICAgICB0aGlzLnJlbmRlclRvb2xCdXR0b25zKHNlbGZCdXR0b25zLCBzZWFyY2hGb3Jtcy5sZW5ndGggPT0gMCl9XHJcbiAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICBjbGFzc05hbWU9e2NscyhnZXRMZXNzKHN0eWxlcywgXCJ0YWJsZVwiKSwge1xyXG4gICAgICAgICAgICAgICAgW2dldExlc3Moc3R5bGVzLCBcInRhYmxlLXRvcFwiKV06XHJcbiAgICAgICAgICAgICAgICAgIChzZWFyY2hGbGFnICYmICF0b29sRmxhZykgfHxcclxuICAgICAgICAgICAgICAgICAgdGFibGVQcm9wcy50b29sYmFyID09IGZhbHNlIHx8XHJcbiAgICAgICAgICAgICAgICAgIHRhYmxlUHJvcHMudG9vbGJhcj8udG9vbHM/Lmxlbmd0aCA9PSAwIHx8XHJcbiAgICAgICAgICAgICAgICAgIHRhYmxlVG9vbD8udG9vbHM/Lmxlbmd0aCA9PSAwLFxyXG4gICAgICAgICAgICAgIH0pfVxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPFRhYmxlXHJcbiAgICAgICAgICAgICAgICByZWY9e3RoaXMudGFibGVSZWZ9XHJcbiAgICAgICAgICAgICAgICBjb2x1bW5zPXt0YWJsZUNvbHVtbn1cclxuICAgICAgICAgICAgICAgIGV4cGFuZGFibGU9e3tcclxuICAgICAgICAgICAgICAgICAgZXhwYW5kSWNvbjogKHsgZXhwYW5kZWQsIG9uRXhwYW5kLCByZWNvcmQgfSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgICAgICAgICAgICA8PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7ZXhwYW5kZWQgPyAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPERvd25PdXRsaW5lZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KGUpID0+IG9uRXhwYW5kKHJlY29yZCwgZSl9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcImV4cGFuZC1pY29uXCIpfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICkgOiAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjb3JkLmNoaWxkTm9kZXMgJiYgKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPFJpZ2h0T3V0bGluZWRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KGUpID0+IG9uRXhwYW5kKHJlY29yZCwgZSl9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwiZXhwYW5kLWljb25cIil9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgICAgICAgICAgIDwvPlxyXG4gICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgIC4uLmV4cGFuZGFibGUsXHJcbiAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgY29sdW1uT3JkZXI9e3RydWV9XHJcbiAgICAgICAgICAgICAgICBvbkNoYW5nZT17KHBhZ2luYXRpb24pID0+IHtcclxuICAgICAgICAgICAgICAgICAgY29uc3QgeyBjdXJyZW50UGFnZSB9ID0gdGhpcy5zdGF0ZTtcclxuICAgICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRQYWdlICE9PSBwYWdpbmF0aW9uLmN1cnJlbnQpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRQYWdlOiBwYWdpbmF0aW9uLmN1cnJlbnQsXHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICB0b29sYmFyPXt7XHJcbiAgICAgICAgICAgICAgICAgIG9uVG9vbENsaWNrOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgb25SZWZyZXNoOiAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwYXJhbXMgPSB0aGlzLmdldFNlYXJjaFZhbHVlcygpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy50YWJsZUxvYWQocGFyYW1zKTtcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAuLi50YWJsZVByb3BzLnRvb2xiYXIsXHJcbiAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgey4uLnRhYmxlUGFyYW1zfVxyXG4gICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICB7ZWRpdG9yRm9ybSAmJiAoXHJcbiAgICAgICAgICAgIDxFZGl0b3JGb3JtXHJcbiAgICAgICAgICAgICAgcmVmPXt0aGlzLmVkaXRvclJlZn1cclxuICAgICAgICAgICAgICBjYWxsQmFjaz17dGhpcy50YWJsZVJlbG9hZC5iaW5kKHRoaXMpfVxyXG4gICAgICAgICAgICAgIGZvcm1Qcm9wcz17ZWRpdG9yRm9ybXN9XHJcbiAgICAgICAgICAgICAgc3VibWl0VXJsPXtzdWJtaXRVcmx9XHJcbiAgICAgICAgICAgICAgc3VibWl0UGFyYW1zPXtzdWJtaXRQYXJhbXN9XHJcbiAgICAgICAgICAgICAgb25TdWJtaXQ9e3RoaXMucHJvcHMub25TdWJtaXR9XHJcbiAgICAgICAgICAgICAgZGVmYXVsdFZhbHVlPXtkZWZhdWx0VmFsdWV9XHJcbiAgICAgICAgICAgICAgb25IaWRlRm9ybT17dGhpcy5wcm9wcy5vbkhpZGVGb3JtfVxyXG4gICAgICAgICAgICAgIG9uRm9ybUNoYW5nZT17dGhpcy5wcm9wcy5vbkZvcm1DaGFuZ2V9XHJcbiAgICAgICAgICAgICAgZm9ybVR5cGU9e3RoaXMucHJvcHMuZm9ybVR5cGUgfHwgXCJhdXRvXCJ9XHJcbiAgICAgICAgICAgICAgY2hhbmdlVmFsaWQ9e2Zvcm1DaGFuZ2VWYWxpZH1cclxuICAgICAgICAgICAgICBvdGhlclByb3BzPXt7IC4uLmZvcm1Qcm9wcyB9fVxyXG4gICAgICAgICAgICAvPlxyXG4gICAgICAgICAgKX1cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICApO1xyXG4gIH1cclxufVxyXG5leHBvcnQgZGVmYXVsdCBCYXNlUGFnZTtcclxuIl19
|