@projectcor/maia-components 2.36.0 → 2.38.0

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.
@@ -202,7 +202,7 @@ export var ChatAIModal = function ChatAIModal() {
202
202
  var _useState21 = useState(function () {
203
203
  var saved = savedSessionOnMountRef.current;
204
204
  if ((saved === null || saved === void 0 ? void 0 : saved.agentsNavActive) === 'myAgents') return options.myAgents;
205
- if ((saved === null || saved === void 0 ? void 0 : saved.agentsNavActive) === 'mySkills') return options.mySkills;
205
+ if ((saved === null || saved === void 0 ? void 0 : saved.agentsNavActive) === 'mySkills' && canAccessToSkills(user)) return options.mySkills;
206
206
  var savedOption = saved === null || saved === void 0 ? void 0 : saved.currentOption;
207
207
  return savedOption && isValidMaiaPanelOption(savedOption) ? savedOption : options.home;
208
208
  }),
@@ -1195,7 +1195,7 @@ export var ChatAIModal = function ChatAIModal() {
1195
1195
  }, _callee3);
1196
1196
  })), [clearAgent, ensureAgentsLoaded, user.id]);
1197
1197
  var handleOpenSkills = useCallback(function () {
1198
- if (!window.MAIA_CHAT_AI_FEATURE_ACCESS_MULTI_AGENTS) {
1198
+ if (!canAccessToSkills(user)) {
1199
1199
  return;
1200
1200
  }
1201
1201
  clearAgent();
@@ -1206,7 +1206,7 @@ export var ChatAIModal = function ChatAIModal() {
1206
1206
  agentsNavActive: 'mySkills',
1207
1207
  currentOption: options.mySkills
1208
1208
  });
1209
- }, [clearAgent, handleGetSkills, user.id]);
1209
+ }, [clearAgent, handleGetSkills, user]);
1210
1210
  var handleGoToMaiaker = useCallback(/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee4() {
1211
1211
  var maiakerAgent, response, data, _t;
1212
1212
  return _regeneratorRuntime.wrap(function (_context4) {
@@ -1562,4 +1562,4 @@ export var ChatAIModal = function ChatAIModal() {
1562
1562
  }), userHasSkillsAccess && /*#__PURE__*/_jsx(AbmSkillGenerateModal, {}), /*#__PURE__*/_jsx(Snackbar, {})]
1563
1563
  }), selector);
1564
1564
  };
1565
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VDYWxsYmFjayIsInVzZU1lbW8iLCJ1c2VTdGF0ZSIsInVzZVJlZiIsInVzZUVmZmVjdCIsInVzZUxheW91dEVmZmVjdCIsIlJlYWN0RE9NIiwibW9tZW50IiwidXNlVHJhbnNsYXRpb24iLCJ1c2VVc2VyIiwiY2FuQWNjZXNzVG9DaGF0QUkiLCJjYW5BY2Nlc3NUb1NraWxscyIsIk1BSUFFcnJvciIsInVzZU1haWFUYXNrUGFuZWxaSW5kZXgiLCJDaGF0QUlDb250ZW50IiwiYnVpbGRIYW5kbGVycyIsIm9wdGlvbnMiLCJTaWRlYmFyIiwidXNlR2V0QWdlbnRzIiwidXNlR2V0U2tpbGxzIiwidXNlR2xvYmFsQ29udGV4dCIsIkNoYXRBSU1vZGFsSGVhZGVyIiwiU25hY2tiYXIiLCJQcm9qZWN0U3VtbWFyeUNvbnRlbnQiLCJBYm1BZ2VudE1vZGFsIiwiQWJtU2tpbGxNb2RhbCIsIlNLSUxMX1VTRV9BRlRFUl9TQVZFX0VWRU5UIiwiQWJtU2tpbGxHZW5lcmF0ZU1vZGFsIiwiU0VDVElPTlMiLCJTQ0NBSU1Db250ZW50IiwiU0NDQUlNQ29udGVudFdyYXBwZXIiLCJTQ0NBSU1NaW5pbWl6ZWRIaWRlIiwiU0NDQUlNV3JhcHBlciIsIk1haWFNaW5pbWl6ZWRQaWxsIiwiZ2V0TWFpYUZsb2F0aW5nUGFuZWxXaWR0aFB4IiwicmVzb2x2ZUluaXRpYWxNYWlhQ2hhdExheW91dE1vZGUiLCJzZXRTdG9yZWRNYWlhQ2hhdExheW91dE1vZGUiLCJGbG9hdGluZ1BhbmVsTW90aW9uIiwidXNlRmxvYXRpbmdQYW5lbERyYWdUaWx0IiwiQ2hhdEFpTW9kYWxGb290ZXIiLCJ2YWxpZGF0ZUlzTWFpYSIsImlzTWFya2V0cGxhY2VHbG9iYWxDbG9uZUFnZW50IiwidXNlRmFxc1N0b3JlIiwiZ2V0Q2hhdHNTdG9yZVN0YXRlIiwidXNlQ2hhdHNTdG9yZSIsInJlYWRMYXN0QWN0aXZlQ2hhdElkIiwid3JpdGVMYXN0QWN0aXZlQ2hhdElkIiwiY2xlYXJNYWlhUGFuZWxTZXNzaW9uIiwiaXNWYWxpZE1haWFQYW5lbE9wdGlvbiIsInBhdGNoTWFpYVBhbmVsU2Vzc2lvbiIsInJlYWRNYWlhUGFuZWxTZXNzaW9uIiwid3JpdGVNYWlhUGFuZWxTZXNzaW9uIiwidXNlU2Vzc2lvbnNTdG9yZSIsImlzQWN0aXZlU2Vzc2lvblN0YXR1cyIsImZldGNoTWFpYSIsImZldGNoQWdlbnREZXRhaWwiLCJtYXBDT1JMYW5nIiwiRVZFTlRTIiwidXNlRXZlbnQiLCJNQUlBX09QRU5fRlJPTV9IT1NUX0VWRU5UIiwianN4IiwiX2pzeCIsImpzeHMiLCJfanN4cyIsIkZyYWdtZW50IiwiX0ZyYWdtZW50IiwiTEVHQUNZX0NPTlRFWFRfRU5USVRJRVMiLCJpc0dsb2JhbE1haWFTZWN0aW9uIiwic2VjdGlvbiIsInJlc29sdmVBaUNoYXRCYWNrRGVzdGluYXRpb24iLCJhZ2VudFR5cGUiLCJjdXJyZW50T3B0aW9uIiwiaG9tZU9wdGlvbiIsIklEX01PREFMX0NIQVRfQUdFTlQiLCJ2YWxpZGF0ZUFjY2Vzc0J5RmVhdHVyZSIsInVzZXIiLCJCb29sZWFuIiwid2luZG93IiwiTUFJQV9DSEFUX0FJX0ZFQVRVUkVfQUNDRVNTIiwiTUFJQV9DSEFUX0FJX0ZFQVRVUkVfQUNDRVNTX01VTFRJX0FHRU5UUyIsIkNoYXRBSU1vZGFsIiwiX3NhdmVkU2Vzc2lvbk9uTW91bnRSIiwiX3NhdmVkU2Vzc2lvbk9uTW91bnRSMiIsIl9zYXZlZFNlc3Npb25Pbk1vdW50UjMiLCJfc2F2ZWRTZXNzaW9uT25Nb3VudFI0IiwiX3VzZXIkcGVybWlzc2lvbnMiLCJfdXNlciRwZXJtaXNzaW9uczIiLCJfdXNlciRwZXJtaXNzaW9uczMiLCJfc2F2ZWRTZXNzaW9uT25Nb3VudFI3IiwiX3NhdmVkU2Vzc2lvbk9uTW91bnRSOCIsIl9hZ2VudHMkZGF0YSIsIl91c2VUcmFuc2xhdGlvbiIsImFibUFnZW50IiwiaTE4biIsImFtcGxpdHVkRXZlbnQiLCJzYXZlZFNlc3Npb25Pbk1vdW50UmVmIiwiaWQiLCJzaG91bGRSZXN0b3JlRXhwYW5kZWQiLCJjdXJyZW50IiwiaXNFeHBhbmRlZCIsInBlbmRpbmdTZXNzaW9uUmVzdG9yZVJlZiIsInNlc3Npb25SZXN0b3JlU3RhcnRlZFJlZiIsIl91c2VTdGF0ZSIsIl91c2VTdGF0ZTIiLCJfc2xpY2VkVG9BcnJheSIsImlzUmVzdG9yaW5nU2Vzc2lvbiIsInNldElzUmVzdG9yaW5nU2Vzc2lvbiIsInNpZGViYXJPcGVuUmVmIiwic2lkZWJhck9wZW4iLCJfdXNlU3RhdGUzIiwiX3VzZVN0YXRlNCIsImlzTWluaW1pemVkIiwic2V0SXNNaW5pbWl6ZWQiLCJzZXRDaGF0Vmlld1Zpc2libGUiLCJzdGF0ZSIsInVucmVhZENvdW50IiwiYWN0aXZlQ2hhdElkIiwiaGFzQWN0aXZlU3RyZWFtIiwiT2JqZWN0IiwidmFsdWVzIiwibWV0YSIsInNvbWUiLCJzdGF0dXMiLCJnb1RvQ2hhdFJlZiIsImdvSG9tZVJlZiIsImhhbmRsZU1pbmltaXplIiwiYWlDaGF0TWluaW1pemUiLCJmb2N1c0NoYXRJbnB1dCIsInNldFRpbWVvdXQiLCJkb2N1bWVudCIsImRpc3BhdGNoRXZlbnQiLCJDdXN0b21FdmVudCIsIl91c2VTdGF0ZTUiLCJtZXNzYWdlIiwiYXR0YWNobWVudHMiLCJfdXNlU3RhdGU2IiwidXNlckluaXRpYWxNZXNzYWdlIiwic2V0VXNlckluaXRpYWxNZXNzYWdlIiwiX3VzZVN0YXRlNyIsIl91c2VTdGF0ZTgiLCJpbml0aWFsQ2hhdElkIiwic2V0SW5pdGlhbENoYXRJZCIsIl91c2VTdGF0ZTkiLCJfdXNlU3RhdGUwIiwibmV3Q2hhdEtleSIsInNldE5ld0NoYXRLZXkiLCJfdXNlU3RhdGUxIiwiX3VzZVN0YXRlMTAiLCJzZXNzaW9uTWV0YSIsInNldFNlc3Npb25NZXRhIiwiX3VzZVN0YXRlMTEiLCJfdXNlU3RhdGUxMiIsInNlbmRNZXNzYWdlRnVuY3Rpb24iLCJzZXRTZW5kTWVzc2FnZUZ1bmN0aW9uIiwiX3VzZVN0YXRlMTMiLCJfdXNlU3RhdGUxNCIsInN0b3BHZW5lcmF0aW9uRnVuY3Rpb24iLCJzZXRTdG9wR2VuZXJhdGlvbkZ1bmN0aW9uIiwiX3VzZVN0YXRlMTUiLCJfdXNlU3RhdGUxNiIsImlzU3RyZWFtaW5nIiwic2V0SXNTdHJlYW1pbmciLCJfdXNlU3RhdGUxNyIsIl91c2VTdGF0ZTE4IiwiaXNXcml0aW5nIiwic2V0SXNXcml0aW5nIiwiX3VzZVN0YXRlMTkiLCJfdXNlU3RhdGUyMCIsInJlZmV0Y2hDaGF0cyIsInNldFJlZmV0Y2hDaGF0cyIsIl91c2VTdGF0ZTIxIiwic2F2ZWQiLCJhZ2VudHNOYXZBY3RpdmUiLCJteUFnZW50cyIsIm15U2tpbGxzIiwic2F2ZWRPcHRpb24iLCJob21lIiwiX3VzZVN0YXRlMjIiLCJzZXRDdXJyZW50T3B0aW9uIiwiX3VzZVN0YXRlMjMiLCJfdXNlU3RhdGUyNCIsImhhc0Vycm9yIiwic2V0SGFzRXJyb3IiLCJfdXNlU3RhdGUyNSIsIl91c2VTdGF0ZTI2IiwiZGlkUmVzZXRDb250ZXh0SW5TZWN0aW9uIiwic2V0RGlkUmVzZXRDb250ZXh0SW5TZWN0aW9uIiwicHJldkhhc1Bpbm5lZENvbnRleHRSZWYiLCJoYW5kbGVycyIsIl91c2VTdGF0ZTI3IiwiX3VzZVN0YXRlMjgiLCJzaWRlYmFySGFzRXJyb3IiLCJzZXRTaWRlYmFySGFzRXJyb3IiLCJyZXNldFNlbGVjdGVkQ2hhdFJlZiIsImxhbmciLCJsYW5ndWFnZSIsImxvY2FsZSIsIl91c2VHbG9iYWxDb250ZXh0Iiwic2VsZWN0QWdlbnQiLCJjbGVhckFnZW50IiwiYWdlbnQiLCJwcm9qZWN0IiwiY2xpZW50IiwidGFzayIsImNoaXBzUHJvamVjdCIsInRvZ2dsZVdlYlNlYXJjaCIsImlzV2ViU2VhcmNoQWN0aXZlIiwic2V0Q2hpcHNQcm9qZWN0Iiwic2V0Q2xpZW50Iiwic2V0UHJvamVjdCIsImJhbm5lckVudHJ5RmFxIiwic2V0VGFzayIsInRvb2x0aXBaSW5kZXgiLCJfdXNlR2V0QWdlbnRzIiwiaGFuZGxlR29Ib21lIiwiYWdlbnRzIiwibG9hZGluZyIsImxvYWRpbmdNb3JlIiwiYWdlbnRFcnJvciIsImVycm9yIiwiaGFuZGxlR2V0QWdlbnRzIiwibG9hZE1vcmVBZ2VudHMiLCJzZWFyY2hDdXN0b21BZ2VudHMiLCJzZWFyY2hMb2FkaW5nIiwiYWRkQWdlbnQiLCJyZW1vdmVBZ2VudCIsInVwZGF0ZUFnZW50IiwidXBkYXRlQWdlbnRGYXZvcml0ZSIsInNlbGVjdEZpcnN0QWdlbnQiLCJzb3J0QWdlbnRzTGlzdCIsImFnZW50c0RhdGFSZWYiLCJkYXRhIiwiX3VzZUdldFNraWxscyIsInNoYXJlZFNraWxscyIsImxvYWRpbmdTa2lsbHMiLCJoYW5kbGVHZXRTa2lsbHMiLCJhZGRTa2lsbCIsInVwZGF0ZVNraWxsSW5MaXN0IiwicmVtb3ZlU2tpbGwiLCJpc01BSUEiLCJ1c2VySGFzUGVybWlzc2lvbnMiLCJwZXJtaXNzaW9ucyIsImFpX2FnZW50cyIsImNyZWF0ZSIsImVkaXQiLCJ1c2VySGFzU2tpbGxzQWNjZXNzIiwiY29tcHV0ZWRDdXJyZW50T3B0aW9uIiwiaXNHbG9iYWxTcGVjaWFsaXN0IiwiZW50aXR5IiwiaXNQcm9qZWN0U3BlY2lhbGlzdCIsImlzQ2xpZW50U3BlY2lhbGlzdCIsImlzTWFpYWtlciIsInR5cGUiLCJjaGF0Iiwic2hvdWxkU2hvd1Byb2plY3RTZWxlY3RvciIsInNob3VsZFNob3dDbGllbnRTZWxlY3RvciIsInByb2plY3RTZWxlY3RvciIsImNsaWVudFNlbGVjdG9yIiwibmFtZSIsImlzTWFpYWtlckFnZW50U2VsZWN0ZWQiLCJzaWRlYmFyQWdlbnRzTmF2QWN0aXZlIiwiYWdlbnRzRmV0Y2hlZFJlZiIsInNlbGVjdG9yIiwicXVlcnlTZWxlY3RvciIsImNvbmNhdCIsIl91c2VTdGF0ZTI5IiwiX3VzZVN0YXRlMzAiLCJsYXlvdXRNb2RlIiwic2V0TGF5b3V0TW9kZSIsImhhbmRsZUxheW91dE1vZGVDaGFuZ2UiLCJtb2RlIiwiZXhwYW5kZWQiLCJpc0Zsb2F0aW5nIiwiY29udGVudFdyYXBwZXJSZWYiLCJfdXNlU3RhdGUzMSIsIl9zYXZlZFNlc3Npb25Pbk1vdW50UjUiLCJfc2F2ZWRTZXNzaW9uT25Nb3VudFI2IiwiZHJhZ1Bvc2l0aW9uIiwiX3VzZVN0YXRlMzIiLCJzZXREcmFnUG9zaXRpb24iLCJfdXNlRmxvYXRpbmdQYW5lbERyYWciLCJ0aWx0TW90aW9uIiwic3RhcnRQb2ludGVyVHJhY2tpbmciLCJzYW1wbGVQb2ludGVyTW92ZSIsImVuZFBvaW50ZXJUcmFja2luZyIsImRyYWdTdGF0ZVJlZiIsImNsYW1wRHJhZ1Bvc2l0aW9uIiwieCIsInkiLCJjb250ZW50V3JhcHBlciIsIl9jb250ZW50V3JhcHBlciRnZXRCbyIsImdldEJvdW5kaW5nQ2xpZW50UmVjdCIsIndpZHRoIiwiaGVpZ2h0Iiwib2Zmc2V0IiwibWF4WCIsIk1hdGgiLCJtYXgiLCJpbm5lcldpZHRoIiwibWF4WSIsImlubmVySGVpZ2h0IiwibWluIiwicHJldiIsInBhZCIsImhhbmRsZURyYWdFbmQiLCJldmVudCIsIl9kcmFnU3RhdGVSZWYkY3VycmVudCIsInBvaW50ZXJJZCIsImJvZHkiLCJzdHlsZSIsInVzZXJTZWxlY3QiLCJjdXJzb3IiLCJyZWN0IiwibGVmdCIsInRvcCIsImhhbmRsZURyYWdNb3ZlIiwiZHJhZ1N0YXRlIiwiY2xpZW50WCIsImNsaWVudFkiLCJuZXh0UG9zaXRpb24iLCJvZmZzZXRYIiwib2Zmc2V0WSIsInJlc29sdmVkRHJhZ1Bvc2l0aW9uIiwiaGFuZGxlRHJhZ1N0YXJ0IiwiYnV0dG9uIiwidGFyZ2V0IiwiY2xvc2VzdCIsImluaXRpYWxQb3NpdGlvbiIsInBvaW50ZXJPZmZzZXRYIiwicG9pbnRlck9mZnNldFkiLCJjdXJyZW50VGFyZ2V0Iiwic2V0UG9pbnRlckNhcHR1cmUiLCJwcmV2ZW50RGVmYXVsdCIsImFpQ2hhdERyYWdnYWJsZSIsInN0YXJ0Q2hhdCIsImZhcUlkIiwiYWdlbnRTdWdnZXN0aW9uSWQiLCJtZW50aW9ucyIsImZ1YUlkIiwic2NJZCIsImNvbnRleHREYXRhIiwiX29iamVjdFNwcmVhZCIsImxlbmd0aCIsImJhbm5lckZhcUF1dG9TZW50UmVmIiwiX2Jhbm5lckVudHJ5RmFxJGZhcVRpIiwiZW50aXR5UmVhZHkiLCJmYXFUaXRsZSIsInRyaW0iLCJ1bmRlZmluZWQiLCJnb1RvQ2hhdCIsInNlc3Npb25FeHRlcm5hbElkIiwic2VsZWN0ZWRBZ2VudCIsImZpbmQiLCJhZ2VudEl0ZW0iLCJhZ2VudElkIiwiaGFuZGxlU2lkZWJhck9wZW5DaGFuZ2UiLCJvcGVuIiwic3luY1BhbmVsU2Vzc2lvbiIsIl9hZ2VudCRpZCIsImhvc3RDb250ZXh0IiwiZW5zdXJlQWdlbnRzTG9hZGVkIiwiX2FzeW5jVG9HZW5lcmF0b3IiLCJfcmVnZW5lcmF0b3JSdW50aW1lIiwibWFyayIsIl9jYWxsZWUiLCJ3cmFwIiwiX2NvbnRleHQiLCJuZXh0IiwiYWJydXB0Iiwic3RvcCIsInRpbWVyIiwiY2xlYXJUaW1lb3V0Iiwib25QYWdlSGlkZSIsImFkZEV2ZW50TGlzdGVuZXIiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwiaGFuZGxlUmVzdG9yZUZyb21NaW5pbWl6ZWQiLCJhaUNoYXRPcGVuIiwib3B0aW9uIiwidGhlbiIsIl9jaGF0cyRmaW5kIiwiX2dldENoYXRzU3RvcmVTdGF0ZSIsImNoYXRzIiwibGFzdEFjdGl2ZUNoYXRJZCIsImlzUmVhZCIsIl9nb1RvQ2hhdFJlZiRjdXJyZW50IiwiY2FsbCIsIl9nb0hvbWVSZWYkY3VycmVudCIsImFwcGx5RXhwYW5kZWRIb3N0VGFrZW92ZXIiLCJkZXRhaWwiLCJfcmVzZXRTZWxlY3RlZENoYXRSZWYiLCJfZGV0YWlsJHByb2plY3QyIiwiX2RldGFpbCRjbGllbnQyIiwiX2RldGFpbCR0YXNrMiIsImlzR2xvYmFsSGVhZGVyT3BlbiIsImdldFN0YXRlIiwiY2xlYXJGYXFzIiwic2V0QWN0aXZlQ2hhdElkIiwiX2RldGFpbCRwcm9qZWN0IiwiX2RldGFpbCRjbGllbnQiLCJfZGV0YWlsJHRhc2siLCJuZXh0TGF5b3V0IiwiZmFxIiwiX2FnZW50JGlkMiIsInJlc29sdmVkQWdlbnRJZCIsImZpcnN0QWdlbnQiLCJoYW5kbGVTZW5kTWVzc2FnZVJlYWR5Iiwic2VuZE1lc3NhZ2UiLCJzdG9wR2VuZXJhdGlvbiIsInN0cmVhbWluZyIsIndyaXRpbmciLCJoYW5kbGVTZW5kTWVzc2FnZSIsImlzX2RlbGV0ZWQiLCJoYXNfbm90X3Blcm1pc3Npb25zIiwiaGFzX25vdF9hY2Nlc3MiLCJwcm9qZWN0X2RlbGV0ZWQiLCJoYW5kbGVTdGFydE5ld0NoYXQiLCJmcm9tTXlBZ2VudHMiLCJmcm9tTXlTa2lsbHMiLCJmcm9tTWFpYWtlckhvbWUiLCJfcmVzZXRTZWxlY3RlZENoYXRSZWYyIiwiaGFuZGxlUmVzZXRDaGF0IiwiX2NhbGxlZTIiLCJfY29udGV4dDIiLCJoYW5kbGVCYWNrIiwidG8iLCJhaUNoYXRCYWNrIiwicGlubmVkIiwicHJvamVjdElkIiwid2FzUGlubmVkIiwib25NZXJnZUNyZWF0ZWRBZ2VudCIsImV2dCIsIl9yZWYzIiwibmV4dEFnZW50IiwibmF2aWdhdGVIb21lIiwib25TeW5jRWRpdGVkQWdlbnQiLCJfcmVmNCIsIm9wZW5DaGF0VmlldyIsIm9wZW5Ib21lIiwiY2xpZW50SWQiLCJvcGVuRnJvbUhvc3QiLCJfcmVmNSIsIm9wZW5OZXdDaGF0V2l0aEFnZW50IiwiX2RldGFpbCRwcm9qZWN0MyIsIl9kZXRhaWwkY2xpZW50MyIsIl9yZWY2IiwiaGFuZGxlVXNlU2tpbGxBZnRlclNhdmUiLCJfcmVmNyIsInNraWxsIiwidXNlRmlyc3RBZ2VudCIsInJlcXVlc3RBbmltYXRpb25GcmFtZSIsIm9uU2Vzc2lvbk1ldGEiLCJfcmVmOCIsImxlZ2FjeUNvbnRleHRTZXNzaW9uIiwiYWdlbnRFbnRpdHkiLCJpbmNsdWRlcyIsImNvbnRleHROYW1lIiwidGFza05hbWUiLCJwcm9qZWN0TmFtZSIsImNsaWVudE5hbWUiLCJlbnRpdHlUeXBlIiwiaXNfbGVnYWN5X2NvbnRleHQiLCJoYW5kbGVDb250aW51ZUxlZ2FjeUNvbnRleHRJbk5ld0NoYXQiLCJwSWQiLCJwTmFtZSIsImNJZCIsImNOYW1lIiwidElkIiwidGFza0lkIiwidE5hbWUiLCJvcmNoZXN0cmF0b3IiLCJhIiwiU3RyaW5nIiwic2hvd05ld0NoYXQiLCJpc015QWdlbnRzU2VjdGlvbiIsImlzTXlTa2lsbHNTZWN0aW9uIiwiaGFzUGlubmVkQ29udGV4dCIsImlzQ2hhdFZpZXciLCJpc0hvbWVTdGVwMiIsImlzSGVhZGVySG9tZVN0ZXAyIiwiaXNTZWN0aW9uUmVzZXRIb21lU3RlcDIiLCJzaG93QmFja0J1dHRvbiIsImhhbmRsZU9wZW5NYXJrZXRwbGFjZSIsIl9jYWxsZWUzIiwiX2NvbnRleHQzIiwiaGFuZGxlT3BlblNraWxscyIsImhhbmRsZUdvVG9NYWlha2VyIiwiX2NhbGxlZTQiLCJtYWlha2VyQWdlbnQiLCJyZXNwb25zZSIsIl90IiwiX2NvbnRleHQ0IiwicGF0aCIsIm1ldGhvZCIsInNlbnQiLCJqc29uIiwibG9hZEFnZW50c0ZvclNlc3Npb25SZXN0b3JlIiwiX3JlZjEiLCJfY2FsbGVlNSIsInNuYXBzaG90IiwiYWdlbnRUb1NlbGVjdCIsIl90MiIsIl9jb250ZXh0NSIsIl94IiwiYXBwbHkiLCJhcmd1bWVudHMiLCJhcHBseVNlc3Npb25SZXN0b3JlIiwiX3JlZjEwIiwiX2NhbGxlZTYiLCJfc25hcHNob3QkaG9zdENvbnRleHQiLCJfY29udGV4dDYiLCJfeDIiLCJydW5SZXN0b3JlIiwiX3JlZjExIiwiX2NhbGxlZTciLCJfY29udGV4dDciLCJmaW5pc2giLCJoYW5kbGVEZWxldGVBZ2VudEZyb21NeUFnZW50cyIsImlzTWFpYWtlckNyZWF0b3JIb21lIiwibW9kYWxQYW5lbCIsImNoaWxkcmVuIiwib25Hb1RvQ2hhdCIsIm9uRXJyb3IiLCJoYW5kbGVHb1RvSG9tZSIsImhhbmRsZVNldFJlZmV0Y2hDaGF0cyIsIm9uT3Blbk1haWFrZXJDcmVhdG9yIiwiaXNMZWdhY3lDb250ZXh0U2Vzc2lvbiIsImluaXRpYWxPcGVuIiwib25PcGVuQ2hhbmdlIiwiZmxvYXRpbmciLCJvbkxheW91dE1vZGVDaGFuZ2UiLCJkcmFnZ2FibGUiLCJvbkRyYWdTdGFydCIsIm9uRHJhZ01vdmUiLCJvbkRyYWdFbmQiLCJoYXNNb3JlIiwiaGFzX21vcmUiLCJvbkFnZW50VXBkYXRlIiwiaXNNYWlha2VyU2VjdGlvbiIsIm9uQmFjayIsInJlZnMiLCJvblNlbmRNZXNzYWdlUmVhZHkiLCJsb2FkaW5nQWdlbnRzIiwib25EZWxldGVBZ2VudCIsIm9uRmF2b3JpdGVBZ2VudFVwZGF0ZSIsImhhc01vcmVBZ2VudHMiLCJsb2FkaW5nTW9yZUFnZW50cyIsIm9uTG9hZE1vcmVBZ2VudHMiLCJvbkdvVG9NYWlha2VyIiwib25EZWxldGVTa2lsbCIsIm9uU2VhcmNoQWdlbnRzIiwic2VhcmNoTG9hZGluZ0FnZW50cyIsIm9uUmVzdGFydFN1bW1hcnkiLCJoYW5kbGVTdG9wR2VuZXJhdGlvbiIsImNoYXRJZCIsIm9uQ29udGludWVJbk5ld0NoYXQiLCJyZWYiLCJjcmVhdGVQb3J0YWwiLCJlbGV2YXRlZCIsIiRtaW5pbWl6ZWQiLCIkaGlkZGVuIiwidGlsdCIsIm9uUmVzdG9yZSJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL21vbGVjdWxlcy9DaGF0QUlNb2RhbC9DaGF0QUlNb2RhbC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbm8tbmVzdGVkLXRlcm5hcnkgKi9cbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9pbmRlbnQgKi9cbi8qIGVzbGludC1kaXNhYmxlIHJlYWN0L2pzeC1uby11c2VsZXNzLWZyYWdtZW50ICovXG4vKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55ICovXG4vKiBlc2xpbnQtZGlzYWJsZSByZWFjdC9uby1hcnJheS1pbmRleC1rZXkgKi9cbi8qIGVzbGludC1kaXNhYmxlIGpzeC1hMTF5L2NsaWNrLWV2ZW50cy1oYXZlLWtleS1ldmVudHMgKi9cbi8qIGVzbGludC1kaXNhYmxlIGpzeC1hMTF5L25vLXN0YXRpYy1lbGVtZW50LWludGVyYWN0aW9ucyAqL1xuLyogZXNsaW50LWRpc2FibGUgcmVhY3QvZnVuY3Rpb24tY29tcG9uZW50LWRlZmluaXRpb24gKi9cbi8qIGVzbGludC1kaXNhYmxlIHJlYWN0L3JlcXVpcmUtZGVmYXVsdC1wcm9wcyAqL1xuLyogZXNsaW50LWRpc2FibGUgbm8tY29uc29sZSAqL1xuaW1wb3J0IHtcbiAgdXNlQ2FsbGJhY2ssXG4gIHVzZU1lbW8sXG4gIHVzZVN0YXRlLFxuICB1c2VSZWYsXG4gIHVzZUVmZmVjdCxcbiAgdXNlTGF5b3V0RWZmZWN0LFxuICBQb2ludGVyRXZlbnQgYXMgUmVhY3RQb2ludGVyRXZlbnQsXG59IGZyb20gJ3JlYWN0J1xuaW1wb3J0IFJlYWN0RE9NIGZyb20gJ3JlYWN0LWRvbSdcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50J1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tICdyZWFjdC1pMThuZXh0J1xuaW1wb3J0IHsgdXNlVXNlciB9IGZyb20gJy4uLy4uLy4uL2NvbnRleHQvY29yLXVzZXInXG5pbXBvcnQgeyBjYW5BY2Nlc3NUb0NoYXRBSSwgY2FuQWNjZXNzVG9Ta2lsbHMgfSBmcm9tICcuLi8uLi8uLi9jb25zdGFudHMvcGVybWlzc2lvbnMnXG5pbXBvcnQgeyBNQUlBRXJyb3IgfSBmcm9tICcuLi8uLi9hdG9tcy9NQUlBRXJyb3InXG5pbXBvcnQgeyB1c2VNYWlhVGFza1BhbmVsWkluZGV4IH0gZnJvbSAnLi4vLi4vLi4vaG9va3MvdXNlTWFpYVRhc2tQYW5lbFpJbmRleCdcblxuaW1wb3J0IHsgQ2hhdEFJQ29udGVudCB9IGZyb20gJy4uL0NoYXRBSUNvbnRlbnQnXG5pbXBvcnQgeyBidWlsZEhhbmRsZXJzLCBvcHRpb25zIH0gZnJvbSAnLi9jb25zdGFudHMnXG5pbXBvcnQgeyBTaWRlYmFyIH0gZnJvbSAnLi4vU2lkZWJhcidcbmltcG9ydCB7IHVzZUdldEFnZW50cyB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL21haWEvQWdlbnRzL2dldEFnZW50cydcbmltcG9ydCB7IHVzZUdldFNraWxscyB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL21haWEvU2tpbGxzL2dldFNraWxscydcbmltcG9ydCB7IHVzZUdsb2JhbENvbnRleHQsIHR5cGUgU2VjdGlvbiB9IGZyb20gJy4uLy4uLy4uL2NvbnRleHQvZ2xvYmFsLWNvbnRleHQnXG5pbXBvcnQgeyBBdHRhY2htZW50RmlsZSB9IGZyb20gJy4uL0NoYXRGb290ZXIvQ2hhdEZvb3RlcidcbmltcG9ydCB7IENvbnRleHRNZW50aW9uIH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMvY29udGV4dE1lbnRpb24nXG5pbXBvcnQgeyBDaGF0QUlNb2RhbEhlYWRlciB9IGZyb20gJy4vY29tcG9uZW50cy9DaGF0QWlNb2RhbEhlYWRlci9DaGF0QWlNb2RhbEhlYWRlcidcbmltcG9ydCB7IFNuYWNrYmFyIH0gZnJvbSAnLi4vLi4vb3JnYW5pc21zL1NuYWNrQmFyL1NuYWNrYmFyJ1xuaW1wb3J0IHsgUHJvamVjdFN1bW1hcnlDb250ZW50IH0gZnJvbSAnLi4vUHJvamVjdFN1bW1hcnlDb250ZW50J1xuaW1wb3J0IHsgQWJtQWdlbnRNb2RhbCB9IGZyb20gJy4uLy4uL29yZ2FuaXNtcy9BYm1BZ2VudE1vZGFsL0FibUFnZW50TW9kYWwnXG5pbXBvcnQgeyBBYm1Ta2lsbE1vZGFsLCBTS0lMTF9VU0VfQUZURVJfU0FWRV9FVkVOVCB9IGZyb20gJy4uLy4uL29yZ2FuaXNtcy9BYm1Ta2lsbE1vZGFsL0FibVNraWxsTW9kYWwnXG5pbXBvcnQgeyBBYm1Ta2lsbEdlbmVyYXRlTW9kYWwgfSBmcm9tICcuLi8uLi9vcmdhbmlzbXMvQWJtU2tpbGxHZW5lcmF0ZU1vZGFsL0FibVNraWxsR2VuZXJhdGVNb2RhbCdcbmltcG9ydCB7IFNFQ1RJT05TIH0gZnJvbSAnLi4vLi4vLi4vY29uc3RhbnRzL2NvbmZpZydcbmltcG9ydCB7IFNDQ0FJTUNvbnRlbnQsIFNDQ0FJTUNvbnRlbnRXcmFwcGVyLCBTQ0NBSU1NaW5pbWl6ZWRIaWRlLCBTQ0NBSU1XcmFwcGVyIH0gZnJvbSAnLi9DaGF0QUlNb2RhbC5zdHlsZXMnXG5pbXBvcnQgeyBNYWlhTWluaW1pemVkUGlsbCB9IGZyb20gJy4vY29tcG9uZW50cy9NYWlhTWluaW1pemVkUGlsbCdcbmltcG9ydCB7XG4gIGdldE1haWFGbG9hdGluZ1BhbmVsV2lkdGhQeCxcbiAgTWFpYUNoYXRNb2RhbExheW91dE1vZGUsXG4gIHJlc29sdmVJbml0aWFsTWFpYUNoYXRMYXlvdXRNb2RlLFxuICBzZXRTdG9yZWRNYWlhQ2hhdExheW91dE1vZGUsXG59IGZyb20gJy4vbGF5b3V0J1xuaW1wb3J0IHsgRmxvYXRpbmdQYW5lbE1vdGlvbiwgdXNlRmxvYXRpbmdQYW5lbERyYWdUaWx0IH0gZnJvbSAnLi9mbG9hdGluZ1BhbmVsTW90aW9uJ1xuaW1wb3J0IHsgQ2hhdEFpTW9kYWxGb290ZXIgfSBmcm9tICcuL2NvbXBvbmVudHMvQ2hhdEFpTW9kYWxGb290ZXInXG5pbXBvcnQgeyB2YWxpZGF0ZUlzTWFpYSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3V0aWxzL3ZhbGlkYXRlSXNNYWlhJ1xuaW1wb3J0IHsgaXNNYXJrZXRwbGFjZUdsb2JhbENsb25lQWdlbnQgfSBmcm9tICcuLi8uLi8uLi91dGlscy9hZ2VudERpc3BsYXlOYW1lJ1xuaW1wb3J0IHsgQWdlbnQgfSBmcm9tICcuLi8uLi8uLi90eXBlcy9hZ2VudCdcbmltcG9ydCB7IFNraWxsIH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMvc2tpbGwnXG5pbXBvcnQgeyBQcm9qZWN0IH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMvUHJvamVjdCdcbmltcG9ydCB7IENsaWVudCB9IGZyb20gJy4uLy4uLy4uL3R5cGVzL0NsaWVudCdcbmltcG9ydCB7IFRhc2sgfSBmcm9tICcuLi8uLi8uLi90eXBlcy9UYXNrJ1xuaW1wb3J0IHsgdXNlRmFxc1N0b3JlIH0gZnJvbSAnLi4vLi4vLi4vc3RvcmUvdXNlRmFxc1N0b3JlJ1xuaW1wb3J0IHsgZ2V0Q2hhdHNTdG9yZVN0YXRlLCB1c2VDaGF0c1N0b3JlIH0gZnJvbSAnLi4vLi4vLi4vc3RvcmUvdXNlQ2hhdHNTdG9yZSdcbmltcG9ydCB0eXBlIHsgQ2hhdExpc3RJdGVtIH0gZnJvbSAnLi4vLi4vLi4vc3RvcmUvY2hhdHNTdG9yZS50eXBlcydcbmltcG9ydCB7IHJlYWRMYXN0QWN0aXZlQ2hhdElkLCB3cml0ZUxhc3RBY3RpdmVDaGF0SWQgfSBmcm9tICcuLi8uLi8uLi9zdG9yZS9tYWlhTGFzdENoYXRQZXJzaXN0ZW5jZSdcbmltcG9ydCB7XG4gIGNsZWFyTWFpYVBhbmVsU2Vzc2lvbixcbiAgaXNWYWxpZE1haWFQYW5lbE9wdGlvbixcbiAgcGF0Y2hNYWlhUGFuZWxTZXNzaW9uLFxuICByZWFkTWFpYVBhbmVsU2Vzc2lvbixcbiAgdHlwZSBNYWlhUGFuZWxTZXNzaW9uU25hcHNob3QsXG4gIHdyaXRlTWFpYVBhbmVsU2Vzc2lvbixcbn0gZnJvbSAnLi4vLi4vLi4vc3RvcmUvbWFpYVBhbmVsU2Vzc2lvblBlcnNpc3RlbmNlJ1xuaW1wb3J0IHsgdXNlU2Vzc2lvbnNTdG9yZSB9IGZyb20gJy4uLy4uLy4uL3N0b3JlL3Nlc3Npb25zL3VzZVNlc3Npb25zU3RvcmUnXG5pbXBvcnQgeyBpc0FjdGl2ZVNlc3Npb25TdGF0dXMgfSBmcm9tICcuLi8uLi8uLi9zdG9yZS9zZXNzaW9ucy9zZXNzaW9ucy50eXBlcydcbmltcG9ydCB7IGZldGNoTWFpYSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL21haWEvY2xpZW50J1xuaW1wb3J0IHsgZmV0Y2hBZ2VudERldGFpbCB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL21haWEvQWdlbnRzL2ZldGNoQWdlbnREZXRhaWwnXG5pbXBvcnQgeyBtYXBDT1JMYW5nIH0gZnJvbSAnLi4vLi4vLi4vbGFuZy91dGlscydcbmltcG9ydCB7IEVWRU5UUywgdXNlRXZlbnQgfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VFdmVudCdcbmltcG9ydCB7IE1BSUFfT1BFTl9GUk9NX0hPU1RfRVZFTlQsIHR5cGUgTWFpYUhvc3RPcGVuRGV0YWlsIH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvbWFpYUhvc3RPcGVuJ1xuXG4vKiogTWV0YWRhdGEgZGUgbGEgc2Vzc2lvbiBhYmllcnRhIChlbWl0aWRhIHBvciB1c2VDaGF0TWVzc2FnZXMgYWwgY2FyZ2FyIHVuYSBjb252ZXJzYWNpw7NuKS4gKi9cbnR5cGUgU2Vzc2lvbk1ldGEgPSB7XG4gIGNoYXRJZDogc3RyaW5nXG4gIGFnZW50VHlwZT86IHN0cmluZ1xuICBhZ2VudEVudGl0eT86IHN0cmluZ1xuICBwcm9qZWN0SWQ/OiBudW1iZXJcbiAgcHJvamVjdE5hbWU/OiBzdHJpbmdcbiAgY2xpZW50SWQ/OiBudW1iZXJcbiAgY2xpZW50TmFtZT86IHN0cmluZ1xuICB0YXNrSWQ/OiBudW1iZXJcbiAgdGFza05hbWU/OiBzdHJpbmdcbn1cblxuY29uc3QgTEVHQUNZX0NPTlRFWFRfRU5USVRJRVMgPSBbJ3Byb2plY3QnLCAndGFzaycsICdjbGllbnQnXSBhcyBjb25zdFxudHlwZSBMZWdhY3lDb250ZXh0RW50aXR5ID0gKHR5cGVvZiBMRUdBQ1lfQ09OVEVYVF9FTlRJVElFUylbbnVtYmVyXVxuXG50eXBlIEFpQ2hhdEJhY2tEZXN0aW5hdGlvbiA9ICdnbG9iYWxfY29udGV4dF9ob21lJyB8ICd0YXNrX2hvbWUnIHwgJ3BsYW5uZXJfaG9tZScgfCAncHJvamVjdF9ob21lJyB8ICdjbGllbnRfaG9tZSdcblxuLyoqIEhvbWUgZ2xvYmFsIGRlbCBvcmNoZXN0cmF0b3IgKHNvbG8gaGVhZGVyKS4gUGxhbm5lciBlcyBob21lIGRlIEZVQXMsIG5vIGRlIGNvbnRleHRvcy4gKi9cbmNvbnN0IGlzR2xvYmFsTWFpYVNlY3Rpb24gPSAoc2VjdGlvbjogU2VjdGlvbik6IGJvb2xlYW4gPT4gc2VjdGlvbiA9PT0gJ2hlYWRlcidcblxuY29uc3QgcmVzb2x2ZUFpQ2hhdEJhY2tEZXN0aW5hdGlvbiA9IChcbiAgc2VjdGlvbjogU2VjdGlvbixcbiAgYWdlbnRUeXBlOiBBZ2VudFsndHlwZSddIHwgdW5kZWZpbmVkLFxuICBjdXJyZW50T3B0aW9uOiBzdHJpbmcsXG4gIGhvbWVPcHRpb246IHN0cmluZ1xuKTogQWlDaGF0QmFja0Rlc3RpbmF0aW9uID0+IHtcbiAgaWYgKGlzR2xvYmFsTWFpYVNlY3Rpb24oc2VjdGlvbikgJiYgYWdlbnRUeXBlID09PSAnb3JjaGVzdHJhdG9yJyAmJiBjdXJyZW50T3B0aW9uID09PSBob21lT3B0aW9uKSB7XG4gICAgcmV0dXJuICdnbG9iYWxfY29udGV4dF9ob21lJ1xuICB9XG4gIGlmIChzZWN0aW9uID09PSAndGFzaycpIHJldHVybiAndGFza19ob21lJ1xuICBpZiAoc2VjdGlvbiA9PT0gJ3BsYW5uZXInKSByZXR1cm4gJ3BsYW5uZXJfaG9tZSdcbiAgaWYgKHNlY3Rpb24gPT09ICdwcm9qZWN0JykgcmV0dXJuICdwcm9qZWN0X2hvbWUnXG4gIGlmIChzZWN0aW9uID09PSAnY2xpZW50JykgcmV0dXJuICdjbGllbnRfaG9tZSdcbiAgcmV0dXJuICdnbG9iYWxfY29udGV4dF9ob21lJ1xufVxuXG5leHBvcnQgY29uc3QgSURfTU9EQUxfQ0hBVF9BR0VOVCA9ICdtb2RhbHMtcG9ydGFsLW1haWEtY2hhdC1hZ2VudCdcblxuY29uc3QgdmFsaWRhdGVBY2Nlc3NCeUZlYXR1cmUgPSAoc2VjdGlvbjogU2VjdGlvbiB8IG51bGwgfCB1bmRlZmluZWQsIHVzZXI6IFJldHVyblR5cGU8dHlwZW9mIHVzZVVzZXI+KSA9PiB7XG4gIGlmICghc2VjdGlvbiB8fCAhY2FuQWNjZXNzVG9DaGF0QUkodXNlcikpIHtcbiAgICByZXR1cm4gZmFsc2VcbiAgfVxuXG4gIC8vIFBsYW5uZXIgeSB0YXNrIGFicmVuIHNpZW1wcmUgZWwgY2hhdCAoaG9tZSBkZSBGVUFzKSwgbnVuY2EgcmVzdW1lbiBkZSBwcm95ZWN0b3MuXG4gIGlmIChzZWN0aW9uID09PSAncGxhbm5lcicgfHwgc2VjdGlvbiA9PT0gJ3Rhc2snKSB7XG4gICAgcmV0dXJuIHRydWVcbiAgfVxuXG4gIGlmIChzZWN0aW9uID09PSAnaGVhZGVyJykge1xuICAgIHJldHVybiBCb29sZWFuKHdpbmRvdy5NQUlBX0NIQVRfQUlfRkVBVFVSRV9BQ0NFU1MgfHwgd2luZG93Lk1BSUFfQ0hBVF9BSV9GRUFUVVJFX0FDQ0VTU19NVUxUSV9BR0VOVFMpXG4gIH1cblxuICByZXR1cm4gQm9vbGVhbih3aW5kb3cuTUFJQV9DSEFUX0FJX0ZFQVRVUkVfQUNDRVNTKVxufVxuXG5leHBvcnQgY29uc3QgQ2hhdEFJTW9kYWwgPSAoKSA9PiB7XG4gIGNvbnN0IHVzZXIgPSB1c2VVc2VyKClcbiAgY29uc3QgeyBpMThuIH0gPSB1c2VUcmFuc2xhdGlvbihbU0VDVElPTlMuYWJtQWdlbnRdKVxuICBjb25zdCBhbXBsaXR1ZEV2ZW50ID0gdXNlRXZlbnQoKVxuXG4gIGNvbnN0IHNhdmVkU2Vzc2lvbk9uTW91bnRSZWYgPSB1c2VSZWY8TWFpYVBhbmVsU2Vzc2lvblNuYXBzaG90IHwgbnVsbD4ocmVhZE1haWFQYW5lbFNlc3Npb24odXNlci5pZCkpXG4gIGNvbnN0IHNob3VsZFJlc3RvcmVFeHBhbmRlZCA9IHNhdmVkU2Vzc2lvbk9uTW91bnRSZWYuY3VycmVudD8uaXNFeHBhbmRlZCA/PyBmYWxzZVxuICBjb25zdCBwZW5kaW5nU2Vzc2lvblJlc3RvcmVSZWYgPSB1c2VSZWY8TWFpYVBhbmVsU2Vzc2lvblNuYXBzaG90IHwgbnVsbD4oXG4gICAgc2hvdWxkUmVzdG9yZUV4cGFuZGVkID8gc2F2ZWRTZXNzaW9uT25Nb3VudFJlZi5jdXJyZW50IDogbnVsbFxuICApXG4gIGNvbnN0IHNlc3Npb25SZXN0b3JlU3RhcnRlZFJlZiA9IHVzZVJlZihmYWxzZSlcbiAgY29uc3QgW2lzUmVzdG9yaW5nU2Vzc2lvbiwgc2V0SXNSZXN0b3JpbmdTZXNzaW9uXSA9IHVzZVN0YXRlKCgpID0+IHBlbmRpbmdTZXNzaW9uUmVzdG9yZVJlZi5jdXJyZW50ICE9IG51bGwpXG4gIGNvbnN0IHNpZGViYXJPcGVuUmVmID0gdXNlUmVmKHNhdmVkU2Vzc2lvbk9uTW91bnRSZWYuY3VycmVudD8uc2lkZWJhck9wZW4gPz8gZmFsc2UpXG5cbiAgLy8gVHJhcyBuYXZlZ2FyIGVuIGVsIGhvc3QgKGZ1bGwgcGFnZSByZWxvYWQpLCByZXN0YXVyYW1vcyBlbCBwYW5lbCBzaSBlc3RhYmEgYWJpZXJ0by5cbiAgY29uc3QgW2lzTWluaW1pemVkLCBzZXRJc01pbmltaXplZF0gPSB1c2VTdGF0ZSgoKSA9PiAhc2hvdWxkUmVzdG9yZUV4cGFuZGVkKVxuICBjb25zdCBzZXRDaGF0Vmlld1Zpc2libGUgPSB1c2VDaGF0c1N0b3JlKHN0YXRlID0+IHN0YXRlLnNldENoYXRWaWV3VmlzaWJsZSlcbiAgY29uc3QgdW5yZWFkQ291bnQgPSB1c2VDaGF0c1N0b3JlKHN0YXRlID0+IHN0YXRlLnVucmVhZENvdW50KVxuICBjb25zdCBhY3RpdmVDaGF0SWQgPSB1c2VDaGF0c1N0b3JlKHN0YXRlID0+IHN0YXRlLmFjdGl2ZUNoYXRJZClcbiAgLy8gTG9zIFwiLi4uXCIgZGVsIHBpbGwgc2FsZW4gZGVsIG1vdG9yLCBubyBkZSBpc1N0cmVhbWluZy9pc1dyaXRpbmc6IGVzb3MgcmVmbGVqYW5cbiAgLy8gbGEgc2VzacOzbiBhY3RpdmEgeSBxdWVkYW4gc3RhbGUgY3VhbmRvIHVuYSByZXNwdWVzdGEgdGVybWluYSBlbiBiYWNrZ3JvdW5kLlxuICBjb25zdCBoYXNBY3RpdmVTdHJlYW0gPSB1c2VTZXNzaW9uc1N0b3JlKHN0YXRlID0+XG4gICAgT2JqZWN0LnZhbHVlcyhzdGF0ZS5tZXRhKS5zb21lKG1ldGEgPT4gaXNBY3RpdmVTZXNzaW9uU3RhdHVzKG1ldGEuc3RhdHVzKSlcbiAgKVxuXG4gIC8qKiBnb1RvQ2hhdCAvIGhhbmRsZUdvSG9tZSBzZSBkZWZpbmVuIG3DoXMgYWJham87IGxvcyByZWZzIGV2aXRhbiBkZXBlbmRlciBkZWwgb3JkZW4gZGUgZGVjbGFyYWNpw7NuLiAqL1xuICBjb25zdCBnb1RvQ2hhdFJlZiA9IHVzZVJlZjwoKGNoYXQ6IENoYXRMaXN0SXRlbSkgPT4gdm9pZCkgfCBudWxsPihudWxsKVxuICBjb25zdCBnb0hvbWVSZWYgPSB1c2VSZWY8KCgpID0+IHZvaWQpIHwgbnVsbD4obnVsbClcblxuICAvLyBNb250YSBjZXJyYWRhIHNhbHZvIHJlc3RhdXJhY2nDs24gZGUgc2VzacOzbjogc2kgZWwgcGFuZWwgbm8gZXN0w6EgdmlzaWJsZSwgbGFzIHJlc3B1ZXN0YXNcbiAgLy8gbnVldmFzIHF1ZWRhbiBjb21vIG5vIGxlw61kYXMuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFwZW5kaW5nU2Vzc2lvblJlc3RvcmVSZWYuY3VycmVudCkge1xuICAgICAgc2V0Q2hhdFZpZXdWaXNpYmxlKGZhbHNlKVxuICAgIH1cbiAgfSwgW3NldENoYXRWaWV3VmlzaWJsZV0pXG5cbiAgLy8gUGVyc2lzdGltb3MgbGEgY29udmVyc2FjacOzbiBhYmllcnRhIHBhcmEgcG9kZXIgdm9sdmVyIGEgZWxsYSBkZXNkZSBlbCBwaWxsIGRlc3B1w6lzXG4gIC8vIGRlIG5hdmVnYXIgbyByZWZyZXNjYXIuIEVsIHRha2VvdmVyIGRlc2RlIHVuIGhvc3QgbGEgbGltcGlhICh2YSBhbCBIb21lKS5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoYWN0aXZlQ2hhdElkKSB7XG4gICAgICB3cml0ZUxhc3RBY3RpdmVDaGF0SWQodXNlci5pZCwgYWN0aXZlQ2hhdElkKVxuICAgIH1cbiAgfSwgW2FjdGl2ZUNoYXRJZCwgdXNlci5pZF0pXG5cbiAgY29uc3QgaGFuZGxlTWluaW1pemUgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgYW1wbGl0dWRFdmVudChFVkVOVFMuYWlDaGF0TWluaW1pemUpXG4gICAgc2V0SXNNaW5pbWl6ZWQodHJ1ZSlcbiAgICBzZXRDaGF0Vmlld1Zpc2libGUoZmFsc2UpXG4gICAgd3JpdGVNYWlhUGFuZWxTZXNzaW9uKHVzZXIuaWQsIHsgaXNFeHBhbmRlZDogZmFsc2UgfSlcbiAgfSwgW2FtcGxpdHVkRXZlbnQsIHNldENoYXRWaWV3VmlzaWJsZSwgdXNlci5pZF0pXG5cbiAgY29uc3QgZm9jdXNDaGF0SW5wdXQgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgd2luZG93LnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgZG9jdW1lbnQuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoJ21haWEtaW5wdXQtcmVmb2N1cycpKVxuICAgIH0sIDEwMClcbiAgfSwgW10pXG5cbiAgY29uc3QgW3VzZXJJbml0aWFsTWVzc2FnZSwgc2V0VXNlckluaXRpYWxNZXNzYWdlXSA9IHVzZVN0YXRlPHtcbiAgICBtZXNzYWdlOiBzdHJpbmdcbiAgICBhdHRhY2htZW50czogQXR0YWNobWVudEZpbGVbXVxuICAgIGZhcUlkPzogc3RyaW5nXG4gICAgYWdlbnRTdWdnZXN0aW9uSWQ/OiBzdHJpbmdcbiAgICBtZW50aW9ucz86IENvbnRleHRNZW50aW9uW11cbiAgICBmdWFJZD86IHN0cmluZ1xuICAgIHNjSWQ/OiBzdHJpbmdcbiAgICBjb250ZXh0RGF0YT86IFJlY29yZDxzdHJpbmcsIHVua25vd24+XG4gIH0+KHtcbiAgICBtZXNzYWdlOiAnJyxcbiAgICBhdHRhY2htZW50czogW10sXG4gIH0pXG4gIGNvbnN0IFtpbml0aWFsQ2hhdElkLCBzZXRJbml0aWFsQ2hhdElkXSA9IHVzZVN0YXRlPHN0cmluZyB8IG51bGw+KG51bGwpXG4gIGNvbnN0IFtuZXdDaGF0S2V5LCBzZXROZXdDaGF0S2V5XSA9IHVzZVN0YXRlKDApXG4gIGNvbnN0IFtzZXNzaW9uTWV0YSwgc2V0U2Vzc2lvbk1ldGFdID0gdXNlU3RhdGU8U2Vzc2lvbk1ldGEgfCBudWxsPihudWxsKVxuICBjb25zdCBbc2VuZE1lc3NhZ2VGdW5jdGlvbiwgc2V0U2VuZE1lc3NhZ2VGdW5jdGlvbl0gPSB1c2VTdGF0ZTxcbiAgICB8ICgoXG4gICAgICAgIG1lc3NhZ2U6IHN0cmluZyxcbiAgICAgICAgYXR0YWNobWVudHM/OiBBdHRhY2htZW50RmlsZVtdLFxuICAgICAgICBmYXFJZD86IHN0cmluZyxcbiAgICAgICAgYWdlbnRTdWdnZXN0aW9uSWQ/OiBzdHJpbmcsXG4gICAgICAgIG1lbnRpb25zPzogQ29udGV4dE1lbnRpb25bXSxcbiAgICAgICAgZnVhSWQ/OiBzdHJpbmcsXG4gICAgICAgIHNjSWQ/OiBzdHJpbmdcbiAgICAgICkgPT4gdm9pZClcbiAgICB8IG51bGxcbiAgPihudWxsKVxuICBjb25zdCBbc3RvcEdlbmVyYXRpb25GdW5jdGlvbiwgc2V0U3RvcEdlbmVyYXRpb25GdW5jdGlvbl0gPSB1c2VTdGF0ZTwoKCkgPT4gdm9pZCkgfCBudWxsPihudWxsKVxuICBjb25zdCBbaXNTdHJlYW1pbmcsIHNldElzU3RyZWFtaW5nXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBbaXNXcml0aW5nLCBzZXRJc1dyaXRpbmddID0gdXNlU3RhdGUoZmFsc2UpXG5cbiAgY29uc3QgW3JlZmV0Y2hDaGF0cywgc2V0UmVmZXRjaENoYXRzXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBbY3VycmVudE9wdGlvbiwgc2V0Q3VycmVudE9wdGlvbl0gPSB1c2VTdGF0ZTxvcHRpb25zPigoKSA9PiB7XG4gICAgY29uc3Qgc2F2ZWQgPSBzYXZlZFNlc3Npb25Pbk1vdW50UmVmLmN1cnJlbnRcbiAgICBpZiAoc2F2ZWQ/LmFnZW50c05hdkFjdGl2ZSA9PT0gJ215QWdlbnRzJykgcmV0dXJuIG9wdGlvbnMubXlBZ2VudHNcbiAgICBpZiAoc2F2ZWQ/LmFnZW50c05hdkFjdGl2ZSA9PT0gJ215U2tpbGxzJykgcmV0dXJuIG9wdGlvbnMubXlTa2lsbHNcbiAgICBjb25zdCBzYXZlZE9wdGlvbiA9IHNhdmVkPy5jdXJyZW50T3B0aW9uXG4gICAgcmV0dXJuIHNhdmVkT3B0aW9uICYmIGlzVmFsaWRNYWlhUGFuZWxPcHRpb24oc2F2ZWRPcHRpb24pID8gKHNhdmVkT3B0aW9uIGFzIG9wdGlvbnMpIDogb3B0aW9ucy5ob21lXG4gIH0pXG4gIGNvbnN0IFtoYXNFcnJvciwgc2V0SGFzRXJyb3JdID0gdXNlU3RhdGUoZmFsc2UpXG4gIC8vIEVuIHByb2plY3QvY2xpZW50L3Rhc2s6IGVsIHVzdWFyaW8gcmVpbmljacOzIGVsIGNvbnRleHRvIGRlbCBvcmNoZXN0cmF0b3IgKGxvIGxpbXBpw7MgeSBwYXPDsyBwb3JcbiAgLy8gZWwgc2VsZWN0b3IgZGUgY29udGV4dG9zIHJlY2llbnRlcykuIEhhYmlsaXRhIGVsIGJvdMOzbiBcInZvbHZlclwiIGVuIGVsIGhvbWUgcGFzbyAyIGRlIGVzYXNcbiAgLy8gc2VjY2lvbmVzLiBTZSByZXNldGVhIGFsIGNlcnJhci9yZWFicmlyIGVsIG1vZGFsIChlbCBjb21wb25lbnRlIHNlIGRlc21vbnRhKS5cbiAgY29uc3QgW2RpZFJlc2V0Q29udGV4dEluU2VjdGlvbiwgc2V0RGlkUmVzZXRDb250ZXh0SW5TZWN0aW9uXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBwcmV2SGFzUGlubmVkQ29udGV4dFJlZiA9IHVzZVJlZihmYWxzZSlcbiAgY29uc3QgaGFuZGxlcnMgPSB1c2VNZW1vKCgpID0+IGJ1aWxkSGFuZGxlcnMoc2V0Q3VycmVudE9wdGlvbiwgc2V0SGFzRXJyb3IpLCBbXSlcbiAgY29uc3QgW3NpZGViYXJIYXNFcnJvciwgc2V0U2lkZWJhckhhc0Vycm9yXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCByZXNldFNlbGVjdGVkQ2hhdFJlZiA9IHVzZVJlZjwoKCkgPT4gdm9pZCkgfCBudWxsPihudWxsKVxuICBjb25zdCBsYW5nID0gaTE4bi5sYW5ndWFnZSA9PT0gJ2JyJyA/ICdwdC1icicgOiBpMThuLmxhbmd1YWdlXG5cbiAgbW9tZW50LmxvY2FsZShsYW5nKVxuXG4gIGNvbnN0IHtcbiAgICBzZWxlY3RBZ2VudCxcbiAgICBjbGVhckFnZW50LFxuICAgIHNlY3Rpb24sXG4gICAgYWdlbnQsXG4gICAgcHJvamVjdCxcbiAgICBjbGllbnQsXG4gICAgdGFzayxcbiAgICBjaGlwc1Byb2plY3QsXG4gICAgdG9nZ2xlV2ViU2VhcmNoLFxuICAgIGlzV2ViU2VhcmNoQWN0aXZlLFxuICAgIHNldENoaXBzUHJvamVjdCxcbiAgICBzZXRDbGllbnQsXG4gICAgc2V0UHJvamVjdCxcbiAgICBiYW5uZXJFbnRyeUZhcSxcbiAgICBzZXRUYXNrLFxuICB9ID0gdXNlR2xvYmFsQ29udGV4dCgpXG5cbiAgLy8gWi1pbmRleCBwYXJhIHRvb2x0aXBzIGVuIHNlY3Rpb24gJ3Rhc2snIChtb2RhbCBmbG90YW50ZSBlbGV2YWRvKVxuICBjb25zdCB0b29sdGlwWkluZGV4ID0gdXNlTWFpYVRhc2tQYW5lbFpJbmRleCgxNTAwLCAnb3ZlcmxheScpXG5cbiAgY29uc3Qge1xuICAgIGFnZW50cyxcbiAgICBsb2FkaW5nLFxuICAgIGxvYWRpbmdNb3JlLFxuICAgIGVycm9yOiBhZ2VudEVycm9yLFxuICAgIGhhbmRsZUdldEFnZW50cyxcbiAgICBsb2FkTW9yZUFnZW50cyxcbiAgICBzZWFyY2hDdXN0b21BZ2VudHMsXG4gICAgc2VhcmNoTG9hZGluZyxcbiAgICBhZGRBZ2VudCxcbiAgICByZW1vdmVBZ2VudCxcbiAgICB1cGRhdGVBZ2VudCxcbiAgICB1cGRhdGVBZ2VudEZhdm9yaXRlLFxuICAgIHNlbGVjdEZpcnN0QWdlbnQsXG4gICAgc29ydEFnZW50c0xpc3QsXG4gIH0gPSB1c2VHZXRBZ2VudHMoeyBzZWxlY3RBZ2VudCwgc2VjdGlvbiwgYWdlbnQsIGhhbmRsZUdvSG9tZTogaGFuZGxlcnMuaG9tZSB9KVxuXG4gIGNvbnN0IGFnZW50c0RhdGFSZWYgPSB1c2VSZWYoYWdlbnRzLmRhdGEpXG4gIGFnZW50c0RhdGFSZWYuY3VycmVudCA9IGFnZW50cy5kYXRhXG5cbiAgY29uc3Qge1xuICAgIG15U2tpbGxzLFxuICAgIHNoYXJlZFNraWxscyxcbiAgICBsb2FkaW5nOiBsb2FkaW5nU2tpbGxzLFxuICAgIGhhbmRsZUdldFNraWxscyxcbiAgICBhZGRTa2lsbCxcbiAgICB1cGRhdGVTa2lsbEluTGlzdCxcbiAgICByZW1vdmVTa2lsbCxcbiAgfSA9IHVzZUdldFNraWxscygpXG5cbiAgY29uc3QgaXNNQUlBID0gdmFsaWRhdGVJc01haWEoYWdlbnQgYXMgQWdlbnQpXG5cbiAgY29uc3QgdXNlckhhc1Blcm1pc3Npb25zID1cbiAgICAodXNlcj8ucGVybWlzc2lvbnM/LmFpX2FnZW50cz8uY3JlYXRlIHx8XG4gICAgICB1c2VyPy5wZXJtaXNzaW9ucz8uYWlfYWdlbnRzPy5lZGl0IHx8XG4gICAgICB1c2VyPy5wZXJtaXNzaW9ucz8uYWlfYWdlbnRzPy5kZWxldGUpICYmXG4gICAgd2luZG93Lk1BSUFfQ0hBVF9BSV9GRUFUVVJFX0FDQ0VTU19NVUxUSV9BR0VOVFNcblxuICBjb25zdCB1c2VySGFzU2tpbGxzQWNjZXNzID0gY2FuQWNjZXNzVG9Ta2lsbHModXNlcilcblxuICBjb25zdCBjb21wdXRlZEN1cnJlbnRPcHRpb24gPSB1c2VNZW1vKCgpID0+IHtcbiAgICBjb25zdCBpc0dsb2JhbFNwZWNpYWxpc3QgPSBpc01BSUEgJiYgYWdlbnQ/LmVudGl0eSA9PT0gJ2dsb2JhbCdcbiAgICBjb25zdCBpc1Byb2plY3RTcGVjaWFsaXN0ID0gaXNNQUlBICYmIChhZ2VudD8uZW50aXR5ID09PSAncHJvamVjdCcgfHwgYWdlbnQ/LmVudGl0eSA9PSBudWxsKVxuICAgIGNvbnN0IGlzQ2xpZW50U3BlY2lhbGlzdCA9IGlzTUFJQSAmJiBhZ2VudD8uZW50aXR5ID09PSAnY2xpZW50J1xuICAgIGNvbnN0IGlzTWFpYWtlciA9IGlzTWFya2V0cGxhY2VHbG9iYWxDbG9uZUFnZW50KGFnZW50KVxuXG4gICAgaWYgKGN1cnJlbnRPcHRpb24gPT09IG9wdGlvbnMubXlBZ2VudHMgJiYgd2luZG93Lk1BSUFfQ0hBVF9BSV9GRUFUVVJFX0FDQ0VTU19NVUxUSV9BR0VOVFMpIHtcbiAgICAgIHJldHVybiBvcHRpb25zLm15QWdlbnRzXG4gICAgfVxuXG4gICAgaWYgKGN1cnJlbnRPcHRpb24gPT09IG9wdGlvbnMubXlTa2lsbHMgJiYgY2FuQWNjZXNzVG9Ta2lsbHModXNlcikpIHtcbiAgICAgIHJldHVybiBvcHRpb25zLm15U2tpbGxzXG4gICAgfVxuXG4gICAgLy8gRWwgb3JjaGVzdHJhdG9yIChNQUlBKSBtdWVzdHJhIHN1IGhvbWUgY29uIEZBUXMvYWNjaW9uZXMgZnJlY3VlbnRlczsgZWwgcmVzdG8gZGVcbiAgICAvLyBsb3MgZ2xvYmFsIHNwZWNpYWxpc3RzIChjbG9uZXMgZ2xvYmFsZXMgbm8tbWFpYWtlcikgc2lndWVuIHllbmRvIGRpcmVjdG8gYWwgY2hhdC5cbiAgICBpZiAoaXNHbG9iYWxTcGVjaWFsaXN0ICYmICFpc01haWFrZXIgJiYgYWdlbnQ/LnR5cGUgIT09ICdvcmNoZXN0cmF0b3InICYmIGN1cnJlbnRPcHRpb24gPT09IG9wdGlvbnMuaG9tZSkge1xuICAgICAgcmV0dXJuIG9wdGlvbnMuY2hhdFxuICAgIH1cblxuICAgIGNvbnN0IHNob3VsZFNob3dQcm9qZWN0U2VsZWN0b3IgPSBjdXJyZW50T3B0aW9uICE9PSBvcHRpb25zLmNoYXQgJiYgaXNQcm9qZWN0U3BlY2lhbGlzdCAmJiAhcHJvamVjdFxuICAgIGNvbnN0IHNob3VsZFNob3dDbGllbnRTZWxlY3RvciA9IGN1cnJlbnRPcHRpb24gIT09IG9wdGlvbnMuY2hhdCAmJiBpc0NsaWVudFNwZWNpYWxpc3QgJiYgIWNsaWVudFxuXG4gICAgaWYgKHNob3VsZFNob3dQcm9qZWN0U2VsZWN0b3IpIHtcbiAgICAgIHJldHVybiBvcHRpb25zLnByb2plY3RTZWxlY3RvclxuICAgIH1cbiAgICBpZiAoc2hvdWxkU2hvd0NsaWVudFNlbGVjdG9yKSB7XG4gICAgICByZXR1cm4gb3B0aW9ucy5jbGllbnRTZWxlY3RvclxuICAgIH1cbiAgICByZXR1cm4gY3VycmVudE9wdGlvblxuICB9LCBbY3VycmVudE9wdGlvbiwgcHJvamVjdCwgY2xpZW50LCBpc01BSUEsIGFnZW50Py5lbnRpdHksIGFnZW50Py5uYW1lLCBhZ2VudD8udHlwZSwgdXNlcl0pXG5cbiAgY29uc3QgaXNNYWlha2VyQWdlbnRTZWxlY3RlZCA9IHVzZU1lbW8oKCkgPT4gaXNNYXJrZXRwbGFjZUdsb2JhbENsb25lQWdlbnQoYWdlbnQpLCBbYWdlbnRdKVxuXG4gIGNvbnN0IHNpZGViYXJBZ2VudHNOYXZBY3RpdmUgPSB1c2VNZW1vKCgpOiAnbWFpYWtlcicgfCAnbXlBZ2VudHMnIHwgJ215U2tpbGxzJyB8IG51bGwgPT4ge1xuICAgIGlmIChjb21wdXRlZEN1cnJlbnRPcHRpb24gPT09IG9wdGlvbnMubXlTa2lsbHMpIHJldHVybiAnbXlTa2lsbHMnXG4gICAgaWYgKGNvbXB1dGVkQ3VycmVudE9wdGlvbiA9PT0gb3B0aW9ucy5teUFnZW50cykgcmV0dXJuICdteUFnZW50cydcbiAgICBpZiAoaXNNYWlha2VyQWdlbnRTZWxlY3RlZCkgcmV0dXJuICdtYWlha2VyJ1xuICAgIHJldHVybiBudWxsXG4gIH0sIFtjb21wdXRlZEN1cnJlbnRPcHRpb24sIGlzTWFpYWtlckFnZW50U2VsZWN0ZWRdKVxuXG4gIC8qIFJlYWN0aXZhciBjb24gbGEgZmlsYSDigJxNaXMgYWdlbnRlc+KAnSBlbiBTaWRlYmFyOiBteUFnZW50c0NvdW50IHByb3BcbiAgY29uc3Qgc2lkZWJhck15QWdlbnRzQ291bnQgPSB1c2VNZW1vKCgpID0+IHtcbiAgICByZXR1cm4gYWdlbnRzLmRhdGEuZmlsdGVyKFxuICAgICAgYSA9PiAhKGEudHlwZSA9PT0gJ29yY2hlc3RyYXRvcicgfHwgKGEudHlwZSA9PT0gJ2Nsb25lJyAmJiBhLmVudGl0eSA9PT0gJ2dsb2JhbCcgJiYgLyhtYWlha2VyfG1hcmtldHBsYWNlKS9pLnRlc3QoYS5uYW1lIHx8ICcnKSkpXG4gICAgKVxuICAgICAgLmxlbmd0aFxuICB9LCBbYWdlbnRzLmRhdGFdKVxuICAqL1xuXG4gIGNvbnN0IGFnZW50c0ZldGNoZWRSZWYgPSB1c2VSZWYoZmFsc2UpXG5cbiAgY29uc3Qgc2VsZWN0b3IgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKGAjJHtJRF9NT0RBTF9DSEFUX0FHRU5UfWApXG5cbiAgLy8gVGFzayBwYW5lbCwgcGxhbm5lciB5IGJhbm5lciBkZSBwcm95ZWN0byBhYnJlbiBlbiBmbG90YW50ZSBwb3IgZGVmYXVsdCAobm8gdGFwYXIgZWwgY29udGV4dG8gZGV0csOhcykuXG4gIC8vIEZ1ZXJhIGRlIGVzb3MgY29udGV4dG9zIHNlIHJlc3BldGEgbGEgcHJlZmVyZW5jaWEgZ3VhcmRhZGEgZW4gbG9jYWxTdG9yYWdlLlxuICBjb25zdCBbbGF5b3V0TW9kZSwgc2V0TGF5b3V0TW9kZV0gPSB1c2VTdGF0ZTxNYWlhQ2hhdE1vZGFsTGF5b3V0TW9kZT4oKCkgPT5cbiAgICByZXNvbHZlSW5pdGlhbE1haWFDaGF0TGF5b3V0TW9kZSh7IHNlY3Rpb24sIGJhbm5lckVudHJ5RmFxIH0pXG4gIClcblxuICBjb25zdCBoYW5kbGVMYXlvdXRNb2RlQ2hhbmdlID0gdXNlQ2FsbGJhY2soKG1vZGU6IE1haWFDaGF0TW9kYWxMYXlvdXRNb2RlKSA9PiB7XG4gICAgc2V0U3RvcmVkTWFpYUNoYXRMYXlvdXRNb2RlKG1vZGUpXG4gICAgc2V0TGF5b3V0TW9kZShtb2RlKVxuICB9LCBbXSlcbiAgY29uc3QgZXhwYW5kZWQgPSBsYXlvdXRNb2RlID09PSAnZnVsbHNjcmVlbidcbiAgY29uc3QgaXNGbG9hdGluZyA9IGxheW91dE1vZGUgPT09ICdmbG9hdGluZydcbiAgY29uc3QgY29udGVudFdyYXBwZXJSZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpXG4gIGNvbnN0IFtkcmFnUG9zaXRpb24sIHNldERyYWdQb3NpdGlvbl0gPSB1c2VTdGF0ZTx7IHg6IG51bWJlcjsgeTogbnVtYmVyIH0gfCBudWxsPihcbiAgICAoKSA9PiBzYXZlZFNlc3Npb25Pbk1vdW50UmVmLmN1cnJlbnQ/LmRyYWdQb3NpdGlvbiA/PyBudWxsXG4gIClcbiAgY29uc3QgeyB0aWx0TW90aW9uLCBzdGFydFBvaW50ZXJUcmFja2luZywgc2FtcGxlUG9pbnRlck1vdmUsIGVuZFBvaW50ZXJUcmFja2luZyB9ID1cbiAgICB1c2VGbG9hdGluZ1BhbmVsRHJhZ1RpbHQoaXNGbG9hdGluZylcbiAgY29uc3QgZHJhZ1N0YXRlUmVmID0gdXNlUmVmPHtcbiAgICBwb2ludGVySWQ6IG51bWJlclxuICAgIG9mZnNldFg6IG51bWJlclxuICAgIG9mZnNldFk6IG51bWJlclxuICB9IHwgbnVsbD4obnVsbClcblxuICBjb25zdCBjbGFtcERyYWdQb3NpdGlvbiA9IHVzZUNhbGxiYWNrKCh4OiBudW1iZXIsIHk6IG51bWJlcikgPT4ge1xuICAgIGNvbnN0IGNvbnRlbnRXcmFwcGVyID0gY29udGVudFdyYXBwZXJSZWYuY3VycmVudFxuICAgIGlmICghY29udGVudFdyYXBwZXIpIHtcbiAgICAgIHJldHVybiB7IHgsIHkgfVxuICAgIH1cblxuICAgIGNvbnN0IHsgd2lkdGgsIGhlaWdodCB9ID0gY29udGVudFdyYXBwZXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KClcbiAgICBjb25zdCBvZmZzZXQgPSAxNlxuICAgIGNvbnN0IG1heFggPSBNYXRoLm1heChvZmZzZXQsIHdpbmRvdy5pbm5lcldpZHRoIC0gd2lkdGggLSBvZmZzZXQpXG4gICAgY29uc3QgbWF4WSA9IE1hdGgubWF4KG9mZnNldCwgd2luZG93LmlubmVySGVpZ2h0IC0gaGVpZ2h0IC0gb2Zmc2V0KVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIHg6IE1hdGgubWluKE1hdGgubWF4KHgsIG9mZnNldCksIG1heFgpLFxuICAgICAgeTogTWF0aC5taW4oTWF0aC5tYXgoeSwgb2Zmc2V0KSwgbWF4WSksXG4gICAgfVxuICB9LCBbXSlcblxuICB1c2VMYXlvdXRFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChsYXlvdXRNb2RlICE9PSAnZmxvYXRpbmcnKSB7XG4gICAgICBzZXREcmFnUG9zaXRpb24obnVsbClcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIHNldERyYWdQb3NpdGlvbihwcmV2ID0+IHtcbiAgICAgIGlmIChwcmV2KSB7XG4gICAgICAgIHJldHVybiBjbGFtcERyYWdQb3NpdGlvbihwcmV2LngsIHByZXYueSlcbiAgICAgIH1cbiAgICAgIGNvbnN0IHBhZCA9IDE2XG4gICAgICBjb25zdCB4ID0gd2luZG93LmlubmVyV2lkdGggLSBnZXRNYWlhRmxvYXRpbmdQYW5lbFdpZHRoUHgoKSAtIHBhZFxuICAgICAgcmV0dXJuIGNsYW1wRHJhZ1Bvc2l0aW9uKHgsIHBhZClcbiAgICB9KVxuICB9LCBbbGF5b3V0TW9kZSwgY2xhbXBEcmFnUG9zaXRpb25dKVxuXG4gIGNvbnN0IGhhbmRsZURyYWdFbmQgPSB1c2VDYWxsYmFjayhcbiAgICAoZXZlbnQ6IFJlYWN0UG9pbnRlckV2ZW50PEhUTUxEaXZFbGVtZW50PikgPT4ge1xuICAgICAgZW5kUG9pbnRlclRyYWNraW5nKClcbiAgICAgIGlmIChkcmFnU3RhdGVSZWYuY3VycmVudD8ucG9pbnRlcklkICE9PSBldmVudC5wb2ludGVySWQpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIGRyYWdTdGF0ZVJlZi5jdXJyZW50ID0gbnVsbFxuICAgICAgZG9jdW1lbnQuYm9keS5zdHlsZS51c2VyU2VsZWN0ID0gJydcbiAgICAgIGRvY3VtZW50LmJvZHkuc3R5bGUuY3Vyc29yID0gJydcblxuICAgICAgaWYgKGxheW91dE1vZGUgPT09ICdmbG9hdGluZycgJiYgY29udGVudFdyYXBwZXJSZWYuY3VycmVudCkge1xuICAgICAgICBjb25zdCByZWN0ID0gY29udGVudFdyYXBwZXJSZWYuY3VycmVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKVxuICAgICAgICBwYXRjaE1haWFQYW5lbFNlc3Npb24odXNlci5pZCwgeyBkcmFnUG9zaXRpb246IHsgeDogcmVjdC5sZWZ0LCB5OiByZWN0LnRvcCB9IH0pXG4gICAgICB9XG4gICAgfSxcbiAgICBbZW5kUG9pbnRlclRyYWNraW5nLCBsYXlvdXRNb2RlLCB1c2VyLmlkXVxuICApXG5cbiAgY29uc3QgaGFuZGxlRHJhZ01vdmUgPSB1c2VDYWxsYmFjayhcbiAgICAoZXZlbnQ6IFJlYWN0UG9pbnRlckV2ZW50PEhUTUxEaXZFbGVtZW50PikgPT4ge1xuICAgICAgY29uc3QgZHJhZ1N0YXRlID0gZHJhZ1N0YXRlUmVmLmN1cnJlbnRcbiAgICAgIGlmICghZHJhZ1N0YXRlIHx8IGRyYWdTdGF0ZS5wb2ludGVySWQgIT09IGV2ZW50LnBvaW50ZXJJZCkge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgc2FtcGxlUG9pbnRlck1vdmUoZXZlbnQuY2xpZW50WCwgZXZlbnQuY2xpZW50WSlcblxuICAgICAgY29uc3QgbmV4dFBvc2l0aW9uID0gY2xhbXBEcmFnUG9zaXRpb24oZXZlbnQuY2xpZW50WCAtIGRyYWdTdGF0ZS5vZmZzZXRYLCBldmVudC5jbGllbnRZIC0gZHJhZ1N0YXRlLm9mZnNldFkpXG5cbiAgICAgIHNldERyYWdQb3NpdGlvbihwcmV2ID0+IHtcbiAgICAgICAgaWYgKHByZXYgJiYgcHJldi54ID09PSBuZXh0UG9zaXRpb24ueCAmJiBwcmV2LnkgPT09IG5leHRQb3NpdGlvbi55KSB7XG4gICAgICAgICAgcmV0dXJuIHByZXZcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbmV4dFBvc2l0aW9uXG4gICAgICB9KVxuICAgIH0sXG4gICAgW2NsYW1wRHJhZ1Bvc2l0aW9uLCBzYW1wbGVQb2ludGVyTW92ZV1cbiAgKVxuXG4gIGNvbnN0IHJlc29sdmVkRHJhZ1Bvc2l0aW9uID0gdXNlTWVtbygoKSA9PiB7XG4gICAgaWYgKGxheW91dE1vZGUgIT09ICdmbG9hdGluZycpIHtcbiAgICAgIHJldHVybiBkcmFnUG9zaXRpb25cbiAgICB9XG4gICAgaWYgKGRyYWdQb3NpdGlvbikge1xuICAgICAgcmV0dXJuIGRyYWdQb3NpdGlvblxuICAgIH1cbiAgICBjb25zdCBwYWQgPSAxNlxuICAgIGNvbnN0IHggPSB0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyA/IHdpbmRvdy5pbm5lcldpZHRoIC0gZ2V0TWFpYUZsb2F0aW5nUGFuZWxXaWR0aFB4KCkgLSBwYWQgOiBwYWRcbiAgICByZXR1cm4gY2xhbXBEcmFnUG9zaXRpb24oeCwgcGFkKVxuICB9LCBbbGF5b3V0TW9kZSwgZHJhZ1Bvc2l0aW9uLCBjbGFtcERyYWdQb3NpdGlvbl0pXG5cbiAgY29uc3QgaGFuZGxlRHJhZ1N0YXJ0ID0gdXNlQ2FsbGJhY2soXG4gICAgKGV2ZW50OiBSZWFjdFBvaW50ZXJFdmVudDxIVE1MRGl2RWxlbWVudD4pID0+IHtcbiAgICAgIGlmICghaXNGbG9hdGluZyB8fCBldmVudC5idXR0b24gIT09IDApIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHRhcmdldCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudFxuICAgICAgaWYgKHRhcmdldC5jbG9zZXN0KCdidXR0b24sIGEsIGlucHV0LCB0ZXh0YXJlYSwgc2VsZWN0LCBbcm9sZT1cImJ1dHRvblwiXSwgW2RhdGEtbm8tZHJhZz1cInRydWVcIl0nKSkge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgY29uc3QgY29udGVudFdyYXBwZXIgPSBjb250ZW50V3JhcHBlclJlZi5jdXJyZW50XG4gICAgICBpZiAoIWNvbnRlbnRXcmFwcGVyKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBjb25zdCByZWN0ID0gY29udGVudFdyYXBwZXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KClcbiAgICAgIGNvbnN0IGluaXRpYWxQb3NpdGlvbiA9IHJlc29sdmVkRHJhZ1Bvc2l0aW9uID8/IGNsYW1wRHJhZ1Bvc2l0aW9uKHJlY3QubGVmdCwgcmVjdC50b3ApXG4gICAgICBjb25zdCBwb2ludGVyT2Zmc2V0WCA9IGV2ZW50LmNsaWVudFggLSBpbml0aWFsUG9zaXRpb24ueFxuICAgICAgY29uc3QgcG9pbnRlck9mZnNldFkgPSBldmVudC5jbGllbnRZIC0gaW5pdGlhbFBvc2l0aW9uLnlcblxuICAgICAgc2V0RHJhZ1Bvc2l0aW9uKGluaXRpYWxQb3NpdGlvbilcbiAgICAgIGRyYWdTdGF0ZVJlZi5jdXJyZW50ID0ge1xuICAgICAgICBwb2ludGVySWQ6IGV2ZW50LnBvaW50ZXJJZCxcbiAgICAgICAgb2Zmc2V0WDogcG9pbnRlck9mZnNldFgsXG4gICAgICAgIG9mZnNldFk6IHBvaW50ZXJPZmZzZXRZLFxuICAgICAgfVxuXG4gICAgICBldmVudC5jdXJyZW50VGFyZ2V0LnNldFBvaW50ZXJDYXB0dXJlKGV2ZW50LnBvaW50ZXJJZClcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KClcblxuICAgICAgZG9jdW1lbnQuYm9keS5zdHlsZS51c2VyU2VsZWN0ID0gJ25vbmUnXG4gICAgICBkb2N1bWVudC5ib2R5LnN0eWxlLmN1cnNvciA9ICdncmFiYmluZydcbiAgICAgIGFtcGxpdHVkRXZlbnQoRVZFTlRTLmFpQ2hhdERyYWdnYWJsZSlcbiAgICAgIHN0YXJ0UG9pbnRlclRyYWNraW5nKGV2ZW50LmNsaWVudFgsIGV2ZW50LmNsaWVudFkpXG4gICAgfSxcbiAgICBbY2xhbXBEcmFnUG9zaXRpb24sIGlzRmxvYXRpbmcsIHJlc29sdmVkRHJhZ1Bvc2l0aW9uLCBzdGFydFBvaW50ZXJUcmFja2luZ11cbiAgKVxuXG4gIGNvbnN0IHN0YXJ0Q2hhdCA9IHVzZUNhbGxiYWNrKFxuICAgIChcbiAgICAgIG1lc3NhZ2U/OiBzdHJpbmcsXG4gICAgICBhdHRhY2htZW50cz86IEF0dGFjaG1lbnRGaWxlW10sXG4gICAgICBmYXFJZD86IHN0cmluZyxcbiAgICAgIGFnZW50U3VnZ2VzdGlvbklkPzogc3RyaW5nLFxuICAgICAgbWVudGlvbnM/OiBDb250ZXh0TWVudGlvbltdLFxuICAgICAgZnVhSWQ/OiBzdHJpbmcsXG4gICAgICBzY0lkPzogc3RyaW5nLFxuICAgICAgY29udGV4dERhdGE/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPlxuICAgICkgPT4ge1xuICAgICAgaWYgKHNpZGViYXJIYXNFcnJvcikge1xuICAgICAgICBzZXRTaWRlYmFySGFzRXJyb3IoZmFsc2UpXG4gICAgICB9XG4gICAgICBzZXRJbml0aWFsQ2hhdElkKG51bGwpXG4gICAgICBzZXROZXdDaGF0S2V5KHByZXYgPT4gcHJldiArIDEpXG4gICAgICBzZXRVc2VySW5pdGlhbE1lc3NhZ2Uoe1xuICAgICAgICBtZXNzYWdlOiBtZXNzYWdlIHx8ICcnLFxuICAgICAgICBhdHRhY2htZW50czogYXR0YWNobWVudHMgfHwgW10sXG4gICAgICAgIC4uLihmYXFJZCA/IHsgZmFxSWQgfSA6IHt9KSxcbiAgICAgICAgLi4uKGFnZW50U3VnZ2VzdGlvbklkID8geyBhZ2VudFN1Z2dlc3Rpb25JZCB9IDoge30pLFxuICAgICAgICAuLi4obWVudGlvbnMgJiYgbWVudGlvbnMubGVuZ3RoID4gMCA/IHsgbWVudGlvbnMgfSA6IHt9KSxcbiAgICAgICAgLi4uKGZ1YUlkID8geyBmdWFJZCB9IDoge30pLFxuICAgICAgICAuLi4oc2NJZCA/IHsgc2NJZCB9IDoge30pLFxuICAgICAgICAuLi4oY29udGV4dERhdGEgPyB7IGNvbnRleHREYXRhIH0gOiB7fSksXG4gICAgICB9KVxuICAgICAgaGFuZGxlcnMuY2hhdCgpXG4gICAgfSxcbiAgICBbaGFuZGxlcnMsIHNpZGViYXJIYXNFcnJvcl1cbiAgKVxuXG4gIGNvbnN0IGJhbm5lckZhcUF1dG9TZW50UmVmID0gdXNlUmVmKGZhbHNlKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgZW50aXR5UmVhZHkgPSBzZWN0aW9uID09PSAncHJvamVjdCcgPyBCb29sZWFuKHByb2plY3Q/LmlkKSA6IHNlY3Rpb24gPT09ICdjbGllbnQnID8gQm9vbGVhbihjbGllbnQ/LmlkKSA6IHRydWVcblxuICAgIGlmICghYmFubmVyRW50cnlGYXE/LmZhcVRpdGxlPy50cmltKCkgfHwgYmFubmVyRmFxQXV0b1NlbnRSZWYuY3VycmVudCB8fCBsb2FkaW5nIHx8ICFhZ2VudD8uaWQgfHwgIWVudGl0eVJlYWR5KSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBiYW5uZXJGYXFBdXRvU2VudFJlZi5jdXJyZW50ID0gdHJ1ZVxuICAgIHN0YXJ0Q2hhdChcbiAgICAgIGJhbm5lckVudHJ5RmFxLmZhcVRpdGxlLFxuICAgICAgW10sXG4gICAgICBiYW5uZXJFbnRyeUZhcS5mYXFJZCxcbiAgICAgIHVuZGVmaW5lZCxcbiAgICAgIHVuZGVmaW5lZCxcbiAgICAgIHVuZGVmaW5lZCxcbiAgICAgIHVuZGVmaW5lZCxcbiAgICAgIGJhbm5lckVudHJ5RmFxLmNvbnRleHREYXRhXG4gICAgKVxuICB9LCBbXG4gICAgYmFubmVyRW50cnlGYXE/LmZhcUlkLFxuICAgIGJhbm5lckVudHJ5RmFxPy5mYXFUaXRsZSxcbiAgICBiYW5uZXJFbnRyeUZhcT8uY29udGV4dERhdGEsXG4gICAgbG9hZGluZyxcbiAgICBhZ2VudD8uaWQsXG4gICAgYWdlbnQ/LmVudGl0eSxcbiAgICBwcm9qZWN0Py5pZCxcbiAgICBjbGllbnQ/LmlkLFxuICAgIHNlY3Rpb24sXG4gICAgc3RhcnRDaGF0LFxuICBdKVxuXG4gIGNvbnN0IGdvVG9DaGF0ID0gdXNlQ2FsbGJhY2soXG4gICAgKGNoYXQ6IGFueSkgPT4ge1xuICAgICAgc2V0VXNlckluaXRpYWxNZXNzYWdlKHsgbWVzc2FnZTogJycsIGF0dGFjaG1lbnRzOiBbXSB9KVxuICAgICAgc2V0SW5pdGlhbENoYXRJZChjaGF0LnNlc3Npb25FeHRlcm5hbElkKVxuICAgICAgY29uc3Qgc2VsZWN0ZWRBZ2VudCA9IGFnZW50cy5kYXRhLmZpbmQoYWdlbnRJdGVtID0+IGFnZW50SXRlbS5pZCA9PT0gY2hhdC5hZ2VudElkKVxuICAgICAgaWYgKHNlbGVjdGVkQWdlbnQpIHtcbiAgICAgICAgc2VsZWN0QWdlbnQoc2VsZWN0ZWRBZ2VudClcbiAgICAgIH1cbiAgICAgIC8vIERpc3BhdGNoIGV2ZW50IHRvIGNsZWFyIHRoZSBpbnB1dCB0ZXh0YXJlYVxuICAgICAgZG9jdW1lbnQuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoJ2NoYXQtc2Vzc2lvbi1jaGFuZ2VkJykpXG4gICAgICBoYW5kbGVycy5jaGF0KClcbiAgICB9LFxuICAgIFtoYW5kbGVycywgYWdlbnRzLCBzZWxlY3RBZ2VudF1cbiAgKVxuXG4gIGdvVG9DaGF0UmVmLmN1cnJlbnQgPSBnb1RvQ2hhdFxuXG4gIGNvbnN0IGhhbmRsZVNpZGViYXJPcGVuQ2hhbmdlID0gdXNlQ2FsbGJhY2soXG4gICAgKG9wZW46IGJvb2xlYW4pID0+IHtcbiAgICAgIHNpZGViYXJPcGVuUmVmLmN1cnJlbnQgPSBvcGVuXG4gICAgICBwYXRjaE1haWFQYW5lbFNlc3Npb24odXNlci5pZCwgeyBzaWRlYmFyT3Blbjogb3BlbiB9KVxuICAgIH0sXG4gICAgW3VzZXIuaWRdXG4gIClcblxuICBjb25zdCBzeW5jUGFuZWxTZXNzaW9uID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGlmIChpc01pbmltaXplZCkgcmV0dXJuXG5cbiAgICBwYXRjaE1haWFQYW5lbFNlc3Npb24odXNlci5pZCwge1xuICAgICAgaXNFeHBhbmRlZDogdHJ1ZSxcbiAgICAgIGN1cnJlbnRPcHRpb24sXG4gICAgICBhZ2VudHNOYXZBY3RpdmU6IHNpZGViYXJBZ2VudHNOYXZBY3RpdmUsXG4gICAgICBhY3RpdmVDaGF0SWQsXG4gICAgICBhZ2VudElkOiBhZ2VudD8uaWQgPz8gbnVsbCxcbiAgICAgIHNpZGViYXJPcGVuOiBzaWRlYmFyT3BlblJlZi5jdXJyZW50LFxuICAgICAgZHJhZ1Bvc2l0aW9uOiBsYXlvdXRNb2RlID09PSAnZmxvYXRpbmcnID8gZHJhZ1Bvc2l0aW9uIDogbnVsbCxcbiAgICAgIGhvc3RDb250ZXh0OiB7XG4gICAgICAgIHNlY3Rpb24sXG4gICAgICAgIHByb2plY3QsXG4gICAgICAgIGNsaWVudCxcbiAgICAgICAgdGFzayxcbiAgICAgICAgY2hpcHNQcm9qZWN0LFxuICAgICAgfSxcbiAgICB9KVxuICB9LCBbXG4gICAgYWN0aXZlQ2hhdElkLFxuICAgIGFnZW50Py5pZCxcbiAgICBjaGlwc1Byb2plY3QsXG4gICAgY2xpZW50LFxuICAgIGN1cnJlbnRPcHRpb24sXG4gICAgZHJhZ1Bvc2l0aW9uLFxuICAgIGlzTWluaW1pemVkLFxuICAgIGxheW91dE1vZGUsXG4gICAgcHJvamVjdCxcbiAgICBzZWN0aW9uLFxuICAgIHNpZGViYXJBZ2VudHNOYXZBY3RpdmUsXG4gICAgdGFzayxcbiAgICB1c2VyLmlkLFxuICBdKVxuXG4gIC8qKiBMb3MgYWdlbnRlcyBzZSBwaWRlbiByZWNpw6luIGFsIGFicmlyIGVsIHBhbmVsOiBlbiBtb2RvIHBpbGwgbm8gaGFjZSBmYWx0YSBuaW5ndW5hIHJlcXVlc3QuICovXG4gIGNvbnN0IGVuc3VyZUFnZW50c0xvYWRlZCA9IHVzZUNhbGxiYWNrKGFzeW5jICgpID0+IHtcbiAgICBpZiAoYWdlbnRzRmV0Y2hlZFJlZi5jdXJyZW50KSByZXR1cm5cbiAgICBhZ2VudHNGZXRjaGVkUmVmLmN1cnJlbnQgPSB0cnVlXG4gICAgYXdhaXQgaGFuZGxlR2V0QWdlbnRzKClcbiAgfSwgW2hhbmRsZUdldEFnZW50c10pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoaXNNaW5pbWl6ZWQpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWRcbiAgICB9XG5cbiAgICBjb25zdCB0aW1lciA9IHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHN5bmNQYW5lbFNlc3Npb24oKSwgMTUwKVxuICAgIHJldHVybiAoKSA9PiB3aW5kb3cuY2xlYXJUaW1lb3V0KHRpbWVyKVxuICB9LCBbaXNNaW5pbWl6ZWQsIHN5bmNQYW5lbFNlc3Npb25dKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3Qgb25QYWdlSGlkZSA9ICgpID0+IHtcbiAgICAgIGlmICghaXNNaW5pbWl6ZWQpIHtcbiAgICAgICAgc3luY1BhbmVsU2Vzc2lvbigpXG4gICAgICB9XG4gICAgfVxuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdwYWdlaGlkZScsIG9uUGFnZUhpZGUpXG4gICAgcmV0dXJuICgpID0+IHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdwYWdlaGlkZScsIG9uUGFnZUhpZGUpXG4gIH0sIFtpc01pbmltaXplZCwgc3luY1BhbmVsU2Vzc2lvbl0pXG5cbiAgY29uc3QgaGFuZGxlUmVzdG9yZUZyb21NaW5pbWl6ZWQgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgc2V0SXNNaW5pbWl6ZWQoZmFsc2UpXG4gICAgc2V0Q2hhdFZpZXdWaXNpYmxlKHRydWUpXG4gICAgYW1wbGl0dWRFdmVudChFVkVOVFMuYWlDaGF0T3BlbiwgeyBvcHRpb246ICdtaW5pbWl6ZScgfSlcblxuICAgIC8vIGdvVG9DaGF0IG5lY2VzaXRhIGxhIGxpc3RhIGRlIGFnZW50ZXMgcGFyYSBzZWxlY2Npb25hciBlbCBkZSBsYSBjb252ZXJzYWNpw7NuLlxuICAgIGVuc3VyZUFnZW50c0xvYWRlZCgpLnRoZW4oKCkgPT4ge1xuICAgICAgLy8gUHJpb3JpZGFkIGFsIHJlYWJyaXI6IHByaW1lciBjaGF0IHNpbiBsZWVyIOKGkiDDumx0aW1hIGNvbnZlcnNhY2nDs24gYWJpZXJ0YSDihpIgSG9tZS5cbiAgICAgIGNvbnN0IHsgY2hhdHMgfSA9IGdldENoYXRzU3RvcmVTdGF0ZSgpXG4gICAgICBjb25zdCBsYXN0QWN0aXZlQ2hhdElkID0gcmVhZExhc3RBY3RpdmVDaGF0SWQodXNlci5pZClcbiAgICAgIGNvbnN0IHRhcmdldCA9XG4gICAgICAgIGNoYXRzLmZpbmQoY2hhdCA9PiBjaGF0LmlzUmVhZCA9PT0gZmFsc2UpID8/XG4gICAgICAgIChsYXN0QWN0aXZlQ2hhdElkID8gY2hhdHMuZmluZChjaGF0ID0+IGNoYXQuc2Vzc2lvbkV4dGVybmFsSWQgPT09IGxhc3RBY3RpdmVDaGF0SWQpIDogdW5kZWZpbmVkKVxuXG4gICAgICBpZiAodGFyZ2V0KSB7XG4gICAgICAgIGdvVG9DaGF0UmVmLmN1cnJlbnQ/Lih0YXJnZXQpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBnb0hvbWVSZWYuY3VycmVudD8uKClcbiAgICAgIH1cblxuICAgICAgZm9jdXNDaGF0SW5wdXQoKVxuICAgIH0pXG4gIH0sIFthbXBsaXR1ZEV2ZW50LCBlbnN1cmVBZ2VudHNMb2FkZWQsIGZvY3VzQ2hhdElucHV0LCBzZXRDaGF0Vmlld1Zpc2libGUsIHVzZXIuaWRdKVxuXG4gIC8qKlxuICAgKiBUb21hIGNvbnRyb2wgZGVzZGUgdW4gaG9zdCAoaGVhZGVyLCBwcm95ZWN0bywgY2xpZW50ZeKApik6IGFicmUgZWwgcGFuZWwsIGRlc2NhcnRhIGxhXG4gICAqIGNvbnZlcnNhY2nDs24gYWJpZXJ0YSB5IGFwbGljYSBlbCBjb250ZXh0byBkZWwgaG9zdC4gTk8gdnVlbHZlIGEgbGEgw7psdGltYSBjb252ZXJzYWNpw7NuXG4gICAqIOKAlCBlc28gc8OzbG8gbG8gaGFjZSBlbCBwaWxsIChgaGFuZGxlUmVzdG9yZUZyb21NaW5pbWl6ZWRgKS5cbiAgICovXG4gIGNvbnN0IGFwcGx5RXhwYW5kZWRIb3N0VGFrZW92ZXIgPSB1c2VDYWxsYmFjayhcbiAgICAoZGV0YWlsOiBNYWlhSG9zdE9wZW5EZXRhaWwpID0+IHtcbiAgICAgIGNvbnN0IGlzR2xvYmFsSGVhZGVyT3BlbiA9IGRldGFpbC5zZWN0aW9uID09PSAnaGVhZGVyJyB8fCBkZXRhaWwuc2VjdGlvbiA9PT0gJ3BsYW5uZXInXG5cbiAgICAgIGNsZWFyTWFpYVBhbmVsU2Vzc2lvbih1c2VyLmlkKVxuICAgICAgcGVuZGluZ1Nlc3Npb25SZXN0b3JlUmVmLmN1cnJlbnQgPSBudWxsXG4gICAgICBzZXRJc1Jlc3RvcmluZ1Nlc3Npb24oZmFsc2UpXG4gICAgICBzZXRJc01pbmltaXplZChmYWxzZSlcbiAgICAgIHNldENoYXRWaWV3VmlzaWJsZSh0cnVlKVxuICAgICAgd3JpdGVMYXN0QWN0aXZlQ2hhdElkKHVzZXIuaWQsIG51bGwpXG5cbiAgICAgIHNldEluaXRpYWxDaGF0SWQobnVsbClcbiAgICAgIHNldE5ld0NoYXRLZXkocHJldiA9PiBwcmV2ICsgMSlcbiAgICAgIHNldFVzZXJJbml0aWFsTWVzc2FnZSh7IG1lc3NhZ2U6ICcnLCBhdHRhY2htZW50czogW10gfSlcbiAgICAgIHNldEN1cnJlbnRPcHRpb24ob3B0aW9ucy5ob21lKVxuICAgICAgc2V0RGlkUmVzZXRDb250ZXh0SW5TZWN0aW9uKGZhbHNlKVxuICAgICAgc2V0SGFzRXJyb3IoZmFsc2UpXG4gICAgICBzZXRJc1dyaXRpbmcoZmFsc2UpXG4gICAgICB1c2VGYXFzU3RvcmUuZ2V0U3RhdGUoKS5jbGVhckZhcXMoKVxuICAgICAgYmFubmVyRmFxQXV0b1NlbnRSZWYuY3VycmVudCA9IGZhbHNlXG4gICAgICByZXNldFNlbGVjdGVkQ2hhdFJlZi5jdXJyZW50Py4oKVxuICAgICAgZ2V0Q2hhdHNTdG9yZVN0YXRlKCkuc2V0QWN0aXZlQ2hhdElkKG51bGwpXG4gICAgICBkb2N1bWVudC5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgnY2hhdC1zZXNzaW9uLWNoYW5nZWQnKSlcblxuICAgICAgaWYgKGRldGFpbC5zZWN0aW9uID09PSAncHJvamVjdCcgfHwgZGV0YWlsLnNlY3Rpb24gPT09ICd0YXNrJykge1xuICAgICAgICBzZXRQcm9qZWN0Py4oZGV0YWlsLnByb2plY3QgPz8gbnVsbClcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNldFByb2plY3Q/LihudWxsKVxuICAgICAgfVxuXG4gICAgICBpZiAoZGV0YWlsLnNlY3Rpb24gPT09ICdjbGllbnQnKSB7XG4gICAgICAgIHNldENsaWVudD8uKGRldGFpbC5jbGllbnQgPz8gbnVsbClcbiAgICAgIH0gZWxzZSBpZiAoaXNHbG9iYWxIZWFkZXJPcGVuKSB7XG4gICAgICAgIHNldENsaWVudD8uKG51bGwpXG4gICAgICB9XG5cbiAgICAgIGlmIChkZXRhaWwuc2VjdGlvbiA9PT0gJ3Rhc2snKSB7XG4gICAgICAgIHNldFRhc2s/LihkZXRhaWwudGFzayA/PyBudWxsKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2V0VGFzaz8uKG51bGwpXG4gICAgICB9XG5cbiAgICAgIGlmIChpc0dsb2JhbEhlYWRlck9wZW4pIHtcbiAgICAgICAgc2V0Q2hpcHNQcm9qZWN0KG51bGwpXG4gICAgICAgIGNsZWFyQWdlbnQoKVxuICAgICAgfVxuXG4gICAgICBjb25zdCBuZXh0TGF5b3V0ID0gcmVzb2x2ZUluaXRpYWxNYWlhQ2hhdExheW91dE1vZGUoe1xuICAgICAgICBzZWN0aW9uOiBkZXRhaWwuc2VjdGlvbiBhcyBTZWN0aW9uLFxuICAgICAgICBiYW5uZXJFbnRyeUZhcTogZGV0YWlsLmZhcSxcbiAgICAgIH0pXG4gICAgICBzZXRMYXlvdXRNb2RlKG5leHRMYXlvdXQpXG4gICAgICBzZXREcmFnUG9zaXRpb24obnVsbClcblxuICAgICAgY29uc3QgaG9zdENvbnRleHQgPSB7XG4gICAgICAgIHNlY3Rpb246IGRldGFpbC5zZWN0aW9uIGFzIFNlY3Rpb24sXG4gICAgICAgIHByb2plY3Q6IGRldGFpbC5zZWN0aW9uID09PSAncHJvamVjdCcgfHwgZGV0YWlsLnNlY3Rpb24gPT09ICd0YXNrJyA/IChkZXRhaWwucHJvamVjdCA/PyBudWxsKSA6IG51bGwsXG4gICAgICAgIGNsaWVudDogZGV0YWlsLnNlY3Rpb24gPT09ICdjbGllbnQnID8gKGRldGFpbC5jbGllbnQgPz8gbnVsbCkgOiBudWxsLFxuICAgICAgICB0YXNrOiBkZXRhaWwuc2VjdGlvbiA9PT0gJ3Rhc2snID8gKGRldGFpbC50YXNrID8/IG51bGwpIDogbnVsbCxcbiAgICAgICAgY2hpcHNQcm9qZWN0OiBudWxsLFxuICAgICAgfVxuXG4gICAgICBlbnN1cmVBZ2VudHNMb2FkZWQoKVxuICAgICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgICAgbGV0IHJlc29sdmVkQWdlbnRJZDogc3RyaW5nIHwgbnVsbCA9IGFnZW50Py5pZCA/PyBudWxsXG5cbiAgICAgICAgICBpZiAoaXNHbG9iYWxIZWFkZXJPcGVuKSB7XG4gICAgICAgICAgICBjb25zdCBmaXJzdEFnZW50ID0gYWdlbnRzRGF0YVJlZi5jdXJyZW50WzBdXG4gICAgICAgICAgICBpZiAoZmlyc3RBZ2VudCkge1xuICAgICAgICAgICAgICBzZWxlY3RBZ2VudChmaXJzdEFnZW50KVxuICAgICAgICAgICAgICByZXNvbHZlZEFnZW50SWQgPSBmaXJzdEFnZW50LmlkXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICByZXNvbHZlZEFnZW50SWQgPSBudWxsXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcGF0Y2hNYWlhUGFuZWxTZXNzaW9uKHVzZXIuaWQsIHtcbiAgICAgICAgICAgIGlzRXhwYW5kZWQ6IHRydWUsXG4gICAgICAgICAgICBjdXJyZW50T3B0aW9uOiBvcHRpb25zLmhvbWUsXG4gICAgICAgICAgICBhZ2VudHNOYXZBY3RpdmU6IG51bGwsXG4gICAgICAgICAgICBhY3RpdmVDaGF0SWQ6IG51bGwsXG4gICAgICAgICAgICBhZ2VudElkOiByZXNvbHZlZEFnZW50SWQsXG4gICAgICAgICAgICBzaWRlYmFyT3Blbjogc2lkZWJhck9wZW5SZWYuY3VycmVudCxcbiAgICAgICAgICAgIGRyYWdQb3NpdGlvbjogbnVsbCxcbiAgICAgICAgICAgIGhvc3RDb250ZXh0LFxuICAgICAgICAgIH0pXG5cbiAgICAgICAgICBmb2N1c0NoYXRJbnB1dCgpXG4gICAgICAgIH0pXG4gICAgICAgIC5jYXRjaCgoKSA9PiB1bmRlZmluZWQpXG4gICAgfSxcbiAgICBbXG4gICAgICBhZ2VudD8uaWQsXG4gICAgICBjbGVhckFnZW50LFxuICAgICAgZW5zdXJlQWdlbnRzTG9hZGVkLFxuICAgICAgZm9jdXNDaGF0SW5wdXQsXG4gICAgICBzZWxlY3RBZ2VudCxcbiAgICAgIHNldENoYXRWaWV3VmlzaWJsZSxcbiAgICAgIHNldENoaXBzUHJvamVjdCxcbiAgICAgIHNldENsaWVudCxcbiAgICAgIHNldFByb2plY3QsXG4gICAgICBzZXRUYXNrLFxuICAgICAgdXNlci5pZCxcbiAgICBdXG4gIClcblxuICBjb25zdCBoYW5kbGVTZW5kTWVzc2FnZVJlYWR5ID0gdXNlQ2FsbGJhY2soXG4gICAgKFxuICAgICAgc2VuZE1lc3NhZ2U6IChcbiAgICAgICAgbWVzc2FnZTogc3RyaW5nLFxuICAgICAgICBhdHRhY2htZW50cz86IEF0dGFjaG1lbnRGaWxlW10sXG4gICAgICAgIGZhcUlkPzogc3RyaW5nLFxuICAgICAgICBhZ2VudFN1Z2dlc3Rpb25JZD86IHN0cmluZyxcbiAgICAgICAgbWVudGlvbnM/OiBDb250ZXh0TWVudGlvbltdLFxuICAgICAgICBmdWFJZD86IHN0cmluZyxcbiAgICAgICAgc2NJZD86IHN0cmluZ1xuICAgICAgKSA9PiB2b2lkLFxuICAgICAgc3RvcEdlbmVyYXRpb246ICgpID0+IHZvaWQsXG4gICAgICBzdHJlYW1pbmc6IGJvb2xlYW4sXG4gICAgICB3cml0aW5nOiBib29sZWFuXG4gICAgKSA9PiB7XG4gICAgICBzZXRTZW5kTWVzc2FnZUZ1bmN0aW9uKCgpID0+IHNlbmRNZXNzYWdlKVxuICAgICAgc2V0U3RvcEdlbmVyYXRpb25GdW5jdGlvbigoKSA9PiBzdG9wR2VuZXJhdGlvbilcbiAgICAgIHNldElzU3RyZWFtaW5nKHN0cmVhbWluZylcbiAgICAgIHNldElzV3JpdGluZyh3cml0aW5nKVxuICAgIH0sXG4gICAgW11cbiAgKVxuXG4gIGNvbnN0IGhhbmRsZVNlbmRNZXNzYWdlID0gdXNlQ2FsbGJhY2soXG4gICAgKFxuICAgICAgbWVzc2FnZTogc3RyaW5nLFxuICAgICAgYXR0YWNobWVudHM/OiBBdHRhY2htZW50RmlsZVtdLFxuICAgICAgZmFxSWQ/OiBzdHJpbmcsXG4gICAgICBhZ2VudFN1Z2dlc3Rpb25JZD86IHN0cmluZyxcbiAgICAgIG1lbnRpb25zPzogQ29udGV4dE1lbnRpb25bXSxcbiAgICAgIGZ1YUlkPzogc3RyaW5nLFxuICAgICAgc2NJZD86IHN0cmluZ1xuICAgICkgPT4ge1xuICAgICAgaWYgKHNpZGViYXJIYXNFcnJvcikge1xuICAgICAgICBzZXRTaWRlYmFySGFzRXJyb3IoZmFsc2UpXG4gICAgICB9XG4gICAgICBpZiAoc2VuZE1lc3NhZ2VGdW5jdGlvbiAmJiBjb21wdXRlZEN1cnJlbnRPcHRpb24gPT09IG9wdGlvbnMuY2hhdCkge1xuICAgICAgICBzZW5kTWVzc2FnZUZ1bmN0aW9uKG1lc3NhZ2UsIGF0dGFjaG1lbnRzLCBmYXFJZCwgYWdlbnRTdWdnZXN0aW9uSWQsIG1lbnRpb25zLCBmdWFJZCwgc2NJZClcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHN0YXJ0Q2hhdChtZXNzYWdlLCBhdHRhY2htZW50cywgZmFxSWQsIGFnZW50U3VnZ2VzdGlvbklkLCBtZW50aW9ucywgZnVhSWQsIHNjSWQpXG4gICAgICB9XG4gICAgfSxcbiAgICBbc2VuZE1lc3NhZ2VGdW5jdGlvbiwgc3RhcnRDaGF0LCBjb21wdXRlZEN1cnJlbnRPcHRpb24sIHNpZGViYXJIYXNFcnJvcl1cbiAgKVxuXG4gIGNvbnN0IGhhbmRsZUdvSG9tZSA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICAvLyBTaSBlc3RhbW9zIGVuIHVuYSBjb252ZXJzYWNpw7NuIHkgdmFtb3MgYSBob21lLCByZXNldGVhciBpbml0aWFsQ2hhdElkIHkgaW5jcmVtZW50YXIgbmV3Q2hhdEtleVxuICAgIGlmIChjdXJyZW50T3B0aW9uID09PSBvcHRpb25zLmNoYXQpIHtcbiAgICAgIC8vIE5vIGNvcnRhbW9zIGxhIGdlbmVyYWNpw7NuOiBsYSBzZXNpw7NuIHNpZ3VlIHJlc3BvbmRpZW5kbyBlbiBiYWNrZ3JvdW5kLlxuICAgICAgc2V0SW5pdGlhbENoYXRJZChudWxsKVxuICAgICAgc2V0TmV3Q2hhdEtleShwcmV2ID0+IHByZXYgKyAxKVxuICAgICAgc2V0SXNXcml0aW5nKGZhbHNlKVxuICAgICAgLy8gTm8gYm9ycmFyIGVsIGNsaWVudGUgc2kgZXMgYWdlbnRlIGRlIGNsaWVudGVzIChpZ3VhbCBxdWUgZWwgcHJveWVjdG8gc2UgbWFudGllbmUpXG4gICAgICBpZiAoYWdlbnQ/LmVudGl0eSAhPT0gJ2NsaWVudCcpIHtcbiAgICAgICAgc2V0Q2xpZW50Py4obnVsbClcbiAgICAgIH1cbiAgICAgIGlmIChzZWN0aW9uICE9PSAndGFzaycpIHtcbiAgICAgICAgc2V0VGFzaz8uKG51bGwpXG4gICAgICB9XG4gICAgfVxuICAgIGlmIChcbiAgICAgICghYWdlbnQgfHwgYWdlbnQ/LmlzX2RlbGV0ZWQgfHwgYWdlbnQ/Lmhhc19ub3RfcGVybWlzc2lvbnMgfHwgYWdlbnQ/Lmhhc19ub3RfYWNjZXNzIHx8IGFnZW50Py5wcm9qZWN0X2RlbGV0ZWQpICYmXG4gICAgICBhZ2VudHMuZGF0YS5sZW5ndGggPiAwXG4gICAgKSB7XG4gICAgICBzZWxlY3RBZ2VudChhZ2VudHMuZGF0YVswXSlcbiAgICB9XG4gICAgLy8gT3JjaGVzdHJhdG9yIGVuIGhvbWUgZ2xvYmFsIChoZWFkZXIvcGxhbm5lcik6IGFsIGluaWNpYXIgdW4gY2hhdCBudWV2byBzZSBkZWJlIHZvbHZlciBhbCBwYXNvIDFcbiAgICAvLyAobGlzdGEgZGUgY29udGV4dG9zIHJlY2llbnRlcyksIHBvciBsbyBxdWUgaGF5IHF1ZSBsaW1waWFyIHRvZG8gZWwgY29udGV4dG8gcGluZWFkby5cbiAgICBpZiAoaXNHbG9iYWxNYWlhU2VjdGlvbihzZWN0aW9uKSAmJiBhZ2VudD8udHlwZSA9PT0gJ29yY2hlc3RyYXRvcicpIHtcbiAgICAgIHNldFByb2plY3QobnVsbClcbiAgICAgIHNldENsaWVudD8uKG51bGwpXG4gICAgICBzZXRUYXNrPy4obnVsbClcbiAgICB9XG4gICAgc2V0Q3VycmVudE9wdGlvbihvcHRpb25zLmhvbWUpXG4gICAgc2V0Q2hpcHNQcm9qZWN0KG51bGwpXG4gICAgc2V0SGFzRXJyb3IoZmFsc2UpXG4gICAgaXNXZWJTZWFyY2hBY3RpdmUgJiYgdG9nZ2xlV2ViU2VhcmNoKClcbiAgICBpZiAocmVzZXRTZWxlY3RlZENoYXRSZWYuY3VycmVudCkge1xuICAgICAgcmVzZXRTZWxlY3RlZENoYXRSZWYuY3VycmVudCgpXG4gICAgfVxuICB9LCBbXG4gICAgb3B0aW9ucy5ob21lLFxuICAgIG9wdGlvbnMuY2hhdCxcbiAgICBjdXJyZW50T3B0aW9uLFxuICAgIGlzV2ViU2VhcmNoQWN0aXZlLFxuICAgIHRvZ2dsZVdlYlNlYXJjaCxcbiAgICBhZ2VudCxcbiAgICBhZ2VudHMsXG4gICAgc2VsZWN0QWdlbnQsXG4gICAgc2V0UHJvamVjdCxcbiAgICBzZXRDbGllbnQsXG4gICAgc2V0VGFzayxcbiAgICBzdG9wR2VuZXJhdGlvbkZ1bmN0aW9uLFxuICAgIHNlY3Rpb24sXG4gIF0pXG5cbiAgZ29Ib21lUmVmLmN1cnJlbnQgPSBoYW5kbGVHb0hvbWVcblxuICBjb25zdCBoYW5kbGVTdGFydE5ld0NoYXQgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgY29uc3QgZnJvbU15QWdlbnRzID0gY29tcHV0ZWRDdXJyZW50T3B0aW9uID09PSBvcHRpb25zLm15QWdlbnRzXG4gICAgY29uc3QgZnJvbU15U2tpbGxzID0gY29tcHV0ZWRDdXJyZW50T3B0aW9uID09PSBvcHRpb25zLm15U2tpbGxzXG4gICAgY29uc3QgZnJvbU1haWFrZXJIb21lID0gY29tcHV0ZWRDdXJyZW50T3B0aW9uID09PSBvcHRpb25zLmhvbWUgJiYgaXNNYWlha2VyQWdlbnRTZWxlY3RlZFxuXG4gICAgaWYgKGZyb21NeUFnZW50cyB8fCBmcm9tTXlTa2lsbHMgfHwgZnJvbU1haWFrZXJIb21lKSB7XG4gICAgICBjb25zdCBmaXJzdEFnZW50ID0gYWdlbnRzLmRhdGFbMF1cbiAgICAgIGlmIChmaXJzdEFnZW50KSB7XG4gICAgICAgIHNldFByb2plY3QobnVsbClcbiAgICAgICAgc2V0Q2xpZW50Py4obnVsbClcbiAgICAgICAgc2V0VGFzaz8uKG51bGwpXG4gICAgICAgIHNlbGVjdEFnZW50KGZpcnN0QWdlbnQpXG4gICAgICB9XG4gICAgICBzZXRJbml0aWFsQ2hhdElkKG51bGwpXG4gICAgICBzZXROZXdDaGF0S2V5KHByZXYgPT4gcHJldiArIDEpXG4gICAgICBzZXRDdXJyZW50T3B0aW9uKG9wdGlvbnMuaG9tZSlcbiAgICAgIHNldENoaXBzUHJvamVjdChudWxsKVxuICAgICAgc2V0SGFzRXJyb3IoZmFsc2UpXG4gICAgICBpZiAoaXNXZWJTZWFyY2hBY3RpdmUpIHRvZ2dsZVdlYlNlYXJjaCgpXG4gICAgICByZXNldFNlbGVjdGVkQ2hhdFJlZi5jdXJyZW50Py4oKVxuICAgICAgZG9jdW1lbnQuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoJ2NoYXQtc2Vzc2lvbi1jaGFuZ2VkJykpXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBoYW5kbGVHb0hvbWUoKVxuICB9LCBbXG4gICAgYWdlbnRzLmRhdGEsXG4gICAgY29tcHV0ZWRDdXJyZW50T3B0aW9uLFxuICAgIGhhbmRsZUdvSG9tZSxcbiAgICBpc01haWFrZXJBZ2VudFNlbGVjdGVkLFxuICAgIGlzV2ViU2VhcmNoQWN0aXZlLFxuICAgIHNlbGVjdEFnZW50LFxuICAgIHNldENsaWVudCxcbiAgICBzZXRQcm9qZWN0LFxuICAgIHNldFRhc2ssXG4gICAgdG9nZ2xlV2ViU2VhcmNoLFxuICBdKVxuXG4gIGNvbnN0IGhhbmRsZVJlc2V0Q2hhdCA9IHVzZUNhbGxiYWNrKGFzeW5jICgpID0+IHtcbiAgICBzZXRVc2VySW5pdGlhbE1lc3NhZ2UoeyBtZXNzYWdlOiAnJywgYXR0YWNobWVudHM6IFtdIH0pXG4gICAgc2V0SW5pdGlhbENoYXRJZChudWxsKVxuICAgIC8vIERpc3BhdGNoIGV2ZW50IHRvIGNsZWFyIHRoZSBpbnB1dCB0ZXh0YXJlYVxuICAgIGRvY3VtZW50LmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCdjaGF0LXNlc3Npb24tY2hhbmdlZCcpKVxuICAgIGhhbmRsZUdvSG9tZSgpXG4gIH0sIFtoYW5kbGVHb0hvbWVdKVxuXG4gIC8vIEJvdMOzbiBcInZvbHZlclwiIGRlbCBoZWFkZXIgKHNvbG8gb3JjaGVzdHJhdG9yKTpcbiAgLy8gLSBEZXNkZSBlbCBjaGF0IChoZWFkZXIgbyBwcm9qZWN0L2NsaWVudC90YXNrKTogaW5pY2lhIHVuYSBjb252ZXJzYWNpw7NuIG51ZXZhIGNvbnNlcnZhbmRvIGVsXG4gIC8vICAgY29udGV4dG8gcGluZWFkbyB5IHZ1ZWx2ZSBhbCBob21lIChwYXNvIDIgY29uIEZBUXMvRlVBcykuXG4gIC8vIC0gRW4gZWwgaG9tZSBwYXNvIDIgKEZBUXMvRlVBcyBjb24gY29udGV4dG8pOiBsaW1waWEgZWwgY29udGV4dG8gcGluZWFkbyB5IHZ1ZWx2ZSBhbCBwYXNvIDFcbiAgLy8gICAoc2VsZWN0b3IgZGUgY29udGV4dG9zIHJlY2llbnRlcykuIEVuIGhlYWRlciBzaWVtcHJlOyBlbiBwcm9qZWN0L2NsaWVudC90YXNrIHNvbG8gc2kgZWxcbiAgLy8gICB1c3VhcmlvIHJlaW5pY2nDsyBlbCBjb250ZXh0byAoZGlkUmVzZXRDb250ZXh0SW5TZWN0aW9uKS5cbiAgY29uc3QgaGFuZGxlQmFjayA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBjb25zdCB0byA9IHJlc29sdmVBaUNoYXRCYWNrRGVzdGluYXRpb24oc2VjdGlvbiwgYWdlbnQ/LnR5cGUsIGNvbXB1dGVkQ3VycmVudE9wdGlvbiwgb3B0aW9ucy5ob21lKVxuICAgIGFtcGxpdHVkRXZlbnQoRVZFTlRTLmFpQ2hhdEJhY2ssIHsgdG8gfSlcblxuICAgIC8vIERlc2RlIGVsIGNoYXQg4oaSIG51ZXZhIGNvbnZlcnNhY2nDs24gU0lOIGJvcnJhciBlbCBjb250ZXh0byBwaW5lYWRvLCB2b2x2aWVuZG8gYWwgaG9tZS5cbiAgICBpZiAoY29tcHV0ZWRDdXJyZW50T3B0aW9uID09PSBvcHRpb25zLmNoYXQpIHtcbiAgICAgIC8vIE5vIGNvcnRhbW9zIGxhIGdlbmVyYWNpw7NuOiBsYSBzZXNpw7NuIHNpZ3VlIHJlc3BvbmRpZW5kbyBlbiBiYWNrZ3JvdW5kLlxuICAgICAgc2V0SXNXcml0aW5nKGZhbHNlKVxuICAgICAgc2V0VXNlckluaXRpYWxNZXNzYWdlKHsgbWVzc2FnZTogJycsIGF0dGFjaG1lbnRzOiBbXSB9KVxuICAgICAgc2V0SW5pdGlhbENoYXRJZChudWxsKVxuICAgICAgc2V0TmV3Q2hhdEtleShwcmV2ID0+IHByZXYgKyAxKVxuICAgICAgc2V0SGFzRXJyb3IoZmFsc2UpXG4gICAgICBpc1dlYlNlYXJjaEFjdGl2ZSAmJiB0b2dnbGVXZWJTZWFyY2goKVxuICAgICAgaWYgKHJlc2V0U2VsZWN0ZWRDaGF0UmVmLmN1cnJlbnQpIHtcbiAgICAgICAgcmVzZXRTZWxlY3RlZENoYXRSZWYuY3VycmVudCgpXG4gICAgICB9XG4gICAgICBzZXRDdXJyZW50T3B0aW9uKG9wdGlvbnMuaG9tZSlcbiAgICAgIGRvY3VtZW50LmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCdjaGF0LXNlc3Npb24tY2hhbmdlZCcpKVxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgLy8gSG9tZSBwYXNvIDIgKGNvbnRleHRvIHBpbmVhZG8pIOKGkiBsaW1waWFyIGVsIGNvbnRleHRvIHkgdm9sdmVyIGFsIHBhc28gMSAoY29udGV4dG9zIHJlY2llbnRlcykuXG4gICAgaWYgKGNvbXB1dGVkQ3VycmVudE9wdGlvbiA9PT0gb3B0aW9ucy5ob21lICYmIChpc0dsb2JhbE1haWFTZWN0aW9uKHNlY3Rpb24pIHx8IGRpZFJlc2V0Q29udGV4dEluU2VjdGlvbikpIHtcbiAgICAgIHNldFByb2plY3QobnVsbClcbiAgICAgIHNldENsaWVudD8uKG51bGwpXG4gICAgICBzZXRUYXNrPy4obnVsbClcbiAgICAgIHNldENoaXBzUHJvamVjdChudWxsKVxuICAgIH1cbiAgfSwgW1xuICAgIGNvbXB1dGVkQ3VycmVudE9wdGlvbixcbiAgICBzZWN0aW9uLFxuICAgIGFnZW50Py50eXBlLFxuICAgIGFtcGxpdHVkRXZlbnQsXG4gICAgb3B0aW9ucy5ob21lLFxuICAgIHN0b3BHZW5lcmF0aW9uRnVuY3Rpb24sXG4gICAgaXNXZWJTZWFyY2hBY3RpdmUsXG4gICAgdG9nZ2xlV2ViU2VhcmNoLFxuICAgIGRpZFJlc2V0Q29udGV4dEluU2VjdGlvbixcbiAgICBzZXRQcm9qZWN0LFxuICAgIHNldENsaWVudCxcbiAgICBzZXRUYXNrLFxuICAgIHNldENoaXBzUHJvamVjdCxcbiAgXSlcblxuICAvLyBEZXRlY3RhIGVsIHJlaW5pY2lvIGRlIGNvbnRleHRvIGVuIHByb2plY3QvY2xpZW50L3Rhc2s6IGNvbnRleHRvIHBpbmVhZG8g4oaSIHZhY8OtbyBjb24gZWxcbiAgLy8gb3JjaGVzdHJhdG9yIChwLiBlai4gYWwgcmVzZWxlY2Npb25hciBNQUlBIGVuIGVsIGxpc3RhZG8pLiBTb2xvIGxhIHRyYW5zaWNpw7NuIGN1ZW50YSwgYXPDrSB1bmFcbiAgLy8gYXBlcnR1cmEgZnJlc2NhIChjb250ZXh0byBwaW5lYWRvIGRlc2RlIGxhIHNlY2Npw7NuKSBubyBsbyBhY3RpdmEuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgcGlubmVkID0gISEodGFzaz8uaWQgfHwgY2hpcHNQcm9qZWN0Py5wcm9qZWN0SWQgfHwgY2xpZW50Py5pZCB8fCBwcm9qZWN0Py5pZClcbiAgICBjb25zdCB3YXNQaW5uZWQgPSBwcmV2SGFzUGlubmVkQ29udGV4dFJlZi5jdXJyZW50XG4gICAgcHJldkhhc1Bpbm5lZENvbnRleHRSZWYuY3VycmVudCA9IHBpbm5lZFxuICAgIGlmICghaXNHbG9iYWxNYWlhU2VjdGlvbihzZWN0aW9uKSAmJiBhZ2VudD8udHlwZSA9PT0gJ29yY2hlc3RyYXRvcicgJiYgd2FzUGlubmVkICYmICFwaW5uZWQpIHtcbiAgICAgIHNldERpZFJlc2V0Q29udGV4dEluU2VjdGlvbih0cnVlKVxuICAgIH1cbiAgfSwgW3Rhc2s/LmlkLCBjaGlwc1Byb2plY3Q/LnByb2plY3RJZCwgY2xpZW50Py5pZCwgcHJvamVjdD8uaWQsIHNlY3Rpb24sIGFnZW50Py50eXBlXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IG9uTWVyZ2VDcmVhdGVkQWdlbnQgPSAoZXZ0OiBFdmVudCkgPT4ge1xuICAgICAgY29uc3QgeyBhZ2VudDogbmV4dEFnZW50IH0gPSAoZXZ0IGFzIEN1c3RvbUV2ZW50PHsgYWdlbnQ6IEFnZW50IH0+KS5kZXRhaWwgfHwge31cbiAgICAgIGlmIChuZXh0QWdlbnQ/LmlkKSB7XG4gICAgICAgIGFkZEFnZW50KG5leHRBZ2VudCwgeyBuYXZpZ2F0ZUhvbWU6IGZhbHNlIH0pXG4gICAgICB9XG4gICAgfVxuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21haWEtbWVyZ2UtY3JlYXRlZC1hZ2VudC1pbnRvLWxpc3QnLCBvbk1lcmdlQ3JlYXRlZEFnZW50KVxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdtYWlhLW1lcmdlLWNyZWF0ZWQtYWdlbnQtaW50by1saXN0Jywgb25NZXJnZUNyZWF0ZWRBZ2VudClcbiAgICB9XG4gIH0sIFthZGRBZ2VudF0pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBvblN5bmNFZGl0ZWRBZ2VudCA9IChldnQ6IEV2ZW50KSA9PiB7XG4gICAgICBjb25zdCB7IGFnZW50OiBuZXh0QWdlbnQgfSA9IChldnQgYXMgQ3VzdG9tRXZlbnQ8eyBhZ2VudDogQWdlbnQgfT4pLmRldGFpbCB8fCB7fVxuICAgICAgaWYgKCFuZXh0QWdlbnQ/LmlkKSByZXR1cm5cbiAgICAgIHVwZGF0ZUFnZW50KG5leHRBZ2VudClcbiAgICAgIGlmIChhZ2VudD8uaWQgPT09IG5leHRBZ2VudC5pZCkge1xuICAgICAgICBzZWxlY3RBZ2VudChuZXh0QWdlbnQpXG4gICAgICB9XG4gICAgfVxuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21haWEtc3luYy1lZGl0ZWQtYWdlbnQtZnJvbS1jaGF0Jywgb25TeW5jRWRpdGVkQWdlbnQpXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21haWEtc3luYy1lZGl0ZWQtYWdlbnQtZnJvbS1jaGF0Jywgb25TeW5jRWRpdGVkQWdlbnQpXG4gICAgfVxuICB9LCBbdXBkYXRlQWdlbnQsIHNlbGVjdEFnZW50LCBhZ2VudD8uaWRdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3Qgb3BlbkNoYXRWaWV3ID0gKCkgPT4ge1xuICAgICAgc2V0SGFzRXJyb3IoZmFsc2UpXG4gICAgICBzZXRJbml0aWFsQ2hhdElkKG51bGwpXG4gICAgICBzZXROZXdDaGF0S2V5KHByZXYgPT4gcHJldiArIDEpXG4gICAgICBzZXRVc2VySW5pdGlhbE1lc3NhZ2UoeyBtZXNzYWdlOiAnJywgYXR0YWNobWVudHM6IFtdIH0pXG4gICAgICBzZXRDdXJyZW50T3B0aW9uKG9wdGlvbnMuY2hhdClcbiAgICAgIGRvY3VtZW50LmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCdjaGF0LXNlc3Npb24tY2hhbmdlZCcpKVxuICAgIH1cbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdtYWlhLW9wZW4tY2hhdC12aWV3Jywgb3BlbkNoYXRWaWV3KVxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdtYWlhLW9wZW4tY2hhdC12aWV3Jywgb3BlbkNoYXRWaWV3KVxuICAgIH1cbiAgfSwgW10pXG5cbiAgLyoqXG4gICAqIEVsIMOtY29ubyBkZSBNQUlBIGRlbCBoZWFkZXIgbGxldmEgc2llbXByZSBhbCBIb21lLiBTaSBNQUlBIHlhIGVzdMOhIG1vbnRhZGEgcGVyb1xuICAgKiBtaW5pbWl6YWRhLCBlbCBob3N0IG5vIHB1ZWRlIHJlc29sdmVybG8gY2FtYmlhbmRvIGBpc09wZW5gICh5YSBlc3TDoSBlbiB0cnVlKSxcbiAgICogYXPDrSBxdWUgYXZpc2EgcG9yIGV2ZW50byB5IGFjw6EgcmVzdGF1cmFtb3MgeSB2YW1vcyBhbCBIb21lLlxuICAgKi9cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBvcGVuSG9tZSA9ICgpID0+IHtcbiAgICAgIGFwcGx5RXhwYW5kZWRIb3N0VGFrZW92ZXIoe1xuICAgICAgICBzZWN0aW9uOiAnaGVhZGVyJyxcbiAgICAgICAgZW50aXR5OiB7IHByb2plY3RJZDogbnVsbCwgY2xpZW50SWQ6IG51bGwgfSxcbiAgICAgIH0pXG4gICAgfVxuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21haWEtb3Blbi1ob21lJywgb3BlbkhvbWUpXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21haWEtb3Blbi1ob21lJywgb3BlbkhvbWUpXG4gICAgfVxuICB9LCBbYXBwbHlFeHBhbmRlZEhvc3RUYWtlb3Zlcl0pXG5cbiAgLyoqXG4gICAqIE90cm8gaG9zdCAocHJveWVjdG8sIGNsaWVudGUsIGJhbm5lciwgaGVhZGVy4oCmKSBwaWRlIGFicmlyIE1BSUEgbWllbnRyYXMgeWEgaGF5IHVuYVxuICAgKiBpbnN0YW5jaWEgbW9udGFkYS4gRXhwYW5kZSBzaSBlc3RhYmEgbWluaW1pemFkbywgYXBsaWNhIGVsIGNvbnRleHRvIGRlbCBob3N0IG51ZXZvXG4gICAqIHkgdmEgYWwgaG9tZSDigJQgc2luIHJlc3RhdXJhciBsYSBjb252ZXJzYWNpw7NuIHByZXZpYSAoZXNvIGxvIGhhY2UgZWwgcGlsbCkuXG4gICAqL1xuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IG9wZW5Gcm9tSG9zdCA9IChldmVudDogRXZlbnQpID0+IHtcbiAgICAgIGNvbnN0IHsgZGV0YWlsIH0gPSBldmVudCBhcyBDdXN0b21FdmVudDxNYWlhSG9zdE9wZW5EZXRhaWw+XG4gICAgICBpZiAoIWRldGFpbCkgcmV0dXJuXG4gICAgICBhcHBseUV4cGFuZGVkSG9zdFRha2VvdmVyKGRldGFpbClcbiAgICB9XG5cbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKE1BSUFfT1BFTl9GUk9NX0hPU1RfRVZFTlQsIG9wZW5Gcm9tSG9zdClcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihNQUlBX09QRU5fRlJPTV9IT1NUX0VWRU5ULCBvcGVuRnJvbUhvc3QpXG4gICAgfVxuICB9LCBbYXBwbHlFeHBhbmRlZEhvc3RUYWtlb3Zlcl0pXG5cbiAgLyoqIE1pc21vIGZsdWpvIHF1ZSBDaGF0QUlNeUFnZW50cy5oYW5kbGVVc2VBZ2VudCArIG9uQmFjayAoaGFuZGxlcnMuaG9tZSkuXG4gICAqICBFbCBkZXRhaWwgcHVlZGUgdHJhZXIgb3BjaW9uYWxtZW50ZSBgcHJvamVjdGAsIGBjbGllbnRgLCBgdGFza2AgcGFyYSBmbG93cyBxdWVcbiAgICogIG5lY2VzaXRhbiBwcmVzZXJ2YXIgY29udGV4dG8gKGVqLiBzZWxlY3RvciBkZSBhZ2VudGVzIGRlc2RlIHVuYSB0YXJlYSkuIFNpIG5vIHZpZW5lbixcbiAgICogIHNlIG1hbnRpZW5lIGVsIGNvbXBvcnRhbWllbnRvIG9yaWdpbmFsIGRlIGxpbXBpYXIgcHJvamVjdC9jbGllbnQuICovXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3Qgb3Blbk5ld0NoYXRXaXRoQWdlbnQgPSAoZXZlbnQ6IEV2ZW50KSA9PiB7XG4gICAgICBjb25zdCB7IGRldGFpbCB9ID0gZXZlbnQgYXMgQ3VzdG9tRXZlbnQ8e1xuICAgICAgICBhZ2VudDogQWdlbnRcbiAgICAgICAgcHJvamVjdD86IFByb2plY3QgfCBudWxsXG4gICAgICAgIGNsaWVudD86IENsaWVudCB8IG51bGxcbiAgICAgICAgdGFzaz86IFRhc2sgfCBudWxsXG4gICAgICB9PlxuICAgICAgY29uc3QgbmV4dEFnZW50ID0gZGV0YWlsPy5hZ2VudFxuICAgICAgaWYgKCFuZXh0QWdlbnQpIHJldHVyblxuXG4gICAgICBzZXRQcm9qZWN0KGRldGFpbD8ucHJvamVjdCA/PyBudWxsKVxuICAgICAgc2V0Q2xpZW50Py4oZGV0YWlsPy5jbGllbnQgPz8gbnVsbClcbiAgICAgIGlmIChkZXRhaWw/LnRhc2sgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBzZXRUYXNrPy4oZGV0YWlsLnRhc2spXG4gICAgICB9XG4gICAgICBzZWxlY3RBZ2VudChuZXh0QWdlbnQpXG4gICAgICBzZXRIYXNFcnJvcihmYWxzZSlcbiAgICAgIHNldEN1cnJlbnRPcHRpb24ob3B0aW9ucy5ob21lKVxuICAgIH1cblxuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21haWEtb3Blbi1uZXctY2hhdC13aXRoLWFnZW50Jywgb3Blbk5ld0NoYXRXaXRoQWdlbnQpXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21haWEtb3Blbi1uZXctY2hhdC13aXRoLWFnZW50Jywgb3Blbk5ld0NoYXRXaXRoQWdlbnQpXG4gICAgfVxuICB9LCBbc2VsZWN0QWdlbnQsIHNldENsaWVudCwgc2V0UHJvamVjdCwgc2V0VGFza10pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBoYW5kbGVVc2VTa2lsbEFmdGVyU2F2ZSA9IChldmVudDogRXZlbnQpID0+IHtcbiAgICAgIGNvbnN0IHsgc2tpbGwsIHVzZUZpcnN0QWdlbnQgfSA9IChldmVudCBhcyBDdXN0b21FdmVudDx7IHNraWxsOiBTa2lsbDsgdXNlRmlyc3RBZ2VudD86IGJvb2xlYW4gfT4pLmRldGFpbCB8fCB7fVxuICAgICAgaWYgKCFza2lsbCkgcmV0dXJuXG5cbiAgICAgIGNvbnN0IGZpcnN0QWdlbnQgPSBhZ2VudHNEYXRhUmVmLmN1cnJlbnRbMF1cbiAgICAgIGlmICh1c2VGaXJzdEFnZW50ICYmIGZpcnN0QWdlbnQpIHtcbiAgICAgICAgc2VsZWN0QWdlbnQoZmlyc3RBZ2VudClcbiAgICAgIH1cblxuICAgICAgc2V0SGFzRXJyb3IoZmFsc2UpXG4gICAgICBzZXRJbml0aWFsQ2hhdElkKG51bGwpXG4gICAgICBzZXROZXdDaGF0S2V5KHByZXYgPT4gcHJldiArIDEpXG4gICAgICBzZXRVc2VySW5pdGlhbE1lc3NhZ2UoeyBtZXNzYWdlOiAnJywgYXR0YWNobWVudHM6IFtdIH0pXG4gICAgICBzZXRDdXJyZW50T3B0aW9uKG9wdGlvbnMuaG9tZSlcbiAgICAgIGRvY3VtZW50LmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCdjaGF0LXNlc3Npb24tY2hhbmdlZCcpKVxuXG4gICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgICBkb2N1bWVudC5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgnbWFpYS1pbnNlcnQtc2tpbGwtbWVudGlvbicsIHsgZGV0YWlsOiB7IHNraWxsIH0gfSkpXG4gICAgICAgIGRvY3VtZW50LmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCdtYWlhLWlucHV0LXJlZm9jdXMnKSlcbiAgICAgIH0pXG4gICAgfVxuXG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihTS0lMTF9VU0VfQUZURVJfU0FWRV9FVkVOVCwgaGFuZGxlVXNlU2tpbGxBZnRlclNhdmUpXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoU0tJTExfVVNFX0FGVEVSX1NBVkVfRVZFTlQsIGhhbmRsZVVzZVNraWxsQWZ0ZXJTYXZlKVxuICAgIH1cbiAgfSwgW3NlbGVjdEFnZW50XSlcblxuICAvLyBNZXRhZGF0YSBkZSBsYSBzZXNzaW9uIGFiaWVydGEgKGFnZW50X3R5cGUvYWdlbnRfZW50aXR5ICsgY29udGV4dG8pLCBlbWl0aWRhIHBvciB1c2VDaGF0TWVzc2FnZXMuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3Qgb25TZXNzaW9uTWV0YSA9IChldnQ6IEV2ZW50KSA9PiB7XG4gICAgICBjb25zdCB7IGRldGFpbCB9ID0gZXZ0IGFzIEN1c3RvbUV2ZW50PFNlc3Npb25NZXRhPlxuICAgICAgaWYgKGRldGFpbCkgc2V0U2Vzc2lvbk1ldGEoZGV0YWlsKVxuICAgIH1cbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdtYWlhLWNoYXQtc2Vzc2lvbi1tZXRhJywgb25TZXNzaW9uTWV0YSlcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignbWFpYS1jaGF0LXNlc3Npb24tbWV0YScsIG9uU2Vzc2lvbk1ldGEpXG4gICAgfVxuICB9LCBbXSlcblxuICAvLyBBbCBjYW1iaWFyIGRlIGNvbnZlcnNhY2nDs24gbGltcGlhbW9zIGxhIG1ldGFkYXRhOyBlbCBsb2FkIGRlIGxhIG51ZXZhIHNlc3Npb24gbGEgdnVlbHZlIGEgZW1pdGlyLlxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIHNldFNlc3Npb25NZXRhKG51bGwpXG4gIH0sIFtpbml0aWFsQ2hhdElkXSlcblxuICAvLyBDYXJ0ZWwgXCJjb250aW51YXIgZW4gdW4gY2hhdCBudWV2b1wiOiBzZSBtdWVzdHJhIGFsIGFicmlyIHVuYSBjb252ZXJzYWNpw7NuIGRlIHVuIGNsb25lIGxlZ2FjeVxuICAvLyAoYWdlbnRfdHlwZSA9PT0gJ2Nsb25lJyBjb24gZW50aXR5IHByb2plY3QvdGFzay9jbGllbnQpLiBFbCBpbnB1dCBzZSByZWVtcGxhemEgcG9yIGVsIGNhcnRlbC5cbiAgY29uc3QgbGVnYWN5Q29udGV4dFNlc3Npb24gPSB1c2VNZW1vPHsgZW50aXR5VHlwZTogTGVnYWN5Q29udGV4dEVudGl0eTsgY29udGV4dE5hbWU6IHN0cmluZyB9IHwgbnVsbD4oKCkgPT4ge1xuICAgIGlmIChjb21wdXRlZEN1cnJlbnRPcHRpb24gIT09IG9wdGlvbnMuY2hhdCkgcmV0dXJuIG51bGxcbiAgICBpZiAoIXNlc3Npb25NZXRhIHx8IHNlc3Npb25NZXRhLmFnZW50VHlwZSAhPT0gJ2Nsb25lJykgcmV0dXJuIG51bGxcbiAgICBjb25zdCBlbnRpdHkgPSBzZXNzaW9uTWV0YS5hZ2VudEVudGl0eVxuICAgIGlmICghZW50aXR5IHx8ICFMRUdBQ1lfQ09OVEVYVF9FTlRJVElFUy5pbmNsdWRlcyhlbnRpdHkgYXMgTGVnYWN5Q29udGV4dEVudGl0eSkpIHJldHVybiBudWxsXG4gICAgY29uc3QgY29udGV4dE5hbWUgPVxuICAgICAgZW50aXR5ID09PSAndGFzaycgPyBzZXNzaW9uTWV0YS50YXNrTmFtZSA6IGVudGl0eSA9PT0gJ3Byb2plY3QnID8gc2Vzc2lvbk1ldGEucHJvamVjdE5hbWUgOiBzZXNzaW9uTWV0YS5jbGllbnROYW1lXG4gICAgcmV0dXJuIHsgZW50aXR5VHlwZTogZW50aXR5IGFzIExlZ2FjeUNvbnRleHRFbnRpdHksIGNvbnRleHROYW1lOiBjb250ZXh0TmFtZSB8fCAnJyB9XG4gIH0sIFtjb21wdXRlZEN1cnJlbnRPcHRpb24sIHNlc3Npb25NZXRhXSlcblxuICAvLyBNYXJjYSBlbCBhZ2VudGUgZGUgbGEgY29udmVyc2FjacOzbiBsZWdhY3kgcGFyYSBxdWUgaGVhZGVyLCBzZWxlY3RvciB5IGF2YXRhciBtdWVzdHJlbiBlbCBsb2dvXG4gIC8vIE1BSUEgeSBlbCBub21icmUgdGFjaGFkbyAoYWdlbnRlIG9ic29sZXRvKSwgc2luIGRlcGVuZGVyIGRlbCBgdHlwZWAgcmVzdWVsdG8gZGUgbGEgc2VzacOzbiB2aWVqYS5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAobGVnYWN5Q29udGV4dFNlc3Npb24gJiYgYWdlbnQgJiYgIWFnZW50LmlzX2xlZ2FjeV9jb250ZXh0KSB7XG4gICAgICBzZWxlY3RBZ2VudCh7IC4uLmFnZW50LCBpc19sZWdhY3lfY29udGV4dDogdHJ1ZSB9KVxuICAgIH1cbiAgfSwgW2xlZ2FjeUNvbnRleHRTZXNzaW9uLCBhZ2VudCwgc2VsZWN0QWdlbnRdKVxuXG4gIC8vIEFicmUgdW4gY2hhdCBudWV2byBjb24gZWwgb3JjaGVzdHJhdG9yIHNldGVhbmRvIGVsIGNvbnRleHRvIGRlbCBjbG9uZSBsZWdhY3kgKG1pc21vIGNyaXRlcmlvXG4gIC8vIHF1ZSBjbGlja2VhciB1biBjb250ZXh0byByZWNpZW50ZSBlbiBlbCBob21lIOKGkiBwYXNvIDIgY29uIEZBUXMvYWNjaW9uZXMgZGUgZXNlIGNvbnRleHRvKS5cbiAgY29uc3QgaGFuZGxlQ29udGludWVMZWdhY3lDb250ZXh0SW5OZXdDaGF0ID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGlmICghc2Vzc2lvbk1ldGEpIHJldHVyblxuICAgIGNvbnN0IHtcbiAgICAgIGFnZW50RW50aXR5LFxuICAgICAgcHJvamVjdElkOiBwSWQsXG4gICAgICBwcm9qZWN0TmFtZTogcE5hbWUsXG4gICAgICBjbGllbnRJZDogY0lkLFxuICAgICAgY2xpZW50TmFtZTogY05hbWUsXG4gICAgICB0YXNrSWQ6IHRJZCxcbiAgICAgIHRhc2tOYW1lOiB0TmFtZSxcbiAgICB9ID0gc2Vzc2lvbk1ldGFcblxuICAgIGNvbnN0IG9yY2hlc3RyYXRvciA9IGFnZW50cy5kYXRhLmZpbmQoKGE6IEFnZW50KSA9PiBhLnR5cGUgPT09ICdvcmNoZXN0cmF0b3InKVxuICAgIGlmICghb3JjaGVzdHJhdG9yKSByZXR1cm5cblxuICAgIC8vIFJlc2V0IGRlbCBjaGF0IOKGkiBjb252ZXJzYWNpw7NuIG51ZXZhIChsYSBhbnRlcmlvciBzaWd1ZSBlbiBiYWNrZ3JvdW5kKVxuICAgIHNldElzV3JpdGluZyhmYWxzZSlcbiAgICBzZXRVc2VySW5pdGlhbE1lc3NhZ2UoeyBtZXNzYWdlOiAnJywgYXR0YWNobWVudHM6IFtdIH0pXG4gICAgc2V0SW5pdGlhbENoYXRJZChudWxsKVxuICAgIHNldE5ld0NoYXRLZXkocHJldiA9PiBwcmV2ICsgMSlcbiAgICBzZXRIYXNFcnJvcihmYWxzZSlcblxuICAgIC8vIFNldGVhciBjb250ZXh0byAobWlzbW8gY3JpdGVyaW8gcXVlIGhhbmRsZVNlbGVjdFJlY2VudENvbnRleHQgZGVsIGhvbWUpXG4gICAgc2V0VGFzaz8uKG51bGwpXG4gICAgc2V0UHJvamVjdChudWxsKVxuICAgIHNldENsaWVudD8uKG51bGwpXG4gICAgc2V0Q2hpcHNQcm9qZWN0KG51bGwpXG5cbiAgICBpZiAoYWdlbnRFbnRpdHkgPT09ICdjbGllbnQnICYmIGNJZCAhPSBudWxsKSB7XG4gICAgICBzZXRDbGllbnQ/Lih7IGlkOiBjSWQsIG5hbWU6IGNOYW1lIHx8ICcnIH0pXG4gICAgfSBlbHNlIGlmIChhZ2VudEVudGl0eSA9PT0gJ3Byb2plY3QnICYmIHBJZCAhPSBudWxsKSB7XG4gICAgICBzZXRQcm9qZWN0KHtcbiAgICAgICAgaWQ6IHBJZCxcbiAgICAgICAgbmFtZTogcE5hbWUgfHwgJycsXG4gICAgICAgIC4uLihjSWQgIT0gbnVsbCA/IHsgY2xpZW50SWQ6IGNJZCwgY2xpZW50OiB7IGlkOiBjSWQsIG5hbWU6IGNOYW1lIHx8ICcnIH0gfSA6IHt9KSxcbiAgICAgIH0pXG4gICAgICBzZXRDaGlwc1Byb2plY3QoeyBwcm9qZWN0SWQ6IFN0cmluZyhwSWQpLCBwcm9qZWN0TmFtZTogcE5hbWUgfHwgJycsIGNsaWVudE5hbWU6IGNOYW1lIHx8ICcnIH0pXG4gICAgfSBlbHNlIGlmIChhZ2VudEVudGl0eSA9PT0gJ3Rhc2snICYmIHRJZCAhPSBudWxsKSB7XG4gICAgICBzZXRUYXNrPy4oe1xuICAgICAgICBpZDogdElkLFxuICAgICAgICBuYW1lOiB0TmFtZSB8fCAnJyxcbiAgICAgICAgLi4uKHBJZCAhPSBudWxsID8geyBwcm9qZWN0SWQ6IHBJZCB9IDoge30pLFxuICAgICAgICAuLi4oY0lkICE9IG51bGwgPyB7IGNsaWVudElkOiBjSWQgfSA6IHt9KSxcbiAgICAgIH0pXG4gICAgICBpZiAoY0lkICE9IG51bGwpIHNldENsaWVudD8uKHsgaWQ6IGNJZCwgbmFtZTogY05hbWUgfHwgJycgfSlcbiAgICAgIGlmIChwSWQgIT0gbnVsbCkge1xuICAgICAgICBzZXRQcm9qZWN0KHtcbiAgICAgICAgICBpZDogcElkLFxuICAgICAgICAgIG5hbWU6IHBOYW1lIHx8ICcnLFxuICAgICAgICAgIC4uLihjSWQgIT0gbnVsbCA/IHsgY2xpZW50SWQ6IGNJZCwgY2xpZW50OiB7IGlkOiBjSWQsIG5hbWU6IGNOYW1lIHx8ICcnIH0gfSA6IHt9KSxcbiAgICAgICAgfSlcbiAgICAgICAgc2V0Q2hpcHNQcm9qZWN0KHsgcHJvamVjdElkOiBTdHJpbmcocElkKSwgcHJvamVjdE5hbWU6IHBOYW1lIHx8ICcnLCBjbGllbnROYW1lOiBjTmFtZSB8fCAnJyB9KVxuICAgICAgfVxuICAgIH1cblxuICAgIHNlbGVjdEFnZW50KG9yY2hlc3RyYXRvcilcbiAgICBzZXRTZXNzaW9uTWV0YShudWxsKVxuICAgIHNldEN1cnJlbnRPcHRpb24ob3B0aW9ucy5ob21lKVxuICAgIGRvY3VtZW50LmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCdjaGF0LXNlc3Npb24tY2hhbmdlZCcpKVxuICB9LCBbc2Vzc2lvbk1ldGEsIGFnZW50cy5kYXRhLCBzZWxlY3RBZ2VudCwgc2V0Q2xpZW50LCBzZXRQcm9qZWN0LCBzZXRUYXNrLCBzZXRDaGlwc1Byb2plY3QsIHN0b3BHZW5lcmF0aW9uRnVuY3Rpb25dKVxuXG4gIGNvbnN0IHNob3dOZXdDaGF0ID0gY29tcHV0ZWRDdXJyZW50T3B0aW9uICE9PSBvcHRpb25zLmNoYXRcbiAgY29uc3QgaXNNeUFnZW50c1NlY3Rpb24gPSBjb21wdXRlZEN1cnJlbnRPcHRpb24gPT09IG9wdGlvbnMubXlBZ2VudHNcbiAgY29uc3QgaXNNeVNraWxsc1NlY3Rpb24gPSBjb21wdXRlZEN1cnJlbnRPcHRpb24gPT09IG9wdGlvbnMubXlTa2lsbHNcblxuICAvLyBCb3TDs24gXCJ2b2x2ZXJcIjogc29sbyBwYXJhIGVsIG9yY2hlc3RyYXRvci5cbiAgLy8gLSBFbiBlbCBjaGF0OiBkaXNwb25pYmxlIGVuIHRvZGFzIGxhcyBzZWNjaW9uZXMgKGhlYWRlciB5IHByb2plY3QvY2xpZW50L3Rhc2spLlxuICAvLyAtIEVuIGVsIGhvbWUgcGFzbyAyIChGQVFzL0ZVQXMgY29uIGNvbnRleHRvIHBpbmVhZG8pOiBlbiBlbCBoZWFkZXIgc2llbXByZTsgZW5cbiAgLy8gICBwcm9qZWN0L2NsaWVudC90YXNrIHNvbG8gc2kgZWwgdXN1YXJpbyByZWluaWNpw7MgZWwgY29udGV4dG8gKHBhc8OzIHBvciBlbCBzZWxlY3RvciBkZVxuICAvLyAgIGNvbnRleHRvcyByZWNpZW50ZXMpLiBFbiBlbCBwYXNvIDEgKHNpbiBjb250ZXh0bykgTk8gc2UgbXVlc3RyYS5cbiAgY29uc3QgaGFzUGlubmVkQ29udGV4dCA9ICEhKHRhc2s/LmlkIHx8IGNoaXBzUHJvamVjdD8ucHJvamVjdElkIHx8IGNsaWVudD8uaWQgfHwgcHJvamVjdD8uaWQpXG4gIGNvbnN0IGlzQ2hhdFZpZXcgPSBjb21wdXRlZEN1cnJlbnRPcHRpb24gPT09IG9wdGlvbnMuY2hhdFxuICBjb25zdCBpc0hvbWVTdGVwMiA9IGNvbXB1dGVkQ3VycmVudE9wdGlvbiA9PT0gb3B0aW9ucy5ob21lICYmIGhhc1Bpbm5lZENvbnRleHRcbiAgY29uc3QgaXNIZWFkZXJIb21lU3RlcDIgPSBpc0dsb2JhbE1haWFTZWN0aW9uKHNlY3Rpb24pICYmIGlzSG9tZVN0ZXAyXG4gIGNvbnN0IGlzU2VjdGlvblJlc2V0SG9tZVN0ZXAyID0gIWlzR2xvYmFsTWFpYVNlY3Rpb24oc2VjdGlvbikgJiYgaXNIb21lU3RlcDIgJiYgZGlkUmVzZXRDb250ZXh0SW5TZWN0aW9uXG4gIGNvbnN0IHNob3dCYWNrQnV0dG9uID1cbiAgICBhZ2VudD8udHlwZSA9PT0gJ29yY2hlc3RyYXRvcicgJiZcbiAgICAhaGFzRXJyb3IgJiZcbiAgICAhbG9hZGluZyAmJlxuICAgIChpc0NoYXRWaWV3IHx8IGlzSGVhZGVySG9tZVN0ZXAyIHx8IGlzU2VjdGlvblJlc2V0SG9tZVN0ZXAyKVxuICBjb25zdCBoYW5kbGVPcGVuTWFya2V0cGxhY2UgPSB1c2VDYWxsYmFjayhhc3luYyAoKSA9PiB7XG4gICAgaWYgKCF3aW5kb3cuTUFJQV9DSEFUX0FJX0ZFQVRVUkVfQUNDRVNTX01VTFRJX0FHRU5UUykge1xuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGF3YWl0IGVuc3VyZUFnZW50c0xvYWRlZCgpXG4gICAgY2xlYXJBZ2VudCgpXG4gICAgc2V0Q3VycmVudE9wdGlvbihvcHRpb25zLm15QWdlbnRzKVxuICAgIHBhdGNoTWFpYVBhbmVsU2Vzc2lvbih1c2VyLmlkLCB7XG4gICAgICBhZ2VudHNOYXZBY3RpdmU6ICdteUFnZW50cycsXG4gICAgICBjdXJyZW50T3B0aW9uOiBvcHRpb25zLm15QWdlbnRzLFxuICAgICAgYWN0aXZlQ2hhdElkOiBudWxsLFxuICAgICAgYWdlbnRJZDogbnVsbCxcbiAgICB9KVxuICB9LCBbY2xlYXJBZ2VudCwgZW5zdXJlQWdlbnRzTG9hZGVkLCB1c2VyLmlkXSlcblxuICBjb25zdCBoYW5kbGVPcGVuU2tpbGxzID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGlmICghd2luZG93Lk1BSUFfQ0hBVF9BSV9GRUFUVVJFX0FDQ0VTU19NVUxUSV9BR0VOVFMpIHtcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBjbGVhckFnZW50KClcbiAgICBzZXRIYXNFcnJvcihmYWxzZSlcbiAgICBzZXRDdXJyZW50T3B0aW9uKG9wdGlvbnMubXlTa2lsbHMpXG4gICAgaGFuZGxlR2V0U2tpbGxzKClcbiAgICBwYXRjaE1haWFQYW5lbFNlc3Npb24odXNlci5pZCwge1xuICAgICAgYWdlbnRzTmF2QWN0aXZlOiAnbXlTa2lsbHMnLFxuICAgICAgY3VycmVudE9wdGlvbjogb3B0aW9ucy5teVNraWxscyxcbiAgICB9KVxuICB9LCBbY2xlYXJBZ2VudCwgaGFuZGxlR2V0U2tpbGxzLCB1c2VyLmlkXSlcblxuICBjb25zdCBoYW5kbGVHb1RvTWFpYWtlciA9IHVzZUNhbGxiYWNrKGFzeW5jICgpID0+IHtcbiAgICBzZXRIYXNFcnJvcihmYWxzZSlcbiAgICBsZXQgbWFpYWtlckFnZW50ID0gYWdlbnRzLmRhdGEuZmluZCgoYTogQWdlbnQpID0+IGlzTWFya2V0cGxhY2VHbG9iYWxDbG9uZUFnZW50KGEpKVxuICAgIGlmICghbWFpYWtlckFnZW50KSB7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoTWFpYSh7XG4gICAgICAgICAgcGF0aDogYGFnZW50cz9hZ2VudF90eXBlPWNsb25lJmVudGl0eT1nbG9iYWwmbGFuZz0ke21hcENPUkxhbmcoaTE4bi5sYW5ndWFnZSl9YCxcbiAgICAgICAgICBtZXRob2Q6ICdHRVQnLFxuICAgICAgICB9KVxuICAgICAgICBjb25zdCBkYXRhID0gYXdhaXQgcmVzcG9uc2UuanNvbigpXG4gICAgICAgIG1haWFrZXJBZ2VudCA9IChkYXRhLmRhdGEgfHwgW10pLmZpbmQoKGE6IEFnZW50KSA9PiBpc01hcmtldHBsYWNlR2xvYmFsQ2xvbmVBZ2VudChhKSlcbiAgICAgIH0gY2F0Y2gge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKCFtYWlha2VyQWdlbnQpIHtcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBzZXRQcm9qZWN0KG51bGwpXG4gICAgc2V0Q2xpZW50Py4obnVsbClcbiAgICBzZXRUYXNrPy4obnVsbClcbiAgICBzZWxlY3RBZ2VudChtYWlha2VyQWdlbnQpXG4gICAgc2V0Q3VycmVudE9wdGlvbihvcHRpb25zLmhvbWUpXG4gICAgaWYgKHJlc2V0U2VsZWN0ZWRDaGF0UmVmLmN1cnJlbnQpIHtcbiAgICAgIHJlc2V0U2VsZWN0ZWRDaGF0UmVmLmN1cnJlbnQoKVxuICAgIH1cbiAgICBwYXRjaE1haWFQYW5lbFNlc3Npb24odXNlci5pZCwge1xuICAgICAgYWdlbnRzTmF2QWN0aXZlOiAnbWFpYWtlcicsXG4gICAgICBjdXJyZW50T3B0aW9uOiBvcHRpb25zLmhvbWUsXG4gICAgICBhZ2VudElkOiBtYWlha2VyQWdlbnQuaWQsXG4gICAgICBhY3RpdmVDaGF0SWQ6IG51bGwsXG4gICAgfSlcbiAgfSwgW2FnZW50cy5kYXRhLCBpMThuLmxhbmd1YWdlLCBzZWxlY3RBZ2VudCwgc2V0Q2xpZW50LCBzZXRQcm9qZWN0LCBzZXRUYXNrLCB1c2VyLmlkXSlcblxuICBjb25zdCBsb2FkQWdlbnRzRm9yU2Vzc2lvblJlc3RvcmUgPSB1c2VDYWxsYmFjayhcbiAgICBhc3luYyAoc25hcHNob3Q6IE1haWFQYW5lbFNlc3Npb25TbmFwc2hvdCk6IFByb21pc2U8dm9pZD4gPT4ge1xuICAgICAgaWYgKHNuYXBzaG90LmFnZW50c05hdkFjdGl2ZSA9PT0gJ215U2tpbGxzJykge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgbGV0IGFnZW50VG9TZWxlY3Q6IEFnZW50IHwgdW5kZWZpbmVkXG4gICAgICBpZiAoc25hcHNob3QuYWdlbnRJZCAmJiBzbmFwc2hvdC5hZ2VudHNOYXZBY3RpdmUgIT09ICdteUFnZW50cycpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBhZ2VudFRvU2VsZWN0ID0gYXdhaXQgZmV0Y2hBZ2VudERldGFpbChzbmFwc2hvdC5hZ2VudElkKVxuICAgICAgICB9IGNhdGNoIHtcbiAgICAgICAgICBhZ2VudFRvU2VsZWN0ID0gdW5kZWZpbmVkXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKCFhZ2VudHNGZXRjaGVkUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgYWdlbnRzRmV0Y2hlZFJlZi5jdXJyZW50ID0gdHJ1ZVxuICAgICAgICBhd2FpdCBoYW5kbGVHZXRBZ2VudHMoc25hcHNob3QuYWdlbnRzTmF2QWN0aXZlID09PSAnbXlBZ2VudHMnID8gdW5kZWZpbmVkIDogYWdlbnRUb1NlbGVjdClcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIGlmIChhZ2VudFRvU2VsZWN0ICYmIHNuYXBzaG90LmFnZW50c05hdkFjdGl2ZSAhPT0gJ215QWdlbnRzJykge1xuICAgICAgICBzZWxlY3RBZ2VudChhZ2VudFRvU2VsZWN0KVxuICAgICAgfVxuICAgIH0sXG4gICAgW2hhbmRsZUdldEFnZW50cywgc2VsZWN0QWdlbnRdXG4gIClcblxuICBjb25zdCBhcHBseVNlc3Npb25SZXN0b3JlID0gdXNlQ2FsbGJhY2soXG4gICAgYXN5bmMgKHNuYXBzaG90OiBNYWlhUGFuZWxTZXNzaW9uU25hcHNob3QpID0+IHtcbiAgICAgIHNldElzTWluaW1pemVkKGZhbHNlKVxuICAgICAgc2V0Q2hhdFZpZXdWaXNpYmxlKHRydWUpXG5cbiAgICAgIGlmIChzbmFwc2hvdC5ob3N0Q29udGV4dD8uY2hpcHNQcm9qZWN0KSB7XG4gICAgICAgIHNldENoaXBzUHJvamVjdChzbmFwc2hvdC5ob3N0Q29udGV4dC5jaGlwc1Byb2plY3QpXG4gICAgICB9XG5cbiAgICAgIGlmIChzbmFwc2hvdC5hZ2VudHNOYXZBY3RpdmUgPT09ICdteUFnZW50cycpIHtcbiAgICAgICAgYXdhaXQgaGFuZGxlT3Blbk1hcmtldHBsYWNlKClcbiAgICAgICAgZm9jdXNDaGF0SW5wdXQoKVxuICAgICAgICBzeW5jUGFuZWxTZXNzaW9uKClcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIGlmIChzbmFwc2hvdC5hZ2VudHNOYXZBY3RpdmUgPT09ICdteVNraWxscycpIHtcbiAgICAgICAgaGFuZGxlT3BlblNraWxscygpXG4gICAgICAgIGZvY3VzQ2hhdElucHV0KClcbiAgICAgICAgc3luY1BhbmVsU2Vzc2lvbigpXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBpZiAoc25hcHNob3QuYWdlbnRzTmF2QWN0aXZlID09PSAnbWFpYWtlcicpIHtcbiAgICAgICAgYXdhaXQgaGFuZGxlR29Ub01haWFrZXIoKVxuICAgICAgICBmb2N1c0NoYXRJbnB1dCgpXG4gICAgICAgIHN5bmNQYW5lbFNlc3Npb24oKVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgaWYgKHNuYXBzaG90LmN1cnJlbnRPcHRpb24gPT09IG9wdGlvbnMuY2hhdCAmJiBzbmFwc2hvdC5hY3RpdmVDaGF0SWQpIHtcbiAgICAgICAgc2V0VXNlckluaXRpYWxNZXNzYWdlKHsgbWVzc2FnZTogJycsIGF0dGFjaG1lbnRzOiBbXSB9KVxuICAgICAgICBzZXRJbml0aWFsQ2hhdElkKHNuYXBzaG90LmFjdGl2ZUNoYXRJZClcbiAgICAgICAgZ2V0Q2hhdHNTdG9yZVN0YXRlKCkuc2V0QWN0aXZlQ2hhdElkKHNuYXBzaG90LmFjdGl2ZUNoYXRJZClcbiAgICAgICAgZG9jdW1lbnQuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoJ2NoYXQtc2Vzc2lvbi1jaGFuZ2VkJykpXG4gICAgICAgIGhhbmRsZXJzLmNoYXQoKVxuICAgICAgfSBlbHNlIGlmIChzbmFwc2hvdC5jdXJyZW50T3B0aW9uICYmIGlzVmFsaWRNYWlhUGFuZWxPcHRpb24oc25hcHNob3QuY3VycmVudE9wdGlvbikpIHtcbiAgICAgICAgc2V0Q3VycmVudE9wdGlvbihzbmFwc2hvdC5jdXJyZW50T3B0aW9uIGFzIG9wdGlvbnMpXG4gICAgICB9XG5cbiAgICAgIGZvY3VzQ2hhdElucHV0KClcbiAgICAgIHN5bmNQYW5lbFNlc3Npb24oKVxuICAgIH0sXG4gICAgW1xuICAgICAgZm9jdXNDaGF0SW5wdXQsXG4gICAgICBoYW5kbGVHb1RvTWFpYWtlcixcbiAgICAgIGhhbmRsZU9wZW5NYXJrZXRwbGFjZSxcbiAgICAgIGhhbmRsZU9wZW5Ta2lsbHMsXG4gICAgICBoYW5kbGVycyxcbiAgICAgIHNldENoYXRWaWV3VmlzaWJsZSxcbiAgICAgIHNldENoaXBzUHJvamVjdCxcbiAgICAgIHN5bmNQYW5lbFNlc3Npb24sXG4gICAgXVxuICApXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBzbmFwc2hvdCA9IHBlbmRpbmdTZXNzaW9uUmVzdG9yZVJlZi5jdXJyZW50XG4gICAgaWYgKCFzbmFwc2hvdCB8fCBzZXNzaW9uUmVzdG9yZVN0YXJ0ZWRSZWYuY3VycmVudCkgcmV0dXJuXG4gICAgc2Vzc2lvblJlc3RvcmVTdGFydGVkUmVmLmN1cnJlbnQgPSB0cnVlXG5cbiAgICBzZXRDaGF0Vmlld1Zpc2libGUodHJ1ZSlcblxuICAgIGNvbnN0IHJ1blJlc3RvcmUgPSBhc3luYyAoKSA9PiB7XG4gICAgICB0cnkge1xuICAgICAgICBhd2FpdCBsb2FkQWdlbnRzRm9yU2Vzc2lvblJlc3RvcmUoc25hcHNob3QpXG4gICAgICAgIHBlbmRpbmdTZXNzaW9uUmVzdG9yZVJlZi5jdXJyZW50ID0gbnVsbFxuICAgICAgICBhd2FpdCBhcHBseVNlc3Npb25SZXN0b3JlKHNuYXBzaG90KVxuICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgc2V0SXNSZXN0b3JpbmdTZXNzaW9uKGZhbHNlKVxuICAgICAgfVxuICAgIH1cblxuICAgIHJ1blJlc3RvcmUoKS5jYXRjaCgoKSA9PiB1bmRlZmluZWQpXG4gIH0sIFthcHBseVNlc3Npb25SZXN0b3JlLCBsb2FkQWdlbnRzRm9yU2Vzc2lvblJlc3RvcmUsIHNldENoYXRWaWV3VmlzaWJsZV0pXG5cbiAgY29uc3QgaGFuZGxlRGVsZXRlQWdlbnRGcm9tTXlBZ2VudHMgPSB1c2VDYWxsYmFjayhcbiAgICAoYWdlbnRJZDogc3RyaW5nKSA9PiB7XG4gICAgICByZW1vdmVBZ2VudChhZ2VudElkKVxuICAgICAgaWYgKGFnZW50Py5pZCA9PT0gYWdlbnRJZCkge1xuICAgICAgICBzZWxlY3RGaXJzdEFnZW50KGFnZW50SWQpXG4gICAgICB9XG4gICAgfSxcbiAgICBbYWdlbnQ/LmlkLCByZW1vdmVBZ2VudCwgc2VsZWN0Rmlyc3RBZ2VudF1cbiAgKVxuXG4gIC8vIEVsIGZvb3RlciAoaW5wdXQpIHNlIG9jdWx0YSBzb2xvIGVuIGVsIGhvbWUgbWFya2V0cGxhY2UgZGUgTWFpYWtlciAoYnJvd3NlIGRlIGFnZW50ZXMpLlxuICAvLyBFbCBob21lIGRlbCBvcmNoZXN0cmF0b3Igc8OtIHBlcm1pdGUgZXNjcmliaXIsIGFzw60gcXVlIG1hbnRpZW5lIGVsIGZvb3Rlci5cbiAgY29uc3QgaXNNYWlha2VyQ3JlYXRvckhvbWUgPSBjb21wdXRlZEN1cnJlbnRPcHRpb24gPT09IG9wdGlvbnMuaG9tZSAmJiBpc01haWFrZXJBZ2VudFNlbGVjdGVkXG5cbiAgY29uc3QgbW9kYWxQYW5lbCA9IChcbiAgICA8PlxuICAgICAge3ZhbGlkYXRlQWNjZXNzQnlGZWF0dXJlKHNlY3Rpb24sIHVzZXIpICYmICFpc0Zsb2F0aW5nID8gKFxuICAgICAgICA8U2lkZWJhclxuICAgICAgICAgIG9uR29Ub0NoYXQ9e2dvVG9DaGF0fVxuICAgICAgICAgIG9uRXJyb3I9eygpID0+IHNldFNpZGViYXJIYXNFcnJvcih0cnVlKX1cbiAgICAgICAgICBoYW5kbGVHb1RvSG9tZT17aGFuZGxlR29Ib21lfVxuICAgICAgICAgIGhhbmRsZVN0YXJ0TmV3Q2hhdD17aGFuZGxlU3RhcnROZXdDaGF0fVxuICAgICAgICAgIGhhbmRsZU9wZW5NYXJrZXRwbGFjZT17aGFuZGxlT3Blbk1hcmtldHBsYWNlfVxuICAgICAgICAgIHNob3dOZXdDaGF0PXtzaG93TmV3Q2hhdH1cbiAgICAgICAgICByZWZldGNoQ2hhdHM9e3JlZmV0Y2hDaGF0c31cbiAgICAgICAgICBoYW5kbGVTZXRSZWZldGNoQ2hhdHM9e3NldFJlZmV0Y2hDaGF0c31cbiAgICAgICAgICBoYXNFcnJvcj17c2lkZWJhckhhc0Vycm9yfVxuICAgICAgICAgIHJlc2V0U2VsZWN0ZWRDaGF0UmVmPXtyZXNldFNlbGVjdGVkQ2hhdFJlZn1cbiAgICAgICAgICBhZ2VudHNOYXZBY3RpdmU9e3NpZGViYXJBZ2VudHNOYXZBY3RpdmV9XG4gICAgICAgICAgaGFuZGxlT3BlblNraWxscz17aGFuZGxlT3BlblNraWxsc31cbiAgICAgICAgICBvbk9wZW5NYWlha2VyQ3JlYXRvcj17aGFuZGxlR29Ub01haWFrZXJ9XG4gICAgICAgICAgaXNMZWdhY3lDb250ZXh0U2Vzc2lvbj17ISFsZWdhY3lDb250ZXh0U2Vzc2lvbn1cbiAgICAgICAgICBpbml0aWFsT3Blbj17c2F2ZWRTZXNzaW9uT25Nb3VudFJlZi5jdXJyZW50Py5zaWRlYmFyT3BlbiA/PyBmYWxzZX1cbiAgICAgICAgICBvbk9wZW5DaGFuZ2U9e2hhbmRsZVNpZGViYXJPcGVuQ2hhbmdlfVxuICAgICAgICAvPlxuICAgICAgKSA6IG51bGx9XG4gICAgICA8U0NDQUlNQ29udGVudCBleHBhbmRlZD17ZXhwYW5kZWR9IGZsb2F0aW5nPXtpc0Zsb2F0aW5nfT5cbiAgICAgICAgPENoYXRBSU1vZGFsSGVhZGVyXG4gICAgICAgICAgbGF5b3V0TW9kZT17bGF5b3V0TW9kZX1cbiAgICAgICAgICBvbkxheW91dE1vZGVDaGFuZ2U9e2hhbmRsZUxheW91dE1vZGVDaGFuZ2V9XG4gICAgICAgICAgZXhwYW5kZWQ9e2V4cGFuZGVkfVxuICAgICAgICAgIGRyYWdnYWJsZT17aXNGbG9hdGluZ31cbiAgICAgICAgICBvbkRyYWdTdGFydD17aGFuZGxlRHJhZ1N0YXJ0fVxuICAgICAgICAgIG9uRHJhZ01vdmU9e2hhbmRsZURyYWdNb3ZlfVxuICAgICAgICAgIG9uRHJhZ0VuZD17aGFuZGxlRHJhZ0VuZH1cbiAgICAgICAgICBoYW5kbGVNaW5pbWl6ZT17aGFuZGxlTWluaW1pemV9XG4gICAgICAgICAgYWdlbnRzPXthZ2VudHMuZGF0YX1cbiAgICAgICAgICBoYXNFcnJvcj17ISFhZ2VudEVycm9yfVxuICAgICAgICAgIGxvYWRpbmc9e2xvYWRpbmd9XG4gICAgICAgICAgbG9hZGluZ01vcmU9e2xvYWRpbmdNb3JlfVxuICAgICAgICAgIGhhc01vcmU9e2FnZW50cy5oYXNfbW9yZX1cbiAgICAgICAgICBoYW5kbGVSZXNldENoYXQ9e2hhbmRsZVJlc2V0Q2hhdH1cbiAgICAgICAgICBvbkFnZW50VXBkYXRlPXt1cGRhdGVBZ2VudEZhdm9yaXRlfVxuICAgICAgICAgIGxvYWRNb3JlQWdlbnRzPXtsb2FkTW9yZUFnZW50c31cbiAgICAgICAgICBzb3J0QWdlbnRzTGlzdD17c29ydEFnZW50c0xpc3R9XG4gICAgICAgICAgaXNNeUFnZW50c1NlY3Rpb249e2lzTXlBZ2VudHNTZWN0aW9ufVxuICAgICAgICAgIGlzTXlTa2lsbHNTZWN0aW9uPXtpc015U2tpbGxzU2VjdGlvbn1cbiAgICAgICAgICBpc01haWFrZXJTZWN0aW9uPXtpc01haWFrZXJDcmVhdG9ySG9tZX1cbiAgICAgICAgICBzaG93QmFja0J1dHRvbj17c2hvd0JhY2tCdXR0b259XG4gICAgICAgICAgb25CYWNrPXtoYW5kbGVCYWNrfVxuICAgICAgICAvPlxuICAgICAgICB7aGFzRXJyb3IgPyAoXG4gICAgICAgICAgPE1BSUFFcnJvciAvPlxuICAgICAgICApIDogdmFsaWRhdGVBY2Nlc3NCeUZlYXR1cmUoc2VjdGlvbiwgdXNlcikgPyAoXG4gICAgICAgICAgPENoYXRBSUNvbnRlbnRcbiAgICAgICAgICAgIGN1cnJlbnRPcHRpb249e2NvbXB1dGVkQ3VycmVudE9wdGlvbn1cbiAgICAgICAgICAgIGhhbmRsZXJzPXt7IC4uLmhhbmRsZXJzLCBjaGF0OiBzdGFydENoYXQsIGhvbWU6IGhhbmRsZXJzLmhvbWUsIGhhbmRsZUdvSG9tZSB9fVxuICAgICAgICAgICAgb25FcnJvcj17KCkgPT4gc2V0SGFzRXJyb3IodHJ1ZSl9XG4gICAgICAgICAgICByZWZzPXt7IHVzZXJJbml0aWFsTWVzc2FnZSwgaW5pdGlhbENoYXRJZCB9fVxuICAgICAgICAgICAgb25TZW5kTWVzc2FnZVJlYWR5PXtoYW5kbGVTZW5kTWVzc2FnZVJlYWR5fVxuICAgICAgICAgICAgZXhwYW5kZWQ9e2V4cGFuZGVkfVxuICAgICAgICAgICAgZmxvYXRpbmc9e2lzRmxvYXRpbmd9XG4gICAgICAgICAgICBhZ2VudHM9e2FnZW50cy5kYXRhfVxuICAgICAgICAgICAgbG9hZGluZ0FnZW50cz17bG9hZGluZ31cbiAgICAgICAgICAgIG9uRGVsZXRlQWdlbnQ9e2hhbmRsZURlbGV0ZUFnZW50RnJvbU15QWdlbnRzfVxuICAgICAgICAgICAgb25GYXZvcml0ZUFnZW50VXBkYXRlPXt1cGRhdGVBZ2VudEZhdm9yaXRlfVxuICAgICAgICAgICAgaGFzTW9yZUFnZW50cz17ISFhZ2VudHMuaGFzX21vcmV9XG4gICAgICAgICAgICBsb2FkaW5nTW9yZUFnZW50cz17bG9hZGluZ01vcmV9XG4gICAgICAgICAgICBvbkxvYWRNb3JlQWdlbnRzPXtsb2FkTW9yZUFnZW50c31cbiAgICAgICAgICAgIG9uR29Ub01haWFrZXI9e2hhbmRsZUdvVG9NYWlha2VyfVxuICAgICAgICAgICAgbXlTa2lsbHM9e215U2tpbGxzfVxuICAgICAgICAgICAgc2hhcmVkU2tpbGxzPXtzaGFyZWRTa2lsbHN9XG4gICAgICAgICAgICBsb2FkaW5nU2tpbGxzPXtsb2FkaW5nU2tpbGxzfVxuICAgICAgICAgICAgb25EZWxldGVTa2lsbD17cmVtb3ZlU2tpbGx9XG4gICAgICAgICAgICBvblNlYXJjaEFnZW50cz17c2VhcmNoQ3VzdG9tQWdlbnRzfVxuICAgICAgICAgICAgc2VhcmNoTG9hZGluZ0FnZW50cz17c2VhcmNoTG9hZGluZ31cbiAgICAgICAgICAgIGFnZW50RXJyb3I9e2FnZW50RXJyb3J9XG4gICAgICAgICAgICBpc1Jlc3RvcmluZ1Nlc3Npb249e2lzUmVzdG9yaW5nU2Vzc2lvbn1cbiAgICAgICAgICAvPlxuICAgICAgICApIDogKFxuICAgICAgICAgIDxQcm9qZWN0U3VtbWFyeUNvbnRlbnQgb25SZXN0YXJ0U3VtbWFyeT17aGFuZGxlcnMuaG9tZX0gLz5cbiAgICAgICAgKX1cbiAgICAgICAgeygoY29tcHV0ZWRDdXJyZW50T3B0aW9uID09PSBvcHRpb25zLmhvbWUgJiYgISFhZ2VudHM/LmRhdGE/Lmxlbmd0aCkgfHxcbiAgICAgICAgICBjb21wdXRlZEN1cnJlbnRPcHRpb24gPT09IG9wdGlvbnMuY2hhdCkgJiZcbiAgICAgICAgICAhaXNNYWlha2VyQ3JlYXRvckhvbWUgJiZcbiAgICAgICAgICAhaGFzRXJyb3IgJiZcbiAgICAgICAgICAhbG9hZGluZyAmJlxuICAgICAgICAgIHZhbGlkYXRlQWNjZXNzQnlGZWF0dXJlKHNlY3Rpb24sIHVzZXIpICYmIChcbiAgICAgICAgICAgIDxDaGF0QWlNb2RhbEZvb3RlclxuICAgICAgICAgICAgICBhZ2VudD17YWdlbnR9XG4gICAgICAgICAgICAgIGhhbmRsZVNlbmRNZXNzYWdlPXtoYW5kbGVTZW5kTWVzc2FnZX1cbiAgICAgICAgICAgICAgaGFuZGxlU3RvcEdlbmVyYXRpb249e3N0b3BHZW5lcmF0aW9uRnVuY3Rpb259XG4gICAgICAgICAgICAgIGlzU3RyZWFtaW5nPXtpc1N0cmVhbWluZ31cbiAgICAgICAgICAgICAgaXNXcml0aW5nPXtpc1dyaXRpbmd9XG4gICAgICAgICAgICAgIGNoYXRJZD17aW5pdGlhbENoYXRJZH1cbiAgICAgICAgICAgICAgbmV3Q2hhdEtleT17bmV3Q2hhdEtleX1cbiAgICAgICAgICAgICAgdG9vbHRpcFpJbmRleD17dG9vbHRpcFpJbmRleH1cbiAgICAgICAgICAgICAgbGVnYWN5Q29udGV4dFNlc3Npb249e2xlZ2FjeUNvbnRleHRTZXNzaW9ufVxuICAgICAgICAgICAgICBvbkNvbnRpbnVlSW5OZXdDaGF0PXtoYW5kbGVDb250aW51ZUxlZ2FjeUNvbnRleHRJbk5ld0NoYXR9XG4gICAgICAgICAgICAgIGxheW91dE1vZGU9e2xheW91dE1vZGV9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICl9XG4gICAgICA8L1NDQ0FJTUNvbnRlbnQ+XG4gICAgPC8+XG4gIClcblxuICBjb25zdCBjb250ZW50V3JhcHBlciA9IChcbiAgICA8U0NDQUlNQ29udGVudFdyYXBwZXIgZXhwYW5kZWQ9e2V4cGFuZGVkfSBmbG9hdGluZz17aXNGbG9hdGluZ30gcmVmPXtjb250ZW50V3JhcHBlclJlZn0+XG4gICAgICB7bW9kYWxQYW5lbH1cbiAgICA8L1NDQ0FJTUNvbnRlbnRXcmFwcGVyPlxuICApXG5cbiAgcmV0dXJuIChcbiAgICBzZWxlY3RvciAmJlxuICAgIFJlYWN0RE9NLmNyZWF0ZVBvcnRhbChcbiAgICAgIDxTQ0NBSU1XcmFwcGVyXG4gICAgICAgIGV4cGFuZGVkPXtleHBhbmRlZH1cbiAgICAgICAgbGF5b3V0TW9kZT17bGF5b3V0TW9kZX1cbiAgICAgICAgZHJhZ1Bvc2l0aW9uPXtyZXNvbHZlZERyYWdQb3NpdGlvbn1cbiAgICAgICAgZWxldmF0ZWQ9e3NlY3Rpb24gPT09ICd0YXNrJ31cbiAgICAgICAgJG1pbmltaXplZD17aXNNaW5pbWl6ZWR9XG4gICAgICA+XG4gICAgICAgIDxTQ0NBSU1NaW5pbWl6ZWRIaWRlICRoaWRkZW49e2lzTWluaW1pemVkfT5cbiAgICAgICAgICA8RmxvYXRpbmdQYW5lbE1vdGlvbiB0aWx0PXt0aWx0TW90aW9ufSBleHBhbmRlZD17ZXhwYW5kZWR9PlxuICAgICAgICAgICAge2NvbnRlbnRXcmFwcGVyfVxuICAgICAgICAgIDwvRmxvYXRpbmdQYW5lbE1vdGlvbj5cbiAgICAgICAgPC9TQ0NBSU1NaW5pbWl6ZWRIaWRlPlxuICAgICAgICB7aXNNaW5pbWl6ZWQgJiYgKFxuICAgICAgICAgIDxNYWlhTWluaW1pemVkUGlsbFxuICAgICAgICAgICAgdW5yZWFkQ291bnQ9e3VucmVhZENvdW50fVxuICAgICAgICAgICAgaXNTdHJlYW1pbmc9e2hhc0FjdGl2ZVN0cmVhbX1cbiAgICAgICAgICAgIG9uUmVzdG9yZT17aGFuZGxlUmVzdG9yZUZyb21NaW5pbWl6ZWR9XG4gICAgICAgICAgLz5cbiAgICAgICAgKX1cbiAgICAgICAge3VzZXJIYXNQZXJtaXNzaW9ucyAmJiAoXG4gICAgICAgICAgPEFibUFnZW50TW9kYWxcbiAgICAgICAgICAgIGFkZEFnZW50PXthZGRBZ2VudH1cbiAgICAgICAgICAgIHVwZGF0ZUFnZW50PXt1cGRhdGVBZ2VudH1cbiAgICAgICAgICAgIHJlbW92ZUFnZW50PXtyZW1vdmVBZ2VudH1cbiAgICAgICAgICAgIHVwZGF0ZUFnZW50RmF2b3JpdGU9e3VwZGF0ZUFnZW50RmF2b3JpdGV9XG4gICAgICAgICAgICBzZWxlY3RGaXJzdEFnZW50PXtzZWxlY3RGaXJzdEFnZW50fVxuICAgICAgICAgIC8+XG4gICAgICAgICl9XG4gICAgICAgIHt1c2VySGFzU2tpbGxzQWNjZXNzICYmIChcbiAgICAgICAgICA8QWJtU2tpbGxNb2RhbCBhZGRTa2lsbD17YWRkU2tpbGx9IHVwZGF0ZVNraWxsSW5MaXN0PXt1cGRhdGVTa2lsbEluTGlzdH0gcmVtb3ZlU2tpbGw9e3JlbW92ZVNraWxsfSAvPlxuICAgICAgICApfVxuICAgICAgICB7dXNlckhhc1NraWxsc0FjY2VzcyAmJiA8QWJtU2tpbGxHZW5lcmF0ZU1vZGFsIC8+fVxuICAgICAgICA8U25hY2tiYXIgLz5cbiAgICAgIDwvU0NDQUlNV3JhcHBlcj4sXG4gICAgICBzZWxlY3RvclxuICAgIClcbiAgKVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQ0VBLFdBQVcsRUFDWEMsT0FBTyxFQUNQQyxRQUFRLEVBQ1JDLE1BQU0sRUFDTkMsU0FBUyxFQUNUQyxlQUFlLFFBRVYsT0FBTztBQUNkLE9BQU9DLFFBQVEsTUFBTSxXQUFXO0FBQ2hDLE9BQU9DLE1BQU0sTUFBTSxRQUFRO0FBQzNCLFNBQVNDLGNBQWMsUUFBUSxlQUFlO0FBQzlDLFNBQVNDLE9BQU8sUUFBUSwyQkFBMkI7QUFDbkQsU0FBU0MsaUJBQWlCLEVBQUVDLGlCQUFpQixRQUFRLGdDQUFnQztBQUNyRixTQUFTQyxTQUFTLFFBQVEsdUJBQXVCO0FBQ2pELFNBQVNDLHNCQUFzQixRQUFRLHVDQUF1QztBQUU5RSxTQUFTQyxhQUFhLFFBQVEsa0JBQWtCO0FBQ2hELFNBQVNDLGFBQWEsRUFBRUMsT0FBTyxRQUFRLGFBQWE7QUFDcEQsU0FBU0MsT0FBTyxRQUFRLFlBQVk7QUFDcEMsU0FBU0MsWUFBWSxRQUFRLHlDQUF5QztBQUN0RSxTQUFTQyxZQUFZLFFBQVEseUNBQXlDO0FBQ3RFLFNBQVNDLGdCQUFnQixRQUFzQixpQ0FBaUM7QUFHaEYsU0FBU0MsaUJBQWlCLFFBQVEsa0RBQWtEO0FBQ3BGLFNBQVNDLFFBQVEsUUFBUSxtQ0FBbUM7QUFDNUQsU0FBU0MscUJBQXFCLFFBQVEsMEJBQTBCO0FBQ2hFLFNBQVNDLGFBQWEsUUFBUSw2Q0FBNkM7QUFDM0UsU0FBU0MsYUFBYSxFQUFFQywwQkFBMEIsUUFBUSw2Q0FBNkM7QUFDdkcsU0FBU0MscUJBQXFCLFFBQVEsNkRBQTZEO0FBQ25HLFNBQVNDLFFBQVEsUUFBUSwyQkFBMkI7QUFDcEQs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
1565
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VDYWxsYmFjayIsInVzZU1lbW8iLCJ1c2VTdGF0ZSIsInVzZVJlZiIsInVzZUVmZmVjdCIsInVzZUxheW91dEVmZmVjdCIsIlJlYWN0RE9NIiwibW9tZW50IiwidXNlVHJhbnNsYXRpb24iLCJ1c2VVc2VyIiwiY2FuQWNjZXNzVG9DaGF0QUkiLCJjYW5BY2Nlc3NUb1NraWxscyIsIk1BSUFFcnJvciIsInVzZU1haWFUYXNrUGFuZWxaSW5kZXgiLCJDaGF0QUlDb250ZW50IiwiYnVpbGRIYW5kbGVycyIsIm9wdGlvbnMiLCJTaWRlYmFyIiwidXNlR2V0QWdlbnRzIiwidXNlR2V0U2tpbGxzIiwidXNlR2xvYmFsQ29udGV4dCIsIkNoYXRBSU1vZGFsSGVhZGVyIiwiU25hY2tiYXIiLCJQcm9qZWN0U3VtbWFyeUNvbnRlbnQiLCJBYm1BZ2VudE1vZGFsIiwiQWJtU2tpbGxNb2RhbCIsIlNLSUxMX1VTRV9BRlRFUl9TQVZFX0VWRU5UIiwiQWJtU2tpbGxHZW5lcmF0ZU1vZGFsIiwiU0VDVElPTlMiLCJTQ0NBSU1Db250ZW50IiwiU0NDQUlNQ29udGVudFdyYXBwZXIiLCJTQ0NBSU1NaW5pbWl6ZWRIaWRlIiwiU0NDQUlNV3JhcHBlciIsIk1haWFNaW5pbWl6ZWRQaWxsIiwiZ2V0TWFpYUZsb2F0aW5nUGFuZWxXaWR0aFB4IiwicmVzb2x2ZUluaXRpYWxNYWlhQ2hhdExheW91dE1vZGUiLCJzZXRTdG9yZWRNYWlhQ2hhdExheW91dE1vZGUiLCJGbG9hdGluZ1BhbmVsTW90aW9uIiwidXNlRmxvYXRpbmdQYW5lbERyYWdUaWx0IiwiQ2hhdEFpTW9kYWxGb290ZXIiLCJ2YWxpZGF0ZUlzTWFpYSIsImlzTWFya2V0cGxhY2VHbG9iYWxDbG9uZUFnZW50IiwidXNlRmFxc1N0b3JlIiwiZ2V0Q2hhdHNTdG9yZVN0YXRlIiwidXNlQ2hhdHNTdG9yZSIsInJlYWRMYXN0QWN0aXZlQ2hhdElkIiwid3JpdGVMYXN0QWN0aXZlQ2hhdElkIiwiY2xlYXJNYWlhUGFuZWxTZXNzaW9uIiwiaXNWYWxpZE1haWFQYW5lbE9wdGlvbiIsInBhdGNoTWFpYVBhbmVsU2Vzc2lvbiIsInJlYWRNYWlhUGFuZWxTZXNzaW9uIiwid3JpdGVNYWlhUGFuZWxTZXNzaW9uIiwidXNlU2Vzc2lvbnNTdG9yZSIsImlzQWN0aXZlU2Vzc2lvblN0YXR1cyIsImZldGNoTWFpYSIsImZldGNoQWdlbnREZXRhaWwiLCJtYXBDT1JMYW5nIiwiRVZFTlRTIiwidXNlRXZlbnQiLCJNQUlBX09QRU5fRlJPTV9IT1NUX0VWRU5UIiwianN4IiwiX2pzeCIsImpzeHMiLCJfanN4cyIsIkZyYWdtZW50IiwiX0ZyYWdtZW50IiwiTEVHQUNZX0NPTlRFWFRfRU5USVRJRVMiLCJpc0dsb2JhbE1haWFTZWN0aW9uIiwic2VjdGlvbiIsInJlc29sdmVBaUNoYXRCYWNrRGVzdGluYXRpb24iLCJhZ2VudFR5cGUiLCJjdXJyZW50T3B0aW9uIiwiaG9tZU9wdGlvbiIsIklEX01PREFMX0NIQVRfQUdFTlQiLCJ2YWxpZGF0ZUFjY2Vzc0J5RmVhdHVyZSIsInVzZXIiLCJCb29sZWFuIiwid2luZG93IiwiTUFJQV9DSEFUX0FJX0ZFQVRVUkVfQUNDRVNTIiwiTUFJQV9DSEFUX0FJX0ZFQVRVUkVfQUNDRVNTX01VTFRJX0FHRU5UUyIsIkNoYXRBSU1vZGFsIiwiX3NhdmVkU2Vzc2lvbk9uTW91bnRSIiwiX3NhdmVkU2Vzc2lvbk9uTW91bnRSMiIsIl9zYXZlZFNlc3Npb25Pbk1vdW50UjMiLCJfc2F2ZWRTZXNzaW9uT25Nb3VudFI0IiwiX3VzZXIkcGVybWlzc2lvbnMiLCJfdXNlciRwZXJtaXNzaW9uczIiLCJfdXNlciRwZXJtaXNzaW9uczMiLCJfc2F2ZWRTZXNzaW9uT25Nb3VudFI3IiwiX3NhdmVkU2Vzc2lvbk9uTW91bnRSOCIsIl9hZ2VudHMkZGF0YSIsIl91c2VUcmFuc2xhdGlvbiIsImFibUFnZW50IiwiaTE4biIsImFtcGxpdHVkRXZlbnQiLCJzYXZlZFNlc3Npb25Pbk1vdW50UmVmIiwiaWQiLCJzaG91bGRSZXN0b3JlRXhwYW5kZWQiLCJjdXJyZW50IiwiaXNFeHBhbmRlZCIsInBlbmRpbmdTZXNzaW9uUmVzdG9yZVJlZiIsInNlc3Npb25SZXN0b3JlU3RhcnRlZFJlZiIsIl91c2VTdGF0ZSIsIl91c2VTdGF0ZTIiLCJfc2xpY2VkVG9BcnJheSIsImlzUmVzdG9yaW5nU2Vzc2lvbiIsInNldElzUmVzdG9yaW5nU2Vzc2lvbiIsInNpZGViYXJPcGVuUmVmIiwic2lkZWJhck9wZW4iLCJfdXNlU3RhdGUzIiwiX3VzZVN0YXRlNCIsImlzTWluaW1pemVkIiwic2V0SXNNaW5pbWl6ZWQiLCJzZXRDaGF0Vmlld1Zpc2libGUiLCJzdGF0ZSIsInVucmVhZENvdW50IiwiYWN0aXZlQ2hhdElkIiwiaGFzQWN0aXZlU3RyZWFtIiwiT2JqZWN0IiwidmFsdWVzIiwibWV0YSIsInNvbWUiLCJzdGF0dXMiLCJnb1RvQ2hhdFJlZiIsImdvSG9tZVJlZiIsImhhbmRsZU1pbmltaXplIiwiYWlDaGF0TWluaW1pemUiLCJmb2N1c0NoYXRJbnB1dCIsInNldFRpbWVvdXQiLCJkb2N1bWVudCIsImRpc3BhdGNoRXZlbnQiLCJDdXN0b21FdmVudCIsIl91c2VTdGF0ZTUiLCJtZXNzYWdlIiwiYXR0YWNobWVudHMiLCJfdXNlU3RhdGU2IiwidXNlckluaXRpYWxNZXNzYWdlIiwic2V0VXNlckluaXRpYWxNZXNzYWdlIiwiX3VzZVN0YXRlNyIsIl91c2VTdGF0ZTgiLCJpbml0aWFsQ2hhdElkIiwic2V0SW5pdGlhbENoYXRJZCIsIl91c2VTdGF0ZTkiLCJfdXNlU3RhdGUwIiwibmV3Q2hhdEtleSIsInNldE5ld0NoYXRLZXkiLCJfdXNlU3RhdGUxIiwiX3VzZVN0YXRlMTAiLCJzZXNzaW9uTWV0YSIsInNldFNlc3Npb25NZXRhIiwiX3VzZVN0YXRlMTEiLCJfdXNlU3RhdGUxMiIsInNlbmRNZXNzYWdlRnVuY3Rpb24iLCJzZXRTZW5kTWVzc2FnZUZ1bmN0aW9uIiwiX3VzZVN0YXRlMTMiLCJfdXNlU3RhdGUxNCIsInN0b3BHZW5lcmF0aW9uRnVuY3Rpb24iLCJzZXRTdG9wR2VuZXJhdGlvbkZ1bmN0aW9uIiwiX3VzZVN0YXRlMTUiLCJfdXNlU3RhdGUxNiIsImlzU3RyZWFtaW5nIiwic2V0SXNTdHJlYW1pbmciLCJfdXNlU3RhdGUxNyIsIl91c2VTdGF0ZTE4IiwiaXNXcml0aW5nIiwic2V0SXNXcml0aW5nIiwiX3VzZVN0YXRlMTkiLCJfdXNlU3RhdGUyMCIsInJlZmV0Y2hDaGF0cyIsInNldFJlZmV0Y2hDaGF0cyIsIl91c2VTdGF0ZTIxIiwic2F2ZWQiLCJhZ2VudHNOYXZBY3RpdmUiLCJteUFnZW50cyIsIm15U2tpbGxzIiwic2F2ZWRPcHRpb24iLCJob21lIiwiX3VzZVN0YXRlMjIiLCJzZXRDdXJyZW50T3B0aW9uIiwiX3VzZVN0YXRlMjMiLCJfdXNlU3RhdGUyNCIsImhhc0Vycm9yIiwic2V0SGFzRXJyb3IiLCJfdXNlU3RhdGUyNSIsIl91c2VTdGF0ZTI2IiwiZGlkUmVzZXRDb250ZXh0SW5TZWN0aW9uIiwic2V0RGlkUmVzZXRDb250ZXh0SW5TZWN0aW9uIiwicHJldkhhc1Bpbm5lZENvbnRleHRSZWYiLCJoYW5kbGVycyIsIl91c2VTdGF0ZTI3IiwiX3VzZVN0YXRlMjgiLCJzaWRlYmFySGFzRXJyb3IiLCJzZXRTaWRlYmFySGFzRXJyb3IiLCJyZXNldFNlbGVjdGVkQ2hhdFJlZiIsImxhbmciLCJsYW5ndWFnZSIsImxvY2FsZSIsIl91c2VHbG9iYWxDb250ZXh0Iiwic2VsZWN0QWdlbnQiLCJjbGVhckFnZW50IiwiYWdlbnQiLCJwcm9qZWN0IiwiY2xpZW50IiwidGFzayIsImNoaXBzUHJvamVjdCIsInRvZ2dsZVdlYlNlYXJjaCIsImlzV2ViU2VhcmNoQWN0aXZlIiwic2V0Q2hpcHNQcm9qZWN0Iiwic2V0Q2xpZW50Iiwic2V0UHJvamVjdCIsImJhbm5lckVudHJ5RmFxIiwic2V0VGFzayIsInRvb2x0aXBaSW5kZXgiLCJfdXNlR2V0QWdlbnRzIiwiaGFuZGxlR29Ib21lIiwiYWdlbnRzIiwibG9hZGluZyIsImxvYWRpbmdNb3JlIiwiYWdlbnRFcnJvciIsImVycm9yIiwiaGFuZGxlR2V0QWdlbnRzIiwibG9hZE1vcmVBZ2VudHMiLCJzZWFyY2hDdXN0b21BZ2VudHMiLCJzZWFyY2hMb2FkaW5nIiwiYWRkQWdlbnQiLCJyZW1vdmVBZ2VudCIsInVwZGF0ZUFnZW50IiwidXBkYXRlQWdlbnRGYXZvcml0ZSIsInNlbGVjdEZpcnN0QWdlbnQiLCJzb3J0QWdlbnRzTGlzdCIsImFnZW50c0RhdGFSZWYiLCJkYXRhIiwiX3VzZUdldFNraWxscyIsInNoYXJlZFNraWxscyIsImxvYWRpbmdTa2lsbHMiLCJoYW5kbGVHZXRTa2lsbHMiLCJhZGRTa2lsbCIsInVwZGF0ZVNraWxsSW5MaXN0IiwicmVtb3ZlU2tpbGwiLCJpc01BSUEiLCJ1c2VySGFzUGVybWlzc2lvbnMiLCJwZXJtaXNzaW9ucyIsImFpX2FnZW50cyIsImNyZWF0ZSIsImVkaXQiLCJ1c2VySGFzU2tpbGxzQWNjZXNzIiwiY29tcHV0ZWRDdXJyZW50T3B0aW9uIiwiaXNHbG9iYWxTcGVjaWFsaXN0IiwiZW50aXR5IiwiaXNQcm9qZWN0U3BlY2lhbGlzdCIsImlzQ2xpZW50U3BlY2lhbGlzdCIsImlzTWFpYWtlciIsInR5cGUiLCJjaGF0Iiwic2hvdWxkU2hvd1Byb2plY3RTZWxlY3RvciIsInNob3VsZFNob3dDbGllbnRTZWxlY3RvciIsInByb2plY3RTZWxlY3RvciIsImNsaWVudFNlbGVjdG9yIiwibmFtZSIsImlzTWFpYWtlckFnZW50U2VsZWN0ZWQiLCJzaWRlYmFyQWdlbnRzTmF2QWN0aXZlIiwiYWdlbnRzRmV0Y2hlZFJlZiIsInNlbGVjdG9yIiwicXVlcnlTZWxlY3RvciIsImNvbmNhdCIsIl91c2VTdGF0ZTI5IiwiX3VzZVN0YXRlMzAiLCJsYXlvdXRNb2RlIiwic2V0TGF5b3V0TW9kZSIsImhhbmRsZUxheW91dE1vZGVDaGFuZ2UiLCJtb2RlIiwiZXhwYW5kZWQiLCJpc0Zsb2F0aW5nIiwiY29udGVudFdyYXBwZXJSZWYiLCJfdXNlU3RhdGUzMSIsIl9zYXZlZFNlc3Npb25Pbk1vdW50UjUiLCJfc2F2ZWRTZXNzaW9uT25Nb3VudFI2IiwiZHJhZ1Bvc2l0aW9uIiwiX3VzZVN0YXRlMzIiLCJzZXREcmFnUG9zaXRpb24iLCJfdXNlRmxvYXRpbmdQYW5lbERyYWciLCJ0aWx0TW90aW9uIiwic3RhcnRQb2ludGVyVHJhY2tpbmciLCJzYW1wbGVQb2ludGVyTW92ZSIsImVuZFBvaW50ZXJUcmFja2luZyIsImRyYWdTdGF0ZVJlZiIsImNsYW1wRHJhZ1Bvc2l0aW9uIiwieCIsInkiLCJjb250ZW50V3JhcHBlciIsIl9jb250ZW50V3JhcHBlciRnZXRCbyIsImdldEJvdW5kaW5nQ2xpZW50UmVjdCIsIndpZHRoIiwiaGVpZ2h0Iiwib2Zmc2V0IiwibWF4WCIsIk1hdGgiLCJtYXgiLCJpbm5lcldpZHRoIiwibWF4WSIsImlubmVySGVpZ2h0IiwibWluIiwicHJldiIsInBhZCIsImhhbmRsZURyYWdFbmQiLCJldmVudCIsIl9kcmFnU3RhdGVSZWYkY3VycmVudCIsInBvaW50ZXJJZCIsImJvZHkiLCJzdHlsZSIsInVzZXJTZWxlY3QiLCJjdXJzb3IiLCJyZWN0IiwibGVmdCIsInRvcCIsImhhbmRsZURyYWdNb3ZlIiwiZHJhZ1N0YXRlIiwiY2xpZW50WCIsImNsaWVudFkiLCJuZXh0UG9zaXRpb24iLCJvZmZzZXRYIiwib2Zmc2V0WSIsInJlc29sdmVkRHJhZ1Bvc2l0aW9uIiwiaGFuZGxlRHJhZ1N0YXJ0IiwiYnV0dG9uIiwidGFyZ2V0IiwiY2xvc2VzdCIsImluaXRpYWxQb3NpdGlvbiIsInBvaW50ZXJPZmZzZXRYIiwicG9pbnRlck9mZnNldFkiLCJjdXJyZW50VGFyZ2V0Iiwic2V0UG9pbnRlckNhcHR1cmUiLCJwcmV2ZW50RGVmYXVsdCIsImFpQ2hhdERyYWdnYWJsZSIsInN0YXJ0Q2hhdCIsImZhcUlkIiwiYWdlbnRTdWdnZXN0aW9uSWQiLCJtZW50aW9ucyIsImZ1YUlkIiwic2NJZCIsImNvbnRleHREYXRhIiwiX29iamVjdFNwcmVhZCIsImxlbmd0aCIsImJhbm5lckZhcUF1dG9TZW50UmVmIiwiX2Jhbm5lckVudHJ5RmFxJGZhcVRpIiwiZW50aXR5UmVhZHkiLCJmYXFUaXRsZSIsInRyaW0iLCJ1bmRlZmluZWQiLCJnb1RvQ2hhdCIsInNlc3Npb25FeHRlcm5hbElkIiwic2VsZWN0ZWRBZ2VudCIsImZpbmQiLCJhZ2VudEl0ZW0iLCJhZ2VudElkIiwiaGFuZGxlU2lkZWJhck9wZW5DaGFuZ2UiLCJvcGVuIiwic3luY1BhbmVsU2Vzc2lvbiIsIl9hZ2VudCRpZCIsImhvc3RDb250ZXh0IiwiZW5zdXJlQWdlbnRzTG9hZGVkIiwiX2FzeW5jVG9HZW5lcmF0b3IiLCJfcmVnZW5lcmF0b3JSdW50aW1lIiwibWFyayIsIl9jYWxsZWUiLCJ3cmFwIiwiX2NvbnRleHQiLCJuZXh0IiwiYWJydXB0Iiwic3RvcCIsInRpbWVyIiwiY2xlYXJUaW1lb3V0Iiwib25QYWdlSGlkZSIsImFkZEV2ZW50TGlzdGVuZXIiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwiaGFuZGxlUmVzdG9yZUZyb21NaW5pbWl6ZWQiLCJhaUNoYXRPcGVuIiwib3B0aW9uIiwidGhlbiIsIl9jaGF0cyRmaW5kIiwiX2dldENoYXRzU3RvcmVTdGF0ZSIsImNoYXRzIiwibGFzdEFjdGl2ZUNoYXRJZCIsImlzUmVhZCIsIl9nb1RvQ2hhdFJlZiRjdXJyZW50IiwiY2FsbCIsIl9nb0hvbWVSZWYkY3VycmVudCIsImFwcGx5RXhwYW5kZWRIb3N0VGFrZW92ZXIiLCJkZXRhaWwiLCJfcmVzZXRTZWxlY3RlZENoYXRSZWYiLCJfZGV0YWlsJHByb2plY3QyIiwiX2RldGFpbCRjbGllbnQyIiwiX2RldGFpbCR0YXNrMiIsImlzR2xvYmFsSGVhZGVyT3BlbiIsImdldFN0YXRlIiwiY2xlYXJGYXFzIiwic2V0QWN0aXZlQ2hhdElkIiwiX2RldGFpbCRwcm9qZWN0IiwiX2RldGFpbCRjbGllbnQiLCJfZGV0YWlsJHRhc2siLCJuZXh0TGF5b3V0IiwiZmFxIiwiX2FnZW50JGlkMiIsInJlc29sdmVkQWdlbnRJZCIsImZpcnN0QWdlbnQiLCJoYW5kbGVTZW5kTWVzc2FnZVJlYWR5Iiwic2VuZE1lc3NhZ2UiLCJzdG9wR2VuZXJhdGlvbiIsInN0cmVhbWluZyIsIndyaXRpbmciLCJoYW5kbGVTZW5kTWVzc2FnZSIsImlzX2RlbGV0ZWQiLCJoYXNfbm90X3Blcm1pc3Npb25zIiwiaGFzX25vdF9hY2Nlc3MiLCJwcm9qZWN0X2RlbGV0ZWQiLCJoYW5kbGVTdGFydE5ld0NoYXQiLCJmcm9tTXlBZ2VudHMiLCJmcm9tTXlTa2lsbHMiLCJmcm9tTWFpYWtlckhvbWUiLCJfcmVzZXRTZWxlY3RlZENoYXRSZWYyIiwiaGFuZGxlUmVzZXRDaGF0IiwiX2NhbGxlZTIiLCJfY29udGV4dDIiLCJoYW5kbGVCYWNrIiwidG8iLCJhaUNoYXRCYWNrIiwicGlubmVkIiwicHJvamVjdElkIiwid2FzUGlubmVkIiwib25NZXJnZUNyZWF0ZWRBZ2VudCIsImV2dCIsIl9yZWYzIiwibmV4dEFnZW50IiwibmF2aWdhdGVIb21lIiwib25TeW5jRWRpdGVkQWdlbnQiLCJfcmVmNCIsIm9wZW5DaGF0VmlldyIsIm9wZW5Ib21lIiwiY2xpZW50SWQiLCJvcGVuRnJvbUhvc3QiLCJfcmVmNSIsIm9wZW5OZXdDaGF0V2l0aEFnZW50IiwiX2RldGFpbCRwcm9qZWN0MyIsIl9kZXRhaWwkY2xpZW50MyIsIl9yZWY2IiwiaGFuZGxlVXNlU2tpbGxBZnRlclNhdmUiLCJfcmVmNyIsInNraWxsIiwidXNlRmlyc3RBZ2VudCIsInJlcXVlc3RBbmltYXRpb25GcmFtZSIsIm9uU2Vzc2lvbk1ldGEiLCJfcmVmOCIsImxlZ2FjeUNvbnRleHRTZXNzaW9uIiwiYWdlbnRFbnRpdHkiLCJpbmNsdWRlcyIsImNvbnRleHROYW1lIiwidGFza05hbWUiLCJwcm9qZWN0TmFtZSIsImNsaWVudE5hbWUiLCJlbnRpdHlUeXBlIiwiaXNfbGVnYWN5X2NvbnRleHQiLCJoYW5kbGVDb250aW51ZUxlZ2FjeUNvbnRleHRJbk5ld0NoYXQiLCJwSWQiLCJwTmFtZSIsImNJZCIsImNOYW1lIiwidElkIiwidGFza0lkIiwidE5hbWUiLCJvcmNoZXN0cmF0b3IiLCJhIiwiU3RyaW5nIiwic2hvd05ld0NoYXQiLCJpc015QWdlbnRzU2VjdGlvbiIsImlzTXlTa2lsbHNTZWN0aW9uIiwiaGFzUGlubmVkQ29udGV4dCIsImlzQ2hhdFZpZXciLCJpc0hvbWVTdGVwMiIsImlzSGVhZGVySG9tZVN0ZXAyIiwiaXNTZWN0aW9uUmVzZXRIb21lU3RlcDIiLCJzaG93QmFja0J1dHRvbiIsImhhbmRsZU9wZW5NYXJrZXRwbGFjZSIsIl9jYWxsZWUzIiwiX2NvbnRleHQzIiwiaGFuZGxlT3BlblNraWxscyIsImhhbmRsZUdvVG9NYWlha2VyIiwiX2NhbGxlZTQiLCJtYWlha2VyQWdlbnQiLCJyZXNwb25zZSIsIl90IiwiX2NvbnRleHQ0IiwicGF0aCIsIm1ldGhvZCIsInNlbnQiLCJqc29uIiwibG9hZEFnZW50c0ZvclNlc3Npb25SZXN0b3JlIiwiX3JlZjEiLCJfY2FsbGVlNSIsInNuYXBzaG90IiwiYWdlbnRUb1NlbGVjdCIsIl90MiIsIl9jb250ZXh0NSIsIl94IiwiYXBwbHkiLCJhcmd1bWVudHMiLCJhcHBseVNlc3Npb25SZXN0b3JlIiwiX3JlZjEwIiwiX2NhbGxlZTYiLCJfc25hcHNob3QkaG9zdENvbnRleHQiLCJfY29udGV4dDYiLCJfeDIiLCJydW5SZXN0b3JlIiwiX3JlZjExIiwiX2NhbGxlZTciLCJfY29udGV4dDciLCJmaW5pc2giLCJoYW5kbGVEZWxldGVBZ2VudEZyb21NeUFnZW50cyIsImlzTWFpYWtlckNyZWF0b3JIb21lIiwibW9kYWxQYW5lbCIsImNoaWxkcmVuIiwib25Hb1RvQ2hhdCIsIm9uRXJyb3IiLCJoYW5kbGVHb1RvSG9tZSIsImhhbmRsZVNldFJlZmV0Y2hDaGF0cyIsIm9uT3Blbk1haWFrZXJDcmVhdG9yIiwiaXNMZWdhY3lDb250ZXh0U2Vzc2lvbiIsImluaXRpYWxPcGVuIiwib25PcGVuQ2hhbmdlIiwiZmxvYXRpbmciLCJvbkxheW91dE1vZGVDaGFuZ2UiLCJkcmFnZ2FibGUiLCJvbkRyYWdTdGFydCIsIm9uRHJhZ01vdmUiLCJvbkRyYWdFbmQiLCJoYXNNb3JlIiwiaGFzX21vcmUiLCJvbkFnZW50VXBkYXRlIiwiaXNNYWlha2VyU2VjdGlvbiIsIm9uQmFjayIsInJlZnMiLCJvblNlbmRNZXNzYWdlUmVhZHkiLCJsb2FkaW5nQWdlbnRzIiwib25EZWxldGVBZ2VudCIsIm9uRmF2b3JpdGVBZ2VudFVwZGF0ZSIsImhhc01vcmVBZ2VudHMiLCJsb2FkaW5nTW9yZUFnZW50cyIsIm9uTG9hZE1vcmVBZ2VudHMiLCJvbkdvVG9NYWlha2VyIiwib25EZWxldGVTa2lsbCIsIm9uU2VhcmNoQWdlbnRzIiwic2VhcmNoTG9hZGluZ0FnZW50cyIsIm9uUmVzdGFydFN1bW1hcnkiLCJoYW5kbGVTdG9wR2VuZXJhdGlvbiIsImNoYXRJZCIsIm9uQ29udGludWVJbk5ld0NoYXQiLCJyZWYiLCJjcmVhdGVQb3J0YWwiLCJlbGV2YXRlZCIsIiRtaW5pbWl6ZWQiLCIkaGlkZGVuIiwidGlsdCIsIm9uUmVzdG9yZSJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL21vbGVjdWxlcy9DaGF0QUlNb2RhbC9DaGF0QUlNb2RhbC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbm8tbmVzdGVkLXRlcm5hcnkgKi9cbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9pbmRlbnQgKi9cbi8qIGVzbGludC1kaXNhYmxlIHJlYWN0L2pzeC1uby11c2VsZXNzLWZyYWdtZW50ICovXG4vKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55ICovXG4vKiBlc2xpbnQtZGlzYWJsZSByZWFjdC9uby1hcnJheS1pbmRleC1rZXkgKi9cbi8qIGVzbGludC1kaXNhYmxlIGpzeC1hMTF5L2NsaWNrLWV2ZW50cy1oYXZlLWtleS1ldmVudHMgKi9cbi8qIGVzbGludC1kaXNhYmxlIGpzeC1hMTF5L25vLXN0YXRpYy1lbGVtZW50LWludGVyYWN0aW9ucyAqL1xuLyogZXNsaW50LWRpc2FibGUgcmVhY3QvZnVuY3Rpb24tY29tcG9uZW50LWRlZmluaXRpb24gKi9cbi8qIGVzbGludC1kaXNhYmxlIHJlYWN0L3JlcXVpcmUtZGVmYXVsdC1wcm9wcyAqL1xuLyogZXNsaW50LWRpc2FibGUgbm8tY29uc29sZSAqL1xuaW1wb3J0IHtcbiAgdXNlQ2FsbGJhY2ssXG4gIHVzZU1lbW8sXG4gIHVzZVN0YXRlLFxuICB1c2VSZWYsXG4gIHVzZUVmZmVjdCxcbiAgdXNlTGF5b3V0RWZmZWN0LFxuICBQb2ludGVyRXZlbnQgYXMgUmVhY3RQb2ludGVyRXZlbnQsXG59IGZyb20gJ3JlYWN0J1xuaW1wb3J0IFJlYWN0RE9NIGZyb20gJ3JlYWN0LWRvbSdcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50J1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tICdyZWFjdC1pMThuZXh0J1xuaW1wb3J0IHsgdXNlVXNlciB9IGZyb20gJy4uLy4uLy4uL2NvbnRleHQvY29yLXVzZXInXG5pbXBvcnQgeyBjYW5BY2Nlc3NUb0NoYXRBSSwgY2FuQWNjZXNzVG9Ta2lsbHMgfSBmcm9tICcuLi8uLi8uLi9jb25zdGFudHMvcGVybWlzc2lvbnMnXG5pbXBvcnQgeyBNQUlBRXJyb3IgfSBmcm9tICcuLi8uLi9hdG9tcy9NQUlBRXJyb3InXG5pbXBvcnQgeyB1c2VNYWlhVGFza1BhbmVsWkluZGV4IH0gZnJvbSAnLi4vLi4vLi4vaG9va3MvdXNlTWFpYVRhc2tQYW5lbFpJbmRleCdcblxuaW1wb3J0IHsgQ2hhdEFJQ29udGVudCB9IGZyb20gJy4uL0NoYXRBSUNvbnRlbnQnXG5pbXBvcnQgeyBidWlsZEhhbmRsZXJzLCBvcHRpb25zIH0gZnJvbSAnLi9jb25zdGFudHMnXG5pbXBvcnQgeyBTaWRlYmFyIH0gZnJvbSAnLi4vU2lkZWJhcidcbmltcG9ydCB7IHVzZUdldEFnZW50cyB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL21haWEvQWdlbnRzL2dldEFnZW50cydcbmltcG9ydCB7IHVzZUdldFNraWxscyB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL21haWEvU2tpbGxzL2dldFNraWxscydcbmltcG9ydCB7IHVzZUdsb2JhbENvbnRleHQsIHR5cGUgU2VjdGlvbiB9IGZyb20gJy4uLy4uLy4uL2NvbnRleHQvZ2xvYmFsLWNvbnRleHQnXG5pbXBvcnQgeyBBdHRhY2htZW50RmlsZSB9IGZyb20gJy4uL0NoYXRGb290ZXIvQ2hhdEZvb3RlcidcbmltcG9ydCB7IENvbnRleHRNZW50aW9uIH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMvY29udGV4dE1lbnRpb24nXG5pbXBvcnQgeyBDaGF0QUlNb2RhbEhlYWRlciB9IGZyb20gJy4vY29tcG9uZW50cy9DaGF0QWlNb2RhbEhlYWRlci9DaGF0QWlNb2RhbEhlYWRlcidcbmltcG9ydCB7IFNuYWNrYmFyIH0gZnJvbSAnLi4vLi4vb3JnYW5pc21zL1NuYWNrQmFyL1NuYWNrYmFyJ1xuaW1wb3J0IHsgUHJvamVjdFN1bW1hcnlDb250ZW50IH0gZnJvbSAnLi4vUHJvamVjdFN1bW1hcnlDb250ZW50J1xuaW1wb3J0IHsgQWJtQWdlbnRNb2RhbCB9IGZyb20gJy4uLy4uL29yZ2FuaXNtcy9BYm1BZ2VudE1vZGFsL0FibUFnZW50TW9kYWwnXG5pbXBvcnQgeyBBYm1Ta2lsbE1vZGFsLCBTS0lMTF9VU0VfQUZURVJfU0FWRV9FVkVOVCB9IGZyb20gJy4uLy4uL29yZ2FuaXNtcy9BYm1Ta2lsbE1vZGFsL0FibVNraWxsTW9kYWwnXG5pbXBvcnQgeyBBYm1Ta2lsbEdlbmVyYXRlTW9kYWwgfSBmcm9tICcuLi8uLi9vcmdhbmlzbXMvQWJtU2tpbGxHZW5lcmF0ZU1vZGFsL0FibVNraWxsR2VuZXJhdGVNb2RhbCdcbmltcG9ydCB7IFNFQ1RJT05TIH0gZnJvbSAnLi4vLi4vLi4vY29uc3RhbnRzL2NvbmZpZydcbmltcG9ydCB7IFNDQ0FJTUNvbnRlbnQsIFNDQ0FJTUNvbnRlbnRXcmFwcGVyLCBTQ0NBSU1NaW5pbWl6ZWRIaWRlLCBTQ0NBSU1XcmFwcGVyIH0gZnJvbSAnLi9DaGF0QUlNb2RhbC5zdHlsZXMnXG5pbXBvcnQgeyBNYWlhTWluaW1pemVkUGlsbCB9IGZyb20gJy4vY29tcG9uZW50cy9NYWlhTWluaW1pemVkUGlsbCdcbmltcG9ydCB7XG4gIGdldE1haWFGbG9hdGluZ1BhbmVsV2lkdGhQeCxcbiAgTWFpYUNoYXRNb2RhbExheW91dE1vZGUsXG4gIHJlc29sdmVJbml0aWFsTWFpYUNoYXRMYXlvdXRNb2RlLFxuICBzZXRTdG9yZWRNYWlhQ2hhdExheW91dE1vZGUsXG59IGZyb20gJy4vbGF5b3V0J1xuaW1wb3J0IHsgRmxvYXRpbmdQYW5lbE1vdGlvbiwgdXNlRmxvYXRpbmdQYW5lbERyYWdUaWx0IH0gZnJvbSAnLi9mbG9hdGluZ1BhbmVsTW90aW9uJ1xuaW1wb3J0IHsgQ2hhdEFpTW9kYWxGb290ZXIgfSBmcm9tICcuL2NvbXBvbmVudHMvQ2hhdEFpTW9kYWxGb290ZXInXG5pbXBvcnQgeyB2YWxpZGF0ZUlzTWFpYSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3V0aWxzL3ZhbGlkYXRlSXNNYWlhJ1xuaW1wb3J0IHsgaXNNYXJrZXRwbGFjZUdsb2JhbENsb25lQWdlbnQgfSBmcm9tICcuLi8uLi8uLi91dGlscy9hZ2VudERpc3BsYXlOYW1lJ1xuaW1wb3J0IHsgQWdlbnQgfSBmcm9tICcuLi8uLi8uLi90eXBlcy9hZ2VudCdcbmltcG9ydCB7IFNraWxsIH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMvc2tpbGwnXG5pbXBvcnQgeyBQcm9qZWN0IH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMvUHJvamVjdCdcbmltcG9ydCB7IENsaWVudCB9IGZyb20gJy4uLy4uLy4uL3R5cGVzL0NsaWVudCdcbmltcG9ydCB7IFRhc2sgfSBmcm9tICcuLi8uLi8uLi90eXBlcy9UYXNrJ1xuaW1wb3J0IHsgdXNlRmFxc1N0b3JlIH0gZnJvbSAnLi4vLi4vLi4vc3RvcmUvdXNlRmFxc1N0b3JlJ1xuaW1wb3J0IHsgZ2V0Q2hhdHNTdG9yZVN0YXRlLCB1c2VDaGF0c1N0b3JlIH0gZnJvbSAnLi4vLi4vLi4vc3RvcmUvdXNlQ2hhdHNTdG9yZSdcbmltcG9ydCB0eXBlIHsgQ2hhdExpc3RJdGVtIH0gZnJvbSAnLi4vLi4vLi4vc3RvcmUvY2hhdHNTdG9yZS50eXBlcydcbmltcG9ydCB7IHJlYWRMYXN0QWN0aXZlQ2hhdElkLCB3cml0ZUxhc3RBY3RpdmVDaGF0SWQgfSBmcm9tICcuLi8uLi8uLi9zdG9yZS9tYWlhTGFzdENoYXRQZXJzaXN0ZW5jZSdcbmltcG9ydCB7XG4gIGNsZWFyTWFpYVBhbmVsU2Vzc2lvbixcbiAgaXNWYWxpZE1haWFQYW5lbE9wdGlvbixcbiAgcGF0Y2hNYWlhUGFuZWxTZXNzaW9uLFxuICByZWFkTWFpYVBhbmVsU2Vzc2lvbixcbiAgdHlwZSBNYWlhUGFuZWxTZXNzaW9uU25hcHNob3QsXG4gIHdyaXRlTWFpYVBhbmVsU2Vzc2lvbixcbn0gZnJvbSAnLi4vLi4vLi4vc3RvcmUvbWFpYVBhbmVsU2Vzc2lvblBlcnNpc3RlbmNlJ1xuaW1wb3J0IHsgdXNlU2Vzc2lvbnNTdG9yZSB9IGZyb20gJy4uLy4uLy4uL3N0b3JlL3Nlc3Npb25zL3VzZVNlc3Npb25zU3RvcmUnXG5pbXBvcnQgeyBpc0FjdGl2ZVNlc3Npb25TdGF0dXMgfSBmcm9tICcuLi8uLi8uLi9zdG9yZS9zZXNzaW9ucy9zZXNzaW9ucy50eXBlcydcbmltcG9ydCB7IGZldGNoTWFpYSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL21haWEvY2xpZW50J1xuaW1wb3J0IHsgZmV0Y2hBZ2VudERldGFpbCB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL21haWEvQWdlbnRzL2ZldGNoQWdlbnREZXRhaWwnXG5pbXBvcnQgeyBtYXBDT1JMYW5nIH0gZnJvbSAnLi4vLi4vLi4vbGFuZy91dGlscydcbmltcG9ydCB7IEVWRU5UUywgdXNlRXZlbnQgfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VFdmVudCdcbmltcG9ydCB7IE1BSUFfT1BFTl9GUk9NX0hPU1RfRVZFTlQsIHR5cGUgTWFpYUhvc3RPcGVuRGV0YWlsIH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvbWFpYUhvc3RPcGVuJ1xuXG4vKiogTWV0YWRhdGEgZGUgbGEgc2Vzc2lvbiBhYmllcnRhIChlbWl0aWRhIHBvciB1c2VDaGF0TWVzc2FnZXMgYWwgY2FyZ2FyIHVuYSBjb252ZXJzYWNpw7NuKS4gKi9cbnR5cGUgU2Vzc2lvbk1ldGEgPSB7XG4gIGNoYXRJZDogc3RyaW5nXG4gIGFnZW50VHlwZT86IHN0cmluZ1xuICBhZ2VudEVudGl0eT86IHN0cmluZ1xuICBwcm9qZWN0SWQ/OiBudW1iZXJcbiAgcHJvamVjdE5hbWU/OiBzdHJpbmdcbiAgY2xpZW50SWQ/OiBudW1iZXJcbiAgY2xpZW50TmFtZT86IHN0cmluZ1xuICB0YXNrSWQ/OiBudW1iZXJcbiAgdGFza05hbWU/OiBzdHJpbmdcbn1cblxuY29uc3QgTEVHQUNZX0NPTlRFWFRfRU5USVRJRVMgPSBbJ3Byb2plY3QnLCAndGFzaycsICdjbGllbnQnXSBhcyBjb25zdFxudHlwZSBMZWdhY3lDb250ZXh0RW50aXR5ID0gKHR5cGVvZiBMRUdBQ1lfQ09OVEVYVF9FTlRJVElFUylbbnVtYmVyXVxuXG50eXBlIEFpQ2hhdEJhY2tEZXN0aW5hdGlvbiA9ICdnbG9iYWxfY29udGV4dF9ob21lJyB8ICd0YXNrX2hvbWUnIHwgJ3BsYW5uZXJfaG9tZScgfCAncHJvamVjdF9ob21lJyB8ICdjbGllbnRfaG9tZSdcblxuLyoqIEhvbWUgZ2xvYmFsIGRlbCBvcmNoZXN0cmF0b3IgKHNvbG8gaGVhZGVyKS4gUGxhbm5lciBlcyBob21lIGRlIEZVQXMsIG5vIGRlIGNvbnRleHRvcy4gKi9cbmNvbnN0IGlzR2xvYmFsTWFpYVNlY3Rpb24gPSAoc2VjdGlvbjogU2VjdGlvbik6IGJvb2xlYW4gPT4gc2VjdGlvbiA9PT0gJ2hlYWRlcidcblxuY29uc3QgcmVzb2x2ZUFpQ2hhdEJhY2tEZXN0aW5hdGlvbiA9IChcbiAgc2VjdGlvbjogU2VjdGlvbixcbiAgYWdlbnRUeXBlOiBBZ2VudFsndHlwZSddIHwgdW5kZWZpbmVkLFxuICBjdXJyZW50T3B0aW9uOiBzdHJpbmcsXG4gIGhvbWVPcHRpb246IHN0cmluZ1xuKTogQWlDaGF0QmFja0Rlc3RpbmF0aW9uID0+IHtcbiAgaWYgKGlzR2xvYmFsTWFpYVNlY3Rpb24oc2VjdGlvbikgJiYgYWdlbnRUeXBlID09PSAnb3JjaGVzdHJhdG9yJyAmJiBjdXJyZW50T3B0aW9uID09PSBob21lT3B0aW9uKSB7XG4gICAgcmV0dXJuICdnbG9iYWxfY29udGV4dF9ob21lJ1xuICB9XG4gIGlmIChzZWN0aW9uID09PSAndGFzaycpIHJldHVybiAndGFza19ob21lJ1xuICBpZiAoc2VjdGlvbiA9PT0gJ3BsYW5uZXInKSByZXR1cm4gJ3BsYW5uZXJfaG9tZSdcbiAgaWYgKHNlY3Rpb24gPT09ICdwcm9qZWN0JykgcmV0dXJuICdwcm9qZWN0X2hvbWUnXG4gIGlmIChzZWN0aW9uID09PSAnY2xpZW50JykgcmV0dXJuICdjbGllbnRfaG9tZSdcbiAgcmV0dXJuICdnbG9iYWxfY29udGV4dF9ob21lJ1xufVxuXG5leHBvcnQgY29uc3QgSURfTU9EQUxfQ0hBVF9BR0VOVCA9ICdtb2RhbHMtcG9ydGFsLW1haWEtY2hhdC1hZ2VudCdcblxuY29uc3QgdmFsaWRhdGVBY2Nlc3NCeUZlYXR1cmUgPSAoc2VjdGlvbjogU2VjdGlvbiB8IG51bGwgfCB1bmRlZmluZWQsIHVzZXI6IFJldHVyblR5cGU8dHlwZW9mIHVzZVVzZXI+KSA9PiB7XG4gIGlmICghc2VjdGlvbiB8fCAhY2FuQWNjZXNzVG9DaGF0QUkodXNlcikpIHtcbiAgICByZXR1cm4gZmFsc2VcbiAgfVxuXG4gIC8vIFBsYW5uZXIgeSB0YXNrIGFicmVuIHNpZW1wcmUgZWwgY2hhdCAoaG9tZSBkZSBGVUFzKSwgbnVuY2EgcmVzdW1lbiBkZSBwcm95ZWN0b3MuXG4gIGlmIChzZWN0aW9uID09PSAncGxhbm5lcicgfHwgc2VjdGlvbiA9PT0gJ3Rhc2snKSB7XG4gICAgcmV0dXJuIHRydWVcbiAgfVxuXG4gIGlmIChzZWN0aW9uID09PSAnaGVhZGVyJykge1xuICAgIHJldHVybiBCb29sZWFuKHdpbmRvdy5NQUlBX0NIQVRfQUlfRkVBVFVSRV9BQ0NFU1MgfHwgd2luZG93Lk1BSUFfQ0hBVF9BSV9GRUFUVVJFX0FDQ0VTU19NVUxUSV9BR0VOVFMpXG4gIH1cblxuICByZXR1cm4gQm9vbGVhbih3aW5kb3cuTUFJQV9DSEFUX0FJX0ZFQVRVUkVfQUNDRVNTKVxufVxuXG5leHBvcnQgY29uc3QgQ2hhdEFJTW9kYWwgPSAoKSA9PiB7XG4gIGNvbnN0IHVzZXIgPSB1c2VVc2VyKClcbiAgY29uc3QgeyBpMThuIH0gPSB1c2VUcmFuc2xhdGlvbihbU0VDVElPTlMuYWJtQWdlbnRdKVxuICBjb25zdCBhbXBsaXR1ZEV2ZW50ID0gdXNlRXZlbnQoKVxuXG4gIGNvbnN0IHNhdmVkU2Vzc2lvbk9uTW91bnRSZWYgPSB1c2VSZWY8TWFpYVBhbmVsU2Vzc2lvblNuYXBzaG90IHwgbnVsbD4ocmVhZE1haWFQYW5lbFNlc3Npb24odXNlci5pZCkpXG4gIGNvbnN0IHNob3VsZFJlc3RvcmVFeHBhbmRlZCA9IHNhdmVkU2Vzc2lvbk9uTW91bnRSZWYuY3VycmVudD8uaXNFeHBhbmRlZCA/PyBmYWxzZVxuICBjb25zdCBwZW5kaW5nU2Vzc2lvblJlc3RvcmVSZWYgPSB1c2VSZWY8TWFpYVBhbmVsU2Vzc2lvblNuYXBzaG90IHwgbnVsbD4oXG4gICAgc2hvdWxkUmVzdG9yZUV4cGFuZGVkID8gc2F2ZWRTZXNzaW9uT25Nb3VudFJlZi5jdXJyZW50IDogbnVsbFxuICApXG4gIGNvbnN0IHNlc3Npb25SZXN0b3JlU3RhcnRlZFJlZiA9IHVzZVJlZihmYWxzZSlcbiAgY29uc3QgW2lzUmVzdG9yaW5nU2Vzc2lvbiwgc2V0SXNSZXN0b3JpbmdTZXNzaW9uXSA9IHVzZVN0YXRlKCgpID0+IHBlbmRpbmdTZXNzaW9uUmVzdG9yZVJlZi5jdXJyZW50ICE9IG51bGwpXG4gIGNvbnN0IHNpZGViYXJPcGVuUmVmID0gdXNlUmVmKHNhdmVkU2Vzc2lvbk9uTW91bnRSZWYuY3VycmVudD8uc2lkZWJhck9wZW4gPz8gZmFsc2UpXG5cbiAgLy8gVHJhcyBuYXZlZ2FyIGVuIGVsIGhvc3QgKGZ1bGwgcGFnZSByZWxvYWQpLCByZXN0YXVyYW1vcyBlbCBwYW5lbCBzaSBlc3RhYmEgYWJpZXJ0by5cbiAgY29uc3QgW2lzTWluaW1pemVkLCBzZXRJc01pbmltaXplZF0gPSB1c2VTdGF0ZSgoKSA9PiAhc2hvdWxkUmVzdG9yZUV4cGFuZGVkKVxuICBjb25zdCBzZXRDaGF0Vmlld1Zpc2libGUgPSB1c2VDaGF0c1N0b3JlKHN0YXRlID0+IHN0YXRlLnNldENoYXRWaWV3VmlzaWJsZSlcbiAgY29uc3QgdW5yZWFkQ291bnQgPSB1c2VDaGF0c1N0b3JlKHN0YXRlID0+IHN0YXRlLnVucmVhZENvdW50KVxuICBjb25zdCBhY3RpdmVDaGF0SWQgPSB1c2VDaGF0c1N0b3JlKHN0YXRlID0+IHN0YXRlLmFjdGl2ZUNoYXRJZClcbiAgLy8gTG9zIFwiLi4uXCIgZGVsIHBpbGwgc2FsZW4gZGVsIG1vdG9yLCBubyBkZSBpc1N0cmVhbWluZy9pc1dyaXRpbmc6IGVzb3MgcmVmbGVqYW5cbiAgLy8gbGEgc2VzacOzbiBhY3RpdmEgeSBxdWVkYW4gc3RhbGUgY3VhbmRvIHVuYSByZXNwdWVzdGEgdGVybWluYSBlbiBiYWNrZ3JvdW5kLlxuICBjb25zdCBoYXNBY3RpdmVTdHJlYW0gPSB1c2VTZXNzaW9uc1N0b3JlKHN0YXRlID0+XG4gICAgT2JqZWN0LnZhbHVlcyhzdGF0ZS5tZXRhKS5zb21lKG1ldGEgPT4gaXNBY3RpdmVTZXNzaW9uU3RhdHVzKG1ldGEuc3RhdHVzKSlcbiAgKVxuXG4gIC8qKiBnb1RvQ2hhdCAvIGhhbmRsZUdvSG9tZSBzZSBkZWZpbmVuIG3DoXMgYWJham87IGxvcyByZWZzIGV2aXRhbiBkZXBlbmRlciBkZWwgb3JkZW4gZGUgZGVjbGFyYWNpw7NuLiAqL1xuICBjb25zdCBnb1RvQ2hhdFJlZiA9IHVzZVJlZjwoKGNoYXQ6IENoYXRMaXN0SXRlbSkgPT4gdm9pZCkgfCBudWxsPihudWxsKVxuICBjb25zdCBnb0hvbWVSZWYgPSB1c2VSZWY8KCgpID0+IHZvaWQpIHwgbnVsbD4obnVsbClcblxuICAvLyBNb250YSBjZXJyYWRhIHNhbHZvIHJlc3RhdXJhY2nDs24gZGUgc2VzacOzbjogc2kgZWwgcGFuZWwgbm8gZXN0w6EgdmlzaWJsZSwgbGFzIHJlc3B1ZXN0YXNcbiAgLy8gbnVldmFzIHF1ZWRhbiBjb21vIG5vIGxlw61kYXMuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFwZW5kaW5nU2Vzc2lvblJlc3RvcmVSZWYuY3VycmVudCkge1xuICAgICAgc2V0Q2hhdFZpZXdWaXNpYmxlKGZhbHNlKVxuICAgIH1cbiAgfSwgW3NldENoYXRWaWV3VmlzaWJsZV0pXG5cbiAgLy8gUGVyc2lzdGltb3MgbGEgY29udmVyc2FjacOzbiBhYmllcnRhIHBhcmEgcG9kZXIgdm9sdmVyIGEgZWxsYSBkZXNkZSBlbCBwaWxsIGRlc3B1w6lzXG4gIC8vIGRlIG5hdmVnYXIgbyByZWZyZXNjYXIuIEVsIHRha2VvdmVyIGRlc2RlIHVuIGhvc3QgbGEgbGltcGlhICh2YSBhbCBIb21lKS5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoYWN0aXZlQ2hhdElkKSB7XG4gICAgICB3cml0ZUxhc3RBY3RpdmVDaGF0SWQodXNlci5pZCwgYWN0aXZlQ2hhdElkKVxuICAgIH1cbiAgfSwgW2FjdGl2ZUNoYXRJZCwgdXNlci5pZF0pXG5cbiAgY29uc3QgaGFuZGxlTWluaW1pemUgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgYW1wbGl0dWRFdmVudChFVkVOVFMuYWlDaGF0TWluaW1pemUpXG4gICAgc2V0SXNNaW5pbWl6ZWQodHJ1ZSlcbiAgICBzZXRDaGF0Vmlld1Zpc2libGUoZmFsc2UpXG4gICAgd3JpdGVNYWlhUGFuZWxTZXNzaW9uKHVzZXIuaWQsIHsgaXNFeHBhbmRlZDogZmFsc2UgfSlcbiAgfSwgW2FtcGxpdHVkRXZlbnQsIHNldENoYXRWaWV3VmlzaWJsZSwgdXNlci5pZF0pXG5cbiAgY29uc3QgZm9jdXNDaGF0SW5wdXQgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgd2luZG93LnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgZG9jdW1lbnQuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoJ21haWEtaW5wdXQtcmVmb2N1cycpKVxuICAgIH0sIDEwMClcbiAgfSwgW10pXG5cbiAgY29uc3QgW3VzZXJJbml0aWFsTWVzc2FnZSwgc2V0VXNlckluaXRpYWxNZXNzYWdlXSA9IHVzZVN0YXRlPHtcbiAgICBtZXNzYWdlOiBzdHJpbmdcbiAgICBhdHRhY2htZW50czogQXR0YWNobWVudEZpbGVbXVxuICAgIGZhcUlkPzogc3RyaW5nXG4gICAgYWdlbnRTdWdnZXN0aW9uSWQ/OiBzdHJpbmdcbiAgICBtZW50aW9ucz86IENvbnRleHRNZW50aW9uW11cbiAgICBmdWFJZD86IHN0cmluZ1xuICAgIHNjSWQ/OiBzdHJpbmdcbiAgICBjb250ZXh0RGF0YT86IFJlY29yZDxzdHJpbmcsIHVua25vd24+XG4gIH0+KHtcbiAgICBtZXNzYWdlOiAnJyxcbiAgICBhdHRhY2htZW50czogW10sXG4gIH0pXG4gIGNvbnN0IFtpbml0aWFsQ2hhdElkLCBzZXRJbml0aWFsQ2hhdElkXSA9IHVzZVN0YXRlPHN0cmluZyB8IG51bGw+KG51bGwpXG4gIGNvbnN0IFtuZXdDaGF0S2V5LCBzZXROZXdDaGF0S2V5XSA9IHVzZVN0YXRlKDApXG4gIGNvbnN0IFtzZXNzaW9uTWV0YSwgc2V0U2Vzc2lvbk1ldGFdID0gdXNlU3RhdGU8U2Vzc2lvbk1ldGEgfCBudWxsPihudWxsKVxuICBjb25zdCBbc2VuZE1lc3NhZ2VGdW5jdGlvbiwgc2V0U2VuZE1lc3NhZ2VGdW5jdGlvbl0gPSB1c2VTdGF0ZTxcbiAgICB8ICgoXG4gICAgICAgIG1lc3NhZ2U6IHN0cmluZyxcbiAgICAgICAgYXR0YWNobWVudHM/OiBBdHRhY2htZW50RmlsZVtdLFxuICAgICAgICBmYXFJZD86IHN0cmluZyxcbiAgICAgICAgYWdlbnRTdWdnZXN0aW9uSWQ/OiBzdHJpbmcsXG4gICAgICAgIG1lbnRpb25zPzogQ29udGV4dE1lbnRpb25bXSxcbiAgICAgICAgZnVhSWQ/OiBzdHJpbmcsXG4gICAgICAgIHNjSWQ/OiBzdHJpbmdcbiAgICAgICkgPT4gdm9pZClcbiAgICB8IG51bGxcbiAgPihudWxsKVxuICBjb25zdCBbc3RvcEdlbmVyYXRpb25GdW5jdGlvbiwgc2V0U3RvcEdlbmVyYXRpb25GdW5jdGlvbl0gPSB1c2VTdGF0ZTwoKCkgPT4gdm9pZCkgfCBudWxsPihudWxsKVxuICBjb25zdCBbaXNTdHJlYW1pbmcsIHNldElzU3RyZWFtaW5nXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBbaXNXcml0aW5nLCBzZXRJc1dyaXRpbmddID0gdXNlU3RhdGUoZmFsc2UpXG5cbiAgY29uc3QgW3JlZmV0Y2hDaGF0cywgc2V0UmVmZXRjaENoYXRzXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBbY3VycmVudE9wdGlvbiwgc2V0Q3VycmVudE9wdGlvbl0gPSB1c2VTdGF0ZTxvcHRpb25zPigoKSA9PiB7XG4gICAgY29uc3Qgc2F2ZWQgPSBzYXZlZFNlc3Npb25Pbk1vdW50UmVmLmN1cnJlbnRcbiAgICBpZiAoc2F2ZWQ/LmFnZW50c05hdkFjdGl2ZSA9PT0gJ215QWdlbnRzJykgcmV0dXJuIG9wdGlvbnMubXlBZ2VudHNcbiAgICBpZiAoc2F2ZWQ/LmFnZW50c05hdkFjdGl2ZSA9PT0gJ215U2tpbGxzJyAmJiBjYW5BY2Nlc3NUb1NraWxscyh1c2VyKSkgcmV0dXJuIG9wdGlvbnMubXlTa2lsbHNcbiAgICBjb25zdCBzYXZlZE9wdGlvbiA9IHNhdmVkPy5jdXJyZW50T3B0aW9uXG4gICAgcmV0dXJuIHNhdmVkT3B0aW9uICYmIGlzVmFsaWRNYWlhUGFuZWxPcHRpb24oc2F2ZWRPcHRpb24pID8gKHNhdmVkT3B0aW9uIGFzIG9wdGlvbnMpIDogb3B0aW9ucy5ob21lXG4gIH0pXG4gIGNvbnN0IFtoYXNFcnJvciwgc2V0SGFzRXJyb3JdID0gdXNlU3RhdGUoZmFsc2UpXG4gIC8vIEVuIHByb2plY3QvY2xpZW50L3Rhc2s6IGVsIHVzdWFyaW8gcmVpbmljacOzIGVsIGNvbnRleHRvIGRlbCBvcmNoZXN0cmF0b3IgKGxvIGxpbXBpw7MgeSBwYXPDsyBwb3JcbiAgLy8gZWwgc2VsZWN0b3IgZGUgY29udGV4dG9zIHJlY2llbnRlcykuIEhhYmlsaXRhIGVsIGJvdMOzbiBcInZvbHZlclwiIGVuIGVsIGhvbWUgcGFzbyAyIGRlIGVzYXNcbiAgLy8gc2VjY2lvbmVzLiBTZSByZXNldGVhIGFsIGNlcnJhci9yZWFicmlyIGVsIG1vZGFsIChlbCBjb21wb25lbnRlIHNlIGRlc21vbnRhKS5cbiAgY29uc3QgW2RpZFJlc2V0Q29udGV4dEluU2VjdGlvbiwgc2V0RGlkUmVzZXRDb250ZXh0SW5TZWN0aW9uXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBwcmV2SGFzUGlubmVkQ29udGV4dFJlZiA9IHVzZVJlZihmYWxzZSlcbiAgY29uc3QgaGFuZGxlcnMgPSB1c2VNZW1vKCgpID0+IGJ1aWxkSGFuZGxlcnMoc2V0Q3VycmVudE9wdGlvbiwgc2V0SGFzRXJyb3IpLCBbXSlcbiAgY29uc3QgW3NpZGViYXJIYXNFcnJvciwgc2V0U2lkZWJhckhhc0Vycm9yXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCByZXNldFNlbGVjdGVkQ2hhdFJlZiA9IHVzZVJlZjwoKCkgPT4gdm9pZCkgfCBudWxsPihudWxsKVxuICBjb25zdCBsYW5nID0gaTE4bi5sYW5ndWFnZSA9PT0gJ2JyJyA/ICdwdC1icicgOiBpMThuLmxhbmd1YWdlXG5cbiAgbW9tZW50LmxvY2FsZShsYW5nKVxuXG4gIGNvbnN0IHtcbiAgICBzZWxlY3RBZ2VudCxcbiAgICBjbGVhckFnZW50LFxuICAgIHNlY3Rpb24sXG4gICAgYWdlbnQsXG4gICAgcHJvamVjdCxcbiAgICBjbGllbnQsXG4gICAgdGFzayxcbiAgICBjaGlwc1Byb2plY3QsXG4gICAgdG9nZ2xlV2ViU2VhcmNoLFxuICAgIGlzV2ViU2VhcmNoQWN0aXZlLFxuICAgIHNldENoaXBzUHJvamVjdCxcbiAgICBzZXRDbGllbnQsXG4gICAgc2V0UHJvamVjdCxcbiAgICBiYW5uZXJFbnRyeUZhcSxcbiAgICBzZXRUYXNrLFxuICB9ID0gdXNlR2xvYmFsQ29udGV4dCgpXG5cbiAgLy8gWi1pbmRleCBwYXJhIHRvb2x0aXBzIGVuIHNlY3Rpb24gJ3Rhc2snIChtb2RhbCBmbG90YW50ZSBlbGV2YWRvKVxuICBjb25zdCB0b29sdGlwWkluZGV4ID0gdXNlTWFpYVRhc2tQYW5lbFpJbmRleCgxNTAwLCAnb3ZlcmxheScpXG5cbiAgY29uc3Qge1xuICAgIGFnZW50cyxcbiAgICBsb2FkaW5nLFxuICAgIGxvYWRpbmdNb3JlLFxuICAgIGVycm9yOiBhZ2VudEVycm9yLFxuICAgIGhhbmRsZUdldEFnZW50cyxcbiAgICBsb2FkTW9yZUFnZW50cyxcbiAgICBzZWFyY2hDdXN0b21BZ2VudHMsXG4gICAgc2VhcmNoTG9hZGluZyxcbiAgICBhZGRBZ2VudCxcbiAgICByZW1vdmVBZ2VudCxcbiAgICB1cGRhdGVBZ2VudCxcbiAgICB1cGRhdGVBZ2VudEZhdm9yaXRlLFxuICAgIHNlbGVjdEZpcnN0QWdlbnQsXG4gICAgc29ydEFnZW50c0xpc3QsXG4gIH0gPSB1c2VHZXRBZ2VudHMoeyBzZWxlY3RBZ2VudCwgc2VjdGlvbiwgYWdlbnQsIGhhbmRsZUdvSG9tZTogaGFuZGxlcnMuaG9tZSB9KVxuXG4gIGNvbnN0IGFnZW50c0RhdGFSZWYgPSB1c2VSZWYoYWdlbnRzLmRhdGEpXG4gIGFnZW50c0RhdGFSZWYuY3VycmVudCA9IGFnZW50cy5kYXRhXG5cbiAgY29uc3Qge1xuICAgIG15U2tpbGxzLFxuICAgIHNoYXJlZFNraWxscyxcbiAgICBsb2FkaW5nOiBsb2FkaW5nU2tpbGxzLFxuICAgIGhhbmRsZUdldFNraWxscyxcbiAgICBhZGRTa2lsbCxcbiAgICB1cGRhdGVTa2lsbEluTGlzdCxcbiAgICByZW1vdmVTa2lsbCxcbiAgfSA9IHVzZUdldFNraWxscygpXG5cbiAgY29uc3QgaXNNQUlBID0gdmFsaWRhdGVJc01haWEoYWdlbnQgYXMgQWdlbnQpXG5cbiAgY29uc3QgdXNlckhhc1Blcm1pc3Npb25zID1cbiAgICAodXNlcj8ucGVybWlzc2lvbnM/LmFpX2FnZW50cz8uY3JlYXRlIHx8XG4gICAgICB1c2VyPy5wZXJtaXNzaW9ucz8uYWlfYWdlbnRzPy5lZGl0IHx8XG4gICAgICB1c2VyPy5wZXJtaXNzaW9ucz8uYWlfYWdlbnRzPy5kZWxldGUpICYmXG4gICAgd2luZG93Lk1BSUFfQ0hBVF9BSV9GRUFUVVJFX0FDQ0VTU19NVUxUSV9BR0VOVFNcblxuICBjb25zdCB1c2VySGFzU2tpbGxzQWNjZXNzID0gY2FuQWNjZXNzVG9Ta2lsbHModXNlcilcblxuICBjb25zdCBjb21wdXRlZEN1cnJlbnRPcHRpb24gPSB1c2VNZW1vKCgpID0+IHtcbiAgICBjb25zdCBpc0dsb2JhbFNwZWNpYWxpc3QgPSBpc01BSUEgJiYgYWdlbnQ/LmVudGl0eSA9PT0gJ2dsb2JhbCdcbiAgICBjb25zdCBpc1Byb2plY3RTcGVjaWFsaXN0ID0gaXNNQUlBICYmIChhZ2VudD8uZW50aXR5ID09PSAncHJvamVjdCcgfHwgYWdlbnQ/LmVudGl0eSA9PSBudWxsKVxuICAgIGNvbnN0IGlzQ2xpZW50U3BlY2lhbGlzdCA9IGlzTUFJQSAmJiBhZ2VudD8uZW50aXR5ID09PSAnY2xpZW50J1xuICAgIGNvbnN0IGlzTWFpYWtlciA9IGlzTWFya2V0cGxhY2VHbG9iYWxDbG9uZUFnZW50KGFnZW50KVxuXG4gICAgaWYgKGN1cnJlbnRPcHRpb24gPT09IG9wdGlvbnMubXlBZ2VudHMgJiYgd2luZG93Lk1BSUFfQ0hBVF9BSV9GRUFUVVJFX0FDQ0VTU19NVUxUSV9BR0VOVFMpIHtcbiAgICAgIHJldHVybiBvcHRpb25zLm15QWdlbnRzXG4gICAgfVxuXG4gICAgaWYgKGN1cnJlbnRPcHRpb24gPT09IG9wdGlvbnMubXlTa2lsbHMgJiYgY2FuQWNjZXNzVG9Ta2lsbHModXNlcikpIHtcbiAgICAgIHJldHVybiBvcHRpb25zLm15U2tpbGxzXG4gICAgfVxuXG4gICAgLy8gRWwgb3JjaGVzdHJhdG9yIChNQUlBKSBtdWVzdHJhIHN1IGhvbWUgY29uIEZBUXMvYWNjaW9uZXMgZnJlY3VlbnRlczsgZWwgcmVzdG8gZGVcbiAgICAvLyBsb3MgZ2xvYmFsIHNwZWNpYWxpc3RzIChjbG9uZXMgZ2xvYmFsZXMgbm8tbWFpYWtlcikgc2lndWVuIHllbmRvIGRpcmVjdG8gYWwgY2hhdC5cbiAgICBpZiAoaXNHbG9iYWxTcGVjaWFsaXN0ICYmICFpc01haWFrZXIgJiYgYWdlbnQ/LnR5cGUgIT09ICdvcmNoZXN0cmF0b3InICYmIGN1cnJlbnRPcHRpb24gPT09IG9wdGlvbnMuaG9tZSkge1xuICAgICAgcmV0dXJuIG9wdGlvbnMuY2hhdFxuICAgIH1cblxuICAgIGNvbnN0IHNob3VsZFNob3dQcm9qZWN0U2VsZWN0b3IgPSBjdXJyZW50T3B0aW9uICE9PSBvcHRpb25zLmNoYXQgJiYgaXNQcm9qZWN0U3BlY2lhbGlzdCAmJiAhcHJvamVjdFxuICAgIGNvbnN0IHNob3VsZFNob3dDbGllbnRTZWxlY3RvciA9IGN1cnJlbnRPcHRpb24gIT09IG9wdGlvbnMuY2hhdCAmJiBpc0NsaWVudFNwZWNpYWxpc3QgJiYgIWNsaWVudFxuXG4gICAgaWYgKHNob3VsZFNob3dQcm9qZWN0U2VsZWN0b3IpIHtcbiAgICAgIHJldHVybiBvcHRpb25zLnByb2plY3RTZWxlY3RvclxuICAgIH1cbiAgICBpZiAoc2hvdWxkU2hvd0NsaWVudFNlbGVjdG9yKSB7XG4gICAgICByZXR1cm4gb3B0aW9ucy5jbGllbnRTZWxlY3RvclxuICAgIH1cbiAgICByZXR1cm4gY3VycmVudE9wdGlvblxuICB9LCBbY3VycmVudE9wdGlvbiwgcHJvamVjdCwgY2xpZW50LCBpc01BSUEsIGFnZW50Py5lbnRpdHksIGFnZW50Py5uYW1lLCBhZ2VudD8udHlwZSwgdXNlcl0pXG5cbiAgY29uc3QgaXNNYWlha2VyQWdlbnRTZWxlY3RlZCA9IHVzZU1lbW8oKCkgPT4gaXNNYXJrZXRwbGFjZUdsb2JhbENsb25lQWdlbnQoYWdlbnQpLCBbYWdlbnRdKVxuXG4gIGNvbnN0IHNpZGViYXJBZ2VudHNOYXZBY3RpdmUgPSB1c2VNZW1vKCgpOiAnbWFpYWtlcicgfCAnbXlBZ2VudHMnIHwgJ215U2tpbGxzJyB8IG51bGwgPT4ge1xuICAgIGlmIChjb21wdXRlZEN1cnJlbnRPcHRpb24gPT09IG9wdGlvbnMubXlTa2lsbHMpIHJldHVybiAnbXlTa2lsbHMnXG4gICAgaWYgKGNvbXB1dGVkQ3VycmVudE9wdGlvbiA9PT0gb3B0aW9ucy5teUFnZW50cykgcmV0dXJuICdteUFnZW50cydcbiAgICBpZiAoaXNNYWlha2VyQWdlbnRTZWxlY3RlZCkgcmV0dXJuICdtYWlha2VyJ1xuICAgIHJldHVybiBudWxsXG4gIH0sIFtjb21wdXRlZEN1cnJlbnRPcHRpb24sIGlzTWFpYWtlckFnZW50U2VsZWN0ZWRdKVxuXG4gIC8qIFJlYWN0aXZhciBjb24gbGEgZmlsYSDigJxNaXMgYWdlbnRlc+KAnSBlbiBTaWRlYmFyOiBteUFnZW50c0NvdW50IHByb3BcbiAgY29uc3Qgc2lkZWJhck15QWdlbnRzQ291bnQgPSB1c2VNZW1vKCgpID0+IHtcbiAgICByZXR1cm4gYWdlbnRzLmRhdGEuZmlsdGVyKFxuICAgICAgYSA9PiAhKGEudHlwZSA9PT0gJ29yY2hlc3RyYXRvcicgfHwgKGEudHlwZSA9PT0gJ2Nsb25lJyAmJiBhLmVudGl0eSA9PT0gJ2dsb2JhbCcgJiYgLyhtYWlha2VyfG1hcmtldHBsYWNlKS9pLnRlc3QoYS5uYW1lIHx8ICcnKSkpXG4gICAgKVxuICAgICAgLmxlbmd0aFxuICB9LCBbYWdlbnRzLmRhdGFdKVxuICAqL1xuXG4gIGNvbnN0IGFnZW50c0ZldGNoZWRSZWYgPSB1c2VSZWYoZmFsc2UpXG5cbiAgY29uc3Qgc2VsZWN0b3IgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKGAjJHtJRF9NT0RBTF9DSEFUX0FHRU5UfWApXG5cbiAgLy8gVGFzayBwYW5lbCwgcGxhbm5lciB5IGJhbm5lciBkZSBwcm95ZWN0byBhYnJlbiBlbiBmbG90YW50ZSBwb3IgZGVmYXVsdCAobm8gdGFwYXIgZWwgY29udGV4dG8gZGV0csOhcykuXG4gIC8vIEZ1ZXJhIGRlIGVzb3MgY29udGV4dG9zIHNlIHJlc3BldGEgbGEgcHJlZmVyZW5jaWEgZ3VhcmRhZGEgZW4gbG9jYWxTdG9yYWdlLlxuICBjb25zdCBbbGF5b3V0TW9kZSwgc2V0TGF5b3V0TW9kZV0gPSB1c2VTdGF0ZTxNYWlhQ2hhdE1vZGFsTGF5b3V0TW9kZT4oKCkgPT5cbiAgICByZXNvbHZlSW5pdGlhbE1haWFDaGF0TGF5b3V0TW9kZSh7IHNlY3Rpb24sIGJhbm5lckVudHJ5RmFxIH0pXG4gIClcblxuICBjb25zdCBoYW5kbGVMYXlvdXRNb2RlQ2hhbmdlID0gdXNlQ2FsbGJhY2soKG1vZGU6IE1haWFDaGF0TW9kYWxMYXlvdXRNb2RlKSA9PiB7XG4gICAgc2V0U3RvcmVkTWFpYUNoYXRMYXlvdXRNb2RlKG1vZGUpXG4gICAgc2V0TGF5b3V0TW9kZShtb2RlKVxuICB9LCBbXSlcbiAgY29uc3QgZXhwYW5kZWQgPSBsYXlvdXRNb2RlID09PSAnZnVsbHNjcmVlbidcbiAgY29uc3QgaXNGbG9hdGluZyA9IGxheW91dE1vZGUgPT09ICdmbG9hdGluZydcbiAgY29uc3QgY29udGVudFdyYXBwZXJSZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpXG4gIGNvbnN0IFtkcmFnUG9zaXRpb24sIHNldERyYWdQb3NpdGlvbl0gPSB1c2VTdGF0ZTx7IHg6IG51bWJlcjsgeTogbnVtYmVyIH0gfCBudWxsPihcbiAgICAoKSA9PiBzYXZlZFNlc3Npb25Pbk1vdW50UmVmLmN1cnJlbnQ/LmRyYWdQb3NpdGlvbiA/PyBudWxsXG4gIClcbiAgY29uc3QgeyB0aWx0TW90aW9uLCBzdGFydFBvaW50ZXJUcmFja2luZywgc2FtcGxlUG9pbnRlck1vdmUsIGVuZFBvaW50ZXJUcmFja2luZyB9ID1cbiAgICB1c2VGbG9hdGluZ1BhbmVsRHJhZ1RpbHQoaXNGbG9hdGluZylcbiAgY29uc3QgZHJhZ1N0YXRlUmVmID0gdXNlUmVmPHtcbiAgICBwb2ludGVySWQ6IG51bWJlclxuICAgIG9mZnNldFg6IG51bWJlclxuICAgIG9mZnNldFk6IG51bWJlclxuICB9IHwgbnVsbD4obnVsbClcblxuICBjb25zdCBjbGFtcERyYWdQb3NpdGlvbiA9IHVzZUNhbGxiYWNrKCh4OiBudW1iZXIsIHk6IG51bWJlcikgPT4ge1xuICAgIGNvbnN0IGNvbnRlbnRXcmFwcGVyID0gY29udGVudFdyYXBwZXJSZWYuY3VycmVudFxuICAgIGlmICghY29udGVudFdyYXBwZXIpIHtcbiAgICAgIHJldHVybiB7IHgsIHkgfVxuICAgIH1cblxuICAgIGNvbnN0IHsgd2lkdGgsIGhlaWdodCB9ID0gY29udGVudFdyYXBwZXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KClcbiAgICBjb25zdCBvZmZzZXQgPSAxNlxuICAgIGNvbnN0IG1heFggPSBNYXRoLm1heChvZmZzZXQsIHdpbmRvdy5pbm5lcldpZHRoIC0gd2lkdGggLSBvZmZzZXQpXG4gICAgY29uc3QgbWF4WSA9IE1hdGgubWF4KG9mZnNldCwgd2luZG93LmlubmVySGVpZ2h0IC0gaGVpZ2h0IC0gb2Zmc2V0KVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIHg6IE1hdGgubWluKE1hdGgubWF4KHgsIG9mZnNldCksIG1heFgpLFxuICAgICAgeTogTWF0aC5taW4oTWF0aC5tYXgoeSwgb2Zmc2V0KSwgbWF4WSksXG4gICAgfVxuICB9LCBbXSlcblxuICB1c2VMYXlvdXRFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChsYXlvdXRNb2RlICE9PSAnZmxvYXRpbmcnKSB7XG4gICAgICBzZXREcmFnUG9zaXRpb24obnVsbClcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIHNldERyYWdQb3NpdGlvbihwcmV2ID0+IHtcbiAgICAgIGlmIChwcmV2KSB7XG4gICAgICAgIHJldHVybiBjbGFtcERyYWdQb3NpdGlvbihwcmV2LngsIHByZXYueSlcbiAgICAgIH1cbiAgICAgIGNvbnN0IHBhZCA9IDE2XG4gICAgICBjb25zdCB4ID0gd2luZG93LmlubmVyV2lkdGggLSBnZXRNYWlhRmxvYXRpbmdQYW5lbFdpZHRoUHgoKSAtIHBhZFxuICAgICAgcmV0dXJuIGNsYW1wRHJhZ1Bvc2l0aW9uKHgsIHBhZClcbiAgICB9KVxuICB9LCBbbGF5b3V0TW9kZSwgY2xhbXBEcmFnUG9zaXRpb25dKVxuXG4gIGNvbnN0IGhhbmRsZURyYWdFbmQgPSB1c2VDYWxsYmFjayhcbiAgICAoZXZlbnQ6IFJlYWN0UG9pbnRlckV2ZW50PEhUTUxEaXZFbGVtZW50PikgPT4ge1xuICAgICAgZW5kUG9pbnRlclRyYWNraW5nKClcbiAgICAgIGlmIChkcmFnU3RhdGVSZWYuY3VycmVudD8ucG9pbnRlcklkICE9PSBldmVudC5wb2ludGVySWQpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIGRyYWdTdGF0ZVJlZi5jdXJyZW50ID0gbnVsbFxuICAgICAgZG9jdW1lbnQuYm9keS5zdHlsZS51c2VyU2VsZWN0ID0gJydcbiAgICAgIGRvY3VtZW50LmJvZHkuc3R5bGUuY3Vyc29yID0gJydcblxuICAgICAgaWYgKGxheW91dE1vZGUgPT09ICdmbG9hdGluZycgJiYgY29udGVudFdyYXBwZXJSZWYuY3VycmVudCkge1xuICAgICAgICBjb25zdCByZWN0ID0gY29udGVudFdyYXBwZXJSZWYuY3VycmVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKVxuICAgICAgICBwYXRjaE1haWFQYW5lbFNlc3Npb24odXNlci5pZCwgeyBkcmFnUG9zaXRpb246IHsgeDogcmVjdC5sZWZ0LCB5OiByZWN0LnRvcCB9IH0pXG4gICAgICB9XG4gICAgfSxcbiAgICBbZW5kUG9pbnRlclRyYWNraW5nLCBsYXlvdXRNb2RlLCB1c2VyLmlkXVxuICApXG5cbiAgY29uc3QgaGFuZGxlRHJhZ01vdmUgPSB1c2VDYWxsYmFjayhcbiAgICAoZXZlbnQ6IFJlYWN0UG9pbnRlckV2ZW50PEhUTUxEaXZFbGVtZW50PikgPT4ge1xuICAgICAgY29uc3QgZHJhZ1N0YXRlID0gZHJhZ1N0YXRlUmVmLmN1cnJlbnRcbiAgICAgIGlmICghZHJhZ1N0YXRlIHx8IGRyYWdTdGF0ZS5wb2ludGVySWQgIT09IGV2ZW50LnBvaW50ZXJJZCkge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgc2FtcGxlUG9pbnRlck1vdmUoZXZlbnQuY2xpZW50WCwgZXZlbnQuY2xpZW50WSlcblxuICAgICAgY29uc3QgbmV4dFBvc2l0aW9uID0gY2xhbXBEcmFnUG9zaXRpb24oZXZlbnQuY2xpZW50WCAtIGRyYWdTdGF0ZS5vZmZzZXRYLCBldmVudC5jbGllbnRZIC0gZHJhZ1N0YXRlLm9mZnNldFkpXG5cbiAgICAgIHNldERyYWdQb3NpdGlvbihwcmV2ID0+IHtcbiAgICAgICAgaWYgKHByZXYgJiYgcHJldi54ID09PSBuZXh0UG9zaXRpb24ueCAmJiBwcmV2LnkgPT09IG5leHRQb3NpdGlvbi55KSB7XG4gICAgICAgICAgcmV0dXJuIHByZXZcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbmV4dFBvc2l0aW9uXG4gICAgICB9KVxuICAgIH0sXG4gICAgW2NsYW1wRHJhZ1Bvc2l0aW9uLCBzYW1wbGVQb2ludGVyTW92ZV1cbiAgKVxuXG4gIGNvbnN0IHJlc29sdmVkRHJhZ1Bvc2l0aW9uID0gdXNlTWVtbygoKSA9PiB7XG4gICAgaWYgKGxheW91dE1vZGUgIT09ICdmbG9hdGluZycpIHtcbiAgICAgIHJldHVybiBkcmFnUG9zaXRpb25cbiAgICB9XG4gICAgaWYgKGRyYWdQb3NpdGlvbikge1xuICAgICAgcmV0dXJuIGRyYWdQb3NpdGlvblxuICAgIH1cbiAgICBjb25zdCBwYWQgPSAxNlxuICAgIGNvbnN0IHggPSB0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyA/IHdpbmRvdy5pbm5lcldpZHRoIC0gZ2V0TWFpYUZsb2F0aW5nUGFuZWxXaWR0aFB4KCkgLSBwYWQgOiBwYWRcbiAgICByZXR1cm4gY2xhbXBEcmFnUG9zaXRpb24oeCwgcGFkKVxuICB9LCBbbGF5b3V0TW9kZSwgZHJhZ1Bvc2l0aW9uLCBjbGFtcERyYWdQb3NpdGlvbl0pXG5cbiAgY29uc3QgaGFuZGxlRHJhZ1N0YXJ0ID0gdXNlQ2FsbGJhY2soXG4gICAgKGV2ZW50OiBSZWFjdFBvaW50ZXJFdmVudDxIVE1MRGl2RWxlbWVudD4pID0+IHtcbiAgICAgIGlmICghaXNGbG9hdGluZyB8fCBldmVudC5idXR0b24gIT09IDApIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHRhcmdldCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudFxuICAgICAgaWYgKHRhcmdldC5jbG9zZXN0KCdidXR0b24sIGEsIGlucHV0LCB0ZXh0YXJlYSwgc2VsZWN0LCBbcm9sZT1cImJ1dHRvblwiXSwgW2RhdGEtbm8tZHJhZz1cInRydWVcIl0nKSkge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgY29uc3QgY29udGVudFdyYXBwZXIgPSBjb250ZW50V3JhcHBlclJlZi5jdXJyZW50XG4gICAgICBpZiAoIWNvbnRlbnRXcmFwcGVyKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBjb25zdCByZWN0ID0gY29udGVudFdyYXBwZXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KClcbiAgICAgIGNvbnN0IGluaXRpYWxQb3NpdGlvbiA9IHJlc29sdmVkRHJhZ1Bvc2l0aW9uID8/IGNsYW1wRHJhZ1Bvc2l0aW9uKHJlY3QubGVmdCwgcmVjdC50b3ApXG4gICAgICBjb25zdCBwb2ludGVyT2Zmc2V0WCA9IGV2ZW50LmNsaWVudFggLSBpbml0aWFsUG9zaXRpb24ueFxuICAgICAgY29uc3QgcG9pbnRlck9mZnNldFkgPSBldmVudC5jbGllbnRZIC0gaW5pdGlhbFBvc2l0aW9uLnlcblxuICAgICAgc2V0RHJhZ1Bvc2l0aW9uKGluaXRpYWxQb3NpdGlvbilcbiAgICAgIGRyYWdTdGF0ZVJlZi5jdXJyZW50ID0ge1xuICAgICAgICBwb2ludGVySWQ6IGV2ZW50LnBvaW50ZXJJZCxcbiAgICAgICAgb2Zmc2V0WDogcG9pbnRlck9mZnNldFgsXG4gICAgICAgIG9mZnNldFk6IHBvaW50ZXJPZmZzZXRZLFxuICAgICAgfVxuXG4gICAgICBldmVudC5jdXJyZW50VGFyZ2V0LnNldFBvaW50ZXJDYXB0dXJlKGV2ZW50LnBvaW50ZXJJZClcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KClcblxuICAgICAgZG9jdW1lbnQuYm9keS5zdHlsZS51c2VyU2VsZWN0ID0gJ25vbmUnXG4gICAgICBkb2N1bWVudC5ib2R5LnN0eWxlLmN1cnNvciA9ICdncmFiYmluZydcbiAgICAgIGFtcGxpdHVkRXZlbnQoRVZFTlRTLmFpQ2hhdERyYWdnYWJsZSlcbiAgICAgIHN0YXJ0UG9pbnRlclRyYWNraW5nKGV2ZW50LmNsaWVudFgsIGV2ZW50LmNsaWVudFkpXG4gICAgfSxcbiAgICBbY2xhbXBEcmFnUG9zaXRpb24sIGlzRmxvYXRpbmcsIHJlc29sdmVkRHJhZ1Bvc2l0aW9uLCBzdGFydFBvaW50ZXJUcmFja2luZ11cbiAgKVxuXG4gIGNvbnN0IHN0YXJ0Q2hhdCA9IHVzZUNhbGxiYWNrKFxuICAgIChcbiAgICAgIG1lc3NhZ2U/OiBzdHJpbmcsXG4gICAgICBhdHRhY2htZW50cz86IEF0dGFjaG1lbnRGaWxlW10sXG4gICAgICBmYXFJZD86IHN0cmluZyxcbiAgICAgIGFnZW50U3VnZ2VzdGlvbklkPzogc3RyaW5nLFxuICAgICAgbWVudGlvbnM/OiBDb250ZXh0TWVudGlvbltdLFxuICAgICAgZnVhSWQ/OiBzdHJpbmcsXG4gICAgICBzY0lkPzogc3RyaW5nLFxuICAgICAgY29udGV4dERhdGE/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPlxuICAgICkgPT4ge1xuICAgICAgaWYgKHNpZGViYXJIYXNFcnJvcikge1xuICAgICAgICBzZXRTaWRlYmFySGFzRXJyb3IoZmFsc2UpXG4gICAgICB9XG4gICAgICBzZXRJbml0aWFsQ2hhdElkKG51bGwpXG4gICAgICBzZXROZXdDaGF0S2V5KHByZXYgPT4gcHJldiArIDEpXG4gICAgICBzZXRVc2VySW5pdGlhbE1lc3NhZ2Uoe1xuICAgICAgICBtZXNzYWdlOiBtZXNzYWdlIHx8ICcnLFxuICAgICAgICBhdHRhY2htZW50czogYXR0YWNobWVudHMgfHwgW10sXG4gICAgICAgIC4uLihmYXFJZCA/IHsgZmFxSWQgfSA6IHt9KSxcbiAgICAgICAgLi4uKGFnZW50U3VnZ2VzdGlvbklkID8geyBhZ2VudFN1Z2dlc3Rpb25JZCB9IDoge30pLFxuICAgICAgICAuLi4obWVudGlvbnMgJiYgbWVudGlvbnMubGVuZ3RoID4gMCA/IHsgbWVudGlvbnMgfSA6IHt9KSxcbiAgICAgICAgLi4uKGZ1YUlkID8geyBmdWFJZCB9IDoge30pLFxuICAgICAgICAuLi4oc2NJZCA/IHsgc2NJZCB9IDoge30pLFxuICAgICAgICAuLi4oY29udGV4dERhdGEgPyB7IGNvbnRleHREYXRhIH0gOiB7fSksXG4gICAgICB9KVxuICAgICAgaGFuZGxlcnMuY2hhdCgpXG4gICAgfSxcbiAgICBbaGFuZGxlcnMsIHNpZGViYXJIYXNFcnJvcl1cbiAgKVxuXG4gIGNvbnN0IGJhbm5lckZhcUF1dG9TZW50UmVmID0gdXNlUmVmKGZhbHNlKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgZW50aXR5UmVhZHkgPSBzZWN0aW9uID09PSAncHJvamVjdCcgPyBCb29sZWFuKHByb2plY3Q/LmlkKSA6IHNlY3Rpb24gPT09ICdjbGllbnQnID8gQm9vbGVhbihjbGllbnQ/LmlkKSA6IHRydWVcblxuICAgIGlmICghYmFubmVyRW50cnlGYXE/LmZhcVRpdGxlPy50cmltKCkgfHwgYmFubmVyRmFxQXV0b1NlbnRSZWYuY3VycmVudCB8fCBsb2FkaW5nIHx8ICFhZ2VudD8uaWQgfHwgIWVudGl0eVJlYWR5KSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBiYW5uZXJGYXFBdXRvU2VudFJlZi5jdXJyZW50ID0gdHJ1ZVxuICAgIHN0YXJ0Q2hhdChcbiAgICAgIGJhbm5lckVudHJ5RmFxLmZhcVRpdGxlLFxuICAgICAgW10sXG4gICAgICBiYW5uZXJFbnRyeUZhcS5mYXFJZCxcbiAgICAgIHVuZGVmaW5lZCxcbiAgICAgIHVuZGVmaW5lZCxcbiAgICAgIHVuZGVmaW5lZCxcbiAgICAgIHVuZGVmaW5lZCxcbiAgICAgIGJhbm5lckVudHJ5RmFxLmNvbnRleHREYXRhXG4gICAgKVxuICB9LCBbXG4gICAgYmFubmVyRW50cnlGYXE/LmZhcUlkLFxuICAgIGJhbm5lckVudHJ5RmFxPy5mYXFUaXRsZSxcbiAgICBiYW5uZXJFbnRyeUZhcT8uY29udGV4dERhdGEsXG4gICAgbG9hZGluZyxcbiAgICBhZ2VudD8uaWQsXG4gICAgYWdlbnQ/LmVudGl0eSxcbiAgICBwcm9qZWN0Py5pZCxcbiAgICBjbGllbnQ/LmlkLFxuICAgIHNlY3Rpb24sXG4gICAgc3RhcnRDaGF0LFxuICBdKVxuXG4gIGNvbnN0IGdvVG9DaGF0ID0gdXNlQ2FsbGJhY2soXG4gICAgKGNoYXQ6IGFueSkgPT4ge1xuICAgICAgc2V0VXNlckluaXRpYWxNZXNzYWdlKHsgbWVzc2FnZTogJycsIGF0dGFjaG1lbnRzOiBbXSB9KVxuICAgICAgc2V0SW5pdGlhbENoYXRJZChjaGF0LnNlc3Npb25FeHRlcm5hbElkKVxuICAgICAgY29uc3Qgc2VsZWN0ZWRBZ2VudCA9IGFnZW50cy5kYXRhLmZpbmQoYWdlbnRJdGVtID0+IGFnZW50SXRlbS5pZCA9PT0gY2hhdC5hZ2VudElkKVxuICAgICAgaWYgKHNlbGVjdGVkQWdlbnQpIHtcbiAgICAgICAgc2VsZWN0QWdlbnQoc2VsZWN0ZWRBZ2VudClcbiAgICAgIH1cbiAgICAgIC8vIERpc3BhdGNoIGV2ZW50IHRvIGNsZWFyIHRoZSBpbnB1dCB0ZXh0YXJlYVxuICAgICAgZG9jdW1lbnQuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoJ2NoYXQtc2Vzc2lvbi1jaGFuZ2VkJykpXG4gICAgICBoYW5kbGVycy5jaGF0KClcbiAgICB9LFxuICAgIFtoYW5kbGVycywgYWdlbnRzLCBzZWxlY3RBZ2VudF1cbiAgKVxuXG4gIGdvVG9DaGF0UmVmLmN1cnJlbnQgPSBnb1RvQ2hhdFxuXG4gIGNvbnN0IGhhbmRsZVNpZGViYXJPcGVuQ2hhbmdlID0gdXNlQ2FsbGJhY2soXG4gICAgKG9wZW46IGJvb2xlYW4pID0+IHtcbiAgICAgIHNpZGViYXJPcGVuUmVmLmN1cnJlbnQgPSBvcGVuXG4gICAgICBwYXRjaE1haWFQYW5lbFNlc3Npb24odXNlci5pZCwgeyBzaWRlYmFyT3Blbjogb3BlbiB9KVxuICAgIH0sXG4gICAgW3VzZXIuaWRdXG4gIClcblxuICBjb25zdCBzeW5jUGFuZWxTZXNzaW9uID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGlmIChpc01pbmltaXplZCkgcmV0dXJuXG5cbiAgICBwYXRjaE1haWFQYW5lbFNlc3Npb24odXNlci5pZCwge1xuICAgICAgaXNFeHBhbmRlZDogdHJ1ZSxcbiAgICAgIGN1cnJlbnRPcHRpb24sXG4gICAgICBhZ2VudHNOYXZBY3RpdmU6IHNpZGViYXJBZ2VudHNOYXZBY3RpdmUsXG4gICAgICBhY3RpdmVDaGF0SWQsXG4gICAgICBhZ2VudElkOiBhZ2VudD8uaWQgPz8gbnVsbCxcbiAgICAgIHNpZGViYXJPcGVuOiBzaWRlYmFyT3BlblJlZi5jdXJyZW50LFxuICAgICAgZHJhZ1Bvc2l0aW9uOiBsYXlvdXRNb2RlID09PSAnZmxvYXRpbmcnID8gZHJhZ1Bvc2l0aW9uIDogbnVsbCxcbiAgICAgIGhvc3RDb250ZXh0OiB7XG4gICAgICAgIHNlY3Rpb24sXG4gICAgICAgIHByb2plY3QsXG4gICAgICAgIGNsaWVudCxcbiAgICAgICAgdGFzayxcbiAgICAgICAgY2hpcHNQcm9qZWN0LFxuICAgICAgfSxcbiAgICB9KVxuICB9LCBbXG4gICAgYWN0aXZlQ2hhdElkLFxuICAgIGFnZW50Py5pZCxcbiAgICBjaGlwc1Byb2plY3QsXG4gICAgY2xpZW50LFxuICAgIGN1cnJlbnRPcHRpb24sXG4gICAgZHJhZ1Bvc2l0aW9uLFxuICAgIGlzTWluaW1pemVkLFxuICAgIGxheW91dE1vZGUsXG4gICAgcHJvamVjdCxcbiAgICBzZWN0aW9uLFxuICAgIHNpZGViYXJBZ2VudHNOYXZBY3RpdmUsXG4gICAgdGFzayxcbiAgICB1c2VyLmlkLFxuICBdKVxuXG4gIC8qKiBMb3MgYWdlbnRlcyBzZSBwaWRlbiByZWNpw6luIGFsIGFicmlyIGVsIHBhbmVsOiBlbiBtb2RvIHBpbGwgbm8gaGFjZSBmYWx0YSBuaW5ndW5hIHJlcXVlc3QuICovXG4gIGNvbnN0IGVuc3VyZUFnZW50c0xvYWRlZCA9IHVzZUNhbGxiYWNrKGFzeW5jICgpID0+IHtcbiAgICBpZiAoYWdlbnRzRmV0Y2hlZFJlZi5jdXJyZW50KSByZXR1cm5cbiAgICBhZ2VudHNGZXRjaGVkUmVmLmN1cnJlbnQgPSB0cnVlXG4gICAgYXdhaXQgaGFuZGxlR2V0QWdlbnRzKClcbiAgfSwgW2hhbmRsZUdldEFnZW50c10pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoaXNNaW5pbWl6ZWQpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWRcbiAgICB9XG5cbiAgICBjb25zdCB0aW1lciA9IHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHN5bmNQYW5lbFNlc3Npb24oKSwgMTUwKVxuICAgIHJldHVybiAoKSA9PiB3aW5kb3cuY2xlYXJUaW1lb3V0KHRpbWVyKVxuICB9LCBbaXNNaW5pbWl6ZWQsIHN5bmNQYW5lbFNlc3Npb25dKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3Qgb25QYWdlSGlkZSA9ICgpID0+IHtcbiAgICAgIGlmICghaXNNaW5pbWl6ZWQpIHtcbiAgICAgICAgc3luY1BhbmVsU2Vzc2lvbigpXG4gICAgICB9XG4gICAgfVxuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdwYWdlaGlkZScsIG9uUGFnZUhpZGUpXG4gICAgcmV0dXJuICgpID0+IHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdwYWdlaGlkZScsIG9uUGFnZUhpZGUpXG4gIH0sIFtpc01pbmltaXplZCwgc3luY1BhbmVsU2Vzc2lvbl0pXG5cbiAgY29uc3QgaGFuZGxlUmVzdG9yZUZyb21NaW5pbWl6ZWQgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgc2V0SXNNaW5pbWl6ZWQoZmFsc2UpXG4gICAgc2V0Q2hhdFZpZXdWaXNpYmxlKHRydWUpXG4gICAgYW1wbGl0dWRFdmVudChFVkVOVFMuYWlDaGF0T3BlbiwgeyBvcHRpb246ICdtaW5pbWl6ZScgfSlcblxuICAgIC8vIGdvVG9DaGF0IG5lY2VzaXRhIGxhIGxpc3RhIGRlIGFnZW50ZXMgcGFyYSBzZWxlY2Npb25hciBlbCBkZSBsYSBjb252ZXJzYWNpw7NuLlxuICAgIGVuc3VyZUFnZW50c0xvYWRlZCgpLnRoZW4oKCkgPT4ge1xuICAgICAgLy8gUHJpb3JpZGFkIGFsIHJlYWJyaXI6IHByaW1lciBjaGF0IHNpbiBsZWVyIOKGkiDDumx0aW1hIGNvbnZlcnNhY2nDs24gYWJpZXJ0YSDihpIgSG9tZS5cbiAgICAgIGNvbnN0IHsgY2hhdHMgfSA9IGdldENoYXRzU3RvcmVTdGF0ZSgpXG4gICAgICBjb25zdCBsYXN0QWN0aXZlQ2hhdElkID0gcmVhZExhc3RBY3RpdmVDaGF0SWQodXNlci5pZClcbiAgICAgIGNvbnN0IHRhcmdldCA9XG4gICAgICAgIGNoYXRzLmZpbmQoY2hhdCA9PiBjaGF0LmlzUmVhZCA9PT0gZmFsc2UpID8/XG4gICAgICAgIChsYXN0QWN0aXZlQ2hhdElkID8gY2hhdHMuZmluZChjaGF0ID0+IGNoYXQuc2Vzc2lvbkV4dGVybmFsSWQgPT09IGxhc3RBY3RpdmVDaGF0SWQpIDogdW5kZWZpbmVkKVxuXG4gICAgICBpZiAodGFyZ2V0KSB7XG4gICAgICAgIGdvVG9DaGF0UmVmLmN1cnJlbnQ/Lih0YXJnZXQpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBnb0hvbWVSZWYuY3VycmVudD8uKClcbiAgICAgIH1cblxuICAgICAgZm9jdXNDaGF0SW5wdXQoKVxuICAgIH0pXG4gIH0sIFthbXBsaXR1ZEV2ZW50LCBlbnN1cmVBZ2VudHNMb2FkZWQsIGZvY3VzQ2hhdElucHV0LCBzZXRDaGF0Vmlld1Zpc2libGUsIHVzZXIuaWRdKVxuXG4gIC8qKlxuICAgKiBUb21hIGNvbnRyb2wgZGVzZGUgdW4gaG9zdCAoaGVhZGVyLCBwcm95ZWN0bywgY2xpZW50ZeKApik6IGFicmUgZWwgcGFuZWwsIGRlc2NhcnRhIGxhXG4gICAqIGNvbnZlcnNhY2nDs24gYWJpZXJ0YSB5IGFwbGljYSBlbCBjb250ZXh0byBkZWwgaG9zdC4gTk8gdnVlbHZlIGEgbGEgw7psdGltYSBjb252ZXJzYWNpw7NuXG4gICAqIOKAlCBlc28gc8OzbG8gbG8gaGFjZSBlbCBwaWxsIChgaGFuZGxlUmVzdG9yZUZyb21NaW5pbWl6ZWRgKS5cbiAgICovXG4gIGNvbnN0IGFwcGx5RXhwYW5kZWRIb3N0VGFrZW92ZXIgPSB1c2VDYWxsYmFjayhcbiAgICAoZGV0YWlsOiBNYWlhSG9zdE9wZW5EZXRhaWwpID0+IHtcbiAgICAgIGNvbnN0IGlzR2xvYmFsSGVhZGVyT3BlbiA9IGRldGFpbC5zZWN0aW9uID09PSAnaGVhZGVyJyB8fCBkZXRhaWwuc2VjdGlvbiA9PT0gJ3BsYW5uZXInXG5cbiAgICAgIGNsZWFyTWFpYVBhbmVsU2Vzc2lvbih1c2VyLmlkKVxuICAgICAgcGVuZGluZ1Nlc3Npb25SZXN0b3JlUmVmLmN1cnJlbnQgPSBudWxsXG4gICAgICBzZXRJc1Jlc3RvcmluZ1Nlc3Npb24oZmFsc2UpXG4gICAgICBzZXRJc01pbmltaXplZChmYWxzZSlcbiAgICAgIHNldENoYXRWaWV3VmlzaWJsZSh0cnVlKVxuICAgICAgd3JpdGVMYXN0QWN0aXZlQ2hhdElkKHVzZXIuaWQsIG51bGwpXG5cbiAgICAgIHNldEluaXRpYWxDaGF0SWQobnVsbClcbiAgICAgIHNldE5ld0NoYXRLZXkocHJldiA9PiBwcmV2ICsgMSlcbiAgICAgIHNldFVzZXJJbml0aWFsTWVzc2FnZSh7IG1lc3NhZ2U6ICcnLCBhdHRhY2htZW50czogW10gfSlcbiAgICAgIHNldEN1cnJlbnRPcHRpb24ob3B0aW9ucy5ob21lKVxuICAgICAgc2V0RGlkUmVzZXRDb250ZXh0SW5TZWN0aW9uKGZhbHNlKVxuICAgICAgc2V0SGFzRXJyb3IoZmFsc2UpXG4gICAgICBzZXRJc1dyaXRpbmcoZmFsc2UpXG4gICAgICB1c2VGYXFzU3RvcmUuZ2V0U3RhdGUoKS5jbGVhckZhcXMoKVxuICAgICAgYmFubmVyRmFxQXV0b1NlbnRSZWYuY3VycmVudCA9IGZhbHNlXG4gICAgICByZXNldFNlbGVjdGVkQ2hhdFJlZi5jdXJyZW50Py4oKVxuICAgICAgZ2V0Q2hhdHNTdG9yZVN0YXRlKCkuc2V0QWN0aXZlQ2hhdElkKG51bGwpXG4gICAgICBkb2N1bWVudC5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgnY2hhdC1zZXNzaW9uLWNoYW5nZWQnKSlcblxuICAgICAgaWYgKGRldGFpbC5zZWN0aW9uID09PSAncHJvamVjdCcgfHwgZGV0YWlsLnNlY3Rpb24gPT09ICd0YXNrJykge1xuICAgICAgICBzZXRQcm9qZWN0Py4oZGV0YWlsLnByb2plY3QgPz8gbnVsbClcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNldFByb2plY3Q/LihudWxsKVxuICAgICAgfVxuXG4gICAgICBpZiAoZGV0YWlsLnNlY3Rpb24gPT09ICdjbGllbnQnKSB7XG4gICAgICAgIHNldENsaWVudD8uKGRldGFpbC5jbGllbnQgPz8gbnVsbClcbiAgICAgIH0gZWxzZSBpZiAoaXNHbG9iYWxIZWFkZXJPcGVuKSB7XG4gICAgICAgIHNldENsaWVudD8uKG51bGwpXG4gICAgICB9XG5cbiAgICAgIGlmIChkZXRhaWwuc2VjdGlvbiA9PT0gJ3Rhc2snKSB7XG4gICAgICAgIHNldFRhc2s/LihkZXRhaWwudGFzayA/PyBudWxsKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2V0VGFzaz8uKG51bGwpXG4gICAgICB9XG5cbiAgICAgIGlmIChpc0dsb2JhbEhlYWRlck9wZW4pIHtcbiAgICAgICAgc2V0Q2hpcHNQcm9qZWN0KG51bGwpXG4gICAgICAgIGNsZWFyQWdlbnQoKVxuICAgICAgfVxuXG4gICAgICBjb25zdCBuZXh0TGF5b3V0ID0gcmVzb2x2ZUluaXRpYWxNYWlhQ2hhdExheW91dE1vZGUoe1xuICAgICAgICBzZWN0aW9uOiBkZXRhaWwuc2VjdGlvbiBhcyBTZWN0aW9uLFxuICAgICAgICBiYW5uZXJFbnRyeUZhcTogZGV0YWlsLmZhcSxcbiAgICAgIH0pXG4gICAgICBzZXRMYXlvdXRNb2RlKG5leHRMYXlvdXQpXG4gICAgICBzZXREcmFnUG9zaXRpb24obnVsbClcblxuICAgICAgY29uc3QgaG9zdENvbnRleHQgPSB7XG4gICAgICAgIHNlY3Rpb246IGRldGFpbC5zZWN0aW9uIGFzIFNlY3Rpb24sXG4gICAgICAgIHByb2plY3Q6IGRldGFpbC5zZWN0aW9uID09PSAncHJvamVjdCcgfHwgZGV0YWlsLnNlY3Rpb24gPT09ICd0YXNrJyA/IChkZXRhaWwucHJvamVjdCA/PyBudWxsKSA6IG51bGwsXG4gICAgICAgIGNsaWVudDogZGV0YWlsLnNlY3Rpb24gPT09ICdjbGllbnQnID8gKGRldGFpbC5jbGllbnQgPz8gbnVsbCkgOiBudWxsLFxuICAgICAgICB0YXNrOiBkZXRhaWwuc2VjdGlvbiA9PT0gJ3Rhc2snID8gKGRldGFpbC50YXNrID8/IG51bGwpIDogbnVsbCxcbiAgICAgICAgY2hpcHNQcm9qZWN0OiBudWxsLFxuICAgICAgfVxuXG4gICAgICBlbnN1cmVBZ2VudHNMb2FkZWQoKVxuICAgICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgICAgbGV0IHJlc29sdmVkQWdlbnRJZDogc3RyaW5nIHwgbnVsbCA9IGFnZW50Py5pZCA/PyBudWxsXG5cbiAgICAgICAgICBpZiAoaXNHbG9iYWxIZWFkZXJPcGVuKSB7XG4gICAgICAgICAgICBjb25zdCBmaXJzdEFnZW50ID0gYWdlbnRzRGF0YVJlZi5jdXJyZW50WzBdXG4gICAgICAgICAgICBpZiAoZmlyc3RBZ2VudCkge1xuICAgICAgICAgICAgICBzZWxlY3RBZ2VudChmaXJzdEFnZW50KVxuICAgICAgICAgICAgICByZXNvbHZlZEFnZW50SWQgPSBmaXJzdEFnZW50LmlkXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICByZXNvbHZlZEFnZW50SWQgPSBudWxsXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcGF0Y2hNYWlhUGFuZWxTZXNzaW9uKHVzZXIuaWQsIHtcbiAgICAgICAgICAgIGlzRXhwYW5kZWQ6IHRydWUsXG4gICAgICAgICAgICBjdXJyZW50T3B0aW9uOiBvcHRpb25zLmhvbWUsXG4gICAgICAgICAgICBhZ2VudHNOYXZBY3RpdmU6IG51bGwsXG4gICAgICAgICAgICBhY3RpdmVDaGF0SWQ6IG51bGwsXG4gICAgICAgICAgICBhZ2VudElkOiByZXNvbHZlZEFnZW50SWQsXG4gICAgICAgICAgICBzaWRlYmFyT3Blbjogc2lkZWJhck9wZW5SZWYuY3VycmVudCxcbiAgICAgICAgICAgIGRyYWdQb3NpdGlvbjogbnVsbCxcbiAgICAgICAgICAgIGhvc3RDb250ZXh0LFxuICAgICAgICAgIH0pXG5cbiAgICAgICAgICBmb2N1c0NoYXRJbnB1dCgpXG4gICAgICAgIH0pXG4gICAgICAgIC5jYXRjaCgoKSA9PiB1bmRlZmluZWQpXG4gICAgfSxcbiAgICBbXG4gICAgICBhZ2VudD8uaWQsXG4gICAgICBjbGVhckFnZW50LFxuICAgICAgZW5zdXJlQWdlbnRzTG9hZGVkLFxuICAgICAgZm9jdXNDaGF0SW5wdXQsXG4gICAgICBzZWxlY3RBZ2VudCxcbiAgICAgIHNldENoYXRWaWV3VmlzaWJsZSxcbiAgICAgIHNldENoaXBzUHJvamVjdCxcbiAgICAgIHNldENsaWVudCxcbiAgICAgIHNldFByb2plY3QsXG4gICAgICBzZXRUYXNrLFxuICAgICAgdXNlci5pZCxcbiAgICBdXG4gIClcblxuICBjb25zdCBoYW5kbGVTZW5kTWVzc2FnZVJlYWR5ID0gdXNlQ2FsbGJhY2soXG4gICAgKFxuICAgICAgc2VuZE1lc3NhZ2U6IChcbiAgICAgICAgbWVzc2FnZTogc3RyaW5nLFxuICAgICAgICBhdHRhY2htZW50cz86IEF0dGFjaG1lbnRGaWxlW10sXG4gICAgICAgIGZhcUlkPzogc3RyaW5nLFxuICAgICAgICBhZ2VudFN1Z2dlc3Rpb25JZD86IHN0cmluZyxcbiAgICAgICAgbWVudGlvbnM/OiBDb250ZXh0TWVudGlvbltdLFxuICAgICAgICBmdWFJZD86IHN0cmluZyxcbiAgICAgICAgc2NJZD86IHN0cmluZ1xuICAgICAgKSA9PiB2b2lkLFxuICAgICAgc3RvcEdlbmVyYXRpb246ICgpID0+IHZvaWQsXG4gICAgICBzdHJlYW1pbmc6IGJvb2xlYW4sXG4gICAgICB3cml0aW5nOiBib29sZWFuXG4gICAgKSA9PiB7XG4gICAgICBzZXRTZW5kTWVzc2FnZUZ1bmN0aW9uKCgpID0+IHNlbmRNZXNzYWdlKVxuICAgICAgc2V0U3RvcEdlbmVyYXRpb25GdW5jdGlvbigoKSA9PiBzdG9wR2VuZXJhdGlvbilcbiAgICAgIHNldElzU3RyZWFtaW5nKHN0cmVhbWluZylcbiAgICAgIHNldElzV3JpdGluZyh3cml0aW5nKVxuICAgIH0sXG4gICAgW11cbiAgKVxuXG4gIGNvbnN0IGhhbmRsZVNlbmRNZXNzYWdlID0gdXNlQ2FsbGJhY2soXG4gICAgKFxuICAgICAgbWVzc2FnZTogc3RyaW5nLFxuICAgICAgYXR0YWNobWVudHM/OiBBdHRhY2htZW50RmlsZVtdLFxuICAgICAgZmFxSWQ/OiBzdHJpbmcsXG4gICAgICBhZ2VudFN1Z2dlc3Rpb25JZD86IHN0cmluZyxcbiAgICAgIG1lbnRpb25zPzogQ29udGV4dE1lbnRpb25bXSxcbiAgICAgIGZ1YUlkPzogc3RyaW5nLFxuICAgICAgc2NJZD86IHN0cmluZ1xuICAgICkgPT4ge1xuICAgICAgaWYgKHNpZGViYXJIYXNFcnJvcikge1xuICAgICAgICBzZXRTaWRlYmFySGFzRXJyb3IoZmFsc2UpXG4gICAgICB9XG4gICAgICBpZiAoc2VuZE1lc3NhZ2VGdW5jdGlvbiAmJiBjb21wdXRlZEN1cnJlbnRPcHRpb24gPT09IG9wdGlvbnMuY2hhdCkge1xuICAgICAgICBzZW5kTWVzc2FnZUZ1bmN0aW9uKG1lc3NhZ2UsIGF0dGFjaG1lbnRzLCBmYXFJZCwgYWdlbnRTdWdnZXN0aW9uSWQsIG1lbnRpb25zLCBmdWFJZCwgc2NJZClcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHN0YXJ0Q2hhdChtZXNzYWdlLCBhdHRhY2htZW50cywgZmFxSWQsIGFnZW50U3VnZ2VzdGlvbklkLCBtZW50aW9ucywgZnVhSWQsIHNjSWQpXG4gICAgICB9XG4gICAgfSxcbiAgICBbc2VuZE1lc3NhZ2VGdW5jdGlvbiwgc3RhcnRDaGF0LCBjb21wdXRlZEN1cnJlbnRPcHRpb24sIHNpZGViYXJIYXNFcnJvcl1cbiAgKVxuXG4gIGNvbnN0IGhhbmRsZUdvSG9tZSA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICAvLyBTaSBlc3RhbW9zIGVuIHVuYSBjb252ZXJzYWNpw7NuIHkgdmFtb3MgYSBob21lLCByZXNldGVhciBpbml0aWFsQ2hhdElkIHkgaW5jcmVtZW50YXIgbmV3Q2hhdEtleVxuICAgIGlmIChjdXJyZW50T3B0aW9uID09PSBvcHRpb25zLmNoYXQpIHtcbiAgICAgIC8vIE5vIGNvcnRhbW9zIGxhIGdlbmVyYWNpw7NuOiBsYSBzZXNpw7NuIHNpZ3VlIHJlc3BvbmRpZW5kbyBlbiBiYWNrZ3JvdW5kLlxuICAgICAgc2V0SW5pdGlhbENoYXRJZChudWxsKVxuICAgICAgc2V0TmV3Q2hhdEtleShwcmV2ID0+IHByZXYgKyAxKVxuICAgICAgc2V0SXNXcml0aW5nKGZhbHNlKVxuICAgICAgLy8gTm8gYm9ycmFyIGVsIGNsaWVudGUgc2kgZXMgYWdlbnRlIGRlIGNsaWVudGVzIChpZ3VhbCBxdWUgZWwgcHJveWVjdG8gc2UgbWFudGllbmUpXG4gICAgICBpZiAoYWdlbnQ/LmVudGl0eSAhPT0gJ2NsaWVudCcpIHtcbiAgICAgICAgc2V0Q2xpZW50Py4obnVsbClcbiAgICAgIH1cbiAgICAgIGlmIChzZWN0aW9uICE9PSAndGFzaycpIHtcbiAgICAgICAgc2V0VGFzaz8uKG51bGwpXG4gICAgICB9XG4gICAgfVxuICAgIGlmIChcbiAgICAgICghYWdlbnQgfHwgYWdlbnQ/LmlzX2RlbGV0ZWQgfHwgYWdlbnQ/Lmhhc19ub3RfcGVybWlzc2lvbnMgfHwgYWdlbnQ/Lmhhc19ub3RfYWNjZXNzIHx8IGFnZW50Py5wcm9qZWN0X2RlbGV0ZWQpICYmXG4gICAgICBhZ2VudHMuZGF0YS5sZW5ndGggPiAwXG4gICAgKSB7XG4gICAgICBzZWxlY3RBZ2VudChhZ2VudHMuZGF0YVswXSlcbiAgICB9XG4gICAgLy8gT3JjaGVzdHJhdG9yIGVuIGhvbWUgZ2xvYmFsIChoZWFkZXIvcGxhbm5lcik6IGFsIGluaWNpYXIgdW4gY2hhdCBudWV2byBzZSBkZWJlIHZvbHZlciBhbCBwYXNvIDFcbiAgICAvLyAobGlzdGEgZGUgY29udGV4dG9zIHJlY2llbnRlcyksIHBvciBsbyBxdWUgaGF5IHF1ZSBsaW1waWFyIHRvZG8gZWwgY29udGV4dG8gcGluZWFkby5cbiAgICBpZiAoaXNHbG9iYWxNYWlhU2VjdGlvbihzZWN0aW9uKSAmJiBhZ2VudD8udHlwZSA9PT0gJ29yY2hlc3RyYXRvcicpIHtcbiAgICAgIHNldFByb2plY3QobnVsbClcbiAgICAgIHNldENsaWVudD8uKG51bGwpXG4gICAgICBzZXRUYXNrPy4obnVsbClcbiAgICB9XG4gICAgc2V0Q3VycmVudE9wdGlvbihvcHRpb25zLmhvbWUpXG4gICAgc2V0Q2hpcHNQcm9qZWN0KG51bGwpXG4gICAgc2V0SGFzRXJyb3IoZmFsc2UpXG4gICAgaXNXZWJTZWFyY2hBY3RpdmUgJiYgdG9nZ2xlV2ViU2VhcmNoKClcbiAgICBpZiAocmVzZXRTZWxlY3RlZENoYXRSZWYuY3VycmVudCkge1xuICAgICAgcmVzZXRTZWxlY3RlZENoYXRSZWYuY3VycmVudCgpXG4gICAgfVxuICB9LCBbXG4gICAgb3B0aW9ucy5ob21lLFxuICAgIG9wdGlvbnMuY2hhdCxcbiAgICBjdXJyZW50T3B0aW9uLFxuICAgIGlzV2ViU2VhcmNoQWN0aXZlLFxuICAgIHRvZ2dsZVdlYlNlYXJjaCxcbiAgICBhZ2VudCxcbiAgICBhZ2VudHMsXG4gICAgc2VsZWN0QWdlbnQsXG4gICAgc2V0UHJvamVjdCxcbiAgICBzZXRDbGllbnQsXG4gICAgc2V0VGFzayxcbiAgICBzdG9wR2VuZXJhdGlvbkZ1bmN0aW9uLFxuICAgIHNlY3Rpb24sXG4gIF0pXG5cbiAgZ29Ib21lUmVmLmN1cnJlbnQgPSBoYW5kbGVHb0hvbWVcblxuICBjb25zdCBoYW5kbGVTdGFydE5ld0NoYXQgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgY29uc3QgZnJvbU15QWdlbnRzID0gY29tcHV0ZWRDdXJyZW50T3B0aW9uID09PSBvcHRpb25zLm15QWdlbnRzXG4gICAgY29uc3QgZnJvbU15U2tpbGxzID0gY29tcHV0ZWRDdXJyZW50T3B0aW9uID09PSBvcHRpb25zLm15U2tpbGxzXG4gICAgY29uc3QgZnJvbU1haWFrZXJIb21lID0gY29tcHV0ZWRDdXJyZW50T3B0aW9uID09PSBvcHRpb25zLmhvbWUgJiYgaXNNYWlha2VyQWdlbnRTZWxlY3RlZFxuXG4gICAgaWYgKGZyb21NeUFnZW50cyB8fCBmcm9tTXlTa2lsbHMgfHwgZnJvbU1haWFrZXJIb21lKSB7XG4gICAgICBjb25zdCBmaXJzdEFnZW50ID0gYWdlbnRzLmRhdGFbMF1cbiAgICAgIGlmIChmaXJzdEFnZW50KSB7XG4gICAgICAgIHNldFByb2plY3QobnVsbClcbiAgICAgICAgc2V0Q2xpZW50Py4obnVsbClcbiAgICAgICAgc2V0VGFzaz8uKG51bGwpXG4gICAgICAgIHNlbGVjdEFnZW50KGZpcnN0QWdlbnQpXG4gICAgICB9XG4gICAgICBzZXRJbml0aWFsQ2hhdElkKG51bGwpXG4gICAgICBzZXROZXdDaGF0S2V5KHByZXYgPT4gcHJldiArIDEpXG4gICAgICBzZXRDdXJyZW50T3B0aW9uKG9wdGlvbnMuaG9tZSlcbiAgICAgIHNldENoaXBzUHJvamVjdChudWxsKVxuICAgICAgc2V0SGFzRXJyb3IoZmFsc2UpXG4gICAgICBpZiAoaXNXZWJTZWFyY2hBY3RpdmUpIHRvZ2dsZVdlYlNlYXJjaCgpXG4gICAgICByZXNldFNlbGVjdGVkQ2hhdFJlZi5jdXJyZW50Py4oKVxuICAgICAgZG9jdW1lbnQuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoJ2NoYXQtc2Vzc2lvbi1jaGFuZ2VkJykpXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBoYW5kbGVHb0hvbWUoKVxuICB9LCBbXG4gICAgYWdlbnRzLmRhdGEsXG4gICAgY29tcHV0ZWRDdXJyZW50T3B0aW9uLFxuICAgIGhhbmRsZUdvSG9tZSxcbiAgICBpc01haWFrZXJBZ2VudFNlbGVjdGVkLFxuICAgIGlzV2ViU2VhcmNoQWN0aXZlLFxuICAgIHNlbGVjdEFnZW50LFxuICAgIHNldENsaWVudCxcbiAgICBzZXRQcm9qZWN0LFxuICAgIHNldFRhc2ssXG4gICAgdG9nZ2xlV2ViU2VhcmNoLFxuICBdKVxuXG4gIGNvbnN0IGhhbmRsZVJlc2V0Q2hhdCA9IHVzZUNhbGxiYWNrKGFzeW5jICgpID0+IHtcbiAgICBzZXRVc2VySW5pdGlhbE1lc3NhZ2UoeyBtZXNzYWdlOiAnJywgYXR0YWNobWVudHM6IFtdIH0pXG4gICAgc2V0SW5pdGlhbENoYXRJZChudWxsKVxuICAgIC8vIERpc3BhdGNoIGV2ZW50IHRvIGNsZWFyIHRoZSBpbnB1dCB0ZXh0YXJlYVxuICAgIGRvY3VtZW50LmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCdjaGF0LXNlc3Npb24tY2hhbmdlZCcpKVxuICAgIGhhbmRsZUdvSG9tZSgpXG4gIH0sIFtoYW5kbGVHb0hvbWVdKVxuXG4gIC8vIEJvdMOzbiBcInZvbHZlclwiIGRlbCBoZWFkZXIgKHNvbG8gb3JjaGVzdHJhdG9yKTpcbiAgLy8gLSBEZXNkZSBlbCBjaGF0IChoZWFkZXIgbyBwcm9qZWN0L2NsaWVudC90YXNrKTogaW5pY2lhIHVuYSBjb252ZXJzYWNpw7NuIG51ZXZhIGNvbnNlcnZhbmRvIGVsXG4gIC8vICAgY29udGV4dG8gcGluZWFkbyB5IHZ1ZWx2ZSBhbCBob21lIChwYXNvIDIgY29uIEZBUXMvRlVBcykuXG4gIC8vIC0gRW4gZWwgaG9tZSBwYXNvIDIgKEZBUXMvRlVBcyBjb24gY29udGV4dG8pOiBsaW1waWEgZWwgY29udGV4dG8gcGluZWFkbyB5IHZ1ZWx2ZSBhbCBwYXNvIDFcbiAgLy8gICAoc2VsZWN0b3IgZGUgY29udGV4dG9zIHJlY2llbnRlcykuIEVuIGhlYWRlciBzaWVtcHJlOyBlbiBwcm9qZWN0L2NsaWVudC90YXNrIHNvbG8gc2kgZWxcbiAgLy8gICB1c3VhcmlvIHJlaW5pY2nDsyBlbCBjb250ZXh0byAoZGlkUmVzZXRDb250ZXh0SW5TZWN0aW9uKS5cbiAgY29uc3QgaGFuZGxlQmFjayA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBjb25zdCB0byA9IHJlc29sdmVBaUNoYXRCYWNrRGVzdGluYXRpb24oc2VjdGlvbiwgYWdlbnQ/LnR5cGUsIGNvbXB1dGVkQ3VycmVudE9wdGlvbiwgb3B0aW9ucy5ob21lKVxuICAgIGFtcGxpdHVkRXZlbnQoRVZFTlRTLmFpQ2hhdEJhY2ssIHsgdG8gfSlcblxuICAgIC8vIERlc2RlIGVsIGNoYXQg4oaSIG51ZXZhIGNvbnZlcnNhY2nDs24gU0lOIGJvcnJhciBlbCBjb250ZXh0byBwaW5lYWRvLCB2b2x2aWVuZG8gYWwgaG9tZS5cbiAgICBpZiAoY29tcHV0ZWRDdXJyZW50T3B0aW9uID09PSBvcHRpb25zLmNoYXQpIHtcbiAgICAgIC8vIE5vIGNvcnRhbW9zIGxhIGdlbmVyYWNpw7NuOiBsYSBzZXNpw7NuIHNpZ3VlIHJlc3BvbmRpZW5kbyBlbiBiYWNrZ3JvdW5kLlxuICAgICAgc2V0SXNXcml0aW5nKGZhbHNlKVxuICAgICAgc2V0VXNlckluaXRpYWxNZXNzYWdlKHsgbWVzc2FnZTogJycsIGF0dGFjaG1lbnRzOiBbXSB9KVxuICAgICAgc2V0SW5pdGlhbENoYXRJZChudWxsKVxuICAgICAgc2V0TmV3Q2hhdEtleShwcmV2ID0+IHByZXYgKyAxKVxuICAgICAgc2V0SGFzRXJyb3IoZmFsc2UpXG4gICAgICBpc1dlYlNlYXJjaEFjdGl2ZSAmJiB0b2dnbGVXZWJTZWFyY2goKVxuICAgICAgaWYgKHJlc2V0U2VsZWN0ZWRDaGF0UmVmLmN1cnJlbnQpIHtcbiAgICAgICAgcmVzZXRTZWxlY3RlZENoYXRSZWYuY3VycmVudCgpXG4gICAgICB9XG4gICAgICBzZXRDdXJyZW50T3B0aW9uKG9wdGlvbnMuaG9tZSlcbiAgICAgIGRvY3VtZW50LmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCdjaGF0LXNlc3Npb24tY2hhbmdlZCcpKVxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgLy8gSG9tZSBwYXNvIDIgKGNvbnRleHRvIHBpbmVhZG8pIOKGkiBsaW1waWFyIGVsIGNvbnRleHRvIHkgdm9sdmVyIGFsIHBhc28gMSAoY29udGV4dG9zIHJlY2llbnRlcykuXG4gICAgaWYgKGNvbXB1dGVkQ3VycmVudE9wdGlvbiA9PT0gb3B0aW9ucy5ob21lICYmIChpc0dsb2JhbE1haWFTZWN0aW9uKHNlY3Rpb24pIHx8IGRpZFJlc2V0Q29udGV4dEluU2VjdGlvbikpIHtcbiAgICAgIHNldFByb2plY3QobnVsbClcbiAgICAgIHNldENsaWVudD8uKG51bGwpXG4gICAgICBzZXRUYXNrPy4obnVsbClcbiAgICAgIHNldENoaXBzUHJvamVjdChudWxsKVxuICAgIH1cbiAgfSwgW1xuICAgIGNvbXB1dGVkQ3VycmVudE9wdGlvbixcbiAgICBzZWN0aW9uLFxuICAgIGFnZW50Py50eXBlLFxuICAgIGFtcGxpdHVkRXZlbnQsXG4gICAgb3B0aW9ucy5ob21lLFxuICAgIHN0b3BHZW5lcmF0aW9uRnVuY3Rpb24sXG4gICAgaXNXZWJTZWFyY2hBY3RpdmUsXG4gICAgdG9nZ2xlV2ViU2VhcmNoLFxuICAgIGRpZFJlc2V0Q29udGV4dEluU2VjdGlvbixcbiAgICBzZXRQcm9qZWN0LFxuICAgIHNldENsaWVudCxcbiAgICBzZXRUYXNrLFxuICAgIHNldENoaXBzUHJvamVjdCxcbiAgXSlcblxuICAvLyBEZXRlY3RhIGVsIHJlaW5pY2lvIGRlIGNvbnRleHRvIGVuIHByb2plY3QvY2xpZW50L3Rhc2s6IGNvbnRleHRvIHBpbmVhZG8g4oaSIHZhY8OtbyBjb24gZWxcbiAgLy8gb3JjaGVzdHJhdG9yIChwLiBlai4gYWwgcmVzZWxlY2Npb25hciBNQUlBIGVuIGVsIGxpc3RhZG8pLiBTb2xvIGxhIHRyYW5zaWNpw7NuIGN1ZW50YSwgYXPDrSB1bmFcbiAgLy8gYXBlcnR1cmEgZnJlc2NhIChjb250ZXh0byBwaW5lYWRvIGRlc2RlIGxhIHNlY2Npw7NuKSBubyBsbyBhY3RpdmEuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgcGlubmVkID0gISEodGFzaz8uaWQgfHwgY2hpcHNQcm9qZWN0Py5wcm9qZWN0SWQgfHwgY2xpZW50Py5pZCB8fCBwcm9qZWN0Py5pZClcbiAgICBjb25zdCB3YXNQaW5uZWQgPSBwcmV2SGFzUGlubmVkQ29udGV4dFJlZi5jdXJyZW50XG4gICAgcHJldkhhc1Bpbm5lZENvbnRleHRSZWYuY3VycmVudCA9IHBpbm5lZFxuICAgIGlmICghaXNHbG9iYWxNYWlhU2VjdGlvbihzZWN0aW9uKSAmJiBhZ2VudD8udHlwZSA9PT0gJ29yY2hlc3RyYXRvcicgJiYgd2FzUGlubmVkICYmICFwaW5uZWQpIHtcbiAgICAgIHNldERpZFJlc2V0Q29udGV4dEluU2VjdGlvbih0cnVlKVxuICAgIH1cbiAgfSwgW3Rhc2s/LmlkLCBjaGlwc1Byb2plY3Q/LnByb2plY3RJZCwgY2xpZW50Py5pZCwgcHJvamVjdD8uaWQsIHNlY3Rpb24sIGFnZW50Py50eXBlXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IG9uTWVyZ2VDcmVhdGVkQWdlbnQgPSAoZXZ0OiBFdmVudCkgPT4ge1xuICAgICAgY29uc3QgeyBhZ2VudDogbmV4dEFnZW50IH0gPSAoZXZ0IGFzIEN1c3RvbUV2ZW50PHsgYWdlbnQ6IEFnZW50IH0+KS5kZXRhaWwgfHwge31cbiAgICAgIGlmIChuZXh0QWdlbnQ/LmlkKSB7XG4gICAgICAgIGFkZEFnZW50KG5leHRBZ2VudCwgeyBuYXZpZ2F0ZUhvbWU6IGZhbHNlIH0pXG4gICAgICB9XG4gICAgfVxuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21haWEtbWVyZ2UtY3JlYXRlZC1hZ2VudC1pbnRvLWxpc3QnLCBvbk1lcmdlQ3JlYXRlZEFnZW50KVxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdtYWlhLW1lcmdlLWNyZWF0ZWQtYWdlbnQtaW50by1saXN0Jywgb25NZXJnZUNyZWF0ZWRBZ2VudClcbiAgICB9XG4gIH0sIFthZGRBZ2VudF0pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBvblN5bmNFZGl0ZWRBZ2VudCA9IChldnQ6IEV2ZW50KSA9PiB7XG4gICAgICBjb25zdCB7IGFnZW50OiBuZXh0QWdlbnQgfSA9IChldnQgYXMgQ3VzdG9tRXZlbnQ8eyBhZ2VudDogQWdlbnQgfT4pLmRldGFpbCB8fCB7fVxuICAgICAgaWYgKCFuZXh0QWdlbnQ/LmlkKSByZXR1cm5cbiAgICAgIHVwZGF0ZUFnZW50KG5leHRBZ2VudClcbiAgICAgIGlmIChhZ2VudD8uaWQgPT09IG5leHRBZ2VudC5pZCkge1xuICAgICAgICBzZWxlY3RBZ2VudChuZXh0QWdlbnQpXG4gICAgICB9XG4gICAgfVxuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21haWEtc3luYy1lZGl0ZWQtYWdlbnQtZnJvbS1jaGF0Jywgb25TeW5jRWRpdGVkQWdlbnQpXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21haWEtc3luYy1lZGl0ZWQtYWdlbnQtZnJvbS1jaGF0Jywgb25TeW5jRWRpdGVkQWdlbnQpXG4gICAgfVxuICB9LCBbdXBkYXRlQWdlbnQsIHNlbGVjdEFnZW50LCBhZ2VudD8uaWRdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3Qgb3BlbkNoYXRWaWV3ID0gKCkgPT4ge1xuICAgICAgc2V0SGFzRXJyb3IoZmFsc2UpXG4gICAgICBzZXRJbml0aWFsQ2hhdElkKG51bGwpXG4gICAgICBzZXROZXdDaGF0S2V5KHByZXYgPT4gcHJldiArIDEpXG4gICAgICBzZXRVc2VySW5pdGlhbE1lc3NhZ2UoeyBtZXNzYWdlOiAnJywgYXR0YWNobWVudHM6IFtdIH0pXG4gICAgICBzZXRDdXJyZW50T3B0aW9uKG9wdGlvbnMuY2hhdClcbiAgICAgIGRvY3VtZW50LmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCdjaGF0LXNlc3Npb24tY2hhbmdlZCcpKVxuICAgIH1cbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdtYWlhLW9wZW4tY2hhdC12aWV3Jywgb3BlbkNoYXRWaWV3KVxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdtYWlhLW9wZW4tY2hhdC12aWV3Jywgb3BlbkNoYXRWaWV3KVxuICAgIH1cbiAgfSwgW10pXG5cbiAgLyoqXG4gICAqIEVsIMOtY29ubyBkZSBNQUlBIGRlbCBoZWFkZXIgbGxldmEgc2llbXByZSBhbCBIb21lLiBTaSBNQUlBIHlhIGVzdMOhIG1vbnRhZGEgcGVyb1xuICAgKiBtaW5pbWl6YWRhLCBlbCBob3N0IG5vIHB1ZWRlIHJlc29sdmVybG8gY2FtYmlhbmRvIGBpc09wZW5gICh5YSBlc3TDoSBlbiB0cnVlKSxcbiAgICogYXPDrSBxdWUgYXZpc2EgcG9yIGV2ZW50byB5IGFjw6EgcmVzdGF1cmFtb3MgeSB2YW1vcyBhbCBIb21lLlxuICAgKi9cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBvcGVuSG9tZSA9ICgpID0+IHtcbiAgICAgIGFwcGx5RXhwYW5kZWRIb3N0VGFrZW92ZXIoe1xuICAgICAgICBzZWN0aW9uOiAnaGVhZGVyJyxcbiAgICAgICAgZW50aXR5OiB7IHByb2plY3RJZDogbnVsbCwgY2xpZW50SWQ6IG51bGwgfSxcbiAgICAgIH0pXG4gICAgfVxuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21haWEtb3Blbi1ob21lJywgb3BlbkhvbWUpXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21haWEtb3Blbi1ob21lJywgb3BlbkhvbWUpXG4gICAgfVxuICB9LCBbYXBwbHlFeHBhbmRlZEhvc3RUYWtlb3Zlcl0pXG5cbiAgLyoqXG4gICAqIE90cm8gaG9zdCAocHJveWVjdG8sIGNsaWVudGUsIGJhbm5lciwgaGVhZGVy4oCmKSBwaWRlIGFicmlyIE1BSUEgbWllbnRyYXMgeWEgaGF5IHVuYVxuICAgKiBpbnN0YW5jaWEgbW9udGFkYS4gRXhwYW5kZSBzaSBlc3RhYmEgbWluaW1pemFkbywgYXBsaWNhIGVsIGNvbnRleHRvIGRlbCBob3N0IG51ZXZvXG4gICAqIHkgdmEgYWwgaG9tZSDigJQgc2luIHJlc3RhdXJhciBsYSBjb252ZXJzYWNpw7NuIHByZXZpYSAoZXNvIGxvIGhhY2UgZWwgcGlsbCkuXG4gICAqL1xuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IG9wZW5Gcm9tSG9zdCA9IChldmVudDogRXZlbnQpID0+IHtcbiAgICAgIGNvbnN0IHsgZGV0YWlsIH0gPSBldmVudCBhcyBDdXN0b21FdmVudDxNYWlhSG9zdE9wZW5EZXRhaWw+XG4gICAgICBpZiAoIWRldGFpbCkgcmV0dXJuXG4gICAgICBhcHBseUV4cGFuZGVkSG9zdFRha2VvdmVyKGRldGFpbClcbiAgICB9XG5cbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKE1BSUFfT1BFTl9GUk9NX0hPU1RfRVZFTlQsIG9wZW5Gcm9tSG9zdClcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihNQUlBX09QRU5fRlJPTV9IT1NUX0VWRU5ULCBvcGVuRnJvbUhvc3QpXG4gICAgfVxuICB9LCBbYXBwbHlFeHBhbmRlZEhvc3RUYWtlb3Zlcl0pXG5cbiAgLyoqIE1pc21vIGZsdWpvIHF1ZSBDaGF0QUlNeUFnZW50cy5oYW5kbGVVc2VBZ2VudCArIG9uQmFjayAoaGFuZGxlcnMuaG9tZSkuXG4gICAqICBFbCBkZXRhaWwgcHVlZGUgdHJhZXIgb3BjaW9uYWxtZW50ZSBgcHJvamVjdGAsIGBjbGllbnRgLCBgdGFza2AgcGFyYSBmbG93cyBxdWVcbiAgICogIG5lY2VzaXRhbiBwcmVzZXJ2YXIgY29udGV4dG8gKGVqLiBzZWxlY3RvciBkZSBhZ2VudGVzIGRlc2RlIHVuYSB0YXJlYSkuIFNpIG5vIHZpZW5lbixcbiAgICogIHNlIG1hbnRpZW5lIGVsIGNvbXBvcnRhbWllbnRvIG9yaWdpbmFsIGRlIGxpbXBpYXIgcHJvamVjdC9jbGllbnQuICovXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3Qgb3Blbk5ld0NoYXRXaXRoQWdlbnQgPSAoZXZlbnQ6IEV2ZW50KSA9PiB7XG4gICAgICBjb25zdCB7IGRldGFpbCB9ID0gZXZlbnQgYXMgQ3VzdG9tRXZlbnQ8e1xuICAgICAgICBhZ2VudDogQWdlbnRcbiAgICAgICAgcHJvamVjdD86IFByb2plY3QgfCBudWxsXG4gICAgICAgIGNsaWVudD86IENsaWVudCB8IG51bGxcbiAgICAgICAgdGFzaz86IFRhc2sgfCBudWxsXG4gICAgICB9PlxuICAgICAgY29uc3QgbmV4dEFnZW50ID0gZGV0YWlsPy5hZ2VudFxuICAgICAgaWYgKCFuZXh0QWdlbnQpIHJldHVyblxuXG4gICAgICBzZXRQcm9qZWN0KGRldGFpbD8ucHJvamVjdCA/PyBudWxsKVxuICAgICAgc2V0Q2xpZW50Py4oZGV0YWlsPy5jbGllbnQgPz8gbnVsbClcbiAgICAgIGlmIChkZXRhaWw/LnRhc2sgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBzZXRUYXNrPy4oZGV0YWlsLnRhc2spXG4gICAgICB9XG4gICAgICBzZWxlY3RBZ2VudChuZXh0QWdlbnQpXG4gICAgICBzZXRIYXNFcnJvcihmYWxzZSlcbiAgICAgIHNldEN1cnJlbnRPcHRpb24ob3B0aW9ucy5ob21lKVxuICAgIH1cblxuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21haWEtb3Blbi1uZXctY2hhdC13aXRoLWFnZW50Jywgb3Blbk5ld0NoYXRXaXRoQWdlbnQpXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21haWEtb3Blbi1uZXctY2hhdC13aXRoLWFnZW50Jywgb3Blbk5ld0NoYXRXaXRoQWdlbnQpXG4gICAgfVxuICB9LCBbc2VsZWN0QWdlbnQsIHNldENsaWVudCwgc2V0UHJvamVjdCwgc2V0VGFza10pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBoYW5kbGVVc2VTa2lsbEFmdGVyU2F2ZSA9IChldmVudDogRXZlbnQpID0+IHtcbiAgICAgIGNvbnN0IHsgc2tpbGwsIHVzZUZpcnN0QWdlbnQgfSA9IChldmVudCBhcyBDdXN0b21FdmVudDx7IHNraWxsOiBTa2lsbDsgdXNlRmlyc3RBZ2VudD86IGJvb2xlYW4gfT4pLmRldGFpbCB8fCB7fVxuICAgICAgaWYgKCFza2lsbCkgcmV0dXJuXG5cbiAgICAgIGNvbnN0IGZpcnN0QWdlbnQgPSBhZ2VudHNEYXRhUmVmLmN1cnJlbnRbMF1cbiAgICAgIGlmICh1c2VGaXJzdEFnZW50ICYmIGZpcnN0QWdlbnQpIHtcbiAgICAgICAgc2VsZWN0QWdlbnQoZmlyc3RBZ2VudClcbiAgICAgIH1cblxuICAgICAgc2V0SGFzRXJyb3IoZmFsc2UpXG4gICAgICBzZXRJbml0aWFsQ2hhdElkKG51bGwpXG4gICAgICBzZXROZXdDaGF0S2V5KHByZXYgPT4gcHJldiArIDEpXG4gICAgICBzZXRVc2VySW5pdGlhbE1lc3NhZ2UoeyBtZXNzYWdlOiAnJywgYXR0YWNobWVudHM6IFtdIH0pXG4gICAgICBzZXRDdXJyZW50T3B0aW9uKG9wdGlvbnMuaG9tZSlcbiAgICAgIGRvY3VtZW50LmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCdjaGF0LXNlc3Npb24tY2hhbmdlZCcpKVxuXG4gICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgICBkb2N1bWVudC5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgnbWFpYS1pbnNlcnQtc2tpbGwtbWVudGlvbicsIHsgZGV0YWlsOiB7IHNraWxsIH0gfSkpXG4gICAgICAgIGRvY3VtZW50LmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCdtYWlhLWlucHV0LXJlZm9jdXMnKSlcbiAgICAgIH0pXG4gICAgfVxuXG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihTS0lMTF9VU0VfQUZURVJfU0FWRV9FVkVOVCwgaGFuZGxlVXNlU2tpbGxBZnRlclNhdmUpXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoU0tJTExfVVNFX0FGVEVSX1NBVkVfRVZFTlQsIGhhbmRsZVVzZVNraWxsQWZ0ZXJTYXZlKVxuICAgIH1cbiAgfSwgW3NlbGVjdEFnZW50XSlcblxuICAvLyBNZXRhZGF0YSBkZSBsYSBzZXNzaW9uIGFiaWVydGEgKGFnZW50X3R5cGUvYWdlbnRfZW50aXR5ICsgY29udGV4dG8pLCBlbWl0aWRhIHBvciB1c2VDaGF0TWVzc2FnZXMuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3Qgb25TZXNzaW9uTWV0YSA9IChldnQ6IEV2ZW50KSA9PiB7XG4gICAgICBjb25zdCB7IGRldGFpbCB9ID0gZXZ0IGFzIEN1c3RvbUV2ZW50PFNlc3Npb25NZXRhPlxuICAgICAgaWYgKGRldGFpbCkgc2V0U2Vzc2lvbk1ldGEoZGV0YWlsKVxuICAgIH1cbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdtYWlhLWNoYXQtc2Vzc2lvbi1tZXRhJywgb25TZXNzaW9uTWV0YSlcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignbWFpYS1jaGF0LXNlc3Npb24tbWV0YScsIG9uU2Vzc2lvbk1ldGEpXG4gICAgfVxuICB9LCBbXSlcblxuICAvLyBBbCBjYW1iaWFyIGRlIGNvbnZlcnNhY2nDs24gbGltcGlhbW9zIGxhIG1ldGFkYXRhOyBlbCBsb2FkIGRlIGxhIG51ZXZhIHNlc3Npb24gbGEgdnVlbHZlIGEgZW1pdGlyLlxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIHNldFNlc3Npb25NZXRhKG51bGwpXG4gIH0sIFtpbml0aWFsQ2hhdElkXSlcblxuICAvLyBDYXJ0ZWwgXCJjb250aW51YXIgZW4gdW4gY2hhdCBudWV2b1wiOiBzZSBtdWVzdHJhIGFsIGFicmlyIHVuYSBjb252ZXJzYWNpw7NuIGRlIHVuIGNsb25lIGxlZ2FjeVxuICAvLyAoYWdlbnRfdHlwZSA9PT0gJ2Nsb25lJyBjb24gZW50aXR5IHByb2plY3QvdGFzay9jbGllbnQpLiBFbCBpbnB1dCBzZSByZWVtcGxhemEgcG9yIGVsIGNhcnRlbC5cbiAgY29uc3QgbGVnYWN5Q29udGV4dFNlc3Npb24gPSB1c2VNZW1vPHsgZW50aXR5VHlwZTogTGVnYWN5Q29udGV4dEVudGl0eTsgY29udGV4dE5hbWU6IHN0cmluZyB9IHwgbnVsbD4oKCkgPT4ge1xuICAgIGlmIChjb21wdXRlZEN1cnJlbnRPcHRpb24gIT09IG9wdGlvbnMuY2hhdCkgcmV0dXJuIG51bGxcbiAgICBpZiAoIXNlc3Npb25NZXRhIHx8IHNlc3Npb25NZXRhLmFnZW50VHlwZSAhPT0gJ2Nsb25lJykgcmV0dXJuIG51bGxcbiAgICBjb25zdCBlbnRpdHkgPSBzZXNzaW9uTWV0YS5hZ2VudEVudGl0eVxuICAgIGlmICghZW50aXR5IHx8ICFMRUdBQ1lfQ09OVEVYVF9FTlRJVElFUy5pbmNsdWRlcyhlbnRpdHkgYXMgTGVnYWN5Q29udGV4dEVudGl0eSkpIHJldHVybiBudWxsXG4gICAgY29uc3QgY29udGV4dE5hbWUgPVxuICAgICAgZW50aXR5ID09PSAndGFzaycgPyBzZXNzaW9uTWV0YS50YXNrTmFtZSA6IGVudGl0eSA9PT0gJ3Byb2plY3QnID8gc2Vzc2lvbk1ldGEucHJvamVjdE5hbWUgOiBzZXNzaW9uTWV0YS5jbGllbnROYW1lXG4gICAgcmV0dXJuIHsgZW50aXR5VHlwZTogZW50aXR5IGFzIExlZ2FjeUNvbnRleHRFbnRpdHksIGNvbnRleHROYW1lOiBjb250ZXh0TmFtZSB8fCAnJyB9XG4gIH0sIFtjb21wdXRlZEN1cnJlbnRPcHRpb24sIHNlc3Npb25NZXRhXSlcblxuICAvLyBNYXJjYSBlbCBhZ2VudGUgZGUgbGEgY29udmVyc2FjacOzbiBsZWdhY3kgcGFyYSBxdWUgaGVhZGVyLCBzZWxlY3RvciB5IGF2YXRhciBtdWVzdHJlbiBlbCBsb2dvXG4gIC8vIE1BSUEgeSBlbCBub21icmUgdGFjaGFkbyAoYWdlbnRlIG9ic29sZXRvKSwgc2luIGRlcGVuZGVyIGRlbCBgdHlwZWAgcmVzdWVsdG8gZGUgbGEgc2VzacOzbiB2aWVqYS5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAobGVnYWN5Q29udGV4dFNlc3Npb24gJiYgYWdlbnQgJiYgIWFnZW50LmlzX2xlZ2FjeV9jb250ZXh0KSB7XG4gICAgICBzZWxlY3RBZ2VudCh7IC4uLmFnZW50LCBpc19sZWdhY3lfY29udGV4dDogdHJ1ZSB9KVxuICAgIH1cbiAgfSwgW2xlZ2FjeUNvbnRleHRTZXNzaW9uLCBhZ2VudCwgc2VsZWN0QWdlbnRdKVxuXG4gIC8vIEFicmUgdW4gY2hhdCBudWV2byBjb24gZWwgb3JjaGVzdHJhdG9yIHNldGVhbmRvIGVsIGNvbnRleHRvIGRlbCBjbG9uZSBsZWdhY3kgKG1pc21vIGNyaXRlcmlvXG4gIC8vIHF1ZSBjbGlja2VhciB1biBjb250ZXh0byByZWNpZW50ZSBlbiBlbCBob21lIOKGkiBwYXNvIDIgY29uIEZBUXMvYWNjaW9uZXMgZGUgZXNlIGNvbnRleHRvKS5cbiAgY29uc3QgaGFuZGxlQ29udGludWVMZWdhY3lDb250ZXh0SW5OZXdDaGF0ID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGlmICghc2Vzc2lvbk1ldGEpIHJldHVyblxuICAgIGNvbnN0IHtcbiAgICAgIGFnZW50RW50aXR5LFxuICAgICAgcHJvamVjdElkOiBwSWQsXG4gICAgICBwcm9qZWN0TmFtZTogcE5hbWUsXG4gICAgICBjbGllbnRJZDogY0lkLFxuICAgICAgY2xpZW50TmFtZTogY05hbWUsXG4gICAgICB0YXNrSWQ6IHRJZCxcbiAgICAgIHRhc2tOYW1lOiB0TmFtZSxcbiAgICB9ID0gc2Vzc2lvbk1ldGFcblxuICAgIGNvbnN0IG9yY2hlc3RyYXRvciA9IGFnZW50cy5kYXRhLmZpbmQoKGE6IEFnZW50KSA9PiBhLnR5cGUgPT09ICdvcmNoZXN0cmF0b3InKVxuICAgIGlmICghb3JjaGVzdHJhdG9yKSByZXR1cm5cblxuICAgIC8vIFJlc2V0IGRlbCBjaGF0IOKGkiBjb252ZXJzYWNpw7NuIG51ZXZhIChsYSBhbnRlcmlvciBzaWd1ZSBlbiBiYWNrZ3JvdW5kKVxuICAgIHNldElzV3JpdGluZyhmYWxzZSlcbiAgICBzZXRVc2VySW5pdGlhbE1lc3NhZ2UoeyBtZXNzYWdlOiAnJywgYXR0YWNobWVudHM6IFtdIH0pXG4gICAgc2V0SW5pdGlhbENoYXRJZChudWxsKVxuICAgIHNldE5ld0NoYXRLZXkocHJldiA9PiBwcmV2ICsgMSlcbiAgICBzZXRIYXNFcnJvcihmYWxzZSlcblxuICAgIC8vIFNldGVhciBjb250ZXh0byAobWlzbW8gY3JpdGVyaW8gcXVlIGhhbmRsZVNlbGVjdFJlY2VudENvbnRleHQgZGVsIGhvbWUpXG4gICAgc2V0VGFzaz8uKG51bGwpXG4gICAgc2V0UHJvamVjdChudWxsKVxuICAgIHNldENsaWVudD8uKG51bGwpXG4gICAgc2V0Q2hpcHNQcm9qZWN0KG51bGwpXG5cbiAgICBpZiAoYWdlbnRFbnRpdHkgPT09ICdjbGllbnQnICYmIGNJZCAhPSBudWxsKSB7XG4gICAgICBzZXRDbGllbnQ/Lih7IGlkOiBjSWQsIG5hbWU6IGNOYW1lIHx8ICcnIH0pXG4gICAgfSBlbHNlIGlmIChhZ2VudEVudGl0eSA9PT0gJ3Byb2plY3QnICYmIHBJZCAhPSBudWxsKSB7XG4gICAgICBzZXRQcm9qZWN0KHtcbiAgICAgICAgaWQ6IHBJZCxcbiAgICAgICAgbmFtZTogcE5hbWUgfHwgJycsXG4gICAgICAgIC4uLihjSWQgIT0gbnVsbCA/IHsgY2xpZW50SWQ6IGNJZCwgY2xpZW50OiB7IGlkOiBjSWQsIG5hbWU6IGNOYW1lIHx8ICcnIH0gfSA6IHt9KSxcbiAgICAgIH0pXG4gICAgICBzZXRDaGlwc1Byb2plY3QoeyBwcm9qZWN0SWQ6IFN0cmluZyhwSWQpLCBwcm9qZWN0TmFtZTogcE5hbWUgfHwgJycsIGNsaWVudE5hbWU6IGNOYW1lIHx8ICcnIH0pXG4gICAgfSBlbHNlIGlmIChhZ2VudEVudGl0eSA9PT0gJ3Rhc2snICYmIHRJZCAhPSBudWxsKSB7XG4gICAgICBzZXRUYXNrPy4oe1xuICAgICAgICBpZDogdElkLFxuICAgICAgICBuYW1lOiB0TmFtZSB8fCAnJyxcbiAgICAgICAgLi4uKHBJZCAhPSBudWxsID8geyBwcm9qZWN0SWQ6IHBJZCB9IDoge30pLFxuICAgICAgICAuLi4oY0lkICE9IG51bGwgPyB7IGNsaWVudElkOiBjSWQgfSA6IHt9KSxcbiAgICAgIH0pXG4gICAgICBpZiAoY0lkICE9IG51bGwpIHNldENsaWVudD8uKHsgaWQ6IGNJZCwgbmFtZTogY05hbWUgfHwgJycgfSlcbiAgICAgIGlmIChwSWQgIT0gbnVsbCkge1xuICAgICAgICBzZXRQcm9qZWN0KHtcbiAgICAgICAgICBpZDogcElkLFxuICAgICAgICAgIG5hbWU6IHBOYW1lIHx8ICcnLFxuICAgICAgICAgIC4uLihjSWQgIT0gbnVsbCA/IHsgY2xpZW50SWQ6IGNJZCwgY2xpZW50OiB7IGlkOiBjSWQsIG5hbWU6IGNOYW1lIHx8ICcnIH0gfSA6IHt9KSxcbiAgICAgICAgfSlcbiAgICAgICAgc2V0Q2hpcHNQcm9qZWN0KHsgcHJvamVjdElkOiBTdHJpbmcocElkKSwgcHJvamVjdE5hbWU6IHBOYW1lIHx8ICcnLCBjbGllbnROYW1lOiBjTmFtZSB8fCAnJyB9KVxuICAgICAgfVxuICAgIH1cblxuICAgIHNlbGVjdEFnZW50KG9yY2hlc3RyYXRvcilcbiAgICBzZXRTZXNzaW9uTWV0YShudWxsKVxuICAgIHNldEN1cnJlbnRPcHRpb24ob3B0aW9ucy5ob21lKVxuICAgIGRvY3VtZW50LmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCdjaGF0LXNlc3Npb24tY2hhbmdlZCcpKVxuICB9LCBbc2Vzc2lvbk1ldGEsIGFnZW50cy5kYXRhLCBzZWxlY3RBZ2VudCwgc2V0Q2xpZW50LCBzZXRQcm9qZWN0LCBzZXRUYXNrLCBzZXRDaGlwc1Byb2plY3QsIHN0b3BHZW5lcmF0aW9uRnVuY3Rpb25dKVxuXG4gIGNvbnN0IHNob3dOZXdDaGF0ID0gY29tcHV0ZWRDdXJyZW50T3B0aW9uICE9PSBvcHRpb25zLmNoYXRcbiAgY29uc3QgaXNNeUFnZW50c1NlY3Rpb24gPSBjb21wdXRlZEN1cnJlbnRPcHRpb24gPT09IG9wdGlvbnMubXlBZ2VudHNcbiAgY29uc3QgaXNNeVNraWxsc1NlY3Rpb24gPSBjb21wdXRlZEN1cnJlbnRPcHRpb24gPT09IG9wdGlvbnMubXlTa2lsbHNcblxuICAvLyBCb3TDs24gXCJ2b2x2ZXJcIjogc29sbyBwYXJhIGVsIG9yY2hlc3RyYXRvci5cbiAgLy8gLSBFbiBlbCBjaGF0OiBkaXNwb25pYmxlIGVuIHRvZGFzIGxhcyBzZWNjaW9uZXMgKGhlYWRlciB5IHByb2plY3QvY2xpZW50L3Rhc2spLlxuICAvLyAtIEVuIGVsIGhvbWUgcGFzbyAyIChGQVFzL0ZVQXMgY29uIGNvbnRleHRvIHBpbmVhZG8pOiBlbiBlbCBoZWFkZXIgc2llbXByZTsgZW5cbiAgLy8gICBwcm9qZWN0L2NsaWVudC90YXNrIHNvbG8gc2kgZWwgdXN1YXJpbyByZWluaWNpw7MgZWwgY29udGV4dG8gKHBhc8OzIHBvciBlbCBzZWxlY3RvciBkZVxuICAvLyAgIGNvbnRleHRvcyByZWNpZW50ZXMpLiBFbiBlbCBwYXNvIDEgKHNpbiBjb250ZXh0bykgTk8gc2UgbXVlc3RyYS5cbiAgY29uc3QgaGFzUGlubmVkQ29udGV4dCA9ICEhKHRhc2s/LmlkIHx8IGNoaXBzUHJvamVjdD8ucHJvamVjdElkIHx8IGNsaWVudD8uaWQgfHwgcHJvamVjdD8uaWQpXG4gIGNvbnN0IGlzQ2hhdFZpZXcgPSBjb21wdXRlZEN1cnJlbnRPcHRpb24gPT09IG9wdGlvbnMuY2hhdFxuICBjb25zdCBpc0hvbWVTdGVwMiA9IGNvbXB1dGVkQ3VycmVudE9wdGlvbiA9PT0gb3B0aW9ucy5ob21lICYmIGhhc1Bpbm5lZENvbnRleHRcbiAgY29uc3QgaXNIZWFkZXJIb21lU3RlcDIgPSBpc0dsb2JhbE1haWFTZWN0aW9uKHNlY3Rpb24pICYmIGlzSG9tZVN0ZXAyXG4gIGNvbnN0IGlzU2VjdGlvblJlc2V0SG9tZVN0ZXAyID0gIWlzR2xvYmFsTWFpYVNlY3Rpb24oc2VjdGlvbikgJiYgaXNIb21lU3RlcDIgJiYgZGlkUmVzZXRDb250ZXh0SW5TZWN0aW9uXG4gIGNvbnN0IHNob3dCYWNrQnV0dG9uID1cbiAgICBhZ2VudD8udHlwZSA9PT0gJ29yY2hlc3RyYXRvcicgJiZcbiAgICAhaGFzRXJyb3IgJiZcbiAgICAhbG9hZGluZyAmJlxuICAgIChpc0NoYXRWaWV3IHx8IGlzSGVhZGVySG9tZVN0ZXAyIHx8IGlzU2VjdGlvblJlc2V0SG9tZVN0ZXAyKVxuICBjb25zdCBoYW5kbGVPcGVuTWFya2V0cGxhY2UgPSB1c2VDYWxsYmFjayhhc3luYyAoKSA9PiB7XG4gICAgaWYgKCF3aW5kb3cuTUFJQV9DSEFUX0FJX0ZFQVRVUkVfQUNDRVNTX01VTFRJX0FHRU5UUykge1xuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGF3YWl0IGVuc3VyZUFnZW50c0xvYWRlZCgpXG4gICAgY2xlYXJBZ2VudCgpXG4gICAgc2V0Q3VycmVudE9wdGlvbihvcHRpb25zLm15QWdlbnRzKVxuICAgIHBhdGNoTWFpYVBhbmVsU2Vzc2lvbih1c2VyLmlkLCB7XG4gICAgICBhZ2VudHNOYXZBY3RpdmU6ICdteUFnZW50cycsXG4gICAgICBjdXJyZW50T3B0aW9uOiBvcHRpb25zLm15QWdlbnRzLFxuICAgICAgYWN0aXZlQ2hhdElkOiBudWxsLFxuICAgICAgYWdlbnRJZDogbnVsbCxcbiAgICB9KVxuICB9LCBbY2xlYXJBZ2VudCwgZW5zdXJlQWdlbnRzTG9hZGVkLCB1c2VyLmlkXSlcblxuICBjb25zdCBoYW5kbGVPcGVuU2tpbGxzID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGlmICghY2FuQWNjZXNzVG9Ta2lsbHModXNlcikpIHtcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBjbGVhckFnZW50KClcbiAgICBzZXRIYXNFcnJvcihmYWxzZSlcbiAgICBzZXRDdXJyZW50T3B0aW9uKG9wdGlvbnMubXlTa2lsbHMpXG4gICAgaGFuZGxlR2V0U2tpbGxzKClcbiAgICBwYXRjaE1haWFQYW5lbFNlc3Npb24odXNlci5pZCwge1xuICAgICAgYWdlbnRzTmF2QWN0aXZlOiAnbXlTa2lsbHMnLFxuICAgICAgY3VycmVudE9wdGlvbjogb3B0aW9ucy5teVNraWxscyxcbiAgICB9KVxuICB9LCBbY2xlYXJBZ2VudCwgaGFuZGxlR2V0U2tpbGxzLCB1c2VyXSlcblxuICBjb25zdCBoYW5kbGVHb1RvTWFpYWtlciA9IHVzZUNhbGxiYWNrKGFzeW5jICgpID0+IHtcbiAgICBzZXRIYXNFcnJvcihmYWxzZSlcbiAgICBsZXQgbWFpYWtlckFnZW50ID0gYWdlbnRzLmRhdGEuZmluZCgoYTogQWdlbnQpID0+IGlzTWFya2V0cGxhY2VHbG9iYWxDbG9uZUFnZW50KGEpKVxuICAgIGlmICghbWFpYWtlckFnZW50KSB7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoTWFpYSh7XG4gICAgICAgICAgcGF0aDogYGFnZW50cz9hZ2VudF90eXBlPWNsb25lJmVudGl0eT1nbG9iYWwmbGFuZz0ke21hcENPUkxhbmcoaTE4bi5sYW5ndWFnZSl9YCxcbiAgICAgICAgICBtZXRob2Q6ICdHRVQnLFxuICAgICAgICB9KVxuICAgICAgICBjb25zdCBkYXRhID0gYXdhaXQgcmVzcG9uc2UuanNvbigpXG4gICAgICAgIG1haWFrZXJBZ2VudCA9IChkYXRhLmRhdGEgfHwgW10pLmZpbmQoKGE6IEFnZW50KSA9PiBpc01hcmtldHBsYWNlR2xvYmFsQ2xvbmVBZ2VudChhKSlcbiAgICAgIH0gY2F0Y2gge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKCFtYWlha2VyQWdlbnQpIHtcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBzZXRQcm9qZWN0KG51bGwpXG4gICAgc2V0Q2xpZW50Py4obnVsbClcbiAgICBzZXRUYXNrPy4obnVsbClcbiAgICBzZWxlY3RBZ2VudChtYWlha2VyQWdlbnQpXG4gICAgc2V0Q3VycmVudE9wdGlvbihvcHRpb25zLmhvbWUpXG4gICAgaWYgKHJlc2V0U2VsZWN0ZWRDaGF0UmVmLmN1cnJlbnQpIHtcbiAgICAgIHJlc2V0U2VsZWN0ZWRDaGF0UmVmLmN1cnJlbnQoKVxuICAgIH1cbiAgICBwYXRjaE1haWFQYW5lbFNlc3Npb24odXNlci5pZCwge1xuICAgICAgYWdlbnRzTmF2QWN0aXZlOiAnbWFpYWtlcicsXG4gICAgICBjdXJyZW50T3B0aW9uOiBvcHRpb25zLmhvbWUsXG4gICAgICBhZ2VudElkOiBtYWlha2VyQWdlbnQuaWQsXG4gICAgICBhY3RpdmVDaGF0SWQ6IG51bGwsXG4gICAgfSlcbiAgfSwgW2FnZW50cy5kYXRhLCBpMThuLmxhbmd1YWdlLCBzZWxlY3RBZ2VudCwgc2V0Q2xpZW50LCBzZXRQcm9qZWN0LCBzZXRUYXNrLCB1c2VyLmlkXSlcblxuICBjb25zdCBsb2FkQWdlbnRzRm9yU2Vzc2lvblJlc3RvcmUgPSB1c2VDYWxsYmFjayhcbiAgICBhc3luYyAoc25hcHNob3Q6IE1haWFQYW5lbFNlc3Npb25TbmFwc2hvdCk6IFByb21pc2U8dm9pZD4gPT4ge1xuICAgICAgaWYgKHNuYXBzaG90LmFnZW50c05hdkFjdGl2ZSA9PT0gJ215U2tpbGxzJykge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgbGV0IGFnZW50VG9TZWxlY3Q6IEFnZW50IHwgdW5kZWZpbmVkXG4gICAgICBpZiAoc25hcHNob3QuYWdlbnRJZCAmJiBzbmFwc2hvdC5hZ2VudHNOYXZBY3RpdmUgIT09ICdteUFnZW50cycpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBhZ2VudFRvU2VsZWN0ID0gYXdhaXQgZmV0Y2hBZ2VudERldGFpbChzbmFwc2hvdC5hZ2VudElkKVxuICAgICAgICB9IGNhdGNoIHtcbiAgICAgICAgICBhZ2VudFRvU2VsZWN0ID0gdW5kZWZpbmVkXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKCFhZ2VudHNGZXRjaGVkUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgYWdlbnRzRmV0Y2hlZFJlZi5jdXJyZW50ID0gdHJ1ZVxuICAgICAgICBhd2FpdCBoYW5kbGVHZXRBZ2VudHMoc25hcHNob3QuYWdlbnRzTmF2QWN0aXZlID09PSAnbXlBZ2VudHMnID8gdW5kZWZpbmVkIDogYWdlbnRUb1NlbGVjdClcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIGlmIChhZ2VudFRvU2VsZWN0ICYmIHNuYXBzaG90LmFnZW50c05hdkFjdGl2ZSAhPT0gJ215QWdlbnRzJykge1xuICAgICAgICBzZWxlY3RBZ2VudChhZ2VudFRvU2VsZWN0KVxuICAgICAgfVxuICAgIH0sXG4gICAgW2hhbmRsZUdldEFnZW50cywgc2VsZWN0QWdlbnRdXG4gIClcblxuICBjb25zdCBhcHBseVNlc3Npb25SZXN0b3JlID0gdXNlQ2FsbGJhY2soXG4gICAgYXN5bmMgKHNuYXBzaG90OiBNYWlhUGFuZWxTZXNzaW9uU25hcHNob3QpID0+IHtcbiAgICAgIHNldElzTWluaW1pemVkKGZhbHNlKVxuICAgICAgc2V0Q2hhdFZpZXdWaXNpYmxlKHRydWUpXG5cbiAgICAgIGlmIChzbmFwc2hvdC5ob3N0Q29udGV4dD8uY2hpcHNQcm9qZWN0KSB7XG4gICAgICAgIHNldENoaXBzUHJvamVjdChzbmFwc2hvdC5ob3N0Q29udGV4dC5jaGlwc1Byb2plY3QpXG4gICAgICB9XG5cbiAgICAgIGlmIChzbmFwc2hvdC5hZ2VudHNOYXZBY3RpdmUgPT09ICdteUFnZW50cycpIHtcbiAgICAgICAgYXdhaXQgaGFuZGxlT3Blbk1hcmtldHBsYWNlKClcbiAgICAgICAgZm9jdXNDaGF0SW5wdXQoKVxuICAgICAgICBzeW5jUGFuZWxTZXNzaW9uKClcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIGlmIChzbmFwc2hvdC5hZ2VudHNOYXZBY3RpdmUgPT09ICdteVNraWxscycpIHtcbiAgICAgICAgaGFuZGxlT3BlblNraWxscygpXG4gICAgICAgIGZvY3VzQ2hhdElucHV0KClcbiAgICAgICAgc3luY1BhbmVsU2Vzc2lvbigpXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBpZiAoc25hcHNob3QuYWdlbnRzTmF2QWN0aXZlID09PSAnbWFpYWtlcicpIHtcbiAgICAgICAgYXdhaXQgaGFuZGxlR29Ub01haWFrZXIoKVxuICAgICAgICBmb2N1c0NoYXRJbnB1dCgpXG4gICAgICAgIHN5bmNQYW5lbFNlc3Npb24oKVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgaWYgKHNuYXBzaG90LmN1cnJlbnRPcHRpb24gPT09IG9wdGlvbnMuY2hhdCAmJiBzbmFwc2hvdC5hY3RpdmVDaGF0SWQpIHtcbiAgICAgICAgc2V0VXNlckluaXRpYWxNZXNzYWdlKHsgbWVzc2FnZTogJycsIGF0dGFjaG1lbnRzOiBbXSB9KVxuICAgICAgICBzZXRJbml0aWFsQ2hhdElkKHNuYXBzaG90LmFjdGl2ZUNoYXRJZClcbiAgICAgICAgZ2V0Q2hhdHNTdG9yZVN0YXRlKCkuc2V0QWN0aXZlQ2hhdElkKHNuYXBzaG90LmFjdGl2ZUNoYXRJZClcbiAgICAgICAgZG9jdW1lbnQuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoJ2NoYXQtc2Vzc2lvbi1jaGFuZ2VkJykpXG4gICAgICAgIGhhbmRsZXJzLmNoYXQoKVxuICAgICAgfSBlbHNlIGlmIChzbmFwc2hvdC5jdXJyZW50T3B0aW9uICYmIGlzVmFsaWRNYWlhUGFuZWxPcHRpb24oc25hcHNob3QuY3VycmVudE9wdGlvbikpIHtcbiAgICAgICAgc2V0Q3VycmVudE9wdGlvbihzbmFwc2hvdC5jdXJyZW50T3B0aW9uIGFzIG9wdGlvbnMpXG4gICAgICB9XG5cbiAgICAgIGZvY3VzQ2hhdElucHV0KClcbiAgICAgIHN5bmNQYW5lbFNlc3Npb24oKVxuICAgIH0sXG4gICAgW1xuICAgICAgZm9jdXNDaGF0SW5wdXQsXG4gICAgICBoYW5kbGVHb1RvTWFpYWtlcixcbiAgICAgIGhhbmRsZU9wZW5NYXJrZXRwbGFjZSxcbiAgICAgIGhhbmRsZU9wZW5Ta2lsbHMsXG4gICAgICBoYW5kbGVycyxcbiAgICAgIHNldENoYXRWaWV3VmlzaWJsZSxcbiAgICAgIHNldENoaXBzUHJvamVjdCxcbiAgICAgIHN5bmNQYW5lbFNlc3Npb24sXG4gICAgXVxuICApXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBzbmFwc2hvdCA9IHBlbmRpbmdTZXNzaW9uUmVzdG9yZVJlZi5jdXJyZW50XG4gICAgaWYgKCFzbmFwc2hvdCB8fCBzZXNzaW9uUmVzdG9yZVN0YXJ0ZWRSZWYuY3VycmVudCkgcmV0dXJuXG4gICAgc2Vzc2lvblJlc3RvcmVTdGFydGVkUmVmLmN1cnJlbnQgPSB0cnVlXG5cbiAgICBzZXRDaGF0Vmlld1Zpc2libGUodHJ1ZSlcblxuICAgIGNvbnN0IHJ1blJlc3RvcmUgPSBhc3luYyAoKSA9PiB7XG4gICAgICB0cnkge1xuICAgICAgICBhd2FpdCBsb2FkQWdlbnRzRm9yU2Vzc2lvblJlc3RvcmUoc25hcHNob3QpXG4gICAgICAgIHBlbmRpbmdTZXNzaW9uUmVzdG9yZVJlZi5jdXJyZW50ID0gbnVsbFxuICAgICAgICBhd2FpdCBhcHBseVNlc3Npb25SZXN0b3JlKHNuYXBzaG90KVxuICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgc2V0SXNSZXN0b3JpbmdTZXNzaW9uKGZhbHNlKVxuICAgICAgfVxuICAgIH1cblxuICAgIHJ1blJlc3RvcmUoKS5jYXRjaCgoKSA9PiB1bmRlZmluZWQpXG4gIH0sIFthcHBseVNlc3Npb25SZXN0b3JlLCBsb2FkQWdlbnRzRm9yU2Vzc2lvblJlc3RvcmUsIHNldENoYXRWaWV3VmlzaWJsZV0pXG5cbiAgY29uc3QgaGFuZGxlRGVsZXRlQWdlbnRGcm9tTXlBZ2VudHMgPSB1c2VDYWxsYmFjayhcbiAgICAoYWdlbnRJZDogc3RyaW5nKSA9PiB7XG4gICAgICByZW1vdmVBZ2VudChhZ2VudElkKVxuICAgICAgaWYgKGFnZW50Py5pZCA9PT0gYWdlbnRJZCkge1xuICAgICAgICBzZWxlY3RGaXJzdEFnZW50KGFnZW50SWQpXG4gICAgICB9XG4gICAgfSxcbiAgICBbYWdlbnQ/LmlkLCByZW1vdmVBZ2VudCwgc2VsZWN0Rmlyc3RBZ2VudF1cbiAgKVxuXG4gIC8vIEVsIGZvb3RlciAoaW5wdXQpIHNlIG9jdWx0YSBzb2xvIGVuIGVsIGhvbWUgbWFya2V0cGxhY2UgZGUgTWFpYWtlciAoYnJvd3NlIGRlIGFnZW50ZXMpLlxuICAvLyBFbCBob21lIGRlbCBvcmNoZXN0cmF0b3Igc8OtIHBlcm1pdGUgZXNjcmliaXIsIGFzw60gcXVlIG1hbnRpZW5lIGVsIGZvb3Rlci5cbiAgY29uc3QgaXNNYWlha2VyQ3JlYXRvckhvbWUgPSBjb21wdXRlZEN1cnJlbnRPcHRpb24gPT09IG9wdGlvbnMuaG9tZSAmJiBpc01haWFrZXJBZ2VudFNlbGVjdGVkXG5cbiAgY29uc3QgbW9kYWxQYW5lbCA9IChcbiAgICA8PlxuICAgICAge3ZhbGlkYXRlQWNjZXNzQnlGZWF0dXJlKHNlY3Rpb24sIHVzZXIpICYmICFpc0Zsb2F0aW5nID8gKFxuICAgICAgICA8U2lkZWJhclxuICAgICAgICAgIG9uR29Ub0NoYXQ9e2dvVG9DaGF0fVxuICAgICAgICAgIG9uRXJyb3I9eygpID0+IHNldFNpZGViYXJIYXNFcnJvcih0cnVlKX1cbiAgICAgICAgICBoYW5kbGVHb1RvSG9tZT17aGFuZGxlR29Ib21lfVxuICAgICAgICAgIGhhbmRsZVN0YXJ0TmV3Q2hhdD17aGFuZGxlU3RhcnROZXdDaGF0fVxuICAgICAgICAgIGhhbmRsZU9wZW5NYXJrZXRwbGFjZT17aGFuZGxlT3Blbk1hcmtldHBsYWNlfVxuICAgICAgICAgIHNob3dOZXdDaGF0PXtzaG93TmV3Q2hhdH1cbiAgICAgICAgICByZWZldGNoQ2hhdHM9e3JlZmV0Y2hDaGF0c31cbiAgICAgICAgICBoYW5kbGVTZXRSZWZldGNoQ2hhdHM9e3NldFJlZmV0Y2hDaGF0c31cbiAgICAgICAgICBoYXNFcnJvcj17c2lkZWJhckhhc0Vycm9yfVxuICAgICAgICAgIHJlc2V0U2VsZWN0ZWRDaGF0UmVmPXtyZXNldFNlbGVjdGVkQ2hhdFJlZn1cbiAgICAgICAgICBhZ2VudHNOYXZBY3RpdmU9e3NpZGViYXJBZ2VudHNOYXZBY3RpdmV9XG4gICAgICAgICAgaGFuZGxlT3BlblNraWxscz17aGFuZGxlT3BlblNraWxsc31cbiAgICAgICAgICBvbk9wZW5NYWlha2VyQ3JlYXRvcj17aGFuZGxlR29Ub01haWFrZXJ9XG4gICAgICAgICAgaXNMZWdhY3lDb250ZXh0U2Vzc2lvbj17ISFsZWdhY3lDb250ZXh0U2Vzc2lvbn1cbiAgICAgICAgICBpbml0aWFsT3Blbj17c2F2ZWRTZXNzaW9uT25Nb3VudFJlZi5jdXJyZW50Py5zaWRlYmFyT3BlbiA/PyBmYWxzZX1cbiAgICAgICAgICBvbk9wZW5DaGFuZ2U9e2hhbmRsZVNpZGViYXJPcGVuQ2hhbmdlfVxuICAgICAgICAvPlxuICAgICAgKSA6IG51bGx9XG4gICAgICA8U0NDQUlNQ29udGVudCBleHBhbmRlZD17ZXhwYW5kZWR9IGZsb2F0aW5nPXtpc0Zsb2F0aW5nfT5cbiAgICAgICAgPENoYXRBSU1vZGFsSGVhZGVyXG4gICAgICAgICAgbGF5b3V0TW9kZT17bGF5b3V0TW9kZX1cbiAgICAgICAgICBvbkxheW91dE1vZGVDaGFuZ2U9e2hhbmRsZUxheW91dE1vZGVDaGFuZ2V9XG4gICAgICAgICAgZXhwYW5kZWQ9e2V4cGFuZGVkfVxuICAgICAgICAgIGRyYWdnYWJsZT17aXNGbG9hdGluZ31cbiAgICAgICAgICBvbkRyYWdTdGFydD17aGFuZGxlRHJhZ1N0YXJ0fVxuICAgICAgICAgIG9uRHJhZ01vdmU9e2hhbmRsZURyYWdNb3ZlfVxuICAgICAgICAgIG9uRHJhZ0VuZD17aGFuZGxlRHJhZ0VuZH1cbiAgICAgICAgICBoYW5kbGVNaW5pbWl6ZT17aGFuZGxlTWluaW1pemV9XG4gICAgICAgICAgYWdlbnRzPXthZ2VudHMuZGF0YX1cbiAgICAgICAgICBoYXNFcnJvcj17ISFhZ2VudEVycm9yfVxuICAgICAgICAgIGxvYWRpbmc9e2xvYWRpbmd9XG4gICAgICAgICAgbG9hZGluZ01vcmU9e2xvYWRpbmdNb3JlfVxuICAgICAgICAgIGhhc01vcmU9e2FnZW50cy5oYXNfbW9yZX1cbiAgICAgICAgICBoYW5kbGVSZXNldENoYXQ9e2hhbmRsZVJlc2V0Q2hhdH1cbiAgICAgICAgICBvbkFnZW50VXBkYXRlPXt1cGRhdGVBZ2VudEZhdm9yaXRlfVxuICAgICAgICAgIGxvYWRNb3JlQWdlbnRzPXtsb2FkTW9yZUFnZW50c31cbiAgICAgICAgICBzb3J0QWdlbnRzTGlzdD17c29ydEFnZW50c0xpc3R9XG4gICAgICAgICAgaXNNeUFnZW50c1NlY3Rpb249e2lzTXlBZ2VudHNTZWN0aW9ufVxuICAgICAgICAgIGlzTXlTa2lsbHNTZWN0aW9uPXtpc015U2tpbGxzU2VjdGlvbn1cbiAgICAgICAgICBpc01haWFrZXJTZWN0aW9uPXtpc01haWFrZXJDcmVhdG9ySG9tZX1cbiAgICAgICAgICBzaG93QmFja0J1dHRvbj17c2hvd0JhY2tCdXR0b259XG4gICAgICAgICAgb25CYWNrPXtoYW5kbGVCYWNrfVxuICAgICAgICAvPlxuICAgICAgICB7aGFzRXJyb3IgPyAoXG4gICAgICAgICAgPE1BSUFFcnJvciAvPlxuICAgICAgICApIDogdmFsaWRhdGVBY2Nlc3NCeUZlYXR1cmUoc2VjdGlvbiwgdXNlcikgPyAoXG4gICAgICAgICAgPENoYXRBSUNvbnRlbnRcbiAgICAgICAgICAgIGN1cnJlbnRPcHRpb249e2NvbXB1dGVkQ3VycmVudE9wdGlvbn1cbiAgICAgICAgICAgIGhhbmRsZXJzPXt7IC4uLmhhbmRsZXJzLCBjaGF0OiBzdGFydENoYXQsIGhvbWU6IGhhbmRsZXJzLmhvbWUsIGhhbmRsZUdvSG9tZSB9fVxuICAgICAgICAgICAgb25FcnJvcj17KCkgPT4gc2V0SGFzRXJyb3IodHJ1ZSl9XG4gICAgICAgICAgICByZWZzPXt7IHVzZXJJbml0aWFsTWVzc2FnZSwgaW5pdGlhbENoYXRJZCB9fVxuICAgICAgICAgICAgb25TZW5kTWVzc2FnZVJlYWR5PXtoYW5kbGVTZW5kTWVzc2FnZVJlYWR5fVxuICAgICAgICAgICAgZXhwYW5kZWQ9e2V4cGFuZGVkfVxuICAgICAgICAgICAgZmxvYXRpbmc9e2lzRmxvYXRpbmd9XG4gICAgICAgICAgICBhZ2VudHM9e2FnZW50cy5kYXRhfVxuICAgICAgICAgICAgbG9hZGluZ0FnZW50cz17bG9hZGluZ31cbiAgICAgICAgICAgIG9uRGVsZXRlQWdlbnQ9e2hhbmRsZURlbGV0ZUFnZW50RnJvbU15QWdlbnRzfVxuICAgICAgICAgICAgb25GYXZvcml0ZUFnZW50VXBkYXRlPXt1cGRhdGVBZ2VudEZhdm9yaXRlfVxuICAgICAgICAgICAgaGFzTW9yZUFnZW50cz17ISFhZ2VudHMuaGFzX21vcmV9XG4gICAgICAgICAgICBsb2FkaW5nTW9yZUFnZW50cz17bG9hZGluZ01vcmV9XG4gICAgICAgICAgICBvbkxvYWRNb3JlQWdlbnRzPXtsb2FkTW9yZUFnZW50c31cbiAgICAgICAgICAgIG9uR29Ub01haWFrZXI9e2hhbmRsZUdvVG9NYWlha2VyfVxuICAgICAgICAgICAgbXlTa2lsbHM9e215U2tpbGxzfVxuICAgICAgICAgICAgc2hhcmVkU2tpbGxzPXtzaGFyZWRTa2lsbHN9XG4gICAgICAgICAgICBsb2FkaW5nU2tpbGxzPXtsb2FkaW5nU2tpbGxzfVxuICAgICAgICAgICAgb25EZWxldGVTa2lsbD17cmVtb3ZlU2tpbGx9XG4gICAgICAgICAgICBvblNlYXJjaEFnZW50cz17c2VhcmNoQ3VzdG9tQWdlbnRzfVxuICAgICAgICAgICAgc2VhcmNoTG9hZGluZ0FnZW50cz17c2VhcmNoTG9hZGluZ31cbiAgICAgICAgICAgIGFnZW50RXJyb3I9e2FnZW50RXJyb3J9XG4gICAgICAgICAgICBpc1Jlc3RvcmluZ1Nlc3Npb249e2lzUmVzdG9yaW5nU2Vzc2lvbn1cbiAgICAgICAgICAvPlxuICAgICAgICApIDogKFxuICAgICAgICAgIDxQcm9qZWN0U3VtbWFyeUNvbnRlbnQgb25SZXN0YXJ0U3VtbWFyeT17aGFuZGxlcnMuaG9tZX0gLz5cbiAgICAgICAgKX1cbiAgICAgICAgeygoY29tcHV0ZWRDdXJyZW50T3B0aW9uID09PSBvcHRpb25zLmhvbWUgJiYgISFhZ2VudHM/LmRhdGE/Lmxlbmd0aCkgfHxcbiAgICAgICAgICBjb21wdXRlZEN1cnJlbnRPcHRpb24gPT09IG9wdGlvbnMuY2hhdCkgJiZcbiAgICAgICAgICAhaXNNYWlha2VyQ3JlYXRvckhvbWUgJiZcbiAgICAgICAgICAhaGFzRXJyb3IgJiZcbiAgICAgICAgICAhbG9hZGluZyAmJlxuICAgICAgICAgIHZhbGlkYXRlQWNjZXNzQnlGZWF0dXJlKHNlY3Rpb24sIHVzZXIpICYmIChcbiAgICAgICAgICAgIDxDaGF0QWlNb2RhbEZvb3RlclxuICAgICAgICAgICAgICBhZ2VudD17YWdlbnR9XG4gICAgICAgICAgICAgIGhhbmRsZVNlbmRNZXNzYWdlPXtoYW5kbGVTZW5kTWVzc2FnZX1cbiAgICAgICAgICAgICAgaGFuZGxlU3RvcEdlbmVyYXRpb249e3N0b3BHZW5lcmF0aW9uRnVuY3Rpb259XG4gICAgICAgICAgICAgIGlzU3RyZWFtaW5nPXtpc1N0cmVhbWluZ31cbiAgICAgICAgICAgICAgaXNXcml0aW5nPXtpc1dyaXRpbmd9XG4gICAgICAgICAgICAgIGNoYXRJZD17aW5pdGlhbENoYXRJZH1cbiAgICAgICAgICAgICAgbmV3Q2hhdEtleT17bmV3Q2hhdEtleX1cbiAgICAgICAgICAgICAgdG9vbHRpcFpJbmRleD17dG9vbHRpcFpJbmRleH1cbiAgICAgICAgICAgICAgbGVnYWN5Q29udGV4dFNlc3Npb249e2xlZ2FjeUNvbnRleHRTZXNzaW9ufVxuICAgICAgICAgICAgICBvbkNvbnRpbnVlSW5OZXdDaGF0PXtoYW5kbGVDb250aW51ZUxlZ2FjeUNvbnRleHRJbk5ld0NoYXR9XG4gICAgICAgICAgICAgIGxheW91dE1vZGU9e2xheW91dE1vZGV9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICl9XG4gICAgICA8L1NDQ0FJTUNvbnRlbnQ+XG4gICAgPC8+XG4gIClcblxuICBjb25zdCBjb250ZW50V3JhcHBlciA9IChcbiAgICA8U0NDQUlNQ29udGVudFdyYXBwZXIgZXhwYW5kZWQ9e2V4cGFuZGVkfSBmbG9hdGluZz17aXNGbG9hdGluZ30gcmVmPXtjb250ZW50V3JhcHBlclJlZn0+XG4gICAgICB7bW9kYWxQYW5lbH1cbiAgICA8L1NDQ0FJTUNvbnRlbnRXcmFwcGVyPlxuICApXG5cbiAgcmV0dXJuIChcbiAgICBzZWxlY3RvciAmJlxuICAgIFJlYWN0RE9NLmNyZWF0ZVBvcnRhbChcbiAgICAgIDxTQ0NBSU1XcmFwcGVyXG4gICAgICAgIGV4cGFuZGVkPXtleHBhbmRlZH1cbiAgICAgICAgbGF5b3V0TW9kZT17bGF5b3V0TW9kZX1cbiAgICAgICAgZHJhZ1Bvc2l0aW9uPXtyZXNvbHZlZERyYWdQb3NpdGlvbn1cbiAgICAgICAgZWxldmF0ZWQ9e3NlY3Rpb24gPT09ICd0YXNrJ31cbiAgICAgICAgJG1pbmltaXplZD17aXNNaW5pbWl6ZWR9XG4gICAgICA+XG4gICAgICAgIDxTQ0NBSU1NaW5pbWl6ZWRIaWRlICRoaWRkZW49e2lzTWluaW1pemVkfT5cbiAgICAgICAgICA8RmxvYXRpbmdQYW5lbE1vdGlvbiB0aWx0PXt0aWx0TW90aW9ufSBleHBhbmRlZD17ZXhwYW5kZWR9PlxuICAgICAgICAgICAge2NvbnRlbnRXcmFwcGVyfVxuICAgICAgICAgIDwvRmxvYXRpbmdQYW5lbE1vdGlvbj5cbiAgICAgICAgPC9TQ0NBSU1NaW5pbWl6ZWRIaWRlPlxuICAgICAgICB7aXNNaW5pbWl6ZWQgJiYgKFxuICAgICAgICAgIDxNYWlhTWluaW1pemVkUGlsbFxuICAgICAgICAgICAgdW5yZWFkQ291bnQ9e3VucmVhZENvdW50fVxuICAgICAgICAgICAgaXNTdHJlYW1pbmc9e2hhc0FjdGl2ZVN0cmVhbX1cbiAgICAgICAgICAgIG9uUmVzdG9yZT17aGFuZGxlUmVzdG9yZUZyb21NaW5pbWl6ZWR9XG4gICAgICAgICAgLz5cbiAgICAgICAgKX1cbiAgICAgICAge3VzZXJIYXNQZXJtaXNzaW9ucyAmJiAoXG4gICAgICAgICAgPEFibUFnZW50TW9kYWxcbiAgICAgICAgICAgIGFkZEFnZW50PXthZGRBZ2VudH1cbiAgICAgICAgICAgIHVwZGF0ZUFnZW50PXt1cGRhdGVBZ2VudH1cbiAgICAgICAgICAgIHJlbW92ZUFnZW50PXtyZW1vdmVBZ2VudH1cbiAgICAgICAgICAgIHVwZGF0ZUFnZW50RmF2b3JpdGU9e3VwZGF0ZUFnZW50RmF2b3JpdGV9XG4gICAgICAgICAgICBzZWxlY3RGaXJzdEFnZW50PXtzZWxlY3RGaXJzdEFnZW50fVxuICAgICAgICAgIC8+XG4gICAgICAgICl9XG4gICAgICAgIHt1c2VySGFzU2tpbGxzQWNjZXNzICYmIChcbiAgICAgICAgICA8QWJtU2tpbGxNb2RhbCBhZGRTa2lsbD17YWRkU2tpbGx9IHVwZGF0ZVNraWxsSW5MaXN0PXt1cGRhdGVTa2lsbEluTGlzdH0gcmVtb3ZlU2tpbGw9e3JlbW92ZVNraWxsfSAvPlxuICAgICAgICApfVxuICAgICAgICB7dXNlckhhc1NraWxsc0FjY2VzcyAmJiA8QWJtU2tpbGxHZW5lcmF0ZU1vZGFsIC8+fVxuICAgICAgICA8U25hY2tiYXIgLz5cbiAgICAgIDwvU0NDQUlNV3JhcHBlcj4sXG4gICAgICBzZWxlY3RvclxuICAgIClcbiAgKVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQ0VBLFdBQVcsRUFDWEMsT0FBTyxFQUNQQyxRQUFRLEVBQ1JDLE1BQU0sRUFDTkMsU0FBUyxFQUNUQyxlQUFlLFFBRVYsT0FBTztBQUNkLE9BQU9DLFFBQVEsTUFBTSxXQUFXO0FBQ2hDLE9BQU9DLE1BQU0sTUFBTSxRQUFRO0FBQzNCLFNBQVNDLGNBQWMsUUFBUSxlQUFlO0FBQzlDLFNBQVNDLE9BQU8sUUFBUSwyQkFBMkI7QUFDbkQsU0FBU0MsaUJBQWlCLEVBQUVDLGlCQUFpQixRQUFRLGdDQUFnQztBQUNyRixTQUFTQyxTQUFTLFFBQVEsdUJBQXVCO0FBQ2pELFNBQVNDLHNCQUFzQixRQUFRLHVDQUF1QztBQUU5RSxTQUFTQyxhQUFhLFFBQVEsa0JBQWtCO0FBQ2hELFNBQVNDLGFBQWEsRUFBRUMsT0FBTyxRQUFRLGFBQWE7QUFDcEQsU0FBU0MsT0FBTyxRQUFRLFlBQVk7QUFDcEMsU0FBU0MsWUFBWSxRQUFRLHlDQUF5QztBQUN0RSxTQUFTQyxZQUFZLFFBQVEseUNBQXlDO0FBQ3RFLFNBQVNDLGdCQUFnQixRQUFzQixpQ0FBaUM7QUFHaEYsU0FBU0MsaUJBQWlCLFFBQVEsa0RBQWtEO0FBQ3BGLFNBQVNDLFFBQVEsUUFBUSxtQ0FBbUM7QUFDNUQsU0FBU0MscUJBQXFCLFFBQVEsMEJBQTBCO0FBQ2hFLFNBQVNDLGFBQWEsUUFBUSw2Q0FBNkM7QUFDM0UsU0FBU0MsYUFBYSxFQUFFQywwQkFBMEIsUUFBUSw2Q0FBNkM7QUFDdkcsU0FBU0MscUJBQXFCLFFBQVEsNkRBQTZEO0FBQ25HLFNBQVNDLFFBQVEsUUFBUSwyQkFBMkI7QUFDcEQs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