@agilemotion/oui-react-js 2.0.25 → 2.0.27

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.
Files changed (34) hide show
  1. package/dist/RestService.js +22 -13
  2. package/dist/RestUtils.js +7 -4
  3. package/dist/components/AlertBar.js +2 -2
  4. package/dist/components/Button.js +59 -7
  5. package/dist/components/DataGrid.js +42 -16
  6. package/dist/components/DocumentTemplateDesignerComponent.js +2 -2
  7. package/dist/components/FileThumb.js +69 -7
  8. package/dist/components/WordDocumentViewer.js +2 -2
  9. package/dist/components/dashboard/components/blackDashboard/sidebar/FoldingTabSidebar.js +6 -2
  10. package/dist/components/form/BaseField.js +4 -2
  11. package/dist/components/form/Checkbox.js +3 -2
  12. package/dist/components/form/FieldSet.js +2 -2
  13. package/dist/components/form/Form.css +1 -1
  14. package/dist/components/form/Form.js +40 -38
  15. package/dist/components/form/GridField.js +6 -5
  16. package/dist/components/form/RadioGroup.js +5 -5
  17. package/dist/components/form/UploadField.js +68 -4
  18. package/dist/components/layout/Layout.js +9 -1
  19. package/dist/components/layout/View.css +2 -0
  20. package/dist/components/media/ChatViewer.js +103 -0
  21. package/dist/components/media/TrainingRoom.js +5 -5
  22. package/dist/components/media/VCRoomParticipant.js +7 -3
  23. package/dist/components/media/VCRoomWorkspace.js +19 -4
  24. package/dist/components/media/chat/ChatRoom.js +21 -10
  25. package/dist/components/media/chat/PollContainer.js +85 -18
  26. package/dist/js/ProcurementMeetings.js +11 -4
  27. package/dist/view/PortalDashboard.js +6 -5
  28. package/dist/view/security/ForgotPassword.js +4 -1
  29. package/dist/view/security/ForgotPasswordBasic.js +4 -1
  30. package/dist/view/security/RegisterInteractionPortal.js +5 -1
  31. package/dist/view/security/ResetPassword.js +4 -1
  32. package/dist/view/security/ResetPasswordBasic.js +4 -1
  33. package/dist/view/security/Security.js +16 -3
  34. package/package.json +1 -1
@@ -34,6 +34,11 @@ var _PollContainer = _interopRequireDefault(require("./PollContainer"));
34
34
  var _iconsMaterial = require("@mui/icons-material");
35
35
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
36
36
  function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
37
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
38
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
39
+ function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
40
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
41
+ function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
37
42
  const location = exports.location = window.location.protocol + '//' + window.location.hostname;
38
43
  const ChatRoom = props => {
39
44
  const navigate = (0, _reactRouterDom.useNavigate)();
@@ -71,10 +76,13 @@ const ChatRoom = props => {
71
76
  };
72
77
  };
73
78
  const fetchChat = () => {
74
- let url = selectedChat.meetingId ? "".concat(location + '/' + _ApplicationManager.default.getContextRoot(), "/calendar/api/v1/chat/fetchMeetingChat/").concat(selectedChat.meetingId) : "".concat(location + '/' + _ApplicationManager.default.getContextRoot(), "/calendar/api/v1/chat/fetch/").concat(selectedChat.id);
79
+ let url = selectedChat.meetingKey ? "".concat(location + '/' + _ApplicationManager.default.getContextRoot(), "/calendar/api/v1/chat/fetchMeetingChatByKey/").concat(selectedChat.meetingKey) : selectedChat.meetingId ? "".concat(location + '/' + _ApplicationManager.default.getContextRoot(), "/calendar/api/v1/chat/fetchMeetingChat/").concat(selectedChat.meetingId) : "".concat(location + '/' + _ApplicationManager.default.getContextRoot(), "/calendar/api/v1/chat/fetch/").concat(selectedChat.id);
75
80
  (0, _RestUtils.sendRequest)(url, response => {
76
81
  if (response && response.id) {
77
- setSelectedChat(response);
82
+ // Preserve meetingKey so subsequent refreshes stay on the by-key lookup.
83
+ setSelectedChat(_objectSpread(_objectSpread({}, response), {}, {
84
+ meetingKey: selectedChat.meetingKey
85
+ }));
78
86
  }
79
87
  }, e => {}, true, false);
80
88
  };
@@ -86,13 +94,14 @@ const ChatRoom = props => {
86
94
  id: poll.id
87
95
  });
88
96
  };
