@projectcor/maia-components 2.11.88-0 → 2.11.89

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/CHANGELOG.md +12 -0
  2. package/lib/components/atoms/AttachmentPreviewModal/AttachmentPreviewModal.js +28 -41
  3. package/lib/components/atoms/AttachmentPreviewModal/WordPreview.js +128 -0
  4. package/lib/components/atoms/FrequentlyUsedActions/FrequentlyUsedActions.js +4 -12
  5. package/lib/components/atoms/FrequentlyUsedActions/FrequentlyUsedActions.styles.js +4 -10
  6. package/lib/components/molecules/ChatAIContent/ChatAIContent.skeleton.js +3 -3
  7. package/lib/components/molecules/ChatAIHome/ChatAIHome.js +18 -44
  8. package/lib/components/molecules/ChatAIHome/styles.js +41 -76
  9. package/lib/components/molecules/ChatAIModal/ChatAIModal.js +10 -15
  10. package/lib/components/molecules/ChatAIModal/layout.js +2 -2
  11. package/lib/components/organisms/ChatAI/ChatAI.js +1 -1
  12. package/lib/constants/maiaTaskPanelAccess.js +2 -2
  13. package/lib/context/global-context.js +1 -1
  14. package/lib/dev/DevChatAI.js +2 -2
  15. package/lib/hooks/useChatManager/useChatManager.js +4 -45
  16. package/lib/hooks/useFrequentlyUsedActions.js +2 -4
  17. package/lib/hooks/useProjectSummaryConfig.js +1 -1
  18. package/lib/lang/br/index.js +6 -7
  19. package/lib/lang/en/index.js +6 -7
  20. package/lib/lang/es/index.js +6 -7
  21. package/lib/lang/fr/index.js +2 -7
  22. package/lib/services/maia/Actions/getFrequentlyUsedActions.js +1 -1
  23. package/lib/services/maia/Agents/getAgents.js +2 -2
  24. package/lib/services/maia/Chats/getChatsByUserId.js +1 -1
  25. package/lib/store/chatsStore.types.js +1 -1
  26. package/lib/types/Action.js +1 -1
  27. package/lib/utils/actionCategoryMap.js +2 -6
  28. package/lib/utils/actionIconMap.js +2 -8
  29. package/lib/utils/streamActivityMessages.js +1 -2
  30. package/package.json +13 -8
  31. package/lib/components/atoms/icons/ActionCalendarIcon.js +0 -112
  32. package/lib/components/atoms/icons/ActionChatIcon.js +0 -71
  33. package/lib/components/atoms/icons/ActionTimeBackIcon.js +0 -112
  34. package/lib/constants/plannerSyncEvents.js +0 -16
@@ -46,16 +46,11 @@ import { EVENTS, useEvent } from '../../../hooks/useEvent';
46
46
  /** Metadata de la session abierta (emitida por useChatMessages al cargar una conversación). */
47
47
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
48
48
  var LEGACY_CONTEXT_ENTITIES = ['project', 'task', 'client'];
