nsc-react-component 4.3.12 → 4.3.14

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.
@@ -102,7 +102,8 @@ class BasePage extends PureComponent {
102
102
  tableHeaderHeight: 0,
103
103
  // 添加表头高度到state
104
104
  buttonsLoading: {},
105
- treeWidth: this.props.showLeft ? 260 : 0
105
+ treeWidth: this.props.showLeft ? 260 : 0,
106
+ defatultButton: ["add", "delete", "search", "editor", "delete_batch"]
106
107
  };
107
108
  }
108
109
  componentDidMount() {
@@ -762,17 +763,7 @@ class BasePage extends PureComponent {
762
763
  funcs: this.props.funcs,
763
764
  pageRef: this.props.pageRef
764
765
  });
765
- // if (queryParams && typeof queryParams == "string") {
766
- // const Utils = this.props.Utils || {};
767
- // let func = new Function("Utils", queryParams);
768
- // let converParams = func(Utils);
769
- // queryParams = converParams;
770
- // } else {
771
- // queryParams = queryParams || {};
772
- // }
773
- // return queryParams;
774
766
  }
775
-
776
767
  // 优化拖拽相关方法
777
768
  handleMouseDown(e) {
778
769
  e.preventDefault();
@@ -916,6 +907,7 @@ class BasePage extends PureComponent {
916
907
  var _buttonMap$code;
917
908
  let show = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "";
918
909
  let defaultProps = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
910
+ let name = arguments.length > 3 ? arguments[3] : undefined;
919
911
  let props = _objectSpread({
920
912
  icon: showIcon ? buttonMap[code].icon : null,
921
913
  type: "link"
@@ -960,7 +952,7 @@ class BasePage extends PureComponent {
960
952
  });
961
953
  }
962
954
  }
963
- }, props), (_buttonMap$code = buttonMap[code]) === null || _buttonMap$code === void 0 ? void 0 : _buttonMap$code.name);
955
+ }, props), name || ((_buttonMap$code = buttonMap[code]) === null || _buttonMap$code === void 0 ? void 0 : _buttonMap$code.name));
964
956
  };