89
- const submitPollVoteHandler = poll => {
97
+ const submitPollVoteHandler = function (poll) {
98
+ let isTieBreaker = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
90
99
  let chatParticipant = selectedChat.participants.find(p => p.username === currentUser.username);
91
100
  const data = {
92
101
  pollId: poll.id,
93
- optionId: poll.selectedOption || poll.tieBreakerOption,
102
+ optionId: isTieBreaker ? poll.tieBreakerOption : poll.selectedOption,
94
103
  chatParticipant: chatParticipant,
95
- tieBreaker: !_Utils.default.isNull(poll.tieBreakerOption)
104
+ tieBreaker: isTieBreaker
96
105
  };
97
106
  (0, _RestUtils.postData)("".concat(location + '/' + _ApplicationManager.default.getContextRoot(), "/calendar/api/v1/poll/vote"), response => {
98
107
  fetchChat();
@@ -141,6 +150,7 @@ const ChatRoom = props => {
141
150
  };
142
151
  const loadMessages = () => {
143
152
  scrollToBottom();
153
+ console.log("\n\n\n\nMESSAGES : ", selectedChat.messages);
144
154
  if (selectedChat) {
145
155
  const newMessages = [].concat(selectedChat.messages);
146
156
  if (!props.showAllMessagesForNewParticipants) {
@@ -647,17 +657,18 @@ const ChatRoom = props => {
647
657
  isChairPerson: props.isChairPerson,
648
658
  pollCreator: message.participant,
649
659
  createdDate: message.createdDate,
650
- submitPollVoteHandler: poll => submitPollVoteHandler(poll),
660
+ submitPollVoteHandler: (poll, isTieBreaker) => submitPollVoteHandler(poll, isTieBreaker),
651
661
  pollParticipantIDs: selectedChat.participants.map(p => p.username),
652
662
  currentUser: currentUser,
653
663
  closePollHandler: (e, poll) => closePollHandler(e, poll),
654
- numberOfPollParticipants: selectedChat.participants.length
664
+ numberOfPollParticipants: selectedChat.participants.length,
665
+ refreshPollHandler: () => fetchChat()
655
666
  });
656
667
  }
657
668
  }
658
669
  };
659
670
  if (selectedChat && messages) {
660
- var _messages$sort;
671
+ var _messages$filter$sort;
661
672
  return /*#__PURE__*/_react.default.createElement("div", {
662
673
  className: "chatroom"
663
674
  }, /*#__PURE__*/_react.default.createElement("div", {
@@ -690,7 +701,7 @@ const ChatRoom = props => {
690
701
  id: "messages",
691
702
  ref: messagesEndRef,
692
703
  className: "chatroom__body"
693
- }, (_messages$sort = messages.sort((a, b) => new Date(a.createdDate) - new Date(b.createdDate))) === null || _messages$sort === void 0 ? void 0 : _messages$sort.map(renderMessage)) : /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null), mode === 'CHAT' && !props.readOnly && /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement("form", {
704
+ }, (_messages$filter$sort = messages.filter(m => !props.pollsOnly || m.poll).sort((a, b) => new Date(a.createdDate) - new Date(b.createdDate))) === null || _messages$filter$sort === void 0 ? void 0 : _messages$filter$sort.map(renderMessage)) : /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null), mode === 'CHAT' && !props.readOnly && /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement("form", {
694
705
  className: "chatroom__sendMessage"
695
706
  }, /*#__PURE__*/_react.default.createElement("div", {
696
707
  className: "message__imageSelector"
@@ -772,4 +783,4 @@ const ChatRoom = props => {
772
783
  }
773
784
  };
774
785
  var _default = exports.default = ChatRoom;
775
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfbWF0ZXJpYWwiLCJfU2VuZCIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfVG9vbHRpcCIsIl9yZWFjdFJvdXRlckRvbSIsIl9tb21lbnQiLCJfSW5wdXRBZG9ybm1lbnQiLCJfU3R5bGVzIiwiX0N1c3RvbUlucHV0IiwiX0xvdHRpZUljb24iLCJfcmVhY3RGZWF0aGVyIiwiX1V0aWxzIiwiX1ZDRXZlbnRUeXBlIiwiX2xpbmtpZnlSZWFjdCIsIl9GaWxlIiwiX0FwcGxpY2F0aW9uTWFuYWdlciIsIl9SZXN0VXRpbHMiLCJfcGRmSWNvbiIsIl9kb2MiLCJfd29yZCIsIl9leGNlbCIsIl9WQ0V2ZW50TWFuYWdlciIsIl9Tb2NrZXRNYW5hZ2VyIiwiX0ljb24iLCJfQ2hhdFBvbGwiLCJfUG9sbENvbnRhaW5lciIsIl9pY29uc01hdGVyaWFsIiwiZSIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwidCIsIldlYWtNYXAiLCJyIiwibiIsIm8iLCJpIiwiZiIsIl9fcHJvdG9fXyIsImhhcyIsImdldCIsInNldCIsImhhc093blByb3BlcnR5IiwiY2FsbCIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwibG9jYXRpb24iLCJleHBvcnRzIiwid2luZG93IiwicHJvdG9jb2wiLCJob3N0bmFtZSIsIkNoYXRSb29tIiwicHJvcHMiLCJuYXZpZ2F0ZSIsInVzZU5hdmlnYXRlIiwicmVmcmVzaGVyIiwic2V0UmVmcmVzaGVyIiwidXNlU3RhdGUiLCJtZXNzYWdlIiwic2V0TWVzc2FnZSIsInNlbGVjdGVkQ2hhdCIsInNldFNlbGVjdGVkQ2hhdCIsImRvY3VtZW50cyIsInNldERvY3VtZW50cyIsIm1lc3NhZ2VzIiwic2V0TWVzc2FnZXMiLCJuZXdQYXJ0aWNpcGFudHMiLCJzZXROZXdQYXJ0aWNpcGFudHMiLCJjb25maXJtIiwic2V0SW1nVXBsb2FkQ29uZmlybSIsIm1lc3NhZ2VzRW5kUmVmIiwidXNlUmVmIiwibG9hZGluZyIsInNldExvYWRpbmciLCJtb2RlIiwic2V0TW9kZSIsImNsZWFyVXBsb2FkZWRGaWxlU3dpdGNoIiwic2V0Q2xlYXJVcGxvYWRlZEZpbGVTd2l0Y2giLCJzb2NrZXRFdmVudEhhbmRsZXIiLCJjdXJyZW50VXNlciIsImFwcGxpY2F0aW9uTWFuYWdlciIsImdldFVzZXJEZXRhaWxzIiwic29ja2V0RXZlbnRIYW5kbGVyQXBpIiwiaWQiLCJvbiIsImV2ZW50VHlwZSIsImJlIiwiVkNFdmVudFR5cGUiLCJDSEFUX01FU1NBR0UiLCJvbk1lc3NhZ2UiLCJwYXlsb2FkIiwiREVMRVRFX0NIQVRfTUVTU0FHRSIsIm9uRGVsZXRlTWVzc2FnZSIsIlNZU1RFTV9FVkVOVCIsIm9uU3lzdGVtRXZlbnQiLCJmZXRjaENoYXQiLCJ1cmwiLCJtZWV0aW5nSWQiLCJjb25jYXQiLCJnZXRDb250ZXh0Um9vdCIsInNlbmRSZXF1ZXN0IiwicmVzcG9uc2UiLCJjbG9zZVBvbGxIYW5kbGVyIiwicG9sbCIsInBvc3REYXRhIiwic2VuZE1lc3NhZ2UiLCJxdWVzdGlvbiIsInN1Ym1pdFBvbGxWb3RlSGFuZGxlciIsImNoYXRQYXJ0aWNpcGFudCIsInBhcnRpY2lwYW50cyIsImZpbmQiLCJwIiwidXNlcm5hbWUiLCJkYXRhIiwicG9sbElkIiwib3B0aW9uSWQiLCJzZWxlY3RlZE9wdGlvbiIsInRpZUJyZWFrZXJPcHRpb24iLCJ0aWVCcmVha2VyIiwiVXRpbHMiLCJpc051bGwiLCJzeXN0ZW1FdmVudFR5cGUiLCJtc2ciLCJyb29tSWQiLCJjaGF0TWVzc2FnZSIsInR5cGUiLCJjaGF0VGFiIiwiYWRkZWRQZW9wbGVIYW5kbGVyIiwicHVzaCIsImxvYWRNZXNzYWdlcyIsImNvbnNvbGUiLCJsb2ciLCJtIiwibWVzc2FnZUlkIiwiYWN0aXZlIiwib25Eb3dubG9hZCIsImZpbGVOYW1lIiwiZmV0Y2giLCJ0aGVuIiwiYmxvYiIsImxpbmsiLCJkb2N1bWVudCIsImNyZWF0ZUVsZW1lbnQiLCJocmVmIiwiVVJMIiwiY3JlYXRlT2JqZWN0VVJMIiwiZG93bmxvYWQiLCJjbGljayIsImNhdGNoIiwiZXJyb3IiLCJzY3JvbGxUb0JvdHRvbSIsIm5ld01lc3NhZ2VzIiwic2hvd0FsbE1lc3NhZ2VzRm9yTmV3UGFydGljaXBhbnRzIiwiZGF0ZUFkZGVkVG9DaGF0IiwiRGF0ZSIsImZpbHRlcmVkTWVzc2FnZXMiLCJmaWx0ZXIiLCJ0eHQiLCJjcmVhdGVkRGF0ZSIsImdldENoYXRSb29tVGl0bGUiLCJ0aXRsZSIsInVzZUVmZmVjdCIsInVzZXJJZCIsImNoYXRJZCIsImFwaSIsInZjRXZlbnRNYW5hZ2VyIiwiYWRkU3Vic2NyaXB0aW9ucyIsInJlbW92ZVN1YnNjcmlwdGlvbnMiLCJjdXJyZW50Iiwic2Nyb2xsIiwidG9wIiwic2Nyb2xsSGVpZ2h0IiwiYmVoYXZpb3IiLCJoYW5kbGVDaGFuZ2UiLCJ0YXJnZXQiLCJ2YWx1ZSIsInBhcnRpY2lwYW50c1VzZXJJZHMiLCJ1c2VyIiwibWFwIiwiZmluYWxNZXNzYWdlIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwidW5kZWZpbmVkIiwicHJldmVudERlZmF1bHQiLCJtVHlwZSIsImNvbWJpbmVkU2l6ZSIsImRvYyIsInBhcnNlSW50Iiwic2l6ZSIsImFsZXJ0IiwiZ2V0VG9wVmlldyIsIlN5c3RlbUV2ZW50VHlwZSIsIkFQSV9FUlJPUiIsImNvbnRlbnQiLCJwYXJ0aWNpcGFudCIsInBhcnRpY2lwYW50c1RvU2lnbmFsSWRzIiwic29ja2V0TWFuYWdlciIsImVtaXRFdmVudCIsInNraXBBbGVydCIsIm5ld0NoYXQiLCJwcm9maWxlIiwiZ2V0QWN0aXZlVGVuYW50Iiwib2xkTXNncyIsIm9wZW5BZGRQZW9wbGVEaWFsb2ciLCJzZXRPcGVuQWRkUGVvcGxlIiwicmVuZGVyRmlsZVRodW1ibmFpbCIsInRodW1ibmFpbHMiLCJkb2N1bWVudERvd25sb2FkVXJsIiwidG9rZW5zUXVlcnlTdHJpbmciLCJzZXNzaW9uU3RvcmFnZSIsImdldEl0ZW0iLCJmb3JFYWNoIiwiaW5kZXgiLCJpbmNsdWRlcyIsImtleSIsImNsYXNzTmFtZSIsInNyYyIsInJlcG9zaXRvcnlJZCIsImFsdCIsInN0eWxlIiwid2lkdGgiLCJoZWlnaHQiLCJJY29uQnV0dG9uIiwiY29tcG9uZW50Iiwib25DbGljayIsIm5hbWUiLCJmb250U2l6ZSIsIm1hcmdpblRvcCIsInBkZkljb24iLCJib3JkZXJCb3R0b20iLCJkb2NJY29uIiwid29yZEljb24iLCJ4c2xJY29uIiwicGFkZGluZ0JvdHRvbSIsImJvcmRlcldpZHRoIiwicGhwSWNvbiIsInJlbmRlckxpbmsiLCJfcmVmIiwiYXR0cmlidXRlcyIsIm9wZW4iLCJkZWxldGVDaGF0TWVzc2FnZSIsInJlbmRlck1lc3NhZ2UiLCJwYWRkaW5nUmlnaHQiLCJBdmF0YXIiLCJnZXRJbml0aWFscyIsImJvcmRlciIsImJvcmRlclJhZGl1cyIsInBhZGRpbmciLCJmb250U3R5bGUiLCJtYXJnaW4iLCJtb21lbnQiLCJmb3JtYXQiLCJkaXNhYmxlTWVzc2FnZURlbGV0ZSIsIm9wdGlvbnMiLCJyZW5kZXIiLCJzcGxpdCIsInRva2VuIiwiRnJhZ21lbnQiLCJJbmZvIiwiaXNIb3N0IiwiaXNDaGFpclBlcnNvbiIsInBvbGxDcmVhdG9yIiwicG9sbFBhcnRpY2lwYW50SURzIiwibnVtYmVyT2ZQb2xsUGFydGljaXBhbnRzIiwiX21lc3NhZ2VzJHNvcnQiLCJtZXJnZU9iamVjdHMiLCJoZWFkZXJTdHlsZSIsIlBvbGwiLCJjb2xvciIsImNyZWF0ZVBvbGxIYW5kbGVyIiwicG9sbERhdGEiLCJjYW5jZWxQb2xsSGFuZGxlciIsInJlZiIsInNvcnQiLCJhIiwiYiIsInJlYWRPbmx5IiwicG9zaXRpb24iLCJkaXNhYmxlRmlsZUF0dGFjaG1lbnQiLCJ6SW5kZXgiLCJlbmFibGVGaWxlIiwibXVsdGlwbGUiLCJpY29uQ29sb3IiLCJ2YWx1ZUNoYW5nZUhhbmRsZXIiLCJsYWJlbFRleHQiLCJkaXNhYmxlZCIsIm11bHRpbGluZSIsImZvcm1Db250cm9sUHJvcHMiLCJmdWxsV2lkdGgiLCJhdXRvRm9jdXMiLCJpbnB1dFByb3BzIiwiZW5kQWRvcm5tZW50Iiwic3R5bGVzIiwiaW5wdXRBZG9ybm1lbnRJY29uIiwib25DaGFuZ2UiLCJmb250V2VpZ2h0IiwiX2RlZmF1bHQiXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvbWVkaWEvY2hhdC9DaGF0Um9vbS5qc3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0LCB7dXNlRWZmZWN0LCB1c2VSZWYsIHVzZVN0YXRlfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQge0F2YXRhciwgSWNvbkJ1dHRvbn0gZnJvbSAnQG11aS9tYXRlcmlhbCc7XG5pbXBvcnQgU2VuZEljb24gZnJvbSAnQG11aS9pY29ucy1tYXRlcmlhbC9TZW5kJztcbmltcG9ydCBUb29sdGlwIGZyb20gJ0BtdWkvbWF0ZXJpYWwvVG9vbHRpcCc7XG5pbXBvcnQge3VzZU5hdmlnYXRlfSBmcm9tICdyZWFjdC1yb3V0ZXItZG9tJztcbmltcG9ydCAnLi9DaGF0Um9vbXMuc2Nzcyc7XG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCc7XG5pbXBvcnQgSW5wdXRBZG9ybm1lbnQgZnJvbSAnQG11aS9tYXRlcmlhbC9JbnB1dEFkb3JubWVudCc7XG5pbXBvcnQgc3R5bGVzIGZyb20gJy4vU3R5bGVzJztcbmltcG9ydCBDdXN0b21JbnB1dCBmcm9tICcuLi8uLi9jdXN0b21JbnB1dC9DdXN0b21JbnB1dCc7XG5pbXBvcnQgTG90dGllSWNvbiBmcm9tICcuLi8uLi9Mb3R0aWVJY29uJztcbmltcG9ydCB7SW5mb30gZnJvbSAncmVhY3QtZmVhdGhlcic7XG5pbXBvcnQgVXRpbHMgZnJvbSAnLi4vLi4vLi4vVXRpbHMnO1xuaW1wb3J0IHtWQ0V2ZW50VHlwZX0gZnJvbSBcIi4uL1ZDRXZlbnRUeXBlXCI7XG5pbXBvcnQgTGlua2lmeSBmcm9tIFwibGlua2lmeS1yZWFjdFwiO1xuaW1wb3J0IEZpbGUgZnJvbSBcIi4uLy4uL2N1c3RvbUlucHV0L0ZpbGVcIjtcbmltcG9ydCBhcHBsaWNhdGlvbk1hbmFnZXIgZnJvbSBcIi4uLy4uLy4uL0FwcGxpY2F0aW9uTWFuYWdlclwiO1xuaW1wb3J0IHtwb3N0RGF0YSwgc2VuZFJlcXVlc3R9IGZyb20gXCIuLi8uLi8uLi9SZXN0VXRpbHNcIjtcbmltcG9ydCBwZGZJY29uIGZyb20gJy4uLy4uLy4uL2Fzc2V0cy9pbWcvcGRmLWljb24ucG5nJ1xuaW1wb3J0IGRvY0ljb24gZnJvbSAnLi4vLi4vLi4vYXNzZXRzL2ltZy9kb2MucG5nJ1xuaW1wb3J0IHdvcmRJY29uIGZyb20gJy4uLy4uLy4uL2Fzc2V0cy9pbWcvd29yZC5wbmcnXG5pbXBvcnQgeHNsSWNvbiBmcm9tICcuLi8uLi8uLi9hc3NldHMvaW1nL2V4Y2VsLnBuZydcbmltcG9ydCBwaHBJY29uIGZyb20gJy4uLy4uLy4uL2Fzc2V0cy9pbWcvZXhjZWwucG5nJ1xuaW1wb3J0IHZjRXZlbnRNYW5hZ2VyIGZyb20gXCIuLi9WQ0V2ZW50TWFuYWdlclwiO1xuaW1wb3J0IHNvY2tldE1hbmFnZXIgZnJvbSBcIi4uLy4uL1NvY2tldE1hbmFnZXJcIjtcbmltcG9ydCBJY29uIGZyb20gXCIuLi8uLi9JY29uXCI7XG5pbXBvcnQgQ2hhdFBvbGwgZnJvbSBcIi4vQ2hhdFBvbGxcIjtcbmltcG9ydCBQb2xsQ29udGFpbmVyIGZyb20gXCIuL1BvbGxDb250YWluZXJcIjtcbmltcG9ydCB7UG9sbH0gZnJvbSBcIkBtdWkvaWNvbnMtbWF0ZXJpYWxcIjtcblxuZXhwb3J0IGNvbnN0IGxvY2F0aW9uID0gd2luZG93LmxvY2F0aW9uLnByb3RvY29sICsgJy8vJyArIHdpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZTtcblxuY29uc3QgQ2hhdFJvb20gPSAocHJvcHMpID0+IHtcbiAgICBjb25zdCBuYXZpZ2F0ZSA9IHVzZU5hdmlnYXRlKCk7XG5cbiAgICBjb25zdCBbcmVmcmVzaGVyLCBzZXRSZWZyZXNoZXJdID0gdXNlU3RhdGUoZmFsc2UpO1xuICAgIGNvbnN0IFttZXNzYWdlLCBzZXRNZXNzYWdlXSA9IHVzZVN0YXRlKCcnKTtcbiAgICBjb25zdCBbc2VsZWN0ZWRDaGF0LCBzZXRTZWxlY3RlZENoYXRdID0gdXNlU3RhdGUocHJvcHMuc2VsZWN0ZWRDaGF0KTtcbiAgICBjb25zdCBbZG9jdW1lbnRzLCBzZXREb2N1bWVudHNdID0gdXNlU3RhdGUobnVsbCk7XG4gICAgY29uc3QgW21lc3NhZ2VzLCBzZXRNZXNzYWdlc10gPSB1c2VTdGF0ZShbXSk7XG4gICAgY29uc3QgW25ld1BhcnRpY2lwYW50cywgc2V0TmV3UGFydGljaXBhbnRzXSA9IHVzZVN0YXRlKFtdKTtcbiAgICBjb25zdCBbY29uZmlybSwgc2V0SW1nVXBsb2FkQ29uZmlybV0gPSB1c2VTdGF0ZSgnJyk7XG4gICAgY29uc3QgbWVzc2FnZXNFbmRSZWYgPSB1c2VSZWYobnVsbCk7XG4gICAgY29uc3QgW2xvYWRpbmcsIHNldExvYWRpbmddID0gdXNlU3RhdGUodHJ1ZSk7XG4gICAgY29uc3QgW21vZGUsIHNldE1vZGVdID0gdXNlU3RhdGUoJ0NIQVQnKTtcbiAgICBjb25zdCBbY2xlYXJVcGxvYWRlZEZpbGVTd2l0Y2gsIHNldENsZWFyVXBsb2FkZWRGaWxlU3dpdGNoXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgICBjb25zdCBbc29ja2V0RXZlbnRIYW5kbGVyXSA9IHVzZVN0YXRlKHt9KTtcbiAgICBjb25zdCBbY3VycmVudFVzZXJdID0gdXNlU3RhdGUoYXBwbGljYXRpb25NYW5hZ2VyLmdldFVzZXJEZXRhaWxzKCkpO1xuXG4gICAgY29uc3Qgc29ja2V0RXZlbnRIYW5kbGVyQXBpID0gKCkgPT4ge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZ2V0IGlkKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAnY2hhdC1yb29tLTEyMjk5MTgyOSc7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgb246IChldmVudFR5cGUsIGJlKSA9PiB7XG4gICAgICAgICAgICAgICAgc3dpdGNoIChldmVudFR5cGUpIHtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBWQ0V2ZW50VHlwZS5DSEFUX01FU1NBR0U6XG4gICAgICAgICAgICAgICAgICAgICAgICBvbk1lc3NhZ2UoYmUucGF5bG9hZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBWQ0V2ZW50VHlwZS5ERUxFVEVfQ0hBVF9NRVNTQUdFOlxuICAgICAgICAgICAgICAgICAgICAgICAgb25EZWxldGVNZXNzYWdlKGJlLnBheWxvYWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgVkNFdmVudFR5cGUuU1lTVEVNX0VWRU5UOlxuICAgICAgICAgICAgICAgICAgICAgICAgb25TeXN0ZW1FdmVudChiZS5wYXlsb2FkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH07XG5cbiAgICBjb25zdCBmZXRjaENoYXQgPSAoKSA9PiB7XG4gICAgICAgIGxldCB1cmwgPSBzZWxlY3RlZENoYXQubWVldGluZ0lkID9cbiAgICAgICAgICAgIGAke2xvY2F0aW9uICsgJy8nICsgYXBwbGljYXRpb25NYW5hZ2VyLmdldENvbnRleHRSb290KCl9L2NhbGVuZGFyL2FwaS92MS9jaGF0L2ZldGNoTWVldGluZ0NoYXQvJHtzZWxlY3RlZENoYXQubWVldGluZ0lkfWBcbiAgICAgICAgICAgIDpcbiAgICAgICAgICAgIGAke2xvY2F0aW9uICsgJy8nICsgYXBwbGljYXRpb25NYW5hZ2VyLmdldENvbnRleHRSb290KCl9L2NhbGVuZGFyL2FwaS92MS9jaGF0L2ZldGNoLyR7c2VsZWN0ZWRDaGF0LmlkfWA7XG4gICAgICAgIHNlbmRSZXF1ZXN0KHVybCwgKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICBpZiAocmVzcG9uc2UgJiYgcmVzcG9uc2UuaWQpIHtcbiAgICAgICAgICAgICAgICBzZXRTZWxlY3RlZENoYXQocmVzcG9uc2UpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LCAoZSkgPT4ge1xuXG4gICAgICAgIH0sIHRydWUsIGZhbHNlKTtcbiAgICB9O1xuXG4gICAgY29uc3QgY2xvc2VQb2xsSGFuZGxlciA9IChlLCBwb2xsKSA9PiB7XG4gICAgICAgIHBvc3REYXRhKGAke2xvY2F0aW9uICsgJy8nICsgYXBwbGljYXRpb25NYW5hZ2VyLmdldENvbnRleHRSb290KCl9L2NhbGVuZGFyL2FwaS92MS9wb2xsL2Nsb3NlYCxcbiAgICAgICAgICAgIChyZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgICAgIHNlbmRNZXNzYWdlKGUsIGBQb2xsOiAke3BvbGwucXVlc3Rpb259IGhhcyBiZWVuIGNsb3NlZC5gKTtcbiAgICAgICAgICAgICAgICBmZXRjaENoYXQoKTtcbiAgICAgICAgICAgIH0sIChlKSA9PiB7XG5cbiAgICAgICAgICAgIH0sIHRydWUsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgaWQ6IHBvbGwuaWRcbiAgICAgICAgICAgIH0pO1xuICAgIH07XG5cbiAgICBjb25zdCBzdWJtaXRQb2xsVm90ZUhhbmRsZXIgPSAocG9sbCkgPT4ge1xuICAgICAgICBsZXQgY2hhdFBhcnRpY2lwYW50ID0gc2VsZWN0ZWRDaGF0LnBhcnRpY2lwYW50cy5maW5kKHAgPT4gcC51c2VybmFtZSA9PT0gY3VycmVudFVzZXIudXNlcm5hbWUpO1xuXG4gICAgICAgIGNvbnN0IGRhdGEgPSB7XG4gICAgICAgICAgICBwb2xsSWQ6IHBvbGwuaWQsXG4gICAgICAgICAgICBvcHRpb25JZDogcG9sbC5zZWxlY3RlZE9wdGlvbiB8fCBwb2xsLnRpZUJyZWFrZXJPcHRpb24sXG4gICAgICAgICAgICBjaGF0UGFydGljaXBhbnQ6IGNoYXRQYXJ0aWNpcGFudCxcbiAgICAgICAgICAgIHRpZUJyZWFrZXI6ICFVdGlscy5pc051bGwocG9sbC50aWVCcmVha2VyT3B0aW9uKVxuICAgICAgICB9O1xuXG4gICAgICAgIHBvc3REYXRhKGAke2xvY2F0aW9uICsgJy8nICsgYXBwbGljYXRpb25NYW5hZ2VyLmdldENvbnRleHRSb290KCl9L2NhbGVuZGFyL2FwaS92MS9wb2xsL3ZvdGVgLFxuICAgICAgICAgICAgKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICAgICAgZmV0Y2hDaGF0KCk7XG4gICAgICAgICAgICB9LCAoZSkgPT4ge1xuXG4gICAgICAgICAgICB9LCB0cnVlLCBkYXRhKTtcbiAgICB9O1xuXG4gICAgY29uc3Qgb25TeXN0ZW1FdmVudCA9IChwYXlsb2FkKSA9PiB7XG4gICAgICAgIGlmIChwYXlsb2FkLnN5c3RlbUV2ZW50VHlwZSA9PT0gXCJORVdfUE9MTF9WT1RFXCIpIHtcbiAgICAgICAgICAgIGxldCBmaW5kID0gbWVzc2FnZXMuZmluZCgobXNnKSA9PiBtc2cucG9sbCAmJiBtc2cucG9sbC5pZCA9PT0gcGF5bG9hZC5kYXRhLnBvbGxJZCk7XG4gICAgICAgICAgICBpZiAoZmluZCkge1xuICAgICAgICAgICAgICAgIC8vZmluZC50b3RhbFZvdGVzKys7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgY29uc3Qgb25NZXNzYWdlID0gKHBheWxvYWQpID0+IHtcbiAgICAgICAgaWYgKHNlbGVjdGVkQ2hhdCAmJiBzZWxlY3RlZENoYXQuaWQgPT09IHBheWxvYWQucm9vbUlkKSB7XG4gICAgICAgICAgICBpZiAocHJvcHMub25NZXNzYWdlKSB7XG4gICAgICAgICAgICAgICAgcHJvcHMub25NZXNzYWdlKHBheWxvYWQuY2hhdE1lc3NhZ2UsIHNlbGVjdGVkQ2hhdCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChwYXlsb2FkLmNoYXRNZXNzYWdlLnR5cGUgPT09ICdFVkVOVCcpIHtcbiAgICAgICAgICAgICAgICBpZiAocHJvcHMuY2hhdFRhYikge1xuICAgICAgICAgICAgICAgICAgICBmZXRjaENoYXQoKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBwcm9wcy5hZGRlZFBlb3BsZUhhbmRsZXIoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHNlbGVjdGVkQ2hhdC5tZXNzYWdlcy5wdXNoKHBheWxvYWQuY2hhdE1lc3NhZ2UpO1xuICAgICAgICAgICAgbG9hZE1lc3NhZ2VzKCk7XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgY29uc3Qgb25EZWxldGVNZXNzYWdlID0gKHBheWxvYWQpID0+IHtcbiAgICAgICAgY29uc29sZS5sb2coXCJNRVNTQUdFUyA6IFwiLCBtZXNzYWdlcyk7XG4gICAgICAgIGxldCBtc2cgPSBtZXNzYWdlcy5maW5kKChtKSA9PiBtLmlkID09PSBwYXlsb2FkLm1lc3NhZ2VJZCk7XG4gICAgICAgIGNvbnNvbGUubG9nKG1zZyk7XG4gICAgICAgIGlmIChtc2cpIHtcbiAgICAgICAgICAgIG1zZy5hY3RpdmUgPSBmYWxzZTtcbiAgICAgICAgICAgIHNldFJlZnJlc2hlcighcmVmcmVzaGVyKTtcbiAgICAgICAgfVxuICAgIH07XG5cbiAgICBjb25zdCBvbkRvd25sb2FkID0gKGZpbGVOYW1lLCB1cmwpID0+IHtcbiAgICAgICAgZmV0Y2godXJsKVxuICAgICAgICAgICAgLnRoZW4ocmVzcG9uc2UgPT4gcmVzcG9uc2UuYmxvYigpKVxuICAgICAgICAgICAgLnRoZW4oYmxvYiA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgbGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJhXCIpO1xuICAgICAgICAgICAgICAgIGxpbmsuaHJlZiA9IFVSTC5jcmVhdGVPYmplY3RVUkwoYmxvYik7XG4gICAgICAgICAgICAgICAgbGluay5kb3dubG9hZCA9IGZpbGVOYW1lO1xuICAgICAgICAgICAgICAgIGxpbmsuY2xpY2soKTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAuY2F0Y2goY29uc29sZS5lcnJvcik7XG4gICAgfTtcblxuICAgIGNvbnN0IGxvYWRNZXNzYWdlcyA9ICgpID0+IHtcbiAgICAgICAgc2Nyb2xsVG9Cb3R0b20oKTtcblxuICAgICAgICBpZiAoc2VsZWN0ZWRDaGF0KSB7XG4gICAgICAgICAgICBjb25zdCBuZXdNZXNzYWdlcyA9IFtdLmNvbmNhdChzZWxlY3RlZENoYXQubWVzc2FnZXMpO1xuICAgICAgICAgICAgaWYgKCFwcm9wcy5zaG93QWxsTWVzc2FnZXNGb3JOZXdQYXJ0aWNpcGFudHMpIHtcbiAgICAgICAgICAgICAgICBsZXQgZmluZCA9IHNlbGVjdGVkQ2hhdC5wYXJ0aWNpcGFudHMuZmluZChwID0+IHAudXNlcm5hbWUgPT09IGN1cnJlbnRVc2VyLnVzZXJuYW1lKTtcbiAgICAgICAgICAgICAgICBjb25zdCBkYXRlQWRkZWRUb0NoYXQgPSBmaW5kID8gZmluZC5kYXRlQWRkZWRUb0NoYXQgOiBuZXcgRGF0ZSgpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGZpbHRlcmVkTWVzc2FnZXMgPSBuZXdNZXNzYWdlc1xuICAgICAgICAgICAgICAgICAgICAuZmlsdGVyKHR4dCA9PiBkYXRlQWRkZWRUb0NoYXQgPT09IG51bGwgfHwgbmV3IERhdGUoZGF0ZUFkZGVkVG9DaGF0KSA8IG5ldyBEYXRlKHR4dC5jcmVhdGVkRGF0ZSkpO1xuICAgICAgICAgICAgICAgIHNldE1lc3NhZ2VzKGZpbHRlcmVkTWVzc2FnZXMpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBzZXRNZXNzYWdlcyhuZXdNZXNzYWdlcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBzZXRMb2FkaW5nKGZhbHNlKTtcbiAgICB9O1xuXG4gICAgY29uc3QgZ2V0Q2hhdFJvb21UaXRsZSA9ICgpID0+IHtcbiAgICAgICAgaWYgKHNlbGVjdGVkQ2hhdC50eXBlID09PSAnQ0FMRU5EQVJfTUVFVElORycgfHwgc2VsZWN0ZWRDaGF0LnRpdGxlKSB7XG4gICAgICAgICAgICByZXR1cm4gc2VsZWN0ZWRDaGF0LnRpdGxlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuICcnO1xuICAgIH07XG5cbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBzZXRTZWxlY3RlZENoYXQocHJvcHMuc2VsZWN0ZWRDaGF0KTtcbiAgICB9LCBbcHJvcHMuc2VsZWN0ZWRDaGF0XSk7XG5cbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBzY3JvbGxUb0JvdHRvbSgpO1xuICAgIH0sIFttZXNzYWdlc10pO1xuXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgaWYgKHNlbGVjdGVkQ2hhdCAmJiBjdXJyZW50VXNlcikge1xuICAgICAgICAgICAgc2V0TWVzc2FnZSgnJyk7XG4gICAgICAgICAgICBzZXREb2N1bWVudHMobnVsbCk7XG5cbiAgICAgICAgICAgIGxldCBmaW5kID0gc2VsZWN0ZWRDaGF0LnBhcnRpY2lwYW50cy5maW5kKHAgPT4gcC51c2VySWQgPT09IGN1cnJlbnRVc2VyLnVzZXJuYW1lIHx8IHAudXNlcm5hbWUgPT09IGN1cnJlbnRVc2VyLnVzZXJuYW1lKTtcbiAgICAgICAgICAgIGlmIChVdGlscy5pc051bGwoZmluZCkpIHtcbiAgICAgICAgICAgICAgICBwb3N0RGF0YShgJHtsb2NhdGlvbiArICcvJyArIGFwcGxpY2F0aW9uTWFuYWdlci5nZXRDb250ZXh0Um9vdCgpfS9jYWxlbmRhci9hcGkvdjEvY2hhdC9hZGRQYXJ0aWNpcGFudHNgLCAoKSA9PiB7XG4gICAgICAgICAgICAgICAgfSwgKGUpID0+IHtcblxuICAgICAgICAgICAgICAgIH0sIHRydWUsIHtcbiAgICAgICAgICAgICAgICAgICAgY2hhdElkOiBzZWxlY3RlZENoYXQuaWQsXG4gICAgICAgICAgICAgICAgICAgIHBhcnRpY2lwYW50czogW2N1cnJlbnRVc2VyXVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBsb2FkTWVzc2FnZXMoKTtcbiAgICAgICAgfVxuICAgIH0sIFtzZWxlY3RlZENoYXQsIGN1cnJlbnRVc2VyXSk7XG5cbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBzb2NrZXRFdmVudEhhbmRsZXIuYXBpID0gc29ja2V0RXZlbnRIYW5kbGVyQXBpKCk7XG4gICAgfSk7XG5cbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICB2Y0V2ZW50TWFuYWdlci5hZGRTdWJzY3JpcHRpb25zKHNvY2tldEV2ZW50SGFuZGxlciwgVkNFdmVudFR5cGUuREVMRVRFX0NIQVRfTUVTU0FHRSwgVkNFdmVudFR5cGUuQ0hBVF9NRVNTQUdFLCBWQ0V2ZW50VHlwZS5TWVNURU1fRVZFTlQpO1xuICAgICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICAgICAgdmNFdmVudE1hbmFnZXIucmVtb3ZlU3Vic2NyaXB0aW9ucyhzb2NrZXRFdmVudEhhbmRsZXIpO1xuICAgICAgICB9O1xuICAgIH0sIFtdKTtcblxuICAgIGNvbnN0IHNjcm9sbFRvQm90dG9tID0gKCkgPT4ge1xuICAgICAgICBpZiAobWVzc2FnZXNFbmRSZWYuY3VycmVudCkge1xuICAgICAgICAgICAgbWVzc2FnZXNFbmRSZWYuY3VycmVudC5zY3JvbGwoe3RvcDogbWVzc2FnZXNFbmRSZWYuY3VycmVudC5zY3JvbGxIZWlnaHQsIGJlaGF2aW9yOiAnc21vb3RoJ30pO1xuICAgICAgICB9XG4gICAgfTtcblxuICAgIGNvbnN0IGhhbmRsZUNoYW5nZSA9IChlKSA9PiB7XG4gICAgICAgIHNldE1lc3NhZ2UoZS50YXJnZXQudmFsdWUpO1xuICAgIH07XG5cbiAgICBjb25zdCBwYXJ0aWNpcGFudHNVc2VySWRzID0gKCkgPT4ge1xuICAgICAgICByZXR1cm4gc2VsZWN0ZWRDaGF0XG4gICAgICAgICAgICAucGFydGljaXBhbnRzXG4gICAgICAgICAgICAuZmlsdGVyKHVzZXIgPT4gdXNlci51c2VybmFtZSAhPT0gY3VycmVudFVzZXIudXNlcm5hbWUpXG4gICAgICAgICAgICAubWFwKHVzZXIgPT4gdXNlci51c2VybmFtZSk7XG4gICAgfTtcblxuICAgIGNvbnN0IHNlbmRNZXNzYWdlID0gKGUsIGZpbmFsTWVzc2FnZSA9IG51bGwsIHBvbGwgPSBudWxsKSA9PiB7XG4gICAgICAgIGlmIChlKSB7XG4gICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAobWVzc2FnZSB8fCBkb2N1bWVudHMgfHwgZmluYWxNZXNzYWdlIHx8IHBvbGwpIHtcblxuICAgICAgICAgICAgbGV0IG1UeXBlID0gJ1RFWFQnO1xuXG4gICAgICAgICAgICBpZiAoZG9jdW1lbnRzICYmIGRvY3VtZW50cy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgbGV0IGNvbWJpbmVkU2l6ZSA9IDA7XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBkb2Mgb2YgZG9jdW1lbnRzKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbWJpbmVkU2l6ZSA9IGNvbWJpbmVkU2l6ZSArIHBhcnNlSW50KGRvYy5zaXplKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoY29tYmluZWRTaXplID4gNzUwMDAwMCkge1xuICAgICAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbk1hbmFnZXIuYWxlcnQoYXBwbGljYXRpb25NYW5hZ2VyLmdldFRvcFZpZXcoKS5pZCwgU3lzdGVtRXZlbnRUeXBlLkFQSV9FUlJPUiwge1xuICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogJ0F0dGFjaG1lbnQgc2hvdWxkIGJlIG5vdCBtb3JlIHRoYW4gNy41TUIuJ1xuICAgICAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgbVR5cGUgPSAnRklMRSc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHBvbGwpIHtcbiAgICAgICAgICAgICAgICBtVHlwZSA9ICdQT0xMJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoZmluYWxNZXNzYWdlKSB7XG4gICAgICAgICAgICAgICAgbVR5cGUgPSAnRVZFTlQnXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IG1zZyA9IHtcbiAgICAgICAgICAgICAgICBjcmVhdGVkRGF0ZTogbmV3IERhdGUoKSxcbiAgICAgICAgICAgICAgICB0eXBlOiBtVHlwZSxcbiAgICAgICAgICAgICAgICBhY3RpdmU6IHRydWUsXG4gICAgICAgICAgICAgICAgY29udGVudDogZmluYWxNZXNzYWdlID8gZmluYWxNZXNzYWdlIDogbWVzc2FnZSxcbiAgICAgICAgICAgICAgICBwYXJ0aWNpcGFudDogY3VycmVudFVzZXJcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIGlmIChkb2N1bWVudHMgJiYgZG9jdW1lbnRzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICBtc2cuZG9jdW1lbnRzID0gZG9jdW1lbnRzO1xuICAgICAgICAgICAgICAgIHNldENsZWFyVXBsb2FkZWRGaWxlU3dpdGNoKCFjbGVhclVwbG9hZGVkRmlsZVN3aXRjaCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChwb2xsKSB7XG4gICAgICAgICAgICAgICAgbXNnLnBvbGwgPSBwb2xsO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBtc2cucGFydGljaXBhbnQuYWN0aXZlID0gdHJ1ZTtcblxuICAgICAgICAgICAgY29uc3QgcGFydGljaXBhbnRzVG9TaWduYWxJZHMgPSBwYXJ0aWNpcGFudHNVc2VySWRzKCk7XG4gICAgICAgICAgICBzb2NrZXRNYW5hZ2VyLmVtaXRFdmVudChWQ0V2ZW50VHlwZS5DSEFUX01FU1NBR0UsIHtcbiAgICAgICAgICAgICAgICByb29tSWQ6IHNlbGVjdGVkQ2hhdC5pZCxcbiAgICAgICAgICAgICAgICBjaGF0TWVzc2FnZTogbXNnLFxuICAgICAgICAgICAgICAgIHBhcnRpY2lwYW50c1RvU2lnbmFsSWRzLFxuICAgICAgICAgICAgICAgIHNraXBBbGVydDogcHJvcHMuY2hhdFRhYiB8fCBmaW5hbE1lc3NhZ2UsXG4gICAgICAgICAgICAgICAgbmV3Q2hhdDogc2VsZWN0ZWRDaGF0Lm1lc3NhZ2VzLmxlbmd0aCA9PT0gMCxcbiAgICAgICAgICAgICAgICBtZWV0aW5nSWQ6IHByb3BzLm1lZXRpbmdJZCA/IHByb3BzLm1lZXRpbmdJZCA6IG51bGwsXG4gICAgICAgICAgICAgICAgcHJvZmlsZTogKGFwcGxpY2F0aW9uTWFuYWdlci5nZXRBY3RpdmVUZW5hbnQoKSB8fCBhcHBsaWNhdGlvbk1hbmFnZXIuZ2V0VXNlckRldGFpbHMoKS5wcm9maWxlKVxuICAgICAgICAgICAgfSkudGhlbigoZGF0YSkgPT4ge1xuICAgICAgICAgICAgICAgIG1zZy5pZCA9IGRhdGEuaWQ7XG4gICAgICAgICAgICAgICAgc2V0TWVzc2FnZXMob2xkTXNncyA9PiBbLi4ub2xkTXNncywgbXNnXSk7XG4gICAgICAgICAgICAgICAgc2VsZWN0ZWRDaGF0Lm1lc3NhZ2VzLnB1c2gobXNnKTtcblxuICAgICAgICAgICAgICAgIGlmIChwcm9wcy5vbk1lc3NhZ2UgJiYgc2VsZWN0ZWRDaGF0KSB7XG4gICAgICAgICAgICAgICAgICAgIHByb3BzLm9uTWVzc2FnZShtc2csIHNlbGVjdGVkQ2hhdCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSkuY2F0Y2goKGVycm9yKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCJFcnJvciBzZW5kaW5nIGNoYXQgbWVzc2FnZSA6IFwiLCBlcnJvcilcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHNldE1lc3NhZ2UoJycpO1xuICAgICAgICBzZXRJbWdVcGxvYWRDb25maXJtKCcnKTtcbiAgICAgICAgc2V0RG9jdW1lbnRzKG51bGwpXG4gICAgfTtcblxuICAgIGNvbnN0IG9wZW5BZGRQZW9wbGVEaWFsb2cgPSAoZSkgPT4ge1xuICAgICAgICBzZXRPcGVuQWRkUGVvcGxlKHRydWUpXG4gICAgfTtcblxuICAgIGNvbnN0IHJlbmRlckZpbGVUaHVtYm5haWwgPSAobWVzc2FnZSkgPT4ge1xuICAgICAgICBjb25zdCB7ZG9jdW1lbnRzfSA9IG1lc3NhZ2U7XG4gICAgICAgIGNvbnN0IHRodW1ibmFpbHMgPSBbXTtcbiAgICAgICAgLy8gVE9ETyA6IE1ha2UgZG9jcyBVUkwgcGF0aCBhIGNvbmZpZ1xuICAgICAgICBjb25zdCBkb2N1bWVudERvd25sb2FkVXJsID0gbG9jYXRpb24gKyBhcHBsaWNhdGlvbk1hbmFnZXIuZ2V0Q29udGV4dFJvb3QoKSArICcvZG9jcy9hcGkvdjEvbWFuYWdlci9kb3dubG9hZCc7XG4gICAgICAgIGNvbnN0IHRva2Vuc1F1ZXJ5U3RyaW5nID0gJ2FjY2Vzc190b2tlbj0nICsgc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSgnYWNjZXNzVG9rZW4nKSArICcmaWRUb2tlbj0nICsgc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSgnaWRUb2tlbicpO1xuXG4gICAgICAgIGRvY3VtZW50cy5mb3JFYWNoKChkb2MsIGluZGV4KSA9PiB7XG4gICAgICAgICAgICBpZiAoZG9jLnR5cGUuaW5jbHVkZXMoJ2ltYWdlJykpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICB0aHVtYm5haWxzLnB1c2goXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYga2V5PXtpbmRleH0gY2xhc3NOYW1lPXsnY29sJ30+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleT17aW5kZXh9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmM9e2RvYy5wYXlsb2FkID8gZG9jLnBheWxvYWQgOiBgJHtkb2N1bWVudERvd25sb2FkVXJsICsgJy8nICsgZG9jLnJlcG9zaXRvcnlJZCArICc/JyArIHRva2Vuc1F1ZXJ5U3RyaW5nfWB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHQ9XCJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3t3aWR0aDogMjUwLCBoZWlnaHQ6ICdhdXRvJ319XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlLnBhcnRpY2lwYW50LnVzZXJuYW1lICE9PSBjdXJyZW50VXNlci51c2VybmFtZSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17J3JvdyBuby1tYXJnaW4gbm8tcGFkZGluZyd9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SWNvbkJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQ9XCJzcGFuXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25Eb3dubG9hZChkb2N1bWVudHNbaW5kZXhdLm5hbWUsIGAke2RvY3VtZW50RG93bmxvYWRVcmwgKyAnLycgKyBkb2MucmVwb3NpdG9yeUlkICsgJz8nICsgdG9rZW5zUXVlcnlTdHJpbmd9YClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJY29uIGlkPXsnRE9XTkxPQUQnfS8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9JY29uQnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17J2NvbCBuby1tYXJnaW4gbm8tcGFkZGluZyd9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXt7Zm9udFNpemU6ICcxNHB4JywgbWFyZ2luVG9wOiAnMTRweCd9fT57ZG9jLm5hbWV9PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoZG9jLnR5cGUuaW5jbHVkZXMoJ3BkZicpKSB7XG4gICAgICAgICAgICAgICAgdGh1bWJuYWlscy5wdXNoKFxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGtleT17aW5kZXh9PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9eydjb2wnfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleT17aW5kZXh9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYz17cGRmSWNvbn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWx0PVwiXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3t3aWR0aDogMjUwLCBoZWlnaHQ6ICdhdXRvJ319XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2UucGFydGljaXBhbnQudXNlcm5hbWUgIT09IGN1cnJlbnRVc2VyLnVzZXJuYW1lICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9eydyb3cgbm8tbWFyZ2luIG5vLXBhZGRpbmcnfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJY29uQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50PVwic3BhblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkRvd25sb2FkKGRvY3VtZW50c1tpbmRleF0ubmFtZSwgYCR7ZG9jdW1lbnREb3dubG9hZFVybCArICcvJyArIGRvYy5yZXBvc2l0b3J5SWQgKyAnPycgKyB0b2tlbnNRdWVyeVN0cmluZ31gKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEljb24gaWQ9eydET1dOTE9BRCd9Lz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvSWNvbkJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXsnY29sIG5vLW1hcmdpbiBuby1wYWRkaW5nJ31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17e2ZvbnRTaXplOiAnMTRweCcsIG1hcmdpblRvcDogJzE0cHgnfX0+e2RvYy5uYW1lfTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGRvYy50eXBlLmluY2x1ZGVzKCdkb2MnKSkge1xuICAgICAgICAgICAgICAgIHRodW1ibmFpbHMucHVzaChcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBrZXk9e2luZGV4fSBzdHlsZT17e2JvcmRlckJvdHRvbTogJzVweCBzb2xpZCBibGFjayd9fT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXsnY29sJ30+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk9e2luZGV4fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmM9e2RvY0ljb259XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsdD1cIlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXt7d2lkdGg6IDI1MCwgaGVpZ2h0OiAnYXV0byd9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlLnBhcnRpY2lwYW50LnVzZXJuYW1lICE9PSBjdXJyZW50VXNlci51c2VybmFtZSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXsncm93IG5vLW1hcmdpbiBuby1wYWRkaW5nJ30+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SWNvbkJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudD1cInNwYW5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25Eb3dubG9hZChkb2N1bWVudHNbaW5kZXhdLm5hbWUsIGAke2RvY3VtZW50RG93bmxvYWRVcmwgKyAnLycgKyBkb2MucmVwb3NpdG9yeUlkICsgJz8nICsgdG9rZW5zUXVlcnlTdHJpbmd9YClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJY29uIGlkPXsnRE9XTkxPQUQnfS8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17J2NvbCBuby1tYXJnaW4gbm8tcGFkZGluZyd9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3tmb250U2l6ZTogJzE0cHgnLCBtYXJnaW5Ub3A6ICcxNHB4J319Pntkb2MubmFtZX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfSBlbHNlIGlmIChkb2MudHlwZS5pbmNsdWRlcygnd29yZCcpKSB7XG4gICAgICAgICAgICAgICAgdGh1bWJuYWlscy5wdXNoKFxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGtleT17aW5kZXh9IHN0eWxlPXt7Ym9yZGVyQm90dG9tOiAnNXB4IHNvbGlkIGJsYWNrJ319PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9eydjb2wnfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleT17aW5kZXh9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYz17d29yZEljb259XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsdD1cIlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXt7d2lkdGg6IDI1MCwgaGVpZ2h0OiAnYXV0byd9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlLnBhcnRpY2lwYW50LnVzZXJuYW1lICE9PSBjdXJyZW50VXNlci51c2VybmFtZSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXsncm93IG5vLW1hcmdpbiBuby1wYWRkaW5nJ30+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SWNvbkJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudD1cInNwYW5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25Eb3dubG9hZChkb2N1bWVudHNbaW5kZXhdLm5hbWUsIGAke2RvY3VtZW50RG93bmxvYWRVcmwgKyAnLycgKyBkb2MucmVwb3NpdG9yeUlkICsgJz8nICsgdG9rZW5zUXVlcnlTdHJpbmd9YClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJY29uIGlkPXsnRE9XTkxPQUQnfS8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17J2NvbCBuby1tYXJnaW4gbm8tcGFkZGluZyd9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3tmb250U2l6ZTogJzE0cHgnLCBtYXJnaW5Ub3A6ICcxNHB4J319Pntkb2MubmFtZX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfSBlbHNlIGlmIChkb2MudHlwZS5pbmNsdWRlcygneGxzJykpIHtcbiAgICAgICAgICAgICAgICB0aHVtYm5haWxzLnB1c2goXG4gICAgICAgICAgICAgICAgICAgIDxkaXYga2V5PXtpbmRleH0gc3R5bGU9e3tib3JkZXJCb3R0b206ICc1cHggc29saWQgYmxhY2snfX0+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17J2NvbCd9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5PXtpbmRleH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjPXt4c2xJY29ufVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHQ9XCJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17e3dpZHRoOiAyNTAsIGhlaWdodDogJ2F1dG8nfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZS5wYXJ0aWNpcGFudC51c2VybmFtZSAhPT0gY3VycmVudFVzZXIudXNlcm5hbWUgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17J3JvdyBuby1tYXJnaW4gbm8tcGFkZGluZyd9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEljb25CdXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQ9XCJzcGFuXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uRG93bmxvYWQoZG9jdW1lbnRzW2luZGV4XS5uYW1lLCBgJHtkb2N1bWVudERvd25sb2FkVXJsICsgJy8nICsgZG9jLnJlcG9zaXRvcnlJZCArICc/JyArIHRva2Vuc1F1ZXJ5U3RyaW5nfWApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SWNvbiBpZD17J0RPV05MT0FEJ30vPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9JY29uQnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9eydjb2wgbm8tbWFyZ2luIG5vLXBhZGRpbmcnfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXt7Zm9udFNpemU6ICcxNHB4JywgbWFyZ2luVG9wOiAnMTRweCd9fT57ZG9jLm5hbWV9PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGh1bWJuYWlscy5wdXNoKFxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGtleT17aW5kZXh9PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9eydjb2wnfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17e2JvcmRlckJvdHRvbTogJzAuN3B4IHNvbGlkIGJsYWNrJywgcGFkZGluZ0JvdHRvbTogJzhweCcsIGJvcmRlcldpZHRoOiAnNTAlJ319PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5PXtpbmRleH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjPXtwaHBJY29ufVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHQ9XCJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17e3dpZHRoOiAxMDAsIGhlaWdodDogJ2F1dG8nfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgc3R5bGU9e3ttYXJnaW5Ub3A6ICc0cHgnfX0+e2RvY3VtZW50c1tpbmRleF0ubmFtZX08L3A+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXsncm93IG5vLW1hcmdpbiBuby1wYWRkaW5nJ30+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEljb25CdXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudD1cInNwYW5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uRG93bmxvYWQoZG9jdW1lbnRzW2luZGV4XS5uYW1lLCBgJHtkb2N1bWVudERvd25sb2FkVXJsICsgJy8nICsgZG9jLnJlcG9zaXRvcnlJZCArICc/JyArIHRva2Vuc1F1ZXJ5U3RyaW5nfWApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SWNvbiBpZD17J0RPV05MT0FEJ30vPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9eydjb2wgbm8tbWFyZ2luIG5vLXBhZGRpbmcnfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3tmb250U2l6ZTogJzE0cHgnLCBtYXJnaW5Ub3A6ICcxNHB4J319Pntkb2MubmFtZX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiB0aHVtYm5haWxzO1xuICAgIH07XG5cbiAgICBjb25zdCByZW5kZXJMaW5rID0gKHthdHRyaWJ1dGVzLCBjb250ZW50fSkgPT4ge1xuICAgICAgICBjb25zdCB7aHJlZn0gPSBhdHRyaWJ1dGVzO1xuICAgICAgICByZXR1cm4gPGFcbiAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICB3aW5kb3cub3BlbihocmVmKTtcbiAgICAgICAgICAgIH19XG4gICAgICAgID5cbiAgICAgICAgICAgIHtjb250ZW50fVxuICAgICAgICA8L2E+O1xuICAgIH07XG5cbiAgICBjb25zdCBkZWxldGVDaGF0TWVzc2FnZSA9IChtZXNzYWdlKSA9PiB7XG4gICAgICAgIGNvbnN0IHBhcnRpY2lwYW50c1RvU2lnbmFsSWRzID0gcGFydGljaXBhbnRzVXNlcklkcygpO1xuICAgICAgICBzb2NrZXRNYW5hZ2VyLmVtaXRFdmVudChWQ0V2ZW50VHlwZS5ERUxFVEVfQ0hBVF9NRVNTQUdFLCB7XG4gICAgICAgICAgICBtZXNzYWdlSWQ6IG1lc3NhZ2UuaWQsXG4gICAgICAgICAgICBwYXJ0aWNpcGFudHNUb1NpZ25hbElkcyxcbiAgICAgICAgICAgIHByb2ZpbGU6IChhcHBsaWNhdGlvbk1hbmFnZXIuZ2V0QWN0aXZlVGVuYW50KCkgfHwgYXBwbGljYXRpb25NYW5hZ2VyLmdldFVzZXJEZXRhaWxzKCkucHJvZmlsZSksXG4gICAgICAgICAgICB1c2VySWQ6IGFwcGxpY2F0aW9uTWFuYWdlci5nZXRVc2VyRGV0YWlscygpLnVzZXJuYW1lLFxuICAgICAgICAgICAgdXNlcm5hbWU6IGFwcGxpY2F0aW9uTWFuYWdlci5nZXRVc2VyRGV0YWlscygpLnVzZXJuYW1lXG4gICAgICAgIH0pLnRoZW4oKGRhdGEpID0+IHtcbiAgICAgICAgICAgIG1lc3NhZ2UuYWN0aXZlID0gZmFsc2U7XG4gICAgICAgICAgICBzZXRSZWZyZXNoZXIoIXJlZnJlc2hlcik7XG4gICAgICAgIH0pLmNhdGNoKChlcnJvcikgPT4ge1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBjb25zdCByZW5kZXJNZXNzYWdlID0gKG1lc3NhZ2UsIGluZGV4KSA9PiB7XG4gICAgICAgIGlmICghbWVzc2FnZS5hY3RpdmUpIHtcbiAgICAgICAgICAgIHJldHVybiA8ZGl2IGtleT17aW5kZXh9IGNsYXNzTmFtZT17J2NoYXRyb29tX19tZXNzYWdlIHJvdyBuby1tYXJnaW4nfT5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17bWVzc2FnZS5wYXJ0aWNpcGFudC51c2VybmFtZSA9PT0gY3VycmVudFVzZXIudXNlcm5hbWUgPyBcIm15Y2hhdC1kZWxldGVkXCIgOiBcInBlZXJjaGF0XCJ9PlxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlLnBhcnRpY2lwYW50LnVzZXJuYW1lICE9PSBjdXJyZW50VXNlci51c2VybmFtZSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBzdHlsZT17e3BhZGRpbmdSaWdodDogJzEycHgnfX0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPEF2YXRhcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1V0aWxzLmdldEluaXRpYWxzKG1lc3NhZ2UucGFydGljaXBhbnQubmFtZSl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9BdmF0YXI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPXtcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3JkZXI6IG1lc3NhZ2UucGFydGljaXBhbnQudXNlcm5hbWUgPT09IGN1cnJlbnRVc2VyLnVzZXJuYW1lID8gbnVsbCA6IFwiMXB4IHNvbGlkICM1MjVmN2ZcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3JkZXJSYWRpdXM6IG1lc3NhZ2UucGFydGljaXBhbnQudXNlcm5hbWUgPT09IGN1cnJlbnRVc2VyLnVzZXJuYW1lID8gbnVsbCA6IFwiMTZweFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmc6IG1lc3NhZ2UucGFydGljaXBhbnQudXNlcm5hbWUgPT09IGN1cnJlbnRVc2VyLnVzZXJuYW1lID8gbnVsbCA6IFwiMCA4cHhcIlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9eydyb3cgbm8tbWFyZ2luIG5vLXBhZGRpbmcnfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17J2NvbCBuby1tYXJnaW4gbm8tcGFkZGluZyd9IHN0eWxlPXt7Zm9udFN0eWxlOiAnaXRhbGljJ319PmRlbGV0ZWQ8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKG1lc3NhZ2UudHlwZSA9PT0gJ0ZJTEUnKSB7XG4gICAgICAgICAgICAgICAgaWYgKG1lc3NhZ2UucGFydGljaXBhbnQudXNlcm5hbWUgPT09IGN1cnJlbnRVc2VyLnVzZXJuYW1lKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGtleT17aW5kZXh9IGNsYXNzTmFtZT1cImNoYXRyb29tX19tZXNzYWdlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJteWNoYXRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9eydyb3cnfSBzdHlsZT17e21hcmdpbjogJzRweCAwIDAgMCd9fT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXsnY29sIGNoYXQtdGltZSd9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHttb21lbnQobWVzc2FnZS5jcmVhdGVkRGF0ZSkuZm9ybWF0KCdERC9NTSwgSEg6bW0nKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICFwcm9wcy5kaXNhYmxlTWVzc2FnZURlbGV0ZSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJY29uQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQ9XCJzcGFuXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxldGVDaGF0TWVzc2FnZShtZXNzYWdlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJY29uIGlkPXsnREVMRVRFJ30vPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW5kZXJGaWxlVGh1bWJuYWlsKG1lc3NhZ2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAga2V5PXtpbmRleH0+e21lc3NhZ2UuY29udGVudH08L3A+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBrZXk9e2luZGV4fSBjbGFzc05hbWU9XCJjaGF0cm9vbV9fbWVzc2FnZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwZWVyY2hhdFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBdmF0YXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtVdGlscy5nZXRJbml0aWFscyhtZXNzYWdlLnBhcnRpY2lwYW50Lm5hbWUpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQXZhdGFyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicGVlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57bWVzc2FnZS5wYXJ0aWNpcGFudC5uYW1lfTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e21vbWVudChtZXNzYWdlLmNyZWF0ZWREYXRlKS5mb3JtYXQoJ0REL01NLCBISDptbScpfTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW5kZXJGaWxlVGh1bWJuYWlsKG1lc3NhZ2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBrZXk9e2luZGV4fT57bWVzc2FnZS5jb250ZW50fTwvcD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChtZXNzYWdlLnR5cGUgPT09ICdURVhUJykge1xuICAgICAgICAgICAgICAgIGlmIChtZXNzYWdlLnBhcnRpY2lwYW50LnVzZXJuYW1lID09PSBjdXJyZW50VXNlci51c2VybmFtZSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBrZXk9e2luZGV4fSBjbGFzc05hbWU9XCJjaGF0cm9vbV9fbWVzc2FnZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibXljaGF0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXsncm93J30gc3R5bGU9e3ttYXJnaW46ICc0cHggMCAwIDAnfX0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17J2NvbCBjaGF0LXRpbWUnfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7bW9tZW50KG1lc3NhZ2UuY3JlYXRlZERhdGUpLmZvcm1hdCgnREQvTU0sIEhIOm1tJyl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhcHJvcHMuZGlzYWJsZU1lc3NhZ2VEZWxldGUgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SWNvbkJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50PVwic3BhblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlQ2hhdE1lc3NhZ2UobWVzc2FnZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SWNvbiBpZD17J0RFTEVURSd9Lz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9JY29uQnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPExpbmtpZnkga2V5PXtpbmRleH0gb3B0aW9ucz17e3JlbmRlcjogcmVuZGVyTGlua319PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBrZXk9e2luZGV4fSBzdHlsZT17e21hcmdpbjogJzAgOHB4J319PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHttZXNzYWdlLmNvbnRlbnQuc3BsaXQoJ1xcbicpLm1hcCgodG9rZW4sIGluZGV4KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiA8UmVhY3QuRnJhZ21lbnQga2V5PXtpbmRleH0+e3Rva2VufTxici8+PC9SZWFjdC5GcmFnbWVudD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0xpbmtpZnk+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBrZXk9e2luZGV4fSBjbGFzc05hbWU9XCJjaGF0cm9vbV9fbWVzc2FnZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwZWVyY2hhdFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBdmF0YXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtVdGlscy5nZXRJbml0aWFscyhtZXNzYWdlLnBhcnRpY2lwYW50Lm5hbWUpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQXZhdGFyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicGVlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57bWVzc2FnZS5wYXJ0aWNpcGFudC5uYW1lfTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e21vbWVudChtZXNzYWdlLmNyZWF0ZWREYXRlKS5mb3JtYXQoJ0REL01NLCBISDptbScpfTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPExpbmtpZnkga2V5PXtpbmRleH0gb3B0aW9ucz17e3JlbmRlcjogcmVuZGVyTGlua319PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBrZXk9e2luZGV4fSBzdHlsZT17e21hcmdpbjogJzAgMCA0cHggNHB4J319PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHttZXNzYWdlLmNvbnRlbnQuc3BsaXQoJ1xcbicpLm1hcCgodG9rZW4sIGluZGV4KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiA8UmVhY3QuRnJhZ21lbnQga2V5PXtpbmRleH0+e3Rva2VufTxici8+PC9SZWFjdC5GcmFnbWVudD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0xpbmtpZnk+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobWVzc2FnZS50eXBlID09PSAnRVZFTlQnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjdi1wb2xsLWNob2ljZVwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cImN2LXBvbGwtY2hvaWNlLWRldGFpbHNcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJjdi1jaG9pY2UtcGVyY2VudGFnZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8SW5mb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwic2VsZWN0ZWQtY2hvaWNlLWljb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJjdi1jaG9pY2UtdGV4dFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB7bWVzc2FnZS5jb250ZW50fVxuICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9eydjdi1jaG9pY2UtcGVyY2VudC1jaGFydCBldmVudCd9IHN0eWxlPXt7d2lkdGg6ICcxMDAlJ319PlxuICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIDxQb2xsQ29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgIHBvbGw9e21lc3NhZ2UucG9sbH1cbiAgICAgICAgICAgICAgICAgICAgY2hhdFRhYj17cHJvcHMuY2hhdFRhYn1cbiAgICAgICAgICAgICAgICAgICAgaXNIb3N0PXtwcm9wcy5pc0hvc3R9XG4gICAgICAgICAgICAgICAgICAgIGlzQ2hhaXJQZXJzb249e3Byb3BzLmlzQ2hhaXJQZXJzb259XG4gICAgICAgICAgICAgICAgICAgIHBvbGxDcmVhdG9yPXttZXNzYWdlLnBhcnRpY2lwYW50fVxuICAgICAgICAgICAgICAgICAgICBjcmVhdGVkRGF0ZT17bWVzc2FnZS5jcmVhdGVkRGF0ZX1cbiAgICAgICAgICAgICAgICAgICAgc3VibWl0UG9sbFZvdGVIYW5kbGVyPXsocG9sbCkgPT4gc3VibWl0UG9sbFZvdGVIYW5kbGVyKHBvbGwpfVxuICAgICAgICAgICAgICAgICAgICBwb2xsUGFydGljaXBhbnRJRHM9e3NlbGVjdGVkQ2hhdC5wYXJ0aWNpcGFudHMubWFwKHAgPT4gcC51c2VybmFtZSl9XG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbnRVc2VyPXtjdXJyZW50VXNlcn1cbiAgICAgICAgICAgICAgICAgICAgY2xvc2VQb2xsSGFuZGxlcj17KGUsIHBvbGwpID0+IGNsb3NlUG9sbEhhbmRsZXIoZSwgcG9sbCl9XG4gICAgICAgICAgICAgICAgICAgIG51bWJlck9mUG9sbFBhcnRpY2lwYW50cz17c2VsZWN0ZWRDaGF0LnBhcnRpY2lwYW50cy5sZW5ndGh9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH07XG5cbiAgICBpZiAoc2VsZWN0ZWRDaGF0ICYmIG1lc3NhZ2VzKSB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNoYXRyb29tXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjaGF0cm9vbV9faGVhZGVyXCIgc3R5bGU9e1V0aWxzLm1lcmdlT2JqZWN0cyh7fSwgcHJvcHMuaGVhZGVyU3R5bGUpfT5cbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgIXByb3BzLmNoYXRUYWIgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY2hhdHJvb21fX2hlYWRlcnJpZ2h0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFRvb2x0aXAgdGl0bGU9XCJQb2xsXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SWNvbkJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eyhlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldE1vZGUoJ1BPTEwnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxQb2xsIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiBwcm9wcy5jaGF0VGFiID8gJ3JlZCcgOiBudWxsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW5Ub3A6IHByb3BzLmNoYXRUYWIgPyAnOHB4JyA6IG51bGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fS8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvVG9vbHRpcD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Lz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIG1vZGUgPT09ICdQT0xMJyA/XG4gICAgICAgICAgICAgICAgICAgICAgICA8Q2hhdFBvbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGF0VGFiPXtwcm9wcy5jaGF0VGFifVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnRpY2lwYW50cz17c2VsZWN0ZWRDaGF0LnBhcnRpY2lwYW50c31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVQb2xsSGFuZGxlcj17KHBvbGxEYXRhKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbmRNZXNzYWdlKG51bGwsIG51bGwsIHBvbGxEYXRhKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0TW9kZSgnQ0hBVCcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FuY2VsUG9sbEhhbmRsZXI9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0TW9kZSgnQ0hBVCcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAvPiA6XG4gICAgICAgICAgICAgICAgICAgICAgICA8PjwvPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIG1vZGUgPT09ICdDSEFUJyA/XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPVwibWVzc2FnZXNcIiByZWY9e21lc3NhZ2VzRW5kUmVmfSBjbGFzc05hbWU9XCJjaGF0cm9vbV9fYm9keVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5zb3J0KChhLCBiKSA9PiBuZXcgRGF0ZShhLmNyZWF0ZWREYXRlKSAtIG5ldyBEYXRlKGIuY3JlYXRlZERhdGUpKT8ubWFwKHJlbmRlck1lc3NhZ2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA6XG4gICAgICAgICAgICAgICAgICAgICAgICA8PjwvPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIG1vZGUgPT09ICdDSEFUJyAmJiAhcHJvcHMucmVhZE9ubHkgJiZcbiAgICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxmb3JtIGNsYXNzTmFtZT1cImNoYXRyb29tX19zZW5kTWVzc2FnZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwibWVzc2FnZV9faW1hZ2VTZWxlY3RvclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17J2NoYXQtaW5wdXQnfSBzdHlsZT17e3Bvc2l0aW9uOiAncmVsYXRpdmUnfX0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICFwcm9wcy5kaXNhYmxlRmlsZUF0dGFjaG1lbnQgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtcImZpbGUtdXBsb2FkIGNoYXRzLWZpbGUtdXBsb2FkXCJ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXt7ekluZGV4OiAhVXRpbHMuaXNOdWxsKGRvY3VtZW50cykgPyAxIDogMH19PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuYWJsZUZpbGU9e3RydWV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG11bHRpcGxlPXt0cnVlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD17J2RvY3VtZW50cyd9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljb25Db2xvcj17cHJvcHMuY2hhdFRhYiA/ICd3aGl0ZScgOiBudWxsfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17ZG9jdW1lbnRzfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGVhclVwbG9hZGVkRmlsZVN3aXRjaD17Y2xlYXJVcGxvYWRlZEZpbGVTd2l0Y2h9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlQ2hhbmdlSGFuZGxlcj17KHZhbHVlLCBpZCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0RG9jdW1lbnRzKHZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEN1c3RvbUlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHpJbmRleDogIVV0aWxzLmlzTnVsbChkb2N1bWVudHMpID8gMCA6IDEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6IHByb3BzLmNoYXRUYWIgPyAnd2hpdGUnIDogbnVsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsVGV4dD17ZG9jdW1lbnRzID8gXCJcIiA6IFwiVHlwZSBhIG5ldyBtZXNzYWdlXCJ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZD17IVV0aWxzLmlzTnVsbChkb2N1bWVudHMpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXVsdGlsaW5lPXt0cnVlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJtZXNzYWdlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sUHJvcHM9e3tmdWxsV2lkdGg6IHRydWV9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I9e3Byb3BzLmNoYXRUYWIgPyAnd2hpdGUnIDogbnVsbH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG9Gb2N1c1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXRQcm9wcz17e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZEFkb3JubWVudDogKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SW5wdXRBZG9ybm1lbnQgcG9zaXRpb249XCJlbmRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJY29uQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3N0eWxlcy5pbnB1dEFkb3JubWVudEljb259XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInN1Ym1pdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KGUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VuZE1lc3NhZ2UoZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U2VuZEljb24gc3R5bGU9e3tmb250U2l6ZTogJzI0cHgnfX0vPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9JY29uQnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0lucHV0QWRvcm5tZW50PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IG1lc3NhZ2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U6IChlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZUNoYW5nZShlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZm9ybT5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICk7XG4gICAgfSBlbHNlIGlmICghbG9hZGluZyAmJiBzZWxlY3RlZENoYXQpIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXsnY2VudGVyZWQtZmxleC1ib3gnfT5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImVtcHR5Y2hhdFwiPlxuICAgICAgICAgICAgICAgICAgICA8cCBjbGFzc05hbWU9eydjZW50ZXJlZC1mbGV4LWJveCd9IHN0eWxlPXt7Zm9udFNpemU6ICcyMHB4JywgZm9udFdlaWdodDogJ2JvbGQnfX0+WW91J3JlIHN0YXJ0aW5nIGFcbiAgICAgICAgICAgICAgICAgICAgICAgIG5ld1xuICAgICAgICAgICAgICAgICAgICAgICAgY29udmVyc2F0aW9uPC9wPlxuICAgICAgICAgICAgICAgICAgICA8cCBjbGFzc05hbWU9eydjZW50ZXJlZC1mbGV4LWJveCd9IHN0eWxlPXt7Zm9udFNpemU6ICcxNnB4J319PlR5cGUgeW91ciBmaXJzdCBtZXNzYWdlIGJlbG93PC9wPlxuICAgICAgICAgICAgICAgICAgICA8TG90dGllSWNvbiBpZD17J2NoYXQnfS8+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG59O1xuXG5leHBvcnQgZGVmYXVsdCBDaGF0Um9vbTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsSUFBQUEsTUFBQSxHQUFBQyx1QkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsU0FBQSxHQUFBRCxPQUFBO0FBQ0EsSUFBQUUsS0FBQSxHQUFBQyxzQkFBQSxDQUFBSCxPQUFBO0FBQ0EsSUFBQUksUUFBQSxHQUFBRCxzQkFBQSxDQUFBSCxPQUFBO0FBQ0EsSUFBQUssZUFBQSxHQUFBTCxPQUFBO0FBQ0FBLE9BQUE7QUFDQSxJQUFBTSxPQUFBLEdBQUFILHNCQUFBLENBQUFILE9BQUE7QUFDQSxJQUFBTyxlQUFBLEdBQUFKLHNCQUFBLENBQUFILE9BQUE7QUFDQSxJQUFBUSxPQUFBLEdBQUFMLHNCQUFBLENBQUFILE9BQUE7QUFDQSxJQUFBUyxZQUFBLEdBQUFOLHNCQUFBLENBQUFILE9BQUE7QUFDQSxJQUFBVSxXQUFBLEdBQUFQLHNCQUFBLENBQUFILE9BQUE7QUFDQSxJQUFBVyxhQUFBLEdBQUFYLE9BQUE7QUFDQSxJQUFBWSxNQUFBLEdB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
786
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfbWF0ZXJpYWwiLCJfU2VuZCIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfVG9vbHRpcCIsIl9yZWFjdFJvdXRlckRvbSIsIl9tb21lbnQiLCJfSW5wdXRBZG9ybm1lbnQiLCJfU3R5bGVzIiwiX0N1c3RvbUlucHV0IiwiX0xvdHRpZUljb24iLCJfcmVhY3RGZWF0aGVyIiwiX1V0aWxzIiwiX1ZDRXZlbnRUeXBlIiwiX2xpbmtpZnlSZWFjdCIsIl9GaWxlIiwiX0FwcGxpY2F0aW9uTWFuYWdlciIsIl9SZXN0VXRpbHMiLCJfcGRmSWNvbiIsIl9kb2MiLCJfd29yZCIsIl9leGNlbCIsIl9WQ0V2ZW50TWFuYWdlciIsIl9Tb2NrZXRNYW5hZ2VyIiwiX0ljb24iLCJfQ2hhdFBvbGwiLCJfUG9sbENvbnRhaW5lciIsIl9pY29uc01hdGVyaWFsIiwiZSIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwidCIsIldlYWtNYXAiLCJyIiwibiIsIm8iLCJpIiwiZiIsIl9fcHJvdG9fXyIsImhhcyIsImdldCIsInNldCIsImhhc093blByb3BlcnR5IiwiY2FsbCIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwib3duS2V5cyIsImtleXMiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJmaWx0ZXIiLCJlbnVtZXJhYmxlIiwicHVzaCIsImFwcGx5IiwiX29iamVjdFNwcmVhZCIsImFyZ3VtZW50cyIsImxlbmd0aCIsImZvckVhY2giLCJfZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsIl90b1Byb3BlcnR5S2V5IiwidmFsdWUiLCJjb25maWd1cmFibGUiLCJ3cml0YWJsZSIsIl90b1ByaW1pdGl2ZSIsIlN5bWJvbCIsInRvUHJpbWl0aXZlIiwiVHlwZUVycm9yIiwiU3RyaW5nIiwiTnVtYmVyIiwibG9jYXRpb24iLCJleHBvcnRzIiwid2luZG93IiwicHJvdG9jb2wiLCJob3N0bmFtZSIsIkNoYXRSb29tIiwicHJvcHMiLCJuYXZpZ2F0ZSIsInVzZU5hdmlnYXRlIiwicmVmcmVzaGVyIiwic2V0UmVmcmVzaGVyIiwidXNlU3RhdGUiLCJtZXNzYWdlIiwic2V0TWVzc2FnZSIsInNlbGVjdGVkQ2hhdCIsInNldFNlbGVjdGVkQ2hhdCIsImRvY3VtZW50cyIsInNldERvY3VtZW50cyIsIm1lc3NhZ2VzIiwic2V0TWVzc2FnZXMiLCJuZXdQYXJ0aWNpcGFudHMiLCJzZXROZXdQYXJ0aWNpcGFudHMiLCJjb25maXJtIiwic2V0SW1nVXBsb2FkQ29uZmlybSIsIm1lc3NhZ2VzRW5kUmVmIiwidXNlUmVmIiwibG9hZGluZyIsInNldExvYWRpbmciLCJtb2RlIiwic2V0TW9kZSIsImNsZWFyVXBsb2FkZWRGaWxlU3dpdGNoIiwic2V0Q2xlYXJVcGxvYWRlZEZpbGVTd2l0Y2giLCJzb2NrZXRFdmVudEhhbmRsZXIiLCJjdXJyZW50VXNlciIsImFwcGxpY2F0aW9uTWFuYWdlciIsImdldFVzZXJEZXRhaWxzIiwic29ja2V0RXZlbnRIYW5kbGVyQXBpIiwiaWQiLCJvbiIsImV2ZW50VHlwZSIsImJlIiwiVkNFdmVudFR5cGUiLCJDSEFUX01FU1NBR0UiLCJvbk1lc3NhZ2UiLCJwYXlsb2FkIiwiREVMRVRFX0NIQVRfTUVTU0FHRSIsIm9uRGVsZXRlTWVzc2FnZSIsIlNZU1RFTV9FVkVOVCIsIm9uU3lzdGVtRXZlbnQiLCJmZXRjaENoYXQiLCJ1cmwiLCJtZWV0aW5nS2V5IiwiY29uY2F0IiwiZ2V0Q29udGV4dFJvb3QiLCJtZWV0aW5nSWQiLCJzZW5kUmVxdWVzdCIsInJlc3BvbnNlIiwiY2xvc2VQb2xsSGFuZGxlciIsInBvbGwiLCJwb3N0RGF0YSIsInNlbmRNZXNzYWdlIiwicXVlc3Rpb24iLCJzdWJtaXRQb2xsVm90ZUhhbmRsZXIiLCJpc1RpZUJyZWFrZXIiLCJ1bmRlZmluZWQiLCJjaGF0UGFydGljaXBhbnQiLCJwYXJ0aWNpcGFudHMiLCJmaW5kIiwicCIsInVzZXJuYW1lIiwiZGF0YSIsInBvbGxJZCIsIm9wdGlvbklkIiwidGllQnJlYWtlck9wdGlvbiIsInNlbGVjdGVkT3B0aW9uIiwidGllQnJlYWtlciIsInN5c3RlbUV2ZW50VHlwZSIsIm1zZyIsInJvb21JZCIsImNoYXRNZXNzYWdlIiwidHlwZSIsImNoYXRUYWIiLCJhZGRlZFBlb3BsZUhhbmRsZXIiLCJsb2FkTWVzc2FnZXMiLCJjb25zb2xlIiwibG9nIiwibSIsIm1lc3NhZ2VJZCIsImFjdGl2ZSIsIm9uRG93bmxvYWQiLCJmaWxlTmFtZSIsImZldGNoIiwidGhlbiIsImJsb2IiLCJsaW5rIiwiZG9jdW1lbnQiLCJjcmVhdGVFbGVtZW50IiwiaHJlZiIsIlVSTCIsImNyZWF0ZU9iamVjdFVSTCIsImRvd25sb2FkIiwiY2xpY2siLCJjYXRjaCIsImVycm9yIiwic2Nyb2xsVG9Cb3R0b20iLCJuZXdNZXNzYWdlcyIsInNob3dBbGxNZXNzYWdlc0Zvck5ld1BhcnRpY2lwYW50cyIsImRhdGVBZGRlZFRvQ2hhdCIsIkRhdGUiLCJmaWx0ZXJlZE1lc3NhZ2VzIiwidHh0IiwiY3JlYXRlZERhdGUiLCJnZXRDaGF0Um9vbVRpdGxlIiwidGl0bGUiLCJ1c2VFZmZlY3QiLCJ1c2VySWQiLCJVdGlscyIsImlzTnVsbCIsImNoYXRJZCIsImFwaSIsInZjRXZlbnRNYW5hZ2VyIiwiYWRkU3Vic2NyaXB0aW9ucyIsInJlbW92ZVN1YnNjcmlwdGlvbnMiLCJjdXJyZW50Iiwic2Nyb2xsIiwidG9wIiwic2Nyb2xsSGVpZ2h0IiwiYmVoYXZpb3IiLCJoYW5kbGVDaGFuZ2UiLCJ0YXJnZXQiLCJwYXJ0aWNpcGFudHNVc2VySWRzIiwidXNlciIsIm1hcCIsImZpbmFsTWVzc2FnZSIsInByZXZlbnREZWZhdWx0IiwibVR5cGUiLCJjb21iaW5lZFNpemUiLCJkb2MiLCJwYXJzZUludCIsInNpemUiLCJhbGVydCIsImdldFRvcFZpZXciLCJTeXN0ZW1FdmVudFR5cGUiLCJBUElfRVJST1IiLCJjb250ZW50IiwicGFydGljaXBhbnQiLCJwYXJ0aWNpcGFudHNUb1NpZ25hbElkcyIsInNvY2tldE1hbmFnZXIiLCJlbWl0RXZlbnQiLCJza2lwQWxlcnQiLCJuZXdDaGF0IiwicHJvZmlsZSIsImdldEFjdGl2ZVRlbmFudCIsIm9sZE1zZ3MiLCJvcGVuQWRkUGVvcGxlRGlhbG9nIiwic2V0T3BlbkFkZFBlb3BsZSIsInJlbmRlckZpbGVUaHVtYm5haWwiLCJ0aHVtYm5haWxzIiwiZG9jdW1lbnREb3dubG9hZFVybCIsInRva2Vuc1F1ZXJ5U3RyaW5nIiwic2Vzc2lvblN0b3JhZ2UiLCJnZXRJdGVtIiwiaW5kZXgiLCJpbmNsdWRlcyIsImtleSIsImNsYXNzTmFtZSIsInNyYyIsInJlcG9zaXRvcnlJZCIsImFsdCIsInN0eWxlIiwid2lkdGgiLCJoZWlnaHQiLCJJY29uQnV0dG9uIiwiY29tcG9uZW50Iiwib25DbGljayIsIm5hbWUiLCJmb250U2l6ZSIsIm1hcmdpblRvcCIsInBkZkljb24iLCJib3JkZXJCb3R0b20iLCJkb2NJY29uIiwid29yZEljb24iLCJ4c2xJY29uIiwicGFkZGluZ0JvdHRvbSIsImJvcmRlcldpZHRoIiwicGhwSWNvbiIsInJlbmRlckxpbmsiLCJfcmVmIiwiYXR0cmlidXRlcyIsIm9wZW4iLCJkZWxldGVDaGF0TWVzc2FnZSIsInJlbmRlck1lc3NhZ2UiLCJwYWRkaW5nUmlnaHQiLCJBdmF0YXIiLCJnZXRJbml0aWFscyIsImJvcmRlciIsImJvcmRlclJhZGl1cyIsInBhZGRpbmciLCJmb250U3R5bGUiLCJtYXJnaW4iLCJtb21lbnQiLCJmb3JtYXQiLCJkaXNhYmxlTWVzc2FnZURlbGV0ZSIsIm9wdGlvbnMiLCJyZW5kZXIiLCJzcGxpdCIsInRva2VuIiwiRnJhZ21lbnQiLCJJbmZvIiwiaXNIb3N0IiwiaXNDaGFpclBlcnNvbiIsInBvbGxDcmVhdG9yIiwicG9sbFBhcnRpY2lwYW50SURzIiwibnVtYmVyT2ZQb2xsUGFydGljaXBhbnRzIiwicmVmcmVzaFBvbGxIYW5kbGVyIiwiX21lc3NhZ2VzJGZpbHRlciRzb3J0IiwibWVyZ2VPYmplY3RzIiwiaGVhZGVyU3R5bGUiLCJQb2xsIiwiY29sb3IiLCJjcmVhdGVQb2xsSGFuZGxlciIsInBvbGxEYXRhIiwiY2FuY2VsUG9sbEhhbmRsZXIiLCJyZWYiLCJwb2xsc09ubHkiLCJzb3J0IiwiYSIsImIiLCJyZWFkT25seSIsInBvc2l0aW9uIiwiZGlzYWJsZUZpbGVBdHRhY2htZW50IiwiekluZGV4IiwiZW5hYmxlRmlsZSIsIm11bHRpcGxlIiwiaWNvbkNvbG9yIiwidmFsdWVDaGFuZ2VIYW5kbGVyIiwibGFiZWxUZXh0IiwiZGlzYWJsZWQiLCJtdWx0aWxpbmUiLCJmb3JtQ29udHJvbFByb3BzIiwiZnVsbFdpZHRoIiwiYXV0b0ZvY3VzIiwiaW5wdXRQcm9wcyIsImVuZEFkb3JubWVudCIsInN0eWxlcyIsImlucHV0QWRvcm5tZW50SWNvbiIsIm9uQ2hhbmdlIiwiZm9udFdlaWdodCIsIl9kZWZhdWx0Il0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL21lZGlhL2NoYXQvQ2hhdFJvb20uanN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwge3VzZUVmZmVjdCwgdXNlUmVmLCB1c2VTdGF0ZX0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHtBdmF0YXIsIEljb25CdXR0b259IGZyb20gJ0BtdWkvbWF0ZXJpYWwnO1xuaW1wb3J0IFNlbmRJY29uIGZyb20gJ0BtdWkvaWNvbnMtbWF0ZXJpYWwvU2VuZCc7XG5pbXBvcnQgVG9vbHRpcCBmcm9tICdAbXVpL21hdGVyaWFsL1Rvb2x0aXAnO1xuaW1wb3J0IHt1c2VOYXZpZ2F0ZX0gZnJvbSAncmVhY3Qtcm91dGVyLWRvbSc7XG5pbXBvcnQgJy4vQ2hhdFJvb21zLnNjc3MnO1xuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnO1xuaW1wb3J0IElucHV0QWRvcm5tZW50IGZyb20gJ0BtdWkvbWF0ZXJpYWwvSW5wdXRBZG9ybm1lbnQnO1xuaW1wb3J0IHN0eWxlcyBmcm9tICcuL1N0eWxlcyc7XG5pbXBvcnQgQ3VzdG9tSW5wdXQgZnJvbSAnLi4vLi4vY3VzdG9tSW5wdXQvQ3VzdG9tSW5wdXQnO1xuaW1wb3J0IExvdHRpZUljb24gZnJvbSAnLi4vLi4vTG90dGllSWNvbic7XG5pbXBvcnQge0luZm99IGZyb20gJ3JlYWN0LWZlYXRoZXInO1xuaW1wb3J0IFV0aWxzIGZyb20gJy4uLy4uLy4uL1V0aWxzJztcbmltcG9ydCB7VkNFdmVudFR5cGV9IGZyb20gXCIuLi9WQ0V2ZW50VHlwZVwiO1xuaW1wb3J0IExpbmtpZnkgZnJvbSBcImxpbmtpZnktcmVhY3RcIjtcbmltcG9ydCBGaWxlIGZyb20gXCIuLi8uLi9jdXN0b21JbnB1dC9GaWxlXCI7XG5pbXBvcnQgYXBwbGljYXRpb25NYW5hZ2VyIGZyb20gXCIuLi8uLi8uLi9BcHBsaWNhdGlvbk1hbmFnZXJcIjtcbmltcG9ydCB7cG9zdERhdGEsIHNlbmRSZXF1ZXN0fSBmcm9tIFwiLi4vLi4vLi4vUmVzdFV0aWxzXCI7XG5pbXBvcnQgcGRmSWNvbiBmcm9tICcuLi8uLi8uLi9hc3NldHMvaW1nL3BkZi1pY29uLnBuZydcbmltcG9ydCBkb2NJY29uIGZyb20gJy4uLy4uLy4uL2Fzc2V0cy9pbWcvZG9jLnBuZydcbmltcG9ydCB3b3JkSWNvbiBmcm9tICcuLi8uLi8uLi9hc3NldHMvaW1nL3dvcmQucG5nJ1xuaW1wb3J0IHhzbEljb24gZnJvbSAnLi4vLi4vLi4vYXNzZXRzL2ltZy9leGNlbC5wbmcnXG5pbXBvcnQgcGhwSWNvbiBmcm9tICcuLi8uLi8uLi9hc3NldHMvaW1nL2V4Y2VsLnBuZydcbmltcG9ydCB2Y0V2ZW50TWFuYWdlciBmcm9tIFwiLi4vVkNFdmVudE1hbmFnZXJcIjtcbmltcG9ydCBzb2NrZXRNYW5hZ2VyIGZyb20gXCIuLi8uLi9Tb2NrZXRNYW5hZ2VyXCI7XG5pbXBvcnQgSWNvbiBmcm9tIFwiLi4vLi4vSWNvblwiO1xuaW1wb3J0IENoYXRQb2xsIGZyb20gXCIuL0NoYXRQb2xsXCI7XG5pbXBvcnQgUG9sbENvbnRhaW5lciBmcm9tIFwiLi9Qb2xsQ29udGFpbmVyXCI7XG5pbXBvcnQge1BvbGx9IGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsXCI7XG5cbmV4cG9ydCBjb25zdCBsb2NhdGlvbiA9IHdpbmRvdy5sb2NhdGlvbi5wcm90b2NvbCArICcvLycgKyB3aW5kb3cubG9jYXRpb24uaG9zdG5hbWU7XG5cbmNvbnN0IENoYXRSb29tID0gKHByb3BzKSA9PiB7XG4gICAgY29uc3QgbmF2aWdhdGUgPSB1c2VOYXZpZ2F0ZSgpO1xuXG4gICAgY29uc3QgW3JlZnJlc2hlciwgc2V0UmVmcmVzaGVyXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgICBjb25zdCBbbWVzc2FnZSwgc2V0TWVzc2FnZV0gPSB1c2VTdGF0ZSgnJyk7XG4gICAgY29uc3QgW3NlbGVjdGVkQ2hhdCwgc2V0U2VsZWN0ZWRDaGF0XSA9IHVzZVN0YXRlKHByb3BzLnNlbGVjdGVkQ2hhdCk7XG4gICAgY29uc3QgW2RvY3VtZW50cywgc2V0RG9jdW1lbnRzXSA9IHVzZVN0YXRlKG51bGwpO1xuICAgIGNvbnN0IFttZXNzYWdlcywgc2V0TWVzc2FnZXNdID0gdXNlU3RhdGUoW10pO1xuICAgIGNvbnN0IFtuZXdQYXJ0aWNpcGFudHMsIHNldE5ld1BhcnRpY2lwYW50c10gPSB1c2VTdGF0ZShbXSk7XG4gICAgY29uc3QgW2NvbmZpcm0sIHNldEltZ1VwbG9hZENvbmZpcm1dID0gdXNlU3RhdGUoJycpO1xuICAgIGNvbnN0IG1lc3NhZ2VzRW5kUmVmID0gdXNlUmVmKG51bGwpO1xuICAgIGNvbnN0IFtsb2FkaW5nLCBzZXRMb2FkaW5nXSA9IHVzZVN0YXRlKHRydWUpO1xuICAgIGNvbnN0IFttb2RlLCBzZXRNb2RlXSA9IHVzZVN0YXRlKCdDSEFUJyk7XG4gICAgY29uc3QgW2NsZWFyVXBsb2FkZWRGaWxlU3dpdGNoLCBzZXRDbGVhclVwbG9hZGVkRmlsZVN3aXRjaF0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gICAgY29uc3QgW3NvY2tldEV2ZW50SGFuZGxlcl0gPSB1c2VTdGF0ZSh7fSk7XG4gICAgY29uc3QgW2N1cnJlbnRVc2VyXSA9IHVzZVN0YXRlKGFwcGxpY2F0aW9uTWFuYWdlci5nZXRVc2VyRGV0YWlscygpKTtcblxuICAgIGNvbnN0IHNvY2tldEV2ZW50SGFuZGxlckFwaSA9ICgpID0+IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGdldCBpZCgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2NoYXQtcm9vbS0xMjI5OTE4MjknO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG9uOiAoZXZlbnRUeXBlLCBiZSkgPT4ge1xuICAgICAgICAgICAgICAgIHN3aXRjaCAoZXZlbnRUeXBlKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgVkNFdmVudFR5cGUuQ0hBVF9NRVNTQUdFOlxuICAgICAgICAgICAgICAgICAgICAgICAgb25NZXNzYWdlKGJlLnBheWxvYWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgVkNFdmVudFR5cGUuREVMRVRFX0NIQVRfTUVTU0FHRTpcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uRGVsZXRlTWVzc2FnZShiZS5wYXlsb2FkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIFZDRXZlbnRUeXBlLlNZU1RFTV9FVkVOVDpcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uU3lzdGVtRXZlbnQoYmUucGF5bG9hZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgY29uc3QgZmV0Y2hDaGF0ID0gKCkgPT4ge1xuICAgICAgICBsZXQgdXJsID0gc2VsZWN0ZWRDaGF0Lm1lZXRpbmdLZXkgP1xuICAgICAgICAgICAgYCR7bG9jYXRpb24gKyAnLycgKyBhcHBsaWNhdGlvbk1hbmFnZXIuZ2V0Q29udGV4dFJvb3QoKX0vY2FsZW5kYXIvYXBpL3YxL2NoYXQvZmV0Y2hNZWV0aW5nQ2hhdEJ5S2V5LyR7c2VsZWN0ZWRDaGF0Lm1lZXRpbmdLZXl9YFxuICAgICAgICAgICAgOiBzZWxlY3RlZENoYXQubWVldGluZ0lkID9cbiAgICAgICAgICAgIGAke2xvY2F0aW9uICsgJy8nICsgYXBwbGljYXRpb25NYW5hZ2VyLmdldENvbnRleHRSb290KCl9L2NhbGVuZGFyL2FwaS92MS9jaGF0L2ZldGNoTWVldGluZ0NoYXQvJHtzZWxlY3RlZENoYXQubWVldGluZ0lkfWBcbiAgICAgICAgICAgIDpcbiAgICAgICAgICAgIGAke2xvY2F0aW9uICsgJy8nICsgYXBwbGljYXRpb25NYW5hZ2VyLmdldENvbnRleHRSb290KCl9L2NhbGVuZGFyL2FwaS92MS9jaGF0L2ZldGNoLyR7c2VsZWN0ZWRDaGF0LmlkfWA7XG4gICAgICAgIHNlbmRSZXF1ZXN0KHVybCwgKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICBpZiAocmVzcG9uc2UgJiYgcmVzcG9uc2UuaWQpIHtcbiAgICAgICAgICAgICAgICAvLyBQcmVzZXJ2ZSBtZWV0aW5nS2V5IHNvIHN1YnNlcXVlbnQgcmVmcmVzaGVzIHN0YXkgb24gdGhlIGJ5LWtleSBsb29rdXAuXG4gICAgICAgICAgICAgICAgc2V0U2VsZWN0ZWRDaGF0KHsuLi5yZXNwb25zZSwgbWVldGluZ0tleTogc2VsZWN0ZWRDaGF0Lm1lZXRpbmdLZXl9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSwgKGUpID0+IHtcblxuICAgICAgICB9LCB0cnVlLCBmYWxzZSk7XG4gICAgfTtcblxuICAgIGNvbnN0IGNsb3NlUG9sbEhhbmRsZXIgPSAoZSwgcG9sbCkgPT4ge1xuICAgICAgICBwb3N0RGF0YShgJHtsb2NhdGlvbiArICcvJyArIGFwcGxpY2F0aW9uTWFuYWdlci5nZXRDb250ZXh0Um9vdCgpfS9jYWxlbmRhci9hcGkvdjEvcG9sbC9jbG9zZWAsXG4gICAgICAgICAgICAocmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgICAgICBzZW5kTWVzc2FnZShlLCBgUG9sbDogJHtwb2xsLnF1ZXN0aW9ufSBoYXMgYmVlbiBjbG9zZWQuYCk7XG4gICAgICAgICAgICAgICAgZmV0Y2hDaGF0KCk7XG4gICAgICAgICAgICB9LCAoZSkgPT4ge1xuXG4gICAgICAgICAgICB9LCB0cnVlLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGlkOiBwb2xsLmlkXG4gICAgICAgICAgICB9KTtcbiAgICB9O1xuXG4gICAgY29uc3Qgc3VibWl0UG9sbFZvdGVIYW5kbGVyID0gKHBvbGwsIGlzVGllQnJlYWtlciA9IGZhbHNlKSA9PiB7XG4gICAgICAgIGxldCBjaGF0UGFydGljaXBhbnQgPSBzZWxlY3RlZENoYXQucGFydGljaXBhbnRzLmZpbmQocCA9PiBwLnVzZXJuYW1lID09PSBjdXJyZW50VXNlci51c2VybmFtZSk7XG5cbiAgICAgICAgY29uc3QgZGF0YSA9IHtcbiAgICAgICAgICAgIHBvbGxJZDogcG9sbC5pZCxcbiAgICAgICAgICAgIG9wdGlvbklkOiBpc1RpZUJyZWFrZXIgPyBwb2xsLnRpZUJyZWFrZXJPcHRpb24gOiBwb2xsLnNlbGVjdGVkT3B0aW9uLFxuICAgICAgICAgICAgY2hhdFBhcnRpY2lwYW50OiBjaGF0UGFydGljaXBhbnQsXG4gICAgICAgICAgICB0aWVCcmVha2VyOiBpc1RpZUJyZWFrZXJcbiAgICAgICAgfTtcblxuICAgICAgICBwb3N0RGF0YShgJHtsb2NhdGlvbiArICcvJyArIGFwcGxpY2F0aW9uTWFuYWdlci5nZXRDb250ZXh0Um9vdCgpfS9jYWxlbmRhci9hcGkvdjEvcG9sbC92b3RlYCxcbiAgICAgICAgICAgIChyZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgICAgIGZldGNoQ2hhdCgpO1xuICAgICAgICAgICAgfSwgKGUpID0+IHtcblxuICAgICAgICAgICAgfSwgdHJ1ZSwgZGF0YSk7XG4gICAgfTtcblxuICAgIGNvbnN0IG9uU3lzdGVtRXZlbnQgPSAocGF5bG9hZCkgPT4ge1xuICAgICAgICBpZiAocGF5bG9hZC5zeXN0ZW1FdmVudFR5cGUgPT09IFwiTkVXX1BPTExfVk9URVwiKSB7XG4gICAgICAgICAgICBsZXQgZmluZCA9IG1lc3NhZ2VzLmZpbmQoKG1zZykgPT4gbXNnLnBvbGwgJiYgbXNnLnBvbGwuaWQgPT09IHBheWxvYWQuZGF0YS5wb2xsSWQpO1xuICAgICAgICAgICAgaWYgKGZpbmQpIHtcbiAgICAgICAgICAgICAgICAvL2ZpbmQudG90YWxWb3RlcysrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfTtcblxuICAgIGNvbnN0IG9uTWVzc2FnZSA9IChwYXlsb2FkKSA9PiB7XG4gICAgICAgIGlmIChzZWxlY3RlZENoYXQgJiYgc2VsZWN0ZWRDaGF0LmlkID09PSBwYXlsb2FkLnJvb21JZCkge1xuICAgICAgICAgICAgaWYgKHByb3BzLm9uTWVzc2FnZSkge1xuICAgICAgICAgICAgICAgIHByb3BzLm9uTWVzc2FnZShwYXlsb2FkLmNoYXRNZXNzYWdlLCBzZWxlY3RlZENoYXQpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAocGF5bG9hZC5jaGF0TWVzc2FnZS50eXBlID09PSAnRVZFTlQnKSB7XG4gICAgICAgICAgICAgICAgaWYgKHByb3BzLmNoYXRUYWIpIHtcbiAgICAgICAgICAgICAgICAgICAgZmV0Y2hDaGF0KCk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcHJvcHMuYWRkZWRQZW9wbGVIYW5kbGVyKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBzZWxlY3RlZENoYXQubWVzc2FnZXMucHVzaChwYXlsb2FkLmNoYXRNZXNzYWdlKTtcbiAgICAgICAgICAgIGxvYWRNZXNzYWdlcygpO1xuICAgICAgICB9XG4gICAgfTtcblxuICAgIGNvbnN0IG9uRGVsZXRlTWVzc2FnZSA9IChwYXlsb2FkKSA9PiB7XG4gICAgICAgIGNvbnNvbGUubG9nKFwiTUVTU0FHRVMgOiBcIiwgbWVzc2FnZXMpO1xuICAgICAgICBsZXQgbXNnID0gbWVzc2FnZXMuZmluZCgobSkgPT4gbS5pZCA9PT0gcGF5bG9hZC5tZXNzYWdlSWQpO1xuICAgICAgICBjb25zb2xlLmxvZyhtc2cpO1xuICAgICAgICBpZiAobXNnKSB7XG4gICAgICAgICAgICBtc2cuYWN0aXZlID0gZmFsc2U7XG4gICAgICAgICAgICBzZXRSZWZyZXNoZXIoIXJlZnJlc2hlcik7XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgY29uc3Qgb25Eb3dubG9hZCA9IChmaWxlTmFtZSwgdXJsKSA9PiB7XG4gICAgICAgIGZldGNoKHVybClcbiAgICAgICAgICAgIC50aGVuKHJlc3BvbnNlID0+IHJlc3BvbnNlLmJsb2IoKSlcbiAgICAgICAgICAgIC50aGVuKGJsb2IgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGxpbmsgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiYVwiKTtcbiAgICAgICAgICAgICAgICBsaW5rLmhyZWYgPSBVUkwuY3JlYXRlT2JqZWN0VVJMKGJsb2IpO1xuICAgICAgICAgICAgICAgIGxpbmsuZG93bmxvYWQgPSBmaWxlTmFtZTtcbiAgICAgICAgICAgICAgICBsaW5rLmNsaWNrKCk7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLmNhdGNoKGNvbnNvbGUuZXJyb3IpO1xuICAgIH07XG5cbiAgICBjb25zdCBsb2FkTWVzc2FnZXMgPSAoKSA9PiB7XG4gICAgICAgIHNjcm9sbFRvQm90dG9tKCk7XG5cbiAgICAgICAgY29uc29sZS5sb2coXCJcXG5cXG5cXG5cXG5NRVNTQUdFUyA6IFwiLCBzZWxlY3RlZENoYXQubWVzc2FnZXMpO1xuICAgICAgICBpZiAoc2VsZWN0ZWRDaGF0KSB7XG4gICAgICAgICAgICBjb25zdCBuZXdNZXNzYWdlcyA9IFtdLmNvbmNhdChzZWxlY3RlZENoYXQubWVzc2FnZXMpO1xuICAgICAgICAgICAgaWYgKCFwcm9wcy5zaG93QWxsTWVzc2FnZXNGb3JOZXdQYXJ0aWNpcGFudHMpIHtcbiAgICAgICAgICAgICAgICBsZXQgZmluZCA9IHNlbGVjdGVkQ2hhdC5wYXJ0aWNpcGFudHMuZmluZChwID0+IHAudXNlcm5hbWUgPT09IGN1cnJlbnRVc2VyLnVzZXJuYW1lKTtcbiAgICAgICAgICAgICAgICBjb25zdCBkYXRlQWRkZWRUb0NoYXQgPSBmaW5kID8gZmluZC5kYXRlQWRkZWRUb0NoYXQgOiBuZXcgRGF0ZSgpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGZpbHRlcmVkTWVzc2FnZXMgPSBuZXdNZXNzYWdlc1xuICAgICAgICAgICAgICAgICAgICAuZmlsdGVyKHR4dCA9PiBkYXRlQWRkZWRUb0NoYXQgPT09IG51bGwgfHwgbmV3IERhdGUoZGF0ZUFkZGVkVG9DaGF0KSA8IG5ldyBEYXRlKHR4dC5jcmVhdGVkRGF0ZSkpO1xuICAgICAgICAgICAgICAgIHNldE1lc3NhZ2VzKGZpbHRlcmVkTWVzc2FnZXMpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBzZXRNZXNzYWdlcyhuZXdNZXNzYWdlcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBzZXRMb2FkaW5nKGZhbHNlKTtcbiAgICB9O1xuXG4gICAgY29uc3QgZ2V0Q2hhdFJvb21UaXRsZSA9ICgpID0+IHtcbiAgICAgICAgaWYgKHNlbGVjdGVkQ2hhdC50eXBlID09PSAnQ0FMRU5EQVJfTUVFVElORycgfHwgc2VsZWN0ZWRDaGF0LnRpdGxlKSB7XG4gICAgICAgICAgICByZXR1cm4gc2VsZWN0ZWRDaGF0LnRpdGxlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuICcnO1xuICAgIH07XG5cbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBzZXRTZWxlY3RlZENoYXQocHJvcHMuc2VsZWN0ZWRDaGF0KTtcbiAgICB9LCBbcHJvcHMuc2VsZWN0ZWRDaGF0XSk7XG5cbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBzY3JvbGxUb0JvdHRvbSgpO1xuICAgIH0sIFttZXNzYWdlc10pO1xuXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgaWYgKHNlbGVjdGVkQ2hhdCAmJiBjdXJyZW50VXNlcikge1xuICAgICAgICAgICAgc2V0TWVzc2FnZSgnJyk7XG4gICAgICAgICAgICBzZXREb2N1bWVudHMobnVsbCk7XG5cbiAgICAgICAgICAgIGxldCBmaW5kID0gc2VsZWN0ZWRDaGF0LnBhcnRpY2lwYW50cy5maW5kKHAgPT4gcC51c2VySWQgPT09IGN1cnJlbnRVc2VyLnVzZXJuYW1lIHx8IHAudXNlcm5hbWUgPT09IGN1cnJlbnRVc2VyLnVzZXJuYW1lKTtcbiAgICAgICAgICAgIGlmIChVdGlscy5pc051bGwoZmluZCkpIHtcbiAgICAgICAgICAgICAgICBwb3N0RGF0YShgJHtsb2NhdGlvbiArICcvJyArIGFwcGxpY2F0aW9uTWFuYWdlci5nZXRDb250ZXh0Um9vdCgpfS9jYWxlbmRhci9hcGkvdjEvY2hhdC9hZGRQYXJ0aWNpcGFudHNgLCAoKSA9PiB7XG4gICAgICAgICAgICAgICAgfSwgKGUpID0+IHtcblxuICAgICAgICAgICAgICAgIH0sIHRydWUsIHtcbiAgICAgICAgICAgICAgICAgICAgY2hhdElkOiBzZWxlY3RlZENoYXQuaWQsXG4gICAgICAgICAgICAgICAgICAgIHBhcnRpY2lwYW50czogW2N1cnJlbnRVc2VyXVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBsb2FkTWVzc2FnZXMoKTtcbiAgICAgICAgfVxuICAgIH0sIFtzZWxlY3RlZENoYXQsIGN1cnJlbnRVc2VyXSk7XG5cbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBzb2NrZXRFdmVudEhhbmRsZXIuYXBpID0gc29ja2V0RXZlbnRIYW5kbGVyQXBpKCk7XG4gICAgfSk7XG5cbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICB2Y0V2ZW50TWFuYWdlci5hZGRTdWJzY3JpcHRpb25zKHNvY2tldEV2ZW50SGFuZGxlciwgVkNFdmVudFR5cGUuREVMRVRFX0NIQVRfTUVTU0FHRSwgVkNFdmVudFR5cGUuQ0hBVF9NRVNTQUdFLCBWQ0V2ZW50VHlwZS5TWVNURU1fRVZFTlQpO1xuICAgICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICAgICAgdmNFdmVudE1hbmFnZXIucmVtb3ZlU3Vic2NyaXB0aW9ucyhzb2NrZXRFdmVudEhhbmRsZXIpO1xuICAgICAgICB9O1xuICAgIH0sIFtdKTtcblxuICAgIGNvbnN0IHNjcm9sbFRvQm90dG9tID0gKCkgPT4ge1xuICAgICAgICBpZiAobWVzc2FnZXNFbmRSZWYuY3VycmVudCkge1xuICAgICAgICAgICAgbWVzc2FnZXNFbmRSZWYuY3VycmVudC5zY3JvbGwoe3RvcDogbWVzc2FnZXNFbmRSZWYuY3VycmVudC5zY3JvbGxIZWlnaHQsIGJlaGF2aW9yOiAnc21vb3RoJ30pO1xuICAgICAgICB9XG4gICAgfTtcblxuICAgIGNvbnN0IGhhbmRsZUNoYW5nZSA9IChlKSA9PiB7XG4gICAgICAgIHNldE1lc3NhZ2UoZS50YXJnZXQudmFsdWUpO1xuICAgIH07XG5cbiAgICBjb25zdCBwYXJ0aWNpcGFudHNVc2VySWRzID0gKCkgPT4ge1xuICAgICAgICByZXR1cm4gc2VsZWN0ZWRDaGF0XG4gICAgICAgICAgICAucGFydGljaXBhbnRzXG4gICAgICAgICAgICAuZmlsdGVyKHVzZXIgPT4gdXNlci51c2VybmFtZSAhPT0gY3VycmVudFVzZXIudXNlcm5hbWUpXG4gICAgICAgICAgICAubWFwKHVzZXIgPT4gdXNlci51c2VybmFtZSk7XG4gICAgfTtcblxuICAgIGNvbnN0IHNlbmRNZXNzYWdlID0gKGUsIGZpbmFsTWVzc2FnZSA9IG51bGwsIHBvbGwgPSBudWxsKSA9PiB7XG4gICAgICAgIGlmIChlKSB7XG4gICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAobWVzc2FnZSB8fCBkb2N1bWVudHMgfHwgZmluYWxNZXNzYWdlIHx8IHBvbGwpIHtcblxuICAgICAgICAgICAgbGV0IG1UeXBlID0gJ1RFWFQnO1xuXG4gICAgICAgICAgICBpZiAoZG9jdW1lbnRzICYmIGRvY3VtZW50cy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgbGV0IGNvbWJpbmVkU2l6ZSA9IDA7XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBkb2Mgb2YgZG9jdW1lbnRzKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbWJpbmVkU2l6ZSA9IGNvbWJpbmVkU2l6ZSArIHBhcnNlSW50KGRvYy5zaXplKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoY29tYmluZWRTaXplID4gNzUwMDAwMCkge1xuICAgICAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbk1hbmFnZXIuYWxlcnQoYXBwbGljYXRpb25NYW5hZ2VyLmdldFRvcFZpZXcoKS5pZCwgU3lzdGVtRXZlbnRUeXBlLkFQSV9FUlJPUiwge1xuICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogJ0F0dGFjaG1lbnQgc2hvdWxkIGJlIG5vdCBtb3JlIHRoYW4gNy41TUIuJ1xuICAgICAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgbVR5cGUgPSAnRklMRSc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHBvbGwpIHtcbiAgICAgICAgICAgICAgICBtVHlwZSA9ICdQT0xMJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoZmluYWxNZXNzYWdlKSB7XG4gICAgICAgICAgICAgICAgbVR5cGUgPSAnRVZFTlQnXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IG1zZyA9IHtcbiAgICAgICAgICAgICAgICBjcmVhdGVkRGF0ZTogbmV3IERhdGUoKSxcbiAgICAgICAgICAgICAgICB0eXBlOiBtVHlwZSxcbiAgICAgICAgICAgICAgICBhY3RpdmU6IHRydWUsXG4gICAgICAgICAgICAgICAgY29udGVudDogZmluYWxNZXNzYWdlID8gZmluYWxNZXNzYWdlIDogbWVzc2FnZSxcbiAgICAgICAgICAgICAgICBwYXJ0aWNpcGFudDogY3VycmVudFVzZXJcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIGlmIChkb2N1bWVudHMgJiYgZG9jdW1lbnRzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICBtc2cuZG9jdW1lbnRzID0gZG9jdW1lbnRzO1xuICAgICAgICAgICAgICAgIHNldENsZWFyVXBsb2FkZWRGaWxlU3dpdGNoKCFjbGVhclVwbG9hZGVkRmlsZVN3aXRjaCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChwb2xsKSB7XG4gICAgICAgICAgICAgICAgbXNnLnBvbGwgPSBwb2xsO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBtc2cucGFydGljaXBhbnQuYWN0aXZlID0gdHJ1ZTtcblxuICAgICAgICAgICAgY29uc3QgcGFydGljaXBhbnRzVG9TaWduYWxJZHMgPSBwYXJ0aWNpcGFudHNVc2VySWRzKCk7XG4gICAgICAgICAgICBzb2NrZXRNYW5hZ2VyLmVtaXRFdmVudChWQ0V2ZW50VHlwZS5DSEFUX01FU1NBR0UsIHtcbiAgICAgICAgICAgICAgICByb29tSWQ6IHNlbGVjdGVkQ2hhdC5pZCxcbiAgICAgICAgICAgICAgICBjaGF0TWVzc2FnZTogbXNnLFxuICAgICAgICAgICAgICAgIHBhcnRpY2lwYW50c1RvU2lnbmFsSWRzLFxuICAgICAgICAgICAgICAgIHNraXBBbGVydDogcHJvcHMuY2hhdFRhYiB8fCBmaW5hbE1lc3NhZ2UsXG4gICAgICAgICAgICAgICAgbmV3Q2hhdDogc2VsZWN0ZWRDaGF0Lm1lc3NhZ2VzLmxlbmd0aCA9PT0gMCxcbiAgICAgICAgICAgICAgICBtZWV0aW5nSWQ6IHByb3BzLm1lZXRpbmdJZCA/IHByb3BzLm1lZXRpbmdJZCA6IG51bGwsXG4gICAgICAgICAgICAgICAgcHJvZmlsZTogKGFwcGxpY2F0aW9uTWFuYWdlci5nZXRBY3RpdmVUZW5hbnQoKSB8fCBhcHBsaWNhdGlvbk1hbmFnZXIuZ2V0VXNlckRldGFpbHMoKS5wcm9maWxlKVxuICAgICAgICAgICAgfSkudGhlbigoZGF0YSkgPT4ge1xuICAgICAgICAgICAgICAgIG1zZy5pZCA9IGRhdGEuaWQ7XG4gICAgICAgICAgICAgICAgc2V0TWVzc2FnZXMob2xkTXNncyA9PiBbLi4ub2xkTXNncywgbXNnXSk7XG4gICAgICAgICAgICAgICAgc2VsZWN0ZWRDaGF0Lm1lc3NhZ2VzLnB1c2gobXNnKTtcblxuICAgICAgICAgICAgICAgIGlmIChwcm9wcy5vbk1lc3NhZ2UgJiYgc2VsZWN0ZWRDaGF0KSB7XG4gICAgICAgICAgICAgICAgICAgIHByb3BzLm9uTWVzc2FnZShtc2csIHNlbGVjdGVkQ2hhdCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSkuY2F0Y2goKGVycm9yKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCJFcnJvciBzZW5kaW5nIGNoYXQgbWVzc2FnZSA6IFwiLCBlcnJvcilcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHNldE1lc3NhZ2UoJycpO1xuICAgICAgICBzZXRJbWdVcGxvYWRDb25maXJtKCcnKTtcbiAgICAgICAgc2V0RG9jdW1lbnRzKG51bGwpXG4gICAgfTtcblxuICAgIGNvbnN0IG9wZW5BZGRQZW9wbGVEaWFsb2cgPSAoZSkgPT4ge1xuICAgICAgICBzZXRPcGVuQWRkUGVvcGxlKHRydWUpXG4gICAgfTtcblxuICAgIGNvbnN0IHJlbmRlckZpbGVUaHVtYm5haWwgPSAobWVzc2FnZSkgPT4ge1xuICAgICAgICBjb25zdCB7ZG9jdW1lbnRzfSA9IG1lc3NhZ2U7XG4gICAgICAgIGNvbnN0IHRodW1ibmFpbHMgPSBbXTtcbiAgICAgICAgLy8gVE9ETyA6IE1ha2UgZG9jcyBVUkwgcGF0aCBhIGNvbmZpZ1xuICAgICAgICBjb25zdCBkb2N1bWVudERvd25sb2FkVXJsID0gbG9jYXRpb24gKyBhcHBsaWNhdGlvbk1hbmFnZXIuZ2V0Q29udGV4dFJvb3QoKSArICcvZG9jcy9hcGkvdjEvbWFuYWdlci9kb3dubG9hZCc7XG4gICAgICAgIGNvbnN0IHRva2Vuc1F1ZXJ5U3RyaW5nID0gJ2FjY2Vzc190b2tlbj0nICsgc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSgnYWNjZXNzVG9rZW4nKSArICcmaWRUb2tlbj0nICsgc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSgnaWRUb2tlbicpO1xuXG4gICAgICAgIGRvY3VtZW50cy5mb3JFYWNoKChkb2MsIGluZGV4KSA9PiB7XG4gICAgICAgICAgICBpZiAoZG9jLnR5cGUuaW5jbHVkZXMoJ2ltYWdlJykpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICB0aHVtYm5haWxzLnB1c2goXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYga2V5PXtpbmRleH0gY2xhc3NOYW1lPXsnY29sJ30+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleT17aW5kZXh9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmM9e2RvYy5wYXlsb2FkID8gZG9jLnBheWxvYWQgOiBgJHtkb2N1bWVudERvd25sb2FkVXJsICsgJy8nICsgZG9jLnJlcG9zaXRvcnlJZCArICc/JyArIHRva2Vuc1F1ZXJ5U3RyaW5nfWB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHQ9XCJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3t3aWR0aDogMjUwLCBoZWlnaHQ6ICdhdXRvJ319XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlLnBhcnRpY2lwYW50LnVzZXJuYW1lICE9PSBjdXJyZW50VXNlci51c2VybmFtZSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17J3JvdyBuby1tYXJnaW4gbm8tcGFkZGluZyd9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SWNvbkJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQ9XCJzcGFuXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25Eb3dubG9hZChkb2N1bWVudHNbaW5kZXhdLm5hbWUsIGAke2RvY3VtZW50RG93bmxvYWRVcmwgKyAnLycgKyBkb2MucmVwb3NpdG9yeUlkICsgJz8nICsgdG9rZW5zUXVlcnlTdHJpbmd9YClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJY29uIGlkPXsnRE9XTkxPQUQnfS8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9JY29uQnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17J2NvbCBuby1tYXJnaW4gbm8tcGFkZGluZyd9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXt7Zm9udFNpemU6ICcxNHB4JywgbWFyZ2luVG9wOiAnMTRweCd9fT57ZG9jLm5hbWV9PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoZG9jLnR5cGUuaW5jbHVkZXMoJ3BkZicpKSB7XG4gICAgICAgICAgICAgICAgdGh1bWJuYWlscy5wdXNoKFxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGtleT17aW5kZXh9PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9eydjb2wnfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleT17aW5kZXh9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYz17cGRmSWNvbn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWx0PVwiXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3t3aWR0aDogMjUwLCBoZWlnaHQ6ICdhdXRvJ319XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2UucGFydGljaXBhbnQudXNlcm5hbWUgIT09IGN1cnJlbnRVc2VyLnVzZXJuYW1lICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9eydyb3cgbm8tbWFyZ2luIG5vLXBhZGRpbmcnfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJY29uQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50PVwic3BhblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkRvd25sb2FkKGRvY3VtZW50c1tpbmRleF0ubmFtZSwgYCR7ZG9jdW1lbnREb3dubG9hZFVybCArICcvJyArIGRvYy5yZXBvc2l0b3J5SWQgKyAnPycgKyB0b2tlbnNRdWVyeVN0cmluZ31gKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEljb24gaWQ9eydET1dOTE9BRCd9Lz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvSWNvbkJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXsnY29sIG5vLW1hcmdpbiBuby1wYWRkaW5nJ31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17e2ZvbnRTaXplOiAnMTRweCcsIG1hcmdpblRvcDogJzE0cHgnfX0+e2RvYy5uYW1lfTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGRvYy50eXBlLmluY2x1ZGVzKCdkb2MnKSkge1xuICAgICAgICAgICAgICAgIHRodW1ibmFpbHMucHVzaChcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBrZXk9e2luZGV4fSBzdHlsZT17e2JvcmRlckJvdHRvbTogJzVweCBzb2xpZCBibGFjayd9fT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXsnY29sJ30+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk9e2luZGV4fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmM9e2RvY0ljb259XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsdD1cIlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXt7d2lkdGg6IDI1MCwgaGVpZ2h0OiAnYXV0byd9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlLnBhcnRpY2lwYW50LnVzZXJuYW1lICE9PSBjdXJyZW50VXNlci51c2VybmFtZSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXsncm93IG5vLW1hcmdpbiBuby1wYWRkaW5nJ30+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SWNvbkJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudD1cInNwYW5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25Eb3dubG9hZChkb2N1bWVudHNbaW5kZXhdLm5hbWUsIGAke2RvY3VtZW50RG93bmxvYWRVcmwgKyAnLycgKyBkb2MucmVwb3NpdG9yeUlkICsgJz8nICsgdG9rZW5zUXVlcnlTdHJpbmd9YClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJY29uIGlkPXsnRE9XTkxPQUQnfS8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17J2NvbCBuby1tYXJnaW4gbm8tcGFkZGluZyd9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3tmb250U2l6ZTogJzE0cHgnLCBtYXJnaW5Ub3A6ICcxNHB4J319Pntkb2MubmFtZX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfSBlbHNlIGlmIChkb2MudHlwZS5pbmNsdWRlcygnd29yZCcpKSB7XG4gICAgICAgICAgICAgICAgdGh1bWJuYWlscy5wdXNoKFxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGtleT17aW5kZXh9IHN0eWxlPXt7Ym9yZGVyQm90dG9tOiAnNXB4IHNvbGlkIGJsYWNrJ319PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9eydjb2wnfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleT17aW5kZXh9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYz17d29yZEljb259XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsdD1cIlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXt7d2lkdGg6IDI1MCwgaGVpZ2h0OiAnYXV0byd9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlLnBhcnRpY2lwYW50LnVzZXJuYW1lICE9PSBjdXJyZW50VXNlci51c2VybmFtZSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXsncm93IG5vLW1hcmdpbiBuby1wYWRkaW5nJ30+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SWNvbkJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudD1cInNwYW5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25Eb3dubG9hZChkb2N1bWVudHNbaW5kZXhdLm5hbWUsIGAke2RvY3VtZW50RG93bmxvYWRVcmwgKyAnLycgKyBkb2MucmVwb3NpdG9yeUlkICsgJz8nICsgdG9rZW5zUXVlcnlTdHJpbmd9YClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJY29uIGlkPXsnRE9XTkxPQUQnfS8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17J2NvbCBuby1tYXJnaW4gbm8tcGFkZGluZyd9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3tmb250U2l6ZTogJzE0cHgnLCBtYXJnaW5Ub3A6ICcxNHB4J319Pntkb2MubmFtZX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfSBlbHNlIGlmIChkb2MudHlwZS5pbmNsdWRlcygneGxzJykpIHtcbiAgICAgICAgICAgICAgICB0aHVtYm5haWxzLnB1c2goXG4gICAgICAgICAgICAgICAgICAgIDxkaXYga2V5PXtpbmRleH0gc3R5bGU9e3tib3JkZXJCb3R0b206ICc1cHggc29saWQgYmxhY2snfX0+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17J2NvbCd9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5PXtpbmRleH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjPXt4c2xJY29ufVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHQ9XCJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17e3dpZHRoOiAyNTAsIGhlaWdodDogJ2F1dG8nfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZS5wYXJ0aWNpcGFudC51c2VybmFtZSAhPT0gY3VycmVudFVzZXIudXNlcm5hbWUgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17J3JvdyBuby1tYXJnaW4gbm8tcGFkZGluZyd9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEljb25CdXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQ9XCJzcGFuXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uRG93bmxvYWQoZG9jdW1lbnRzW2luZGV4XS5uYW1lLCBgJHtkb2N1bWVudERvd25sb2FkVXJsICsgJy8nICsgZG9jLnJlcG9zaXRvcnlJZCArICc/JyArIHRva2Vuc1F1ZXJ5U3RyaW5nfWApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SWNvbiBpZD17J0RPV05MT0FEJ30vPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9JY29uQnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9eydjb2wgbm8tbWFyZ2luIG5vLXBhZGRpbmcnfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXt7Zm9udFNpemU6ICcxNHB4JywgbWFyZ2luVG9wOiAnMTRweCd9fT57ZG9jLm5hbWV9PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGh1bWJuYWlscy5wdXNoKFxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGtleT17aW5kZXh9PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9eydjb2wnfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17e2JvcmRlckJvdHRvbTogJzAuN3B4IHNvbGlkIGJsYWNrJywgcGFkZGluZ0JvdHRvbTogJzhweCcsIGJvcmRlcldpZHRoOiAnNTAlJ319PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5PXtpbmRleH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjPXtwaHBJY29ufVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHQ9XCJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17e3dpZHRoOiAxMDAsIGhlaWdodDogJ2F1dG8nfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgc3R5bGU9e3ttYXJnaW5Ub3A6ICc0cHgnfX0+e2RvY3VtZW50c1tpbmRleF0ubmFtZX08L3A+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXsncm93IG5vLW1hcmdpbiBuby1wYWRkaW5nJ30+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEljb25CdXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudD1cInNwYW5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uRG93bmxvYWQoZG9jdW1lbnRzW2luZGV4XS5uYW1lLCBgJHtkb2N1bWVudERvd25sb2FkVXJsICsgJy8nICsgZG9jLnJlcG9zaXRvcnlJZCArICc/JyArIHRva2Vuc1F1ZXJ5U3RyaW5nfWApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SWNvbiBpZD17J0RPV05MT0FEJ30vPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9eydjb2wgbm8tbWFyZ2luIG5vLXBhZGRpbmcnfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3tmb250U2l6ZTogJzE0cHgnLCBtYXJnaW5Ub3A6ICcxNHB4J319Pntkb2MubmFtZX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiB0aHVtYm5haWxzO1xuICAgIH07XG5cbiAgICBjb25zdCByZW5kZXJMaW5rID0gKHthdHRyaWJ1dGVzLCBjb250ZW50fSkgPT4ge1xuICAgICAgICBjb25zdCB7aHJlZn0gPSBhdHRyaWJ1dGVzO1xuICAgICAgICByZXR1cm4gPGFcbiAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICB3aW5kb3cub3BlbihocmVmKTtcbiAgICAgICAgICAgIH19XG4gICAgICAgID5cbiAgICAgICAgICAgIHtjb250ZW50fVxuICAgICAgICA8L2E+O1xuICAgIH07XG5cbiAgICBjb25zdCBkZWxldGVDaGF0TWVzc2FnZSA9IChtZXNzYWdlKSA9PiB7XG4gICAgICAgIGNvbnN0IHBhcnRpY2lwYW50c1RvU2lnbmFsSWRzID0gcGFydGljaXBhbnRzVXNlcklkcygpO1xuICAgICAgICBzb2NrZXRNYW5hZ2VyLmVtaXRFdmVudChWQ0V2ZW50VHlwZS5ERUxFVEVfQ0hBVF9NRVNTQUdFLCB7XG4gICAgICAgICAgICBtZXNzYWdlSWQ6IG1lc3NhZ2UuaWQsXG4gICAgICAgICAgICBwYXJ0aWNpcGFudHNUb1NpZ25hbElkcyxcbiAgICAgICAgICAgIHByb2ZpbGU6IChhcHBsaWNhdGlvbk1hbmFnZXIuZ2V0QWN0aXZlVGVuYW50KCkgfHwgYXBwbGljYXRpb25NYW5hZ2VyLmdldFVzZXJEZXRhaWxzKCkucHJvZmlsZSksXG4gICAgICAgICAgICB1c2VySWQ6IGFwcGxpY2F0aW9uTWFuYWdlci5nZXRVc2VyRGV0YWlscygpLnVzZXJuYW1lLFxuICAgICAgICAgICAgdXNlcm5hbWU6IGFwcGxpY2F0aW9uTWFuYWdlci5nZXRVc2VyRGV0YWlscygpLnVzZXJuYW1lXG4gICAgICAgIH0pLnRoZW4oKGRhdGEpID0+IHtcbiAgICAgICAgICAgIG1lc3NhZ2UuYWN0aXZlID0gZmFsc2U7XG4gICAgICAgICAgICBzZXRSZWZyZXNoZXIoIXJlZnJlc2hlcik7XG4gICAgICAgIH0pLmNhdGNoKChlcnJvcikgPT4ge1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBjb25zdCByZW5kZXJNZXNzYWdlID0gKG1lc3NhZ2UsIGluZGV4KSA9PiB7XG4gICAgICAgIGlmICghbWVzc2FnZS5hY3RpdmUpIHtcbiAgICAgICAgICAgIHJldHVybiA8ZGl2IGtleT17aW5kZXh9IGNsYXNzTmFtZT17J2NoYXRyb29tX19tZXNzYWdlIHJvdyBuby1tYXJnaW4nfT5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17bWVzc2FnZS5wYXJ0aWNpcGFudC51c2VybmFtZSA9PT0gY3VycmVudFVzZXIudXNlcm5hbWUgPyBcIm15Y2hhdC1kZWxldGVkXCIgOiBcInBlZXJjaGF0XCJ9PlxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlLnBhcnRpY2lwYW50LnVzZXJuYW1lICE9PSBjdXJyZW50VXNlci51c2VybmFtZSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBzdHlsZT17e3BhZGRpbmdSaWdodDogJzEycHgnfX0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPEF2YXRhcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1V0aWxzLmdldEluaXRpYWxzKG1lc3NhZ2UucGFydGljaXBhbnQubmFtZSl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9BdmF0YXI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPXtcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3JkZXI6IG1lc3NhZ2UucGFydGljaXBhbnQudXNlcm5hbWUgPT09IGN1cnJlbnRVc2VyLnVzZXJuYW1lID8gbnVsbCA6IFwiMXB4IHNvbGlkICM1MjVmN2ZcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3JkZXJSYWRpdXM6IG1lc3NhZ2UucGFydGljaXBhbnQudXNlcm5hbWUgPT09IGN1cnJlbnRVc2VyLnVzZXJuYW1lID8gbnVsbCA6IFwiMTZweFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmc6IG1lc3NhZ2UucGFydGljaXBhbnQudXNlcm5hbWUgPT09IGN1cnJlbnRVc2VyLnVzZXJuYW1lID8gbnVsbCA6IFwiMCA4cHhcIlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9eydyb3cgbm8tbWFyZ2luIG5vLXBhZGRpbmcnfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17J2NvbCBuby1tYXJnaW4gbm8tcGFkZGluZyd9IHN0eWxlPXt7Zm9udFN0eWxlOiAnaXRhbGljJ319PmRlbGV0ZWQ8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKG1lc3NhZ2UudHlwZSA9PT0gJ0ZJTEUnKSB7XG4gICAgICAgICAgICAgICAgaWYgKG1lc3NhZ2UucGFydGljaXBhbnQudXNlcm5hbWUgPT09IGN1cnJlbnRVc2VyLnVzZXJuYW1lKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGtleT17aW5kZXh9IGNsYXNzTmFtZT1cImNoYXRyb29tX19tZXNzYWdlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJteWNoYXRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9eydyb3cnfSBzdHlsZT17e21hcmdpbjogJzRweCAwIDAgMCd9fT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXsnY29sIGNoYXQtdGltZSd9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHttb21lbnQobWVzc2FnZS5jcmVhdGVkRGF0ZSkuZm9ybWF0KCdERC9NTSwgSEg6bW0nKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICFwcm9wcy5kaXNhYmxlTWVzc2FnZURlbGV0ZSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJY29uQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQ9XCJzcGFuXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxldGVDaGF0TWVzc2FnZShtZXNzYWdlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJY29uIGlkPXsnREVMRVRFJ30vPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW5kZXJGaWxlVGh1bWJuYWlsKG1lc3NhZ2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAga2V5PXtpbmRleH0+e21lc3NhZ2UuY29udGVudH08L3A+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBrZXk9e2luZGV4fSBjbGFzc05hbWU9XCJjaGF0cm9vbV9fbWVzc2FnZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwZWVyY2hhdFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBdmF0YXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtVdGlscy5nZXRJbml0aWFscyhtZXNzYWdlLnBhcnRpY2lwYW50Lm5hbWUpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQXZhdGFyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicGVlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57bWVzc2FnZS5wYXJ0aWNpcGFudC5uYW1lfTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e21vbWVudChtZXNzYWdlLmNyZWF0ZWREYXRlKS5mb3JtYXQoJ0REL01NLCBISDptbScpfTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW5kZXJGaWxlVGh1bWJuYWlsKG1lc3NhZ2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBrZXk9e2luZGV4fT57bWVzc2FnZS5jb250ZW50fTwvcD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChtZXNzYWdlLnR5cGUgPT09ICdURVhUJykge1xuICAgICAgICAgICAgICAgIGlmIChtZXNzYWdlLnBhcnRpY2lwYW50LnVzZXJuYW1lID09PSBjdXJyZW50VXNlci51c2VybmFtZSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBrZXk9e2luZGV4fSBjbGFzc05hbWU9XCJjaGF0cm9vbV9fbWVzc2FnZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibXljaGF0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXsncm93J30gc3R5bGU9e3ttYXJnaW46ICc0cHggMCAwIDAnfX0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17J2NvbCBjaGF0LXRpbWUnfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7bW9tZW50KG1lc3NhZ2UuY3JlYXRlZERhdGUpLmZvcm1hdCgnREQvTU0sIEhIOm1tJyl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhcHJvcHMuZGlzYWJsZU1lc3NhZ2VEZWxldGUgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SWNvbkJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50PVwic3BhblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlQ2hhdE1lc3NhZ2UobWVzc2FnZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SWNvbiBpZD17J0RFTEVURSd9Lz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9JY29uQnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPExpbmtpZnkga2V5PXtpbmRleH0gb3B0aW9ucz17e3JlbmRlcjogcmVuZGVyTGlua319PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBrZXk9e2luZGV4fSBzdHlsZT17e21hcmdpbjogJzAgOHB4J319PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHttZXNzYWdlLmNvbnRlbnQuc3BsaXQoJ1xcbicpLm1hcCgodG9rZW4sIGluZGV4KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiA8UmVhY3QuRnJhZ21lbnQga2V5PXtpbmRleH0+e3Rva2VufTxici8+PC9SZWFjdC5GcmFnbWVudD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0xpbmtpZnk+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBrZXk9e2luZGV4fSBjbGFzc05hbWU9XCJjaGF0cm9vbV9fbWVzc2FnZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwZWVyY2hhdFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBdmF0YXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtVdGlscy5nZXRJbml0aWFscyhtZXNzYWdlLnBhcnRpY2lwYW50Lm5hbWUpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQXZhdGFyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicGVlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57bWVzc2FnZS5wYXJ0aWNpcGFudC5uYW1lfTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e21vbWVudChtZXNzYWdlLmNyZWF0ZWREYXRlKS5mb3JtYXQoJ0REL01NLCBISDptbScpfTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPExpbmtpZnkga2V5PXtpbmRleH0gb3B0aW9ucz17e3JlbmRlcjogcmVuZGVyTGlua319PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBrZXk9e2luZGV4fSBzdHlsZT17e21hcmdpbjogJzAgMCA0cHggNHB4J319PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHttZXNzYWdlLmNvbnRlbnQuc3BsaXQoJ1xcbicpLm1hcCgodG9rZW4sIGluZGV4KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiA8UmVhY3QuRnJhZ21lbnQga2V5PXtpbmRleH0+e3Rva2VufTxici8+PC9SZWFjdC5GcmFnbWVudD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0xpbmtpZnk+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobWVzc2FnZS50eXBlID09PSAnRVZFTlQnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjdi1wb2xsLWNob2ljZVwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cImN2LXBvbGwtY2hvaWNlLWRldGFpbHNcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJjdi1jaG9pY2UtcGVyY2VudGFnZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8SW5mb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwic2VsZWN0ZWQtY2hvaWNlLWljb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJjdi1jaG9pY2UtdGV4dFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB7bWVzc2FnZS5jb250ZW50fVxuICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9eydjdi1jaG9pY2UtcGVyY2VudC1jaGFydCBldmVudCd9IHN0eWxlPXt7d2lkdGg6ICcxMDAlJ319PlxuICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIDxQb2xsQ29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgIHBvbGw9e21lc3NhZ2UucG9sbH1cbiAgICAgICAgICAgICAgICAgICAgY2hhdFRhYj17cHJvcHMuY2hhdFRhYn1cbiAgICAgICAgICAgICAgICAgICAgaXNIb3N0PXtwcm9wcy5pc0hvc3R9XG4gICAgICAgICAgICAgICAgICAgIGlzQ2hhaXJQZXJzb249e3Byb3BzLmlzQ2hhaXJQZXJzb259XG4gICAgICAgICAgICAgICAgICAgIHBvbGxDcmVhdG9yPXttZXNzYWdlLnBhcnRpY2lwYW50fVxuICAgICAgICAgICAgICAgICAgICBjcmVhdGVkRGF0ZT17bWVzc2FnZS5jcmVhdGVkRGF0ZX1cbiAgICAgICAgICAgICAgICAgICAgc3VibWl0UG9sbFZvdGVIYW5kbGVyPXsocG9sbCwgaXNUaWVCcmVha2VyKSA9PiBzdWJtaXRQb2xsVm90ZUhhbmRsZXIocG9sbCwgaXNUaWVCcmVha2VyKX1cbiAgICAgICAgICAgICAgICAgICAgcG9sbFBhcnRpY2lwYW50SURzPXtzZWxlY3RlZENoYXQucGFydGljaXBhbnRzLm1hcChwID0+IHAudXNlcm5hbWUpfVxuICAgICAgICAgICAgICAgICAgICBjdXJyZW50VXNlcj17Y3VycmVudFVzZXJ9XG4gICAgICAgICAgICAgICAgICAgIGNsb3NlUG9sbEhhbmRsZXI9eyhlLCBwb2xsKSA9PiBjbG9zZVBvbGxIYW5kbGVyKGUsIHBvbGwpfVxuICAgICAgICAgICAgICAgICAgICBudW1iZXJPZlBvbGxQYXJ0aWNpcGFudHM9e3NlbGVjdGVkQ2hhdC5wYXJ0aWNpcGFudHMubGVuZ3RofVxuICAgICAgICAgICAgICAgICAgICByZWZyZXNoUG9sbEhhbmRsZXI9eygpID0+IGZldGNoQ2hhdCgpfVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgaWYgKHNlbGVjdGVkQ2hhdCAmJiBtZXNzYWdlcykge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjaGF0cm9vbVwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY2hhdHJvb21fX2hlYWRlclwiIHN0eWxlPXtVdGlscy5tZXJnZU9iamVjdHMoe30sIHByb3BzLmhlYWRlclN0eWxlKX0+XG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICFwcm9wcy5jaGF0VGFiICYmXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNoYXRyb29tX19oZWFkZXJyaWdodFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxUb29sdGlwIHRpdGxlPVwiUG9sbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEljb25CdXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRNb2RlKCdQT0xMJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8UG9sbCBzdHlsZT17e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogcHJvcHMuY2hhdFRhYiA/ICdyZWQnIDogbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luVG9wOiBwcm9wcy5jaGF0VGFiID8gJzhweCcgOiBudWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX0vPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9JY29uQnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1Rvb2x0aXA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBtb2RlID09PSAnUE9MTCcgP1xuICAgICAgICAgICAgICAgICAgICAgICAgPENoYXRQb2xsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhdFRhYj17cHJvcHMuY2hhdFRhYn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJ0aWNpcGFudHM9e3NlbGVjdGVkQ2hhdC5wYXJ0aWNpcGFudHN9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlUG9sbEhhbmRsZXI9eyhwb2xsRGF0YSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZW5kTWVzc2FnZShudWxsLCBudWxsLCBwb2xsRGF0YSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldE1vZGUoJ0NIQVQnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbmNlbFBvbGxIYW5kbGVyPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldE1vZGUoJ0NIQVQnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgLz4gOlxuICAgICAgICAgICAgICAgICAgICAgICAgPD48Lz5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBtb2RlID09PSAnQ0hBVCcgP1xuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD1cIm1lc3NhZ2VzXCIgcmVmPXttZXNzYWdlc0VuZFJlZn0gY2xhc3NOYW1lPVwiY2hhdHJvb21fX2JvZHlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2VzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZmlsdGVyKChtKSA9PiAhcHJvcHMucG9sbHNPbmx5IHx8IG0ucG9sbClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5zb3J0KChhLCBiKSA9PiBuZXcgRGF0ZShhLmNyZWF0ZWREYXRlKSAtIG5ldyBEYXRlKGIuY3JlYXRlZERhdGUpKT8ubWFwKHJlbmRlck1lc3NhZ2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA6XG4gICAgICAgICAgICAgICAgICAgICAgICA8PjwvPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIG1vZGUgPT09ICdDSEFUJyAmJiAhcHJvcHMucmVhZE9ubHkgJiZcbiAgICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxmb3JtIGNsYXNzTmFtZT1cImNoYXRyb29tX19zZW5kTWVzc2FnZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwibWVzc2FnZV9faW1hZ2VTZWxlY3RvclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17J2NoYXQtaW5wdXQnfSBzdHlsZT17e3Bvc2l0aW9uOiAncmVsYXRpdmUnfX0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICFwcm9wcy5kaXNhYmxlRmlsZUF0dGFjaG1lbnQgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtcImZpbGUtdXBsb2FkIGNoYXRzLWZpbGUtdXBsb2FkXCJ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXt7ekluZGV4OiAhVXRpbHMuaXNOdWxsKGRvY3VtZW50cykgPyAxIDogMH19PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuYWJsZUZpbGU9e3RydWV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG11bHRpcGxlPXt0cnVlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD17J2RvY3VtZW50cyd9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljb25Db2xvcj17cHJvcHMuY2hhdFRhYiA/ICd3aGl0ZScgOiBudWxsfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17ZG9jdW1lbnRzfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGVhclVwbG9hZGVkRmlsZVN3aXRjaD17Y2xlYXJVcGxvYWRlZEZpbGVTd2l0Y2h9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlQ2hhbmdlSGFuZGxlcj17KHZhbHVlLCBpZCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0RG9jdW1lbnRzKHZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEN1c3RvbUlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHpJbmRleDogIVV0aWxzLmlzTnVsbChkb2N1bWVudHMpID8gMCA6IDEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6IHByb3BzLmNoYXRUYWIgPyAnd2hpdGUnIDogbnVsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsVGV4dD17ZG9jdW1lbnRzID8gXCJcIiA6IFwiVHlwZSBhIG5ldyBtZXNzYWdlXCJ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZD17IVV0aWxzLmlzTnVsbChkb2N1bWVudHMpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXVsdGlsaW5lPXt0cnVlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJtZXNzYWdlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sUHJvcHM9e3tmdWxsV2lkdGg6IHRydWV9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I9e3Byb3BzLmNoYXRUYWIgPyAnd2hpdGUnIDogbnVsbH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG9Gb2N1c1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXRQcm9wcz17e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZEFkb3JubWVudDogKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SW5wdXRBZG9ybm1lbnQgcG9zaXRpb249XCJlbmRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJY29uQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3N0eWxlcy5pbnB1dEFkb3JubWVudEljb259XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInN1Ym1pdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KGUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VuZE1lc3NhZ2UoZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U2VuZEljb24gc3R5bGU9e3tmb250U2l6ZTogJzI0cHgnfX0vPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9JY29uQnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0lucHV0QWRvcm5tZW50PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IG1lc3NhZ2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U6IChlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZUNoYW5nZShlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZm9ybT5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICk7XG4gICAgfSBlbHNlIGlmICghbG9hZGluZyAmJiBzZWxlY3RlZENoYXQpIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXsnY2VudGVyZWQtZmxleC1ib3gnfT5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImVtcHR5Y2hhdFwiPlxuICAgICAgICAgICAgICAgICAgICA8cCBjbGFzc05hbWU9eydjZW50ZXJlZC1mbGV4LWJveCd9IHN0eWxlPXt7Zm9udFNpemU6ICcyMHB4JywgZm9udFdlaWdodDogJ2JvbGQnfX0+WW91J3JlIHN0YXJ0aW5nIGFcbiAgICAgICAgICAgICAgICAgICAgICAgIG5ld1xuICAgICAgICAgICAgICAgICAgICAgICAgY29udmVyc2F0aW9uPC9wPlxuICAgICAgICAgICAgICAgICAgICA8cCBjbGFzc05hbWU9eydjZW50ZXJlZC1mbGV4LWJveCd9IHN0eWxlPXt7Zm9udFNpemU6ICcxNnB4J319PlR5cGUgeW91ciBmaXJzdCBtZXNzYWdlIGJlbG93PC9wPlxuICAgICAgICAgICAgICAgICAgICA8TG90dGllSWNvbiBpZD17J2NoYXQnfS8+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG59O1xuXG5leHBvcnQgZGVmYXVsdCBDaGF0Um9vbTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsSUFBQUEsTUFBQSxHQUFBQyx1QkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsU0FBQSxHQUFBRCxPQUFBO0FBQ0EsSUFBQUUsS0FBQSxHQUFBQyxzQkFBQSxDQUFBSCxPQUFBO0FBQ0EsSUFBQUksUUFBQSxHQUFBRCxzQkFBQSxDQUFBSCxPQUFBO0FBQ0EsSUFBQUssZUFBQSxHQUFBTCxPQUFBO0FBQ0FBLE9BQUE7QUFDQSxJQUFBTSxPQUFBLEdBQUFILHNCQUFBLENBQUFILE9BQUE7QUFDQSxJQUFBTyxlQUFBLEdBQUFKLHNCQUFBLENBQUFILE9BQUE7QUFDQSxJQUFBUSxPQUFBLEdBQUFMLHNCQUFBLENBQUFILE9BQUE7QUFDQSxJQUFBUyxZQUFBLEdBQUFOLHNCQUFBLENBQUFILE9BQUE7QUFDQSxJQUFBVSxXQUFBLEdBQUFQLHNCQUFBLENBQUFILE9BQUE7QUFDQSxJQUFBVyxhQUFBLEdBQUFYLE9BQUE7QUFDQSxJQUFBWSxNQUFBLEdBQUFULHNCQUFB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