49
- /** Home global del orchestrator (solo header). Planner es home de FUAs, no de contextos. */
50
- var isGlobalMaiaSection = function isGlobalMaiaSection(section) {
51
- return section === 'header';
52
- };
53
49
  var resolveAiChatBackDestination = function resolveAiChatBackDestination(section, agentType, currentOption, homeOption) {
54
- if (isGlobalMaiaSection(section) && agentType === 'orchestrator' && currentOption === homeOption) {
50
+ if (section === 'header' && agentType === 'orchestrator' && currentOption === homeOption) {
55
51
  return 'global_context_home';
56
52
  }
57
53
  if (section === 'task') return 'task_home';
58
- if (section === 'planner') return 'planner_home';
59
54
  if (section === 'project') return 'project_home';
60
55
  if (section === 'client') return 'client_home';
61
56
  return 'global_context_home';
@@ -65,7 +60,7 @@ var validateAccessByFeature = function validateAccessByFeature(section) {
65
60
  if (section === 'header' && (window.MAIA_CHAT_AI_FEATURE_ACCESS_MULTI_AGENTS || window.MAIA_CHAT_AI_FEATURE_ACCESS)) {
66
61
  return true;
67
62
  }
68
- if ((section === 'project' || section === 'client' || section === 'task' || section === 'planner') && window.MAIA_CHAT_AI_FEATURE_ACCESS) {
63
+ if ((section === 'project' || section === 'client' || section === 'task') && window.MAIA_CHAT_AI_FEATURE_ACCESS) {
69
64
  return true;
70
65
  }
71
66
  return false;
@@ -249,7 +244,7 @@ export var ChatAIModal = function ChatAIModal(_ref) {
249
244
  var agentsFetchedRef = useRef(false);
250
245
  var selector = document.querySelector("#".concat(ID_MODAL_CHAT_AGENT));
251
246
 
252
- // Task panel, planner y banner de proyecto abren en flotante por default (no tapar el contexto detrás).
247
+ // Task panel y banner de proyecto abren en flotante por default (no tapar el contexto detrás).
253
248
  // Fuera de esos contextos se respeta la preferencia guardada en localStorage.
254
249
  var _useState27 = useState(function () {
255
250
  return resolveInitialMaiaChatLayoutMode({
@@ -466,9 +461,9 @@ export var ChatAIModal = function ChatAIModal(_ref) {
466
461
  if ((!agent || agent !== null && agent !== void 0 && agent.is_deleted || agent !== null && agent !== void 0 && agent.has_not_permissions || agent !== null && agent !== void 0 && agent.has_not_access || agent !== null && agent !== void 0 && agent.project_deleted) && agents.data.length > 0) {
467
462
  selectAgent(agents.data[0]);
468
463
  }
469
- // Orchestrator en home global (header/planner): al iniciar un chat nuevo se debe volver al paso 1
464
+ // Orchestrator en el home del header: al iniciar un chat nuevo se debe volver al paso 1
470
465
  // (lista de contextos recientes), por lo que hay que limpiar todo el contexto pineado.
471
- if (isGlobalMaiaSection(section) && (agent === null || agent === void 0 ? void 0 : agent.type) === 'orchestrator') {
466
+ if (section === 'header' && (agent === null || agent === void 0 ? void 0 : agent.type) === 'orchestrator') {
472
467
  setProject(null);
473
468
  setClient === null || setClient === void 0 || setClient(null);
474
469
  setTask === null || setTask === void 0 || setTask(null);
@@ -535,7 +530,7 @@ export var ChatAIModal = function ChatAIModal(_ref) {
535
530
  }
536
531
 
537
532
  // Home paso 2 (contexto pineado) → limpiar el contexto y volver al paso 1 (contextos recientes).
538
- if (computedCurrentOption === options.home && (isGlobalMaiaSection(section) || didResetContextInSection)) {
533
+ if (computedCurrentOption === options.home && (section === 'header' || didResetContextInSection)) {
539
534
  setProject(null);
540
535
  setClient === null || setClient === void 0 || setClient(null);
541
536
  setTask === null || setTask === void 0 || setTask(null);
@@ -550,7 +545,7 @@ export var ChatAIModal = function ChatAIModal(_ref) {
550
545
  var pinned = !!(task !== null && task !== void 0 && task.id || chipsProject !== null && chipsProject !== void 0 && chipsProject.projectId || client !== null && client !== void 0 && client.id || project !== null && project !== void 0 && project.id);
551
546
  var wasPinned = prevHasPinnedContextRef.current;
552
547
  prevHasPinnedContextRef.current = pinned;
553
- if (!isGlobalMaiaSection(section) && (agent === null || agent === void 0 ? void 0 : agent.type) === 'orchestrator' && wasPinned && !pinned) {
548
+ if (section !== 'header' && (agent === null || agent === void 0 ? void 0 : agent.type) === 'orchestrator' && wasPinned && !pinned) {
554
549
  setDidResetContextInSection(true);
555
550
  }
556
551
  }, [task === null || task === void 0 ? void 0 : task.id, chipsProject === null || chipsProject === void 0 ? void 0 : chipsProject.projectId, client === null || client === void 0 ? void 0 : client.id, project === null || project === void 0 ? void 0 : project.id, section, agent === null || agent === void 0 ? void 0 : agent.type]);
@@ -780,8 +775,8 @@ export var ChatAIModal = function ChatAIModal(_ref) {
780
775
  var hasPinnedContext = !!(task !== null && task !== void 0 && task.id || chipsProject !== null && chipsProject !== void 0 && chipsProject.projectId || client !== null && client !== void 0 && client.id || project !== null && project !== void 0 && project.id);
781
776
  var isChatView = computedCurrentOption === options.chat;
782
777
  var isHomeStep2 = computedCurrentOption === options.home && hasPinnedContext;
783
- var isHeaderHomeStep2 = isGlobalMaiaSection(section) && isHomeStep2;
784
- var isSectionResetHomeStep2 = !isGlobalMaiaSection(section) && isHomeStep2 && didResetContextInSection;
778
+ var isHeaderHomeStep2 = section === 'header' && isHomeStep2;
779
+ var isSectionResetHomeStep2 = section !== 'header' && isHomeStep2 && didResetContextInSection;
785
780
  var showBackButton = (agent === null || agent === void 0 ? void 0 : agent.type) === 'orchestrator' && !hasError && !loading && (isChatView || isHeaderHomeStep2 || isSectionResetHomeStep2);
786
781
  var handleOpenMarketplace = useCallback(function () {
787
782
  if (!window.MAIA_CHAT_AI_FEATURE_ACCESS_MULTI_AGENTS) {
@@ -968,4 +963,4 @@ export var ChatAIModal = function ChatAIModal(_ref) {
968
963
  }), /*#__PURE__*/_jsx(Snackbar, {})]
969
964
  }), selector);
970
965
  };
971
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VDYWxsYmFjayIsInVzZU1lbW8iLCJ1c2VTdGF0ZSIsInVzZVJlZiIsInVzZUVmZmVjdCIsInVzZUxheW91dEVmZmVjdCIsIlJlYWN0RE9NIiwibW9tZW50IiwidXNlVHJhbnNsYXRpb24iLCJ1c2VVc2VyIiwiTUFJQUVycm9yIiwidXNlTWFpYVRhc2tQYW5lbFpJbmRleCIsIkNoYXRBSUNvbnRlbnQiLCJidWlsZEhhbmRsZXJzIiwib3B0aW9ucyIsIlNpZGViYXIiLCJ1c2VHZXRBZ2VudHMiLCJ1c2VHbG9iYWxDb250ZXh0IiwiQ2hhdEFJTW9kYWxIZWFkZXIiLCJTbmFja2JhciIsIlByb2plY3RTdW1tYXJ5Q29udGVudCIsIkFibUFnZW50TW9kYWwiLCJDbG9zZVdoaWxlR2VuZXJhdGluZ01vZGFsIiwiU0VDVElPTlMiLCJTQ0NBSU1Db250ZW50IiwiU0NDQUlNQ29udGVudFdyYXBwZXIiLCJTQ0NBSU1XcmFwcGVyIiwiZ2V0TWFpYUZsb2F0aW5nUGFuZWxXaWR0aFB4IiwicmVzb2x2ZUluaXRpYWxNYWlhQ2hhdExheW91dE1vZGUiLCJzZXRTdG9yZWRNYWlhQ2hhdExheW91dE1vZGUiLCJGbG9hdGluZ1BhbmVsTW90aW9uIiwidXNlRmxvYXRpbmdQYW5lbERyYWdUaWx0IiwiQ2hhdEFpTW9kYWxGb290ZXIiLCJ2YWxpZGF0ZUlzTWFpYSIsImlzTWFya2V0cGxhY2VHbG9iYWxDbG9uZUFnZW50IiwidXNlRmFxc1N0b3JlIiwiZmV0Y2hNYWlhIiwibWFwQ09STGFuZyIsIkVWRU5UUyIsInVzZUV2ZW50IiwianN4IiwiX2pzeCIsImpzeHMiLCJfanN4cyIsIkZyYWdtZW50IiwiX0ZyYWdtZW50IiwiTEVHQUNZX0NPTlRFWFRfRU5USVRJRVMiLCJpc0dsb2JhbE1haWFTZWN0aW9uIiwic2VjdGlvbiIsInJlc29sdmVBaUNoYXRCYWNrRGVzdGluYXRpb24iLCJhZ2VudFR5cGUiLCJjdXJyZW50T3B0aW9uIiwiaG9tZU9wdGlvbiIsIklEX01PREFMX0NIQVRfQUdFTlQiLCJ2YWxpZGF0ZUFjY2Vzc0J5RmVhdHVyZSIsIndpbmRvdyIsIk1BSUFfQ0hBVF9BSV9GRUFUVVJFX0FDQ0VTU19NVUxUSV9BR0VOVFMiLCJNQUlBX0NIQVRfQUlfRkVBVFVSRV9BQ0NFU1MiLCJDaGF0QUlNb2RhbCIsIl9yZWYiLCJfdXNlciRwZXJtaXNzaW9ucyIsIl91c2VyJHBlcm1pc3Npb25zMiIsIl91c2VyJHBlcm1pc3Npb25zMyIsIl9hZ2VudHMkZGF0YSIsImhhbmRsZUNsb3NlIiwidXNlciIsIl91c2VUcmFuc2xhdGlvbiIsImFibUFnZW50IiwiaTE4biIsImFtcGxpdHVkRXZlbnQiLCJfdXNlU3RhdGUiLCJfdXNlU3RhdGUyIiwiX3NsaWNlZFRvQXJyYXkiLCJzaG93Q2xvc2VXaGlsZUdlbmVyYXRpbmdNb2RhbCIsInNldFNob3dDbG9zZVdoaWxlR2VuZXJhdGluZ01vZGFsIiwiX3VzZVN0YXRlMyIsIm1lc3NhZ2UiLCJhdHRhY2htZW50cyIsIl91c2VTdGF0ZTQiLCJ1c2VySW5pdGlhbE1lc3NhZ2UiLCJzZXRVc2VySW5pdGlhbE1lc3NhZ2UiLCJfdXNlU3RhdGU1IiwiX3VzZVN0YXRlNiIsImluaXRpYWxDaGF0SWQiLCJzZXRJbml0aWFsQ2hhdElkIiwiX3VzZVN0YXRlNyIsIl91c2VTdGF0ZTgiLCJuZXdDaGF0S2V5Iiwic2V0TmV3Q2hhdEtleSIsIl91c2VTdGF0ZTkiLCJfdXNlU3RhdGUwIiwic2Vzc2lvbk1ldGEiLCJzZXRTZXNzaW9uTWV0YSIsIl91c2VTdGF0ZTEiLCJfdXNlU3RhdGUxMCIsInNlbmRNZXNzYWdlRnVuY3Rpb24iLCJzZXRTZW5kTWVzc2FnZUZ1bmN0aW9uIiwiX3VzZVN0YXRlMTEiLCJfdXNlU3RhdGUxMiIsInN0b3BHZW5lcmF0aW9uRnVuY3Rpb24iLCJzZXRTdG9wR2VuZXJhdGlvbkZ1bmN0aW9uIiwiX3VzZVN0YXRlMTMiLCJfdXNlU3RhdGUxNCIsImlzU3RyZWFtaW5nIiwic2V0SXNTdHJlYW1pbmciLCJfdXNlU3RhdGUxNSIsIl91c2VTdGF0ZTE2IiwiaXNXcml0aW5nIiwic2V0SXNXcml0aW5nIiwiaGFuZGxlQ2xvc2VNb2RhbCIsImdldFN0YXRlIiwiY2xlYXJGYXFzIiwiaGFuZGxlRGlzbWlzc0Nsb3NlV2hpbGVHZW5lcmF0aW5nTW9kYWwiLCJoYW5kbGVDb25maXJtQ2xvc2VXaGlsZUdlbmVyYXRpbmciLCJfdXNlU3RhdGUxNyIsIl91c2VTdGF0ZTE4IiwicmVmZXRjaENoYXRzIiwic2V0UmVmZXRjaENoYXRzIiwiX3VzZVN0YXRlMTkiLCJob21lIiwiX3VzZVN0YXRlMjAiLCJzZXRDdXJyZW50T3B0aW9uIiwiX3VzZVN0YXRlMjEiLCJfdXNlU3RhdGUyMiIsImhhc0Vycm9yIiwic2V0SGFzRXJyb3IiLCJfdXNlU3RhdGUyMyIsIl91c2VTdGF0ZTI0IiwiZGlkUmVzZXRDb250ZXh0SW5TZWN0aW9uIiwic2V0RGlkUmVzZXRDb250ZXh0SW5TZWN0aW9uIiwicHJldkhhc1Bpbm5lZENvbnRleHRSZWYiLCJoYW5kbGVycyIsIl91c2VTdGF0ZTI1IiwiX3VzZVN0YXRlMjYiLCJzaWRlYmFySGFzRXJyb3IiLCJzZXRTaWRlYmFySGFzRXJyb3IiLCJyZXNldFNlbGVjdGVkQ2hhdFJlZiIsImxhbmciLCJsYW5ndWFnZSIsImxvY2FsZSIsIl91c2VHbG9iYWxDb250ZXh0Iiwic2VsZWN0QWdlbnQiLCJjbGVhckFnZW50IiwiYWdlbnQiLCJwcm9qZWN0IiwiY2xpZW50IiwidGFzayIsImNoaXBzUHJvamVjdCIsInRvZ2dsZVdlYlNlYXJjaCIsImlzV2ViU2VhcmNoQWN0aXZlIiwic2V0Q2hpcHNQcm9qZWN0Iiwic2V0Q2xpZW50Iiwic2V0UHJvamVjdCIsImJhbm5lckVudHJ5RmFxIiwic2V0VGFzayIsInRvb2x0aXBaSW5kZXgiLCJfdXNlR2V0QWdlbnRzIiwiaGFuZGxlR29Ib21lIiwiYWdlbnRzIiwibG9hZGluZyIsImxvYWRpbmdNb3JlIiwiYWdlbnRFcnJvciIsImVycm9yIiwiaGFuZGxlR2V0QWdlbnRzIiwibG9hZE1vcmVBZ2VudHMiLCJzZWFyY2hDdXN0b21BZ2VudHMiLCJzZWFyY2hMb2FkaW5nIiwiYWRkQWdlbnQiLCJyZW1vdmVBZ2VudCIsInVwZGF0ZUFnZW50IiwidXBkYXRlQWdlbnRGYXZvcml0ZSIsInNlbGVjdEZpcnN0QWdlbnQiLCJzb3J0QWdlbnRzTGlzdCIsImlzTUFJQSIsInVzZXJIYXNQZXJtaXNzaW9ucyIsInBlcm1pc3Npb25zIiwiYWlfYWdlbnRzIiwiY3JlYXRlIiwiZWRpdCIsImNvbXB1dGVkQ3VycmVudE9wdGlvbiIsImlzR2xvYmFsU3BlY2lhbGlzdCIsImVudGl0eSIsImlzUHJvamVjdFNwZWNpYWxpc3QiLCJpc0NsaWVudFNwZWNpYWxpc3QiLCJpc01haWFrZXIiLCJteUFnZW50cyIsInR5cGUiLCJjaGF0Iiwic2hvdWxkU2hvd1Byb2plY3RTZWxlY3RvciIsInNob3VsZFNob3dDbGllbnRTZWxlY3RvciIsInByb2plY3RTZWxlY3RvciIsImNsaWVudFNlbGVjdG9yIiwibmFtZSIsImlzTWFpYWtlckFnZW50U2VsZWN0ZWQiLCJzaWRlYmFyQWdlbnRzTmF2QWN0aXZlIiwiYWdlbnRzRmV0Y2hlZFJlZiIsInNlbGVjdG9yIiwiZG9jdW1lbnQiLCJxdWVyeVNlbGVjdG9yIiwiY29uY2F0IiwiX3VzZVN0YXRlMjciLCJfdXNlU3RhdGUyOCIsImxheW91dE1vZGUiLCJzZXRMYXlvdXRNb2RlIiwiaGFuZGxlTGF5b3V0TW9kZUNoYW5nZSIsIm1vZGUiLCJleHBhbmRlZCIsImlzRmxvYXRpbmciLCJjb250ZW50V3JhcHBlclJlZiIsIl91c2VTdGF0ZTI5IiwiX3VzZVN0YXRlMzAiLCJkcmFnUG9zaXRpb24iLCJzZXREcmFnUG9zaXRpb24iLCJfdXNlRmxvYXRpbmdQYW5lbERyYWciLCJ0aWx0TW90aW9uIiwic3RhcnRQb2ludGVyVHJhY2tpbmciLCJzYW1wbGVQb2ludGVyTW92ZSIsImVuZFBvaW50ZXJUcmFja2luZyIsImRyYWdTdGF0ZVJlZiIsImNsYW1wRHJhZ1Bvc2l0aW9uIiwieCIsInkiLCJjb250ZW50V3JhcHBlciIsImN1cnJlbnQiLCJfY29udGVudFdyYXBwZXIkZ2V0Qm8iLCJnZXRCb3VuZGluZ0NsaWVudFJlY3QiLCJ3aWR0aCIsImhlaWdodCIsIm9mZnNldCIsIm1heFgiLCJNYXRoIiwibWF4IiwiaW5uZXJXaWR0aCIsIm1heFkiLCJpbm5lckhlaWdodCIsIm1pbiIsInByZXYiLCJwYWQiLCJoYW5kbGVEcmFnRW5kIiwiZXZlbnQiLCJfZHJhZ1N0YXRlUmVmJGN1cnJlbnQiLCJwb2ludGVySWQiLCJib2R5Iiwic3R5bGUiLCJ1c2VyU2VsZWN0IiwiY3Vyc29yIiwiaGFuZGxlRHJhZ01vdmUiLCJkcmFnU3RhdGUiLCJjbGllbnRYIiwiY2xpZW50WSIsIm5leHRQb3NpdGlvbiIsIm9mZnNldFgiLCJvZmZzZXRZIiwicmVzb2x2ZWREcmFnUG9zaXRpb24iLCJoYW5kbGVEcmFnU3RhcnQiLCJidXR0b24iLCJ0YXJnZXQiLCJjbG9zZXN0IiwicmVjdCIsImluaXRpYWxQb3NpdGlvbiIsImxlZnQiLCJ0b3AiLCJwb2ludGVyT2Zmc2V0WCIsInBvaW50ZXJPZmZzZXRZIiwiY3VycmVudFRhcmdldCIsInNldFBvaW50ZXJDYXB0dXJlIiwicHJldmVudERlZmF1bHQiLCJhaUNoYXREcmFnZ2FibGUiLCJzdGFydENoYXQiLCJmYXFJZCIsImFnZW50U3VnZ2VzdGlvbklkIiwibWVudGlvbnMiLCJmdWFJZCIsInNjSWQiLCJjb250ZXh0RGF0YSIsIl9vYmplY3RTcHJlYWQiLCJsZW5ndGgiLCJiYW5uZXJGYXFBdXRvU2VudFJlZiIsIl9iYW5uZXJFbnRyeUZhcSRmYXFUaSIsImVudGl0eVJlYWR5IiwiQm9vbGVhbiIsImlkIiwiZmFxVGl0bGUiLCJ0cmltIiwidW5kZWZpbmVkIiwiZ29Ub0NoYXQiLCJzZXNzaW9uRXh0ZXJuYWxJZCIsInNlbGVjdGVkQWdlbnQiLCJkYXRhIiwiZmluZCIsImFnZW50SXRlbSIsImFnZW50SWQiLCJkaXNwYXRjaEV2ZW50IiwiQ3VzdG9tRXZlbnQiLCJoYW5kbGVTZW5kTWVzc2FnZVJlYWR5Iiwic2VuZE1lc3NhZ2UiLCJzdG9wR2VuZXJhdGlvbiIsInN0cmVhbWluZyIsIndyaXRpbmciLCJoYW5kbGVTZW5kTWVzc2FnZSIsImlzX2RlbGV0ZWQiLCJoYXNfbm90X3Blcm1pc3Npb25zIiwiaGFzX25vdF9hY2Nlc3MiLCJwcm9qZWN0X2RlbGV0ZWQiLCJoYW5kbGVSZXNldENoYXQiLCJfYXN5bmNUb0dlbmVyYXRvciIsIl9yZWdlbmVyYXRvclJ1bnRpbWUiLCJtYXJrIiwiX2NhbGxlZSIsIndyYXAiLCJfY29udGV4dCIsIm5leHQiLCJzdG9wIiwiaGFuZGxlQmFjayIsInRvIiwiYWlDaGF0QmFjayIsInBpbm5lZCIsInByb2plY3RJZCIsIndhc1Bpbm5lZCIsIm9uTWVyZ2VDcmVhdGVkQWdlbnQiLCJldnQiLCJfcmVmMyIsImRldGFpbCIsIm5leHRBZ2VudCIsIm5hdmlnYXRlSG9tZSIsImFkZEV2ZW50TGlzdGVuZXIiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwib25TeW5jRWRpdGVkQWdlbnQiLCJfcmVmNCIsIm9wZW5DaGF0VmlldyIsIm9wZW5OZXdDaGF0V2l0aEFnZW50IiwiX2RldGFpbCRwcm9qZWN0IiwiX2RldGFpbCRjbGllbnQiLCJfcmVmNSIsIm9uU2Vzc2lvbk1ldGEiLCJfcmVmNiIsImxlZ2FjeUNvbnRleHRTZXNzaW9uIiwiYWdlbnRFbnRpdHkiLCJpbmNsdWRlcyIsImNvbnRleHROYW1lIiwidGFza05hbWUiLCJwcm9qZWN0TmFtZSIsImNsaWVudE5hbWUiLCJlbnRpdHlUeXBlIiwiaXNfbGVnYWN5X2NvbnRleHQiLCJoYW5kbGVDb250aW51ZUxlZ2FjeUNvbnRleHRJbk5ld0NoYXQiLCJwSWQiLCJwTmFtZSIsImNJZCIsImNsaWVudElkIiwiY05hbWUiLCJ0SWQiLCJ0YXNrSWQiLCJ0TmFtZSIsIm9yY2hlc3RyYXRvciIsImEiLCJTdHJpbmciLCJzaG93TmV3Q2hhdCIsImlzTXlBZ2VudHNTZWN0aW9uIiwiaGFzUGlubmVkQ29udGV4dCIsImlzQ2hhdFZpZXciLCJpc0hvbWVTdGVwMiIsImlzSGVhZGVySG9tZVN0ZXAyIiwiaXNTZWN0aW9uUmVzZXRIb21lU3RlcDIiLCJzaG93QmFja0J1dHRvbiIsImhhbmRsZU9wZW5NYXJrZXRwbGFjZSIsImhhbmRsZUdvVG9NYWlha2VyIiwiX2NhbGxlZTIiLCJtYWlha2VyQWdlbnQiLCJyZXNwb25zZSIsIl90IiwiX2NvbnRleHQyIiwicGF0aCIsIm1ldGhvZCIsInNlbnQiLCJqc29uIiwiYWJydXB0IiwiaGFuZGxlRGVsZXRlQWdlbnRGcm9tTXlBZ2VudHMiLCJpc01haWFrZXJDcmVhdG9ySG9tZSIsIm1vZGFsUGFuZWwiLCJjaGlsZHJlbiIsIm9uR29Ub0NoYXQiLCJvbkVycm9yIiwiaGFuZGxlR29Ub0hvbWUiLCJoYW5kbGVTZXRSZWZldGNoQ2hhdHMiLCJhZ2VudHNOYXZBY3RpdmUiLCJpc0xlZ2FjeUNvbnRleHRTZXNzaW9uIiwiZmxvYXRpbmciLCJvbkxheW91dE1vZGVDaGFuZ2UiLCJkcmFnZ2FibGUiLCJvbkRyYWdTdGFydCIsIm9uRHJhZ01vdmUiLCJvbkRyYWdFbmQiLCJoYXNNb3JlIiwiaGFzX21vcmUiLCJvbkFnZW50VXBkYXRlIiwiaXNNYWlha2VyU2VjdGlvbiIsIm9uQmFjayIsInJlZnMiLCJvblNlbmRNZXNzYWdlUmVhZHkiLCJsb2FkaW5nQWdlbnRzIiwib25EZWxldGVBZ2VudCIsIm9uRmF2b3JpdGVBZ2VudFVwZGF0ZSIsImhhc01vcmVBZ2VudHMiLCJsb2FkaW5nTW9yZUFnZW50cyIsIm9uTG9hZE1vcmVBZ2VudHMiLCJvbkdvVG9NYWlha2VyIiwib25TZWFyY2hBZ2VudHMiLCJzZWFyY2hMb2FkaW5nQWdlbnRzIiwib25SZXN0YXJ0U3VtbWFyeSIsImhhbmRsZVN0b3BHZW5lcmF0aW9uIiwiY2hhdElkIiwic2hvd0ZhcXMiLCJvbkNvbnRpbnVlSW5OZXdDaGF0IiwicmVmIiwib25DbG9zZSIsIm9uQ29uZmlybSIsImNyZWF0ZVBvcnRhbCIsImVsZXZhdGVkIiwidGlsdCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL21vbGVjdWxlcy9DaGF0QUlNb2RhbC9DaGF0QUlNb2RhbC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbm8tbmVzdGVkLXRlcm5hcnkgKi9cbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9pbmRlbnQgKi9cbi8qIGVzbGludC1kaXNhYmxlIHJlYWN0L2pzeC1uby11c2VsZXNzLWZyYWdtZW50ICovXG4vKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55ICovXG4vKiBlc2xpbnQtZGlzYWJsZSByZWFjdC9uby1hcnJheS1pbmRleC1rZXkgKi9cbi8qIGVzbGludC1kaXNhYmxlIGpzeC1hMTF5L2NsaWNrLWV2ZW50cy1oYXZlLWtleS1ldmVudHMgKi9cbi8qIGVzbGludC1kaXNhYmxlIGpzeC1hMTF5L25vLXN0YXRpYy1lbGVtZW50LWludGVyYWN0aW9ucyAqL1xuLyogZXNsaW50LWRpc2FibGUgcmVhY3QvZnVuY3Rpb24tY29tcG9uZW50LWRlZmluaXRpb24gKi9cbi8qIGVzbGludC1kaXNhYmxlIHJlYWN0L3JlcXVpcmUtZGVmYXVsdC1wcm9wcyAqL1xuLyogZXNsaW50LWRpc2FibGUgbm8tY29uc29sZSAqL1xuaW1wb3J0IHtcbiAgUmVmT2JqZWN0LFxuICB1c2VDYWxsYmFjayxcbiAgdXNlTWVtbyxcbiAgdXNlU3RhdGUsXG4gIHVzZVJlZixcbiAgdXNlRWZmZWN0LFxuICB1c2VMYXlvdXRFZmZlY3QsXG4gIFBvaW50ZXJFdmVudCBhcyBSZWFjdFBvaW50ZXJFdmVudCxcbn0gZnJvbSAncmVhY3QnXG5pbXBvcnQgUmVhY3RET00gZnJvbSAncmVhY3QtZG9tJ1xuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnXG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gJ3JlYWN0LWkxOG5leHQnXG5pbXBvcnQgeyB1c2VVc2VyIH0gZnJvbSAnLi4vLi4vLi4vY29udGV4dC9jb3ItdXNlcidcbmltcG9ydCB7IE1BSUFFcnJvciB9IGZyb20gJy4uLy4uL2F0b21zL01BSUFFcnJvcidcbmltcG9ydCB7IHVzZU1haWFUYXNrUGFuZWxaSW5kZXggfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VNYWlhVGFza1BhbmVsWkluZGV4J1xuXG5pbXBvcnQgeyBDaGF0QUlDb250ZW50IH0gZnJvbSAnLi4vQ2hhdEFJQ29udGVudCdcbmltcG9ydCB7IGJ1aWxkSGFuZGxlcnMsIG9wdGlvbnMgfSBmcm9tICcuL2NvbnN0YW50cydcbmltcG9ydCB7IFNpZGViYXIgfSBmcm9tICcuLi9TaWRlYmFyJ1xuaW1wb3J0IHsgdXNlR2V0QWdlbnRzIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvbWFpYS9BZ2VudHMvZ2V0QWdlbnRzJ1xuaW1wb3J0IHsgdXNlR2xvYmFsQ29udGV4dCwgdHlwZSBTZWN0aW9uIH0gZnJvbSAnLi4vLi4vLi4vY29udGV4dC9nbG9iYWwtY29udGV4dCdcbmltcG9ydCB7IEF0dGFjaG1lbnRGaWxlIH0gZnJvbSAnLi4vQ2hhdEZvb3Rlci9DaGF0Rm9vdGVyJ1xuaW1wb3J0IHsgQ29udGV4dE1lbnRpb24gfSBmcm9tICcuLi8uLi8uLi90eXBlcy9jb250ZXh0TWVudGlvbidcbmltcG9ydCB7IENoYXRBSU1vZGFsSGVhZGVyIH0gZnJvbSAnLi9jb21wb25lbnRzL0NoYXRBaU1vZGFsSGVhZGVyL0NoYXRBaU1vZGFsSGVhZGVyJ1xuaW1wb3J0IHsgU25hY2tiYXIgfSBmcm9tICcuLi8uLi9vcmdhbmlzbXMvU25hY2tCYXIvU25hY2tiYXInXG5pbXBvcnQgeyBQcm9qZWN0U3VtbWFyeUNvbnRlbnQgfSBmcm9tICcuLi9Qcm9qZWN0U3VtbWFyeUNvbnRlbnQnXG5pbXBvcnQgeyBBYm1BZ2VudE1vZGFsIH0gZnJvbSAnLi4vLi4vb3JnYW5pc21zL0FibUFnZW50TW9kYWwvQWJtQWdlbnRNb2RhbCdcbmltcG9ydCB7IENsb3NlV2hpbGVHZW5lcmF0aW5nTW9kYWwgfSBmcm9tICcuLi8uLi9vcmdhbmlzbXMvQ2xvc2VXaGlsZUdlbmVyYXRpbmdNb2RhbCdcbmltcG9ydCB7IFNFQ1RJT05TIH0gZnJvbSAnLi4vLi4vLi4vY29uc3RhbnRzL2NvbmZpZydcbmltcG9ydCB7IFNDQ0FJTUNvbnRlbnQsIFNDQ0FJTUNvbnRlbnRXcmFwcGVyLCBTQ0NBSU1XcmFwcGVyIH0gZnJvbSAnLi9DaGF0QUlNb2RhbC5zdHlsZXMnXG5pbXBvcnQge1xuICBnZXRNYWlhRmxvYXRpbmdQYW5lbFdpZHRoUHgsXG4gIE1haWFDaGF0TW9kYWxMYXlvdXRNb2RlLFxuICByZXNvbHZlSW5pdGlhbE1haWFDaGF0TGF5b3V0TW9kZSxcbiAgc2V0U3RvcmVkTWFpYUNoYXRMYXlvdXRNb2RlLFxufSBmcm9tICcuL2xheW91dCdcbmltcG9ydCB7IEZsb2F0aW5nUGFuZWxNb3Rpb24sIHVzZUZsb2F0aW5nUGFuZWxEcmFnVGlsdCB9IGZyb20gJy4vZmxvYXRpbmdQYW5lbE1vdGlvbidcbmltcG9ydCB7IENoYXRBaU1vZGFsRm9vdGVyIH0gZnJvbSAnLi9jb21wb25lbnRzL0NoYXRBaU1vZGFsRm9vdGVyJ1xuaW1wb3J0IHsgdmFsaWRhdGVJc01haWEgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy91dGlscy92YWxpZGF0ZUlzTWFpYSdcbmltcG9ydCB7IGlzTWFya2V0cGxhY2VHbG9iYWxDbG9uZUFnZW50IH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvYWdlbnREaXNwbGF5TmFtZSdcbmltcG9ydCB7IEFnZW50IH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMvYWdlbnQnXG5pbXBvcnQgeyBQcm9qZWN0IH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMvUHJvamVjdCdcbmltcG9ydCB7IENsaWVudCB9IGZyb20gJy4uLy4uLy4uL3R5cGVzL0NsaWVudCdcbmltcG9ydCB7IFRhc2sgfSBmcm9tICcuLi8uLi8uLi90eXBlcy9UYXNrJ1xuaW1wb3J0IHsgdXNlRmFxc1N0b3JlIH0gZnJvbSAnLi4vLi4vLi4vc3RvcmUvdXNlRmFxc1N0b3JlJ1xuaW1wb3J0IHsgZmV0Y2hNYWlhIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvbWFpYS9jbGllbnQnXG5pbXBvcnQgeyBtYXBDT1JMYW5nIH0gZnJvbSAnLi4vLi4vLi4vbGFuZy91dGlscydcbmltcG9ydCB7IEVWRU5UUywgdXNlRXZlbnQgfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VFdmVudCdcblxudHlwZSBDaGF0QUlNb2RhbFByb3BzID0ge1xuICBjbGFzc05hbWU/OiBzdHJpbmdcbiAgaGFuZGxlQ2xvc2U/OiAoKSA9PiB2b2lkXG4gIHBhcmVudFJlZj86IFJlZk9iamVjdDxIVE1MRGl2RWxlbWVudD5cbn1cblxuLyoqIE1ldGFkYXRhIGRlIGxhIHNlc3Npb24gYWJpZXJ0YSAoZW1pdGlkYSBwb3IgdXNlQ2hhdE1lc3NhZ2VzIGFsIGNhcmdhciB1bmEgY29udmVyc2FjacOzbikuICovXG50eXBlIFNlc3Npb25NZXRhID0ge1xuICBjaGF0SWQ6IHN0cmluZ1xuICBhZ2VudFR5cGU/OiBzdHJpbmdcbiAgYWdlbnRFbnRpdHk/OiBzdHJpbmdcbiAgcHJvamVjdElkPzogbnVtYmVyXG4gIHByb2plY3ROYW1lPzogc3RyaW5nXG4gIGNsaWVudElkPzogbnVtYmVyXG4gIGNsaWVudE5hbWU/OiBzdHJpbmdcbiAgdGFza0lkPzogbnVtYmVyXG4gIHRhc2tOYW1lPzogc3RyaW5nXG59XG5cbmNvbnN0IExFR0FDWV9DT05URVhUX0VOVElUSUVTID0gWydwcm9qZWN0JywgJ3Rhc2snLCAnY2xpZW50J10gYXMgY29uc3RcbnR5cGUgTGVnYWN5Q29udGV4dEVudGl0eSA9ICh0eXBlb2YgTEVHQUNZX0NPTlRFWFRfRU5USVRJRVMpW251bWJlcl1cblxudHlwZSBBaUNoYXRCYWNrRGVzdGluYXRpb24gPSAnZ2xvYmFsX2NvbnRleHRfaG9tZScgfCAndGFza19ob21lJyB8ICdwbGFubmVyX2hvbWUnIHwgJ3Byb2plY3RfaG9tZScgfCAnY2xpZW50X2hvbWUnXG5cbi8qKiBIb21lIGdsb2JhbCBkZWwgb3JjaGVzdHJhdG9yIChzb2xvIGhlYWRlcikuIFBsYW5uZXIgZXMgaG9tZSBkZSBGVUFzLCBubyBkZSBjb250ZXh0b3MuICovXG5jb25zdCBpc0dsb2JhbE1haWFTZWN0aW9uID0gKHNlY3Rpb246IFNlY3Rpb24pOiBib29sZWFuID0+IHNlY3Rpb24gPT09ICdoZWFkZXInXG5cbmNvbnN0IHJlc29sdmVBaUNoYXRCYWNrRGVzdGluYXRpb24gPSAoXG4gIHNlY3Rpb246IFNlY3Rpb24sXG4gIGFnZW50VHlwZTogQWdlbnRbJ3R5cGUnXSB8IHVuZGVmaW5lZCxcbiAgY3VycmVudE9wdGlvbjogc3RyaW5nLFxuICBob21lT3B0aW9uOiBzdHJpbmdcbik6IEFpQ2hhdEJhY2tEZXN0aW5hdGlvbiA9PiB7XG4gIGlmIChpc0dsb2JhbE1haWFTZWN0aW9uKHNlY3Rpb24pICYmIGFnZW50VHlwZSA9PT0gJ29yY2hlc3RyYXRvcicgJiYgY3VycmVudE9wdGlvbiA9PT0gaG9tZU9wdGlvbikge1xuICAgIHJldHVybiAnZ2xvYmFsX2NvbnRleHRfaG9tZSdcbiAgfVxuICBpZiAoc2VjdGlvbiA9PT0gJ3Rhc2snKSByZXR1cm4gJ3Rhc2tfaG9tZSdcbiAgaWYgKHNlY3Rpb24gPT09ICdwbGFubmVyJykgcmV0dXJuICdwbGFubmVyX2hvbWUnXG4gIGlmIChzZWN0aW9uID09PSAncHJvamVjdCcpIHJldHVybiAncHJvamVjdF9ob21lJ1xuICBpZiAoc2VjdGlvbiA9PT0gJ2NsaWVudCcpIHJldHVybiAnY2xpZW50X2hvbWUnXG4gIHJldHVybiAnZ2xvYmFsX2NvbnRleHRfaG9tZSdcbn1cblxuZXhwb3J0IGNvbnN0IElEX01PREFMX0NIQVRfQUdFTlQgPSAnbW9kYWxzLXBvcnRhbC1tYWlhLWNoYXQtYWdlbnQnXG5cbmNvbnN0IHZhbGlkYXRlQWNjZXNzQnlGZWF0dXJlID0gKHNlY3Rpb246IHN0cmluZykgPT4ge1xuICBpZiAoc2VjdGlvbiA9PT0gJ2hlYWRlcicgJiYgKHdpbmRvdy5NQUlBX0NIQVRfQUlfRkVBVFVSRV9BQ0NFU1NfTVVMVElfQUdFTlRTIHx8IHdpbmRvdy5NQUlBX0NIQVRfQUlfRkVBVFVSRV9BQ0NFU1MpKSB7XG4gICAgcmV0dXJuIHRydWVcbiAgfVxuICBpZiAoXG4gICAgKHNlY3Rpb24gPT09ICdwcm9qZWN0JyB8fCBzZWN0aW9uID09PSAnY2xpZW50JyB8fCBzZWN0aW9uID09PSAndGFzaycgfHwgc2VjdGlvbiA9PT0gJ3BsYW5uZXInKSAmJlxuICAgIHdpbmRvdy5NQUlBX0NIQVRfQUlfRkVBVFVSRV9BQ0NFU1NcbiAgKSB7XG4gICAgcmV0dXJuIHRydWVcbiAgfVxuICByZXR1cm4gZmFsc2Vcbn1cblxuZXhwb3J0IGNvbnN0IENoYXRBSU1vZGFsID0gKHsgaGFuZGxlQ2xvc2UgfTogQ2hhdEFJTW9kYWxQcm9wcykgPT4ge1xuICBjb25zdCB1c2VyID0gdXNlVXNlcigpXG4gIGNvbnN0IHsgaTE4biB9ID0gdXNlVHJhbnNsYXRpb24oW1NFQ1RJT05TLmFibUFnZW50XSlcbiAgY29uc3QgYW1wbGl0dWRFdmVudCA9IHVzZUV2ZW50KClcblxuICBjb25zdCBbc2hvd0Nsb3NlV2hpbGVHZW5lcmF0aW5nTW9kYWwsIHNldFNob3dDbG9zZVdoaWxlR2VuZXJhdGluZ01vZGFsXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBbdXNlckluaXRpYWxNZXNzYWdlLCBzZXRVc2VySW5pdGlhbE1lc3NhZ2VdID0gdXNlU3RhdGU8e1xuICAgIG1lc3NhZ2U6IHN0cmluZ1xuICAgIGF0dGFjaG1lbnRzOiBBdHRhY2htZW50RmlsZVtdXG4gICAgZmFxSWQ/OiBzdHJpbmdcbiAgICBhZ2VudFN1Z2dlc3Rpb25JZD86IHN0cmluZ1xuICAgIG1lbnRpb25zPzogQ29udGV4dE1lbnRpb25bXVxuICAgIGZ1YUlkPzogc3RyaW5nXG4gICAgc2NJZD86IHN0cmluZ1xuICAgIGNvbnRleHREYXRhPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj5cbiAgfT4oe1xuICAgIG1lc3NhZ2U6ICcnLFxuICAgIGF0dGFjaG1lbnRzOiBbXSxcbiAgfSlcbiAgY29uc3QgW2luaXRpYWxDaGF0SWQsIHNldEluaXRpYWxDaGF0SWRdID0gdXNlU3RhdGU8c3RyaW5nIHwgbnVsbD4obnVsbClcbiAgY29uc3QgW25ld0NoYXRLZXksIHNldE5ld0NoYXRLZXldID0gdXNlU3RhdGUoMClcbiAgY29uc3QgW3Nlc3Npb25NZXRhLCBzZXRTZXNzaW9uTWV0YV0gPSB1c2VTdGF0ZTxTZXNzaW9uTWV0YSB8IG51bGw+KG51bGwpXG4gIGNvbnN0IFtzZW5kTWVzc2FnZUZ1bmN0aW9uLCBzZXRTZW5kTWVzc2FnZUZ1bmN0aW9uXSA9IHVzZVN0YXRlPFxuICAgIHwgKChcbiAgICAgICAgbWVzc2FnZTogc3RyaW5nLFxuICAgICAgICBhdHRhY2htZW50cz86IEF0dGFjaG1lbnRGaWxlW10sXG4gICAgICAgIGZhcUlkPzogc3RyaW5nLFxuICAgICAgICBhZ2VudFN1Z2dlc3Rpb25JZD86IHN0cmluZyxcbiAgICAgICAgbWVudGlvbnM/OiBDb250ZXh0TWVudGlvbltdLFxuICAgICAgICBmdWFJZD86IHN0cmluZyxcbiAgICAgICAgc2NJZD86IHN0cmluZ1xuICAgICAgKSA9PiB2b2lkKVxuICAgIHwgbnVsbFxuICA+KG51bGwpXG4gIGNvbnN0IFtzdG9wR2VuZXJhdGlvbkZ1bmN0aW9uLCBzZXRTdG9wR2VuZXJhdGlvbkZ1bmN0aW9uXSA9IHVzZVN0YXRlPCgoKSA9PiB2b2lkKSB8IG51bGw+KG51bGwpXG4gIGNvbnN0IFtpc1N0cmVhbWluZywgc2V0SXNTdHJlYW1pbmddID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IFtpc1dyaXRpbmcsIHNldElzV3JpdGluZ10gPSB1c2VTdGF0ZShmYWxzZSlcblxuICBjb25zdCBoYW5kbGVDbG9zZU1vZGFsID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGlmIChpc1N0cmVhbWluZyB8fCBpc1dyaXRpbmcpIHtcbiAgICAgIHNldFNob3dDbG9zZVdoaWxlR2VuZXJhdGluZ01vZGFsKHRydWUpXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICB1c2VGYXFzU3RvcmUuZ2V0U3RhdGUoKS5jbGVhckZhcXMoKVxuICAgIGhhbmRsZUNsb3NlPy4oKVxuICB9LCBbaGFuZGxlQ2xvc2UsIGlzU3RyZWFtaW5nLCBpc1dyaXRpbmddKVxuXG4gIGNvbnN0IGhhbmRsZURpc21pc3NDbG9zZVdoaWxlR2VuZXJhdGluZ01vZGFsID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIHNldFNob3dDbG9zZVdoaWxlR2VuZXJhdGluZ01vZGFsKGZhbHNlKVxuICB9LCBbXSlcblxuICBjb25zdCBoYW5kbGVDb25maXJtQ2xvc2VXaGlsZUdlbmVyYXRpbmcgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgc3RvcEdlbmVyYXRpb25GdW5jdGlvbj8uKClcbiAgICBzZXRTaG93Q2xvc2VXaGlsZUdlbmVyYXRpbmdNb2RhbChmYWxzZSlcbiAgICB1c2VGYXFzU3RvcmUuZ2V0U3RhdGUoKS5jbGVhckZhcXMoKVxuICAgIGhhbmRsZUNsb3NlPy4oKVxuICB9LCBbaGFuZGxlQ2xvc2UsIHN0b3BHZW5lcmF0aW9uRnVuY3Rpb25dKVxuXG4gIGNvbnN0IFtyZWZldGNoQ2hhdHMsIHNldFJlZmV0Y2hDaGF0c10gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgW2N1cnJlbnRPcHRpb24sIHNldEN1cnJlbnRPcHRpb25dID0gdXNlU3RhdGUob3B0aW9ucy5ob21lKVxuICBjb25zdCBbaGFzRXJyb3IsIHNldEhhc0Vycm9yXSA9IHVzZVN0YXRlKGZhbHNlKVxuICAvLyBFbiBwcm9qZWN0L2NsaWVudC90YXNrOiBlbCB1c3VhcmlvIHJlaW5pY2nDsyBlbCBjb250ZXh0byBkZWwgb3JjaGVzdHJhdG9yIChsbyBsaW1wacOzIHkgcGFzw7MgcG9yXG4gIC8vIGVsIHNlbGVjdG9yIGRlIGNvbnRleHRvcyByZWNpZW50ZXMpLiBIYWJpbGl0YSBlbCBib3TDs24gXCJ2b2x2ZXJcIiBlbiBlbCBob21lIHBhc28gMiBkZSBlc2FzXG4gIC8vIHNlY2Npb25lcy4gU2UgcmVzZXRlYSBhbCBjZXJyYXIvcmVhYnJpciBlbCBtb2RhbCAoZWwgY29tcG9uZW50ZSBzZSBkZXNtb250YSkuXG4gIGNvbnN0IFtkaWRSZXNldENvbnRleHRJblNlY3Rpb24sIHNldERpZFJlc2V0Q29udGV4dEluU2VjdGlvbl0gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgcHJldkhhc1Bpbm5lZENvbnRleHRSZWYgPSB1c2VSZWYoZmFsc2UpXG4gIGNvbnN0IGhhbmRsZXJzID0gdXNlTWVtbygoKSA9PiBidWlsZEhhbmRsZXJzKHNldEN1cnJlbnRPcHRpb24sIHNldEhhc0Vycm9yKSwgW10pXG4gIGNvbnN0IFtzaWRlYmFySGFzRXJyb3IsIHNldFNpZGViYXJIYXNFcnJvcl0gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgcmVzZXRTZWxlY3RlZENoYXRSZWYgPSB1c2VSZWY8KCgpID0+IHZvaWQpIHwgbnVsbD4obnVsbClcbiAgY29uc3QgbGFuZyA9IGkxOG4ubGFuZ3VhZ2UgPT09ICdicicgPyAncHQtYnInIDogaTE4bi5sYW5ndWFnZVxuXG4gIG1vbWVudC5sb2NhbGUobGFuZylcblxuICBjb25zdCB7XG4gICAgc2VsZWN0QWdlbnQsXG4gICAgY2xlYXJBZ2VudCxcbiAgICBzZWN0aW9uLFxuICAgIGFnZW50LFxuICAgIHByb2plY3QsXG4gICAgY2xpZW50LFxuICAgIHRhc2ssXG4gICAgY2hpcHNQcm9qZWN0LFxuICAgIHRvZ2dsZVdlYlNlYXJjaCxcbiAgICBpc1dlYlNlYXJjaEFjdGl2ZSxcbiAgICBzZXRDaGlwc1Byb2plY3QsXG4gICAgc2V0Q2xpZW50LFxuICAgIHNldFByb2plY3QsXG4gICAgYmFubmVyRW50cnlGYXEsXG4gICAgc2V0VGFzayxcbiAgfSA9IHVzZUdsb2JhbENvbnRleHQoKVxuXG4gIC8vIFotaW5kZXggcGFyYSB0b29sdGlwcyBlbiBzZWN0aW9uICd0YXNrJyAobW9kYWwgZmxvdGFudGUgZWxldmFkbylcbiAgY29uc3QgdG9vbHRpcFpJbmRleCA9IHVzZU1haWFUYXNrUGFuZWxaSW5kZXgoMTUwMCwgJ292ZXJsYXknKVxuXG4gIGNvbnN0IHtcbiAgICBhZ2VudHMsXG4gICAgbG9hZGluZyxcbiAgICBsb2FkaW5nTW9yZSxcbiAgICBlcnJvcjogYWdlbnRFcnJvcixcbiAgICBoYW5kbGVHZXRBZ2VudHMsXG4gICAgbG9hZE1vcmVBZ2VudHMsXG4gICAgc2VhcmNoQ3VzdG9tQWdlbnRzLFxuICAgIHNlYXJjaExvYWRpbmcsXG4gICAgYWRkQWdlbnQsXG4gICAgcmVtb3ZlQWdlbnQsXG4gICAgdXBkYXRlQWdlbnQsXG4gICAgdXBkYXRlQWdlbnRGYXZvcml0ZSxcbiAgICBzZWxlY3RGaXJzdEFnZW50LFxuICAgIHNvcnRBZ2VudHNMaXN0LFxuICB9ID0gdXNlR2V0QWdlbnRzKHsgc2VsZWN0QWdlbnQsIHNlY3Rpb24sIGFnZW50LCBoYW5kbGVHb0hvbWU6IGhhbmRsZXJzLmhvbWUgfSlcblxuICBjb25zdCBpc01BSUEgPSB2YWxpZGF0ZUlzTWFpYShhZ2VudCBhcyBBZ2VudClcblxuICBjb25zdCB1c2VySGFzUGVybWlzc2lvbnMgPVxuICAgICh1c2VyPy5wZXJtaXNzaW9ucz8uYWlfYWdlbnRzPy5jcmVhdGUgfHxcbiAgICAgIHVzZXI/LnBlcm1pc3Npb25zPy5haV9hZ2VudHM/LmVkaXQgfHxcbiAgICAgIHVzZXI/LnBlcm1pc3Npb25zPy5haV9hZ2VudHM/LmRlbGV0ZSkgJiZcbiAgICB3aW5kb3cuTUFJQV9DSEFUX0FJX0ZFQVRVUkVfQUNDRVNTX01VTFRJX0FHRU5UU1xuXG4gIGNvbnN0IGNvbXB1dGVkQ3VycmVudE9wdGlvbiA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGNvbnN0IGlzR2xvYmFsU3BlY2lhbGlzdCA9IGlzTUFJQSAmJiBhZ2VudD8uZW50aXR5ID09PSAnZ2xvYmFsJ1xuICAgIGNvbnN0IGlzUHJvamVjdFNwZWNpYWxpc3QgPSBpc01BSUEgJiYgKGFnZW50Py5lbnRpdHkgPT09ICdwcm9qZWN0JyB8fCBhZ2VudD8uZW50aXR5ID09IG51bGwpXG4gICAgY29uc3QgaXNDbGllbnRTcGVjaWFsaXN0ID0gaXNNQUlBICYmIGFnZW50Py5lbnRpdHkgPT09ICdjbGllbnQnXG4gICAgY29uc3QgaXNNYWlha2VyID0gaXNNYXJrZXRwbGFjZUdsb2JhbENsb25lQWdlbnQoYWdlbnQpXG5cbiAgICBpZiAoY3VycmVudE9wdGlvbiA9PT0gb3B0aW9ucy5teUFnZW50cyAmJiB3aW5kb3cuTUFJQV9DSEFUX0FJX0ZFQVRVUkVfQUNDRVNTX01VTFRJX0FHRU5UUykge1xuICAgICAgcmV0dXJuIG9wdGlvbnMubXlBZ2VudHNcbiAgICB9XG5cbiAgICAvLyBFbCBvcmNoZXN0cmF0b3IgKE1BSUEpIG11ZXN0cmEgc3UgaG9tZSBjb24gRkFRcy9hY2Npb25lcyBmcmVjdWVudGVzOyBlbCByZXN0byBkZVxuICAgIC8vIGxvcyBnbG9iYWwgc3BlY2lhbGlzdHMgKGNsb25lcyBnbG9iYWxlcyBuby1tYWlha2VyKSBzaWd1ZW4geWVuZG8gZGlyZWN0byBhbCBjaGF0LlxuICAgIGlmIChpc0dsb2JhbFNwZWNpYWxpc3QgJiYgIWlzTWFpYWtlciAmJiBhZ2VudD8udHlwZSAhPT0gJ29yY2hlc3RyYXRvcicgJiYgY3VycmVudE9wdGlvbiA9PT0gb3B0aW9ucy5ob21lKSB7XG4gICAgICByZXR1cm4gb3B0aW9ucy5jaGF0XG4gICAgfVxuXG4gICAgY29uc3Qgc2hvdWxkU2hvd1Byb2plY3RTZWxlY3RvciA9IGN1cnJlbnRPcHRpb24gIT09IG9wdGlvbnMuY2hhdCAmJiBpc1Byb2plY3RTcGVjaWFsaXN0ICYmICFwcm9qZWN0XG4gICAgY29uc3Qgc2hvdWxkU2hvd0NsaWVudFNlbGVjdG9yID0gY3VycmVudE9wdGlvbiAhPT0gb3B0aW9ucy5jaGF0ICYmIGlzQ2xpZW50U3BlY2lhbGlzdCAmJiAhY2xpZW50XG5cbiAgICBpZiAoc2hvdWxkU2hvd1Byb2plY3RTZWxlY3Rvcikge1xuICAgICAgcmV0dXJuIG9wdGlvbnMucHJvamVjdFNlbGVjdG9yXG4gICAgfVxuICAgIGlmIChzaG91bGRTaG93Q2xpZW50U2VsZWN0b3IpIHtcbiAgICAgIHJldHVybiBvcHRpb25zLmNsaWVudFNlbGVjdG9yXG4gICAgfVxuICAgIHJldHVybiBjdXJyZW50T3B0aW9uXG4gIH0sIFtjdXJyZW50T3B0aW9uLCBwcm9qZWN0LCBjbGllbnQsIGlzTUFJQSwgYWdlbnQ/LmVudGl0eSwgYWdlbnQ/Lm5hbWUsIGFnZW50Py50eXBlXSlcblxuICBjb25zdCBpc01haWFrZXJBZ2VudFNlbGVjdGVkID0gdXNlTWVtbygoKSA9PiBpc01hcmtldHBsYWNlR2xvYmFsQ2xvbmVBZ2VudChhZ2VudCksIFthZ2VudF0pXG5cbiAgY29uc3Qgc2lkZWJhckFnZW50c05hdkFjdGl2ZSA9IHVzZU1lbW8oKCk6ICdtYWlha2VyJyB8ICdteUFnZW50cycgfCBudWxsID0+IHtcbiAgICBpZiAoY29tcHV0ZWRDdXJyZW50T3B0aW9uID09PSBvcHRpb25zLm15QWdlbnRzKSByZXR1cm4gJ215QWdlbnRzJ1xuICAgIGlmIChpc01haWFrZXJBZ2VudFNlbGVjdGVkKSByZXR1cm4gJ21haWFrZXInXG4gICAgcmV0dXJuIG51bGxcbiAgfSwgW2NvbXB1dGVkQ3VycmVudE9wdGlvbiwgaXNNYWlha2VyQWdlbnRTZWxlY3RlZF0pXG5cbiAgLyogUmVhY3RpdmFyIGNvbiBsYSBmaWxhIOKAnE1pcyBhZ2VudGVz4oCdIGVuIFNpZGViYXI6IG15QWdlbnRzQ291bnQgcHJvcFxuICBjb25zdCBzaWRlYmFyTXlBZ2VudHNDb3VudCA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIHJldHVybiBhZ2VudHMuZGF0YS5maWx0ZXIoXG4gICAgICBhID0+ICEoYS50eXBlID09PSAnb3JjaGVzdHJhdG9yJyB8fCAoYS50eXBlID09PSAnY2xvbmUnICYmIGEuZW50aXR5ID09PSAnZ2xvYmFsJyAmJiAvKG1haWFrZXJ8bWFya2V0cGxhY2UpL2kudGVzdChhLm5hbWUgfHwgJycpKSlcbiAgICApXG4gICAgICAubGVuZ3RoXG4gIH0sIFthZ2VudHMuZGF0YV0pXG4gICovXG5cbiAgY29uc3QgYWdlbnRzRmV0Y2hlZFJlZiA9IHVzZVJlZihmYWxzZSlcblxuICBjb25zdCBzZWxlY3RvciA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoYCMke0lEX01PREFMX0NIQVRfQUdFTlR9YClcblxuICAvLyBUYXNrIHBhbmVsLCBwbGFubmVyIHkgYmFubmVyIGRlIHByb3llY3RvIGFicmVuIGVuIGZsb3RhbnRlIHBvciBkZWZhdWx0IChubyB0YXBhciBlbCBjb250ZXh0byBkZXRyw6FzKS5cbiAgLy8gRnVlcmEgZGUgZXNvcyBjb250ZXh0b3Mgc2UgcmVzcGV0YSBsYSBwcmVmZXJlbmNpYSBndWFyZGFkYSBlbiBsb2NhbFN0b3JhZ2UuXG4gIGNvbnN0IFtsYXlvdXRNb2RlLCBzZXRMYXlvdXRNb2RlXSA9IHVzZVN0YXRlPE1haWFDaGF0TW9kYWxMYXlvdXRNb2RlPigoKSA9PlxuICAgIHJlc29sdmVJbml0aWFsTWFpYUNoYXRMYXlvdXRNb2RlKHsgc2VjdGlvbiwgYmFubmVyRW50cnlGYXEgfSlcbiAgKVxuXG4gIGNvbnN0IGhhbmRsZUxheW91dE1vZGVDaGFuZ2UgPSB1c2VDYWxsYmFjaygobW9kZTogTWFpYUNoYXRNb2RhbExheW91dE1vZGUpID0+IHtcbiAgICBzZXRTdG9yZWRNYWlhQ2hhdExheW91dE1vZGUobW9kZSlcbiAgICBzZXRMYXlvdXRNb2RlKG1vZGUpXG4gIH0sIFtdKVxuICBjb25zdCBleHBhbmRlZCA9IGxheW91dE1vZGUgPT09ICdmdWxsc2NyZWVuJ1xuICBjb25zdCBpc0Zsb2F0aW5nID0gbGF5b3V0TW9kZSA9PT0gJ2Zsb2F0aW5nJ1xuICBjb25zdCBjb250ZW50V3JhcHBlclJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbClcbiAgY29uc3QgW2RyYWdQb3NpdGlvbiwgc2V0RHJhZ1Bvc2l0aW9uXSA9IHVzZVN0YXRlPHsgeDogbnVtYmVyOyB5OiBudW1iZXIgfSB8IG51bGw+KG51bGwpXG4gIGNvbnN0IHsgdGlsdE1vdGlvbiwgc3RhcnRQb2ludGVyVHJhY2tpbmcsIHNhbXBsZVBvaW50ZXJNb3ZlLCBlbmRQb2ludGVyVHJhY2tpbmcgfSA9XG4gICAgdXNlRmxvYXRpbmdQYW5lbERyYWdUaWx0KGlzRmxvYXRpbmcpXG4gIGNvbnN0IGRyYWdTdGF0ZVJlZiA9IHVzZVJlZjx7XG4gICAgcG9pbnRlcklkOiBudW1iZXJcbiAgICBvZmZzZXRYOiBudW1iZXJcbiAgICBvZmZzZXRZOiBudW1iZXJcbiAgfSB8IG51bGw+KG51bGwpXG5cbiAgY29uc3QgY2xhbXBEcmFnUG9zaXRpb24gPSB1c2VDYWxsYmFjaygoeDogbnVtYmVyLCB5OiBudW1iZXIpID0+IHtcbiAgICBjb25zdCBjb250ZW50V3JhcHBlciA9IGNvbnRlbnRXcmFwcGVyUmVmLmN1cnJlbnRcbiAgICBpZiAoIWNvbnRlbnRXcmFwcGVyKSB7XG4gICAgICByZXR1cm4geyB4LCB5IH1cbiAgICB9XG5cbiAgICBjb25zdCB7IHdpZHRoLCBoZWlnaHQgfSA9IGNvbnRlbnRXcmFwcGVyLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpXG4gICAgY29uc3Qgb2Zmc2V0ID0gMTZcbiAgICBjb25zdCBtYXhYID0gTWF0aC5tYXgob2Zmc2V0LCB3aW5kb3cuaW5uZXJXaWR0aCAtIHdpZHRoIC0gb2Zmc2V0KVxuICAgIGNvbnN0IG1heFkgPSBNYXRoLm1heChvZmZzZXQsIHdpbmRvdy5pbm5lckhlaWdodCAtIGhlaWdodCAtIG9mZnNldClcblxuICAgIHJldHVybiB7XG4gICAgICB4OiBNYXRoLm1pbihNYXRoLm1heCh4LCBvZmZzZXQpLCBtYXhYKSxcbiAgICAgIHk6IE1hdGgubWluKE1hdGgubWF4KHksIG9mZnNldCksIG1heFkpLFxuICAgIH1cbiAgfSwgW10pXG5cbiAgdXNlTGF5b3V0RWZmZWN0KCgpID0+IHtcbiAgICBpZiAobGF5b3V0TW9kZSAhPT0gJ2Zsb2F0aW5nJykge1xuICAgICAgc2V0RHJhZ1Bvc2l0aW9uKG51bGwpXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBzZXREcmFnUG9zaXRpb24ocHJldiA9PiB7XG4gICAgICBpZiAocHJldikge1xuICAgICAgICByZXR1cm4gY2xhbXBEcmFnUG9zaXRpb24ocHJldi54LCBwcmV2LnkpXG4gICAgICB9XG4gICAgICBjb25zdCBwYWQgPSAxNlxuICAgICAgY29uc3QgeCA9IHdpbmRvdy5pbm5lcldpZHRoIC0gZ2V0TWFpYUZsb2F0aW5nUGFuZWxXaWR0aFB4KCkgLSBwYWRcbiAgICAgIHJldHVybiBjbGFtcERyYWdQb3NpdGlvbih4LCBwYWQpXG4gICAgfSlcbiAgfSwgW2xheW91dE1vZGUsIGNsYW1wRHJhZ1Bvc2l0aW9uXSlcblxuICBjb25zdCBoYW5kbGVEcmFnRW5kID0gdXNlQ2FsbGJhY2soXG4gICAgKGV2ZW50OiBSZWFjdFBvaW50ZXJFdmVudDxIVE1MRGl2RWxlbWVudD4pID0+IHtcbiAgICAgIGVuZFBvaW50ZXJUcmFja2luZygpXG4gICAgICBpZiAoZHJhZ1N0YXRlUmVmLmN1cnJlbnQ/LnBvaW50ZXJJZCAhPT0gZXZlbnQucG9pbnRlcklkKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBkcmFnU3RhdGVSZWYuY3VycmVudCA9IG51bGxcbiAgICAgIGRvY3VtZW50LmJvZHkuc3R5bGUudXNlclNlbGVjdCA9ICcnXG4gICAgICBkb2N1bWVudC5ib2R5LnN0eWxlLmN1cnNvciA9ICcnXG4gICAgfSxcbiAgICBbZW5kUG9pbnRlclRyYWNraW5nXVxuICApXG5cbiAgY29uc3QgaGFuZGxlRHJhZ01vdmUgPSB1c2VDYWxsYmFjayhcbiAgICAoZXZlbnQ6IFJlYWN0UG9pbnRlckV2ZW50PEhUTUxEaXZFbGVtZW50PikgPT4ge1xuICAgICAgY29uc3QgZHJhZ1N0YXRlID0gZHJhZ1N0YXRlUmVmLmN1cnJlbnRcbiAgICAgIGlmICghZHJhZ1N0YXRlIHx8IGRyYWdTdGF0ZS5wb2ludGVySWQgIT09IGV2ZW50LnBvaW50ZXJJZCkge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgc2FtcGxlUG9pbnRlck1vdmUoZXZlbnQuY2xpZW50WCwgZXZlbnQuY2xpZW50WSlcblxuICAgICAgY29uc3QgbmV4dFBvc2l0aW9uID0gY2xhbXBEcmFnUG9zaXRpb24oZXZlbnQuY2xpZW50WCAtIGRyYWdTdGF0ZS5vZmZzZXRYLCBldmVudC5jbGllbnRZIC0gZHJhZ1N0YXRlLm9mZnNldFkpXG5cbiAgICAgIHNldERyYWdQb3NpdGlvbihwcmV2ID0+IHtcbiAgICAgICAgaWYgKHByZXYgJiYgcHJldi54ID09PSBuZXh0UG9zaXRpb24ueCAmJiBwcmV2LnkgPT09IG5leHRQb3NpdGlvbi55KSB7XG4gICAgICAgICAgcmV0dXJuIHByZXZcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbmV4dFBvc2l0aW9uXG4gICAgICB9KVxuICAgIH0sXG4gICAgW2NsYW1wRHJhZ1Bvc2l0aW9uLCBzYW1wbGVQb2ludGVyTW92ZV1cbiAgKVxuXG4gIGNvbnN0IHJlc29sdmVkRHJhZ1Bvc2l0aW9uID0gdXNlTWVtbygoKSA9PiB7XG4gICAgaWYgKGxheW91dE1vZGUgIT09ICdmbG9hdGluZycpIHtcbiAgICAgIHJldHVybiBkcmFnUG9zaXRpb25cbiAgICB9XG4gICAgaWYgKGRyYWdQb3NpdGlvbikge1xuICAgICAgcmV0dXJuIGRyYWdQb3NpdGlvblxuICAgIH1cbiAgICBjb25zdCBwYWQgPSAxNlxuICAgIGNvbnN0IHggPSB0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyA/IHdpbmRvdy5pbm5lcldpZHRoIC0gZ2V0TWFpYUZsb2F0aW5nUGFuZWxXaWR0aFB4KCkgLSBwYWQgOiBwYWRcbiAgICByZXR1cm4gY2xhbXBEcmFnUG9zaXRpb24oeCwgcGFkKVxuICB9LCBbbGF5b3V0TW9kZSwgZHJhZ1Bvc2l0aW9uLCBjbGFtcERyYWdQb3NpdGlvbl0pXG5cbiAgY29uc3QgaGFuZGxlRHJhZ1N0YXJ0ID0gdXNlQ2FsbGJhY2soXG4gICAgKGV2ZW50OiBSZWFjdFBvaW50ZXJFdmVudDxIVE1MRGl2RWxlbWVudD4pID0+IHtcbiAgICAgIGlmICghaXNGbG9hdGluZyB8fCBldmVudC5idXR0b24gIT09IDApIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHRhcmdldCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudFxuICAgICAgaWYgKHRhcmdldC5jbG9zZXN0KCdidXR0b24sIGEsIGlucHV0LCB0ZXh0YXJlYSwgc2VsZWN0LCBbcm9sZT1cImJ1dHRvblwiXSwgW2RhdGEtbm8tZHJhZz1cInRydWVcIl0nKSkge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgY29uc3QgY29udGVudFdyYXBwZXIgPSBjb250ZW50V3JhcHBlclJlZi5jdXJyZW50XG4gICAgICBpZiAoIWNvbnRlbnRXcmFwcGVyKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBjb25zdCByZWN0ID0gY29udGVudFdyYXBwZXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KClcbiAgICAgIGNvbnN0IGluaXRpYWxQb3NpdGlvbiA9IHJlc29sdmVkRHJhZ1Bvc2l0aW9uID8/IGNsYW1wRHJhZ1Bvc2l0aW9uKHJlY3QubGVmdCwgcmVjdC50b3ApXG4gICAgICBjb25zdCBwb2ludGVyT2Zmc2V0WCA9IGV2ZW50LmNsaWVudFggLSBpbml0aWFsUG9zaXRpb24ueFxuICAgICAgY29uc3QgcG9pbnRlck9mZnNldFkgPSBldmVudC5jbGllbnRZIC0gaW5pdGlhbFBvc2l0aW9uLnlcblxuICAgICAgc2V0RHJhZ1Bvc2l0aW9uKGluaXRpYWxQb3NpdGlvbilcbiAgICAgIGRyYWdTdGF0ZVJlZi5jdXJyZW50ID0ge1xuICAgICAgICBwb2ludGVySWQ6IGV2ZW50LnBvaW50ZXJJZCxcbiAgICAgICAgb2Zmc2V0WDogcG9pbnRlck9mZnNldFgsXG4gICAgICAgIG9mZnNldFk6IHBvaW50ZXJPZmZzZXRZLFxuICAgICAgfVxuXG4gICAgICBldmVudC5jdXJyZW50VGFyZ2V0LnNldFBvaW50ZXJDYXB0dXJlKGV2ZW50LnBvaW50ZXJJZClcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KClcblxuICAgICAgZG9jdW1lbnQuYm9keS5zdHlsZS51c2VyU2VsZWN0ID0gJ25vbmUnXG4gICAgICBkb2N1bWVudC5ib2R5LnN0eWxlLmN1cnNvciA9ICdncmFiYmluZydcbiAgICAgIGFtcGxpdHVkRXZlbnQoRVZFTlRTLmFpQ2hhdERyYWdnYWJsZSlcbiAgICAgIHN0YXJ0UG9pbnRlclRyYWNraW5nKGV2ZW50LmNsaWVudFgsIGV2ZW50LmNsaWVudFkpXG4gICAgfSxcbiAgICBbY2xhbXBEcmFnUG9zaXRpb24sIGlzRmxvYXRpbmcsIHJlc29sdmVkRHJhZ1Bvc2l0aW9uLCBzdGFydFBvaW50ZXJUcmFja2luZ11cbiAgKVxuXG4gIGNvbnN0IHN0YXJ0Q2hhdCA9IHVzZUNhbGxiYWNrKFxuICAgIChcbiAgICAgIG1lc3NhZ2U/OiBzdHJpbmcsXG4gICAgICBhdHRhY2htZW50cz86IEF0dGFjaG1lbnRGaWxlW10sXG4gICAgICBmYXFJZD86IHN0cmluZyxcbiAgICAgIGFnZW50U3VnZ2VzdGlvbklkPzogc3RyaW5nLFxuICAgICAgbWVudGlvbnM/OiBDb250ZXh0TWVudGlvbltdLFxuICAgICAgZnVhSWQ/OiBzdHJpbmcsXG4gICAgICBzY0lkPzogc3RyaW5nLFxuICAgICAgY29udGV4dERhdGE/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPlxuICAgICkgPT4ge1xuICAgICAgaWYgKHNpZGViYXJIYXNFcnJvcikge1xuICAgICAgICBzZXRTaWRlYmFySGFzRXJyb3IoZmFsc2UpXG4gICAgICB9XG4gICAgICBzZXRJbml0aWFsQ2hhdElkKG51bGwpXG4gICAgICBzZXROZXdDaGF0S2V5KHByZXYgPT4gcHJldiArIDEpXG4gICAgICBzZXRVc2VySW5pdGlhbE1lc3NhZ2Uoe1xuICAgICAgICBtZXNzYWdlOiBtZXNzYWdlIHx8ICcnLFxuICAgICAgICBhdHRhY2htZW50czogYXR0YWNobWVudHMgfHwgW10sXG4gICAgICAgIC4uLihmYXFJZCA/IHsgZmFxSWQgfSA6IHt9KSxcbiAgICAgICAgLi4uKGFnZW50U3VnZ2VzdGlvbklkID8geyBhZ2VudFN1Z2dlc3Rpb25JZCB9IDoge30pLFxuICAgICAgICAuLi4obWVudGlvbnMgJiYgbWVudGlvbnMubGVuZ3RoID4gMCA/IHsgbWVudGlvbnMgfSA6IHt9KSxcbiAgICAgICAgLi4uKGZ1YUlkID8geyBmdWFJZCB9IDoge30pLFxuICAgICAgICAuLi4oc2NJZCA/IHsgc2NJZCB9IDoge30pLFxuICAgICAgICAuLi4oY29udGV4dERhdGEgPyB7IGNvbnRleHREYXRhIH0gOiB7fSksXG4gICAgICB9KVxuICAgICAgaGFuZGxlcnMuY2hhdCgpXG4gICAgfSxcbiAgICBbaGFuZGxlcnMsIHNpZGViYXJIYXNFcnJvcl1cbiAgKVxuXG4gIGNvbnN0IGJhbm5lckZhcUF1dG9TZW50UmVmID0gdXNlUmVmKGZhbHNlKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgZW50aXR5UmVhZHkgPSBzZWN0aW9uID09PSAncHJvamVjdCcgPyBCb29sZWFuKHByb2plY3Q/LmlkKSA6IHNlY3Rpb24gPT09ICdjbGllbnQnID8gQm9vbGVhbihjbGllbnQ/LmlkKSA6IHRydWVcblxuICAgIGlmICghYmFubmVyRW50cnlGYXE/LmZhcVRpdGxlPy50cmltKCkgfHwgYmFubmVyRmFxQXV0b1NlbnRSZWYuY3VycmVudCB8fCBsb2FkaW5nIHx8ICFhZ2VudD8uaWQgfHwgIWVudGl0eVJlYWR5KSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBiYW5uZXJGYXFBdXRvU2VudFJlZi5jdXJyZW50ID0gdHJ1ZVxuICAgIHN0YXJ0Q2hhdChcbiAgICAgIGJhbm5lckVudHJ5RmFxLmZhcVRpdGxlLFxuICAgICAgW10sXG4gICAgICBiYW5uZXJFbnRyeUZhcS5mYXFJZCxcbiAgICAgIHVuZGVmaW5lZCxcbiAgICAgIHVuZGVmaW5lZCxcbiAgICAgIHVuZGVmaW5lZCxcbiAgICAgIHVuZGVmaW5lZCxcbiAgICAgIGJhbm5lckVudHJ5RmFxLmNvbnRleHREYXRhXG4gICAgKVxuICB9LCBbXG4gICAgYmFubmVyRW50cnlGYXE/LmZhcUlkLFxuICAgIGJhbm5lckVudHJ5RmFxPy5mYXFUaXRsZSxcbiAgICBiYW5uZXJFbnRyeUZhcT8uY29udGV4dERhdGEsXG4gICAgbG9hZGluZyxcbiAgICBhZ2VudD8uaWQsXG4gICAgYWdlbnQ/LmVudGl0eSxcbiAgICBwcm9qZWN0Py5pZCxcbiAgICBjbGllbnQ/LmlkLFxuICAgIHNlY3Rpb24sXG4gICAgc3RhcnRDaGF0LFxuICBdKVxuXG4gIGNvbnN0IGdvVG9DaGF0ID0gdXNlQ2FsbGJhY2soXG4gICAgKGNoYXQ6IGFueSkgPT4ge1xuICAgICAgc2V0VXNlckluaXRpYWxNZXNzYWdlKHsgbWVzc2FnZTogJycsIGF0dGFjaG1lbnRzOiBbXSB9KVxuICAgICAgc2V0SW5pdGlhbENoYXRJZChjaGF0LnNlc3Npb25FeHRlcm5hbElkKVxuICAgICAgY29uc3Qgc2VsZWN0ZWRBZ2VudCA9IGFnZW50cy5kYXRhLmZpbmQoYWdlbnRJdGVtID0+IGFnZW50SXRlbS5pZCA9PT0gY2hhdC5hZ2VudElkKVxuICAgICAgaWYgKHNlbGVjdGVkQWdlbnQpIHtcbiAgICAgICAgc2VsZWN0QWdlbnQoc2VsZWN0ZWRBZ2VudClcbiAgICAgIH1cbiAgICAgIC8vIERpc3BhdGNoIGV2ZW50IHRvIGNsZWFyIHRoZSBpbnB1dCB0ZXh0YXJlYVxuICAgICAgZG9jdW1lbnQuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoJ2NoYXQtc2Vzc2lvbi1jaGFuZ2VkJykpXG4gICAgICBoYW5kbGVycy5jaGF0KClcbiAgICB9LFxuICAgIFtoYW5kbGVycywgYWdlbnRzLCBzZWxlY3RBZ2VudF1cbiAgKVxuXG4gIGNvbnN0IGhhbmRsZVNlbmRNZXNzYWdlUmVhZHkgPSB1c2VDYWxsYmFjayhcbiAgICAoXG4gICAgICBzZW5kTWVzc2FnZTogKFxuICAgICAgICBtZXNzYWdlOiBzdHJpbmcsXG4gICAgICAgIGF0dGFjaG1lbnRzPzogQXR0YWNobWVudEZpbGVbXSxcbiAgICAgICAgZmFxSWQ/OiBzdHJpbmcsXG4gICAgICAgIGFnZW50U3VnZ2VzdGlvbklkPzogc3RyaW5nLFxuICAgICAgICBtZW50aW9ucz86IENvbnRleHRNZW50aW9uW10sXG4gICAgICAgIGZ1YUlkPzogc3RyaW5nLFxuICAgICAgICBzY0lkPzogc3RyaW5nXG4gICAgICApID0+IHZvaWQsXG4gICAgICBzdG9wR2VuZXJhdGlvbjogKCkgPT4gdm9pZCxcbiAgICAgIHN0cmVhbWluZzogYm9vbGVhbixcbiAgICAgIHdyaXRpbmc6IGJvb2xlYW5cbiAgICApID0+IHtcbiAgICAgIHNldFNlbmRNZXNzYWdlRnVuY3Rpb24oKCkgPT4gc2VuZE1lc3NhZ2UpXG4gICAgICBzZXRTdG9wR2VuZXJhdGlvbkZ1bmN0aW9uKCgpID0+IHN0b3BHZW5lcmF0aW9uKVxuICAgICAgc2V0SXNTdHJlYW1pbmcoc3RyZWFtaW5nKVxuICAgICAgc2V0SXNXcml0aW5nKHdyaXRpbmcpXG4gICAgfSxcbiAgICBbXVxuICApXG5cbiAgY29uc3QgaGFuZGxlU2VuZE1lc3NhZ2UgPSB1c2VDYWxsYmFjayhcbiAgICAoXG4gICAgICBtZXNzYWdlOiBzdHJpbmcsXG4gICAgICBhdHRhY2htZW50cz86IEF0dGFjaG1lbnRGaWxlW10sXG4gICAgICBmYXFJZD86IHN0cmluZyxcbiAgICAgIGFnZW50U3VnZ2VzdGlvbklkPzogc3RyaW5nLFxuICAgICAgbWVudGlvbnM/OiBDb250ZXh0TWVudGlvbltdLFxuICAgICAgZnVhSWQ/OiBzdHJpbmcsXG4gICAgICBzY0lkPzogc3RyaW5nXG4gICAgKSA9PiB7XG4gICAgICBpZiAoc2lkZWJhckhhc0Vycm9yKSB7XG4gICAgICAgIHNldFNpZGViYXJIYXNFcnJvcihmYWxzZSlcbiAgICAgIH1cbiAgICAgIGlmIChzZW5kTWVzc2FnZUZ1bmN0aW9uICYmIGNvbXB1dGVkQ3VycmVudE9wdGlvbiA9PT0gb3B0aW9ucy5jaGF0KSB7XG4gICAgICAgIHNlbmRNZXNzYWdlRnVuY3Rpb24obWVzc2FnZSwgYXR0YWNobWVudHMsIGZhcUlkLCBhZ2VudFN1Z2dlc3Rpb25JZCwgbWVudGlvbnMsIGZ1YUlkLCBzY0lkKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc3RhcnRDaGF0KG1lc3NhZ2UsIGF0dGFjaG1lbnRzLCBmYXFJZCwgYWdlbnRTdWdnZXN0aW9uSWQsIG1lbnRpb25zLCBmdWFJZCwgc2NJZClcbiAgICAgIH1cbiAgICB9LFxuICAgIFtzZW5kTWVzc2FnZUZ1bmN0aW9uLCBzdGFydENoYXQsIGNvbXB1dGVkQ3VycmVudE9wdGlvbiwgc2lkZWJhckhhc0Vycm9yXVxuICApXG5cbiAgY29uc3QgaGFuZGxlR29Ib21lID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIC8vIFNpIGVzdGFtb3MgZW4gdW5hIGNvbnZlcnNhY2nDs24geSB2YW1vcyBhIGhvbWUsIHJlc2V0ZWFyIGluaXRpYWxDaGF0SWQgeSBpbmNyZW1lbnRhciBuZXdDaGF0S2V5XG4gICAgaWYgKGN1cnJlbnRPcHRpb24gPT09IG9wdGlvbnMuY2hhdCkge1xuICAgICAgc3RvcEdlbmVyYXRpb25GdW5jdGlvbj8uKClcbiAgICAgIHNldEluaXRpYWxDaGF0SWQobnVsbClcbiAgICAgIHNldE5ld0NoYXRLZXkocHJldiA9PiBwcmV2ICsgMSlcbiAgICAgIHNldElzV3JpdGluZyhmYWxzZSlcbiAgICAgIC8vIE5vIGJvcnJhciBlbCBjbGllbnRlIHNpIGVzIGFnZW50ZSBkZSBjbGllbnRlcyAoaWd1YWwgcXVlIGVsIHByb3llY3RvIHNlIG1hbnRpZW5lKVxuICAgICAgaWYgKGFnZW50Py5lbnRpdHkgIT09ICdjbGllbnQnKSB7XG4gICAgICAgIHNldENsaWVudD8uKG51bGwpXG4gICAgICB9XG4gICAgICBpZiAoc2VjdGlvbiAhPT0gJ3Rhc2snKSB7XG4gICAgICAgIHNldFRhc2s/LihudWxsKVxuICAgICAgfVxuICAgIH1cbiAgICBpZiAoXG4gICAgICAoIWFnZW50IHx8IGFnZW50Py5pc19kZWxldGVkIHx8IGFnZW50Py5oYXNfbm90X3Blcm1pc3Npb25zIHx8IGFnZW50Py5oYXNfbm90X2FjY2VzcyB8fCBhZ2VudD8ucHJvamVjdF9kZWxldGVkKSAmJlxuICAgICAgYWdlbnRzLmRhdGEubGVuZ3RoID4gMFxuICAgICkge1xuICAgICAgc2VsZWN0QWdlbnQoYWdlbnRzLmRhdGFbMF0pXG4gICAgfVxuICAgIC8vIE9yY2hlc3RyYXRvciBlbiBob21lIGdsb2JhbCAoaGVhZGVyL3BsYW5uZXIpOiBhbCBpbmljaWFyIHVuIGNoYXQgbnVldm8gc2UgZGViZSB2b2x2ZXIgYWwgcGFzbyAxXG4gICAgLy8gKGxpc3RhIGRlIGNvbnRleHRvcyByZWNpZW50ZXMpLCBwb3IgbG8gcXVlIGhheSBxdWUgbGltcGlhciB0b2RvIGVsIGNvbnRleHRvIHBpbmVhZG8uXG4gICAgaWYgKGlzR2xvYmFsTWFpYVNlY3Rpb24oc2VjdGlvbikgJiYgYWdlbnQ/LnR5cGUgPT09ICdvcmNoZXN0cmF0b3InKSB7XG4gICAgICBzZXRQcm9qZWN0KG51bGwpXG4gICAgICBzZXRDbGllbnQ/LihudWxsKVxuICAgICAgc2V0VGFzaz8uKG51bGwpXG4gICAgfVxuICAgIHNldEN1cnJlbnRPcHRpb24ob3B0aW9ucy5ob21lKVxuICAgIHNldENoaXBzUHJvamVjdChudWxsKVxuICAgIHNldEhhc0Vycm9yKGZhbHNlKVxuICAgIGlzV2ViU2VhcmNoQWN0aXZlICYmIHRvZ2dsZVdlYlNlYXJjaCgpXG4gICAgaWYgKHJlc2V0U2VsZWN0ZWRDaGF0UmVmLmN1cnJlbnQpIHtcbiAgICAgIHJlc2V0U2VsZWN0ZWRDaGF0UmVmLmN1cnJlbnQoKVxuICAgIH1cbiAgfSwgW1xuICAgIG9wdGlvbnMuaG9tZSxcbiAgICBvcHRpb25zLmNoYXQsXG4gICAgY3VycmVudE9wdGlvbixcbiAgICBpc1dlYlNlYXJjaEFjdGl2ZSxcbiAgICB0b2dnbGVXZWJTZWFyY2gsXG4gICAgYWdlbnQsXG4gICAgYWdlbnRzLFxuICAgIHNlbGVjdEFnZW50LFxuICAgIHNldFByb2plY3QsXG4gICAgc2V0Q2xpZW50LFxuICAgIHNldFRhc2ssXG4gICAgc3RvcEdlbmVyYXRpb25GdW5jdGlvbixcbiAgICBzZWN0aW9uLFxuICBdKVxuXG4gIGNvbnN0IGhhbmRsZVJlc2V0Q2hhdCA9IHVzZUNhbGxiYWNrKGFzeW5jICgpID0+IHtcbiAgICBzZXRVc2VySW5pdGlhbE1lc3NhZ2UoeyBtZXNzYWdlOiAnJywgYXR0YWNobWVudHM6IFtdIH0pXG4gICAgc2V0SW5pdGlhbENoYXRJZChudWxsKVxuICAgIC8vIERpc3BhdGNoIGV2ZW50IHRvIGNsZWFyIHRoZSBpbnB1dCB0ZXh0YXJlYVxuICAgIGRvY3VtZW50LmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCdjaGF0LXNlc3Npb24tY2hhbmdlZCcpKVxuICAgIGhhbmRsZUdvSG9tZSgpXG4gIH0sIFtoYW5kbGVHb0hvbWVdKVxuXG4gIC8vIEJvdMOzbiBcInZvbHZlclwiIGRlbCBoZWFkZXIgKHNvbG8gb3JjaGVzdHJhdG9yKTpcbiAgLy8gLSBEZXNkZSBlbCBjaGF0IChoZWFkZXIgbyBwcm9qZWN0L2NsaWVudC90YXNrKTogaW5pY2lhIHVuYSBjb252ZXJzYWNpw7NuIG51ZXZhIGNvbnNlcnZhbmRvIGVsXG4gIC8vICAgY29udGV4dG8gcGluZWFkbyB5IHZ1ZWx2ZSBhbCBob21lIChwYXNvIDIgY29uIEZBUXMvRlVBcykuXG4gIC8vIC0gRW4gZWwgaG9tZSBwYXNvIDIgKEZBUXMvRlVBcyBjb24gY29udGV4dG8pOiBsaW1waWEgZWwgY29udGV4dG8gcGluZWFkbyB5IHZ1ZWx2ZSBhbCBwYXNvIDFcbiAgLy8gICAoc2VsZWN0b3IgZGUgY29udGV4dG9zIHJlY2llbnRlcykuIEVuIGhlYWRlciBzaWVtcHJlOyBlbiBwcm9qZWN0L2NsaWVudC90YXNrIHNvbG8gc2kgZWxcbiAgLy8gICB1c3VhcmlvIHJlaW5pY2nDsyBlbCBjb250ZXh0byAoZGlkUmVzZXRDb250ZXh0SW5TZWN0aW9uKS5cbiAgY29uc3QgaGFuZGxlQmFjayA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBjb25zdCB0byA9IHJlc29sdmVBaUNoYXRCYWNrRGVzdGluYXRpb24oc2VjdGlvbiwgYWdlbnQ/LnR5cGUsIGNvbXB1dGVkQ3VycmVudE9wdGlvbiwgb3B0aW9ucy5ob21lKVxuICAgIGFtcGxpdHVkRXZlbnQoRVZFTlRTLmFpQ2hhdEJhY2ssIHsgdG8gfSlcblxuICAgIC8vIERlc2RlIGVsIGNoYXQg4oaSIG51ZXZhIGNvbnZlcnNhY2nDs24gU0lOIGJvcnJhciBlbCBjb250ZXh0byBwaW5lYWRvLCB2b2x2aWVuZG8gYWwgaG9tZS5cbiAgICBpZiAoY29tcHV0ZWRDdXJyZW50T3B0aW9uID09PSBvcHRpb25zLmNoYXQpIHtcbiAgICAgIHN0b3BHZW5lcmF0aW9uRnVuY3Rpb24/LigpXG4gICAgICBzZXRJc1dyaXRpbmcoZmFsc2UpXG4gICAgICBzZXRVc2VySW5pdGlhbE1lc3NhZ2UoeyBtZXNzYWdlOiAnJywgYXR0YWNobWVudHM6IFtdIH0pXG4gICAgICBzZXRJbml0aWFsQ2hhdElkKG51bGwpXG4gICAgICBzZXROZXdDaGF0S2V5KHByZXYgPT4gcHJldiArIDEpXG4gICAgICBzZXRIYXNFcnJvcihmYWxzZSlcbiAgICAgIGlzV2ViU2VhcmNoQWN0aXZlICYmIHRvZ2dsZVdlYlNlYXJjaCgpXG4gICAgICBpZiAocmVzZXRTZWxlY3RlZENoYXRSZWYuY3VycmVudCkge1xuICAgICAgICByZXNldFNlbGVjdGVkQ2hhdFJlZi5jdXJyZW50KClcbiAgICAgIH1cbiAgICAgIHNldEN1cnJlbnRPcHRpb24ob3B0aW9ucy5ob21lKVxuICAgICAgZG9jdW1lbnQuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoJ2NoYXQtc2Vzc2lvbi1jaGFuZ2VkJykpXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICAvLyBIb21lIHBhc28gMiAoY29udGV4dG8gcGluZWFkbykg4oaSIGxpbXBpYXIgZWwgY29udGV4dG8geSB2b2x2ZXIgYWwgcGFzbyAxIChjb250ZXh0b3MgcmVjaWVudGVzKS5cbiAgICBpZiAoY29tcHV0ZWRDdXJyZW50T3B0aW9uID09PSBvcHRpb25zLmhvbWUgJiYgKGlzR2xvYmFsTWFpYVNlY3Rpb24oc2VjdGlvbikgfHwgZGlkUmVzZXRDb250ZXh0SW5TZWN0aW9uKSkge1xuICAgICAgc2V0UHJvamVjdChudWxsKVxuICAgICAgc2V0Q2xpZW50Py4obnVsbClcbiAgICAgIHNldFRhc2s/LihudWxsKVxuICAgICAgc2V0Q2hpcHNQcm9qZWN0KG51bGwpXG4gICAgfVxuICB9LCBbXG4gICAgY29tcHV0ZWRDdXJyZW50T3B0aW9uLFxuICAgIHNlY3Rpb24sXG4gICAgYWdlbnQ/LnR5cGUsXG4gICAgYW1wbGl0dWRFdmVudCxcbiAgICBvcHRpb25zLmhvbWUsXG4gICAgc3RvcEdlbmVyYXRpb25GdW5jdGlvbixcbiAgICBpc1dlYlNlYXJjaEFjdGl2ZSxcbiAgICB0b2dnbGVXZWJTZWFyY2gsXG4gICAgZGlkUmVzZXRDb250ZXh0SW5TZWN0aW9uLFxuICAgIHNldFByb2plY3QsXG4gICAgc2V0Q2xpZW50LFxuICAgIHNldFRhc2ssXG4gICAgc2V0Q2hpcHNQcm9qZWN0LFxuICBdKVxuXG4gIC8vIERldGVjdGEgZWwgcmVpbmljaW8gZGUgY29udGV4dG8gZW4gcHJvamVjdC9jbGllbnQvdGFzazogY29udGV4dG8gcGluZWFkbyDihpIgdmFjw61vIGNvbiBlbFxuICAvLyBvcmNoZXN0cmF0b3IgKHAuIGVqLiBhbCByZXNlbGVjY2lvbmFyIE1BSUEgZW4gZWwgbGlzdGFkbykuIFNvbG8gbGEgdHJhbnNpY2nDs24gY3VlbnRhLCBhc8OtIHVuYVxuICAvLyBhcGVydHVyYSBmcmVzY2EgKGNvbnRleHRvIHBpbmVhZG8gZGVzZGUgbGEgc2VjY2nDs24pIG5vIGxvIGFjdGl2YS5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBwaW5uZWQgPSAhISh0YXNrPy5pZCB8fCBjaGlwc1Byb2plY3Q/LnByb2plY3RJZCB8fCBjbGllbnQ/LmlkIHx8IHByb2plY3Q/LmlkKVxuICAgIGNvbnN0IHdhc1Bpbm5lZCA9IHByZXZIYXNQaW5uZWRDb250ZXh0UmVmLmN1cnJlbnRcbiAgICBwcmV2SGFzUGlubmVkQ29udGV4dFJlZi5jdXJyZW50ID0gcGlubmVkXG4gICAgaWYgKCFpc0dsb2JhbE1haWFTZWN0aW9uKHNlY3Rpb24pICYmIGFnZW50Py50eXBlID09PSAnb3JjaGVzdHJhdG9yJyAmJiB3YXNQaW5uZWQgJiYgIXBpbm5lZCkge1xuICAgICAgc2V0RGlkUmVzZXRDb250ZXh0SW5TZWN0aW9uKHRydWUpXG4gICAgfVxuICB9LCBbdGFzaz8uaWQsIGNoaXBzUHJvamVjdD8ucHJvamVjdElkLCBjbGllbnQ/LmlkLCBwcm9qZWN0Py5pZCwgc2VjdGlvbiwgYWdlbnQ/LnR5cGVdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFhZ2VudHNGZXRjaGVkUmVmLmN1cnJlbnQpIHtcbiAgICAgIGFnZW50c0ZldGNoZWRSZWYuY3VycmVudCA9IHRydWVcbiAgICAgIGhhbmRsZUdldEFnZW50cygpXG4gICAgfVxuICB9LCBbaGFuZGxlR2V0QWdlbnRzXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IG9uTWVyZ2VDcmVhdGVkQWdlbnQgPSAoZXZ0OiBFdmVudCkgPT4ge1xuICAgICAgY29uc3QgeyBhZ2VudDogbmV4dEFnZW50IH0gPSAoZXZ0IGFzIEN1c3RvbUV2ZW50PHsgYWdlbnQ6IEFnZW50IH0+KS5kZXRhaWwgfHwge31cbiAgICAgIGlmIChuZXh0QWdlbnQ/LmlkKSB7XG4gICAgICAgIGFkZEFnZW50KG5leHRBZ2VudCwgeyBuYXZpZ2F0ZUhvbWU6IGZhbHNlIH0pXG4gICAgICB9XG4gICAgfVxuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21haWEtbWVyZ2UtY3JlYXRlZC1hZ2VudC1pbnRvLWxpc3QnLCBvbk1lcmdlQ3JlYXRlZEFnZW50KVxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdtYWlhLW1lcmdlLWNyZWF0ZWQtYWdlbnQtaW50by1saXN0Jywgb25NZXJnZUNyZWF0ZWRBZ2VudClcbiAgICB9XG4gIH0sIFthZGRBZ2VudF0pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBvblN5bmNFZGl0ZWRBZ2VudCA9IChldnQ6IEV2ZW50KSA9PiB7XG4gICAgICBjb25zdCB7IGFnZW50OiBuZXh0QWdlbnQgfSA9IChldnQgYXMgQ3VzdG9tRXZlbnQ8eyBhZ2VudDogQWdlbnQgfT4pLmRldGFpbCB8fCB7fVxuICAgICAgaWYgKCFuZXh0QWdlbnQ/LmlkKSByZXR1cm5cbiAgICAgIHVwZGF0ZUFnZW50KG5leHRBZ2VudClcbiAgICAgIGlmIChhZ2VudD8uaWQgPT09IG5leHRBZ2VudC5pZCkge1xuICAgICAgICBzZWxlY3RBZ2VudChuZXh0QWdlbnQpXG4gICAgICB9XG4gICAgfVxuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21haWEtc3luYy1lZGl0ZWQtYWdlbnQtZnJvbS1jaGF0Jywgb25TeW5jRWRpdGVkQWdlbnQpXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21haWEtc3luYy1lZGl0ZWQtYWdlbnQtZnJvbS1jaGF0Jywgb25TeW5jRWRpdGVkQWdlbnQpXG4gICAgfVxuICB9LCBbdXBkYXRlQWdlbnQsIHNlbGVjdEFnZW50LCBhZ2VudD8uaWRdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3Qgb3BlbkNoYXRWaWV3ID0gKCkgPT4ge1xuICAgICAgc2V0SGFzRXJyb3IoZmFsc2UpXG4gICAgICBzZXRJbml0aWFsQ2hhdElkKG51bGwpXG4gICAgICBzZXROZXdDaGF0S2V5KHByZXYgPT4gcHJldiArIDEpXG4gICAgICBzZXRVc2VySW5pdGlhbE1lc3NhZ2UoeyBtZXNzYWdlOiAnJywgYXR0YWNobWVudHM6IFtdIH0pXG4gICAgICBzZXRDdXJyZW50T3B0aW9uKG9wdGlvbnMuY2hhdClcbiAgICAgIGRvY3VtZW50LmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCdjaGF0LXNlc3Npb24tY2hhbmdlZCcpKVxuICAgIH1cbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdtYWlhLW9wZW4tY2hhdC12aWV3Jywgb3BlbkNoYXRWaWV3KVxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdtYWlhLW9wZW4tY2hhdC12aWV3Jywgb3BlbkNoYXRWaWV3KVxuICAgIH1cbiAgfSwgW10pXG5cbiAgLyoqIE1pc21vIGZsdWpvIHF1ZSBDaGF0QUlNeUFnZW50cy5oYW5kbGVVc2VBZ2VudCArIG9uQmFjayAoaGFuZGxlcnMuaG9tZSkuXG4gICAqICBFbCBkZXRhaWwgcHVlZGUgdHJhZXIgb3BjaW9uYWxtZW50ZSBgcHJvamVjdGAsIGBjbGllbnRgLCBgdGFza2AgcGFyYSBmbG93cyBxdWVcbiAgICogIG5lY2VzaXRhbiBwcmVzZXJ2YXIgY29udGV4dG8gKGVqLiBzZWxlY3RvciBkZSBhZ2VudGVzIGRlc2RlIHVuYSB0YXJlYSkuIFNpIG5vIHZpZW5lbixcbiAgICogIHNlIG1hbnRpZW5lIGVsIGNvbXBvcnRhbWllbnRvIG9yaWdpbmFsIGRlIGxpbXBpYXIgcHJvamVjdC9jbGllbnQuICovXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3Qgb3Blbk5ld0NoYXRXaXRoQWdlbnQgPSAoZXZlbnQ6IEV2ZW50KSA9PiB7XG4gICAgICBjb25zdCB7IGRldGFpbCB9ID0gZXZlbnQgYXMgQ3VzdG9tRXZlbnQ8e1xuICAgICAgICBhZ2VudDogQWdlbnRcbiAgICAgICAgcHJvamVjdD86IFByb2plY3QgfCBudWxsXG4gICAgICAgIGNsaWVudD86IENsaWVudCB8IG51bGxcbiAgICAgICAgdGFzaz86IFRhc2sgfCBudWxsXG4gICAgICB9PlxuICAgICAgY29uc3QgbmV4dEFnZW50ID0gZGV0YWlsPy5hZ2VudFxuICAgICAgaWYgKCFuZXh0QWdlbnQpIHJldHVyblxuXG4gICAgICBzZXRQcm9qZWN0KGRldGFpbD8ucHJvamVjdCA/PyBudWxsKVxuICAgICAgc2V0Q2xpZW50Py4oZGV0YWlsPy5jbGllbnQgPz8gbnVsbClcbiAgICAgIGlmIChkZXRhaWw/LnRhc2sgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBzZXRUYXNrPy4oZGV0YWlsLnRhc2spXG4gICAgICB9XG4gICAgICBzZWxlY3RBZ2VudChuZXh0QWdlbnQpXG4gICAgICBzZXRIYXNFcnJvcihmYWxzZSlcbiAgICAgIHNldEN1cnJlbnRPcHRpb24ob3B0aW9ucy5ob21lKVxuICAgIH1cblxuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21haWEtb3Blbi1uZXctY2hhdC13aXRoLWFnZW50Jywgb3Blbk5ld0NoYXRXaXRoQWdlbnQpXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21haWEtb3Blbi1uZXctY2hhdC13aXRoLWFnZW50Jywgb3Blbk5ld0NoYXRXaXRoQWdlbnQpXG4gICAgfVxuICB9LCBbc2VsZWN0QWdlbnQsIHNldENsaWVudCwgc2V0UHJvamVjdCwgc2V0VGFza10pXG5cbiAgLy8gTWV0YWRhdGEgZGUgbGEgc2Vzc2lvbiBhYmllcnRhIChhZ2VudF90eXBlL2FnZW50X2VudGl0eSArIGNvbnRleHRvKSwgZW1pdGlkYSBwb3IgdXNlQ2hhdE1lc3NhZ2VzLlxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IG9uU2Vzc2lvbk1ldGEgPSAoZXZ0OiBFdmVudCkgPT4ge1xuICAgICAgY29uc3QgeyBkZXRhaWwgfSA9IGV2dCBhcyBDdXN0b21FdmVudDxTZXNzaW9uTWV0YT5cbiAgICAgIGlmIChkZXRhaWwpIHNldFNlc3Npb25NZXRhKGRldGFpbClcbiAgICB9XG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbWFpYS1jaGF0LXNlc3Npb24tbWV0YScsIG9uU2Vzc2lvbk1ldGEpXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21haWEtY2hhdC1zZXNzaW9uLW1ldGEnLCBvblNlc3Npb25NZXRhKVxuICAgIH1cbiAgfSwgW10pXG5cbiAgLy8gQWwgY2FtYmlhciBkZSBjb252ZXJzYWNpw7NuIGxpbXBpYW1vcyBsYSBtZXRhZGF0YTsgZWwgbG9hZCBkZSBsYSBudWV2YSBzZXNzaW9uIGxhIHZ1ZWx2ZSBhIGVtaXRpci5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBzZXRTZXNzaW9uTWV0YShudWxsKVxuICB9LCBbaW5pdGlhbENoYXRJZF0pXG5cbiAgLy8gQ2FydGVsIFwiY29udGludWFyIGVuIHVuIGNoYXQgbnVldm9cIjogc2UgbXVlc3RyYSBhbCBhYnJpciB1bmEgY29udmVyc2FjacOzbiBkZSB1biBjbG9uZSBsZWdhY3lcbiAgLy8gKGFnZW50X3R5cGUgPT09ICdjbG9uZScgY29uIGVudGl0eSBwcm9qZWN0L3Rhc2svY2xpZW50KS4gRWwgaW5wdXQgc2UgcmVlbXBsYXphIHBvciBlbCBjYXJ0ZWwuXG4gIGNvbnN0IGxlZ2FjeUNvbnRleHRTZXNzaW9uID0gdXNlTWVtbzx7IGVudGl0eVR5cGU6IExlZ2FjeUNvbnRleHRFbnRpdHk7IGNvbnRleHROYW1lOiBzdHJpbmcgfSB8IG51bGw+KCgpID0+IHtcbiAgICBpZiAoY29tcHV0ZWRDdXJyZW50T3B0aW9uICE9PSBvcHRpb25zLmNoYXQpIHJldHVybiBudWxsXG4gICAgaWYgKCFzZXNzaW9uTWV0YSB8fCBzZXNzaW9uTWV0YS5hZ2VudFR5cGUgIT09ICdjbG9uZScpIHJldHVybiBudWxsXG4gICAgY29uc3QgZW50aXR5ID0gc2Vzc2lvbk1ldGEuYWdlbnRFbnRpdHlcbiAgICBpZiAoIWVudGl0eSB8fCAhTEVHQUNZX0NPTlRFWFRfRU5USVRJRVMuaW5jbHVkZXMoZW50aXR5IGFzIExlZ2FjeUNvbnRleHRFbnRpdHkpKSByZXR1cm4gbnVsbFxuICAgIGNvbnN0IGNvbnRleHROYW1lID1cbiAgICAgIGVudGl0eSA9PT0gJ3Rhc2snID8gc2Vzc2lvbk1ldGEudGFza05hbWUgOiBlbnRpdHkgPT09ICdwcm9qZWN0JyA/IHNlc3Npb25NZXRhLnByb2plY3ROYW1lIDogc2Vzc2lvbk1ldGEuY2xpZW50TmFtZVxuICAgIHJldHVybiB7IGVudGl0eVR5cGU6IGVudGl0eSBhcyBMZWdhY3lDb250ZXh0RW50aXR5LCBjb250ZXh0TmFtZTogY29udGV4dE5hbWUgfHwgJycgfVxuICB9LCBbY29tcHV0ZWRDdXJyZW50T3B0aW9uLCBzZXNzaW9uTWV0YV0pXG5cbiAgLy8gTWFyY2EgZWwgYWdlbnRlIGRlIGxhIGNvbnZlcnNhY2nDs24gbGVnYWN5IHBhcmEgcXVlIGhlYWRlciwgc2VsZWN0b3IgeSBhdmF0YXIgbXVlc3RyZW4gZWwgbG9nb1xuICAvLyBNQUlBIHkgZWwgbm9tYnJlIHRhY2hhZG8gKGFnZW50ZSBvYnNvbGV0byksIHNpbiBkZXBlbmRlciBkZWwgYHR5cGVgIHJlc3VlbHRvIGRlIGxhIHNlc2nDs24gdmllamEuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGxlZ2FjeUNvbnRleHRTZXNzaW9uICYmIGFnZW50ICYmICFhZ2VudC5pc19sZWdhY3lfY29udGV4dCkge1xuICAgICAgc2VsZWN0QWdlbnQoeyAuLi5hZ2VudCwgaXNfbGVnYWN5X2NvbnRleHQ6IHRydWUgfSlcbiAgICB9XG4gIH0sIFtsZWdhY3lDb250ZXh0U2Vzc2lvbiwgYWdlbnQsIHNlbGVjdEFnZW50XSlcblxuICAvLyBBYnJlIHVuIGNoYXQgbnVldm8gY29uIGVsIG9yY2hlc3RyYXRvciBzZXRlYW5kbyBlbCBjb250ZXh0byBkZWwgY2xvbmUgbGVnYWN5IChtaXNtbyBjcml0ZXJpb1xuICAvLyBxdWUgY2xpY2tlYXIgdW4gY29udGV4dG8gcmVjaWVudGUgZW4gZWwgaG9tZSDihpIgcGFzbyAyIGNvbiBGQVFzL2FjY2lvbmVzIGRlIGVzZSBjb250ZXh0bykuXG4gIGNvbnN0IGhhbmRsZUNvbnRpbnVlTGVnYWN5Q29udGV4dEluTmV3Q2hhdCA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBpZiAoIXNlc3Npb25NZXRhKSByZXR1cm5cbiAgICBjb25zdCB7XG4gICAgICBhZ2VudEVudGl0eSxcbiAgICAgIHByb2plY3RJZDogcElkLFxuICAgICAgcHJvamVjdE5hbWU6IHBOYW1lLFxuICAgICAgY2xpZW50SWQ6IGNJZCxcbiAgICAgIGNsaWVudE5hbWU6IGNOYW1lLFxuICAgICAgdGFza0lkOiB0SWQsXG4gICAgICB0YXNrTmFtZTogdE5hbWUsXG4gICAgfSA9IHNlc3Npb25NZXRhXG5cbiAgICBjb25zdCBvcmNoZXN0cmF0b3IgPSBhZ2VudHMuZGF0YS5maW5kKChhOiBBZ2VudCkgPT4gYS50eXBlID09PSAnb3JjaGVzdHJhdG9yJylcbiAgICBpZiAoIW9yY2hlc3RyYXRvcikgcmV0dXJuXG5cbiAgICAvLyBSZXNldCBkZWwgY2hhdCDihpIgY29udmVyc2FjacOzbiBudWV2YVxuICAgIHN0b3BHZW5lcmF0aW9uRnVuY3Rpb24/LigpXG4gICAgc2V0SXNXcml0aW5nKGZhbHNlKVxuICAgIHNldFVzZXJJbml0aWFsTWVzc2FnZSh7IG1lc3NhZ2U6ICcnLCBhdHRhY2htZW50czogW10gfSlcbiAgICBzZXRJbml0aWFsQ2hhdElkKG51bGwpXG4gICAgc2V0TmV3Q2hhdEtleShwcmV2ID0+IHByZXYgKyAxKVxuICAgIHNldEhhc0Vycm9yKGZhbHNlKVxuXG4gICAgLy8gU2V0ZWFyIGNvbnRleHRvIChtaXNtbyBjcml0ZXJpbyBxdWUgaGFuZGxlU2VsZWN0UmVjZW50Q29udGV4dCBkZWwgaG9tZSlcbiAgICBzZXRUYXNrPy4obnVsbClcbiAgICBzZXRQcm9qZWN0KG51bGwpXG4gICAgc2V0Q2xpZW50Py4obnVsbClcbiAgICBzZXRDaGlwc1Byb2plY3QobnVsbClcblxuICAgIGlmIChhZ2VudEVudGl0eSA9PT0gJ2NsaWVudCcgJiYgY0lkICE9IG51bGwpIHtcbiAgICAgIHNldENsaWVudD8uKHsgaWQ6IGNJZCwgbmFtZTogY05hbWUgfHwgJycgfSlcbiAgICB9IGVsc2UgaWYgKGFnZW50RW50aXR5ID09PSAncHJvamVjdCcgJiYgcElkICE9IG51bGwpIHtcbiAgICAgIHNldFByb2plY3Qoe1xuICAgICAgICBpZDogcElkLFxuICAgICAgICBuYW1lOiBwTmFtZSB8fCAnJyxcbiAgICAgICAgLi4uKGNJZCAhPSBudWxsID8geyBjbGllbnRJZDogY0lkLCBjbGllbnQ6IHsgaWQ6IGNJZCwgbmFtZTogY05hbWUgfHwgJycgfSB9IDoge30pLFxuICAgICAgfSlcbiAgICAgIHNldENoaXBzUHJvamVjdCh7IHByb2plY3RJZDogU3RyaW5nKHBJZCksIHByb2plY3ROYW1lOiBwTmFtZSB8fCAnJywgY2xpZW50TmFtZTogY05hbWUgfHwgJycgfSlcbiAgICB9IGVsc2UgaWYgKGFnZW50RW50aXR5ID09PSAndGFzaycgJiYgdElkICE9IG51bGwpIHtcbiAgICAgIHNldFRhc2s/Lih7XG4gICAgICAgIGlkOiB0SWQsXG4gICAgICAgIG5hbWU6IHROYW1lIHx8ICcnLFxuICAgICAgICAuLi4ocElkICE9IG51bGwgPyB7IHByb2plY3RJZDogcElkIH0gOiB7fSksXG4gICAgICAgIC4uLihjSWQgIT0gbnVsbCA/IHsgY2xpZW50SWQ6IGNJZCB9IDoge30pLFxuICAgICAgfSlcbiAgICAgIGlmIChjSWQgIT0gbnVsbCkgc2V0Q2xpZW50Py4oeyBpZDogY0lkLCBuYW1lOiBjTmFtZSB8fCAnJyB9KVxuICAgICAgaWYgKHBJZCAhPSBudWxsKSB7XG4gICAgICAgIHNldFByb2plY3Qoe1xuICAgICAgICAgIGlkOiBwSWQsXG4gICAgICAgICAgbmFtZTogcE5hbWUgfHwgJycsXG4gICAgICAgICAgLi4uKGNJZCAhPSBudWxsID8geyBjbGllbnRJZDogY0lkLCBjbGllbnQ6IHsgaWQ6IGNJZCwgbmFtZTogY05hbWUgfHwgJycgfSB9IDoge30pLFxuICAgICAgICB9KVxuICAgICAgICBzZXRDaGlwc1Byb2plY3QoeyBwcm9qZWN0SWQ6IFN0cmluZyhwSWQpLCBwcm9qZWN0TmFtZTogcE5hbWUgfHwgJycsIGNsaWVudE5hbWU6IGNOYW1lIHx8ICcnIH0pXG4gICAgICB9XG4gICAgfVxuXG4gICAgc2VsZWN0QWdlbnQob3JjaGVzdHJhdG9yKVxuICAgIHNldFNlc3Npb25NZXRhKG51bGwpXG4gICAgc2V0Q3VycmVudE9wdGlvbihvcHRpb25zLmhvbWUpXG4gICAgZG9jdW1lbnQuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoJ2NoYXQtc2Vzc2lvbi1jaGFuZ2VkJykpXG4gIH0sIFtzZXNzaW9uTWV0YSwgYWdlbnRzLmRhdGEsIHNlbGVjdEFnZW50LCBzZXRDbGllbnQsIHNldFByb2plY3QsIHNldFRhc2ssIHNldENoaXBzUHJvamVjdCwgc3RvcEdlbmVyYXRpb25GdW5jdGlvbl0pXG5cbiAgY29uc3Qgc2hvd05ld0NoYXQgPSBjb21wdXRlZEN1cnJlbnRPcHRpb24gIT09IG9wdGlvbnMuY2hhdFxuICBjb25zdCBpc015QWdlbnRzU2VjdGlvbiA9IGNvbXB1dGVkQ3VycmVudE9wdGlvbiA9PT0gb3B0aW9ucy5teUFnZW50c1xuXG4gIC8vIEJvdMOzbiBcInZvbHZlclwiOiBzb2xvIHBhcmEgZWwgb3JjaGVzdHJhdG9yLlxuICAvLyAtIEVuIGVsIGNoYXQ6IGRpc3BvbmlibGUgZW4gdG9kYXMgbGFzIHNlY2Npb25lcyAoaGVhZGVyIHkgcHJvamVjdC9jbGllbnQvdGFzaykuXG4gIC8vIC0gRW4gZWwgaG9tZSBwYXNvIDIgKEZBUXMvRlVBcyBjb24gY29udGV4dG8gcGluZWFkbyk6IGVuIGVsIGhlYWRlciBzaWVtcHJlOyBlblxuICAvLyAgIHByb2plY3QvY2xpZW50L3Rhc2sgc29sbyBzaSBlbCB1c3VhcmlvIHJlaW5pY2nDsyBlbCBjb250ZXh0byAocGFzw7MgcG9yIGVsIHNlbGVjdG9yIGRlXG4gIC8vICAgY29udGV4dG9zIHJlY2llbnRlcykuIEVuIGVsIHBhc28gMSAoc2luIGNvbnRleHRvKSBOTyBzZSBtdWVzdHJhLlxuICBjb25zdCBoYXNQaW5uZWRDb250ZXh0ID0gISEodGFzaz8uaWQgfHwgY2hpcHNQcm9qZWN0Py5wcm9qZWN0SWQgfHwgY2xpZW50Py5pZCB8fCBwcm9qZWN0Py5pZClcbiAgY29uc3QgaXNDaGF0VmlldyA9IGNvbXB1dGVkQ3VycmVudE9wdGlvbiA9PT0gb3B0aW9ucy5jaGF0XG4gIGNvbnN0IGlzSG9tZVN0ZXAyID0gY29tcHV0ZWRDdXJyZW50T3B0aW9uID09PSBvcHRpb25zLmhvbWUgJiYgaGFzUGlubmVkQ29udGV4dFxuICBjb25zdCBpc0hlYWRlckhvbWVTdGVwMiA9IGlzR2xvYmFsTWFpYVNlY3Rpb24oc2VjdGlvbikgJiYgaXNIb21lU3RlcDJcbiAgY29uc3QgaXNTZWN0aW9uUmVzZXRIb21lU3RlcDIgPSAhaXNHbG9iYWxNYWlhU2VjdGlvbihzZWN0aW9uKSAmJiBpc0hvbWVTdGVwMiAmJiBkaWRSZXNldENvbnRleHRJblNlY3Rpb25cbiAgY29uc3Qgc2hvd0JhY2tCdXR0b24gPVxuICAgIGFnZW50Py50eXBlID09PSAnb3JjaGVzdHJhdG9yJyAmJlxuICAgICFoYXNFcnJvciAmJlxuICAgICFsb2FkaW5nICYmXG4gICAgKGlzQ2hhdFZpZXcgfHwgaXNIZWFkZXJIb21lU3RlcDIgfHwgaXNTZWN0aW9uUmVzZXRIb21lU3RlcDIpXG4gIGNvbnN0IGhhbmRsZU9wZW5NYXJrZXRwbGFjZSA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBpZiAoIXdpbmRvdy5NQUlBX0NIQVRfQUlfRkVBVFVSRV9BQ0NFU1NfTVVMVElfQUdFTlRTKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgY2xlYXJBZ2VudCgpXG4gICAgc2V0Q3VycmVudE9wdGlvbihvcHRpb25zLm15QWdlbnRzKVxuICB9LCBbY2xlYXJBZ2VudF0pXG5cbiAgY29uc3QgaGFuZGxlR29Ub01haWFrZXIgPSB1c2VDYWxsYmFjayhhc3luYyAoKSA9PiB7XG4gICAgc2V0SGFzRXJyb3IoZmFsc2UpXG4gICAgbGV0IG1haWFrZXJBZ2VudCA9IGFnZW50cy5kYXRhLmZpbmQoKGE6IEFnZW50KSA9PiBpc01hcmtldHBsYWNlR2xvYmFsQ2xvbmVBZ2VudChhKSlcbiAgICBpZiAoIW1haWFrZXJBZ2VudCkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaE1haWEoe1xuICAgICAgICAgIHBhdGg6IGBhZ2VudHM/YWdlbnRfdHlwZT1jbG9uZSZlbnRpdHk9Z2xvYmFsJmxhbmc9JHttYXBDT1JMYW5nKGkxOG4ubGFuZ3VhZ2UpfWAsXG4gICAgICAgICAgbWV0aG9kOiAnR0VUJyxcbiAgICAgICAgfSlcbiAgICAgICAgY29uc3QgZGF0YSA9IGF3YWl0IHJlc3BvbnNlLmpzb24oKVxuICAgICAgICBtYWlha2VyQWdlbnQgPSAoZGF0YS5kYXRhIHx8IFtdKS5maW5kKChhOiBBZ2VudCkgPT4gaXNNYXJrZXRwbGFjZUdsb2JhbENsb25lQWdlbnQoYSkpXG4gICAgICB9IGNhdGNoIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgfVxuICAgIGlmICghbWFpYWtlckFnZW50KSB7XG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgc2V0UHJvamVjdChudWxsKVxuICAgIHNldENsaWVudD8uKG51bGwpXG4gICAgc2V0VGFzaz8uKG51bGwpXG4gICAgc2VsZWN0QWdlbnQobWFpYWtlckFnZW50KVxuICAgIHNldEN1cnJlbnRPcHRpb24ob3B0aW9ucy5ob21lKVxuICAgIGlmIChyZXNldFNlbGVjdGVkQ2hhdFJlZi5jdXJyZW50KSB7XG4gICAgICByZXNldFNlbGVjdGVkQ2hhdFJlZi5jdXJyZW50KClcbiAgICB9XG4gIH0sIFthZ2VudHMuZGF0YSwgaTE4bi5sYW5ndWFnZSwgc2VsZWN0QWdlbnQsIHNldENsaWVudCwgc2V0UHJvamVjdCwgc2V0VGFza10pXG4gIGNvbnN0IGhhbmRsZURlbGV0ZUFnZW50RnJvbU15QWdlbnRzID0gdXNlQ2FsbGJhY2soXG4gICAgKGFnZW50SWQ6IHN0cmluZykgPT4ge1xuICAgICAgcmVtb3ZlQWdlbnQoYWdlbnRJZClcbiAgICAgIGlmIChhZ2VudD8uaWQgPT09IGFnZW50SWQpIHtcbiAgICAgICAgc2VsZWN0Rmlyc3RBZ2VudChhZ2VudElkKVxuICAgICAgfVxuICAgIH0sXG4gICAgW2FnZW50Py5pZCwgcmVtb3ZlQWdlbnQsIHNlbGVjdEZpcnN0QWdlbnRdXG4gIClcblxuICAvLyBFbCBmb290ZXIgKGlucHV0KSBzZSBvY3VsdGEgc29sbyBlbiBlbCBob21lIG1hcmtldHBsYWNlIGRlIE1haWFrZXIgKGJyb3dzZSBkZSBhZ2VudGVzKS5cbiAgLy8gRWwgaG9tZSBkZWwgb3JjaGVzdHJhdG9yIHPDrSBwZXJtaXRlIGVzY3JpYmlyLCBhc8OtIHF1ZSBtYW50aWVuZSBlbCBmb290ZXIuXG4gIGNvbnN0IGlzTWFpYWtlckNyZWF0b3JIb21lID0gY29tcHV0ZWRDdXJyZW50T3B0aW9uID09PSBvcHRpb25zLmhvbWUgJiYgaXNNYWlha2VyQWdlbnRTZWxlY3RlZFxuXG4gIGNvbnN0IG1vZGFsUGFuZWwgPSAoXG4gICAgPD5cbiAgICAgIHt2YWxpZGF0ZUFjY2Vzc0J5RmVhdHVyZShzZWN0aW9uKSAmJiAhaXNGbG9hdGluZyA/IChcbiAgICAgICAgPFNpZGViYXJcbiAgICAgICAgICBvbkdvVG9DaGF0PXtnb1RvQ2hhdH1cbiAgICAgICAgICBvbkVycm9yPXsoKSA9PiBzZXRTaWRlYmFySGFzRXJyb3IodHJ1ZSl9XG4gICAgICAgICAgaGFuZGxlR29Ub0hvbWU9e2hhbmRsZUdvSG9tZX1cbiAgICAgICAgICBoYW5kbGVPcGVuTWFya2V0cGxhY2U9e2hhbmRsZU9wZW5NYXJrZXRwbGFjZX1cbiAgICAgICAgICBzaG93TmV3Q2hhdD17c2hvd05ld0NoYXR9XG4gICAgICAgICAgcmVmZXRjaENoYXRzPXtyZWZldGNoQ2hhdHN9XG4gICAgICAgICAgaGFuZGxlU2V0UmVmZXRjaENoYXRzPXtzZXRSZWZldGNoQ2hhdHN9XG4gICAgICAgICAgaGFzRXJyb3I9e3NpZGViYXJIYXNFcnJvcn1cbiAgICAgICAgICByZXNldFNlbGVjdGVkQ2hhdFJlZj17cmVzZXRTZWxlY3RlZENoYXRSZWZ9XG4gICAgICAgICAgYWdlbnRzTmF2QWN0aXZlPXtzaWRlYmFyQWdlbnRzTmF2QWN0aXZlfVxuICAgICAgICAgIGlzTGVnYWN5Q29udGV4dFNlc3Npb249eyEhbGVnYWN5Q29udGV4dFNlc3Npb259XG4gICAgICAgIC8+XG4gICAgICApIDogbnVsbH1cbiAgICAgIDxTQ0NBSU1Db250ZW50IGV4cGFuZGVkPXtleHBhbmRlZH0gZmxvYXRpbmc9e2lzRmxvYXRpbmd9PlxuICAgICAgICA8Q2hhdEFJTW9kYWxIZWFkZXJcbiAgICAgICAgICBsYXlvdXRNb2RlPXtsYXlvdXRNb2RlfVxuICAgICAgICAgIG9uTGF5b3V0TW9kZUNoYW5nZT17aGFuZGxlTGF5b3V0TW9kZUNoYW5nZX1cbiAgICAgICAgICBleHBhbmRlZD17ZXhwYW5kZWR9XG4gICAgICAgICAgZHJhZ2dhYmxlPXtpc0Zsb2F0aW5nfVxuICAgICAgICAgIG9uRHJhZ1N0YXJ0PXtoYW5kbGVEcmFnU3RhcnR9XG4gICAgICAgICAgb25EcmFnTW92ZT17aGFuZGxlRHJhZ01vdmV9XG4gICAgICAgICAgb25EcmFnRW5kPXtoYW5kbGVEcmFnRW5kfVxuICAgICAgICAgIGhhbmRsZUNsb3NlPXtoYW5kbGVDbG9zZU1vZGFsfVxuICAgICAgICAgIGFnZW50cz17YWdlbnRzLmRhdGF9XG4gICAgICAgICAgaGFzRXJyb3I9eyEhYWdlbnRFcnJvcn1cbiAgICAgICAgICBsb2FkaW5nPXtsb2FkaW5nfVxuICAgICAgICAgIGxvYWRpbmdNb3JlPXtsb2FkaW5nTW9yZX1cbiAgICAgICAgICBoYXNNb3JlPXthZ2VudHMuaGFzX21vcmV9XG4gICAgICAgICAgaGFuZGxlUmVzZXRDaGF0PXtoYW5kbGVSZXNldENoYXR9XG4gICAgICAgICAgb25BZ2VudFVwZGF0ZT17dXBkYXRlQWdlbnRGYXZvcml0ZX1cbiAgICAgICAgICBsb2FkTW9yZUFnZW50cz17bG9hZE1vcmVBZ2VudHN9XG4gICAgICAgICAgc29ydEFnZW50c0xpc3Q9e3NvcnRBZ2VudHNMaXN0fVxuICAgICAgICAgIGlzTXlBZ2VudHNTZWN0aW9uPXtpc015QWdlbnRzU2VjdGlvbn1cbiAgICAgICAgICBpc01haWFrZXJTZWN0aW9uPXtpc01haWFrZXJDcmVhdG9ySG9tZX1cbiAgICAgICAgICBzaG93QmFja0J1dHRvbj17c2hvd0JhY2tCdXR0b259XG4gICAgICAgICAgb25CYWNrPXtoYW5kbGVCYWNrfVxuICAgICAgICAvPlxuICAgICAgICB7aGFzRXJyb3IgPyAoXG4gICAgICAgICAgPE1BSUFFcnJvciAvPlxuICAgICAgICApIDogdmFsaWRhdGVBY2Nlc3NCeUZlYXR1cmUoc2VjdGlvbikgPyAoXG4gICAgICAgICAgPENoYXRBSUNvbnRlbnRcbiAgICAgICAgICAgIGN1cnJlbnRPcHRpb249e2NvbXB1dGVkQ3VycmVudE9wdGlvbn1cbiAgICAgICAgICAgIGhhbmRsZXJzPXt7IC4uLmhhbmRsZXJzLCBjaGF0OiBzdGFydENoYXQsIGhvbWU6IGhhbmRsZXJzLmhvbWUsIGhhbmRsZUdvSG9tZSB9fVxuICAgICAgICAgICAgb25FcnJvcj17KCkgPT4gc2V0SGFzRXJyb3IodHJ1ZSl9XG4gICAgICAgICAgICByZWZzPXt7IHVzZXJJbml0aWFsTWVzc2FnZSwgaW5pdGlhbENoYXRJZCB9fVxuICAgICAgICAgICAgb25TZW5kTWVzc2FnZVJlYWR5PXtoYW5kbGVTZW5kTWVzc2FnZVJlYWR5fVxuICAgICAgICAgICAgZXhwYW5kZWQ9e2V4cGFuZGVkfVxuICAgICAgICAgICAgZmxvYXRpbmc9e2lzRmxvYXRpbmd9XG4gICAgICAgICAgICBhZ2VudHM9e2FnZW50cy5kYXRhfVxuICAgICAgICAgICAgbG9hZGluZ0FnZW50cz17bG9hZGluZ31cbiAgICAgICAgICAgIG9uRGVsZXRlQWdlbnQ9e2hhbmRsZURlbGV0ZUFnZW50RnJvbU15QWdlbnRzfVxuICAgICAgICAgICAgb25GYXZvcml0ZUFnZW50VXBkYXRlPXt1cGRhdGVBZ2VudEZhdm9yaXRlfVxuICAgICAgICAgICAgaGFzTW9yZUFnZW50cz17ISFhZ2VudHMuaGFzX21vcmV9XG4gICAgICAgICAgICBsb2FkaW5nTW9yZUFnZW50cz17bG9hZGluZ01vcmV9XG4gICAgICAgICAgICBvbkxvYWRNb3JlQWdlbnRzPXtsb2FkTW9yZUFnZW50c31cbiAgICAgICAgICAgIG9uR29Ub01haWFrZXI9e2hhbmRsZUdvVG9NYWlha2VyfVxuICAgICAgICAgICAgb25TZWFyY2hBZ2VudHM9e3NlYXJjaEN1c3RvbUFnZW50c31cbiAgICAgICAgICAgIHNlYXJjaExvYWRpbmdBZ2VudHM9e3NlYXJjaExvYWRpbmd9XG4gICAgICAgICAgICBhZ2VudEVycm9yPXthZ2VudEVycm9yfVxuICAgICAgICAgIC8+XG4gICAgICAgICkgOiAoXG4gICAgICAgICAgPFByb2plY3RTdW1tYXJ5Q29udGVudCBvblJlc3RhcnRTdW1tYXJ5PXtoYW5kbGVycy5ob21lfSAvPlxuICAgICAgICApfVxuICAgICAgICB7KChjb21wdXRlZEN1cnJlbnRPcHRpb24gPT09IG9wdGlvbnMuaG9tZSAmJiAhIWFnZW50cz8uZGF0YT8ubGVuZ3RoKSB8fFxuICAgICAgICAgIGNvbXB1dGVkQ3VycmVudE9wdGlvbiA9PT0gb3B0aW9ucy5jaGF0KSAmJlxuICAgICAgICAgICFpc01haWFrZXJDcmVhdG9ySG9tZSAmJlxuICAgICAgICAgICFoYXNFcnJvciAmJlxuICAgICAgICAgICFsb2FkaW5nICYmXG4gICAgICAgICAgdmFsaWRhdGVBY2Nlc3NCeUZlYXR1cmUoc2VjdGlvbikgJiYgKFxuICAgICAgICAgICAgPENoYXRBaU1vZGFsRm9vdGVyXG4gICAgICAgICAgICAgIGFnZW50PXthZ2VudH1cbiAgICAgICAgICAgICAgaGFuZGxlU2VuZE1lc3NhZ2U9e2hhbmRsZVNlbmRNZXNzYWdlfVxuICAgICAgICAgICAgICBoYW5kbGVTdG9wR2VuZXJhdGlvbj17c3RvcEdlbmVyYXRpb25GdW5jdGlvbn1cbiAgICAgICAgICAgICAgaXNTdHJlYW1pbmc9e2lzU3RyZWFtaW5nfVxuICAgICAgICAgICAgICBpc1dyaXRpbmc9e2lzV3JpdGluZ31cbiAgICAgICAgICAgICAgY2hhdElkPXtpbml0aWFsQ2hhdElkfVxuICAgICAgICAgICAgICBuZXdDaGF0S2V5PXtuZXdDaGF0S2V5fVxuICAgICAgICAgICAgICBzaG93RmFxcz17Y29tcHV0ZWRDdXJyZW50T3B0aW9uID09PSBvcHRpb25zLmNoYXR9XG4gICAgICAgICAgICAgIHRvb2x0aXBaSW5kZXg9e3Rvb2x0aXBaSW5kZXh9XG4gICAgICAgICAgICAgIGxlZ2FjeUNvbnRleHRTZXNzaW9uPXtsZWdhY3lDb250ZXh0U2Vzc2lvbn1cbiAgICAgICAgICAgICAgb25Db250aW51ZUluTmV3Q2hhdD17aGFuZGxlQ29udGludWVMZWdhY3lDb250ZXh0SW5OZXdDaGF0fVxuICAgICAgICAgICAgICBsYXlvdXRNb2RlPXtsYXlvdXRNb2RlfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApfVxuICAgICAgPC9TQ0NBSU1Db250ZW50PlxuICAgIDwvPlxuICApXG5cbiAgY29uc3QgY29udGVudFdyYXBwZXIgPSAoXG4gICAgPFNDQ0FJTUNvbnRlbnRXcmFwcGVyIGV4cGFuZGVkPXtleHBhbmRlZH0gZmxvYXRpbmc9e2lzRmxvYXRpbmd9IHJlZj17Y29udGVudFdyYXBwZXJSZWZ9PlxuICAgICAge21vZGFsUGFuZWx9XG4gICAgICB7c2hvd0Nsb3NlV2hpbGVHZW5lcmF0aW5nTW9kYWwgJiYgKFxuICAgICAgICA8Q2xvc2VXaGlsZUdlbmVyYXRpbmdNb2RhbFxuICAgICAgICAgIG9uQ2xvc2U9e2hhbmRsZURpc21pc3NDbG9zZVdoaWxlR2VuZXJhdGluZ01vZGFsfVxuICAgICAgICAgIG9uQ29uZmlybT17aGFuZGxlQ29uZmlybUNsb3NlV2hpbGVHZW5lcmF0aW5nfVxuICAgICAgICAvPlxuICAgICAgKX1cbiAgICA8L1NDQ0FJTUNvbnRlbnRXcmFwcGVyPlxuICApXG5cbiAgcmV0dXJuIChcbiAgICBzZWxlY3RvciAmJlxuICAgIFJlYWN0RE9NLmNyZWF0ZVBvcnRhbChcbiAgICAgIDxTQ0NBSU1XcmFwcGVyXG4gICAgICAgIGV4cGFuZGVkPXtleHBhbmRlZH1cbiAgICAgICAgbGF5b3V0TW9kZT17bGF5b3V0TW9kZX1cbiAgICAgICAgZHJhZ1Bvc2l0aW9uPXtyZXNvbHZlZERyYWdQb3NpdGlvbn1cbiAgICAgICAgZWxldmF0ZWQ9e3NlY3Rpb24gPT09ICd0YXNrJ31cbiAgICAgID5cbiAgICAgICAgPEZsb2F0aW5nUGFuZWxNb3Rpb24gdGlsdD17dGlsdE1vdGlvbn0gZXhwYW5kZWQ9e2V4cGFuZGVkfT5cbiAgICAgICAgICB7Y29udGVudFdyYXBwZXJ9XG4gICAgICAgIDwvRmxvYXRpbmdQYW5lbE1vdGlvbj5cbiAgICAgICAge3VzZXJIYXNQZXJtaXNzaW9ucyAmJiAoXG4gICAgICAgICAgPEFibUFnZW50TW9kYWxcbiAgICAgICAgICAgIGFkZEFnZW50PXthZGRBZ2VudH1cbiAgICAgICAgICAgIHVwZGF0ZUFnZW50PXt1cGRhdGVBZ2VudH1cbiAgICAgICAgICAgIHJlbW92ZUFnZW50PXtyZW1vdmVBZ2VudH1cbiAgICAgICAgICAgIHVwZGF0ZUFnZW50RmF2b3JpdGU9e3VwZGF0ZUFnZW50RmF2b3JpdGV9XG4gICAgICAgICAgICBzZWxlY3RGaXJzdEFnZW50PXtzZWxlY3RGaXJzdEFnZW50fVxuICAgICAgICAgIC8+XG4gICAgICAgICl9XG4gICAgICAgIDxTbmFja2JhciAvPlxuICAgICAgPC9TQ0NBSU1XcmFwcGVyPixcbiAgICAgIHNlbGVjdG9yXG4gICAgKVxuICApXG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FFRUEsV0FBVyxFQUNYQyxPQUFPLEVBQ1BDLFFBQVEsRUFDUkMsTUFBTSxFQUNOQyxTQUFTLEVBQ1RDLGVBQWUsUUFFVixPQUFPO0FBQ2QsT0FBT0MsUUFB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
966
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VDYWxsYmFjayIsInVzZU1lbW8iLCJ1c2VTdGF0ZSIsInVzZVJlZiIsInVzZUVmZmVjdCIsInVzZUxheW91dEVmZmVjdCIsIlJlYWN0RE9NIiwibW9tZW50IiwidXNlVHJhbnNsYXRpb24iLCJ1c2VVc2VyIiwiTUFJQUVycm9yIiwidXNlTWFpYVRhc2tQYW5lbFpJbmRleCIsIkNoYXRBSUNvbnRlbnQiLCJidWlsZEhhbmRsZXJzIiwib3B0aW9ucyIsIlNpZGViYXIiLCJ1c2VHZXRBZ2VudHMiLCJ1c2VHbG9iYWxDb250ZXh0IiwiQ2hhdEFJTW9kYWxIZWFkZXIiLCJTbmFja2JhciIsIlByb2plY3RTdW1tYXJ5Q29udGVudCIsIkFibUFnZW50TW9kYWwiLCJDbG9zZVdoaWxlR2VuZXJhdGluZ01vZGFsIiwiU0VDVElPTlMiLCJTQ0NBSU1Db250ZW50IiwiU0NDQUlNQ29udGVudFdyYXBwZXIiLCJTQ0NBSU1XcmFwcGVyIiwiZ2V0TWFpYUZsb2F0aW5nUGFuZWxXaWR0aFB4IiwicmVzb2x2ZUluaXRpYWxNYWlhQ2hhdExheW91dE1vZGUiLCJzZXRTdG9yZWRNYWlhQ2hhdExheW91dE1vZGUiLCJGbG9hdGluZ1BhbmVsTW90aW9uIiwidXNlRmxvYXRpbmdQYW5lbERyYWdUaWx0IiwiQ2hhdEFpTW9kYWxGb290ZXIiLCJ2YWxpZGF0ZUlzTWFpYSIsImlzTWFya2V0cGxhY2VHbG9iYWxDbG9uZUFnZW50IiwidXNlRmFxc1N0b3JlIiwiZmV0Y2hNYWlhIiwibWFwQ09STGFuZyIsIkVWRU5UUyIsInVzZUV2ZW50IiwianN4IiwiX2pzeCIsImpzeHMiLCJfanN4cyIsIkZyYWdtZW50IiwiX0ZyYWdtZW50IiwiTEVHQUNZX0NPTlRFWFRfRU5USVRJRVMiLCJyZXNvbHZlQWlDaGF0QmFja0Rlc3RpbmF0aW9uIiwic2VjdGlvbiIsImFnZW50VHlwZSIsImN1cnJlbnRPcHRpb24iLCJob21lT3B0aW9uIiwiSURfTU9EQUxfQ0hBVF9BR0VOVCIsInZhbGlkYXRlQWNjZXNzQnlGZWF0dXJlIiwid2luZG93IiwiTUFJQV9DSEFUX0FJX0ZFQVRVUkVfQUNDRVNTX01VTFRJX0FHRU5UUyIsIk1BSUFfQ0hBVF9BSV9GRUFUVVJFX0FDQ0VTUyIsIkNoYXRBSU1vZGFsIiwiX3JlZiIsIl91c2VyJHBlcm1pc3Npb25zIiwiX3VzZXIkcGVybWlzc2lvbnMyIiwiX3VzZXIkcGVybWlzc2lvbnMzIiwiX2FnZW50cyRkYXRhIiwiaGFuZGxlQ2xvc2UiLCJ1c2VyIiwiX3VzZVRyYW5zbGF0aW9uIiwiYWJtQWdlbnQiLCJpMThuIiwiYW1wbGl0dWRFdmVudCIsIl91c2VTdGF0ZSIsIl91c2VTdGF0ZTIiLCJfc2xpY2VkVG9BcnJheSIsInNob3dDbG9zZVdoaWxlR2VuZXJhdGluZ01vZGFsIiwic2V0U2hvd0Nsb3NlV2hpbGVHZW5lcmF0aW5nTW9kYWwiLCJfdXNlU3RhdGUzIiwibWVzc2FnZSIsImF0dGFjaG1lbnRzIiwiX3VzZVN0YXRlNCIsInVzZXJJbml0aWFsTWVzc2FnZSIsInNldFVzZXJJbml0aWFsTWVzc2FnZSIsIl91c2VTdGF0ZTUiLCJfdXNlU3RhdGU2IiwiaW5pdGlhbENoYXRJZCIsInNldEluaXRpYWxDaGF0SWQiLCJfdXNlU3RhdGU3IiwiX3VzZVN0YXRlOCIsIm5ld0NoYXRLZXkiLCJzZXROZXdDaGF0S2V5IiwiX3VzZVN0YXRlOSIsIl91c2VTdGF0ZTAiLCJzZXNzaW9uTWV0YSIsInNldFNlc3Npb25NZXRhIiwiX3VzZVN0YXRlMSIsIl91c2VTdGF0ZTEwIiwic2VuZE1lc3NhZ2VGdW5jdGlvbiIsInNldFNlbmRNZXNzYWdlRnVuY3Rpb24iLCJfdXNlU3RhdGUxMSIsIl91c2VTdGF0ZTEyIiwic3RvcEdlbmVyYXRpb25GdW5jdGlvbiIsInNldFN0b3BHZW5lcmF0aW9uRnVuY3Rpb24iLCJfdXNlU3RhdGUxMyIsIl91c2VTdGF0ZTE0IiwiaXNTdHJlYW1pbmciLCJzZXRJc1N0cmVhbWluZyIsIl91c2VTdGF0ZTE1IiwiX3VzZVN0YXRlMTYiLCJpc1dyaXRpbmciLCJzZXRJc1dyaXRpbmciLCJoYW5kbGVDbG9zZU1vZGFsIiwiZ2V0U3RhdGUiLCJjbGVhckZhcXMiLCJoYW5kbGVEaXNtaXNzQ2xvc2VXaGlsZUdlbmVyYXRpbmdNb2RhbCIsImhhbmRsZUNvbmZpcm1DbG9zZVdoaWxlR2VuZXJhdGluZyIsIl91c2VTdGF0ZTE3IiwiX3VzZVN0YXRlMTgiLCJyZWZldGNoQ2hhdHMiLCJzZXRSZWZldGNoQ2hhdHMiLCJfdXNlU3RhdGUxOSIsImhvbWUiLCJfdXNlU3RhdGUyMCIsInNldEN1cnJlbnRPcHRpb24iLCJfdXNlU3RhdGUyMSIsIl91c2VTdGF0ZTIyIiwiaGFzRXJyb3IiLCJzZXRIYXNFcnJvciIsIl91c2VTdGF0ZTIzIiwiX3VzZVN0YXRlMjQiLCJkaWRSZXNldENvbnRleHRJblNlY3Rpb24iLCJzZXREaWRSZXNldENvbnRleHRJblNlY3Rpb24iLCJwcmV2SGFzUGlubmVkQ29udGV4dFJlZiIsImhhbmRsZXJzIiwiX3VzZVN0YXRlMjUiLCJfdXNlU3RhdGUyNiIsInNpZGViYXJIYXNFcnJvciIsInNldFNpZGViYXJIYXNFcnJvciIsInJlc2V0U2VsZWN0ZWRDaGF0UmVmIiwibGFuZyIsImxhbmd1YWdlIiwibG9jYWxlIiwiX3VzZUdsb2JhbENvbnRleHQiLCJzZWxlY3RBZ2VudCIsImNsZWFyQWdlbnQiLCJhZ2VudCIsInByb2plY3QiLCJjbGllbnQiLCJ0YXNrIiwiY2hpcHNQcm9qZWN0IiwidG9nZ2xlV2ViU2VhcmNoIiwiaXNXZWJTZWFyY2hBY3RpdmUiLCJzZXRDaGlwc1Byb2plY3QiLCJzZXRDbGllbnQiLCJzZXRQcm9qZWN0IiwiYmFubmVyRW50cnlGYXEiLCJzZXRUYXNrIiwidG9vbHRpcFpJbmRleCIsIl91c2VHZXRBZ2VudHMiLCJoYW5kbGVHb0hvbWUiLCJhZ2VudHMiLCJsb2FkaW5nIiwibG9hZGluZ01vcmUiLCJhZ2VudEVycm9yIiwiZXJyb3IiLCJoYW5kbGVHZXRBZ2VudHMiLCJsb2FkTW9yZUFnZW50cyIsInNlYXJjaEN1c3RvbUFnZW50cyIsInNlYXJjaExvYWRpbmciLCJhZGRBZ2VudCIsInJlbW92ZUFnZW50IiwidXBkYXRlQWdlbnQiLCJ1cGRhdGVBZ2VudEZhdm9yaXRlIiwic2VsZWN0Rmlyc3RBZ2VudCIsInNvcnRBZ2VudHNMaXN0IiwiaXNNQUlBIiwidXNlckhhc1Blcm1pc3Npb25zIiwicGVybWlzc2lvbnMiLCJhaV9hZ2VudHMiLCJjcmVhdGUiLCJlZGl0IiwiY29tcHV0ZWRDdXJyZW50T3B0aW9uIiwiaXNHbG9iYWxTcGVjaWFsaXN0IiwiZW50aXR5IiwiaXNQcm9qZWN0U3BlY2lhbGlzdCIsImlzQ2xpZW50U3BlY2lhbGlzdCIsImlzTWFpYWtlciIsIm15QWdlbnRzIiwidHlwZSIsImNoYXQiLCJzaG91bGRTaG93UHJvamVjdFNlbGVjdG9yIiwic2hvdWxkU2hvd0NsaWVudFNlbGVjdG9yIiwicHJvamVjdFNlbGVjdG9yIiwiY2xpZW50U2VsZWN0b3IiLCJuYW1lIiwiaXNNYWlha2VyQWdlbnRTZWxlY3RlZCIsInNpZGViYXJBZ2VudHNOYXZBY3RpdmUiLCJhZ2VudHNGZXRjaGVkUmVmIiwic2VsZWN0b3IiLCJkb2N1bWVudCIsInF1ZXJ5U2VsZWN0b3IiLCJjb25jYXQiLCJfdXNlU3RhdGUyNyIsIl91c2VTdGF0ZTI4IiwibGF5b3V0TW9kZSIsInNldExheW91dE1vZGUiLCJoYW5kbGVMYXlvdXRNb2RlQ2hhbmdlIiwibW9kZSIsImV4cGFuZGVkIiwiaXNGbG9hdGluZyIsImNvbnRlbnRXcmFwcGVyUmVmIiwiX3VzZVN0YXRlMjkiLCJfdXNlU3RhdGUzMCIsImRyYWdQb3NpdGlvbiIsInNldERyYWdQb3NpdGlvbiIsIl91c2VGbG9hdGluZ1BhbmVsRHJhZyIsInRpbHRNb3Rpb24iLCJzdGFydFBvaW50ZXJUcmFja2luZyIsInNhbXBsZVBvaW50ZXJNb3ZlIiwiZW5kUG9pbnRlclRyYWNraW5nIiwiZHJhZ1N0YXRlUmVmIiwiY2xhbXBEcmFnUG9zaXRpb24iLCJ4IiwieSIsImNvbnRlbnRXcmFwcGVyIiwiY3VycmVudCIsIl9jb250ZW50V3JhcHBlciRnZXRCbyIsImdldEJvdW5kaW5nQ2xpZW50UmVjdCIsIndpZHRoIiwiaGVpZ2h0Iiwib2Zmc2V0IiwibWF4WCIsIk1hdGgiLCJtYXgiLCJpbm5lcldpZHRoIiwibWF4WSIsImlubmVySGVpZ2h0IiwibWluIiwicHJldiIsInBhZCIsImhhbmRsZURyYWdFbmQiLCJldmVudCIsIl9kcmFnU3RhdGVSZWYkY3VycmVudCIsInBvaW50ZXJJZCIsImJvZHkiLCJzdHlsZSIsInVzZXJTZWxlY3QiLCJjdXJzb3IiLCJoYW5kbGVEcmFnTW92ZSIsImRyYWdTdGF0ZSIsImNsaWVudFgiLCJjbGllbnRZIiwibmV4dFBvc2l0aW9uIiwib2Zmc2V0WCIsIm9mZnNldFkiLCJyZXNvbHZlZERyYWdQb3NpdGlvbiIsImhhbmRsZURyYWdTdGFydCIsImJ1dHRvbiIsInRhcmdldCIsImNsb3Nlc3QiLCJyZWN0IiwiaW5pdGlhbFBvc2l0aW9uIiwibGVmdCIsInRvcCIsInBvaW50ZXJPZmZzZXRYIiwicG9pbnRlck9mZnNldFkiLCJjdXJyZW50VGFyZ2V0Iiwic2V0UG9pbnRlckNhcHR1cmUiLCJwcmV2ZW50RGVmYXVsdCIsImFpQ2hhdERyYWdnYWJsZSIsInN0YXJ0Q2hhdCIsImZhcUlkIiwiYWdlbnRTdWdnZXN0aW9uSWQiLCJtZW50aW9ucyIsImZ1YUlkIiwic2NJZCIsImNvbnRleHREYXRhIiwiX29iamVjdFNwcmVhZCIsImxlbmd0aCIsImJhbm5lckZhcUF1dG9TZW50UmVmIiwiX2Jhbm5lckVudHJ5RmFxJGZhcVRpIiwiZW50aXR5UmVhZHkiLCJCb29sZWFuIiwiaWQiLCJmYXFUaXRsZSIsInRyaW0iLCJ1bmRlZmluZWQiLCJnb1RvQ2hhdCIsInNlc3Npb25FeHRlcm5hbElkIiwic2VsZWN0ZWRBZ2VudCIsImRhdGEiLCJmaW5kIiwiYWdlbnRJdGVtIiwiYWdlbnRJZCIsImRpc3BhdGNoRXZlbnQiLCJDdXN0b21FdmVudCIsImhhbmRsZVNlbmRNZXNzYWdlUmVhZHkiLCJzZW5kTWVzc2FnZSIsInN0b3BHZW5lcmF0aW9uIiwic3RyZWFtaW5nIiwid3JpdGluZyIsImhhbmRsZVNlbmRNZXNzYWdlIiwiaXNfZGVsZXRlZCIsImhhc19ub3RfcGVybWlzc2lvbnMiLCJoYXNfbm90X2FjY2VzcyIsInByb2plY3RfZGVsZXRlZCIsImhhbmRsZVJlc2V0Q2hhdCIsIl9hc3luY1RvR2VuZXJhdG9yIiwiX3JlZ2VuZXJhdG9yUnVudGltZSIsIm1hcmsiLCJfY2FsbGVlIiwid3JhcCIsIl9jb250ZXh0IiwibmV4dCIsInN0b3AiLCJoYW5kbGVCYWNrIiwidG8iLCJhaUNoYXRCYWNrIiwicGlubmVkIiwicHJvamVjdElkIiwid2FzUGlubmVkIiwib25NZXJnZUNyZWF0ZWRBZ2VudCIsImV2dCIsIl9yZWYzIiwiZGV0YWlsIiwibmV4dEFnZW50IiwibmF2aWdhdGVIb21lIiwiYWRkRXZlbnRMaXN0ZW5lciIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJvblN5bmNFZGl0ZWRBZ2VudCIsIl9yZWY0Iiwib3BlbkNoYXRWaWV3Iiwib3Blbk5ld0NoYXRXaXRoQWdlbnQiLCJfZGV0YWlsJHByb2plY3QiLCJfZGV0YWlsJGNsaWVudCIsIl9yZWY1Iiwib25TZXNzaW9uTWV0YSIsIl9yZWY2IiwibGVnYWN5Q29udGV4dFNlc3Npb24iLCJhZ2VudEVudGl0eSIsImluY2x1ZGVzIiwiY29udGV4dE5hbWUiLCJ0YXNrTmFtZSIsInByb2plY3ROYW1lIiwiY2xpZW50TmFtZSIsImVudGl0eVR5cGUiLCJpc19sZWdhY3lfY29udGV4dCIsImhhbmRsZUNvbnRpbnVlTGVnYWN5Q29udGV4dEluTmV3Q2hhdCIsInBJZCIsInBOYW1lIiwiY0lkIiwiY2xpZW50SWQiLCJjTmFtZSIsInRJZCIsInRhc2tJZCIsInROYW1lIiwib3JjaGVzdHJhdG9yIiwiYSIsIlN0cmluZyIsInNob3dOZXdDaGF0IiwiaXNNeUFnZW50c1NlY3Rpb24iLCJoYXNQaW5uZWRDb250ZXh0IiwiaXNDaGF0VmlldyIsImlzSG9tZVN0ZXAyIiwiaXNIZWFkZXJIb21lU3RlcDIiLCJpc1NlY3Rpb25SZXNldEhvbWVTdGVwMiIsInNob3dCYWNrQnV0dG9uIiwiaGFuZGxlT3Blbk1hcmtldHBsYWNlIiwiaGFuZGxlR29Ub01haWFrZXIiLCJfY2FsbGVlMiIsIm1haWFrZXJBZ2VudCIsInJlc3BvbnNlIiwiX3QiLCJfY29udGV4dDIiLCJwYXRoIiwibWV0aG9kIiwic2VudCIsImpzb24iLCJhYnJ1cHQiLCJoYW5kbGVEZWxldGVBZ2VudEZyb21NeUFnZW50cyIsImlzTWFpYWtlckNyZWF0b3JIb21lIiwibW9kYWxQYW5lbCIsImNoaWxkcmVuIiwib25Hb1RvQ2hhdCIsIm9uRXJyb3IiLCJoYW5kbGVHb1RvSG9tZSIsImhhbmRsZVNldFJlZmV0Y2hDaGF0cyIsImFnZW50c05hdkFjdGl2ZSIsImlzTGVnYWN5Q29udGV4dFNlc3Npb24iLCJmbG9hdGluZyIsIm9uTGF5b3V0TW9kZUNoYW5nZSIsImRyYWdnYWJsZSIsIm9uRHJhZ1N0YXJ0Iiwib25EcmFnTW92ZSIsIm9uRHJhZ0VuZCIsImhhc01vcmUiLCJoYXNfbW9yZSIsIm9uQWdlbnRVcGRhdGUiLCJpc01haWFrZXJTZWN0aW9uIiwib25CYWNrIiwicmVmcyIsIm9uU2VuZE1lc3NhZ2VSZWFkeSIsImxvYWRpbmdBZ2VudHMiLCJvbkRlbGV0ZUFnZW50Iiwib25GYXZvcml0ZUFnZW50VXBkYXRlIiwiaGFzTW9yZUFnZW50cyIsImxvYWRpbmdNb3JlQWdlbnRzIiwib25Mb2FkTW9yZUFnZW50cyIsIm9uR29Ub01haWFrZXIiLCJvblNlYXJjaEFnZW50cyIsInNlYXJjaExvYWRpbmdBZ2VudHMiLCJvblJlc3RhcnRTdW1tYXJ5IiwiaGFuZGxlU3RvcEdlbmVyYXRpb24iLCJjaGF0SWQiLCJzaG93RmFxcyIsIm9uQ29udGludWVJbk5ld0NoYXQiLCJyZWYiLCJvbkNsb3NlIiwib25Db25maXJtIiwiY3JlYXRlUG9ydGFsIiwiZWxldmF0ZWQiLCJ0aWx0Il0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvbW9sZWN1bGVzL0NoYXRBSU1vZGFsL0NoYXRBSU1vZGFsLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBuby1uZXN0ZWQtdGVybmFyeSAqL1xuLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L2luZGVudCAqL1xuLyogZXNsaW50LWRpc2FibGUgcmVhY3QvanN4LW5vLXVzZWxlc3MtZnJhZ21lbnQgKi9cbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cbi8qIGVzbGludC1kaXNhYmxlIHJlYWN0L25vLWFycmF5LWluZGV4LWtleSAqL1xuLyogZXNsaW50LWRpc2FibGUganN4LWExMXkvY2xpY2stZXZlbnRzLWhhdmUta2V5LWV2ZW50cyAqL1xuLyogZXNsaW50LWRpc2FibGUganN4LWExMXkvbm8tc3RhdGljLWVsZW1lbnQtaW50ZXJhY3Rpb25zICovXG4vKiBlc2xpbnQtZGlzYWJsZSByZWFjdC9mdW5jdGlvbi1jb21wb25lbnQtZGVmaW5pdGlvbiAqL1xuLyogZXNsaW50LWRpc2FibGUgcmVhY3QvcmVxdWlyZS1kZWZhdWx0LXByb3BzICovXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1jb25zb2xlICovXG5pbXBvcnQge1xuICBSZWZPYmplY3QsXG4gIHVzZUNhbGxiYWNrLFxuICB1c2VNZW1vLFxuICB1c2VTdGF0ZSxcbiAgdXNlUmVmLFxuICB1c2VFZmZlY3QsXG4gIHVzZUxheW91dEVmZmVjdCxcbiAgUG9pbnRlckV2ZW50IGFzIFJlYWN0UG9pbnRlckV2ZW50LFxufSBmcm9tICdyZWFjdCdcbmltcG9ydCBSZWFjdERPTSBmcm9tICdyZWFjdC1kb20nXG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCdcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSAncmVhY3QtaTE4bmV4dCdcbmltcG9ydCB7IHVzZVVzZXIgfSBmcm9tICcuLi8uLi8uLi9jb250ZXh0L2Nvci11c2VyJ1xuaW1wb3J0IHsgTUFJQUVycm9yIH0gZnJvbSAnLi4vLi4vYXRvbXMvTUFJQUVycm9yJ1xuaW1wb3J0IHsgdXNlTWFpYVRhc2tQYW5lbFpJbmRleCB9IGZyb20gJy4uLy4uLy4uL2hvb2tzL3VzZU1haWFUYXNrUGFuZWxaSW5kZXgnXG5cbmltcG9ydCB7IENoYXRBSUNvbnRlbnQgfSBmcm9tICcuLi9DaGF0QUlDb250ZW50J1xuaW1wb3J0IHsgYnVpbGRIYW5kbGVycywgb3B0aW9ucyB9IGZyb20gJy4vY29uc3RhbnRzJ1xuaW1wb3J0IHsgU2lkZWJhciB9IGZyb20gJy4uL1NpZGViYXInXG5pbXBvcnQgeyB1c2VHZXRBZ2VudHMgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9tYWlhL0FnZW50cy9nZXRBZ2VudHMnXG5pbXBvcnQgeyB1c2VHbG9iYWxDb250ZXh0LCB0eXBlIFNlY3Rpb24gfSBmcm9tICcuLi8uLi8uLi9jb250ZXh0L2dsb2JhbC1jb250ZXh0J1xuaW1wb3J0IHsgQXR0YWNobWVudEZpbGUgfSBmcm9tICcuLi9DaGF0Rm9vdGVyL0NoYXRGb290ZXInXG5pbXBvcnQgeyBDb250ZXh0TWVudGlvbiB9IGZyb20gJy4uLy4uLy4uL3R5cGVzL2NvbnRleHRNZW50aW9uJ1xuaW1wb3J0IHsgQ2hhdEFJTW9kYWxIZWFkZXIgfSBmcm9tICcuL2NvbXBvbmVudHMvQ2hhdEFpTW9kYWxIZWFkZXIvQ2hhdEFpTW9kYWxIZWFkZXInXG5pbXBvcnQgeyBTbmFja2JhciB9IGZyb20gJy4uLy4uL29yZ2FuaXNtcy9TbmFja0Jhci9TbmFja2JhcidcbmltcG9ydCB7IFByb2plY3RTdW1tYXJ5Q29udGVudCB9IGZyb20gJy4uL1Byb2plY3RTdW1tYXJ5Q29udGVudCdcbmltcG9ydCB7IEFibUFnZW50TW9kYWwgfSBmcm9tICcuLi8uLi9vcmdhbmlzbXMvQWJtQWdlbnRNb2RhbC9BYm1BZ2VudE1vZGFsJ1xuaW1wb3J0IHsgQ2xvc2VXaGlsZUdlbmVyYXRpbmdNb2RhbCB9IGZyb20gJy4uLy4uL29yZ2FuaXNtcy9DbG9zZVdoaWxlR2VuZXJhdGluZ01vZGFsJ1xuaW1wb3J0IHsgU0VDVElPTlMgfSBmcm9tICcuLi8uLi8uLi9jb25zdGFudHMvY29uZmlnJ1xuaW1wb3J0IHsgU0NDQUlNQ29udGVudCwgU0NDQUlNQ29udGVudFdyYXBwZXIsIFNDQ0FJTVdyYXBwZXIgfSBmcm9tICcuL0NoYXRBSU1vZGFsLnN0eWxlcydcbmltcG9ydCB7XG4gIGdldE1haWFGbG9hdGluZ1BhbmVsV2lkdGhQeCxcbiAgTWFpYUNoYXRNb2RhbExheW91dE1vZGUsXG4gIHJlc29sdmVJbml0aWFsTWFpYUNoYXRMYXlvdXRNb2RlLFxuICBzZXRTdG9yZWRNYWlhQ2hhdExheW91dE1vZGUsXG59IGZyb20gJy4vbGF5b3V0J1xuaW1wb3J0IHsgRmxvYXRpbmdQYW5lbE1vdGlvbiwgdXNlRmxvYXRpbmdQYW5lbERyYWdUaWx0IH0gZnJvbSAnLi9mbG9hdGluZ1BhbmVsTW90aW9uJ1xuaW1wb3J0IHsgQ2hhdEFpTW9kYWxGb290ZXIgfSBmcm9tICcuL2NvbXBvbmVudHMvQ2hhdEFpTW9kYWxGb290ZXInXG5pbXBvcnQgeyB2YWxpZGF0ZUlzTWFpYSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3V0aWxzL3ZhbGlkYXRlSXNNYWlhJ1xuaW1wb3J0IHsgaXNNYXJrZXRwbGFjZUdsb2JhbENsb25lQWdlbnQgfSBmcm9tICcuLi8uLi8uLi91dGlscy9hZ2VudERpc3BsYXlOYW1lJ1xuaW1wb3J0IHsgQWdlbnQgfSBmcm9tICcuLi8uLi8uLi90eXBlcy9hZ2VudCdcbmltcG9ydCB7IFByb2plY3QgfSBmcm9tICcuLi8uLi8uLi90eXBlcy9Qcm9qZWN0J1xuaW1wb3J0IHsgQ2xpZW50IH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMvQ2xpZW50J1xuaW1wb3J0IHsgVGFzayB9IGZyb20gJy4uLy4uLy4uL3R5cGVzL1Rhc2snXG5pbXBvcnQgeyB1c2VGYXFzU3RvcmUgfSBmcm9tICcuLi8uLi8uLi9zdG9yZS91c2VGYXFzU3RvcmUnXG5pbXBvcnQgeyBmZXRjaE1haWEgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9tYWlhL2NsaWVudCdcbmltcG9ydCB7IG1hcENPUkxhbmcgfSBmcm9tICcuLi8uLi8uLi9sYW5nL3V0aWxzJ1xuaW1wb3J0IHsgRVZFTlRTLCB1c2VFdmVudCB9IGZyb20gJy4uLy4uLy4uL2hvb2tzL3VzZUV2ZW50J1xuXG50eXBlIENoYXRBSU1vZGFsUHJvcHMgPSB7XG4gIGNsYXNzTmFtZT86IHN0cmluZ1xuICBoYW5kbGVDbG9zZT86ICgpID0+IHZvaWRcbiAgcGFyZW50UmVmPzogUmVmT2JqZWN0PEhUTUxEaXZFbGVtZW50PlxufVxuXG4vKiogTWV0YWRhdGEgZGUgbGEgc2Vzc2lvbiBhYmllcnRhIChlbWl0aWRhIHBvciB1c2VDaGF0TWVzc2FnZXMgYWwgY2FyZ2FyIHVuYSBjb252ZXJzYWNpw7NuKS4gKi9cbnR5cGUgU2Vzc2lvbk1ldGEgPSB7XG4gIGNoYXRJZDogc3RyaW5nXG4gIGFnZW50VHlwZT86IHN0cmluZ1xuICBhZ2VudEVudGl0eT86IHN0cmluZ1xuICBwcm9qZWN0SWQ/OiBudW1iZXJcbiAgcHJvamVjdE5hbWU/OiBzdHJpbmdcbiAgY2xpZW50SWQ/OiBudW1iZXJcbiAgY2xpZW50TmFtZT86IHN0cmluZ1xuICB0YXNrSWQ/OiBudW1iZXJcbiAgdGFza05hbWU/OiBzdHJpbmdcbn1cblxuY29uc3QgTEVHQUNZX0NPTlRFWFRfRU5USVRJRVMgPSBbJ3Byb2plY3QnLCAndGFzaycsICdjbGllbnQnXSBhcyBjb25zdFxudHlwZSBMZWdhY3lDb250ZXh0RW50aXR5ID0gKHR5cGVvZiBMRUdBQ1lfQ09OVEVYVF9FTlRJVElFUylbbnVtYmVyXVxuXG50eXBlIEFpQ2hhdEJhY2tEZXN0aW5hdGlvbiA9ICdnbG9iYWxfY29udGV4dF9ob21lJyB8ICd0YXNrX2hvbWUnIHwgJ3Byb2plY3RfaG9tZScgfCAnY2xpZW50X2hvbWUnXG5cbmNvbnN0IHJlc29sdmVBaUNoYXRCYWNrRGVzdGluYXRpb24gPSAoXG4gIHNlY3Rpb246IFNlY3Rpb24sXG4gIGFnZW50VHlwZTogQWdlbnRbJ3R5cGUnXSB8IHVuZGVmaW5lZCxcbiAgY3VycmVudE9wdGlvbjogc3RyaW5nLFxuICBob21lT3B0aW9uOiBzdHJpbmdcbik6IEFpQ2hhdEJhY2tEZXN0aW5hdGlvbiA9PiB7XG4gIGlmIChzZWN0aW9uID09PSAnaGVhZGVyJyAmJiBhZ2VudFR5cGUgPT09ICdvcmNoZXN0cmF0b3InICYmIGN1cnJlbnRPcHRpb24gPT09IGhvbWVPcHRpb24pIHtcbiAgICByZXR1cm4gJ2dsb2JhbF9jb250ZXh0X2hvbWUnXG4gIH1cbiAgaWYgKHNlY3Rpb24gPT09ICd0YXNrJykgcmV0dXJuICd0YXNrX2hvbWUnXG4gIGlmIChzZWN0aW9uID09PSAncHJvamVjdCcpIHJldHVybiAncHJvamVjdF9ob21lJ1xuICBpZiAoc2VjdGlvbiA9PT0gJ2NsaWVudCcpIHJldHVybiAnY2xpZW50X2hvbWUnXG4gIHJldHVybiAnZ2xvYmFsX2NvbnRleHRfaG9tZSdcbn1cblxuZXhwb3J0IGNvbnN0IElEX01PREFMX0NIQVRfQUdFTlQgPSAnbW9kYWxzLXBvcnRhbC1tYWlhLWNoYXQtYWdlbnQnXG5cbmNvbnN0IHZhbGlkYXRlQWNjZXNzQnlGZWF0dXJlID0gKHNlY3Rpb246IHN0cmluZykgPT4ge1xuICBpZiAoc2VjdGlvbiA9PT0gJ2hlYWRlcicgJiYgKHdpbmRvdy5NQUlBX0NIQVRfQUlfRkVBVFVSRV9BQ0NFU1NfTVVMVElfQUdFTlRTIHx8IHdpbmRvdy5NQUlBX0NIQVRfQUlfRkVBVFVSRV9BQ0NFU1MpKSB7XG4gICAgcmV0dXJuIHRydWVcbiAgfVxuICBpZiAoKHNlY3Rpb24gPT09ICdwcm9qZWN0JyB8fCBzZWN0aW9uID09PSAnY2xpZW50JyB8fCBzZWN0aW9uID09PSAndGFzaycpICYmIHdpbmRvdy5NQUlBX0NIQVRfQUlfRkVBVFVSRV9BQ0NFU1MpIHtcbiAgICByZXR1cm4gdHJ1ZVxuICB9XG4gIHJldHVybiBmYWxzZVxufVxuXG5leHBvcnQgY29uc3QgQ2hhdEFJTW9kYWwgPSAoeyBoYW5kbGVDbG9zZSB9OiBDaGF0QUlNb2RhbFByb3BzKSA9PiB7XG4gIGNvbnN0IHVzZXIgPSB1c2VVc2VyKClcbiAgY29uc3QgeyBpMThuIH0gPSB1c2VUcmFuc2xhdGlvbihbU0VDVElPTlMuYWJtQWdlbnRdKVxuICBjb25zdCBhbXBsaXR1ZEV2ZW50ID0gdXNlRXZlbnQoKVxuXG4gIGNvbnN0IFtzaG93Q2xvc2VXaGlsZUdlbmVyYXRpbmdNb2RhbCwgc2V0U2hvd0Nsb3NlV2hpbGVHZW5lcmF0aW5nTW9kYWxdID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IFt1c2VySW5pdGlhbE1lc3NhZ2UsIHNldFVzZXJJbml0aWFsTWVzc2FnZV0gPSB1c2VTdGF0ZTx7XG4gICAgbWVzc2FnZTogc3RyaW5nXG4gICAgYXR0YWNobWVudHM6IEF0dGFjaG1lbnRGaWxlW11cbiAgICBmYXFJZD86IHN0cmluZ1xuICAgIGFnZW50U3VnZ2VzdGlvbklkPzogc3RyaW5nXG4gICAgbWVudGlvbnM/OiBDb250ZXh0TWVudGlvbltdXG4gICAgZnVhSWQ/OiBzdHJpbmdcbiAgICBzY0lkPzogc3RyaW5nXG4gICAgY29udGV4dERhdGE/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPlxuICB9Pih7XG4gICAgbWVzc2FnZTogJycsXG4gICAgYXR0YWNobWVudHM6IFtdLFxuICB9KVxuICBjb25zdCBbaW5pdGlhbENoYXRJZCwgc2V0SW5pdGlhbENoYXRJZF0gPSB1c2VTdGF0ZTxzdHJpbmcgfCBudWxsPihudWxsKVxuICBjb25zdCBbbmV3Q2hhdEtleSwgc2V0TmV3Q2hhdEtleV0gPSB1c2VTdGF0ZSgwKVxuICBjb25zdCBbc2Vzc2lvbk1ldGEsIHNldFNlc3Npb25NZXRhXSA9IHVzZVN0YXRlPFNlc3Npb25NZXRhIHwgbnVsbD4obnVsbClcbiAgY29uc3QgW3NlbmRNZXNzYWdlRnVuY3Rpb24sIHNldFNlbmRNZXNzYWdlRnVuY3Rpb25dID0gdXNlU3RhdGU8XG4gICAgfCAoKFxuICAgICAgICBtZXNzYWdlOiBzdHJpbmcsXG4gICAgICAgIGF0dGFjaG1lbnRzPzogQXR0YWNobWVudEZpbGVbXSxcbiAgICAgICAgZmFxSWQ/OiBzdHJpbmcsXG4gICAgICAgIGFnZW50U3VnZ2VzdGlvbklkPzogc3RyaW5nLFxuICAgICAgICBtZW50aW9ucz86IENvbnRleHRNZW50aW9uW10sXG4gICAgICAgIGZ1YUlkPzogc3RyaW5nLFxuICAgICAgICBzY0lkPzogc3RyaW5nXG4gICAgICApID0+IHZvaWQpXG4gICAgfCBudWxsXG4gID4obnVsbClcbiAgY29uc3QgW3N0b3BHZW5lcmF0aW9uRnVuY3Rpb24sIHNldFN0b3BHZW5lcmF0aW9uRnVuY3Rpb25dID0gdXNlU3RhdGU8KCgpID0+IHZvaWQpIHwgbnVsbD4obnVsbClcbiAgY29uc3QgW2lzU3RyZWFtaW5nLCBzZXRJc1N0cmVhbWluZ10gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgW2lzV3JpdGluZywgc2V0SXNXcml0aW5nXSA9IHVzZVN0YXRlKGZhbHNlKVxuXG4gIGNvbnN0IGhhbmRsZUNsb3NlTW9kYWwgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgaWYgKGlzU3RyZWFtaW5nIHx8IGlzV3JpdGluZykge1xuICAgICAgc2V0U2hvd0Nsb3NlV2hpbGVHZW5lcmF0aW5nTW9kYWwodHJ1ZSlcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIHVzZUZhcXNTdG9yZS5nZXRTdGF0ZSgpLmNsZWFyRmFxcygpXG4gICAgaGFuZGxlQ2xvc2U/LigpXG4gIH0sIFtoYW5kbGVDbG9zZSwgaXNTdHJlYW1pbmcsIGlzV3JpdGluZ10pXG5cbiAgY29uc3QgaGFuZGxlRGlzbWlzc0Nsb3NlV2hpbGVHZW5lcmF0aW5nTW9kYWwgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgc2V0U2hvd0Nsb3NlV2hpbGVHZW5lcmF0aW5nTW9kYWwoZmFsc2UpXG4gIH0sIFtdKVxuXG4gIGNvbnN0IGhhbmRsZUNvbmZpcm1DbG9zZVdoaWxlR2VuZXJhdGluZyA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBzdG9wR2VuZXJhdGlvbkZ1bmN0aW9uPy4oKVxuICAgIHNldFNob3dDbG9zZVdoaWxlR2VuZXJhdGluZ01vZGFsKGZhbHNlKVxuICAgIHVzZUZhcXNTdG9yZS5nZXRTdGF0ZSgpLmNsZWFyRmFxcygpXG4gICAgaGFuZGxlQ2xvc2U/LigpXG4gIH0sIFtoYW5kbGVDbG9zZSwgc3RvcEdlbmVyYXRpb25GdW5jdGlvbl0pXG5cbiAgY29uc3QgW3JlZmV0Y2hDaGF0cywgc2V0UmVmZXRjaENoYXRzXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBbY3VycmVudE9wdGlvbiwgc2V0Q3VycmVudE9wdGlvbl0gPSB1c2VTdGF0ZShvcHRpb25zLmhvbWUpXG4gIGNvbnN0IFtoYXNFcnJvciwgc2V0SGFzRXJyb3JdID0gdXNlU3RhdGUoZmFsc2UpXG4gIC8vIEVuIHByb2plY3QvY2xpZW50L3Rhc2s6IGVsIHVzdWFyaW8gcmVpbmljacOzIGVsIGNvbnRleHRvIGRlbCBvcmNoZXN0cmF0b3IgKGxvIGxpbXBpw7MgeSBwYXPDsyBwb3JcbiAgLy8gZWwgc2VsZWN0b3IgZGUgY29udGV4dG9zIHJlY2llbnRlcykuIEhhYmlsaXRhIGVsIGJvdMOzbiBcInZvbHZlclwiIGVuIGVsIGhvbWUgcGFzbyAyIGRlIGVzYXNcbiAgLy8gc2VjY2lvbmVzLiBTZSByZXNldGVhIGFsIGNlcnJhci9yZWFicmlyIGVsIG1vZGFsIChlbCBjb21wb25lbnRlIHNlIGRlc21vbnRhKS5cbiAgY29uc3QgW2RpZFJlc2V0Q29udGV4dEluU2VjdGlvbiwgc2V0RGlkUmVzZXRDb250ZXh0SW5TZWN0aW9uXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBwcmV2SGFzUGlubmVkQ29udGV4dFJlZiA9IHVzZVJlZihmYWxzZSlcbiAgY29uc3QgaGFuZGxlcnMgPSB1c2VNZW1vKCgpID0+IGJ1aWxkSGFuZGxlcnMoc2V0Q3VycmVudE9wdGlvbiwgc2V0SGFzRXJyb3IpLCBbXSlcbiAgY29uc3QgW3NpZGViYXJIYXNFcnJvciwgc2V0U2lkZWJhckhhc0Vycm9yXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCByZXNldFNlbGVjdGVkQ2hhdFJlZiA9IHVzZVJlZjwoKCkgPT4gdm9pZCkgfCBudWxsPihudWxsKVxuICBjb25zdCBsYW5nID0gaTE4bi5sYW5ndWFnZSA9PT0gJ2JyJyA/ICdwdC1icicgOiBpMThuLmxhbmd1YWdlXG5cbiAgbW9tZW50LmxvY2FsZShsYW5nKVxuXG4gIGNvbnN0IHtcbiAgICBzZWxlY3RBZ2VudCxcbiAgICBjbGVhckFnZW50LFxuICAgIHNlY3Rpb24sXG4gICAgYWdlbnQsXG4gICAgcHJvamVjdCxcbiAgICBjbGllbnQsXG4gICAgdGFzayxcbiAgICBjaGlwc1Byb2plY3QsXG4gICAgdG9nZ2xlV2ViU2VhcmNoLFxuICAgIGlzV2ViU2VhcmNoQWN0aXZlLFxuICAgIHNldENoaXBzUHJvamVjdCxcbiAgICBzZXRDbGllbnQsXG4gICAgc2V0UHJvamVjdCxcbiAgICBiYW5uZXJFbnRyeUZhcSxcbiAgICBzZXRUYXNrLFxuICB9ID0gdXNlR2xvYmFsQ29udGV4dCgpXG5cbiAgLy8gWi1pbmRleCBwYXJhIHRvb2x0aXBzIGVuIHNlY3Rpb24gJ3Rhc2snIChtb2RhbCBmbG90YW50ZSBlbGV2YWRvKVxuICBjb25zdCB0b29sdGlwWkluZGV4ID0gdXNlTWFpYVRhc2tQYW5lbFpJbmRleCgxNTAwLCAnb3ZlcmxheScpXG5cbiAgY29uc3Qge1xuICAgIGFnZW50cyxcbiAgICBsb2FkaW5nLFxuICAgIGxvYWRpbmdNb3JlLFxuICAgIGVycm9yOiBhZ2VudEVycm9yLFxuICAgIGhhbmRsZUdldEFnZW50cyxcbiAgICBsb2FkTW9yZUFnZW50cyxcbiAgICBzZWFyY2hDdXN0b21BZ2VudHMsXG4gICAgc2VhcmNoTG9hZGluZyxcbiAgICBhZGRBZ2VudCxcbiAgICByZW1vdmVBZ2VudCxcbiAgICB1cGRhdGVBZ2VudCxcbiAgICB1cGRhdGVBZ2VudEZhdm9yaXRlLFxuICAgIHNlbGVjdEZpcnN0QWdlbnQsXG4gICAgc29ydEFnZW50c0xpc3QsXG4gIH0gPSB1c2VHZXRBZ2VudHMoeyBzZWxlY3RBZ2VudCwgc2VjdGlvbiwgYWdlbnQsIGhhbmRsZUdvSG9tZTogaGFuZGxlcnMuaG9tZSB9KVxuXG4gIGNvbnN0IGlzTUFJQSA9IHZhbGlkYXRlSXNNYWlhKGFnZW50IGFzIEFnZW50KVxuXG4gIGNvbnN0IHVzZXJIYXNQZXJtaXNzaW9ucyA9XG4gICAgKHVzZXI/LnBlcm1pc3Npb25zPy5haV9hZ2VudHM/LmNyZWF0ZSB8fFxuICAgICAgdXNlcj8ucGVybWlzc2lvbnM/LmFpX2FnZW50cz8uZWRpdCB8fFxuICAgICAgdXNlcj8ucGVybWlzc2lvbnM/LmFpX2FnZW50cz8uZGVsZXRlKSAmJlxuICAgIHdpbmRvdy5NQUlBX0NIQVRfQUlfRkVBVFVSRV9BQ0NFU1NfTVVMVElfQUdFTlRTXG5cbiAgY29uc3QgY29tcHV0ZWRDdXJyZW50T3B0aW9uID0gdXNlTWVtbygoKSA9PiB7XG4gICAgY29uc3QgaXNHbG9iYWxTcGVjaWFsaXN0ID0gaXNNQUlBICYmIGFnZW50Py5lbnRpdHkgPT09ICdnbG9iYWwnXG4gICAgY29uc3QgaXNQcm9qZWN0U3BlY2lhbGlzdCA9IGlzTUFJQSAmJiAoYWdlbnQ/LmVudGl0eSA9PT0gJ3Byb2plY3QnIHx8IGFnZW50Py5lbnRpdHkgPT0gbnVsbClcbiAgICBjb25zdCBpc0NsaWVudFNwZWNpYWxpc3QgPSBpc01BSUEgJiYgYWdlbnQ/LmVudGl0eSA9PT0gJ2NsaWVudCdcbiAgICBjb25zdCBpc01haWFrZXIgPSBpc01hcmtldHBsYWNlR2xvYmFsQ2xvbmVBZ2VudChhZ2VudClcblxuICAgIGlmIChjdXJyZW50T3B0aW9uID09PSBvcHRpb25zLm15QWdlbnRzICYmIHdpbmRvdy5NQUlBX0NIQVRfQUlfRkVBVFVSRV9BQ0NFU1NfTVVMVElfQUdFTlRTKSB7XG4gICAgICByZXR1cm4gb3B0aW9ucy5teUFnZW50c1xuICAgIH1cblxuICAgIC8vIEVsIG9yY2hlc3RyYXRvciAoTUFJQSkgbXVlc3RyYSBzdSBob21lIGNvbiBGQVFzL2FjY2lvbmVzIGZyZWN1ZW50ZXM7IGVsIHJlc3RvIGRlXG4gICAgLy8gbG9zIGdsb2JhbCBzcGVjaWFsaXN0cyAoY2xvbmVzIGdsb2JhbGVzIG5vLW1haWFrZXIpIHNpZ3VlbiB5ZW5kbyBkaXJlY3RvIGFsIGNoYXQuXG4gICAgaWYgKGlzR2xvYmFsU3BlY2lhbGlzdCAmJiAhaXNNYWlha2VyICYmIGFnZW50Py50eXBlICE9PSAnb3JjaGVzdHJhdG9yJyAmJiBjdXJyZW50T3B0aW9uID09PSBvcHRpb25zLmhvbWUpIHtcbiAgICAgIHJldHVybiBvcHRpb25zLmNoYXRcbiAgICB9XG5cbiAgICBjb25zdCBzaG91bGRTaG93UHJvamVjdFNlbGVjdG9yID0gY3VycmVudE9wdGlvbiAhPT0gb3B0aW9ucy5jaGF0ICYmIGlzUHJvamVjdFNwZWNpYWxpc3QgJiYgIXByb2plY3RcbiAgICBjb25zdCBzaG91bGRTaG93Q2xpZW50U2VsZWN0b3IgPSBjdXJyZW50T3B0aW9uICE9PSBvcHRpb25zLmNoYXQgJiYgaXNDbGllbnRTcGVjaWFsaXN0ICYmICFjbGllbnRcblxuICAgIGlmIChzaG91bGRTaG93UHJvamVjdFNlbGVjdG9yKSB7XG4gICAgICByZXR1cm4gb3B0aW9ucy5wcm9qZWN0U2VsZWN0b3JcbiAgICB9XG4gICAgaWYgKHNob3VsZFNob3dDbGllbnRTZWxlY3Rvcikge1xuICAgICAgcmV0dXJuIG9wdGlvbnMuY2xpZW50U2VsZWN0b3JcbiAgICB9XG4gICAgcmV0dXJuIGN1cnJlbnRPcHRpb25cbiAgfSwgW2N1cnJlbnRPcHRpb24sIHByb2plY3QsIGNsaWVudCwgaXNNQUlBLCBhZ2VudD8uZW50aXR5LCBhZ2VudD8ubmFtZSwgYWdlbnQ/LnR5cGVdKVxuXG4gIGNvbnN0IGlzTWFpYWtlckFnZW50U2VsZWN0ZWQgPSB1c2VNZW1vKCgpID0+IGlzTWFya2V0cGxhY2VHbG9iYWxDbG9uZUFnZW50KGFnZW50KSwgW2FnZW50XSlcblxuICBjb25zdCBzaWRlYmFyQWdlbnRzTmF2QWN0aXZlID0gdXNlTWVtbygoKTogJ21haWFrZXInIHwgJ215QWdlbnRzJyB8IG51bGwgPT4ge1xuICAgIGlmIChjb21wdXRlZEN1cnJlbnRPcHRpb24gPT09IG9wdGlvbnMubXlBZ2VudHMpIHJldHVybiAnbXlBZ2VudHMnXG4gICAgaWYgKGlzTWFpYWtlckFnZW50U2VsZWN0ZWQpIHJldHVybiAnbWFpYWtlcidcbiAgICByZXR1cm4gbnVsbFxuICB9LCBbY29tcHV0ZWRDdXJyZW50T3B0aW9uLCBpc01haWFrZXJBZ2VudFNlbGVjdGVkXSlcblxuICAvKiBSZWFjdGl2YXIgY29uIGxhIGZpbGEg4oCcTWlzIGFnZW50ZXPigJ0gZW4gU2lkZWJhcjogbXlBZ2VudHNDb3VudCBwcm9wXG4gIGNvbnN0IHNpZGViYXJNeUFnZW50c0NvdW50ID0gdXNlTWVtbygoKSA9PiB7XG4gICAgcmV0dXJuIGFnZW50cy5kYXRhLmZpbHRlcihcbiAgICAgIGEgPT4gIShhLnR5cGUgPT09ICdvcmNoZXN0cmF0b3InIHx8IChhLnR5cGUgPT09ICdjbG9uZScgJiYgYS5lbnRpdHkgPT09ICdnbG9iYWwnICYmIC8obWFpYWtlcnxtYXJrZXRwbGFjZSkvaS50ZXN0KGEubmFtZSB8fCAnJykpKVxuICAgIClcbiAgICAgIC5sZW5ndGhcbiAgfSwgW2FnZW50cy5kYXRhXSlcbiAgKi9cblxuICBjb25zdCBhZ2VudHNGZXRjaGVkUmVmID0gdXNlUmVmKGZhbHNlKVxuXG4gIGNvbnN0IHNlbGVjdG9yID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihgIyR7SURfTU9EQUxfQ0hBVF9BR0VOVH1gKVxuXG4gIC8vIFRhc2sgcGFuZWwgeSBiYW5uZXIgZGUgcHJveWVjdG8gYWJyZW4gZW4gZmxvdGFudGUgcG9yIGRlZmF1bHQgKG5vIHRhcGFyIGVsIGNvbnRleHRvIGRldHLDoXMpLlxuICAvLyBGdWVyYSBkZSBlc29zIGNvbnRleHRvcyBzZSByZXNwZXRhIGxhIHByZWZlcmVuY2lhIGd1YXJkYWRhIGVuIGxvY2FsU3RvcmFnZS5cbiAgY29uc3QgW2xheW91dE1vZGUsIHNldExheW91dE1vZGVdID0gdXNlU3RhdGU8TWFpYUNoYXRNb2RhbExheW91dE1vZGU+KCgpID0+XG4gICAgcmVzb2x2ZUluaXRpYWxNYWlhQ2hhdExheW91dE1vZGUoeyBzZWN0aW9uLCBiYW5uZXJFbnRyeUZhcSB9KVxuICApXG5cbiAgY29uc3QgaGFuZGxlTGF5b3V0TW9kZUNoYW5nZSA9IHVzZUNhbGxiYWNrKChtb2RlOiBNYWlhQ2hhdE1vZGFsTGF5b3V0TW9kZSkgPT4ge1xuICAgIHNldFN0b3JlZE1haWFDaGF0TGF5b3V0TW9kZShtb2RlKVxuICAgIHNldExheW91dE1vZGUobW9kZSlcbiAgfSwgW10pXG4gIGNvbnN0IGV4cGFuZGVkID0gbGF5b3V0TW9kZSA9PT0gJ2Z1bGxzY3JlZW4nXG4gIGNvbnN0IGlzRmxvYXRpbmcgPSBsYXlvdXRNb2RlID09PSAnZmxvYXRpbmcnXG4gIGNvbnN0IGNvbnRlbnRXcmFwcGVyUmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKVxuICBjb25zdCBbZHJhZ1Bvc2l0aW9uLCBzZXREcmFnUG9zaXRpb25dID0gdXNlU3RhdGU8eyB4OiBudW1iZXI7IHk6IG51bWJlciB9IHwgbnVsbD4obnVsbClcbiAgY29uc3QgeyB0aWx0TW90aW9uLCBzdGFydFBvaW50ZXJUcmFja2luZywgc2FtcGxlUG9pbnRlck1vdmUsIGVuZFBvaW50ZXJUcmFja2luZyB9ID1cbiAgICB1c2VGbG9hdGluZ1BhbmVsRHJhZ1RpbHQoaXNGbG9hdGluZylcbiAgY29uc3QgZHJhZ1N0YXRlUmVmID0gdXNlUmVmPHtcbiAgICBwb2ludGVySWQ6IG51bWJlclxuICAgIG9mZnNldFg6IG51bWJlclxuICAgIG9mZnNldFk6IG51bWJlclxuICB9IHwgbnVsbD4obnVsbClcblxuICBjb25zdCBjbGFtcERyYWdQb3NpdGlvbiA9IHVzZUNhbGxiYWNrKCh4OiBudW1iZXIsIHk6IG51bWJlcikgPT4ge1xuICAgIGNvbnN0IGNvbnRlbnRXcmFwcGVyID0gY29udGVudFdyYXBwZXJSZWYuY3VycmVudFxuICAgIGlmICghY29udGVudFdyYXBwZXIpIHtcbiAgICAgIHJldHVybiB7IHgsIHkgfVxuICAgIH1cblxuICAgIGNvbnN0IHsgd2lkdGgsIGhlaWdodCB9ID0gY29udGVudFdyYXBwZXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KClcbiAgICBjb25zdCBvZmZzZXQgPSAxNlxuICAgIGNvbnN0IG1heFggPSBNYXRoLm1heChvZmZzZXQsIHdpbmRvdy5pbm5lcldpZHRoIC0gd2lkdGggLSBvZmZzZXQpXG4gICAgY29uc3QgbWF4WSA9IE1hdGgubWF4KG9mZnNldCwgd2luZG93LmlubmVySGVpZ2h0IC0gaGVpZ2h0IC0gb2Zmc2V0KVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIHg6IE1hdGgubWluKE1hdGgubWF4KHgsIG9mZnNldCksIG1heFgpLFxuICAgICAgeTogTWF0aC5taW4oTWF0aC5tYXgoeSwgb2Zmc2V0KSwgbWF4WSksXG4gICAgfVxuICB9LCBbXSlcblxuICB1c2VMYXlvdXRFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChsYXlvdXRNb2RlICE9PSAnZmxvYXRpbmcnKSB7XG4gICAgICBzZXREcmFnUG9zaXRpb24obnVsbClcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIHNldERyYWdQb3NpdGlvbihwcmV2ID0+IHtcbiAgICAgIGlmIChwcmV2KSB7XG4gICAgICAgIHJldHVybiBjbGFtcERyYWdQb3NpdGlvbihwcmV2LngsIHByZXYueSlcbiAgICAgIH1cbiAgICAgIGNvbnN0IHBhZCA9IDE2XG4gICAgICBjb25zdCB4ID0gd2luZG93LmlubmVyV2lkdGggLSBnZXRNYWlhRmxvYXRpbmdQYW5lbFdpZHRoUHgoKSAtIHBhZFxuICAgICAgcmV0dXJuIGNsYW1wRHJhZ1Bvc2l0aW9uKHgsIHBhZClcbiAgICB9KVxuICB9LCBbbGF5b3V0TW9kZSwgY2xhbXBEcmFnUG9zaXRpb25dKVxuXG4gIGNvbnN0IGhhbmRsZURyYWdFbmQgPSB1c2VDYWxsYmFjayhcbiAgICAoZXZlbnQ6IFJlYWN0UG9pbnRlckV2ZW50PEhUTUxEaXZFbGVtZW50PikgPT4ge1xuICAgICAgZW5kUG9pbnRlclRyYWNraW5nKClcbiAgICAgIGlmIChkcmFnU3RhdGVSZWYuY3VycmVudD8ucG9pbnRlcklkICE9PSBldmVudC5wb2ludGVySWQpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIGRyYWdTdGF0ZVJlZi5jdXJyZW50ID0gbnVsbFxuICAgICAgZG9jdW1lbnQuYm9keS5zdHlsZS51c2VyU2VsZWN0ID0gJydcbiAgICAgIGRvY3VtZW50LmJvZHkuc3R5bGUuY3Vyc29yID0gJydcbiAgICB9LFxuICAgIFtlbmRQb2ludGVyVHJhY2tpbmddXG4gIClcblxuICBjb25zdCBoYW5kbGVEcmFnTW92ZSA9IHVzZUNhbGxiYWNrKFxuICAgIChldmVudDogUmVhY3RQb2ludGVyRXZlbnQ8SFRNTERpdkVsZW1lbnQ+KSA9PiB7XG4gICAgICBjb25zdCBkcmFnU3RhdGUgPSBkcmFnU3RhdGVSZWYuY3VycmVudFxuICAgICAgaWYgKCFkcmFnU3RhdGUgfHwgZHJhZ1N0YXRlLnBvaW50ZXJJZCAhPT0gZXZlbnQucG9pbnRlcklkKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBzYW1wbGVQb2ludGVyTW92ZShldmVudC5jbGllbnRYLCBldmVudC5jbGllbnRZKVxuXG4gICAgICBjb25zdCBuZXh0UG9zaXRpb24gPSBjbGFtcERyYWdQb3NpdGlvbihldmVudC5jbGllbnRYIC0gZHJhZ1N0YXRlLm9mZnNldFgsIGV2ZW50LmNsaWVudFkgLSBkcmFnU3RhdGUub2Zmc2V0WSlcblxuICAgICAgc2V0RHJhZ1Bvc2l0aW9uKHByZXYgPT4ge1xuICAgICAgICBpZiAocHJldiAmJiBwcmV2LnggPT09IG5leHRQb3NpdGlvbi54ICYmIHByZXYueSA9PT0gbmV4dFBvc2l0aW9uLnkpIHtcbiAgICAgICAgICByZXR1cm4gcHJldlxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBuZXh0UG9zaXRpb25cbiAgICAgIH0pXG4gICAgfSxcbiAgICBbY2xhbXBEcmFnUG9zaXRpb24sIHNhbXBsZVBvaW50ZXJNb3ZlXVxuICApXG5cbiAgY29uc3QgcmVzb2x2ZWREcmFnUG9zaXRpb24gPSB1c2VNZW1vKCgpID0+IHtcbiAgICBpZiAobGF5b3V0TW9kZSAhPT0gJ2Zsb2F0aW5nJykge1xuICAgICAgcmV0dXJuIGRyYWdQb3NpdGlvblxuICAgIH1cbiAgICBpZiAoZHJhZ1Bvc2l0aW9uKSB7XG4gICAgICByZXR1cm4gZHJhZ1Bvc2l0aW9uXG4gICAgfVxuICAgIGNvbnN0IHBhZCA9IDE2XG4gICAgY29uc3QgeCA9IHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnID8gd2luZG93LmlubmVyV2lkdGggLSBnZXRNYWlhRmxvYXRpbmdQYW5lbFdpZHRoUHgoKSAtIHBhZCA6IHBhZFxuICAgIHJldHVybiBjbGFtcERyYWdQb3NpdGlvbih4LCBwYWQpXG4gIH0sIFtsYXlvdXRNb2RlLCBkcmFnUG9zaXRpb24sIGNsYW1wRHJhZ1Bvc2l0aW9uXSlcblxuICBjb25zdCBoYW5kbGVEcmFnU3RhcnQgPSB1c2VDYWxsYmFjayhcbiAgICAoZXZlbnQ6IFJlYWN0UG9pbnRlckV2ZW50PEhUTUxEaXZFbGVtZW50PikgPT4ge1xuICAgICAgaWYgKCFpc0Zsb2F0aW5nIHx8IGV2ZW50LmJ1dHRvbiAhPT0gMCkge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgY29uc3QgdGFyZ2V0ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50XG4gICAgICBpZiAodGFyZ2V0LmNsb3Nlc3QoJ2J1dHRvbiwgYSwgaW5wdXQsIHRleHRhcmVhLCBzZWxlY3QsIFtyb2xlPVwiYnV0dG9uXCJdLCBbZGF0YS1uby1kcmFnPVwidHJ1ZVwiXScpKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBjb25zdCBjb250ZW50V3JhcHBlciA9IGNvbnRlbnRXcmFwcGVyUmVmLmN1cnJlbnRcbiAgICAgIGlmICghY29udGVudFdyYXBwZXIpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHJlY3QgPSBjb250ZW50V3JhcHBlci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKVxuICAgICAgY29uc3QgaW5pdGlhbFBvc2l0aW9uID0gcmVzb2x2ZWREcmFnUG9zaXRpb24gPz8gY2xhbXBEcmFnUG9zaXRpb24ocmVjdC5sZWZ0LCByZWN0LnRvcClcbiAgICAgIGNvbnN0IHBvaW50ZXJPZmZzZXRYID0gZXZlbnQuY2xpZW50WCAtIGluaXRpYWxQb3NpdGlvbi54XG4gICAgICBjb25zdCBwb2ludGVyT2Zmc2V0WSA9IGV2ZW50LmNsaWVudFkgLSBpbml0aWFsUG9zaXRpb24ueVxuXG4gICAgICBzZXREcmFnUG9zaXRpb24oaW5pdGlhbFBvc2l0aW9uKVxuICAgICAgZHJhZ1N0YXRlUmVmLmN1cnJlbnQgPSB7XG4gICAgICAgIHBvaW50ZXJJZDogZXZlbnQucG9pbnRlcklkLFxuICAgICAgICBvZmZzZXRYOiBwb2ludGVyT2Zmc2V0WCxcbiAgICAgICAgb2Zmc2V0WTogcG9pbnRlck9mZnNldFksXG4gICAgICB9XG5cbiAgICAgIGV2ZW50LmN1cnJlbnRUYXJnZXQuc2V0UG9pbnRlckNhcHR1cmUoZXZlbnQucG9pbnRlcklkKVxuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKVxuXG4gICAgICBkb2N1bWVudC5ib2R5LnN0eWxlLnVzZXJTZWxlY3QgPSAnbm9uZSdcbiAgICAgIGRvY3VtZW50LmJvZHkuc3R5bGUuY3Vyc29yID0gJ2dyYWJiaW5nJ1xuICAgICAgYW1wbGl0dWRFdmVudChFVkVOVFMuYWlDaGF0RHJhZ2dhYmxlKVxuICAgICAgc3RhcnRQb2ludGVyVHJhY2tpbmcoZXZlbnQuY2xpZW50WCwgZXZlbnQuY2xpZW50WSlcbiAgICB9LFxuICAgIFtjbGFtcERyYWdQb3NpdGlvbiwgaXNGbG9hdGluZywgcmVzb2x2ZWREcmFnUG9zaXRpb24sIHN0YXJ0UG9pbnRlclRyYWNraW5nXVxuICApXG5cbiAgY29uc3Qgc3RhcnRDaGF0ID0gdXNlQ2FsbGJhY2soXG4gICAgKFxuICAgICAgbWVzc2FnZT86IHN0cmluZyxcbiAgICAgIGF0dGFjaG1lbnRzPzogQXR0YWNobWVudEZpbGVbXSxcbiAgICAgIGZhcUlkPzogc3RyaW5nLFxuICAgICAgYWdlbnRTdWdnZXN0aW9uSWQ/OiBzdHJpbmcsXG4gICAgICBtZW50aW9ucz86IENvbnRleHRNZW50aW9uW10sXG4gICAgICBmdWFJZD86IHN0cmluZyxcbiAgICAgIHNjSWQ/OiBzdHJpbmcsXG4gICAgICBjb250ZXh0RGF0YT86IFJlY29yZDxzdHJpbmcsIHVua25vd24+XG4gICAgKSA9PiB7XG4gICAgICBpZiAoc2lkZWJhckhhc0Vycm9yKSB7XG4gICAgICAgIHNldFNpZGViYXJIYXNFcnJvcihmYWxzZSlcbiAgICAgIH1cbiAgICAgIHNldEluaXRpYWxDaGF0SWQobnVsbClcbiAgICAgIHNldE5ld0NoYXRLZXkocHJldiA9PiBwcmV2ICsgMSlcbiAgICAgIHNldFVzZXJJbml0aWFsTWVzc2FnZSh7XG4gICAgICAgIG1lc3NhZ2U6IG1lc3NhZ2UgfHwgJycsXG4gICAgICAgIGF0dGFjaG1lbnRzOiBhdHRhY2htZW50cyB8fCBbXSxcbiAgICAgICAgLi4uKGZhcUlkID8geyBmYXFJZCB9IDoge30pLFxuICAgICAgICAuLi4oYWdlbnRTdWdnZXN0aW9uSWQgPyB7IGFnZW50U3VnZ2VzdGlvbklkIH0gOiB7fSksXG4gICAgICAgIC4uLihtZW50aW9ucyAmJiBtZW50aW9ucy5sZW5ndGggPiAwID8geyBtZW50aW9ucyB9IDoge30pLFxuICAgICAgICAuLi4oZnVhSWQgPyB7IGZ1YUlkIH0gOiB7fSksXG4gICAgICAgIC4uLihzY0lkID8geyBzY0lkIH0gOiB7fSksXG4gICAgICAgIC4uLihjb250ZXh0RGF0YSA/IHsgY29udGV4dERhdGEgfSA6IHt9KSxcbiAgICAgIH0pXG4gICAgICBoYW5kbGVycy5jaGF0KClcbiAgICB9LFxuICAgIFtoYW5kbGVycywgc2lkZWJhckhhc0Vycm9yXVxuICApXG5cbiAgY29uc3QgYmFubmVyRmFxQXV0b1NlbnRSZWYgPSB1c2VSZWYoZmFsc2UpXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBlbnRpdHlSZWFkeSA9IHNlY3Rpb24gPT09ICdwcm9qZWN0JyA/IEJvb2xlYW4ocHJvamVjdD8uaWQpIDogc2VjdGlvbiA9PT0gJ2NsaWVudCcgPyBCb29sZWFuKGNsaWVudD8uaWQpIDogdHJ1ZVxuXG4gICAgaWYgKCFiYW5uZXJFbnRyeUZhcT8uZmFxVGl0bGU/LnRyaW0oKSB8fCBiYW5uZXJGYXFBdXRvU2VudFJlZi5jdXJyZW50IHx8IGxvYWRpbmcgfHwgIWFnZW50Py5pZCB8fCAhZW50aXR5UmVhZHkpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGJhbm5lckZhcUF1dG9TZW50UmVmLmN1cnJlbnQgPSB0cnVlXG4gICAgc3RhcnRDaGF0KFxuICAgICAgYmFubmVyRW50cnlGYXEuZmFxVGl0bGUsXG4gICAgICBbXSxcbiAgICAgIGJhbm5lckVudHJ5RmFxLmZhcUlkLFxuICAgICAgdW5kZWZpbmVkLFxuICAgICAgdW5kZWZpbmVkLFxuICAgICAgdW5kZWZpbmVkLFxuICAgICAgdW5kZWZpbmVkLFxuICAgICAgYmFubmVyRW50cnlGYXEuY29udGV4dERhdGFcbiAgICApXG4gIH0sIFtcbiAgICBiYW5uZXJFbnRyeUZhcT8uZmFxSWQsXG4gICAgYmFubmVyRW50cnlGYXE/LmZhcVRpdGxlLFxuICAgIGJhbm5lckVudHJ5RmFxPy5jb250ZXh0RGF0YSxcbiAgICBsb2FkaW5nLFxuICAgIGFnZW50Py5pZCxcbiAgICBhZ2VudD8uZW50aXR5LFxuICAgIHByb2plY3Q/LmlkLFxuICAgIGNsaWVudD8uaWQsXG4gICAgc2VjdGlvbixcbiAgICBzdGFydENoYXQsXG4gIF0pXG5cbiAgY29uc3QgZ29Ub0NoYXQgPSB1c2VDYWxsYmFjayhcbiAgICAoY2hhdDogYW55KSA9PiB7XG4gICAgICBzZXRVc2VySW5pdGlhbE1lc3NhZ2UoeyBtZXNzYWdlOiAnJywgYXR0YWNobWVudHM6IFtdIH0pXG4gICAgICBzZXRJbml0aWFsQ2hhdElkKGNoYXQuc2Vzc2lvbkV4dGVybmFsSWQpXG4gICAgICBjb25zdCBzZWxlY3RlZEFnZW50ID0gYWdlbnRzLmRhdGEuZmluZChhZ2VudEl0ZW0gPT4gYWdlbnRJdGVtLmlkID09PSBjaGF0LmFnZW50SWQpXG4gICAgICBpZiAoc2VsZWN0ZWRBZ2VudCkge1xuICAgICAgICBzZWxlY3RBZ2VudChzZWxlY3RlZEFnZW50KVxuICAgICAgfVxuICAgICAgLy8gRGlzcGF0Y2ggZXZlbnQgdG8gY2xlYXIgdGhlIGlucHV0IHRleHRhcmVhXG4gICAgICBkb2N1bWVudC5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgnY2hhdC1zZXNzaW9uLWNoYW5nZWQnKSlcbiAgICAgIGhhbmRsZXJzLmNoYXQoKVxuICAgIH0sXG4gICAgW2hhbmRsZXJzLCBhZ2VudHMsIHNlbGVjdEFnZW50XVxuICApXG5cbiAgY29uc3QgaGFuZGxlU2VuZE1lc3NhZ2VSZWFkeSA9IHVzZUNhbGxiYWNrKFxuICAgIChcbiAgICAgIHNlbmRNZXNzYWdlOiAoXG4gICAgICAgIG1lc3NhZ2U6IHN0cmluZyxcbiAgICAgICAgYXR0YWNobWVudHM/OiBBdHRhY2htZW50RmlsZVtdLFxuICAgICAgICBmYXFJZD86IHN0cmluZyxcbiAgICAgICAgYWdlbnRTdWdnZXN0aW9uSWQ/OiBzdHJpbmcsXG4gICAgICAgIG1lbnRpb25zPzogQ29udGV4dE1lbnRpb25bXSxcbiAgICAgICAgZnVhSWQ/OiBzdHJpbmcsXG4gICAgICAgIHNjSWQ/OiBzdHJpbmdcbiAgICAgICkgPT4gdm9pZCxcbiAgICAgIHN0b3BHZW5lcmF0aW9uOiAoKSA9PiB2b2lkLFxuICAgICAgc3RyZWFtaW5nOiBib29sZWFuLFxuICAgICAgd3JpdGluZzogYm9vbGVhblxuICAgICkgPT4ge1xuICAgICAgc2V0U2VuZE1lc3NhZ2VGdW5jdGlvbigoKSA9PiBzZW5kTWVzc2FnZSlcbiAgICAgIHNldFN0b3BHZW5lcmF0aW9uRnVuY3Rpb24oKCkgPT4gc3RvcEdlbmVyYXRpb24pXG4gICAgICBzZXRJc1N0cmVhbWluZyhzdHJlYW1pbmcpXG4gICAgICBzZXRJc1dyaXRpbmcod3JpdGluZylcbiAgICB9LFxuICAgIFtdXG4gIClcblxuICBjb25zdCBoYW5kbGVTZW5kTWVzc2FnZSA9IHVzZUNhbGxiYWNrKFxuICAgIChcbiAgICAgIG1lc3NhZ2U6IHN0cmluZyxcbiAgICAgIGF0dGFjaG1lbnRzPzogQXR0YWNobWVudEZpbGVbXSxcbiAgICAgIGZhcUlkPzogc3RyaW5nLFxuICAgICAgYWdlbnRTdWdnZXN0aW9uSWQ/OiBzdHJpbmcsXG4gICAgICBtZW50aW9ucz86IENvbnRleHRNZW50aW9uW10sXG4gICAgICBmdWFJZD86IHN0cmluZyxcbiAgICAgIHNjSWQ/OiBzdHJpbmdcbiAgICApID0+IHtcbiAgICAgIGlmIChzaWRlYmFySGFzRXJyb3IpIHtcbiAgICAgICAgc2V0U2lkZWJhckhhc0Vycm9yKGZhbHNlKVxuICAgICAgfVxuICAgICAgaWYgKHNlbmRNZXNzYWdlRnVuY3Rpb24gJiYgY29tcHV0ZWRDdXJyZW50T3B0aW9uID09PSBvcHRpb25zLmNoYXQpIHtcbiAgICAgICAgc2VuZE1lc3NhZ2VGdW5jdGlvbihtZXNzYWdlLCBhdHRhY2htZW50cywgZmFxSWQsIGFnZW50U3VnZ2VzdGlvbklkLCBtZW50aW9ucywgZnVhSWQsIHNjSWQpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzdGFydENoYXQobWVzc2FnZSwgYXR0YWNobWVudHMsIGZhcUlkLCBhZ2VudFN1Z2dlc3Rpb25JZCwgbWVudGlvbnMsIGZ1YUlkLCBzY0lkKVxuICAgICAgfVxuICAgIH0sXG4gICAgW3NlbmRNZXNzYWdlRnVuY3Rpb24sIHN0YXJ0Q2hhdCwgY29tcHV0ZWRDdXJyZW50T3B0aW9uLCBzaWRlYmFySGFzRXJyb3JdXG4gIClcblxuICBjb25zdCBoYW5kbGVHb0hvbWUgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgLy8gU2kgZXN0YW1vcyBlbiB1bmEgY29udmVyc2FjacOzbiB5IHZhbW9zIGEgaG9tZSwgcmVzZXRlYXIgaW5pdGlhbENoYXRJZCB5IGluY3JlbWVudGFyIG5ld0NoYXRLZXlcbiAgICBpZiAoY3VycmVudE9wdGlvbiA9PT0gb3B0aW9ucy5jaGF0KSB7XG4gICAgICBzdG9wR2VuZXJhdGlvbkZ1bmN0aW9uPy4oKVxuICAgICAgc2V0SW5pdGlhbENoYXRJZChudWxsKVxuICAgICAgc2V0TmV3Q2hhdEtleShwcmV2ID0+IHByZXYgKyAxKVxuICAgICAgc2V0SXNXcml0aW5nKGZhbHNlKVxuICAgICAgLy8gTm8gYm9ycmFyIGVsIGNsaWVudGUgc2kgZXMgYWdlbnRlIGRlIGNsaWVudGVzIChpZ3VhbCBxdWUgZWwgcHJveWVjdG8gc2UgbWFudGllbmUpXG4gICAgICBpZiAoYWdlbnQ/LmVudGl0eSAhPT0gJ2NsaWVudCcpIHtcbiAgICAgICAgc2V0Q2xpZW50Py4obnVsbClcbiAgICAgIH1cbiAgICAgIGlmIChzZWN0aW9uICE9PSAndGFzaycpIHtcbiAgICAgICAgc2V0VGFzaz8uKG51bGwpXG4gICAgICB9XG4gICAgfVxuICAgIGlmIChcbiAgICAgICghYWdlbnQgfHwgYWdlbnQ/LmlzX2RlbGV0ZWQgfHwgYWdlbnQ/Lmhhc19ub3RfcGVybWlzc2lvbnMgfHwgYWdlbnQ/Lmhhc19ub3RfYWNjZXNzIHx8IGFnZW50Py5wcm9qZWN0X2RlbGV0ZWQpICYmXG4gICAgICBhZ2VudHMuZGF0YS5sZW5ndGggPiAwXG4gICAgKSB7XG4gICAgICBzZWxlY3RBZ2VudChhZ2VudHMuZGF0YVswXSlcbiAgICB9XG4gICAgLy8gT3JjaGVzdHJhdG9yIGVuIGVsIGhvbWUgZGVsIGhlYWRlcjogYWwgaW5pY2lhciB1biBjaGF0IG51ZXZvIHNlIGRlYmUgdm9sdmVyIGFsIHBhc28gMVxuICAgIC8vIChsaXN0YSBkZSBjb250ZXh0b3MgcmVjaWVudGVzKSwgcG9yIGxvIHF1ZSBoYXkgcXVlIGxpbXBpYXIgdG9kbyBlbCBjb250ZXh0byBwaW5lYWRvLlxuICAgIGlmIChzZWN0aW9uID09PSAnaGVhZGVyJyAmJiBhZ2VudD8udHlwZSA9PT0gJ29yY2hlc3RyYXRvcicpIHtcbiAgICAgIHNldFByb2plY3QobnVsbClcbiAgICAgIHNldENsaWVudD8uKG51bGwpXG4gICAgICBzZXRUYXNrPy4obnVsbClcbiAgICB9XG4gICAgc2V0Q3VycmVudE9wdGlvbihvcHRpb25zLmhvbWUpXG4gICAgc2V0Q2hpcHNQcm9qZWN0KG51bGwpXG4gICAgc2V0SGFzRXJyb3IoZmFsc2UpXG4gICAgaXNXZWJTZWFyY2hBY3RpdmUgJiYgdG9nZ2xlV2ViU2VhcmNoKClcbiAgICBpZiAocmVzZXRTZWxlY3RlZENoYXRSZWYuY3VycmVudCkge1xuICAgICAgcmVzZXRTZWxlY3RlZENoYXRSZWYuY3VycmVudCgpXG4gICAgfVxuICB9LCBbXG4gICAgb3B0aW9ucy5ob21lLFxuICAgIG9wdGlvbnMuY2hhdCxcbiAgICBjdXJyZW50T3B0aW9uLFxuICAgIGlzV2ViU2VhcmNoQWN0aXZlLFxuICAgIHRvZ2dsZVdlYlNlYXJjaCxcbiAgICBhZ2VudCxcbiAgICBhZ2VudHMsXG4gICAgc2VsZWN0QWdlbnQsXG4gICAgc2V0UHJvamVjdCxcbiAgICBzZXRDbGllbnQsXG4gICAgc2V0VGFzayxcbiAgICBzdG9wR2VuZXJhdGlvbkZ1bmN0aW9uLFxuICAgIHNlY3Rpb24sXG4gIF0pXG5cbiAgY29uc3QgaGFuZGxlUmVzZXRDaGF0ID0gdXNlQ2FsbGJhY2soYXN5bmMgKCkgPT4ge1xuICAgIHNldFVzZXJJbml0aWFsTWVzc2FnZSh7IG1lc3NhZ2U6ICcnLCBhdHRhY2htZW50czogW10gfSlcbiAgICBzZXRJbml0aWFsQ2hhdElkKG51bGwpXG4gICAgLy8gRGlzcGF0Y2ggZXZlbnQgdG8gY2xlYXIgdGhlIGlucHV0IHRleHRhcmVhXG4gICAgZG9jdW1lbnQuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoJ2NoYXQtc2Vzc2lvbi1jaGFuZ2VkJykpXG4gICAgaGFuZGxlR29Ib21lKClcbiAgfSwgW2hhbmRsZUdvSG9tZV0pXG5cbiAgLy8gQm90w7NuIFwidm9sdmVyXCIgZGVsIGhlYWRlciAoc29sbyBvcmNoZXN0cmF0b3IpOlxuICAvLyAtIERlc2RlIGVsIGNoYXQgKGhlYWRlciBvIHByb2plY3QvY2xpZW50L3Rhc2spOiBpbmljaWEgdW5hIGNvbnZlcnNhY2nDs24gbnVldmEgY29uc2VydmFuZG8gZWxcbiAgLy8gICBjb250ZXh0byBwaW5lYWRvIHkgdnVlbHZlIGFsIGhvbWUgKHBhc28gMiBjb24gRkFRcy9GVUFzKS5cbiAgLy8gLSBFbiBlbCBob21lIHBhc28gMiAoRkFRcy9GVUFzIGNvbiBjb250ZXh0byk6IGxpbXBpYSBlbCBjb250ZXh0byBwaW5lYWRvIHkgdnVlbHZlIGFsIHBhc28gMVxuICAvLyAgIChzZWxlY3RvciBkZSBjb250ZXh0b3MgcmVjaWVudGVzKS4gRW4gaGVhZGVyIHNpZW1wcmU7IGVuIHByb2plY3QvY2xpZW50L3Rhc2sgc29sbyBzaSBlbFxuICAvLyAgIHVzdWFyaW8gcmVpbmljacOzIGVsIGNvbnRleHRvIChkaWRSZXNldENvbnRleHRJblNlY3Rpb24pLlxuICBjb25zdCBoYW5kbGVCYWNrID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGNvbnN0IHRvID0gcmVzb2x2ZUFpQ2hhdEJhY2tEZXN0aW5hdGlvbihzZWN0aW9uLCBhZ2VudD8udHlwZSwgY29tcHV0ZWRDdXJyZW50T3B0aW9uLCBvcHRpb25zLmhvbWUpXG4gICAgYW1wbGl0dWRFdmVudChFVkVOVFMuYWlDaGF0QmFjaywgeyB0byB9KVxuXG4gICAgLy8gRGVzZGUgZWwgY2hhdCDihpIgbnVldmEgY29udmVyc2FjacOzbiBTSU4gYm9ycmFyIGVsIGNvbnRleHRvIHBpbmVhZG8sIHZvbHZpZW5kbyBhbCBob21lLlxuICAgIGlmIChjb21wdXRlZEN1cnJlbnRPcHRpb24gPT09IG9wdGlvbnMuY2hhdCkge1xuICAgICAgc3RvcEdlbmVyYXRpb25GdW5jdGlvbj8uKClcbiAgICAgIHNldElzV3JpdGluZyhmYWxzZSlcbiAgICAgIHNldFVzZXJJbml0aWFsTWVzc2FnZSh7IG1lc3NhZ2U6ICcnLCBhdHRhY2htZW50czogW10gfSlcbiAgICAgIHNldEluaXRpYWxDaGF0SWQobnVsbClcbiAgICAgIHNldE5ld0NoYXRLZXkocHJldiA9PiBwcmV2ICsgMSlcbiAgICAgIHNldEhhc0Vycm9yKGZhbHNlKVxuICAgICAgaXNXZWJTZWFyY2hBY3RpdmUgJiYgdG9nZ2xlV2ViU2VhcmNoKClcbiAgICAgIGlmIChyZXNldFNlbGVjdGVkQ2hhdFJlZi5jdXJyZW50KSB7XG4gICAgICAgIHJlc2V0U2VsZWN0ZWRDaGF0UmVmLmN1cnJlbnQoKVxuICAgICAgfVxuICAgICAgc2V0Q3VycmVudE9wdGlvbihvcHRpb25zLmhvbWUpXG4gICAgICBkb2N1bWVudC5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgnY2hhdC1zZXNzaW9uLWNoYW5nZWQnKSlcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIC8vIEhvbWUgcGFzbyAyIChjb250ZXh0byBwaW5lYWRvKSDihpIgbGltcGlhciBlbCBjb250ZXh0byB5IHZvbHZlciBhbCBwYXNvIDEgKGNvbnRleHRvcyByZWNpZW50ZXMpLlxuICAgIGlmIChjb21wdXRlZEN1cnJlbnRPcHRpb24gPT09IG9wdGlvbnMuaG9tZSAmJiAoc2VjdGlvbiA9PT0gJ2hlYWRlcicgfHwgZGlkUmVzZXRDb250ZXh0SW5TZWN0aW9uKSkge1xuICAgICAgc2V0UHJvamVjdChudWxsKVxuICAgICAgc2V0Q2xpZW50Py4obnVsbClcbiAgICAgIHNldFRhc2s/LihudWxsKVxuICAgICAgc2V0Q2hpcHNQcm9qZWN0KG51bGwpXG4gICAgfVxuICB9LCBbXG4gICAgY29tcHV0ZWRDdXJyZW50T3B0aW9uLFxuICAgIHNlY3Rpb24sXG4gICAgYWdlbnQ/LnR5cGUsXG4gICAgYW1wbGl0dWRFdmVudCxcbiAgICBvcHRpb25zLmhvbWUsXG4gICAgc3RvcEdlbmVyYXRpb25GdW5jdGlvbixcbiAgICBpc1dlYlNlYXJjaEFjdGl2ZSxcbiAgICB0b2dnbGVXZWJTZWFyY2gsXG4gICAgZGlkUmVzZXRDb250ZXh0SW5TZWN0aW9uLFxuICAgIHNldFByb2plY3QsXG4gICAgc2V0Q2xpZW50LFxuICAgIHNldFRhc2ssXG4gICAgc2V0Q2hpcHNQcm9qZWN0LFxuICBdKVxuXG4gIC8vIERldGVjdGEgZWwgcmVpbmljaW8gZGUgY29udGV4dG8gZW4gcHJvamVjdC9jbGllbnQvdGFzazogY29udGV4dG8gcGluZWFkbyDihpIgdmFjw61vIGNvbiBlbFxuICAvLyBvcmNoZXN0cmF0b3IgKHAuIGVqLiBhbCByZXNlbGVjY2lvbmFyIE1BSUEgZW4gZWwgbGlzdGFkbykuIFNvbG8gbGEgdHJhbnNpY2nDs24gY3VlbnRhLCBhc8OtIHVuYVxuICAvLyBhcGVydHVyYSBmcmVzY2EgKGNvbnRleHRvIHBpbmVhZG8gZGVzZGUgbGEgc2VjY2nDs24pIG5vIGxvIGFjdGl2YS5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBwaW5uZWQgPSAhISh0YXNrPy5pZCB8fCBjaGlwc1Byb2plY3Q/LnByb2plY3RJZCB8fCBjbGllbnQ/LmlkIHx8IHByb2plY3Q/LmlkKVxuICAgIGNvbnN0IHdhc1Bpbm5lZCA9IHByZXZIYXNQaW5uZWRDb250ZXh0UmVmLmN1cnJlbnRcbiAgICBwcmV2SGFzUGlubmVkQ29udGV4dFJlZi5jdXJyZW50ID0gcGlubmVkXG4gICAgaWYgKHNlY3Rpb24gIT09ICdoZWFkZXInICYmIGFnZW50Py50eXBlID09PSAnb3JjaGVzdHJhdG9yJyAmJiB3YXNQaW5uZWQgJiYgIXBpbm5lZCkge1xuICAgICAgc2V0RGlkUmVzZXRDb250ZXh0SW5TZWN0aW9uKHRydWUpXG4gICAgfVxuICB9LCBbdGFzaz8uaWQsIGNoaXBzUHJvamVjdD8ucHJvamVjdElkLCBjbGllbnQ/LmlkLCBwcm9qZWN0Py5pZCwgc2VjdGlvbiwgYWdlbnQ/LnR5cGVdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFhZ2VudHNGZXRjaGVkUmVmLmN1cnJlbnQpIHtcbiAgICAgIGFnZW50c0ZldGNoZWRSZWYuY3VycmVudCA9IHRydWVcbiAgICAgIGhhbmRsZUdldEFnZW50cygpXG4gICAgfVxuICB9LCBbaGFuZGxlR2V0QWdlbnRzXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IG9uTWVyZ2VDcmVhdGVkQWdlbnQgPSAoZXZ0OiBFdmVudCkgPT4ge1xuICAgICAgY29uc3QgeyBhZ2VudDogbmV4dEFnZW50IH0gPSAoZXZ0IGFzIEN1c3RvbUV2ZW50PHsgYWdlbnQ6IEFnZW50IH0+KS5kZXRhaWwgfHwge31cbiAgICAgIGlmIChuZXh0QWdlbnQ/LmlkKSB7XG4gICAgICAgIGFkZEFnZW50KG5leHRBZ2VudCwgeyBuYXZpZ2F0ZUhvbWU6IGZhbHNlIH0pXG4gICAgICB9XG4gICAgfVxuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21haWEtbWVyZ2UtY3JlYXRlZC1hZ2VudC1pbnRvLWxpc3QnLCBvbk1lcmdlQ3JlYXRlZEFnZW50KVxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdtYWlhLW1lcmdlLWNyZWF0ZWQtYWdlbnQtaW50by1saXN0Jywgb25NZXJnZUNyZWF0ZWRBZ2VudClcbiAgICB9XG4gIH0sIFthZGRBZ2VudF0pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBvblN5bmNFZGl0ZWRBZ2VudCA9IChldnQ6IEV2ZW50KSA9PiB7XG4gICAgICBjb25zdCB7IGFnZW50OiBuZXh0QWdlbnQgfSA9IChldnQgYXMgQ3VzdG9tRXZlbnQ8eyBhZ2VudDogQWdlbnQgfT4pLmRldGFpbCB8fCB7fVxuICAgICAgaWYgKCFuZXh0QWdlbnQ/LmlkKSByZXR1cm5cbiAgICAgIHVwZGF0ZUFnZW50KG5leHRBZ2VudClcbiAgICAgIGlmIChhZ2VudD8uaWQgPT09IG5leHRBZ2VudC5pZCkge1xuICAgICAgICBzZWxlY3RBZ2VudChuZXh0QWdlbnQpXG4gICAgICB9XG4gICAgfVxuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21haWEtc3luYy1lZGl0ZWQtYWdlbnQtZnJvbS1jaGF0Jywgb25TeW5jRWRpdGVkQWdlbnQpXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21haWEtc3luYy1lZGl0ZWQtYWdlbnQtZnJvbS1jaGF0Jywgb25TeW5jRWRpdGVkQWdlbnQpXG4gICAgfVxuICB9LCBbdXBkYXRlQWdlbnQsIHNlbGVjdEFnZW50LCBhZ2VudD8uaWRdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3Qgb3BlbkNoYXRWaWV3ID0gKCkgPT4ge1xuICAgICAgc2V0SGFzRXJyb3IoZmFsc2UpXG4gICAgICBzZXRJbml0aWFsQ2hhdElkKG51bGwpXG4gICAgICBzZXROZXdDaGF0S2V5KHByZXYgPT4gcHJldiArIDEpXG4gICAgICBzZXRVc2VySW5pdGlhbE1lc3NhZ2UoeyBtZXNzYWdlOiAnJywgYXR0YWNobWVudHM6IFtdIH0pXG4gICAgICBzZXRDdXJyZW50T3B0aW9uKG9wdGlvbnMuY2hhdClcbiAgICAgIGRvY3VtZW50LmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCdjaGF0LXNlc3Npb24tY2hhbmdlZCcpKVxuICAgIH1cbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdtYWlhLW9wZW4tY2hhdC12aWV3Jywgb3BlbkNoYXRWaWV3KVxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdtYWlhLW9wZW4tY2hhdC12aWV3Jywgb3BlbkNoYXRWaWV3KVxuICAgIH1cbiAgfSwgW10pXG5cbiAgLyoqIE1pc21vIGZsdWpvIHF1ZSBDaGF0QUlNeUFnZW50cy5oYW5kbGVVc2VBZ2VudCArIG9uQmFjayAoaGFuZGxlcnMuaG9tZSkuXG4gICAqICBFbCBkZXRhaWwgcHVlZGUgdHJhZXIgb3BjaW9uYWxtZW50ZSBgcHJvamVjdGAsIGBjbGllbnRgLCBgdGFza2AgcGFyYSBmbG93cyBxdWVcbiAgICogIG5lY2VzaXRhbiBwcmVzZXJ2YXIgY29udGV4dG8gKGVqLiBzZWxlY3RvciBkZSBhZ2VudGVzIGRlc2RlIHVuYSB0YXJlYSkuIFNpIG5vIHZpZW5lbixcbiAgICogIHNlIG1hbnRpZW5lIGVsIGNvbXBvcnRhbWllbnRvIG9yaWdpbmFsIGRlIGxpbXBpYXIgcHJvamVjdC9jbGllbnQuICovXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3Qgb3Blbk5ld0NoYXRXaXRoQWdlbnQgPSAoZXZlbnQ6IEV2ZW50KSA9PiB7XG4gICAgICBjb25zdCB7IGRldGFpbCB9ID0gZXZlbnQgYXMgQ3VzdG9tRXZlbnQ8e1xuICAgICAgICBhZ2VudDogQWdlbnRcbiAgICAgICAgcHJvamVjdD86IFByb2plY3QgfCBudWxsXG4gICAgICAgIGNsaWVudD86IENsaWVudCB8IG51bGxcbiAgICAgICAgdGFzaz86IFRhc2sgfCBudWxsXG4gICAgICB9PlxuICAgICAgY29uc3QgbmV4dEFnZW50ID0gZGV0YWlsPy5hZ2VudFxuICAgICAgaWYgKCFuZXh0QWdlbnQpIHJldHVyblxuXG4gICAgICBzZXRQcm9qZWN0KGRldGFpbD8ucHJvamVjdCA/PyBudWxsKVxuICAgICAgc2V0Q2xpZW50Py4oZGV0YWlsPy5jbGllbnQgPz8gbnVsbClcbiAgICAgIGlmIChkZXRhaWw/LnRhc2sgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBzZXRUYXNrPy4oZGV0YWlsLnRhc2spXG4gICAgICB9XG4gICAgICBzZWxlY3RBZ2VudChuZXh0QWdlbnQpXG4gICAgICBzZXRIYXNFcnJvcihmYWxzZSlcbiAgICAgIHNldEN1cnJlbnRPcHRpb24ob3B0aW9ucy5ob21lKVxuICAgIH1cblxuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21haWEtb3Blbi1uZXctY2hhdC13aXRoLWFnZW50Jywgb3Blbk5ld0NoYXRXaXRoQWdlbnQpXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21haWEtb3Blbi1uZXctY2hhdC13aXRoLWFnZW50Jywgb3Blbk5ld0NoYXRXaXRoQWdlbnQpXG4gICAgfVxuICB9LCBbc2VsZWN0QWdlbnQsIHNldENsaWVudCwgc2V0UHJvamVjdCwgc2V0VGFza10pXG5cbiAgLy8gTWV0YWRhdGEgZGUgbGEgc2Vzc2lvbiBhYmllcnRhIChhZ2VudF90eXBlL2FnZW50X2VudGl0eSArIGNvbnRleHRvKSwgZW1pdGlkYSBwb3IgdXNlQ2hhdE1lc3NhZ2VzLlxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IG9uU2Vzc2lvbk1ldGEgPSAoZXZ0OiBFdmVudCkgPT4ge1xuICAgICAgY29uc3QgeyBkZXRhaWwgfSA9IGV2dCBhcyBDdXN0b21FdmVudDxTZXNzaW9uTWV0YT5cbiAgICAgIGlmIChkZXRhaWwpIHNldFNlc3Npb25NZXRhKGRldGFpbClcbiAgICB9XG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbWFpYS1jaGF0LXNlc3Npb24tbWV0YScsIG9uU2Vzc2lvbk1ldGEpXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21haWEtY2hhdC1zZXNzaW9uLW1ldGEnLCBvblNlc3Npb25NZXRhKVxuICAgIH1cbiAgfSwgW10pXG5cbiAgLy8gQWwgY2FtYmlhciBkZSBjb252ZXJzYWNpw7NuIGxpbXBpYW1vcyBsYSBtZXRhZGF0YTsgZWwgbG9hZCBkZSBsYSBudWV2YSBzZXNzaW9uIGxhIHZ1ZWx2ZSBhIGVtaXRpci5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBzZXRTZXNzaW9uTWV0YShudWxsKVxuICB9LCBbaW5pdGlhbENoYXRJZF0pXG5cbiAgLy8gQ2FydGVsIFwiY29udGludWFyIGVuIHVuIGNoYXQgbnVldm9cIjogc2UgbXVlc3RyYSBhbCBhYnJpciB1bmEgY29udmVyc2FjacOzbiBkZSB1biBjbG9uZSBsZWdhY3lcbiAgLy8gKGFnZW50X3R5cGUgPT09ICdjbG9uZScgY29uIGVudGl0eSBwcm9qZWN0L3Rhc2svY2xpZW50KS4gRWwgaW5wdXQgc2UgcmVlbXBsYXphIHBvciBlbCBjYXJ0ZWwuXG4gIGNvbnN0IGxlZ2FjeUNvbnRleHRTZXNzaW9uID0gdXNlTWVtbzx7IGVudGl0eVR5cGU6IExlZ2FjeUNvbnRleHRFbnRpdHk7IGNvbnRleHROYW1lOiBzdHJpbmcgfSB8IG51bGw+KCgpID0+IHtcbiAgICBpZiAoY29tcHV0ZWRDdXJyZW50T3B0aW9uICE9PSBvcHRpb25zLmNoYXQpIHJldHVybiBudWxsXG4gICAgaWYgKCFzZXNzaW9uTWV0YSB8fCBzZXNzaW9uTWV0YS5hZ2VudFR5cGUgIT09ICdjbG9uZScpIHJldHVybiBudWxsXG4gICAgY29uc3QgZW50aXR5ID0gc2Vzc2lvbk1ldGEuYWdlbnRFbnRpdHlcbiAgICBpZiAoIWVudGl0eSB8fCAhTEVHQUNZX0NPTlRFWFRfRU5USVRJRVMuaW5jbHVkZXMoZW50aXR5IGFzIExlZ2FjeUNvbnRleHRFbnRpdHkpKSByZXR1cm4gbnVsbFxuICAgIGNvbnN0IGNvbnRleHROYW1lID1cbiAgICAgIGVudGl0eSA9PT0gJ3Rhc2snID8gc2Vzc2lvbk1ldGEudGFza05hbWUgOiBlbnRpdHkgPT09ICdwcm9qZWN0JyA/IHNlc3Npb25NZXRhLnByb2plY3ROYW1lIDogc2Vzc2lvbk1ldGEuY2xpZW50TmFtZVxuICAgIHJldHVybiB7IGVudGl0eVR5cGU6IGVudGl0eSBhcyBMZWdhY3lDb250ZXh0RW50aXR5LCBjb250ZXh0TmFtZTogY29udGV4dE5hbWUgfHwgJycgfVxuICB9LCBbY29tcHV0ZWRDdXJyZW50T3B0aW9uLCBzZXNzaW9uTWV0YV0pXG5cbiAgLy8gTWFyY2EgZWwgYWdlbnRlIGRlIGxhIGNvbnZlcnNhY2nDs24gbGVnYWN5IHBhcmEgcXVlIGhlYWRlciwgc2VsZWN0b3IgeSBhdmF0YXIgbXVlc3RyZW4gZWwgbG9nb1xuICAvLyBNQUlBIHkgZWwgbm9tYnJlIHRhY2hhZG8gKGFnZW50ZSBvYnNvbGV0byksIHNpbiBkZXBlbmRlciBkZWwgYHR5cGVgIHJlc3VlbHRvIGRlIGxhIHNlc2nDs24gdmllamEuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGxlZ2FjeUNvbnRleHRTZXNzaW9uICYmIGFnZW50ICYmICFhZ2VudC5pc19sZWdhY3lfY29udGV4dCkge1xuICAgICAgc2VsZWN0QWdlbnQoeyAuLi5hZ2VudCwgaXNfbGVnYWN5X2NvbnRleHQ6IHRydWUgfSlcbiAgICB9XG4gIH0sIFtsZWdhY3lDb250ZXh0U2Vzc2lvbiwgYWdlbnQsIHNlbGVjdEFnZW50XSlcblxuICAvLyBBYnJlIHVuIGNoYXQgbnVldm8gY29uIGVsIG9yY2hlc3RyYXRvciBzZXRlYW5kbyBlbCBjb250ZXh0byBkZWwgY2xvbmUgbGVnYWN5IChtaXNtbyBjcml0ZXJpb1xuICAvLyBxdWUgY2xpY2tlYXIgdW4gY29udGV4dG8gcmVjaWVudGUgZW4gZWwgaG9tZSDihpIgcGFzbyAyIGNvbiBGQVFzL2FjY2lvbmVzIGRlIGVzZSBjb250ZXh0bykuXG4gIGNvbnN0IGhhbmRsZUNvbnRpbnVlTGVnYWN5Q29udGV4dEluTmV3Q2hhdCA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBpZiAoIXNlc3Npb25NZXRhKSByZXR1cm5cbiAgICBjb25zdCB7XG4gICAgICBhZ2VudEVudGl0eSxcbiAgICAgIHByb2plY3RJZDogcElkLFxuICAgICAgcHJvamVjdE5hbWU6IHBOYW1lLFxuICAgICAgY2xpZW50SWQ6IGNJZCxcbiAgICAgIGNsaWVudE5hbWU6IGNOYW1lLFxuICAgICAgdGFza0lkOiB0SWQsXG4gICAgICB0YXNrTmFtZTogdE5hbWUsXG4gICAgfSA9IHNlc3Npb25NZXRhXG5cbiAgICBjb25zdCBvcmNoZXN0cmF0b3IgPSBhZ2VudHMuZGF0YS5maW5kKChhOiBBZ2VudCkgPT4gYS50eXBlID09PSAnb3JjaGVzdHJhdG9yJylcbiAgICBpZiAoIW9yY2hlc3RyYXRvcikgcmV0dXJuXG5cbiAgICAvLyBSZXNldCBkZWwgY2hhdCDihpIgY29udmVyc2FjacOzbiBudWV2YVxuICAgIHN0b3BHZW5lcmF0aW9uRnVuY3Rpb24/LigpXG4gICAgc2V0SXNXcml0aW5nKGZhbHNlKVxuICAgIHNldFVzZXJJbml0aWFsTWVzc2FnZSh7IG1lc3NhZ2U6ICcnLCBhdHRhY2htZW50czogW10gfSlcbiAgICBzZXRJbml0aWFsQ2hhdElkKG51bGwpXG4gICAgc2V0TmV3Q2hhdEtleShwcmV2ID0+IHByZXYgKyAxKVxuICAgIHNldEhhc0Vycm9yKGZhbHNlKVxuXG4gICAgLy8gU2V0ZWFyIGNvbnRleHRvIChtaXNtbyBjcml0ZXJpbyBxdWUgaGFuZGxlU2VsZWN0UmVjZW50Q29udGV4dCBkZWwgaG9tZSlcbiAgICBzZXRUYXNrPy4obnVsbClcbiAgICBzZXRQcm9qZWN0KG51bGwpXG4gICAgc2V0Q2xpZW50Py4obnVsbClcbiAgICBzZXRDaGlwc1Byb2plY3QobnVsbClcblxuICAgIGlmIChhZ2VudEVudGl0eSA9PT0gJ2NsaWVudCcgJiYgY0lkICE9IG51bGwpIHtcbiAgICAgIHNldENsaWVudD8uKHsgaWQ6IGNJZCwgbmFtZTogY05hbWUgfHwgJycgfSlcbiAgICB9IGVsc2UgaWYgKGFnZW50RW50aXR5ID09PSAncHJvamVjdCcgJiYgcElkICE9IG51bGwpIHtcbiAgICAgIHNldFByb2plY3Qoe1xuICAgICAgICBpZDogcElkLFxuICAgICAgICBuYW1lOiBwTmFtZSB8fCAnJyxcbiAgICAgICAgLi4uKGNJZCAhPSBudWxsID8geyBjbGllbnRJZDogY0lkLCBjbGllbnQ6IHsgaWQ6IGNJZCwgbmFtZTogY05hbWUgfHwgJycgfSB9IDoge30pLFxuICAgICAgfSlcbiAgICAgIHNldENoaXBzUHJvamVjdCh7IHByb2plY3RJZDogU3RyaW5nKHBJZCksIHByb2plY3ROYW1lOiBwTmFtZSB8fCAnJywgY2xpZW50TmFtZTogY05hbWUgfHwgJycgfSlcbiAgICB9IGVsc2UgaWYgKGFnZW50RW50aXR5ID09PSAndGFzaycgJiYgdElkICE9IG51bGwpIHtcbiAgICAgIHNldFRhc2s/Lih7XG4gICAgICAgIGlkOiB0SWQsXG4gICAgICAgIG5hbWU6IHROYW1lIHx8ICcnLFxuICAgICAgICAuLi4ocElkICE9IG51bGwgPyB7IHByb2plY3RJZDogcElkIH0gOiB7fSksXG4gICAgICAgIC4uLihjSWQgIT0gbnVsbCA/IHsgY2xpZW50SWQ6IGNJZCB9IDoge30pLFxuICAgICAgfSlcbiAgICAgIGlmIChjSWQgIT0gbnVsbCkgc2V0Q2xpZW50Py4oeyBpZDogY0lkLCBuYW1lOiBjTmFtZSB8fCAnJyB9KVxuICAgICAgaWYgKHBJZCAhPSBudWxsKSB7XG4gICAgICAgIHNldFByb2plY3Qoe1xuICAgICAgICAgIGlkOiBwSWQsXG4gICAgICAgICAgbmFtZTogcE5hbWUgfHwgJycsXG4gICAgICAgICAgLi4uKGNJZCAhPSBudWxsID8geyBjbGllbnRJZDogY0lkLCBjbGllbnQ6IHsgaWQ6IGNJZCwgbmFtZTogY05hbWUgfHwgJycgfSB9IDoge30pLFxuICAgICAgICB9KVxuICAgICAgICBzZXRDaGlwc1Byb2plY3QoeyBwcm9qZWN0SWQ6IFN0cmluZyhwSWQpLCBwcm9qZWN0TmFtZTogcE5hbWUgfHwgJycsIGNsaWVudE5hbWU6IGNOYW1lIHx8ICcnIH0pXG4gICAgICB9XG4gICAgfVxuXG4gICAgc2VsZWN0QWdlbnQob3JjaGVzdHJhdG9yKVxuICAgIHNldFNlc3Npb25NZXRhKG51bGwpXG4gICAgc2V0Q3VycmVudE9wdGlvbihvcHRpb25zLmhvbWUpXG4gICAgZG9jdW1lbnQuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoJ2NoYXQtc2Vzc2lvbi1jaGFuZ2VkJykpXG4gIH0sIFtzZXNzaW9uTWV0YSwgYWdlbnRzLmRhdGEsIHNlbGVjdEFnZW50LCBzZXRDbGllbnQsIHNldFByb2plY3QsIHNldFRhc2ssIHNldENoaXBzUHJvamVjdCwgc3RvcEdlbmVyYXRpb25GdW5jdGlvbl0pXG5cbiAgY29uc3Qgc2hvd05ld0NoYXQgPSBjb21wdXRlZEN1cnJlbnRPcHRpb24gIT09IG9wdGlvbnMuY2hhdFxuICBjb25zdCBpc015QWdlbnRzU2VjdGlvbiA9IGNvbXB1dGVkQ3VycmVudE9wdGlvbiA9PT0gb3B0aW9ucy5teUFnZW50c1xuXG4gIC8vIEJvdMOzbiBcInZvbHZlclwiOiBzb2xvIHBhcmEgZWwgb3JjaGVzdHJhdG9yLlxuICAvLyAtIEVuIGVsIGNoYXQ6IGRpc3BvbmlibGUgZW4gdG9kYXMgbGFzIHNlY2Npb25lcyAoaGVhZGVyIHkgcHJvamVjdC9jbGllbnQvdGFzaykuXG4gIC8vIC0gRW4gZWwgaG9tZSBwYXNvIDIgKEZBUXMvRlVBcyBjb24gY29udGV4dG8gcGluZWFkbyk6IGVuIGVsIGhlYWRlciBzaWVtcHJlOyBlblxuICAvLyAgIHByb2plY3QvY2xpZW50L3Rhc2sgc29sbyBzaSBlbCB1c3VhcmlvIHJlaW5pY2nDsyBlbCBjb250ZXh0byAocGFzw7MgcG9yIGVsIHNlbGVjdG9yIGRlXG4gIC8vICAgY29udGV4dG9zIHJlY2llbnRlcykuIEVuIGVsIHBhc28gMSAoc2luIGNvbnRleHRvKSBOTyBzZSBtdWVzdHJhLlxuICBjb25zdCBoYXNQaW5uZWRDb250ZXh0ID0gISEodGFzaz8uaWQgfHwgY2hpcHNQcm9qZWN0Py5wcm9qZWN0SWQgfHwgY2xpZW50Py5pZCB8fCBwcm9qZWN0Py5pZClcbiAgY29uc3QgaXNDaGF0VmlldyA9IGNvbXB1dGVkQ3VycmVudE9wdGlvbiA9PT0gb3B0aW9ucy5jaGF0XG4gIGNvbnN0IGlzSG9tZVN0ZXAyID0gY29tcHV0ZWRDdXJyZW50T3B0aW9uID09PSBvcHRpb25zLmhvbWUgJiYgaGFzUGlubmVkQ29udGV4dFxuICBjb25zdCBpc0hlYWRlckhvbWVTdGVwMiA9IHNlY3Rpb24gPT09ICdoZWFkZXInICYmIGlzSG9tZVN0ZXAyXG4gIGNvbnN0IGlzU2VjdGlvblJlc2V0SG9tZVN0ZXAyID0gc2VjdGlvbiAhPT0gJ2hlYWRlcicgJiYgaXNIb21lU3RlcDIgJiYgZGlkUmVzZXRDb250ZXh0SW5TZWN0aW9uXG4gIGNvbnN0IHNob3dCYWNrQnV0dG9uID1cbiAgICBhZ2VudD8udHlwZSA9PT0gJ29yY2hlc3RyYXRvcicgJiZcbiAgICAhaGFzRXJyb3IgJiZcbiAgICAhbG9hZGluZyAmJlxuICAgIChpc0NoYXRWaWV3IHx8IGlzSGVhZGVySG9tZVN0ZXAyIHx8IGlzU2VjdGlvblJlc2V0SG9tZVN0ZXAyKVxuICBjb25zdCBoYW5kbGVPcGVuTWFya2V0cGxhY2UgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgaWYgKCF3aW5kb3cuTUFJQV9DSEFUX0FJX0ZFQVRVUkVfQUNDRVNTX01VTFRJX0FHRU5UUykge1xuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGNsZWFyQWdlbnQoKVxuICAgIHNldEN1cnJlbnRPcHRpb24ob3B0aW9ucy5teUFnZW50cylcbiAgfSwgW2NsZWFyQWdlbnRdKVxuXG4gIGNvbnN0IGhhbmRsZUdvVG9NYWlha2VyID0gdXNlQ2FsbGJhY2soYXN5bmMgKCkgPT4ge1xuICAgIHNldEhhc0Vycm9yKGZhbHNlKVxuICAgIGxldCBtYWlha2VyQWdlbnQgPSBhZ2VudHMuZGF0YS5maW5kKChhOiBBZ2VudCkgPT4gaXNNYXJrZXRwbGFjZUdsb2JhbENsb25lQWdlbnQoYSkpXG4gICAgaWYgKCFtYWlha2VyQWdlbnQpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2hNYWlhKHtcbiAgICAgICAgICBwYXRoOiBgYWdlbnRzP2FnZW50X3R5cGU9Y2xvbmUmZW50aXR5PWdsb2JhbCZsYW5nPSR7bWFwQ09STGFuZyhpMThuLmxhbmd1YWdlKX1gLFxuICAgICAgICAgIG1ldGhvZDogJ0dFVCcsXG4gICAgICAgIH0pXG4gICAgICAgIGNvbnN0IGRhdGEgPSBhd2FpdCByZXNwb25zZS5qc29uKClcbiAgICAgICAgbWFpYWtlckFnZW50ID0gKGRhdGEuZGF0YSB8fCBbXSkuZmluZCgoYTogQWdlbnQpID0+IGlzTWFya2V0cGxhY2VHbG9iYWxDbG9uZUFnZW50KGEpKVxuICAgICAgfSBjYXRjaCB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuICAgIH1cbiAgICBpZiAoIW1haWFrZXJBZ2VudCkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIHNldFByb2plY3QobnVsbClcbiAgICBzZXRDbGllbnQ/LihudWxsKVxuICAgIHNldFRhc2s/LihudWxsKVxuICAgIHNlbGVjdEFnZW50KG1haWFrZXJBZ2VudClcbiAgICBzZXRDdXJyZW50T3B0aW9uKG9wdGlvbnMuaG9tZSlcbiAgICBpZiAocmVzZXRTZWxlY3RlZENoYXRSZWYuY3VycmVudCkge1xuICAgICAgcmVzZXRTZWxlY3RlZENoYXRSZWYuY3VycmVudCgpXG4gICAgfVxuICB9LCBbYWdlbnRzLmRhdGEsIGkxOG4ubGFuZ3VhZ2UsIHNlbGVjdEFnZW50LCBzZXRDbGllbnQsIHNldFByb2plY3QsIHNldFRhc2tdKVxuICBjb25zdCBoYW5kbGVEZWxldGVBZ2VudEZyb21NeUFnZW50cyA9IHVzZUNhbGxiYWNrKFxuICAgIChhZ2VudElkOiBzdHJpbmcpID0+IHtcbiAgICAgIHJlbW92ZUFnZW50KGFnZW50SWQpXG4gICAgICBpZiAoYWdlbnQ/LmlkID09PSBhZ2VudElkKSB7XG4gICAgICAgIHNlbGVjdEZpcnN0QWdlbnQoYWdlbnRJZClcbiAgICAgIH1cbiAgICB9LFxuICAgIFthZ2VudD8uaWQsIHJlbW92ZUFnZW50LCBzZWxlY3RGaXJzdEFnZW50XVxuICApXG5cbiAgLy8gRWwgZm9vdGVyIChpbnB1dCkgc2Ugb2N1bHRhIHNvbG8gZW4gZWwgaG9tZSBtYXJrZXRwbGFjZSBkZSBNYWlha2VyIChicm93c2UgZGUgYWdlbnRlcykuXG4gIC8vIEVsIGhvbWUgZGVsIG9yY2hlc3RyYXRvciBzw60gcGVybWl0ZSBlc2NyaWJpciwgYXPDrSBxdWUgbWFudGllbmUgZWwgZm9vdGVyLlxuICBjb25zdCBpc01haWFrZXJDcmVhdG9ySG9tZSA9IGNvbXB1dGVkQ3VycmVudE9wdGlvbiA9PT0gb3B0aW9ucy5ob21lICYmIGlzTWFpYWtlckFnZW50U2VsZWN0ZWRcblxuICBjb25zdCBtb2RhbFBhbmVsID0gKFxuICAgIDw+XG4gICAgICB7dmFsaWRhdGVBY2Nlc3NCeUZlYXR1cmUoc2VjdGlvbikgJiYgIWlzRmxvYXRpbmcgPyAoXG4gICAgICAgIDxTaWRlYmFyXG4gICAgICAgICAgb25Hb1RvQ2hhdD17Z29Ub0NoYXR9XG4gICAgICAgICAgb25FcnJvcj17KCkgPT4gc2V0U2lkZWJhckhhc0Vycm9yKHRydWUpfVxuICAgICAgICAgIGhhbmRsZUdvVG9Ib21lPXtoYW5kbGVHb0hvbWV9XG4gICAgICAgICAgaGFuZGxlT3Blbk1hcmtldHBsYWNlPXtoYW5kbGVPcGVuTWFya2V0cGxhY2V9XG4gICAgICAgICAgc2hvd05ld0NoYXQ9e3Nob3dOZXdDaGF0fVxuICAgICAgICAgIHJlZmV0Y2hDaGF0cz17cmVmZXRjaENoYXRzfVxuICAgICAgICAgIGhhbmRsZVNldFJlZmV0Y2hDaGF0cz17c2V0UmVmZXRjaENoYXRzfVxuICAgICAgICAgIGhhc0Vycm9yPXtzaWRlYmFySGFzRXJyb3J9XG4gICAgICAgICAgcmVzZXRTZWxlY3RlZENoYXRSZWY9e3Jlc2V0U2VsZWN0ZWRDaGF0UmVmfVxuICAgICAgICAgIGFnZW50c05hdkFjdGl2ZT17c2lkZWJhckFnZW50c05hdkFjdGl2ZX1cbiAgICAgICAgICBpc0xlZ2FjeUNvbnRleHRTZXNzaW9uPXshIWxlZ2FjeUNvbnRleHRTZXNzaW9ufVxuICAgICAgICAvPlxuICAgICAgKSA6IG51bGx9XG4gICAgICA8U0NDQUlNQ29udGVudCBleHBhbmRlZD17ZXhwYW5kZWR9IGZsb2F0aW5nPXtpc0Zsb2F0aW5nfT5cbiAgICAgICAgPENoYXRBSU1vZGFsSGVhZGVyXG4gICAgICAgICAgbGF5b3V0TW9kZT17bGF5b3V0TW9kZX1cbiAgICAgICAgICBvbkxheW91dE1vZGVDaGFuZ2U9e2hhbmRsZUxheW91dE1vZGVDaGFuZ2V9XG4gICAgICAgICAgZXhwYW5kZWQ9e2V4cGFuZGVkfVxuICAgICAgICAgIGRyYWdnYWJsZT17aXNGbG9hdGluZ31cbiAgICAgICAgICBvbkRyYWdTdGFydD17aGFuZGxlRHJhZ1N0YXJ0fVxuICAgICAgICAgIG9uRHJhZ01vdmU9e2hhbmRsZURyYWdNb3ZlfVxuICAgICAgICAgIG9uRHJhZ0VuZD17aGFuZGxlRHJhZ0VuZH1cbiAgICAgICAgICBoYW5kbGVDbG9zZT17aGFuZGxlQ2xvc2VNb2RhbH1cbiAgICAgICAgICBhZ2VudHM9e2FnZW50cy5kYXRhfVxuICAgICAgICAgIGhhc0Vycm9yPXshIWFnZW50RXJyb3J9XG4gICAgICAgICAgbG9hZGluZz17bG9hZGluZ31cbiAgICAgICAgICBsb2FkaW5nTW9yZT17bG9hZGluZ01vcmV9XG4gICAgICAgICAgaGFzTW9yZT17YWdlbnRzLmhhc19tb3JlfVxuICAgICAgICAgIGhhbmRsZVJlc2V0Q2hhdD17aGFuZGxlUmVzZXRDaGF0fVxuICAgICAgICAgIG9uQWdlbnRVcGRhdGU9e3VwZGF0ZUFnZW50RmF2b3JpdGV9XG4gICAgICAgICAgbG9hZE1vcmVBZ2VudHM9e2xvYWRNb3JlQWdlbnRzfVxuICAgICAgICAgIHNvcnRBZ2VudHNMaXN0PXtzb3J0QWdlbnRzTGlzdH1cbiAgICAgICAgICBpc015QWdlbnRzU2VjdGlvbj17aXNNeUFnZW50c1NlY3Rpb259XG4gICAgICAgICAgaXNNYWlha2VyU2VjdGlvbj17aXNNYWlha2VyQ3JlYXRvckhvbWV9XG4gICAgICAgICAgc2hvd0JhY2tCdXR0b249e3Nob3dCYWNrQnV0dG9ufVxuICAgICAgICAgIG9uQmFjaz17aGFuZGxlQmFja31cbiAgICAgICAgLz5cbiAgICAgICAge2hhc0Vycm9yID8gKFxuICAgICAgICAgIDxNQUlBRXJyb3IgLz5cbiAgICAgICAgKSA6IHZhbGlkYXRlQWNjZXNzQnlGZWF0dXJlKHNlY3Rpb24pID8gKFxuICAgICAgICAgIDxDaGF0QUlDb250ZW50XG4gICAgICAgICAgICBjdXJyZW50T3B0aW9uPXtjb21wdXRlZEN1cnJlbnRPcHRpb259XG4gICAgICAgICAgICBoYW5kbGVycz17eyAuLi5oYW5kbGVycywgY2hhdDogc3RhcnRDaGF0LCBob21lOiBoYW5kbGVycy5ob21lLCBoYW5kbGVHb0hvbWUgfX1cbiAgICAgICAgICAgIG9uRXJyb3I9eygpID0+IHNldEhhc0Vycm9yKHRydWUpfVxuICAgICAgICAgICAgcmVmcz17eyB1c2VySW5pdGlhbE1lc3NhZ2UsIGluaXRpYWxDaGF0SWQgfX1cbiAgICAgICAgICAgIG9uU2VuZE1lc3NhZ2VSZWFkeT17aGFuZGxlU2VuZE1lc3NhZ2VSZWFkeX1cbiAgICAgICAgICAgIGV4cGFuZGVkPXtleHBhbmRlZH1cbiAgICAgICAgICAgIGZsb2F0aW5nPXtpc0Zsb2F0aW5nfVxuICAgICAgICAgICAgYWdlbnRzPXthZ2VudHMuZGF0YX1cbiAgICAgICAgICAgIGxvYWRpbmdBZ2VudHM9e2xvYWRpbmd9XG4gICAgICAgICAgICBvbkRlbGV0ZUFnZW50PXtoYW5kbGVEZWxldGVBZ2VudEZyb21NeUFnZW50c31cbiAgICAgICAgICAgIG9uRmF2b3JpdGVBZ2VudFVwZGF0ZT17dXBkYXRlQWdlbnRGYXZvcml0ZX1cbiAgICAgICAgICAgIGhhc01vcmVBZ2VudHM9eyEhYWdlbnRzLmhhc19tb3JlfVxuICAgICAgICAgICAgbG9hZGluZ01vcmVBZ2VudHM9e2xvYWRpbmdNb3JlfVxuICAgICAgICAgICAgb25Mb2FkTW9yZUFnZW50cz17bG9hZE1vcmVBZ2VudHN9XG4gICAgICAgICAgICBvbkdvVG9NYWlha2VyPXtoYW5kbGVHb1RvTWFpYWtlcn1cbiAgICAgICAgICAgIG9uU2VhcmNoQWdlbnRzPXtzZWFyY2hDdXN0b21BZ2VudHN9XG4gICAgICAgICAgICBzZWFyY2hMb2FkaW5nQWdlbnRzPXtzZWFyY2hMb2FkaW5nfVxuICAgICAgICAgICAgYWdlbnRFcnJvcj17YWdlbnRFcnJvcn1cbiAgICAgICAgICAvPlxuICAgICAgICApIDogKFxuICAgICAgICAgIDxQcm9qZWN0U3VtbWFyeUNvbnRlbnQgb25SZXN0YXJ0U3VtbWFyeT17aGFuZGxlcnMuaG9tZX0gLz5cbiAgICAgICAgKX1cbiAgICAgICAgeygoY29tcHV0ZWRDdXJyZW50T3B0aW9uID09PSBvcHRpb25zLmhvbWUgJiYgISFhZ2VudHM/LmRhdGE/Lmxlbmd0aCkgfHxcbiAgICAgICAgICBjb21wdXRlZEN1cnJlbnRPcHRpb24gPT09IG9wdGlvbnMuY2hhdCkgJiZcbiAgICAgICAgICAhaXNNYWlha2VyQ3JlYXRvckhvbWUgJiZcbiAgICAgICAgICAhaGFzRXJyb3IgJiZcbiAgICAgICAgICAhbG9hZGluZyAmJlxuICAgICAgICAgIHZhbGlkYXRlQWNjZXNzQnlGZWF0dXJlKHNlY3Rpb24pICYmIChcbiAgICAgICAgICAgIDxDaGF0QWlNb2RhbEZvb3RlclxuICAgICAgICAgICAgICBhZ2VudD17YWdlbnR9XG4gICAgICAgICAgICAgIGhhbmRsZVNlbmRNZXNzYWdlPXtoYW5kbGVTZW5kTWVzc2FnZX1cbiAgICAgICAgICAgICAgaGFuZGxlU3RvcEdlbmVyYXRpb249e3N0b3BHZW5lcmF0aW9uRnVuY3Rpb259XG4gICAgICAgICAgICAgIGlzU3RyZWFtaW5nPXtpc1N0cmVhbWluZ31cbiAgICAgICAgICAgICAgaXNXcml0aW5nPXtpc1dyaXRpbmd9XG4gICAgICAgICAgICAgIGNoYXRJZD17aW5pdGlhbENoYXRJZH1cbiAgICAgICAgICAgICAgbmV3Q2hhdEtleT17bmV3Q2hhdEtleX1cbiAgICAgICAgICAgICAgc2hvd0ZhcXM9e2NvbXB1dGVkQ3VycmVudE9wdGlvbiA9PT0gb3B0aW9ucy5jaGF0fVxuICAgICAgICAgICAgICB0b29sdGlwWkluZGV4PXt0b29sdGlwWkluZGV4fVxuICAgICAgICAgICAgICBsZWdhY3lDb250ZXh0U2Vzc2lvbj17bGVnYWN5Q29udGV4dFNlc3Npb259XG4gICAgICAgICAgICAgIG9uQ29udGludWVJbk5ld0NoYXQ9e2hhbmRsZUNvbnRpbnVlTGVnYWN5Q29udGV4dEluTmV3Q2hhdH1cbiAgICAgICAgICAgICAgbGF5b3V0TW9kZT17bGF5b3V0TW9kZX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKX1cbiAgICAgIDwvU0NDQUlNQ29udGVudD5cbiAgICA8Lz5cbiAgKVxuXG4gIGNvbnN0IGNvbnRlbnRXcmFwcGVyID0gKFxuICAgIDxTQ0NBSU1Db250ZW50V3JhcHBlciBleHBhbmRlZD17ZXhwYW5kZWR9IGZsb2F0aW5nPXtpc0Zsb2F0aW5nfSByZWY9e2NvbnRlbnRXcmFwcGVyUmVmfT5cbiAgICAgIHttb2RhbFBhbmVsfVxuICAgICAge3Nob3dDbG9zZVdoaWxlR2VuZXJhdGluZ01vZGFsICYmIChcbiAgICAgICAgPENsb3NlV2hpbGVHZW5lcmF0aW5nTW9kYWxcbiAgICAgICAgICBvbkNsb3NlPXtoYW5kbGVEaXNtaXNzQ2xvc2VXaGlsZUdlbmVyYXRpbmdNb2RhbH1cbiAgICAgICAgICBvbkNvbmZpcm09e2hhbmRsZUNvbmZpcm1DbG9zZVdoaWxlR2VuZXJhdGluZ31cbiAgICAgICAgLz5cbiAgICAgICl9XG4gICAgPC9TQ0NBSU1Db250ZW50V3JhcHBlcj5cbiAgKVxuXG4gIHJldHVybiAoXG4gICAgc2VsZWN0b3IgJiZcbiAgICBSZWFjdERPTS5jcmVhdGVQb3J0YWwoXG4gICAgICA8U0NDQUlNV3JhcHBlclxuICAgICAgICBleHBhbmRlZD17ZXhwYW5kZWR9XG4gICAgICAgIGxheW91dE1vZGU9e2xheW91dE1vZGV9XG4gICAgICAgIGRyYWdQb3NpdGlvbj17cmVzb2x2ZWREcmFnUG9zaXRpb259XG4gICAgICAgIGVsZXZhdGVkPXtzZWN0aW9uID09PSAndGFzayd9XG4gICAgICA+XG4gICAgICAgIDxGbG9hdGluZ1BhbmVsTW90aW9uIHRpbHQ9e3RpbHRNb3Rpb259IGV4cGFuZGVkPXtleHBhbmRlZH0+XG4gICAgICAgICAge2NvbnRlbnRXcmFwcGVyfVxuICAgICAgICA8L0Zsb2F0aW5nUGFuZWxNb3Rpb24+XG4gICAgICAgIHt1c2VySGFzUGVybWlzc2lvbnMgJiYgKFxuICAgICAgICAgIDxBYm1BZ2VudE1vZGFsXG4gICAgICAgICAgICBhZGRBZ2VudD17YWRkQWdlbnR9XG4gICAgICAgICAgICB1cGRhdGVBZ2VudD17dXBkYXRlQWdlbnR9XG4gICAgICAgICAgICByZW1vdmVBZ2VudD17cmVtb3ZlQWdlbnR9XG4gICAgICAgICAgICB1cGRhdGVBZ2VudEZhdm9yaXRlPXt1cGRhdGVBZ2VudEZhdm9yaXRlfVxuICAgICAgICAgICAgc2VsZWN0Rmlyc3RBZ2VudD17c2VsZWN0Rmlyc3RBZ2VudH1cbiAgICAgICAgICAvPlxuICAgICAgICApfVxuICAgICAgICA8U25hY2tiYXIgLz5cbiAgICAgIDwvU0NDQUlNV3JhcHBlcj4sXG4gICAgICBzZWxlY3RvclxuICAgIClcbiAgKVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBRUVBLFdBQVcsRUFDWEMsT0FBTyxFQUNQQyxRQUFRLEVBQ1JDLE1BQU0sRUFDTkMsU0FBUyxFQUNUQyxlQUFlLFFBRVYsT0FBTztBQUNkLE9BQU9DLFFBQVEsTUFBTSxXQUFXO0FBQ2hDLE9BQU9DLE1BQU0sTUFBTSxRQUFRO0FBQzNCLFNBQVNDLGNBQWMsUUFBUSxlQUFlO0FBQzlDLFNBQVNDLE9BQU8sUUFBUSwyQkFBMkI7QUFDbkQsU0FBU0MsU0FBUyxRQUFRLHVCQUF1QjtBQUNqRCxTQUFTQyxzQkFBc0IsUUFBUSx1Q0FBdUM7QUFFOUUsU0FBU0MsYUFBYSxRQUFRLGtCQUFrQjtBQUNoRCxTQUFTQyxhQUFhLEVBQUVDLE9BQU8sUUFBUSxhQUFhO0FBQ3BELFNBQVNDLE9BQU8sUUFBUSxZQUFZO0FBQ3BDLFNBQVNDLFlBQVksUUFBUSx5Q0FBeUM7QUFDdEUsU0FBU0MsZ0JBQWdCLFFBQXNCLGlDQUFpQztBQUdoRixTQUFTQyxpQkFBaUIsUUFBUSxrREFBa0Q7QUFDcEYsU0FBU0MsUUFBUSxRQUFRLG1DQUFtQztBQUM1RCxT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