nsc-react-component 2.14.9 → 2.14.11

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.
@@ -338,13 +338,17 @@ class BasePage extends PureComponent {
338
338
  }
339
339
  renderCloumnButton(columnButtons, record) {
340
340
  const {
341
- actionProps
341
+ actionProps,
342
+ tableProps = {}
342
343
  } = this.props;
343
344
  const {
344
345
  baseActionColumn
345
346
  } = config();
346
347
  const newButtons = [];
347
348
  let showIcon = true;
349
+ const {
350
+ rowKey = "id"
351
+ } = tableProps;
348
352
  if ((actionProps === null || actionProps === void 0 ? void 0 : actionProps.showIcon) === false) showIcon = false;else if (baseActionColumn.showIcon === false) showIcon = false;
349
353
  columnButtons.map((item, index) => {
350
354
  const _item$props2 = item.props,
@@ -434,11 +438,11 @@ class BasePage extends PureComponent {
434
438
  content: content,
435
439
  trigger: ["click"],
436
440
  key: index,
437
- visible: this.state.popopens[record.id] || false,
441
+ visible: this.state.popopens[record[rowKey]] || false,
438
442
  onVisibleChange: visibale => {
439
443
  if (visibale) {
440
444
  let data = {};
441
- data[record.id] = true;
445
+ data[record[rowKey]] = true;
442
446
  this.setState({
443
447
  popopens: data
444
448
  });
@@ -891,4 +895,4 @@ class BasePage extends PureComponent {
891
895
  }
892
896
  }
893
897
  export default BasePage;
894
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsIlB1cmVDb21wb25lbnQiLCJUYWJsZSIsIlRyZWUiLCJCdXR0b24iLCJNb2RhbCIsIlBvcG92ZXIiLCJtZXNzYWdlIiwiRWRpdG9yRm9ybSIsImNscyIsInN0eWxlcyIsInV0aWxzIiwiRG93bk91dGxpbmVkIiwiRXllT3V0bGluZWQiLCJFZGl0T3V0bGluZWQiLCJSaWdodE91dGxpbmVkIiwiUGx1c091dGxpbmVkIiwiRWxsaXBzaXNPdXRsaW5lZCIsIkRlbGV0ZU91dGxpbmVkIiwiZ2V0TGVzcyIsInJlcXVlc3QiLCJjb25maWciLCJnZXRTdG9yYWdlIiwiSGVhZGVyU2VhcmNoIiwiQmFzZVBhZ2UiLCJjb25zdHJ1Y3RvciIsInByb3BzIiwiX3R5cGUiLCJfc2l6ZSIsIl9kZWZpbmVQcm9wZXJ0eSIsImNyZWF0ZVJlZiIsImNoZWNrZWRUcmVlS2V5cyIsIm5hbWUiLCJ1c2VyVHlwZSIsImFjY291bnQiLCJzdGF0ZSIsInZhbHVlIiwiZGVwdElkIiwib25TZWFyY2giLCJzZWxlY3RlZCIsInJlcyIsImtleSIsImtleXMiLCJsZW5ndGgiLCJzdG9yZVByZWZpeCIsInR5cGUiLCJjb250ZW50Iiwic2l6ZSIsInNlbGVjdGVkUm93S2V5cyIsInNlbGVjdGVkUm93RGF0YXMiLCJ0cmVlU2VsZWN0ZWRLZXkiLCJleHBhbmQiLCJmb3JtVHlwZSIsInRhYmxlU2l6ZSIsInRyZWVTZWFyY2hQcmFtcyIsInBvcG9wZW5zIiwiY29tcG9uZW50RGlkTW91bnQiLCJpbml0RGF0YSIsInNldFNlYXJjaFBhcmFtcyIsInBhcmFtcyIsImNhbGxCYWNrIiwiX3RoaXMkc2VhcmNoUmVmJGN1cnJlIiwic2VhcmNoUmVmIiwiY3VycmVudCIsImRvU3VibWl0IiwiZGF0YSIsIl90aGlzJGVkaXRvclJlZiRjdXJyZSIsImxhYmVsIiwiYXJndW1lbnRzIiwidW5kZWZpbmVkIiwiZWRpdG9yUmVmIiwic2hvd0Zvcm0iLCJfdGhpcyRlZGl0b3JSZWYkY3VycmUyIiwiZWRpdG9yZmxhZyIsInNob3ciLCJoaWRlRm9ybSIsIl90aGlzJGVkaXRvclJlZiRjdXJyZTMiLCJzZXRMb2FkaW5nIiwibG9hZGluZyIsIl90aGlzJGVkaXRvclJlZiRjdXJyZTQiLCJzZXRFZGl0Rm9ybVZhbHVlcyIsIl90aGlzJGVkaXRvclJlZiRjdXJyZTUiLCJzZXRGaWVsZHNWYWx1ZSIsImdldEVkaXRGb3JtVmFsdWVzIiwiX3RoaXMkZWRpdG9yUmVmJGN1cnJlNiIsImdldEZpZWxkc1ZhbHVlIiwib25EZWxldGUiLCJfdGhpcyR0YWJsZVJlZiRjdXJyZW4iLCJkZWxldGVVcmwiLCJkZWxldGVQYXJhbXMiLCJkZWxldGVQb3NpdGlvbiIsIl90aGlzIiwidGFibGVSZWYiLCJnZXRTZWxlY3RlZFJvd0tleXMiLCJ3YXJuaW5nIiwiY29uZmlybSIsIm9uT2siLCJFcnJvciIsImRlZmF1bHRQYXJhbXMiLCJtZXRob2QiLCJhdXRvUHJlZml4IiwiaWRzIiwiam9pbiIsImlkIiwicmVxdWVzdFBhcmFtcyIsIl9vYmplY3RTcHJlYWQiLCJ0aGVuIiwiY29kZSIsIl90aGlzJHNlYXJjaFJlZiIsIl90aGlzJHByb3BzJG9uQ2FsbEJhYyIsIl90aGlzJHByb3BzJG9uQ2FsbEJhYzIiLCJzdWNjZXNzIiwiZ2V0U2VhcmNoVmFsdWVzIiwib25DYWxsQmFja3MiLCJvbkRlbGV0ZUNhbGxCYWNrIiwidGFibGVMb2FkIiwiZXJyb3IiLCJjYXRjaCIsImNvbnNvbGUiLCJsb2ciLCJfdGhpcyR0YWJsZVJlZiRjdXJyZW4yIiwicmVxdWVzdENvbmZpZyIsInN0b3JlIiwibG9hZCIsIm9uU2VhcmNoQ2FsbEJhY2siLCJjYWxsYmFjayIsInRhYmxlUmVsb2FkIiwiX3RoaXMkdGFibGVSZWYkY3VycmVuMyIsImF1dG9Mb2FkIiwicmVsb2FkIiwiX3JlcyRkYXRhIiwicmVjb3JkcyIsImN1cnJlbnRQYWdlIiwiX3RoaXMkdGFibGVSZWYkY3VycmVuNCIsIl90aGlzJHRhYmxlUmVmJGN1cnJlbjUiLCJnZXRTZWxlY3RlZFJvd0RhdGFzIiwiX3RoaXMkdGFibGVSZWYkY3VycmVuNiIsInNldFNlbGVjdGVkUm93S2V5cyIsIl90aGlzJHRhYmxlUmVmJGN1cnJlbjciLCJzZXRTZWxlY3RlZFJvd0RhdGFzIiwiX3RoaXMkdGFibGVSZWYkY3VycmVuOCIsInJlc2V0U2VsZWN0ZWRSb3dLZXlzIiwiX3RoaXMkdGFibGVSZWYkY3VycmVuOSIsIl90aGlzJHNlYXJjaFJlZjIiLCJmcm9tVmFsdWUiLCJnZXRDaGlsZHJlbkRhdGEiLCJ0YWJsZVByb3BzIiwicm93S2V5IiwicmVzS2V5IiwiY2hpbGROb2RlcyIsImNoaWxkcmVuIiwibWFwIiwiaXRlbSIsImluZGV4IiwicmVuZGVyVG9vbEJ1dHRvbnMiLCJ0b29sYnV0dG9ucyIsIm1hcmdpbmZsYWciLCJmbGFnIiwic2hvd1NlYXJjaCIsIl9pdGVtJHByb3BzIiwicGFnZVR5cGUiLCJvbkNsaWNrIiwiaWNvbiIsIl9vYmplY3RXaXRob3V0UHJvcGVydGllcyIsIl9leGNsdWRlZCIsImNyZWF0ZUVsZW1lbnQiLCJfZXh0ZW5kcyIsImNsYXNzTmFtZSIsInN0eWxlIiwibWFyZ2luTGVmdCIsInRpdGxlIiwicGxhY2VtZW50IiwidHJpZ2dlciIsInJlbmRlckNsb3VtbkJ1dHRvbiIsImNvbHVtbkJ1dHRvbnMiLCJyZWNvcmQiLCJhY3Rpb25Qcm9wcyIsImJhc2VBY3Rpb25Db2x1bW4iLCJuZXdCdXR0b25zIiwic2hvd0ljb24iLCJfaXRlbSRwcm9wczIiLCJyZWNvcmRTaG93IiwiX2V4Y2x1ZGVkMiIsImV2YWwiLCJwdXNoIiwiX2l0ZW0kcHJvcHMzIiwiX2V4Y2x1ZGVkMyIsInNldFN0YXRlIiwiX2l0ZW0kcHJvcHM0IiwiX2V4Y2x1ZGVkNCIsInZpc2libGUiLCJvblZpc2libGVDaGFuZ2UiLCJ2aXNpYmFsZSIsInRyZWVTZWxlY3QiLCJzZWxlY3RlZEtleXMiLCJvYmoiLCJfdGhpcyRzZWFyY2hSZWYzIiwiX3RoaXMkcHJvcHMkb25DYWxsQmFjMyIsIl90aGlzJHByb3BzJG9uQ2FsbEJhYzQiLCJrZXl3b3JkIiwic2VhcmNoS2V5Iiwic2VhcmNoRmllbGQiLCJwYXJhbnRTZWxlY3QiLCJ0cmVlUHJvcHMiLCJzZWxlY3RlZE5vZGVzIiwiZGF0YXJlZiIsImF0dHJpYnV0ZSIsImlzTGVhZiIsIm9uVHJlZVNlbGVjdCIsInRyZWVTZWxlY3RDYWxsQmFjayIsInJlc2V0U2VhcmNoIiwiX3RoaXMkc2VhcmNoUmVmJGN1cnJlMiIsInJlc2V0RmllbGRzIiwiZ2V0VGV4dCIsInRleHQiLCJfcHJvcHMkZGF0YSIsIm5ld1RleHQiLCJpIiwic2V0VGFibGVEYXRhIiwiX3RoaXMkdGFibGVSZWYkY3VycmVuMTAiLCJzZXREYXRhIiwic2V0VHJlZURhdGEiLCJfdGhpcyR0cmVlUmVmJGN1cnJlbnQiLCJ0cmVlUmVmIiwicmVuZGVyIiwiX3RhYmxlUHJvcHMkdG9vbGJhciIsIl90YWJsZVByb3BzJHRvb2xiYXIyIiwiY29sdW1ucyIsInN1Ym1pdFVybCIsImZvcm1Qcm9wcyIsInNob3dMZWZ0Iiwic3VibWl0UGFyYW1zIiwic2hvd1Rvb2xCdXR0b24iLCJidXR0b25zIiwiZWRpdG9yRm9ybSIsIm9uU2hvd0Zvcm0iLCJmb3JtQ2hhbmdlVmFsaWQiLCJ0b29sQnV0dG9uUG9zaXRpb24iLCJmaWx0ZXJDb2x1bW4iLCJhY3Rpb25Db2x1bW4iLCJzaG93Um93U2VsZWN0aW9uIiwiY29sdW1uT3JkZXIiLCJleHBhbmRhYmxlIiwib3RoZXJ0YWJsZVBhcmFtcyIsIl9leGNsdWRlZDUiLCJ0cmVlU3RvcmUiLCJ0cmVlU2VhcmNoIiwidGl0bGVBbGlhcyIsIm90aGVydHJlZVBhcmFtcyIsIl9leGNsdWRlZDYiLCJ0YWJsZVBhcmFtcyIsInRhYmxlQ29sdW1uIiwic2VhcmNoRm9ybXMiLCJlZGl0b3JGb3JtcyIsImRlZmF1bHRWYWx1ZSIsIl90ZW1wJHNlYXJjaCIsIl90ZW1wJHByb3BzIiwiX3RlbXAkcHJvcHMyIiwiX3RlbXAiLCJ0ZW1wIiwic2VhcmNoIiwiX3RlbXAkc2VhcmNoMiIsIl90ZW1wJHNlYXJjaDMiLCJfdGVtcCRzZWFyY2g0IiwiZmllbGQiLCJkYXRhSW5kZXgiLCJsYWJlbENvbCIsIndyYXBwZXJDb2wiLCJydWxlcyIsInNlYXJjaFJ1bGVzIiwiZWRpdG9yIiwic3BhbiIsImRpY3ROYW1lIiwiX3RlbXAkcHJvcHMzIiwiY29sdW1uU2VhcmNoIiwiZmlsdGVyUHJvcHMiLCJ0ZW1wUHJvcCIsIkZyYWdtZW50IiwiZWxsaXBzaXMiLCJjb2x1bW5TaG93Iiwic2VsZkJ1dHRvbnMiLCJpbmRleE9mIiwiYmluZCIsImRhbmdlciIsIkFycmF5IiwiaXNBcnJheSIsImNoaWxkIiwiX2NoaWxkJHByb3BzIiwiX2NoaWxkJHByb3BzMiIsIl9pdGVtJHByb3BzNSIsIl9pdGVtJHByb3BzNiIsImFsaWduIiwidGV4dEFsaWduIiwid2lkdGgiLCJmaXhlZCIsInJlYWNvcmQiLCJzZWFyY2hGbGFnIiwidGFibGVUb29sIiwidG9vbEZsYWciLCJ0b29sYmFyRmxhZyIsInRvb2xiYXIiLCJ0b29scyIsInBhZ2luYXRpb24iLCJzY3JvbGwiLCJ4IiwicGFnZVRpdGxlIiwiZGlzcGxheSIsImNoZWNrYWJsZSIsInNlYXJjaGFibGUiLCJvblNlbGVjdCIsIm9uUmVzZXQiLCJyZWYiLCJzZWFyY2hGb3JtUHJvcHMiLCJleHBhbmRJY29uIiwiX3JlZiIsIl9yZWNvcmQkY2hpbGROb2RlcyIsIl9yZWNvcmQkY2hpbGROb2RlczIiLCJleHBhbmRlZCIsIm9uRXhwYW5kIiwiZSIsIm9uQ2hhbmdlIiwib25Ub29sQ2xpY2siLCJvblJlZnJlc2giLCJfdGhpcyRwcm9wcyRvbkNhbGxCYWM1IiwiX3RoaXMkcHJvcHMkb25DYWxsQmFjNiIsIm9uU3VtYml0Q2FsbEJhY2siLCJvblN1Ym1pdCIsIm9uSGlkZUZvcm0iLCJvbkZvcm1DaGFuZ2UiLCJjaGFuZ2VWYWxpZCIsIm90aGVyUHJvcHMiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tcG9uZW50cy9wYWdlL0Jhc2VQYWdlL2luZGV4LnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHsgUHVyZUNvbXBvbmVudCwgUmVhY3ROb2RlIH0gZnJvbSBcInJlYWN0XCI7XHJcbmltcG9ydCBUYWJsZSBmcm9tIFwiLi4vLi4vYmFzZS90YWJsZVwiO1xyXG5pbXBvcnQgVHJlZSBmcm9tIFwiLi4vLi4vYmFzZS90cmVlXCI7XHJcbmltcG9ydCBGb3JtIGZyb20gXCIuLi8uLi9iYXNlL2Zvcm1cIjtcclxuaW1wb3J0IEJ1dHRvbiBmcm9tIFwiLi4vLi4vYmFzZS9idXR0b25cIjtcclxuaW1wb3J0IE1vZGFsIGZyb20gXCIuLi8uLi9iYXNlL21vZGFsXCI7XHJcbmltcG9ydCBQb3BvdmVyIGZyb20gXCIuLi8uLi9iYXNlL3BvcG92ZXJcIjtcclxuaW1wb3J0IG1lc3NhZ2UgZnJvbSBcIi4uLy4uL2Jhc2UvbWVzc2FnZVwiO1xyXG5pbXBvcnQgSWNvbiBmcm9tIFwiLi4vLi4vYmFzZS9jb21tb24vSWNvbkZvbnRcIjtcclxuaW1wb3J0IHsgaWNvblR5cGUgfSBmcm9tIFwiLi4vLi4vY29uc3RhbnRzXCI7XHJcbmltcG9ydCBFZGl0b3JGb3JtIGZyb20gXCIuL0Zvcm1cIjtcclxuaW1wb3J0IGNscyBmcm9tIFwiY2xhc3NuYW1lc1wiO1xyXG5pbXBvcnQgc3R5bGVzIGZyb20gXCIuL2luZGV4Lm1vZHVsZS5sZXNzXCI7XHJcbmltcG9ydCBTdG9yZSwgeyBQYWdlU3RvcmUsIFN0b3JlUHJvcHMgfSBmcm9tIFwiQGJqLW5zYy9tc25cIjtcclxuaW1wb3J0IFJvdyBmcm9tIFwiLi4vLi4vYmFzZS9ncmlkL1Jvd1wiO1xyXG5pbXBvcnQgeyB1dGlscyB9IGZyb20gXCJAYmotbnNjL21zbi9saWIvdXRpbHNcIjtcclxuaW1wb3J0IHtcclxuICBEb3duT3V0bGluZWQsXHJcbiAgRXllT3V0bGluZWQsXHJcbiAgRWRpdE91dGxpbmVkLFxyXG4gIFJpZ2h0T3V0bGluZWQsXHJcbiAgUGx1c091dGxpbmVkLFxyXG4gIEVsbGlwc2lzT3V0bGluZWQsXHJcbiAgRGVsZXRlT3V0bGluZWQsXHJcbn0gZnJvbSBcIkBhbnQtZGVzaWduL2ljb25zXCI7XHJcbmltcG9ydCB7IGdldExlc3MsIGdldE5vZGUgfSBmcm9tIFwiLi4vLi4vdXRpbHNcIjtcclxuaW1wb3J0IHJlcXVlc3QgZnJvbSBcIm5zYy1yZXF1ZXN0XCI7XHJcbmltcG9ydCBvbWl0IGZyb20gXCJvbWl0LmpzXCI7XHJcbmltcG9ydCBjb25maWcgZnJvbSBcIi4uLy4uL2NvbmZpZ1wiO1xyXG5pbXBvcnQgeyBnZXRTdG9yYWdlIH0gZnJvbSBcIkBiai1uc2MvZnVuY3Rpb25zXCI7XHJcbmltcG9ydCB7IElGb3JtUHJvcHMgfSBmcm9tIFwiLi4vLi4vYmFzZS9mb3JtL0Zvcm1cIjtcclxuaW1wb3J0IEhlYWRlclNlYXJjaCBmcm9tIFwiLi4vSGVhZGVyU2VhcmNoXCI7XHJcbmltcG9ydCB7IFBhZ2luYXRpb25Qcm9wcyB9IGZyb20gXCJhbnRkXCI7XHJcbmludGVyZmFjZSBUYWJsZVByb3BzIHtcclxuICBhY3Rpb25Db2x1bW4/OiBib29sZWFuOyAvL+aYr+WQpuaYvuekuuaTjeS9nOWIl1xyXG4gIHN0b3JlPzogU3RvcmVQcm9wcztcclxuICBmaWx0ZXJDb2x1bW4/OiBib29sZWFuOyAvL+aYr+WQpuaYvuekuui/h+a7pOaMiemSrlxyXG4gIHNob3dSb3dTZWxlY3Rpb24/OiBib29sZWFuOyAvL+aYr+WQpuihqOagvOWLvumAieWIl1xyXG4gIHBhZ2luYXRpb24/OiBib29sZWFuIHwgUGFnaW5hdGlvblByb3BzOyAvL+aYr+WQpuaYvuekuuWIhumhtVxyXG4gIGNvbHVtbk9yZGVyPzogYm9vbGVhbjsgLy/mmK/lkKbmmL7npLrooajmoLzluo/liJdcclxuICBbcHJvcHNOYW1lOiBzdHJpbmddOiBhbnk7XHJcbn1cclxuaW50ZXJmYWNlIFRyZWVQcm9wcyB7XHJcbiAgc3RvcmU/OiBTdG9yZVByb3BzO1xyXG4gIHNob3dTZWFyY2g/OiBib29sZWFuOyAvL+aYr+WQpuaYvuekuuaQnOe0ouahhlxyXG4gIHNlYXJjaEtleT86IHN0cmluZzsgLy/mkJzntKJ2YWx1ZeWvueW6lOeahGtleVxyXG4gIHNlYXJjaEZpZWxkPzogc3RyaW5nOyAvL+afpeivouWvueW6lOeahGtleVxyXG4gIHRpdGxlQWxpYXM/OiBzdHJpbmc7IC8v5qCRdGl0bGXlr7nlupTnmoRrZXks6buY6K6kdGl0bGVcclxuICBub2RlUG9ycHM/OiBvYmplY3Q7XHJcbiAgcGFyYW50U2VsZWN0PzogYm9vbGVhbjtcclxuICBbcHJvcHNOYW1lOiBzdHJpbmddOiBhbnk7XHJcbn1cclxuaW50ZXJmYWNlIEZvcm1Qcm9wcyBleHRlbmRzIElGb3JtUHJvcHMge31cclxuaW50ZXJmYWNlIE5TQ0Jhc2VCYWdlUHJvcHMge1xyXG4gIHNob3dTZWFyY2g/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/OiBBcnJheTxzdHJpbmc+KSA9PiB2b2lkOyAvL+WIoOmZpOWPguaVsO+8jOm7mOiupG1vdGhvZDpwb3N077yMIOWPguaVsOmAmui/h2lkc+aLvOaOpeS8oOmAkue7meWQjuWPsFxyXG4gIGRlbGV0ZVBvc2l0aW9uPzogXCJ0b29sYmFyXCIgfCBcInJvd1wiO1xyXG4gIGRlbGV0ZVBhcmFtcz86IE9iamVjdDtcclxuICBjaGlsZHJlbj86IFJlYWN0LlJlYWN0Tm9kZTtcclxuICBvblNlYXJjaD86ICh2YWx1ZT86IGFueSkgPT4gdm9pZDtcclxuICBvblJlc2V0PzogKCkgPT4gdm9pZDtcclxuICBpbml0RGF0YT86IGFueTsgLy/liJ3lp4vljJblm57osIPlh73mlbDvvIzlnKhjb21wb25lbnREaWRNb3VudOS4reiwg+eUqFxyXG4gIGJ1dHRvbnM/OiBBcnJheTxzdHJpbmc+OyAvL+aMiemSrumbhuWQiCAgWydhZGQnLCdkZWxldGUnLCdzZWFyY2gnLCdlZGl0b3InXVxyXG4gIG9uU2hvd0Zvcm0/OiAodmFsdWU/OiBhbnksIGVkaXRvckZsYWc/OiBzdHJpbmcpID0+IHZvaWQ7IC8v5omT5byA6KGo5Y2V5Zue6LCDXHJcbiAgb25IaWRlRm9ybT86ICgpID0+IHZvaWQ7IC8v5omT5byA6KGo5Y2V5Zue6LCDXHJcbiAgb25Gb3JtQ2hhbmdlPzogKGNoYW5nZWRWYWx1ZXM/OiBhbnksIGFsbFZhbHVlcz86IGFueSkgPT4gdm9pZDsgLy/ooajljZVvbkNoYW5nZeWbnuiwg1xyXG4gIGZvcm1UeXBlPzogXCJtb2RhbFwiIHwgXCJkcmF3ZXJcIjtcclxuICBmb3JtQ2hhbmdlVmFsaWQ/OiBib29sZWFuOyAvL+ihqOWNleagoemqjFxyXG4gIGNsYXNzTmFtZT86IGFueTtcclxuICB0b29sQnV0dG9uUG9zaXRpb24/OiBcInJpZ2h0XCIgfCBcImJ1dHRvbVwiO1xyXG4gIHBhZ2VUaXRsZT86IHN0cmluZyB8IFJlYWN0Tm9kZTtcclxuICBmb3JtUHJvcHM/OiBGb3JtUHJvcHM7XHJcbiAgYWN0aW9uUHJvcHM/OiB7IHRleHRBbGlnbj86IHN0cmluZzsgc2hvd0ljb24/OiBib29sZWFuOyB3aWR0aD86IG51bWJlciB9O1xyXG4gIHNlYXJjaEZvcm1Qcm9wcz86IHsgd3JhcHBlckNvbD86IGFueTsgbGFiZWxDb2w/OiBhbnkgfTtcclxuICBvblRyZWVTZWxlY3Q/OiAodmFsdWU/OiBhbnksIGVkaXRvckZsYWc/OiBzdHJpbmcpID0+IHZvaWQ7IC8v5omT5byA6KGo5Y2V5Zue6LCDXHJcbiAgb25DYWxsQmFja3M/OiB7XHJcbiAgICB0cmVlU2VsZWN0Q2FsbEJhY2s/OiBhbnk7XHJcbiAgICBvblNlYXJjaENhbGxCYWNrPzogYW55O1xyXG4gICAgb25TdW1iaXRDYWxsQmFjaz86IGFueTtcclxuICAgIG9uRGVsZXRlQ2FsbEJhY2s/OiBhbnk7XHJcbiAgfTtcclxufVxyXG5cclxuY2xhc3MgQmFzZVBhZ2UgZXh0ZW5kcyBQdXJlQ29tcG9uZW50PE5TQ0Jhc2VCYWdlUHJvcHMsIGFueT4ge1xyXG4gIHRhYmxlUmVmID0gUmVhY3QuY3JlYXRlUmVmPGFueT4oKTtcclxuICB0cmVlUmVmID0gUmVhY3QuY3JlYXRlUmVmPGFueT4oKTtcclxuICBzZWFyY2hSZWYgPSBSZWFjdC5jcmVhdGVSZWY8YW55PigpO1xyXG4gIGVkaXRvclJlZiA9IFJlYWN0LmNyZWF0ZVJlZjxhbnk+KCk7XHJcbiAgZGF0ZUZvcm1hdCA9IHt9IGFzIGFueTtcclxuICBjb25zdHJ1Y3Rvcihwcm9wczogYW55KSB7XHJcbiAgICBzdXBlcihwcm9wcyk7XHJcbiAgICBsZXQgeyBzdG9yZVByZWZpeCB9ID0gY29uZmlnKCk7XHJcbiAgICBsZXQgdHlwZSA9IGdldFN0b3JhZ2UoXHJcbiAgICAgIHN0b3JlUHJlZml4ID8gc3RvcmVQcmVmaXggKyBcIi1cIiArIFwiZm9ybVR5cGVcIiA6IFwiZm9ybVR5cGVcIlxyXG4gICAgKTtcclxuICAgIHR5cGUgPSB0eXBlPy5jb250ZW50O1xyXG4gICAgbGV0IHNpemUgPSBnZXRTdG9yYWdlKFxyXG4gICAgICBzdG9yZVByZWZpeCA/IHN0b3JlUHJlZml4ICsgXCItXCIgKyBcInRhYmxlU2l6ZVwiIDogXCJ0YWJsZVNpemVcIlxyXG4gICAgKTtcclxuICAgIHNpemUgPSBzaXplPy5jb250ZW50O1xyXG4gICAgdGhpcy5zdGF0ZSA9IHtcclxuICAgICAgdHlwZTogXCJhZGRcIixcclxuICAgICAgc2VsZWN0ZWRSb3dLZXlzOiBbXSxcclxuICAgICAgc2VsZWN0ZWRSb3dEYXRhczogW10sXHJcbiAgICAgIHRyZWVTZWxlY3RlZEtleTogXCJcIixcclxuICAgICAgZXhwYW5kOiBmYWxzZSxcclxuICAgICAgZm9ybVR5cGU6IHR5cGUgfHwgXCJtb2RhbFwiLFxyXG4gICAgICB0YWJsZVNpemU6IHNpemUgfHwgXCJkZWZhdWx0XCIsXHJcbiAgICAgIHRyZWVTZWFyY2hQcmFtczoge30sXHJcbiAgICAgIHBvcG9wZW5zOiB7fSxcclxuICAgIH07XHJcbiAgfVxyXG4gIGNvbXBvbmVudERpZE1vdW50KCkge1xyXG4gICAgY29uc3QgeyBpbml0RGF0YSB9ID0gdGhpcy5wcm9wcztcclxuICAgIGluaXREYXRhICYmIGluaXREYXRhKCk7XHJcbiAgfVxyXG5cclxuICBzZXRTZWFyY2hQYXJhbXMocGFyYW1zLCBjYWxsQmFjaykge1xyXG4gICAgdGhpcy5zZWFyY2hSZWYuY3VycmVudD8uc2V0U2VhcmNoUGFyYW1zKHBhcmFtcyk7XHJcbiAgICBjYWxsQmFjayAmJiBjYWxsQmFjayhwYXJhbXMpO1xyXG4gIH1cclxuICBkb1N1Ym1pdChkYXRhLCBsYWJlbCA9IFwi57yW6L6RXCIpIHtcclxuICAgIHRoaXMuZWRpdG9yUmVmLmN1cnJlbnQ/LmRvU3VibWl0KGRhdGEsIGxhYmVsKTtcclxuICB9XHJcblxyXG4gIG9uU2VsZWN0ID0gKGNoZWNrZWRUcmVlS2V5czogYW55KSA9PiB7XHJcbiAgICBjb25zdCB7IG5hbWUsIHVzZXJUeXBlLCBhY2NvdW50IH0gPSB0aGlzLnN0YXRlO1xyXG4gICAgY29uc3QgdmFsdWUgPSB7IG5hbWUsIHVzZXJUeXBlLCBhY2NvdW50LCBkZXB0SWQ6IGNoZWNrZWRUcmVlS2V5c1swXSB9O1xyXG4gICAgaWYgKHRoaXMucHJvcHMub25TZWFyY2gpIHtcclxuICAgICAgdGhpcy5wcm9wcy5vblNlYXJjaCh2YWx1ZSk7XHJcbiAgICB9XHJcbiAgICAvLyB0aGlzLnRhYmxlTG9hZCh2YWx1ZSk7XHJcbiAgfTtcclxuXHJcbiAgLy/mmL7npLrooajljZVcclxuICBzaG93Rm9ybSh2YWx1ZT86IGFueSwgZWRpdG9yZmxhZyA9IFwiYWRkXCIpIHtcclxuICAgIHRoaXMuZWRpdG9yUmVmLmN1cnJlbnQ/LnNob3codmFsdWUsIGVkaXRvcmZsYWcpO1xyXG4gIH1cclxuXHJcbiAgLy/lhbPpl63ooajljZVcclxuICBoaWRlRm9ybSgpIHtcclxuICAgIHRoaXMuZWRpdG9yUmVmLmN1cnJlbnQ/LmhpZGVGb3JtKCk7XHJcbiAgfVxyXG5cclxuICBzZXRMb2FkaW5nKGxvYWRpbmc6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMuZWRpdG9yUmVmLmN1cnJlbnQ/LnNldExvYWRpbmcobG9hZGluZyk7XHJcbiAgfVxyXG5cclxuICBzZXRFZGl0Rm9ybVZhbHVlcyh2YWx1ZSkge1xyXG4gICAgdGhpcy5lZGl0b3JSZWYuY3VycmVudD8uc2V0RmllbGRzVmFsdWUodmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgZ2V0RWRpdEZvcm1WYWx1ZXMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5lZGl0b3JSZWYuY3VycmVudD8uZ2V0RmllbGRzVmFsdWUoKTtcclxuICB9XHJcblxyXG4gIC8v5om56YeP5Yig6ZmkXHJcbiAgb25EZWxldGUoZGF0YT86IGFueSkge1xyXG4gICAgY29uc3Qge1xyXG4gICAgICBkZWxldGVVcmwsXHJcbiAgICAgIG9uRGVsZXRlLFxyXG4gICAgICBkZWxldGVQYXJhbXMsXHJcbiAgICAgIGRlbGV0ZVBvc2l0aW9uID0gXCJ0b29sYmFyXCIsXHJcbiAgICB9ID0gdGhpcy5wcm9wcztcclxuICAgIGxldCBfdGhpcyA9IHRoaXM7XHJcbiAgICBjb25zdCBzZWxlY3RlZFJvd0tleXMgPSB0aGlzLnRhYmxlUmVmLmN1cnJlbnQ/LmdldFNlbGVjdGVkUm93S2V5cygpO1xyXG4gICAgaWYgKGRlbGV0ZVBvc2l0aW9uID09IFwidG9vbGJhclwiKSB7XHJcbiAgICAgIGlmIChzZWxlY3RlZFJvd0tleXMubGVuZ3RoID09IDApIHtcclxuICAgICAgICBtZXNzYWdlLndhcm5pbmcoXCLor7fpgInmi6nopoHliKDpmaTnmoTmlbDmja7vvIFcIik7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBNb2RhbC5jb25maXJtKHtcclxuICAgICAgY29udGVudDogXCLmmK/lkKbnoa7orqTliKDpmaTmiYDpgInpobnvvJ9cIixcclxuICAgICAgLy8gY2VudGVyZWQ6dHJ1ZSxcclxuICAgICAgb25PazogKCkgPT4ge1xyXG4gICAgICAgIGlmIChvbkRlbGV0ZSkge1xyXG4gICAgICAgICAgb25EZWxldGUgJiZcclxuICAgICAgICAgICAgb25EZWxldGUoZGVsZXRlUG9zaXRpb24gPT0gXCJ0b29sYmFyXCIgPyBzZWxlY3RlZFJvd0tleXMgOiBkYXRhKTtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKCFkZWxldGVVcmwpIHtcclxuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcInVybOS4jeiDveS4uuepuu+8gVwiKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgZGVmYXVsdFBhcmFtcyA9IHtcclxuICAgICAgICAgIG1ldGhvZDogXCJwb3N0XCIsXHJcbiAgICAgICAgICBhdXRvUHJlZml4OiB0cnVlLFxyXG4gICAgICAgICAgcGFyYW1zOiB7XHJcbiAgICAgICAgICAgIGlkczogZGVsZXRlUG9zaXRpb24gPT0gXCJ0b29sYmFyXCIgPyBzZWxlY3RlZFJvd0tleXMuam9pbigpIDogZGF0YS5pZCxcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgfTtcclxuICAgICAgICBsZXQgcmVxdWVzdFBhcmFtcyA9IHt9IGFzIGFueTtcclxuICAgICAgICBpZiAoZGVmYXVsdFBhcmFtcykge1xyXG4gICAgICAgICAgcmVxdWVzdFBhcmFtcyA9IHsgLi4uZGVsZXRlUGFyYW1zIH07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJlcXVlc3RQYXJhbXMgPSB7IC4uLmRlZmF1bHRQYXJhbXMgfTtcclxuICAgICAgICByZXF1ZXN0KGRlbGV0ZVVybCwge1xyXG4gICAgICAgICAgLi4ucmVxdWVzdFBhcmFtcyxcclxuICAgICAgICB9KVxyXG4gICAgICAgICAgLnRoZW4oZnVuY3Rpb24gKHJlczogYW55KSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHsgY29kZSB9ID0gcmVzO1xyXG4gICAgICAgICAgICBpZiAoY29kZSA9PT0gMjAwKSB7XHJcbiAgICAgICAgICAgICAgbWVzc2FnZS5zdWNjZXNzKFwi5Yig6Zmk5oiQ5Yqf77yBXCIpO1xyXG4gICAgICAgICAgICAgIGxldCB2YWx1ZSA9IF90aGlzLnNlYXJjaFJlZj8uY3VycmVudD8uZ2V0U2VhcmNoVmFsdWVzKCk7XHJcbiAgICAgICAgICAgICAgX3RoaXMucHJvcHMub25DYWxsQmFja3M/Lm9uRGVsZXRlQ2FsbEJhY2sgJiZcclxuICAgICAgICAgICAgICAgIF90aGlzLnByb3BzLm9uQ2FsbEJhY2tzPy5vbkRlbGV0ZUNhbGxCYWNrKCk7XHJcbiAgICAgICAgICAgICAgX3RoaXMudGFibGVMb2FkKHZhbHVlKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICBtZXNzYWdlLmVycm9yKFwi5Yig6Zmk5aSx6LSl77yBXCIpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgICAgLmNhdGNoKGZ1bmN0aW9uIChlcnJvcjogYW55KSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiZXJyb3JcIiwgZXJyb3IpO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgIH0sXHJcbiAgICB9KTtcclxuICB9XHJcbiAgdGFibGVMb2FkKHBhcmFtczogYW55LCByZXF1ZXN0Q29uZmlnID0ge30pIHtcclxuICAgIHRoaXMudGFibGVSZWYuY3VycmVudD8uc3RvcmUubG9hZCh7XHJcbiAgICAgIC4uLnJlcXVlc3RDb25maWcsXHJcbiAgICAgIHBhcmFtczogcGFyYW1zLFxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIC8v5p+l6K+iXHJcbiAgb25TZWFyY2gocGFyYW1zKSB7XHJcbiAgICBjb25zdCB7IG9uU2VhcmNoLCBvbkNhbGxCYWNrcyB9ID0gdGhpcy5wcm9wcztcclxuICAgIGlmIChvblNlYXJjaCkge1xyXG4gICAgICBvblNlYXJjaCh7IC4uLnBhcmFtcywgLi4udGhpcy5zdGF0ZS50cmVlU2VhcmNoUHJhbXMgfSk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMudGFibGVMb2FkKHsgLi4ucGFyYW1zLCAuLi50aGlzLnN0YXRlLnRyZWVTZWFyY2hQcmFtcyB9KTtcclxuICAgIG9uQ2FsbEJhY2tzPy5vblNlYXJjaENhbGxCYWNrICYmXHJcbiAgICAgIHV0aWxzLmNhbGxiYWNrKG9uQ2FsbEJhY2tzPy5vblNlYXJjaENhbGxCYWNrLCB0aGlzLCBbcGFyYW1zXSk7XHJcbiAgfVxyXG4gIC8v6KGo5qC86YeN5paw5Yqg6L29XHJcbiAgdGFibGVSZWxvYWQocGFyYW1zID0ge30sIGF1dG9Mb2FkID0gdHJ1ZSkge1xyXG4gICAgdGhpcy50YWJsZVJlZi5jdXJyZW50Py5zdG9yZT8ucmVsb2FkKHtcclxuICAgICAgY2FsbGJhY2s6IChyZXMpID0+IHtcclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICBhdXRvTG9hZCAmJlxyXG4gICAgICAgICAgcmVzPy5kYXRhPy5yZWNvcmRzPy5sZW5ndGggPT0gMCAmJlxyXG4gICAgICAgICAgdGhpcy5zdGF0ZS5jdXJyZW50UGFnZSAhPT0gMVxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgdGhpcy50YWJsZVJlZi5jdXJyZW50Py5zdG9yZT8ucmVsb2FkKHtcclxuICAgICAgICAgICAgcGFyYW1zOiB7IGN1cnJlbnQ6IDEsIC4uLnBhcmFtcyB9LFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIGdldFNlbGVjdGVkUm93S2V5cygpIHtcclxuICAgIHJldHVybiB0aGlzLnRhYmxlUmVmLmN1cnJlbnQ/LmdldFNlbGVjdGVkUm93S2V5cygpO1xyXG4gIH1cclxuICBnZXRTZWxlY3RlZFJvd0RhdGFzKCkge1xyXG4gICAgcmV0dXJuIHRoaXMudGFibGVSZWYuY3VycmVudD8uZ2V0U2VsZWN0ZWRSb3dEYXRhcygpO1xyXG4gIH1cclxuICBzZXRTZWxlY3RlZFJvd0tleXMoZGF0YTogQXJyYXk8U3RyaW5nIHwgTnVtYmVyPikge1xyXG4gICAgcmV0dXJuIHRoaXMudGFibGVSZWYuY3VycmVudD8uc2V0U2VsZWN0ZWRSb3dLZXlzKGRhdGEpO1xyXG4gIH1cclxuICBzZXRTZWxlY3RlZFJvd0RhdGFzKGRhdGE6IEFycmF5PE9iamVjdD4pIHtcclxuICAgIHJldHVybiB0aGlzLnRhYmxlUmVmLmN1cnJlbnQ/LnNldFNlbGVjdGVkUm93RGF0YXMoZGF0YSk7XHJcbiAgfVxyXG4gIHJlc2V0U2VsZWN0ZWRSb3dLZXlzKCkge1xyXG4gICAgcmV0dXJuIHRoaXMudGFibGVSZWYuY3VycmVudD8ucmVzZXRTZWxlY3RlZFJvd0tleXMoKTtcclxuICB9XHJcblxyXG4gIGdldFNlYXJjaFZhbHVlcygpIHtcclxuICAgIGNvbnN0IGZyb21WYWx1ZSA9IHRoaXMuc2VhcmNoUmVmPy5jdXJyZW50Py5nZXRTZWFyY2hWYWx1ZXMoKTtcclxuICAgIHJldHVybiB7IC4uLmZyb21WYWx1ZSwgLi4udGhpcy5zdGF0ZS50cmVlU2VhcmNoUHJhbXMgfTtcclxuICB9XHJcblxyXG4gIGdldENoaWxkcmVuRGF0YShkYXRhLCBrZXlzID0gW10pIHtcclxuICAgIGNvbnN0IHsgdGFibGVQcm9wcyB9ID0gdGhpcy5wcm9wcztcclxuICAgIGNvbnN0IHsgcm93S2V5ID0gXCJpZFwiIH0gPSB0YWJsZVByb3BzO1xyXG4gICAgbGV0IHJlc0tleSA9IFtdO1xyXG4gICAgaWYgKGRhdGEuY2hpbGROb2Rlcykge1xyXG4gICAgICBjb25zdCBjaGlsZHJlbiA9IGRhdGEuY2hpbGROb2RlcztcclxuICAgICAgY2hpbGRyZW4ubWFwKChpdGVtLCBpbmRleCkgPT4ge1xyXG4gICAgICAgIGlmIChpdGVtLmNoaWxkTm9kZXMpIHtcclxuICAgICAgICAgIHRoaXMuZ2V0Q2hpbGRyZW5EYXRhKGl0ZW0uY2hpbGROb2Rlcywga2V5cyk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHJlc0tleSA9IFsuLi5rZXlzLCBpdGVtW3Jvd0tleV1dO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXNLZXkgPSBbLi4ua2V5cywgZGF0YVtyb3dLZXldXTtcclxuICAgIH1cclxuICAgIHJldHVybiByZXNLZXk7XHJcbiAgfVxyXG5cclxuICByZW5kZXJUb29sQnV0dG9ucyh0b29sYnV0dG9uczogYW55LCBtYXJnaW5mbGFnID0gZmFsc2UpIHtcclxuICAgIGNvbnN0IGZsYWcgPSB0b29sYnV0dG9ucy5sZW5ndGggPiA1O1xyXG4gICAgY29uc3QgeyBzaG93U2VhcmNoID0gdHJ1ZSB9ID0gdGhpcy5wcm9wcztcclxuICAgIGNvbnN0IGNvbnRlbnQgPSB0b29sYnV0dG9ucy5tYXAoKGl0ZW06IGFueSwgaW5kZXg6IGFueSkgPT4ge1xyXG4gICAgICBjb25zdCB7IGNoaWxkcmVuLCBwYWdlVHlwZSwgb25DbGljaywgaWNvbiwgc2hvdywgLi4ucGFyYW1zIH0gPSBpdGVtLnByb3BzO1xyXG4gICAgICBpZiAoaW5kZXggPiAzKSB7XHJcbiAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgY2xhc3NOYW1lPXtjbHMoXHJcbiAgICAgICAgICAgICAgZ2V0TGVzcyhzdHlsZXMsIFwiZWRpdG9yXCIpLFxyXG4gICAgICAgICAgICAgIGdldExlc3Moc3R5bGVzLCBcImNvbnRlbnQtaXRlbVwiKVxyXG4gICAgICAgICAgICApfVxyXG4gICAgICAgICAgICBrZXk9e2luZGV4fVxyXG4gICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XHJcbiAgICAgICAgICAgICAgb25DbGljayAmJiBvbkNsaWNrKCk7XHJcbiAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgIHsuLi5wYXJhbXN9XHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwiaWNvblwiKX0+e2ljb259PC9zcGFuPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcInRleHRcIil9PntjaGlsZHJlbn08L3NwYW4+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICApO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIHJldHVybiAoXHJcbiAgICAgIDxkaXZcclxuICAgICAgICBjbGFzc05hbWU9e2NscyhnZXRMZXNzKHN0eWxlcywgXCJ0b29sLWJ1dHRvbnNcIiksIHtcclxuICAgICAgICAgIFtnZXRMZXNzKHN0eWxlcywgXCJ0b29sLWJ1dHRvbnMtbWFyZ2luXCIpXTogIXNob3dTZWFyY2ggfHwgbWFyZ2luZmxhZyxcclxuICAgICAgICB9KX1cclxuICAgICAgICBzdHlsZT17eyBtYXJnaW5MZWZ0OiAwIH19XHJcbiAgICAgID5cclxuICAgICAgICB7dG9vbGJ1dHRvbnMubWFwKChpdGVtOiBhbnksIGluZGV4OiBhbnkpID0+IHtcclxuICAgICAgICAgIGlmIChmbGFnKSB7XHJcbiAgICAgICAgICAgIGlmIChpbmRleCA8IDQpIHtcclxuICAgICAgICAgICAgICByZXR1cm4gPGRpdiBrZXk9e2luZGV4fT57aXRlbX08L2Rpdj47XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaW5kZXggPT0gNCkge1xyXG4gICAgICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgICAgICA8UG9wb3ZlclxyXG4gICAgICAgICAgICAgICAgICBjb250ZW50PXtjb250ZW50fVxyXG4gICAgICAgICAgICAgICAgICB0aXRsZT17bnVsbH1cclxuICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tXCJcclxuICAgICAgICAgICAgICAgICAgdHJpZ2dlcj17W1wiY2xpY2tcIl19XHJcbiAgICAgICAgICAgICAgICAgIGtleT17aW5kZXh9XHJcblxyXG4gICAgICAgICAgICAgICAgICAvLyBvdmVybGF5Q2xhc3NOYW1lPXtzdHlsZXNbJ3BvcC1ib3gnXX1cclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgPEJ1dHRvbiB0eXBlPVwicHJpbWFyeVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIOabtOWkmiA8RG93bk91dGxpbmVkIC8+XHJcbiAgICAgICAgICAgICAgICAgIDwvQnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPC9Qb3BvdmVyPlxyXG4gICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHJldHVybiA8ZGl2IGtleT17aW5kZXh9PntpdGVtfTwvZGl2PjtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KX1cclxuICAgICAgPC9kaXY+XHJcbiAgICApO1xyXG4gIH1cclxuICByZW5kZXJDbG91bW5CdXR0b24oY29sdW1uQnV0dG9uczogYW55LCByZWNvcmQ6IGFueSkge1xyXG4gICAgY29uc3QgeyBhY3Rpb25Qcm9wcyB9ID0gdGhpcy5wcm9wcztcclxuICAgIGNvbnN0IHsgYmFzZUFjdGlvbkNvbHVtbiB9ID0gY29uZmlnKCk7XHJcbiAgICBjb25zdCBuZXdCdXR0b25zID0gW107XHJcbiAgICBsZXQgc2hvd0ljb24gPSB0cnVlO1xyXG4gICAgaWYgKGFjdGlvblByb3BzPy5zaG93SWNvbiA9PT0gZmFsc2UpIHNob3dJY29uID0gZmFsc2U7XHJcbiAgICBlbHNlIGlmIChiYXNlQWN0aW9uQ29sdW1uLnNob3dJY29uID09PSBmYWxzZSkgc2hvd0ljb24gPSBmYWxzZTtcclxuICAgIGNvbHVtbkJ1dHRvbnMubWFwKChpdGVtOiBhbnksIGluZGV4OiBhbnkpID0+IHtcclxuICAgICAgY29uc3QgeyBjaGlsZHJlbiwgcGFnZVR5cGUsIG9uQ2xpY2ssIGljb24sIHJlY29yZFNob3csIC4uLnBhcmFtcyB9ID1cclxuICAgICAgICBpdGVtLnByb3BzO1xyXG4gICAgICBpZiAocmVjb3JkU2hvdykge1xyXG4gICAgICAgIGlmICh0eXBlb2YgcmVjb3JkU2hvdyA9PSBcInN0cmluZ1wiKSB7XHJcbiAgICAgICAgICBpZiAoZXZhbChyZWNvcmRTaG93KSkge1xyXG4gICAgICAgICAgICBuZXdCdXR0b25zLnB1c2goaXRlbSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgcmVjb3JkU2hvdyA9PSBcImZ1bmN0aW9uXCIpIHtcclxuICAgICAgICAgIGNvbnN0IHNob3cgPSByZWNvcmRTaG93KHJlY29yZCk7XHJcbiAgICAgICAgICBzaG93ICYmIG5ld0J1dHRvbnMucHVzaChpdGVtKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgbmV3QnV0dG9ucy5wdXNoKGl0ZW0pO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIGNvbnN0IGZsYWcgPSBuZXdCdXR0b25zLmxlbmd0aCA+IDM7XHJcblxyXG4gICAgY29uc3QgY29udGVudCA9IG5ld0J1dHRvbnMubWFwKChpdGVtOiBhbnksIGluZGV4OiBhbnkpID0+IHtcclxuICAgICAgY29uc3QgeyBjaGlsZHJlbiwgcGFnZVR5cGUsIG9uQ2xpY2ssIHJlY29yZFNob3csIGljb24sIHNob3csIC4uLnBhcmFtcyB9ID1cclxuICAgICAgICBpdGVtLnByb3BzO1xyXG4gICAgICBpZiAoaW5kZXggPiAyKSB7XHJcbiAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgIDxCdXR0b25cclxuICAgICAgICAgICAgY2xhc3NOYW1lPXtjbHMoXHJcbiAgICAgICAgICAgICAgZ2V0TGVzcyhzdHlsZXMsIFwiZWRpdG9yXCIpLFxyXG4gICAgICAgICAgICAgIGdldExlc3Moc3R5bGVzLCBcImNvbnRlbnQtaXRlbVwiKVxyXG4gICAgICAgICAgICApfVxyXG4gICAgICAgICAgICBrZXk9e2luZGV4fVxyXG4gICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XHJcbiAgICAgICAgICAgICAgbGV0IGRhdGEgPSB7fSBhcyBhbnk7XHJcbiAgICAgICAgICAgICAgZGF0YVtyZWNvcmQuaWRdID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICAgICAgICBwb3BvcGVuczogZGF0YSxcclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICBvbkNsaWNrICYmIG9uQ2xpY2socmVjb3JkKTtcclxuICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgdHlwZT1cImxpbmtcIlxyXG4gICAgICAgICAgICB7Li4ucGFyYW1zfVxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICB7c2hvd0ljb24gIT09IGZhbHNlICYmIChcclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcImljb25cIil9PntpY29ufTwvc3Bhbj5cclxuICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJ0ZXh0XCIpfT57Y2hpbGRyZW59PC9zcGFuPlxyXG4gICAgICAgICAgPC9CdXR0b24+XHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgcmV0dXJuIG5ld0J1dHRvbnMubWFwKChpdGVtOiBhbnksIGluZGV4OiBhbnkpID0+IHtcclxuICAgICAgY29uc3QgeyBjaGlsZHJlbiwgcGFnZVR5cGUsIG9uQ2xpY2ssIHJlY29yZFNob3csIGljb24sIC4uLnBhcmFtcyB9ID1cclxuICAgICAgICBpdGVtLnByb3BzO1xyXG4gICAgICBpZiAoZmxhZykge1xyXG4gICAgICAgIGlmIChpbmRleCA8IDMpIHtcclxuICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgIDxCdXR0b25cclxuICAgICAgICAgICAgICBjbGFzc05hbWU9e2NscyhnZXRMZXNzKHN0eWxlcywgXCJlZGl0b3JcIiksIHtcclxuICAgICAgICAgICAgICAgIFtnZXRMZXNzKHN0eWxlcywgXCJlZGl0b3JfZmlyc3RcIildOiBpbmRleCA9PT0gMCxcclxuICAgICAgICAgICAgICB9KX1cclxuICAgICAgICAgICAgICBrZXk9e2luZGV4fVxyXG4gICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcclxuICAgICAgICAgICAgICAgIG9uQ2xpY2sgJiYgb25DbGljayhyZWNvcmQpO1xyXG4gICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgdHlwZT1cImxpbmtcIlxyXG4gICAgICAgICAgICAgIHsuLi5wYXJhbXN9XHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICB7c2hvd0ljb24gIT09IGZhbHNlICYmIChcclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwiaWNvblwiKX0+e2ljb259PC9zcGFuPlxyXG4gICAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJ0ZXh0XCIpfT57Y2hpbGRyZW59PC9zcGFuPlxyXG4gICAgICAgICAgICA8L0J1dHRvbj5cclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfSBlbHNlIGlmIChpbmRleCA9PSAzKSB7XHJcbiAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICA8UG9wb3ZlclxyXG4gICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbVwiXHJcbiAgICAgICAgICAgICAgdGl0bGU9e251bGx9XHJcbiAgICAgICAgICAgICAgY29udGVudD17Y29udGVudH1cclxuICAgICAgICAgICAgICB0cmlnZ2VyPXtbXCJjbGlja1wiXX1cclxuICAgICAgICAgICAgICBrZXk9e2luZGV4fVxyXG4gICAgICAgICAgICAgIHZpc2libGU9e3RoaXMuc3RhdGUucG9wb3BlbnNbcmVjb3JkLmlkXSB8fCBmYWxzZX1cclxuICAgICAgICAgICAgICBvblZpc2libGVDaGFuZ2U9eyh2aXNpYmFsZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKHZpc2liYWxlKSB7XHJcbiAgICAgICAgICAgICAgICAgIGxldCBkYXRhID0ge30gYXMgYW55O1xyXG4gICAgICAgICAgICAgICAgICBkYXRhW3JlY29yZC5pZF0gPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgICAgICAgICAgICBwb3BvcGVuczogZGF0YSxcclxuICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgICAgICAgICAgICBwb3BvcGVuczoge30sXHJcbiAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgLy8gb3ZlcmxheUNsYXNzTmFtZT17c3R5bGVzWydwb3AnXX1cclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxhIGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwiZWRpdG9yXCIpfT5cclxuICAgICAgICAgICAgICAgIDxFbGxpcHNpc091dGxpbmVkIC8+XHJcbiAgICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgICA8L1BvcG92ZXI+XHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgIDxCdXR0b25cclxuICAgICAgICAgICAgY2xhc3NOYW1lPXtjbHMoZ2V0TGVzcyhzdHlsZXMsIFwiZWRpdG9yXCIpLCB7XHJcbiAgICAgICAgICAgICAgW2dldExlc3Moc3R5bGVzLCBcImVkaXRvcl9maXJzdFwiKV06IGluZGV4ID09PSAwLFxyXG4gICAgICAgICAgICB9KX1cclxuICAgICAgICAgICAga2V5PXtpbmRleH1cclxuICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xyXG4gICAgICAgICAgICAgIG9uQ2xpY2sgJiYgb25DbGljayhyZWNvcmQpO1xyXG4gICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICB0eXBlPVwibGlua1wiXHJcbiAgICAgICAgICAgIHsuLi5wYXJhbXN9XHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIHtzaG93SWNvbiAhPT0gZmFsc2UgJiYgKFxyXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwiaWNvblwiKX0+e2ljb259PC9zcGFuPlxyXG4gICAgICAgICAgICApfVxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcInRleHRcIil9PntjaGlsZHJlbn08L3NwYW4+XHJcbiAgICAgICAgICA8L0J1dHRvbj5cclxuICAgICAgICApO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIC8vIH1cclxuICB9XHJcbiAgLy/moJHngrnlh7vkuovku7ZcclxuICB0cmVlU2VsZWN0KHNlbGVjdGVkS2V5czogYW55LCBvYmo6IGFueSkge1xyXG4gICAgbGV0IGtleXdvcmQgPSBcIlwiO1xyXG4gICAgY29uc3Qge1xyXG4gICAgICBzZWFyY2hLZXkgPSBcImtleVwiLFxyXG4gICAgICBzZWFyY2hGaWVsZCA9IFwiXCIsXHJcbiAgICAgIHBhcmFudFNlbGVjdCA9IHRydWUsXHJcbiAgICB9ID0gdGhpcy5wcm9wcy50cmVlUHJvcHM7XHJcbiAgICBjb25zdCB7IHRyZWVTZWxlY3RlZEtleSB9ID0gdGhpcy5zdGF0ZTtcclxuICAgIGNvbnN0IHsgc2VsZWN0ZWQsIHNlbGVjdGVkTm9kZXMgfSA9IG9iajtcclxuXHJcbiAgICBpZiAoc2VsZWN0ZWQpIHtcclxuICAgICAga2V5d29yZCA9IHNlbGVjdGVkTm9kZXNbMF0uZGF0YXJlZi5hdHRyaWJ1dGVbc2VhcmNoS2V5XTtcclxuICAgICAgaWYgKHBhcmFudFNlbGVjdCkge1xyXG4gICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgdHJlZVNlbGVjdGVkS2V5OiBzZWxlY3RlZEtleXNbMF0sXHJcbiAgICAgICAgICB0cmVlU2VhcmNoUHJhbXM6IHsgW3NlYXJjaEZpZWxkXToga2V5d29yZCB9LFxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGlmIChzZWxlY3RlZE5vZGVzWzBdLmlzTGVhZiB8fCAhc2VsZWN0ZWROb2Rlc1swXS5jaGlsZHJlbikge1xyXG4gICAgICAgICAgaWYgKHNlbGVjdGVkS2V5c1swXSAhPT0gdHJlZVNlbGVjdGVkS2V5KSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgICAgIHRyZWVTZWxlY3RlZEtleTogc2VsZWN0ZWRLZXlzWzBdLFxyXG4gICAgICAgICAgICAgIHRyZWVTZWFyY2hQcmFtczogeyBbc2VhcmNoRmllbGRdOiBrZXl3b3JkIH0sXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgdHJlZVNlbGVjdGVkS2V5OiBrZXl3b3JkLFxyXG4gICAgICAgIHRyZWVTZWFyY2hQcmFtczoge30sXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMucHJvcHMub25UcmVlU2VsZWN0KSB7XHJcbiAgICAgIHRoaXMucHJvcHMub25UcmVlU2VsZWN0KHNlbGVjdGVkS2V5cywgb2JqKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgY29uc3QgZnJvbVZhbHVlID0gdGhpcy5zZWFyY2hSZWY/LmN1cnJlbnQ/LmdldFNlYXJjaFZhbHVlcygpIHx8IHt9O1xyXG4gICAgc2VhcmNoRmllbGQgJiYgdGhpcy50YWJsZUxvYWQoeyAuLi5mcm9tVmFsdWUsIFtzZWFyY2hGaWVsZF06IGtleXdvcmQgfSk7XHJcbiAgICB0aGlzLnByb3BzLm9uQ2FsbEJhY2tzPy50cmVlU2VsZWN0Q2FsbEJhY2sgJiZcclxuICAgICAgdXRpbHMuY2FsbGJhY2sodGhpcy5wcm9wcy5vbkNhbGxCYWNrcz8udHJlZVNlbGVjdENhbGxCYWNrLCB0aGlzLCBbXHJcbiAgICAgICAgc2VsZWN0ZWRLZXlzLFxyXG4gICAgICAgIG9iaixcclxuICAgICAgXSk7XHJcbiAgfVxyXG4gIHJlc2V0U2VhcmNoKCkge1xyXG4gICAgdGhpcy5zZWFyY2hSZWYuY3VycmVudD8ucmVzZXRGaWVsZHMoKTtcclxuICB9XHJcbiAgZ2V0VGV4dChwcm9wcywgdGV4dCkge1xyXG4gICAgbGV0IG5ld1RleHQgPSB0ZXh0O1xyXG4gICAgaWYgKHByb3BzPy5kYXRhICYmIHByb3BzPy5kYXRhPy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGxldCBkYXRhID0gcHJvcHMuZGF0YTtcclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBkYXRhPy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGlmIChkYXRhW2ldLnZhbHVlID09IHRleHQpIHtcclxuICAgICAgICAgIG5ld1RleHQgPSBkYXRhW2ldLmxhYmVsO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIG5ld1RleHQ7XHJcbiAgfVxyXG4gIHNldFRhYmxlRGF0YShkYXRhKSB7XHJcbiAgICB0aGlzLnRhYmxlUmVmLmN1cnJlbnQ/LnN0b3JlPy5zZXREYXRhKGRhdGEpO1xyXG4gIH1cclxuICBzZXRUcmVlRGF0YShkYXRhKSB7XHJcbiAgICB0aGlzLnRyZWVSZWYuY3VycmVudD8uc3RvcmU/LnNldERhdGEoZGF0YSk7XHJcbiAgfVxyXG4gIGdldFNlbGVjdGVkS2V5ID0gKHNlbGVjdGVkKSA9PiB7XHJcbiAgICBsZXQgcmVzID0gW107XHJcbiAgICBmb3IgKGxldCBrZXkgaW4gc2VsZWN0ZWQpIHtcclxuICAgICAgY29uc3Qga2V5cyA9IHNlbGVjdGVkW2tleV07XHJcbiAgICAgIGlmIChrZXlzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICByZXMgPSBbLi4ucmVzLCAuLi5rZXlzXTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJlcztcclxuICB9O1xyXG5cclxuICByZW5kZXIoKSB7XHJcbiAgICBjb25zdCB7XHJcbiAgICAgIGNvbHVtbnMgPSBbXSxcclxuICAgICAgc2hvd1NlYXJjaCA9IHRydWUsXHJcbiAgICAgIGNoaWxkcmVuLFxyXG4gICAgICBzdWJtaXRVcmwgPSBcIlwiLFxyXG4gICAgICB0YWJsZVByb3BzID0ge30sXHJcbiAgICAgIHRyZWVQcm9wcyA9IHt9LFxyXG4gICAgICBmb3JtUHJvcHMgPSB7fSxcclxuICAgICAgc2hvd0xlZnQgPSBmYWxzZSxcclxuICAgICAgc3VibWl0UGFyYW1zID0ge30sXHJcbiAgICAgIHNob3dUb29sQnV0dG9uID0gdHJ1ZSxcclxuICAgICAgYnV0dG9ucyA9IFtdLFxyXG4gICAgICBlZGl0b3JGb3JtID0gdHJ1ZSxcclxuICAgICAgb25TaG93Rm9ybSxcclxuICAgICAgZm9ybUNoYW5nZVZhbGlkID0gdHJ1ZSxcclxuICAgICAgY2xhc3NOYW1lLFxyXG4gICAgICB0b29sQnV0dG9uUG9zaXRpb24gPSBcImJ1dHRvbVwiLFxyXG4gICAgICBhY3Rpb25Qcm9wcyxcclxuICAgICAgZGVsZXRlUG9zaXRpb24gPSBcInRvb2xiYXJcIixcclxuICAgIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgY29uc3Qge1xyXG4gICAgICBzdG9yZSxcclxuICAgICAgZmlsdGVyQ29sdW1uID0gdHJ1ZSxcclxuICAgICAgYWN0aW9uQ29sdW1uID0gdHJ1ZSxcclxuICAgICAgc2hvd1Jvd1NlbGVjdGlvbiA9IHRydWUsXHJcbiAgICAgIGNvbHVtbk9yZGVyID0gdHJ1ZSxcclxuICAgICAgZXhwYW5kYWJsZSA9IHt9LFxyXG4gICAgICBwYXJhbnRTZWxlY3QgPSB0cnVlLFxyXG4gICAgICAuLi5vdGhlcnRhYmxlUGFyYW1zXHJcbiAgICB9ID0gdGFibGVQcm9wcztcclxuXHJcbiAgICBjb25zdCB7XHJcbiAgICAgIHN0b3JlOiB0cmVlU3RvcmUgPSB7fSxcclxuICAgICAgc2hvd1NlYXJjaDogdHJlZVNlYXJjaCA9IHRydWUsXHJcbiAgICAgIHRpdGxlQWxpYXMgPSBcInRpdGxlXCIsXHJcbiAgICAgIC4uLm90aGVydHJlZVBhcmFtc1xyXG4gICAgfSA9IHRyZWVQcm9wcztcclxuXHJcbiAgICBsZXQgdGFibGVQYXJhbXMgPSB7IGZpbHRlckNvbHVtbiwgc3RvcmUsIC4uLm90aGVydGFibGVQYXJhbXMgfSBhcyBhbnk7XHJcbiAgICBsZXQgdGFibGVDb2x1bW46IGFueVtdID0gW107XHJcbiAgICBjb25zdCBzZWFyY2hGb3JtczogYW55ID0gW107XHJcbiAgICBjb25zdCBlZGl0b3JGb3JtczogYW55ID0gW107XHJcbiAgICBjb25zdCBkZWZhdWx0VmFsdWU6IGFueSA9IHt9O1xyXG4gICAgY29uc3QgY29sdW1uQnV0dG9uczogYW55ID0gW107XHJcbiAgICBjb2x1bW5zLm1hcCgoaXRlbTogYW55KSA9PiB7XHJcbiAgICAgIGxldCB0ZW1wID0geyAuLi5pdGVtIH07XHJcbiAgICAgIGlmICh0ZW1wLnNlYXJjaCA9PT0gdHJ1ZSB8fCB0ZW1wLnNlYXJjaD8uc2hvdyA9PT0gdHJ1ZSkge1xyXG4gICAgICAgIHNlYXJjaEZvcm1zLnB1c2goe1xyXG4gICAgICAgICAgbmFtZTogdGVtcC5maWVsZCB8fCB0ZW1wLmRhdGFJbmRleCxcclxuICAgICAgICAgIGxhYmVsOiB0ZW1wLnNlYXJjaD8ubGFiZWwgfHwgdGVtcC50aXRsZSxcclxuICAgICAgICAgIHR5cGU6IHRlbXAudHlwZSxcclxuICAgICAgICAgIHByb3BzOiB0ZW1wLnByb3BzLFxyXG4gICAgICAgICAgbGFiZWxDb2w6IHRlbXAuc2VhcmNoPy5sYWJlbENvbCxcclxuICAgICAgICAgIHdyYXBwZXJDb2w6IHRlbXAuc2VhcmNoPy53cmFwcGVyQ29sLFxyXG4gICAgICAgICAgcnVsZXM6IHRlbXAuc2VhcmNoUnVsZXMgPyB0ZW1wLnNlYXJjaFJ1bGVzIDogW10sXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGRlbGV0ZSB0ZW1wLnNlYXJjaDtcclxuICAgICAgdGVtcC5lZGl0b3IgIT09IGZhbHNlICYmXHJcbiAgICAgICAgZWRpdG9yRm9ybXMucHVzaCh7XHJcbiAgICAgICAgICBuYW1lOiB0ZW1wLmZpZWxkIHx8IHRlbXAuZGF0YUluZGV4LFxyXG4gICAgICAgICAgbGFiZWw6IHRlbXAudGl0bGUsXHJcbiAgICAgICAgICBydWxlczogdGVtcC5ydWxlcyA/IHRlbXAucnVsZXMgOiBbXSxcclxuICAgICAgICAgIHR5cGU6IHRlbXAudHlwZSxcclxuICAgICAgICAgIHNwYW46IHRlbXAuc3BhbixcclxuICAgICAgICAgIGRpY3ROYW1lOiB0ZW1wLmRpY3ROYW1lLFxyXG4gICAgICAgICAgcHJvcHM6IHsgLi4udGVtcC5wcm9wcyB9LFxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgaWYgKFxyXG4gICAgICAgIHRlbXAucHJvcHM/LmRlZmF1bHRWYWx1ZSAhPT0gdW5kZWZpbmVkICYmXHJcbiAgICAgICAgdGVtcC5wcm9wcz8uZGVmYXVsdFZhbHVlICE9PSBudWxsXHJcbiAgICAgICkge1xyXG4gICAgICAgIGNvbnN0IG5hbWUgPSB0ZW1wLmZpZWxkIHx8IHRlbXAuZGF0YUluZGV4O1xyXG4gICAgICAgIGRlZmF1bHRWYWx1ZVtuYW1lXSA9IHRlbXAucHJvcHM/LmRlZmF1bHRWYWx1ZTtcclxuICAgICAgfVxyXG4gICAgICBkZWxldGUgdGVtcC5ydWxlcztcclxuICAgICAgZGVsZXRlIHRlbXAuc3BhbjtcclxuICAgICAgaWYgKHRlbXAuY29sdW1uU2VhcmNoKSB7XHJcbiAgICAgICAgdGVtcC5maWx0ZXJQcm9wcyA9IHtcclxuICAgICAgICAgIHR5cGU6IHRlbXAudHlwZSxcclxuICAgICAgICAgIHByb3BzOiB0ZW1wLnByb3BzLFxyXG4gICAgICAgIH07XHJcbiAgICAgIH1cclxuICAgICAgZGVsZXRlIHRlbXAudHlwZTtcclxuICAgICAgbGV0IHRlbXBQcm9wID0geyAuLi50ZW1wLnByb3BzIH07XHJcbiAgICAgIGlmICh0ZW1wLnN0eWxlKSB7XHJcbiAgICAgICAgdGVtcCA9IHtcclxuICAgICAgICAgIHJlbmRlcjogKHRleHQ6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICAgIDw+XHJcbiAgICAgICAgICAgICAgICB7dGV4dCAhPT0gXCJcIiAmJiB0ZXh0ICE9PSBudWxsICYmIHRleHQgIT09IHVuZGVmaW5lZCAmJiAoXHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJjb2wtYmFja1wiKX0+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJjb2wtdGV4dFwiKX0+XHJcbiAgICAgICAgICAgICAgICAgICAgICB7dGhpcy5nZXRUZXh0KHRlbXBQcm9wLCB0ZXh0KX1cclxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgICA8Lz5cclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICAuLi50ZW1wLFxyXG4gICAgICAgIH07XHJcbiAgICAgIH0gZWxzZSBpZiAoIXRlbXAuZWxsaXBzaXMpIHtcclxuICAgICAgICB0ZW1wID0ge1xyXG4gICAgICAgICAgcmVuZGVyOiAodGV4dDogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiA8Pnt0aGlzLmdldFRleHQodGVtcFByb3AsIHRleHQpfTwvPjtcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICAuLi50ZW1wLFxyXG4gICAgICAgIH07XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGVtcCA9IHsgLi4udGVtcCB9O1xyXG4gICAgICB9XHJcbiAgICAgIGRlbGV0ZSB0ZW1wLnByb3BzO1xyXG4gICAgICBpZiAodGVtcD8uY29sdW1uU2hvdyAhPT0gZmFsc2UpIHRhYmxlQ29sdW1uLnB1c2godGVtcCk7XHJcbiAgICB9KTtcclxuICAgIGNvbnN0IHNlbGZCdXR0b25zOiBhbnkgPSBbXTtcclxuICAgIGNvbnN0IHsgYmFzZUFjdGlvbkNvbHVtbiB9ID0gY29uZmlnKCk7XHJcbiAgICBsZXQgc2hvd0ljb24gPSB0cnVlO1xyXG4gICAgaWYgKGFjdGlvblByb3BzPy5zaG93SWNvbiA9PT0gZmFsc2UpIHNob3dJY29uID0gZmFsc2U7XHJcbiAgICBlbHNlIGlmIChiYXNlQWN0aW9uQ29sdW1uLnNob3dJY29uID09PSBmYWxzZSkgc2hvd0ljb24gPSBmYWxzZTtcclxuICAgIGlmIChlZGl0b3JGb3JtID09IHRydWUpIHtcclxuICAgICAgaWYgKGJ1dHRvbnMuaW5kZXhPZihcInNlYXJjaFwiKSA+IC0xKSB7XHJcbiAgICAgICAgY29sdW1uQnV0dG9ucy5wdXNoKFxyXG4gICAgICAgICAgPEJ1dHRvblxyXG4gICAgICAgICAgICBvbkNsaWNrPXsocmVjb3JkOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICBpZiAob25TaG93Rm9ybSkge1xyXG4gICAgICAgICAgICAgICAgb25TaG93Rm9ybShyZWNvcmQuYXR0cmlidXRlIHx8IHJlY29yZCwgXCJkZXRhaWxcIik7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIHRoaXMuc2hvd0Zvcm0ocmVjb3JkLmF0dHJpYnV0ZSB8fCByZWNvcmQsIFwiZGV0YWlsXCIpO1xyXG4gICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICBpY29uPXs8RXllT3V0bGluZWQgLz59XHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIOafpeeci1xyXG4gICAgICAgICAgPC9CdXR0b24+XHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgICBpZiAoYnV0dG9ucy5pbmRleE9mKFwiZWRpdG9yXCIpID4gLTEpIHtcclxuICAgICAgICBjb2x1bW5CdXR0b25zLnB1c2goXHJcbiAgICAgICAgICA8QnV0dG9uXHJcbiAgICAgICAgICAgIG9uQ2xpY2s9eyhyZWNvcmQ6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgIGlmIChvblNob3dGb3JtKSB7XHJcbiAgICAgICAgICAgICAgICBvblNob3dGb3JtKHJlY29yZC5hdHRyaWJ1dGUgfHwgcmVjb3JkLCBcImVkaXRvclwiKTtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgdGhpcy5zaG93Rm9ybShyZWNvcmQuYXR0cmlidXRlIHx8IHJlY29yZCwgXCJlZGl0b3JcIik7XHJcbiAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgIGljb249ezxFZGl0T3V0bGluZWQgLz59XHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIOe8lui+kVxyXG4gICAgICAgICAgPC9CdXR0b24+XHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKGJ1dHRvbnMuaW5kZXhPZihcImFkZFwiKSA+IC0xKSB7XHJcbiAgICAgIHNlbGZCdXR0b25zLnB1c2goXHJcbiAgICAgICAgPEJ1dHRvblxyXG4gICAgICAgICAgdHlwZT17XCJwcmltYXJ5XCJ9XHJcbiAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IHsgb25TaG93Rm9ybSB9ID0gdGhpcy5wcm9wcztcclxuICAgICAgICAgICAgaWYgKG9uU2hvd0Zvcm0pIHtcclxuICAgICAgICAgICAgICBvblNob3dGb3JtKCk7XHJcbiAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMuc2hvd0Zvcm0oKTtcclxuICAgICAgICAgIH19XHJcbiAgICAgICAgICBpY29uPXs8UGx1c091dGxpbmVkIC8+fVxyXG4gICAgICAgID5cclxuICAgICAgICAgIOa3u+WKoFxyXG4gICAgICAgIDwvQnV0dG9uPlxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gICAgaWYgKGJ1dHRvbnMuaW5kZXhPZihcImRlbGV0ZVwiKSA+IC0xKSB7XHJcbiAgICAgIGlmIChkZWxldGVQb3NpdGlvbiA9PSBcInRvb2xiYXJcIikge1xyXG4gICAgICAgIHNlbGZCdXR0b25zLnB1c2goXHJcbiAgICAgICAgICA8QnV0dG9uXHJcbiAgICAgICAgICAgIC8vIHR5cGU9e1wicHJpbWFyeVwifVxyXG4gICAgICAgICAgICBvbkNsaWNrPXt0aGlzLm9uRGVsZXRlLmJpbmQodGhpcyl9XHJcbiAgICAgICAgICAgIGljb249ezxEZWxldGVPdXRsaW5lZCAvPn1cclxuICAgICAgICAgICAgZGFuZ2VyXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIOWIoOmZpFxyXG4gICAgICAgICAgPC9CdXR0b24+XHJcbiAgICAgICAgKTtcclxuICAgICAgfSBlbHNlIGlmIChkZWxldGVQb3NpdGlvbiA9PSBcInJvd1wiKSB7XHJcbiAgICAgICAgY29sdW1uQnV0dG9ucy5wdXNoKFxyXG4gICAgICAgICAgPEJ1dHRvblxyXG4gICAgICAgICAgICAvLyB0eXBlPXtcInByaW1hcnlcIn1cclxuICAgICAgICAgICAgb25DbGljaz17KHJlY29yZDogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgdGhpcy5vbkRlbGV0ZShyZWNvcmQpO1xyXG4gICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICBpY29uPXs8RGVsZXRlT3V0bGluZWQgLz59XHJcbiAgICAgICAgICAgIGRhbmdlclxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICDliKDpmaRcclxuICAgICAgICAgIDwvQnV0dG9uPlxyXG4gICAgICAgICk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGlmIChBcnJheS5pc0FycmF5KGNoaWxkcmVuKSkge1xyXG4gICAgICBjaGlsZHJlbi5tYXAoKGl0ZW06IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KGl0ZW0pKSB7XHJcbiAgICAgICAgICBpdGVtLm1hcCgoY2hpbGQpID0+IHtcclxuICAgICAgICAgICAgaWYgKGNoaWxkPy5wcm9wcz8ucGFnZVR5cGUgPT0gXCJ0b29sQnV0dG9uXCIpIHtcclxuICAgICAgICAgICAgICBzZWxmQnV0dG9ucy5wdXNoKGNoaWxkKTtcclxuICAgICAgICAgICAgfSBlbHNlIGlmIChjaGlsZD8ucHJvcHM/LnBhZ2VUeXBlID09IFwiY2xvdW1uQnV0dG9uXCIpIHtcclxuICAgICAgICAgICAgICBjb2x1bW5CdXR0b25zLnB1c2goY2hpbGQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgaWYgKGl0ZW0/LnByb3BzPy5wYWdlVHlwZSA9PSBcInRvb2xCdXR0b25cIikge1xyXG4gICAgICAgICAgICBzZWxmQnV0dG9ucy5wdXNoKGl0ZW0pO1xyXG4gICAgICAgICAgfSBlbHNlIGlmIChpdGVtPy5wcm9wcz8ucGFnZVR5cGUgPT0gXCJjbG91bW5CdXR0b25cIikge1xyXG4gICAgICAgICAgICBjb2x1bW5CdXR0b25zLnB1c2goaXRlbSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH0gZWxzZSBpZiAoY2hpbGRyZW4pIHtcclxuICAgICAgY29uc3QgeyBwcm9wcyB9OiBhbnkgPSBjaGlsZHJlbjtcclxuICAgICAgaWYgKHByb3BzPy5wYWdlVHlwZSA9PSBcInRvb2xCdXR0b25cIikge1xyXG4gICAgICAgIHNlbGZCdXR0b25zLnB1c2goY2hpbGRyZW4pO1xyXG4gICAgICB9IGVsc2UgaWYgKHByb3BzPy5wYWdlVHlwZSA9PSBcImNsb3VtbkJ1dHRvblwiKSB7XHJcbiAgICAgICAgY29sdW1uQnV0dG9ucy5wdXNoKGNoaWxkcmVuKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgYWN0aW9uQ29sdW1uICYmXHJcbiAgICAgIHRhYmxlQ29sdW1uLnB1c2goe1xyXG4gICAgICAgIHRpdGxlOiBcIuaTjeS9nFwiLFxyXG4gICAgICAgIGRhdGFJbmRleDogXCJhY3Rpb25cIixcclxuICAgICAgICBhbGlnbjogYWN0aW9uUHJvcHM/LnRleHRBbGlnblxyXG4gICAgICAgICAgPyBhY3Rpb25Qcm9wcz8udGV4dEFsaWduXHJcbiAgICAgICAgICA6IGJhc2VBY3Rpb25Db2x1bW4udGV4dEFsaWduXHJcbiAgICAgICAgICA/IGJhc2VBY3Rpb25Db2x1bW4udGV4dEFsaWduXHJcbiAgICAgICAgICA6IFwiY2VudGVyXCIsXHJcbiAgICAgICAgd2lkdGg6IGFjdGlvblByb3BzPy53aWR0aFxyXG4gICAgICAgICAgPyBhY3Rpb25Qcm9wcz8ud2lkdGhcclxuICAgICAgICAgIDogYmFzZUFjdGlvbkNvbHVtbi53aWR0aFxyXG4gICAgICAgICAgPyBiYXNlQWN0aW9uQ29sdW1uLndpZHRoXHJcbiAgICAgICAgICA6IDIwMCxcclxuICAgICAgICBmaXhlZDogXCJyaWdodFwiLFxyXG4gICAgICAgIHJlbmRlcjogKHRleHQ6IGFueSwgcmVjb3JkOiBhbnkpID0+IHtcclxuICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJhY3Rpb25cIil9PlxyXG4gICAgICAgICAgICAgIHt0aGlzLnJlbmRlckNsb3VtbkJ1dHRvbihjb2x1bW5CdXR0b25zLCByZWNvcmQpfVxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfSxcclxuICAgICAgfSk7XHJcbiAgICBpZiAoY29sdW1uT3JkZXIpXHJcbiAgICAgIHRhYmxlQ29sdW1uID0gW1xyXG4gICAgICAgIHtcclxuICAgICAgICAgIHRpdGxlOiBcIuW6j+WPt1wiLFxyXG4gICAgICAgICAgd2lkdGg6IDgwLFxyXG4gICAgICAgICAgYWxpZ246IFwiY2VudGVyXCIsXHJcbiAgICAgICAgICByZW5kZXI6ICh0ZXh0LCByZWFjb3JkLCBpbmRleCkgPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4gPD57aW5kZXggKyAxfTwvPjtcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgfSxcclxuICAgICAgICAuLi50YWJsZUNvbHVtbixcclxuICAgICAgXTtcclxuICAgIGxldCBzZWFyY2hGbGFnID0gc2hvd1NlYXJjaCAmJiBzZWFyY2hGb3Jtcy5sZW5ndGggPiAwO1xyXG4gICAgbGV0IHsgdGFibGVUb29sIH0gPSBjb25maWcoKTtcclxuICAgIGxldCB0b29sRmxhZyA9IHNob3dUb29sQnV0dG9uICYmIHNlbGZCdXR0b25zLmxlbmd0aCA+IDA7XHJcbiAgICBsZXQgdG9vbGJhckZsYWcgPSAhKFxyXG4gICAgICB0YWJsZVByb3BzLnRvb2xiYXIgPT0gZmFsc2UgfHxcclxuICAgICAgdGFibGVQcm9wcy50b29sYmFyPy5zaG93ID09IGZhbHNlIHx8XHJcbiAgICAgIHRhYmxlUHJvcHMudG9vbGJhcj8udG9vbHM/Lmxlbmd0aCA9PSAwIHx8XHJcbiAgICAgIHRhYmxlVG9vbD8uc2hvdyA9PSBmYWxzZVxyXG4gICAgKTtcclxuICAgIGlmICh0YWJsZVByb3BzLnBhZ2luYXRpb24gIT09IGZhbHNlKSB7XHJcbiAgICAgIGNvbnN0IHNjcm9sbCA9IHRhYmxlUGFyYW1zLnNjcm9sbDtcclxuICAgICAgdGFibGVQYXJhbXMgPSB7XHJcbiAgICAgICAgLi4udGFibGVQYXJhbXMsXHJcbiAgICAgICAgc2Nyb2xsOiB7IHg6IFwibWF4LWNvbnRlbnRcIiwgLi4uc2Nyb2xsIH0sXHJcbiAgICAgIH07XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIChcclxuICAgICAgPGRpdiBjbGFzc05hbWU9e2NscyhnZXRMZXNzKHN0eWxlcywgXCJwYWdlXCIpLCBjbGFzc05hbWUpfT5cclxuICAgICAgICB7dGhpcy5wcm9wcy5wYWdlVGl0bGUgJiYgKFxyXG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2NscyhnZXRMZXNzKHN0eWxlcywgXCJwYWdlLXRpdGxlXCIpKX0+XHJcbiAgICAgICAgICAgIHt0aGlzLnByb3BzLnBhZ2VUaXRsZX1cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICl9XHJcbiAgICAgICAgPGRpdlxyXG4gICAgICAgICAgY2xhc3NOYW1lPXtjbHMoZ2V0TGVzcyhzdHlsZXMsIFwicGFnZS1wYW5lXCIpKX1cclxuICAgICAgICAgIHN0eWxlPXt7IGRpc3BsYXk6IFwiZmxleFwiIH19XHJcbiAgICAgICAgPlxyXG4gICAgICAgICAge3Nob3dMZWZ0ICYmIChcclxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcImxlZnRcIil9PlxyXG4gICAgICAgICAgICAgIDxUcmVlXHJcbiAgICAgICAgICAgICAgICBzdG9yZT17eyAuLi50cmVlU3RvcmUgfX1cclxuICAgICAgICAgICAgICAgIHNob3dJY29uPXtmYWxzZX1cclxuICAgICAgICAgICAgICAgIGNoZWNrYWJsZT17ZmFsc2V9XHJcbiAgICAgICAgICAgICAgICBzZWFyY2hhYmxlPXt0cmVlU2VhcmNofVxyXG4gICAgICAgICAgICAgICAgb25TZWxlY3Q9e3RoaXMudHJlZVNlbGVjdC5iaW5kKHRoaXMpfVxyXG4gICAgICAgICAgICAgICAgc2VsZWN0ZWRLZXlzPXtbdGhpcy5zdGF0ZS50cmVlU2VsZWN0ZWRLZXldfVxyXG4gICAgICAgICAgICAgICAgdGl0bGVBbGlhcz17dGl0bGVBbGlhc31cclxuICAgICAgICAgICAgICAgIHsuLi5vdGhlcnRyZWVQYXJhbXN9XHJcbiAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICApfVxyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICBjbGFzc05hbWU9e2NscyhnZXRMZXNzKHN0eWxlcywgXCJyaWdodFwiKSwge1xyXG4gICAgICAgICAgICAgIFtnZXRMZXNzKHN0eWxlcywgXCJuby1sZWZ0LXJpZ2h0XCIpXTogIXNob3dMZWZ0LFxyXG4gICAgICAgICAgICB9KX1cclxuICAgICAgICAgID5cclxuICAgICAgICAgICAge3Nob3dTZWFyY2ggJiYgc2VhcmNoRm9ybXMubGVuZ3RoID4gMCAmJiAoXHJcbiAgICAgICAgICAgICAgPEhlYWRlclNlYXJjaFxyXG4gICAgICAgICAgICAgICAgc2VhcmNoRm9ybXM9e3NlYXJjaEZvcm1zfVxyXG4gICAgICAgICAgICAgICAgdG9vbEJ1dHRvblBvc2l0aW9uPXt0b29sQnV0dG9uUG9zaXRpb259XHJcbiAgICAgICAgICAgICAgICBvblNlYXJjaD17dGhpcy5vblNlYXJjaC5iaW5kKHRoaXMpfVxyXG4gICAgICAgICAgICAgICAgb25SZXNldD17dGhpcy5wcm9wcy5vblJlc2V0fVxyXG4gICAgICAgICAgICAgICAgcmVmPXt0aGlzLnNlYXJjaFJlZn1cclxuICAgICAgICAgICAgICAgIHNlYXJjaEZvcm1Qcm9wcz17dGhpcy5wcm9wcy5zZWFyY2hGb3JtUHJvcHN9XHJcbiAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgKX1cclxuXHJcbiAgICAgICAgICAgIHtzaG93VG9vbEJ1dHRvbiAmJlxyXG4gICAgICAgICAgICAgIHNlbGZCdXR0b25zLmxlbmd0aCA+IDAgJiZcclxuICAgICAgICAgICAgICB0b29sQnV0dG9uUG9zaXRpb24gPT0gXCJidXR0b21cIiAmJlxyXG4gICAgICAgICAgICAgIHRoaXMucmVuZGVyVG9vbEJ1dHRvbnMoc2VsZkJ1dHRvbnMsIHNlYXJjaEZvcm1zLmxlbmd0aCA9PSAwKX1cclxuICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xzKFxyXG4gICAgICAgICAgICAgICAgZ2V0TGVzcyhzdHlsZXMsIFwidGFibGVcIiksXHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgIFtnZXRMZXNzKHN0eWxlcywgXCJ0YWJsZS10b3BcIildOlxyXG4gICAgICAgICAgICAgICAgICAgIChzZWFyY2hGbGFnICYmICF0b29sRmxhZykgfHwgIXRvb2xiYXJGbGFnLFxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgW2dldExlc3Moc3R5bGVzLCBcInRhYmxlLXRvcDJcIildOiAhc2VhcmNoRmxhZyAmJiAhdG9vbEZsYWcsXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxUYWJsZVxyXG4gICAgICAgICAgICAgICAgcmVmPXt0aGlzLnRhYmxlUmVmfVxyXG4gICAgICAgICAgICAgICAgY29sdW1ucz17dGFibGVDb2x1bW59XHJcbiAgICAgICAgICAgICAgICBleHBhbmRhYmxlPXt7XHJcbiAgICAgICAgICAgICAgICAgIGV4cGFuZEljb246ICh7IGV4cGFuZGVkLCBvbkV4cGFuZCwgcmVjb3JkIH0pID0+IHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICAgICAgICAgICAgPD5cclxuICAgICAgICAgICAgICAgICAgICAgICAge2V4cGFuZGVkICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlY29yZC5jaGlsZE5vZGVzICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlY29yZC5jaGlsZE5vZGVzPy5sZW5ndGggPiAwID8gKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxEb3duT3V0bGluZWRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eyhlKSA9PiBvbkV4cGFuZChyZWNvcmQsIGUpfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJleHBhbmQtaWNvblwiKX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICApIDogcmVjb3JkLmNoaWxkTm9kZXMgJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICByZWNvcmQuY2hpbGROb2Rlcz8ubGVuZ3RoID4gMCA/IChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8UmlnaHRPdXRsaW5lZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KGUpID0+IG9uRXhwYW5kKHJlY29yZCwgZSl9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcImV4cGFuZC1pY29uXCIpfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICkgOiBudWxsfVxyXG4gICAgICAgICAgICAgICAgICAgICAgPC8+XHJcbiAgICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgLi4uZXhwYW5kYWJsZSxcclxuICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICBjb2x1bW5PcmRlcj17dHJ1ZX1cclxuICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsocGFnaW5hdGlvbikgPT4ge1xyXG4gICAgICAgICAgICAgICAgICBjb25zdCB7IGN1cnJlbnRQYWdlIH0gPSB0aGlzLnN0YXRlO1xyXG4gICAgICAgICAgICAgICAgICBpZiAoY3VycmVudFBhZ2UgIT09IHBhZ2luYXRpb24uY3VycmVudCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgY3VycmVudFBhZ2U6IHBhZ2luYXRpb24uY3VycmVudCxcclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgIHRvb2xiYXI9e3tcclxuICAgICAgICAgICAgICAgICAgb25Ub29sQ2xpY2s6IHtcclxuICAgICAgICAgICAgICAgICAgICBvblJlZnJlc2g6ICgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHBhcmFtcyA9IHRoaXMuZ2V0U2VhcmNoVmFsdWVzKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRhYmxlTG9hZChwYXJhbXMpO1xyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgIC4uLnRhYmxlUHJvcHMudG9vbGJhcixcclxuICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICBzaG93Um93U2VsZWN0aW9uPXtzaG93Um93U2VsZWN0aW9ufVxyXG4gICAgICAgICAgICAgICAgey4uLnRhYmxlUGFyYW1zfVxyXG4gICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICB7ZWRpdG9yRm9ybSAmJiAoXHJcbiAgICAgICAgICAgIDxFZGl0b3JGb3JtXHJcbiAgICAgICAgICAgICAgcmVmPXt0aGlzLmVkaXRvclJlZn1cclxuICAgICAgICAgICAgICBjYWxsQmFjaz17KCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5wcm9wcy5vbkNhbGxCYWNrcz8ub25TdW1iaXRDYWxsQmFjayAmJlxyXG4gICAgICAgICAgICAgICAgICB0aGlzLnByb3BzLm9uQ2FsbEJhY2tzPy5vblN1bWJpdENhbGxCYWNrKCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnRhYmxlUmVsb2FkLmJpbmQodGhpcyk7XHJcbiAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICBmb3JtUHJvcHM9e2VkaXRvckZvcm1zfVxyXG4gICAgICAgICAgICAgIHN1Ym1pdFVybD17c3VibWl0VXJsfVxyXG4gICAgICAgICAgICAgIHN1Ym1pdFBhcmFtcz17c3VibWl0UGFyYW1zfVxyXG4gICAgICAgICAgICAgIG9uU3VibWl0PXt0aGlzLnByb3BzLm9uU3VibWl0fVxyXG4gICAgICAgICAgICAgIGRlZmF1bHRWYWx1ZT17ZGVmYXVsdFZhbHVlfVxyXG4gICAgICAgICAgICAgIG9uSGlkZUZvcm09e3RoaXMucHJvcHMub25IaWRlRm9ybX1cclxuICAgICAgICAgICAgICBvbkZvcm1DaGFuZ2U9e3RoaXMucHJvcHMub25Gb3JtQ2hhbmdlfVxyXG4gICAgICAgICAgICAgIGZvcm1UeXBlPXt0aGlzLnByb3BzLmZvcm1UeXBlIHx8IFwiYXV0b1wifVxyXG4gICAgICAgICAgICAgIGNoYW5nZVZhbGlkPXtmb3JtQ2hhbmdlVmFsaWR9XHJcbiAgICAgICAgICAgICAgb3RoZXJQcm9wcz17eyAuLi5mb3JtUHJvcHMgfX1cclxuICAgICAgICAgICAgLz5cclxuICAgICAgICAgICl9XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgKTtcclxuICB9XHJcbn1cclxuZXhwb3J0IGRlZmF1bHQgQmFzZVBhZ2U7XHJcbiJdLCJt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
898
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsIlB1cmVDb21wb25lbnQiLCJUYWJsZSIsIlRyZWUiLCJCdXR0b24iLCJNb2RhbCIsIlBvcG92ZXIiLCJtZXNzYWdlIiwiRWRpdG9yRm9ybSIsImNscyIsInN0eWxlcyIsInV0aWxzIiwiRG93bk91dGxpbmVkIiwiRXllT3V0bGluZWQiLCJFZGl0T3V0bGluZWQiLCJSaWdodE91dGxpbmVkIiwiUGx1c091dGxpbmVkIiwiRWxsaXBzaXNPdXRsaW5lZCIsIkRlbGV0ZU91dGxpbmVkIiwiZ2V0TGVzcyIsInJlcXVlc3QiLCJjb25maWciLCJnZXRTdG9yYWdlIiwiSGVhZGVyU2VhcmNoIiwiQmFzZVBhZ2UiLCJjb25zdHJ1Y3RvciIsInByb3BzIiwiX3R5cGUiLCJfc2l6ZSIsIl9kZWZpbmVQcm9wZXJ0eSIsImNyZWF0ZVJlZiIsImNoZWNrZWRUcmVlS2V5cyIsIm5hbWUiLCJ1c2VyVHlwZSIsImFjY291bnQiLCJzdGF0ZSIsInZhbHVlIiwiZGVwdElkIiwib25TZWFyY2giLCJzZWxlY3RlZCIsInJlcyIsImtleSIsImtleXMiLCJsZW5ndGgiLCJzdG9yZVByZWZpeCIsInR5cGUiLCJjb250ZW50Iiwic2l6ZSIsInNlbGVjdGVkUm93S2V5cyIsInNlbGVjdGVkUm93RGF0YXMiLCJ0cmVlU2VsZWN0ZWRLZXkiLCJleHBhbmQiLCJmb3JtVHlwZSIsInRhYmxlU2l6ZSIsInRyZWVTZWFyY2hQcmFtcyIsInBvcG9wZW5zIiwiY29tcG9uZW50RGlkTW91bnQiLCJpbml0RGF0YSIsInNldFNlYXJjaFBhcmFtcyIsInBhcmFtcyIsImNhbGxCYWNrIiwiX3RoaXMkc2VhcmNoUmVmJGN1cnJlIiwic2VhcmNoUmVmIiwiY3VycmVudCIsImRvU3VibWl0IiwiZGF0YSIsIl90aGlzJGVkaXRvclJlZiRjdXJyZSIsImxhYmVsIiwiYXJndW1lbnRzIiwidW5kZWZpbmVkIiwiZWRpdG9yUmVmIiwic2hvd0Zvcm0iLCJfdGhpcyRlZGl0b3JSZWYkY3VycmUyIiwiZWRpdG9yZmxhZyIsInNob3ciLCJoaWRlRm9ybSIsIl90aGlzJGVkaXRvclJlZiRjdXJyZTMiLCJzZXRMb2FkaW5nIiwibG9hZGluZyIsIl90aGlzJGVkaXRvclJlZiRjdXJyZTQiLCJzZXRFZGl0Rm9ybVZhbHVlcyIsIl90aGlzJGVkaXRvclJlZiRjdXJyZTUiLCJzZXRGaWVsZHNWYWx1ZSIsImdldEVkaXRGb3JtVmFsdWVzIiwiX3RoaXMkZWRpdG9yUmVmJGN1cnJlNiIsImdldEZpZWxkc1ZhbHVlIiwib25EZWxldGUiLCJfdGhpcyR0YWJsZVJlZiRjdXJyZW4iLCJkZWxldGVVcmwiLCJkZWxldGVQYXJhbXMiLCJkZWxldGVQb3NpdGlvbiIsIl90aGlzIiwidGFibGVSZWYiLCJnZXRTZWxlY3RlZFJvd0tleXMiLCJ3YXJuaW5nIiwiY29uZmlybSIsIm9uT2siLCJFcnJvciIsImRlZmF1bHRQYXJhbXMiLCJtZXRob2QiLCJhdXRvUHJlZml4IiwiaWRzIiwiam9pbiIsImlkIiwicmVxdWVzdFBhcmFtcyIsIl9vYmplY3RTcHJlYWQiLCJ0aGVuIiwiY29kZSIsIl90aGlzJHNlYXJjaFJlZiIsIl90aGlzJHByb3BzJG9uQ2FsbEJhYyIsIl90aGlzJHByb3BzJG9uQ2FsbEJhYzIiLCJzdWNjZXNzIiwiZ2V0U2VhcmNoVmFsdWVzIiwib25DYWxsQmFja3MiLCJvbkRlbGV0ZUNhbGxCYWNrIiwidGFibGVMb2FkIiwiZXJyb3IiLCJjYXRjaCIsImNvbnNvbGUiLCJsb2ciLCJfdGhpcyR0YWJsZVJlZiRjdXJyZW4yIiwicmVxdWVzdENvbmZpZyIsInN0b3JlIiwibG9hZCIsIm9uU2VhcmNoQ2FsbEJhY2siLCJjYWxsYmFjayIsInRhYmxlUmVsb2FkIiwiX3RoaXMkdGFibGVSZWYkY3VycmVuMyIsImF1dG9Mb2FkIiwicmVsb2FkIiwiX3JlcyRkYXRhIiwicmVjb3JkcyIsImN1cnJlbnRQYWdlIiwiX3RoaXMkdGFibGVSZWYkY3VycmVuNCIsIl90aGlzJHRhYmxlUmVmJGN1cnJlbjUiLCJnZXRTZWxlY3RlZFJvd0RhdGFzIiwiX3RoaXMkdGFibGVSZWYkY3VycmVuNiIsInNldFNlbGVjdGVkUm93S2V5cyIsIl90aGlzJHRhYmxlUmVmJGN1cnJlbjciLCJzZXRTZWxlY3RlZFJvd0RhdGFzIiwiX3RoaXMkdGFibGVSZWYkY3VycmVuOCIsInJlc2V0U2VsZWN0ZWRSb3dLZXlzIiwiX3RoaXMkdGFibGVSZWYkY3VycmVuOSIsIl90aGlzJHNlYXJjaFJlZjIiLCJmcm9tVmFsdWUiLCJnZXRDaGlsZHJlbkRhdGEiLCJ0YWJsZVByb3BzIiwicm93S2V5IiwicmVzS2V5IiwiY2hpbGROb2RlcyIsImNoaWxkcmVuIiwibWFwIiwiaXRlbSIsImluZGV4IiwicmVuZGVyVG9vbEJ1dHRvbnMiLCJ0b29sYnV0dG9ucyIsIm1hcmdpbmZsYWciLCJmbGFnIiwic2hvd1NlYXJjaCIsIl9pdGVtJHByb3BzIiwicGFnZVR5cGUiLCJvbkNsaWNrIiwiaWNvbiIsIl9vYmplY3RXaXRob3V0UHJvcGVydGllcyIsIl9leGNsdWRlZCIsImNyZWF0ZUVsZW1lbnQiLCJfZXh0ZW5kcyIsImNsYXNzTmFtZSIsInN0eWxlIiwibWFyZ2luTGVmdCIsInRpdGxlIiwicGxhY2VtZW50IiwidHJpZ2dlciIsInJlbmRlckNsb3VtbkJ1dHRvbiIsImNvbHVtbkJ1dHRvbnMiLCJyZWNvcmQiLCJhY3Rpb25Qcm9wcyIsImJhc2VBY3Rpb25Db2x1bW4iLCJuZXdCdXR0b25zIiwic2hvd0ljb24iLCJfaXRlbSRwcm9wczIiLCJyZWNvcmRTaG93IiwiX2V4Y2x1ZGVkMiIsImV2YWwiLCJwdXNoIiwiX2l0ZW0kcHJvcHMzIiwiX2V4Y2x1ZGVkMyIsInNldFN0YXRlIiwiX2l0ZW0kcHJvcHM0IiwiX2V4Y2x1ZGVkNCIsInZpc2libGUiLCJvblZpc2libGVDaGFuZ2UiLCJ2aXNpYmFsZSIsInRyZWVTZWxlY3QiLCJzZWxlY3RlZEtleXMiLCJvYmoiLCJfdGhpcyRzZWFyY2hSZWYzIiwiX3RoaXMkcHJvcHMkb25DYWxsQmFjMyIsIl90aGlzJHByb3BzJG9uQ2FsbEJhYzQiLCJrZXl3b3JkIiwic2VhcmNoS2V5Iiwic2VhcmNoRmllbGQiLCJwYXJhbnRTZWxlY3QiLCJ0cmVlUHJvcHMiLCJzZWxlY3RlZE5vZGVzIiwiZGF0YXJlZiIsImF0dHJpYnV0ZSIsImlzTGVhZiIsIm9uVHJlZVNlbGVjdCIsInRyZWVTZWxlY3RDYWxsQmFjayIsInJlc2V0U2VhcmNoIiwiX3RoaXMkc2VhcmNoUmVmJGN1cnJlMiIsInJlc2V0RmllbGRzIiwiZ2V0VGV4dCIsInRleHQiLCJfcHJvcHMkZGF0YSIsIm5ld1RleHQiLCJpIiwic2V0VGFibGVEYXRhIiwiX3RoaXMkdGFibGVSZWYkY3VycmVuMTAiLCJzZXREYXRhIiwic2V0VHJlZURhdGEiLCJfdGhpcyR0cmVlUmVmJGN1cnJlbnQiLCJ0cmVlUmVmIiwicmVuZGVyIiwiX3RhYmxlUHJvcHMkdG9vbGJhciIsIl90YWJsZVByb3BzJHRvb2xiYXIyIiwiY29sdW1ucyIsInN1Ym1pdFVybCIsImZvcm1Qcm9wcyIsInNob3dMZWZ0Iiwic3VibWl0UGFyYW1zIiwic2hvd1Rvb2xCdXR0b24iLCJidXR0b25zIiwiZWRpdG9yRm9ybSIsIm9uU2hvd0Zvcm0iLCJmb3JtQ2hhbmdlVmFsaWQiLCJ0b29sQnV0dG9uUG9zaXRpb24iLCJmaWx0ZXJDb2x1bW4iLCJhY3Rpb25Db2x1bW4iLCJzaG93Um93U2VsZWN0aW9uIiwiY29sdW1uT3JkZXIiLCJleHBhbmRhYmxlIiwib3RoZXJ0YWJsZVBhcmFtcyIsIl9leGNsdWRlZDUiLCJ0cmVlU3RvcmUiLCJ0cmVlU2VhcmNoIiwidGl0bGVBbGlhcyIsIm90aGVydHJlZVBhcmFtcyIsIl9leGNsdWRlZDYiLCJ0YWJsZVBhcmFtcyIsInRhYmxlQ29sdW1uIiwic2VhcmNoRm9ybXMiLCJlZGl0b3JGb3JtcyIsImRlZmF1bHRWYWx1ZSIsIl90ZW1wJHNlYXJjaCIsIl90ZW1wJHByb3BzIiwiX3RlbXAkcHJvcHMyIiwiX3RlbXAiLCJ0ZW1wIiwic2VhcmNoIiwiX3RlbXAkc2VhcmNoMiIsIl90ZW1wJHNlYXJjaDMiLCJfdGVtcCRzZWFyY2g0IiwiZmllbGQiLCJkYXRhSW5kZXgiLCJsYWJlbENvbCIsIndyYXBwZXJDb2wiLCJydWxlcyIsInNlYXJjaFJ1bGVzIiwiZWRpdG9yIiwic3BhbiIsImRpY3ROYW1lIiwiX3RlbXAkcHJvcHMzIiwiY29sdW1uU2VhcmNoIiwiZmlsdGVyUHJvcHMiLCJ0ZW1wUHJvcCIsIkZyYWdtZW50IiwiZWxsaXBzaXMiLCJjb2x1bW5TaG93Iiwic2VsZkJ1dHRvbnMiLCJpbmRleE9mIiwiYmluZCIsImRhbmdlciIsIkFycmF5IiwiaXNBcnJheSIsImNoaWxkIiwiX2NoaWxkJHByb3BzIiwiX2NoaWxkJHByb3BzMiIsIl9pdGVtJHByb3BzNSIsIl9pdGVtJHByb3BzNiIsImFsaWduIiwidGV4dEFsaWduIiwid2lkdGgiLCJmaXhlZCIsInJlYWNvcmQiLCJzZWFyY2hGbGFnIiwidGFibGVUb29sIiwidG9vbEZsYWciLCJ0b29sYmFyRmxhZyIsInRvb2xiYXIiLCJ0b29scyIsInBhZ2luYXRpb24iLCJzY3JvbGwiLCJ4IiwicGFnZVRpdGxlIiwiZGlzcGxheSIsImNoZWNrYWJsZSIsInNlYXJjaGFibGUiLCJvblNlbGVjdCIsIm9uUmVzZXQiLCJyZWYiLCJzZWFyY2hGb3JtUHJvcHMiLCJleHBhbmRJY29uIiwiX3JlZiIsIl9yZWNvcmQkY2hpbGROb2RlcyIsIl9yZWNvcmQkY2hpbGROb2RlczIiLCJleHBhbmRlZCIsIm9uRXhwYW5kIiwiZSIsIm9uQ2hhbmdlIiwib25Ub29sQ2xpY2siLCJvblJlZnJlc2giLCJfdGhpcyRwcm9wcyRvbkNhbGxCYWM1IiwiX3RoaXMkcHJvcHMkb25DYWxsQmFjNiIsIm9uU3VtYml0Q2FsbEJhY2siLCJvblN1Ym1pdCIsIm9uSGlkZUZvcm0iLCJvbkZvcm1DaGFuZ2UiLCJjaGFuZ2VWYWxpZCIsIm90aGVyUHJvcHMiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tcG9uZW50cy9wYWdlL0Jhc2VQYWdlL2luZGV4LnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHsgUHVyZUNvbXBvbmVudCwgUmVhY3ROb2RlIH0gZnJvbSBcInJlYWN0XCI7XHJcbmltcG9ydCBUYWJsZSBmcm9tIFwiLi4vLi4vYmFzZS90YWJsZVwiO1xyXG5pbXBvcnQgVHJlZSBmcm9tIFwiLi4vLi4vYmFzZS90cmVlXCI7XHJcbmltcG9ydCBGb3JtIGZyb20gXCIuLi8uLi9iYXNlL2Zvcm1cIjtcclxuaW1wb3J0IEJ1dHRvbiBmcm9tIFwiLi4vLi4vYmFzZS9idXR0b25cIjtcclxuaW1wb3J0IE1vZGFsIGZyb20gXCIuLi8uLi9iYXNlL21vZGFsXCI7XHJcbmltcG9ydCBQb3BvdmVyIGZyb20gXCIuLi8uLi9iYXNlL3BvcG92ZXJcIjtcclxuaW1wb3J0IG1lc3NhZ2UgZnJvbSBcIi4uLy4uL2Jhc2UvbWVzc2FnZVwiO1xyXG5pbXBvcnQgSWNvbiBmcm9tIFwiLi4vLi4vYmFzZS9jb21tb24vSWNvbkZvbnRcIjtcclxuaW1wb3J0IHsgaWNvblR5cGUgfSBmcm9tIFwiLi4vLi4vY29uc3RhbnRzXCI7XHJcbmltcG9ydCBFZGl0b3JGb3JtIGZyb20gXCIuL0Zvcm1cIjtcclxuaW1wb3J0IGNscyBmcm9tIFwiY2xhc3NuYW1lc1wiO1xyXG5pbXBvcnQgc3R5bGVzIGZyb20gXCIuL2luZGV4Lm1vZHVsZS5sZXNzXCI7XHJcbmltcG9ydCBTdG9yZSwgeyBQYWdlU3RvcmUsIFN0b3JlUHJvcHMgfSBmcm9tIFwiQGJqLW5zYy9tc25cIjtcclxuaW1wb3J0IFJvdyBmcm9tIFwiLi4vLi4vYmFzZS9ncmlkL1Jvd1wiO1xyXG5pbXBvcnQgeyB1dGlscyB9IGZyb20gXCJAYmotbnNjL21zbi9saWIvdXRpbHNcIjtcclxuaW1wb3J0IHtcclxuICBEb3duT3V0bGluZWQsXHJcbiAgRXllT3V0bGluZWQsXHJcbiAgRWRpdE91dGxpbmVkLFxyXG4gIFJpZ2h0T3V0bGluZWQsXHJcbiAgUGx1c091dGxpbmVkLFxyXG4gIEVsbGlwc2lzT3V0bGluZWQsXHJcbiAgRGVsZXRlT3V0bGluZWQsXHJcbn0gZnJvbSBcIkBhbnQtZGVzaWduL2ljb25zXCI7XHJcbmltcG9ydCB7IGdldExlc3MsIGdldE5vZGUgfSBmcm9tIFwiLi4vLi4vdXRpbHNcIjtcclxuaW1wb3J0IHJlcXVlc3QgZnJvbSBcIm5zYy1yZXF1ZXN0XCI7XHJcbmltcG9ydCBvbWl0IGZyb20gXCJvbWl0LmpzXCI7XHJcbmltcG9ydCBjb25maWcgZnJvbSBcIi4uLy4uL2NvbmZpZ1wiO1xyXG5pbXBvcnQgeyBnZXRTdG9yYWdlIH0gZnJvbSBcIkBiai1uc2MvZnVuY3Rpb25zXCI7XHJcbmltcG9ydCB7IElGb3JtUHJvcHMgfSBmcm9tIFwiLi4vLi4vYmFzZS9mb3JtL0Zvcm1cIjtcclxuaW1wb3J0IEhlYWRlclNlYXJjaCBmcm9tIFwiLi4vSGVhZGVyU2VhcmNoXCI7XHJcbmltcG9ydCB7IFBhZ2luYXRpb25Qcm9wcyB9IGZyb20gXCJhbnRkXCI7XHJcbmludGVyZmFjZSBUYWJsZVByb3BzIHtcclxuICBhY3Rpb25Db2x1bW4/OiBib29sZWFuOyAvL+aYr+WQpuaYvuekuuaTjeS9nOWIl1xyXG4gIHN0b3JlPzogU3RvcmVQcm9wcztcclxuICBmaWx0ZXJDb2x1bW4/OiBib29sZWFuOyAvL+aYr+WQpuaYvuekuui/h+a7pOaMiemSrlxyXG4gIHNob3dSb3dTZWxlY3Rpb24/OiBib29sZWFuOyAvL+aYr+WQpuihqOagvOWLvumAieWIl1xyXG4gIHBhZ2luYXRpb24/OiBib29sZWFuIHwgUGFnaW5hdGlvblByb3BzOyAvL+aYr+WQpuaYvuekuuWIhumhtVxyXG4gIGNvbHVtbk9yZGVyPzogYm9vbGVhbjsgLy/mmK/lkKbmmL7npLrooajmoLzluo/liJdcclxuICBbcHJvcHNOYW1lOiBzdHJpbmddOiBhbnk7XHJcbn1cclxuaW50ZXJmYWNlIFRyZWVQcm9wcyB7XHJcbiAgc3RvcmU/OiBTdG9yZVByb3BzO1xyXG4gIHNob3dTZWFyY2g/OiBib29sZWFuOyAvL+aYr+WQpuaYvuekuuaQnOe0ouahhlxyXG4gIHNlYXJjaEtleT86IHN0cmluZzsgLy/mkJzntKJ2YWx1ZeWvueW6lOeahGtleVxyXG4gIHNlYXJjaEZpZWxkPzogc3RyaW5nOyAvL+afpeivouWvueW6lOeahGtleVxyXG4gIHRpdGxlQWxpYXM/OiBzdHJpbmc7IC8v5qCRdGl0bGXlr7nlupTnmoRrZXks6buY6K6kdGl0bGVcclxuICBub2RlUG9ycHM/OiBvYmplY3Q7XHJcbiAgcGFyYW50U2VsZWN0PzogYm9vbGVhbjtcclxuICBbcHJvcHNOYW1lOiBzdHJpbmddOiBhbnk7XHJcbn1cclxuaW50ZXJmYWNlIEZvcm1Qcm9wcyBleHRlbmRzIElGb3JtUHJvcHMge31cclxuaW50ZXJmYWNlIE5TQ0Jhc2VCYWdlUHJvcHMge1xyXG4gIHNob3dTZWFyY2g/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/OiBBcnJheTxzdHJpbmc+KSA9PiB2b2lkOyAvL+WIoOmZpOWPguaVsO+8jOm7mOiupG1vdGhvZDpwb3N077yMIOWPguaVsOmAmui/h2lkc+aLvOaOpeS8oOmAkue7meWQjuWPsFxyXG4gIGRlbGV0ZVBvc2l0aW9uPzogXCJ0b29sYmFyXCIgfCBcInJvd1wiO1xyXG4gIGRlbGV0ZVBhcmFtcz86IE9iamVjdDtcclxuICBjaGlsZHJlbj86IFJlYWN0LlJlYWN0Tm9kZTtcclxuICBvblNlYXJjaD86ICh2YWx1ZT86IGFueSkgPT4gdm9pZDtcclxuICBvblJlc2V0PzogKCkgPT4gdm9pZDtcclxuICBpbml0RGF0YT86IGFueTsgLy/liJ3lp4vljJblm57osIPlh73mlbDvvIzlnKhjb21wb25lbnREaWRNb3VudOS4reiwg+eUqFxyXG4gIGJ1dHRvbnM/OiBBcnJheTxzdHJpbmc+OyAvL+aMiemSrumbhuWQiCAgWydhZGQnLCdkZWxldGUnLCdzZWFyY2gnLCdlZGl0b3InXVxyXG4gIG9uU2hvd0Zvcm0/OiAodmFsdWU/OiBhbnksIGVkaXRvckZsYWc/OiBzdHJpbmcpID0+IHZvaWQ7IC8v5omT5byA6KGo5Y2V5Zue6LCDXHJcbiAgb25IaWRlRm9ybT86ICgpID0+IHZvaWQ7IC8v5omT5byA6KGo5Y2V5Zue6LCDXHJcbiAgb25Gb3JtQ2hhbmdlPzogKGNoYW5nZWRWYWx1ZXM/OiBhbnksIGFsbFZhbHVlcz86IGFueSkgPT4gdm9pZDsgLy/ooajljZVvbkNoYW5nZeWbnuiwg1xyXG4gIGZvcm1UeXBlPzogXCJtb2RhbFwiIHwgXCJkcmF3ZXJcIjtcclxuICBmb3JtQ2hhbmdlVmFsaWQ/OiBib29sZWFuOyAvL+ihqOWNleagoemqjFxyXG4gIGNsYXNzTmFtZT86IGFueTtcclxuICB0b29sQnV0dG9uUG9zaXRpb24/OiBcInJpZ2h0XCIgfCBcImJ1dHRvbVwiO1xyXG4gIHBhZ2VUaXRsZT86IHN0cmluZyB8IFJlYWN0Tm9kZTtcclxuICBmb3JtUHJvcHM/OiBGb3JtUHJvcHM7XHJcbiAgYWN0aW9uUHJvcHM/OiB7IHRleHRBbGlnbj86IHN0cmluZzsgc2hvd0ljb24/OiBib29sZWFuOyB3aWR0aD86IG51bWJlciB9O1xyXG4gIHNlYXJjaEZvcm1Qcm9wcz86IHsgd3JhcHBlckNvbD86IGFueTsgbGFiZWxDb2w/OiBhbnkgfTtcclxuICBvblRyZWVTZWxlY3Q/OiAodmFsdWU/OiBhbnksIGVkaXRvckZsYWc/OiBzdHJpbmcpID0+IHZvaWQ7IC8v5omT5byA6KGo5Y2V5Zue6LCDXHJcbiAgb25DYWxsQmFja3M/OiB7XHJcbiAgICB0cmVlU2VsZWN0Q2FsbEJhY2s/OiBhbnk7XHJcbiAgICBvblNlYXJjaENhbGxCYWNrPzogYW55O1xyXG4gICAgb25TdW1iaXRDYWxsQmFjaz86IGFueTtcclxuICAgIG9uRGVsZXRlQ2FsbEJhY2s/OiBhbnk7XHJcbiAgfTtcclxufVxyXG5cclxuY2xhc3MgQmFzZVBhZ2UgZXh0ZW5kcyBQdXJlQ29tcG9uZW50PE5TQ0Jhc2VCYWdlUHJvcHMsIGFueT4ge1xyXG4gIHRhYmxlUmVmID0gUmVhY3QuY3JlYXRlUmVmPGFueT4oKTtcclxuICB0cmVlUmVmID0gUmVhY3QuY3JlYXRlUmVmPGFueT4oKTtcclxuICBzZWFyY2hSZWYgPSBSZWFjdC5jcmVhdGVSZWY8YW55PigpO1xyXG4gIGVkaXRvclJlZiA9IFJlYWN0LmNyZWF0ZVJlZjxhbnk+KCk7XHJcbiAgZGF0ZUZvcm1hdCA9IHt9IGFzIGFueTtcclxuICBjb25zdHJ1Y3Rvcihwcm9wczogYW55KSB7XHJcbiAgICBzdXBlcihwcm9wcyk7XHJcbiAgICBsZXQgeyBzdG9yZVByZWZpeCB9ID0gY29uZmlnKCk7XHJcbiAgICBsZXQgdHlwZSA9IGdldFN0b3JhZ2UoXHJcbiAgICAgIHN0b3JlUHJlZml4ID8gc3RvcmVQcmVmaXggKyBcIi1cIiArIFwiZm9ybVR5cGVcIiA6IFwiZm9ybVR5cGVcIlxyXG4gICAgKTtcclxuICAgIHR5cGUgPSB0eXBlPy5jb250ZW50O1xyXG4gICAgbGV0IHNpemUgPSBnZXRTdG9yYWdlKFxyXG4gICAgICBzdG9yZVByZWZpeCA/IHN0b3JlUHJlZml4ICsgXCItXCIgKyBcInRhYmxlU2l6ZVwiIDogXCJ0YWJsZVNpemVcIlxyXG4gICAgKTtcclxuICAgIHNpemUgPSBzaXplPy5jb250ZW50O1xyXG4gICAgdGhpcy5zdGF0ZSA9IHtcclxuICAgICAgdHlwZTogXCJhZGRcIixcclxuICAgICAgc2VsZWN0ZWRSb3dLZXlzOiBbXSxcclxuICAgICAgc2VsZWN0ZWRSb3dEYXRhczogW10sXHJcbiAgICAgIHRyZWVTZWxlY3RlZEtleTogXCJcIixcclxuICAgICAgZXhwYW5kOiBmYWxzZSxcclxuICAgICAgZm9ybVR5cGU6IHR5cGUgfHwgXCJtb2RhbFwiLFxyXG4gICAgICB0YWJsZVNpemU6IHNpemUgfHwgXCJkZWZhdWx0XCIsXHJcbiAgICAgIHRyZWVTZWFyY2hQcmFtczoge30sXHJcbiAgICAgIHBvcG9wZW5zOiB7fSxcclxuICAgIH07XHJcbiAgfVxyXG4gIGNvbXBvbmVudERpZE1vdW50KCkge1xyXG4gICAgY29uc3QgeyBpbml0RGF0YSB9ID0gdGhpcy5wcm9wcztcclxuICAgIGluaXREYXRhICYmIGluaXREYXRhKCk7XHJcbiAgfVxyXG5cclxuICBzZXRTZWFyY2hQYXJhbXMocGFyYW1zLCBjYWxsQmFjaykge1xyXG4gICAgdGhpcy5zZWFyY2hSZWYuY3VycmVudD8uc2V0U2VhcmNoUGFyYW1zKHBhcmFtcyk7XHJcbiAgICBjYWxsQmFjayAmJiBjYWxsQmFjayhwYXJhbXMpO1xyXG4gIH1cclxuICBkb1N1Ym1pdChkYXRhLCBsYWJlbCA9IFwi57yW6L6RXCIpIHtcclxuICAgIHRoaXMuZWRpdG9yUmVmLmN1cnJlbnQ/LmRvU3VibWl0KGRhdGEsIGxhYmVsKTtcclxuICB9XHJcblxyXG4gIG9uU2VsZWN0ID0gKGNoZWNrZWRUcmVlS2V5czogYW55KSA9PiB7XHJcbiAgICBjb25zdCB7IG5hbWUsIHVzZXJUeXBlLCBhY2NvdW50IH0gPSB0aGlzLnN0YXRlO1xyXG4gICAgY29uc3QgdmFsdWUgPSB7IG5hbWUsIHVzZXJUeXBlLCBhY2NvdW50LCBkZXB0SWQ6IGNoZWNrZWRUcmVlS2V5c1swXSB9O1xyXG4gICAgaWYgKHRoaXMucHJvcHMub25TZWFyY2gpIHtcclxuICAgICAgdGhpcy5wcm9wcy5vblNlYXJjaCh2YWx1ZSk7XHJcbiAgICB9XHJcbiAgICAvLyB0aGlzLnRhYmxlTG9hZCh2YWx1ZSk7XHJcbiAgfTtcclxuXHJcbiAgLy/mmL7npLrooajljZVcclxuICBzaG93Rm9ybSh2YWx1ZT86IGFueSwgZWRpdG9yZmxhZyA9IFwiYWRkXCIpIHtcclxuICAgIHRoaXMuZWRpdG9yUmVmLmN1cnJlbnQ/LnNob3codmFsdWUsIGVkaXRvcmZsYWcpO1xyXG4gIH1cclxuXHJcbiAgLy/lhbPpl63ooajljZVcclxuICBoaWRlRm9ybSgpIHtcclxuICAgIHRoaXMuZWRpdG9yUmVmLmN1cnJlbnQ/LmhpZGVGb3JtKCk7XHJcbiAgfVxyXG5cclxuICBzZXRMb2FkaW5nKGxvYWRpbmc6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMuZWRpdG9yUmVmLmN1cnJlbnQ/LnNldExvYWRpbmcobG9hZGluZyk7XHJcbiAgfVxyXG5cclxuICBzZXRFZGl0Rm9ybVZhbHVlcyh2YWx1ZSkge1xyXG4gICAgdGhpcy5lZGl0b3JSZWYuY3VycmVudD8uc2V0RmllbGRzVmFsdWUodmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgZ2V0RWRpdEZvcm1WYWx1ZXMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5lZGl0b3JSZWYuY3VycmVudD8uZ2V0RmllbGRzVmFsdWUoKTtcclxuICB9XHJcblxyXG4gIC8v5om56YeP5Yig6ZmkXHJcbiAgb25EZWxldGUoZGF0YT86IGFueSkge1xyXG4gICAgY29uc3Qge1xyXG4gICAgICBkZWxldGVVcmwsXHJcbiAgICAgIG9uRGVsZXRlLFxyXG4gICAgICBkZWxldGVQYXJhbXMsXHJcbiAgICAgIGRlbGV0ZVBvc2l0aW9uID0gXCJ0b29sYmFyXCIsXHJcbiAgICB9ID0gdGhpcy5wcm9wcztcclxuICAgIGxldCBfdGhpcyA9IHRoaXM7XHJcbiAgICBjb25zdCBzZWxlY3RlZFJvd0tleXMgPSB0aGlzLnRhYmxlUmVmLmN1cnJlbnQ/LmdldFNlbGVjdGVkUm93S2V5cygpO1xyXG4gICAgaWYgKGRlbGV0ZVBvc2l0aW9uID09IFwidG9vbGJhclwiKSB7XHJcbiAgICAgIGlmIChzZWxlY3RlZFJvd0tleXMubGVuZ3RoID09IDApIHtcclxuICAgICAgICBtZXNzYWdlLndhcm5pbmcoXCLor7fpgInmi6nopoHliKDpmaTnmoTmlbDmja7vvIFcIik7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBNb2RhbC5jb25maXJtKHtcclxuICAgICAgY29udGVudDogXCLmmK/lkKbnoa7orqTliKDpmaTmiYDpgInpobnvvJ9cIixcclxuICAgICAgLy8gY2VudGVyZWQ6dHJ1ZSxcclxuICAgICAgb25PazogKCkgPT4ge1xyXG4gICAgICAgIGlmIChvbkRlbGV0ZSkge1xyXG4gICAgICAgICAgb25EZWxldGUgJiZcclxuICAgICAgICAgICAgb25EZWxldGUoZGVsZXRlUG9zaXRpb24gPT0gXCJ0b29sYmFyXCIgPyBzZWxlY3RlZFJvd0tleXMgOiBkYXRhKTtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKCFkZWxldGVVcmwpIHtcclxuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcInVybOS4jeiDveS4uuepuu+8gVwiKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgZGVmYXVsdFBhcmFtcyA9IHtcclxuICAgICAgICAgIG1ldGhvZDogXCJwb3N0XCIsXHJcbiAgICAgICAgICBhdXRvUHJlZml4OiB0cnVlLFxyXG4gICAgICAgICAgcGFyYW1zOiB7XHJcbiAgICAgICAgICAgIGlkczogZGVsZXRlUG9zaXRpb24gPT0gXCJ0b29sYmFyXCIgPyBzZWxlY3RlZFJvd0tleXMuam9pbigpIDogZGF0YS5pZCxcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgfTtcclxuICAgICAgICBsZXQgcmVxdWVzdFBhcmFtcyA9IHt9IGFzIGFueTtcclxuICAgICAgICBpZiAoZGVmYXVsdFBhcmFtcykge1xyXG4gICAgICAgICAgcmVxdWVzdFBhcmFtcyA9IHsgLi4uZGVsZXRlUGFyYW1zIH07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJlcXVlc3RQYXJhbXMgPSB7IC4uLmRlZmF1bHRQYXJhbXMgfTtcclxuICAgICAgICByZXF1ZXN0KGRlbGV0ZVVybCwge1xyXG4gICAgICAgICAgLi4ucmVxdWVzdFBhcmFtcyxcclxuICAgICAgICB9KVxyXG4gICAgICAgICAgLnRoZW4oZnVuY3Rpb24gKHJlczogYW55KSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHsgY29kZSB9ID0gcmVzO1xyXG4gICAgICAgICAgICBpZiAoY29kZSA9PT0gMjAwKSB7XHJcbiAgICAgICAgICAgICAgbWVzc2FnZS5zdWNjZXNzKFwi5Yig6Zmk5oiQ5Yqf77yBXCIpO1xyXG4gICAgICAgICAgICAgIGxldCB2YWx1ZSA9IF90aGlzLnNlYXJjaFJlZj8uY3VycmVudD8uZ2V0U2VhcmNoVmFsdWVzKCk7XHJcbiAgICAgICAgICAgICAgX3RoaXMucHJvcHMub25DYWxsQmFja3M/Lm9uRGVsZXRlQ2FsbEJhY2sgJiZcclxuICAgICAgICAgICAgICAgIF90aGlzLnByb3BzLm9uQ2FsbEJhY2tzPy5vbkRlbGV0ZUNhbGxCYWNrKCk7XHJcbiAgICAgICAgICAgICAgX3RoaXMudGFibGVMb2FkKHZhbHVlKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICBtZXNzYWdlLmVycm9yKFwi5Yig6Zmk5aSx6LSl77yBXCIpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgICAgLmNhdGNoKGZ1bmN0aW9uIChlcnJvcjogYW55KSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiZXJyb3JcIiwgZXJyb3IpO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgIH0sXHJcbiAgICB9KTtcclxuICB9XHJcbiAgdGFibGVMb2FkKHBhcmFtczogYW55LCByZXF1ZXN0Q29uZmlnID0ge30pIHtcclxuICAgIHRoaXMudGFibGVSZWYuY3VycmVudD8uc3RvcmUubG9hZCh7XHJcbiAgICAgIC4uLnJlcXVlc3RDb25maWcsXHJcbiAgICAgIHBhcmFtczogcGFyYW1zLFxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIC8v5p+l6K+iXHJcbiAgb25TZWFyY2gocGFyYW1zKSB7XHJcbiAgICBjb25zdCB7IG9uU2VhcmNoLCBvbkNhbGxCYWNrcyB9ID0gdGhpcy5wcm9wcztcclxuICAgIGlmIChvblNlYXJjaCkge1xyXG4gICAgICBvblNlYXJjaCh7IC4uLnBhcmFtcywgLi4udGhpcy5zdGF0ZS50cmVlU2VhcmNoUHJhbXMgfSk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMudGFibGVMb2FkKHsgLi4ucGFyYW1zLCAuLi50aGlzLnN0YXRlLnRyZWVTZWFyY2hQcmFtcyB9KTtcclxuICAgIG9uQ2FsbEJhY2tzPy5vblNlYXJjaENhbGxCYWNrICYmXHJcbiAgICAgIHV0aWxzLmNhbGxiYWNrKG9uQ2FsbEJhY2tzPy5vblNlYXJjaENhbGxCYWNrLCB0aGlzLCBbcGFyYW1zXSk7XHJcbiAgfVxyXG4gIC8v6KGo5qC86YeN5paw5Yqg6L29XHJcbiAgdGFibGVSZWxvYWQocGFyYW1zID0ge30sIGF1dG9Mb2FkID0gdHJ1ZSkge1xyXG4gICAgdGhpcy50YWJsZVJlZi5jdXJyZW50Py5zdG9yZT8ucmVsb2FkKHtcclxuICAgICAgY2FsbGJhY2s6IChyZXMpID0+IHtcclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICBhdXRvTG9hZCAmJlxyXG4gICAgICAgICAgcmVzPy5kYXRhPy5yZWNvcmRzPy5sZW5ndGggPT0gMCAmJlxyXG4gICAgICAgICAgdGhpcy5zdGF0ZS5jdXJyZW50UGFnZSAhPT0gMVxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgdGhpcy50YWJsZVJlZi5jdXJyZW50Py5zdG9yZT8ucmVsb2FkKHtcclxuICAgICAgICAgICAgcGFyYW1zOiB7IGN1cnJlbnQ6IDEsIC4uLnBhcmFtcyB9LFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIGdldFNlbGVjdGVkUm93S2V5cygpIHtcclxuICAgIHJldHVybiB0aGlzLnRhYmxlUmVmLmN1cnJlbnQ/LmdldFNlbGVjdGVkUm93S2V5cygpO1xyXG4gIH1cclxuICBnZXRTZWxlY3RlZFJvd0RhdGFzKCkge1xyXG4gICAgcmV0dXJuIHRoaXMudGFibGVSZWYuY3VycmVudD8uZ2V0U2VsZWN0ZWRSb3dEYXRhcygpO1xyXG4gIH1cclxuICBzZXRTZWxlY3RlZFJvd0tleXMoZGF0YTogQXJyYXk8U3RyaW5nIHwgTnVtYmVyPikge1xyXG4gICAgcmV0dXJuIHRoaXMudGFibGVSZWYuY3VycmVudD8uc2V0U2VsZWN0ZWRSb3dLZXlzKGRhdGEpO1xyXG4gIH1cclxuICBzZXRTZWxlY3RlZFJvd0RhdGFzKGRhdGE6IEFycmF5PE9iamVjdD4pIHtcclxuICAgIHJldHVybiB0aGlzLnRhYmxlUmVmLmN1cnJlbnQ/LnNldFNlbGVjdGVkUm93RGF0YXMoZGF0YSk7XHJcbiAgfVxyXG4gIHJlc2V0U2VsZWN0ZWRSb3dLZXlzKCkge1xyXG4gICAgcmV0dXJuIHRoaXMudGFibGVSZWYuY3VycmVudD8ucmVzZXRTZWxlY3RlZFJvd0tleXMoKTtcclxuICB9XHJcblxyXG4gIGdldFNlYXJjaFZhbHVlcygpIHtcclxuICAgIGNvbnN0IGZyb21WYWx1ZSA9IHRoaXMuc2VhcmNoUmVmPy5jdXJyZW50Py5nZXRTZWFyY2hWYWx1ZXMoKTtcclxuICAgIHJldHVybiB7IC4uLmZyb21WYWx1ZSwgLi4udGhpcy5zdGF0ZS50cmVlU2VhcmNoUHJhbXMgfTtcclxuICB9XHJcblxyXG4gIGdldENoaWxkcmVuRGF0YShkYXRhLCBrZXlzID0gW10pIHtcclxuICAgIGNvbnN0IHsgdGFibGVQcm9wcyB9ID0gdGhpcy5wcm9wcztcclxuICAgIGNvbnN0IHsgcm93S2V5ID0gXCJpZFwiIH0gPSB0YWJsZVByb3BzO1xyXG4gICAgbGV0IHJlc0tleSA9IFtdO1xyXG4gICAgaWYgKGRhdGEuY2hpbGROb2Rlcykge1xyXG4gICAgICBjb25zdCBjaGlsZHJlbiA9IGRhdGEuY2hpbGROb2RlcztcclxuICAgICAgY2hpbGRyZW4ubWFwKChpdGVtLCBpbmRleCkgPT4ge1xyXG4gICAgICAgIGlmIChpdGVtLmNoaWxkTm9kZXMpIHtcclxuICAgICAgICAgIHRoaXMuZ2V0Q2hpbGRyZW5EYXRhKGl0ZW0uY2hpbGROb2Rlcywga2V5cyk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHJlc0tleSA9IFsuLi5rZXlzLCBpdGVtW3Jvd0tleV1dO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXNLZXkgPSBbLi4ua2V5cywgZGF0YVtyb3dLZXldXTtcclxuICAgIH1cclxuICAgIHJldHVybiByZXNLZXk7XHJcbiAgfVxyXG5cclxuICByZW5kZXJUb29sQnV0dG9ucyh0b29sYnV0dG9uczogYW55LCBtYXJnaW5mbGFnID0gZmFsc2UpIHtcclxuICAgIGNvbnN0IGZsYWcgPSB0b29sYnV0dG9ucy5sZW5ndGggPiA1O1xyXG4gICAgY29uc3QgeyBzaG93U2VhcmNoID0gdHJ1ZSB9ID0gdGhpcy5wcm9wcztcclxuICAgIGNvbnN0IGNvbnRlbnQgPSB0b29sYnV0dG9ucy5tYXAoKGl0ZW06IGFueSwgaW5kZXg6IGFueSkgPT4ge1xyXG4gICAgICBjb25zdCB7IGNoaWxkcmVuLCBwYWdlVHlwZSwgb25DbGljaywgaWNvbiwgc2hvdywgLi4ucGFyYW1zIH0gPSBpdGVtLnByb3BzO1xyXG4gICAgICBpZiAoaW5kZXggPiAzKSB7XHJcbiAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgY2xhc3NOYW1lPXtjbHMoXHJcbiAgICAgICAgICAgICAgZ2V0TGVzcyhzdHlsZXMsIFwiZWRpdG9yXCIpLFxyXG4gICAgICAgICAgICAgIGdldExlc3Moc3R5bGVzLCBcImNvbnRlbnQtaXRlbVwiKVxyXG4gICAgICAgICAgICApfVxyXG4gICAgICAgICAgICBrZXk9e2luZGV4fVxyXG4gICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XHJcbiAgICAgICAgICAgICAgb25DbGljayAmJiBvbkNsaWNrKCk7XHJcbiAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgIHsuLi5wYXJhbXN9XHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwiaWNvblwiKX0+e2ljb259PC9zcGFuPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcInRleHRcIil9PntjaGlsZHJlbn08L3NwYW4+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICApO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIHJldHVybiAoXHJcbiAgICAgIDxkaXZcclxuICAgICAgICBjbGFzc05hbWU9e2NscyhnZXRMZXNzKHN0eWxlcywgXCJ0b29sLWJ1dHRvbnNcIiksIHtcclxuICAgICAgICAgIFtnZXRMZXNzKHN0eWxlcywgXCJ0b29sLWJ1dHRvbnMtbWFyZ2luXCIpXTogIXNob3dTZWFyY2ggfHwgbWFyZ2luZmxhZyxcclxuICAgICAgICB9KX1cclxuICAgICAgICBzdHlsZT17eyBtYXJnaW5MZWZ0OiAwIH19XHJcbiAgICAgID5cclxuICAgICAgICB7dG9vbGJ1dHRvbnMubWFwKChpdGVtOiBhbnksIGluZGV4OiBhbnkpID0+IHtcclxuICAgICAgICAgIGlmIChmbGFnKSB7XHJcbiAgICAgICAgICAgIGlmIChpbmRleCA8IDQpIHtcclxuICAgICAgICAgICAgICByZXR1cm4gPGRpdiBrZXk9e2luZGV4fT57aXRlbX08L2Rpdj47XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaW5kZXggPT0gNCkge1xyXG4gICAgICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgICAgICA8UG9wb3ZlclxyXG4gICAgICAgICAgICAgICAgICBjb250ZW50PXtjb250ZW50fVxyXG4gICAgICAgICAgICAgICAgICB0aXRsZT17bnVsbH1cclxuICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tXCJcclxuICAgICAgICAgICAgICAgICAgdHJpZ2dlcj17W1wiY2xpY2tcIl19XHJcbiAgICAgICAgICAgICAgICAgIGtleT17aW5kZXh9XHJcblxyXG4gICAgICAgICAgICAgICAgICAvLyBvdmVybGF5Q2xhc3NOYW1lPXtzdHlsZXNbJ3BvcC1ib3gnXX1cclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgPEJ1dHRvbiB0eXBlPVwicHJpbWFyeVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIOabtOWkmiA8RG93bk91dGxpbmVkIC8+XHJcbiAgICAgICAgICAgICAgICAgIDwvQnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPC9Qb3BvdmVyPlxyXG4gICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHJldHVybiA8ZGl2IGtleT17aW5kZXh9PntpdGVtfTwvZGl2PjtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KX1cclxuICAgICAgPC9kaXY+XHJcbiAgICApO1xyXG4gIH1cclxuICByZW5kZXJDbG91bW5CdXR0b24oY29sdW1uQnV0dG9uczogYW55LCByZWNvcmQ6IGFueSkge1xyXG4gICAgY29uc3QgeyBhY3Rpb25Qcm9wcyAsdGFibGVQcm9wcz17fX0gPSB0aGlzLnByb3BzO1xyXG4gICAgY29uc3QgeyBiYXNlQWN0aW9uQ29sdW1uIH0gPSBjb25maWcoKTtcclxuICAgIGNvbnN0IG5ld0J1dHRvbnMgPSBbXTtcclxuICAgIGxldCBzaG93SWNvbiA9IHRydWU7XHJcbiAgICBjb25zdCB7IHJvd0tleSA9IFwiaWRcIiB9ID0gdGFibGVQcm9wcztcclxuICAgIGlmIChhY3Rpb25Qcm9wcz8uc2hvd0ljb24gPT09IGZhbHNlKSBzaG93SWNvbiA9IGZhbHNlO1xyXG4gICAgZWxzZSBpZiAoYmFzZUFjdGlvbkNvbHVtbi5zaG93SWNvbiA9PT0gZmFsc2UpIHNob3dJY29uID0gZmFsc2U7XHJcbiAgICBjb2x1bW5CdXR0b25zLm1hcCgoaXRlbTogYW55LCBpbmRleDogYW55KSA9PiB7XHJcbiAgICAgIGNvbnN0IHsgY2hpbGRyZW4sIHBhZ2VUeXBlLCBvbkNsaWNrLCBpY29uLCByZWNvcmRTaG93LCAuLi5wYXJhbXMgfSA9XHJcbiAgICAgICAgaXRlbS5wcm9wcztcclxuICAgICAgaWYgKHJlY29yZFNob3cpIHtcclxuICAgICAgICBpZiAodHlwZW9mIHJlY29yZFNob3cgPT0gXCJzdHJpbmdcIikge1xyXG4gICAgICAgICAgaWYgKGV2YWwocmVjb3JkU2hvdykpIHtcclxuICAgICAgICAgICAgbmV3QnV0dG9ucy5wdXNoKGl0ZW0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHJlY29yZFNob3cgPT0gXCJmdW5jdGlvblwiKSB7XHJcbiAgICAgICAgICBjb25zdCBzaG93ID0gcmVjb3JkU2hvdyhyZWNvcmQpO1xyXG4gICAgICAgICAgc2hvdyAmJiBuZXdCdXR0b25zLnB1c2goaXRlbSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIG5ld0J1dHRvbnMucHVzaChpdGVtKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICBjb25zdCBmbGFnID0gbmV3QnV0dG9ucy5sZW5ndGggPiAzO1xyXG5cclxuICAgIGNvbnN0IGNvbnRlbnQgPSBuZXdCdXR0b25zLm1hcCgoaXRlbTogYW55LCBpbmRleDogYW55KSA9PiB7XHJcbiAgICAgIGNvbnN0IHsgY2hpbGRyZW4sIHBhZ2VUeXBlLCBvbkNsaWNrLCByZWNvcmRTaG93LCBpY29uLCBzaG93LCAuLi5wYXJhbXMgfSA9XHJcbiAgICAgICAgaXRlbS5wcm9wcztcclxuICAgICAgaWYgKGluZGV4ID4gMikge1xyXG4gICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICA8QnV0dG9uXHJcbiAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xzKFxyXG4gICAgICAgICAgICAgIGdldExlc3Moc3R5bGVzLCBcImVkaXRvclwiKSxcclxuICAgICAgICAgICAgICBnZXRMZXNzKHN0eWxlcywgXCJjb250ZW50LWl0ZW1cIilcclxuICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAga2V5PXtpbmRleH1cclxuICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xyXG4gICAgICAgICAgICAgIGxldCBkYXRhID0ge30gYXMgYW55O1xyXG4gICAgICAgICAgICAgIGRhdGFbcmVjb3JkLmlkXSA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgICAgICAgcG9wb3BlbnM6IGRhdGEsXHJcbiAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgb25DbGljayAmJiBvbkNsaWNrKHJlY29yZCk7XHJcbiAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgIHR5cGU9XCJsaW5rXCJcclxuICAgICAgICAgICAgey4uLnBhcmFtc31cclxuICAgICAgICAgID5cclxuICAgICAgICAgICAge3Nob3dJY29uICE9PSBmYWxzZSAmJiAoXHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJpY29uXCIpfT57aWNvbn08L3NwYW4+XHJcbiAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwidGV4dFwiKX0+e2NoaWxkcmVufTwvc3Bhbj5cclxuICAgICAgICAgIDwvQnV0dG9uPlxyXG4gICAgICAgICk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHJldHVybiBuZXdCdXR0b25zLm1hcCgoaXRlbTogYW55LCBpbmRleDogYW55KSA9PiB7XHJcbiAgICAgIGNvbnN0IHsgY2hpbGRyZW4sIHBhZ2VUeXBlLCBvbkNsaWNrLCByZWNvcmRTaG93LCBpY29uLCAuLi5wYXJhbXMgfSA9XHJcbiAgICAgICAgaXRlbS5wcm9wcztcclxuICAgICAgaWYgKGZsYWcpIHtcclxuICAgICAgICBpZiAoaW5kZXggPCAzKSB7XHJcbiAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICA8QnV0dG9uXHJcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbHMoZ2V0TGVzcyhzdHlsZXMsIFwiZWRpdG9yXCIpLCB7XHJcbiAgICAgICAgICAgICAgICBbZ2V0TGVzcyhzdHlsZXMsIFwiZWRpdG9yX2ZpcnN0XCIpXTogaW5kZXggPT09IDAsXHJcbiAgICAgICAgICAgICAgfSl9XHJcbiAgICAgICAgICAgICAga2V5PXtpbmRleH1cclxuICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBvbkNsaWNrICYmIG9uQ2xpY2socmVjb3JkKTtcclxuICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgIHR5cGU9XCJsaW5rXCJcclxuICAgICAgICAgICAgICB7Li4ucGFyYW1zfVxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAge3Nob3dJY29uICE9PSBmYWxzZSAmJiAoXHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcImljb25cIil9PntpY29ufTwvc3Bhbj5cclxuICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwidGV4dFwiKX0+e2NoaWxkcmVufTwvc3Bhbj5cclxuICAgICAgICAgICAgPC9CdXR0b24+XHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoaW5kZXggPT0gMykge1xyXG4gICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgPFBvcG92ZXJcclxuICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b21cIlxyXG4gICAgICAgICAgICAgIHRpdGxlPXtudWxsfVxyXG4gICAgICAgICAgICAgIGNvbnRlbnQ9e2NvbnRlbnR9XHJcbiAgICAgICAgICAgICAgdHJpZ2dlcj17W1wiY2xpY2tcIl19XHJcbiAgICAgICAgICAgICAga2V5PXtpbmRleH1cclxuICAgICAgICAgICAgICB2aXNpYmxlPXt0aGlzLnN0YXRlLnBvcG9wZW5zW3JlY29yZFtyb3dLZXldXSB8fCBmYWxzZX1cclxuICAgICAgICAgICAgICBvblZpc2libGVDaGFuZ2U9eyh2aXNpYmFsZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKHZpc2liYWxlKSB7XHJcbiAgICAgICAgICAgICAgICAgIGxldCBkYXRhID0ge30gYXMgYW55O1xyXG4gICAgICAgICAgICAgICAgICBkYXRhW3JlY29yZFtyb3dLZXldXSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgICAgICAgICAgIHBvcG9wZW5zOiBkYXRhLFxyXG4gICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgICAgICAgICAgIHBvcG9wZW5zOiB7fSxcclxuICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAvLyBvdmVybGF5Q2xhc3NOYW1lPXtzdHlsZXNbJ3BvcCddfVxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPGEgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJlZGl0b3JcIil9PlxyXG4gICAgICAgICAgICAgICAgPEVsbGlwc2lzT3V0bGluZWQgLz5cclxuICAgICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICAgIDwvUG9wb3Zlcj5cclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgPEJ1dHRvblxyXG4gICAgICAgICAgICBjbGFzc05hbWU9e2NscyhnZXRMZXNzKHN0eWxlcywgXCJlZGl0b3JcIiksIHtcclxuICAgICAgICAgICAgICBbZ2V0TGVzcyhzdHlsZXMsIFwiZWRpdG9yX2ZpcnN0XCIpXTogaW5kZXggPT09IDAsXHJcbiAgICAgICAgICAgIH0pfVxyXG4gICAgICAgICAgICBrZXk9e2luZGV4fVxyXG4gICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XHJcbiAgICAgICAgICAgICAgb25DbGljayAmJiBvbkNsaWNrKHJlY29yZCk7XHJcbiAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgIHR5cGU9XCJsaW5rXCJcclxuICAgICAgICAgICAgey4uLnBhcmFtc31cclxuICAgICAgICAgID5cclxuICAgICAgICAgICAge3Nob3dJY29uICE9PSBmYWxzZSAmJiAoXHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJpY29uXCIpfT57aWNvbn08L3NwYW4+XHJcbiAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwidGV4dFwiKX0+e2NoaWxkcmVufTwvc3Bhbj5cclxuICAgICAgICAgIDwvQnV0dG9uPlxyXG4gICAgICAgICk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgLy8gfVxyXG4gIH1cclxuICAvL+agkeeCueWHu+S6i+S7tlxyXG4gIHRyZWVTZWxlY3Qoc2VsZWN0ZWRLZXlzOiBhbnksIG9iajogYW55KSB7XHJcbiAgICBsZXQga2V5d29yZCA9IFwiXCI7XHJcbiAgICBjb25zdCB7XHJcbiAgICAgIHNlYXJjaEtleSA9IFwia2V5XCIsXHJcbiAgICAgIHNlYXJjaEZpZWxkID0gXCJcIixcclxuICAgICAgcGFyYW50U2VsZWN0ID0gdHJ1ZSxcclxuICAgIH0gPSB0aGlzLnByb3BzLnRyZWVQcm9wcztcclxuICAgIGNvbnN0IHsgdHJlZVNlbGVjdGVkS2V5IH0gPSB0aGlzLnN0YXRlO1xyXG4gICAgY29uc3QgeyBzZWxlY3RlZCwgc2VsZWN0ZWROb2RlcyB9ID0gb2JqO1xyXG5cclxuICAgIGlmIChzZWxlY3RlZCkge1xyXG4gICAgICBrZXl3b3JkID0gc2VsZWN0ZWROb2Rlc1swXS5kYXRhcmVmLmF0dHJpYnV0ZVtzZWFyY2hLZXldO1xyXG4gICAgICBpZiAocGFyYW50U2VsZWN0KSB7XHJcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICB0cmVlU2VsZWN0ZWRLZXk6IHNlbGVjdGVkS2V5c1swXSxcclxuICAgICAgICAgIHRyZWVTZWFyY2hQcmFtczogeyBbc2VhcmNoRmllbGRdOiBrZXl3b3JkIH0sXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgaWYgKHNlbGVjdGVkTm9kZXNbMF0uaXNMZWFmIHx8ICFzZWxlY3RlZE5vZGVzWzBdLmNoaWxkcmVuKSB7XHJcbiAgICAgICAgICBpZiAoc2VsZWN0ZWRLZXlzWzBdICE9PSB0cmVlU2VsZWN0ZWRLZXkpIHtcclxuICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICAgICAgdHJlZVNlbGVjdGVkS2V5OiBzZWxlY3RlZEtleXNbMF0sXHJcbiAgICAgICAgICAgICAgdHJlZVNlYXJjaFByYW1zOiB7IFtzZWFyY2hGaWVsZF06IGtleXdvcmQgfSxcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICB0cmVlU2VsZWN0ZWRLZXk6IGtleXdvcmQsXHJcbiAgICAgICAgdHJlZVNlYXJjaFByYW1zOiB7fSxcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5wcm9wcy5vblRyZWVTZWxlY3QpIHtcclxuICAgICAgdGhpcy5wcm9wcy5vblRyZWVTZWxlY3Qoc2VsZWN0ZWRLZXlzLCBvYmopO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb25zdCBmcm9tVmFsdWUgPSB0aGlzLnNlYXJjaFJlZj8uY3VycmVudD8uZ2V0U2VhcmNoVmFsdWVzKCkgfHwge307XHJcbiAgICBzZWFyY2hGaWVsZCAmJiB0aGlzLnRhYmxlTG9hZCh7IC4uLmZyb21WYWx1ZSwgW3NlYXJjaEZpZWxkXToga2V5d29yZCB9KTtcclxuICAgIHRoaXMucHJvcHMub25DYWxsQmFja3M/LnRyZWVTZWxlY3RDYWxsQmFjayAmJlxyXG4gICAgICB1dGlscy5jYWxsYmFjayh0aGlzLnByb3BzLm9uQ2FsbEJhY2tzPy50cmVlU2VsZWN0Q2FsbEJhY2ssIHRoaXMsIFtcclxuICAgICAgICBzZWxlY3RlZEtleXMsXHJcbiAgICAgICAgb2JqLFxyXG4gICAgICBdKTtcclxuICB9XHJcbiAgcmVzZXRTZWFyY2goKSB7XHJcbiAgICB0aGlzLnNlYXJjaFJlZi5jdXJyZW50Py5yZXNldEZpZWxkcygpO1xyXG4gIH1cclxuICBnZXRUZXh0KHByb3BzLCB0ZXh0KSB7XHJcbiAgICBsZXQgbmV3VGV4dCA9IHRleHQ7XHJcbiAgICBpZiAocHJvcHM/LmRhdGEgJiYgcHJvcHM/LmRhdGE/Lmxlbmd0aCA+IDApIHtcclxuICAgICAgbGV0IGRhdGEgPSBwcm9wcy5kYXRhO1xyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGRhdGE/Lmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgaWYgKGRhdGFbaV0udmFsdWUgPT0gdGV4dCkge1xyXG4gICAgICAgICAgbmV3VGV4dCA9IGRhdGFbaV0ubGFiZWw7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbmV3VGV4dDtcclxuICB9XHJcbiAgc2V0VGFibGVEYXRhKGRhdGEpIHtcclxuICAgIHRoaXMudGFibGVSZWYuY3VycmVudD8uc3RvcmU/LnNldERhdGEoZGF0YSk7XHJcbiAgfVxyXG4gIHNldFRyZWVEYXRhKGRhdGEpIHtcclxuICAgIHRoaXMudHJlZVJlZi5jdXJyZW50Py5zdG9yZT8uc2V0RGF0YShkYXRhKTtcclxuICB9XHJcbiAgZ2V0U2VsZWN0ZWRLZXkgPSAoc2VsZWN0ZWQpID0+IHtcclxuICAgIGxldCByZXMgPSBbXTtcclxuICAgIGZvciAobGV0IGtleSBpbiBzZWxlY3RlZCkge1xyXG4gICAgICBjb25zdCBrZXlzID0gc2VsZWN0ZWRba2V5XTtcclxuICAgICAgaWYgKGtleXMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIHJlcyA9IFsuLi5yZXMsIC4uLmtleXNdO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcmVzO1xyXG4gIH07XHJcblxyXG4gIHJlbmRlcigpIHtcclxuICAgIGNvbnN0IHtcclxuICAgICAgY29sdW1ucyA9IFtdLFxyXG4gICAgICBzaG93U2VhcmNoID0gdHJ1ZSxcclxuICAgICAgY2hpbGRyZW4sXHJcbiAgICAgIHN1Ym1pdFVybCA9IFwiXCIsXHJcbiAgICAgIHRhYmxlUHJvcHMgPSB7fSxcclxuICAgICAgdHJlZVByb3BzID0ge30sXHJcbiAgICAgIGZvcm1Qcm9wcyA9IHt9LFxyXG4gICAgICBzaG93TGVmdCA9IGZhbHNlLFxyXG4gICAgICBzdWJtaXRQYXJhbXMgPSB7fSxcclxuICAgICAgc2hvd1Rvb2xCdXR0b24gPSB0cnVlLFxyXG4gICAgICBidXR0b25zID0gW10sXHJcbiAgICAgIGVkaXRvckZvcm0gPSB0cnVlLFxyXG4gICAgICBvblNob3dGb3JtLFxyXG4gICAgICBmb3JtQ2hhbmdlVmFsaWQgPSB0cnVlLFxyXG4gICAgICBjbGFzc05hbWUsXHJcbiAgICAgIHRvb2xCdXR0b25Qb3NpdGlvbiA9IFwiYnV0dG9tXCIsXHJcbiAgICAgIGFjdGlvblByb3BzLFxyXG4gICAgICBkZWxldGVQb3NpdGlvbiA9IFwidG9vbGJhclwiLFxyXG4gICAgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBjb25zdCB7XHJcbiAgICAgIHN0b3JlLFxyXG4gICAgICBmaWx0ZXJDb2x1bW4gPSB0cnVlLFxyXG4gICAgICBhY3Rpb25Db2x1bW4gPSB0cnVlLFxyXG4gICAgICBzaG93Um93U2VsZWN0aW9uID0gdHJ1ZSxcclxuICAgICAgY29sdW1uT3JkZXIgPSB0cnVlLFxyXG4gICAgICBleHBhbmRhYmxlID0ge30sXHJcbiAgICAgIHBhcmFudFNlbGVjdCA9IHRydWUsXHJcbiAgICAgIC4uLm90aGVydGFibGVQYXJhbXNcclxuICAgIH0gPSB0YWJsZVByb3BzO1xyXG5cclxuICAgIGNvbnN0IHtcclxuICAgICAgc3RvcmU6IHRyZWVTdG9yZSA9IHt9LFxyXG4gICAgICBzaG93U2VhcmNoOiB0cmVlU2VhcmNoID0gdHJ1ZSxcclxuICAgICAgdGl0bGVBbGlhcyA9IFwidGl0bGVcIixcclxuICAgICAgLi4ub3RoZXJ0cmVlUGFyYW1zXHJcbiAgICB9ID0gdHJlZVByb3BzO1xyXG5cclxuICAgIGxldCB0YWJsZVBhcmFtcyA9IHsgZmlsdGVyQ29sdW1uLCBzdG9yZSwgLi4ub3RoZXJ0YWJsZVBhcmFtcyB9IGFzIGFueTtcclxuICAgIGxldCB0YWJsZUNvbHVtbjogYW55W10gPSBbXTtcclxuICAgIGNvbnN0IHNlYXJjaEZvcm1zOiBhbnkgPSBbXTtcclxuICAgIGNvbnN0IGVkaXRvckZvcm1zOiBhbnkgPSBbXTtcclxuICAgIGNvbnN0IGRlZmF1bHRWYWx1ZTogYW55ID0ge307XHJcbiAgICBjb25zdCBjb2x1bW5CdXR0b25zOiBhbnkgPSBbXTtcclxuICAgIGNvbHVtbnMubWFwKChpdGVtOiBhbnkpID0+IHtcclxuICAgICAgbGV0IHRlbXAgPSB7IC4uLml0ZW0gfTtcclxuICAgICAgaWYgKHRlbXAuc2VhcmNoID09PSB0cnVlIHx8IHRlbXAuc2VhcmNoPy5zaG93ID09PSB0cnVlKSB7XHJcbiAgICAgICAgc2VhcmNoRm9ybXMucHVzaCh7XHJcbiAgICAgICAgICBuYW1lOiB0ZW1wLmZpZWxkIHx8IHRlbXAuZGF0YUluZGV4LFxyXG4gICAgICAgICAgbGFiZWw6IHRlbXAuc2VhcmNoPy5sYWJlbCB8fCB0ZW1wLnRpdGxlLFxyXG4gICAgICAgICAgdHlwZTogdGVtcC50eXBlLFxyXG4gICAgICAgICAgcHJvcHM6IHRlbXAucHJvcHMsXHJcbiAgICAgICAgICBsYWJlbENvbDogdGVtcC5zZWFyY2g/LmxhYmVsQ29sLFxyXG4gICAgICAgICAgd3JhcHBlckNvbDogdGVtcC5zZWFyY2g/LndyYXBwZXJDb2wsXHJcbiAgICAgICAgICBydWxlczogdGVtcC5zZWFyY2hSdWxlcyA/IHRlbXAuc2VhcmNoUnVsZXMgOiBbXSxcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG5cclxuICAgICAgZGVsZXRlIHRlbXAuc2VhcmNoO1xyXG4gICAgICB0ZW1wLmVkaXRvciAhPT0gZmFsc2UgJiZcclxuICAgICAgICBlZGl0b3JGb3Jtcy5wdXNoKHtcclxuICAgICAgICAgIG5hbWU6IHRlbXAuZmllbGQgfHwgdGVtcC5kYXRhSW5kZXgsXHJcbiAgICAgICAgICBsYWJlbDogdGVtcC50aXRsZSxcclxuICAgICAgICAgIHJ1bGVzOiB0ZW1wLnJ1bGVzID8gdGVtcC5ydWxlcyA6IFtdLFxyXG4gICAgICAgICAgdHlwZTogdGVtcC50eXBlLFxyXG4gICAgICAgICAgc3BhbjogdGVtcC5zcGFuLFxyXG4gICAgICAgICAgZGljdE5hbWU6IHRlbXAuZGljdE5hbWUsXHJcbiAgICAgICAgICBwcm9wczogeyAuLi50ZW1wLnByb3BzIH0sXHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICBpZiAoXHJcbiAgICAgICAgdGVtcC5wcm9wcz8uZGVmYXVsdFZhbHVlICE9PSB1bmRlZmluZWQgJiZcclxuICAgICAgICB0ZW1wLnByb3BzPy5kZWZhdWx0VmFsdWUgIT09IG51bGxcclxuICAgICAgKSB7XHJcbiAgICAgICAgY29uc3QgbmFtZSA9IHRlbXAuZmllbGQgfHwgdGVtcC5kYXRhSW5kZXg7XHJcbiAgICAgICAgZGVmYXVsdFZhbHVlW25hbWVdID0gdGVtcC5wcm9wcz8uZGVmYXVsdFZhbHVlO1xyXG4gICAgICB9XHJcbiAgICAgIGRlbGV0ZSB0ZW1wLnJ1bGVzO1xyXG4gICAgICBkZWxldGUgdGVtcC5zcGFuO1xyXG4gICAgICBpZiAodGVtcC5jb2x1bW5TZWFyY2gpIHtcclxuICAgICAgICB0ZW1wLmZpbHRlclByb3BzID0ge1xyXG4gICAgICAgICAgdHlwZTogdGVtcC50eXBlLFxyXG4gICAgICAgICAgcHJvcHM6IHRlbXAucHJvcHMsXHJcbiAgICAgICAgfTtcclxuICAgICAgfVxyXG4gICAgICBkZWxldGUgdGVtcC50eXBlO1xyXG4gICAgICBsZXQgdGVtcFByb3AgPSB7IC4uLnRlbXAucHJvcHMgfTtcclxuICAgICAgaWYgKHRlbXAuc3R5bGUpIHtcclxuICAgICAgICB0ZW1wID0ge1xyXG4gICAgICAgICAgcmVuZGVyOiAodGV4dDogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgICAgPD5cclxuICAgICAgICAgICAgICAgIHt0ZXh0ICE9PSBcIlwiICYmIHRleHQgIT09IG51bGwgJiYgdGV4dCAhPT0gdW5kZWZpbmVkICYmIChcclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcImNvbC1iYWNrXCIpfT5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcImNvbC10ZXh0XCIpfT5cclxuICAgICAgICAgICAgICAgICAgICAgIHt0aGlzLmdldFRleHQodGVtcFByb3AsIHRleHQpfVxyXG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICAgIDwvPlxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIC4uLnRlbXAsXHJcbiAgICAgICAgfTtcclxuICAgICAgfSBlbHNlIGlmICghdGVtcC5lbGxpcHNpcykge1xyXG4gICAgICAgIHRlbXAgPSB7XHJcbiAgICAgICAgICByZW5kZXI6ICh0ZXh0OiBhbnkpID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuIDw+e3RoaXMuZ2V0VGV4dCh0ZW1wUHJvcCwgdGV4dCl9PC8+O1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIC4uLnRlbXAsXHJcbiAgICAgICAgfTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0ZW1wID0geyAuLi50ZW1wIH07XHJcbiAgICAgIH1cclxuICAgICAgZGVsZXRlIHRlbXAucHJvcHM7XHJcbiAgICAgIGlmICh0ZW1wPy5jb2x1bW5TaG93ICE9PSBmYWxzZSkgdGFibGVDb2x1bW4ucHVzaCh0ZW1wKTtcclxuICAgIH0pO1xyXG4gICAgY29uc3Qgc2VsZkJ1dHRvbnM6IGFueSA9IFtdO1xyXG4gICAgY29uc3QgeyBiYXNlQWN0aW9uQ29sdW1uIH0gPSBjb25maWcoKTtcclxuICAgIGxldCBzaG93SWNvbiA9IHRydWU7XHJcbiAgICBpZiAoYWN0aW9uUHJvcHM/LnNob3dJY29uID09PSBmYWxzZSkgc2hvd0ljb24gPSBmYWxzZTtcclxuICAgIGVsc2UgaWYgKGJhc2VBY3Rpb25Db2x1bW4uc2hvd0ljb24gPT09IGZhbHNlKSBzaG93SWNvbiA9IGZhbHNlO1xyXG4gICAgaWYgKGVkaXRvckZvcm0gPT0gdHJ1ZSkge1xyXG4gICAgICBpZiAoYnV0dG9ucy5pbmRleE9mKFwic2VhcmNoXCIpID4gLTEpIHtcclxuICAgICAgICBjb2x1bW5CdXR0b25zLnB1c2goXHJcbiAgICAgICAgICA8QnV0dG9uXHJcbiAgICAgICAgICAgIG9uQ2xpY2s9eyhyZWNvcmQ6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgIGlmIChvblNob3dGb3JtKSB7XHJcbiAgICAgICAgICAgICAgICBvblNob3dGb3JtKHJlY29yZC5hdHRyaWJ1dGUgfHwgcmVjb3JkLCBcImRldGFpbFwiKTtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgdGhpcy5zaG93Rm9ybShyZWNvcmQuYXR0cmlidXRlIHx8IHJlY29yZCwgXCJkZXRhaWxcIik7XHJcbiAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgIGljb249ezxFeWVPdXRsaW5lZCAvPn1cclxuICAgICAgICAgID5cclxuICAgICAgICAgICAg5p+l55yLXHJcbiAgICAgICAgICA8L0J1dHRvbj5cclxuICAgICAgICApO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChidXR0b25zLmluZGV4T2YoXCJlZGl0b3JcIikgPiAtMSkge1xyXG4gICAgICAgIGNvbHVtbkJ1dHRvbnMucHVzaChcclxuICAgICAgICAgIDxCdXR0b25cclxuICAgICAgICAgICAgb25DbGljaz17KHJlY29yZDogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgaWYgKG9uU2hvd0Zvcm0pIHtcclxuICAgICAgICAgICAgICAgIG9uU2hvd0Zvcm0ocmVjb3JkLmF0dHJpYnV0ZSB8fCByZWNvcmQsIFwiZWRpdG9yXCIpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB0aGlzLnNob3dGb3JtKHJlY29yZC5hdHRyaWJ1dGUgfHwgcmVjb3JkLCBcImVkaXRvclwiKTtcclxuICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgaWNvbj17PEVkaXRPdXRsaW5lZCAvPn1cclxuICAgICAgICAgID5cclxuICAgICAgICAgICAg57yW6L6RXHJcbiAgICAgICAgICA8L0J1dHRvbj5cclxuICAgICAgICApO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAoYnV0dG9ucy5pbmRleE9mKFwiYWRkXCIpID4gLTEpIHtcclxuICAgICAgc2VsZkJ1dHRvbnMucHVzaChcclxuICAgICAgICA8QnV0dG9uXHJcbiAgICAgICAgICB0eXBlPXtcInByaW1hcnlcIn1cclxuICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcclxuICAgICAgICAgICAgY29uc3QgeyBvblNob3dGb3JtIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgICAgICAgICBpZiAob25TaG93Rm9ybSkge1xyXG4gICAgICAgICAgICAgIG9uU2hvd0Zvcm0oKTtcclxuICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy5zaG93Rm9ybSgpO1xyXG4gICAgICAgICAgfX1cclxuICAgICAgICAgIGljb249ezxQbHVzT3V0bGluZWQgLz59XHJcbiAgICAgICAgPlxyXG4gICAgICAgICAg5re75YqgXHJcbiAgICAgICAgPC9CdXR0b24+XHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgICBpZiAoYnV0dG9ucy5pbmRleE9mKFwiZGVsZXRlXCIpID4gLTEpIHtcclxuICAgICAgaWYgKGRlbGV0ZVBvc2l0aW9uID09IFwidG9vbGJhclwiKSB7XHJcbiAgICAgICAgc2VsZkJ1dHRvbnMucHVzaChcclxuICAgICAgICAgIDxCdXR0b25cclxuICAgICAgICAgICAgLy8gdHlwZT17XCJwcmltYXJ5XCJ9XHJcbiAgICAgICAgICAgIG9uQ2xpY2s9e3RoaXMub25EZWxldGUuYmluZCh0aGlzKX1cclxuICAgICAgICAgICAgaWNvbj17PERlbGV0ZU91dGxpbmVkIC8+fVxyXG4gICAgICAgICAgICBkYW5nZXJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAg5Yig6ZmkXHJcbiAgICAgICAgICA8L0J1dHRvbj5cclxuICAgICAgICApO1xyXG4gICAgICB9IGVsc2UgaWYgKGRlbGV0ZVBvc2l0aW9uID09IFwicm93XCIpIHtcclxuICAgICAgICBjb2x1bW5CdXR0b25zLnB1c2goXHJcbiAgICAgICAgICA8QnV0dG9uXHJcbiAgICAgICAgICAgIC8vIHR5cGU9e1wicHJpbWFyeVwifVxyXG4gICAgICAgICAgICBvbkNsaWNrPXsocmVjb3JkOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICB0aGlzLm9uRGVsZXRlKHJlY29yZCk7XHJcbiAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgIGljb249ezxEZWxldGVPdXRsaW5lZCAvPn1cclxuICAgICAgICAgICAgZGFuZ2VyXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIOWIoOmZpFxyXG4gICAgICAgICAgPC9CdXR0b24+XHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKEFycmF5LmlzQXJyYXkoY2hpbGRyZW4pKSB7XHJcbiAgICAgIGNoaWxkcmVuLm1hcCgoaXRlbTogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoaXRlbSkpIHtcclxuICAgICAgICAgIGl0ZW0ubWFwKChjaGlsZCkgPT4ge1xyXG4gICAgICAgICAgICBpZiAoY2hpbGQ/LnByb3BzPy5wYWdlVHlwZSA9PSBcInRvb2xCdXR0b25cIikge1xyXG4gICAgICAgICAgICAgIHNlbGZCdXR0b25zLnB1c2goY2hpbGQpO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGNoaWxkPy5wcm9wcz8ucGFnZVR5cGUgPT0gXCJjbG91bW5CdXR0b25cIikge1xyXG4gICAgICAgICAgICAgIGNvbHVtbkJ1dHRvbnMucHVzaChjaGlsZCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBpZiAoaXRlbT8ucHJvcHM/LnBhZ2VUeXBlID09IFwidG9vbEJ1dHRvblwiKSB7XHJcbiAgICAgICAgICAgIHNlbGZCdXR0b25zLnB1c2goaXRlbSk7XHJcbiAgICAgICAgICB9IGVsc2UgaWYgKGl0ZW0/LnByb3BzPy5wYWdlVHlwZSA9PSBcImNsb3VtbkJ1dHRvblwiKSB7XHJcbiAgICAgICAgICAgIGNvbHVtbkJ1dHRvbnMucHVzaChpdGVtKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIGlmIChjaGlsZHJlbikge1xyXG4gICAgICBjb25zdCB7IHByb3BzIH06IGFueSA9IGNoaWxkcmVuO1xyXG4gICAgICBpZiAocHJvcHM/LnBhZ2VUeXBlID09IFwidG9vbEJ1dHRvblwiKSB7XHJcbiAgICAgICAgc2VsZkJ1dHRvbnMucHVzaChjaGlsZHJlbik7XHJcbiAgICAgIH0gZWxzZSBpZiAocHJvcHM/LnBhZ2VUeXBlID09IFwiY2xvdW1uQnV0dG9uXCIpIHtcclxuICAgICAgICBjb2x1bW5CdXR0b25zLnB1c2goY2hpbGRyZW4pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBhY3Rpb25Db2x1bW4gJiZcclxuICAgICAgdGFibGVDb2x1bW4ucHVzaCh7XHJcbiAgICAgICAgdGl0bGU6IFwi5pON5L2cXCIsXHJcbiAgICAgICAgZGF0YUluZGV4OiBcImFjdGlvblwiLFxyXG4gICAgICAgIGFsaWduOiBhY3Rpb25Qcm9wcz8udGV4dEFsaWduXHJcbiAgICAgICAgICA/IGFjdGlvblByb3BzPy50ZXh0QWxpZ25cclxuICAgICAgICAgIDogYmFzZUFjdGlvbkNvbHVtbi50ZXh0QWxpZ25cclxuICAgICAgICAgID8gYmFzZUFjdGlvbkNvbHVtbi50ZXh0QWxpZ25cclxuICAgICAgICAgIDogXCJjZW50ZXJcIixcclxuICAgICAgICB3aWR0aDogYWN0aW9uUHJvcHM/LndpZHRoXHJcbiAgICAgICAgICA/IGFjdGlvblByb3BzPy53aWR0aFxyXG4gICAgICAgICAgOiBiYXNlQWN0aW9uQ29sdW1uLndpZHRoXHJcbiAgICAgICAgICA/IGJhc2VBY3Rpb25Db2x1bW4ud2lkdGhcclxuICAgICAgICAgIDogMjAwLFxyXG4gICAgICAgIGZpeGVkOiBcInJpZ2h0XCIsXHJcbiAgICAgICAgcmVuZGVyOiAodGV4dDogYW55LCByZWNvcmQ6IGFueSkgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcImFjdGlvblwiKX0+XHJcbiAgICAgICAgICAgICAge3RoaXMucmVuZGVyQ2xvdW1uQnV0dG9uKGNvbHVtbkJ1dHRvbnMsIHJlY29yZCl9XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9LFxyXG4gICAgICB9KTtcclxuICAgIGlmIChjb2x1bW5PcmRlcilcclxuICAgICAgdGFibGVDb2x1bW4gPSBbXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgdGl0bGU6IFwi5bqP5Y+3XCIsXHJcbiAgICAgICAgICB3aWR0aDogODAsXHJcbiAgICAgICAgICBhbGlnbjogXCJjZW50ZXJcIixcclxuICAgICAgICAgIHJlbmRlcjogKHRleHQsIHJlYWNvcmQsIGluZGV4KSA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiA8PntpbmRleCArIDF9PC8+O1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICB9LFxyXG4gICAgICAgIC4uLnRhYmxlQ29sdW1uLFxyXG4gICAgICBdO1xyXG4gICAgbGV0IHNlYXJjaEZsYWcgPSBzaG93U2VhcmNoICYmIHNlYXJjaEZvcm1zLmxlbmd0aCA+IDA7XHJcbiAgICBsZXQgeyB0YWJsZVRvb2wgfSA9IGNvbmZpZygpO1xyXG4gICAgbGV0IHRvb2xGbGFnID0gc2hvd1Rvb2xCdXR0b24gJiYgc2VsZkJ1dHRvbnMubGVuZ3RoID4gMDtcclxuICAgIGxldCB0b29sYmFyRmxhZyA9ICEoXHJcbiAgICAgIHRhYmxlUHJvcHMudG9vbGJhciA9PSBmYWxzZSB8fFxyXG4gICAgICB0YWJsZVByb3BzLnRvb2xiYXI/LnNob3cgPT0gZmFsc2UgfHxcclxuICAgICAgdGFibGVQcm9wcy50b29sYmFyPy50b29scz8ubGVuZ3RoID09IDAgfHxcclxuICAgICAgdGFibGVUb29sPy5zaG93ID09IGZhbHNlXHJcbiAgICApO1xyXG4gICAgaWYgKHRhYmxlUHJvcHMucGFnaW5hdGlvbiAhPT0gZmFsc2UpIHtcclxuICAgICAgY29uc3Qgc2Nyb2xsID0gdGFibGVQYXJhbXMuc2Nyb2xsO1xyXG4gICAgICB0YWJsZVBhcmFtcyA9IHtcclxuICAgICAgICAuLi50YWJsZVBhcmFtcyxcclxuICAgICAgICBzY3JvbGw6IHsgeDogXCJtYXgtY29udGVudFwiLCAuLi5zY3JvbGwgfSxcclxuICAgICAgfTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gKFxyXG4gICAgICA8ZGl2IGNsYXNzTmFtZT17Y2xzKGdldExlc3Moc3R5bGVzLCBcInBhZ2VcIiksIGNsYXNzTmFtZSl9PlxyXG4gICAgICAgIHt0aGlzLnByb3BzLnBhZ2VUaXRsZSAmJiAoXHJcbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Y2xzKGdldExlc3Moc3R5bGVzLCBcInBhZ2UtdGl0bGVcIikpfT5cclxuICAgICAgICAgICAge3RoaXMucHJvcHMucGFnZVRpdGxlfVxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgKX1cclxuICAgICAgICA8ZGl2XHJcbiAgICAgICAgICBjbGFzc05hbWU9e2NscyhnZXRMZXNzKHN0eWxlcywgXCJwYWdlLXBhbmVcIikpfVxyXG4gICAgICAgICAgc3R5bGU9e3sgZGlzcGxheTogXCJmbGV4XCIgfX1cclxuICAgICAgICA+XHJcbiAgICAgICAgICB7c2hvd0xlZnQgJiYgKFxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwibGVmdFwiKX0+XHJcbiAgICAgICAgICAgICAgPFRyZWVcclxuICAgICAgICAgICAgICAgIHN0b3JlPXt7IC4uLnRyZWVTdG9yZSB9fVxyXG4gICAgICAgICAgICAgICAgc2hvd0ljb249e2ZhbHNlfVxyXG4gICAgICAgICAgICAgICAgY2hlY2thYmxlPXtmYWxzZX1cclxuICAgICAgICAgICAgICAgIHNlYXJjaGFibGU9e3RyZWVTZWFyY2h9XHJcbiAgICAgICAgICAgICAgICBvblNlbGVjdD17dGhpcy50cmVlU2VsZWN0LmJpbmQodGhpcyl9XHJcbiAgICAgICAgICAgICAgICBzZWxlY3RlZEtleXM9e1t0aGlzLnN0YXRlLnRyZWVTZWxlY3RlZEtleV19XHJcbiAgICAgICAgICAgICAgICB0aXRsZUFsaWFzPXt0aXRsZUFsaWFzfVxyXG4gICAgICAgICAgICAgICAgey4uLm90aGVydHJlZVBhcmFtc31cclxuICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICl9XHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xzKGdldExlc3Moc3R5bGVzLCBcInJpZ2h0XCIpLCB7XHJcbiAgICAgICAgICAgICAgW2dldExlc3Moc3R5bGVzLCBcIm5vLWxlZnQtcmlnaHRcIildOiAhc2hvd0xlZnQsXHJcbiAgICAgICAgICAgIH0pfVxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICB7c2hvd1NlYXJjaCAmJiBzZWFyY2hGb3Jtcy5sZW5ndGggPiAwICYmIChcclxuICAgICAgICAgICAgICA8SGVhZGVyU2VhcmNoXHJcbiAgICAgICAgICAgICAgICBzZWFyY2hGb3Jtcz17c2VhcmNoRm9ybXN9XHJcbiAgICAgICAgICAgICAgICB0b29sQnV0dG9uUG9zaXRpb249e3Rvb2xCdXR0b25Qb3NpdGlvbn1cclxuICAgICAgICAgICAgICAgIG9uU2VhcmNoPXt0aGlzLm9uU2VhcmNoLmJpbmQodGhpcyl9XHJcbiAgICAgICAgICAgICAgICBvblJlc2V0PXt0aGlzLnByb3BzLm9uUmVzZXR9XHJcbiAgICAgICAgICAgICAgICByZWY9e3RoaXMuc2VhcmNoUmVmfVxyXG4gICAgICAgICAgICAgICAgc2VhcmNoRm9ybVByb3BzPXt0aGlzLnByb3BzLnNlYXJjaEZvcm1Qcm9wc31cclxuICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICApfVxyXG5cclxuICAgICAgICAgICAge3Nob3dUb29sQnV0dG9uICYmXHJcbiAgICAgICAgICAgICAgc2VsZkJ1dHRvbnMubGVuZ3RoID4gMCAmJlxyXG4gICAgICAgICAgICAgIHRvb2xCdXR0b25Qb3NpdGlvbiA9PSBcImJ1dHRvbVwiICYmXHJcbiAgICAgICAgICAgICAgdGhpcy5yZW5kZXJUb29sQnV0dG9ucyhzZWxmQnV0dG9ucywgc2VhcmNoRm9ybXMubGVuZ3RoID09IDApfVxyXG4gICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbHMoXHJcbiAgICAgICAgICAgICAgICBnZXRMZXNzKHN0eWxlcywgXCJ0YWJsZVwiKSxcclxuICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgW2dldExlc3Moc3R5bGVzLCBcInRhYmxlLXRvcFwiKV06XHJcbiAgICAgICAgICAgICAgICAgICAgKHNlYXJjaEZsYWcgJiYgIXRvb2xGbGFnKSB8fCAhdG9vbGJhckZsYWcsXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICBbZ2V0TGVzcyhzdHlsZXMsIFwidGFibGUtdG9wMlwiKV06ICFzZWFyY2hGbGFnICYmICF0b29sRmxhZyxcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPFRhYmxlXHJcbiAgICAgICAgICAgICAgICByZWY9e3RoaXMudGFibGVSZWZ9XHJcbiAgICAgICAgICAgICAgICBjb2x1bW5zPXt0YWJsZUNvbHVtbn1cclxuICAgICAgICAgICAgICAgIGV4cGFuZGFibGU9e3tcclxuICAgICAgICAgICAgICAgICAgZXhwYW5kSWNvbjogKHsgZXhwYW5kZWQsIG9uRXhwYW5kLCByZWNvcmQgfSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgICAgICAgICAgICA8PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7ZXhwYW5kZWQgJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmVjb3JkLmNoaWxkTm9kZXMgJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmVjb3JkLmNoaWxkTm9kZXM/Lmxlbmd0aCA+IDAgPyAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPERvd25PdXRsaW5lZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KGUpID0+IG9uRXhwYW5kKHJlY29yZCwgZSl9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcImV4cGFuZC1pY29uXCIpfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICkgOiByZWNvcmQuY2hpbGROb2RlcyAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJlY29yZC5jaGlsZE5vZGVzPy5sZW5ndGggPiAwID8gKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxSaWdodE91dGxpbmVkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoZSkgPT4gb25FeHBhbmQocmVjb3JkLCBlKX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwiZXhwYW5kLWljb25cIil9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgKSA6IG51bGx9XHJcbiAgICAgICAgICAgICAgICAgICAgICA8Lz5cclxuICAgICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAuLi5leHBhbmRhYmxlLFxyXG4gICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgIGNvbHVtbk9yZGVyPXt0cnVlfVxyXG4gICAgICAgICAgICAgICAgb25DaGFuZ2U9eyhwYWdpbmF0aW9uKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgIGNvbnN0IHsgY3VycmVudFBhZ2UgfSA9IHRoaXMuc3RhdGU7XHJcbiAgICAgICAgICAgICAgICAgIGlmIChjdXJyZW50UGFnZSAhPT0gcGFnaW5hdGlvbi5jdXJyZW50KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50UGFnZTogcGFnaW5hdGlvbi5jdXJyZW50LFxyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgdG9vbGJhcj17e1xyXG4gICAgICAgICAgICAgICAgICBvblRvb2xDbGljazoge1xyXG4gICAgICAgICAgICAgICAgICAgIG9uUmVmcmVzaDogKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgY29uc3QgcGFyYW1zID0gdGhpcy5nZXRTZWFyY2hWYWx1ZXMoKTtcclxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMudGFibGVMb2FkKHBhcmFtcyk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgLi4udGFibGVQcm9wcy50b29sYmFyLFxyXG4gICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgIHNob3dSb3dTZWxlY3Rpb249e3Nob3dSb3dTZWxlY3Rpb259XHJcbiAgICAgICAgICAgICAgICB7Li4udGFibGVQYXJhbXN9XHJcbiAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIHtlZGl0b3JGb3JtICYmIChcclxuICAgICAgICAgICAgPEVkaXRvckZvcm1cclxuICAgICAgICAgICAgICByZWY9e3RoaXMuZWRpdG9yUmVmfVxyXG4gICAgICAgICAgICAgIGNhbGxCYWNrPXsoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnByb3BzLm9uQ2FsbEJhY2tzPy5vblN1bWJpdENhbGxCYWNrICYmXHJcbiAgICAgICAgICAgICAgICAgIHRoaXMucHJvcHMub25DYWxsQmFja3M/Lm9uU3VtYml0Q2FsbEJhY2soKTtcclxuICAgICAgICAgICAgICAgIHRoaXMudGFibGVSZWxvYWQuYmluZCh0aGlzKTtcclxuICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgIGZvcm1Qcm9wcz17ZWRpdG9yRm9ybXN9XHJcbiAgICAgICAgICAgICAgc3VibWl0VXJsPXtzdWJtaXRVcmx9XHJcbiAgICAgICAgICAgICAgc3VibWl0UGFyYW1zPXtzdWJtaXRQYXJhbXN9XHJcbiAgICAgICAgICAgICAgb25TdWJtaXQ9e3RoaXMucHJvcHMub25TdWJtaXR9XHJcbiAgICAgICAgICAgICAgZGVmYXVsdFZhbHVlPXtkZWZhdWx0VmFsdWV9XHJcbiAgICAgICAgICAgICAgb25IaWRlRm9ybT17dGhpcy5wcm9wcy5vbkhpZGVGb3JtfVxyXG4gICAgICAgICAgICAgIG9uRm9ybUNoYW5nZT17dGhpcy5wcm9wcy5vbkZvcm1DaGFuZ2V9XHJcbiAgICAgICAgICAgICAgZm9ybVR5cGU9e3RoaXMucHJvcHMuZm9ybVR5cGUgfHwgXCJhdXRvXCJ9XHJcbiAgICAgICAgICAgICAgY2hhbmdlVmFsaWQ9e2Zvcm1DaGFuZ2VWYWxpZH1cclxuICAgICAgICAgICAgICBvdGhlclByb3BzPXt7IC4uLmZvcm1Qcm9wcyB9fVxyXG4gICAgICAgICAgICAvPlxyXG4gICAgICAgICAgKX1cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICApO1xyXG4gIH1cclxufVxyXG5leHBvcnQgZGVmYXVsdCBCYXNlUGFnZTtcclxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7OztBQUFBLE9BQU9BLEtBQUssSUFBSUMsYUFBYSxRQUFtQixPQUFPO0FBQ3ZELE9BQU9DLEtBQUssTUFBTSxrQkFBa0I7QUFDcEMsT0FBT0MsSUFBSSxNQUFNLGlCQUFpQjtBQUVsQyxPQUFPQyxNQUFNLE1BQU0sbUJBQW1CO0FBQ3RDLE9BQU9DLEtBQUssTUFBTSxrQkFBa0I7QUFDcEMsT0FBT0MsT0FBTyxNQUFNLG9CQUFvQjtBQUN4QyxPQUFPQyxPQUFPLE1BQU0sb0JBQW9CO0FBR3hDLE9BQU9DLFVBQVUsTUFBTSxRQUFRO0FBQy9CLE9BQU9DLEdBQUcsTUFBTSxZQUFZO0FBQzVCLE9BQU9DLE1BQU0sTUFBTSxxQkFBcUI7QUFHeEMsU0FBU0MsS0FBSyxRQUFRLHVCQUF1QjtBQUM3QyxTQUNFQyxZQUFZLEVBQ1pDLFdBQVcsRUFDWEMsWUFBWSxFQUNaQyxhQUFhLEVBQ2JDLFlBQVksRUFDWkMsZ0JBQWdCLEVBQ2hCQyxjQUFjLFFBQ1QsbUJBQW1CO0FBQzFCLFNBQVNDLE9BQU8sUUFBaUIsYUFBYTtBQUM5QyxPQUFPQyxPQUFPLE1BQU0sYUFBYTtBQUVqQyxPQUFPQyxNQUFNLE1BQU0sY0FBYztBQUNqQyxTQUFTQyxVQUFVLFFBQVEsbUJBQW1CO0FBRTlDLE9BQU9DLFlBQVksTUFBTSxpQkFBaUI7QUE4RDFDLE1BQU1DLFFBQVEsU0FBU3ZCLGFBQWEsQ0FBd0I7RUFNMUR3QixXQUFXQSxDQUFDQyxLQUFVLEVBQUU7SUFBQSxJQUFBQyxLQUFBLEVBQUFDLEtBQUE7SUFDdEIsS0FBSyxDQUFDRixLQUFLLENBQUM7SUFBQ0csZUFBQSxnQ0FOSjdCLEtBQUssQ0FBQzhCLFNBQVMsQ0FBTSxDQUFDO0lBQUFELGVBQUEsK0JBQ3ZCN0IsS0FBSyxDQUFDOEIsU0FBUyxDQUFNLENBQUM7SUFBQUQsZUFBQSxpQ0FDcEI3QixLQUFLLENBQUM4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
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["React","PureComponent","Table","Tree","Button","Modal","Popover","message","EditorForm","cls","styles","utils","DownOutlined","EyeOutlined","EditOutlined","RightOutlined","PlusOutlined","EllipsisOutlined","DeleteOutlined","getLess","request","config","getStorage","HeaderSearch","BasePage","constructor","props","_type","_size","_defineProperty","createRef","checkedTreeKeys","name","userType","account","state","value","deptId","onSearch","selected","res","key","keys","length","storePrefix","type","content","size","selectedRowKeys","selectedRowDatas","treeSelectedKey","expand","formType","tableSize","treeSearchPrams","popopens","componentDidMount","initData","setSearchParams","params","callBack","_this$searchRef$curre","searchRef","current","doSubmit","data","_this$editorRef$curre","label","arguments","undefined","editorRef","showForm","_this$editorRef$curre2","editorflag","show","hideForm","_this$editorRef$curre3","setLoading","loading","_this$editorRef$curre4","setEditFormValues","_this$editorRef$curre5","setFieldsValue","getEditFormValues","_this$editorRef$curre6","getFieldsValue","onDelete","_this$tableRef$curren","deleteUrl","deleteParams","deletePosition","_this","tableRef","getSelectedRowKeys","warning","confirm","onOk","Error","defaultParams","method","autoPrefix","ids","join","id","requestParams","_objectSpread","then","code","_this$searchRef","_this$props$onCallBac","_this$props$onCallBac2","success","getSearchValues","onCallBacks","onDeleteCallBack","tableLoad","error","catch","console","log","_this$tableRef$curren2","requestConfig","store","load","onSearchCallBack","callback","tableReload","_this$tableRef$curren3","autoLoad","reload","_res$data","records","currentPage","_this$tableRef$curren4","_this$tableRef$curren5","getSelectedRowDatas","_this$tableRef$curren6","setSelectedRowKeys","_this$tableRef$curren7","setSelectedRowDatas","_this$tableRef$curren8","resetSelectedRowKeys","_this$tableRef$curren9","_this$searchRef2","fromValue","getChildrenData","tableProps","rowKey","resKey","childNodes","children","map","item","index","renderToolButtons","toolbuttons","marginflag","flag","showSearch","_item$props","pageType","onClick","icon","_objectWithoutProperties","_excluded","createElement","_extends","className","style","marginLeft","title","placement","trigger","renderCloumnButton","columnButtons","record","actionProps","baseActionColumn","newButtons","showIcon","_item$props2","recordShow","_excluded2","eval","push","_item$props3","_excluded3","setState","_item$props4","_excluded4","visible","onVisibleChange","visibale","treeSelect","selectedKeys","obj","_this$searchRef3","_this$props$onCallBac3","_this$props$onCallBac4","keyword","searchKey","searchField","parantSelect","treeProps","selectedNodes","dataref","attribute","isLeaf","onTreeSelect","treeSelectCallBack","resetSearch","_this$searchRef$curre2","resetFields","getText","text","_props$data","newText","i","setTableData","_this$tableRef$curren10","setData","setTreeData","_this$treeRef$current","treeRef","render","_tableProps$toolbar","_tableProps$toolbar2","columns","submitUrl","formProps","showLeft","submitParams","showToolButton","buttons","editorForm","onShowForm","formChangeValid","toolButtonPosition","filterColumn","actionColumn","showRowSelection","columnOrder","expandable","othertableParams","_excluded5","treeStore","treeSearch","titleAlias","othertreeParams","_excluded6","tableParams","tableColumn","searchForms","editorForms","defaultValue","_temp$search","_temp$props","_temp$props2","_temp","temp","search","_temp$search2","_temp$search3","_temp$search4","field","dataIndex","labelCol","wrapperCol","rules","searchRules","editor","span","dictName","_temp$props3","columnSearch","filterProps","tempProp","Fragment","ellipsis","columnShow","selfButtons","indexOf","bind","danger","Array","isArray","child","_child$props","_child$props2","_item$props5","_item$props6","align","textAlign","width","fixed","reacord","searchFlag","tableTool","toolFlag","toolbarFlag","toolbar","tools","pagination","scroll","x","pageTitle","display","checkable","searchable","onSelect","onReset","ref","searchFormProps","expandIcon","_ref","_record$childNodes","_record$childNodes2","expanded","onExpand","e","onChange","onToolClick","onRefresh","_this$props$onCallBac5","_this$props$onCallBac6","onSumbitCallBack","onSubmit","onHideForm","onFormChange","changeValid","otherProps"],"sources":["../../../src/components/page/BasePage/index.tsx"],"sourcesContent":["import React, { PureComponent, ReactNode } from \"react\";\r\nimport Table from \"../../base/table\";\r\nimport Tree from \"../../base/tree\";\r\nimport Form from \"../../base/form\";\r\nimport Button from \"../../base/button\";\r\nimport Modal from \"../../base/modal\";\r\nimport Popover from \"../../base/popover\";\r\nimport message from \"../../base/message\";\r\nimport Icon from \"../../base/common/IconFont\";\r\nimport { iconType } from \"../../constants\";\r\nimport EditorForm from \"./Form\";\r\nimport cls from \"classnames\";\r\nimport styles from \"./index.module.less\";\r\nimport Store, { PageStore, StoreProps } from \"@bj-nsc/msn\";\r\nimport Row from \"../../base/grid/Row\";\r\nimport { utils } from \"@bj-nsc/msn/lib/utils\";\r\nimport {\r\n DownOutlined,\r\n EyeOutlined,\r\n EditOutlined,\r\n RightOutlined,\r\n PlusOutlined,\r\n EllipsisOutlined,\r\n DeleteOutlined,\r\n} from \"@ant-design/icons\";\r\nimport { getLess, getNode } from \"../../utils\";\r\nimport request from \"nsc-request\";\r\nimport omit from \"omit.js\";\r\nimport config from \"../../config\";\r\nimport { getStorage } from \"@bj-nsc/functions\";\r\nimport { IFormProps } from \"../../base/form/Form\";\r\nimport HeaderSearch from \"../HeaderSearch\";\r\nimport { PaginationProps } from \"antd\";\r\ninterface TableProps {\r\n actionColumn?: boolean; //是否显示操作列\r\n store?: StoreProps;\r\n filterColumn?: boolean; //是否显示过滤按钮\r\n showRowSelection?: boolean; //是否表格勾选列\r\n pagination?: boolean | PaginationProps; //是否显示分页\r\n columnOrder?: boolean; //是否显示表格序列\r\n [propsName: string]: any;\r\n}\r\ninterface TreeProps {\r\n store?: StoreProps;\r\n showSearch?: boolean; //是否显示搜索框\r\n searchKey?: string; //搜索value对应的key\r\n searchField?: string; //查询对应的key\r\n titleAlias?: string; //树title对应的key,默认title\r\n nodePorps?: object;\r\n parantSelect?: boolean;\r\n [propsName: string]: any;\r\n}\r\ninterface FormProps extends IFormProps {}\r\ninterface NSCBaseBageProps {\r\n showSearch?: boolean; //是否显示头部搜索栏\r\n tableProps?: TableProps; //表格参数\r\n treeProps?: TreeProps; //左侧树参数\r\n submitParams?: Object; //添加参数,默认mothod:post, 参数通过data传递\r\n submitUrl?: string;\r\n onSubmit?: (value?: any, label?: any) => void;\r\n columns: Array<Object>;\r\n showLeft?: boolean; //是否显示左侧目录树\r\n showToolButton?: boolean; //是否显示按钮栏\r\n editorForm?: boolean; //是否需要表单功能 , 为false 编辑,查看,新增功能均不可用\r\n deleteUrl?: string; //删除url\r\n onDelete?: (selectedKeys?: Array<string>) => void; //删除参数,默认mothod:post, 参数通过ids拼接传递给后台\r\n deletePosition?: \"toolbar\" | \"row\";\r\n deleteParams?: Object;\r\n children?: React.ReactNode;\r\n onSearch?: (value?: any) => void;\r\n onReset?: () => void;\r\n initData?: any; //初始化回调函数,在componentDidMount中调用\r\n buttons?: Array<string>; //按钮集合 ['add','delete','search','editor']\r\n onShowForm?: (value?: any, editorFlag?: string) => void; //打开表单回调\r\n onHideForm?: () => void; //打开表单回调\r\n onFormChange?: (changedValues?: any, allValues?: any) => void; //表单onChange回调\r\n formType?: \"modal\" | \"drawer\";\r\n formChangeValid?: boolean; //表单校验\r\n className?: any;\r\n toolButtonPosition?: \"right\" | \"buttom\";\r\n pageTitle?: string | ReactNode;\r\n formProps?: FormProps;\r\n actionProps?: { textAlign?: string; showIcon?: boolean; width?: number };\r\n searchFormProps?: { wrapperCol?: any; labelCol?: any };\r\n onTreeSelect?: (value?: any, editorFlag?: string) => void; //打开表单回调\r\n onCallBacks?: {\r\n treeSelectCallBack?: any;\r\n onSearchCallBack?: any;\r\n onSumbitCallBack?: any;\r\n onDeleteCallBack?: any;\r\n };\r\n}\r\n\r\nclass BasePage extends PureComponent<NSCBaseBageProps, any> {\r\n tableRef = React.createRef<any>();\r\n treeRef = React.createRef<any>();\r\n searchRef = React.createRef<any>();\r\n editorRef = React.createRef<any>();\r\n dateFormat = {} as any;\r\n constructor(props: any) {\r\n super(props);\r\n let { storePrefix } = config();\r\n let type = getStorage(\r\n storePrefix ? storePrefix + \"-\" + \"formType\" : \"formType\"\r\n );\r\n type = type?.content;\r\n let size = getStorage(\r\n storePrefix ? storePrefix + \"-\" + \"tableSize\" : \"tableSize\"\r\n );\r\n size = size?.content;\r\n this.state = {\r\n type: \"add\",\r\n selectedRowKeys: [],\r\n selectedRowDatas: [],\r\n treeSelectedKey: \"\",\r\n expand: false,\r\n formType: type || \"modal\",\r\n tableSize: size || \"default\",\r\n treeSearchPrams: {},\r\n popopens: {},\r\n };\r\n }\r\n componentDidMount() {\r\n const { initData } = this.props;\r\n initData && initData();\r\n }\r\n\r\n setSearchParams(params, callBack) {\r\n this.searchRef.current?.setSearchParams(params);\r\n callBack && callBack(params);\r\n }\r\n doSubmit(data, label = \"编辑\") {\r\n this.editorRef.current?.doSubmit(data, label);\r\n }\r\n\r\n onSelect = (checkedTreeKeys: any) => {\r\n const { name, userType, account } = this.state;\r\n const value = { name, userType, account, deptId: checkedTreeKeys[0] };\r\n if (this.props.onSearch) {\r\n this.props.onSearch(value);\r\n }\r\n // this.tableLoad(value);\r\n };\r\n\r\n //显示表单\r\n showForm(value?: any, editorflag = \"add\") {\r\n this.editorRef.current?.show(value, editorflag);\r\n }\r\n\r\n //关闭表单\r\n hideForm() {\r\n this.editorRef.current?.hideForm();\r\n }\r\n\r\n setLoading(loading: boolean) {\r\n this.editorRef.current?.setLoading(loading);\r\n }\r\n\r\n setEditFormValues(value) {\r\n this.editorRef.current?.setFieldsValue(value);\r\n }\r\n\r\n getEditFormValues() {\r\n return this.editorRef.current?.getFieldsValue();\r\n }\r\n\r\n //批量删除\r\n onDelete(data?: any) {\r\n const {\r\n deleteUrl,\r\n onDelete,\r\n deleteParams,\r\n deletePosition = \"toolbar\",\r\n } = this.props;\r\n let _this = this;\r\n const selectedRowKeys = this.tableRef.current?.getSelectedRowKeys();\r\n if (deletePosition == \"toolbar\") {\r\n if (selectedRowKeys.length == 0) {\r\n message.warning(\"请选择要删除的数据!\");\r\n return;\r\n }\r\n }\r\n Modal.confirm({\r\n content: \"是否确认删除所选项?\",\r\n // centered:true,\r\n onOk: () => {\r\n if (onDelete) {\r\n onDelete &&\r\n onDelete(deletePosition == \"toolbar\" ? selectedRowKeys : data);\r\n return;\r\n }\r\n if (!deleteUrl) {\r\n throw new Error(\"url不能为空!\");\r\n }\r\n const defaultParams = {\r\n method: \"post\",\r\n autoPrefix: true,\r\n params: {\r\n ids: deletePosition == \"toolbar\" ? selectedRowKeys.join() : data.id,\r\n },\r\n };\r\n let requestParams = {} as any;\r\n if (defaultParams) {\r\n requestParams = { ...deleteParams };\r\n }\r\n requestParams = { ...defaultParams };\r\n request(deleteUrl, {\r\n ...requestParams,\r\n })\r\n .then(function (res: any) {\r\n const { code } = res;\r\n if (code === 200) {\r\n message.success(\"删除成功!\");\r\n let value = _this.searchRef?.current?.getSearchValues();\r\n _this.props.onCallBacks?.onDeleteCallBack &&\r\n _this.props.onCallBacks?.onDeleteCallBack();\r\n _this.tableLoad(value);\r\n } else {\r\n message.error(\"删除失败!\");\r\n }\r\n })\r\n .catch(function (error: any) {\r\n console.log(\"error\", error);\r\n });\r\n },\r\n });\r\n }\r\n tableLoad(params: any, requestConfig = {}) {\r\n this.tableRef.current?.store.load({\r\n ...requestConfig,\r\n params: params,\r\n });\r\n }\r\n //查询\r\n onSearch(params) {\r\n const { onSearch, onCallBacks } = this.props;\r\n if (onSearch) {\r\n onSearch({ ...params, ...this.state.treeSearchPrams });\r\n return;\r\n }\r\n this.tableLoad({ ...params, ...this.state.treeSearchPrams });\r\n onCallBacks?.onSearchCallBack &&\r\n utils.callback(onCallBacks?.onSearchCallBack, this, [params]);\r\n }\r\n //表格重新加载\r\n tableReload(params = {}, autoLoad = true) {\r\n this.tableRef.current?.store?.reload({\r\n callback: (res) => {\r\n if (\r\n autoLoad &&\r\n res?.data?.records?.length == 0 &&\r\n this.state.currentPage !== 1\r\n ) {\r\n this.tableRef.current?.store?.reload({\r\n params: { current: 1, ...params },\r\n });\r\n }\r\n },\r\n });\r\n }\r\n getSelectedRowKeys() {\r\n return this.tableRef.current?.getSelectedRowKeys();\r\n }\r\n getSelectedRowDatas() {\r\n return this.tableRef.current?.getSelectedRowDatas();\r\n }\r\n setSelectedRowKeys(data: Array<String | Number>) {\r\n return this.tableRef.current?.setSelectedRowKeys(data);\r\n }\r\n setSelectedRowDatas(data: Array<Object>) {\r\n return this.tableRef.current?.setSelectedRowDatas(data);\r\n }\r\n resetSelectedRowKeys() {\r\n return this.tableRef.current?.resetSelectedRowKeys();\r\n }\r\n\r\n getSearchValues() {\r\n const fromValue = this.searchRef?.current?.getSearchValues();\r\n return { ...fromValue, ...this.state.treeSearchPrams };\r\n }\r\n\r\n getChildrenData(data, keys = []) {\r\n const { tableProps } = this.props;\r\n const { rowKey = \"id\" } = tableProps;\r\n let resKey = [];\r\n if (data.childNodes) {\r\n const children = data.childNodes;\r\n children.map((item, index) => {\r\n if (item.childNodes) {\r\n this.getChildrenData(item.childNodes, keys);\r\n } else {\r\n resKey = [...keys, item[rowKey]];\r\n }\r\n });\r\n } else {\r\n resKey = [...keys, data[rowKey]];\r\n }\r\n return resKey;\r\n }\r\n\r\n renderToolButtons(toolbuttons: any, marginflag = false) {\r\n const flag = toolbuttons.length > 5;\r\n const { showSearch = true } = this.props;\r\n const content = toolbuttons.map((item: any, index: any) => {\r\n const { children, pageType, onClick, icon, show, ...params } = item.props;\r\n if (index > 3) {\r\n return (\r\n <div\r\n className={cls(\r\n getLess(styles, \"editor\"),\r\n getLess(styles, \"content-item\")\r\n )}\r\n key={index}\r\n onClick={() => {\r\n onClick && onClick();\r\n }}\r\n {...params}\r\n >\r\n <span className={getLess(styles, \"icon\")}>{icon}</span>\r\n <span className={getLess(styles, \"text\")}>{children}</span>\r\n </div>\r\n );\r\n }\r\n });\r\n return (\r\n <div\r\n className={cls(getLess(styles, \"tool-buttons\"), {\r\n [getLess(styles, \"tool-buttons-margin\")]: !showSearch || marginflag,\r\n })}\r\n style={{ marginLeft: 0 }}\r\n >\r\n {toolbuttons.map((item: any, index: any) => {\r\n if (flag) {\r\n if (index < 4) {\r\n return <div key={index}>{item}</div>;\r\n } else if (index == 4) {\r\n return (\r\n <Popover\r\n content={content}\r\n title={null}\r\n placement=\"bottom\"\r\n trigger={[\"click\"]}\r\n key={index}\r\n\r\n // overlayClassName={styles['pop-box']}\r\n >\r\n <Button type=\"primary\">\r\n 更多 <DownOutlined />\r\n </Button>\r\n </Popover>\r\n );\r\n } else {\r\n return null;\r\n }\r\n } else {\r\n return <div key={index}>{item}</div>;\r\n }\r\n })}\r\n </div>\r\n );\r\n }\r\n renderCloumnButton(columnButtons: any, record: any) {\r\n const { actionProps } = this.props;\r\n const { baseActionColumn } = config();\r\n const newButtons = [];\r\n let showIcon = true;\r\n if (actionProps?.showIcon === false) showIcon = false;\r\n else if (baseActionColumn.showIcon === false) showIcon = false;\r\n columnButtons.map((item: any, index: any) => {\r\n const { children, pageType, onClick, icon, recordShow, ...params } =\r\n item.props;\r\n if (recordShow) {\r\n if (typeof recordShow == \"string\") {\r\n if (eval(recordShow)) {\r\n newButtons.push(item);\r\n }\r\n } else if (typeof recordShow == \"function\") {\r\n const show = recordShow(record);\r\n show && newButtons.push(item);\r\n }\r\n } else {\r\n newButtons.push(item);\r\n }\r\n });\r\n const flag = newButtons.length > 3;\r\n\r\n const content = newButtons.map((item: any, index: any) => {\r\n const { children, pageType, onClick, recordShow, icon, show, ...params } =\r\n item.props;\r\n if (index > 2) {\r\n return (\r\n <Button\r\n className={cls(\r\n getLess(styles, \"editor\"),\r\n getLess(styles, \"content-item\")\r\n )}\r\n key={index}\r\n onClick={() => {\r\n let data = {} as any;\r\n data[record.id] = false;\r\n this.setState({\r\n popopens: data,\r\n });\r\n onClick && onClick(record);\r\n }}\r\n type=\"link\"\r\n {...params}\r\n >\r\n {showIcon !== false && (\r\n <span className={getLess(styles, \"icon\")}>{icon}</span>\r\n )}\r\n <span className={getLess(styles, \"text\")}>{children}</span>\r\n </Button>\r\n );\r\n }\r\n });\r\n\r\n return newButtons.map((item: any, index: any) => {\r\n const { children, pageType, onClick, recordShow, icon, ...params } =\r\n item.props;\r\n if (flag) {\r\n if (index < 3) {\r\n return (\r\n <Button\r\n className={cls(getLess(styles, \"editor\"), {\r\n [getLess(styles, \"editor_first\")]: index === 0,\r\n })}\r\n key={index}\r\n onClick={() => {\r\n onClick && onClick(record);\r\n }}\r\n type=\"link\"\r\n {...params}\r\n >\r\n {showIcon !== false && (\r\n <span className={getLess(styles, \"icon\")}>{icon}</span>\r\n )}\r\n <span className={getLess(styles, \"text\")}>{children}</span>\r\n </Button>\r\n );\r\n } else if (index == 3) {\r\n return (\r\n <Popover\r\n placement=\"bottom\"\r\n title={null}\r\n content={content}\r\n trigger={[\"click\"]}\r\n key={index}\r\n visible={this.state.popopens[record.id] || false}\r\n onVisibleChange={(visibale) => {\r\n if (visibale) {\r\n let data = {} as any;\r\n data[record.id] = true;\r\n this.setState({\r\n popopens: data,\r\n });\r\n } else {\r\n this.setState({\r\n popopens: {},\r\n });\r\n }\r\n }}\r\n // overlayClassName={styles['pop']}\r\n >\r\n <a className={getLess(styles, \"editor\")}>\r\n <EllipsisOutlined />\r\n </a>\r\n </Popover>\r\n );\r\n } else {\r\n return null;\r\n }\r\n } else {\r\n return (\r\n <Button\r\n className={cls(getLess(styles, \"editor\"), {\r\n [getLess(styles, \"editor_first\")]: index === 0,\r\n })}\r\n key={index}\r\n onClick={() => {\r\n onClick && onClick(record);\r\n }}\r\n type=\"link\"\r\n {...params}\r\n >\r\n {showIcon !== false && (\r\n <span className={getLess(styles, \"icon\")}>{icon}</span>\r\n )}\r\n <span className={getLess(styles, \"text\")}>{children}</span>\r\n </Button>\r\n );\r\n }\r\n });\r\n // }\r\n }\r\n //树点击事件\r\n treeSelect(selectedKeys: any, obj: any) {\r\n let keyword = \"\";\r\n const {\r\n searchKey = \"key\",\r\n searchField = \"\",\r\n parantSelect = true,\r\n } = this.props.treeProps;\r\n const { treeSelectedKey } = this.state;\r\n const { selected, selectedNodes } = obj;\r\n\r\n if (selected) {\r\n keyword = selectedNodes[0].dataref.attribute[searchKey];\r\n if (parantSelect) {\r\n this.setState({\r\n treeSelectedKey: selectedKeys[0],\r\n treeSearchPrams: { [searchField]: keyword },\r\n });\r\n } else {\r\n if (selectedNodes[0].isLeaf || !selectedNodes[0].children) {\r\n if (selectedKeys[0] !== treeSelectedKey) {\r\n this.setState({\r\n treeSelectedKey: selectedKeys[0],\r\n treeSearchPrams: { [searchField]: keyword },\r\n });\r\n }\r\n }\r\n }\r\n } else {\r\n this.setState({\r\n treeSelectedKey: keyword,\r\n treeSearchPrams: {},\r\n });\r\n }\r\n if (this.props.onTreeSelect) {\r\n this.props.onTreeSelect(selectedKeys, obj);\r\n return;\r\n }\r\n const fromValue = this.searchRef?.current?.getSearchValues() || {};\r\n searchField && this.tableLoad({ ...fromValue, [searchField]: keyword });\r\n this.props.onCallBacks?.treeSelectCallBack &&\r\n utils.callback(this.props.onCallBacks?.treeSelectCallBack, this, [\r\n selectedKeys,\r\n obj,\r\n ]);\r\n }\r\n resetSearch() {\r\n this.searchRef.current?.resetFields();\r\n }\r\n getText(props, text) {\r\n let newText = text;\r\n if (props?.data && props?.data?.length > 0) {\r\n let data = props.data;\r\n for (let i = 0; i < data?.length; i++) {\r\n if (data[i].value == text) {\r\n newText = data[i].label;\r\n }\r\n }\r\n }\r\n return newText;\r\n }\r\n setTableData(data) {\r\n this.tableRef.current?.store?.setData(data);\r\n }\r\n setTreeData(data) {\r\n this.treeRef.current?.store?.setData(data);\r\n }\r\n getSelectedKey = (selected) => {\r\n let res = [];\r\n for (let key in selected) {\r\n const keys = selected[key];\r\n if (keys.length > 0) {\r\n res = [...res, ...keys];\r\n }\r\n }\r\n return res;\r\n };\r\n\r\n render() {\r\n const {\r\n columns = [],\r\n showSearch = true,\r\n children,\r\n submitUrl = \"\",\r\n tableProps = {},\r\n treeProps = {},\r\n formProps = {},\r\n showLeft = false,\r\n submitParams = {},\r\n showToolButton = true,\r\n buttons = [],\r\n editorForm = true,\r\n onShowForm,\r\n formChangeValid = true,\r\n className,\r\n toolButtonPosition = \"buttom\",\r\n actionProps,\r\n deletePosition = \"toolbar\",\r\n } = this.props;\r\n const {\r\n store,\r\n filterColumn = true,\r\n actionColumn = true,\r\n showRowSelection = true,\r\n columnOrder = true,\r\n expandable = {},\r\n parantSelect = true,\r\n ...othertableParams\r\n } = tableProps;\r\n\r\n const {\r\n store: treeStore = {},\r\n showSearch: treeSearch = true,\r\n titleAlias = \"title\",\r\n ...othertreeParams\r\n } = treeProps;\r\n\r\n let tableParams = { filterColumn, store, ...othertableParams } as any;\r\n let tableColumn: any[] = [];\r\n const searchForms: any = [];\r\n const editorForms: any = [];\r\n const defaultValue: any = {};\r\n const columnButtons: any = [];\r\n columns.map((item: any) => {\r\n let temp = { ...item };\r\n if (temp.search === true || temp.search?.show === true) {\r\n searchForms.push({\r\n name: temp.field || temp.dataIndex,\r\n label: temp.search?.label || temp.title,\r\n type: temp.type,\r\n props: temp.props,\r\n labelCol: temp.search?.labelCol,\r\n wrapperCol: temp.search?.wrapperCol,\r\n rules: temp.searchRules ? temp.searchRules : [],\r\n });\r\n }\r\n\r\n delete temp.search;\r\n temp.editor !== false &&\r\n editorForms.push({\r\n name: temp.field || temp.dataIndex,\r\n label: temp.title,\r\n rules: temp.rules ? temp.rules : [],\r\n type: temp.type,\r\n span: temp.span,\r\n dictName: temp.dictName,\r\n props: { ...temp.props },\r\n });\r\n\r\n if (\r\n temp.props?.defaultValue !== undefined &&\r\n temp.props?.defaultValue !== null\r\n ) {\r\n const name = temp.field || temp.dataIndex;\r\n defaultValue[name] = temp.props?.defaultValue;\r\n }\r\n delete temp.rules;\r\n delete temp.span;\r\n if (temp.columnSearch) {\r\n temp.filterProps = {\r\n type: temp.type,\r\n props: temp.props,\r\n };\r\n }\r\n delete temp.type;\r\n let tempProp = { ...temp.props };\r\n if (temp.style) {\r\n temp = {\r\n render: (text: any) => {\r\n return (\r\n <>\r\n {text !== \"\" && text !== null && text !== undefined && (\r\n <div className={getLess(styles, \"col-back\")}>\r\n <span className={getLess(styles, \"col-text\")}>\r\n {this.getText(tempProp, text)}\r\n </span>\r\n </div>\r\n )}\r\n </>\r\n );\r\n },\r\n ...temp,\r\n };\r\n } else if (!temp.ellipsis) {\r\n temp = {\r\n render: (text: any) => {\r\n return <>{this.getText(tempProp, text)}</>;\r\n },\r\n ...temp,\r\n };\r\n } else {\r\n temp = { ...temp };\r\n }\r\n delete temp.props;\r\n if (temp?.columnShow !== false) tableColumn.push(temp);\r\n });\r\n const selfButtons: any = [];\r\n const { baseActionColumn } = config();\r\n let showIcon = true;\r\n if (actionProps?.showIcon === false) showIcon = false;\r\n else if (baseActionColumn.showIcon === false) showIcon = false;\r\n if (editorForm == true) {\r\n if (buttons.indexOf(\"search\") > -1) {\r\n columnButtons.push(\r\n <Button\r\n onClick={(record: any) => {\r\n if (onShowForm) {\r\n onShowForm(record.attribute || record, \"detail\");\r\n return;\r\n }\r\n this.showForm(record.attribute || record, \"detail\");\r\n }}\r\n icon={<EyeOutlined />}\r\n >\r\n 查看\r\n </Button>\r\n );\r\n }\r\n if (buttons.indexOf(\"editor\") > -1) {\r\n columnButtons.push(\r\n <Button\r\n onClick={(record: any) => {\r\n if (onShowForm) {\r\n onShowForm(record.attribute || record, \"editor\");\r\n return;\r\n }\r\n this.showForm(record.attribute || record, \"editor\");\r\n }}\r\n icon={<EditOutlined />}\r\n >\r\n 编辑\r\n </Button>\r\n );\r\n }\r\n }\r\n if (buttons.indexOf(\"add\") > -1) {\r\n selfButtons.push(\r\n <Button\r\n type={\"primary\"}\r\n onClick={() => {\r\n const { onShowForm } = this.props;\r\n if (onShowForm) {\r\n onShowForm();\r\n return;\r\n }\r\n this.showForm();\r\n }}\r\n icon={<PlusOutlined />}\r\n >\r\n 添加\r\n </Button>\r\n );\r\n }\r\n if (buttons.indexOf(\"delete\") > -1) {\r\n if (deletePosition == \"toolbar\") {\r\n selfButtons.push(\r\n <Button\r\n // type={\"primary\"}\r\n onClick={this.onDelete.bind(this)}\r\n icon={<DeleteOutlined />}\r\n danger\r\n >\r\n 删除\r\n </Button>\r\n );\r\n } else if (deletePosition == \"row\") {\r\n columnButtons.push(\r\n <Button\r\n // type={\"primary\"}\r\n onClick={(record: any) => {\r\n this.onDelete(record);\r\n }}\r\n icon={<DeleteOutlined />}\r\n danger\r\n >\r\n 删除\r\n </Button>\r\n );\r\n }\r\n }\r\n if (Array.isArray(children)) {\r\n children.map((item: any) => {\r\n if (Array.isArray(item)) {\r\n item.map((child) => {\r\n if (child?.props?.pageType == \"toolButton\") {\r\n selfButtons.push(child);\r\n } else if (child?.props?.pageType == \"cloumnButton\") {\r\n columnButtons.push(child);\r\n }\r\n });\r\n } else {\r\n if (item?.props?.pageType == \"toolButton\") {\r\n selfButtons.push(item);\r\n } else if (item?.props?.pageType == \"cloumnButton\") {\r\n columnButtons.push(item);\r\n }\r\n }\r\n });\r\n } else if (children) {\r\n const { props }: any = children;\r\n if (props?.pageType == \"toolButton\") {\r\n selfButtons.push(children);\r\n } else if (props?.pageType == \"cloumnButton\") {\r\n columnButtons.push(children);\r\n }\r\n }\r\n actionColumn &&\r\n tableColumn.push({\r\n title: \"操作\",\r\n dataIndex: \"action\",\r\n align: actionProps?.textAlign\r\n ? actionProps?.textAlign\r\n : baseActionColumn.textAlign\r\n ? baseActionColumn.textAlign\r\n : \"center\",\r\n width: actionProps?.width\r\n ? actionProps?.width\r\n : baseActionColumn.width\r\n ? baseActionColumn.width\r\n : 200,\r\n fixed: \"right\",\r\n render: (text: any, record: any) => {\r\n return (\r\n <div className={getLess(styles, \"action\")}>\r\n {this.renderCloumnButton(columnButtons, record)}\r\n </div>\r\n );\r\n },\r\n });\r\n if (columnOrder)\r\n tableColumn = [\r\n {\r\n title: \"序号\",\r\n width: 80,\r\n align: \"center\",\r\n render: (text, reacord, index) => {\r\n return <>{index + 1}</>;\r\n },\r\n },\r\n ...tableColumn,\r\n ];\r\n let searchFlag = showSearch && searchForms.length > 0;\r\n let { tableTool } = config();\r\n let toolFlag = showToolButton && selfButtons.length > 0;\r\n let toolbarFlag = !(\r\n tableProps.toolbar == false ||\r\n tableProps.toolbar?.show == false ||\r\n tableProps.toolbar?.tools?.length == 0 ||\r\n tableTool?.show == false\r\n );\r\n if (tableProps.pagination !== false) {\r\n const scroll = tableParams.scroll;\r\n tableParams = {\r\n ...tableParams,\r\n scroll: { x: \"max-content\", ...scroll },\r\n };\r\n }\r\n\r\n return (\r\n <div className={cls(getLess(styles, \"page\"), className)}>\r\n {this.props.pageTitle && (\r\n <div className={cls(getLess(styles, \"page-title\"))}>\r\n {this.props.pageTitle}\r\n </div>\r\n )}\r\n <div\r\n className={cls(getLess(styles, \"page-pane\"))}\r\n style={{ display: \"flex\" }}\r\n >\r\n {showLeft && (\r\n <div className={getLess(styles, \"left\")}>\r\n <Tree\r\n store={{ ...treeStore }}\r\n showIcon={false}\r\n checkable={false}\r\n searchable={treeSearch}\r\n onSelect={this.treeSelect.bind(this)}\r\n selectedKeys={[this.state.treeSelectedKey]}\r\n titleAlias={titleAlias}\r\n {...othertreeParams}\r\n />\r\n </div>\r\n )}\r\n <div\r\n className={cls(getLess(styles, \"right\"), {\r\n [getLess(styles, \"no-left-right\")]: !showLeft,\r\n })}\r\n >\r\n {showSearch && searchForms.length > 0 && (\r\n <HeaderSearch\r\n searchForms={searchForms}\r\n toolButtonPosition={toolButtonPosition}\r\n onSearch={this.onSearch.bind(this)}\r\n onReset={this.props.onReset}\r\n ref={this.searchRef}\r\n searchFormProps={this.props.searchFormProps}\r\n />\r\n )}\r\n\r\n {showToolButton &&\r\n selfButtons.length > 0 &&\r\n toolButtonPosition == \"buttom\" &&\r\n this.renderToolButtons(selfButtons, searchForms.length == 0)}\r\n <div\r\n className={cls(\r\n getLess(styles, \"table\"),\r\n {\r\n [getLess(styles, \"table-top\")]:\r\n (searchFlag && !toolFlag) || !toolbarFlag,\r\n },\r\n {\r\n [getLess(styles, \"table-top2\")]: !searchFlag && !toolFlag,\r\n }\r\n )}\r\n >\r\n <Table\r\n ref={this.tableRef}\r\n columns={tableColumn}\r\n expandable={{\r\n expandIcon: ({ expanded, onExpand, record }) => {\r\n return (\r\n <>\r\n {expanded &&\r\n record.childNodes &&\r\n record.childNodes?.length > 0 ? (\r\n <DownOutlined\r\n onClick={(e) => onExpand(record, e)}\r\n className={getLess(styles, \"expand-icon\")}\r\n />\r\n ) : record.childNodes &&\r\n record.childNodes?.length > 0 ? (\r\n <RightOutlined\r\n onClick={(e) => onExpand(record, e)}\r\n className={getLess(styles, \"expand-icon\")}\r\n />\r\n ) : null}\r\n </>\r\n );\r\n },\r\n ...expandable,\r\n }}\r\n columnOrder={true}\r\n onChange={(pagination) => {\r\n const { currentPage } = this.state;\r\n if (currentPage !== pagination.current) {\r\n this.setState({\r\n currentPage: pagination.current,\r\n });\r\n }\r\n }}\r\n toolbar={{\r\n onToolClick: {\r\n onRefresh: () => {\r\n const params = this.getSearchValues();\r\n this.tableLoad(params);\r\n },\r\n },\r\n ...tableProps.toolbar,\r\n }}\r\n showRowSelection={showRowSelection}\r\n {...tableParams}\r\n />\r\n </div>\r\n </div>\r\n {editorForm && (\r\n <EditorForm\r\n ref={this.editorRef}\r\n callBack={() => {\r\n this.props.onCallBacks?.onSumbitCallBack &&\r\n this.props.onCallBacks?.onSumbitCallBack();\r\n this.tableReload.bind(this);\r\n }}\r\n formProps={editorForms}\r\n submitUrl={submitUrl}\r\n submitParams={submitParams}\r\n onSubmit={this.props.onSubmit}\r\n defaultValue={defaultValue}\r\n onHideForm={this.props.onHideForm}\r\n onFormChange={this.props.onFormChange}\r\n formType={this.props.formType || \"auto\"}\r\n changeValid={formChangeValid}\r\n otherProps={{ ...formProps }}\r\n />\r\n )}\r\n </div>\r\n </div>\r\n );\r\n }\r\n}\r\nexport default BasePage;\r\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["React","PureComponent","Table","Tree","Button","Modal","Popover","message","EditorForm","cls","styles","utils","DownOutlined","EyeOutlined","EditOutlined","RightOutlined","PlusOutlined","EllipsisOutlined","DeleteOutlined","getLess","request","config","getStorage","HeaderSearch","BasePage","constructor","props","_type","_size","_defineProperty","createRef","checkedTreeKeys","name","userType","account","state","value","deptId","onSearch","selected","res","key","keys","length","storePrefix","type","content","size","selectedRowKeys","selectedRowDatas","treeSelectedKey","expand","formType","tableSize","treeSearchPrams","popopens","componentDidMount","initData","setSearchParams","params","callBack","_this$searchRef$curre","searchRef","current","doSubmit","data","_this$editorRef$curre","label","arguments","undefined","editorRef","showForm","_this$editorRef$curre2","editorflag","show","hideForm","_this$editorRef$curre3","setLoading","loading","_this$editorRef$curre4","setEditFormValues","_this$editorRef$curre5","setFieldsValue","getEditFormValues","_this$editorRef$curre6","getFieldsValue","onDelete","_this$tableRef$curren","deleteUrl","deleteParams","deletePosition","_this","tableRef","getSelectedRowKeys","warning","confirm","onOk","Error","defaultParams","method","autoPrefix","ids","join","id","requestParams","_objectSpread","then","code","_this$searchRef","_this$props$onCallBac","_this$props$onCallBac2","success","getSearchValues","onCallBacks","onDeleteCallBack","tableLoad","error","catch","console","log","_this$tableRef$curren2","requestConfig","store","load","onSearchCallBack","callback","tableReload","_this$tableRef$curren3","autoLoad","reload","_res$data","records","currentPage","_this$tableRef$curren4","_this$tableRef$curren5","getSelectedRowDatas","_this$tableRef$curren6","setSelectedRowKeys","_this$tableRef$curren7","setSelectedRowDatas","_this$tableRef$curren8","resetSelectedRowKeys","_this$tableRef$curren9","_this$searchRef2","fromValue","getChildrenData","tableProps","rowKey","resKey","childNodes","children","map","item","index","renderToolButtons","toolbuttons","marginflag","flag","showSearch","_item$props","pageType","onClick","icon","_objectWithoutProperties","_excluded","createElement","_extends","className","style","marginLeft","title","placement","trigger","renderCloumnButton","columnButtons","record","actionProps","baseActionColumn","newButtons","showIcon","_item$props2","recordShow","_excluded2","eval","push","_item$props3","_excluded3","setState","_item$props4","_excluded4","visible","onVisibleChange","visibale","treeSelect","selectedKeys","obj","_this$searchRef3","_this$props$onCallBac3","_this$props$onCallBac4","keyword","searchKey","searchField","parantSelect","treeProps","selectedNodes","dataref","attribute","isLeaf","onTreeSelect","treeSelectCallBack","resetSearch","_this$searchRef$curre2","resetFields","getText","text","_props$data","newText","i","setTableData","_this$tableRef$curren10","setData","setTreeData","_this$treeRef$current","treeRef","render","_tableProps$toolbar","_tableProps$toolbar2","columns","submitUrl","formProps","showLeft","submitParams","showToolButton","buttons","editorForm","onShowForm","formChangeValid","toolButtonPosition","filterColumn","actionColumn","showRowSelection","columnOrder","expandable","othertableParams","_excluded5","treeStore","treeSearch","titleAlias","othertreeParams","_excluded6","tableParams","tableColumn","searchForms","editorForms","defaultValue","_temp$search","_temp$props","_temp$props2","_temp","temp","search","_temp$search2","_temp$search3","_temp$search4","field","dataIndex","labelCol","wrapperCol","rules","searchRules","editor","span","dictName","_temp$props3","columnSearch","filterProps","tempProp","Fragment","ellipsis","columnShow","selfButtons","indexOf","bind","danger","Array","isArray","child","_child$props","_child$props2","_item$props5","_item$props6","align","textAlign","width","fixed","reacord","searchFlag","tableTool","toolFlag","toolbarFlag","toolbar","tools","pagination","scroll","x","pageTitle","display","checkable","searchable","onSelect","onReset","ref","searchFormProps","expandIcon","_ref","_record$childNodes","_record$childNodes2","expanded","onExpand","e","onChange","onToolClick","onRefresh","_this$props$onCallBac5","_this$props$onCallBac6","onSumbitCallBack","onSubmit","onHideForm","onFormChange","changeValid","otherProps"],"sources":["../../../src/components/page/BasePage/index.tsx"],"sourcesContent":["import React, { PureComponent, ReactNode } from \"react\";\r\nimport Table from \"../../base/table\";\r\nimport Tree from \"../../base/tree\";\r\nimport Form from \"../../base/form\";\r\nimport Button from \"../../base/button\";\r\nimport Modal from \"../../base/modal\";\r\nimport Popover from \"../../base/popover\";\r\nimport message from \"../../base/message\";\r\nimport Icon from \"../../base/common/IconFont\";\r\nimport { iconType } from \"../../constants\";\r\nimport EditorForm from \"./Form\";\r\nimport cls from \"classnames\";\r\nimport styles from \"./index.module.less\";\r\nimport Store, { PageStore, StoreProps } from \"@bj-nsc/msn\";\r\nimport Row from \"../../base/grid/Row\";\r\nimport { utils } from \"@bj-nsc/msn/lib/utils\";\r\nimport {\r\n DownOutlined,\r\n EyeOutlined,\r\n EditOutlined,\r\n RightOutlined,\r\n PlusOutlined,\r\n EllipsisOutlined,\r\n DeleteOutlined,\r\n} from \"@ant-design/icons\";\r\nimport { getLess, getNode } from \"../../utils\";\r\nimport request from \"nsc-request\";\r\nimport omit from \"omit.js\";\r\nimport config from \"../../config\";\r\nimport { getStorage } from \"@bj-nsc/functions\";\r\nimport { IFormProps } from \"../../base/form/Form\";\r\nimport HeaderSearch from \"../HeaderSearch\";\r\nimport { PaginationProps } from \"antd\";\r\ninterface TableProps {\r\n actionColumn?: boolean; //是否显示操作列\r\n store?: StoreProps;\r\n filterColumn?: boolean; //是否显示过滤按钮\r\n showRowSelection?: boolean; //是否表格勾选列\r\n pagination?: boolean | PaginationProps; //是否显示分页\r\n columnOrder?: boolean; //是否显示表格序列\r\n [propsName: string]: any;\r\n}\r\ninterface TreeProps {\r\n store?: StoreProps;\r\n showSearch?: boolean; //是否显示搜索框\r\n searchKey?: string; //搜索value对应的key\r\n searchField?: string; //查询对应的key\r\n titleAlias?: string; //树title对应的key,默认title\r\n nodePorps?: object;\r\n parantSelect?: boolean;\r\n [propsName: string]: any;\r\n}\r\ninterface FormProps extends IFormProps {}\r\ninterface NSCBaseBageProps {\r\n showSearch?: boolean; //是否显示头部搜索栏\r\n tableProps?: TableProps; //表格参数\r\n treeProps?: TreeProps; //左侧树参数\r\n submitParams?: Object; //添加参数,默认mothod:post, 参数通过data传递\r\n submitUrl?: string;\r\n onSubmit?: (value?: any, label?: any) => void;\r\n columns: Array<Object>;\r\n showLeft?: boolean; //是否显示左侧目录树\r\n showToolButton?: boolean; //是否显示按钮栏\r\n editorForm?: boolean; //是否需要表单功能 , 为false 编辑,查看,新增功能均不可用\r\n deleteUrl?: string; //删除url\r\n onDelete?: (selectedKeys?: Array<string>) => void; //删除参数,默认mothod:post, 参数通过ids拼接传递给后台\r\n deletePosition?: \"toolbar\" | \"row\";\r\n deleteParams?: Object;\r\n children?: React.ReactNode;\r\n onSearch?: (value?: any) => void;\r\n onReset?: () => void;\r\n initData?: any; //初始化回调函数,在componentDidMount中调用\r\n buttons?: Array<string>; //按钮集合 ['add','delete','search','editor']\r\n onShowForm?: (value?: any, editorFlag?: string) => void; //打开表单回调\r\n onHideForm?: () => void; //打开表单回调\r\n onFormChange?: (changedValues?: any, allValues?: any) => void; //表单onChange回调\r\n formType?: \"modal\" | \"drawer\";\r\n formChangeValid?: boolean; //表单校验\r\n className?: any;\r\n toolButtonPosition?: \"right\" | \"buttom\";\r\n pageTitle?: string | ReactNode;\r\n formProps?: FormProps;\r\n actionProps?: { textAlign?: string; showIcon?: boolean; width?: number };\r\n searchFormProps?: { wrapperCol?: any; labelCol?: any };\r\n onTreeSelect?: (value?: any, editorFlag?: string) => void; //打开表单回调\r\n onCallBacks?: {\r\n treeSelectCallBack?: any;\r\n onSearchCallBack?: any;\r\n onSumbitCallBack?: any;\r\n onDeleteCallBack?: any;\r\n };\r\n}\r\n\r\nclass BasePage extends PureComponent<NSCBaseBageProps, any> {\r\n tableRef = React.createRef<any>();\r\n treeRef = React.createRef<any>();\r\n searchRef = React.createRef<any>();\r\n editorRef = React.createRef<any>();\r\n dateFormat = {} as any;\r\n constructor(props: any) {\r\n super(props);\r\n let { storePrefix } = config();\r\n let type = getStorage(\r\n storePrefix ? storePrefix + \"-\" + \"formType\" : \"formType\"\r\n );\r\n type = type?.content;\r\n let size = getStorage(\r\n storePrefix ? storePrefix + \"-\" + \"tableSize\" : \"tableSize\"\r\n );\r\n size = size?.content;\r\n this.state = {\r\n type: \"add\",\r\n selectedRowKeys: [],\r\n selectedRowDatas: [],\r\n treeSelectedKey: \"\",\r\n expand: false,\r\n formType: type || \"modal\",\r\n tableSize: size || \"default\",\r\n treeSearchPrams: {},\r\n popopens: {},\r\n };\r\n }\r\n componentDidMount() {\r\n const { initData } = this.props;\r\n initData && initData();\r\n }\r\n\r\n setSearchParams(params, callBack) {\r\n this.searchRef.current?.setSearchParams(params);\r\n callBack && callBack(params);\r\n }\r\n doSubmit(data, label = \"编辑\") {\r\n this.editorRef.current?.doSubmit(data, label);\r\n }\r\n\r\n onSelect = (checkedTreeKeys: any) => {\r\n const { name, userType, account } = this.state;\r\n const value = { name, userType, account, deptId: checkedTreeKeys[0] };\r\n if (this.props.onSearch) {\r\n this.props.onSearch(value);\r\n }\r\n // this.tableLoad(value);\r\n };\r\n\r\n //显示表单\r\n showForm(value?: any, editorflag = \"add\") {\r\n this.editorRef.current?.show(value, editorflag);\r\n }\r\n\r\n //关闭表单\r\n hideForm() {\r\n this.editorRef.current?.hideForm();\r\n }\r\n\r\n setLoading(loading: boolean) {\r\n this.editorRef.current?.setLoading(loading);\r\n }\r\n\r\n setEditFormValues(value) {\r\n this.editorRef.current?.setFieldsValue(value);\r\n }\r\n\r\n getEditFormValues() {\r\n return this.editorRef.current?.getFieldsValue();\r\n }\r\n\r\n //批量删除\r\n onDelete(data?: any) {\r\n const {\r\n deleteUrl,\r\n onDelete,\r\n deleteParams,\r\n deletePosition = \"toolbar\",\r\n } = this.props;\r\n let _this = this;\r\n const selectedRowKeys = this.tableRef.current?.getSelectedRowKeys();\r\n if (deletePosition == \"toolbar\") {\r\n if (selectedRowKeys.length == 0) {\r\n message.warning(\"请选择要删除的数据!\");\r\n return;\r\n }\r\n }\r\n Modal.confirm({\r\n content: \"是否确认删除所选项?\",\r\n // centered:true,\r\n onOk: () => {\r\n if (onDelete) {\r\n onDelete &&\r\n onDelete(deletePosition == \"toolbar\" ? selectedRowKeys : data);\r\n return;\r\n }\r\n if (!deleteUrl) {\r\n throw new Error(\"url不能为空!\");\r\n }\r\n const defaultParams = {\r\n method: \"post\",\r\n autoPrefix: true,\r\n params: {\r\n ids: deletePosition == \"toolbar\" ? selectedRowKeys.join() : data.id,\r\n },\r\n };\r\n let requestParams = {} as any;\r\n if (defaultParams) {\r\n requestParams = { ...deleteParams };\r\n }\r\n requestParams = { ...defaultParams };\r\n request(deleteUrl, {\r\n ...requestParams,\r\n })\r\n .then(function (res: any) {\r\n const { code } = res;\r\n if (code === 200) {\r\n message.success(\"删除成功!\");\r\n let value = _this.searchRef?.current?.getSearchValues();\r\n _this.props.onCallBacks?.onDeleteCallBack &&\r\n _this.props.onCallBacks?.onDeleteCallBack();\r\n _this.tableLoad(value);\r\n } else {\r\n message.error(\"删除失败!\");\r\n }\r\n })\r\n .catch(function (error: any) {\r\n console.log(\"error\", error);\r\n });\r\n },\r\n });\r\n }\r\n tableLoad(params: any, requestConfig = {}) {\r\n this.tableRef.current?.store.load({\r\n ...requestConfig,\r\n params: params,\r\n });\r\n }\r\n //查询\r\n onSearch(params) {\r\n const { onSearch, onCallBacks } = this.props;\r\n if (onSearch) {\r\n onSearch({ ...params, ...this.state.treeSearchPrams });\r\n return;\r\n }\r\n this.tableLoad({ ...params, ...this.state.treeSearchPrams });\r\n onCallBacks?.onSearchCallBack &&\r\n utils.callback(onCallBacks?.onSearchCallBack, this, [params]);\r\n }\r\n //表格重新加载\r\n tableReload(params = {}, autoLoad = true) {\r\n this.tableRef.current?.store?.reload({\r\n callback: (res) => {\r\n if (\r\n autoLoad &&\r\n res?.data?.records?.length == 0 &&\r\n this.state.currentPage !== 1\r\n ) {\r\n this.tableRef.current?.store?.reload({\r\n params: { current: 1, ...params },\r\n });\r\n }\r\n },\r\n });\r\n }\r\n getSelectedRowKeys() {\r\n return this.tableRef.current?.getSelectedRowKeys();\r\n }\r\n getSelectedRowDatas() {\r\n return this.tableRef.current?.getSelectedRowDatas();\r\n }\r\n setSelectedRowKeys(data: Array<String | Number>) {\r\n return this.tableRef.current?.setSelectedRowKeys(data);\r\n }\r\n setSelectedRowDatas(data: Array<Object>) {\r\n return this.tableRef.current?.setSelectedRowDatas(data);\r\n }\r\n resetSelectedRowKeys() {\r\n return this.tableRef.current?.resetSelectedRowKeys();\r\n }\r\n\r\n getSearchValues() {\r\n const fromValue = this.searchRef?.current?.getSearchValues();\r\n return { ...fromValue, ...this.state.treeSearchPrams };\r\n }\r\n\r\n getChildrenData(data, keys = []) {\r\n const { tableProps } = this.props;\r\n const { rowKey = \"id\" } = tableProps;\r\n let resKey = [];\r\n if (data.childNodes) {\r\n const children = data.childNodes;\r\n children.map((item, index) => {\r\n if (item.childNodes) {\r\n this.getChildrenData(item.childNodes, keys);\r\n } else {\r\n resKey = [...keys, item[rowKey]];\r\n }\r\n });\r\n } else {\r\n resKey = [...keys, data[rowKey]];\r\n }\r\n return resKey;\r\n }\r\n\r\n renderToolButtons(toolbuttons: any, marginflag = false) {\r\n const flag = toolbuttons.length > 5;\r\n const { showSearch = true } = this.props;\r\n const content = toolbuttons.map((item: any, index: any) => {\r\n const { children, pageType, onClick, icon, show, ...params } = item.props;\r\n if (index > 3) {\r\n return (\r\n <div\r\n className={cls(\r\n getLess(styles, \"editor\"),\r\n getLess(styles, \"content-item\")\r\n )}\r\n key={index}\r\n onClick={() => {\r\n onClick && onClick();\r\n }}\r\n {...params}\r\n >\r\n <span className={getLess(styles, \"icon\")}>{icon}</span>\r\n <span className={getLess(styles, \"text\")}>{children}</span>\r\n </div>\r\n );\r\n }\r\n });\r\n return (\r\n <div\r\n className={cls(getLess(styles, \"tool-buttons\"), {\r\n [getLess(styles, \"tool-buttons-margin\")]: !showSearch || marginflag,\r\n })}\r\n style={{ marginLeft: 0 }}\r\n >\r\n {toolbuttons.map((item: any, index: any) => {\r\n if (flag) {\r\n if (index < 4) {\r\n return <div key={index}>{item}</div>;\r\n } else if (index == 4) {\r\n return (\r\n <Popover\r\n content={content}\r\n title={null}\r\n placement=\"bottom\"\r\n trigger={[\"click\"]}\r\n key={index}\r\n\r\n // overlayClassName={styles['pop-box']}\r\n >\r\n <Button type=\"primary\">\r\n 更多 <DownOutlined />\r\n </Button>\r\n </Popover>\r\n );\r\n } else {\r\n return null;\r\n }\r\n } else {\r\n return <div key={index}>{item}</div>;\r\n }\r\n })}\r\n </div>\r\n );\r\n }\r\n renderCloumnButton(columnButtons: any, record: any) {\r\n const { actionProps ,tableProps={}} = this.props;\r\n const { baseActionColumn } = config();\r\n const newButtons = [];\r\n let showIcon = true;\r\n const { rowKey = \"id\" } = tableProps;\r\n if (actionProps?.showIcon === false) showIcon = false;\r\n else if (baseActionColumn.showIcon === false) showIcon = false;\r\n columnButtons.map((item: any, index: any) => {\r\n const { children, pageType, onClick, icon, recordShow, ...params } =\r\n item.props;\r\n if (recordShow) {\r\n if (typeof recordShow == \"string\") {\r\n if (eval(recordShow)) {\r\n newButtons.push(item);\r\n }\r\n } else if (typeof recordShow == \"function\") {\r\n const show = recordShow(record);\r\n show && newButtons.push(item);\r\n }\r\n } else {\r\n newButtons.push(item);\r\n }\r\n });\r\n const flag = newButtons.length > 3;\r\n\r\n const content = newButtons.map((item: any, index: any) => {\r\n const { children, pageType, onClick, recordShow, icon, show, ...params } =\r\n item.props;\r\n if (index > 2) {\r\n return (\r\n <Button\r\n className={cls(\r\n getLess(styles, \"editor\"),\r\n getLess(styles, \"content-item\")\r\n )}\r\n key={index}\r\n onClick={() => {\r\n let data = {} as any;\r\n data[record.id] = false;\r\n this.setState({\r\n popopens: data,\r\n });\r\n onClick && onClick(record);\r\n }}\r\n type=\"link\"\r\n {...params}\r\n >\r\n {showIcon !== false && (\r\n <span className={getLess(styles, \"icon\")}>{icon}</span>\r\n )}\r\n <span className={getLess(styles, \"text\")}>{children}</span>\r\n </Button>\r\n );\r\n }\r\n });\r\n\r\n return newButtons.map((item: any, index: any) => {\r\n const { children, pageType, onClick, recordShow, icon, ...params } =\r\n item.props;\r\n if (flag) {\r\n if (index < 3) {\r\n return (\r\n <Button\r\n className={cls(getLess(styles, \"editor\"), {\r\n [getLess(styles, \"editor_first\")]: index === 0,\r\n })}\r\n key={index}\r\n onClick={() => {\r\n onClick && onClick(record);\r\n }}\r\n type=\"link\"\r\n {...params}\r\n >\r\n {showIcon !== false && (\r\n <span className={getLess(styles, \"icon\")}>{icon}</span>\r\n )}\r\n <span className={getLess(styles, \"text\")}>{children}</span>\r\n </Button>\r\n );\r\n } else if (index == 3) {\r\n return (\r\n <Popover\r\n placement=\"bottom\"\r\n title={null}\r\n content={content}\r\n trigger={[\"click\"]}\r\n key={index}\r\n visible={this.state.popopens[record[rowKey]] || false}\r\n onVisibleChange={(visibale) => {\r\n if (visibale) {\r\n let data = {} as any;\r\n data[record[rowKey]] = true;\r\n this.setState({\r\n popopens: data,\r\n });\r\n } else {\r\n this.setState({\r\n popopens: {},\r\n });\r\n }\r\n }}\r\n // overlayClassName={styles['pop']}\r\n >\r\n <a className={getLess(styles, \"editor\")}>\r\n <EllipsisOutlined />\r\n </a>\r\n </Popover>\r\n );\r\n } else {\r\n return null;\r\n }\r\n } else {\r\n return (\r\n <Button\r\n className={cls(getLess(styles, \"editor\"), {\r\n [getLess(styles, \"editor_first\")]: index === 0,\r\n })}\r\n key={index}\r\n onClick={() => {\r\n onClick && onClick(record);\r\n }}\r\n type=\"link\"\r\n {...params}\r\n >\r\n {showIcon !== false && (\r\n <span className={getLess(styles, \"icon\")}>{icon}</span>\r\n )}\r\n <span className={getLess(styles, \"text\")}>{children}</span>\r\n </Button>\r\n );\r\n }\r\n });\r\n // }\r\n }\r\n //树点击事件\r\n treeSelect(selectedKeys: any, obj: any) {\r\n let keyword = \"\";\r\n const {\r\n searchKey = \"key\",\r\n searchField = \"\",\r\n parantSelect = true,\r\n } = this.props.treeProps;\r\n const { treeSelectedKey } = this.state;\r\n const { selected, selectedNodes } = obj;\r\n\r\n if (selected) {\r\n keyword = selectedNodes[0].dataref.attribute[searchKey];\r\n if (parantSelect) {\r\n this.setState({\r\n treeSelectedKey: selectedKeys[0],\r\n treeSearchPrams: { [searchField]: keyword },\r\n });\r\n } else {\r\n if (selectedNodes[0].isLeaf || !selectedNodes[0].children) {\r\n if (selectedKeys[0] !== treeSelectedKey) {\r\n this.setState({\r\n treeSelectedKey: selectedKeys[0],\r\n treeSearchPrams: { [searchField]: keyword },\r\n });\r\n }\r\n }\r\n }\r\n } else {\r\n this.setState({\r\n treeSelectedKey: keyword,\r\n treeSearchPrams: {},\r\n });\r\n }\r\n if (this.props.onTreeSelect) {\r\n this.props.onTreeSelect(selectedKeys, obj);\r\n return;\r\n }\r\n const fromValue = this.searchRef?.current?.getSearchValues() || {};\r\n searchField && this.tableLoad({ ...fromValue, [searchField]: keyword });\r\n this.props.onCallBacks?.treeSelectCallBack &&\r\n utils.callback(this.props.onCallBacks?.treeSelectCallBack, this, [\r\n selectedKeys,\r\n obj,\r\n ]);\r\n }\r\n resetSearch() {\r\n this.searchRef.current?.resetFields();\r\n }\r\n getText(props, text) {\r\n let newText = text;\r\n if (props?.data && props?.data?.length > 0) {\r\n let data = props.data;\r\n for (let i = 0; i < data?.length; i++) {\r\n if (data[i].value == text) {\r\n newText = data[i].label;\r\n }\r\n }\r\n }\r\n return newText;\r\n }\r\n setTableData(data) {\r\n this.tableRef.current?.store?.setData(data);\r\n }\r\n setTreeData(data) {\r\n this.treeRef.current?.store?.setData(data);\r\n }\r\n getSelectedKey = (selected) => {\r\n let res = [];\r\n for (let key in selected) {\r\n const keys = selected[key];\r\n if (keys.length > 0) {\r\n res = [...res, ...keys];\r\n }\r\n }\r\n return res;\r\n };\r\n\r\n render() {\r\n const {\r\n columns = [],\r\n showSearch = true,\r\n children,\r\n submitUrl = \"\",\r\n tableProps = {},\r\n treeProps = {},\r\n formProps = {},\r\n showLeft = false,\r\n submitParams = {},\r\n showToolButton = true,\r\n buttons = [],\r\n editorForm = true,\r\n onShowForm,\r\n formChangeValid = true,\r\n className,\r\n toolButtonPosition = \"buttom\",\r\n actionProps,\r\n deletePosition = \"toolbar\",\r\n } = this.props;\r\n const {\r\n store,\r\n filterColumn = true,\r\n actionColumn = true,\r\n showRowSelection = true,\r\n columnOrder = true,\r\n expandable = {},\r\n parantSelect = true,\r\n ...othertableParams\r\n } = tableProps;\r\n\r\n const {\r\n store: treeStore = {},\r\n showSearch: treeSearch = true,\r\n titleAlias = \"title\",\r\n ...othertreeParams\r\n } = treeProps;\r\n\r\n let tableParams = { filterColumn, store, ...othertableParams } as any;\r\n let tableColumn: any[] = [];\r\n const searchForms: any = [];\r\n const editorForms: any = [];\r\n const defaultValue: any = {};\r\n const columnButtons: any = [];\r\n columns.map((item: any) => {\r\n let temp = { ...item };\r\n if (temp.search === true || temp.search?.show === true) {\r\n searchForms.push({\r\n name: temp.field || temp.dataIndex,\r\n label: temp.search?.label || temp.title,\r\n type: temp.type,\r\n props: temp.props,\r\n labelCol: temp.search?.labelCol,\r\n wrapperCol: temp.search?.wrapperCol,\r\n rules: temp.searchRules ? temp.searchRules : [],\r\n });\r\n }\r\n\r\n delete temp.search;\r\n temp.editor !== false &&\r\n editorForms.push({\r\n name: temp.field || temp.dataIndex,\r\n label: temp.title,\r\n rules: temp.rules ? temp.rules : [],\r\n type: temp.type,\r\n span: temp.span,\r\n dictName: temp.dictName,\r\n props: { ...temp.props },\r\n });\r\n\r\n if (\r\n temp.props?.defaultValue !== undefined &&\r\n temp.props?.defaultValue !== null\r\n ) {\r\n const name = temp.field || temp.dataIndex;\r\n defaultValue[name] = temp.props?.defaultValue;\r\n }\r\n delete temp.rules;\r\n delete temp.span;\r\n if (temp.columnSearch) {\r\n temp.filterProps = {\r\n type: temp.type,\r\n props: temp.props,\r\n };\r\n }\r\n delete temp.type;\r\n let tempProp = { ...temp.props };\r\n if (temp.style) {\r\n temp = {\r\n render: (text: any) => {\r\n return (\r\n <>\r\n {text !== \"\" && text !== null && text !== undefined && (\r\n <div className={getLess(styles, \"col-back\")}>\r\n <span className={getLess(styles, \"col-text\")}>\r\n {this.getText(tempProp, text)}\r\n </span>\r\n </div>\r\n )}\r\n </>\r\n );\r\n },\r\n ...temp,\r\n };\r\n } else if (!temp.ellipsis) {\r\n temp = {\r\n render: (text: any) => {\r\n return <>{this.getText(tempProp, text)}</>;\r\n },\r\n ...temp,\r\n };\r\n } else {\r\n temp = { ...temp };\r\n }\r\n delete temp.props;\r\n if (temp?.columnShow !== false) tableColumn.push(temp);\r\n });\r\n const selfButtons: any = [];\r\n const { baseActionColumn } = config();\r\n let showIcon = true;\r\n if (actionProps?.showIcon === false) showIcon = false;\r\n else if (baseActionColumn.showIcon === false) showIcon = false;\r\n if (editorForm == true) {\r\n if (buttons.indexOf(\"search\") > -1) {\r\n columnButtons.push(\r\n <Button\r\n onClick={(record: any) => {\r\n if (onShowForm) {\r\n onShowForm(record.attribute || record, \"detail\");\r\n return;\r\n }\r\n this.showForm(record.attribute || record, \"detail\");\r\n }}\r\n icon={<EyeOutlined />}\r\n >\r\n 查看\r\n </Button>\r\n );\r\n }\r\n if (buttons.indexOf(\"editor\") > -1) {\r\n columnButtons.push(\r\n <Button\r\n onClick={(record: any) => {\r\n if (onShowForm) {\r\n onShowForm(record.attribute || record, \"editor\");\r\n return;\r\n }\r\n this.showForm(record.attribute || record, \"editor\");\r\n }}\r\n icon={<EditOutlined />}\r\n >\r\n 编辑\r\n </Button>\r\n );\r\n }\r\n }\r\n if (buttons.indexOf(\"add\") > -1) {\r\n selfButtons.push(\r\n <Button\r\n type={\"primary\"}\r\n onClick={() => {\r\n const { onShowForm } = this.props;\r\n if (onShowForm) {\r\n onShowForm();\r\n return;\r\n }\r\n this.showForm();\r\n }}\r\n icon={<PlusOutlined />}\r\n >\r\n 添加\r\n </Button>\r\n );\r\n }\r\n if (buttons.indexOf(\"delete\") > -1) {\r\n if (deletePosition == \"toolbar\") {\r\n selfButtons.push(\r\n <Button\r\n // type={\"primary\"}\r\n onClick={this.onDelete.bind(this)}\r\n icon={<DeleteOutlined />}\r\n danger\r\n >\r\n 删除\r\n </Button>\r\n );\r\n } else if (deletePosition == \"row\") {\r\n columnButtons.push(\r\n <Button\r\n // type={\"primary\"}\r\n onClick={(record: any) => {\r\n this.onDelete(record);\r\n }}\r\n icon={<DeleteOutlined />}\r\n danger\r\n >\r\n 删除\r\n </Button>\r\n );\r\n }\r\n }\r\n if (Array.isArray(children)) {\r\n children.map((item: any) => {\r\n if (Array.isArray(item)) {\r\n item.map((child) => {\r\n if (child?.props?.pageType == \"toolButton\") {\r\n selfButtons.push(child);\r\n } else if (child?.props?.pageType == \"cloumnButton\") {\r\n columnButtons.push(child);\r\n }\r\n });\r\n } else {\r\n if (item?.props?.pageType == \"toolButton\") {\r\n selfButtons.push(item);\r\n } else if (item?.props?.pageType == \"cloumnButton\") {\r\n columnButtons.push(item);\r\n }\r\n }\r\n });\r\n } else if (children) {\r\n const { props }: any = children;\r\n if (props?.pageType == \"toolButton\") {\r\n selfButtons.push(children);\r\n } else if (props?.pageType == \"cloumnButton\") {\r\n columnButtons.push(children);\r\n }\r\n }\r\n actionColumn &&\r\n tableColumn.push({\r\n title: \"操作\",\r\n dataIndex: \"action\",\r\n align: actionProps?.textAlign\r\n ? actionProps?.textAlign\r\n : baseActionColumn.textAlign\r\n ? baseActionColumn.textAlign\r\n : \"center\",\r\n width: actionProps?.width\r\n ? actionProps?.width\r\n : baseActionColumn.width\r\n ? baseActionColumn.width\r\n : 200,\r\n fixed: \"right\",\r\n render: (text: any, record: any) => {\r\n return (\r\n <div className={getLess(styles, \"action\")}>\r\n {this.renderCloumnButton(columnButtons, record)}\r\n </div>\r\n );\r\n },\r\n });\r\n if (columnOrder)\r\n tableColumn = [\r\n {\r\n title: \"序号\",\r\n width: 80,\r\n align: \"center\",\r\n render: (text, reacord, index) => {\r\n return <>{index + 1}</>;\r\n },\r\n },\r\n ...tableColumn,\r\n ];\r\n let searchFlag = showSearch && searchForms.length > 0;\r\n let { tableTool } = config();\r\n let toolFlag = showToolButton && selfButtons.length > 0;\r\n let toolbarFlag = !(\r\n tableProps.toolbar == false ||\r\n tableProps.toolbar?.show == false ||\r\n tableProps.toolbar?.tools?.length == 0 ||\r\n tableTool?.show == false\r\n );\r\n if (tableProps.pagination !== false) {\r\n const scroll = tableParams.scroll;\r\n tableParams = {\r\n ...tableParams,\r\n scroll: { x: \"max-content\", ...scroll },\r\n };\r\n }\r\n\r\n return (\r\n <div className={cls(getLess(styles, \"page\"), className)}>\r\n {this.props.pageTitle && (\r\n <div className={cls(getLess(styles, \"page-title\"))}>\r\n {this.props.pageTitle}\r\n </div>\r\n )}\r\n <div\r\n className={cls(getLess(styles, \"page-pane\"))}\r\n style={{ display: \"flex\" }}\r\n >\r\n {showLeft && (\r\n <div className={getLess(styles, \"left\")}>\r\n <Tree\r\n store={{ ...treeStore }}\r\n showIcon={false}\r\n checkable={false}\r\n searchable={treeSearch}\r\n onSelect={this.treeSelect.bind(this)}\r\n selectedKeys={[this.state.treeSelectedKey]}\r\n titleAlias={titleAlias}\r\n {...othertreeParams}\r\n />\r\n </div>\r\n )}\r\n <div\r\n className={cls(getLess(styles, \"right\"), {\r\n [getLess(styles, \"no-left-right\")]: !showLeft,\r\n })}\r\n >\r\n {showSearch && searchForms.length > 0 && (\r\n <HeaderSearch\r\n searchForms={searchForms}\r\n toolButtonPosition={toolButtonPosition}\r\n onSearch={this.onSearch.bind(this)}\r\n onReset={this.props.onReset}\r\n ref={this.searchRef}\r\n searchFormProps={this.props.searchFormProps}\r\n />\r\n )}\r\n\r\n {showToolButton &&\r\n selfButtons.length > 0 &&\r\n toolButtonPosition == \"buttom\" &&\r\n this.renderToolButtons(selfButtons, searchForms.length == 0)}\r\n <div\r\n className={cls(\r\n getLess(styles, \"table\"),\r\n {\r\n [getLess(styles, \"table-top\")]:\r\n (searchFlag && !toolFlag) || !toolbarFlag,\r\n },\r\n {\r\n [getLess(styles, \"table-top2\")]: !searchFlag && !toolFlag,\r\n }\r\n )}\r\n >\r\n <Table\r\n ref={this.tableRef}\r\n columns={tableColumn}\r\n expandable={{\r\n expandIcon: ({ expanded, onExpand, record }) => {\r\n return (\r\n <>\r\n {expanded &&\r\n record.childNodes &&\r\n record.childNodes?.length > 0 ? (\r\n <DownOutlined\r\n onClick={(e) => onExpand(record, e)}\r\n className={getLess(styles, \"expand-icon\")}\r\n />\r\n ) : record.childNodes &&\r\n record.childNodes?.length > 0 ? (\r\n <RightOutlined\r\n onClick={(e) => onExpand(record, e)}\r\n className={getLess(styles, \"expand-icon\")}\r\n />\r\n ) : null}\r\n </>\r\n );\r\n },\r\n ...expandable,\r\n }}\r\n columnOrder={true}\r\n onChange={(pagination) => {\r\n const { currentPage } = this.state;\r\n if (currentPage !== pagination.current) {\r\n this.setState({\r\n currentPage: pagination.current,\r\n });\r\n }\r\n }}\r\n toolbar={{\r\n onToolClick: {\r\n onRefresh: () => {\r\n const params = this.getSearchValues();\r\n this.tableLoad(params);\r\n },\r\n },\r\n ...tableProps.toolbar,\r\n }}\r\n showRowSelection={showRowSelection}\r\n {...tableParams}\r\n />\r\n </div>\r\n </div>\r\n {editorForm && (\r\n <EditorForm\r\n ref={this.editorRef}\r\n callBack={() => {\r\n this.props.onCallBacks?.onSumbitCallBack &&\r\n this.props.onCallBacks?.onSumbitCallBack();\r\n this.tableReload.bind(this);\r\n }}\r\n formProps={editorForms}\r\n submitUrl={submitUrl}\r\n submitParams={submitParams}\r\n onSubmit={this.props.onSubmit}\r\n defaultValue={defaultValue}\r\n onHideForm={this.props.onHideForm}\r\n onFormChange={this.props.onFormChange}\r\n formType={this.props.formType || \"auto\"}\r\n changeValid={formChangeValid}\r\n otherProps={{ ...formProps }}\r\n />\r\n )}\r\n </div>\r\n </div>\r\n );\r\n }\r\n}\r\nexport default BasePage;\r\n"],"mappings":"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","ignoreList":[]}
@@ -28,6 +28,7 @@
28
28
  }
29
29
  .search-buttons {
30
30
  display: flex;
31
+ margin-bottom: 16px;
31
32
 
32
33
  .margin {
33
34
  margin-left: 20px;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "nsc-react-component",
3
- "version": "2.14.9",
3
+ "version": "2.14.11",
4
4
  "main": "lib/index.js",
5
5
  "scripts": {
6
6
  "compile": "webpack --config ./webpack.config.js",