965
957
  const checkPerssion = code => {
966
958
  if (!permission.has) {
@@ -970,45 +962,47 @@ class BasePage extends PureComponent {
970
962
  }
971
963
  };
972
964
  buttons.map(item => {
973
- if ((item == "add" || item.code == "add") && checkPerssion("add")) {
974
- toolButtons.push( /*#__PURE__*/React.createElement(Button, {
975
- type: "primary",
976
- onClick: () => {
977
- const {
978
- onShowForm,
979
- buttonClick = {}
980
- } = this.props;
981
- if (buttonClick !== null && buttonClick !== void 0 && buttonClick.onAdd) {
982
- converFunction(buttonClick.onAdd, {
983
- pageRef: this.props.pageRef,
984
- funcs: this.props.funcs
985
- }, this.props.Utils);
986
- return;
987
- }
988
- if (onShowForm) {
989
- onShowForm(null, "add");
990
- return;
991
- }
992
- this.showForm(null, null, () => {
993
- var _this$props$onCallBac8, _this$props$onCallBac9;
994
- ((_this$props$onCallBac8 = this.props.onCallBacks) === null || _this$props$onCallBac8 === void 0 ? void 0 : _this$props$onCallBac8.onAddCallBack) && converFunction((_this$props$onCallBac9 = this.props.onCallBacks) === null || _this$props$onCallBac9 === void 0 ? void 0 : _this$props$onCallBac9.onAddCallBack, {
995
- pageRef: this.props.pageRef,
996
- funcs: this.props.funcs
997
- }, this.props.Utils);
998
- });
999
- },
1000
- icon: /*#__PURE__*/React.createElement(PlusOutlined, null)
1001
- }, "\u6DFB\u52A0"));
1002
- } else if ((item == "delete_batch" || item.code == "delete_batch") && checkPerssion("delete_batch")) {
1003
- toolButtons.push( /*#__PURE__*/React.createElement(Button, {
1004
- type: "primary",
1005
- onClick: this.onDelete.bind(this, null, "toolbar"),
1006
- icon: /*#__PURE__*/React.createElement(DeleteOutlined, null),
1007
- danger: true
1008
- }, "\u6279\u91CF\u5220\u9664"));
1009
- } else {
1010
- if (checkPerssion(item.code ? item.code : item)) {
1011
- columnButtons.push(returnButton(item.code ? item.code : item, item.recordShow, item.props || {}));
965
+ if (this.state.defatultButton.indexOf(item) > -1 || this.state.defatultButton.indexOf(item.code) > -1) {
966
+ if ((item == "add" || item.code == "add") && checkPerssion("add")) {
967
+ toolButtons.push( /*#__PURE__*/React.createElement(Button, _extends({
968
+ type: "primary",
969
+ onClick: () => {
970
+ const {
971
+ onShowForm,
972
+ buttonClick = {}
973
+ } = this.props;
974
+ if (buttonClick !== null && buttonClick !== void 0 && buttonClick.onAdd) {
975
+ converFunction(buttonClick.onAdd, {
976
+ pageRef: this.props.pageRef,
977
+ funcs: this.props.funcs
978
+ }, this.props.Utils);
979
+ return;
980
+ }
981
+ if (onShowForm) {
982
+ onShowForm(null, "add");
983
+ return;
984
+ }
985
+ this.showForm(null, null, () => {
986
+ var _this$props$onCallBac8, _this$props$onCallBac9;
987
+ ((_this$props$onCallBac8 = this.props.onCallBacks) === null || _this$props$onCallBac8 === void 0 ? void 0 : _this$props$onCallBac8.onAddCallBack) && converFunction((_this$props$onCallBac9 = this.props.onCallBacks) === null || _this$props$onCallBac9 === void 0 ? void 0 : _this$props$onCallBac9.onAddCallBack, {
988
+ pageRef: this.props.pageRef,
989
+ funcs: this.props.funcs
990
+ }, this.props.Utils);
991
+ });
992
+ },
993
+ icon: /*#__PURE__*/React.createElement(PlusOutlined, null)
994
+ }, item.props), item.name || "添加"));
995
+ } else if ((item == "delete_batch" || item.code == "delete_batch") && checkPerssion("delete_batch")) {
996
+ toolButtons.push( /*#__PURE__*/React.createElement(Button, _extends({
997
+ type: "primary",
998
+ onClick: this.onDelete.bind(this, null, "toolbar"),
999
+ icon: /*#__PURE__*/React.createElement(DeleteOutlined, null),
1000
+ danger: true
1001
+ }, item.props), item.name || "批量删除"));
1002
+ } else {
1003
+ if (checkPerssion(item.code ? item.code : item)) {
1004
+ columnButtons.push(returnButton(item.code ? item.code : item, item.recordShow, item.props || {}, item.name));
1005
+ }
1012
1006
  }
1013
1007
  }
1014
1008
  });
@@ -1251,4 +1245,4 @@ class BasePage extends PureComponent {
1251
1245
  }
1252
1246
  _defineProperty(BasePage, "convertColumns", convertColumns);
1253
1247
  export default BasePage;
1254
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsIlB1cmVDb21wb25lbnQiLCJUYWJsZSIsIlRyZWUiLCJCdXR0b24iLCJNb2RhbCIsIlBvcG92ZXIiLCJtZXNzYWdlIiwiRWRpdG9yRm9ybSIsImNscyIsIkRvd25PdXRsaW5lZCIsIkV5ZU91dGxpbmVkIiwiRWRpdE91dGxpbmVkIiwiUmlnaHRPdXRsaW5lZCIsIlBsdXNPdXRsaW5lZCIsIkVsbGlwc2lzT3V0bGluZWQiLCJEZWxldGVPdXRsaW5lZCIsImNvbnZlckZ1bmN0aW9uIiwiZ2V0TGVzcyIsInJlcXVlc3QiLCJjb25maWciLCJnZXRCdXR0b25QZXJtaXNzb25zIiwiSGVhZGVyU2VhcmNoIiwiY29udmVydENvbHVtbnMiLCJnZXROZXdDb2x1bW5zIiwidGhyb3R0bGUiLCJjb252ZXJ0U3RyaW5nVG9PYmoiLCJzdHlsZXMiLCJCYXNlUGFnZSIsImNvbnN0cnVjdG9yIiwicHJvcHMiLCJfZGVmaW5lUHJvcGVydHkiLCJjcmVhdGVSZWYiLCJjaGVja2VkVHJlZUtleXMiLCJuYW1lIiwidXNlclR5cGUiLCJhY2NvdW50Iiwic3RhdGUiLCJ2YWx1ZSIsImRlcHRJZCIsIm9uU2VhcmNoIiwic2VsZWN0ZWQiLCJyZXMiLCJrZXkiLCJrZXlzIiwibGVuZ3RoIiwidGFibGVXcmFwcGVyUmVmIiwiY3VycmVudCIsInRhYmxlSGVhZGVyIiwiZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSIsImhlYWRlckhlaWdodCIsImdldEJvdW5kaW5nQ2xpZW50UmVjdCIsImhlaWdodCIsInRhYmxlSGVhZGVySGVpZ2h0Iiwic2V0U3RhdGUiLCJjYWxjdWxhdGVUYWJsZUhlYWRlckhlaWdodCIsInR5cGUiLCJzZWxlY3RlZFJvd0tleXMiLCJzZWxlY3RlZFJvd0RhdGFzIiwidHJlZVNlbGVjdGVkS2V5IiwiZXhwYW5kIiwidHJlZVNlYXJjaFByYW1zIiwicG9wb3BlbnMiLCJtb3JlT3BlbiIsImVsZW1lbnRIZWlnaHQiLCJwZXJtaXNzaW9uQnV0dG9ucyIsInF1ZXJ5UGFyYW1zIiwiYnV0dG9uc0xvYWRpbmciLCJ0cmVlV2lkdGgiLCJzaG93TGVmdCIsImNvbXBvbmVudERpZE1vdW50IiwiX3RoaXMkcGFnZVJlZiRjdXJyZW50IiwiaW5pdERhdGEiLCJwZXJtaXNzb24iLCJwYWdlUmVmIiwiY2xpZW50SGVpZ2h0Iiwid2luZG93IiwiYWRkRXZlbnRMaXN0ZW5lciIsInRocm90dGxlQ2FsY3VsYXRlVGFibGVIZWFkZXJIZWlnaHQiLCJzZXRUaW1lb3V0IiwiY29tcG9uZW50RGlkVXBkYXRlIiwicHJldlByb3BzIiwiX3RoaXMkcGFnZVJlZiRjdXJyZW50MiIsImNvbXBvbmVudFdpbGxVbm1vdW50IiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsInNldFNlYXJjaFBhcmFtcyIsInBhcmFtcyIsImNhbGxCYWNrIiwiX3RoaXMkc2VhcmNoUmVmJGN1cnJlIiwic2VhcmNoUmVmIiwiZG9TdWJtaXQiLCJkYXRhIiwiX3RoaXMkZWRpdG9yUmVmJGN1cnJlIiwibGFiZWwiLCJhcmd1bWVudHMiLCJ1bmRlZmluZWQiLCJlZGl0b3JSZWYiLCJzaG93Rm9ybSIsIl90aGlzJHByb3BzJGZvcm1QYWdlUCIsImVkaXRvcmZsYWciLCJmb3JtUGFnZVByb3BzIiwiZm9ybVR5cGUiLCJfdGhpcyRwcm9wcyRmb3JtUGFnZVAyIiwiZnVuY3MiLCJwYXRobmFtZSIsImNvbmNhdCIsInRhYmxlQ29kZSIsImlkIiwiaGlzdG9yeSIsInNlcnZpY2VOYW1lIiwic2VydmljZVBhdGgiLCJEYXRlIiwiZ2V0VGltZSIsInRpdGxlIiwiX3RoaXMkZWRpdG9yUmVmIiwibmV3VmFsdWUiLCJfb2JqZWN0U3ByZWFkIiwic2hvdyIsImhpZGVGb3JtIiwiX3RoaXMkZWRpdG9yUmVmJGN1cnJlMiIsInNldExvYWRpbmciLCJsb2FkaW5nIiwiX3RoaXMkZWRpdG9yUmVmJGN1cnJlMyIsInNldEVkaXRGb3JtVmFsdWVzIiwiX3RoaXMkZWRpdG9yUmVmJGN1cnJlNCIsInNldEZvcm1WYWx1ZSIsImdldEVkaXRGb3JtVmFsdWVzIiwiX3RoaXMkZWRpdG9yUmVmJGN1cnJlNSIsImdldEZvcm1WYWx1ZSIsIm9uRGVsZXRlIiwiX3RoaXMkdGFibGVSZWYkY3VycmVuIiwiX3RoaXMkdGFibGVSZWYkY3VycmVuMiIsImRlbGV0ZVBvc2l0aW9uIiwiZGVsZXRlVXJsIiwiZGVsZXRlUGFyYW1zIiwiYnV0dG9uQ2xpY2siLCJyZXF1ZXN0UGFyYW1zIiwicmVxdWVzdFVybHMiLCJyZXF1ZXN0Q29uZmlnIiwiX3RoaXMiLCJ0YWJsZVJlZiIsImdldFNlbGVjdGVkUm93S2V5cyIsImdldFNlbGVjdGVkUm93RGF0YXMiLCJ1cmwiLCJ3YXJuaW5nIiwiY29uZmlybSIsImNvbnRlbnQiLCJvbk9rIiwicmVjb3JkIiwiaWRzIiwiVXRpbHMiLCJFcnJvciIsImRhdGFQYXJhbXMiLCJvdGhlclBhcmFtcyIsIl9vYmplY3RXaXRob3V0UHJvcGVydGllcyIsIl9leGNsdWRlZCIsImRlZmF1bHRQYXJhbXMiLCJtZXRob2QiLCJhdXRvUHJlZml4Iiwiam9pbiIsImZpbmFsUGFyYW1zIiwidGhlbiIsImNvZGUiLCJfdGhpcyRzZWFyY2hSZWYiLCJfdGhpcyRwcm9wcyRvbkNhbGxCYWMiLCJfdGhpcyRwcm9wcyRvbkNhbGxCYWMyIiwic3VjY2VzcyIsImdldFNlYXJjaFZhbHVlcyIsIm9uQ2FsbEJhY2tzIiwib25EZWxldGVDYWxsQmFjayIsInRhYmxlTG9hZCIsIm1zZyIsImVycm9yIiwiY2F0Y2giLCJjb25zb2xlIiwibG9nIiwiX3RhYmxlU3RvcmUkcmVxdWVzdENvIiwiX3RoaXMkdGFibGVSZWYkY3VycmVuMyIsImRlZmF1bHRSZXF1ZXN0Q29uZmlnIiwidGFibGVQcm9wcyIsInN0b3JlIiwidGFibGVTdG9yZSIsImNvbnZlcnRRdWVyeVBhcmFtcyIsInJlcXVlc3RDb25pZyIsInN0b3JlQ29uZmlnIiwic3RvcmVQYXJhbXMiLCJvdGhlclN0b3JlQ29uZmlnIiwiX2V4Y2x1ZGVkMiIsImxvYWQiLCJfdGFibGVTdG9yZSRyZXF1ZXN0Q28yIiwiX3RoaXMkcHJvcHMkb25DYWxsQmFjMyIsIm9uUXVlcnlDYWxsQmFjayIsInRhYmxlUmVsb2FkIiwiX3RoaXMkdGFibGVSZWYkY3VycmVuNCIsImF1dG9Mb2FkIiwicmVsb2FkIiwiY2FsbGJhY2siLCJfcmVzJGRhdGEiLCJyZWNvcmRzIiwiY3VycmVudFBhZ2UiLCJfdGhpcyR0YWJsZVJlZiRjdXJyZW41IiwidHJlZUxvYWQiLCJfdGhpcyR0cmVlUmVmJGN1cnJlbnQiLCJ0cmVlUmVmIiwiX3RoaXMkdGFibGVSZWYkY3VycmVuNiIsIl90aGlzJHRhYmxlUmVmJGN1cnJlbjciLCJzZXRTZWxlY3RlZFJvd0tleXMiLCJfdGhpcyR0YWJsZVJlZiRjdXJyZW44Iiwic2V0U2VsZWN0ZWRSb3dEYXRhcyIsIl90aGlzJHRhYmxlUmVmJGN1cnJlbjkiLCJyZXNldFNlbGVjdGVkUm93S2V5cyIsIl90aGlzJHRhYmxlUmVmJGN1cnJlbjEwIiwiX3RoaXMkc2VhcmNoUmVmMiIsImZyb21WYWx1ZSIsImdldENoaWxkcmVuRGF0YSIsInJvd0tleSIsInJlc0tleSIsImNoaWxkTm9kZXMiLCJjaGlsZHJlbiIsIm1hcCIsIml0ZW0iLCJpbmRleCIsInJlbmRlclRvb2xCdXR0b25zIiwidG9vbGJ1dHRvbnMiLCJ0b29sYmFyRmxhZyIsImZsYWciLCJzaG93U2VhcmNoIiwiX2l0ZW0kcHJvcHMiLCJwYWdlVHlwZSIsIm9uQ2xpY2siLCJpY29uIiwiX2V4Y2x1ZGVkMyIsImNyZWF0ZUVsZW1lbnQiLCJjbGFzc05hbWUiLCJfZXh0ZW5kcyIsInN0eWxlIiwibWFyZ2luTGVmdCIsIm1hcmdpblJpZ2h0IiwicGxhY2VtZW50Iiwib3BlbiIsIm9uT3BlbkNoYW5nZSIsInJlbmRlckNsb3VtbkJ1dHRvbiIsImNvbHVtbkJ1dHRvbnMiLCJyb3dSZWNvcmQiLCJhY3Rpb25Qcm9wcyIsImJhc2VBY3Rpb25Db2x1bW4iLCJuZXdCdXR0b25zIiwic2hvd0ljb24iLCJfaXRlbSRwcm9wczIiLCJyZWNvcmRTaG93IiwiX2V4Y2x1ZGVkNCIsImV2ZW50T3B0aW9uIiwiVWl0bHMiLCJmdW5jIiwiRnVuY3Rpb24iLCJwdXNoIiwiZSIsImV2YWwiLCJudW1iZXIiLCJidXR0b25OdW1iZXIiLCJfaXRlbSRwcm9wczMiLCJfZXhjbHVkZWQ1IiwiTnVtYmVyIiwiX2l0ZW0kcHJvcHM0IiwiX2V4Y2x1ZGVkNiIsInRyaWdnZXIiLCJ0cmVlU2VsZWN0Iiwic2VsZWN0ZWRLZXlzIiwib2JqIiwiX3RoaXMkc2VhcmNoUmVmMyIsIl90aGlzJHByb3BzJG9uQ2FsbEJhYzQiLCJfdGhpcyRwcm9wcyRvbkNhbGxCYWM1Iiwia2V5d29yZCIsInNlYXJjaEtleSIsInNlYXJjaEZpZWxkIiwicGFyYW50U2VsZWN0IiwidHJlZVByb3BzIiwic2VsZWN0ZWROb2RlcyIsImRhdGFyZWYiLCJhdHRyaWJ1dGUiLCJpc0xlYWYiLCJvblRyZWVTZWxlY3QiLCJ0cmVlU2VsZWN0Q2FsbEJhY2siLCJyZXNldFNlYXJjaCIsIl90aGlzJHNlYXJjaFJlZiRjdXJyZTIiLCJyZXNldEZpZWxkcyIsImdldFRleHQiLCJ0ZXh0IiwiX3Byb3BzJGRhdGEiLCJuZXdUZXh0IiwiaSIsInNldFRhYmxlRGF0YSIsIl90aGlzJHRhYmxlUmVmJGN1cnJlbjExIiwic2V0RGF0YSIsInNldFRyZWVEYXRhIiwiX3RoaXMkdHJlZVJlZiRjdXJyZW50MiIsImhhbmRsZU1vdXNlRG93biIsInByZXZlbnREZWZhdWx0IiwibWFzayIsImRvY3VtZW50IiwiY3NzVGV4dCIsImJvZHkiLCJhcHBlbmRDaGlsZCIsImhhbmRsZU1vdXNlTW92ZSIsIm5ld1dpZHRoIiwic2NyZWVuWCIsInRocm90dGxlZE1vdXNlTW92ZSIsImhhbmRsZU1vdXNlVXAiLCJnZXRFbGVtZW50QnlJZCIsInJlbW92ZUNoaWxkIiwicmVuZGVyIiwiX3RoaXMyIiwiX3RhYmxlUHJvcHMkdG9vbGJhciIsIl90YWJsZVByb3BzJHRvb2xiYXIyIiwiX3RoaXMkcHJvcHMkZm9ybVBhZ2VQMyIsIl90aGlzJHByb3BzJGJ1dHRvbkNsaSIsImNvbHVtbnMiLCJzdWJtaXRVcmwiLCJzdWJtaXRQYXJhbXMiLCJzaG93VG9vbEJ1dHRvbiIsImJ1dHRvbnMiLCJlZGl0b3JGb3JtIiwib25TaG93Rm9ybSIsImZvcm1DaGFuZ2VWYWxpZCIsInRvb2xCdXR0b25Qb3NpdGlvbiIsInBlcm1pc3Npb24iLCJoYXMiLCJmaWx0ZXJDb2x1bW4iLCJhY3Rpb25Db2x1bW4iLCJzaG93Um93U2VsZWN0aW9uIiwiY29sdW1uT3JkZXIiLCJleHBhbmRhYmxlIiwidGFibGVUaXRsZSIsIm90aGVydGFibGVQYXJhbXMiLCJfZXhjbHVkZWQ3IiwibmV3VGFibGVTdG9yZSIsIl9uZXdUYWJsZVN0b3JlJHJlcXVlcyIsInRyZWVTdG9yZSIsInRyZWVTZWFyY2giLCJ0aXRsZUFsaWFzIiwidHJlZVRpdGxlIiwib3RoZXJ0cmVlUGFyYW1zIiwiX2V4Y2x1ZGVkOCIsInRhYmxlUGFyYW1zIiwibGlzdGVuZXJzIiwiX3RoaXMkcHJvcHMkb25DYWxsQmFjNiIsIl90aGlzJHByb3BzJG9uQ2FsbEJhYzciLCJ0YWJsZUxvYWRDYWxsQmFjayIsImRlZmF1bHRWYWx1ZSIsIm1lbnVDb2RlIiwicGVybWlzc29ucyIsInRhYmxlQ29sdW1uIiwic2VhcmNoRm9ybXMiLCJlZGl0b3JGb3JtcyIsInRvb2xCdXR0b25zIiwiZm9ybUJ1dHRvbiIsImJ1dHRvbk1hcCIsImVkaXRvciIsImRlbGV0ZSIsInNlYXJjaCIsInJldHVybkJ1dHRvbiIsIl9idXR0b25NYXAkY29kZSIsImRlZmF1bHRQcm9wcyIsIm9uRWRpdG9yIiwiX3RoaXMyJHByb3BzJG9uQ2FsbEJhIiwiX3RoaXMyJHByb3BzJG9uQ2FsbEJhMiIsIm9uRWRpdG9yQ2FsbEJhY2siLCJvblNlYXJjaENhbGxCYWNrIiwiY2hlY2tQZXJzc2lvbiIsImluZGV4T2YiLCJvbkFkZCIsIl90aGlzJHByb3BzJG9uQ2FsbEJhYzgiLCJfdGhpcyRwcm9wcyRvbkNhbGxCYWM5Iiwib25BZGRDYWxsQmFjayIsImJpbmQiLCJkYW5nZXIiLCJBcnJheSIsImlzQXJyYXkiLCJjaGlsZCIsIl9jaGlsZCRwcm9wcyIsIl9jaGlsZCRwcm9wczIiLCJfY2hpbGQkcHJvcHMzIiwiX2NoaWxkJHByb3BzNCIsIl9jaGlsZCRwcm9wczUiLCJfY2hpbGQkcHJvcHM2IiwiX2NoaWxkJHByb3BzNyIsIl9pdGVtJHByb3BzNSIsIl9pdGVtJHByb3BzNiIsIl9pdGVtJHByb3BzNyIsIl9pdGVtJHByb3BzOCIsIl9pdGVtJHByb3BzOSIsImRhdGFJbmRleCIsImFsaWduIiwidGV4dEFsaWduIiwid2lkdGgiLCJmaXhlZCIsInJlYWNvcmQiLCJGcmFnbWVudCIsInNlYXJjaEZsYWciLCJ0YWJsZVRvb2wiLCJ0b29sRmxhZyIsInRvb2xiYXIiLCJ0b29scyIsInRvb2xIZWlnaHQiLCJwYWRkaW5nSGVpZ2h0IiwiZ2xvYmFsVGFibGVUb29sIiwidGFibGVUb29sRmxhZyIsInRhYmxlQ29udGVudEhlaWdodCIsIlBhZ2luYXRpb25IZWlnaHQiLCJwYWdpbmF0aW9uIiwidGFibGVIZWlnaHQiLCJ0YWJsZVNyb2xsSGVpZ2h0Iiwic2Nyb2xsIiwieCIsInkiLCJyZWYiLCJwYWdlVGl0bGUiLCJkaXNwbGF5Iiwib25Nb3VzZURvd24iLCJjaGVja2FibGUiLCJzZWFyY2hhYmxlIiwib25TZWxlY3QiLCJvblJlc2V0IiwiX3RoaXMkc2VhcmNoUmVmJGN1cnJlMyIsInNlYXJjaEZvcm1Qcm9wcyIsInBhZ2VDb250ZW50UmVmIiwiZXhwYW5kSWNvbiIsIl9yZWYiLCJfcmVjb3JkJGNoaWxkTm9kZXMiLCJfcmVjb3JkJGNoaWxkTm9kZXMyIiwiZXhwYW5kZWQiLCJvbkV4cGFuZCIsIm9uQ2hhbmdlIiwib25Ub29sQ2xpY2siLCJvblJlZnJlc2giLCJfdGhpcyRwcm9wcyRvbkNhbGxCYWMxMCIsIl90aGlzJHByb3BzJG9uQ2FsbEJhYzExIiwib25TdW1iaXRDYWxsQmFjayIsImZvcm1zIiwib25TdWJtaXQiLCJvbkhpZGVGb3JtIiwib25Gb3JtQ2hhbmdlIiwiY2hhbmdlVmFsaWQiLCJyZXF1ZXN0T2JqZWN0IiwiYWRkVXJsIiwiZWRpdG9yVXJsIiwiYWRkUGFyYW1zIiwiZWRpdG9yUGFyYW1zIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvcGFnZS9CYXNlUGFnZS9pbmRleC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0LCB7IFB1cmVDb21wb25lbnQsIFJlYWN0Tm9kZSB9IGZyb20gXCJyZWFjdFwiO1xyXG5pbXBvcnQgVGFibGUgZnJvbSBcIi4uLy4uL2Jhc2UvdGFibGVcIjtcclxuaW1wb3J0IFRyZWUgZnJvbSBcIi4uLy4uL2Jhc2UvdHJlZVwiO1xyXG5pbXBvcnQgQnV0dG9uIGZyb20gXCIuLi8uLi9iYXNlL2J1dHRvblwiO1xyXG5pbXBvcnQgTW9kYWwgZnJvbSBcIi4uLy4uL2Jhc2UvbW9kYWxcIjtcclxuaW1wb3J0IFBvcG92ZXIgZnJvbSBcIi4uLy4uL2Jhc2UvcG9wb3ZlclwiO1xyXG5pbXBvcnQgbWVzc2FnZSBmcm9tIFwiLi4vLi4vYmFzZS9tZXNzYWdlXCI7XHJcbmltcG9ydCBFZGl0b3JGb3JtLCB7IEZvcm1QYWdlUHJvcHMgfSBmcm9tIFwiLi4vRm9ybVBhZ2UvaW5kZXhcIjtcclxuaW1wb3J0IGNscyBmcm9tIFwiY2xhc3NuYW1lc1wiO1xyXG5pbXBvcnQgXCIuL2luZGV4Lm1vZHVsZS5sZXNzXCI7XHJcbmltcG9ydCBTdG9yZSwgeyBQYWdlU3RvcmUsIFN0b3JlUHJvcHMgfSBmcm9tIFwiQGJqLW5zYy9tc25cIjtcclxuaW1wb3J0IHsgdXRpbHMgfSBmcm9tIFwiQGJqLW5zYy9tc24vbGliL3V0aWxzXCI7XHJcbmltcG9ydCB7XHJcbiAgRG93bk91dGxpbmVkLFxyXG4gIEV5ZU91dGxpbmVkLFxyXG4gIEVkaXRPdXRsaW5lZCxcclxuICBSaWdodE91dGxpbmVkLFxyXG4gIFBsdXNPdXRsaW5lZCxcclxuICBFbGxpcHNpc091dGxpbmVkLFxyXG4gIERlbGV0ZU91dGxpbmVkLFxyXG59IGZyb20gXCJAYW50LWRlc2lnbi9pY29uc1wiO1xyXG5pbXBvcnQgeyBjb252ZXJGdW5jdGlvbiwgZ2V0TGVzcywgZ2V0Tm9kZSwgc2ltcGxpZnlDb2x1bW5zIH0gZnJvbSBcIi4uLy4uL3V0aWxzXCI7XHJcbmltcG9ydCByZXF1ZXN0IGZyb20gXCJuc2MtcmVxdWVzdFwiO1xyXG5pbXBvcnQgY29uZmlnIGZyb20gXCIuLi8uLi9jb25maWdcIjtcclxuaW1wb3J0IHsgZ2V0TG9jYWxTdG9yZSwgcHgydncsIGdldEJ1dHRvblBlcm1pc3NvbnMgfSBmcm9tIFwiQGJqLW5zYy9mdW5jdGlvbnNcIjtcclxuaW1wb3J0IEhlYWRlclNlYXJjaCBmcm9tIFwiLi4vSGVhZGVyU2VhcmNoXCI7XHJcbmltcG9ydCB7IFBhZ2luYXRpb25Qcm9wcyB9IGZyb20gXCJhbnRkXCI7XHJcbmltcG9ydCBuc2NmaWxlIGZyb20gXCJuc2MtZmlsZVwiO1xyXG5pbXBvcnQgeyBjb252ZXJ0Q29sdW1ucywgZ2V0TmV3Q29sdW1ucyB9IGZyb20gXCIuL3V0aWxzXCI7XHJcbmltcG9ydCBpc0VxdWFsIGZyb20gXCJsb2Rhc2gvaXNFcXVhbFwiO1xyXG5pbXBvcnQgdGhyb3R0bGUgZnJvbSBcImxvZGFzaC90aHJvdHRsZVwiO1xyXG5pbXBvcnQgQ29tcG91bmRlZFNwYWNlIGZyb20gXCJhbnRkL2VzL3NwYWNlXCI7XHJcbmltcG9ydCB7IGNvbnZlcnRTdHJpbmdUb09iaiB9IGZyb20gXCIuLi9TZXR0aW5nVXRpbC91dGlsc1wiO1xyXG50eXBlIEJ1dHRvbkl0ZW0gPVxyXG4gIHwgc3RyaW5nXHJcbiAgfCB7XHJcbiAgICAgIGNvZGU6IHN0cmluZztcclxuICAgICAgcmVjb3JkU2hvdz86IHN0cmluZyB8IEZ1bmN0aW9uO1xyXG4gICAgICBwcm9wcz86IGFueTtcclxuICAgIH07XHJcblxyXG5pbnRlcmZhY2UgVGFibGVQcm9wcyB7XHJcbiAgYWN0aW9uQ29sdW1uPzogYm9vbGVhbjsgLy/mmK/lkKbmmL7npLrmk43kvZzliJdcclxuICBzdG9yZT86IFN0b3JlUHJvcHM7XHJcbiAgZmlsdGVyQ29sdW1uPzogYm9vbGVhbjsgLy/mmK/lkKbmmL7npLrov4fmu6TmjInpkq5cclxuICBzaG93Um93U2VsZWN0aW9uPzogYm9vbGVhbjsgLy/mmK/lkKbooajmoLzli77pgInliJdcclxuICBwYWdpbmF0aW9uPzogYm9vbGVhbiB8IFBhZ2luYXRpb25Qcm9wczsgLy/mmK/lkKbmmL7npLrliIbpobVcclxuICBjb2x1bW5PcmRlcj86IGJvb2xlYW47IC8v5piv5ZCm5pi+56S66KGo5qC85bqP5YiXXHJcbiAgW3Byb3BzTmFtZTogc3RyaW5nXTogYW55O1xyXG59XHJcbmNvbnN0IHN0eWxlcyA9IG51bGw7XHJcbmludGVyZmFjZSBUcmVlUHJvcHMge1xyXG4gIHN0b3JlPzogU3RvcmVQcm9wcztcclxuICBzaG93U2VhcmNoPzogYm9vbGVhbjsgLy/mmK/lkKbmmL7npLrmkJzntKLmoYZcclxuICBzZWFyY2hLZXk/OiBzdHJpbmc7IC8v5pCc57SidmFsdWXlr7nlupTnmoRrZXlcclxuICBzZWFyY2hGaWVsZD86IHN0cmluZzsgLy/mn6Xor6Llr7nlupTnmoRrZXlcclxuICB0aXRsZUFsaWFzPzogc3RyaW5nOyAvL+agkXRpdGxl5a+55bqU55qEa2V5LOm7mOiupHRpdGxlXHJcbiAgbm9kZVBvcnBzPzogb2JqZWN0O1xyXG4gIHBhcmFudFNlbGVjdD86IGJvb2xlYW47XHJcbiAgW3Byb3BzTmFtZTogc3RyaW5nXTogYW55O1xyXG59XHJcbmludGVyZmFjZSBGb3JtUHJvcHMgZXh0ZW5kcyBGb3JtUGFnZVByb3BzIHt9XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIE5TQ0Jhc2VCYWdlUHJvcHMge1xyXG4gIHNob3dTZWFyY2g/OiBib29sZWFuOyAvL+aYr+WQpuaYvuekuuWktOmDqOaQnOe0ouagj1xyXG4gIHRhYmxlUHJvcHM/OiBUYWJsZVByb3BzOyAvL+ihqOagvOWPguaVsFxyXG4gIHRyZWVQcm9wcz86IFRyZWVQcm9wczsgLy/lt6bkvqfmoJHlj4LmlbBcclxuICBzdWJtaXRQYXJhbXM/OiBPYmplY3Q7IC8v5re75Yqg5Y+C5pWw77yM6buY6K6kbW90aG9kOnBvc3TvvIwg5Y+C5pWw6YCa6L+HZGF0YeS8oOmAklxyXG4gIHN1Ym1pdFVybD86IHN0cmluZztcclxuICBvblN1Ym1pdD86ICh2YWx1ZT86IGFueSwgbGFiZWw/OiBhbnkpID0+IHZvaWQ7XHJcbiAgY29sdW1ucz86IEFycmF5PE9iamVjdD47XHJcbiAgc2hvd0xlZnQ/OiBib29sZWFuOyAvL+aYr+WQpuaYvuekuuW3puS+p+ebruW9leagkVxyXG4gIHNob3dUb29sQnV0dG9uPzogYm9vbGVhbjsgLy/mmK/lkKbmmL7npLrmjInpkq7moI9cclxuICBlZGl0b3JGb3JtPzogYm9vbGVhbjsgLy/mmK/lkKbpnIDopoHooajljZXlip/og70gLCDkuLpmYWxzZSDnvJbovpHvvIzmn6XnnIvvvIzmlrDlop7lip/og73lnYfkuI3lj6/nlKhcclxuICBkZWxldGVVcmw/OiBzdHJpbmc7IC8v5Yig6ZmkdXJsXHJcbiAgb25EZWxldGU/OiAoc2VsZWN0ZWRLZXlzPzogQXJyYXk8c3RyaW5nPikgPT4gdm9pZDsgLy/liKDpmaTlj4LmlbDvvIzpu5jorqRtb3Rob2Q6cG9zdO+8jCDlj4LmlbDpgJrov4dpZHPmi7zmjqXkvKDpgJLnu5nlkI7lj7BcclxuICBkZWxldGVQYXJhbXM/OiBPYmplY3Q7XHJcbiAgY2hpbGRyZW4/OiBSZWFjdC5SZWFjdE5vZGU7XHJcbiAgb25TZWFyY2g/OiAodmFsdWU/OiBhbnkpID0+IHZvaWQ7XHJcbiAgb25SZXNldD86ICgpID0+IHZvaWQ7XHJcbiAgaW5pdERhdGE/OiBhbnk7IC8v5Yid5aeL5YyW5Zue6LCD5Ye95pWw77yM5ZyoY29tcG9uZW50RGlkTW91bnTkuK3osIPnlKhcclxuICBidXR0b25zPzogQnV0dG9uSXRlbVtdOyAvL+aMiemSrumbhuWQiCAgWydhZGQnLCdkZWxldGUnLCdzZWFyY2gnLCdlZGl0b3InLCdkZWxldGVfYmF0Y2gnXVxyXG4gIG9uU2hvd0Zvcm0/OiAodmFsdWU/OiBhbnksIGVkaXRvckZsYWc/OiBzdHJpbmcpID0+IHZvaWQ7IC8v5omT5byA6KGo5Y2V5Zue6LCDXHJcbiAgb25IaWRlRm9ybT86ICgpID0+IHZvaWQ7IC8v5omT5byA6KGo5Y2V5Zue6LCDXHJcbiAgb25Gb3JtQ2hhbmdlPzogKGNoYW5nZWRWYWx1ZXM/OiBhbnksIGFsbFZhbHVlcz86IGFueSkgPT4gdm9pZDsgLy/ooajljZVvbkNoYW5nZeWbnuiwg1xyXG4gIGZvcm1UeXBlPzogXCJtb2RhbFwiIHwgXCJkcmF3ZXJcIiB8IFwicGFnZVwiIHwgXCJhdXRvXCI7XHJcbiAgZm9ybUNoYW5nZVZhbGlkPzogYm9vbGVhbjsgLy/ooajljZXmoKHpqoxcclxuICBjbGFzc05hbWU/OiBhbnk7XHJcbiAgdG9vbEJ1dHRvblBvc2l0aW9uPzogXCJyaWdodFwiIHwgXCJidXR0b21cIjtcclxuICBwYWdlVGl0bGU/OiBzdHJpbmcgfCBSZWFjdE5vZGU7XHJcbiAgYWN0aW9uUHJvcHM/OiB7XHJcbiAgICB0ZXh0QWxpZ24/OiBzdHJpbmc7XHJcbiAgICBzaG93SWNvbj86IGJvb2xlYW47XHJcbiAgICB3aWR0aD86IG51bWJlcjtcclxuICAgIGJ1dHRvbk51bWJlcj86IG51bWJlciB8IFwiYWxsXCI7XHJcbiAgfTtcclxuICBzZWFyY2hGb3JtUHJvcHM/OiB7IHdyYXBwZXJDb2w/OiBhbnk7IGxhYmVsQ29sPzogYW55IH07XHJcbiAgb25UcmVlU2VsZWN0PzogKHZhbHVlPzogYW55LCBlZGl0b3JGbGFnPzogc3RyaW5nKSA9PiB2b2lkOyAvL+aJk+W8gOihqOWNleWbnuiwg1xyXG4gIG9uQ2FsbEJhY2tzPzoge1xyXG4gICAgdHJlZVNlbGVjdENhbGxCYWNrPzogYW55OyAvL+agkeeCueWHu+afpeivouWQjuWbnuiwg1xyXG4gICAgb25RdWVyeUNhbGxCYWNrPzogYW55OyAvL+afpeivouWbnuiwg++8jOafpeivouaVsOaNruWQjuWbnuiwg1xyXG4gICAgb25TdW1iaXRDYWxsQmFjaz86IGFueTsgLy/kv53lrZjlm57osIPvvIzkv53lrZjmlbDmja7miJDlip/lkI7lm57osINcclxuICAgIG9uRGVsZXRlQ2FsbEJhY2s/OiBhbnk7IC8v5Yig6Zmk5oyJ6ZKu5Zue6LCD77yM5Yig6Zmk5pWw5o2u5ZCO5omn6KGMXHJcbiAgICBvbkVkaXRvckNhbGxCYWNrPzogYW55OyAvL+e8lui+keaMiemSruWbnuiwg++8jOaJk+W8gOW8ueahhuWQjuaJp+ihjFxyXG4gICAgb25BZGRDYWxsQmFjaz86IGFueTsgLy/mt7vliqDmjInpkq7lm57osIPvvIzmiZPlvIDlvLnmoYblkI7miafooYxcclxuICAgIG9uU2VhcmNoQ2FsbEJhY2s/OiBhbnk7IC8v5YiX6KGo5p+l6K+i5oyJ6ZKu5Zue6LCD77yM5omT5byA5by55qGG5ZCO5omn6KGMXHJcbiAgICB0YWJsZUxvYWRDYWxsQmFjaz86IGFueTsgLy/liJfooajmn6Xor6Llm57osIMtLWxvYWRcclxuICB9O1xyXG4gIHBhZ2VUeXBlPzogXCJub3JtYWxcIiB8IFwidGFic3BhZ2VcIjtcclxuICBmb3JtUGFnZVByb3BzPzogRm9ybVBhZ2VQcm9wcztcclxuICBidXR0b25DbGljaz86IHtcclxuICAgIG9uQWRkPzogKCkgPT4gdm9pZDtcclxuICAgIG9uRWRpdG9yPzogKHZhbHVlPzogYW55KSA9PiB2b2lkO1xyXG4gICAgb25TZWFyY2g/OiAodmFsdWU/OiBhbnkpID0+IHZvaWQ7XHJcbiAgICBvbkRlbGV0ZT86ICh2YWx1ZT86IGFueSkgPT4gdm9pZDtcclxuICAgIG9uU3VibWl0PzogKHZhbHVlPzogYW55KSA9PiB2b2lkO1xyXG4gIH07XHJcbiAgcGVybWlzc2lvbj86IHtcclxuICAgIGhhcz86IGJvb2xlYW47XHJcbiAgICBtZW51Q29kZT86IHN0cmluZztcclxuICB9O1xyXG4gIHJlcXVlc3RQYXJhbXM/OiB7XHJcbiAgICAvL+mcgOimgemineWkluS8oOeahOWbuuWumuivt+axguWPguaVsFxyXG4gICAgYWRkUGFyYW1zPzogT2JqZWN0OyAvL+aWsOWinuWbuuWumuWPguaVsFxyXG4gICAgZWRpdG9yUGFyYW1zPzogT2JqZWN0OyAvL+e8lui+keWbuuWumuWPguaVsFxyXG4gICAgcXVlcnlQYXJhbXM/OiBPYmplY3Q7IC8v5p+l6K+i5Zu65a6a5Y+C5pWwXHJcbiAgICBkZWxldGVQYXJhbXM/OiBPYmplY3Q7IC8v5Yig6Zmk5Zu65a6a5Y+C5pWwXHJcbiAgfTtcclxuICByZXF1ZXN0VXJscz86IHtcclxuICAgIGFkZFVybD86IHN0cmluZzsgLy/mlrDlop51cmxcclxuICAgIGVkaXRvclVybD86IHN0cmluZzsgLy/nvJbovpF1cmxcclxuICAgIGRlbGV0ZVVybD86IHN0cmluZzsgLy/liKDpmaR1cmxcclxuICB9O1xyXG4gIGZ1bmNzPzogYW55O1xyXG4gIHJlcXVlc3RDb25maWc/OiBhbnk7XHJcbiAgW3Byb3BzTmFtZTogc3RyaW5nXTogYW55O1xyXG59XHJcblxyXG5jbGFzcyBCYXNlUGFnZSBleHRlbmRzIFB1cmVDb21wb25lbnQ8TlNDQmFzZUJhZ2VQcm9wcywgYW55PiB7XHJcbiAgdGFibGVSZWYgPSBSZWFjdC5jcmVhdGVSZWY8YW55PigpO1xyXG4gIHRyZWVSZWYgPSBSZWFjdC5jcmVhdGVSZWY8YW55PigpO1xyXG4gIHNlYXJjaFJlZiA9IFJlYWN0LmNyZWF0ZVJlZjxhbnk+KCk7XHJcbiAgZWRpdG9yUmVmID0gUmVhY3QuY3JlYXRlUmVmPGFueT4oKTtcclxuICBwYWdlUmVmID0gUmVhY3QuY3JlYXRlUmVmPGFueT4oKTtcclxuICBwYWdlQ29udGVudFJlZiA9IFJlYWN0LmNyZWF0ZVJlZjxhbnk+KCk7XHJcbiAgZGF0ZUZvcm1hdCA9IHt9IGFzIGFueTtcclxuICB0YWJsZVdyYXBwZXJSZWYgPSBSZWFjdC5jcmVhdGVSZWY8SFRNTERpdkVsZW1lbnQ+KCk7XHJcbiAgc3RhdGljIGNvbnZlcnRDb2x1bW5zID0gY29udmVydENvbHVtbnM7XHJcbiAgY29uc3RydWN0b3IocHJvcHM6IGFueSkge1xyXG4gICAgc3VwZXIocHJvcHMpO1xyXG4gICAgdGhpcy5zdGF0ZSA9IHtcclxuICAgICAgdHlwZTogXCJhZGRcIixcclxuICAgICAgc2VsZWN0ZWRSb3dLZXlzOiBbXSxcclxuICAgICAgc2VsZWN0ZWRSb3dEYXRhczogW10sXHJcbiAgICAgIHRyZWVTZWxlY3RlZEtleTogXCJcIixcclxuICAgICAgZXhwYW5kOiBmYWxzZSxcclxuICAgICAgdHJlZVNlYXJjaFByYW1zOiB7fSxcclxuICAgICAgcG9wb3BlbnM6IHt9LFxyXG4gICAgICBtb3JlT3BlbjogZmFsc2UsXHJcbiAgICAgIGVsZW1lbnRIZWlnaHQ6IDAsXHJcbiAgICAgIHBlcm1pc3Npb25CdXR0b25zOiBbXSxcclxuICAgICAgcXVlcnlQYXJhbXM6IHt9LFxyXG4gICAgICB0YWJsZUhlYWRlckhlaWdodDogMCwgLy8g5re75Yqg6KGo5aS06auY5bqm5Yiwc3RhdGVcclxuICAgICAgYnV0dG9uc0xvYWRpbmc6IHt9LFxyXG4gICAgICB0cmVlV2lkdGg6IHRoaXMucHJvcHMuc2hvd0xlZnQgPyAyNjAgOiAwLFxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIGNvbXBvbmVudERpZE1vdW50KCkge1xyXG4gICAgY29uc3QgeyBpbml0RGF0YSwgcGVybWlzc29uID0ge30gfSA9IHRoaXMucHJvcHM7XHJcbiAgICBjb25zdCBlbGVtZW50SGVpZ2h0ID0gdGhpcy5wYWdlUmVmLmN1cnJlbnQ/LmNsaWVudEhlaWdodDtcclxuXHJcbiAgICAvLyDmt7vliqDnqpflj6NyZXNpemXnm5HlkKxcclxuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKFwicmVzaXplXCIsIHRoaXMudGhyb3R0bGVDYWxjdWxhdGVUYWJsZUhlYWRlckhlaWdodCk7XHJcblxyXG4gICAgLy8g5Yid5aeL6K6h566X6KGo5aS06auY5bqmXHJcbiAgICBzZXRUaW1lb3V0KHRoaXMuY2FsY3VsYXRlVGFibGVIZWFkZXJIZWlnaHQsIDApO1xyXG5cclxuICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICBlbGVtZW50SGVpZ2h0LFxyXG4gICAgfSk7XHJcbiAgICBpbml0RGF0YSAmJiBpbml0RGF0YSgpO1xyXG4gIH1cclxuICBjb21wb25lbnREaWRVcGRhdGUocHJldlByb3BzKSB7XHJcbiAgICBjb25zdCBlbGVtZW50SGVpZ2h0ID0gdGhpcy5wYWdlUmVmLmN1cnJlbnQ/LmNsaWVudEhlaWdodDtcclxuICAgIGlmIChlbGVtZW50SGVpZ2h0ID4gdGhpcy5zdGF0ZS5lbGVtZW50SGVpZ2h0KSB7XHJcbiAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgIGVsZW1lbnRIZWlnaHQsXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgaWYgKHByZXZQcm9wcy5zaG93TGVmdCAhPT0gdGhpcy5wcm9wcy5zaG93TGVmdCkge1xyXG4gICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICB0cmVlV2lkdGg6IHRoaXMucHJvcHMuc2hvd0xlZnQgPyAyNjAgOiAwLFxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcbiAgY29tcG9uZW50V2lsbFVubW91bnQoKSB7XHJcbiAgICAvLyDnp7vpmaRyZXNpemXnm5HlkKxcclxuICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKFxyXG4gICAgICBcInJlc2l6ZVwiLFxyXG4gICAgICB0aGlzLnRocm90dGxlQ2FsY3VsYXRlVGFibGVIZWFkZXJIZWlnaHRcclxuICAgICk7XHJcbiAgfVxyXG4gIHNldFNlYXJjaFBhcmFtcyhwYXJhbXMsIGNhbGxCYWNrKSB7XHJcbiAgICB0aGlzLnNlYXJjaFJlZi5jdXJyZW50Py5zZXRTZWFyY2hQYXJhbXMocGFyYW1zKTtcclxuICAgIGNhbGxCYWNrICYmIGNhbGxCYWNrKHBhcmFtcyk7XHJcbiAgfVxyXG4gIGRvU3VibWl0KGRhdGEsIGxhYmVsID0gXCLnvJbovpFcIikge1xyXG4gICAgdGhpcy5lZGl0b3JSZWYuY3VycmVudD8uZG9TdWJtaXQoZGF0YSwgbGFiZWwpO1xyXG4gIH1cclxuXHJcbiAgb25TZWxlY3QgPSAoY2hlY2tlZFRyZWVLZXlzOiBhbnkpID0+IHtcclxuICAgIGNvbnN0IHsgbmFtZSwgdXNlclR5cGUsIGFjY291bnQgfSA9IHRoaXMuc3RhdGU7XHJcbiAgICBjb25zdCB2YWx1ZSA9IHsgbmFtZSwgdXNlclR5cGUsIGFjY291bnQsIGRlcHRJZDogY2hlY2tlZFRyZWVLZXlzWzBdIH07XHJcbiAgICBpZiAodGhpcy5wcm9wcy5vblNlYXJjaCkge1xyXG4gICAgICB0aGlzLnByb3BzLm9uU2VhcmNoKHZhbHVlKTtcclxuICAgIH1cclxuICAgIC8vIHRoaXMudGFibGVMb2FkKHZhbHVlKTtcclxuICB9O1xyXG5cclxuICAvL+aYvuekuuihqOWNlVxyXG4gIHNob3dGb3JtKHZhbHVlPzogYW55LCBlZGl0b3JmbGFnID0gXCJhZGRcIiwgY2FsbEJhY2s/OiBhbnkpIHtcclxuICAgIGlmICh0aGlzLnByb3BzLmZvcm1QYWdlUHJvcHM/LmZvcm1UeXBlID09IFwicGFnZVwiKSB7XHJcbiAgICAgIGNvbnN0IHsgZnVuY3MgPSB7fSB9ID0gdGhpcy5wcm9wcztcclxuICAgICAgbGV0IHBhdGhuYW1lID0gYC9mb3JtcGFnZS8ke2VkaXRvcmZsYWcgPyBlZGl0b3JmbGFnIDogXCJhZGRcIn0vdGFibGUvJHtcclxuICAgICAgICB0aGlzLnByb3BzLnRhYmxlQ29kZVxyXG4gICAgICB9YDtcclxuICAgICAgaWYgKGVkaXRvcmZsYWcgPT0gXCJlZGl0b3JcIiB8fCBlZGl0b3JmbGFnID09IFwic2VhcmNoXCIpIHtcclxuICAgICAgICBwYXRobmFtZSA9IHBhdGhuYW1lICsgXCI/aWQ9XCIgKyB2YWx1ZS5pZDtcclxuICAgICAgfVxyXG4gICAgICBmdW5jcz8uaGlzdG9yeShcclxuICAgICAgICB7XHJcbiAgICAgICAgICBwYXRobmFtZTogcGF0aG5hbWUsXHJcbiAgICAgICAgICBzZXJ2aWNlTmFtZTogXCJzZXR0aW5nLXdlYlwiLFxyXG4gICAgICAgICAgc2VydmljZVBhdGg6IFwiL3NldHRpbmdcIixcclxuICAgICAgICAgIGlkOlxyXG4gICAgICAgICAgICBuZXcgRGF0ZSgpLmdldFRpbWUoKSArXHJcbiAgICAgICAgICAgICh2YWx1ZT8uaWQgfHwgXCJfXCIpICtcclxuICAgICAgICAgICAgZWRpdG9yZmxhZyArXHJcbiAgICAgICAgICAgIFwi4oCUXCIgK1xyXG4gICAgICAgICAgICB0aGlzLnByb3BzLnRhYmxlQ29kZSArXHJcbiAgICAgICAgICAgICh2YWx1ZT8uaWQgPyBcIl9cIiArIHZhbHVlLmlkIDogXCJcIiksXHJcbiAgICAgICAgICB0aXRsZTpcclxuICAgICAgICAgICAgYOOAkCR7XHJcbiAgICAgICAgICAgICAgZWRpdG9yZmxhZyA9PSBcImFkZFwiXHJcbiAgICAgICAgICAgICAgICA/IFwi5paw5aKeXCJcclxuICAgICAgICAgICAgICAgIDogZWRpdG9yZmxhZyA9PSBcImVkaXRvclwiXHJcbiAgICAgICAgICAgICAgICA/IFwi57yW6L6RXCJcclxuICAgICAgICAgICAgICAgIDogXCLmn6XnnItcIlxyXG4gICAgICAgICAgICB944CRYCArIHRoaXMucHJvcHMuZm9ybVBhZ2VQcm9wcz8udGl0bGUgfHwgXCJcIixcclxuICAgICAgICB9LFxyXG4gICAgICAgIFwiYWRkVGFiXCJcclxuICAgICAgKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGxldCBuZXdWYWx1ZSA9IHZhbHVlID8geyAuLi52YWx1ZSB9IDogbnVsbDtcclxuICAgICAgdGhpcy5lZGl0b3JSZWY/LmN1cnJlbnQ/LnNob3cobmV3VmFsdWUsIGVkaXRvcmZsYWcsIGNhbGxCYWNrKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8v5YWz6Zet6KGo5Y2VXHJcbiAgaGlkZUZvcm0oKSB7XHJcbiAgICB0aGlzLmVkaXRvclJlZi5jdXJyZW50Py5oaWRlRm9ybSgpO1xyXG4gIH1cclxuXHJcbiAgc2V0TG9hZGluZyhsb2FkaW5nOiBib29sZWFuKSB7XHJcbiAgICB0aGlzLmVkaXRvclJlZi5jdXJyZW50Py5zZXRMb2FkaW5nKGxvYWRpbmcpO1xyXG4gIH1cclxuXHJcbiAgc2V0RWRpdEZvcm1WYWx1ZXModmFsdWUsIHR5cGUgPSBcIue8lui+kVwiKSB7XHJcbiAgICB0aGlzLmVkaXRvclJlZi5jdXJyZW50Py5zZXRGb3JtVmFsdWUodmFsdWUsIHR5cGUpO1xyXG4gIH1cclxuXHJcbiAgZ2V0RWRpdEZvcm1WYWx1ZXMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5lZGl0b3JSZWYuY3VycmVudD8uZ2V0Rm9ybVZhbHVlKCk7XHJcbiAgfVxyXG5cclxuICAvL+aJuemHj+WIoOmZpFxyXG4gIG9uRGVsZXRlKGRhdGE/OiBhbnksIGRlbGV0ZVBvc2l0aW9uID0gXCJyb3dcIikge1xyXG4gICAgY29uc3Qge1xyXG4gICAgICBkZWxldGVVcmwsXHJcbiAgICAgIG9uRGVsZXRlLFxyXG4gICAgICBkZWxldGVQYXJhbXMgPSB7fSxcclxuICAgICAgYnV0dG9uQ2xpY2sgPSB7fSxcclxuICAgICAgcmVxdWVzdFBhcmFtcyA9IHt9LFxyXG4gICAgICByZXF1ZXN0VXJscyA9IHt9LFxyXG4gICAgICByZXF1ZXN0Q29uZmlnID0ge30sXHJcbiAgICB9ID0gdGhpcy5wcm9wcztcclxuICAgIGxldCBfdGhpcyA9IHRoaXM7XHJcbiAgICBjb25zdCBzZWxlY3RlZFJvd0tleXMgPSB0aGlzLnRhYmxlUmVmLmN1cnJlbnQ/LmdldFNlbGVjdGVkUm93S2V5cygpO1xyXG4gICAgY29uc3Qgc2VsZWN0ZWRSb3dEYXRhcyA9IHRoaXMudGFibGVSZWYuY3VycmVudD8uZ2V0U2VsZWN0ZWRSb3dEYXRhcygpO1xyXG4gICAgbGV0IHVybCA9IHJlcXVlc3RVcmxzLmRlbGV0ZVVybCA/IHJlcXVlc3RVcmxzLmRlbGV0ZVVybCA6IGRlbGV0ZVVybDtcclxuICAgIGxldCBwYXJhbXM6IGFueSA9IHJlcXVlc3RQYXJhbXMuZGVsZXRlUGFyYW1zXHJcbiAgICAgID8gcmVxdWVzdFBhcmFtcy5kZWxldGVQYXJhbXNcclxuICAgICAgOiBkZWxldGVQYXJhbXM7XHJcbiAgICBpZiAoZGVsZXRlUG9zaXRpb24gPT0gXCJ0b29sYmFyXCIpIHtcclxuICAgICAgaWYgKHNlbGVjdGVkUm93S2V5cy5sZW5ndGggPT0gMCkge1xyXG4gICAgICAgIG1lc3NhZ2Uud2FybmluZyhcIuivt+mAieaLqeimgeWIoOmZpOeahOaVsOaNru+8gVwiKTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIE1vZGFsLmNvbmZpcm0oe1xyXG4gICAgICBjb250ZW50OiBcIuaYr+WQpuehruiupOWIoOmZpOaJgOmAiemhue+8n1wiLFxyXG4gICAgICAvLyBjZW50ZXJlZDp0cnVlLFxyXG4gICAgICBvbk9rOiAoKSA9PiB7XHJcbiAgICAgICAgaWYgKGJ1dHRvbkNsaWNrLm9uRGVsZXRlKSB7XHJcbiAgICAgICAgICBjb252ZXJGdW5jdGlvbihcclxuICAgICAgICAgICAgYnV0dG9uQ2xpY2sub25EZWxldGUsXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICBwYWdlUmVmOiB0aGlzLnByb3BzLnBhZ2VSZWYsXHJcbiAgICAgICAgICAgICAgcmVjb3JkOiBkZWxldGVQb3NpdGlvbiA9PSBcInRvb2xiYXJcIiA/IHNlbGVjdGVkUm93RGF0YXMgOiBkYXRhLFxyXG4gICAgICAgICAgICAgIGlkczogZGVsZXRlUG9zaXRpb24gPT0gXCJ0b29sYmFyXCIgPyBzZWxlY3RlZFJvd0tleXMgOiBkYXRhPy5pZCxcclxuICAgICAgICAgICAgICBmdW5jczogdGhpcy5wcm9wcy5mdW5jcyxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgdGhpcy5wcm9wcy5VdGlsc1xyXG4gICAgICAgICAgKTtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKG9uRGVsZXRlKSB7XHJcbiAgICAgICAgICBvbkRlbGV0ZSAmJlxyXG4gICAgICAgICAgICBvbkRlbGV0ZShkZWxldGVQb3NpdGlvbiA9PSBcInRvb2xiYXJcIiA/IHNlbGVjdGVkUm93S2V5cyA6IGRhdGEpO1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoIXVybCkge1xyXG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwidXJs5LiN6IO95Li656m677yBXCIpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCB7IGRhdGE6IGRhdGFQYXJhbXMgPSB7fSwgLi4ub3RoZXJQYXJhbXMgfSA9IHBhcmFtcztcclxuICAgICAgICBjb25zdCBkZWZhdWx0UGFyYW1zID0ge1xyXG4gICAgICAgICAgbWV0aG9kOiBcInBvc3RcIixcclxuICAgICAgICAgIGF1dG9QcmVmaXg6IHRydWUsXHJcbiAgICAgICAgICBwYXJhbXM6IHtcclxuICAgICAgICAgICAgaWRzOiBkZWxldGVQb3NpdGlvbiA9PSBcInRvb2xiYXJcIiA/IHNlbGVjdGVkUm93S2V5cy5qb2luKCkgOiBkYXRhLmlkLFxyXG4gICAgICAgICAgICAuLi5kYXRhUGFyYW1zLFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIC4uLnJlcXVlc3RDb25maWcsXHJcbiAgICAgICAgfTtcclxuICAgICAgICBsZXQgZmluYWxQYXJhbXMgPSB7fSBhcyBhbnk7XHJcbiAgICAgICAgZmluYWxQYXJhbXMgPSB7IC4uLmRlZmF1bHRQYXJhbXMsIC4uLm90aGVyUGFyYW1zIH07XHJcbiAgICAgICAgcmVxdWVzdCh1cmwsIHtcclxuICAgICAgICAgIC4uLmZpbmFsUGFyYW1zLFxyXG4gICAgICAgIH0pXHJcbiAgICAgICAgICAudGhlbihmdW5jdGlvbiAocmVzOiBhbnkpIHtcclxuICAgICAgICAgICAgY29uc3QgeyBjb2RlIH0gPSByZXM7XHJcbiAgICAgICAgICAgIGlmIChjb2RlID09PSAyMDApIHtcclxuICAgICAgICAgICAgICBtZXNzYWdlLnN1Y2Nlc3MoXCLliKDpmaTmiJDlip/vvIFcIik7XHJcbiAgICAgICAgICAgICAgbGV0IHZhbHVlID0gX3RoaXMuc2VhcmNoUmVmPy5jdXJyZW50Py5nZXRTZWFyY2hWYWx1ZXMoKTtcclxuICAgICAgICAgICAgICBfdGhpcy5wcm9wcy5vbkNhbGxCYWNrcz8ub25EZWxldGVDYWxsQmFjayAmJlxyXG4gICAgICAgICAgICAgICAgY29udmVyRnVuY3Rpb24oXHJcbiAgICAgICAgICAgICAgICAgIF90aGlzLnByb3BzLm9uQ2FsbEJhY2tzPy5vbkRlbGV0ZUNhbGxCYWNrLFxyXG4gICAgICAgICAgICAgICAgICB7IHBhZ2VSZWY6IHRoaXMucHJvcHMucGFnZVJlZiB9LFxyXG4gICAgICAgICAgICAgICAgICB0aGlzLnByb3BzLlV0aWxzXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgIF90aGlzLnRhYmxlTG9hZCh2YWx1ZSk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgaWYgKCFyZXMubXNnKSB7XHJcbiAgICAgICAgICAgICAgICBtZXNzYWdlLmVycm9yKFwi5Yig6Zmk5aSx6LSl77yBXCIpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSlcclxuICAgICAgICAgIC5jYXRjaChmdW5jdGlvbiAoZXJyb3I6IGFueSkge1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhcImVycm9yXCIsIGVycm9yKTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICB9LFxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIHRhYmxlTG9hZChwYXJhbXM6IGFueSwgcmVxdWVzdENvbmZpZyA9IHt9KSB7XHJcbiAgICBjb25zdCB7XHJcbiAgICAgIHJlcXVlc3RDb25maWc6IGRlZmF1bHRSZXF1ZXN0Q29uZmlnID0ge30sXHJcbiAgICAgIHJlcXVlc3RQYXJhbXMgPSB7fSxcclxuICAgICAgdGFibGVQcm9wcyA9IHt9LFxyXG4gICAgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBjb25zdCB7IHN0b3JlOiB0YWJsZVN0b3JlID0ge30gfSA9IHRhYmxlUHJvcHM7XHJcbiAgICBsZXQgcXVlcnlQYXJhbXM6IGFueSA9IHRoaXMuY29udmVydFF1ZXJ5UGFyYW1zKCk7XHJcbiAgICBsZXQgZGF0YSA9IHF1ZXJ5UGFyYW1zLmRhdGEgfHwgcXVlcnlQYXJhbXMucGFyYW1zIHx8IHt9O1xyXG5cclxuICAgIGxldCBmaW5hbFBhcmFtcyA9IHtcclxuICAgICAgLi4uZGF0YSxcclxuICAgICAgLi4udGFibGVTdG9yZS5yZXF1ZXN0Q29uZmlnPy5wYXJhbXMsXHJcbiAgICAgIC4uLnBhcmFtcyxcclxuICAgIH07XHJcbiAgICBjb25zdCB7IHJlcXVlc3RDb25pZzogc3RvcmVDb25maWcgPSB7fSB9ID0gdGFibGVTdG9yZTtcclxuICAgIGNvbnN0IHsgcGFyYW1zOiBzdG9yZVBhcmFtcyA9IHt9LCAuLi5vdGhlclN0b3JlQ29uZmlnIH0gPSBzdG9yZUNvbmZpZztcclxuICAgIHRoaXMudGFibGVSZWYuY3VycmVudD8uc3RvcmUubG9hZCh7XHJcbiAgICAgIC4uLmRlZmF1bHRSZXF1ZXN0Q29uZmlnLFxyXG4gICAgICAuLi5vdGhlclN0b3JlQ29uZmlnLFxyXG4gICAgICAuLi5yZXF1ZXN0Q29uZmlnLFxyXG4gICAgICBwYXJhbXM6IHsgLi4uc3RvcmVQYXJhbXMsIC4uLmZpbmFsUGFyYW1zIH0sXHJcbiAgICB9KTtcclxuICB9XHJcbiAgLy/mn6Xor6JcclxuICBvblNlYXJjaChwYXJhbXMpIHtcclxuICAgIGNvbnN0IHtcclxuICAgICAgb25TZWFyY2gsXHJcbiAgICAgIG9uQ2FsbEJhY2tzLFxyXG4gICAgICByZXF1ZXN0UGFyYW1zID0ge30sXHJcbiAgICAgIHRhYmxlUHJvcHMgPSB7fSxcclxuICAgIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgY29uc3QgeyBzdG9yZTogdGFibGVTdG9yZSA9IHt9IH0gPSB0YWJsZVByb3BzO1xyXG4gICAgbGV0IHF1ZXJ5UGFyYW1zOiBhbnkgPSB0aGlzLmNvbnZlcnRRdWVyeVBhcmFtcygpO1xyXG4gICAgbGV0IGRhdGEgPSBxdWVyeVBhcmFtcy5kYXRhIHx8IHF1ZXJ5UGFyYW1zLnBhcmFtcyB8fCB7fTtcclxuICAgIGxldCBmaW5hbFBhcmFtcyA9IHtcclxuICAgICAgLi4uZGF0YSxcclxuICAgICAgLi4udGFibGVTdG9yZS5yZXF1ZXN0Q29uZmlnPy5wYXJhbXMsXHJcbiAgICAgIC4uLnBhcmFtcyxcclxuICAgIH07XHJcbiAgICBpZiAob25TZWFyY2gpIHtcclxuICAgICAgb25TZWFyY2goeyAuLi5maW5hbFBhcmFtcywgLi4udGhpcy5zdGF0ZS50cmVlU2VhcmNoUHJhbXMgfSk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMudGFibGVMb2FkKHsgLi4uZmluYWxQYXJhbXMsIC4uLnRoaXMuc3RhdGUudHJlZVNlYXJjaFByYW1zIH0pO1xyXG4gICAgb25DYWxsQmFja3M/Lm9uUXVlcnlDYWxsQmFjayAmJlxyXG4gICAgICBjb252ZXJGdW5jdGlvbihcclxuICAgICAgICB0aGlzLnByb3BzLm9uQ2FsbEJhY2tzPy5vblF1ZXJ5Q2FsbEJhY2ssXHJcbiAgICAgICAgeyBwYWdlUmVmOiB0aGlzLnByb3BzLnBhZ2VSZWYsIHBhcmFtczogcGFyYW1zIH0sXHJcbiAgICAgICAgdGhpcy5wcm9wcy5VdGlsc1xyXG4gICAgICApO1xyXG4gIH1cclxuICAvL+ihqOagvOmHjeaWsOWKoOi9vVxyXG4gIHRhYmxlUmVsb2FkKHBhcmFtcyA9IHt9LCBhdXRvTG9hZCA9IHRydWUpIHtcclxuICAgIHRoaXMudGFibGVSZWYuY3VycmVudD8uc3RvcmU/LnJlbG9hZCh7XHJcbiAgICAgIGNhbGxiYWNrOiAocmVzKSA9PiB7XHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgYXV0b0xvYWQgJiZcclxuICAgICAgICAgIHJlcz8uZGF0YT8ucmVjb3Jkcz8ubGVuZ3RoID09IDAgJiZcclxuICAgICAgICAgIHRoaXMuc3RhdGUuY3VycmVudFBhZ2UgIT09IDFcclxuICAgICAgICApIHtcclxuICAgICAgICAgIHRoaXMudGFibGVSZWYuY3VycmVudD8uc3RvcmU/LnJlbG9hZCh7XHJcbiAgICAgICAgICAgIHBhcmFtczogeyBjdXJyZW50OiAxLCAuLi5wYXJhbXMgfSxcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfSxcclxuICAgIH0pO1xyXG4gIH1cclxuICB0cmVlTG9hZChwYXJhbXM6IGFueSwgcmVxdWVzdENvbmZpZyA9IHt9KSB7XHJcbiAgICBjb25zdCB7IHJlcXVlc3RDb25maWc6IGRlZmF1bHRSZXF1ZXN0Q29uZmlnID0ge30gfSA9IHRoaXMucHJvcHM7XHJcbiAgICB0aGlzLnRyZWVSZWYuY3VycmVudD8uc3RvcmUubG9hZCh7XHJcbiAgICAgIC4uLmRlZmF1bHRSZXF1ZXN0Q29uZmlnLFxyXG4gICAgICAuLi5yZXF1ZXN0Q29uZmlnLFxyXG4gICAgICBwYXJhbXM6IHBhcmFtcyxcclxuICAgIH0pO1xyXG4gIH1cclxuICBnZXRTZWxlY3RlZFJvd0tleXMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy50YWJsZVJlZi5jdXJyZW50Py5nZXRTZWxlY3RlZFJvd0tleXMoKTtcclxuICB9XHJcbiAgZ2V0U2VsZWN0ZWRSb3dEYXRhcygpIHtcclxuICAgIHJldHVybiB0aGlzLnRhYmxlUmVmLmN1cnJlbnQ/LmdldFNlbGVjdGVkUm93RGF0YXMoKTtcclxuICB9XHJcbiAgc2V0U2VsZWN0ZWRSb3dLZXlzKGRhdGE6IEFycmF5PFN0cmluZyB8IE51bWJlcj4pIHtcclxuICAgIHJldHVybiB0aGlzLnRhYmxlUmVmLmN1cnJlbnQ/LnNldFNlbGVjdGVkUm93S2V5cyhkYXRhKTtcclxuICB9XHJcbiAgc2V0U2VsZWN0ZWRSb3dEYXRhcyhkYXRhOiBBcnJheTxPYmplY3Q+KSB7XHJcbiAgICByZXR1cm4gdGhpcy50YWJsZVJlZi5jdXJyZW50Py5zZXRTZWxlY3RlZFJvd0RhdGFzKGRhdGEpO1xyXG4gIH1cclxuICByZXNldFNlbGVjdGVkUm93S2V5cygpIHtcclxuICAgIHJldHVybiB0aGlzLnRhYmxlUmVmLmN1cnJlbnQ/LnJlc2V0U2VsZWN0ZWRSb3dLZXlzKCk7XHJcbiAgfVxyXG5cclxuICBnZXRTZWFyY2hWYWx1ZXMoKSB7XHJcbiAgICBjb25zdCBmcm9tVmFsdWUgPSB0aGlzLnNlYXJjaFJlZj8uY3VycmVudD8uZ2V0U2VhcmNoVmFsdWVzKCk7XHJcbiAgICByZXR1cm4geyAuLi5mcm9tVmFsdWUsIC4uLnRoaXMuc3RhdGUudHJlZVNlYXJjaFByYW1zIH07XHJcbiAgfVxyXG5cclxuICBnZXRDaGlsZHJlbkRhdGEoZGF0YSwga2V5cyA9IFtdKSB7XHJcbiAgICBjb25zdCB7IHRhYmxlUHJvcHMgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBjb25zdCB7IHJvd0tleSA9IFwiaWRcIiB9ID0gdGFibGVQcm9wcztcclxuICAgIGxldCByZXNLZXkgPSBbXTtcclxuICAgIGxldCBrZXkgPSBcIlwiO1xyXG4gICAgaWYgKGRhdGEuY2hpbGROb2Rlcykge1xyXG4gICAgICBjb25zdCBjaGlsZHJlbiA9IGRhdGEuY2hpbGROb2RlcztcclxuICAgICAgY2hpbGRyZW4ubWFwKChpdGVtLCBpbmRleCkgPT4ge1xyXG4gICAgICAgIGlmICh0eXBlb2Ygcm93S2V5ID09IFwiZnVuY3Rpb25cIikge1xyXG4gICAgICAgICAga2V5ID0gcm93S2V5KGl0ZW0pO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBrZXkgPSBpdGVtW3Jvd0tleV07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChpdGVtLmNoaWxkTm9kZXMpIHtcclxuICAgICAgICAgIHRoaXMuZ2V0Q2hpbGRyZW5EYXRhKGl0ZW0uY2hpbGROb2Rlcywga2V5cyk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHJlc0tleSA9IFsuLi5rZXlzLCBrZXldO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXNLZXkgPSBbLi4ua2V5cywga2V5XTtcclxuICAgIH1cclxuICAgIHJldHVybiByZXNLZXk7XHJcbiAgfVxyXG5cclxuICByZW5kZXJUb29sQnV0dG9ucyh0b29sYnV0dG9uczogYW55LCB0b29sYmFyRmxhZykge1xyXG4gICAgY29uc3QgZmxhZyA9IHRvb2xidXR0b25zLmxlbmd0aCA+IDU7XHJcbiAgICBjb25zdCB7IHNob3dTZWFyY2ggPSB0cnVlIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgY29uc3QgY29udGVudCA9IHRvb2xidXR0b25zLm1hcCgoaXRlbTogYW55LCBpbmRleDogYW55KSA9PiB7XHJcbiAgICAgIGNvbnN0IHsgY2hpbGRyZW4sIHBhZ2VUeXBlLCBvbkNsaWNrLCBpY29uLCBzaG93LCAuLi5wYXJhbXMgfSA9IGl0ZW0ucHJvcHM7XHJcbiAgICAgIGlmIChpbmRleCA+IDMpIHtcclxuICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICBjbGFzc05hbWU9e2NscyhcclxuICAgICAgICAgICAgICBnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtZWRpdG9yXCIpLFxyXG4gICAgICAgICAgICAgIGdldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS1jb250ZW50LWl0ZW1cIilcclxuICAgICAgICAgICAgKX1cclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPEJ1dHRvblxyXG4gICAgICAgICAgICAgIGtleT17aW5kZXh9XHJcbiAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICAgICAgICAgIG1vcmVPcGVuOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgb25DbGljayAmJiBvbkNsaWNrKCk7XHJcbiAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICB7Li4ucGFyYW1zfVxyXG4gICAgICAgICAgICAgIHR5cGU9e1wibGlua1wifVxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtaWNvblwiKX0+XHJcbiAgICAgICAgICAgICAgICB7aWNvbn1cclxuICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtdGV4dFwiKX0+XHJcbiAgICAgICAgICAgICAgICB7Y2hpbGRyZW59XHJcbiAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICA8L0J1dHRvbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHJldHVybiAoXHJcbiAgICAgIDxkaXZcclxuICAgICAgICBjbGFzc05hbWU9e2NscyhnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtdG9vbC1idXR0b25zXCIpKX1cclxuICAgICAgICBzdHlsZT17eyBtYXJnaW5MZWZ0OiAwIH19XHJcbiAgICAgID5cclxuICAgICAgICB7dG9vbGJ1dHRvbnMubWFwKChpdGVtOiBhbnksIGluZGV4OiBhbnkpID0+IHtcclxuICAgICAgICAgIGlmIChmbGFnKSB7XHJcbiAgICAgICAgICAgIGlmIChpbmRleCA8IDQpIHtcclxuICAgICAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICBrZXk9e2luZGV4fVxyXG4gICAgICAgICAgICAgICAgICBzdHlsZT17e1xyXG4gICAgICAgICAgICAgICAgICAgIG1hcmdpblJpZ2h0OiAxMixcclxuICAgICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAge2l0ZW19XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGluZGV4ID09IDQpIHtcclxuICAgICAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICAgICAgPFBvcG92ZXJcclxuICAgICAgICAgICAgICAgICAgY29udGVudD17Y29udGVudH1cclxuICAgICAgICAgICAgICAgICAgdGl0bGU9e251bGx9XHJcbiAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbVwiXHJcbiAgICAgICAgICAgICAgICAgIGtleT17aW5kZXh9XHJcbiAgICAgICAgICAgICAgICAgIG9wZW49e3RoaXMuc3RhdGUubW9yZU9wZW59XHJcbiAgICAgICAgICAgICAgICAgIG9uT3BlbkNoYW5nZT17KG9wZW4pID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAob3Blbikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1vcmVPcGVuOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBtb3JlT3BlbjogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICAgIC8vIG9wZW49e3RydWV9XHJcbiAgICAgICAgICAgICAgICAgIC8vIG92ZXJsYXlDbGFzc05hbWU9e3N0eWxlc1sncG9wLWJveCddfVxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICA8QnV0dG9uIHR5cGU9XCJwcmltYXJ5XCI+XHJcbiAgICAgICAgICAgICAgICAgICAg5pu05aSaIDxEb3duT3V0bGluZWQgLz5cclxuICAgICAgICAgICAgICAgICAgPC9CdXR0b24+XHJcbiAgICAgICAgICAgICAgICA8L1BvcG92ZXI+XHJcbiAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICBrZXk9e2luZGV4fVxyXG4gICAgICAgICAgICAgICAgc3R5bGU9e3tcclxuICAgICAgICAgICAgICAgICAgbWFyZ2luUmlnaHQ6IGluZGV4ID09IHRvb2xidXR0b25zLmxlbmd0aCAtIDEgPyAwIDogMTIsXHJcbiAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIHtpdGVtfVxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pfVxyXG4gICAgICA8L2Rpdj5cclxuICAgICk7XHJcbiAgfVxyXG4gIHJlbmRlckNsb3VtbkJ1dHRvbihjb2x1bW5CdXR0b25zOiBhbnksIHJvd1JlY29yZDogYW55KSB7XHJcbiAgICBjb25zdCB7IGFjdGlvblByb3BzLCB0YWJsZVByb3BzID0ge30gfSA9IHRoaXMucHJvcHM7XHJcbiAgICBjb25zdCB7IGJhc2VBY3Rpb25Db2x1bW4gfSA9IGNvbmZpZygpO1xyXG4gICAgY29uc3QgbmV3QnV0dG9ucyA9IFtdO1xyXG4gICAgY29uc3QgeyByb3dLZXkgPSBcImlkXCIgfSA9IHRhYmxlUHJvcHM7XHJcbiAgICBsZXQga2V5ID0gXCJcIjtcclxuICAgIGlmICh0eXBlb2Ygcm93S2V5ID09IFwiZnVuY3Rpb25cIikge1xyXG4gICAgICBrZXkgPSByb3dLZXkocm93UmVjb3JkKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGtleSA9IHJvd1JlY29yZFtyb3dLZXldO1xyXG4gICAgfVxyXG4gICAgbGV0IHNob3dJY29uID0gZmFsc2U7XHJcbiAgICBpZiAoYWN0aW9uUHJvcHM/LnNob3dJY29uID09PSB0cnVlIHx8IGJhc2VBY3Rpb25Db2x1bW4uc2hvd0ljb24gPT09IHRydWUpXHJcbiAgICAgIHNob3dJY29uID0gdHJ1ZTtcclxuICAgIGNvbHVtbkJ1dHRvbnMubWFwKChpdGVtOiBhbnksIGluZGV4OiBhbnkpID0+IHtcclxuICAgICAgY29uc3QgeyBjaGlsZHJlbiwgcGFnZVR5cGUsIG9uQ2xpY2ssIGljb24sIHJlY29yZFNob3csIC4uLnBhcmFtcyB9ID1cclxuICAgICAgICBpdGVtLnByb3BzO1xyXG4gICAgICBpZiAocmVjb3JkU2hvdykge1xyXG4gICAgICAgIGlmICh0eXBlb2YgcmVjb3JkU2hvdyA9PSBcInN0cmluZ1wiKSB7XHJcbiAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICBjb25zdCBldmVudE9wdGlvbiA9IHtcclxuICAgICAgICAgICAgICByZWNvcmQ6IHJvd1JlY29yZCxcclxuICAgICAgICAgICAgICBwYWdlUmVmOiB0aGlzLnByb3BzLnBhZ2VSZWYsXHJcbiAgICAgICAgICAgICAgZnVuY3M6IHRoaXMucHJvcHMuZnVuY3MsXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIGNvbnN0IFV0aWxzID0geyAuLi50aGlzLnByb3BzLlVpdGxzIH07XHJcbiAgICAgICAgICAgIGxldCBmdW5jID0gbmV3IEZ1bmN0aW9uKFwiZXZlbnRPcHRpb24sVXRpbHNcIiwgcmVjb3JkU2hvdyk7XHJcbiAgICAgICAgICAgIGNvbnN0IHNob3cgPSBmdW5jKGV2ZW50T3B0aW9uLCBVdGlscyk7XHJcbiAgICAgICAgICAgIHNob3cgJiYgbmV3QnV0dG9ucy5wdXNoKGl0ZW0pO1xyXG4gICAgICAgICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICBsZXQgcmVjb3JkID0gcm93UmVjb3JkO1xyXG4gICAgICAgICAgICBpZiAoZXZhbChyZWNvcmRTaG93KSkge1xyXG4gICAgICAgICAgICAgIG5ld0J1dHRvbnMucHVzaChpdGVtKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHJlY29yZFNob3cgPT0gXCJmdW5jdGlvblwiKSB7XHJcbiAgICAgICAgICBjb25zdCBzaG93ID0gcmVjb3JkU2hvdyhyb3dSZWNvcmQpO1xyXG4gICAgICAgICAgc2hvdyAmJiBuZXdCdXR0b25zLnB1c2goaXRlbSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIG5ld0J1dHRvbnMucHVzaChpdGVtKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICBsZXQgbnVtYmVyID0gYWN0aW9uUHJvcHM/LmJ1dHRvbk51bWJlclxyXG4gICAgICA/IGFjdGlvblByb3BzPy5idXR0b25OdW1iZXJcclxuICAgICAgOiBiYXNlQWN0aW9uQ29sdW1uPy5idXR0b25OdW1iZXJcclxuICAgICAgPyBiYXNlQWN0aW9uQ29sdW1uPy5idXR0b25OdW1iZXJcclxuICAgICAgOiAzO1xyXG4gICAgbGV0IGZsYWcgPSBmYWxzZTtcclxuICAgIGlmIChudW1iZXIgPT0gXCJhbGxcIikge1xyXG4gICAgICBmbGFnID0gZmFsc2U7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBmbGFnID0gbmV3QnV0dG9ucy5sZW5ndGggPiBudW1iZXI7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgY29udGVudCA9IG5ld0J1dHRvbnMubWFwKChpdGVtOiBhbnksIGluZGV4OiBhbnkpID0+IHtcclxuICAgICAgY29uc3QgeyBjaGlsZHJlbiwgcGFnZVR5cGUsIG9uQ2xpY2ssIHJlY29yZFNob3csIGljb24sIHNob3csIC4uLnBhcmFtcyB9ID1cclxuICAgICAgICBpdGVtLnByb3BzO1xyXG4gICAgICBpZiAoaW5kZXggPiBOdW1iZXIobnVtYmVyKSAtIDEpIHtcclxuICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgPEJ1dHRvblxyXG4gICAgICAgICAgICBjbGFzc05hbWU9e2NscyhcclxuICAgICAgICAgICAgICBnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtZWRpdG9yXCIpLFxyXG4gICAgICAgICAgICAgIGdldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS1jb250ZW50LWl0ZW1cIilcclxuICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAga2V5PXtpbmRleH1cclxuICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xyXG4gICAgICAgICAgICAgIGxldCBkYXRhID0geyAuLi50aGlzLnN0YXRlLnBvcG9wZW5zIH07XHJcbiAgICAgICAgICAgICAgZGF0YVtyb3dSZWNvcmQuaWRdID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICAgICAgICBwb3BvcGVuczogZGF0YSxcclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICBvbkNsaWNrICYmIG9uQ2xpY2socm93UmVjb3JkKTtcclxuICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgey4uLnBhcmFtc31cclxuICAgICAgICAgICAgdHlwZT17XCJsaW5rXCJ9XHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIHtzaG93SWNvbiAhPT0gZmFsc2UgJiYgKFxyXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLWljb25cIil9PlxyXG4gICAgICAgICAgICAgICAge2ljb259XHJcbiAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICApfVxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS10ZXh0XCIpfT5cclxuICAgICAgICAgICAgICB7Y2hpbGRyZW59XHJcbiAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgIDwvQnV0dG9uPlxyXG4gICAgICAgICk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIG5ld0J1dHRvbnMubWFwKChpdGVtOiBhbnksIGluZGV4OiBhbnkpID0+IHtcclxuICAgICAgY29uc3QgeyBjaGlsZHJlbiwgcGFnZVR5cGUsIG9uQ2xpY2ssIHJlY29yZFNob3csIGljb24sIC4uLnBhcmFtcyB9ID1cclxuICAgICAgICBpdGVtLnByb3BzO1xyXG4gICAgICBpZiAoZmxhZykge1xyXG4gICAgICAgIGlmIChpbmRleCA8IG51bWJlcikge1xyXG4gICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgPEJ1dHRvblxyXG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xzKGdldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS1lZGl0b3JcIiksIHtcclxuICAgICAgICAgICAgICAgIFtnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtZWRpdG9yLWZpcnN0XCIpXTogaW5kZXggPT09IDAsXHJcbiAgICAgICAgICAgICAgfSl9XHJcbiAgICAgICAgICAgICAga2V5PXtpbmRleH1cclxuICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBvbkNsaWNrICYmIG9uQ2xpY2socm93UmVjb3JkKTtcclxuICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgIGljb249e2ljb259XHJcbiAgICAgICAgICAgICAgey4uLnBhcmFtc31cclxuICAgICAgICAgICAgICB0eXBlPXtcImxpbmtcIn1cclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIHtzaG93SWNvbiAhPT0gZmFsc2UgJiYgKFxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtaWNvblwiKX0+XHJcbiAgICAgICAgICAgICAgICAgIHtpY29ufVxyXG4gICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtdGV4dFwiKX0+XHJcbiAgICAgICAgICAgICAgICB7Y2hpbGRyZW59XHJcbiAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICA8L0J1dHRvbj5cclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfSBlbHNlIGlmIChpbmRleCA9PSBudW1iZXIpIHtcclxuICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgIDxQb3BvdmVyXHJcbiAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tXCJcclxuICAgICAgICAgICAgICB0aXRsZT17bnVsbH1cclxuICAgICAgICAgICAgICBjb250ZW50PXtjb250ZW50fVxyXG4gICAgICAgICAgICAgIHRyaWdnZXI9e1tcImNsaWNrXCJdfVxyXG4gICAgICAgICAgICAgIGtleT17aW5kZXh9XHJcbiAgICAgICAgICAgICAgb3Blbj17dGhpcy5zdGF0ZS5wb3BvcGVuc1trZXldIHx8IGZhbHNlfVxyXG4gICAgICAgICAgICAgIG9uT3BlbkNoYW5nZT17KG9wZW4pID0+IHtcclxuICAgICAgICAgICAgICAgIGlmIChvcGVuKSB7XHJcbiAgICAgICAgICAgICAgICAgIGxldCBkYXRhID0geyAuLi50aGlzLnN0YXRlLnBvcG9wZW5zIH07XHJcbiAgICAgICAgICAgICAgICAgIGRhdGFba2V5XSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgICAgICAgICAgIHBvcG9wZW5zOiBkYXRhLFxyXG4gICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgICAgICAgICAgIHBvcG9wZW5zOiB7fSxcclxuICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAvLyBvdmVybGF5Q2xhc3NOYW1lPXtzdHlsZXNbJ3BvcCddfVxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPGEgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtZWRpdG9yXCIpfT5cclxuICAgICAgICAgICAgICAgIDxFbGxpcHNpc091dGxpbmVkIC8+XHJcbiAgICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgICA8L1BvcG92ZXI+XHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgIDxCdXR0b25cclxuICAgICAgICAgICAgY2xhc3NOYW1lPXtjbHMoZ2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLWVkaXRvclwiKSwge1xyXG4gICAgICAgICAgICAgIFtnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtZWRpdG9yLWZpcnN0XCIpXTogaW5kZXggPT09IDAsXHJcbiAgICAgICAgICAgIH0pfVxyXG4gICAgICAgICAgICBrZXk9e2luZGV4fVxyXG4gICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XHJcbiAgICAgICAgICAgICAgb25DbGljayAmJiBvbkNsaWNrKHJvd1JlY29yZCk7XHJcbiAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgIHsuLi5wYXJhbXN9XHJcbiAgICAgICAgICAgIHR5cGU9XCJsaW5rXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAge3Nob3dJY29uICE9PSBmYWxzZSAmJiAoXHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtaWNvblwiKX0+XHJcbiAgICAgICAgICAgICAgICB7aWNvbn1cclxuICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLXRleHRcIil9PlxyXG4gICAgICAgICAgICAgIHtjaGlsZHJlbn1cclxuICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgPC9CdXR0b24+XHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICAvLyB9XHJcbiAgfVxyXG4gIC8v5qCR54K55Ye75LqL5Lu2XHJcbiAgdHJlZVNlbGVjdChzZWxlY3RlZEtleXM6IGFueSwgb2JqOiBhbnkpIHtcclxuICAgIGxldCBrZXl3b3JkID0gXCJcIjtcclxuICAgIGNvbnN0IHtcclxuICAgICAgc2VhcmNoS2V5ID0gXCJrZXlcIixcclxuICAgICAgc2VhcmNoRmllbGQgPSBcIlwiLFxyXG4gICAgICBwYXJhbnRTZWxlY3QgPSB0cnVlLFxyXG4gICAgfSA9IHRoaXMucHJvcHMudHJlZVByb3BzO1xyXG4gICAgY29uc3QgeyB0cmVlU2VsZWN0ZWRLZXkgfSA9IHRoaXMuc3RhdGU7XHJcbiAgICBjb25zdCB7IHNlbGVjdGVkLCBzZWxlY3RlZE5vZGVzIH0gPSBvYmo7XHJcblxyXG4gICAgaWYgKHNlbGVjdGVkKSB7XHJcbiAgICAgIGtleXdvcmQgPSBzZWxlY3RlZE5vZGVzWzBdLmRhdGFyZWYuYXR0cmlidXRlW3NlYXJjaEtleV07XHJcbiAgICAgIGlmIChwYXJhbnRTZWxlY3QpIHtcclxuICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgIHRyZWVTZWxlY3RlZEtleTogc2VsZWN0ZWRLZXlzWzBdLFxyXG4gICAgICAgICAgdHJlZVNlYXJjaFByYW1zOiB7IFtzZWFyY2hGaWVsZF06IGtleXdvcmQgfSxcclxuICAgICAgICB9KTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBpZiAoc2VsZWN0ZWROb2Rlc1swXS5pc0xlYWYgfHwgIXNlbGVjdGVkTm9kZXNbMF0uY2hpbGRyZW4pIHtcclxuICAgICAgICAgIGlmIChzZWxlY3RlZEtleXNbMF0gIT09IHRyZWVTZWxlY3RlZEtleSkge1xyXG4gICAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgICAgICB0cmVlU2VsZWN0ZWRLZXk6IHNlbGVjdGVkS2V5c1swXSxcclxuICAgICAgICAgICAgICB0cmVlU2VhcmNoUHJhbXM6IHsgW3NlYXJjaEZpZWxkXToga2V5d29yZCB9LFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgIHRyZWVTZWxlY3RlZEtleToga2V5d29yZCxcclxuICAgICAgICB0cmVlU2VhcmNoUHJhbXM6IHt9LFxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLnByb3BzLm9uVHJlZVNlbGVjdCkge1xyXG4gICAgICB0aGlzLnByb3BzLm9uVHJlZVNlbGVjdChzZWxlY3RlZEtleXMsIG9iaik7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnN0IGZyb21WYWx1ZSA9IHRoaXMuc2VhcmNoUmVmPy5jdXJyZW50Py5nZXRTZWFyY2hWYWx1ZXMoKSB8fCB7fTtcclxuICAgIHNlYXJjaEZpZWxkICYmIHRoaXMudGFibGVMb2FkKHsgLi4uZnJvbVZhbHVlLCBbc2VhcmNoRmllbGRdOiBrZXl3b3JkIH0pO1xyXG4gICAgdGhpcy5wcm9wcy5vbkNhbGxCYWNrcz8udHJlZVNlbGVjdENhbGxCYWNrICYmXHJcbiAgICAgIGNvbnZlckZ1bmN0aW9uKFxyXG4gICAgICAgIHRoaXMucHJvcHMub25DYWxsQmFja3M/LnRyZWVTZWxlY3RDYWxsQmFjayxcclxuICAgICAgICB7IHBhZ2VSZWY6IHRoaXMucHJvcHMucGFnZVJlZiwgc2VsZWN0ZWRLZXlzOiBzZWxlY3RlZEtleXMsIG9iajogb2JqIH0sXHJcbiAgICAgICAgdGhpcy5wcm9wcy5VdGlsc1xyXG4gICAgICApO1xyXG4gICAgLy8gdXRpbHMuY2FsbGJhY2sodGhpcy5wcm9wcy5vbkNhbGxCYWNrcz8udHJlZVNlbGVjdENhbGxCYWNrLCB0aGlzLCBbXHJcbiAgICAvLyAgIHNlbGVjdGVkS2V5cyxcclxuICAgIC8vICAgb2JqLFxyXG4gICAgLy8gXSk7XHJcbiAgfVxyXG4gIHJlc2V0U2VhcmNoKCkge1xyXG4gICAgdGhpcy5zZWFyY2hSZWYuY3VycmVudD8ucmVzZXRGaWVsZHMoKTtcclxuICB9XHJcbiAgZ2V0VGV4dChwcm9wcywgdGV4dCkge1xyXG4gICAgbGV0IG5ld1RleHQgPSB0ZXh0O1xyXG4gICAgaWYgKHByb3BzPy5kYXRhICYmIHByb3BzPy5kYXRhPy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGxldCBkYXRhID0gcHJvcHMuZGF0YTtcclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBkYXRhPy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGlmIChkYXRhW2ldLnZhbHVlID09IHRleHQpIHtcclxuICAgICAgICAgIG5ld1RleHQgPSBkYXRhW2ldLmxhYmVsO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIG5ld1RleHQ7XHJcbiAgfVxyXG4gIHNldFRhYmxlRGF0YShkYXRhKSB7XHJcbiAgICB0aGlzLnRhYmxlUmVmLmN1cnJlbnQ/LnN0b3JlPy5zZXREYXRhKGRhdGEpO1xyXG4gIH1cclxuICBzZXRUcmVlRGF0YShkYXRhKSB7XHJcbiAgICB0aGlzLnRyZWVSZWYuY3VycmVudD8uc3RvcmU/LnNldERhdGEoZGF0YSk7XHJcbiAgfVxyXG4gIGdldFNlbGVjdGVkS2V5ID0gKHNlbGVjdGVkKSA9PiB7XHJcbiAgICBsZXQgcmVzID0gW107XHJcbiAgICBmb3IgKGxldCBrZXkgaW4gc2VsZWN0ZWQpIHtcclxuICAgICAgY29uc3Qga2V5cyA9IHNlbGVjdGVkW2tleV07XHJcbiAgICAgIGlmIChrZXlzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICByZXMgPSBbLi4ucmVzLCAuLi5rZXlzXTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJlcztcclxuICB9O1xyXG5cclxuICBjb252ZXJ0UXVlcnlQYXJhbXMoKSB7XHJcbiAgICBjb25zdCB7IHJlcXVlc3RQYXJhbXMgPSB7fSB9ID0gdGhpcy5wcm9wcztcclxuICAgIGxldCBxdWVyeVBhcmFtczogYW55ID0gcmVxdWVzdFBhcmFtcy5xdWVyeVBhcmFtcztcclxuICAgIHJldHVybiBjb252ZXJ0U3RyaW5nVG9PYmoocXVlcnlQYXJhbXMsIHRoaXMucHJvcHMuVXRpbHMgfHwge30sIHtcclxuICAgICAgZnVuY3M6IHRoaXMucHJvcHMuZnVuY3MsXHJcbiAgICAgIHBhZ2VSZWY6IHRoaXMucHJvcHMucGFnZVJlZixcclxuICAgIH0pO1xyXG4gICAgLy8gaWYgKHF1ZXJ5UGFyYW1zICYmIHR5cGVvZiBxdWVyeVBhcmFtcyA9PSBcInN0cmluZ1wiKSB7XHJcbiAgICAvLyAgIGNvbnN0IFV0aWxzID0gdGhpcy5wcm9wcy5VdGlscyB8fCB7fTtcclxuICAgIC8vICAgbGV0IGZ1bmMgPSBuZXcgRnVuY3Rpb24oXCJVdGlsc1wiLCBxdWVyeVBhcmFtcyk7XHJcbiAgICAvLyAgIGxldCBjb252ZXJQYXJhbXMgPSBmdW5jKFV0aWxzKTtcclxuICAgIC8vICAgcXVlcnlQYXJhbXMgPSBjb252ZXJQYXJhbXM7XHJcbiAgICAvLyB9IGVsc2Uge1xyXG4gICAgLy8gICBxdWVyeVBhcmFtcyA9IHF1ZXJ5UGFyYW1zIHx8IHt9O1xyXG4gICAgLy8gfVxyXG4gICAgLy8gcmV0dXJuIHF1ZXJ5UGFyYW1zO1xyXG4gIH1cclxuXHJcbiAgLy8g6K6h566X6KGo5aS06auY5bqm55qE5pa55rOVXHJcbiAgY2FsY3VsYXRlVGFibGVIZWFkZXJIZWlnaHQgPSAoKSA9PiB7XHJcbiAgICBpZiAodGhpcy50YWJsZVdyYXBwZXJSZWYuY3VycmVudCkge1xyXG4gICAgICBjb25zdCB0YWJsZUhlYWRlciA9XHJcbiAgICAgICAgdGhpcy50YWJsZVdyYXBwZXJSZWYuY3VycmVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFxyXG4gICAgICAgICAgXCJhbnQtdGFibGUtdGhlYWRcIlxyXG4gICAgICAgIClbMF07XHJcbiAgICAgIGlmICh0YWJsZUhlYWRlcikge1xyXG4gICAgICAgIGNvbnN0IGhlYWRlckhlaWdodCA9IHRhYmxlSGVhZGVyLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmhlaWdodDtcclxuICAgICAgICBpZiAoaGVhZGVySGVpZ2h0ICE9PSB0aGlzLnN0YXRlLnRhYmxlSGVhZGVySGVpZ2h0KSB7XHJcbiAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgICAgdGFibGVIZWFkZXJIZWlnaHQ6IGhlYWRlckhlaWdodCxcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH07XHJcbiAgdGhyb3R0bGVDYWxjdWxhdGVUYWJsZUhlYWRlckhlaWdodCA9IHRocm90dGxlKFxyXG4gICAgdGhpcy5jYWxjdWxhdGVUYWJsZUhlYWRlckhlaWdodCxcclxuICAgIDUwMFxyXG4gICk7XHJcblxyXG4gIC8vIOS8mOWMluaLluaLveebuOWFs+aWueazlVxyXG4gIGhhbmRsZU1vdXNlRG93bihlOiBSZWFjdC5Nb3VzZUV2ZW50KSB7XHJcbiAgICBlLnByZXZlbnREZWZhdWx0KCk7XHJcblxyXG4gICAgLy8g5Yib5bu66YGu572p5bGC5Lul5aSE55CGaWZyYW1l5Zy65pmvXHJcbiAgICBjb25zdCBtYXNrID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtcclxuICAgIG1hc2suc3R5bGUuY3NzVGV4dCA9IGBcclxuICAgICAgcG9zaXRpb246IGZpeGVkO1xyXG4gICAgICB0b3A6IDA7XHJcbiAgICAgIGxlZnQ6IDA7XHJcbiAgICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgICBoZWlnaHQ6IDEwMCU7XHJcbiAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xyXG4gICAgICB6LWluZGV4OiA5OTk5O1xyXG4gICAgICBjdXJzb3I6IGNvbC1yZXNpemU7XHJcbiAgICBgO1xyXG4gICAgbWFzay5pZCA9IFwiZHJhZy1tYXNrXCI7XHJcbiAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKG1hc2spO1xyXG5cclxuICAgIGNvbnN0IGhhbmRsZU1vdXNlTW92ZSA9IChlOiBNb3VzZUV2ZW50KSA9PiB7XHJcbiAgICAgIGNvbnN0IG5ld1dpZHRoID0gZS5zY3JlZW5YO1xyXG4gICAgICAvLyDpmZDliLbmnIDlsI8xMDBweO+8jOacgOWkpzUwMHB4XHJcbiAgICAgIGlmIChuZXdXaWR0aCA+PSA1MCAmJiBuZXdXaWR0aCA8PSA4MDApIHtcclxuICAgICAgICB0aGlzLnNldFN0YXRlKHsgdHJlZVdpZHRoOiBuZXdXaWR0aCB9KTtcclxuICAgICAgfVxyXG4gICAgfTtcclxuXHJcbiAgICBjb25zdCB0aHJvdHRsZWRNb3VzZU1vdmUgPSB0aHJvdHRsZShoYW5kbGVNb3VzZU1vdmUsIDE2KTtcclxuXHJcbiAgICBjb25zdCBoYW5kbGVNb3VzZVVwID0gKCkgPT4ge1xyXG4gICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKFwibW91c2Vtb3ZlXCIsIHRocm90dGxlZE1vdXNlTW92ZSk7XHJcbiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJtb3VzZXVwXCIsIGhhbmRsZU1vdXNlVXApO1xyXG4gICAgICAvLyDnp7vpmaTpga7nvanlsYJcclxuICAgICAgY29uc3QgbWFzayA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwiZHJhZy1tYXNrXCIpO1xyXG4gICAgICBpZiAobWFzaykge1xyXG4gICAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQobWFzayk7XHJcbiAgICAgIH1cclxuICAgIH07XHJcblxyXG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcIm1vdXNlbW92ZVwiLCB0aHJvdHRsZWRNb3VzZU1vdmUpO1xyXG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcIm1vdXNldXBcIiwgaGFuZGxlTW91c2VVcCk7XHJcbiAgfVxyXG5cclxuICByZW5kZXIoKSB7XHJcbiAgICBjb25zdCB7XHJcbiAgICAgIGNvbHVtbnMgPSBbXSxcclxuICAgICAgc2hvd1NlYXJjaCA9IHRydWUsXHJcbiAgICAgIGNoaWxkcmVuLFxyXG4gICAgICBzdWJtaXRVcmwgPSBcIlwiLFxyXG4gICAgICB0YWJsZVByb3BzID0ge30sXHJcbiAgICAgIHRyZWVQcm9wcyA9IHt9LFxyXG4gICAgICBmb3JtUGFnZVByb3BzID0ge30sXHJcbiAgICAgIHNob3dMZWZ0ID0gZmFsc2UsXHJcbiAgICAgIHN1Ym1pdFBhcmFtcyA9IHt9LFxyXG4gICAgICBzaG93VG9vbEJ1dHRvbiA9IHRydWUsXHJcbiAgICAgIGJ1dHRvbnMgPSBbXSxcclxuICAgICAgZWRpdG9yRm9ybSA9IHRydWUsXHJcbiAgICAgIG9uU2hvd0Zvcm0sXHJcbiAgICAgIGZvcm1DaGFuZ2VWYWxpZCA9IHRydWUsXHJcbiAgICAgIGNsYXNzTmFtZSxcclxuICAgICAgdG9vbEJ1dHRvblBvc2l0aW9uID0gXCJidXR0b21cIixcclxuICAgICAgYWN0aW9uUHJvcHMsXHJcbiAgICAgIGRlbGV0ZVBvc2l0aW9uID0gXCJ0b29sYmFyXCIsXHJcbiAgICAgIGJ1dHRvbkNsaWNrID0ge30sXHJcbiAgICAgIHBlcm1pc3Npb24gPSB7IGhhczogZmFsc2UgfSxcclxuICAgICAgcmVxdWVzdFBhcmFtcyA9IHt9LFxyXG4gICAgICByZXF1ZXN0VXJscyA9IHt9LFxyXG4gICAgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBjb25zdCB7XHJcbiAgICAgIHN0b3JlOiB0YWJsZVN0b3JlID0ge30sXHJcbiAgICAgIGZpbHRlckNvbHVtbiA9IHRydWUsXHJcbiAgICAgIGFjdGlvbkNvbHVtbiA9IHRydWUsXHJcbiAgICAgIHNob3dSb3dTZWxlY3Rpb24gPSB0cnVlLFxyXG4gICAgICBjb2x1bW5PcmRlciA9IHRydWUsXHJcbiAgICAgIGV4cGFuZGFibGUgPSB7fSxcclxuICAgICAgcGFyYW50U2VsZWN0ID0gdHJ1ZSxcclxuICAgICAgdGl0bGU6IHRhYmxlVGl0bGUsXHJcbiAgICAgIC4uLm90aGVydGFibGVQYXJhbXNcclxuICAgIH0gPSB0YWJsZVByb3BzO1xyXG4gICAgbGV0IG5ld1RhYmxlU3RvcmUgPSB7IC4uLnRhYmxlU3RvcmUgfTtcclxuICAgIGlmIChyZXF1ZXN0UGFyYW1zLnF1ZXJ5UGFyYW1zKSB7XHJcbiAgICAgIGxldCBxdWVyeVBhcmFtczogYW55ID0gdGhpcy5jb252ZXJ0UXVlcnlQYXJhbXMoKTtcclxuICAgICAgbGV0IGRhdGEgPSBxdWVyeVBhcmFtcz8uZGF0YSB8fCBxdWVyeVBhcmFtcz8ucGFyYW1zIHx8IHt9O1xyXG4gICAgICBuZXdUYWJsZVN0b3JlLnJlcXVlc3RDb25maWcgPSB7XHJcbiAgICAgICAgcGFyYW1zOiB7IC4uLmRhdGEsIC4uLm5ld1RhYmxlU3RvcmUucmVxdWVzdENvbmZpZz8ucGFyYW1zIH0sXHJcbiAgICAgIH07XHJcbiAgICB9XHJcbiAgICBjb25zdCB7XHJcbiAgICAgIHN0b3JlOiB0cmVlU3RvcmUgPSB7fSxcclxuICAgICAgc2hvd1NlYXJjaDogdHJlZVNlYXJjaCA9IHRydWUsXHJcbiAgICAgIHRpdGxlQWxpYXMgPSBcInRpdGxlXCIsXHJcbiAgICAgIHRpdGxlOiB0cmVlVGl0bGUsXHJcbiAgICAgIC4uLm90aGVydHJlZVBhcmFtc1xyXG4gICAgfSA9IHRyZWVQcm9wcztcclxuICAgIGxldCBfdGhpcyA9IHRoaXM7XHJcbiAgICBsZXQgdGFibGVQYXJhbXMgPSB7XHJcbiAgICAgIGZpbHRlckNvbHVtbixcclxuICAgICAgc3RvcmU6IHtcclxuICAgICAgICBsaXN0ZW5lcnM6IHtcclxuICAgICAgICAgIGxvYWQ6IChkYXRhKSA9PiB7XHJcbiAgICAgICAgICAgIF90aGlzLnByb3BzLm9uQ2FsbEJhY2tzPy50YWJsZUxvYWRDYWxsQmFjayAmJlxyXG4gICAgICAgICAgICAgIF90aGlzLnByb3BzLm9uQ2FsbEJhY2tzPy50YWJsZUxvYWRDYWxsQmFjayhkYXRhKTtcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgfSxcclxuICAgICAgICAuLi5uZXdUYWJsZVN0b3JlLFxyXG4gICAgICB9LFxyXG4gICAgICAuLi5vdGhlcnRhYmxlUGFyYW1zLFxyXG4gICAgfSBhcyBhbnk7XHJcbiAgICBjb25zdCBkZWZhdWx0VmFsdWU6IGFueSA9IHt9O1xyXG4gICAgY29uc3QgY29sdW1uQnV0dG9uczogYW55ID0gW107XHJcbiAgICBjb25zdCB7IGVsZW1lbnRIZWlnaHQgfSA9IHRoaXMuc3RhdGU7XHJcbiAgICBsZXQgcGVybWlzc2lvbkJ1dHRvbnMgPSBbXTtcclxuICAgIGlmIChwZXJtaXNzaW9uLmhhcyAmJiBwZXJtaXNzaW9uLm1lbnVDb2RlKSB7XHJcbiAgICAgIHBlcm1pc3Npb25CdXR0b25zID1cclxuICAgICAgICBnZXRCdXR0b25QZXJtaXNzb25zKHBlcm1pc3Npb24ubWVudUNvZGUpLnBlcm1pc3NvbnMgfHwgW107XHJcbiAgICB9XHJcbiAgICBjb25zdCBvYmogPSBjb252ZXJ0Q29sdW1ucyhjb2x1bW5zLCB7fSk7XHJcbiAgICBsZXQgdGFibGVDb2x1bW46IGFueVtdID0gZ2V0TmV3Q29sdW1ucyhjb2x1bW5zLCB0aGlzLnByb3BzKTtcclxuICAgIGNvbnN0IHNlYXJjaEZvcm1zID0gb2JqLnNlYXJjaEZvcm1zIHx8IFtdO1xyXG4gICAgY29uc3QgZWRpdG9yRm9ybXMgPSBvYmouZWRpdG9yRm9ybXMgfHwgW107XHJcbiAgICBjb25zdCB0b29sQnV0dG9uczogYW55ID0gW107XHJcbiAgICBjb25zdCBmb3JtQnV0dG9uOiBhbnkgPSBbXTtcclxuICAgIGNvbnN0IHsgYmFzZUFjdGlvbkNvbHVtbiB9ID0gY29uZmlnKCk7XHJcbiAgICBsZXQgc2hvd0ljb24gPSB0cnVlO1xyXG4gICAgaWYgKGFjdGlvblByb3BzPy5zaG93SWNvbiA9PT0gZmFsc2UpIHNob3dJY29uID0gZmFsc2U7XHJcbiAgICBlbHNlIGlmIChiYXNlQWN0aW9uQ29sdW1uLnNob3dJY29uID09PSBmYWxzZSkgc2hvd0ljb24gPSBmYWxzZTtcclxuICAgIGNvbnN0IGJ1dHRvbk1hcCA9IHtcclxuICAgICAgZWRpdG9yOiB7IG5hbWU6IFwi57yW6L6RXCIsIGNvZGU6IFwiZWRpdG9yXCIsIGljb246IDxFZGl0T3V0bGluZWQgLz4gfSxcclxuICAgICAgZGVsZXRlOiB7IG5hbWU6IFwi5Yig6ZmkXCIsIGNvZGU6IFwiZGVsZXRlXCIsIGljb246IDxEZWxldGVPdXRsaW5lZCAvPiB9LFxyXG4gICAgICBzZWFyY2g6IHsgbmFtZTogXCLmn6XnnItcIiwgY29kZTogXCJzZWFyY2hcIiwgaWNvbjogPEV5ZU91dGxpbmVkIC8+IH0sXHJcbiAgICB9O1xyXG4gICAgY29uc3QgcmV0dXJuQnV0dG9uID0gKGNvZGUsIHNob3cgPSBcIlwiLCBkZWZhdWx0UHJvcHMgPSB7fSkgPT4ge1xyXG4gICAgICBsZXQgcHJvcHMgPSB7XHJcbiAgICAgICAgaWNvbjogc2hvd0ljb24gPyBidXR0b25NYXBbY29kZV0uaWNvbiA6IG51bGwsXHJcbiAgICAgICAgdHlwZTogXCJsaW5rXCIsXHJcbiAgICAgICAgLi4uZGVmYXVsdFByb3BzLFxyXG4gICAgICB9IGFzIGFueTtcclxuXHJcbiAgICAgIGlmIChzaG93KSB7XHJcbiAgICAgICAgcHJvcHMgPSB7IC4uLnByb3BzLCByZWNvcmRTaG93OiBzaG93IH07XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIChcclxuICAgICAgICA8QnV0dG9uXHJcbiAgICAgICAgICBvbkNsaWNrPXsocmVjb3JkOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgaWYgKGNvZGUgPT0gXCJkZWxldGVcIikge1xyXG4gICAgICAgICAgICAgIHRoaXMub25EZWxldGUocmVjb3JkKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICBpZiAoY29kZSA9PSBcImVkaXRvclwiICYmIGJ1dHRvbkNsaWNrLm9uRWRpdG9yKSB7XHJcbiAgICAgICAgICAgICAgICBjb252ZXJGdW5jdGlvbihcclxuICAgICAgICAgICAgICAgICAgYnV0dG9uQ2xpY2sub25FZGl0b3IsXHJcbiAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICBwYWdlUmVmOiB0aGlzLnByb3BzLnBhZ2VSZWYsXHJcbiAgICAgICAgICAgICAgICAgICAgcmVjb3JkOiByZWNvcmQuYXR0cmlidXRlIHx8IHJlY29yZCxcclxuICAgICAgICAgICAgICAgICAgICBmdW5jczogdGhpcy5wcm9wcy5mdW5jcyxcclxuICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgdGhpcy5wcm9wcy5VdGlsc1xyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICB9IGVsc2UgaWYgKGNvZGUgPT0gXCJzZWFyY2hcIiAmJiBidXR0b25DbGljay5vblNlYXJjaCkge1xyXG4gICAgICAgICAgICAgICAgY29udmVyRnVuY3Rpb24oXHJcbiAgICAgICAgICAgICAgICAgIGJ1dHRvbkNsaWNrLm9uU2VhcmNoLFxyXG4gICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgcGFnZVJlZjogdGhpcy5wcm9wcy5wYWdlUmVmLFxyXG4gICAgICAgICAgICAgICAgICAgIHJlY29yZDogcmVjb3JkLmF0dHJpYnV0ZSB8fCByZWNvcmQsXHJcbiAgICAgICAgICAgICAgICAgICAgZnVuY3M6IHRoaXMucHJvcHMuZnVuY3MsXHJcbiAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgIHRoaXMucHJvcHMuVXRpbHNcclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGlmIChvblNob3dGb3JtKSB7XHJcbiAgICAgICAgICAgICAgICBvblNob3dGb3JtKHJlY29yZC5hdHRyaWJ1dGUgfHwgcmVjb3JkLCBjb2RlKTtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgIHRoaXMuc2hvd0Zvcm0ocmVjb3JkLmF0dHJpYnV0ZSB8fCByZWNvcmQsIGNvZGUsICgpID0+IHtcclxuICAgICAgICAgICAgICAgIGxldCBjYWxsQmFjayA9XHJcbiAgICAgICAgICAgICAgICAgIGNvZGUgPT0gXCJlZGl0b3JcIlxyXG4gICAgICAgICAgICAgICAgICAgID8gdGhpcy5wcm9wcy5vbkNhbGxCYWNrcz8ub25FZGl0b3JDYWxsQmFja1xyXG4gICAgICAgICAgICAgICAgICAgIDogdGhpcy5wcm9wcy5vbkNhbGxCYWNrcz8ub25TZWFyY2hDYWxsQmFjaztcclxuICAgICAgICAgICAgICAgIGNhbGxCYWNrICYmXHJcbiAgICAgICAgICAgICAgICAgIGNvbnZlckZ1bmN0aW9uKFxyXG4gICAgICAgICAgICAgICAgICAgIGNhbGxCYWNrLFxyXG4gICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgIHBhZ2VSZWY6IHRoaXMucHJvcHMucGFnZVJlZixcclxuICAgICAgICAgICAgICAgICAgICAgIHJlY29yZDogcmVjb3JkLmF0dHJpYnV0ZSB8fCByZWNvcmQsXHJcbiAgICAgICAgICAgICAgICAgICAgICBmdW5jczogdGhpcy5wcm9wcy5mdW5jcyxcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucHJvcHMuVXRpbHNcclxuICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfX1cclxuICAgICAgICAgIHsuLi5wcm9wc31cclxuICAgICAgICA+XHJcbiAgICAgICAgICB7YnV0dG9uTWFwW2NvZGVdPy5uYW1lfVxyXG4gICAgICAgIDwvQnV0dG9uPlxyXG4gICAgICApO1xyXG4gICAgfTtcclxuICAgIGNvbnN0IGNoZWNrUGVyc3Npb24gPSAoY29kZSkgPT4ge1xyXG4gICAgICBpZiAoIXBlcm1pc3Npb24uaGFzKSB7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcmV0dXJuIHBlcm1pc3Npb25CdXR0b25zLmluZGV4T2YoY29kZSkgPiAtMTtcclxuICAgICAgfVxyXG4gICAgfTtcclxuICAgIGJ1dHRvbnMubWFwKChpdGVtOiBhbnkpID0+IHtcclxuICAgICAgaWYgKChpdGVtID09IFwiYWRkXCIgfHwgaXRlbS5jb2RlID09IFwiYWRkXCIpICYmIGNoZWNrUGVyc3Npb24oXCJhZGRcIikpIHtcclxuICAgICAgICB0b29sQnV0dG9ucy5wdXNoKFxyXG4gICAgICAgICAgPEJ1dHRvblxyXG4gICAgICAgICAgICB0eXBlPXtcInByaW1hcnlcIn1cclxuICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xyXG4gICAgICAgICAgICAgIGNvbnN0IHsgb25TaG93Rm9ybSwgYnV0dG9uQ2xpY2sgPSB7fSB9ID0gdGhpcy5wcm9wcztcclxuICAgICAgICAgICAgICBpZiAoYnV0dG9uQ2xpY2s/Lm9uQWRkKSB7XHJcbiAgICAgICAgICAgICAgICBjb252ZXJGdW5jdGlvbihcclxuICAgICAgICAgICAgICAgICAgYnV0dG9uQ2xpY2sub25BZGQsXHJcbiAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICBwYWdlUmVmOiB0aGlzLnByb3BzLnBhZ2VSZWYsXHJcbiAgICAgICAgICAgICAgICAgICAgZnVuY3M6IHRoaXMucHJvcHMuZnVuY3MsXHJcbiAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgIHRoaXMucHJvcHMuVXRpbHNcclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGlmIChvblNob3dGb3JtKSB7XHJcbiAgICAgICAgICAgICAgICBvblNob3dGb3JtKG51bGwsIFwiYWRkXCIpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB0aGlzLnNob3dGb3JtKG51bGwsIG51bGwsICgpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMucHJvcHMub25DYWxsQmFja3M/Lm9uQWRkQ2FsbEJhY2sgJiZcclxuICAgICAgICAgICAgICAgICAgY29udmVyRnVuY3Rpb24oXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wcm9wcy5vbkNhbGxCYWNrcz8ub25BZGRDYWxsQmFjayxcclxuICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBwYWdlUmVmOiB0aGlzLnByb3BzLnBhZ2VSZWYsXHJcbiAgICAgICAgICAgICAgICAgICAgICBmdW5jczogdGhpcy5wcm9wcy5mdW5jcyxcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucHJvcHMuVXRpbHNcclxuICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgaWNvbj17PFBsdXNPdXRsaW5lZCAvPn1cclxuICAgICAgICAgID5cclxuICAgICAgICAgICAg5re75YqgXHJcbiAgICAgICAgICA8L0J1dHRvbj5cclxuICAgICAgICApO1xyXG4gICAgICB9IGVsc2UgaWYgKFxyXG4gICAgICAgIChpdGVtID09IFwiZGVsZXRlX2JhdGNoXCIgfHwgaXRlbS5jb2RlID09IFwiZGVsZXRlX2JhdGNoXCIpICYmXHJcbiAgICAgICAgY2hlY2tQZXJzc2lvbihcImRlbGV0ZV9iYXRjaFwiKVxyXG4gICAgICApIHtcclxuICAgICAgICB0b29sQnV0dG9ucy5wdXNoKFxyXG4gICAgICAgICAgPEJ1dHRvblxyXG4gICAgICAgICAgICB0eXBlPXtcInByaW1hcnlcIn1cclxuICAgICAgICAgICAgb25DbGljaz17dGhpcy5vbkRlbGV0ZS5iaW5kKHRoaXMsIG51bGwsIFwidG9vbGJhclwiKX1cclxuICAgICAgICAgICAgaWNvbj17PERlbGV0ZU91dGxpbmVkIC8+fVxyXG4gICAgICAgICAgICBkYW5nZXJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAg5om56YeP5Yig6ZmkXHJcbiAgICAgICAgICA8L0J1dHRvbj5cclxuICAgICAgICApO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGlmIChjaGVja1BlcnNzaW9uKGl0ZW0uY29kZSA/IGl0ZW0uY29kZSA6IGl0ZW0pKSB7XHJcbiAgICAgICAgICBjb2x1bW5CdXR0b25zLnB1c2goXHJcbiAgICAgICAgICAgIHJldHVybkJ1dHRvbihcclxuICAgICAgICAgICAgICBpdGVtLmNvZGUgPyBpdGVtLmNvZGUgOiBpdGVtLFxyXG4gICAgICAgICAgICAgIGl0ZW0ucmVjb3JkU2hvdyxcclxuICAgICAgICAgICAgICBpdGVtLnByb3BzIHx8IHt9XHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICBpZiAoQXJyYXkuaXNBcnJheShjaGlsZHJlbikpIHtcclxuICAgICAgY2hpbGRyZW4ubWFwKChpdGVtOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShpdGVtKSkge1xyXG4gICAgICAgICAgaXRlbS5tYXAoKGNoaWxkKSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgICBjaGlsZD8ucHJvcHM/LnBhZ2VUeXBlID09IFwidG9vbEJ1dHRvblwiICYmXHJcbiAgICAgICAgICAgICAgY2hlY2tQZXJzc2lvbihjaGlsZD8ucHJvcHM/LmNvZGUpXHJcbiAgICAgICAgICAgICkge1xyXG4gICAgICAgICAgICAgIHRvb2xCdXR0b25zLnB1c2goY2hpbGQpO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKFxyXG4gICAgICAgICAgICAgIGNoaWxkPy5wcm9wcz8ucGFnZVR5cGUgPT0gXCJmb3JtQnV0dG9uXCIgJiZcclxuICAgICAgICAgICAgICBjaGVja1BlcnNzaW9uKGNoaWxkPy5wcm9wcz8uY29kZSlcclxuICAgICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgICAgZm9ybUJ1dHRvbi5wdXNoKGNoaWxkKTtcclxuICAgICAgICAgICAgfSBlbHNlIGlmIChcclxuICAgICAgICAgICAgICAoY2hpbGQ/LnByb3BzPy5wYWdlVHlwZSA9PSBcImNvbHVtbkJ1dHRvblwiIHx8XHJcbiAgICAgICAgICAgICAgICBjaGlsZD8ucHJvcHM/LnBhZ2VUeXBlID09IFwiY2xvdW1uQnV0dG9uXCIpICYmXHJcbiAgICAgICAgICAgICAgY2hlY2tQZXJzc2lvbihjaGlsZD8ucHJvcHM/LmNvZGUpXHJcbiAgICAgICAgICAgICkge1xyXG4gICAgICAgICAgICAgIGNvbHVtbkJ1dHRvbnMucHVzaChjaGlsZCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgIGl0ZW0/LnByb3BzPy5wYWdlVHlwZSA9PSBcInRvb2xCdXR0b25cIiAmJlxyXG4gICAgICAgICAgICBjaGVja1BlcnNzaW9uKGl0ZW0/LnByb3BzPy5jb2RlKVxyXG4gICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgIHRvb2xCdXR0b25zLnB1c2goaXRlbSk7XHJcbiAgICAgICAgICB9IGVsc2UgaWYgKFxyXG4gICAgICAgICAgICAoaXRlbT8ucHJvcHM/LnBhZ2VUeXBlID09IFwiY29sdW1uQnV0dG9uXCIgfHxcclxuICAgICAgICAgICAgICBpdGVtPy5wcm9wcz8ucGFnZVR5cGUgPT0gXCJjbG91bW5CdXR0b25cIikgJiZcclxuICAgICAgICAgICAgY2hlY2tQZXJzc2lvbihpdGVtPy5wcm9wcz8uY29kZSlcclxuICAgICAgICAgICkge1xyXG4gICAgICAgICAgICBjb2x1bW5CdXR0b25zLnB1c2goaXRlbSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH0gZWxzZSBpZiAoY2hpbGRyZW4pIHtcclxuICAgICAgY29uc3QgeyBwcm9wcyB9OiBhbnkgPSBjaGlsZHJlbjtcclxuICAgICAgaWYgKHByb3BzPy5wYWdlVHlwZSA9PSBcInRvb2xCdXR0b25cIiAmJiBjaGVja1BlcnNzaW9uKHByb3BzPy5jb2RlKSkge1xyXG4gICAgICAgIHRvb2xCdXR0b25zLnB1c2goY2hpbGRyZW4pO1xyXG4gICAgICB9IGVsc2UgaWYgKFxyXG4gICAgICAgIChwcm9wcz8ucGFnZVR5cGUgPT0gXCJjb2x1bW5CdXR0b25cIiB8fFxyXG4gICAgICAgICAgcHJvcHM/LnBhZ2VUeXBlID09IFwiY2xvdW1uQnV0dG9uXCIpICYmXHJcbiAgICAgICAgY2hlY2tQZXJzc2lvbihwcm9wcz8uY29kZSlcclxuICAgICAgKSB7XHJcbiAgICAgICAgY29sdW1uQnV0dG9ucy5wdXNoKGNoaWxkcmVuKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgYWN0aW9uQ29sdW1uICYmXHJcbiAgICAgIHRhYmxlQ29sdW1uLnB1c2goe1xyXG4gICAgICAgIHRpdGxlOiBcIuaTjeS9nFwiLFxyXG4gICAgICAgIGRhdGFJbmRleDogXCJhY3Rpb25cIixcclxuICAgICAgICBhbGlnbjogYWN0aW9uUHJvcHM/LnRleHRBbGlnblxyXG4gICAgICAgICAgPyBhY3Rpb25Qcm9wcz8udGV4dEFsaWduXHJcbiAgICAgICAgICA6IGJhc2VBY3Rpb25Db2x1bW4udGV4dEFsaWduXHJcbiAgICAgICAgICA/IGJhc2VBY3Rpb25Db2x1bW4udGV4dEFsaWduXHJcbiAgICAgICAgICA6IFwibGVmdFwiLFxyXG4gICAgICAgIHdpZHRoOiBhY3Rpb25Qcm9wcz8ud2lkdGhcclxuICAgICAgICAgID8gYWN0aW9uUHJvcHM/LndpZHRoXHJcbiAgICAgICAgICA6IGJhc2VBY3Rpb25Db2x1bW4ud2lkdGhcclxuICAgICAgICAgID8gYmFzZUFjdGlvbkNvbHVtbi53aWR0aFxyXG4gICAgICAgICAgOiAyMDAsXHJcbiAgICAgICAgZml4ZWQ6IFwicmlnaHRcIixcclxuICAgICAgICByZW5kZXI6ICh0ZXh0OiBhbnksIHJlY29yZDogYW55KSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLWFjdGlvblwiKX0+XHJcbiAgICAgICAgICAgICAge3RoaXMucmVuZGVyQ2xvdW1uQnV0dG9uKGNvbHVtbkJ1dHRvbnMsIHJlY29yZCl9XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9LFxyXG4gICAgICB9KTtcclxuXHJcbiAgICBpZiAoY29sdW1uT3JkZXIpXHJcbiAgICAgIHRhYmxlQ29sdW1uID0gW1xyXG4gICAgICAgIHtcclxuICAgICAgICAgIHRpdGxlOiBcIuW6j+WPt1wiLFxyXG4gICAgICAgICAgd2lkdGg6IDgwLFxyXG4gICAgICAgICAgYWxpZ246IFwiY2VudGVyXCIsXHJcbiAgICAgICAgICByZW5kZXI6ICh0ZXh0LCByZWFjb3JkLCBpbmRleCkgPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4gPD57aW5kZXggKyAxfTwvPjtcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgfSxcclxuICAgICAgICAuLi50YWJsZUNvbHVtbixcclxuICAgICAgXTtcclxuICAgIGxldCBzZWFyY2hGbGFnID0gc2hvd1NlYXJjaCAmJiBzZWFyY2hGb3Jtcy5sZW5ndGggPiAwO1xyXG4gICAgbGV0IHsgdGFibGVUb29sIH0gPSBjb25maWcoKTtcclxuICAgIGxldCB0b29sRmxhZyA9XHJcbiAgICAgIHNob3dUb29sQnV0dG9uICYmXHJcbiAgICAgIHRvb2xCdXR0b25zLmxlbmd0aCA+IDAgJiZcclxuICAgICAgdG9vbEJ1dHRvblBvc2l0aW9uID09IFwiYnV0dG9tXCI7XHJcbiAgICBsZXQgdG9vbGJhckZsYWcgPSAhKFxyXG4gICAgICB0YWJsZVByb3BzLnRvb2xiYXIgPT0gZmFsc2UgfHxcclxuICAgICAgdGFibGVQcm9wcy50b29sYmFyPy5zaG93ID09IGZhbHNlIHx8XHJcbiAgICAgIHRhYmxlUHJvcHMudG9vbGJhcj8udG9vbHM/Lmxlbmd0aCA9PSAwIHx8XHJcbiAgICAgIHRhYmxlVG9vbD8uc2hvdyA9PSBmYWxzZVxyXG4gICAgKTtcclxuICAgIGxldCBoZWFkZXJIZWlnaHQgPSBzaG93U2VhcmNoICYmIHNlYXJjaEZvcm1zLmxlbmd0aCA+IDAgPyAxMDQgOiAwOyAvL+WktOmDqOaQnOe0ouagj+mrmOW6plxyXG4gICAgbGV0IHRvb2xIZWlnaHQgPSB0YWJsZVRpdGxlIHx8IHRvb2xGbGFnID8gNTAgOiAwO1xyXG4gICAgbGV0IHBhZGRpbmdIZWlnaHQgPSAyMCAqIDI7IC8v5LiK5LiL6Ze06LedXHJcbiAgICBjb25zdCB7IHRhYmxlVG9vbDogZ2xvYmFsVGFibGVUb29sIH0gPSBjb25maWcoKTtcclxuICAgIGxldCB0YWJsZVRvb2xGbGFnOiBhbnkgPSBmYWxzZTtcclxuICAgIGlmIChnbG9iYWxUYWJsZVRvb2wuc2hvdyA9PT0gdHJ1ZSkge1xyXG4gICAgICB0YWJsZVRvb2xGbGFnID0gdHJ1ZTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLnByb3BzLnRvb2xiYXIgJiYgdGhpcy5wcm9wcy50b29sYmFyLnNob3cgPT09IHRydWUpIHtcclxuICAgICAgdGFibGVUb29sRmxhZyA9IHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgbGV0IHRhYmxlQ29udGVudEhlaWdodCA9XHJcbiAgICAgIGVsZW1lbnRIZWlnaHQgLVxyXG4gICAgICB0b29sSGVpZ2h0IC1cclxuICAgICAgcGFkZGluZ0hlaWdodCAtXHJcbiAgICAgIGhlYWRlckhlaWdodCAtXHJcbiAgICAgICh0YWJsZVRvb2xGbGFnID8gOCA6IDApO1xyXG4gICAgbGV0IFBhZ2luYXRpb25IZWlnaHQgPSB0YWJsZVByb3BzLnBhZ2luYXRpb24gIT09IGZhbHNlID8gMzIgKyAxNiA6IDA7IC8vMzIg5Li65YiG6aG15Zmo6auY5bqmLDE25Li6bWFyZ2lu6Ze06LedXHJcblxyXG4gICAgbGV0IHRhYmxlSGVpZ2h0ID1cclxuICAgICAgdGFibGVDb250ZW50SGVpZ2h0IC0gUGFnaW5hdGlvbkhlaWdodCAtICh0YWJsZVRvb2xGbGFnID8gNDAgOiAwKTtcclxuICAgIC8vIGxldCB0YWJsZVNyb2xsSGVpZ2h0ID1cclxuICAgIC8vICAgdGFibGVDb250ZW50SGVpZ2h0IC1cclxuICAgIC8vICAgKHRoaXMuc3RhdGUudGFibGVIZWFkZXJIZWlnaHQgPiAwID8gdGhpcy5zdGF0ZS50YWJsZUhlYWRlckhlaWdodCA6IDU1KSAtXHJcbiAgICAvLyAgIFBhZ2luYXRpb25IZWlnaHQgLSAgKHRhYmxlVG9vbEZsYWcgPyA0MCA6IDApO1xyXG4gICAgbGV0IHRhYmxlU3JvbGxIZWlnaHQgPVxyXG4gICAgICB0YWJsZUhlaWdodCAtXHJcbiAgICAgICh0aGlzLnN0YXRlLnRhYmxlSGVhZGVySGVpZ2h0ID4gMCA/IHRoaXMuc3RhdGUudGFibGVIZWFkZXJIZWlnaHQgOiA1NSkgLVxyXG4gICAgICAodGFibGVUb29sRmxhZyA/IDQwIDogMCk7XHJcbiAgICAvLyBpZiAodGFibGVQcm9wcy5wYWdpbmF0aW9uICE9PSBmYWxzZSkge1xyXG4gICAgY29uc3Qgc2Nyb2xsID0gdGFibGVQYXJhbXMuc2Nyb2xsO1xyXG4gICAgdGFibGVQYXJhbXMgPSB7XHJcbiAgICAgIC4uLnRhYmxlUGFyYW1zLFxyXG4gICAgICBzY3JvbGw6IHsgeDogXCJtYXgtY29udGVudFwiLCB5OiB0YWJsZVNyb2xsSGVpZ2h0LCAuLi5zY3JvbGwgfSxcclxuICAgIH07XHJcbiAgICAvLyB9XHJcbiAgICByZXR1cm4gKFxyXG4gICAgICA8ZGl2XHJcbiAgICAgICAgY2xhc3NOYW1lPXtjbHMoZ2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlXCIpLCBjbGFzc05hbWUpfVxyXG4gICAgICAgIHJlZj17dGhpcy5wYWdlUmVmfVxyXG4gICAgICA+XHJcbiAgICAgICAge3RoaXMucHJvcHMucGFnZVRpdGxlICYmIChcclxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtjbHMoZ2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLXRpdGxlXCIpKX0+XHJcbiAgICAgICAgICAgIHt0aGlzLnByb3BzLnBhZ2VUaXRsZX1cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICl9XHJcbiAgICAgICAgPGRpdlxyXG4gICAgICAgICAgY2xhc3NOYW1lPXtjbHMoZ2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLXBhbmVcIikpfVxyXG4gICAgICAgICAgc3R5bGU9e3sgZGlzcGxheTogXCJmbGV4XCIgfX1cclxuICAgICAgICA+XHJcbiAgICAgICAgICB7c2hvd0xlZnQgJiYgKFxyXG4gICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtbGVmdFwiKX1cclxuICAgICAgICAgICAgICBzdHlsZT17eyB3aWR0aDogdGhpcy5zdGF0ZS50cmVlV2lkdGggfX1cclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIHt0cmVlVGl0bGUgJiYgKFxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcInRyZWUtdGl0bGVcIil9Pnt0cmVlVGl0bGV9PC9kaXY+XHJcbiAgICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2NscyhnZXRMZXNzKHN0eWxlcywgXCJ0cmVlLWNvbnRlbnRcIiksIHtcclxuICAgICAgICAgICAgICAgICAgW2dldExlc3Moc3R5bGVzLCBcInRyZWUtY29udGVudC1ub3RpdGxlXCIpXTogIXRyZWVUaXRsZSxcclxuICAgICAgICAgICAgICAgIH0pfVxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwidHJlZS1kcmFnXCJcclxuICAgICAgICAgICAgICAgICAgb25Nb3VzZURvd249e3RoaXMuaGFuZGxlTW91c2VEb3duLmJpbmQodGhpcyl9XHJcbiAgICAgICAgICAgICAgICA+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8VHJlZVxyXG4gICAgICAgICAgICAgICAgICBzdG9yZT17eyAuLi50cmVlU3RvcmUgfX1cclxuICAgICAgICAgICAgICAgICAgc2hvd0ljb249e2ZhbHNlfVxyXG4gICAgICAgICAgICAgICAgICBjaGVja2FibGU9e2ZhbHNlfVxyXG4gICAgICAgICAgICAgICAgICBzZWFyY2hhYmxlPXt0cmVlU2VhcmNofVxyXG4gICAgICAgICAgICAgICAgICBvblNlbGVjdD17dGhpcy50cmVlU2VsZWN0LmJpbmQodGhpcyl9XHJcbiAgICAgICAgICAgICAgICAgIHNlbGVjdGVkS2V5cz17W3RoaXMuc3RhdGUudHJlZVNlbGVjdGVkS2V5XX1cclxuICAgICAgICAgICAgICAgICAgdGl0bGVBbGlhcz17dGl0bGVBbGlhc31cclxuICAgICAgICAgICAgICAgICAgcmVmPXt0aGlzLnRyZWVSZWZ9XHJcbiAgICAgICAgICAgICAgICAgIHsuLi5vdGhlcnRyZWVQYXJhbXN9XHJcbiAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICl9XHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xzKGdldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS1yaWdodFwiKSwge1xyXG4gICAgICAgICAgICAgIFtnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2Utbm8tbGVmdC1yaWdodFwiKV06ICFzaG93TGVmdCxcclxuICAgICAgICAgICAgfSl9XHJcbiAgICAgICAgICAgIHN0eWxlPXt7XHJcbiAgICAgICAgICAgICAgd2lkdGg6IGBjYWxjKDEwMCUgLSAke3RoaXMuc3RhdGUudHJlZVdpZHRofXB4IC0gJHtcclxuICAgICAgICAgICAgICAgIHNob3dMZWZ0ID8gMTUgOiAwXHJcbiAgICAgICAgICAgICAgfXB4KWAsXHJcbiAgICAgICAgICAgIH19XHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIHtzaG93U2VhcmNoICYmIHNlYXJjaEZvcm1zLmxlbmd0aCA+IDAgJiYgKFxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtaGVhZGVyc2VhcmNoXCIpfT5cclxuICAgICAgICAgICAgICAgIDxIZWFkZXJTZWFyY2hcclxuICAgICAgICAgICAgICAgICAgc2VhcmNoRm9ybXM9e3NlYXJjaEZvcm1zfVxyXG4gICAgICAgICAgICAgICAgICB0b29sQnV0dG9uUG9zaXRpb249e3Rvb2xCdXR0b25Qb3NpdGlvbn1cclxuICAgICAgICAgICAgICAgICAgb25TZWFyY2g9e3RoaXMub25TZWFyY2guYmluZCh0aGlzKX1cclxuICAgICAgICAgICAgICAgICAgb25SZXNldD17KCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnByb3BzLm9uUmVzZXQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMucHJvcHMub25SZXNldCgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlYXJjaFJlZi5jdXJyZW50Py5yZXNldEZpZWxkcygpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMudGFibGVMb2FkKHt9KTtcclxuICAgICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgICAgcmVmPXt0aGlzLnNlYXJjaFJlZn1cclxuICAgICAgICAgICAgICAgICAgc2VhcmNoRm9ybVByb3BzPXt0aGlzLnByb3BzLnNlYXJjaEZvcm1Qcm9wc31cclxuICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICBjbGFzc05hbWU9e2NscyhnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtY29udGVudFwiKSwge1xyXG4gICAgICAgICAgICAgICAgW2dldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS1jb250ZW50LWdhcFwiKV06ICFzZWFyY2hGbGFnLFxyXG4gICAgICAgICAgICAgIH0pfVxyXG4gICAgICAgICAgICAgIHJlZj17dGhpcy5wYWdlQ29udGVudFJlZn1cclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIHsodGFibGVUaXRsZSB8fCB0b29sRmxhZykgJiYgKFxyXG4gICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2NscyhnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtdGFibGUtdGl0bGVcIiksIHtcclxuICAgICAgICAgICAgICAgICAgICBbZ2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLXRpdGxlLXdpZHRoXCIpXTogIXRvb2xiYXJGbGFnLFxyXG4gICAgICAgICAgICAgICAgICB9KX1cclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgPGRpdj57dGFibGVUaXRsZX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAge3Rvb2xGbGFnICYmIHRoaXMucmVuZGVyVG9vbEJ1dHRvbnModG9vbEJ1dHRvbnMsIHRvb2xiYXJGbGFnKX1cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICl9XHJcblxyXG4gICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xzKFxyXG4gICAgICAgICAgICAgICAgICBnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtdGFibGVcIiksXHJcbiAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICBbZ2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLXRhYmxlLXRvcFwiKV06ICF0b29sYmFyRmxhZyxcclxuICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgIFtnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtdGFibGUtdG9wMlwiKV06XHJcbiAgICAgICAgICAgICAgICAgICAgICB0b29sYmFyRmxhZyAmJiAhdG9vbEZsYWcsXHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgICAgICByZWY9e3RoaXMudGFibGVXcmFwcGVyUmVmfVxyXG4gICAgICAgICAgICAgICAgc3R5bGU9e3sgaGVpZ2h0OiB0YWJsZUNvbnRlbnRIZWlnaHQgfX1cclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8VGFibGVcclxuICAgICAgICAgICAgICAgICAgcmVmPXt0aGlzLnRhYmxlUmVmfVxyXG4gICAgICAgICAgICAgICAgICBjb2x1bW5zPXt0YWJsZUNvbHVtbn1cclxuICAgICAgICAgICAgICAgICAgZXhwYW5kYWJsZT17e1xyXG4gICAgICAgICAgICAgICAgICAgIGV4cGFuZEljb246ICh7IGV4cGFuZGVkLCBvbkV4cGFuZCwgcmVjb3JkIH0pID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAge2V4cGFuZGVkICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjb3JkLmNoaWxkTm9kZXMgJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICByZWNvcmQuY2hpbGROb2Rlcz8ubGVuZ3RoID4gMCA/IChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxEb3duT3V0bGluZWRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KGUpID0+IG9uRXhwYW5kKHJlY29yZCwgZSl9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwiZXhwYW5kLWljb25cIil9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICkgOiByZWNvcmQuY2hpbGROb2RlcyAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjb3JkLmNoaWxkTm9kZXM/Lmxlbmd0aCA+IDAgPyAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8UmlnaHRPdXRsaW5lZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoZSkgPT4gb25FeHBhbmQocmVjb3JkLCBlKX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJleHBhbmQtaWNvblwiKX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKSA6IG51bGx9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIC4uLmV4cGFuZGFibGUsXHJcbiAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICAgIGNvbHVtbk9yZGVyPXt0cnVlfVxyXG4gICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KHBhZ2luYXRpb24pID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCB7IGN1cnJlbnRQYWdlIH0gPSB0aGlzLnN0YXRlO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChjdXJyZW50UGFnZSAhPT0gcGFnaW5hdGlvbi5jdXJyZW50KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudFBhZ2U6IHBhZ2luYXRpb24uY3VycmVudCxcclxuICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgICAgdG9vbGJhcj17e1xyXG4gICAgICAgICAgICAgICAgICAgIG9uVG9vbENsaWNrOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBvblJlZnJlc2g6ICgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcGFyYW1zID0gdGhpcy5nZXRTZWFyY2hWYWx1ZXMoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50YWJsZUxvYWQocGFyYW1zKTtcclxuICAgICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICAuLi50YWJsZVByb3BzLnRvb2xiYXIsXHJcbiAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICAgIHNob3dSb3dTZWxlY3Rpb249e3Nob3dSb3dTZWxlY3Rpb259XHJcbiAgICAgICAgICAgICAgICAgIHN0eWxlPXt7IGhlaWdodDogdGFibGVIZWlnaHQgfX1cclxuICAgICAgICAgICAgICAgICAgey4uLnRhYmxlUGFyYW1zfVxyXG4gICAgICAgICAgICAgICAgICAvLyBwYWdpbmF0aW9uPXtmYWxzZX1cclxuICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICB7LyogPGRpdj48L2Rpdj4gKi99XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICB7ZWRpdG9yRm9ybSAmJiB0aGlzLnByb3BzLmZvcm1QYWdlUHJvcHM/LmZvcm1UeXBlICE9PSBcInBhZ2VcIiAmJiAoXHJcbiAgICAgICAgICAgIDxFZGl0b3JGb3JtXHJcbiAgICAgICAgICAgICAgcmVmPXt0aGlzLmVkaXRvclJlZn1cclxuICAgICAgICAgICAgICBjYWxsQmFjaz17KCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5wcm9wcy5vbkNhbGxCYWNrcz8ub25TdW1iaXRDYWxsQmFjayAmJlxyXG4gICAgICAgICAgICAgICAgICBjb252ZXJGdW5jdGlvbihcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnByb3BzLm9uQ2FsbEJhY2tzPy5vblN1bWJpdENhbGxCYWNrLFxyXG4gICAgICAgICAgICAgICAgICAgIHsgcGFnZVJlZjogdGhpcy5wcm9wcy5wYWdlUmVmIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wcm9wcy5VdGlsc1xyXG4gICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgdGhpcy50YWJsZVJlbG9hZCgpO1xyXG4gICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgZm9ybXM9e2VkaXRvckZvcm1zfVxyXG4gICAgICAgICAgICAgIHN1Ym1pdFVybD17c3VibWl0VXJsfVxyXG4gICAgICAgICAgICAgIHN1Ym1pdFBhcmFtcz17c3VibWl0UGFyYW1zfVxyXG4gICAgICAgICAgICAgIG9uU3VibWl0PXt0aGlzLnByb3BzLm9uU3VibWl0IHx8IHRoaXMucHJvcHMuYnV0dG9uQ2xpY2s/Lm9uU3VibWl0fVxyXG4gICAgICAgICAgICAgIG9uSGlkZUZvcm09e3RoaXMucHJvcHMub25IaWRlRm9ybX1cclxuICAgICAgICAgICAgICBvbkZvcm1DaGFuZ2U9e3RoaXMucHJvcHMub25Gb3JtQ2hhbmdlfVxyXG4gICAgICAgICAgICAgIGZvcm1UeXBlPXt0aGlzLnByb3BzLmZvcm1UeXBlIHx8IFwiYXV0b1wifVxyXG4gICAgICAgICAgICAgIGNoYW5nZVZhbGlkPXtmb3JtQ2hhbmdlVmFsaWR9XHJcbiAgICAgICAgICAgICAgVXRpbHM9e3RoaXMucHJvcHMuVXRpbHN9XHJcbiAgICAgICAgICAgICAgcmVxdWVzdE9iamVjdD17e1xyXG4gICAgICAgICAgICAgICAgYWRkVXJsOiByZXF1ZXN0VXJscy5hZGRVcmwsXHJcbiAgICAgICAgICAgICAgICBlZGl0b3JVcmw6IHJlcXVlc3RVcmxzLmVkaXRvclVybCxcclxuICAgICAgICAgICAgICAgIGFkZFBhcmFtczogcmVxdWVzdFBhcmFtcy5hZGRQYXJhbXMsXHJcbiAgICAgICAgICAgICAgICBlZGl0b3JQYXJhbXM6IHJlcXVlc3RQYXJhbXMuZWRpdG9yUGFyYW1zLFxyXG4gICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgZnVuY3M9e3RoaXMucHJvcHMuZnVuY3N9XHJcbiAgICAgICAgICAgICAgcGFnZVJlZj17dGhpcy5wcm9wcy5wYWdlUmVmfVxyXG4gICAgICAgICAgICAgIHsuLi5mb3JtUGFnZVByb3BzfVxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAge2Zvcm1CdXR0b259XHJcbiAgICAgICAgICAgIDwvRWRpdG9yRm9ybT5cclxuICAgICAgICAgICl9XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgKTtcclxuICB9XHJcbn1cclxuZXhwb3J0IGRlZmF1bHQgQmFzZVBhZ2U7XHJcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLE9BQU9BLEtBQUssSUFBSUMsYUFBYSxRQUFtQixPQUFPO0FBQ3ZELE9BQU9DLEtBQUssTUFBTSxrQkFBa0I7QUFDcEMsT0FB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
1248
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsIlB1cmVDb21wb25lbnQiLCJUYWJsZSIsIlRyZWUiLCJCdXR0b24iLCJNb2RhbCIsIlBvcG92ZXIiLCJtZXNzYWdlIiwiRWRpdG9yRm9ybSIsImNscyIsIkRvd25PdXRsaW5lZCIsIkV5ZU91dGxpbmVkIiwiRWRpdE91dGxpbmVkIiwiUmlnaHRPdXRsaW5lZCIsIlBsdXNPdXRsaW5lZCIsIkVsbGlwc2lzT3V0bGluZWQiLCJEZWxldGVPdXRsaW5lZCIsImNvbnZlckZ1bmN0aW9uIiwiZ2V0TGVzcyIsInJlcXVlc3QiLCJjb25maWciLCJnZXRCdXR0b25QZXJtaXNzb25zIiwiSGVhZGVyU2VhcmNoIiwiY29udmVydENvbHVtbnMiLCJnZXROZXdDb2x1bW5zIiwidGhyb3R0bGUiLCJjb252ZXJ0U3RyaW5nVG9PYmoiLCJzdHlsZXMiLCJCYXNlUGFnZSIsImNvbnN0cnVjdG9yIiwicHJvcHMiLCJfZGVmaW5lUHJvcGVydHkiLCJjcmVhdGVSZWYiLCJjaGVja2VkVHJlZUtleXMiLCJuYW1lIiwidXNlclR5cGUiLCJhY2NvdW50Iiwic3RhdGUiLCJ2YWx1ZSIsImRlcHRJZCIsIm9uU2VhcmNoIiwic2VsZWN0ZWQiLCJyZXMiLCJrZXkiLCJrZXlzIiwibGVuZ3RoIiwidGFibGVXcmFwcGVyUmVmIiwiY3VycmVudCIsInRhYmxlSGVhZGVyIiwiZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSIsImhlYWRlckhlaWdodCIsImdldEJvdW5kaW5nQ2xpZW50UmVjdCIsImhlaWdodCIsInRhYmxlSGVhZGVySGVpZ2h0Iiwic2V0U3RhdGUiLCJjYWxjdWxhdGVUYWJsZUhlYWRlckhlaWdodCIsInR5cGUiLCJzZWxlY3RlZFJvd0tleXMiLCJzZWxlY3RlZFJvd0RhdGFzIiwidHJlZVNlbGVjdGVkS2V5IiwiZXhwYW5kIiwidHJlZVNlYXJjaFByYW1zIiwicG9wb3BlbnMiLCJtb3JlT3BlbiIsImVsZW1lbnRIZWlnaHQiLCJwZXJtaXNzaW9uQnV0dG9ucyIsInF1ZXJ5UGFyYW1zIiwiYnV0dG9uc0xvYWRpbmciLCJ0cmVlV2lkdGgiLCJzaG93TGVmdCIsImRlZmF0dWx0QnV0dG9uIiwiY29tcG9uZW50RGlkTW91bnQiLCJfdGhpcyRwYWdlUmVmJGN1cnJlbnQiLCJpbml0RGF0YSIsInBlcm1pc3NvbiIsInBhZ2VSZWYiLCJjbGllbnRIZWlnaHQiLCJ3aW5kb3ciLCJhZGRFdmVudExpc3RlbmVyIiwidGhyb3R0bGVDYWxjdWxhdGVUYWJsZUhlYWRlckhlaWdodCIsInNldFRpbWVvdXQiLCJjb21wb25lbnREaWRVcGRhdGUiLCJwcmV2UHJvcHMiLCJfdGhpcyRwYWdlUmVmJGN1cnJlbnQyIiwiY29tcG9uZW50V2lsbFVubW91bnQiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwic2V0U2VhcmNoUGFyYW1zIiwicGFyYW1zIiwiY2FsbEJhY2siLCJfdGhpcyRzZWFyY2hSZWYkY3VycmUiLCJzZWFyY2hSZWYiLCJkb1N1Ym1pdCIsImRhdGEiLCJfdGhpcyRlZGl0b3JSZWYkY3VycmUiLCJsYWJlbCIsImFyZ3VtZW50cyIsInVuZGVmaW5lZCIsImVkaXRvclJlZiIsInNob3dGb3JtIiwiX3RoaXMkcHJvcHMkZm9ybVBhZ2VQIiwiZWRpdG9yZmxhZyIsImZvcm1QYWdlUHJvcHMiLCJmb3JtVHlwZSIsIl90aGlzJHByb3BzJGZvcm1QYWdlUDIiLCJmdW5jcyIsInBhdGhuYW1lIiwiY29uY2F0IiwidGFibGVDb2RlIiwiaWQiLCJoaXN0b3J5Iiwic2VydmljZU5hbWUiLCJzZXJ2aWNlUGF0aCIsIkRhdGUiLCJnZXRUaW1lIiwidGl0bGUiLCJfdGhpcyRlZGl0b3JSZWYiLCJuZXdWYWx1ZSIsIl9vYmplY3RTcHJlYWQiLCJzaG93IiwiaGlkZUZvcm0iLCJfdGhpcyRlZGl0b3JSZWYkY3VycmUyIiwic2V0TG9hZGluZyIsImxvYWRpbmciLCJfdGhpcyRlZGl0b3JSZWYkY3VycmUzIiwic2V0RWRpdEZvcm1WYWx1ZXMiLCJfdGhpcyRlZGl0b3JSZWYkY3VycmU0Iiwic2V0Rm9ybVZhbHVlIiwiZ2V0RWRpdEZvcm1WYWx1ZXMiLCJfdGhpcyRlZGl0b3JSZWYkY3VycmU1IiwiZ2V0Rm9ybVZhbHVlIiwib25EZWxldGUiLCJfdGhpcyR0YWJsZVJlZiRjdXJyZW4iLCJfdGhpcyR0YWJsZVJlZiRjdXJyZW4yIiwiZGVsZXRlUG9zaXRpb24iLCJkZWxldGVVcmwiLCJkZWxldGVQYXJhbXMiLCJidXR0b25DbGljayIsInJlcXVlc3RQYXJhbXMiLCJyZXF1ZXN0VXJscyIsInJlcXVlc3RDb25maWciLCJfdGhpcyIsInRhYmxlUmVmIiwiZ2V0U2VsZWN0ZWRSb3dLZXlzIiwiZ2V0U2VsZWN0ZWRSb3dEYXRhcyIsInVybCIsIndhcm5pbmciLCJjb25maXJtIiwiY29udGVudCIsIm9uT2siLCJyZWNvcmQiLCJpZHMiLCJVdGlscyIsIkVycm9yIiwiZGF0YVBhcmFtcyIsIm90aGVyUGFyYW1zIiwiX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzIiwiX2V4Y2x1ZGVkIiwiZGVmYXVsdFBhcmFtcyIsIm1ldGhvZCIsImF1dG9QcmVmaXgiLCJqb2luIiwiZmluYWxQYXJhbXMiLCJ0aGVuIiwiY29kZSIsIl90aGlzJHNlYXJjaFJlZiIsIl90aGlzJHByb3BzJG9uQ2FsbEJhYyIsIl90aGlzJHByb3BzJG9uQ2FsbEJhYzIiLCJzdWNjZXNzIiwiZ2V0U2VhcmNoVmFsdWVzIiwib25DYWxsQmFja3MiLCJvbkRlbGV0ZUNhbGxCYWNrIiwidGFibGVMb2FkIiwibXNnIiwiZXJyb3IiLCJjYXRjaCIsImNvbnNvbGUiLCJsb2ciLCJfdGFibGVTdG9yZSRyZXF1ZXN0Q28iLCJfdGhpcyR0YWJsZVJlZiRjdXJyZW4zIiwiZGVmYXVsdFJlcXVlc3RDb25maWciLCJ0YWJsZVByb3BzIiwic3RvcmUiLCJ0YWJsZVN0b3JlIiwiY29udmVydFF1ZXJ5UGFyYW1zIiwicmVxdWVzdENvbmlnIiwic3RvcmVDb25maWciLCJzdG9yZVBhcmFtcyIsIm90aGVyU3RvcmVDb25maWciLCJfZXhjbHVkZWQyIiwibG9hZCIsIl90YWJsZVN0b3JlJHJlcXVlc3RDbzIiLCJfdGhpcyRwcm9wcyRvbkNhbGxCYWMzIiwib25RdWVyeUNhbGxCYWNrIiwidGFibGVSZWxvYWQiLCJfdGhpcyR0YWJsZVJlZiRjdXJyZW40IiwiYXV0b0xvYWQiLCJyZWxvYWQiLCJjYWxsYmFjayIsIl9yZXMkZGF0YSIsInJlY29yZHMiLCJjdXJyZW50UGFnZSIsIl90aGlzJHRhYmxlUmVmJGN1cnJlbjUiLCJ0cmVlTG9hZCIsIl90aGlzJHRyZWVSZWYkY3VycmVudCIsInRyZWVSZWYiLCJfdGhpcyR0YWJsZVJlZiRjdXJyZW42IiwiX3RoaXMkdGFibGVSZWYkY3VycmVuNyIsInNldFNlbGVjdGVkUm93S2V5cyIsIl90aGlzJHRhYmxlUmVmJGN1cnJlbjgiLCJzZXRTZWxlY3RlZFJvd0RhdGFzIiwiX3RoaXMkdGFibGVSZWYkY3VycmVuOSIsInJlc2V0U2VsZWN0ZWRSb3dLZXlzIiwiX3RoaXMkdGFibGVSZWYkY3VycmVuMTAiLCJfdGhpcyRzZWFyY2hSZWYyIiwiZnJvbVZhbHVlIiwiZ2V0Q2hpbGRyZW5EYXRhIiwicm93S2V5IiwicmVzS2V5IiwiY2hpbGROb2RlcyIsImNoaWxkcmVuIiwibWFwIiwiaXRlbSIsImluZGV4IiwicmVuZGVyVG9vbEJ1dHRvbnMiLCJ0b29sYnV0dG9ucyIsInRvb2xiYXJGbGFnIiwiZmxhZyIsInNob3dTZWFyY2giLCJfaXRlbSRwcm9wcyIsInBhZ2VUeXBlIiwib25DbGljayIsImljb24iLCJfZXhjbHVkZWQzIiwiY3JlYXRlRWxlbWVudCIsImNsYXNzTmFtZSIsIl9leHRlbmRzIiwic3R5bGUiLCJtYXJnaW5MZWZ0IiwibWFyZ2luUmlnaHQiLCJwbGFjZW1lbnQiLCJvcGVuIiwib25PcGVuQ2hhbmdlIiwicmVuZGVyQ2xvdW1uQnV0dG9uIiwiY29sdW1uQnV0dG9ucyIsInJvd1JlY29yZCIsImFjdGlvblByb3BzIiwiYmFzZUFjdGlvbkNvbHVtbiIsIm5ld0J1dHRvbnMiLCJzaG93SWNvbiIsIl9pdGVtJHByb3BzMiIsInJlY29yZFNob3ciLCJfZXhjbHVkZWQ0IiwiZXZlbnRPcHRpb24iLCJVaXRscyIsImZ1bmMiLCJGdW5jdGlvbiIsInB1c2giLCJlIiwiZXZhbCIsIm51bWJlciIsImJ1dHRvbk51bWJlciIsIl9pdGVtJHByb3BzMyIsIl9leGNsdWRlZDUiLCJOdW1iZXIiLCJfaXRlbSRwcm9wczQiLCJfZXhjbHVkZWQ2IiwidHJpZ2dlciIsInRyZWVTZWxlY3QiLCJzZWxlY3RlZEtleXMiLCJvYmoiLCJfdGhpcyRzZWFyY2hSZWYzIiwiX3RoaXMkcHJvcHMkb25DYWxsQmFjNCIsIl90aGlzJHByb3BzJG9uQ2FsbEJhYzUiLCJrZXl3b3JkIiwic2VhcmNoS2V5Iiwic2VhcmNoRmllbGQiLCJwYXJhbnRTZWxlY3QiLCJ0cmVlUHJvcHMiLCJzZWxlY3RlZE5vZGVzIiwiZGF0YXJlZiIsImF0dHJpYnV0ZSIsImlzTGVhZiIsIm9uVHJlZVNlbGVjdCIsInRyZWVTZWxlY3RDYWxsQmFjayIsInJlc2V0U2VhcmNoIiwiX3RoaXMkc2VhcmNoUmVmJGN1cnJlMiIsInJlc2V0RmllbGRzIiwiZ2V0VGV4dCIsInRleHQiLCJfcHJvcHMkZGF0YSIsIm5ld1RleHQiLCJpIiwic2V0VGFibGVEYXRhIiwiX3RoaXMkdGFibGVSZWYkY3VycmVuMTEiLCJzZXREYXRhIiwic2V0VHJlZURhdGEiLCJfdGhpcyR0cmVlUmVmJGN1cnJlbnQyIiwiaGFuZGxlTW91c2VEb3duIiwicHJldmVudERlZmF1bHQiLCJtYXNrIiwiZG9jdW1lbnQiLCJjc3NUZXh0IiwiYm9keSIsImFwcGVuZENoaWxkIiwiaGFuZGxlTW91c2VNb3ZlIiwibmV3V2lkdGgiLCJzY3JlZW5YIiwidGhyb3R0bGVkTW91c2VNb3ZlIiwiaGFuZGxlTW91c2VVcCIsImdldEVsZW1lbnRCeUlkIiwicmVtb3ZlQ2hpbGQiLCJyZW5kZXIiLCJfdGhpczIiLCJfdGFibGVQcm9wcyR0b29sYmFyIiwiX3RhYmxlUHJvcHMkdG9vbGJhcjIiLCJfdGhpcyRwcm9wcyRmb3JtUGFnZVAzIiwiX3RoaXMkcHJvcHMkYnV0dG9uQ2xpIiwiY29sdW1ucyIsInN1Ym1pdFVybCIsInN1Ym1pdFBhcmFtcyIsInNob3dUb29sQnV0dG9uIiwiYnV0dG9ucyIsImVkaXRvckZvcm0iLCJvblNob3dGb3JtIiwiZm9ybUNoYW5nZVZhbGlkIiwidG9vbEJ1dHRvblBvc2l0aW9uIiwicGVybWlzc2lvbiIsImhhcyIsImZpbHRlckNvbHVtbiIsImFjdGlvbkNvbHVtbiIsInNob3dSb3dTZWxlY3Rpb24iLCJjb2x1bW5PcmRlciIsImV4cGFuZGFibGUiLCJ0YWJsZVRpdGxlIiwib3RoZXJ0YWJsZVBhcmFtcyIsIl9leGNsdWRlZDciLCJuZXdUYWJsZVN0b3JlIiwiX25ld1RhYmxlU3RvcmUkcmVxdWVzIiwidHJlZVN0b3JlIiwidHJlZVNlYXJjaCIsInRpdGxlQWxpYXMiLCJ0cmVlVGl0bGUiLCJvdGhlcnRyZWVQYXJhbXMiLCJfZXhjbHVkZWQ4IiwidGFibGVQYXJhbXMiLCJsaXN0ZW5lcnMiLCJfdGhpcyRwcm9wcyRvbkNhbGxCYWM2IiwiX3RoaXMkcHJvcHMkb25DYWxsQmFjNyIsInRhYmxlTG9hZENhbGxCYWNrIiwiZGVmYXVsdFZhbHVlIiwibWVudUNvZGUiLCJwZXJtaXNzb25zIiwidGFibGVDb2x1bW4iLCJzZWFyY2hGb3JtcyIsImVkaXRvckZvcm1zIiwidG9vbEJ1dHRvbnMiLCJmb3JtQnV0dG9uIiwiYnV0dG9uTWFwIiwiZWRpdG9yIiwiZGVsZXRlIiwic2VhcmNoIiwicmV0dXJuQnV0dG9uIiwiX2J1dHRvbk1hcCRjb2RlIiwiZGVmYXVsdFByb3BzIiwib25FZGl0b3IiLCJfdGhpczIkcHJvcHMkb25DYWxsQmEiLCJfdGhpczIkcHJvcHMkb25DYWxsQmEyIiwib25FZGl0b3JDYWxsQmFjayIsIm9uU2VhcmNoQ2FsbEJhY2siLCJjaGVja1BlcnNzaW9uIiwiaW5kZXhPZiIsIm9uQWRkIiwiX3RoaXMkcHJvcHMkb25DYWxsQmFjOCIsIl90aGlzJHByb3BzJG9uQ2FsbEJhYzkiLCJvbkFkZENhbGxCYWNrIiwiYmluZCIsImRhbmdlciIsIkFycmF5IiwiaXNBcnJheSIsImNoaWxkIiwiX2NoaWxkJHByb3BzIiwiX2NoaWxkJHByb3BzMiIsIl9jaGlsZCRwcm9wczMiLCJfY2hpbGQkcHJvcHM0IiwiX2NoaWxkJHByb3BzNSIsIl9jaGlsZCRwcm9wczYiLCJfY2hpbGQkcHJvcHM3IiwiX2l0ZW0kcHJvcHM1IiwiX2l0ZW0kcHJvcHM2IiwiX2l0ZW0kcHJvcHM3IiwiX2l0ZW0kcHJvcHM4IiwiX2l0ZW0kcHJvcHM5IiwiZGF0YUluZGV4IiwiYWxpZ24iLCJ0ZXh0QWxpZ24iLCJ3aWR0aCIsImZpeGVkIiwicmVhY29yZCIsIkZyYWdtZW50Iiwic2VhcmNoRmxhZyIsInRhYmxlVG9vbCIsInRvb2xGbGFnIiwidG9vbGJhciIsInRvb2xzIiwidG9vbEhlaWdodCIsInBhZGRpbmdIZWlnaHQiLCJnbG9iYWxUYWJsZVRvb2wiLCJ0YWJsZVRvb2xGbGFnIiwidGFibGVDb250ZW50SGVpZ2h0IiwiUGFnaW5hdGlvbkhlaWdodCIsInBhZ2luYXRpb24iLCJ0YWJsZUhlaWdodCIsInRhYmxlU3JvbGxIZWlnaHQiLCJzY3JvbGwiLCJ4IiwieSIsInJlZiIsInBhZ2VUaXRsZSIsImRpc3BsYXkiLCJvbk1vdXNlRG93biIsImNoZWNrYWJsZSIsInNlYXJjaGFibGUiLCJvblNlbGVjdCIsIm9uUmVzZXQiLCJfdGhpcyRzZWFyY2hSZWYkY3VycmUzIiwic2VhcmNoRm9ybVByb3BzIiwicGFnZUNvbnRlbnRSZWYiLCJleHBhbmRJY29uIiwiX3JlZiIsIl9yZWNvcmQkY2hpbGROb2RlcyIsIl9yZWNvcmQkY2hpbGROb2RlczIiLCJleHBhbmRlZCIsIm9uRXhwYW5kIiwib25DaGFuZ2UiLCJvblRvb2xDbGljayIsIm9uUmVmcmVzaCIsIl90aGlzJHByb3BzJG9uQ2FsbEJhYzEwIiwiX3RoaXMkcHJvcHMkb25DYWxsQmFjMTEiLCJvblN1bWJpdENhbGxCYWNrIiwiZm9ybXMiLCJvblN1Ym1pdCIsIm9uSGlkZUZvcm0iLCJvbkZvcm1DaGFuZ2UiLCJjaGFuZ2VWYWxpZCIsInJlcXVlc3RPYmplY3QiLCJhZGRVcmwiLCJlZGl0b3JVcmwiLCJhZGRQYXJhbXMiLCJlZGl0b3JQYXJhbXMiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tcG9uZW50cy9wYWdlL0Jhc2VQYWdlL2luZGV4LnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHsgUHVyZUNvbXBvbmVudCwgUmVhY3ROb2RlIH0gZnJvbSBcInJlYWN0XCI7XHJcbmltcG9ydCBUYWJsZSBmcm9tIFwiLi4vLi4vYmFzZS90YWJsZVwiO1xyXG5pbXBvcnQgVHJlZSBmcm9tIFwiLi4vLi4vYmFzZS90cmVlXCI7XHJcbmltcG9ydCBCdXR0b24gZnJvbSBcIi4uLy4uL2Jhc2UvYnV0dG9uXCI7XHJcbmltcG9ydCBNb2RhbCBmcm9tIFwiLi4vLi4vYmFzZS9tb2RhbFwiO1xyXG5pbXBvcnQgUG9wb3ZlciBmcm9tIFwiLi4vLi4vYmFzZS9wb3BvdmVyXCI7XHJcbmltcG9ydCBtZXNzYWdlIGZyb20gXCIuLi8uLi9iYXNlL21lc3NhZ2VcIjtcclxuaW1wb3J0IEVkaXRvckZvcm0sIHsgRm9ybVBhZ2VQcm9wcyB9IGZyb20gXCIuLi9Gb3JtUGFnZS9pbmRleFwiO1xyXG5pbXBvcnQgY2xzIGZyb20gXCJjbGFzc25hbWVzXCI7XHJcbmltcG9ydCBcIi4vaW5kZXgubW9kdWxlLmxlc3NcIjtcclxuaW1wb3J0IFN0b3JlLCB7IFBhZ2VTdG9yZSwgU3RvcmVQcm9wcyB9IGZyb20gXCJAYmotbnNjL21zblwiO1xyXG5pbXBvcnQgeyB1dGlscyB9IGZyb20gXCJAYmotbnNjL21zbi9saWIvdXRpbHNcIjtcclxuaW1wb3J0IHtcclxuICBEb3duT3V0bGluZWQsXHJcbiAgRXllT3V0bGluZWQsXHJcbiAgRWRpdE91dGxpbmVkLFxyXG4gIFJpZ2h0T3V0bGluZWQsXHJcbiAgUGx1c091dGxpbmVkLFxyXG4gIEVsbGlwc2lzT3V0bGluZWQsXHJcbiAgRGVsZXRlT3V0bGluZWQsXHJcbn0gZnJvbSBcIkBhbnQtZGVzaWduL2ljb25zXCI7XHJcbmltcG9ydCB7IGNvbnZlckZ1bmN0aW9uLCBnZXRMZXNzLCBnZXROb2RlLCBzaW1wbGlmeUNvbHVtbnMgfSBmcm9tIFwiLi4vLi4vdXRpbHNcIjtcclxuaW1wb3J0IHJlcXVlc3QgZnJvbSBcIm5zYy1yZXF1ZXN0XCI7XHJcbmltcG9ydCBjb25maWcgZnJvbSBcIi4uLy4uL2NvbmZpZ1wiO1xyXG5pbXBvcnQgeyBnZXRMb2NhbFN0b3JlLCBweDJ2dywgZ2V0QnV0dG9uUGVybWlzc29ucyB9IGZyb20gXCJAYmotbnNjL2Z1bmN0aW9uc1wiO1xyXG5pbXBvcnQgSGVhZGVyU2VhcmNoIGZyb20gXCIuLi9IZWFkZXJTZWFyY2hcIjtcclxuaW1wb3J0IHsgUGFnaW5hdGlvblByb3BzIH0gZnJvbSBcImFudGRcIjtcclxuaW1wb3J0IG5zY2ZpbGUgZnJvbSBcIm5zYy1maWxlXCI7XHJcbmltcG9ydCB7IGNvbnZlcnRDb2x1bW5zLCBnZXROZXdDb2x1bW5zIH0gZnJvbSBcIi4vdXRpbHNcIjtcclxuaW1wb3J0IGlzRXF1YWwgZnJvbSBcImxvZGFzaC9pc0VxdWFsXCI7XHJcbmltcG9ydCB0aHJvdHRsZSBmcm9tIFwibG9kYXNoL3Rocm90dGxlXCI7XHJcbmltcG9ydCBDb21wb3VuZGVkU3BhY2UgZnJvbSBcImFudGQvZXMvc3BhY2VcIjtcclxuaW1wb3J0IHsgY29udmVydFN0cmluZ1RvT2JqIH0gZnJvbSBcIi4uL1NldHRpbmdVdGlsL3V0aWxzXCI7XHJcbnR5cGUgQnV0dG9uSXRlbSA9XHJcbiAgfCBzdHJpbmdcclxuICB8IHtcclxuICAgICAgY29kZTogc3RyaW5nO1xyXG4gICAgICByZWNvcmRTaG93Pzogc3RyaW5nIHwgRnVuY3Rpb247XHJcbiAgICAgIHByb3BzPzogYW55O1xyXG4gICAgICBuYW1lPzogc3RyaW5nO1xyXG4gICAgfTtcclxuXHJcbmludGVyZmFjZSBUYWJsZVByb3BzIHtcclxuICBhY3Rpb25Db2x1bW4/OiBib29sZWFuOyAvL+aYr+WQpuaYvuekuuaTjeS9nOWIl1xyXG4gIHN0b3JlPzogU3RvcmVQcm9wcztcclxuICBmaWx0ZXJDb2x1bW4/OiBib29sZWFuOyAvL+aYr+WQpuaYvuekuui/h+a7pOaMiemSrlxyXG4gIHNob3dSb3dTZWxlY3Rpb24/OiBib29sZWFuOyAvL+aYr+WQpuihqOagvOWLvumAieWIl1xyXG4gIHBhZ2luYXRpb24/OiBib29sZWFuIHwgUGFnaW5hdGlvblByb3BzOyAvL+aYr+WQpuaYvuekuuWIhumhtVxyXG4gIGNvbHVtbk9yZGVyPzogYm9vbGVhbjsgLy/mmK/lkKbmmL7npLrooajmoLzluo/liJdcclxuICBbcHJvcHNOYW1lOiBzdHJpbmddOiBhbnk7XHJcbn1cclxuY29uc3Qgc3R5bGVzID0gbnVsbDtcclxuaW50ZXJmYWNlIFRyZWVQcm9wcyB7XHJcbiAgc3RvcmU/OiBTdG9yZVByb3BzO1xyXG4gIHNob3dTZWFyY2g/OiBib29sZWFuOyAvL+aYr+WQpuaYvuekuuaQnOe0ouahhlxyXG4gIHNlYXJjaEtleT86IHN0cmluZzsgLy/mkJzntKJ2YWx1ZeWvueW6lOeahGtleVxyXG4gIHNlYXJjaEZpZWxkPzogc3RyaW5nOyAvL+afpeivouWvueW6lOeahGtleVxyXG4gIHRpdGxlQWxpYXM/OiBzdHJpbmc7IC8v5qCRdGl0bGXlr7nlupTnmoRrZXks6buY6K6kdGl0bGVcclxuICBub2RlUG9ycHM/OiBvYmplY3Q7XHJcbiAgcGFyYW50U2VsZWN0PzogYm9vbGVhbjtcclxuICBbcHJvcHNOYW1lOiBzdHJpbmddOiBhbnk7XHJcbn1cclxuaW50ZXJmYWNlIEZvcm1Qcm9wcyBleHRlbmRzIEZvcm1QYWdlUHJvcHMge31cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgTlNDQmFzZUJhZ2VQcm9wcyB7XHJcbiAgc2hvd1NlYXJjaD86IGJvb2xlYW47IC8v5piv5ZCm5pi+56S65aS06YOo5pCc57Si5qCPXHJcbiAgdGFibGVQcm9wcz86IFRhYmxlUHJvcHM7IC8v6KGo5qC85Y+C5pWwXHJcbiAgdHJlZVByb3BzPzogVHJlZVByb3BzOyAvL+W3puS+p+agkeWPguaVsFxyXG4gIHN1Ym1pdFBhcmFtcz86IE9iamVjdDsgLy/mt7vliqDlj4LmlbDvvIzpu5jorqRtb3Rob2Q6cG9zdO+8jCDlj4LmlbDpgJrov4dkYXRh5Lyg6YCSXHJcbiAgc3VibWl0VXJsPzogc3RyaW5nO1xyXG4gIG9uU3VibWl0PzogKHZhbHVlPzogYW55LCBsYWJlbD86IGFueSkgPT4gdm9pZDtcclxuICBjb2x1bW5zPzogQXJyYXk8T2JqZWN0PjtcclxuICBzaG93TGVmdD86IGJvb2xlYW47IC8v5piv5ZCm5pi+56S65bem5L6n55uu5b2V5qCRXHJcbiAgc2hvd1Rvb2xCdXR0b24/OiBib29sZWFuOyAvL+aYr+WQpuaYvuekuuaMiemSruagj1xyXG4gIGVkaXRvckZvcm0/OiBib29sZWFuOyAvL+aYr+WQpumcgOimgeihqOWNleWKn+iDvSAsIOS4umZhbHNlIOe8lui+ke+8jOafpeeci++8jOaWsOWinuWKn+iDveWdh+S4jeWPr+eUqFxyXG4gIGRlbGV0ZVVybD86IHN0cmluZzsgLy/liKDpmaR1cmxcclxuICBvbkRlbGV0ZT86IChzZWxlY3RlZEtleXM/OiBBcnJheTxzdHJpbmc+KSA9PiB2b2lkOyAvL+WIoOmZpOWPguaVsO+8jOm7mOiupG1vdGhvZDpwb3N077yMIOWPguaVsOmAmui/h2lkc+aLvOaOpeS8oOmAkue7meWQjuWPsFxyXG4gIGRlbGV0ZVBhcmFtcz86IE9iamVjdDtcclxuICBjaGlsZHJlbj86IFJlYWN0LlJlYWN0Tm9kZTtcclxuICBvblNlYXJjaD86ICh2YWx1ZT86IGFueSkgPT4gdm9pZDtcclxuICBvblJlc2V0PzogKCkgPT4gdm9pZDtcclxuICBpbml0RGF0YT86IGFueTsgLy/liJ3lp4vljJblm57osIPlh73mlbDvvIzlnKhjb21wb25lbnREaWRNb3VudOS4reiwg+eUqFxyXG4gIGJ1dHRvbnM/OiBCdXR0b25JdGVtW107IC8v5oyJ6ZKu6ZuG5ZCIICBbJ2FkZCcsJ2RlbGV0ZScsJ3NlYXJjaCcsJ2VkaXRvcicsJ2RlbGV0ZV9iYXRjaCddXHJcbiAgb25TaG93Rm9ybT86ICh2YWx1ZT86IGFueSwgZWRpdG9yRmxhZz86IHN0cmluZykgPT4gdm9pZDsgLy/miZPlvIDooajljZXlm57osINcclxuICBvbkhpZGVGb3JtPzogKCkgPT4gdm9pZDsgLy/miZPlvIDooajljZXlm57osINcclxuICBvbkZvcm1DaGFuZ2U/OiAoY2hhbmdlZFZhbHVlcz86IGFueSwgYWxsVmFsdWVzPzogYW55KSA9PiB2b2lkOyAvL+ihqOWNlW9uQ2hhbmdl5Zue6LCDXHJcbiAgZm9ybVR5cGU/OiBcIm1vZGFsXCIgfCBcImRyYXdlclwiIHwgXCJwYWdlXCIgfCBcImF1dG9cIjtcclxuICBmb3JtQ2hhbmdlVmFsaWQ/OiBib29sZWFuOyAvL+ihqOWNleagoemqjFxyXG4gIGNsYXNzTmFtZT86IGFueTtcclxuICB0b29sQnV0dG9uUG9zaXRpb24/OiBcInJpZ2h0XCIgfCBcImJ1dHRvbVwiO1xyXG4gIHBhZ2VUaXRsZT86IHN0cmluZyB8IFJlYWN0Tm9kZTtcclxuICBhY3Rpb25Qcm9wcz86IHtcclxuICAgIHRleHRBbGlnbj86IHN0cmluZztcclxuICAgIHNob3dJY29uPzogYm9vbGVhbjtcclxuICAgIHdpZHRoPzogbnVtYmVyO1xyXG4gICAgYnV0dG9uTnVtYmVyPzogbnVtYmVyIHwgXCJhbGxcIjtcclxuICB9O1xyXG4gIHNlYXJjaEZvcm1Qcm9wcz86IHsgd3JhcHBlckNvbD86IGFueTsgbGFiZWxDb2w/OiBhbnkgfTtcclxuICBvblRyZWVTZWxlY3Q/OiAodmFsdWU/OiBhbnksIGVkaXRvckZsYWc/OiBzdHJpbmcpID0+IHZvaWQ7IC8v5omT5byA6KGo5Y2V5Zue6LCDXHJcbiAgb25DYWxsQmFja3M/OiB7XHJcbiAgICB0cmVlU2VsZWN0Q2FsbEJhY2s/OiBhbnk7IC8v5qCR54K55Ye75p+l6K+i5ZCO5Zue6LCDXHJcbiAgICBvblF1ZXJ5Q2FsbEJhY2s/OiBhbnk7IC8v5p+l6K+i5Zue6LCD77yM5p+l6K+i5pWw5o2u5ZCO5Zue6LCDXHJcbiAgICBvblN1bWJpdENhbGxCYWNrPzogYW55OyAvL+S/neWtmOWbnuiwg++8jOS/neWtmOaVsOaNruaIkOWKn+WQjuWbnuiwg1xyXG4gICAgb25EZWxldGVDYWxsQmFjaz86IGFueTsgLy/liKDpmaTmjInpkq7lm57osIPvvIzliKDpmaTmlbDmja7lkI7miafooYxcclxuICAgIG9uRWRpdG9yQ2FsbEJhY2s/OiBhbnk7IC8v57yW6L6R5oyJ6ZKu5Zue6LCD77yM5omT5byA5by55qGG5ZCO5omn6KGMXHJcbiAgICBvbkFkZENhbGxCYWNrPzogYW55OyAvL+a3u+WKoOaMiemSruWbnuiwg++8jOaJk+W8gOW8ueahhuWQjuaJp+ihjFxyXG4gICAgb25TZWFyY2hDYWxsQmFjaz86IGFueTsgLy/liJfooajmn6Xor6LmjInpkq7lm57osIPvvIzmiZPlvIDlvLnmoYblkI7miafooYxcclxuICAgIHRhYmxlTG9hZENhbGxCYWNrPzogYW55OyAvL+WIl+ihqOafpeivouWbnuiwgy0tbG9hZFxyXG4gIH07XHJcbiAgcGFnZVR5cGU/OiBcIm5vcm1hbFwiIHwgXCJ0YWJzcGFnZVwiO1xyXG4gIGZvcm1QYWdlUHJvcHM/OiBGb3JtUGFnZVByb3BzO1xyXG4gIGJ1dHRvbkNsaWNrPzoge1xyXG4gICAgb25BZGQ/OiAoKSA9PiB2b2lkO1xyXG4gICAgb25FZGl0b3I/OiAodmFsdWU/OiBhbnkpID0+IHZvaWQ7XHJcbiAgICBvblNlYXJjaD86ICh2YWx1ZT86IGFueSkgPT4gdm9pZDtcclxuICAgIG9uRGVsZXRlPzogKHZhbHVlPzogYW55KSA9PiB2b2lkO1xyXG4gICAgb25TdWJtaXQ/OiAodmFsdWU/OiBhbnkpID0+IHZvaWQ7XHJcbiAgfTtcclxuICBwZXJtaXNzaW9uPzoge1xyXG4gICAgaGFzPzogYm9vbGVhbjtcclxuICAgIG1lbnVDb2RlPzogc3RyaW5nO1xyXG4gIH07XHJcbiAgcmVxdWVzdFBhcmFtcz86IHtcclxuICAgIC8v6ZyA6KaB6aKd5aSW5Lyg55qE5Zu65a6a6K+35rGC5Y+C5pWwXHJcbiAgICBhZGRQYXJhbXM/OiBPYmplY3Q7IC8v5paw5aKe5Zu65a6a5Y+C5pWwXHJcbiAgICBlZGl0b3JQYXJhbXM/OiBPYmplY3Q7IC8v57yW6L6R5Zu65a6a5Y+C5pWwXHJcbiAgICBxdWVyeVBhcmFtcz86IE9iamVjdDsgLy/mn6Xor6Llm7rlrprlj4LmlbBcclxuICAgIGRlbGV0ZVBhcmFtcz86IE9iamVjdDsgLy/liKDpmaTlm7rlrprlj4LmlbBcclxuICB9O1xyXG4gIHJlcXVlc3RVcmxzPzoge1xyXG4gICAgYWRkVXJsPzogc3RyaW5nOyAvL+aWsOWinnVybFxyXG4gICAgZWRpdG9yVXJsPzogc3RyaW5nOyAvL+e8lui+kXVybFxyXG4gICAgZGVsZXRlVXJsPzogc3RyaW5nOyAvL+WIoOmZpHVybFxyXG4gIH07XHJcbiAgZnVuY3M/OiBhbnk7XHJcbiAgcmVxdWVzdENvbmZpZz86IGFueTtcclxuICBbcHJvcHNOYW1lOiBzdHJpbmddOiBhbnk7XHJcbn1cclxuXHJcbmNsYXNzIEJhc2VQYWdlIGV4dGVuZHMgUHVyZUNvbXBvbmVudDxOU0NCYXNlQmFnZVByb3BzLCBhbnk+IHtcclxuICB0YWJsZVJlZiA9IFJlYWN0LmNyZWF0ZVJlZjxhbnk+KCk7XHJcbiAgdHJlZVJlZiA9IFJlYWN0LmNyZWF0ZVJlZjxhbnk+KCk7XHJcbiAgc2VhcmNoUmVmID0gUmVhY3QuY3JlYXRlUmVmPGFueT4oKTtcclxuICBlZGl0b3JSZWYgPSBSZWFjdC5jcmVhdGVSZWY8YW55PigpO1xyXG4gIHBhZ2VSZWYgPSBSZWFjdC5jcmVhdGVSZWY8YW55PigpO1xyXG4gIHBhZ2VDb250ZW50UmVmID0gUmVhY3QuY3JlYXRlUmVmPGFueT4oKTtcclxuICBkYXRlRm9ybWF0ID0ge30gYXMgYW55O1xyXG4gIHRhYmxlV3JhcHBlclJlZiA9IFJlYWN0LmNyZWF0ZVJlZjxIVE1MRGl2RWxlbWVudD4oKTtcclxuICBzdGF0aWMgY29udmVydENvbHVtbnMgPSBjb252ZXJ0Q29sdW1ucztcclxuICBjb25zdHJ1Y3Rvcihwcm9wczogYW55KSB7XHJcbiAgICBzdXBlcihwcm9wcyk7XHJcbiAgICB0aGlzLnN0YXRlID0ge1xyXG4gICAgICB0eXBlOiBcImFkZFwiLFxyXG4gICAgICBzZWxlY3RlZFJvd0tleXM6IFtdLFxyXG4gICAgICBzZWxlY3RlZFJvd0RhdGFzOiBbXSxcclxuICAgICAgdHJlZVNlbGVjdGVkS2V5OiBcIlwiLFxyXG4gICAgICBleHBhbmQ6IGZhbHNlLFxyXG4gICAgICB0cmVlU2VhcmNoUHJhbXM6IHt9LFxyXG4gICAgICBwb3BvcGVuczoge30sXHJcbiAgICAgIG1vcmVPcGVuOiBmYWxzZSxcclxuICAgICAgZWxlbWVudEhlaWdodDogMCxcclxuICAgICAgcGVybWlzc2lvbkJ1dHRvbnM6IFtdLFxyXG4gICAgICBxdWVyeVBhcmFtczoge30sXHJcbiAgICAgIHRhYmxlSGVhZGVySGVpZ2h0OiAwLCAvLyDmt7vliqDooajlpLTpq5jluqbliLBzdGF0ZVxyXG4gICAgICBidXR0b25zTG9hZGluZzoge30sXHJcbiAgICAgIHRyZWVXaWR0aDogdGhpcy5wcm9wcy5zaG93TGVmdCA/IDI2MCA6IDAsXHJcbiAgICAgIGRlZmF0dWx0QnV0dG9uOiBbXCJhZGRcIiwgXCJkZWxldGVcIiwgXCJzZWFyY2hcIiwgXCJlZGl0b3JcIiwgXCJkZWxldGVfYmF0Y2hcIl0sXHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgY29tcG9uZW50RGlkTW91bnQoKSB7XHJcbiAgICBjb25zdCB7IGluaXREYXRhLCBwZXJtaXNzb24gPSB7fSB9ID0gdGhpcy5wcm9wcztcclxuICAgIGNvbnN0IGVsZW1lbnRIZWlnaHQgPSB0aGlzLnBhZ2VSZWYuY3VycmVudD8uY2xpZW50SGVpZ2h0O1xyXG5cclxuICAgIC8vIOa3u+WKoOeql+WPo3Jlc2l6ZeebkeWQrFxyXG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXCJyZXNpemVcIiwgdGhpcy50aHJvdHRsZUNhbGN1bGF0ZVRhYmxlSGVhZGVySGVpZ2h0KTtcclxuXHJcbiAgICAvLyDliJ3lp4vorqHnrpfooajlpLTpq5jluqZcclxuICAgIHNldFRpbWVvdXQodGhpcy5jYWxjdWxhdGVUYWJsZUhlYWRlckhlaWdodCwgMCk7XHJcblxyXG4gICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgIGVsZW1lbnRIZWlnaHQsXHJcbiAgICB9KTtcclxuICAgIGluaXREYXRhICYmIGluaXREYXRhKCk7XHJcbiAgfVxyXG4gIGNvbXBvbmVudERpZFVwZGF0ZShwcmV2UHJvcHMpIHtcclxuICAgIGNvbnN0IGVsZW1lbnRIZWlnaHQgPSB0aGlzLnBhZ2VSZWYuY3VycmVudD8uY2xpZW50SGVpZ2h0O1xyXG4gICAgaWYgKGVsZW1lbnRIZWlnaHQgPiB0aGlzLnN0YXRlLmVsZW1lbnRIZWlnaHQpIHtcclxuICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgZWxlbWVudEhlaWdodCxcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBpZiAocHJldlByb3BzLnNob3dMZWZ0ICE9PSB0aGlzLnByb3BzLnNob3dMZWZ0KSB7XHJcbiAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgIHRyZWVXaWR0aDogdGhpcy5wcm9wcy5zaG93TGVmdCA/IDI2MCA6IDAsXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuICBjb21wb25lbnRXaWxsVW5tb3VudCgpIHtcclxuICAgIC8vIOenu+mZpHJlc2l6ZeebkeWQrFxyXG4gICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoXHJcbiAgICAgIFwicmVzaXplXCIsXHJcbiAgICAgIHRoaXMudGhyb3R0bGVDYWxjdWxhdGVUYWJsZUhlYWRlckhlaWdodFxyXG4gICAgKTtcclxuICB9XHJcbiAgc2V0U2VhcmNoUGFyYW1zKHBhcmFtcywgY2FsbEJhY2spIHtcclxuICAgIHRoaXMuc2VhcmNoUmVmLmN1cnJlbnQ/LnNldFNlYXJjaFBhcmFtcyhwYXJhbXMpO1xyXG4gICAgY2FsbEJhY2sgJiYgY2FsbEJhY2socGFyYW1zKTtcclxuICB9XHJcbiAgZG9TdWJtaXQoZGF0YSwgbGFiZWwgPSBcIue8lui+kVwiKSB7XHJcbiAgICB0aGlzLmVkaXRvclJlZi5jdXJyZW50Py5kb1N1Ym1pdChkYXRhLCBsYWJlbCk7XHJcbiAgfVxyXG5cclxuICBvblNlbGVjdCA9IChjaGVja2VkVHJlZUtleXM6IGFueSkgPT4ge1xyXG4gICAgY29uc3QgeyBuYW1lLCB1c2VyVHlwZSwgYWNjb3VudCB9ID0gdGhpcy5zdGF0ZTtcclxuICAgIGNvbnN0IHZhbHVlID0geyBuYW1lLCB1c2VyVHlwZSwgYWNjb3VudCwgZGVwdElkOiBjaGVja2VkVHJlZUtleXNbMF0gfTtcclxuICAgIGlmICh0aGlzLnByb3BzLm9uU2VhcmNoKSB7XHJcbiAgICAgIHRoaXMucHJvcHMub25TZWFyY2godmFsdWUpO1xyXG4gICAgfVxyXG4gICAgLy8gdGhpcy50YWJsZUxvYWQodmFsdWUpO1xyXG4gIH07XHJcblxyXG4gIC8v5pi+56S66KGo5Y2VXHJcbiAgc2hvd0Zvcm0odmFsdWU/OiBhbnksIGVkaXRvcmZsYWcgPSBcImFkZFwiLCBjYWxsQmFjaz86IGFueSkge1xyXG4gICAgaWYgKHRoaXMucHJvcHMuZm9ybVBhZ2VQcm9wcz8uZm9ybVR5cGUgPT0gXCJwYWdlXCIpIHtcclxuICAgICAgY29uc3QgeyBmdW5jcyA9IHt9IH0gPSB0aGlzLnByb3BzO1xyXG4gICAgICBsZXQgcGF0aG5hbWUgPSBgL2Zvcm1wYWdlLyR7ZWRpdG9yZmxhZyA/IGVkaXRvcmZsYWcgOiBcImFkZFwifS90YWJsZS8ke1xyXG4gICAgICAgIHRoaXMucHJvcHMudGFibGVDb2RlXHJcbiAgICAgIH1gO1xyXG4gICAgICBpZiAoZWRpdG9yZmxhZyA9PSBcImVkaXRvclwiIHx8IGVkaXRvcmZsYWcgPT0gXCJzZWFyY2hcIikge1xyXG4gICAgICAgIHBhdGhuYW1lID0gcGF0aG5hbWUgKyBcIj9pZD1cIiArIHZhbHVlLmlkO1xyXG4gICAgICB9XHJcbiAgICAgIGZ1bmNzPy5oaXN0b3J5KFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIHBhdGhuYW1lOiBwYXRobmFtZSxcclxuICAgICAgICAgIHNlcnZpY2VOYW1lOiBcInNldHRpbmctd2ViXCIsXHJcbiAgICAgICAgICBzZXJ2aWNlUGF0aDogXCIvc2V0dGluZ1wiLFxyXG4gICAgICAgICAgaWQ6XHJcbiAgICAgICAgICAgIG5ldyBEYXRlKCkuZ2V0VGltZSgpICtcclxuICAgICAgICAgICAgKHZhbHVlPy5pZCB8fCBcIl9cIikgK1xyXG4gICAgICAgICAgICBlZGl0b3JmbGFnICtcclxuICAgICAgICAgICAgXCLigJRcIiArXHJcbiAgICAgICAgICAgIHRoaXMucHJvcHMudGFibGVDb2RlICtcclxuICAgICAgICAgICAgKHZhbHVlPy5pZCA/IFwiX1wiICsgdmFsdWUuaWQgOiBcIlwiKSxcclxuICAgICAgICAgIHRpdGxlOlxyXG4gICAgICAgICAgICBg44CQJHtcclxuICAgICAgICAgICAgICBlZGl0b3JmbGFnID09IFwiYWRkXCJcclxuICAgICAgICAgICAgICAgID8gXCLmlrDlop5cIlxyXG4gICAgICAgICAgICAgICAgOiBlZGl0b3JmbGFnID09IFwiZWRpdG9yXCJcclxuICAgICAgICAgICAgICAgID8gXCLnvJbovpFcIlxyXG4gICAgICAgICAgICAgICAgOiBcIuafpeeci1wiXHJcbiAgICAgICAgICAgIH3jgJFgICsgdGhpcy5wcm9wcy5mb3JtUGFnZVByb3BzPy50aXRsZSB8fCBcIlwiLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgXCJhZGRUYWJcIlxyXG4gICAgICApO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgbGV0IG5ld1ZhbHVlID0gdmFsdWUgPyB7IC4uLnZhbHVlIH0gOiBudWxsO1xyXG4gICAgICB0aGlzLmVkaXRvclJlZj8uY3VycmVudD8uc2hvdyhuZXdWYWx1ZSwgZWRpdG9yZmxhZywgY2FsbEJhY2spO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy/lhbPpl63ooajljZVcclxuICBoaWRlRm9ybSgpIHtcclxuICAgIHRoaXMuZWRpdG9yUmVmLmN1cnJlbnQ/LmhpZGVGb3JtKCk7XHJcbiAgfVxyXG5cclxuICBzZXRMb2FkaW5nKGxvYWRpbmc6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMuZWRpdG9yUmVmLmN1cnJlbnQ/LnNldExvYWRpbmcobG9hZGluZyk7XHJcbiAgfVxyXG5cclxuICBzZXRFZGl0Rm9ybVZhbHVlcyh2YWx1ZSwgdHlwZSA9IFwi57yW6L6RXCIpIHtcclxuICAgIHRoaXMuZWRpdG9yUmVmLmN1cnJlbnQ/LnNldEZvcm1WYWx1ZSh2YWx1ZSwgdHlwZSk7XHJcbiAgfVxyXG5cclxuICBnZXRFZGl0Rm9ybVZhbHVlcygpIHtcclxuICAgIHJldHVybiB0aGlzLmVkaXRvclJlZi5jdXJyZW50Py5nZXRGb3JtVmFsdWUoKTtcclxuICB9XHJcblxyXG4gIC8v5om56YeP5Yig6ZmkXHJcbiAgb25EZWxldGUoZGF0YT86IGFueSwgZGVsZXRlUG9zaXRpb24gPSBcInJvd1wiKSB7XHJcbiAgICBjb25zdCB7XHJcbiAgICAgIGRlbGV0ZVVybCxcclxuICAgICAgb25EZWxldGUsXHJcbiAgICAgIGRlbGV0ZVBhcmFtcyA9IHt9LFxyXG4gICAgICBidXR0b25DbGljayA9IHt9LFxyXG4gICAgICByZXF1ZXN0UGFyYW1zID0ge30sXHJcbiAgICAgIHJlcXVlc3RVcmxzID0ge30sXHJcbiAgICAgIHJlcXVlc3RDb25maWcgPSB7fSxcclxuICAgIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgbGV0IF90aGlzID0gdGhpcztcclxuICAgIGNvbnN0IHNlbGVjdGVkUm93S2V5cyA9IHRoaXMudGFibGVSZWYuY3VycmVudD8uZ2V0U2VsZWN0ZWRSb3dLZXlzKCk7XHJcbiAgICBjb25zdCBzZWxlY3RlZFJvd0RhdGFzID0gdGhpcy50YWJsZVJlZi5jdXJyZW50Py5nZXRTZWxlY3RlZFJvd0RhdGFzKCk7XHJcbiAgICBsZXQgdXJsID0gcmVxdWVzdFVybHMuZGVsZXRlVXJsID8gcmVxdWVzdFVybHMuZGVsZXRlVXJsIDogZGVsZXRlVXJsO1xyXG4gICAgbGV0IHBhcmFtczogYW55ID0gcmVxdWVzdFBhcmFtcy5kZWxldGVQYXJhbXNcclxuICAgICAgPyByZXF1ZXN0UGFyYW1zLmRlbGV0ZVBhcmFtc1xyXG4gICAgICA6IGRlbGV0ZVBhcmFtcztcclxuICAgIGlmIChkZWxldGVQb3NpdGlvbiA9PSBcInRvb2xiYXJcIikge1xyXG4gICAgICBpZiAoc2VsZWN0ZWRSb3dLZXlzLmxlbmd0aCA9PSAwKSB7XHJcbiAgICAgICAgbWVzc2FnZS53YXJuaW5nKFwi6K+36YCJ5oup6KaB5Yig6Zmk55qE5pWw5o2u77yBXCIpO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgTW9kYWwuY29uZmlybSh7XHJcbiAgICAgIGNvbnRlbnQ6IFwi5piv5ZCm56Gu6K6k5Yig6Zmk5omA6YCJ6aG577yfXCIsXHJcbiAgICAgIC8vIGNlbnRlcmVkOnRydWUsXHJcbiAgICAgIG9uT2s6ICgpID0+IHtcclxuICAgICAgICBpZiAoYnV0dG9uQ2xpY2sub25EZWxldGUpIHtcclxuICAgICAgICAgIGNvbnZlckZ1bmN0aW9uKFxyXG4gICAgICAgICAgICBidXR0b25DbGljay5vbkRlbGV0ZSxcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgIHBhZ2VSZWY6IHRoaXMucHJvcHMucGFnZVJlZixcclxuICAgICAgICAgICAgICByZWNvcmQ6IGRlbGV0ZVBvc2l0aW9uID09IFwidG9vbGJhclwiID8gc2VsZWN0ZWRSb3dEYXRhcyA6IGRhdGEsXHJcbiAgICAgICAgICAgICAgaWRzOiBkZWxldGVQb3NpdGlvbiA9PSBcInRvb2xiYXJcIiA/IHNlbGVjdGVkUm93S2V5cyA6IGRhdGE/LmlkLFxyXG4gICAgICAgICAgICAgIGZ1bmNzOiB0aGlzLnByb3BzLmZ1bmNzLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB0aGlzLnByb3BzLlV0aWxzXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAob25EZWxldGUpIHtcclxuICAgICAgICAgIG9uRGVsZXRlICYmXHJcbiAgICAgICAgICAgIG9uRGVsZXRlKGRlbGV0ZVBvc2l0aW9uID09IFwidG9vbGJhclwiID8gc2VsZWN0ZWRSb3dLZXlzIDogZGF0YSk7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICghdXJsKSB7XHJcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJ1cmzkuI3og73kuLrnqbrvvIFcIik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IHsgZGF0YTogZGF0YVBhcmFtcyA9IHt9LCAuLi5vdGhlclBhcmFtcyB9ID0gcGFyYW1zO1xyXG4gICAgICAgIGNvbnN0IGRlZmF1bHRQYXJhbXMgPSB7XHJcbiAgICAgICAgICBtZXRob2Q6IFwicG9zdFwiLFxyXG4gICAgICAgICAgYXV0b1ByZWZpeDogdHJ1ZSxcclxuICAgICAgICAgIHBhcmFtczoge1xyXG4gICAgICAgICAgICBpZHM6IGRlbGV0ZVBvc2l0aW9uID09IFwidG9vbGJhclwiID8gc2VsZWN0ZWRSb3dLZXlzLmpvaW4oKSA6IGRhdGEuaWQsXHJcbiAgICAgICAgICAgIC4uLmRhdGFQYXJhbXMsXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgLi4ucmVxdWVzdENvbmZpZyxcclxuICAgICAgICB9O1xyXG4gICAgICAgIGxldCBmaW5hbFBhcmFtcyA9IHt9IGFzIGFueTtcclxuICAgICAgICBmaW5hbFBhcmFtcyA9IHsgLi4uZGVmYXVsdFBhcmFtcywgLi4ub3RoZXJQYXJhbXMgfTtcclxuICAgICAgICByZXF1ZXN0KHVybCwge1xyXG4gICAgICAgICAgLi4uZmluYWxQYXJhbXMsXHJcbiAgICAgICAgfSlcclxuICAgICAgICAgIC50aGVuKGZ1bmN0aW9uIChyZXM6IGFueSkge1xyXG4gICAgICAgICAgICBjb25zdCB7IGNvZGUgfSA9IHJlcztcclxuICAgICAgICAgICAgaWYgKGNvZGUgPT09IDIwMCkge1xyXG4gICAgICAgICAgICAgIG1lc3NhZ2Uuc3VjY2VzcyhcIuWIoOmZpOaIkOWKn++8gVwiKTtcclxuICAgICAgICAgICAgICBsZXQgdmFsdWUgPSBfdGhpcy5zZWFyY2hSZWY/LmN1cnJlbnQ/LmdldFNlYXJjaFZhbHVlcygpO1xyXG4gICAgICAgICAgICAgIF90aGlzLnByb3BzLm9uQ2FsbEJhY2tzPy5vbkRlbGV0ZUNhbGxCYWNrICYmXHJcbiAgICAgICAgICAgICAgICBjb252ZXJGdW5jdGlvbihcclxuICAgICAgICAgICAgICAgICAgX3RoaXMucHJvcHMub25DYWxsQmFja3M/Lm9uRGVsZXRlQ2FsbEJhY2ssXHJcbiAgICAgICAgICAgICAgICAgIHsgcGFnZVJlZjogdGhpcy5wcm9wcy5wYWdlUmVmIH0sXHJcbiAgICAgICAgICAgICAgICAgIHRoaXMucHJvcHMuVXRpbHNcclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgX3RoaXMudGFibGVMb2FkKHZhbHVlKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICBpZiAoIXJlcy5tc2cpIHtcclxuICAgICAgICAgICAgICAgIG1lc3NhZ2UuZXJyb3IoXCLliKDpmaTlpLHotKXvvIFcIik7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgICAgLmNhdGNoKGZ1bmN0aW9uIChlcnJvcjogYW55KSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiZXJyb3JcIiwgZXJyb3IpO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgIH0sXHJcbiAgICB9KTtcclxuICB9XHJcbiAgdGFibGVMb2FkKHBhcmFtczogYW55LCByZXF1ZXN0Q29uZmlnID0ge30pIHtcclxuICAgIGNvbnN0IHtcclxuICAgICAgcmVxdWVzdENvbmZpZzogZGVmYXVsdFJlcXVlc3RDb25maWcgPSB7fSxcclxuICAgICAgcmVxdWVzdFBhcmFtcyA9IHt9LFxyXG4gICAgICB0YWJsZVByb3BzID0ge30sXHJcbiAgICB9ID0gdGhpcy5wcm9wcztcclxuICAgIGNvbnN0IHsgc3RvcmU6IHRhYmxlU3RvcmUgPSB7fSB9ID0gdGFibGVQcm9wcztcclxuICAgIGxldCBxdWVyeVBhcmFtczogYW55ID0gdGhpcy5jb252ZXJ0UXVlcnlQYXJhbXMoKTtcclxuICAgIGxldCBkYXRhID0gcXVlcnlQYXJhbXMuZGF0YSB8fCBxdWVyeVBhcmFtcy5wYXJhbXMgfHwge307XHJcblxyXG4gICAgbGV0IGZpbmFsUGFyYW1zID0ge1xyXG4gICAgICAuLi5kYXRhLFxyXG4gICAgICAuLi50YWJsZVN0b3JlLnJlcXVlc3RDb25maWc/LnBhcmFtcyxcclxuICAgICAgLi4ucGFyYW1zLFxyXG4gICAgfTtcclxuICAgIGNvbnN0IHsgcmVxdWVzdENvbmlnOiBzdG9yZUNvbmZpZyA9IHt9IH0gPSB0YWJsZVN0b3JlO1xyXG4gICAgY29uc3QgeyBwYXJhbXM6IHN0b3JlUGFyYW1zID0ge30sIC4uLm90aGVyU3RvcmVDb25maWcgfSA9IHN0b3JlQ29uZmlnO1xyXG4gICAgdGhpcy50YWJsZVJlZi5jdXJyZW50Py5zdG9yZS5sb2FkKHtcclxuICAgICAgLi4uZGVmYXVsdFJlcXVlc3RDb25maWcsXHJcbiAgICAgIC4uLm90aGVyU3RvcmVDb25maWcsXHJcbiAgICAgIC4uLnJlcXVlc3RDb25maWcsXHJcbiAgICAgIHBhcmFtczogeyAuLi5zdG9yZVBhcmFtcywgLi4uZmluYWxQYXJhbXMgfSxcclxuICAgIH0pO1xyXG4gIH1cclxuICAvL+afpeivolxyXG4gIG9uU2VhcmNoKHBhcmFtcykge1xyXG4gICAgY29uc3Qge1xyXG4gICAgICBvblNlYXJjaCxcclxuICAgICAgb25DYWxsQmFja3MsXHJcbiAgICAgIHJlcXVlc3RQYXJhbXMgPSB7fSxcclxuICAgICAgdGFibGVQcm9wcyA9IHt9LFxyXG4gICAgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBjb25zdCB7IHN0b3JlOiB0YWJsZVN0b3JlID0ge30gfSA9IHRhYmxlUHJvcHM7XHJcbiAgICBsZXQgcXVlcnlQYXJhbXM6IGFueSA9IHRoaXMuY29udmVydFF1ZXJ5UGFyYW1zKCk7XHJcbiAgICBsZXQgZGF0YSA9IHF1ZXJ5UGFyYW1zLmRhdGEgfHwgcXVlcnlQYXJhbXMucGFyYW1zIHx8IHt9O1xyXG4gICAgbGV0IGZpbmFsUGFyYW1zID0ge1xyXG4gICAgICAuLi5kYXRhLFxyXG4gICAgICAuLi50YWJsZVN0b3JlLnJlcXVlc3RDb25maWc/LnBhcmFtcyxcclxuICAgICAgLi4ucGFyYW1zLFxyXG4gICAgfTtcclxuICAgIGlmIChvblNlYXJjaCkge1xyXG4gICAgICBvblNlYXJjaCh7IC4uLmZpbmFsUGFyYW1zLCAuLi50aGlzLnN0YXRlLnRyZWVTZWFyY2hQcmFtcyB9KTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhpcy50YWJsZUxvYWQoeyAuLi5maW5hbFBhcmFtcywgLi4udGhpcy5zdGF0ZS50cmVlU2VhcmNoUHJhbXMgfSk7XHJcbiAgICBvbkNhbGxCYWNrcz8ub25RdWVyeUNhbGxCYWNrICYmXHJcbiAgICAgIGNvbnZlckZ1bmN0aW9uKFxyXG4gICAgICAgIHRoaXMucHJvcHMub25DYWxsQmFja3M/Lm9uUXVlcnlDYWxsQmFjayxcclxuICAgICAgICB7IHBhZ2VSZWY6IHRoaXMucHJvcHMucGFnZVJlZiwgcGFyYW1zOiBwYXJhbXMgfSxcclxuICAgICAgICB0aGlzLnByb3BzLlV0aWxzXHJcbiAgICAgICk7XHJcbiAgfVxyXG4gIC8v6KGo5qC86YeN5paw5Yqg6L29XHJcbiAgdGFibGVSZWxvYWQocGFyYW1zID0ge30sIGF1dG9Mb2FkID0gdHJ1ZSkge1xyXG4gICAgdGhpcy50YWJsZVJlZi5jdXJyZW50Py5zdG9yZT8ucmVsb2FkKHtcclxuICAgICAgY2FsbGJhY2s6IChyZXMpID0+IHtcclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICBhdXRvTG9hZCAmJlxyXG4gICAgICAgICAgcmVzPy5kYXRhPy5yZWNvcmRzPy5sZW5ndGggPT0gMCAmJlxyXG4gICAgICAgICAgdGhpcy5zdGF0ZS5jdXJyZW50UGFnZSAhPT0gMVxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgdGhpcy50YWJsZVJlZi5jdXJyZW50Py5zdG9yZT8ucmVsb2FkKHtcclxuICAgICAgICAgICAgcGFyYW1zOiB7IGN1cnJlbnQ6IDEsIC4uLnBhcmFtcyB9LFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIHRyZWVMb2FkKHBhcmFtczogYW55LCByZXF1ZXN0Q29uZmlnID0ge30pIHtcclxuICAgIGNvbnN0IHsgcmVxdWVzdENvbmZpZzogZGVmYXVsdFJlcXVlc3RDb25maWcgPSB7fSB9ID0gdGhpcy5wcm9wcztcclxuICAgIHRoaXMudHJlZVJlZi5jdXJyZW50Py5zdG9yZS5sb2FkKHtcclxuICAgICAgLi4uZGVmYXVsdFJlcXVlc3RDb25maWcsXHJcbiAgICAgIC4uLnJlcXVlc3RDb25maWcsXHJcbiAgICAgIHBhcmFtczogcGFyYW1zLFxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIGdldFNlbGVjdGVkUm93S2V5cygpIHtcclxuICAgIHJldHVybiB0aGlzLnRhYmxlUmVmLmN1cnJlbnQ/LmdldFNlbGVjdGVkUm93S2V5cygpO1xyXG4gIH1cclxuICBnZXRTZWxlY3RlZFJvd0RhdGFzKCkge1xyXG4gICAgcmV0dXJuIHRoaXMudGFibGVSZWYuY3VycmVudD8uZ2V0U2VsZWN0ZWRSb3dEYXRhcygpO1xyXG4gIH1cclxuICBzZXRTZWxlY3RlZFJvd0tleXMoZGF0YTogQXJyYXk8U3RyaW5nIHwgTnVtYmVyPikge1xyXG4gICAgcmV0dXJuIHRoaXMudGFibGVSZWYuY3VycmVudD8uc2V0U2VsZWN0ZWRSb3dLZXlzKGRhdGEpO1xyXG4gIH1cclxuICBzZXRTZWxlY3RlZFJvd0RhdGFzKGRhdGE6IEFycmF5PE9iamVjdD4pIHtcclxuICAgIHJldHVybiB0aGlzLnRhYmxlUmVmLmN1cnJlbnQ/LnNldFNlbGVjdGVkUm93RGF0YXMoZGF0YSk7XHJcbiAgfVxyXG4gIHJlc2V0U2VsZWN0ZWRSb3dLZXlzKCkge1xyXG4gICAgcmV0dXJuIHRoaXMudGFibGVSZWYuY3VycmVudD8ucmVzZXRTZWxlY3RlZFJvd0tleXMoKTtcclxuICB9XHJcblxyXG4gIGdldFNlYXJjaFZhbHVlcygpIHtcclxuICAgIGNvbnN0IGZyb21WYWx1ZSA9IHRoaXMuc2VhcmNoUmVmPy5jdXJyZW50Py5nZXRTZWFyY2hWYWx1ZXMoKTtcclxuICAgIHJldHVybiB7IC4uLmZyb21WYWx1ZSwgLi4udGhpcy5zdGF0ZS50cmVlU2VhcmNoUHJhbXMgfTtcclxuICB9XHJcblxyXG4gIGdldENoaWxkcmVuRGF0YShkYXRhLCBrZXlzID0gW10pIHtcclxuICAgIGNvbnN0IHsgdGFibGVQcm9wcyB9ID0gdGhpcy5wcm9wcztcclxuICAgIGNvbnN0IHsgcm93S2V5ID0gXCJpZFwiIH0gPSB0YWJsZVByb3BzO1xyXG4gICAgbGV0IHJlc0tleSA9IFtdO1xyXG4gICAgbGV0IGtleSA9IFwiXCI7XHJcbiAgICBpZiAoZGF0YS5jaGlsZE5vZGVzKSB7XHJcbiAgICAgIGNvbnN0IGNoaWxkcmVuID0gZGF0YS5jaGlsZE5vZGVzO1xyXG4gICAgICBjaGlsZHJlbi5tYXAoKGl0ZW0sIGluZGV4KSA9PiB7XHJcbiAgICAgICAgaWYgKHR5cGVvZiByb3dLZXkgPT0gXCJmdW5jdGlvblwiKSB7XHJcbiAgICAgICAgICBrZXkgPSByb3dLZXkoaXRlbSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGtleSA9IGl0ZW1bcm93S2V5XTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGl0ZW0uY2hpbGROb2Rlcykge1xyXG4gICAgICAgICAgdGhpcy5nZXRDaGlsZHJlbkRhdGEoaXRlbS5jaGlsZE5vZGVzLCBrZXlzKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgcmVzS2V5ID0gWy4uLmtleXMsIGtleV07XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJlc0tleSA9IFsuLi5rZXlzLCBrZXldO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJlc0tleTtcclxuICB9XHJcblxyXG4gIHJlbmRlclRvb2xCdXR0b25zKHRvb2xidXR0b25zOiBhbnksIHRvb2xiYXJGbGFnKSB7XHJcbiAgICBjb25zdCBmbGFnID0gdG9vbGJ1dHRvbnMubGVuZ3RoID4gNTtcclxuICAgIGNvbnN0IHsgc2hvd1NlYXJjaCA9IHRydWUgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBjb25zdCBjb250ZW50ID0gdG9vbGJ1dHRvbnMubWFwKChpdGVtOiBhbnksIGluZGV4OiBhbnkpID0+IHtcclxuICAgICAgY29uc3QgeyBjaGlsZHJlbiwgcGFnZVR5cGUsIG9uQ2xpY2ssIGljb24sIHNob3csIC4uLnBhcmFtcyB9ID0gaXRlbS5wcm9wcztcclxuICAgICAgaWYgKGluZGV4ID4gMykge1xyXG4gICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xzKFxyXG4gICAgICAgICAgICAgIGdldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS1lZGl0b3JcIiksXHJcbiAgICAgICAgICAgICAgZ2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLWNvbnRlbnQtaXRlbVwiKVxyXG4gICAgICAgICAgICApfVxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8QnV0dG9uXHJcbiAgICAgICAgICAgICAga2V5PXtpbmRleH1cclxuICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgICAgICAgICAgbW9yZU9wZW46IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICBvbkNsaWNrICYmIG9uQ2xpY2soKTtcclxuICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgIHsuLi5wYXJhbXN9XHJcbiAgICAgICAgICAgICAgdHlwZT17XCJsaW5rXCJ9XHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS1pY29uXCIpfT5cclxuICAgICAgICAgICAgICAgIHtpY29ufVxyXG4gICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS10ZXh0XCIpfT5cclxuICAgICAgICAgICAgICAgIHtjaGlsZHJlbn1cclxuICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgIDwvQnV0dG9uPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgcmV0dXJuIChcclxuICAgICAgPGRpdlxyXG4gICAgICAgIGNsYXNzTmFtZT17Y2xzKGdldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS10b29sLWJ1dHRvbnNcIikpfVxyXG4gICAgICAgIHN0eWxlPXt7IG1hcmdpbkxlZnQ6IDAgfX1cclxuICAgICAgPlxyXG4gICAgICAgIHt0b29sYnV0dG9ucy5tYXAoKGl0ZW06IGFueSwgaW5kZXg6IGFueSkgPT4ge1xyXG4gICAgICAgICAgaWYgKGZsYWcpIHtcclxuICAgICAgICAgICAgaWYgKGluZGV4IDwgNCkge1xyXG4gICAgICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgIGtleT17aW5kZXh9XHJcbiAgICAgICAgICAgICAgICAgIHN0eWxlPXt7XHJcbiAgICAgICAgICAgICAgICAgICAgbWFyZ2luUmlnaHQ6IDEyLFxyXG4gICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICB7aXRlbX1cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaW5kZXggPT0gNCkge1xyXG4gICAgICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgICAgICA8UG9wb3ZlclxyXG4gICAgICAgICAgICAgICAgICBjb250ZW50PXtjb250ZW50fVxyXG4gICAgICAgICAgICAgICAgICB0aXRsZT17bnVsbH1cclxuICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tXCJcclxuICAgICAgICAgICAgICAgICAga2V5PXtpbmRleH1cclxuICAgICAgICAgICAgICAgICAgb3Blbj17dGhpcy5zdGF0ZS5tb3JlT3Blbn1cclxuICAgICAgICAgICAgICAgICAgb25PcGVuQ2hhbmdlPXsob3BlbikgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChvcGVuKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbW9yZU9wZW46IHRydWUsXHJcbiAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1vcmVPcGVuOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgICAgLy8gb3Blbj17dHJ1ZX1cclxuICAgICAgICAgICAgICAgICAgLy8gb3ZlcmxheUNsYXNzTmFtZT17c3R5bGVzWydwb3AtYm94J119XHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIDxCdXR0b24gdHlwZT1cInByaW1hcnlcIj5cclxuICAgICAgICAgICAgICAgICAgICDmm7TlpJogPERvd25PdXRsaW5lZCAvPlxyXG4gICAgICAgICAgICAgICAgICA8L0J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDwvUG9wb3Zlcj5cclxuICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgIGtleT17aW5kZXh9XHJcbiAgICAgICAgICAgICAgICBzdHlsZT17e1xyXG4gICAgICAgICAgICAgICAgICBtYXJnaW5SaWdodDogaW5kZXggPT0gdG9vbGJ1dHRvbnMubGVuZ3RoIC0gMSA/IDAgOiAxMixcclxuICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAge2l0ZW19XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSl9XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgKTtcclxuICB9XHJcbiAgcmVuZGVyQ2xvdW1uQnV0dG9uKGNvbHVtbkJ1dHRvbnM6IGFueSwgcm93UmVjb3JkOiBhbnkpIHtcclxuICAgIGNvbnN0IHsgYWN0aW9uUHJvcHMsIHRhYmxlUHJvcHMgPSB7fSB9ID0gdGhpcy5wcm9wcztcclxuICAgIGNvbnN0IHsgYmFzZUFjdGlvbkNvbHVtbiB9ID0gY29uZmlnKCk7XHJcbiAgICBjb25zdCBuZXdCdXR0b25zID0gW107XHJcbiAgICBjb25zdCB7IHJvd0tleSA9IFwiaWRcIiB9ID0gdGFibGVQcm9wcztcclxuICAgIGxldCBrZXkgPSBcIlwiO1xyXG4gICAgaWYgKHR5cGVvZiByb3dLZXkgPT0gXCJmdW5jdGlvblwiKSB7XHJcbiAgICAgIGtleSA9IHJvd0tleShyb3dSZWNvcmQpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAga2V5ID0gcm93UmVjb3JkW3Jvd0tleV07XHJcbiAgICB9XHJcbiAgICBsZXQgc2hvd0ljb24gPSBmYWxzZTtcclxuICAgIGlmIChhY3Rpb25Qcm9wcz8uc2hvd0ljb24gPT09IHRydWUgfHwgYmFzZUFjdGlvbkNvbHVtbi5zaG93SWNvbiA9PT0gdHJ1ZSlcclxuICAgICAgc2hvd0ljb24gPSB0cnVlO1xyXG4gICAgY29sdW1uQnV0dG9ucy5tYXAoKGl0ZW06IGFueSwgaW5kZXg6IGFueSkgPT4ge1xyXG4gICAgICBjb25zdCB7IGNoaWxkcmVuLCBwYWdlVHlwZSwgb25DbGljaywgaWNvbiwgcmVjb3JkU2hvdywgLi4ucGFyYW1zIH0gPVxyXG4gICAgICAgIGl0ZW0ucHJvcHM7XHJcbiAgICAgIGlmIChyZWNvcmRTaG93KSB7XHJcbiAgICAgICAgaWYgKHR5cGVvZiByZWNvcmRTaG93ID09IFwic3RyaW5nXCIpIHtcclxuICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGV2ZW50T3B0aW9uID0ge1xyXG4gICAgICAgICAgICAgIHJlY29yZDogcm93UmVjb3JkLFxyXG4gICAgICAgICAgICAgIHBhZ2VSZWY6IHRoaXMucHJvcHMucGFnZVJlZixcclxuICAgICAgICAgICAgICBmdW5jczogdGhpcy5wcm9wcy5mdW5jcyxcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgY29uc3QgVXRpbHMgPSB7IC4uLnRoaXMucHJvcHMuVWl0bHMgfTtcclxuICAgICAgICAgICAgbGV0IGZ1bmMgPSBuZXcgRnVuY3Rpb24oXCJldmVudE9wdGlvbixVdGlsc1wiLCByZWNvcmRTaG93KTtcclxuICAgICAgICAgICAgY29uc3Qgc2hvdyA9IGZ1bmMoZXZlbnRPcHRpb24sIFV0aWxzKTtcclxuICAgICAgICAgICAgc2hvdyAmJiBuZXdCdXR0b25zLnB1c2goaXRlbSk7XHJcbiAgICAgICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgIGxldCByZWNvcmQgPSByb3dSZWNvcmQ7XHJcbiAgICAgICAgICAgIGlmIChldmFsKHJlY29yZFNob3cpKSB7XHJcbiAgICAgICAgICAgICAgbmV3QnV0dG9ucy5wdXNoKGl0ZW0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgcmVjb3JkU2hvdyA9PSBcImZ1bmN0aW9uXCIpIHtcclxuICAgICAgICAgIGNvbnN0IHNob3cgPSByZWNvcmRTaG93KHJvd1JlY29yZCk7XHJcbiAgICAgICAgICBzaG93ICYmIG5ld0J1dHRvbnMucHVzaChpdGVtKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgbmV3QnV0dG9ucy5wdXNoKGl0ZW0pO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIGxldCBudW1iZXIgPSBhY3Rpb25Qcm9wcz8uYnV0dG9uTnVtYmVyXHJcbiAgICAgID8gYWN0aW9uUHJvcHM/LmJ1dHRvbk51bWJlclxyXG4gICAgICA6IGJhc2VBY3Rpb25Db2x1bW4/LmJ1dHRvbk51bWJlclxyXG4gICAgICA/IGJhc2VBY3Rpb25Db2x1bW4/LmJ1dHRvbk51bWJlclxyXG4gICAgICA6IDM7XHJcbiAgICBsZXQgZmxhZyA9IGZhbHNlO1xyXG4gICAgaWYgKG51bWJlciA9PSBcImFsbFwiKSB7XHJcbiAgICAgIGZsYWcgPSBmYWxzZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGZsYWcgPSBuZXdCdXR0b25zLmxlbmd0aCA+IG51bWJlcjtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBjb250ZW50ID0gbmV3QnV0dG9ucy5tYXAoKGl0ZW06IGFueSwgaW5kZXg6IGFueSkgPT4ge1xyXG4gICAgICBjb25zdCB7IGNoaWxkcmVuLCBwYWdlVHlwZSwgb25DbGljaywgcmVjb3JkU2hvdywgaWNvbiwgc2hvdywgLi4ucGFyYW1zIH0gPVxyXG4gICAgICAgIGl0ZW0ucHJvcHM7XHJcbiAgICAgIGlmIChpbmRleCA+IE51bWJlcihudW1iZXIpIC0gMSkge1xyXG4gICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICA8QnV0dG9uXHJcbiAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xzKFxyXG4gICAgICAgICAgICAgIGdldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS1lZGl0b3JcIiksXHJcbiAgICAgICAgICAgICAgZ2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLWNvbnRlbnQtaXRlbVwiKVxyXG4gICAgICAgICAgICApfVxyXG4gICAgICAgICAgICBrZXk9e2luZGV4fVxyXG4gICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XHJcbiAgICAgICAgICAgICAgbGV0IGRhdGEgPSB7IC4uLnRoaXMuc3RhdGUucG9wb3BlbnMgfTtcclxuICAgICAgICAgICAgICBkYXRhW3Jvd1JlY29yZC5pZF0gPSBmYWxzZTtcclxuICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgICAgICAgIHBvcG9wZW5zOiBkYXRhLFxyXG4gICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgIG9uQ2xpY2sgJiYgb25DbGljayhyb3dSZWNvcmQpO1xyXG4gICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICB7Li4ucGFyYW1zfVxyXG4gICAgICAgICAgICB0eXBlPXtcImxpbmtcIn1cclxuICAgICAgICAgID5cclxuICAgICAgICAgICAge3Nob3dJY29uICE9PSBmYWxzZSAmJiAoXHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtaWNvblwiKX0+XHJcbiAgICAgICAgICAgICAgICB7aWNvbn1cclxuICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLXRleHRcIil9PlxyXG4gICAgICAgICAgICAgIHtjaGlsZHJlbn1cclxuICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgPC9CdXR0b24+XHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gbmV3QnV0dG9ucy5tYXAoKGl0ZW06IGFueSwgaW5kZXg6IGFueSkgPT4ge1xyXG4gICAgICBjb25zdCB7IGNoaWxkcmVuLCBwYWdlVHlwZSwgb25DbGljaywgcmVjb3JkU2hvdywgaWNvbiwgLi4ucGFyYW1zIH0gPVxyXG4gICAgICAgIGl0ZW0ucHJvcHM7XHJcbiAgICAgIGlmIChmbGFnKSB7XHJcbiAgICAgICAgaWYgKGluZGV4IDwgbnVtYmVyKSB7XHJcbiAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICA8QnV0dG9uXHJcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbHMoZ2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLWVkaXRvclwiKSwge1xyXG4gICAgICAgICAgICAgICAgW2dldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS1lZGl0b3ItZmlyc3RcIildOiBpbmRleCA9PT0gMCxcclxuICAgICAgICAgICAgICB9KX1cclxuICAgICAgICAgICAgICBrZXk9e2luZGV4fVxyXG4gICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcclxuICAgICAgICAgICAgICAgIG9uQ2xpY2sgJiYgb25DbGljayhyb3dSZWNvcmQpO1xyXG4gICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgaWNvbj17aWNvbn1cclxuICAgICAgICAgICAgICB7Li4ucGFyYW1zfVxyXG4gICAgICAgICAgICAgIHR5cGU9e1wibGlua1wifVxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAge3Nob3dJY29uICE9PSBmYWxzZSAmJiAoXHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS1pY29uXCIpfT5cclxuICAgICAgICAgICAgICAgICAge2ljb259XHJcbiAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS10ZXh0XCIpfT5cclxuICAgICAgICAgICAgICAgIHtjaGlsZHJlbn1cclxuICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgIDwvQnV0dG9uPlxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9IGVsc2UgaWYgKGluZGV4ID09IG51bWJlcikge1xyXG4gICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgPFBvcG92ZXJcclxuICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b21cIlxyXG4gICAgICAgICAgICAgIHRpdGxlPXtudWxsfVxyXG4gICAgICAgICAgICAgIGNvbnRlbnQ9e2NvbnRlbnR9XHJcbiAgICAgICAgICAgICAgdHJpZ2dlcj17W1wiY2xpY2tcIl19XHJcbiAgICAgICAgICAgICAga2V5PXtpbmRleH1cclxuICAgICAgICAgICAgICBvcGVuPXt0aGlzLnN0YXRlLnBvcG9wZW5zW2tleV0gfHwgZmFsc2V9XHJcbiAgICAgICAgICAgICAgb25PcGVuQ2hhbmdlPXsob3BlbikgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKG9wZW4pIHtcclxuICAgICAgICAgICAgICAgICAgbGV0IGRhdGEgPSB7IC4uLnRoaXMuc3RhdGUucG9wb3BlbnMgfTtcclxuICAgICAgICAgICAgICAgICAgZGF0YVtrZXldID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICAgICAgICAgICAgcG9wb3BlbnM6IGRhdGEsXHJcbiAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICAgICAgICAgICAgcG9wb3BlbnM6IHt9LFxyXG4gICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgIC8vIG92ZXJsYXlDbGFzc05hbWU9e3N0eWxlc1sncG9wJ119XHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8YSBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS1lZGl0b3JcIil9PlxyXG4gICAgICAgICAgICAgICAgPEVsbGlwc2lzT3V0bGluZWQgLz5cclxuICAgICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICAgIDwvUG9wb3Zlcj5cclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgPEJ1dHRvblxyXG4gICAgICAgICAgICBjbGFzc05hbWU9e2NscyhnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtZWRpdG9yXCIpLCB7XHJcbiAgICAgICAgICAgICAgW2dldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS1lZGl0b3ItZmlyc3RcIildOiBpbmRleCA9PT0gMCxcclxuICAgICAgICAgICAgfSl9XHJcbiAgICAgICAgICAgIGtleT17aW5kZXh9XHJcbiAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcclxuICAgICAgICAgICAgICBvbkNsaWNrICYmIG9uQ2xpY2socm93UmVjb3JkKTtcclxuICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgey4uLnBhcmFtc31cclxuICAgICAgICAgICAgdHlwZT1cImxpbmtcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICB7c2hvd0ljb24gIT09IGZhbHNlICYmIChcclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS1pY29uXCIpfT5cclxuICAgICAgICAgICAgICAgIHtpY29ufVxyXG4gICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtdGV4dFwiKX0+XHJcbiAgICAgICAgICAgICAge2NoaWxkcmVufVxyXG4gICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICA8L0J1dHRvbj5cclxuICAgICAgICApO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIC8vIH1cclxuICB9XHJcbiAgLy/moJHngrnlh7vkuovku7ZcclxuICB0cmVlU2VsZWN0KHNlbGVjdGVkS2V5czogYW55LCBvYmo6IGFueSkge1xyXG4gICAgbGV0IGtleXdvcmQgPSBcIlwiO1xyXG4gICAgY29uc3Qge1xyXG4gICAgICBzZWFyY2hLZXkgPSBcImtleVwiLFxyXG4gICAgICBzZWFyY2hGaWVsZCA9IFwiXCIsXHJcbiAgICAgIHBhcmFudFNlbGVjdCA9IHRydWUsXHJcbiAgICB9ID0gdGhpcy5wcm9wcy50cmVlUHJvcHM7XHJcbiAgICBjb25zdCB7IHRyZWVTZWxlY3RlZEtleSB9ID0gdGhpcy5zdGF0ZTtcclxuICAgIGNvbnN0IHsgc2VsZWN0ZWQsIHNlbGVjdGVkTm9kZXMgfSA9IG9iajtcclxuXHJcbiAgICBpZiAoc2VsZWN0ZWQpIHtcclxuICAgICAga2V5d29yZCA9IHNlbGVjdGVkTm9kZXNbMF0uZGF0YXJlZi5hdHRyaWJ1dGVbc2VhcmNoS2V5XTtcclxuICAgICAgaWYgKHBhcmFudFNlbGVjdCkge1xyXG4gICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgdHJlZVNlbGVjdGVkS2V5OiBzZWxlY3RlZEtleXNbMF0sXHJcbiAgICAgICAgICB0cmVlU2VhcmNoUHJhbXM6IHsgW3NlYXJjaEZpZWxkXToga2V5d29yZCB9LFxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGlmIChzZWxlY3RlZE5vZGVzWzBdLmlzTGVhZiB8fCAhc2VsZWN0ZWROb2Rlc1swXS5jaGlsZHJlbikge1xyXG4gICAgICAgICAgaWYgKHNlbGVjdGVkS2V5c1swXSAhPT0gdHJlZVNlbGVjdGVkS2V5KSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgICAgIHRyZWVTZWxlY3RlZEtleTogc2VsZWN0ZWRLZXlzWzBdLFxyXG4gICAgICAgICAgICAgIHRyZWVTZWFyY2hQcmFtczogeyBbc2VhcmNoRmllbGRdOiBrZXl3b3JkIH0sXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgdHJlZVNlbGVjdGVkS2V5OiBrZXl3b3JkLFxyXG4gICAgICAgIHRyZWVTZWFyY2hQcmFtczoge30sXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMucHJvcHMub25UcmVlU2VsZWN0KSB7XHJcbiAgICAgIHRoaXMucHJvcHMub25UcmVlU2VsZWN0KHNlbGVjdGVkS2V5cywgb2JqKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgY29uc3QgZnJvbVZhbHVlID0gdGhpcy5zZWFyY2hSZWY/LmN1cnJlbnQ/LmdldFNlYXJjaFZhbHVlcygpIHx8IHt9O1xyXG4gICAgc2VhcmNoRmllbGQgJiYgdGhpcy50YWJsZUxvYWQoeyAuLi5mcm9tVmFsdWUsIFtzZWFyY2hGaWVsZF06IGtleXdvcmQgfSk7XHJcbiAgICB0aGlzLnByb3BzLm9uQ2FsbEJhY2tzPy50cmVlU2VsZWN0Q2FsbEJhY2sgJiZcclxuICAgICAgY29udmVyRnVuY3Rpb24oXHJcbiAgICAgICAgdGhpcy5wcm9wcy5vbkNhbGxCYWNrcz8udHJlZVNlbGVjdENhbGxCYWNrLFxyXG4gICAgICAgIHsgcGFnZVJlZjogdGhpcy5wcm9wcy5wYWdlUmVmLCBzZWxlY3RlZEtleXM6IHNlbGVjdGVkS2V5cywgb2JqOiBvYmogfSxcclxuICAgICAgICB0aGlzLnByb3BzLlV0aWxzXHJcbiAgICAgICk7XHJcbiAgICAvLyB1dGlscy5jYWxsYmFjayh0aGlzLnByb3BzLm9uQ2FsbEJhY2tzPy50cmVlU2VsZWN0Q2FsbEJhY2ssIHRoaXMsIFtcclxuICAgIC8vICAgc2VsZWN0ZWRLZXlzLFxyXG4gICAgLy8gICBvYmosXHJcbiAgICAvLyBdKTtcclxuICB9XHJcbiAgcmVzZXRTZWFyY2goKSB7XHJcbiAgICB0aGlzLnNlYXJjaFJlZi5jdXJyZW50Py5yZXNldEZpZWxkcygpO1xyXG4gIH1cclxuICBnZXRUZXh0KHByb3BzLCB0ZXh0KSB7XHJcbiAgICBsZXQgbmV3VGV4dCA9IHRleHQ7XHJcbiAgICBpZiAocHJvcHM/LmRhdGEgJiYgcHJvcHM/LmRhdGE/Lmxlbmd0aCA+IDApIHtcclxuICAgICAgbGV0IGRhdGEgPSBwcm9wcy5kYXRhO1xyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGRhdGE/Lmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgaWYgKGRhdGFbaV0udmFsdWUgPT0gdGV4dCkge1xyXG4gICAgICAgICAgbmV3VGV4dCA9IGRhdGFbaV0ubGFiZWw7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbmV3VGV4dDtcclxuICB9XHJcbiAgc2V0VGFibGVEYXRhKGRhdGEpIHtcclxuICAgIHRoaXMudGFibGVSZWYuY3VycmVudD8uc3RvcmU/LnNldERhdGEoZGF0YSk7XHJcbiAgfVxyXG4gIHNldFRyZWVEYXRhKGRhdGEpIHtcclxuICAgIHRoaXMudHJlZVJlZi5jdXJyZW50Py5zdG9yZT8uc2V0RGF0YShkYXRhKTtcclxuICB9XHJcbiAgZ2V0U2VsZWN0ZWRLZXkgPSAoc2VsZWN0ZWQpID0+IHtcclxuICAgIGxldCByZXMgPSBbXTtcclxuICAgIGZvciAobGV0IGtleSBpbiBzZWxlY3RlZCkge1xyXG4gICAgICBjb25zdCBrZXlzID0gc2VsZWN0ZWRba2V5XTtcclxuICAgICAgaWYgKGtleXMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIHJlcyA9IFsuLi5yZXMsIC4uLmtleXNdO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcmVzO1xyXG4gIH07XHJcblxyXG4gIGNvbnZlcnRRdWVyeVBhcmFtcygpIHtcclxuICAgIGNvbnN0IHsgcmVxdWVzdFBhcmFtcyA9IHt9IH0gPSB0aGlzLnByb3BzO1xyXG4gICAgbGV0IHF1ZXJ5UGFyYW1zOiBhbnkgPSByZXF1ZXN0UGFyYW1zLnF1ZXJ5UGFyYW1zO1xyXG4gICAgcmV0dXJuIGNvbnZlcnRTdHJpbmdUb09iaihxdWVyeVBhcmFtcywgdGhpcy5wcm9wcy5VdGlscyB8fCB7fSwge1xyXG4gICAgICBmdW5jczogdGhpcy5wcm9wcy5mdW5jcyxcclxuICAgICAgcGFnZVJlZjogdGhpcy5wcm9wcy5wYWdlUmVmLFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvLyDorqHnrpfooajlpLTpq5jluqbnmoTmlrnms5VcclxuICBjYWxjdWxhdGVUYWJsZUhlYWRlckhlaWdodCA9ICgpID0+IHtcclxuICAgIGlmICh0aGlzLnRhYmxlV3JhcHBlclJlZi5jdXJyZW50KSB7XHJcbiAgICAgIGNvbnN0IHRhYmxlSGVhZGVyID1cclxuICAgICAgICB0aGlzLnRhYmxlV3JhcHBlclJlZi5jdXJyZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoXHJcbiAgICAgICAgICBcImFudC10YWJsZS10aGVhZFwiXHJcbiAgICAgICAgKVswXTtcclxuICAgICAgaWYgKHRhYmxlSGVhZGVyKSB7XHJcbiAgICAgICAgY29uc3QgaGVhZGVySGVpZ2h0ID0gdGFibGVIZWFkZXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuaGVpZ2h0O1xyXG4gICAgICAgIGlmIChoZWFkZXJIZWlnaHQgIT09IHRoaXMuc3RhdGUudGFibGVIZWFkZXJIZWlnaHQpIHtcclxuICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgICB0YWJsZUhlYWRlckhlaWdodDogaGVhZGVySGVpZ2h0LFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfTtcclxuICB0aHJvdHRsZUNhbGN1bGF0ZVRhYmxlSGVhZGVySGVpZ2h0ID0gdGhyb3R0bGUoXHJcbiAgICB0aGlzLmNhbGN1bGF0ZVRhYmxlSGVhZGVySGVpZ2h0LFxyXG4gICAgNTAwXHJcbiAgKTtcclxuXHJcbiAgLy8g5LyY5YyW5ouW5ou955u45YWz5pa55rOVXHJcbiAgaGFuZGxlTW91c2VEb3duKGU6IFJlYWN0Lk1vdXNlRXZlbnQpIHtcclxuICAgIGUucHJldmVudERlZmF1bHQoKTtcclxuXHJcbiAgICAvLyDliJvlu7rpga7nvanlsYLku6XlpITnkIZpZnJhbWXlnLrmma9cclxuICAgIGNvbnN0IG1hc2sgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO1xyXG4gICAgbWFzay5zdHlsZS5jc3NUZXh0ID0gYFxyXG4gICAgICBwb3NpdGlvbjogZml4ZWQ7XHJcbiAgICAgIHRvcDogMDtcclxuICAgICAgbGVmdDogMDtcclxuICAgICAgd2lkdGg6IDEwMCU7XHJcbiAgICAgIGhlaWdodDogMTAwJTtcclxuICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XHJcbiAgICAgIHotaW5kZXg6IDk5OTk7XHJcbiAgICAgIGN1cnNvcjogY29sLXJlc2l6ZTtcclxuICAgIGA7XHJcbiAgICBtYXNrLmlkID0gXCJkcmFnLW1hc2tcIjtcclxuICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQobWFzayk7XHJcblxyXG4gICAgY29uc3QgaGFuZGxlTW91c2VNb3ZlID0gKGU6IE1vdXNlRXZlbnQpID0+IHtcclxuICAgICAgY29uc3QgbmV3V2lkdGggPSBlLnNjcmVlblg7XHJcbiAgICAgIC8vIOmZkOWItuacgOWwjzEwMHB477yM5pyA5aSnNTAwcHhcclxuICAgICAgaWYgKG5ld1dpZHRoID49IDUwICYmIG5ld1dpZHRoIDw9IDgwMCkge1xyXG4gICAgICAgIHRoaXMuc2V0U3RhdGUoeyB0cmVlV2lkdGg6IG5ld1dpZHRoIH0pO1xyXG4gICAgICB9XHJcbiAgICB9O1xyXG5cclxuICAgIGNvbnN0IHRocm90dGxlZE1vdXNlTW92ZSA9IHRocm90dGxlKGhhbmRsZU1vdXNlTW92ZSwgMTYpO1xyXG5cclxuICAgIGNvbnN0IGhhbmRsZU1vdXNlVXAgPSAoKSA9PiB7XHJcbiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJtb3VzZW1vdmVcIiwgdGhyb3R0bGVkTW91c2VNb3ZlKTtcclxuICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcIm1vdXNldXBcIiwgaGFuZGxlTW91c2VVcCk7XHJcbiAgICAgIC8vIOenu+mZpOmBrue9qeWxglxyXG4gICAgICBjb25zdCBtYXNrID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJkcmFnLW1hc2tcIik7XHJcbiAgICAgIGlmIChtYXNrKSB7XHJcbiAgICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChtYXNrKTtcclxuICAgICAgfVxyXG4gICAgfTtcclxuXHJcbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKFwibW91c2Vtb3ZlXCIsIHRocm90dGxlZE1vdXNlTW92ZSk7XHJcbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKFwibW91c2V1cFwiLCBoYW5kbGVNb3VzZVVwKTtcclxuICB9XHJcblxyXG4gIHJlbmRlcigpIHtcclxuICAgIGNvbnN0IHtcclxuICAgICAgY29sdW1ucyA9IFtdLFxyXG4gICAgICBzaG93U2VhcmNoID0gdHJ1ZSxcclxuICAgICAgY2hpbGRyZW4sXHJcbiAgICAgIHN1Ym1pdFVybCA9IFwiXCIsXHJcbiAgICAgIHRhYmxlUHJvcHMgPSB7fSxcclxuICAgICAgdHJlZVByb3BzID0ge30sXHJcbiAgICAgIGZvcm1QYWdlUHJvcHMgPSB7fSxcclxuICAgICAgc2hvd0xlZnQgPSBmYWxzZSxcclxuICAgICAgc3VibWl0UGFyYW1zID0ge30sXHJcbiAgICAgIHNob3dUb29sQnV0dG9uID0gdHJ1ZSxcclxuICAgICAgYnV0dG9ucyA9IFtdLFxyXG4gICAgICBlZGl0b3JGb3JtID0gdHJ1ZSxcclxuICAgICAgb25TaG93Rm9ybSxcclxuICAgICAgZm9ybUNoYW5nZVZhbGlkID0gdHJ1ZSxcclxuICAgICAgY2xhc3NOYW1lLFxyXG4gICAgICB0b29sQnV0dG9uUG9zaXRpb24gPSBcImJ1dHRvbVwiLFxyXG4gICAgICBhY3Rpb25Qcm9wcyxcclxuICAgICAgZGVsZXRlUG9zaXRpb24gPSBcInRvb2xiYXJcIixcclxuICAgICAgYnV0dG9uQ2xpY2sgPSB7fSxcclxuICAgICAgcGVybWlzc2lvbiA9IHsgaGFzOiBmYWxzZSB9LFxyXG4gICAgICByZXF1ZXN0UGFyYW1zID0ge30sXHJcbiAgICAgIHJlcXVlc3RVcmxzID0ge30sXHJcbiAgICB9ID0gdGhpcy5wcm9wcztcclxuICAgIGNvbnN0IHtcclxuICAgICAgc3RvcmU6IHRhYmxlU3RvcmUgPSB7fSxcclxuICAgICAgZmlsdGVyQ29sdW1uID0gdHJ1ZSxcclxuICAgICAgYWN0aW9uQ29sdW1uID0gdHJ1ZSxcclxuICAgICAgc2hvd1Jvd1NlbGVjdGlvbiA9IHRydWUsXHJcbiAgICAgIGNvbHVtbk9yZGVyID0gdHJ1ZSxcclxuICAgICAgZXhwYW5kYWJsZSA9IHt9LFxyXG4gICAgICBwYXJhbnRTZWxlY3QgPSB0cnVlLFxyXG4gICAgICB0aXRsZTogdGFibGVUaXRsZSxcclxuICAgICAgLi4ub3RoZXJ0YWJsZVBhcmFtc1xyXG4gICAgfSA9IHRhYmxlUHJvcHM7XHJcbiAgICBsZXQgbmV3VGFibGVTdG9yZSA9IHsgLi4udGFibGVTdG9yZSB9O1xyXG4gICAgaWYgKHJlcXVlc3RQYXJhbXMucXVlcnlQYXJhbXMpIHtcclxuICAgICAgbGV0IHF1ZXJ5UGFyYW1zOiBhbnkgPSB0aGlzLmNvbnZlcnRRdWVyeVBhcmFtcygpO1xyXG4gICAgICBsZXQgZGF0YSA9IHF1ZXJ5UGFyYW1zPy5kYXRhIHx8IHF1ZXJ5UGFyYW1zPy5wYXJhbXMgfHwge307XHJcbiAgICAgIG5ld1RhYmxlU3RvcmUucmVxdWVzdENvbmZpZyA9IHtcclxuICAgICAgICBwYXJhbXM6IHsgLi4uZGF0YSwgLi4ubmV3VGFibGVTdG9yZS5yZXF1ZXN0Q29uZmlnPy5wYXJhbXMgfSxcclxuICAgICAgfTtcclxuICAgIH1cclxuICAgIGNvbnN0IHtcclxuICAgICAgc3RvcmU6IHRyZWVTdG9yZSA9IHt9LFxyXG4gICAgICBzaG93U2VhcmNoOiB0cmVlU2VhcmNoID0gdHJ1ZSxcclxuICAgICAgdGl0bGVBbGlhcyA9IFwidGl0bGVcIixcclxuICAgICAgdGl0bGU6IHRyZWVUaXRsZSxcclxuICAgICAgLi4ub3RoZXJ0cmVlUGFyYW1zXHJcbiAgICB9ID0gdHJlZVByb3BzO1xyXG4gICAgbGV0IF90aGlzID0gdGhpcztcclxuICAgIGxldCB0YWJsZVBhcmFtcyA9IHtcclxuICAgICAgZmlsdGVyQ29sdW1uLFxyXG4gICAgICBzdG9yZToge1xyXG4gICAgICAgIGxpc3RlbmVyczoge1xyXG4gICAgICAgICAgbG9hZDogKGRhdGEpID0+IHtcclxuICAgICAgICAgICAgX3RoaXMucHJvcHMub25DYWxsQmFja3M/LnRhYmxlTG9hZENhbGxCYWNrICYmXHJcbiAgICAgICAgICAgICAgX3RoaXMucHJvcHMub25DYWxsQmFja3M/LnRhYmxlTG9hZENhbGxCYWNrKGRhdGEpO1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICB9LFxyXG4gICAgICAgIC4uLm5ld1RhYmxlU3RvcmUsXHJcbiAgICAgIH0sXHJcbiAgICAgIC4uLm90aGVydGFibGVQYXJhbXMsXHJcbiAgICB9IGFzIGFueTtcclxuICAgIGNvbnN0IGRlZmF1bHRWYWx1ZTogYW55ID0ge307XHJcbiAgICBjb25zdCBjb2x1bW5CdXR0b25zOiBhbnkgPSBbXTtcclxuICAgIGNvbnN0IHsgZWxlbWVudEhlaWdodCB9ID0gdGhpcy5zdGF0ZTtcclxuICAgIGxldCBwZXJtaXNzaW9uQnV0dG9ucyA9IFtdO1xyXG4gICAgaWYgKHBlcm1pc3Npb24uaGFzICYmIHBlcm1pc3Npb24ubWVudUNvZGUpIHtcclxuICAgICAgcGVybWlzc2lvbkJ1dHRvbnMgPVxyXG4gICAgICAgIGdldEJ1dHRvblBlcm1pc3NvbnMocGVybWlzc2lvbi5tZW51Q29kZSkucGVybWlzc29ucyB8fCBbXTtcclxuICAgIH1cclxuICAgIGNvbnN0IG9iaiA9IGNvbnZlcnRDb2x1bW5zKGNvbHVtbnMsIHt9KTtcclxuICAgIGxldCB0YWJsZUNvbHVtbjogYW55W10gPSBnZXROZXdDb2x1bW5zKGNvbHVtbnMsIHRoaXMucHJvcHMpO1xyXG4gICAgY29uc3Qgc2VhcmNoRm9ybXMgPSBvYmouc2VhcmNoRm9ybXMgfHwgW107XHJcbiAgICBjb25zdCBlZGl0b3JGb3JtcyA9IG9iai5lZGl0b3JGb3JtcyB8fCBbXTtcclxuICAgIGNvbnN0IHRvb2xCdXR0b25zOiBhbnkgPSBbXTtcclxuICAgIGNvbnN0IGZvcm1CdXR0b246IGFueSA9IFtdO1xyXG4gICAgY29uc3QgeyBiYXNlQWN0aW9uQ29sdW1uIH0gPSBjb25maWcoKTtcclxuICAgIGxldCBzaG93SWNvbiA9IHRydWU7XHJcbiAgICBpZiAoYWN0aW9uUHJvcHM/LnNob3dJY29uID09PSBmYWxzZSkgc2hvd0ljb24gPSBmYWxzZTtcclxuICAgIGVsc2UgaWYgKGJhc2VBY3Rpb25Db2x1bW4uc2hvd0ljb24gPT09IGZhbHNlKSBzaG93SWNvbiA9IGZhbHNlO1xyXG4gICAgY29uc3QgYnV0dG9uTWFwID0ge1xyXG4gICAgICBlZGl0b3I6IHsgbmFtZTogXCLnvJbovpFcIiwgY29kZTogXCJlZGl0b3JcIiwgaWNvbjogPEVkaXRPdXRsaW5lZCAvPiB9LFxyXG4gICAgICBkZWxldGU6IHsgbmFtZTogXCLliKDpmaRcIiwgY29kZTogXCJkZWxldGVcIiwgaWNvbjogPERlbGV0ZU91dGxpbmVkIC8+IH0sXHJcbiAgICAgIHNlYXJjaDogeyBuYW1lOiBcIuafpeeci1wiLCBjb2RlOiBcInNlYXJjaFwiLCBpY29uOiA8RXllT3V0bGluZWQgLz4gfSxcclxuICAgIH07XHJcbiAgICBjb25zdCByZXR1cm5CdXR0b24gPSAoY29kZSwgc2hvdyA9IFwiXCIsIGRlZmF1bHRQcm9wcyA9IHt9LCBuYW1lKSA9PiB7XHJcbiAgICAgIGxldCBwcm9wcyA9IHtcclxuICAgICAgICBpY29uOiBzaG93SWNvbiA/IGJ1dHRvbk1hcFtjb2RlXS5pY29uIDogbnVsbCxcclxuICAgICAgICB0eXBlOiBcImxpbmtcIixcclxuICAgICAgICAuLi5kZWZhdWx0UHJvcHMsXHJcbiAgICAgIH0gYXMgYW55O1xyXG5cclxuICAgICAgaWYgKHNob3cpIHtcclxuICAgICAgICBwcm9wcyA9IHsgLi4ucHJvcHMsIHJlY29yZFNob3c6IHNob3cgfTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gKFxyXG4gICAgICAgIDxCdXR0b25cclxuICAgICAgICAgIG9uQ2xpY2s9eyhyZWNvcmQ6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICBpZiAoY29kZSA9PSBcImRlbGV0ZVwiKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5vbkRlbGV0ZShyZWNvcmQpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIGlmIChjb2RlID09IFwiZWRpdG9yXCIgJiYgYnV0dG9uQ2xpY2sub25FZGl0b3IpIHtcclxuICAgICAgICAgICAgICAgIGNvbnZlckZ1bmN0aW9uKFxyXG4gICAgICAgICAgICAgICAgICBidXR0b25DbGljay5vbkVkaXRvcixcclxuICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgIHBhZ2VSZWY6IHRoaXMucHJvcHMucGFnZVJlZixcclxuICAgICAgICAgICAgICAgICAgICByZWNvcmQ6IHJlY29yZC5hdHRyaWJ1dGUgfHwgcmVjb3JkLFxyXG4gICAgICAgICAgICAgICAgICAgIGZ1bmNzOiB0aGlzLnByb3BzLmZ1bmNzLFxyXG4gICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICB0aGlzLnByb3BzLlV0aWxzXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgIH0gZWxzZSBpZiAoY29kZSA9PSBcInNlYXJjaFwiICYmIGJ1dHRvbkNsaWNrLm9uU2VhcmNoKSB7XHJcbiAgICAgICAgICAgICAgICBjb252ZXJGdW5jdGlvbihcclxuICAgICAgICAgICAgICAgICAgYnV0dG9uQ2xpY2sub25TZWFyY2gsXHJcbiAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICBwYWdlUmVmOiB0aGlzLnByb3BzLnBhZ2VSZWYsXHJcbiAgICAgICAgICAgICAgICAgICAgcmVjb3JkOiByZWNvcmQuYXR0cmlidXRlIHx8IHJlY29yZCxcclxuICAgICAgICAgICAgICAgICAgICBmdW5jczogdGhpcy5wcm9wcy5mdW5jcyxcclxuICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgdGhpcy5wcm9wcy5VdGlsc1xyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgaWYgKG9uU2hvd0Zvcm0pIHtcclxuICAgICAgICAgICAgICAgIG9uU2hvd0Zvcm0ocmVjb3JkLmF0dHJpYnV0ZSB8fCByZWNvcmQsIGNvZGUpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgdGhpcy5zaG93Rm9ybShyZWNvcmQuYXR0cmlidXRlIHx8IHJlY29yZCwgY29kZSwgKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgbGV0IGNhbGxCYWNrID1cclxuICAgICAgICAgICAgICAgICAgY29kZSA9PSBcImVkaXRvclwiXHJcbiAgICAgICAgICAgICAgICAgICAgPyB0aGlzLnByb3BzLm9uQ2FsbEJhY2tzPy5vbkVkaXRvckNhbGxCYWNrXHJcbiAgICAgICAgICAgICAgICAgICAgOiB0aGlzLnByb3BzLm9uQ2FsbEJhY2tzPy5vblNlYXJjaENhbGxCYWNrO1xyXG4gICAgICAgICAgICAgICAgY2FsbEJhY2sgJiZcclxuICAgICAgICAgICAgICAgICAgY29udmVyRnVuY3Rpb24oXHJcbiAgICAgICAgICAgICAgICAgICAgY2FsbEJhY2ssXHJcbiAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgcGFnZVJlZjogdGhpcy5wcm9wcy5wYWdlUmVmLFxyXG4gICAgICAgICAgICAgICAgICAgICAgcmVjb3JkOiByZWNvcmQuYXR0cmlidXRlIHx8IHJlY29yZCxcclxuICAgICAgICAgICAgICAgICAgICAgIGZ1bmNzOiB0aGlzLnByb3BzLmZ1bmNzLFxyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wcm9wcy5VdGlsc1xyXG4gICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9fVxyXG4gICAgICAgICAgey4uLnByb3BzfVxyXG4gICAgICAgID5cclxuICAgICAgICAgIHtuYW1lIHx8IGJ1dHRvbk1hcFtjb2RlXT8ubmFtZX1cclxuICAgICAgICA8L0J1dHRvbj5cclxuICAgICAgKTtcclxuICAgIH07XHJcbiAgICBjb25zdCBjaGVja1BlcnNzaW9uID0gKGNvZGUpID0+IHtcclxuICAgICAgaWYgKCFwZXJtaXNzaW9uLmhhcykge1xyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHJldHVybiBwZXJtaXNzaW9uQnV0dG9ucy5pbmRleE9mKGNvZGUpID4gLTE7XHJcbiAgICAgIH1cclxuICAgIH07XHJcbiAgICBidXR0b25zLm1hcCgoaXRlbTogYW55KSA9PiB7XHJcbiAgICAgIGlmIChcclxuICAgICAgICB0aGlzLnN0YXRlLmRlZmF0dWx0QnV0dG9uLmluZGV4T2YoaXRlbSkgPiAtMSB8fFxyXG4gICAgICAgIHRoaXMuc3RhdGUuZGVmYXR1bHRCdXR0b24uaW5kZXhPZihpdGVtLmNvZGUpID4gLTFcclxuICAgICAgKSB7XHJcbiAgICAgICAgaWYgKChpdGVtID09IFwiYWRkXCIgfHwgaXRlbS5jb2RlID09IFwiYWRkXCIpICYmIGNoZWNrUGVyc3Npb24oXCJhZGRcIikpIHtcclxuICAgICAgICAgIHRvb2xCdXR0b25zLnB1c2goXHJcbiAgICAgICAgICAgIDxCdXR0b25cclxuICAgICAgICAgICAgICB0eXBlPXtcInByaW1hcnlcIn1cclxuICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCB7IG9uU2hvd0Zvcm0sIGJ1dHRvbkNsaWNrID0ge30gfSA9IHRoaXMucHJvcHM7XHJcbiAgICAgICAgICAgICAgICBpZiAoYnV0dG9uQ2xpY2s/Lm9uQWRkKSB7XHJcbiAgICAgICAgICAgICAgICAgIGNvbnZlckZ1bmN0aW9uKFxyXG4gICAgICAgICAgICAgICAgICAgIGJ1dHRvbkNsaWNrLm9uQWRkLFxyXG4gICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgIHBhZ2VSZWY6IHRoaXMucHJvcHMucGFnZVJlZixcclxuICAgICAgICAgICAgICAgICAgICAgIGZ1bmNzOiB0aGlzLnByb3BzLmZ1bmNzLFxyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wcm9wcy5VdGlsc1xyXG4gICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAob25TaG93Rm9ybSkge1xyXG4gICAgICAgICAgICAgICAgICBvblNob3dGb3JtKG51bGwsIFwiYWRkXCIpO1xyXG4gICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNob3dGb3JtKG51bGwsIG51bGwsICgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5wcm9wcy5vbkNhbGxCYWNrcz8ub25BZGRDYWxsQmFjayAmJlxyXG4gICAgICAgICAgICAgICAgICAgIGNvbnZlckZ1bmN0aW9uKFxyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5wcm9wcy5vbkNhbGxCYWNrcz8ub25BZGRDYWxsQmFjayxcclxuICAgICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcGFnZVJlZjogdGhpcy5wcm9wcy5wYWdlUmVmLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBmdW5jczogdGhpcy5wcm9wcy5mdW5jcyxcclxuICAgICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLnByb3BzLlV0aWxzXHJcbiAgICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgaWNvbj17PFBsdXNPdXRsaW5lZCAvPn1cclxuICAgICAgICAgICAgICB7Li4uaXRlbS5wcm9wc31cclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIHtpdGVtLm5hbWUgfHwgXCLmt7vliqBcIn1cclxuICAgICAgICAgICAgPC9CdXR0b24+XHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoXHJcbiAgICAgICAgICAoaXRlbSA9PSBcImRlbGV0ZV9iYXRjaFwiIHx8IGl0ZW0uY29kZSA9PSBcImRlbGV0ZV9iYXRjaFwiKSAmJlxyXG4gICAgICAgICAgY2hlY2tQZXJzc2lvbihcImRlbGV0ZV9iYXRjaFwiKVxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgdG9vbEJ1dHRvbnMucHVzaChcclxuICAgICAgICAgICAgPEJ1dHRvblxyXG4gICAgICAgICAgICAgIHR5cGU9e1wicHJpbWFyeVwifVxyXG4gICAgICAgICAgICAgIG9uQ2xpY2s9e3RoaXMub25EZWxldGUuYmluZCh0aGlzLCBudWxsLCBcInRvb2xiYXJcIil9XHJcbiAgICAgICAgICAgICAgaWNvbj17PERlbGV0ZU91dGxpbmVkIC8+fVxyXG4gICAgICAgICAgICAgIGRhbmdlclxyXG4gICAgICAgICAgICAgIHsuLi5pdGVtLnByb3BzfVxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAge2l0ZW0ubmFtZSB8fCBcIuaJuemHj+WIoOmZpFwifVxyXG4gICAgICAgICAgICA8L0J1dHRvbj5cclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGlmIChjaGVja1BlcnNzaW9uKGl0ZW0uY29kZSA/IGl0ZW0uY29kZSA6IGl0ZW0pKSB7XHJcbiAgICAgICAgICAgIGNvbHVtbkJ1dHRvbnMucHVzaChcclxuICAgICAgICAgICAgICByZXR1cm5CdXR0b24oXHJcbiAgICAgICAgICAgICAgICBpdGVtLmNvZGUgPyBpdGVtLmNvZGUgOiBpdGVtLFxyXG4gICAgICAgICAgICAgICAgaXRlbS5yZWNvcmRTaG93LFxyXG4gICAgICAgICAgICAgICAgaXRlbS5wcm9wcyB8fCB7fSxcclxuICAgICAgICAgICAgICAgIGl0ZW0ubmFtZVxyXG4gICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgaWYgKEFycmF5LmlzQXJyYXkoY2hpbGRyZW4pKSB7XHJcbiAgICAgIGNoaWxkcmVuLm1hcCgoaXRlbTogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoaXRlbSkpIHtcclxuICAgICAgICAgIGl0ZW0ubWFwKChjaGlsZCkgPT4ge1xyXG4gICAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgICAgY2hpbGQ/LnByb3BzPy5wYWdlVHlwZSA9PSBcInRvb2xCdXR0b25cIiAmJlxyXG4gICAgICAgICAgICAgIGNoZWNrUGVyc3Npb24oY2hpbGQ/LnByb3BzPy5jb2RlKVxyXG4gICAgICAgICAgICApIHtcclxuICAgICAgICAgICAgICB0b29sQnV0dG9ucy5wdXNoKGNoaWxkKTtcclxuICAgICAgICAgICAgfSBlbHNlIGlmIChcclxuICAgICAgICAgICAgICBjaGlsZD8ucHJvcHM/LnBhZ2VUeXBlID09IFwiZm9ybUJ1dHRvblwiICYmXHJcbiAgICAgICAgICAgICAgY2hlY2tQZXJzc2lvbihjaGlsZD8ucHJvcHM/LmNvZGUpXHJcbiAgICAgICAgICAgICkge1xyXG4gICAgICAgICAgICAgIGZvcm1CdXR0b24ucHVzaChjaGlsZCk7XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoXHJcbiAgICAgICAgICAgICAgKGNoaWxkPy5wcm9wcz8ucGFnZVR5cGUgPT0gXCJjb2x1bW5CdXR0b25cIiB8fFxyXG4gICAgICAgICAgICAgICAgY2hpbGQ/LnByb3BzPy5wYWdlVHlwZSA9PSBcImNsb3VtbkJ1dHRvblwiKSAmJlxyXG4gICAgICAgICAgICAgIGNoZWNrUGVyc3Npb24oY2hpbGQ/LnByb3BzPy5jb2RlKVxyXG4gICAgICAgICAgICApIHtcclxuICAgICAgICAgICAgICBjb2x1bW5CdXR0b25zLnB1c2goY2hpbGQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICBpdGVtPy5wcm9wcz8ucGFnZVR5cGUgPT0gXCJ0b29sQnV0dG9uXCIgJiZcclxuICAgICAgICAgICAgY2hlY2tQZXJzc2lvbihpdGVtPy5wcm9wcz8uY29kZSlcclxuICAgICAgICAgICkge1xyXG4gICAgICAgICAgICB0b29sQnV0dG9ucy5wdXNoKGl0ZW0pO1xyXG4gICAgICAgICAgfSBlbHNlIGlmIChcclxuICAgICAgICAgICAgKGl0ZW0/LnByb3BzPy5wYWdlVHlwZSA9PSBcImNvbHVtbkJ1dHRvblwiIHx8XHJcbiAgICAgICAgICAgICAgaXRlbT8ucHJvcHM/LnBhZ2VUeXBlID09IFwiY2xvdW1uQnV0dG9uXCIpICYmXHJcbiAgICAgICAgICAgIGNoZWNrUGVyc3Npb24oaXRlbT8ucHJvcHM/LmNvZGUpXHJcbiAgICAgICAgICApIHtcclxuICAgICAgICAgICAgY29sdW1uQnV0dG9ucy5wdXNoKGl0ZW0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2UgaWYgKGNoaWxkcmVuKSB7XHJcbiAgICAgIGNvbnN0IHsgcHJvcHMgfTogYW55ID0gY2hpbGRyZW47XHJcbiAgICAgIGlmIChwcm9wcz8ucGFnZVR5cGUgPT0gXCJ0b29sQnV0dG9uXCIgJiYgY2hlY2tQZXJzc2lvbihwcm9wcz8uY29kZSkpIHtcclxuICAgICAgICB0b29sQnV0dG9ucy5wdXNoKGNoaWxkcmVuKTtcclxuICAgICAgfSBlbHNlIGlmIChcclxuICAgICAgICAocHJvcHM/LnBhZ2VUeXBlID09IFwiY29sdW1uQnV0dG9uXCIgfHxcclxuICAgICAgICAgIHByb3BzPy5wYWdlVHlwZSA9PSBcImNsb3VtbkJ1dHRvblwiKSAmJlxyXG4gICAgICAgIGNoZWNrUGVyc3Npb24ocHJvcHM/LmNvZGUpXHJcbiAgICAgICkge1xyXG4gICAgICAgIGNvbHVtbkJ1dHRvbnMucHVzaChjaGlsZHJlbik7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGFjdGlvbkNvbHVtbiAmJlxyXG4gICAgICB0YWJsZUNvbHVtbi5wdXNoKHtcclxuICAgICAgICB0aXRsZTogXCLmk43kvZxcIixcclxuICAgICAgICBkYXRhSW5kZXg6IFwiYWN0aW9uXCIsXHJcbiAgICAgICAgYWxpZ246IGFjdGlvblByb3BzPy50ZXh0QWxpZ25cclxuICAgICAgICAgID8gYWN0aW9uUHJvcHM/LnRleHRBbGlnblxyXG4gICAgICAgICAgOiBiYXNlQWN0aW9uQ29sdW1uLnRleHRBbGlnblxyXG4gICAgICAgICAgPyBiYXNlQWN0aW9uQ29sdW1uLnRleHRBbGlnblxyXG4gICAgICAgICAgOiBcImxlZnRcIixcclxuICAgICAgICB3aWR0aDogYWN0aW9uUHJvcHM/LndpZHRoXHJcbiAgICAgICAgICA/IGFjdGlvblByb3BzPy53aWR0aFxyXG4gICAgICAgICAgOiBiYXNlQWN0aW9uQ29sdW1uLndpZHRoXHJcbiAgICAgICAgICA/IGJhc2VBY3Rpb25Db2x1bW4ud2lkdGhcclxuICAgICAgICAgIDogMjAwLFxyXG4gICAgICAgIGZpeGVkOiBcInJpZ2h0XCIsXHJcbiAgICAgICAgcmVuZGVyOiAodGV4dDogYW55LCByZWNvcmQ6IGFueSkgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS1hY3Rpb25cIil9PlxyXG4gICAgICAgICAgICAgIHt0aGlzLnJlbmRlckNsb3VtbkJ1dHRvbihjb2x1bW5CdXR0b25zLCByZWNvcmQpfVxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfSxcclxuICAgICAgfSk7XHJcblxyXG4gICAgaWYgKGNvbHVtbk9yZGVyKVxyXG4gICAgICB0YWJsZUNvbHVtbiA9IFtcclxuICAgICAgICB7XHJcbiAgICAgICAgICB0aXRsZTogXCLluo/lj7dcIixcclxuICAgICAgICAgIHdpZHRoOiA4MCxcclxuICAgICAgICAgIGFsaWduOiBcImNlbnRlclwiLFxyXG4gICAgICAgICAgcmVuZGVyOiAodGV4dCwgcmVhY29yZCwgaW5kZXgpID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuIDw+e2luZGV4ICsgMX08Lz47XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgLi4udGFibGVDb2x1bW4sXHJcbiAgICAgIF07XHJcbiAgICBsZXQgc2VhcmNoRmxhZyA9IHNob3dTZWFyY2ggJiYgc2VhcmNoRm9ybXMubGVuZ3RoID4gMDtcclxuICAgIGxldCB7IHRhYmxlVG9vbCB9ID0gY29uZmlnKCk7XHJcbiAgICBsZXQgdG9vbEZsYWcgPVxyXG4gICAgICBzaG93VG9vbEJ1dHRvbiAmJlxyXG4gICAgICB0b29sQnV0dG9ucy5sZW5ndGggPiAwICYmXHJcbiAgICAgIHRvb2xCdXR0b25Qb3NpdGlvbiA9PSBcImJ1dHRvbVwiO1xyXG4gICAgbGV0IHRvb2xiYXJGbGFnID0gIShcclxuICAgICAgdGFibGVQcm9wcy50b29sYmFyID09IGZhbHNlIHx8XHJcbiAgICAgIHRhYmxlUHJvcHMudG9vbGJhcj8uc2hvdyA9PSBmYWxzZSB8fFxyXG4gICAgICB0YWJsZVByb3BzLnRvb2xiYXI/LnRvb2xzPy5sZW5ndGggPT0gMCB8fFxyXG4gICAgICB0YWJsZVRvb2w/LnNob3cgPT0gZmFsc2VcclxuICAgICk7XHJcbiAgICBsZXQgaGVhZGVySGVpZ2h0ID0gc2hvd1NlYXJjaCAmJiBzZWFyY2hGb3Jtcy5sZW5ndGggPiAwID8gMTA0IDogMDsgLy/lpLTpg6jmkJzntKLmoI/pq5jluqZcclxuICAgIGxldCB0b29sSGVpZ2h0ID0gdGFibGVUaXRsZSB8fCB0b29sRmxhZyA/IDUwIDogMDtcclxuICAgIGxldCBwYWRkaW5nSGVpZ2h0ID0gMjAgKiAyOyAvL+S4iuS4i+mXtOi3nVxyXG4gICAgY29uc3QgeyB0YWJsZVRvb2w6IGdsb2JhbFRhYmxlVG9vbCB9ID0gY29uZmlnKCk7XHJcbiAgICBsZXQgdGFibGVUb29sRmxhZzogYW55ID0gZmFsc2U7XHJcbiAgICBpZiAoZ2xvYmFsVGFibGVUb29sLnNob3cgPT09IHRydWUpIHtcclxuICAgICAgdGFibGVUb29sRmxhZyA9IHRydWU7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5wcm9wcy50b29sYmFyICYmIHRoaXMucHJvcHMudG9vbGJhci5zaG93ID09PSB0cnVlKSB7XHJcbiAgICAgIHRhYmxlVG9vbEZsYWcgPSB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIGxldCB0YWJsZUNvbnRlbnRIZWlnaHQgPVxyXG4gICAgICBlbGVtZW50SGVpZ2h0IC1cclxuICAgICAgdG9vbEhlaWdodCAtXHJcbiAgICAgIHBhZGRpbmdIZWlnaHQgLVxyXG4gICAgICBoZWFkZXJIZWlnaHQgLVxyXG4gICAgICAodGFibGVUb29sRmxhZyA/IDggOiAwKTtcclxuICAgIGxldCBQYWdpbmF0aW9uSGVpZ2h0ID0gdGFibGVQcm9wcy5wYWdpbmF0aW9uICE9PSBmYWxzZSA/IDMyICsgMTYgOiAwOyAvLzMyIOS4uuWIhumhteWZqOmrmOW6piwxNuS4um1hcmdpbumXtOi3nVxyXG5cclxuICAgIGxldCB0YWJsZUhlaWdodCA9XHJcbiAgICAgIHRhYmxlQ29udGVudEhlaWdodCAtIFBhZ2luYXRpb25IZWlnaHQgLSAodGFibGVUb29sRmxhZyA/IDQwIDogMCk7XHJcbiAgICAvLyBsZXQgdGFibGVTcm9sbEhlaWdodCA9XHJcbiAgICAvLyAgIHRhYmxlQ29udGVudEhlaWdodCAtXHJcbiAgICAvLyAgICh0aGlzLnN0YXRlLnRhYmxlSGVhZGVySGVpZ2h0ID4gMCA/IHRoaXMuc3RhdGUudGFibGVIZWFkZXJIZWlnaHQgOiA1NSkgLVxyXG4gICAgLy8gICBQYWdpbmF0aW9uSGVpZ2h0IC0gICh0YWJsZVRvb2xGbGFnID8gNDAgOiAwKTtcclxuICAgIGxldCB0YWJsZVNyb2xsSGVpZ2h0ID1cclxuICAgICAgdGFibGVIZWlnaHQgLVxyXG4gICAgICAodGhpcy5zdGF0ZS50YWJsZUhlYWRlckhlaWdodCA+IDAgPyB0aGlzLnN0YXRlLnRhYmxlSGVhZGVySGVpZ2h0IDogNTUpIC1cclxuICAgICAgKHRhYmxlVG9vbEZsYWcgPyA0MCA6IDApO1xyXG4gICAgLy8gaWYgKHRhYmxlUHJvcHMucGFnaW5hdGlvbiAhPT0gZmFsc2UpIHtcclxuICAgIGNvbnN0IHNjcm9sbCA9IHRhYmxlUGFyYW1zLnNjcm9sbDtcclxuICAgIHRhYmxlUGFyYW1zID0ge1xyXG4gICAgICAuLi50YWJsZVBhcmFtcyxcclxuICAgICAgc2Nyb2xsOiB7IHg6IFwibWF4LWNvbnRlbnRcIiwgeTogdGFibGVTcm9sbEhlaWdodCwgLi4uc2Nyb2xsIH0sXHJcbiAgICB9O1xyXG4gICAgLy8gfVxyXG4gICAgcmV0dXJuIChcclxuICAgICAgPGRpdlxyXG4gICAgICAgIGNsYXNzTmFtZT17Y2xzKGdldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZVwiKSwgY2xhc3NOYW1lKX1cclxuICAgICAgICByZWY9e3RoaXMucGFnZVJlZn1cclxuICAgICAgPlxyXG4gICAgICAgIHt0aGlzLnByb3BzLnBhZ2VUaXRsZSAmJiAoXHJcbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Y2xzKGdldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS10aXRsZVwiKSl9PlxyXG4gICAgICAgICAgICB7dGhpcy5wcm9wcy5wYWdlVGl0bGV9XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICApfVxyXG4gICAgICAgIDxkaXZcclxuICAgICAgICAgIGNsYXNzTmFtZT17Y2xzKGdldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS1wYW5lXCIpKX1cclxuICAgICAgICAgIHN0eWxlPXt7IGRpc3BsYXk6IFwiZmxleFwiIH19XHJcbiAgICAgICAgPlxyXG4gICAgICAgICAge3Nob3dMZWZ0ICYmIChcclxuICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLWxlZnRcIil9XHJcbiAgICAgICAgICAgICAgc3R5bGU9e3sgd2lkdGg6IHRoaXMuc3RhdGUudHJlZVdpZHRoIH19XHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICB7dHJlZVRpdGxlICYmIChcclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJ0cmVlLXRpdGxlXCIpfT57dHJlZVRpdGxlfTwvZGl2PlxyXG4gICAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbHMoZ2V0TGVzcyhzdHlsZXMsIFwidHJlZS1jb250ZW50XCIpLCB7XHJcbiAgICAgICAgICAgICAgICAgIFtnZXRMZXNzKHN0eWxlcywgXCJ0cmVlLWNvbnRlbnQtbm90aXRsZVwiKV06ICF0cmVlVGl0bGUsXHJcbiAgICAgICAgICAgICAgICB9KX1cclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInRyZWUtZHJhZ1wiXHJcbiAgICAgICAgICAgICAgICAgIG9uTW91c2VEb3duPXt0aGlzLmhhbmRsZU1vdXNlRG93bi5iaW5kKHRoaXMpfVxyXG4gICAgICAgICAgICAgICAgPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPFRyZWVcclxuICAgICAgICAgICAgICAgICAgc3RvcmU9e3sgLi4udHJlZVN0b3JlIH19XHJcbiAgICAgICAgICAgICAgICAgIHNob3dJY29uPXtmYWxzZX1cclxuICAgICAgICAgICAgICAgICAgY2hlY2thYmxlPXtmYWxzZX1cclxuICAgICAgICAgICAgICAgICAgc2VhcmNoYWJsZT17dHJlZVNlYXJjaH1cclxuICAgICAgICAgICAgICAgICAgb25TZWxlY3Q9e3RoaXMudHJlZVNlbGVjdC5iaW5kKHRoaXMpfVxyXG4gICAgICAgICAgICAgICAgICBzZWxlY3RlZEtleXM9e1t0aGlzLnN0YXRlLnRyZWVTZWxlY3RlZEtleV19XHJcbiAgICAgICAgICAgICAgICAgIHRpdGxlQWxpYXM9e3RpdGxlQWxpYXN9XHJcbiAgICAgICAgICAgICAgICAgIHJlZj17dGhpcy50cmVlUmVmfVxyXG4gICAgICAgICAgICAgICAgICB7Li4ub3RoZXJ0cmVlUGFyYW1zfVxyXG4gICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICApfVxyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICBjbGFzc05hbWU9e2NscyhnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtcmlnaHRcIiksIHtcclxuICAgICAgICAgICAgICBbZ2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLW5vLWxlZnQtcmlnaHRcIildOiAhc2hvd0xlZnQsXHJcbiAgICAgICAgICAgIH0pfVxyXG4gICAgICAgICAgICBzdHlsZT17e1xyXG4gICAgICAgICAgICAgIHdpZHRoOiBgY2FsYygxMDAlIC0gJHt0aGlzLnN0YXRlLnRyZWVXaWR0aH1weCAtICR7XHJcbiAgICAgICAgICAgICAgICBzaG93TGVmdCA/IDE1IDogMFxyXG4gICAgICAgICAgICAgIH1weClgLFxyXG4gICAgICAgICAgICB9fVxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICB7c2hvd1NlYXJjaCAmJiBzZWFyY2hGb3Jtcy5sZW5ndGggPiAwICYmIChcclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLWhlYWRlcnNlYXJjaFwiKX0+XHJcbiAgICAgICAgICAgICAgICA8SGVhZGVyU2VhcmNoXHJcbiAgICAgICAgICAgICAgICAgIHNlYXJjaEZvcm1zPXtzZWFyY2hGb3Jtc31cclxuICAgICAgICAgICAgICAgICAgdG9vbEJ1dHRvblBvc2l0aW9uPXt0b29sQnV0dG9uUG9zaXRpb259XHJcbiAgICAgICAgICAgICAgICAgIG9uU2VhcmNoPXt0aGlzLm9uU2VhcmNoLmJpbmQodGhpcyl9XHJcbiAgICAgICAgICAgICAgICAgIG9uUmVzZXQ9eygpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5wcm9wcy5vblJlc2V0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLnByb3BzLm9uUmVzZXQoKTtcclxuICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWFyY2hSZWYuY3VycmVudD8ucmVzZXRGaWVsZHMoKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnRhYmxlTG9hZCh7fSk7XHJcbiAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICAgIHJlZj17dGhpcy5zZWFyY2hSZWZ9XHJcbiAgICAgICAgICAgICAgICAgIHNlYXJjaEZvcm1Qcm9wcz17dGhpcy5wcm9wcy5zZWFyY2hGb3JtUHJvcHN9XHJcbiAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICApfVxyXG4gICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbHMoZ2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLWNvbnRlbnRcIiksIHtcclxuICAgICAgICAgICAgICAgIFtnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtY29udGVudC1nYXBcIildOiAhc2VhcmNoRmxhZyxcclxuICAgICAgICAgICAgICB9KX1cclxuICAgICAgICAgICAgICByZWY9e3RoaXMucGFnZUNvbnRlbnRSZWZ9XHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICB7KHRhYmxlVGl0bGUgfHwgdG9vbEZsYWcpICYmIChcclxuICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbHMoZ2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLXRhYmxlLXRpdGxlXCIpLCB7XHJcbiAgICAgICAgICAgICAgICAgICAgW2dldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS10aXRsZS13aWR0aFwiKV06ICF0b29sYmFyRmxhZyxcclxuICAgICAgICAgICAgICAgICAgfSl9XHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXY+e3RhYmxlVGl0bGV9PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIHt0b29sRmxhZyAmJiB0aGlzLnJlbmRlclRvb2xCdXR0b25zKHRvb2xCdXR0b25zLCB0b29sYmFyRmxhZyl9XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICApfVxyXG5cclxuICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2NscyhcclxuICAgICAgICAgICAgICAgICAgZ2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLXRhYmxlXCIpLFxyXG4gICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgW2dldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS10YWJsZS10b3BcIildOiAhdG9vbGJhckZsYWcsXHJcbiAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICBbZ2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLXRhYmxlLXRvcDJcIildOlxyXG4gICAgICAgICAgICAgICAgICAgICAgdG9vbGJhckZsYWcgJiYgIXRvb2xGbGFnLFxyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICAgICAgcmVmPXt0aGlzLnRhYmxlV3JhcHBlclJlZn1cclxuICAgICAgICAgICAgICAgIHN0eWxlPXt7IGhlaWdodDogdGFibGVDb250ZW50SGVpZ2h0IH19XHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPFRhYmxlXHJcbiAgICAgICAgICAgICAgICAgIHJlZj17dGhpcy50YWJsZVJlZn1cclxuICAgICAgICAgICAgICAgICAgY29sdW1ucz17dGFibGVDb2x1bW59XHJcbiAgICAgICAgICAgICAgICAgIGV4cGFuZGFibGU9e3tcclxuICAgICAgICAgICAgICAgICAgICBleHBhbmRJY29uOiAoeyBleHBhbmRlZCwgb25FeHBhbmQsIHJlY29yZCB9KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHtleHBhbmRlZCAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJlY29yZC5jaGlsZE5vZGVzICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjb3JkLmNoaWxkTm9kZXM/Lmxlbmd0aCA+IDAgPyAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8RG93bk91dGxpbmVkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eyhlKSA9PiBvbkV4cGFuZChyZWNvcmQsIGUpfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcImV4cGFuZC1pY29uXCIpfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICApIDogcmVjb3JkLmNoaWxkTm9kZXMgJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlY29yZC5jaGlsZE5vZGVzPy5sZW5ndGggPiAwID8gKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPFJpZ2h0T3V0bGluZWRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KGUpID0+IG9uRXhwYW5kKHJlY29yZCwgZSl9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwiZXhwYW5kLWljb25cIil9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICkgOiBudWxsfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8Lz5cclxuICAgICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICAuLi5leHBhbmRhYmxlLFxyXG4gICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgICBjb2x1bW5PcmRlcj17dHJ1ZX1cclxuICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eyhwYWdpbmF0aW9uKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgeyBjdXJyZW50UGFnZSB9ID0gdGhpcy5zdGF0ZTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoY3VycmVudFBhZ2UgIT09IHBhZ2luYXRpb24uY3VycmVudCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRQYWdlOiBwYWdpbmF0aW9uLmN1cnJlbnQsXHJcbiAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICAgIHRvb2xiYXI9e3tcclxuICAgICAgICAgICAgICAgICAgICBvblRvb2xDbGljazoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgb25SZWZyZXNoOiAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHBhcmFtcyA9IHRoaXMuZ2V0U2VhcmNoVmFsdWVzKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudGFibGVMb2FkKHBhcmFtcyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgLi4udGFibGVQcm9wcy50b29sYmFyLFxyXG4gICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgICBzaG93Um93U2VsZWN0aW9uPXtzaG93Um93U2VsZWN0aW9ufVxyXG4gICAgICAgICAgICAgICAgICBzdHlsZT17eyBoZWlnaHQ6IHRhYmxlSGVpZ2h0IH19XHJcbiAgICAgICAgICAgICAgICAgIHsuLi50YWJsZVBhcmFtc31cclxuICAgICAgICAgICAgICAgICAgLy8gcGFnaW5hdGlvbj17ZmFsc2V9XHJcbiAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgey8qIDxkaXY+PC9kaXY+ICovfVxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAge2VkaXRvckZvcm0gJiYgdGhpcy5wcm9wcy5mb3JtUGFnZVByb3BzPy5mb3JtVHlwZSAhPT0gXCJwYWdlXCIgJiYgKFxyXG4gICAgICAgICAgICA8RWRpdG9yRm9ybVxyXG4gICAgICAgICAgICAgIHJlZj17dGhpcy5lZGl0b3JSZWZ9XHJcbiAgICAgICAgICAgICAgY2FsbEJhY2s9eygpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMucHJvcHMub25DYWxsQmFja3M/Lm9uU3VtYml0Q2FsbEJhY2sgJiZcclxuICAgICAgICAgICAgICAgICAgY29udmVyRnVuY3Rpb24oXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wcm9wcy5vbkNhbGxCYWNrcz8ub25TdW1iaXRDYWxsQmFjayxcclxuICAgICAgICAgICAgICAgICAgICB7IHBhZ2VSZWY6IHRoaXMucHJvcHMucGFnZVJlZiB9LFxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucHJvcHMuVXRpbHNcclxuICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgIHRoaXMudGFibGVSZWxvYWQoKTtcclxuICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgIGZvcm1zPXtlZGl0b3JGb3Jtc31cclxuICAgICAgICAgICAgICBzdWJtaXRVcmw9e3N1Ym1pdFVybH1cclxuICAgICAgICAgICAgICBzdWJtaXRQYXJhbXM9e3N1Ym1pdFBhcmFtc31cclxuICAgICAgICAgICAgICBvblN1Ym1pdD17dGhpcy5wcm9wcy5vblN1Ym1pdCB8fCB0aGlzLnByb3BzLmJ1dHRvbkNsaWNrPy5vblN1Ym1pdH1cclxuICAgICAgICAgICAgICBvbkhpZGVGb3JtPXt0aGlzLnByb3BzLm9uSGlkZUZvcm19XHJcbiAgICAgICAgICAgICAgb25Gb3JtQ2hhbmdlPXt0aGlzLnByb3BzLm9uRm9ybUNoYW5nZX1cclxuICAgICAgICAgICAgICBmb3JtVHlwZT17dGhpcy5wcm9wcy5mb3JtVHlwZSB8fCBcImF1dG9cIn1cclxuICAgICAgICAgICAgICBjaGFuZ2VWYWxpZD17Zm9ybUNoYW5nZVZhbGlkfVxyXG4gICAgICAgICAgICAgIFV0aWxzPXt0aGlzLnByb3BzLlV0aWxzfVxyXG4gICAgICAgICAgICAgIHJlcXVlc3RPYmplY3Q9e3tcclxuICAgICAgICAgICAgICAgIGFkZFVybDogcmVxdWVzdFVybHMuYWRkVXJsLFxyXG4gICAgICAgICAgICAgICAgZWRpdG9yVXJsOiByZXF1ZXN0VXJscy5lZGl0b3JVcmwsXHJcbiAgICAgICAgICAgICAgICBhZGRQYXJhbXM6IHJlcXVlc3RQYXJhbXMuYWRkUGFyYW1zLFxyXG4gICAgICAgICAgICAgICAgZWRpdG9yUGFyYW1zOiByZXF1ZXN0UGFyYW1zLmVkaXRvclBhcmFtcyxcclxuICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgIGZ1bmNzPXt0aGlzLnByb3BzLmZ1bmNzfVxyXG4gICAgICAgICAgICAgIHBhZ2VSZWY9e3RoaXMucHJvcHMucGFnZVJlZn1cclxuICAgICAgICAgICAgICB7Li4uZm9ybVBhZ2VQcm9wc31cclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIHtmb3JtQnV0dG9ufVxyXG4gICAgICAgICAgICA8L0VkaXRvckZvcm0+XHJcbiAgICAgICAgICApfVxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICk7XHJcbiAgfVxyXG59XHJcbmV4cG9ydCBkZWZhdWx0IEJhc2VQYWdlO1xyXG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxPQUFPQSxLQUFLLElBQUlDLGFBQWEsUUFBbUIsT0FBTztBQUN2RCxPQUFPQyxLQUFLLE1BQU0sa0JBQWtCO0FBQ3BDLE9BQU9DLElBQUksTUFBTSxpQkFBaUI7QUFDbEMsT0FBT0MsTUFBTSxNQUFNLG1CQUFtQjtBQUN0QyxPQUFPQyxLQUFLLE1BQU0sa0JBQWtCO0FBQ3BDLE9BQU9DLE9BQU8sTUFBTSxvQkFBb0I7QUFDeEMsT0FBT0MsT0FBTyxNQUFNLG9CQUFvQjtBQUN4QyxPQUFPQyxVQUFVLE1BQXlCLG1CQUFtQjtBQUM3RCxPQUFPQyxHQUFHLE1BQU0sWUFBWTtBQUM1QixPQUFPLHFCQUFxQjtBQUc1QixTQUNFQyxZQUFZLEVBQ1pDLFdBQVcsRUFDWEMsWUFBWSxFQUNaQyxhQUFhLEVBQ2JDLFlBQVksRUFDWkMsZ0JBQWdCLEVBQ2hCQyxjQUFjLFFBQ1QsbUJBQW1CO0FBQzFCLFNBQVNDLGNBQWMsRUFBRUMsT0FBTyxRQUFrQyxhQUFhO0FBQy9FLE9BQU9DLE9BQU8sTUFBTSxhQUFhO0FBQ2pDLE9BQU9DLE1BQU0sTUFBTSxjQUFjO0FBQ2pDLFNBQStCQyxtQkFBbUIsUUFBUSxtQkFBbUI7QUFDN0UsT0FBT0MsWUFBWSxNQUFNLGlCQUFpQjtBQUcxQyxTQUFTQyxjQUFjLEVBQUVDLGFBQWEsUUFBUSxTQUFTO0FBRXZELE9BQU9DLFFBQVEsTUFBTSxpQkFBaUI7QUFFdEMsU0FBU0Msa0JBQWtCLFFBQVEsc0JBQXNCO0FBbUJ6RCxNQUFNQyxNQUFNLEdBQUcsSUFBSTtBQXdGbkIsTUFBTUMsUUFBUSxTQUFTM0IsYUFBYSxDQUF3QjtFQVUxRDRCLFdBQVdBLENBQUNDLEtBQVUsRUFBRTtJQUN0QixLQUFLLENBQUNBLEtBQUssQ0FBQztJQUFDQyxlQUFBLGdDQVZKL0IsS0FBSyxD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