@projectcor/maia-components 2.11.64 → 2.11.65-0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/components/atoms/Chip/Chip.js +49 -15
- package/lib/components/atoms/Chip/styles.js +7 -3
- package/lib/components/atoms/ContextMentionPopover/ContextMentionPopover.js +38 -6
- package/lib/components/atoms/ContextMentionPopover/ContextMentionPopover.styles.js +21 -13
- package/lib/components/atoms/MAIAInput/MAIAInput.js +8 -5
- package/lib/components/molecules/ChatAIHome/ChatAIHome.js +6 -4
- package/lib/components/molecules/ChatAIMessages/ChatAIMessages.js +10 -5
- package/lib/components/molecules/ChatAIModal/ChatAIModal.js +15 -9
- package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeader.js +13 -12
- package/lib/components/molecules/ChatFooter/ChatFooter.js +105 -21
- package/lib/components/molecules/ChatFooter/styles.js +11 -2
- package/lib/components/molecules/Sidebar/Sidebar.js +9 -5
- package/lib/components/organisms/EditQuestionModal/EditQuestionModal.js +2 -2
- package/lib/context/global-context.js +8 -1
- package/lib/hooks/useChatManager/useChatManager.js +155 -30
- package/lib/hooks/useChatMessages/useChatMessages.js +1 -1
- package/lib/hooks/useContextPinPopover.js +228 -0
- package/lib/hooks/useEntitySearch.js +74 -129
- package/lib/hooks/useMentionAllowedTypes.js +11 -1
- package/lib/hooks/useMentionPopover.js +3 -2
- package/lib/hooks/useOrchestratorStream/useOrchestratorStream.interface.js +1 -1
- package/lib/hooks/useOrchestratorStream/useOrchestratorStream.js +16 -7
- package/lib/hooks/useProjectSearch.js +4 -28
- package/lib/hooks/useProjectSummaryConfig.js +74 -4
- package/lib/hooks/useRecentClientsSearch.js +4 -34
- package/lib/lang/br/index.js +7 -1
- package/lib/lang/en/index.js +7 -1
- package/lib/lang/es/index.js +7 -1
- package/lib/lang/fr/index.js +7 -1
- package/lib/services/maia/Agents/getAgents.js +68 -91
- package/lib/services/maia/Chats/getChatsByUserId.js +13 -9
- package/lib/services/maia/Orchestrator/orchestrator.js +15 -5
- package/lib/services/utils/validateIsMaia.js +2 -2
- package/lib/types/agent.js +1 -1
- package/lib/utils/hitlAnalytics.js +3 -3
- package/package.json +1 -1
|
@@ -543,7 +543,7 @@ export var useChatManager = function useChatManager(_ref3) {
|
|
|
543
543
|
streamingStore.setText(tempMessageId, content);
|
|
544
544
|
}, [addMessage]);
|
|
545
545
|
var handleStreamFinish = useCallback(/*#__PURE__*/function () {
|
|
546
|
-
var _ref6 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee2(content, sources, memorySessionId, rawAttachments, suggestions, completedAgentId) {
|
|
546
|
+
var _ref6 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee2(content, sources, memorySessionId, rawAttachments, suggestions, completedAgentId, resolvedContext) {
|
|
547
547
|
var _previousMessage$appr, _window$taskPanel, _createAgentFollowUp, _editAgentFollowUp;
|
|
548
548
|
var tempMessageId, attachments, taskUrlRegex, matches, contentToAdd, previousMessage, hasApprovalInPreviousMessage, TASK_CREATION_TOOLS, TASK_EDIT_TOOLS, TASK_DELETE_TOOLS, pendingActions, wasTaskCreation, wasTaskEdit, wasTaskDelete, wasCreateAgentApproved, wasConfigureAgentAccessApproved, createAgentFollowUp, configuredAgentId, wasEditAgentApproved, editAgentFollowUp, fromStream, fromArgs, resolvedAgentId, taskIdsFromUrls, taskIdsFromDeleteApproval, taskIdsFromDeletionText, taskIdsForDashboard, shouldSyncDashboard, taskIds, tab, tabSegment, lastProjectMessage, contextProjectIdRaw, contextProjectId, pathMatch, routeProjectId, isOnProjectRoute, _window$newProjectDas, _window$newProjectDas2, _window$newProjectDas3, _window$newProjectDas4, _window$newProjectDas5, _window$newProjectDas6, openTaskPanelId, manualApproval, manualWasTaskEdit, manualWasTaskDelete, _manualApproval$toolA, manualPseudoAction, affectedTaskIds, _window$taskPanel2, _window$taskPanel2$re, customEvent;
|
|
549
549
|
return _regeneratorRuntime.wrap(function (_context2) {
|
|
@@ -695,6 +695,61 @@ export var useChatManager = function useChatManager(_ref3) {
|
|
|
695
695
|
}, createAgentFollowUp ? {
|
|
696
696
|
createAgentFollowUp: createAgentFollowUp
|
|
697
697
|
} : {}));
|
|
698
|
+
|
|
699
|
+
// Orquestador: actualiza el chip de contexto con el proyecto/cliente
|
|
700
|
+
// que el subagente resolvió dinámicamente vía herramientas (ej. project_id
|
|
701
|
+
// encontrado por get_project_id_based_on_name o get_project_with_tasks_info).
|
|
702
|
+
if (resolvedContext !== null && resolvedContext !== void 0 && resolvedContext.project_id && !chipsProject) {
|
|
703
|
+
if (resolvedContext.project_name) {
|
|
704
|
+
setChipsProject({
|
|
705
|
+
projectName: resolvedContext.project_name,
|
|
706
|
+
clientName: resolvedContext.client_name || '',
|
|
707
|
+
projectId: String(resolvedContext.project_id)
|
|
708
|
+
});
|
|
709
|
+
setProject(_objectSpread(_objectSpread({
|
|
710
|
+
id: resolvedContext.project_id,
|
|
711
|
+
name: resolvedContext.project_name
|
|
712
|
+
}, resolvedContext.client_id ? {
|
|
713
|
+
clientId: resolvedContext.client_id
|
|
714
|
+
} : {}), resolvedContext.client_name ? {
|
|
715
|
+
client: {
|
|
716
|
+
id: resolvedContext.client_id || 0,
|
|
717
|
+
name: resolvedContext.client_name
|
|
718
|
+
}
|
|
719
|
+
} : {}));
|
|
720
|
+
} else {
|
|
721
|
+
fetchProjects(resolvedContext.project_id).then(function (projects) {
|
|
722
|
+
var found = projects === null || projects === void 0 ? void 0 : projects.find(function (p) {
|
|
723
|
+
return Number(p.id) === resolvedContext.project_id;
|
|
724
|
+
});
|
|
725
|
+
if (found) {
|
|
726
|
+
var _found$client2;
|
|
727
|
+
setChipsProject({
|
|
728
|
+
projectName: found.name,
|
|
729
|
+
clientName: ((_found$client2 = found.client) === null || _found$client2 === void 0 ? void 0 : _found$client2.name) || resolvedContext.client_name || '',
|
|
730
|
+
projectId: String(found.id)
|
|
731
|
+
});
|
|
732
|
+
setProject(found);
|
|
733
|
+
} else {
|
|
734
|
+
setChipsProject({
|
|
735
|
+
projectName: "Proyecto ".concat(resolvedContext.project_id),
|
|
736
|
+
clientName: resolvedContext.client_name || '',
|
|
737
|
+
projectId: String(resolvedContext.project_id)
|
|
738
|
+
});
|
|
739
|
+
setProject({
|
|
740
|
+
id: resolvedContext.project_id,
|
|
741
|
+
name: "Proyecto ".concat(resolvedContext.project_id)
|
|
742
|
+
});
|
|
743
|
+
}
|
|
744
|
+
});
|
|
745
|
+
}
|
|
746
|
+
}
|
|
747
|
+
if (resolvedContext !== null && resolvedContext !== void 0 && resolvedContext.client_id && !client) {
|
|
748
|
+
setClient === null || setClient === void 0 || setClient({
|
|
749
|
+
id: resolvedContext.client_id,
|
|
750
|
+
name: resolvedContext.client_name || ''
|
|
751
|
+
});
|
|
752
|
+
}
|
|
698
753
|
if ((_createAgentFollowUp = createAgentFollowUp) !== null && _createAgentFollowUp !== void 0 && _createAgentFollowUp.agentId) {
|
|
699
754
|
fetchAgentDetail(createAgentFollowUp.agentId).then(function (chatAgent) {
|
|
700
755
|
document.dispatchEvent(new CustomEvent('maia-merge-created-agent-into-list', {
|
|
@@ -729,7 +784,7 @@ export var useChatManager = function useChatManager(_ref3) {
|
|
|
729
784
|
}
|
|
730
785
|
}, _callee2);
|
|
731
786
|
}));
|
|
732
|
-
return function (_x4, _x5, _x6, _x7, _x8, _x9) {
|
|
787
|
+
return function (_x4, _x5, _x6, _x7, _x8, _x9, _x0) {
|
|
733
788
|
return _ref6.apply(this, arguments);
|
|
734
789
|
};
|
|
735
790
|
}(), [addMessage, removeMessage, project, getTabTaskDefault, event, agent]);
|
|
@@ -758,12 +813,74 @@ export var useChatManager = function useChatManager(_ref3) {
|
|
|
758
813
|
}, 500);
|
|
759
814
|
}, [addMessage, removeMessage, t]);
|
|
760
815
|
var handleApprovalRequired = useCallback(function (approval, accumulatedContent) {
|
|
761
|
-
var _approval$pending_act;
|
|
816
|
+
var _ref7, _approvalAny$resolved, _approvalAny$subagent, _approval$pending_act;
|
|
762
817
|
var tempMessageId = "answer-".concat(currentMessageId.current, "-streaming");
|
|
763
818
|
streamingStore.clear();
|
|
764
819
|
streamingPlaceholderIdRef.current = null;
|
|
765
820
|
activeStreamChatIdRef.current = null;
|
|
766
821
|
removeMessage(tempMessageId);
|
|
822
|
+
|
|
823
|
+
// Orquestador: extraer contexto resuelto del payload de aprobación y
|
|
824
|
+
// actualizar el chip inmediatamente — sin esperar al complete/refresh.
|
|
825
|
+
// El backend incluye resolved_context en subagent_used (dentro del
|
|
826
|
+
// approval_required data para subagentes) con el project_id/client_id
|
|
827
|
+
// que el subagente determinó antes del interrupt.
|
|
828
|
+
var approvalAny = approval;
|
|
829
|
+
var rc = (_ref7 = (_approvalAny$resolved = approvalAny.resolved_context) !== null && _approvalAny$resolved !== void 0 ? _approvalAny$resolved : (_approvalAny$subagent = approvalAny.subagent) === null || _approvalAny$subagent === void 0 ? void 0 : _approvalAny$subagent.resolved_context) !== null && _ref7 !== void 0 ? _ref7 : null;
|
|
830
|
+
if (rc !== null && rc !== void 0 && rc.project_id && !chipsProject) {
|
|
831
|
+
if (rc.project_name) {
|
|
832
|
+
// Tenemos nombre: setear el chip directamente
|
|
833
|
+
setChipsProject({
|
|
834
|
+
projectName: rc.project_name,
|
|
835
|
+
clientName: rc.client_name || '',
|
|
836
|
+
projectId: String(rc.project_id)
|
|
837
|
+
});
|
|
838
|
+
setProject(_objectSpread(_objectSpread({
|
|
839
|
+
id: rc.project_id,
|
|
840
|
+
name: rc.project_name
|
|
841
|
+
}, rc.client_id ? {
|
|
842
|
+
clientId: rc.client_id
|
|
843
|
+
} : {}), rc.client_name ? {
|
|
844
|
+
client: {
|
|
845
|
+
id: rc.client_id || 0,
|
|
846
|
+
name: rc.client_name
|
|
847
|
+
}
|
|
848
|
+
} : {}));
|
|
849
|
+
} else {
|
|
850
|
+
// Solo tenemos el ID — fetch del nombre completo del proyecto
|
|
851
|
+
fetchProjects(rc.project_id).then(function (projects) {
|
|
852
|
+
var found = projects === null || projects === void 0 ? void 0 : projects.find(function (p) {
|
|
853
|
+
return Number(p.id) === rc.project_id;
|
|
854
|
+
});
|
|
855
|
+
if (found) {
|
|
856
|
+
var _found$client3;
|
|
857
|
+
setChipsProject({
|
|
858
|
+
projectName: found.name,
|
|
859
|
+
clientName: ((_found$client3 = found.client) === null || _found$client3 === void 0 ? void 0 : _found$client3.name) || rc.client_name || '',
|
|
860
|
+
projectId: String(found.id)
|
|
861
|
+
});
|
|
862
|
+
setProject(found);
|
|
863
|
+
} else {
|
|
864
|
+
// Fallback: mostrar el ID si no se puede resolver el nombre
|
|
865
|
+
setChipsProject({
|
|
866
|
+
projectName: "Proyecto ".concat(rc.project_id),
|
|
867
|
+
clientName: rc.client_name || '',
|
|
868
|
+
projectId: String(rc.project_id)
|
|
869
|
+
});
|
|
870
|
+
setProject({
|
|
871
|
+
id: rc.project_id,
|
|
872
|
+
name: "Proyecto ".concat(rc.project_id)
|
|
873
|
+
});
|
|
874
|
+
}
|
|
875
|
+
});
|
|
876
|
+
}
|
|
877
|
+
}
|
|
878
|
+
if (rc !== null && rc !== void 0 && rc.client_id && !client) {
|
|
879
|
+
setClient === null || setClient === void 0 || setClient({
|
|
880
|
+
id: rc.client_id,
|
|
881
|
+
name: rc.client_name || ''
|
|
882
|
+
});
|
|
883
|
+
}
|
|
767
884
|
var hitlContext = {
|
|
768
885
|
messageId: "approval-".concat(approval.original_thread_id),
|
|
769
886
|
messageText: accumulatedContent || '',
|
|
@@ -775,9 +892,9 @@ export var useChatManager = function useChatManager(_ref3) {
|
|
|
775
892
|
};
|
|
776
893
|
hitlExecutionContextRef.current = hitlContext;
|
|
777
894
|
if (approval.manual_approval_detected) {
|
|
778
|
-
var _approval$pending_act2,
|
|
895
|
+
var _approval$pending_act2, _ref8, _tool_name, _tool_args;
|
|
779
896
|
var firstAction = (_approval$pending_act2 = approval.pending_actions) === null || _approval$pending_act2 === void 0 ? void 0 : _approval$pending_act2[0];
|
|
780
|
-
var toolName = (
|
|
897
|
+
var toolName = (_ref8 = (_tool_name = approval.tool_name) !== null && _tool_name !== void 0 ? _tool_name : firstAction === null || firstAction === void 0 ? void 0 : firstAction.tool_name) !== null && _ref8 !== void 0 ? _ref8 : '';
|
|
781
898
|
var toolArgs = ((_tool_args = approval.tool_args) !== null && _tool_args !== void 0 ? _tool_args : firstAction === null || firstAction === void 0 ? void 0 : firstAction.tool_args) || null;
|
|
782
899
|
if (toolName) {
|
|
783
900
|
lastManualApprovalRef.current = {
|
|
@@ -803,7 +920,7 @@ export var useChatManager = function useChatManager(_ref3) {
|
|
|
803
920
|
approvalStatus: 'pending'
|
|
804
921
|
});
|
|
805
922
|
isProcessingRef.current = false;
|
|
806
|
-
}, [addMessage, removeMessage]);
|
|
923
|
+
}, [addMessage, removeMessage, chipsProject, setChipsProject, setProject, client, setClient]);
|
|
807
924
|
var _useOrchestratorStrea = useOrchestratorStream({
|
|
808
925
|
onError: handleStreamError,
|
|
809
926
|
onStreamUpdate: handleStreamUpdate,
|
|
@@ -831,9 +948,9 @@ export var useChatManager = function useChatManager(_ref3) {
|
|
|
831
948
|
};
|
|
832
949
|
var currentProject = project;
|
|
833
950
|
var sendMessage = useCallback(/*#__PURE__*/function () {
|
|
834
|
-
var
|
|
951
|
+
var _ref9 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee3(message, attachmentsOrOptions, faqId, agentSuggestionId, mentions, fuaId, scId) {
|
|
835
952
|
var _messagesRef$current, _project$client;
|
|
836
|
-
var _normalizeSendMessage, attachments, options, effectiveMentions, contextMessage, payloadFuaId, payloadScId, payloadContextData, displayMessage, newMessageId, lastMessageWithProject, currentAgentFromMessages, streamingPlaceholderId, finalMessage, _options$projectChang, history,
|
|
953
|
+
var _normalizeSendMessage, attachments, options, effectiveMentions, contextMessage, payloadFuaId, payloadScId, payloadContextData, displayMessage, newMessageId, lastMessageWithProject, currentAgentFromMessages, streamingPlaceholderId, finalMessage, _options$projectChang, history, lastMessageProjectId, chipsProjectId, projectToRequest, parsed, projects, payloadFaqId, payloadAgentSuggestionId, payloadData;
|
|
837
954
|
return _regeneratorRuntime.wrap(function (_context3) {
|
|
838
955
|
while (1) switch (_context3.prev = _context3.next) {
|
|
839
956
|
case 0:
|
|
@@ -901,25 +1018,27 @@ export var useChatManager = function useChatManager(_ref3) {
|
|
|
901
1018
|
content: historyMessage.message,
|
|
902
1019
|
role: historyMessage.user.id === authUser.id.toString() ? ChatHistoryRole.USER : ChatHistoryRole.ASSISTANT
|
|
903
1020
|
};
|
|
904
|
-
});
|
|
905
|
-
|
|
906
|
-
|
|
907
|
-
|
|
908
|
-
|
|
1021
|
+
});
|
|
1022
|
+
lastMessageProjectId = lastMessageWithProject === null || lastMessageWithProject === void 0 ? void 0 : lastMessageWithProject.projectId; // chipsProject es la fuente de verdad del contexto visible en el chip:
|
|
1023
|
+
// se setea al pinear explícitamente o por resolución dinámica del orquestador,
|
|
1024
|
+
// y se limpia al volver al home (nueva conversación o cambio de chat).
|
|
1025
|
+
// Cuando es null no hay contexto explícito → restaurar desde el historial del chat
|
|
1026
|
+
// (ej. primera apertura de una conversación existente).
|
|
1027
|
+
chipsProjectId = chipsProject !== null && chipsProject !== void 0 && chipsProject.projectId ? Number(chipsProject.projectId) : null;
|
|
1028
|
+
projectToRequest = null;
|
|
1029
|
+
if (chipsProjectId != null && Number.isFinite(chipsProjectId)) {
|
|
1030
|
+
projectToRequest = chipsProjectId;
|
|
1031
|
+
} else if (lastMessageProjectId != null) {
|
|
909
1032
|
parsed = Number(lastMessageProjectId);
|
|
910
1033
|
projectToRequest = Number.isFinite(parsed) ? parsed : null;
|
|
911
1034
|
}
|
|
912
|
-
// Si no hay último mensaje, usar el contexto global
|
|
913
|
-
else if (contextProjectId != null) {
|
|
914
|
-
projectToRequest = contextProjectId;
|
|
915
|
-
}
|
|
916
1035
|
_context3.next = 2;
|
|
917
1036
|
return fetchProjects([projectToRequest]);
|
|
918
1037
|
case 2:
|
|
919
1038
|
projects = _context3.sent;
|
|
920
1039
|
payloadFaqId = faqId !== null && faqId !== void 0 ? faqId : options.faqId;
|
|
921
1040
|
payloadAgentSuggestionId = agentSuggestionId !== null && agentSuggestionId !== void 0 ? agentSuggestionId : options.agentSuggestionId;
|
|
922
|
-
payloadData = _objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread({
|
|
1041
|
+
payloadData = _objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread({
|
|
923
1042
|
message: finalMessage,
|
|
924
1043
|
history: history,
|
|
925
1044
|
projectId: projectToRequest,
|
|
@@ -964,6 +1083,8 @@ export var useChatManager = function useChatManager(_ref3) {
|
|
|
964
1083
|
scId: payloadScId
|
|
965
1084
|
} : {}), (agent === null || agent === void 0 ? void 0 : agent.entity) != null ? {
|
|
966
1085
|
agentEntity: agent.entity
|
|
1086
|
+
} : {}), (agent === null || agent === void 0 ? void 0 : agent.type) != null ? {
|
|
1087
|
+
agentType: agent.type
|
|
967
1088
|
} : {}), contextMessage ? {
|
|
968
1089
|
contextMessage: contextMessage
|
|
969
1090
|
} : {}), payloadContextData ? {
|
|
@@ -976,10 +1097,10 @@ export var useChatManager = function useChatManager(_ref3) {
|
|
|
976
1097
|
}
|
|
977
1098
|
}, _callee3);
|
|
978
1099
|
}));
|
|
979
|
-
return function (
|
|
980
|
-
return
|
|
1100
|
+
return function (_x1, _x10, _x11, _x12, _x13, _x14, _x15) {
|
|
1101
|
+
return _ref9.apply(this, arguments);
|
|
981
1102
|
};
|
|
982
|
-
}(), [addMessage, event, askMaia, project, client, task, authUser, agent, t, waitingResponse, loadingMessages, isWebSearchActive, isDeepSearchActive]);
|
|
1103
|
+
}(), [addMessage, event, askMaia, project, client, task, chipsProject, authUser, agent, t, waitingResponse, loadingMessages, isWebSearchActive, isDeepSearchActive]);
|
|
983
1104
|
var changeProject = useCallback(function (option) {
|
|
984
1105
|
if (!currentUserQuestion.current) return;
|
|
985
1106
|
if (option.id !== (project === null || project === void 0 ? void 0 : project.id)) {
|
|
@@ -992,7 +1113,7 @@ export var useChatManager = function useChatManager(_ref3) {
|
|
|
992
1113
|
role: historyMessage.user.id === authUser.id.toString() ? ChatHistoryRole.USER : ChatHistoryRole.ASSISTANT
|
|
993
1114
|
};
|
|
994
1115
|
});
|
|
995
|
-
askMaia(_objectSpread(_objectSpread(_objectSpread({
|
|
1116
|
+
askMaia(_objectSpread(_objectSpread(_objectSpread(_objectSpread({
|
|
996
1117
|
message: currentUserQuestion.current,
|
|
997
1118
|
history: history,
|
|
998
1119
|
projectId: option.id,
|
|
@@ -1013,11 +1134,13 @@ export var useChatManager = function useChatManager(_ref3) {
|
|
|
1013
1134
|
clientId: Number(option.clientId)
|
|
1014
1135
|
} : {}), (agent === null || agent === void 0 ? void 0 : agent.entity) != null ? {
|
|
1015
1136
|
agentEntity: agent.entity
|
|
1137
|
+
} : {}), (agent === null || agent === void 0 ? void 0 : agent.type) != null ? {
|
|
1138
|
+
agentType: agent.type
|
|
1016
1139
|
} : {}));
|
|
1017
1140
|
}
|
|
1018
1141
|
}, [project, setProject, askMaia, authUser, isWebSearchActive, agent]);
|
|
1019
1142
|
var handleFeedback = useCallback(/*#__PURE__*/function () {
|
|
1020
|
-
var
|
|
1143
|
+
var _ref0 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee4(feedbackProp, chatMessageId) {
|
|
1021
1144
|
var response;
|
|
1022
1145
|
return _regeneratorRuntime.wrap(function (_context4) {
|
|
1023
1146
|
while (1) switch (_context4.prev = _context4.next) {
|
|
@@ -1042,12 +1165,12 @@ export var useChatManager = function useChatManager(_ref3) {
|
|
|
1042
1165
|
}
|
|
1043
1166
|
}, _callee4);
|
|
1044
1167
|
}));
|
|
1045
|
-
return function (
|
|
1046
|
-
return
|
|
1168
|
+
return function (_x16, _x17) {
|
|
1169
|
+
return _ref0.apply(this, arguments);
|
|
1047
1170
|
};
|
|
1048
1171
|
}(), []);
|
|
1049
1172
|
var handleApprovalDecision = useCallback(/*#__PURE__*/function () {
|
|
1050
|
-
var
|
|
1173
|
+
var _ref1 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee5(threadIds, decision, editedActions) {
|
|
1051
1174
|
var messageWithApproval, approval, messageId, loadingKey, hitlContext, initialActivity, existingMessage, newStatus, response, _t;
|
|
1052
1175
|
return _regeneratorRuntime.wrap(function (_context5) {
|
|
1053
1176
|
while (1) switch (_context5.prev = _context5.next) {
|
|
@@ -1199,8 +1322,8 @@ export var useChatManager = function useChatManager(_ref3) {
|
|
|
1199
1322
|
}
|
|
1200
1323
|
}, _callee5, null, [[3, 7, 8, 9]]);
|
|
1201
1324
|
}));
|
|
1202
|
-
return function (
|
|
1203
|
-
return
|
|
1325
|
+
return function (_x18, _x19, _x20) {
|
|
1326
|
+
return _ref1.apply(this, arguments);
|
|
1204
1327
|
};
|
|
1205
1328
|
}(), [authUser, agent, addMessage, handleStreamError, handleStreamUpdate, handleStreamFinish, handleApprovalRequired, updateStreamActivity, t]);
|
|
1206
1329
|
var initializeChat = useCallback(/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee6() {
|
|
@@ -1242,7 +1365,7 @@ export var useChatManager = function useChatManager(_ref3) {
|
|
|
1242
1365
|
role: historyMessage.user.id === authUser.id.toString() ? ChatHistoryRole.USER : ChatHistoryRole.ASSISTANT
|
|
1243
1366
|
};
|
|
1244
1367
|
});
|
|
1245
|
-
askMaia(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread({
|
|
1368
|
+
askMaia(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread({
|
|
1246
1369
|
message: userInitialMessage.message,
|
|
1247
1370
|
history: history,
|
|
1248
1371
|
projectId: (project === null || project === void 0 ? void 0 : project.id) || null,
|
|
@@ -1287,6 +1410,8 @@ export var useChatManager = function useChatManager(_ref3) {
|
|
|
1287
1410
|
scId: userInitialMessage.scId
|
|
1288
1411
|
} : {}), (agent === null || agent === void 0 ? void 0 : agent.entity) != null ? {
|
|
1289
1412
|
agentEntity: agent.entity
|
|
1413
|
+
} : {}), (agent === null || agent === void 0 ? void 0 : agent.type) != null ? {
|
|
1414
|
+
agentType: agent.type
|
|
1290
1415
|
} : {}), buildContextMessage(userInitialMessage.mentions) ? {
|
|
1291
1416
|
contextMessage: buildContextMessage(userInitialMessage.mentions)
|
|
1292
1417
|
} : {}), userInitialMessage.contextData ? {
|
|
@@ -1335,4 +1460,4 @@ export var useChatManager = function useChatManager(_ref3) {
|
|
|
1335
1460
|
isDisabled: waitingResponse || loadingMessages
|
|
1336
1461
|
};
|
|
1337
1462
|
};
|
|
1338
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VDYWxsYmFjayIsInVzZVJlZiIsInVzZUVmZmVjdCIsInVzZVN0YXRlIiwidjQiLCJ1dWlkdjQiLCJ1c2VDaGF0TWVzc2FnZXMiLCJ1c2VPcmNoZXN0cmF0b3JTdHJlYW0iLCJ1c2VUIiwidXNlVXNlciIsInVzZUdsb2JhbENvbnRleHQiLCJFVkVOVFMiLCJ1c2VFdmVudCIsIm1haWEiLCJGZWVkYmFjayIsIkNoYXRIaXN0b3J5Um9sZSIsImJ1aWxkQ29udGV4dE1lc3NhZ2UiLCJmb3JtYXRRdWlja0FjdGlvbk1lc3NhZ2VGb3JEaXNwbGF5IiwidXNlUHJvamVjdHMiLCJ1c2VUYWJUYXNrRGVmYXVsdCIsIlRBU0tfVVJMX1JFR0VYX1BBVFRFUk4iLCJmZXRjaEFnZW50RGV0YWlsIiwiYnVpbGRIaXRsQWN0aW9uVHlwZUxpc3QiLCJnZXRIaXRsQW5hbHl0aWNzQWdlbnRUeXBlIiwiZ2V0VGhpbmtpbmdMb2FkaW5nTWVzc2FnZSIsImdldFdyaXRpbmdTdHJlYW1BY3Rpdml0eSIsInJlc29sdmVIaXRsTm9kZVN0cmVhbUFjdGl2aXR5IiwicmVzb2x2ZUluaXRpYWxIaXRsU3RyZWFtQWN0aXZpdHkiLCJzdHJlYW1pbmdTdG9yZSIsImlzQ29tcGxldGVMaWtlU3NlUGF5bG9hZCIsIm1lcmdlU3RyZWFtQ2h1bmsiLCJub3JtYWxpemVTZW5kTWVzc2FnZUFyZ3MiLCJhdHRhY2htZW50c09yT3B0aW9ucyIsIl9vcHRpb25zJGF0dGFjaG1lbnRzIiwiQXJyYXkiLCJpc0FycmF5IiwiYXR0YWNobWVudHMiLCJvcHRpb25zIiwibm9ybWFsaXplQXNzaXN0YW50QXR0YWNobWVudHMiLCJyYXdBdHRhY2htZW50cyIsImZpbHRlciIsImF0dGFjaG1lbnQiLCJfdHlwZW9mIiwibWFwIiwiaW5kZXgiLCJuYW1lIiwidHJpbSIsImNvbmNhdCIsInR5cGUiLCJtaW1lVHlwZSIsIm1pbWVfdHlwZSIsImZ1bGxGaWxlTmFtZSIsImluY2x1ZGVzIiwibnVtZXJpY1NpemUiLCJzaXplIiwiTnVtYmVyIiwiaXNGaW5pdGUiLCJmaWxlIiwiRmlsZSIsImlkIiwidXJsX29yaWdpbmFsIiwidW5kZWZpbmVkIiwidXJsX3RodW1ibmFpbCIsInVybF9maWxlIiwicm9sZSIsImV4dHJhY3RUYXNrSWRzRnJvbVBlbmRpbmdBY3Rpb25zQXJncyIsInBlbmRpbmdBY3Rpb25zIiwiaWRzIiwicHVzaElkIiwicmF3IiwibiIsInBhcnNlSW50IiwiU3RyaW5nIiwiaXNOYU4iLCJwdXNoIiwiZm9yRWFjaCIsImFjdGlvbiIsIl9yZWMkdGFza19pZCIsImFyZ3MiLCJ0b29sX2FyZ3MiLCJyZWMiLCJ0YXNrX2lkIiwidGFza19pZHMiLCJ0YXNrcyIsInQiLCJfdHJlYyR0YXNrX2lkIiwidHJlYyIsImV4dHJhY3RUYXNrSWRzRnJvbURlbGV0ZVBlbmRpbmdBY3Rpb25zIiwidG9vbF9uYW1lIiwiX3JlYyR0YXNrX2lkMiIsImxpc3QiLCJ0aWQiLCJleHRyYWN0QWdlbnRJZEZyb21FZGl0QWdlbnRQZW5kaW5nQWN0aW9ucyIsIl9yZWMkYWdlbnRfaWQiLCJlZGl0QWN0aW9uIiwiZmluZCIsImEiLCJ0b0xvd2VyQ2FzZSIsImFnZW50X2lkIiwiYWdlbnRJZCIsImV4dHJhY3RBZ2VudElkRnJvbVBlbmRpbmdBY3Rpb25zQnlUb29sTmFtZSIsInRvb2xOYW1lIiwiX3JlZiIsIl9yZWMkYWdlbnRfaWQyIiwiZXh0cmFjdFRhc2tJZHNGcm9tQXNzaXN0YW50RGVsZXRpb25UZXh0IiwidGV4dCIsImxhYmVsZWQiLCJtYXRjaCIsImJvbGQiLCJ1c2VTdGFibGVDYWxsYmFja3MiLCJhdXRoVXNlciIsImN1cnJlbnRVc2VyIiwidG9TdHJpbmciLCJmaXJzdE5hbWUiLCJhdmF0YXIiLCJwaWN0dXJlIiwiY3VycmVudCIsInBhcnNlU1NFTGluZSIsImxpbmUiLCJfbGluZSRzcGxpdCIsInNwbGl0IiwiX2xpbmUkc3BsaXQyIiwiX3NsaWNlZFRvQXJyYXkiLCJldmVudExpbmUiLCJkYXRhTGluZSIsImV2ZW50VHlwZSIsInJlcGxhY2UiLCJkYXRhU3RyIiwiZGF0YSIsIkpTT04iLCJwYXJzZSIsInBhcnNlRXJyb3IiLCJjb25zb2xlIiwiZXJyb3IiLCJwcm9jZXNzU1NFU3RyZWFtIiwiX3JlZjIiLCJfYXN5bmNUb0dlbmVyYXRvciIsIl9yZWdlbmVyYXRvclJ1bnRpbWUiLCJtYXJrIiwiX2NhbGxlZSIsInJlc3BvbnNlIiwidGhyZWFkSWQiLCJjYWxsYmFja3MiLCJfcmVzcG9uc2UkYm9keSIsInJlYWRlciIsImRlY29kZXIiLCJidWZmZXIiLCJhY2N1bXVsYXRlZENvbnRlbnQiLCJpc1N0cmVhbUNvbXBsZXRlIiwiaGFuZGxlTGluZSIsIl95aWVsZCRyZWFkZXIkcmVhZCIsImRvbmUiLCJ2YWx1ZSIsImxpbmVzIiwiaSIsIndyYXAiLCJfY29udGV4dCIsInByZXYiLCJuZXh0IiwiX2hhbmRsZUxpbmUiLCJwYXJzZWQiLCJldmVudERhdGEiLCJvblRoaW5raW5nIiwiY29udGVudCIsIm9uVG9rZW4iLCJfZXZlbnREYXRhJGFnZW50X2lkIiwiZmluYWxDb250ZW50Iiwic291cmNlcyIsIm1lbW9yeVNlc3Npb25JZCIsIm1lbW9yeV9zZXNzaW9uX2lkIiwic3VnZ2VzdGlvbnMiLCJzdWdnZXN0X3JlcGx5IiwiYWdlbnRJZFJhdyIsImNvbXBsZXRlZEFnZW50SWQiLCJvbkNvbXBsZXRlIiwibWVzc2FnZSIsIm9uTm9kZSIsIl9ldmVudERhdGEkYWdlbnRfaWQyIiwiX2NhbGxiYWNrcyRvbkFwcHJvdmFsIiwib25BcHByb3ZhbFJlcXVpcmVkIiwiY2FsbCIsIm9uRXJyb3IiLCJib2R5IiwiZ2V0UmVhZGVyIiwiRXJyb3IiLCJUZXh0RGVjb2RlciIsInJlYWQiLCJzZW50IiwiYWJydXB0IiwiZGVjb2RlIiwic3RyZWFtIiwicG9wIiwibGVuZ3RoIiwic3RvcCIsIl94IiwiX3gyIiwiX3gzIiwiYXBwbHkiLCJhcmd1bWVudHMiLCJ1c2VDaGF0TWFuYWdlciIsIl9yZWYzIiwiaW5pdGlhbENoYXRJZCIsImNoYXRJZCIsInVzZXJJbml0aWFsTWVzc2FnZSIsIl9yZWYzJGFnZW50cyIsImFnZW50cyIsIl91c2VUIiwiX3VzZUdsb2JhbENvbnRleHQiLCJwcm9qZWN0Iiwic2V0UHJvamVjdCIsImNsaWVudCIsInNldENsaWVudCIsInRhc2siLCJzZXRUYXNrIiwiYWdlbnQiLCJpc1dlYlNlYXJjaEFjdGl2ZSIsImlzRGVlcFNlYXJjaEFjdGl2ZSIsImNoaXBzUHJvamVjdCIsInNldENoaXBzUHJvamVjdCIsImV2ZW50IiwiX3VzZVByb2plY3RzIiwiZmV0Y2hQcm9qZWN0cyIsIl91c2VTdGFibGVDYWxsYmFja3MiLCJfdXNlVGFiVGFza0RlZmF1bHQiLCJnZXRUYWJUYXNrRGVmYXVsdCIsImN1cnJlbnRNZXNzYWdlSWQiLCJjdXJyZW50VXNlclF1ZXN0aW9uIiwiY3VycmVudENoYXRJZCIsInJlcG9ydGVkRXZlbnQiLCJtZXNzYWdlc1JlZiIsImxhc3RNYW51YWxBcHByb3ZhbFJlZiIsImhpdGxFeGVjdXRpb25Db250ZXh0UmVmIiwiaXNQcm9jZXNzaW5nUmVmIiwiZmlyc3RUaW1lUmVmIiwic3RyZWFtaW5nUGxhY2Vob2xkZXJJZFJlZiIsImFjdGl2ZVN0cmVhbUNoYXRJZFJlZiIsImFib3J0U3RyZWFtU2lsZW50bHlSZWYiLCJjbGVhclN0cmVhbVVpUmVmIiwiX3VzZVN0YXRlIiwiX3VzZVN0YXRlMiIsImFjdGl2ZUxvYWRpbmdzIiwic2V0QWN0aXZlTG9hZGluZ3MiLCJpc1dlYlNlYXJjaEFjdGl2ZVJlZiIsImlzRGVlcFNlYXJjaEFjdGl2ZVJlZiIsIl91c2VDaGF0TWVzc2FnZXMiLCJsb2FkaW5nTWVzc2FnZXMiLCJtZXNzYWdlcyIsImlzTG9hZGluZ01vcmVNZXNzYWdlcyIsImxvYWRNZXNzYWdlcyIsImFkZE1lc3NhZ2UiLCJyZW1vdmVNZXNzYWdlIiwiaGFuZGxlU2Nyb2xsIiwiY3VzdG9tRXZlbnQiLCJDdXN0b21FdmVudCIsImRldGFpbCIsImRvY3VtZW50IiwiZGlzcGF0Y2hFdmVudCIsImNsZWFyIiwiaXNDbG9uZUFnZW50IiwibGFzdE1zZ1dpdGhQcm9qZWN0IiwibXNnIiwicHJvamVjdElkIiwiYXQiLCJfcmVmNCIsInByb2plY3ROYW1lIiwidGhlbiIsInByb2plY3RzIiwiZm91bmQiLCJwIiwiX2ZvdW5kJGNsaWVudCIsImNsaWVudE5hbWUiLCJsYXN0TXNnV2l0aENsaWVudCIsImNsaWVudElkIiwiX3JlZjUiLCJtc2dDbGllbnRJZCIsIm1zZ0NsaWVudE5hbWUiLCJoYW5kbGVTdHJlYW1FcnJvciIsImVycm9yTWVzc2FnZSIsImVycm9yUmF3TWVzc2FnZSIsIl9lcnJvclJhd01lc3NhZ2UkbWF0YyIsIl9lcnJvclJhd01lc3NhZ2UkbWF0YzIiLCJ0ZW1wTWVzc2FnZUlkIiwidXNlZCIsImlzRXJyb3IiLCJkYXRlIiwiRGF0ZSIsInVzZXIiLCJBU1NJU1RBTlQiLCJoYW5kbGVTdHJlYW1VcGRhdGUiLCJzdGFydCIsInNldFRleHQiLCJoYW5kbGVTdHJlYW1GaW5pc2giLCJfcmVmNiIsIl9jYWxsZWUyIiwiX3ByZXZpb3VzTWVzc2FnZSRhcHByIiwiX3dpbmRvdyR0YXNrUGFuZWwiLCJfY3JlYXRlQWdlbnRGb2xsb3dVcCIsIl9lZGl0QWdlbnRGb2xsb3dVcCIsInRhc2tVcmxSZWdleCIsIm1hdGNoZXMiLCJjb250ZW50VG9BZGQiLCJwcmV2aW91c01lc3NhZ2UiLCJoYXNBcHByb3ZhbEluUHJldmlvdXNNZXNzYWdlIiwiVEFTS19DUkVBVElPTl9UT09MUyIsIlRBU0tfRURJVF9UT09MUyIsIlRBU0tfREVMRVRFX1RPT0xTIiwid2FzVGFza0NyZWF0aW9uIiwid2FzVGFza0VkaXQiLCJ3YXNUYXNrRGVsZXRlIiwid2FzQ3JlYXRlQWdlbnRBcHByb3ZlZCIsIndhc0NvbmZpZ3VyZUFnZW50QWNjZXNzQXBwcm92ZWQiLCJjcmVhdGVBZ2VudEZvbGxvd1VwIiwiY29uZmlndXJlZEFnZW50SWQiLCJ3YXNFZGl0QWdlbnRBcHByb3ZlZCIsImVkaXRBZ2VudEZvbGxvd1VwIiwiZnJvbVN0cmVhbSIsImZyb21BcmdzIiwicmVzb2x2ZWRBZ2VudElkIiwidGFza0lkc0Zyb21VcmxzIiwidGFza0lkc0Zyb21EZWxldGVBcHByb3ZhbCIsInRhc2tJZHNGcm9tRGVsZXRpb25UZXh0IiwidGFza0lkc0ZvckRhc2hib2FyZCIsInNob3VsZFN5bmNEYXNoYm9hcmQiLCJ0YXNrSWRzIiwidGFiIiwidGFiU2VnbWVudCIsImxhc3RQcm9qZWN0TWVzc2FnZSIsImNvbnRleHRQcm9qZWN0SWRSYXciLCJjb250ZXh0UHJvamVjdElkIiwicGF0aE1hdGNoIiwicm91dGVQcm9qZWN0SWQiLCJpc09uUHJvamVjdFJvdXRlIiwiX3dpbmRvdyRuZXdQcm9qZWN0RGFzIiwiX3dpbmRvdyRuZXdQcm9qZWN0RGFzMiIsIl93aW5kb3ckbmV3UHJvamVjdERhczMiLCJfd2luZG93JG5ld1Byb2plY3REYXM0IiwiX3dpbmRvdyRuZXdQcm9qZWN0RGFzNSIsIl93aW5kb3ckbmV3UHJvamVjdERhczYiLCJvcGVuVGFza1BhbmVsSWQiLCJtYW51YWxBcHByb3ZhbCIsIm1hbnVhbFdhc1Rhc2tFZGl0IiwibWFudWFsV2FzVGFza0RlbGV0ZSIsIl9tYW51YWxBcHByb3ZhbCR0b29sQSIsIm1hbnVhbFBzZXVkb0FjdGlvbiIsImFmZmVjdGVkVGFza0lkcyIsIl93aW5kb3ckdGFza1BhbmVsMiIsIl93aW5kb3ckdGFza1BhbmVsMiRyZSIsIl9jb250ZXh0MiIsIlJlZ0V4cCIsIl90b0NvbnN1bWFibGVBcnJheSIsIm1hdGNoQWxsIiwibSIsImFwcHJvdmFsIiwicGVuZGluZ19hY3Rpb25zIiwic29tZSIsImFwcHJvdmFsU3RhdHVzIiwid2luZG93IiwiTUFJQV9DSEFUX0FJX0ZFQVRVUkVfQUNDRVNTX01VTFRJX0FHRU5UUyIsImFpQ2hhdEhpdGxPcHRpb24iLCJfb2JqZWN0U3ByZWFkIiwiYWdlbnRfdHlwZSIsImFjdGlvbl90eXBlIiwiZGVjaXNpb24iLCJvcHRpb24iLCJjcmVhdGVkX2FnZW50X2lkIiwidXJsIiwibG9jYXRpb24iLCJwYXRobmFtZSIsIm5ld1Byb2plY3REYXNoYm9hcmQiLCJhZGRFeGlzdGluZ1Rhc2tUb0Rhc2hib2FyZCIsImVkaXRFeGlzdGluZ1Rhc2tJbkRhc2hib2FyZCIsImRlbGV0ZUV4aXN0aW5nVGFza0Zyb21EYXNoYm9hcmQiLCJ0YXNrUGFuZWwiLCJ0YXNrSWQiLCJ0b29sQXJncyIsInJlZmV0Y2hUYXNrIiwiY2hhdEFnZW50IiwiZXJyIiwiX3g0IiwiX3g1IiwiX3g2IiwiX3g3IiwiX3g4IiwiX3g5IiwiaGFuZGxlU3RyZWFtU3RvcCIsImlzRnJvbnRlbmRDYW5jZWxsZWQiLCJzZXRUaW1lb3V0IiwiaGFuZGxlQXBwcm92YWxSZXF1aXJlZCIsIl9hcHByb3ZhbCRwZW5kaW5nX2FjdCIsImhpdGxDb250ZXh0IiwibWVzc2FnZUlkIiwib3JpZ2luYWxfdGhyZWFkX2lkIiwibWVzc2FnZVRleHQiLCJ0aHJlYWRJZHMiLCJ0aHJlYWRfaWQiLCJtYW51YWxfYXBwcm92YWxfZGV0ZWN0ZWQiLCJfYXBwcm92YWwkcGVuZGluZ19hY3QyIiwiX3JlZjciLCJfdG9vbF9uYW1lIiwiX3Rvb2xfYXJncyIsImZpcnN0QWN0aW9uIiwiX3VzZU9yY2hlc3RyYXRvclN0cmVhIiwib25TdHJlYW1VcGRhdGUiLCJvbkZpbmlzaFN0cmVhbSIsIm9uU3RvcCIsImFza01haWEiLCJ3YWl0aW5nUmVzcG9uc2UiLCJpc0xvYWRpbmciLCJpc1dyaXRpbmciLCJsb2FkaW5nTWVzc2FnZSIsInN0cmVhbUFjdGl2aXR5IiwidXBkYXRlU3RyZWFtQWN0aXZpdHkiLCJzdG9wU3RyZWFtaW5nIiwiYWJvcnRTdHJlYW1TaWxlbnRseSIsImN1cnJlbnRQcm9qZWN0Iiwic2VuZE1lc3NhZ2UiLCJfcmVmOCIsIl9jYWxsZWUzIiwiZmFxSWQiLCJhZ2VudFN1Z2dlc3Rpb25JZCIsIm1lbnRpb25zIiwiZnVhSWQiLCJzY0lkIiwiX21lc3NhZ2VzUmVmJGN1cnJlbnQiLCJfcHJvamVjdCRjbGllbnQiLCJfbm9ybWFsaXplU2VuZE1lc3NhZ2UiLCJlZmZlY3RpdmVNZW50aW9ucyIsImNvbnRleHRNZXNzYWdlIiwicGF5bG9hZEZ1YUlkIiwicGF5bG9hZFNjSWQiLCJwYXlsb2FkQ29udGV4dERhdGEiLCJkaXNwbGF5TWVzc2FnZSIsIm5ld01lc3NhZ2VJZCIsImxhc3RNZXNzYWdlV2l0aFByb2plY3QiLCJjdXJyZW50QWdlbnRGcm9tTWVzc2FnZXMiLCJzdHJlYW1pbmdQbGFjZWhvbGRlcklkIiwiZmluYWxNZXNzYWdlIiwiX29wdGlvbnMkcHJvamVjdENoYW5nIiwiaGlzdG9yeSIsImxhc3RNZXNzYWdlUHJvamVjdElkIiwicHJvamVjdFRvUmVxdWVzdCIsInBheWxvYWRGYXFJZCIsInBheWxvYWRBZ2VudFN1Z2dlc3Rpb25JZCIsInBheWxvYWREYXRhIiwiX2NvbnRleHQzIiwiY29udGV4dERhdGEiLCJwbUFpVHlwZWRUZXh0IiwiVVNFUiIsInByb2plY3RDaGFuZ2VkIiwiaW5jb21lVHlwZSIsImhpc3RvcnlNZXNzYWdlIiwibGFuZyIsInVzZXJJZCIsImxhc3ROYW1lIiwiY29tcGFueUlkIiwiY29tcGFueV9pZCIsImFnZW50TmFtZSIsImZlZUlkIiwidGFza05hbWUiLCJlbnRpdHkiLCJhZ2VudEVudGl0eSIsIl94MCIsIl94MSIsIl94MTAiLCJfeDExIiwiX3gxMiIsIl94MTMiLCJfeDE0IiwiY2hhbmdlUHJvamVjdCIsImhhbmRsZUZlZWRiYWNrIiwiX3JlZjkiLCJfY2FsbGVlNCIsImZlZWRiYWNrUHJvcCIsImNoYXRNZXNzYWdlSWQiLCJfY29udGV4dDQiLCJDaGF0cyIsIndhc0hlbHBmdWxDaGF0IiwiVEhVTUJTX1VQIiwid2FzSGVscGZ1bCIsIl94MTUiLCJfeDE2IiwiaGFuZGxlQXBwcm92YWxEZWNpc2lvbiIsIl9yZWYwIiwiX2NhbGxlZTUiLCJlZGl0ZWRBY3Rpb25zIiwibWVzc2FnZVdpdGhBcHByb3ZhbCIsImxvYWRpbmdLZXkiLCJpbml0aWFsQWN0aXZpdHkiLCJleGlzdGluZ01lc3NhZ2UiLCJuZXdTdGF0dXMiLCJfdCIsIl9jb250ZXh0NSIsIl9tJGFwcHJvdmFsIiwiX2RlZmluZVByb3BlcnR5IiwiT3JjaGVzdHJhdG9yIiwiY29udGludWVUaHJlYWQiLCJzZXNzaW9uSWQiLCJzZXNzaW9uX2lkIiwib2siLCJhY3Rpdml0eSIsInBoYXNlIiwiY3VycmVudFRocmVhZElkIiwibm9kZUFjdGl2aXR5IiwidXNlUmVzdW1pbmdGYWxsYmFjayIsIm5ld0xvYWRpbmdzIiwiYXBwcm92YWxQYXlsb2FkIiwiZmluaXNoIiwiX3gxNyIsIl94MTgiLCJfeDE5IiwiaW5pdGlhbGl6ZUNoYXQiLCJfY2FsbGVlNiIsIl91c2VySW5pdGlhbE1lc3NhZ2UkbSIsIl91c2VySW5pdGlhbE1lc3NhZ2UkYSIsIl9wcm9qZWN0JGNsaWVudDIiLCJfcHJvamVjdCRjbGllbnQzIiwiaGFzSW5pdGlhbE1lc3NhZ2UiLCJoYXNJbml0aWFsQXR0YWNobWVudHMiLCJoYXNJbml0aWFsRmFxIiwiaGFzSW5pdGlhbEZ1YSIsImhhc0luaXRpYWxTYyIsIl9jb250ZXh0NiIsIkJvb2xlYW4iLCJyZXNldENoYXQiLCJzdG9wR2VuZXJhdGlvbiIsImlzRGlzYWJsZWQiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaG9va3MvdXNlQ2hhdE1hbmFnZXIvdXNlQ2hhdE1hbmFnZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgcmFkaXggKi9cbi8qIGVzbGludC1kaXNhYmxlIG5vLW5lc3RlZC10ZXJuYXJ5ICovXG4vKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tbm9uLW51bGwtYXNzZXJ0ZWQtb3B0aW9uYWwtY2hhaW4gKi9cbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cbmltcG9ydCB7IHVzZUNhbGxiYWNrLCB1c2VSZWYsIHVzZUVmZmVjdCwgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCdcbmltcG9ydCB7IHY0IGFzIHV1aWR2NCB9IGZyb20gJ3V1aWQnXG5pbXBvcnQgeyB1c2VDaGF0TWVzc2FnZXMgfSBmcm9tICcuLi91c2VDaGF0TWVzc2FnZXMnXG5pbXBvcnQgeyB1c2VPcmNoZXN0cmF0b3JTdHJlYW0gfSBmcm9tICcuLi91c2VPcmNoZXN0cmF0b3JTdHJlYW0nXG5pbXBvcnQgeyB1c2VUIH0gZnJvbSAnLi4vdXNlVCdcbmltcG9ydCB7IEF0dGFjaG1lbnRGaWxlIH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9tb2xlY3VsZXMvQ2hhdEZvb3Rlci9DaGF0Rm9vdGVyJ1xuaW1wb3J0IHsgU2VuZE1lc3NhZ2VPcHRpb25zLCBVc2VDaGF0TWFuYWdlclByb3BzIH0gZnJvbSAnLi91c2VDaGF0TWFuYWdlci5pbnRlcmZhY2UnXG5pbXBvcnQgeyB1c2VVc2VyLCBDT1JVc2VyIH0gZnJvbSAnLi4vLi4vY29udGV4dC9jb3ItdXNlcidcbmltcG9ydCB7IHVzZUdsb2JhbENvbnRleHQgfSBmcm9tICcuLi8uLi9jb250ZXh0L2dsb2JhbC1jb250ZXh0J1xuaW1wb3J0IHsgRVZFTlRTLCB1c2VFdmVudCB9IGZyb20gJy4uL3VzZUV2ZW50J1xuaW1wb3J0IG1haWEgZnJvbSAnLi4vLi4vc2VydmljZXMvbWFpYSdcbmltcG9ydCB7IEZlZWRiYWNrIH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9tb2xlY3VsZXMvTWVzc2FnZUZlZWRiYWNrL01lc3NhZ2VGZWVkYmFjaydcbmltcG9ydCB7IENoYXRNZXNzYWdlLCBDaGF0TWVzc2FnZVVzZXIsIENoYXRIaXN0b3J5Um9sZSwgQXBwcm92YWxSZXF1ZXN0LCBQZW5kaW5nQWN0aW9uIH0gZnJvbSAnLi4vLi4vdHlwZXMvQ2hhdCdcbmltcG9ydCB7IENvbnRleHRNZW50aW9uLCBDb250ZXh0TWVzc2FnZSwgYnVpbGRDb250ZXh0TWVzc2FnZSB9IGZyb20gJy4uLy4uL3R5cGVzL2NvbnRleHRNZW50aW9uJ1xuaW1wb3J0IHsgZm9ybWF0UXVpY2tBY3Rpb25NZXNzYWdlRm9yRGlzcGxheSB9IGZyb20gJy4uLy4uL3V0aWxzL2Zvcm1hdFF1aWNrQWN0aW9uTWVzc2FnZSdcblxuaW1wb3J0IHsgUHJvamVjdCB9IGZyb20gJy4uLy4uL3R5cGVzL1Byb2plY3QnXG5pbXBvcnQgeyB1c2VQcm9qZWN0cyB9IGZyb20gJy4uL3VzZVByb2plY3RzJ1xuaW1wb3J0IHsgdXNlVGFiVGFza0RlZmF1bHQgfSBmcm9tICcuLi91c2VUYWJUYXNrRGVmYXVsdCdcbmltcG9ydCB7IFRBU0tfVVJMX1JFR0VYX1BBVFRFUk4gfSBmcm9tICcuLi8uLi9jb25zdGFudHMvdGFza1VybHMnXG5pbXBvcnQgeyBmZXRjaEFnZW50RGV0YWlsIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvbWFpYS9BZ2VudHMvZmV0Y2hBZ2VudERldGFpbCdcbmltcG9ydCB7IGJ1aWxkSGl0bEFjdGlvblR5cGVMaXN0LCBnZXRIaXRsQW5hbHl0aWNzQWdlbnRUeXBlIH0gZnJvbSAnLi4vLi4vdXRpbHMvaGl0bEFuYWx5dGljcydcbmltcG9ydCB0eXBlIHsgU3RyZWFtQWN0aXZpdHkgfSBmcm9tICcuLi8uLi90eXBlcy9zdHJlYW1BY3Rpdml0eSdcbmltcG9ydCB7XG4gIGdldFRoaW5raW5nTG9hZGluZ01lc3NhZ2UsXG4gIGdldFdyaXRpbmdTdHJlYW1BY3Rpdml0eSxcbiAgcmVzb2x2ZUhpdGxOb2RlU3RyZWFtQWN0aXZpdHksXG4gIHJlc29sdmVJbml0aWFsSGl0bFN0cmVhbUFjdGl2aXR5LFxuICB0eXBlIEhpdGxFeGVjdXRpb25Db250ZXh0LFxufSBmcm9tICcuLi8uLi91dGlscy9zdHJlYW1BY3Rpdml0eU1lc3NhZ2VzJ1xuaW1wb3J0IHsgc3RyZWFtaW5nU3RvcmUgfSBmcm9tICcuLi91c2VTdHJlYW1pbmdNZXNzYWdlJ1xuaW1wb3J0IHsgaXNDb21wbGV0ZUxpa2VTc2VQYXlsb2FkLCBtZXJnZVN0cmVhbUNodW5rIH0gZnJvbSAnLi4vLi4vdXRpbHMvc3NlU3RyZWFtQ29udGVudCdcblxudHlwZSBBdHRhY2htZW50c09yT3B0aW9ucyA9IEF0dGFjaG1lbnRGaWxlW10gfCBTZW5kTWVzc2FnZU9wdGlvbnNcblxuY29uc3Qgbm9ybWFsaXplU2VuZE1lc3NhZ2VBcmdzID0gKGF0dGFjaG1lbnRzT3JPcHRpb25zPzogQXR0YWNobWVudHNPck9wdGlvbnMpID0+IHtcbiAgaWYgKEFycmF5LmlzQXJyYXkoYXR0YWNobWVudHNPck9wdGlvbnMpKSB7XG4gICAgcmV0dXJuIHsgYXR0YWNobWVudHM6IGF0dGFjaG1lbnRzT3JPcHRpb25zLCBvcHRpb25zOiB7fSBhcyBTZW5kTWVzc2FnZU9wdGlvbnMgfVxuICB9XG5cbiAgY29uc3Qgb3B0aW9uczogU2VuZE1lc3NhZ2VPcHRpb25zID0gYXR0YWNobWVudHNPck9wdGlvbnMgPz8ge31cbiAgcmV0dXJuIHsgYXR0YWNobWVudHM6IG9wdGlvbnMuYXR0YWNobWVudHMgPz8gW10sIG9wdGlvbnMgfVxufVxuXG5jb25zdCBub3JtYWxpemVBc3Npc3RhbnRBdHRhY2htZW50cyA9IChyYXdBdHRhY2htZW50czogdW5rbm93bik6IEF0dGFjaG1lbnRGaWxlW10gPT4ge1xuICBpZiAoIUFycmF5LmlzQXJyYXkocmF3QXR0YWNobWVudHMpKSB7XG4gICAgcmV0dXJuIFtdXG4gIH1cblxuICByZXR1cm4gcmF3QXR0YWNobWVudHNcbiAgICAuZmlsdGVyKChhdHRhY2htZW50KTogYXR0YWNobWVudCBpcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9PiAhIWF0dGFjaG1lbnQgJiYgdHlwZW9mIGF0dGFjaG1lbnQgPT09ICdvYmplY3QnKVxuICAgIC5tYXAoKGF0dGFjaG1lbnQsIGluZGV4KSA9PiB7XG4gICAgICBjb25zdCBuYW1lID1cbiAgICAgICAgdHlwZW9mIGF0dGFjaG1lbnQubmFtZSA9PT0gJ3N0cmluZycgJiYgYXR0YWNobWVudC5uYW1lLnRyaW0oKSA/IGF0dGFjaG1lbnQubmFtZS50cmltKCkgOiBgZmlsZS0ke2luZGV4ICsgMX1gXG4gICAgICBjb25zdCB0eXBlID0gdHlwZW9mIGF0dGFjaG1lbnQudHlwZSA9PT0gJ3N0cmluZycgJiYgYXR0YWNobWVudC50eXBlLnRyaW0oKSA/IGF0dGFjaG1lbnQudHlwZS50cmltKCkgOiAncGRmJ1xuICAgICAgY29uc3QgbWltZVR5cGUgPSB0eXBlb2YgYXR0YWNobWVudC5taW1lX3R5cGUgPT09ICdzdHJpbmcnID8gYXR0YWNobWVudC5taW1lX3R5cGUgOiAnJ1xuICAgICAgY29uc3QgZnVsbEZpbGVOYW1lID0gbmFtZS5pbmNsdWRlcygnLicpID8gbmFtZSA6IGAke25hbWV9LiR7dHlwZX1gXG4gICAgICBjb25zdCBudW1lcmljU2l6ZSA9XG4gICAgICAgIHR5cGVvZiBhdHRhY2htZW50LnNpemUgPT09ICdudW1iZXInXG4gICAgICAgICAgPyBhdHRhY2htZW50LnNpemVcbiAgICAgICAgICA6IE51bWJlci5pc0Zpbml0ZShOdW1iZXIoYXR0YWNobWVudC5zaXplKSlcbiAgICAgICAgICAgID8gTnVtYmVyKGF0dGFjaG1lbnQuc2l6ZSlcbiAgICAgICAgICAgIDogMFxuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBmaWxlOiBuZXcgRmlsZShbXSwgZnVsbEZpbGVOYW1lLCB7IHR5cGU6IG1pbWVUeXBlIH0pLFxuICAgICAgICBpZDpcbiAgICAgICAgICB0eXBlb2YgYXR0YWNobWVudC5pZCA9PT0gJ3N0cmluZycgJiYgYXR0YWNobWVudC5pZC50cmltKClcbiAgICAgICAgICAgID8gYXR0YWNobWVudC5pZFxuICAgICAgICAgICAgOiBgYXNzaXN0YW50LWZpbGUtJHtpbmRleH0tJHtmdWxsRmlsZU5hbWV9YCxcbiAgICAgICAgbmFtZSxcbiAgICAgICAgc2l6ZTogbnVtZXJpY1NpemUsXG4gICAgICAgIHR5cGUsXG4gICAgICAgIHVybF9vcmlnaW5hbDogdHlwZW9mIGF0dGFjaG1lbnQudXJsX29yaWdpbmFsID09PSAnc3RyaW5nJyA/IGF0dGFjaG1lbnQudXJsX29yaWdpbmFsIDogdW5kZWZpbmVkLFxuICAgICAgICB1cmxfdGh1bWJuYWlsOiB0eXBlb2YgYXR0YWNobWVudC51cmxfdGh1bWJuYWlsID09PSAnc3RyaW5nJyA/IGF0dGFjaG1lbnQudXJsX3RodW1ibmFpbCA6IHVuZGVmaW5lZCxcbiAgICAgICAgdXJsX2ZpbGU6IHR5cGVvZiBhdHRhY2htZW50LnVybF9maWxlID09PSAnc3RyaW5nJyA/IGF0dGFjaG1lbnQudXJsX2ZpbGUgOiB1bmRlZmluZWQsXG4gICAgICAgIHJvbGU6IGF0dGFjaG1lbnQucm9sZSA9PT0gJ2Fzc2lzdGFudCcgPyAnYXNzaXN0YW50JyA6ICd1c2VyJyxcbiAgICAgIH1cbiAgICB9KVxufVxuXG4vKiogRXh0cmFlIHRhc2tfaWRzIGRlIGxvcyB0b29sX2FyZ3MgZGUgcGVuZGluZ19hY3Rpb25zLCBjdWJyaWVuZG8gbGFzIGZvcm1hcyBjb211bmVzOlxuICogIC0gYHsgdGFza19pZCB9YCBvIGB7IGlkIH1gXG4gKiAgLSBgeyB0YXNrX2lkczogW10gfWBcbiAqICAtIGB7IHRhc2tzOiBbeyB0YXNrX2lkfGlkIH0sIC4uLl0gfWBcbiAqICDDmnRpbCBwYXJhIHRvb2xzIGRlIGVkaXQvYXNzaWduL2RlbGV0ZSBjdWFuZG8gbGEgcmVzcHVlc3RhIGRlbCBMTE0gbm8gaW5jbHV5ZSBVUkxzIC90YXNrcy8uLi4vZGV0YWlsLiAqL1xuZnVuY3Rpb24gZXh0cmFjdFRhc2tJZHNGcm9tUGVuZGluZ0FjdGlvbnNBcmdzKHBlbmRpbmdBY3Rpb25zOiBQZW5kaW5nQWN0aW9uW10pOiBudW1iZXJbXSB7XG4gIGNvbnN0IGlkczogbnVtYmVyW10gPSBbXVxuICBjb25zdCBwdXNoSWQgPSAocmF3OiB1bmtub3duKSA9PiB7XG4gICAgaWYgKHJhdyA9PSBudWxsKSByZXR1cm5cbiAgICBjb25zdCBuID0gcGFyc2VJbnQoU3RyaW5nKHJhdyksIDEwKVxuICAgIGlmICghTnVtYmVyLmlzTmFOKG4pKSBpZHMucHVzaChuKVxuICB9XG4gIHBlbmRpbmdBY3Rpb25zLmZvckVhY2goYWN0aW9uID0+IHtcbiAgICBpZiAoIWFjdGlvbiB8fCB0eXBlb2YgYWN0aW9uICE9PSAnb2JqZWN0JykgcmV0dXJuXG4gICAgY29uc3QgYXJncyA9IGFjdGlvbi50b29sX2FyZ3NcbiAgICBpZiAoIShhcmdzICYmIHR5cGVvZiBhcmdzID09PSAnb2JqZWN0JyAmJiAhQXJyYXkuaXNBcnJheShhcmdzKSkpIHJldHVyblxuICAgIGNvbnN0IHJlYyA9IGFyZ3MgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj5cbiAgICBwdXNoSWQocmVjLnRhc2tfaWQgPz8gcmVjLmlkKVxuICAgIGlmIChBcnJheS5pc0FycmF5KHJlYy50YXNrX2lkcykpIHtcbiAgICAgIHJlYy50YXNrX2lkcy5mb3JFYWNoKHB1c2hJZClcbiAgICB9XG4gICAgaWYgKEFycmF5LmlzQXJyYXkocmVjLnRhc2tzKSkge1xuICAgICAgcmVjLnRhc2tzLmZvckVhY2godCA9PiB7XG4gICAgICAgIGlmICh0ICYmIHR5cGVvZiB0ID09PSAnb2JqZWN0JyAmJiAhQXJyYXkuaXNBcnJheSh0KSkge1xuICAgICAgICAgIGNvbnN0IHRyZWMgPSB0IGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+XG4gICAgICAgICAgcHVzaElkKHRyZWMudGFza19pZCA/PyB0cmVjLmlkKVxuICAgICAgICB9XG4gICAgICB9KVxuICAgIH1cbiAgfSlcbiAgcmV0dXJuIGlkc1xufVxuXG4vKiogdGFza19pZCAvIHRhc2tfaWRzIGVuIHBlbmRpbmdfYWN0aW9ucyBkZSBkZWxldGVfKiAobGEgcmVzcHVlc3RhIHB1ZWRlIG5vIGluY2x1aXIgVVJMcyAvdGFza3Mv4oCmL2RldGFpbCkuICovXG5mdW5jdGlvbiBleHRyYWN0VGFza0lkc0Zyb21EZWxldGVQZW5kaW5nQWN0aW9ucyhwZW5kaW5nQWN0aW9uczogUGVuZGluZ0FjdGlvbltdKTogbnVtYmVyW10ge1xuICBjb25zdCBpZHM6IG51bWJlcltdID0gW11cbiAgcGVuZGluZ0FjdGlvbnMuZm9yRWFjaChhY3Rpb24gPT4ge1xuICAgIGlmICghYWN0aW9uIHx8IHR5cGVvZiBhY3Rpb24gIT09ICdvYmplY3QnKSByZXR1cm5cbiAgICBjb25zdCBhcmdzID0gYWN0aW9uLnRvb2xfYXJnc1xuICAgIGlmICghKGFyZ3MgJiYgdHlwZW9mIGFyZ3MgPT09ICdvYmplY3QnICYmICFBcnJheS5pc0FycmF5KGFyZ3MpKSkgcmV0dXJuXG4gICAgY29uc3QgcmVjID0gYXJncyBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPlxuICAgIGlmIChhY3Rpb24udG9vbF9uYW1lID09PSAnZGVsZXRlX3Rhc2snKSB7XG4gICAgICBjb25zdCByYXcgPSByZWMudGFza19pZCA/PyByZWMuaWRcbiAgICAgIGlmIChyYXcgIT0gbnVsbCkge1xuICAgICAgICBjb25zdCBuID0gcGFyc2VJbnQoU3RyaW5nKHJhdyksIDEwKVxuICAgICAgICBpZiAoIU51bWJlci5pc05hTihuKSkgaWRzLnB1c2gobilcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGFjdGlvbi50b29sX25hbWUgPT09ICdkZWxldGVfdGFza3NfYmF0Y2gnKSB7XG4gICAgICBjb25zdCBsaXN0ID0gcmVjLnRhc2tfaWRzXG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShsaXN0KSkge1xuICAgICAgICBsaXN0LmZvckVhY2godGlkID0+IHtcbiAgICAgICAgICBjb25zdCBuID0gcGFyc2VJbnQoU3RyaW5nKHRpZCksIDEwKVxuICAgICAgICAgIGlmICghTnVtYmVyLmlzTmFOKG4pKSBpZHMucHVzaChuKVxuICAgICAgICB9KVxuICAgICAgfVxuICAgIH1cbiAgfSlcbiAgcmV0dXJuIGlkc1xufVxuXG5mdW5jdGlvbiBleHRyYWN0QWdlbnRJZEZyb21FZGl0QWdlbnRQZW5kaW5nQWN0aW9ucyhwZW5kaW5nQWN0aW9uczogUGVuZGluZ0FjdGlvbltdKTogc3RyaW5nIHwgbnVsbCB7XG4gIGNvbnN0IGVkaXRBY3Rpb24gPSBwZW5kaW5nQWN0aW9ucy5maW5kKGEgPT4gKGEudG9vbF9uYW1lIHx8ICcnKS50b0xvd2VyQ2FzZSgpID09PSAnZWRpdF9hZ2VudCcpXG4gIGlmIChcbiAgICAhZWRpdEFjdGlvbiB8fFxuICAgICFlZGl0QWN0aW9uLnRvb2xfYXJncyB8fFxuICAgIHR5cGVvZiBlZGl0QWN0aW9uLnRvb2xfYXJncyAhPT0gJ29iamVjdCcgfHxcbiAgICBBcnJheS5pc0FycmF5KGVkaXRBY3Rpb24udG9vbF9hcmdzKVxuICApIHtcbiAgICByZXR1cm4gbnVsbFxuICB9XG4gIGNvbnN0IHJlYyA9IGVkaXRBY3Rpb24udG9vbF9hcmdzIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+XG4gIGNvbnN0IHJhdyA9IHJlYy5hZ2VudF9pZCA/PyByZWMuYWdlbnRJZFxuICByZXR1cm4gcmF3ICE9IG51bGwgPyBTdHJpbmcocmF3KSA6IG51bGxcbn1cblxuZnVuY3Rpb24gZXh0cmFjdEFnZW50SWRGcm9tUGVuZGluZ0FjdGlvbnNCeVRvb2xOYW1lKHBlbmRpbmdBY3Rpb25zOiBQZW5kaW5nQWN0aW9uW10sIHRvb2xOYW1lOiBzdHJpbmcpOiBzdHJpbmcgfCBudWxsIHtcbiAgY29uc3QgYWN0aW9uID0gcGVuZGluZ0FjdGlvbnMuZmluZChhID0+IChhLnRvb2xfbmFtZSB8fCAnJykudG9Mb3dlckNhc2UoKSA9PT0gdG9vbE5hbWUudG9Mb3dlckNhc2UoKSlcbiAgaWYgKCFhY3Rpb24gfHwgIWFjdGlvbi50b29sX2FyZ3MgfHwgdHlwZW9mIGFjdGlvbi50b29sX2FyZ3MgIT09ICdvYmplY3QnIHx8IEFycmF5LmlzQXJyYXkoYWN0aW9uLnRvb2xfYXJncykpIHtcbiAgICByZXR1cm4gbnVsbFxuICB9XG4gIGNvbnN0IHJlYyA9IGFjdGlvbi50b29sX2FyZ3MgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj5cbiAgY29uc3QgcmF3ID0gcmVjLmFnZW50X2lkID8/IHJlYy5hZ2VudElkID8/IHJlYy5pZFxuICByZXR1cm4gcmF3ICE9IG51bGwgPyBTdHJpbmcocmF3KSA6IG51bGxcbn1cblxuLyoqIMOabHRpbW8gcmVjdXJzbyBzaSBubyBoYXkgbGlua3MgbmkgdG9vbF9hcmdzIHBhcnNlYWJsZXMgKHAuIGVqLiBcIklEICoqNzU5NzEwNioqXCIpLiAqL1xuZnVuY3Rpb24gZXh0cmFjdFRhc2tJZHNGcm9tQXNzaXN0YW50RGVsZXRpb25UZXh0KHRleHQ6IHN0cmluZyk6IG51bWJlcltdIHtcbiAgY29uc3QgbGFiZWxlZCA9IHRleHQubWF0Y2goL1xcYklEXFxzKlxcKlxcKihcXGQrKVxcKlxcKi9pKVxuICBpZiAobGFiZWxlZCkge1xuICAgIGNvbnN0IG4gPSBwYXJzZUludChsYWJlbGVkWzFdLCAxMClcbiAgICByZXR1cm4gTnVtYmVyLmlzTmFOKG4pID8gW10gOiBbbl1cbiAgfVxuICBjb25zdCBib2xkID0gdGV4dC5tYXRjaCgvXFwqXFwqKFxcZHs1LH0pXFwqXFwqLylcbiAgaWYgKGJvbGQpIHtcbiAgICBjb25zdCBuID0gcGFyc2VJbnQoYm9sZFsxXSwgMTApXG4gICAgcmV0dXJuIE51bWJlci5pc05hTihuKSA/IFtdIDogW25dXG4gIH1cbiAgcmV0dXJuIFtdXG59XG5cbmNvbnN0IHVzZVN0YWJsZUNhbGxiYWNrcyA9IChhdXRoVXNlcjogQ09SVXNlcikgPT4ge1xuICBjb25zdCBjdXJyZW50VXNlciA9IHVzZVJlZjxDaGF0TWVzc2FnZVVzZXI+KHtcbiAgICBpZDogYXV0aFVzZXIuaWQudG9TdHJpbmcoKSxcbiAgICBuYW1lOiBhdXRoVXNlci5maXJzdE5hbWUsXG4gICAgYXZhdGFyOiBhdXRoVXNlci5waWN0dXJlLFxuICB9KVxuXG4gIGlmIChcbiAgICBjdXJyZW50VXNlci5jdXJyZW50LmlkICE9PSBhdXRoVXNlci5pZC50b1N0cmluZygpIHx8XG4gICAgY3VycmVudFVzZXIuY3VycmVudC5uYW1lICE9PSBhdXRoVXNlci5maXJzdE5hbWUgfHxcbiAgICBjdXJyZW50VXNlci5jdXJyZW50LmF2YXRhciAhPT0gYXV0aFVzZXIucGljdHVyZVxuICApIHtcbiAgICBjdXJyZW50VXNlci5jdXJyZW50ID0ge1xuICAgICAgaWQ6IGF1dGhVc2VyLmlkLnRvU3RyaW5nKCksXG4gICAgICBuYW1lOiBhdXRoVXNlci5maXJzdE5hbWUsXG4gICAgICBhdmF0YXI6IGF1dGhVc2VyLnBpY3R1cmUsXG4gICAgfVxuICB9XG4gIHJldHVybiB7XG4gICAgY3VycmVudFVzZXI6IGN1cnJlbnRVc2VyLmN1cnJlbnQsXG4gIH1cbn1cblxuY29uc3QgcGFyc2VTU0VMaW5lID0gKGxpbmU6IHN0cmluZyk6IHsgZXZlbnRUeXBlOiBzdHJpbmc7IGRhdGE6IHVua25vd24gfSB8IG51bGwgPT4ge1xuICBpZiAoIWxpbmUudHJpbSgpKSByZXR1cm4gbnVsbFxuXG4gIGNvbnN0IFtldmVudExpbmUsIGRhdGFMaW5lXSA9IGxpbmUuc3BsaXQoJ1xcbicpXG4gIGlmICghZXZlbnRMaW5lIHx8ICFkYXRhTGluZSkgcmV0dXJuIG51bGxcblxuICBjb25zdCBldmVudFR5cGUgPSBldmVudExpbmUucmVwbGFjZSgnZXZlbnQ6ICcsICcnKS50cmltKClcbiAgY29uc3QgZGF0YVN0ciA9IGRhdGFMaW5lLnJlcGxhY2UoJ2RhdGE6ICcsICcnKS50cmltKClcblxuICB0cnkge1xuICAgIGNvbnN0IGRhdGEgPSBKU09OLnBhcnNlKGRhdGFTdHIpXG4gICAgcmV0dXJuIHsgZXZlbnRUeXBlLCBkYXRhIH1cbiAgfSBjYXRjaCAocGFyc2VFcnJvcikge1xuICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIHBhcnNpbmcgU1NFIGRhdGE6JywgcGFyc2VFcnJvciwgZGF0YVN0cilcbiAgICByZXR1cm4gbnVsbFxuICB9XG59XG5cbmNvbnN0IHByb2Nlc3NTU0VTdHJlYW0gPSBhc3luYyAoXG4gIHJlc3BvbnNlOiBSZXNwb25zZSxcbiAgdGhyZWFkSWQ6IHN0cmluZyxcbiAgY2FsbGJhY2tzOiB7XG4gICAgb25UaGlua2luZzogKCkgPT4gdm9pZFxuICAgIG9uVG9rZW46IChjb250ZW50OiBzdHJpbmcpID0+IHZvaWRcbiAgICBvbk5vZGU6IChtZXNzYWdlOiBzdHJpbmcsIHRocmVhZElkOiBzdHJpbmcpID0+IHZvaWRcbiAgICBvbkNvbXBsZXRlOiAoXG4gICAgICBmaW5hbENvbnRlbnQ6IHN0cmluZyxcbiAgICAgIHNvdXJjZXM6IGFueSxcbiAgICAgIG1lbW9yeVNlc3Npb25JZDogc3RyaW5nLFxuICAgICAgY3VycmVudFRocmVhZElkOiBzdHJpbmcsXG4gICAgICBhdHRhY2htZW50cz86IGFueVtdIHwgbnVsbCxcbiAgICAgIHN1Z2dlc3Rpb25zPzogc3RyaW5nW10gfCBudWxsLFxuICAgICAgYWdlbnRJZD86IHN0cmluZyB8IG51bGxcbiAgICApID0+IHZvaWRcbiAgICBvbkVycm9yOiAoZXJyb3I6IGFueSwgdGhyZWFkSWQ6IHN0cmluZykgPT4gdm9pZFxuICAgIG9uQXBwcm92YWxSZXF1aXJlZD86IChhcHByb3ZhbDogYW55LCBhY2N1bXVsYXRlZENvbnRlbnQ6IHN0cmluZywgY3VycmVudFRocmVhZElkOiBzdHJpbmcpID0+IHZvaWRcbiAgfVxuKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gIGNvbnN0IHJlYWRlciA9IHJlc3BvbnNlLmJvZHk/LmdldFJlYWRlcigpXG4gIGlmICghcmVhZGVyKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdObyByZWFkZXIgYXZhaWxhYmxlJylcbiAgfVxuXG4gIGNvbnN0IGRlY29kZXIgPSBuZXcgVGV4dERlY29kZXIoKVxuICBsZXQgYnVmZmVyID0gJydcbiAgbGV0IGFjY3VtdWxhdGVkQ29udGVudCA9ICcnXG4gIGxldCBpc1N0cmVhbUNvbXBsZXRlID0gZmFsc2VcblxuICBmdW5jdGlvbiBoYW5kbGVMaW5lKGxpbmU6IHN0cmluZykge1xuICAgIGNvbnN0IHBhcnNlZCA9IHBhcnNlU1NFTGluZShsaW5lKVxuICAgIGlmICghcGFyc2VkKSByZXR1cm5cblxuICAgIGNvbnN0IHsgZXZlbnRUeXBlLCBkYXRhIH0gPSBwYXJzZWRcbiAgICBjb25zdCBldmVudERhdGEgPSBkYXRhIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+XG5cbiAgICBpZiAoZXZlbnRUeXBlID09PSAndGhpbmtpbmcnKSB7XG4gICAgICBjYWxsYmFja3Mub25UaGlua2luZygpXG4gICAgfSBlbHNlIGlmIChldmVudFR5cGUgPT09ICd0b2tlbicpIHtcbiAgICAgIGNvbnN0IGNvbnRlbnQgPSB0eXBlb2YgZXZlbnREYXRhLmNvbnRlbnQgPT09ICdzdHJpbmcnID8gZXZlbnREYXRhLmNvbnRlbnQgOiAnJ1xuICAgICAgYWNjdW11bGF0ZWRDb250ZW50ID0gbWVyZ2VTdHJlYW1DaHVuayhhY2N1bXVsYXRlZENvbnRlbnQsIGNvbnRlbnQpXG4gICAgICBjYWxsYmFja3Mub25Ub2tlbihhY2N1bXVsYXRlZENvbnRlbnQpXG4gICAgfSBlbHNlIGlmIChldmVudFR5cGUgPT09ICdjb250ZW50Jykge1xuICAgICAgY29uc3QgY29udGVudCA9IHR5cGVvZiBldmVudERhdGEuY29udGVudCA9PT0gJ3N0cmluZycgPyBldmVudERhdGEuY29udGVudCA6ICcnXG4gICAgICBhY2N1bXVsYXRlZENvbnRlbnQgPSBtZXJnZVN0cmVhbUNodW5rKGFjY3VtdWxhdGVkQ29udGVudCwgY29udGVudClcbiAgICAgIGNhbGxiYWNrcy5vblRva2VuKGFjY3VtdWxhdGVkQ29udGVudClcbiAgICAgIGlmIChpc0NvbXBsZXRlTGlrZVNzZVBheWxvYWQoZXZlbnREYXRhKSkge1xuICAgICAgICBjb25zdCBmaW5hbENvbnRlbnQgPSBjb250ZW50IHx8IGFjY3VtdWxhdGVkQ29udGVudFxuICAgICAgICBjb25zdCBzb3VyY2VzID0gZXZlbnREYXRhLnNvdXJjZXMgfHwgbnVsbFxuICAgICAgICBjb25zdCBtZW1vcnlTZXNzaW9uSWQgPSAoZXZlbnREYXRhLm1lbW9yeV9zZXNzaW9uX2lkIGFzIHN0cmluZykgfHwgJydcbiAgICAgICAgY29uc3QgYXR0YWNobWVudHMgPSBBcnJheS5pc0FycmF5KGV2ZW50RGF0YS5hdHRhY2htZW50cykgPyBldmVudERhdGEuYXR0YWNobWVudHMgOiBudWxsXG4gICAgICAgIGNvbnN0IHN1Z2dlc3Rpb25zID0gQXJyYXkuaXNBcnJheShldmVudERhdGEuc3VnZ2VzdF9yZXBseSlcbiAgICAgICAgICA/IChldmVudERhdGEuc3VnZ2VzdF9yZXBseSBhcyBzdHJpbmdbXSlcbiAgICAgICAgICA6IEFycmF5LmlzQXJyYXkoZXZlbnREYXRhLnN1Z2dlc3Rpb25zKVxuICAgICAgICAgICAgPyAoZXZlbnREYXRhLnN1Z2dlc3Rpb25zIGFzIHN0cmluZ1tdKVxuICAgICAgICAgICAgOiBudWxsXG4gICAgICAgIGNvbnN0IGFnZW50SWRSYXcgPSBldmVudERhdGEuYWdlbnRfaWQgPz8gZXZlbnREYXRhLmFnZW50SWRcbiAgICAgICAgY29uc3QgY29tcGxldGVkQWdlbnRJZCA9XG4gICAgICAgICAgYWdlbnRJZFJhdyAhPSBudWxsICYmIFN0cmluZyhhZ2VudElkUmF3KS50cmltKCkgIT09ICcnID8gU3RyaW5nKGFnZW50SWRSYXcpLnRyaW0oKSA6IG51bGxcbiAgICAgICAgY2FsbGJhY2tzLm9uQ29tcGxldGUoXG4gICAgICAgICAgZmluYWxDb250ZW50LFxuICAgICAgICAgIHNvdXJjZXMsXG4gICAgICAgICAgbWVtb3J5U2Vzc2lvbklkLFxuICAgICAgICAgIHRocmVhZElkLFxuICAgICAgICAgIGF0dGFjaG1lbnRzLFxuICAgICAgICAgIHN1Z2dlc3Rpb25zLFxuICAgICAgICAgIGNvbXBsZXRlZEFnZW50SWRcbiAgICAgICAgKVxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoZXZlbnRUeXBlID09PSAnbm9kZScpIHtcbiAgICAgIGlmIChldmVudERhdGEubWVzc2FnZSAmJiB0eXBlb2YgZXZlbnREYXRhLm1lc3NhZ2UgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIGNhbGxiYWNrcy5vbk5vZGUoZXZlbnREYXRhLm1lc3NhZ2UsIHRocmVhZElkKVxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoZXZlbnRUeXBlID09PSAnY29tcGxldGUnKSB7XG4gICAgICBjb25zdCBmaW5hbENvbnRlbnQgPSAoZXZlbnREYXRhLmNvbnRlbnQgYXMgc3RyaW5nKSB8fCBhY2N1bXVsYXRlZENvbnRlbnRcbiAgICAgIGNvbnN0IHNvdXJjZXMgPSAoZXZlbnREYXRhLnNvdXJjZXMgYXMgdW5rbm93bikgfHwgbnVsbFxuICAgICAgY29uc3QgbWVtb3J5U2Vzc2lvbklkID0gKGV2ZW50RGF0YS5tZW1vcnlfc2Vzc2lvbl9pZCBhcyBzdHJpbmcpIHx8ICcnXG4gICAgICBjb25zdCBhdHRhY2htZW50cyA9IEFycmF5LmlzQXJyYXkoZXZlbnREYXRhLmF0dGFjaG1lbnRzKSA/IGV2ZW50RGF0YS5hdHRhY2htZW50cyA6IG51bGxcbiAgICAgIGNvbnN0IHN1Z2dlc3Rpb25zID0gQXJyYXkuaXNBcnJheShldmVudERhdGEuc3VnZ2VzdF9yZXBseSlcbiAgICAgICAgPyAoZXZlbnREYXRhLnN1Z2dlc3RfcmVwbHkgYXMgc3RyaW5nW10pXG4gICAgICAgIDogQXJyYXkuaXNBcnJheShldmVudERhdGEuc3VnZ2VzdGlvbnMpXG4gICAgICAgICAgPyAoZXZlbnREYXRhLnN1Z2dlc3Rpb25zIGFzIHN0cmluZ1tdKVxuICAgICAgICAgIDogbnVsbFxuICAgICAgY29uc3QgYWdlbnRJZFJhdyA9IGV2ZW50RGF0YS5hZ2VudF9pZCA/PyBldmVudERhdGEuYWdlbnRJZFxuICAgICAgY29uc3QgY29tcGxldGVkQWdlbnRJZCA9IGFnZW50SWRSYXcgIT0gbnVsbCAmJiBTdHJpbmcoYWdlbnRJZFJhdykudHJpbSgpICE9PSAnJyA/IFN0cmluZyhhZ2VudElkUmF3KS50cmltKCkgOiBudWxsXG4gICAgICBjYWxsYmFja3Mub25Db21wbGV0ZShmaW5hbENvbnRlbnQsIHNvdXJjZXMsIG1lbW9yeVNlc3Npb25JZCwgdGhyZWFkSWQsIGF0dGFjaG1lbnRzLCBzdWdnZXN0aW9ucywgY29tcGxldGVkQWdlbnRJZClcbiAgICB9IGVsc2UgaWYgKGV2ZW50VHlwZSA9PT0gJ2FwcHJvdmFsX3JlcXVpcmVkJykge1xuICAgICAgY2FsbGJhY2tzLm9uQXBwcm92YWxSZXF1aXJlZD8uKGV2ZW50RGF0YSwgYWNjdW11bGF0ZWRDb250ZW50LCB0aHJlYWRJZClcbiAgICB9IGVsc2UgaWYgKGV2ZW50VHlwZSA9PT0gJ2Vycm9yJykge1xuICAgICAgY2FsbGJhY2tzLm9uRXJyb3IoZXZlbnREYXRhLmVycm9yLCB0aHJlYWRJZClcbiAgICB9XG4gIH1cblxuICB3aGlsZSAoIWlzU3RyZWFtQ29tcGxldGUpIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tYXdhaXQtaW4tbG9vcFxuICAgIGNvbnN0IHsgZG9uZSwgdmFsdWUgfSA9IGF3YWl0IHJlYWRlci5yZWFkKClcbiAgICBpZiAoZG9uZSkge1xuICAgICAgaXNTdHJlYW1Db21wbGV0ZSA9IHRydWVcbiAgICAgIGJyZWFrXG4gICAgfVxuXG4gICAgYnVmZmVyICs9IGRlY29kZXIuZGVjb2RlKHZhbHVlLCB7IHN0cmVhbTogdHJ1ZSB9KVxuICAgIGNvbnN0IGxpbmVzID0gYnVmZmVyLnNwbGl0KCdcXG5cXG4nKVxuICAgIGJ1ZmZlciA9IGxpbmVzLnBvcCgpIHx8ICcnXG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxpbmVzLmxlbmd0aDsgaSArPSAxKSB7XG4gICAgICBoYW5kbGVMaW5lKGxpbmVzW2ldKVxuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgY29uc3QgdXNlQ2hhdE1hbmFnZXIgPSAoe1xuICBjaGF0SWQ6IGluaXRpYWxDaGF0SWQsXG4gIHVzZXJJbml0aWFsTWVzc2FnZSxcbiAgb25FcnJvcixcbiAgYWdlbnRzID0gW10sXG59OiBVc2VDaGF0TWFuYWdlclByb3BzKSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVCgpXG4gIGNvbnN0IGF1dGhVc2VyID0gdXNlVXNlcigpXG4gIGNvbnN0IHtcbiAgICBwcm9qZWN0LFxuICAgIHNldFByb2plY3QsXG4gICAgY2xpZW50LFxuICAgIHNldENsaWVudCxcbiAgICB0YXNrLFxuICAgIHNldFRhc2ssXG4gICAgYWdlbnQsXG4gICAgaXNXZWJTZWFyY2hBY3RpdmUsXG4gICAgaXNEZWVwU2VhcmNoQWN0aXZlLFxuICAgIGNoaXBzUHJvamVjdCxcbiAgICBzZXRDaGlwc1Byb2plY3QsXG4gIH0gPSB1c2VHbG9iYWxDb250ZXh0KClcbiAgY29uc3QgZXZlbnQgPSB1c2VFdmVudCgpXG4gIGNvbnN0IHsgZmV0Y2hQcm9qZWN0cyB9ID0gdXNlUHJvamVjdHMoKVxuICBjb25zdCB7IGN1cnJlbnRVc2VyIH0gPSB1c2VTdGFibGVDYWxsYmFja3MoYXV0aFVzZXIpXG4gIGNvbnN0IHsgZ2V0VGFiVGFza0RlZmF1bHQgfSA9IHVzZVRhYlRhc2tEZWZhdWx0KClcbiAgY29uc3QgY3VycmVudE1lc3NhZ2VJZCA9IHVzZVJlZih1dWlkdjQoKSlcbiAgY29uc3QgY3VycmVudFVzZXJRdWVzdGlvbiA9IHVzZVJlZjxzdHJpbmcgfCBudWxsPihudWxsKVxuICBjb25zdCBjdXJyZW50Q2hhdElkID0gdXNlUmVmKGluaXRpYWxDaGF0SWQgfHwgdXVpZHY0KCkpXG4gIGNvbnN0IHJlcG9ydGVkRXZlbnQgPSB1c2VSZWYoZmFsc2UpXG4gIGNvbnN0IG1lc3NhZ2VzUmVmID0gdXNlUmVmPENoYXRNZXNzYWdlW10+KFtdKVxuICAvKipcbiAgICogR3VhcmRhIGluZm8gZGVsIMO6bHRpbW8gYXBwcm92YWwgbWFudWFsIChjdWFuZG8gZWwgdXN1YXJpbyB0aXBlYSBcInNpXCIvXCJub1wiIGVuIGx1Z2FyXG4gICAqIGRlIGNsaWNrZWFyIGVsIGJvdMOzbikuIEVuIG1hbnVhbCBhcHByb3ZhbCwgYGhhbmRsZUFwcHJvdmFsUmVxdWlyZWRgIHJldG9ybmEgZWFybHlcbiAgICogc2luIGFncmVnYXIgdW4gbWVuc2FqZSBjb24gYGFwcHJvdmFsYCwgYXPDrSBxdWUgbGEgbMOzZ2ljYSBkZSByZWZldGNoIGVuIGBvblN0cmVhbUZpbmlzaGBcbiAgICogbm8gbG8gZGV0ZWN0YSB2w61hIGBwcmV2aW91c01lc3NhZ2UuYXBwcm92YWxgLiBMbyBndWFyZGFtb3MgYWPDoSBwYXJhIGNvbnN1bWlybG8gZGVzcHXDqXMuXG4gICAqL1xuICBjb25zdCBsYXN0TWFudWFsQXBwcm92YWxSZWYgPSB1c2VSZWY8e1xuICAgIHRvb2xOYW1lOiBzdHJpbmdcbiAgICB0b29sQXJnczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gfCBudWxsXG4gIH0gfCBudWxsPihudWxsKVxuICAvKiogQ29udGV4dG8gZGVsIG1lbnNhamUgZGUgYXByb2JhY2nDs24gcHJldmlvIGFsIGVqZWN1dGFyIGNvbnRpbnVlLXRocmVhZC4gKi9cbiAgY29uc3QgaGl0bEV4ZWN1dGlvbkNvbnRleHRSZWYgPSB1c2VSZWY8SGl0bEV4ZWN1dGlvbkNvbnRleHQgfCBudWxsPihudWxsKVxuICBjb25zdCBpc1Byb2Nlc3NpbmdSZWYgPSB1c2VSZWYoZmFsc2UpXG4gIGNvbnN0IGZpcnN0VGltZVJlZiA9IHVzZVJlZihmYWxzZSlcbiAgLyoqIElkIGRlbCBwbGFjZWhvbGRlciBkZWwgbWVuc2FqZSBlbiBzdHJlYW1pbmcgYWN0aXZvIChzaSBoYXkpLiAqL1xuICBjb25zdCBzdHJlYW1pbmdQbGFjZWhvbGRlcklkUmVmID0gdXNlUmVmPHN0cmluZyB8IG51bGw+KG51bGwpXG4gIC8qKlxuICAgKiBDaGF0IGFsIHF1ZSBwZXJ0ZW5lY2UgZWwgc3RyZWFtIGFjdHVhbG1lbnRlIGFjdGl2by4gU2kgY2FtYmlhIGVsIGNoYXRcbiAgICogbWllbnRyYXMgdW4gc3RyZWFtIGVzdMOhIGVuIHZ1ZWxvLCBkZXNjYXJ0YW1vcyBsb3MgdG9rZW5zIHJlc2lkdWFsZXNcbiAgICogcXVlIHB1ZWRhbiBsbGVnYXIgYW50ZXMgZGUgcXVlIGVsIGFib3J0IHNlIGNvbXBsZXRlLlxuICAgKi9cbiAgY29uc3QgYWN0aXZlU3RyZWFtQ2hhdElkUmVmID0gdXNlUmVmPHN0cmluZyB8IG51bGw+KG51bGwpXG4gIC8qKiBTZXR0ZXIgaW5kaXJlY3RvIHBhcmEgYWJvcnRhciBlbCBzdHJlYW0gYW50ZXMgZGUgcXVlIGVsIGhvb2sgZGVcbiAgICogb3JxdWVzdGFkb3IgZXN0w6kgaW5pY2lhbGl6YWRvIChzZSBsaW5rZWEgbcOhcyBhYmFqbykuICovXG4gIGNvbnN0IGFib3J0U3RyZWFtU2lsZW50bHlSZWYgPSB1c2VSZWY8KCkgPT4gdm9pZD4oKCkgPT4gdW5kZWZpbmVkKVxuICBjb25zdCBjbGVhclN0cmVhbVVpUmVmID0gdXNlUmVmPCgpID0+IHZvaWQ+KCgpID0+IHVuZGVmaW5lZClcbiAgY29uc3QgW2FjdGl2ZUxvYWRpbmdzLCBzZXRBY3RpdmVMb2FkaW5nc10gPSB1c2VTdGF0ZTxSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+Pih7fSlcblxuICBjb25zdCBpc1dlYlNlYXJjaEFjdGl2ZVJlZiA9IHVzZVJlZihpc1dlYlNlYXJjaEFjdGl2ZSlcbiAgY29uc3QgaXNEZWVwU2VhcmNoQWN0aXZlUmVmID0gdXNlUmVmKGlzRGVlcFNlYXJjaEFjdGl2ZSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlzV2ViU2VhcmNoQWN0aXZlUmVmLmN1cnJlbnQgPSBpc1dlYlNlYXJjaEFjdGl2ZVxuICAgIGlzRGVlcFNlYXJjaEFjdGl2ZVJlZi5jdXJyZW50ID0gaXNEZWVwU2VhcmNoQWN0aXZlXG4gIH0sIFtpc1dlYlNlYXJjaEFjdGl2ZSwgaXNEZWVwU2VhcmNoQWN0aXZlXSlcblxuICBjb25zdCB7IGxvYWRpbmdNZXNzYWdlcywgbWVzc2FnZXMsIGlzTG9hZGluZ01vcmVNZXNzYWdlcywgbG9hZE1lc3NhZ2VzLCBhZGRNZXNzYWdlLCByZW1vdmVNZXNzYWdlLCBoYW5kbGVTY3JvbGwgfSA9XG4gICAgdXNlQ2hhdE1lc3NhZ2VzKHtcbiAgICAgIGNoYXRJZDogaW5pdGlhbENoYXRJZCB8fCBjdXJyZW50Q2hhdElkLmN1cnJlbnQsXG4gICAgICBjdXJyZW50VXNlcixcbiAgICAgIHVzZXJJbml0aWFsTWVzc2FnZSxcbiAgICAgIG9uRXJyb3IsXG4gICAgICBhZ2VudHMsXG4gICAgfSlcblxuICBtZXNzYWdlc1JlZi5jdXJyZW50ID0gbWVzc2FnZXNcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGN1c3RvbUV2ZW50ID0gbmV3IEN1c3RvbUV2ZW50KCdjaGF0LWxvYWRpbmctbWVzc2FnZXMtY2hhbmdlZCcsIHtcbiAgICAgIGRldGFpbDogeyBsb2FkaW5nTWVzc2FnZXMgfSxcbiAgICB9KVxuICAgIGRvY3VtZW50LmRpc3BhdGNoRXZlbnQoY3VzdG9tRXZlbnQpXG4gIH0sIFtsb2FkaW5nTWVzc2FnZXNdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGluaXRpYWxDaGF0SWQgJiYgaW5pdGlhbENoYXRJZCAhPT0gY3VycmVudENoYXRJZC5jdXJyZW50KSB7XG4gICAgICAvLyBTaSBoYXkgdW4gc3RyZWFtIGVuIGN1cnNvLCBhYm9ydGFybG8gc2lsZW5jaW9zYW1lbnRlIHBhcmEgcXVlIGxvc1xuICAgICAgLy8gdG9rZW5zIHJlc2lkdWFsZXMgbm8gc2UgZXNjcmliYW4gZW4gZWwgY2hhdCBudWV2by5cbiAgICAgIGFib3J0U3RyZWFtU2lsZW50bHlSZWYuY3VycmVudCgpXG5cbiAgICAgIC8vIExpbXBpYXIgY29udGV4dG8gZ2xvYmFsIGFsIGNhbWJpYXIgZGUgY29udmVyc2FjacOzblxuICAgICAgc2V0UHJvamVjdChudWxsKVxuICAgICAgc2V0Q2xpZW50Py4obnVsbClcbiAgICAgIHNldENoaXBzUHJvamVjdChudWxsKVxuICAgICAgc2V0VGFzayhudWxsKVxuXG4gICAgICBjdXJyZW50Q2hhdElkLmN1cnJlbnQgPSBpbml0aWFsQ2hhdElkXG4gICAgICBjdXJyZW50TWVzc2FnZUlkLmN1cnJlbnQgPSB1dWlkdjQoKVxuICAgICAgY3VycmVudFVzZXJRdWVzdGlvbi5jdXJyZW50ID0gbnVsbFxuICAgICAgcmVwb3J0ZWRFdmVudC5jdXJyZW50ID0gZmFsc2VcbiAgICAgIGlzUHJvY2Vzc2luZ1JlZi5jdXJyZW50ID0gZmFsc2VcbiAgICAgIHN0cmVhbWluZ1BsYWNlaG9sZGVySWRSZWYuY3VycmVudCA9IG51bGxcbiAgICAgIGFjdGl2ZVN0cmVhbUNoYXRJZFJlZi5jdXJyZW50ID0gbnVsbFxuICAgICAgc3RyZWFtaW5nU3RvcmUuY2xlYXIoKVxuXG4gICAgICBsb2FkTWVzc2FnZXMoKVxuICAgIH1cbiAgfSwgW2luaXRpYWxDaGF0SWQsIHByb2plY3QsIHNldFByb2plY3QsIHNldENsaWVudCwgc2V0Q2hpcHNQcm9qZWN0LCBzZXRUYXNrLCBsb2FkTWVzc2FnZXNdKVxuXG4gIC8vIEVsIGNvbnRleHRvIGRlIHByb3llY3RvL2NsaWVudGUgYXBsaWNhIGEgYWdlbnRlcyBjbG9uZSAodGllbmVuIHRvb2xzKS4gTG9zIGN1c3RvbSBubyBsb1xuICAvLyBuZWNlc2l0YW4gcG9yIGFob3JhLCBhc8OtIHF1ZSBwYXJhIGVsbG9zIG5vIHJlc29sdmVtb3MgbmkgZGlzcGFyYW1vcyBHZXRQcm9qZWN0cy5cbiAgY29uc3QgaXNDbG9uZUFnZW50ID0gYWdlbnQ/LnR5cGUgPT09ICdjbG9uZSdcblxuICAvLyBTaW5jcm9uaXphciBjaGlwc1Byb2plY3QgY3VhbmRvIGhheSBtZW5zYWplcyBjb24gcHJvamVjdElkIHBlcm8gY2hpcHNQcm9qZWN0IG5vIHNlIGhhIHNldGVhZG9cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIWlzQ2xvbmVBZ2VudCB8fCBjaGlwc1Byb2plY3QgfHwgbG9hZGluZ01lc3NhZ2VzKSByZXR1cm5cbiAgICBjb25zdCBsYXN0TXNnV2l0aFByb2plY3QgPSBtZXNzYWdlcy5maWx0ZXIobXNnID0+IG1zZy5wcm9qZWN0SWQpLmF0KC0xKVxuICAgIGNvbnN0IHsgcHJvamVjdElkLCBwcm9qZWN0TmFtZSB9ID0gbGFzdE1zZ1dpdGhQcm9qZWN0IHx8IHt9XG4gICAgaWYgKCFwcm9qZWN0SWQpIHJldHVyblxuXG4gICAgZmV0Y2hQcm9qZWN0cyhwcm9qZWN0SWQpLnRoZW4ocHJvamVjdHMgPT4ge1xuICAgICAgY29uc3QgZm91bmQgPSBwcm9qZWN0cz8uZmluZChwID0+IE51bWJlcihwLmlkKSA9PT0gTnVtYmVyKHByb2plY3RJZCkpXG4gICAgICBpZiAoZm91bmQpIHtcbiAgICAgICAgc2V0Q2hpcHNQcm9qZWN0KHtcbiAgICAgICAgICBwcm9qZWN0TmFtZTogZm91bmQubmFtZSxcbiAgICAgICAgICBjbGllbnROYW1lOiBmb3VuZC5jbGllbnQ/Lm5hbWUgfHwgJycsXG4gICAgICAgICAgcHJvamVjdElkOiBTdHJpbmcoZm91bmQuaWQpLFxuICAgICAgICB9KVxuICAgICAgICBzZXRQcm9qZWN0KGZvdW5kKVxuICAgICAgfSBlbHNlIGlmIChwcm9qZWN0TmFtZSkge1xuICAgICAgICBzZXRDaGlwc1Byb2plY3Qoe1xuICAgICAgICAgIHByb2plY3ROYW1lLFxuICAgICAgICAgIGNsaWVudE5hbWU6ICcnLFxuICAgICAgICAgIHByb2plY3RJZDogU3RyaW5nKHByb2plY3RJZCksXG4gICAgICAgIH0pXG4gICAgICAgIHNldFByb2plY3QoeyBpZDogTnVtYmVyKHByb2plY3RJZCksIG5hbWU6IHByb2plY3ROYW1lIH0pXG4gICAgICB9XG4gICAgfSlcbiAgfSwgW2lzQ2xvbmVBZ2VudCwgbWVzc2FnZXMsIGNoaXBzUHJvamVjdCwgbG9hZGluZ01lc3NhZ2VzLCBmZXRjaFByb2plY3RzLCBzZXRDaGlwc1Byb2plY3QsIHNldFByb2plY3RdKVxuXG4gIC8vIFNpbmNyb25pemFyIGNsaWVudCBjdWFuZG8gaGF5IG1lbnNhamVzIGNvbiBjbGllbnRJZCBwZXJvIGNsaWVudCBubyBzZSBoYSBzZXRlYWRvXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFpc0Nsb25lQWdlbnQgfHwgY2xpZW50IHx8IGxvYWRpbmdNZXNzYWdlcykgcmV0dXJuXG4gICAgY29uc3QgbGFzdE1zZ1dpdGhDbGllbnQgPSBtZXNzYWdlcy5maWx0ZXIobXNnID0+IG1zZy5jbGllbnRJZCAhPSBudWxsICYmIG1zZy5jbGllbnROYW1lKS5hdCgtMSlcbiAgICBjb25zdCB7IGNsaWVudElkOiBtc2dDbGllbnRJZCwgY2xpZW50TmFtZTogbXNnQ2xpZW50TmFtZSB9ID0gbGFzdE1zZ1dpdGhDbGllbnQgfHwge31cbiAgICBpZiAobXNnQ2xpZW50SWQgPT0gbnVsbCB8fCAhbXNnQ2xpZW50TmFtZSkgcmV0dXJuXG5cbiAgICBzZXRDbGllbnQ/Lih7IGlkOiBOdW1iZXIobXNnQ2xpZW50SWQpLCBuYW1lOiBtc2dDbGllbnROYW1lIH0pXG4gIH0sIFtpc0Nsb25lQWdlbnQsIG1lc3NhZ2VzLCBjbGllbnQsIGxvYWRpbmdNZXNzYWdlcywgc2V0Q2xpZW50XSlcblxuICBjb25zdCBoYW5kbGVTdHJlYW1FcnJvciA9IHVzZUNhbGxiYWNrKFxuICAgIChlcnJvck1lc3NhZ2U/OiBzdHJpbmcsIGVycm9yUmF3TWVzc2FnZT86IHN0cmluZykgPT4ge1xuICAgICAgY2xlYXJTdHJlYW1VaVJlZi5jdXJyZW50KClcbiAgICAgIGNvbnN0IHRlbXBNZXNzYWdlSWQgPSBgYW5zd2VyLSR7Y3VycmVudE1lc3NhZ2VJZC5jdXJyZW50fS1zdHJlYW1pbmdgXG4gICAgICBzdHJlYW1pbmdTdG9yZS5jbGVhcigpXG4gICAgICBzdHJlYW1pbmdQbGFjZWhvbGRlcklkUmVmLmN1cnJlbnQgPSBudWxsXG4gICAgICBhY3RpdmVTdHJlYW1DaGF0SWRSZWYuY3VycmVudCA9IG51bGxcbiAgICAgIHJlbW92ZU1lc3NhZ2UodGVtcE1lc3NhZ2VJZClcblxuICAgICAgY29uc3QgbWVzc2FnZSA9XG4gICAgICAgIGVycm9yTWVzc2FnZSA9PT0gXCJBY2Nlc3MgZGVuaWVkOiBZb3UgZG9uJ3QgaGF2ZSBwZXJtaXNzaW9uIHRvIGFjY2VzcyB0aGlzIGFnZW50XCJcbiAgICAgICAgICA/IHQoJ2NoYXQuZXJyb3JBY2Nlc3NEZW5pZWQnKVxuICAgICAgICAgIDogZXJyb3JNZXNzYWdlID09PSAnaW52YWxpZF9yZXF1ZXN0X2Vycm9yJyAmJiBlcnJvclJhd01lc3NhZ2U/LmluY2x1ZGVzKCdwcm9tcHQgaXMgdG9vIGxvbmcnKVxuICAgICAgICAgICAgPyB0KCdjaGF0LmVycm9yUHJvbXB0VG9vTG9uZycsIHsgdXNlZDogZXJyb3JSYXdNZXNzYWdlLm1hdGNoKC8oXFxkKykgdG9rZW5zLyk/LlsxXSA/PyAnJyB9KVxuICAgICAgICAgICAgOiB0KCdjaGF0LmVycm9yJylcblxuICAgICAgYWRkTWVzc2FnZSh7XG4gICAgICAgIGlkOiBgYW5zd2VyLSR7Y3VycmVudE1lc3NhZ2VJZC5jdXJyZW50fWAsXG4gICAgICAgIG1lc3NhZ2UsXG4gICAgICAgIGlzRXJyb3I6IHRydWUsXG4gICAgICAgIGRhdGU6IG5ldyBEYXRlKCksXG4gICAgICAgIHVzZXI6IHsgaWQ6ICdhc3Npc3RhbnQnLCBuYW1lOiAnQXNzaXN0YW50JyB9LFxuICAgICAgICByb2xlOiBDaGF0SGlzdG9yeVJvbGUuQVNTSVNUQU5ULFxuICAgICAgfSlcbiAgICAgIGlzUHJvY2Vzc2luZ1JlZi5jdXJyZW50ID0gZmFsc2VcbiAgICB9LFxuICAgIFthZGRNZXNzYWdlLCByZW1vdmVNZXNzYWdlLCB0XVxuICApXG5cbiAgY29uc3QgaGFuZGxlU3RyZWFtVXBkYXRlID0gdXNlQ2FsbGJhY2soXG4gICAgKGNvbnRlbnQ6IHN0cmluZywgc291cmNlczogYW55LCBtZW1vcnlTZXNzaW9uSWQ6IHN0cmluZykgPT4ge1xuICAgICAgLy8gU2kgZWwgY2hhdCBjYW1iacOzIG1pZW50cmFzIGVsIHN0cmVhbSBlc3RhYmEgZW4gdnVlbG8sIGRlc2NhcnRhciBlbFxuICAgICAgLy8gdG9rZW4gcmVzaWR1YWw6IG5vIGRlYmUgcGludGFyc2UgZW4gZWwgbnVldm8gY2hhdC5cbiAgICAgIGlmIChhY3RpdmVTdHJlYW1DaGF0SWRSZWYuY3VycmVudCAhPSBudWxsICYmIGFjdGl2ZVN0cmVhbUNoYXRJZFJlZi5jdXJyZW50ICE9PSBjdXJyZW50Q2hhdElkLmN1cnJlbnQpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHRlbXBNZXNzYWdlSWQgPSBgYW5zd2VyLSR7Y3VycmVudE1lc3NhZ2VJZC5jdXJyZW50fS1zdHJlYW1pbmdgXG5cbiAgICAgIC8vIFByaW1lcmEgbGxhbWFkYSBkZSBlc3RlIHN0cmVhbTogaW5zZXJ0YW1vcyBlbCBwbGFjZWhvbGRlciBlbiBlbFxuICAgICAgLy8gYXJyYXkgZGUgYG1lc3NhZ2VzYCB1bmEgw7puaWNhIHZlei4gTGFzIGxsYW1hZGFzIHN1YnNpZ3VpZW50ZXMgeWEgbm9cbiAgICAgIC8vIHRvY2FuIGBtZXNzYWdlc2A7IGVsIHRleHRvIHZpdmUgZW4gZWwgc3RyZWFtaW5nU3RvcmUgKGV4dGVybm8pLCBwb3JcbiAgICAgIC8vIGxvIHF1ZSBSZWFjdCBubyByZS1yZW5kZXJpemEgZWwgw6FyYm9sIGNvbXBsZXRvIGVuIGNhZGEgdG9rZW4uXG4gICAgICBpZiAoc3RyZWFtaW5nUGxhY2Vob2xkZXJJZFJlZi5jdXJyZW50ICE9PSB0ZW1wTWVzc2FnZUlkKSB7XG4gICAgICAgIHN0cmVhbWluZ1BsYWNlaG9sZGVySWRSZWYuY3VycmVudCA9IHRlbXBNZXNzYWdlSWRcbiAgICAgICAgYWN0aXZlU3RyZWFtQ2hhdElkUmVmLmN1cnJlbnQgPSBjdXJyZW50Q2hhdElkLmN1cnJlbnRcbiAgICAgICAgc3RyZWFtaW5nU3RvcmUuc3RhcnQodGVtcE1lc3NhZ2VJZClcbiAgICAgICAgYWRkTWVzc2FnZSh7XG4gICAgICAgICAgaWQ6IHRlbXBNZXNzYWdlSWQsXG4gICAgICAgICAgbWVzc2FnZTogJycsXG4gICAgICAgICAgZGF0ZTogbmV3IERhdGUoKSxcbiAgICAgICAgICB1c2VyOiB7IGlkOiAnYXNzaXN0YW50JywgbmFtZTogJ0Fzc2lzdGFudCcgfSxcbiAgICAgICAgICByb2xlOiBDaGF0SGlzdG9yeVJvbGUuQVNTSVNUQU5ULFxuICAgICAgICAgIHNvdXJjZXMsXG4gICAgICAgICAgbWVtb3J5U2Vzc2lvbklkLFxuICAgICAgICB9KVxuICAgICAgfVxuXG4gICAgICBzdHJlYW1pbmdTdG9yZS5zZXRUZXh0KHRlbXBNZXNzYWdlSWQsIGNvbnRlbnQpXG4gICAgfSxcbiAgICBbYWRkTWVzc2FnZV1cbiAgKVxuXG4gIGNvbnN0IGhhbmRsZVN0cmVhbUZpbmlzaCA9IHVzZUNhbGxiYWNrKFxuICAgIGFzeW5jIChcbiAgICAgIGNvbnRlbnQ6IHN0cmluZyxcbiAgICAgIHNvdXJjZXM6IGFueSxcbiAgICAgIG1lbW9yeVNlc3Npb25JZDogc3RyaW5nLFxuICAgICAgcmF3QXR0YWNobWVudHM/OiBhbnlbXSB8IG51bGwsXG4gICAgICBzdWdnZXN0aW9ucz86IHN0cmluZ1tdIHwgbnVsbCxcbiAgICAgIGNvbXBsZXRlZEFnZW50SWQ/OiBzdHJpbmcgfCBudWxsXG4gICAgKSA9PiB7XG4gICAgICBjb25zdCB0ZW1wTWVzc2FnZUlkID0gYGFuc3dlci0ke2N1cnJlbnRNZXNzYWdlSWQuY3VycmVudH0tc3RyZWFtaW5nYFxuICAgICAgc3RyZWFtaW5nU3RvcmUuY2xlYXIoKVxuICAgICAgc3RyZWFtaW5nUGxhY2Vob2xkZXJJZFJlZi5jdXJyZW50ID0gbnVsbFxuICAgICAgYWN0aXZlU3RyZWFtQ2hhdElkUmVmLmN1cnJlbnQgPSBudWxsXG4gICAgICBoaXRsRXhlY3V0aW9uQ29udGV4dFJlZi5jdXJyZW50ID0gbnVsbFxuICAgICAgcmVtb3ZlTWVzc2FnZSh0ZW1wTWVzc2FnZUlkKVxuICAgICAgY29uc3QgYXR0YWNobWVudHMgPSBub3JtYWxpemVBc3Npc3RhbnRBdHRhY2htZW50cyhyYXdBdHRhY2htZW50cylcblxuICAgICAgLy8gRGV0ZWN0YXIgdG9kYXMgbGFzIFVSTHMgZGUgdGFyZWFzICguLi4vdGFza3MvMTIzL2RldGFpbHxtZXNzYWdlfG1lc3NhZ2VzfGZpbGVzfGhpc3Rvcnl8aG91cnMpXG4gICAgICBjb25zdCB0YXNrVXJsUmVnZXggPSBuZXcgUmVnRXhwKFRBU0tfVVJMX1JFR0VYX1BBVFRFUk4sICdnJylcbiAgICAgIGNvbnN0IG1hdGNoZXMgPSBbLi4uY29udGVudC5tYXRjaEFsbCh0YXNrVXJsUmVnZXgpXVxuXG4gICAgICBsZXQgY29udGVudFRvQWRkID0gY29udGVudFxuICAgICAgY29uc3QgcHJldmlvdXNNZXNzYWdlID0gbWVzc2FnZXNSZWYuY3VycmVudC5maWx0ZXIobSA9PiBtLmlkICE9PSB0ZW1wTWVzc2FnZUlkKS5hdCgtMSlcbiAgICAgIGNvbnN0IGhhc0FwcHJvdmFsSW5QcmV2aW91c01lc3NhZ2UgPSBwcmV2aW91c01lc3NhZ2U/LmFwcHJvdmFsICE9IG51bGxcbiAgICAgIGNvbnN0IFRBU0tfQ1JFQVRJT05fVE9PTFMgPSBbJ2NyZWF0ZV90YXNrJywgJ2NyZWF0ZV90YXNrc19iYXRjaCcsICdjbG9uZV90YXNrJ11cbiAgICAgIGNvbnN0IFRBU0tfRURJVF9UT09MUyA9IFtcbiAgICAgICAgJ2VkaXRfdGFzaycsXG4gICAgICAgICdlZGl0X3Rhc2tzX2JhdGNoJyxcbiAgICAgICAgJ3Rhc2tfYXNzaWduJyxcbiAgICAgICAgJ3Rhc2tfdW5hc3NpZ24nLFxuICAgICAgICAndXBkYXRlX3Rhc2tfdHlwZScsXG4gICAgICAgICd1cGRhdGVfZXN0aW1hdGVkX2hvdXJzJyxcbiAgICAgICAgJ2Fzc2lnbl90YXNrX2xhYmVsJyxcbiAgICAgIF1cbiAgICAgIGNvbnN0IFRBU0tfREVMRVRFX1RPT0xTID0gWydkZWxldGVfdGFzaycsICdkZWxldGVfdGFza3NfYmF0Y2gnXVxuICAgICAgY29uc3QgcGVuZGluZ0FjdGlvbnMgPSBwcmV2aW91c01lc3NhZ2U/LmFwcHJvdmFsPy5wZW5kaW5nX2FjdGlvbnMgfHwgW11cbiAgICAgIGNvbnN0IHdhc1Rhc2tDcmVhdGlvbiA9XG4gICAgICAgIGhhc0FwcHJvdmFsSW5QcmV2aW91c01lc3NhZ2UgJiZcbiAgICAgICAgcGVuZGluZ0FjdGlvbnMuc29tZSgoYWN0aW9uOiBhbnkpID0+IFRBU0tfQ1JFQVRJT05fVE9PTFMuaW5jbHVkZXMoYWN0aW9uLnRvb2xfbmFtZSkpXG4gICAgICBjb25zdCB3YXNUYXNrRWRpdCA9XG4gICAgICAgIGhhc0FwcHJvdmFsSW5QcmV2aW91c01lc3NhZ2UgJiYgcGVuZGluZ0FjdGlvbnMuc29tZSgoYWN0aW9uOiBhbnkpID0+IFRBU0tfRURJVF9UT09MUy5pbmNsdWRlcyhhY3Rpb24udG9vbF9uYW1lKSlcbiAgICAgIGNvbnN0IHdhc1Rhc2tEZWxldGUgPVxuICAgICAgICBoYXNBcHByb3ZhbEluUHJldmlvdXNNZXNzYWdlICYmXG4gICAgICAgIHBlbmRpbmdBY3Rpb25zLnNvbWUoKGFjdGlvbjogYW55KSA9PiBUQVNLX0RFTEVURV9UT09MUy5pbmNsdWRlcyhhY3Rpb24udG9vbF9uYW1lKSlcbiAgICAgIGNvbnN0IHdhc0NyZWF0ZUFnZW50QXBwcm92ZWQgPVxuICAgICAgICBoYXNBcHByb3ZhbEluUHJldmlvdXNNZXNzYWdlICYmXG4gICAgICAgIHByZXZpb3VzTWVzc2FnZT8uYXBwcm92YWxTdGF0dXMgPT09ICdhcHByb3ZlZCcgJiZcbiAgICAgICAgcGVuZGluZ0FjdGlvbnMuc29tZSgoYWN0aW9uOiBhbnkpID0+IGFjdGlvbi50b29sX25hbWUgPT09ICdjcmVhdGVfYWdlbnQnKVxuICAgICAgY29uc3Qgd2FzQ29uZmlndXJlQWdlbnRBY2Nlc3NBcHByb3ZlZCA9XG4gICAgICAgIGhhc0FwcHJvdmFsSW5QcmV2aW91c01lc3NhZ2UgJiZcbiAgICAgICAgcHJldmlvdXNNZXNzYWdlPy5hcHByb3ZhbFN0YXR1cyA9PT0gJ2FwcHJvdmVkJyAmJlxuICAgICAgICBwZW5kaW5nQWN0aW9ucy5zb21lKChhY3Rpb246IGFueSkgPT4gKGFjdGlvbi50b29sX25hbWUgfHwgJycpLnRvTG93ZXJDYXNlKCkgPT09ICdjb25maWd1cmVfYWdlbnRfYWNjZXNzJylcbiAgICAgIGxldCBjcmVhdGVBZ2VudEZvbGxvd1VwOiB7IGFnZW50SWQ6IHN0cmluZyB9IHwgdW5kZWZpbmVkXG4gICAgICBpZiAod2FzQ3JlYXRlQWdlbnRBcHByb3ZlZCAmJiB3aW5kb3cuTUFJQV9DSEFUX0FJX0ZFQVRVUkVfQUNDRVNTX01VTFRJX0FHRU5UUyAmJiBjb21wbGV0ZWRBZ2VudElkPy50cmltKCkpIHtcbiAgICAgICAgY3JlYXRlQWdlbnRGb2xsb3dVcCA9IHsgYWdlbnRJZDogY29tcGxldGVkQWdlbnRJZC50cmltKCkgfVxuICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgd2FzQ29uZmlndXJlQWdlbnRBY2Nlc3NBcHByb3ZlZCAmJlxuICAgICAgICB3aW5kb3cuTUFJQV9DSEFUX0FJX0ZFQVRVUkVfQUNDRVNTX01VTFRJX0FHRU5UUyAmJlxuICAgICAgICAoY29tcGxldGVkQWdlbnRJZD8udHJpbSgpIHx8XG4gICAgICAgICAgZXh0cmFjdEFnZW50SWRGcm9tUGVuZGluZ0FjdGlvbnNCeVRvb2xOYW1lKHBlbmRpbmdBY3Rpb25zLCAnY29uZmlndXJlX2FnZW50X2FjY2VzcycpKVxuICAgICAgKSB7XG4gICAgICAgIGNvbnN0IGNvbmZpZ3VyZWRBZ2VudElkID1cbiAgICAgICAgICBjb21wbGV0ZWRBZ2VudElkPy50cmltKCkgfHxcbiAgICAgICAgICBleHRyYWN0QWdlbnRJZEZyb21QZW5kaW5nQWN0aW9uc0J5VG9vbE5hbWUocGVuZGluZ0FjdGlvbnMsICdjb25maWd1cmVfYWdlbnRfYWNjZXNzJylcbiAgICAgICAgY3JlYXRlQWdlbnRGb2xsb3dVcCA9IHtcbiAgICAgICAgICBhZ2VudElkOiBjb25maWd1cmVkQWdlbnRJZCBhcyBzdHJpbmcsXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKHdhc0NyZWF0ZUFnZW50QXBwcm92ZWQpIHtcbiAgICAgICAgZXZlbnQoRVZFTlRTLmFpQ2hhdEhpdGxPcHRpb24sIHtcbiAgICAgICAgICBhZ2VudF90eXBlOiBnZXRIaXRsQW5hbHl0aWNzQWdlbnRUeXBlKGFnZW50KSxcbiAgICAgICAgICBhY3Rpb25fdHlwZTogYnVpbGRIaXRsQWN0aW9uVHlwZUxpc3QocGVuZGluZ0FjdGlvbnMpLFxuICAgICAgICAgIGRlY2lzaW9uOiAnYWNjZXB0JyxcbiAgICAgICAgICBvcHRpb246ICdjcmVhdGVfYWdlbnQnLFxuICAgICAgICAgIC4uLihjb21wbGV0ZWRBZ2VudElkPy50cmltKCkgPyB7IGNyZWF0ZWRfYWdlbnRfaWQ6IGNvbXBsZXRlZEFnZW50SWQudHJpbSgpIH0gOiB7fSksXG4gICAgICAgIH0pXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHdhc0VkaXRBZ2VudEFwcHJvdmVkID1cbiAgICAgICAgaGFzQXBwcm92YWxJblByZXZpb3VzTWVzc2FnZSAmJlxuICAgICAgICBwcmV2aW91c01lc3NhZ2U/LmFwcHJvdmFsU3RhdHVzID09PSAnYXBwcm92ZWQnICYmXG4gICAgICAgIHBlbmRpbmdBY3Rpb25zLnNvbWUoKGFjdGlvbjogYW55KSA9PiAoYWN0aW9uLnRvb2xfbmFtZSB8fCAnJykudG9Mb3dlckNhc2UoKSA9PT0gJ2VkaXRfYWdlbnQnKVxuXG4gICAgICBsZXQgZWRpdEFnZW50Rm9sbG93VXA6IHsgYWdlbnRJZDogc3RyaW5nIH0gfCB1bmRlZmluZWRcbiAgICAgIGlmICh3YXNFZGl0QWdlbnRBcHByb3ZlZCkge1xuICAgICAgICBjb25zdCBmcm9tU3RyZWFtID0gY29tcGxldGVkQWdlbnRJZD8udHJpbSgpXG4gICAgICAgIGNvbnN0IGZyb21BcmdzID0gZXh0cmFjdEFnZW50SWRGcm9tRWRpdEFnZW50UGVuZGluZ0FjdGlvbnMocGVuZGluZ0FjdGlvbnMpXG4gICAgICAgIGNvbnN0IHJlc29sdmVkQWdlbnRJZCA9IGZyb21TdHJlYW0gfHwgZnJvbUFyZ3NcbiAgICAgICAgaWYgKHJlc29sdmVkQWdlbnRJZCkge1xuICAgICAgICAgIGVkaXRBZ2VudEZvbGxvd1VwID0geyBhZ2VudElkOiByZXNvbHZlZEFnZW50SWQgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHRhc2tJZHNGcm9tVXJscyA9IG1hdGNoZXMubWFwKG1hdGNoID0+IHBhcnNlSW50KG1hdGNoWzFdLCAxMCkpXG4gICAgICBjb25zdCB0YXNrSWRzRnJvbURlbGV0ZUFwcHJvdmFsID0gZXh0cmFjdFRhc2tJZHNGcm9tRGVsZXRlUGVuZGluZ0FjdGlvbnMocGVuZGluZ0FjdGlvbnMpXG4gICAgICBjb25zdCB0YXNrSWRzRnJvbURlbGV0aW9uVGV4dCA9XG4gICAgICAgIHdhc1Rhc2tEZWxldGUgJiYgdGFza0lkc0Zyb21VcmxzLmxlbmd0aCA9PT0gMCAmJiB0YXNrSWRzRnJvbURlbGV0ZUFwcHJvdmFsLmxlbmd0aCA9PT0gMFxuICAgICAgICAgID8gZXh0cmFjdFRhc2tJZHNGcm9tQXNzaXN0YW50RGVsZXRpb25UZXh0KGNvbnRlbnQpXG4gICAgICAgICAgOiBbXVxuICAgICAgY29uc3QgdGFza0lkc0ZvckRhc2hib2FyZCA9XG4gICAgICAgIHRhc2tJZHNGcm9tVXJscy5sZW5ndGggPiAwXG4gICAgICAgICAgPyB0YXNrSWRzRnJvbVVybHNcbiAgICAgICAgICA6IHRhc2tJZHNGcm9tRGVsZXRlQXBwcm92YWwubGVuZ3RoID4gMFxuICAgICAgICAgICAgPyB0YXNrSWRzRnJvbURlbGV0ZUFwcHJvdmFsXG4gICAgICAgICAgICA6IHRhc2tJZHNGcm9tRGVsZXRpb25UZXh0XG5cbiAgICAgIGNvbnN0IHNob3VsZFN5bmNEYXNoYm9hcmQgPVxuICAgICAgICBoYXNBcHByb3ZhbEluUHJldmlvdXNNZXNzYWdlICYmXG4gICAgICAgICh3YXNUYXNrQ3JlYXRpb24gfHwgd2FzVGFza0VkaXQgfHwgd2FzVGFza0RlbGV0ZSkgJiZcbiAgICAgICAgdGFza0lkc0ZvckRhc2hib2FyZC5sZW5ndGggPiAwXG5cbiAgICAgIGlmIChzaG91bGRTeW5jRGFzaGJvYXJkKSB7XG4gICAgICAgIGNvbnN0IHRhc2tJZHMgPSB0YXNrSWRzRm9yRGFzaGJvYXJkXG4gICAgICAgIGlmIChtYXRjaGVzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICBjb25zdCB0YWIgPSBhd2FpdCBnZXRUYWJUYXNrRGVmYXVsdCh0YXNrSWRzWzBdKVxuICAgICAgICAgIGNvbnN0IHRhYlNlZ21lbnQgPSB0YWIgPyBgLyR7dGFifWAgOiAnL2RldGFpbCdcbiAgICAgICAgICBjb250ZW50VG9BZGQgPSBjb250ZW50LnJlcGxhY2UodGFza1VybFJlZ2V4LCB1cmwgPT5cbiAgICAgICAgICAgIHVybC5yZXBsYWNlKC9cXC8oZGV0YWlsfG1lc3NhZ2V8bWVzc2FnZXN8ZmlsZXN8aGlzdG9yeXxob3VycykoPz0kfFxcPykvLCB0YWJTZWdtZW50KVxuICAgICAgICAgIClcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGxhc3RQcm9qZWN0TWVzc2FnZSA9IG1lc3NhZ2VzUmVmLmN1cnJlbnQuZmlsdGVyKG1zZyA9PiBtc2cucHJvamVjdElkKS5hdCgtMSlcbiAgICAgICAgY29uc3QgY29udGV4dFByb2plY3RJZFJhdyA9IHByb2plY3Q/LmlkIHx8IGxhc3RQcm9qZWN0TWVzc2FnZT8ucHJvamVjdElkXG4gICAgICAgIGNvbnN0IGNvbnRleHRQcm9qZWN0SWQgPSBjb250ZXh0UHJvamVjdElkUmF3ID8gcGFyc2VJbnQoU3RyaW5nKGNvbnRleHRQcm9qZWN0SWRSYXcpLCAxMCkgOiBudWxsXG4gICAgICAgIGNvbnN0IHBhdGhNYXRjaCA9IHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZS5tYXRjaCgvXlxcL3Byb2plY3RzXFwvKFxcZCspXFwvLylcbiAgICAgICAgY29uc3Qgcm91dGVQcm9qZWN0SWQgPSBwYXRoTWF0Y2ggPyBwYXJzZUludChwYXRoTWF0Y2hbMV0sIDEwKSA6IG51bGxcbiAgICAgICAgY29uc3QgaXNPblByb2plY3RSb3V0ZSA9IGNvbnRleHRQcm9qZWN0SWQgJiYgcm91dGVQcm9qZWN0SWQgJiYgY29udGV4dFByb2plY3RJZCA9PT0gcm91dGVQcm9qZWN0SWRcblxuICAgICAgICBpZiAoaXNPblByb2plY3RSb3V0ZSkge1xuICAgICAgICAgIGlmICh3YXNUYXNrQ3JlYXRpb24pIHtcbiAgICAgICAgICAgIHdpbmRvdy5uZXdQcm9qZWN0RGFzaGJvYXJkPy5hZGRFeGlzdGluZ1Rhc2tUb0Rhc2hib2FyZD8uKHRhc2tJZHMpXG4gICAgICAgICAgfSBlbHNlIGlmICh3YXNUYXNrRWRpdCkge1xuICAgICAgICAgICAgd2luZG93Lm5ld1Byb2plY3REYXNoYm9hcmQ/LmVkaXRFeGlzdGluZ1Rhc2tJbkRhc2hib2FyZD8uKHRhc2tJZHMpXG4gICAgICAgICAgfSBlbHNlIGlmICh3YXNUYXNrRGVsZXRlKSB7XG4gICAgICAgICAgICB3aW5kb3cubmV3UHJvamVjdERhc2hib2FyZD8uZGVsZXRlRXhpc3RpbmdUYXNrRnJvbURhc2hib2FyZD8uKHRhc2tJZHMpXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIFJlZmV0Y2ggZGVsIHRhc2sgcGFuZWwgc2kgZXN0w6EgYWJpZXJ0byB5IGxhIHRvb2wgYXByb2JhZGEgZWRpdMOzL2JvcnLDsyBlc2EgdGFyZWEuXG4gICAgICAvLyBDdWJyZSBsb3MgZG9zIGZsdWpvcyBkZSBhcHByb3ZhbDpcbiAgICAgIC8vICAgMSkgQXBwcm92YWwgcG9yIGJvdMOzbiDihpIgYHByZXZpb3VzTWVzc2FnZS5hcHByb3ZhbC5wZW5kaW5nX2FjdGlvbnNgICh2w61hIGhhc0FwcHJvdmFsSW5QcmV2aW91c01lc3NhZ2UpXG4gICAgICAvLyAgIDIpIE1hbnVhbCBhcHByb3ZhbCAodXN1YXJpbyB0aXBlYSBcInNpXCIvXCJub1wiKSDihpIgYGxhc3RNYW51YWxBcHByb3ZhbFJlZi5jdXJyZW50YFxuICAgICAgY29uc3Qgb3BlblRhc2tQYW5lbElkID0gd2luZG93LnRhc2tQYW5lbD8udGFza0lkXG4gICAgICBjb25zdCBtYW51YWxBcHByb3ZhbCA9IGxhc3RNYW51YWxBcHByb3ZhbFJlZi5jdXJyZW50XG4gICAgICBsYXN0TWFudWFsQXBwcm92YWxSZWYuY3VycmVudCA9IG51bGwgLy8gY29uc3VtaXIgdW5hIHNvbGEgdmV6XG4gICAgICBjb25zdCBtYW51YWxXYXNUYXNrRWRpdCA9ICEhbWFudWFsQXBwcm92YWwgJiYgVEFTS19FRElUX1RPT0xTLmluY2x1ZGVzKG1hbnVhbEFwcHJvdmFsLnRvb2xOYW1lKVxuICAgICAgY29uc3QgbWFudWFsV2FzVGFza0RlbGV0ZSA9ICEhbWFudWFsQXBwcm92YWwgJiYgVEFTS19ERUxFVEVfVE9PTFMuaW5jbHVkZXMobWFudWFsQXBwcm92YWwudG9vbE5hbWUpXG5cbiAgICAgIGlmIChvcGVuVGFza1BhbmVsSWQgJiYgKHdhc1Rhc2tFZGl0IHx8IHdhc1Rhc2tEZWxldGUgfHwgbWFudWFsV2FzVGFza0VkaXQgfHwgbWFudWFsV2FzVGFza0RlbGV0ZSkpIHtcbiAgICAgICAgY29uc3QgbWFudWFsUHNldWRvQWN0aW9uOiBQZW5kaW5nQWN0aW9uIHwgbnVsbCA9IG1hbnVhbEFwcHJvdmFsXG4gICAgICAgICAgPyAoeyB0b29sX25hbWU6IG1hbnVhbEFwcHJvdmFsLnRvb2xOYW1lLCB0b29sX2FyZ3M6IG1hbnVhbEFwcHJvdmFsLnRvb2xBcmdzID8/IHt9IH0gYXMgUGVuZGluZ0FjdGlvbilcbiAgICAgICAgICA6IG51bGxcbiAgICAgICAgY29uc3QgYWZmZWN0ZWRUYXNrSWRzID0gW1xuICAgICAgICAgIC4uLmV4dHJhY3RUYXNrSWRzRnJvbVBlbmRpbmdBY3Rpb25zQXJncyhwZW5kaW5nQWN0aW9ucyksXG4gICAgICAgICAgLi4udGFza0lkc0Zyb21VcmxzLFxuICAgICAgICAgIC4uLnRhc2tJZHNGcm9tRGVsZXRlQXBwcm92YWwsXG4gICAgICAgICAgLi4uKG1hbnVhbFBzZXVkb0FjdGlvbiA/IGV4dHJhY3RUYXNrSWRzRnJvbVBlbmRpbmdBY3Rpb25zQXJncyhbbWFudWFsUHNldWRvQWN0aW9uXSkgOiBbXSksXG4gICAgICAgIF0ubWFwKFN0cmluZylcbiAgICAgICAgaWYgKGFmZmVjdGVkVGFza0lkcy5pbmNsdWRlcyhTdHJpbmcob3BlblRhc2tQYW5lbElkKSkpIHtcbiAgICAgICAgICB3aW5kb3cudGFza1BhbmVsPy5yZWZldGNoVGFzaz8uKClcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBhZGRNZXNzYWdlKHtcbiAgICAgICAgaWQ6IGBhbnN3ZXItJHttZW1vcnlTZXNzaW9uSWR9YCxcbiAgICAgICAgbWVzc2FnZTogY29udGVudFRvQWRkLFxuICAgICAgICBkYXRlOiBuZXcgRGF0ZSgpLFxuICAgICAgICB1c2VyOiB7IGlkOiAnYXNzaXN0YW50JywgbmFtZTogJ0Fzc2lzdGFudCcgfSxcbiAgICAgICAgcm9sZTogQ2hhdEhpc3RvcnlSb2xlLkFTU0lTVEFOVCxcbiAgICAgICAgc291cmNlcyxcbiAgICAgICAgLi4uKGF0dGFjaG1lbnRzLmxlbmd0aCA+IDAgPyB7IGF0dGFjaG1lbnRzIH0gOiB7fSksXG4gICAgICAgIG1lbW9yeVNlc3Npb25JZCxcbiAgICAgICAgc3VnZ2VzdGlvbnM6IHN1Z2dlc3Rpb25zIHx8IFtdLFxuICAgICAgICAuLi4oY3JlYXRlQWdlbnRGb2xsb3dVcCA/IHsgY3JlYXRlQWdlbnRGb2xsb3dVcCB9IDoge30pLFxuICAgICAgfSlcblxuICAgICAgaWYgKGNyZWF0ZUFnZW50Rm9sbG93VXA/LmFnZW50SWQpIHtcbiAgICAgICAgZmV0Y2hBZ2VudERldGFpbChjcmVhdGVBZ2VudEZvbGxvd1VwLmFnZW50SWQpXG4gICAgICAgICAgLnRoZW4oY2hhdEFnZW50ID0+IHtcbiAgICAgICAgICAgIGRvY3VtZW50LmRpc3BhdGNoRXZlbnQoXG4gICAgICAgICAgICAgIG5ldyBDdXN0b21FdmVudCgnbWFpYS1tZXJnZS1jcmVhdGVkLWFnZW50LWludG8tbGlzdCcsIHtcbiAgICAgICAgICAgICAgICBkZXRhaWw6IHsgYWdlbnQ6IGNoYXRBZ2VudCB9LFxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKVxuICAgICAgICAgIH0pXG4gICAgICAgICAgLmNhdGNoKGVyciA9PiB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKCdbdXNlQ2hhdE1hbmFnZXJdIE5vIHNlIHB1ZG8gYcOxYWRpciBlbCBhZ2VudGUgcmVjacOpbiBjcmVhZG8gYWwgbGlzdGFkbycsIGVycilcbiAgICAgICAgICB9KVxuICAgICAgfVxuXG4gICAgICBpZiAoZWRpdEFnZW50Rm9sbG93VXA/LmFnZW50SWQpIHtcbiAgICAgICAgZmV0Y2hBZ2VudERldGFpbChlZGl0QWdlbnRGb2xsb3dVcC5hZ2VudElkKVxuICAgICAgICAgIC50aGVuKGNoYXRBZ2VudCA9PiB7XG4gICAgICAgICAgICBkb2N1bWVudC5kaXNwYXRjaEV2ZW50KFxuICAgICAgICAgICAgICBuZXcgQ3VzdG9tRXZlbnQoJ21haWEtc3luYy1lZGl0ZWQtYWdlbnQtZnJvbS1jaGF0Jywge1xuICAgICAgICAgICAgICAgIGRldGFpbDogeyBhZ2VudDogY2hhdEFnZW50IH0sXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApXG4gICAgICAgICAgfSlcbiAgICAgICAgICAuY2F0Y2goZXJyID0+IHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ1t1c2VDaGF0TWFuYWdlcl0gTm8gc2UgcHVkbyByZWZyZXNjYXIgZWwgYWdlbnRlIGVkaXRhZG8nLCBlcnIpXG4gICAgICAgICAgfSlcbiAgICAgIH1cblxuICAgICAgaXNQcm9jZXNzaW5nUmVmLmN1cnJlbnQgPSBmYWxzZVxuICAgICAgaWYgKGZpcnN0VGltZVJlZi5jdXJyZW50KSB7XG4gICAgICAgIGNvbnN0IGN1c3RvbUV2ZW50ID0gbmV3IEN1c3RvbUV2ZW50KCdyZWZldGNoLXNlc3Npb24nKVxuICAgICAgICBkb2N1bWVudC5kaXNwYXRjaEV2ZW50KGN1c3RvbUV2ZW50KVxuICAgICAgICBmaXJzdFRpbWVSZWYuY3VycmVudCA9IGZhbHNlXG4gICAgICB9XG4gICAgfSxcbiAgICBbYWRkTWVzc2FnZSwgcmVtb3ZlTWVzc2FnZSwgcHJvamVjdCwgZ2V0VGFiVGFza0RlZmF1bHQsIGV2ZW50LCBhZ2VudF1cbiAgKVxuXG4gIGNvbnN0IGhhbmRsZVN0cmVhbVN0b3AgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgY2xlYXJTdHJlYW1VaVJlZi5jdXJyZW50KClcbiAgICBjb25zdCB0ZW1wTWVzc2FnZUlkID0gYGFuc3dlci0ke2N1cnJlbnRNZXNzYWdlSWQuY3VycmVudH0tc3RyZWFtaW5nYFxuICAgIHN0cmVhbWluZ1N0b3JlLmNsZWFyKClcbiAgICBzdHJlYW1pbmdQbGFjZWhvbGRlcklkUmVmLmN1cnJlbnQgPSBudWxsXG4gICAgYWN0aXZlU3RyZWFtQ2hhdElkUmVmLmN1cnJlbnQgPSBudWxsXG4gICAgcmVtb3ZlTWVzc2FnZSh0ZW1wTWVzc2FnZUlkKVxuXG4gICAgYWRkTWVzc2FnZSh7XG4gICAgICBpZDogYGFuc3dlci0ke2N1cnJlbnRNZXNzYWdlSWQuY3VycmVudH0tY2FuY2VsbGVkYCxcbiAgICAgIG1lc3NhZ2U6IHQoJ2NoYXQuY2FuY2VsbGVkJyksXG4gICAgICBkYXRlOiBuZXcgRGF0ZSgpLFxuICAgICAgdXNlcjogeyBpZDogJ2Fzc2lzdGFudCcsIG5hbWU6ICdBc3Npc3RhbnQnIH0sXG4gICAgICByb2xlOiBDaGF0SGlzdG9yeVJvbGUuQVNTSVNUQU5ULFxuICAgICAgaXNGcm9udGVuZENhbmNlbGxlZDogdHJ1ZSxcbiAgICB9KVxuICAgIGlzUHJvY2Vzc2luZ1JlZi5jdXJyZW50ID0gZmFsc2VcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGNvbnN0IGN1c3RvbUV2ZW50ID0gbmV3IEN1c3RvbUV2ZW50KCdyZWZldGNoLXNlc3Npb24nKVxuICAgICAgZG9jdW1lbnQuZGlzcGF0Y2hFdmVudChjdXN0b21FdmVudClcbiAgICB9LCA1MDApXG4gIH0sIFthZGRNZXNzYWdlLCByZW1vdmVNZXNzYWdlLCB0XSlcblxuICBjb25zdCBoYW5kbGVBcHByb3ZhbFJlcXVpcmVkID0gdXNlQ2FsbGJhY2soXG4gICAgKGFwcHJvdmFsOiBBcHByb3ZhbFJlcXVlc3QsIGFjY3VtdWxhdGVkQ29udGVudDogc3RyaW5nKSA9PiB7XG4gICAgICBjb25zdCB0ZW1wTWVzc2FnZUlkID0gYGFuc3dlci0ke2N1cnJlbnRNZXNzYWdlSWQuY3VycmVudH0tc3RyZWFtaW5nYFxuICAgICAgc3RyZWFtaW5nU3RvcmUuY2xlYXIoKVxuICAgICAgc3RyZWFtaW5nUGxhY2Vob2xkZXJJZFJlZi5jdXJyZW50ID0gbnVsbFxuICAgICAgYWN0aXZlU3RyZWFtQ2hhdElkUmVmLmN1cnJlbnQgPSBudWxsXG4gICAgICByZW1vdmVNZXNzYWdlKHRlbXBNZXNzYWdlSWQpXG5cbiAgICAgIGNvbnN0IGhpdGxDb250ZXh0OiBIaXRsRXhlY3V0aW9uQ29udGV4dCA9IHtcbiAgICAgICAgbWVzc2FnZUlkOiBgYXBwcm92YWwtJHthcHByb3ZhbC5vcmlnaW5hbF90aHJlYWRfaWR9YCxcbiAgICAgICAgbWVzc2FnZVRleHQ6IGFjY3VtdWxhdGVkQ29udGVudCB8fCAnJyxcbiAgICAgICAgYXBwcm92YWwsXG4gICAgICAgIHBlbmRpbmdBY3Rpb25zOiBhcHByb3ZhbC5wZW5kaW5nX2FjdGlvbnMsXG4gICAgICAgIHRocmVhZElkczogYXBwcm92YWwucGVuZGluZ19hY3Rpb25zPy5tYXAoYWN0aW9uID0+IGFjdGlvbi50aHJlYWRfaWQpLFxuICAgICAgfVxuICAgICAgaGl0bEV4ZWN1dGlvbkNvbnRleHRSZWYuY3VycmVudCA9IGhpdGxDb250ZXh0XG5cbiAgICAgIGlmIChhcHByb3ZhbC5tYW51YWxfYXBwcm92YWxfZGV0ZWN0ZWQpIHtcbiAgICAgICAgY29uc3QgZmlyc3RBY3Rpb24gPSBhcHByb3ZhbC5wZW5kaW5nX2FjdGlvbnM/LlswXVxuICAgICAgICBjb25zdCB0b29sTmFtZSA9IChhcHByb3ZhbCBhcyB7IHRvb2xfbmFtZT86IHN0cmluZyB9KS50b29sX25hbWUgPz8gZmlyc3RBY3Rpb24/LnRvb2xfbmFtZSA/PyAnJ1xuICAgICAgICBjb25zdCB0b29sQXJncyA9XG4gICAgICAgICAgKChhcHByb3ZhbCBhcyB7IHRvb2xfYXJncz86IFJlY29yZDxzdHJpbmcsIHVua25vd24+IH0pLnRvb2xfYXJncyA/P1xuICAgICAgICAgICAgKGZpcnN0QWN0aW9uPy50b29sX2FyZ3MgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4gfCB1bmRlZmluZWQpKSB8fFxuICAgICAgICAgIG51bGxcbiAgICAgICAgaWYgKHRvb2xOYW1lKSB7XG4gICAgICAgICAgbGFzdE1hbnVhbEFwcHJvdmFsUmVmLmN1cnJlbnQgPSB7IHRvb2xOYW1lLCB0b29sQXJncyB9XG4gICAgICAgIH1cbiAgICAgICAgaXNQcm9jZXNzaW5nUmVmLmN1cnJlbnQgPSBmYWxzZVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgLy8gQWRkIGEgbWVzc2FnZSB3aXRoIHRoZSBhcHByb3ZhbCByZXF1ZXN0XG4gICAgICBhZGRNZXNzYWdlKHtcbiAgICAgICAgaWQ6IGBhcHByb3ZhbC0ke2FwcHJvdmFsLm9yaWdpbmFsX3RocmVhZF9pZH1gLFxuICAgICAgICBtZXNzYWdlOiBhY2N1bXVsYXRlZENvbnRlbnQgfHwgJycsXG4gICAgICAgIGRhdGU6IG5ldyBEYXRlKCksXG4gICAgICAgIHVzZXI6IHsgaWQ6ICdhc3Npc3RhbnQnLCBuYW1lOiAnQXNzaXN0YW50JyB9LFxuICAgICAgICByb2xlOiBDaGF0SGlzdG9yeVJvbGUuQVNTSVNUQU5ULFxuICAgICAgICBhcHByb3ZhbCxcbiAgICAgICAgYXBwcm92YWxTdGF0dXM6ICdwZW5kaW5nJyxcbiAgICAgIH0pXG4gICAgICBpc1Byb2Nlc3NpbmdSZWYuY3VycmVudCA9IGZhbHNlXG4gICAgfSxcbiAgICBbYWRkTWVzc2FnZSwgcmVtb3ZlTWVzc2FnZV1cbiAgKVxuXG4gIGNvbnN0IHtcbiAgICBhc2tNYWlhLFxuICAgIGlzTG9hZGluZzogd2FpdGluZ1Jlc3BvbnNlLFxuICAgIGlzV3JpdGluZyxcbiAgICBsb2FkaW5nTWVzc2FnZSxcbiAgICBzdHJlYW1BY3Rpdml0eSxcbiAgICB1cGRhdGVTdHJlYW1BY3Rpdml0eSxcbiAgICBzdG9wU3RyZWFtaW5nLFxuICAgIGFib3J0U3RyZWFtU2lsZW50bHksXG4gIH0gPSB1c2VPcmNoZXN0cmF0b3JTdHJlYW0oe1xuICAgIG9uRXJyb3I6IGhhbmRsZVN0cmVhbUVycm9yLFxuICAgIG9uU3RyZWFtVXBkYXRlOiBoYW5kbGVTdHJlYW1VcGRhdGUsXG4gICAgb25GaW5pc2hTdHJlYW06IGhhbmRsZVN0cmVhbUZpbmlzaCxcbiAgICBvblN0b3A6IGhhbmRsZVN0cmVhbVN0b3AsXG4gICAgb25BcHByb3ZhbFJlcXVpcmVkOiBoYW5kbGVBcHByb3ZhbFJlcXVpcmVkLFxuICAgIGhpdGxFeGVjdXRpb25Db250ZXh0UmVmLFxuICB9KVxuXG4gIC8vIE1hbnRlbmVtb3MgZWwgc2V0dGVyIG3DoXMgcmVjaWVudGUgZW4gdW5hIHJlZiBwYXJhIHF1ZSBwdWVkYSB1c2Fyc2UgZGVzZGVcbiAgLy8gZWZlY3RvcyBkZWZpbmlkb3MgYW50ZXMgZW4gZWwgYXJjaGl2byAoY2FtYmlvIGRlIGNoYXQsIHJlc2V0LCBldGMuKS5cbiAgYWJvcnRTdHJlYW1TaWxlbnRseVJlZi5jdXJyZW50ID0gYWJvcnRTdHJlYW1TaWxlbnRseVxuICBjbGVhclN0cmVhbVVpUmVmLmN1cnJlbnQgPSAoKSA9PiB7XG4gICAgdXBkYXRlU3RyZWFtQWN0aXZpdHkobnVsbClcbiAgICBzZXRBY3RpdmVMb2FkaW5ncyh7fSlcbiAgICBoaXRsRXhlY3V0aW9uQ29udGV4dFJlZi5jdXJyZW50ID0gbnVsbFxuICB9XG5cbiAgY29uc3QgY3VycmVudFByb2plY3QgPSBwcm9qZWN0XG5cbiAgY29uc3Qgc2VuZE1lc3NhZ2UgPSB1c2VDYWxsYmFjayhcbiAgICBhc3luYyAoXG4gICAgICBtZXNzYWdlOiBzdHJpbmcsXG4gICAgICBhdHRhY2htZW50c09yT3B0aW9ucz86IEF0dGFjaG1lbnRGaWxlW10gfCBTZW5kTWVzc2FnZU9wdGlvbnMsXG4gICAgICBmYXFJZD86IHN0cmluZyxcbiAgICAgIGFnZW50U3VnZ2VzdGlvbklkPzogc3RyaW5nLFxuICAgICAgbWVudGlvbnM/OiBDb250ZXh0TWVudGlvbltdLFxuICAgICAgZnVhSWQ/OiBzdHJpbmcsXG4gICAgICBzY0lkPzogc3RyaW5nXG4gICAgKSA9PiB7XG4gICAgICBpZiAoaXNQcm9jZXNzaW5nUmVmLmN1cnJlbnQgfHwgd2FpdGluZ1Jlc3BvbnNlIHx8IGxvYWRpbmdNZXNzYWdlcykge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgY29uc3QgeyBhdHRhY2htZW50cywgb3B0aW9ucyB9ID0gbm9ybWFsaXplU2VuZE1lc3NhZ2VBcmdzKGF0dGFjaG1lbnRzT3JPcHRpb25zKVxuICAgICAgLy8gTGFzIG1lbnRpb25zIHB1ZWRlbiB2ZW5pciB2w61hIDV0byBwYXLDoW1ldHJvIChjYWxsIHBvc2l0aW9uYWwgZGVzZGUgZWwgZm9vdGVyKVxuICAgICAgLy8gbyB2w61hIFNlbmRNZXNzYWdlT3B0aW9ucyAoY2FsbCBwcm9ncmFtw6F0aWNvKS4gRWwgcGFyw6FtZXRybyBleHBsw61jaXRvIGdhbmEuXG4gICAgICBjb25zdCBlZmZlY3RpdmVNZW50aW9ucyA9IG1lbnRpb25zID8/IG9wdGlvbnMubWVudGlvbnNcbiAgICAgIGNvbnN0IGNvbnRleHRNZXNzYWdlOiBDb250ZXh0TWVzc2FnZSB8IHVuZGVmaW5lZCA9IGJ1aWxkQ29udGV4dE1lc3NhZ2UoZWZmZWN0aXZlTWVudGlvbnMpXG4gICAgICBjb25zdCBwYXlsb2FkRnVhSWQgPSBmdWFJZCA/PyBvcHRpb25zLmZ1YUlkXG4gICAgICBjb25zdCBwYXlsb2FkU2NJZCA9IHNjSWQgPz8gb3B0aW9ucy5zY0lkXG4gICAgICBjb25zdCBwYXlsb2FkQ29udGV4dERhdGEgPSBvcHRpb25zLmNvbnRleHREYXRhXG4gICAgICBjb25zdCBkaXNwbGF5TWVzc2FnZSA9IGZvcm1hdFF1aWNrQWN0aW9uTWVzc2FnZUZvckRpc3BsYXkobWVzc2FnZSwge1xuICAgICAgICBmdWFJZDogcGF5bG9hZEZ1YUlkLFxuICAgICAgICBzY0lkOiBwYXlsb2FkU2NJZCxcbiAgICAgIH0pXG5cbiAgICAgIGlzUHJvY2Vzc2luZ1JlZi5jdXJyZW50ID0gdHJ1ZVxuICAgICAgY29uc3QgbmV3TWVzc2FnZUlkID0gdXVpZHY0KClcbiAgICAgIGN1cnJlbnRNZXNzYWdlSWQuY3VycmVudCA9IG5ld01lc3NhZ2VJZFxuICAgICAgY3VycmVudFVzZXJRdWVzdGlvbi5jdXJyZW50ID0gbWVzc2FnZVxuXG4gICAgICBpZiAoIXJlcG9ydGVkRXZlbnQuY3VycmVudCkge1xuICAgICAgICBldmVudChFVkVOVFMucG1BaVR5cGVkVGV4dClcbiAgICAgICAgcmVwb3J0ZWRFdmVudC5jdXJyZW50ID0gdHJ1ZVxuICAgICAgfVxuXG4gICAgICAvLyBWZXJpZmljYXIgc2kgZWwgY29udGV4dG8gZ2xvYmFsIGVzdMOhIGRlc2FjdHVhbGl6YWRvXG4gICAgICBjb25zdCBsYXN0TWVzc2FnZVdpdGhQcm9qZWN0ID0gbWVzc2FnZXNSZWYuY3VycmVudC5maWx0ZXIobXNnID0+IG1zZy5wcm9qZWN0SWQpLmF0KC0xKVxuXG4gICAgICBjb25zdCBjdXJyZW50QWdlbnRGcm9tTWVzc2FnZXMgPSBtZXNzYWdlc1JlZi5jdXJyZW50Py5bbWVzc2FnZXNSZWYuY3VycmVudC5sZW5ndGggLSAxXT8uYWdlbnRJZFxuXG4gICAgICAvLyBObyBhZ3JlZ2FyIHByb2plY3RJZCBhbCBtZW5zYWplIGRlbCB1c3VhcmlvIC0gc2UgZGV0ZXJtaW5hcsOhIGRlc3B1w6lzXG4gICAgICBhZGRNZXNzYWdlKHtcbiAgICAgICAgaWQ6IGBxdWVzdGlvbi0ke2N1cnJlbnRNZXNzYWdlSWQuY3VycmVudH1gLFxuICAgICAgICBtZXNzYWdlOiBkaXNwbGF5TWVzc2FnZSxcbiAgICAgICAgZGF0ZTogbmV3IERhdGUoKSxcbiAgICAgICAgdXNlcjogY3VycmVudFVzZXIsXG4gICAgICAgIHJvbGU6IENoYXRIaXN0b3J5Um9sZS5VU0VSLFxuICAgICAgICBzb3VyY2VzOiBhdHRhY2htZW50cyxcbiAgICAgICAgLi4uKGNvbnRleHRNZXNzYWdlID8geyBjb250ZXh0TWVzc2FnZSB9IDoge30pLFxuICAgICAgfSlcblxuICAgICAgY3VycmVudE1lc3NhZ2VJZC5jdXJyZW50ID0gdXVpZHY0KClcblxuICAgICAgY29uc3Qgc3RyZWFtaW5nUGxhY2Vob2xkZXJJZCA9IGBhbnN3ZXItJHtjdXJyZW50TWVzc2FnZUlkLmN1cnJlbnR9LXN0cmVhbWluZ2BcbiAgICAgIHN0cmVhbWluZ1BsYWNlaG9sZGVySWRSZWYuY3VycmVudCA9IHN0cmVhbWluZ1BsYWNlaG9sZGVySWRcbiAgICAgIGFjdGl2ZVN0cmVhbUNoYXRJZFJlZi5jdXJyZW50ID0gY3VycmVudENoYXRJZC5jdXJyZW50XG4gICAgICBhZGRNZXNzYWdlKHtcbiAgICAgICAgaWQ6IHN0cmVhbWluZ1BsYWNlaG9sZGVySWQsXG4gICAgICAgIG1lc3NhZ2U6ICcnLFxuICAgICAgICBkYXRlOiBuZXcgRGF0ZSgpLFxuICAgICAgICB1c2VyOiB7IGlkOiAnYXNzaXN0YW50JywgbmFtZTogYWdlbnQ/Lm5hbWUgfHwgJ0Fzc2lzdGFudCcgfSxcbiAgICAgICAgcm9sZTogQ2hhdEhpc3RvcnlSb2xlLkFTU0lTVEFOVCxcbiAgICAgIH0pXG5cbiAgICAgIGxldCBmaW5hbE1lc3NhZ2UgPSBtZXNzYWdlXG5cbiAgICAgIGlmIChtZXNzYWdlID09PSB0KCdxYS5pdGVtcy5yZW50YWJpbGlkYWRfcHJveWVjdG8nKSkge1xuICAgICAgICBmaW5hbE1lc3NhZ2UgPSBgRkFROiAke3QoJ3FhLml0ZW1zLnJlbnRhYmlsaWRhZF9wcm95ZWN0bycpfSAtIFRpcG8gZGUgcmVudGFiaWxpZGFkOiAke1xuICAgICAgICAgIG9wdGlvbnMucHJvamVjdENoYW5nZWQ/LmluY29tZVR5cGUgfHwgcHJvamVjdD8uaW5jb21lVHlwZVxuICAgICAgICB9YFxuICAgICAgfVxuXG4gICAgICBjb25zdCBoaXN0b3J5ID0gbWVzc2FnZXNSZWYuY3VycmVudC5tYXAoaGlzdG9yeU1lc3NhZ2UgPT4gKHtcbiAgICAgICAgY29udGVudDogaGlzdG9yeU1lc3NhZ2UubWVzc2FnZSxcbiAgICAgICAgcm9sZTogaGlzdG9yeU1lc3NhZ2UudXNlci5pZCA9PT0gYXV0aFVzZXIuaWQudG9TdHJpbmcoKSA/IENoYXRIaXN0b3J5Um9sZS5VU0VSIDogQ2hhdEhpc3RvcnlSb2xlLkFTU0lTVEFOVCxcbiAgICAgIH0pKVxuXG4gICAgICAvLyBWZXJpZmljYXIgY29uc2lzdGVuY2lhIGVudHJlIGNvbnRleHRvIGdsb2JhbCB5IMO6bHRpbW8gbWVuc2FqZVxuICAgICAgY29uc3QgY29udGV4dFByb2plY3RJZCA9IHByb2plY3Q/LmlkXG4gICAgICBjb25zdCBsYXN0TWVzc2FnZVByb2plY3RJZCA9IGxhc3RNZXNzYWdlV2l0aFByb2plY3Q/LnByb2plY3RJZFxuXG4gICAgICBsZXQgcHJvamVjdFRvUmVxdWVzdDogbnVtYmVyIHwgbnVsbCA9IG51bGxcblxuICAgICAgLy8gU2kgaGF5IMO6bHRpbW8gbWVuc2FqZSBjb24gcHJvamVjdElkLCB1c2FybG8gKG3DoXMgY29uZmlhYmxlKVxuICAgICAgaWYgKGxhc3RNZXNzYWdlUHJvamVjdElkICE9IG51bGwpIHtcbiAgICAgICAgY29uc3QgcGFyc2VkID0gTnVtYmVyKGxhc3RNZXNzYWdlUHJvamVjdElkKVxuICAgICAgICBwcm9qZWN0VG9SZXF1ZXN0ID0gTnVtYmVyLmlzRmluaXRlKHBhcnNlZCkgPyBwYXJzZWQgOiBudWxsXG4gICAgICB9XG4gICAgICAvLyBTaSBubyBoYXkgw7psdGltbyBtZW5zYWplLCB1c2FyIGVsIGNvbnRleHRvIGdsb2JhbFxuICAgICAgZWxzZSBpZiAoY29udGV4dFByb2plY3RJZCAhPSBudWxsKSB7XG4gICAgICAgIHByb2plY3RUb1JlcXVlc3QgPSBjb250ZXh0UHJvamVjdElkXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHByb2plY3RzID0gYXdhaXQgZmV0Y2hQcm9qZWN0cyhbcHJvamVjdFRvUmVxdWVzdF0pXG5cbiAgICAgIGNvbnN0IHBheWxvYWRGYXFJZCA9IGZhcUlkID8/IG9wdGlvbnMuZmFxSWRcbiAgICAgIGNvbnN0IHBheWxvYWRBZ2VudFN1Z2dlc3Rpb25JZCA9IGFnZW50U3VnZ2VzdGlvbklkID8/IG9wdGlvbnMuYWdlbnRTdWdnZXN0aW9uSWRcblxuICAgICAgY29uc3QgcGF5bG9hZERhdGEgPSB7XG4gICAgICAgIG1lc3NhZ2U6IGZpbmFsTWVzc2FnZSxcbiAgICAgICAgaGlzdG9yeSxcbiAgICAgICAgcHJvamVjdElkOiBwcm9qZWN0VG9SZXF1ZXN0LFxuICAgICAgICBsYW5nOiBhdXRoVXNlci5sYW5nLFxuICAgICAgICB1c2VySWQ6IGF1dGhVc2VyLmlkLnRvU3RyaW5nKCksXG4gICAgICAgIGZpcnN0TmFtZTogYXV0aFVzZXIuZmlyc3ROYW1lLFxuICAgICAgICBsYXN0TmFtZTogYXV0aFVzZXIubGFzdE5hbWUsXG4gICAgICAgIGNvbXBhbnlJZDogYXV0aFVzZXIuY29tcGFueV9pZC50b1N0cmluZygpLFxuICAgICAgICBjaGF0SWQ6IGN1cnJlbnRDaGF0SWQuY3VycmVudCxcbiAgICAgICAgbWVzc2FnZUlkOiBjdXJyZW50TWVzc2FnZUlkLmN1cnJlbnQsXG4gICAgICAgIGFnZW50TmFtZTogYWdlbnQ/Lm5hbWUgfHwgJycsXG4gICAgICAgIGFnZW50SWQ6IGN1cnJlbnRBZ2VudEZyb21NZXNzYWdlcyB8fCBhZ2VudD8uaWQhLFxuICAgICAgICBpc1dlYlNlYXJjaEFjdGl2ZTogaXNXZWJTZWFyY2hBY3RpdmVSZWYuY3VycmVudCxcbiAgICAgICAgaXNEZWVwU2VhcmNoQWN0aXZlOiBpc0RlZXBTZWFyY2hBY3RpdmVSZWYuY3VycmVudCxcbiAgICAgICAgLi4uKHByb2plY3Q/LmZlZUlkICE9IG51bGwgPyB7IGZlZUlkOiBOdW1iZXIocHJvamVjdC5mZWVJZCkgfSA6IHt9KSxcbiAgICAgICAgLi4uKGNsaWVudD8uaWRcbiAgICAgICAgICA/IHsgY2xpZW50SWQ6IGNsaWVudC5pZCwgLi4uKGNsaWVudC5uYW1lID8geyBjbGllbnROYW1lOiBjbGllbnQubmFtZSB9IDoge30pIH1cbiAgICAgICAgICA6IHByb2plY3Q/LmNsaWVudElkICE9IG51bGxcbiAgICAgICAgICAgID8geyBjbGllbnRJZDogTnVtYmVyKHByb2plY3QuY2xpZW50SWQpIH1cbiAgICAgICAgICAgIDogcHJvamVjdD8uY2xpZW50Py5pZFxuICAgICAgICAgICAgICA/IHsgY2xpZW50SWQ6IHByb2plY3QuY2xpZW50LmlkLCAuLi4ocHJvamVjdC5jbGllbnQubmFtZSA/IHsgY2xpZW50TmFtZTogcHJvamVjdC5jbGllbnQubmFtZSB9IDoge30pIH1cbiAgICAgICAgICAgICAgOiB7fSksXG4gICAgICAgIC4uLihwcm9qZWN0cz8ubGVuZ3RoID8geyBwcm9qZWN0TmFtZTogcHJvamVjdHNbMF0ubmFtZSB9IDoge30pLFxuICAgICAgICAuLi4odGFzaz8uaWQgIT0gbnVsbCA/IHsgdGFza0lkOiBOdW1iZXIodGFzay5pZCksIC4uLih0YXNrLm5hbWUgPyB7IHRhc2tOYW1lOiB0YXNrLm5hbWUgfSA6IHt9KSB9IDoge30pLFxuICAgICAgICAuLi4oYXR0YWNobWVudHMubGVuZ3RoID4gMCA/IHsgYXR0YWNobWVudHMgfSA6IHt9KSxcbiAgICAgICAgLi4uKHBheWxvYWRGYXFJZCA/IHsgZmFxSWQ6IHBheWxvYWRGYXFJZCB9IDoge30pLFxuICAgICAgICAuLi4ocGF5bG9hZEFnZW50U3VnZ2VzdGlvbklkID8geyBhZ2VudFN1Z2dlc3Rpb25JZDogcGF5bG9hZEFnZW50U3VnZ2VzdGlvbklkIH0gOiB7fSksXG4gICAgICAgIC4uLihwYXlsb2FkRnVhSWQgPyB7IGZ1YUlkOiBwYXlsb2FkRnVhSWQgfSA6IHt9KSxcbiAgICAgICAgLi4uKHBheWxvYWRTY0lkID8geyBzY0lkOiBwYXlsb2FkU2NJZCB9IDoge30pLFxuICAgICAgICAuLi4oYWdlbnQ/LmVudGl0eSAhPSBudWxsID8geyBhZ2VudEVudGl0eTogYWdlbnQuZW50aXR5IH0gOiB7fSksXG4gICAgICAgIC4uLihjb250ZXh0TWVzc2FnZSA/IHsgY29udGV4dE1lc3NhZ2UgfSA6IHt9KSxcbiAgICAgICAgLi4uKHBheWxvYWRDb250ZXh0RGF0YSA/IHsgY29udGV4dERhdGE6IHBheWxvYWRDb250ZXh0RGF0YSB9IDoge30pLFxuICAgICAgfVxuXG4gICAgICBhc2tNYWlhKHBheWxvYWREYXRhKVxuICAgIH0sXG4gICAgW1xuICAgICAgYWRkTWVzc2FnZSxcbiAgICAgIGV2ZW50LFxuICAgICAgYXNrTWFpYSxcbiAgICAgIHByb2plY3QsXG4gICAgICBjbGllbnQsXG4gICAgICB0YXNrLFxuICAgICAgYXV0aFVzZXIsXG4gICAgICBhZ2VudCxcbiAgICAgIHQsXG4gICAgICB3YWl0aW5nUmVzcG9uc2UsXG4gICAgICBsb2FkaW5nTWVzc2FnZXMsXG4gICAgICBpc1dlYlNlYXJjaEFjdGl2ZSxcbiAgICAgIGlzRGVlcFNlYXJjaEFjdGl2ZSxcbiAgICBdXG4gIClcblxuICBjb25zdCBjaGFuZ2VQcm9qZWN0ID0gdXNlQ2FsbGJhY2soXG4gICAgKG9wdGlvbjogUHJvamVjdCkgPT4ge1xuICAgICAgaWYgKCFjdXJyZW50VXNlclF1ZXN0aW9uLmN1cnJlbnQpIHJldHVyblxuXG4gICAgICBpZiAob3B0aW9uLmlkICE9PSBwcm9qZWN0Py5pZCkge1xuICAgICAgICBzZXRQcm9qZWN0KG9wdGlvbilcbiAgICAgIH1cblxuICAgICAgaWYgKHByb2plY3QgJiYgY3VycmVudFVzZXJRdWVzdGlvbi5jdXJyZW50KSB7XG4gICAgICAgIGNvbnN0IGhpc3RvcnkgPSBtZXNzYWdlc1JlZi5jdXJyZW50Lm1hcChoaXN0b3J5TWVzc2FnZSA9PiAoe1xuICAgICAgICAgIGNvbnRlbnQ6IGhpc3RvcnlNZXNzYWdlLm1lc3NhZ2UsXG4gICAgICAgICAgcm9sZTogaGlzdG9yeU1lc3NhZ2UudXNlci5pZCA9PT0gYXV0aFVzZXIuaWQudG9TdHJpbmcoKSA/IENoYXRIaXN0b3J5Um9sZS5VU0VSIDogQ2hhdEhpc3RvcnlSb2xlLkFTU0lTVEFOVCxcbiAgICAgICAgfSkpXG5cbiAgICAgICAgYXNrTWFpYSh7XG4gICAgICAgICAgbWVzc2FnZTogY3VycmVudFVzZXJRdWVzdGlvbi5jdXJyZW50LFxuICAgICAgICAgIGhpc3RvcnksXG4gICAgICAgICAgcHJvamVjdElkOiBvcHRpb24uaWQsXG4gICAgICAgICAgbGFuZzogYXV0aFVzZXIubGFuZyxcbiAgICAgICAgICB1c2VySWQ6IGF1dGhVc2VyLmlkLnRvU3RyaW5nKCksXG4gICAgICAgICAgZmlyc3ROYW1lOiBhdXRoVXNlci5maXJzdE5hbWUsXG4gICAgICAgICAgbGFzdE5hbWU6IGF1dGhVc2VyLmxhc3ROYW1lLFxuICAgICAgICAgIGNvbXBhbnlJZDogYXV0aFVzZXIuY29tcGFueV9pZC50b1N0cmluZygpLFxuICAgICAgICAgIGNoYXRJZDogY3VycmVudENoYXRJZC5jdXJyZW50LFxuICAgICAgICAgIG1lc3NhZ2VJZDogY3VycmVudE1lc3NhZ2VJZC5jdXJyZW50LFxuICAgICAgICAgIGFnZW50TmFtZTogYWdlbnQ/Lm5hbWUgfHwgJycsXG4gICAgICAgICAgYWdlbnRJZDogYWdlbnQ/LmlkIHx8ICcnLFxuICAgICAgICAgIGlzV2ViU2VhcmNoQWN0aXZlOiBpc1dlYlNlYXJjaEFjdGl2ZVJlZi5jdXJyZW50LFxuICAgICAgICAgIGlzRGVlcFNlYXJjaEFjdGl2ZTogaXNEZWVwU2VhcmNoQWN0aXZlUmVmLmN1cnJlbnQsXG4gICAgICAgICAgLi4uKG9wdGlvbj8uZmVlSWQgIT0gbnVsbCA/IHsgZmVlSWQ6IE51bWJlcihvcHRpb24uZmVlSWQpIH0gOiB7fSksXG4gICAgICAgICAgLi4uKG9wdGlvbj8uY2xpZW50SWQgIT0gbnVsbCA/IHsgY2xpZW50SWQ6IE51bWJlcihvcHRpb24uY2xpZW50SWQpIH0gOiB7fSksXG4gICAgICAgICAgLi4uKGFnZW50Py5lbnRpdHkgIT0gbnVsbCA/IHsgYWdlbnRFbnRpdHk6IGFnZW50LmVudGl0eSB9IDoge30pLFxuICAgICAgICB9KVxuICAgICAgfVxuICAgIH0sXG4gICAgW3Byb2plY3QsIHNldFByb2plY3QsIGFza01haWEsIGF1dGhVc2VyLCBpc1dlYlNlYXJjaEFjdGl2ZSwgYWdlbnRdXG4gIClcblxuICBjb25zdCBoYW5kbGVGZWVkYmFjayA9IHVzZUNhbGxiYWNrKGFzeW5jIChmZWVkYmFja1Byb3A6IEZlZWRiYWNrLCBjaGF0TWVzc2FnZUlkOiBzdHJpbmcpID0+IHtcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IG1haWEuQ2hhdHMud2FzSGVscGZ1bENoYXQoY2hhdE1lc3NhZ2VJZCwgZmVlZGJhY2tQcm9wID09PSBGZWVkYmFjay5USFVNQlNfVVApXG4gICAgaWYgKHJlc3BvbnNlKSB7XG4gICAgICBtZXNzYWdlc1JlZi5jdXJyZW50ID0gbWVzc2FnZXNSZWYuY3VycmVudC5tYXAobWVzc2FnZSA9PiB7XG4gICAgICAgIGlmIChtZXNzYWdlLmlkID09PSBjaGF0TWVzc2FnZUlkICYmIG1lc3NhZ2Uucm9sZSA9PT0gJ2Fzc2lzdGFudCcpIHtcbiAgICAgICAgICByZXR1cm4geyAuLi5tZXNzYWdlLCB3YXNIZWxwZnVsOiBmZWVkYmFja1Byb3AgPT09IEZlZWRiYWNrLlRIVU1CU19VUCB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG1lc3NhZ2VcbiAgICAgIH0pXG4gICAgfVxuICB9LCBbXSlcblxuICBjb25zdCBoYW5kbGVBcHByb3ZhbERlY2lzaW9uID0gdXNlQ2FsbGJhY2soXG4gICAgYXN5bmMgKFxuICAgICAgdGhyZWFkSWRzOiBzdHJpbmdbXSxcbiAgICAgIGRlY2lzaW9uOiAnYXBwcm92ZScgfCAncmVqZWN0JyxcbiAgICAgIGVkaXRlZEFjdGlvbnM/OiBBcnJheTx7IHRvb2xfbmFtZTogc3RyaW5nOyBhcmdzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB9PlxuICAgICkgPT4ge1xuICAgICAgaWYgKCF0aHJlYWRJZHM/Lmxlbmd0aCkge1xuICAgICAgICBjb25zb2xlLmVycm9yKCdObyB0aHJlYWRfaWRzIHByb3ZpZGVkIGZvciBhcHByb3ZhbCBkZWNpc2lvbicpXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICAvLyBCdXNjYXIgZWwgbWVuc2FqZSBxdWUgY29udGllbmUgYWxndW5vIGRlIGVzdG9zIHRocmVhZElkcyBlbiBzdXMgcGVuZGluZ19hY3Rpb25zXG4gICAgICBjb25zdCBtZXNzYWdlV2l0aEFwcHJvdmFsID0gbWVzc2FnZXNSZWYuY3VycmVudC5maW5kKG0gPT5cbiAgICAgICAgbS5hcHByb3ZhbD8ucGVuZGluZ19hY3Rpb25zPy5zb21lKGFjdGlvbiA9PiB0aHJlYWRJZHMuaW5jbHVkZXMoYWN0aW9uLnRocmVhZF9pZCkpXG4gICAgICApXG5cbiAgICAgIGlmICghbWVzc2FnZVdpdGhBcHByb3ZhbCB8fCAhbWVzc2FnZVdpdGhBcHByb3ZhbC5hcHByb3ZhbCkge1xuICAgICAgICBjb25zb2xlLmVycm9yKCdObyBzZSBlbmNvbnRyw7MgbWVuc2FqZSBjb24gYXBwcm92YWwgcGFyYSB0aHJlYWRfaWRzOicsIHRocmVhZElkcylcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHsgYXBwcm92YWwgfSA9IG1lc3NhZ2VXaXRoQXBwcm92YWxcbiAgICAgIGNvbnN0IG1lc3NhZ2VJZCA9IG1lc3NhZ2VXaXRoQXBwcm92YWwuaWRcbiAgICAgIGNvbnN0IGxvYWRpbmdLZXkgPSB0aHJlYWRJZHNbMF1cblxuICAgICAgY29uc3QgaGl0bENvbnRleHQ6IEhpdGxFeGVjdXRpb25Db250ZXh0ID0ge1xuICAgICAgICBtZXNzYWdlSWQsXG4gICAgICAgIG1lc3NhZ2VUZXh0OiBtZXNzYWdlV2l0aEFwcHJvdmFsLm1lc3NhZ2UsXG4gICAgICAgIGFwcHJvdmFsLFxuICAgICAgICBwZW5kaW5nQWN0aW9uczogYXBwcm92YWwucGVuZGluZ19hY3Rpb25zLFxuICAgICAgICB0aHJlYWRJZHMsXG4gICAgICB9XG4gICAgICBoaXRsRXhlY3V0aW9uQ29udGV4dFJlZi5jdXJyZW50ID0gaGl0bENvbnRleHRcblxuICAgICAgY29uc3QgaW5pdGlhbEFjdGl2aXR5ID0gcmVzb2x2ZUluaXRpYWxIaXRsU3RyZWFtQWN0aXZpdHkodCwgaGl0bENvbnRleHQpXG5cbiAgICAgIC8vIFVwZGF0ZSBtZXNzYWdlIHN0YXR1cyBpbW1lZGlhdGVseVxuICAgICAgbWVzc2FnZXNSZWYuY3VycmVudCA9IG1lc3NhZ2VzUmVmLmN1cnJlbnQubWFwKG1lc3NhZ2UgPT4ge1xuICAgICAgICBpZiAobWVzc2FnZS5pZCA9PT0gbWVzc2FnZUlkKSB7XG4gICAgICAgICAgY29uc3QgbmV3U3RhdHVzID0gZGVjaXNpb24gPT09ICdhcHByb3ZlJyA/ICdhcHByb3ZlZCcgOiAncmVqZWN0ZWQnXG4gICAgICAgICAgcmV0dXJuIHsgLi4ubWVzc2FnZSwgYXBwcm92YWxTdGF0dXM6IG5ld1N0YXR1cyB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG1lc3NhZ2VcbiAgICAgIH0pXG5cbiAgICAgIC8vIFRyaWdnZXIgcmUtcmVuZGVyXG4gICAgICBjb25zdCBleGlzdGluZ01lc3NhZ2UgPSBtZXNzYWdlc1JlZi5jdXJyZW50LmZpbmQobSA9PiBtLmlkID09PSBtZXNzYWdlSWQpXG4gICAgICBpZiAoZXhpc3RpbmdNZXNzYWdlKSB7XG4gICAgICAgIGNvbnN0IG5ld1N0YXR1cyA9IGRlY2lzaW9uID09PSAnYXBwcm92ZScgPyAnYXBwcm92ZWQnIDogJ3JlamVjdGVkJ1xuICAgICAgICBhZGRNZXNzYWdlKHsgLi4uZXhpc3RpbmdNZXNzYWdlLCBhcHByb3ZhbFN0YXR1czogbmV3U3RhdHVzIH0pXG4gICAgICB9XG5cbiAgICAgIC8vIENhbGwgY29udGludWUtdGhyZWFkIGVuZHBvaW50IHdpdGggQUxMIHRocmVhZF9pZHMgaW4gYSBzaW5nbGUgcmVxdWVzdFxuICAgICAgaXNQcm9jZXNzaW5nUmVmLmN1cnJlbnQgPSB0cnVlXG4gICAgICBjdXJyZW50TWVzc2FnZUlkLmN1cnJlbnQgPSB1dWlkdjQoKVxuXG4gICAgICAvLyBBZGQgbG9hZGluZ1xuICAgICAgc2V0QWN0aXZlTG9hZGluZ3MocHJldiA9PiAoe1xuICAgICAgICAuLi5wcmV2LFxuICAgICAgICBbbG9hZGluZ0tleV06IGluaXRpYWxBY3Rpdml0eS5tZXNzYWdlLFxuICAgICAgfSkpXG4gICAgICB1cGRhdGVTdHJlYW1BY3Rpdml0eShpbml0aWFsQWN0aXZpdHkpXG5cbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgbWFpYS5PcmNoZXN0cmF0b3IuY29udGludWVUaHJlYWQoe1xuICAgICAgICAgIHRocmVhZElkcywgLy8gU2VuZCBhbGwgYWN0aW9uIHRocmVhZF9pZHMgYXQgb25jZVxuICAgICAgICAgIHNlc3Npb25JZDogYXBwcm92YWwuc2Vzc2lvbl9pZCxcbiAgICAgICAgICBkZWNpc2lvbjogZWRpdGVkQWN0aW9ucyA/ICdlZGl0JyA6IGRlY2lzaW9uLFxuICAgICAgICAgIGVkaXRlZEFjdGlvbnMsXG4gICAgICAgICAgYWdlbnRJZDogYWdlbnQ/LmlkIHx8ICcnLFxuICAgICAgICAgIGxhbmc6IGF1dGhVc2VyLmxhbmcsXG4gICAgICAgIH0pXG5cbiAgICAgICAgaWYgKCFyZXNwb25zZS5vaykge1xuICAgICAgICAgIGhhbmRsZVN0cmVhbUVycm9yKClcbiAgICAgICAgICByZXR1cm5cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFByb2Nlc3MgU1NFIHN0cmVhbVxuICAgICAgICBhd2FpdCBwcm9jZXNzU1NFU3RyZWFtKHJlc3BvbnNlLCBsb2FkaW5nS2V5LCB7XG4gICAgICAgICAgb25UaGlua2luZzogKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgYWN0aXZpdHk6IFN0cmVhbUFjdGl2aXR5ID0ge1xuICAgICAgICAgICAgICBwaGFzZTogJ3RoaW5raW5nJyxcbiAgICAgICAgICAgICAgbWVzc2FnZTogZ2V0VGhpbmtpbmdMb2FkaW5nTWVzc2FnZSgwLCB0KSxcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHVwZGF0ZVN0cmVhbUFjdGl2aXR5KGFjdGl2aXR5KVxuICAgICAgICAgIH0sXG4gICAgICAgICAgb25Ub2tlbjogKGNvbnRlbnQ6IHN0cmluZykgPT4ge1xuICAgICAgICAgICAgdXBkYXRlU3RyZWFtQWN0aXZpdHkoZ2V0V3JpdGluZ1N0cmVhbUFjdGl2aXR5KHQpKVxuICAgICAgICAgICAgaGFuZGxlU3RyZWFtVXBkYXRlKGNvbnRlbnQsIG51bGwsICcnKVxuICAgICAgICAgIH0sXG4gICAgICAgICAgb25Ob2RlOiAobWVzc2FnZTogc3RyaW5nLCBjdXJyZW50VGhyZWFkSWQ6IHN0cmluZykgPT4ge1xuICAgICAgICAgICAgY29uc3Qgbm9kZUFjdGl2aXR5ID0gcmVzb2x2ZUhpdGxOb2RlU3RyZWFtQWN0aXZpdHkoXG4gICAgICAgICAgICAgIG1lc3NhZ2UsXG4gICAgICAgICAgICAgIHQsXG4gICAgICAgICAgICAgIGhpdGxFeGVjdXRpb25Db250ZXh0UmVmLmN1cnJlbnQsXG4gICAgICAgICAgICAgIGN1cnJlbnRUaHJlYWRJZCxcbiAgICAgICAgICAgICAgeyB1c2VSZXN1bWluZ0ZhbGxiYWNrOiB0cnVlIH1cbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIHVwZGF0ZVN0cmVhbUFjdGl2aXR5KG5vZGVBY3Rpdml0eSlcbiAgICAgICAgICAgIHNldEFjdGl2ZUxvYWRpbmdzKHByZXYgPT4gKHtcbiAgICAgICAgICAgICAgLi4ucHJldixcbiAgICAgICAgICAgICAgW2N1cnJlbnRUaHJlYWRJZF06IG5vZGVBY3Rpdml0eS5tZXNzYWdlLFxuICAgICAgICAgICAgfSkpXG4gICAgICAgICAgfSxcbiAgICAgICAgICBvbkNvbXBsZXRlOiAoXG4gICAgICAgICAgICBmaW5hbENvbnRlbnQ6IHN0cmluZyxcbiAgICAgICAgICAgIHNvdXJjZXM6IGFueSxcbiAgICAgICAgICAgIG1lbW9yeVNlc3Npb25JZDogc3RyaW5nLFxuICAgICAgICAgICAgY3VycmVudFRocmVhZElkOiBzdHJpbmcsXG4gICAgICAgICAgICBhdHRhY2htZW50cz86IGFueVtdIHwgbnVsbCxcbiAgICAgICAgICAgIHN1Z2dlc3Rpb25zPzogc3RyaW5nW10gfCBudWxsLFxuICAgICAgICAgICAgYWdlbnRJZD86IHN0cmluZyB8IG51bGxcbiAgICAgICAgICApID0+IHtcbiAgICAgICAgICAgIGhhbmRsZVN0cmVhbUZpbmlzaChmaW5hbENvbnRlbnQsIHNvdXJjZXMsIG1lbW9yeVNlc3Npb25JZCwgYXR0YWNobWVudHMsIHN1Z2dlc3Rpb25zLCBhZ2VudElkKVxuICAgICAgICAgICAgdXBkYXRlU3RyZWFtQWN0aXZpdHkobnVsbClcbiAgICAgICAgICAgIGhpdGxFeGVjdXRpb25Db250ZXh0UmVmLmN1cnJlbnQgPSBudWxsXG4gICAgICAgICAgICBzZXRBY3RpdmVMb2FkaW5ncyhwcmV2ID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgbmV3TG9hZGluZ3MgPSB7IC4uLnByZXYgfVxuICAgICAgICAgICAgICBkZWxldGUgbmV3TG9hZGluZ3NbY3VycmVudFRocmVhZElkXVxuICAgICAgICAgICAgICByZXR1cm4gbmV3TG9hZGluZ3NcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgfSxcbiAgICAgICAgICBvbkFwcHJvdmFsUmVxdWlyZWQ6IChhcHByb3ZhbFBheWxvYWQ6IGFueSwgYWNjdW11bGF0ZWRDb250ZW50OiBzdHJpbmcsIGN1cnJlbnRUaHJlYWRJZDogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgICAvLyBOZXcgSElUTCBpbnRlcnJ1cHRpb24gZGV0ZWN0ZWQgYWZ0ZXIgcmVzdW1lIChjaGFpbmVkIGFjdGlvbnMpXG4gICAgICAgICAgICB1cGRhdGVTdHJlYW1BY3Rpdml0eShudWxsKVxuICAgICAgICAgICAgaGl0bEV4ZWN1dGlvbkNvbnRleHRSZWYuY3VycmVudCA9IG51bGxcbiAgICAgICAgICAgIHNldEFjdGl2ZUxvYWRpbmdzKHByZXYgPT4ge1xuICAgICAgICAgICAgICBjb25zdCBuZXdMb2FkaW5ncyA9IHsgLi4ucHJldiB9XG4gICAgICAgICAgICAgIGRlbGV0ZSBuZXdMb2FkaW5nc1tjdXJyZW50VGhyZWFkSWRdXG4gICAgICAgICAgICAgIHJldHVybiBuZXdMb2FkaW5nc1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIGhhbmRsZUFwcHJvdmFsUmVxdWlyZWQoYXBwcm92YWxQYXlsb2FkIGFzIEFwcHJvdmFsUmVxdWVzdCwgYWNjdW11bGF0ZWRDb250ZW50KVxuICAgICAgICAgIH0sXG4gICAgICAgICAgb25FcnJvcjogKCkgPT4ge1xuICAgICAgICAgICAgaGFuZGxlU3RyZWFtRXJyb3IoKVxuICAgICAgICAgIH0sXG4gICAgICAgIH0pXG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBoYW5kbGVTdHJlYW1FcnJvcigpXG4gICAgICB9IGZpbmFsbHkge1xuICAgICAgICBpc1Byb2Nlc3NpbmdSZWYuY3VycmVudCA9IGZhbHNlXG4gICAgICB9XG4gICAgfSxcbiAgICBbXG4gICAgICBhdXRoVXNlcixcbiAgICAgIGFnZW50LFxuICAgICAgYWRkTWVzc2FnZSxcbiAgICAgIGhhbmRsZVN0cmVhbUVycm9yLFxuICAgICAgaGFuZGxlU3RyZWFtVXBkYXRlLFxuICAgICAgaGFuZGxlU3RyZWFtRmluaXNoLFxuICAgICAgaGFuZGxlQXBwcm92YWxSZXF1aXJlZCxcbiAgICAgIHVwZGF0ZVN0cmVhbUFjdGl2aXR5LFxuICAgICAgdCxcbiAgICBdXG4gIClcblxuICBjb25zdCBpbml0aWFsaXplQ2hhdCA9IHVzZUNhbGxiYWNrKGFzeW5jICgpID0+IHtcbiAgICBpZiAoIWZpcnN0VGltZVJlZi5jdXJyZW50KSB7XG4gICAgICBmaXJzdFRpbWVSZWYuY3VycmVudCA9IHRydWVcbiAgICB9XG4gICAgaWYgKGluaXRpYWxDaGF0SWQpIHtcbiAgICAgIGF3YWl0IGxvYWRNZXNzYWdlcygpXG4gICAgfSBlbHNlIGlmICh1c2VySW5pdGlhbE1lc3NhZ2UpIHtcbiAgICAgIGNvbnN0IGhhc0luaXRpYWxNZXNzYWdlID0gQm9vbGVhbih1c2VySW5pdGlhbE1lc3NhZ2UubWVzc2FnZT8udHJpbSgpKVxuICAgICAgY29uc3QgaGFzSW5pdGlhbEF0dGFjaG1lbnRzID0gQm9vbGVhbih1c2VySW5pdGlhbE1lc3NhZ2UuYXR0YWNobWVudHM/Lmxlbmd0aClcbiAgICAgIGNvbnN0IGhhc0luaXRpYWxGYXEgPSBCb29sZWFuKHVzZXJJbml0aWFsTWVzc2FnZS5mYXFJZClcbiAgICAgIGNvbnN0IGhhc0luaXRpYWxGdWEgPSBCb29sZWFuKHVzZXJJbml0aWFsTWVzc2FnZS5mdWFJZClcbiAgICAgIGNvbnN0IGhhc0luaXRpYWxTYyA9IEJvb2xlYW4odXNlckluaXRpYWxNZXNzYWdlLnNjSWQpXG5cbiAgICAgIGlmICghaGFzSW5pdGlhbE1lc3NhZ2UgJiYgIWhhc0luaXRpYWxBdHRhY2htZW50cyAmJiAhaGFzSW5pdGlhbEZhcSAmJiAhaGFzSW5pdGlhbEZ1YSAmJiAhaGFzSW5pdGlhbFNjKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBjb25zdCBoaXN0b3J5ID0gbWVzc2FnZXNSZWYuY3VycmVudC5tYXAoaGlzdG9yeU1lc3NhZ2UgPT4gKHtcbiAgICAgICAgY29udGVudDogaGlzdG9yeU1lc3NhZ2UubWVzc2FnZSxcbiAgICAgICAgcm9sZTogaGlzdG9yeU1lc3NhZ2UudXNlci5pZCA9PT0gYXV0aFVzZXIuaWQudG9TdHJpbmcoKSA/IENoYXRIaXN0b3J5Um9sZS5VU0VSIDogQ2hhdEhpc3RvcnlSb2xlLkFTU0lTVEFOVCxcbiAgICAgIH0pKVxuXG4gICAgICBhc2tNYWlhKHtcbiAgICAgICAgbWVzc2FnZTogdXNlckluaXRpYWxNZXNzYWdlLm1lc3NhZ2UsXG4gICAgICAgIGhpc3RvcnksXG4gICAgICAgIHByb2plY3RJZDogcHJvamVjdD8uaWQgfHwgbnVsbCxcbiAgICAgICAgbGFuZzogYXV0aFVzZXIubGFuZyxcbiAgICAgICAgdXNlcklkOiBhdXRoVXNlci5pZC50b1N0cmluZygpLFxuICAgICAgICBmaXJzdE5hbWU6IGF1dGhVc2VyLmZpcnN0TmFtZSxcbiAgICAgICAgbGFzdE5hbWU6IGF1dGhVc2VyLmxhc3ROYW1lLFxuICAgICAgICBjb21wYW55SWQ6IGF1dGhVc2VyLmNvbXBhbnlfaWQudG9TdHJpbmcoKSxcbiAgICAgICAgY2hhdElkOiBjdXJyZW50Q2hhdElkLmN1cnJlbnQsXG4gICAgICAgIG1lc3NhZ2VJZDogY3VycmVudE1lc3NhZ2VJZC5jdXJyZW50LFxuICAgICAgICBhZ2VudE5hbWU6IGFnZW50Py5uYW1lISxcbiAgICAgICAgYWdlbnRJZDogYWdlbnQ/LmlkISxcbiAgICAgICAgaXNXZWJTZWFyY2hBY3RpdmU6IGlzV2ViU2VhcmNoQWN0aXZlUmVmLmN1cnJlbnQsXG4gICAgICAgIGlzRGVlcFNlYXJjaEFjdGl2ZTogaXNEZWVwU2VhcmNoQWN0aXZlUmVmLmN1cnJlbnQsXG4gICAgICAgIC4uLihwcm9qZWN0Py5mZWVJZCAhPSBudWxsID8geyBmZWVJZDogTnVtYmVyKHByb2plY3QuZmVlSWQpIH0gOiB7fSksXG4gICAgICAgIC4uLihjbGllbnQ/LmlkXG4gICAgICAgICAgPyB7IGNsaWVudElkOiBjbGllbnQuaWQgfVxuICAgICAgICAgIDogcHJvamVjdD8uY2xpZW50SWQgIT0gbnVsbFxuICAgICAgICAgICAgPyB7IGNsaWVudElkOiBOdW1iZXIocHJvamVjdC5jbGllbnRJZCkgfVxuICAgICAgICAgICAgOiBwcm9qZWN0Py5jbGllbnQ/LmlkXG4gICAgICAgICAgICAgID8geyBjbGllbnRJZDogcHJvamVjdC5jbGllbnQuaWQgfVxuICAgICAgICAgICAgICA6IHt9KSxcbiAgICAgICAgLi4uKHByb2plY3Q/Lm5hbWUgPyB7IHByb2plY3ROYW1lOiBwcm9qZWN0Lm5hbWUgfSA6IHt9KSxcbiAgICAgICAgLi4uKHByb2plY3Q/LmNsaWVudD8ubmFtZVxuICAgICAgICAgID8geyBjbGllbnROYW1lOiBwcm9qZWN0LmNsaWVudC5uYW1lIH1cbiAgICAgICAgICA6IGNsaWVudD8ubmFtZVxuICAgICAgICAgICAgPyB7IGNsaWVudE5hbWU6IGNsaWVudC5uYW1lIH1cbiAgICAgICAgICAgIDoge30pLFxuICAgICAgICAuLi4odGFzaz8uaWQgIT0gbnVsbCA/IHsgdGFza0lkOiBOdW1iZXIodGFzay5pZCksIC4uLih0YXNrLm5hbWUgPyB7IHRhc2tOYW1lOiB0YXNrLm5hbWUgfSA6IHt9KSB9IDoge30pLFxuICAgICAgICAuLi4odXNlckluaXRpYWxNZXNzYWdlLmF0dGFjaG1lbnRzID8geyBhdHRhY2htZW50czogdXNlckluaXRpYWxNZXNzYWdlLmF0dGFjaG1lbnRzIH0gOiB7fSksXG4gICAgICAgIC4uLih1c2VySW5pdGlhbE1lc3NhZ2UuZmFxSWQgPyB7IGZhcUlkOiB1c2VySW5pdGlhbE1lc3NhZ2UuZmFxSWQgfSA6IHt9KSxcbiAgICAgICAgLi4uKHVzZXJJbml0aWFsTWVzc2FnZS5hZ2VudFN1Z2dlc3Rpb25JZCA/IHsgYWdlbnRTdWdnZXN0aW9uSWQ6IHVzZXJJbml0aWFsTWVzc2FnZS5hZ2VudFN1Z2dlc3Rpb25JZCB9IDoge30pLFxuICAgICAgICAuLi4odXNlckluaXRpYWxNZXNzYWdlLmZ1YUlkID8geyBmdWFJZDogdXNlckluaXRpYWxNZXNzYWdlLmZ1YUlkIH0gOiB7fSksXG4gICAgICAgIC4uLih1c2VySW5pdGlhbE1lc3NhZ2Uuc2NJZCA/IHsgc2NJZDogdXNlckluaXRpYWxNZXNzYWdlLnNjSWQgfSA6IHt9KSxcbiAgICAgICAgLi4uKGFnZW50Py5lbnRpdHkgIT0gbnVsbCA/IHsgYWdlbnRFbnRpdHk6IGFnZW50LmVudGl0eSB9IDoge30pLFxuICAgICAgICAuLi4oYnVpbGRDb250ZXh0TWVzc2FnZSh1c2VySW5pdGlhbE1lc3NhZ2UubWVudGlvbnMpXG4gICAgICAgICAgPyB7IGNvbnRleHRNZXNzYWdlOiBidWlsZENvbnRleHRNZXNzYWdlKHVzZXJJbml0aWFsTWVzc2FnZS5tZW50aW9ucykgfVxuICAgICAgICAgIDoge30pLFxuICAgICAgICAuLi4odXNlckluaXRpYWxNZXNzYWdlLmNvbnRleHREYXRhID8geyBjb250ZXh0RGF0YTogdXNlckluaXRpYWxNZXNzYWdlLmNvbnRleHREYXRhIH0gOiB7fSksXG4gICAgICB9KVxuICAgIH1cbiAgfSwgW1xuICAgIGluaXRpYWxDaGF0SWQsXG4gICAgdXNlckluaXRpYWxNZXNzYWdlLFxuICAgIHByb2plY3QsXG4gICAgY2xpZW50LFxuICAgIHRhc2ssXG4gICAgYXV0aFVzZXIsXG4gICAgYWdlbnQsXG4gICAgYXNrTWFpYSxcbiAgICBpc1dlYlNlYXJjaEFjdGl2ZSxcbiAgICBpc0RlZXBTZWFyY2hBY3RpdmUsXG4gIF0pXG5cbiAgY29uc3QgcmVzZXRDaGF0ID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGFib3J0U3RyZWFtU2lsZW50bHlSZWYuY3VycmVudCgpXG4gICAgY3VycmVudE1lc3NhZ2VJZC5jdXJyZW50ID0gdXVpZHY0KClcbiAgICBjdXJyZW50VXNlclF1ZXN0aW9uLmN1cnJlbnQgPSBudWxsXG4gICAgY3VycmVudENoYXRJZC5jdXJyZW50ID0gdXVpZHY0KClcbiAgICByZXBvcnRlZEV2ZW50LmN1cnJlbnQgPSBmYWxzZVxuICAgIHN0cmVhbWluZ1BsYWNlaG9sZGVySWRSZWYuY3VycmVudCA9IG51bGxcbiAgICBhY3RpdmVTdHJlYW1DaGF0SWRSZWYuY3VycmVudCA9IG51bGxcbiAgICBzdHJlYW1pbmdTdG9yZS5jbGVhcigpXG4gIH0sIFtdKVxuXG4gIGNvbnN0IHN0b3BHZW5lcmF0aW9uID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIHN0b3BTdHJlYW1pbmcoKVxuICAgIGlzUHJvY2Vzc2luZ1JlZi5jdXJyZW50ID0gZmFsc2VcbiAgfSwgW3N0b3BTdHJlYW1pbmddKVxuXG4gIHJldHVybiB7XG4gICAgbWVzc2FnZXMsXG4gICAgbG9hZGluZ01lc3NhZ2VzLFxuICAgIGlzTG9hZGluZ01vcmVNZXNzYWdlcyxcbiAgICB3YWl0aW5nUmVzcG9uc2UsXG4gICAgaXNXcml0aW5nLFxuICAgIGxvYWRpbmdNZXNzYWdlLFxuICAgIHN0cmVhbUFjdGl2aXR5LFxuICAgIGFjdGl2ZUxvYWRpbmdzLFxuICAgIGN1cnJlbnRQcm9qZWN0LFxuICAgIGN1cnJlbnRDaGF0SWQ6IGN1cnJlbnRDaGF0SWQuY3VycmVudCxcbiAgICBjdXJyZW50TWVzc2FnZUlkOiBjdXJyZW50TWVzc2FnZUlkLmN1cnJlbnQsXG5cbiAgICBzZW5kTWVzc2FnZSxcbiAgICBjaGFuZ2VQcm9qZWN0LFxuICAgIGhhbmRsZUZlZWRiYWNrLFxuICAgIGhhbmRsZUFwcHJvdmFsRGVjaXNpb24sXG4gICAgaGFuZGxlU2Nyb2xsLFxuICAgIGluaXRpYWxpemVDaGF0LFxuICAgIHJlc2V0Q2hhdCxcbiAgICBzdG9wR2VuZXJhdGlvbixcblxuICAgIGlzRGlzYWJsZWQ6IHdhaXRpbmdSZXNwb25zZSB8fCBsb2FkaW5nTWVzc2FnZXMsXG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVNBLFdBQVcsRUFBRUMsTUFBTSxFQUFFQyxTQUFTLEVBQUVDLFFBQVEsUUFBUSxPQUFPO0FBQ2hFLFNBQVNDLEVBQUUsSUFBSUMsTUFBTSxRQUFRLE1BQU07QUFDbkMsU0FBU0MsZUFBZSxRQUFRLG9CQUFvQjtBQUNwRCxTQUFTQyxxQkFBcUIsUUFBUSwwQkFBMEI7QUFDaEUsU0FBU0MsSUFBSSxRQUFRLFNBQVM7QUFHOUIsU0FBU0MsT0FBTyxRQUFpQix3QkFBd0I7QUFDekQsU0FBU0MsZ0JBQWdCLFFBQVEsOEJBQThCO0FBQy9ELFNBQVNDLE1BQU0sRUFBRUMsUUFBUSxRQUFRLGFBQWE7QUFDOUMsT0FBT0MsSUFBSSxNQUFNLHFCQUFxQjtBQUN0QyxTQUFTQyxRQUFRLFFBQVEsNERBQTREO0FBQ3JGLFNBQXVDQyxlQUFlLFFBQXdDLGtCQUFrQjtBQUNoSCxTQUF5Q0MsbUJBQW1CLFFBQVEsNEJBQTRCO0FBQ2hHLFNBQVNDLGtDQUFrQyxRQUFRLHNDQUFzQztBQUd6RixTQUFTQyxXQUFXLFFBQVEsZ0JBQWdCO0FBQzVDLFNBQVNDLGlCQUFpQixRQUFRLHNCQUFzQjtBQUN4RCxTQUFTQyxzQkFBc0IsUUFBUSwwQkFBMEI7QUFDakUsU0FBU0MsZ0JBQWdCLFFBQVEsNkNBQTZDO0FBQzlFLFNBQVNDLHVCQUF1QixFQUFFQyx5QkFBeUIsUUFBUSwyQkFBMkI7QUFFOUYsU0FDRUMseUJBQXlCLEVBQ3pCQyx3QkFBd0IsRUFDeEJDLDZCQUE2QixFQUM3QkMsZ0NBQWdDLFFBRTNCLG9DQUFvQztBQUMzQyxTQUFTQyxjQUFjLFFBQVEs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
|
|
1463
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VDYWxsYmFjayIsInVzZVJlZiIsInVzZUVmZmVjdCIsInVzZVN0YXRlIiwidjQiLCJ1dWlkdjQiLCJ1c2VDaGF0TWVzc2FnZXMiLCJ1c2VPcmNoZXN0cmF0b3JTdHJlYW0iLCJ1c2VUIiwidXNlVXNlciIsInVzZUdsb2JhbENvbnRleHQiLCJFVkVOVFMiLCJ1c2VFdmVudCIsIm1haWEiLCJGZWVkYmFjayIsIkNoYXRIaXN0b3J5Um9sZSIsImJ1aWxkQ29udGV4dE1lc3NhZ2UiLCJmb3JtYXRRdWlja0FjdGlvbk1lc3NhZ2VGb3JEaXNwbGF5IiwidXNlUHJvamVjdHMiLCJ1c2VUYWJUYXNrRGVmYXVsdCIsIlRBU0tfVVJMX1JFR0VYX1BBVFRFUk4iLCJmZXRjaEFnZW50RGV0YWlsIiwiYnVpbGRIaXRsQWN0aW9uVHlwZUxpc3QiLCJnZXRIaXRsQW5hbHl0aWNzQWdlbnRUeXBlIiwiZ2V0VGhpbmtpbmdMb2FkaW5nTWVzc2FnZSIsImdldFdyaXRpbmdTdHJlYW1BY3Rpdml0eSIsInJlc29sdmVIaXRsTm9kZVN0cmVhbUFjdGl2aXR5IiwicmVzb2x2ZUluaXRpYWxIaXRsU3RyZWFtQWN0aXZpdHkiLCJzdHJlYW1pbmdTdG9yZSIsImlzQ29tcGxldGVMaWtlU3NlUGF5bG9hZCIsIm1lcmdlU3RyZWFtQ2h1bmsiLCJub3JtYWxpemVTZW5kTWVzc2FnZUFyZ3MiLCJhdHRhY2htZW50c09yT3B0aW9ucyIsIl9vcHRpb25zJGF0dGFjaG1lbnRzIiwiQXJyYXkiLCJpc0FycmF5IiwiYXR0YWNobWVudHMiLCJvcHRpb25zIiwibm9ybWFsaXplQXNzaXN0YW50QXR0YWNobWVudHMiLCJyYXdBdHRhY2htZW50cyIsImZpbHRlciIsImF0dGFjaG1lbnQiLCJfdHlwZW9mIiwibWFwIiwiaW5kZXgiLCJuYW1lIiwidHJpbSIsImNvbmNhdCIsInR5cGUiLCJtaW1lVHlwZSIsIm1pbWVfdHlwZSIsImZ1bGxGaWxlTmFtZSIsImluY2x1ZGVzIiwibnVtZXJpY1NpemUiLCJzaXplIiwiTnVtYmVyIiwiaXNGaW5pdGUiLCJmaWxlIiwiRmlsZSIsImlkIiwidXJsX29yaWdpbmFsIiwidW5kZWZpbmVkIiwidXJsX3RodW1ibmFpbCIsInVybF9maWxlIiwicm9sZSIsImV4dHJhY3RUYXNrSWRzRnJvbVBlbmRpbmdBY3Rpb25zQXJncyIsInBlbmRpbmdBY3Rpb25zIiwiaWRzIiwicHVzaElkIiwicmF3IiwibiIsInBhcnNlSW50IiwiU3RyaW5nIiwiaXNOYU4iLCJwdXNoIiwiZm9yRWFjaCIsImFjdGlvbiIsIl9yZWMkdGFza19pZCIsImFyZ3MiLCJ0b29sX2FyZ3MiLCJyZWMiLCJ0YXNrX2lkIiwidGFza19pZHMiLCJ0YXNrcyIsInQiLCJfdHJlYyR0YXNrX2lkIiwidHJlYyIsImV4dHJhY3RUYXNrSWRzRnJvbURlbGV0ZVBlbmRpbmdBY3Rpb25zIiwidG9vbF9uYW1lIiwiX3JlYyR0YXNrX2lkMiIsImxpc3QiLCJ0aWQiLCJleHRyYWN0QWdlbnRJZEZyb21FZGl0QWdlbnRQZW5kaW5nQWN0aW9ucyIsIl9yZWMkYWdlbnRfaWQiLCJlZGl0QWN0aW9uIiwiZmluZCIsImEiLCJ0b0xvd2VyQ2FzZSIsImFnZW50X2lkIiwiYWdlbnRJZCIsImV4dHJhY3RBZ2VudElkRnJvbVBlbmRpbmdBY3Rpb25zQnlUb29sTmFtZSIsInRvb2xOYW1lIiwiX3JlZiIsIl9yZWMkYWdlbnRfaWQyIiwiZXh0cmFjdFRhc2tJZHNGcm9tQXNzaXN0YW50RGVsZXRpb25UZXh0IiwidGV4dCIsImxhYmVsZWQiLCJtYXRjaCIsImJvbGQiLCJ1c2VTdGFibGVDYWxsYmFja3MiLCJhdXRoVXNlciIsImN1cnJlbnRVc2VyIiwidG9TdHJpbmciLCJmaXJzdE5hbWUiLCJhdmF0YXIiLCJwaWN0dXJlIiwiY3VycmVudCIsInBhcnNlU1NFTGluZSIsImxpbmUiLCJfbGluZSRzcGxpdCIsInNwbGl0IiwiX2xpbmUkc3BsaXQyIiwiX3NsaWNlZFRvQXJyYXkiLCJldmVudExpbmUiLCJkYXRhTGluZSIsImV2ZW50VHlwZSIsInJlcGxhY2UiLCJkYXRhU3RyIiwiZGF0YSIsIkpTT04iLCJwYXJzZSIsInBhcnNlRXJyb3IiLCJjb25zb2xlIiwiZXJyb3IiLCJwcm9jZXNzU1NFU3RyZWFtIiwiX3JlZjIiLCJfYXN5bmNUb0dlbmVyYXRvciIsIl9yZWdlbmVyYXRvclJ1bnRpbWUiLCJtYXJrIiwiX2NhbGxlZSIsInJlc3BvbnNlIiwidGhyZWFkSWQiLCJjYWxsYmFja3MiLCJfcmVzcG9uc2UkYm9keSIsInJlYWRlciIsImRlY29kZXIiLCJidWZmZXIiLCJhY2N1bXVsYXRlZENvbnRlbnQiLCJpc1N0cmVhbUNvbXBsZXRlIiwiaGFuZGxlTGluZSIsIl95aWVsZCRyZWFkZXIkcmVhZCIsImRvbmUiLCJ2YWx1ZSIsImxpbmVzIiwiaSIsIndyYXAiLCJfY29udGV4dCIsInByZXYiLCJuZXh0IiwiX2hhbmRsZUxpbmUiLCJwYXJzZWQiLCJldmVudERhdGEiLCJvblRoaW5raW5nIiwiY29udGVudCIsIm9uVG9rZW4iLCJfZXZlbnREYXRhJGFnZW50X2lkIiwiZmluYWxDb250ZW50Iiwic291cmNlcyIsIm1lbW9yeVNlc3Npb25JZCIsIm1lbW9yeV9zZXNzaW9uX2lkIiwic3VnZ2VzdGlvbnMiLCJzdWdnZXN0X3JlcGx5IiwiYWdlbnRJZFJhdyIsImNvbXBsZXRlZEFnZW50SWQiLCJvbkNvbXBsZXRlIiwibWVzc2FnZSIsIm9uTm9kZSIsIl9ldmVudERhdGEkYWdlbnRfaWQyIiwiX2NhbGxiYWNrcyRvbkFwcHJvdmFsIiwib25BcHByb3ZhbFJlcXVpcmVkIiwiY2FsbCIsIm9uRXJyb3IiLCJib2R5IiwiZ2V0UmVhZGVyIiwiRXJyb3IiLCJUZXh0RGVjb2RlciIsInJlYWQiLCJzZW50IiwiYWJydXB0IiwiZGVjb2RlIiwic3RyZWFtIiwicG9wIiwibGVuZ3RoIiwic3RvcCIsIl94IiwiX3gyIiwiX3gzIiwiYXBwbHkiLCJhcmd1bWVudHMiLCJ1c2VDaGF0TWFuYWdlciIsIl9yZWYzIiwiaW5pdGlhbENoYXRJZCIsImNoYXRJZCIsInVzZXJJbml0aWFsTWVzc2FnZSIsIl9yZWYzJGFnZW50cyIsImFnZW50cyIsIl91c2VUIiwiX3VzZUdsb2JhbENvbnRleHQiLCJwcm9qZWN0Iiwic2V0UHJvamVjdCIsImNsaWVudCIsInNldENsaWVudCIsInRhc2siLCJzZXRUYXNrIiwiYWdlbnQiLCJpc1dlYlNlYXJjaEFjdGl2ZSIsImlzRGVlcFNlYXJjaEFjdGl2ZSIsImNoaXBzUHJvamVjdCIsInNldENoaXBzUHJvamVjdCIsImV2ZW50IiwiX3VzZVByb2plY3RzIiwiZmV0Y2hQcm9qZWN0cyIsIl91c2VTdGFibGVDYWxsYmFja3MiLCJfdXNlVGFiVGFza0RlZmF1bHQiLCJnZXRUYWJUYXNrRGVmYXVsdCIsImN1cnJlbnRNZXNzYWdlSWQiLCJjdXJyZW50VXNlclF1ZXN0aW9uIiwiY3VycmVudENoYXRJZCIsInJlcG9ydGVkRXZlbnQiLCJtZXNzYWdlc1JlZiIsImxhc3RNYW51YWxBcHByb3ZhbFJlZiIsImhpdGxFeGVjdXRpb25Db250ZXh0UmVmIiwiaXNQcm9jZXNzaW5nUmVmIiwiZmlyc3RUaW1lUmVmIiwic3RyZWFtaW5nUGxhY2Vob2xkZXJJZFJlZiIsImFjdGl2ZVN0cmVhbUNoYXRJZFJlZiIsImFib3J0U3RyZWFtU2lsZW50bHlSZWYiLCJjbGVhclN0cmVhbVVpUmVmIiwiX3VzZVN0YXRlIiwiX3VzZVN0YXRlMiIsImFjdGl2ZUxvYWRpbmdzIiwic2V0QWN0aXZlTG9hZGluZ3MiLCJpc1dlYlNlYXJjaEFjdGl2ZVJlZiIsImlzRGVlcFNlYXJjaEFjdGl2ZVJlZiIsIl91c2VDaGF0TWVzc2FnZXMiLCJsb2FkaW5nTWVzc2FnZXMiLCJtZXNzYWdlcyIsImlzTG9hZGluZ01vcmVNZXNzYWdlcyIsImxvYWRNZXNzYWdlcyIsImFkZE1lc3NhZ2UiLCJyZW1vdmVNZXNzYWdlIiwiaGFuZGxlU2Nyb2xsIiwiY3VzdG9tRXZlbnQiLCJDdXN0b21FdmVudCIsImRldGFpbCIsImRvY3VtZW50IiwiZGlzcGF0Y2hFdmVudCIsImNsZWFyIiwiaXNDbG9uZUFnZW50IiwibGFzdE1zZ1dpdGhQcm9qZWN0IiwibXNnIiwicHJvamVjdElkIiwiYXQiLCJfcmVmNCIsInByb2plY3ROYW1lIiwidGhlbiIsInByb2plY3RzIiwiZm91bmQiLCJwIiwiX2ZvdW5kJGNsaWVudCIsImNsaWVudE5hbWUiLCJsYXN0TXNnV2l0aENsaWVudCIsImNsaWVudElkIiwiX3JlZjUiLCJtc2dDbGllbnRJZCIsIm1zZ0NsaWVudE5hbWUiLCJoYW5kbGVTdHJlYW1FcnJvciIsImVycm9yTWVzc2FnZSIsImVycm9yUmF3TWVzc2FnZSIsIl9lcnJvclJhd01lc3NhZ2UkbWF0YyIsIl9lcnJvclJhd01lc3NhZ2UkbWF0YzIiLCJ0ZW1wTWVzc2FnZUlkIiwidXNlZCIsImlzRXJyb3IiLCJkYXRlIiwiRGF0ZSIsInVzZXIiLCJBU1NJU1RBTlQiLCJoYW5kbGVTdHJlYW1VcGRhdGUiLCJzdGFydCIsInNldFRleHQiLCJoYW5kbGVTdHJlYW1GaW5pc2giLCJfcmVmNiIsIl9jYWxsZWUyIiwicmVzb2x2ZWRDb250ZXh0IiwiX3ByZXZpb3VzTWVzc2FnZSRhcHByIiwiX3dpbmRvdyR0YXNrUGFuZWwiLCJfY3JlYXRlQWdlbnRGb2xsb3dVcCIsIl9lZGl0QWdlbnRGb2xsb3dVcCIsInRhc2tVcmxSZWdleCIsIm1hdGNoZXMiLCJjb250ZW50VG9BZGQiLCJwcmV2aW91c01lc3NhZ2UiLCJoYXNBcHByb3ZhbEluUHJldmlvdXNNZXNzYWdlIiwiVEFTS19DUkVBVElPTl9UT09MUyIsIlRBU0tfRURJVF9UT09MUyIsIlRBU0tfREVMRVRFX1RPT0xTIiwid2FzVGFza0NyZWF0aW9uIiwid2FzVGFza0VkaXQiLCJ3YXNUYXNrRGVsZXRlIiwid2FzQ3JlYXRlQWdlbnRBcHByb3ZlZCIsIndhc0NvbmZpZ3VyZUFnZW50QWNjZXNzQXBwcm92ZWQiLCJjcmVhdGVBZ2VudEZvbGxvd1VwIiwiY29uZmlndXJlZEFnZW50SWQiLCJ3YXNFZGl0QWdlbnRBcHByb3ZlZCIsImVkaXRBZ2VudEZvbGxvd1VwIiwiZnJvbVN0cmVhbSIsImZyb21BcmdzIiwicmVzb2x2ZWRBZ2VudElkIiwidGFza0lkc0Zyb21VcmxzIiwidGFza0lkc0Zyb21EZWxldGVBcHByb3ZhbCIsInRhc2tJZHNGcm9tRGVsZXRpb25UZXh0IiwidGFza0lkc0ZvckRhc2hib2FyZCIsInNob3VsZFN5bmNEYXNoYm9hcmQiLCJ0YXNrSWRzIiwidGFiIiwidGFiU2VnbWVudCIsImxhc3RQcm9qZWN0TWVzc2FnZSIsImNvbnRleHRQcm9qZWN0SWRSYXciLCJjb250ZXh0UHJvamVjdElkIiwicGF0aE1hdGNoIiwicm91dGVQcm9qZWN0SWQiLCJpc09uUHJvamVjdFJvdXRlIiwiX3dpbmRvdyRuZXdQcm9qZWN0RGFzIiwiX3dpbmRvdyRuZXdQcm9qZWN0RGFzMiIsIl93aW5kb3ckbmV3UHJvamVjdERhczMiLCJfd2luZG93JG5ld1Byb2plY3REYXM0IiwiX3dpbmRvdyRuZXdQcm9qZWN0RGFzNSIsIl93aW5kb3ckbmV3UHJvamVjdERhczYiLCJvcGVuVGFza1BhbmVsSWQiLCJtYW51YWxBcHByb3ZhbCIsIm1hbnVhbFdhc1Rhc2tFZGl0IiwibWFudWFsV2FzVGFza0RlbGV0ZSIsIl9tYW51YWxBcHByb3ZhbCR0b29sQSIsIm1hbnVhbFBzZXVkb0FjdGlvbiIsImFmZmVjdGVkVGFza0lkcyIsIl93aW5kb3ckdGFza1BhbmVsMiIsIl93aW5kb3ckdGFza1BhbmVsMiRyZSIsIl9jb250ZXh0MiIsIlJlZ0V4cCIsIl90b0NvbnN1bWFibGVBcnJheSIsIm1hdGNoQWxsIiwibSIsImFwcHJvdmFsIiwicGVuZGluZ19hY3Rpb25zIiwic29tZSIsImFwcHJvdmFsU3RhdHVzIiwid2luZG93IiwiTUFJQV9DSEFUX0FJX0ZFQVRVUkVfQUNDRVNTX01VTFRJX0FHRU5UUyIsImFpQ2hhdEhpdGxPcHRpb24iLCJfb2JqZWN0U3ByZWFkIiwiYWdlbnRfdHlwZSIsImFjdGlvbl90eXBlIiwiZGVjaXNpb24iLCJvcHRpb24iLCJjcmVhdGVkX2FnZW50X2lkIiwidXJsIiwibG9jYXRpb24iLCJwYXRobmFtZSIsIm5ld1Byb2plY3REYXNoYm9hcmQiLCJhZGRFeGlzdGluZ1Rhc2tUb0Rhc2hib2FyZCIsImVkaXRFeGlzdGluZ1Rhc2tJbkRhc2hib2FyZCIsImRlbGV0ZUV4aXN0aW5nVGFza0Zyb21EYXNoYm9hcmQiLCJ0YXNrUGFuZWwiLCJ0YXNrSWQiLCJ0b29sQXJncyIsInJlZmV0Y2hUYXNrIiwicHJvamVjdF9pZCIsInByb2plY3RfbmFtZSIsImNsaWVudF9uYW1lIiwiY2xpZW50X2lkIiwiX2ZvdW5kJGNsaWVudDIiLCJjaGF0QWdlbnQiLCJlcnIiLCJfeDQiLCJfeDUiLCJfeDYiLCJfeDciLCJfeDgiLCJfeDkiLCJfeDAiLCJoYW5kbGVTdHJlYW1TdG9wIiwiaXNGcm9udGVuZENhbmNlbGxlZCIsInNldFRpbWVvdXQiLCJoYW5kbGVBcHByb3ZhbFJlcXVpcmVkIiwiX3JlZjciLCJfYXBwcm92YWxBbnkkcmVzb2x2ZWQiLCJfYXBwcm92YWxBbnkkc3ViYWdlbnQiLCJfYXBwcm92YWwkcGVuZGluZ19hY3QiLCJhcHByb3ZhbEFueSIsInJjIiwicmVzb2x2ZWRfY29udGV4dCIsInN1YmFnZW50IiwiX2ZvdW5kJGNsaWVudDMiLCJoaXRsQ29udGV4dCIsIm1lc3NhZ2VJZCIsIm9yaWdpbmFsX3RocmVhZF9pZCIsIm1lc3NhZ2VUZXh0IiwidGhyZWFkSWRzIiwidGhyZWFkX2lkIiwibWFudWFsX2FwcHJvdmFsX2RldGVjdGVkIiwiX2FwcHJvdmFsJHBlbmRpbmdfYWN0MiIsIl9yZWY4IiwiX3Rvb2xfbmFtZSIsIl90b29sX2FyZ3MiLCJmaXJzdEFjdGlvbiIsIl91c2VPcmNoZXN0cmF0b3JTdHJlYSIsIm9uU3RyZWFtVXBkYXRlIiwib25GaW5pc2hTdHJlYW0iLCJvblN0b3AiLCJhc2tNYWlhIiwid2FpdGluZ1Jlc3BvbnNlIiwiaXNMb2FkaW5nIiwiaXNXcml0aW5nIiwibG9hZGluZ01lc3NhZ2UiLCJzdHJlYW1BY3Rpdml0eSIsInVwZGF0ZVN0cmVhbUFjdGl2aXR5Iiwic3RvcFN0cmVhbWluZyIsImFib3J0U3RyZWFtU2lsZW50bHkiLCJjdXJyZW50UHJvamVjdCIsInNlbmRNZXNzYWdlIiwiX3JlZjkiLCJfY2FsbGVlMyIsImZhcUlkIiwiYWdlbnRTdWdnZXN0aW9uSWQiLCJtZW50aW9ucyIsImZ1YUlkIiwic2NJZCIsIl9tZXNzYWdlc1JlZiRjdXJyZW50IiwiX3Byb2plY3QkY2xpZW50IiwiX25vcm1hbGl6ZVNlbmRNZXNzYWdlIiwiZWZmZWN0aXZlTWVudGlvbnMiLCJjb250ZXh0TWVzc2FnZSIsInBheWxvYWRGdWFJZCIsInBheWxvYWRTY0lkIiwicGF5bG9hZENvbnRleHREYXRhIiwiZGlzcGxheU1lc3NhZ2UiLCJuZXdNZXNzYWdlSWQiLCJsYXN0TWVzc2FnZVdpdGhQcm9qZWN0IiwiY3VycmVudEFnZW50RnJvbU1lc3NhZ2VzIiwic3RyZWFtaW5nUGxhY2Vob2xkZXJJZCIsImZpbmFsTWVzc2FnZSIsIl9vcHRpb25zJHByb2plY3RDaGFuZyIsImhpc3RvcnkiLCJsYXN0TWVzc2FnZVByb2plY3RJZCIsImNoaXBzUHJvamVjdElkIiwicHJvamVjdFRvUmVxdWVzdCIsInBheWxvYWRGYXFJZCIsInBheWxvYWRBZ2VudFN1Z2dlc3Rpb25JZCIsInBheWxvYWREYXRhIiwiX2NvbnRleHQzIiwiY29udGV4dERhdGEiLCJwbUFpVHlwZWRUZXh0IiwiVVNFUiIsInByb2plY3RDaGFuZ2VkIiwiaW5jb21lVHlwZSIsImhpc3RvcnlNZXNzYWdlIiwibGFuZyIsInVzZXJJZCIsImxhc3ROYW1lIiwiY29tcGFueUlkIiwiY29tcGFueV9pZCIsImFnZW50TmFtZSIsImZlZUlkIiwidGFza05hbWUiLCJlbnRpdHkiLCJhZ2VudEVudGl0eSIsImFnZW50VHlwZSIsIl94MSIsIl94MTAiLCJfeDExIiwiX3gxMiIsIl94MTMiLCJfeDE0IiwiX3gxNSIsImNoYW5nZVByb2plY3QiLCJoYW5kbGVGZWVkYmFjayIsIl9yZWYwIiwiX2NhbGxlZTQiLCJmZWVkYmFja1Byb3AiLCJjaGF0TWVzc2FnZUlkIiwiX2NvbnRleHQ0IiwiQ2hhdHMiLCJ3YXNIZWxwZnVsQ2hhdCIsIlRIVU1CU19VUCIsIndhc0hlbHBmdWwiLCJfeDE2IiwiX3gxNyIsImhhbmRsZUFwcHJvdmFsRGVjaXNpb24iLCJfcmVmMSIsIl9jYWxsZWU1IiwiZWRpdGVkQWN0aW9ucyIsIm1lc3NhZ2VXaXRoQXBwcm92YWwiLCJsb2FkaW5nS2V5IiwiaW5pdGlhbEFjdGl2aXR5IiwiZXhpc3RpbmdNZXNzYWdlIiwibmV3U3RhdHVzIiwiX3QiLCJfY29udGV4dDUiLCJfbSRhcHByb3ZhbCIsIl9kZWZpbmVQcm9wZXJ0eSIsIk9yY2hlc3RyYXRvciIsImNvbnRpbnVlVGhyZWFkIiwic2Vzc2lvbklkIiwic2Vzc2lvbl9pZCIsIm9rIiwiYWN0aXZpdHkiLCJwaGFzZSIsImN1cnJlbnRUaHJlYWRJZCIsIm5vZGVBY3Rpdml0eSIsInVzZVJlc3VtaW5nRmFsbGJhY2siLCJuZXdMb2FkaW5ncyIsImFwcHJvdmFsUGF5bG9hZCIsImZpbmlzaCIsIl94MTgiLCJfeDE5IiwiX3gyMCIsImluaXRpYWxpemVDaGF0IiwiX2NhbGxlZTYiLCJfdXNlckluaXRpYWxNZXNzYWdlJG0iLCJfdXNlckluaXRpYWxNZXNzYWdlJGEiLCJfcHJvamVjdCRjbGllbnQyIiwiX3Byb2plY3QkY2xpZW50MyIsImhhc0luaXRpYWxNZXNzYWdlIiwiaGFzSW5pdGlhbEF0dGFjaG1lbnRzIiwiaGFzSW5pdGlhbEZhcSIsImhhc0luaXRpYWxGdWEiLCJoYXNJbml0aWFsU2MiLCJfY29udGV4dDYiLCJCb29sZWFuIiwicmVzZXRDaGF0Iiwic3RvcEdlbmVyYXRpb24iLCJpc0Rpc2FibGVkIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2hvb2tzL3VzZUNoYXRNYW5hZ2VyL3VzZUNoYXRNYW5hZ2VyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIHJhZGl4ICovXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1uZXN0ZWQtdGVybmFyeSAqL1xuLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLW5vbi1udWxsLWFzc2VydGVkLW9wdGlvbmFsLWNoYWluICovXG4vKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55ICovXG5pbXBvcnQgeyB1c2VDYWxsYmFjaywgdXNlUmVmLCB1c2VFZmZlY3QsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgeyB2NCBhcyB1dWlkdjQgfSBmcm9tICd1dWlkJ1xuaW1wb3J0IHsgdXNlQ2hhdE1lc3NhZ2VzIH0gZnJvbSAnLi4vdXNlQ2hhdE1lc3NhZ2VzJ1xuaW1wb3J0IHsgdXNlT3JjaGVzdHJhdG9yU3RyZWFtIH0gZnJvbSAnLi4vdXNlT3JjaGVzdHJhdG9yU3RyZWFtJ1xuaW1wb3J0IHsgdXNlVCB9IGZyb20gJy4uL3VzZVQnXG5pbXBvcnQgeyBBdHRhY2htZW50RmlsZSB9IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvbW9sZWN1bGVzL0NoYXRGb290ZXIvQ2hhdEZvb3RlcidcbmltcG9ydCB7IFNlbmRNZXNzYWdlT3B0aW9ucywgVXNlQ2hhdE1hbmFnZXJQcm9wcyB9IGZyb20gJy4vdXNlQ2hhdE1hbmFnZXIuaW50ZXJmYWNlJ1xuaW1wb3J0IHsgdXNlVXNlciwgQ09SVXNlciB9IGZyb20gJy4uLy4uL2NvbnRleHQvY29yLXVzZXInXG5pbXBvcnQgeyB1c2VHbG9iYWxDb250ZXh0IH0gZnJvbSAnLi4vLi4vY29udGV4dC9nbG9iYWwtY29udGV4dCdcbmltcG9ydCB7IEVWRU5UUywgdXNlRXZlbnQgfSBmcm9tICcuLi91c2VFdmVudCdcbmltcG9ydCBtYWlhIGZyb20gJy4uLy4uL3NlcnZpY2VzL21haWEnXG5pbXBvcnQgeyBGZWVkYmFjayB9IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvbW9sZWN1bGVzL01lc3NhZ2VGZWVkYmFjay9NZXNzYWdlRmVlZGJhY2snXG5pbXBvcnQgeyBDaGF0TWVzc2FnZSwgQ2hhdE1lc3NhZ2VVc2VyLCBDaGF0SGlzdG9yeVJvbGUsIEFwcHJvdmFsUmVxdWVzdCwgUGVuZGluZ0FjdGlvbiB9IGZyb20gJy4uLy4uL3R5cGVzL0NoYXQnXG5pbXBvcnQgeyBDb250ZXh0TWVudGlvbiwgQ29udGV4dE1lc3NhZ2UsIGJ1aWxkQ29udGV4dE1lc3NhZ2UgfSBmcm9tICcuLi8uLi90eXBlcy9jb250ZXh0TWVudGlvbidcbmltcG9ydCB7IGZvcm1hdFF1aWNrQWN0aW9uTWVzc2FnZUZvckRpc3BsYXkgfSBmcm9tICcuLi8uLi91dGlscy9mb3JtYXRRdWlja0FjdGlvbk1lc3NhZ2UnXG5cbmltcG9ydCB7IFByb2plY3QgfSBmcm9tICcuLi8uLi90eXBlcy9Qcm9qZWN0J1xuaW1wb3J0IHsgdXNlUHJvamVjdHMgfSBmcm9tICcuLi91c2VQcm9qZWN0cydcbmltcG9ydCB7IHVzZVRhYlRhc2tEZWZhdWx0IH0gZnJvbSAnLi4vdXNlVGFiVGFza0RlZmF1bHQnXG5pbXBvcnQgeyBUQVNLX1VSTF9SRUdFWF9QQVRURVJOIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzL3Rhc2tVcmxzJ1xuaW1wb3J0IHsgZmV0Y2hBZ2VudERldGFpbCB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL21haWEvQWdlbnRzL2ZldGNoQWdlbnREZXRhaWwnXG5pbXBvcnQgdHlwZSB7IFJlc29sdmVkQ29udGV4dCB9IGZyb20gJy4uL3VzZU9yY2hlc3RyYXRvclN0cmVhbS91c2VPcmNoZXN0cmF0b3JTdHJlYW0uaW50ZXJmYWNlJ1xuaW1wb3J0IHsgYnVpbGRIaXRsQWN0aW9uVHlwZUxpc3QsIGdldEhpdGxBbmFseXRpY3NBZ2VudFR5cGUgfSBmcm9tICcuLi8uLi91dGlscy9oaXRsQW5hbHl0aWNzJ1xuaW1wb3J0IHR5cGUgeyBTdHJlYW1BY3Rpdml0eSB9IGZyb20gJy4uLy4uL3R5cGVzL3N0cmVhbUFjdGl2aXR5J1xuaW1wb3J0IHtcbiAgZ2V0VGhpbmtpbmdMb2FkaW5nTWVzc2FnZSxcbiAgZ2V0V3JpdGluZ1N0cmVhbUFjdGl2aXR5LFxuICByZXNvbHZlSGl0bE5vZGVTdHJlYW1BY3Rpdml0eSxcbiAgcmVzb2x2ZUluaXRpYWxIaXRsU3RyZWFtQWN0aXZpdHksXG4gIHR5cGUgSGl0bEV4ZWN1dGlvbkNvbnRleHQsXG59IGZyb20gJy4uLy4uL3V0aWxzL3N0cmVhbUFjdGl2aXR5TWVzc2FnZXMnXG5pbXBvcnQgeyBzdHJlYW1pbmdTdG9yZSB9IGZyb20gJy4uL3VzZVN0cmVhbWluZ01lc3NhZ2UnXG5pbXBvcnQgeyBpc0NvbXBsZXRlTGlrZVNzZVBheWxvYWQsIG1lcmdlU3RyZWFtQ2h1bmsgfSBmcm9tICcuLi8uLi91dGlscy9zc2VTdHJlYW1Db250ZW50J1xuXG50eXBlIEF0dGFjaG1lbnRzT3JPcHRpb25zID0gQXR0YWNobWVudEZpbGVbXSB8IFNlbmRNZXNzYWdlT3B0aW9uc1xuXG5jb25zdCBub3JtYWxpemVTZW5kTWVzc2FnZUFyZ3MgPSAoYXR0YWNobWVudHNPck9wdGlvbnM/OiBBdHRhY2htZW50c09yT3B0aW9ucykgPT4ge1xuICBpZiAoQXJyYXkuaXNBcnJheShhdHRhY2htZW50c09yT3B0aW9ucykpIHtcbiAgICByZXR1cm4geyBhdHRhY2htZW50czogYXR0YWNobWVudHNPck9wdGlvbnMsIG9wdGlvbnM6IHt9IGFzIFNlbmRNZXNzYWdlT3B0aW9ucyB9XG4gIH1cblxuICBjb25zdCBvcHRpb25zOiBTZW5kTWVzc2FnZU9wdGlvbnMgPSBhdHRhY2htZW50c09yT3B0aW9ucyA/PyB7fVxuICByZXR1cm4geyBhdHRhY2htZW50czogb3B0aW9ucy5hdHRhY2htZW50cyA/PyBbXSwgb3B0aW9ucyB9XG59XG5cbmNvbnN0IG5vcm1hbGl6ZUFzc2lzdGFudEF0dGFjaG1lbnRzID0gKHJhd0F0dGFjaG1lbnRzOiB1bmtub3duKTogQXR0YWNobWVudEZpbGVbXSA9PiB7XG4gIGlmICghQXJyYXkuaXNBcnJheShyYXdBdHRhY2htZW50cykpIHtcbiAgICByZXR1cm4gW11cbiAgfVxuXG4gIHJldHVybiByYXdBdHRhY2htZW50c1xuICAgIC5maWx0ZXIoKGF0dGFjaG1lbnQpOiBhdHRhY2htZW50IGlzIFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0+ICEhYXR0YWNobWVudCAmJiB0eXBlb2YgYXR0YWNobWVudCA9PT0gJ29iamVjdCcpXG4gICAgLm1hcCgoYXR0YWNobWVudCwgaW5kZXgpID0+IHtcbiAgICAgIGNvbnN0IG5hbWUgPVxuICAgICAgICB0eXBlb2YgYXR0YWNobWVudC5uYW1lID09PSAnc3RyaW5nJyAmJiBhdHRhY2htZW50Lm5hbWUudHJpbSgpID8gYXR0YWNobWVudC5uYW1lLnRyaW0oKSA6IGBmaWxlLSR7aW5kZXggKyAxfWBcbiAgICAgIGNvbnN0IHR5cGUgPSB0eXBlb2YgYXR0YWNobWVudC50eXBlID09PSAnc3RyaW5nJyAmJiBhdHRhY2htZW50LnR5cGUudHJpbSgpID8gYXR0YWNobWVudC50eXBlLnRyaW0oKSA6ICdwZGYnXG4gICAgICBjb25zdCBtaW1lVHlwZSA9IHR5cGVvZiBhdHRhY2htZW50Lm1pbWVfdHlwZSA9PT0gJ3N0cmluZycgPyBhdHRhY2htZW50Lm1pbWVfdHlwZSA6ICcnXG4gICAgICBjb25zdCBmdWxsRmlsZU5hbWUgPSBuYW1lLmluY2x1ZGVzKCcuJykgPyBuYW1lIDogYCR7bmFtZX0uJHt0eXBlfWBcbiAgICAgIGNvbnN0IG51bWVyaWNTaXplID1cbiAgICAgICAgdHlwZW9mIGF0dGFjaG1lbnQuc2l6ZSA9PT0gJ251bWJlcidcbiAgICAgICAgICA/IGF0dGFjaG1lbnQuc2l6ZVxuICAgICAgICAgIDogTnVtYmVyLmlzRmluaXRlKE51bWJlcihhdHRhY2htZW50LnNpemUpKVxuICAgICAgICAgICAgPyBOdW1iZXIoYXR0YWNobWVudC5zaXplKVxuICAgICAgICAgICAgOiAwXG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIGZpbGU6IG5ldyBGaWxlKFtdLCBmdWxsRmlsZU5hbWUsIHsgdHlwZTogbWltZVR5cGUgfSksXG4gICAgICAgIGlkOlxuICAgICAgICAgIHR5cGVvZiBhdHRhY2htZW50LmlkID09PSAnc3RyaW5nJyAmJiBhdHRhY2htZW50LmlkLnRyaW0oKVxuICAgICAgICAgICAgPyBhdHRhY2htZW50LmlkXG4gICAgICAgICAgICA6IGBhc3Npc3RhbnQtZmlsZS0ke2luZGV4fS0ke2Z1bGxGaWxlTmFtZX1gLFxuICAgICAgICBuYW1lLFxuICAgICAgICBzaXplOiBudW1lcmljU2l6ZSxcbiAgICAgICAgdHlwZSxcbiAgICAgICAgdXJsX29yaWdpbmFsOiB0eXBlb2YgYXR0YWNobWVudC51cmxfb3JpZ2luYWwgPT09ICdzdHJpbmcnID8gYXR0YWNobWVudC51cmxfb3JpZ2luYWwgOiB1bmRlZmluZWQsXG4gICAgICAgIHVybF90aHVtYm5haWw6IHR5cGVvZiBhdHRhY2htZW50LnVybF90aHVtYm5haWwgPT09ICdzdHJpbmcnID8gYXR0YWNobWVudC51cmxfdGh1bWJuYWlsIDogdW5kZWZpbmVkLFxuICAgICAgICB1cmxfZmlsZTogdHlwZW9mIGF0dGFjaG1lbnQudXJsX2ZpbGUgPT09ICdzdHJpbmcnID8gYXR0YWNobWVudC51cmxfZmlsZSA6IHVuZGVmaW5lZCxcbiAgICAgICAgcm9sZTogYXR0YWNobWVudC5yb2xlID09PSAnYXNzaXN0YW50JyA/ICdhc3Npc3RhbnQnIDogJ3VzZXInLFxuICAgICAgfVxuICAgIH0pXG59XG5cbi8qKiBFeHRyYWUgdGFza19pZHMgZGUgbG9zIHRvb2xfYXJncyBkZSBwZW5kaW5nX2FjdGlvbnMsIGN1YnJpZW5kbyBsYXMgZm9ybWFzIGNvbXVuZXM6XG4gKiAgLSBgeyB0YXNrX2lkIH1gIG8gYHsgaWQgfWBcbiAqICAtIGB7IHRhc2tfaWRzOiBbXSB9YFxuICogIC0gYHsgdGFza3M6IFt7IHRhc2tfaWR8aWQgfSwgLi4uXSB9YFxuICogIMOadGlsIHBhcmEgdG9vbHMgZGUgZWRpdC9hc3NpZ24vZGVsZXRlIGN1YW5kbyBsYSByZXNwdWVzdGEgZGVsIExMTSBubyBpbmNsdXllIFVSTHMgL3Rhc2tzLy4uLi9kZXRhaWwuICovXG5mdW5jdGlvbiBleHRyYWN0VGFza0lkc0Zyb21QZW5kaW5nQWN0aW9uc0FyZ3MocGVuZGluZ0FjdGlvbnM6IFBlbmRpbmdBY3Rpb25bXSk6IG51bWJlcltdIHtcbiAgY29uc3QgaWRzOiBudW1iZXJbXSA9IFtdXG4gIGNvbnN0IHB1c2hJZCA9IChyYXc6IHVua25vd24pID0+IHtcbiAgICBpZiAocmF3ID09IG51bGwpIHJldHVyblxuICAgIGNvbnN0IG4gPSBwYXJzZUludChTdHJpbmcocmF3KSwgMTApXG4gICAgaWYgKCFOdW1iZXIuaXNOYU4obikpIGlkcy5wdXNoKG4pXG4gIH1cbiAgcGVuZGluZ0FjdGlvbnMuZm9yRWFjaChhY3Rpb24gPT4ge1xuICAgIGlmICghYWN0aW9uIHx8IHR5cGVvZiBhY3Rpb24gIT09ICdvYmplY3QnKSByZXR1cm5cbiAgICBjb25zdCBhcmdzID0gYWN0aW9uLnRvb2xfYXJnc1xuICAgIGlmICghKGFyZ3MgJiYgdHlwZW9mIGFyZ3MgPT09ICdvYmplY3QnICYmICFBcnJheS5pc0FycmF5KGFyZ3MpKSkgcmV0dXJuXG4gICAgY29uc3QgcmVjID0gYXJncyBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPlxuICAgIHB1c2hJZChyZWMudGFza19pZCA/PyByZWMuaWQpXG4gICAgaWYgKEFycmF5LmlzQXJyYXkocmVjLnRhc2tfaWRzKSkge1xuICAgICAgcmVjLnRhc2tfaWRzLmZvckVhY2gocHVzaElkKVxuICAgIH1cbiAgICBpZiAoQXJyYXkuaXNBcnJheShyZWMudGFza3MpKSB7XG4gICAgICByZWMudGFza3MuZm9yRWFjaCh0ID0+IHtcbiAgICAgICAgaWYgKHQgJiYgdHlwZW9mIHQgPT09ICdvYmplY3QnICYmICFBcnJheS5pc0FycmF5KHQpKSB7XG4gICAgICAgICAgY29uc3QgdHJlYyA9IHQgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj5cbiAgICAgICAgICBwdXNoSWQodHJlYy50YXNrX2lkID8/IHRyZWMuaWQpXG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgfVxuICB9KVxuICByZXR1cm4gaWRzXG59XG5cbi8qKiB0YXNrX2lkIC8gdGFza19pZHMgZW4gcGVuZGluZ19hY3Rpb25zIGRlIGRlbGV0ZV8qIChsYSByZXNwdWVzdGEgcHVlZGUgbm8gaW5jbHVpciBVUkxzIC90YXNrcy/igKYvZGV0YWlsKS4gKi9cbmZ1bmN0aW9uIGV4dHJhY3RUYXNrSWRzRnJvbURlbGV0ZVBlbmRpbmdBY3Rpb25zKHBlbmRpbmdBY3Rpb25zOiBQZW5kaW5nQWN0aW9uW10pOiBudW1iZXJbXSB7XG4gIGNvbnN0IGlkczogbnVtYmVyW10gPSBbXVxuICBwZW5kaW5nQWN0aW9ucy5mb3JFYWNoKGFjdGlvbiA9PiB7XG4gICAgaWYgKCFhY3Rpb24gfHwgdHlwZW9mIGFjdGlvbiAhPT0gJ29iamVjdCcpIHJldHVyblxuICAgIGNvbnN0IGFyZ3MgPSBhY3Rpb24udG9vbF9hcmdzXG4gICAgaWYgKCEoYXJncyAmJiB0eXBlb2YgYXJncyA9PT0gJ29iamVjdCcgJiYgIUFycmF5LmlzQXJyYXkoYXJncykpKSByZXR1cm5cbiAgICBjb25zdCByZWMgPSBhcmdzIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+XG4gICAgaWYgKGFjdGlvbi50b29sX25hbWUgPT09ICdkZWxldGVfdGFzaycpIHtcbiAgICAgIGNvbnN0IHJhdyA9IHJlYy50YXNrX2lkID8/IHJlYy5pZFxuICAgICAgaWYgKHJhdyAhPSBudWxsKSB7XG4gICAgICAgIGNvbnN0IG4gPSBwYXJzZUludChTdHJpbmcocmF3KSwgMTApXG4gICAgICAgIGlmICghTnVtYmVyLmlzTmFOKG4pKSBpZHMucHVzaChuKVxuICAgICAgfVxuICAgIH1cbiAgICBpZiAoYWN0aW9uLnRvb2xfbmFtZSA9PT0gJ2RlbGV0ZV90YXNrc19iYXRjaCcpIHtcbiAgICAgIGNvbnN0IGxpc3QgPSByZWMudGFza19pZHNcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KGxpc3QpKSB7XG4gICAgICAgIGxpc3QuZm9yRWFjaCh0aWQgPT4ge1xuICAgICAgICAgIGNvbnN0IG4gPSBwYXJzZUludChTdHJpbmcodGlkKSwgMTApXG4gICAgICAgICAgaWYgKCFOdW1iZXIuaXNOYU4obikpIGlkcy5wdXNoKG4pXG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgfVxuICB9KVxuICByZXR1cm4gaWRzXG59XG5cbmZ1bmN0aW9uIGV4dHJhY3RBZ2VudElkRnJvbUVkaXRBZ2VudFBlbmRpbmdBY3Rpb25zKHBlbmRpbmdBY3Rpb25zOiBQZW5kaW5nQWN0aW9uW10pOiBzdHJpbmcgfCBudWxsIHtcbiAgY29uc3QgZWRpdEFjdGlvbiA9IHBlbmRpbmdBY3Rpb25zLmZpbmQoYSA9PiAoYS50b29sX25hbWUgfHwgJycpLnRvTG93ZXJDYXNlKCkgPT09ICdlZGl0X2FnZW50JylcbiAgaWYgKFxuICAgICFlZGl0QWN0aW9uIHx8XG4gICAgIWVkaXRBY3Rpb24udG9vbF9hcmdzIHx8XG4gICAgdHlwZW9mIGVkaXRBY3Rpb24udG9vbF9hcmdzICE9PSAnb2JqZWN0JyB8fFxuICAgIEFycmF5LmlzQXJyYXkoZWRpdEFjdGlvbi50b29sX2FyZ3MpXG4gICkge1xuICAgIHJldHVybiBudWxsXG4gIH1cbiAgY29uc3QgcmVjID0gZWRpdEFjdGlvbi50b29sX2FyZ3MgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj5cbiAgY29uc3QgcmF3ID0gcmVjLmFnZW50X2lkID8/IHJlYy5hZ2VudElkXG4gIHJldHVybiByYXcgIT0gbnVsbCA/IFN0cmluZyhyYXcpIDogbnVsbFxufVxuXG5mdW5jdGlvbiBleHRyYWN0QWdlbnRJZEZyb21QZW5kaW5nQWN0aW9uc0J5VG9vbE5hbWUocGVuZGluZ0FjdGlvbnM6IFBlbmRpbmdBY3Rpb25bXSwgdG9vbE5hbWU6IHN0cmluZyk6IHN0cmluZyB8IG51bGwge1xuICBjb25zdCBhY3Rpb24gPSBwZW5kaW5nQWN0aW9ucy5maW5kKGEgPT4gKGEudG9vbF9uYW1lIHx8ICcnKS50b0xvd2VyQ2FzZSgpID09PSB0b29sTmFtZS50b0xvd2VyQ2FzZSgpKVxuICBpZiAoIWFjdGlvbiB8fCAhYWN0aW9uLnRvb2xfYXJncyB8fCB0eXBlb2YgYWN0aW9uLnRvb2xfYXJncyAhPT0gJ29iamVjdCcgfHwgQXJyYXkuaXNBcnJheShhY3Rpb24udG9vbF9hcmdzKSkge1xuICAgIHJldHVybiBudWxsXG4gIH1cbiAgY29uc3QgcmVjID0gYWN0aW9uLnRvb2xfYXJncyBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPlxuICBjb25zdCByYXcgPSByZWMuYWdlbnRfaWQgPz8gcmVjLmFnZW50SWQgPz8gcmVjLmlkXG4gIHJldHVybiByYXcgIT0gbnVsbCA/IFN0cmluZyhyYXcpIDogbnVsbFxufVxuXG4vKiogw5psdGltbyByZWN1cnNvIHNpIG5vIGhheSBsaW5rcyBuaSB0b29sX2FyZ3MgcGFyc2VhYmxlcyAocC4gZWouIFwiSUQgKio3NTk3MTA2KipcIikuICovXG5mdW5jdGlvbiBleHRyYWN0VGFza0lkc0Zyb21Bc3Npc3RhbnREZWxldGlvblRleHQodGV4dDogc3RyaW5nKTogbnVtYmVyW10ge1xuICBjb25zdCBsYWJlbGVkID0gdGV4dC5tYXRjaCgvXFxiSURcXHMqXFwqXFwqKFxcZCspXFwqXFwqL2kpXG4gIGlmIChsYWJlbGVkKSB7XG4gICAgY29uc3QgbiA9IHBhcnNlSW50KGxhYmVsZWRbMV0sIDEwKVxuICAgIHJldHVybiBOdW1iZXIuaXNOYU4obikgPyBbXSA6IFtuXVxuICB9XG4gIGNvbnN0IGJvbGQgPSB0ZXh0Lm1hdGNoKC9cXCpcXCooXFxkezUsfSlcXCpcXCovKVxuICBpZiAoYm9sZCkge1xuICAgIGNvbnN0IG4gPSBwYXJzZUludChib2xkWzFdLCAxMClcbiAgICByZXR1cm4gTnVtYmVyLmlzTmFOKG4pID8gW10gOiBbbl1cbiAgfVxuICByZXR1cm4gW11cbn1cblxuY29uc3QgdXNlU3RhYmxlQ2FsbGJhY2tzID0gKGF1dGhVc2VyOiBDT1JVc2VyKSA9PiB7XG4gIGNvbnN0IGN1cnJlbnRVc2VyID0gdXNlUmVmPENoYXRNZXNzYWdlVXNlcj4oe1xuICAgIGlkOiBhdXRoVXNlci5pZC50b1N0cmluZygpLFxuICAgIG5hbWU6IGF1dGhVc2VyLmZpcnN0TmFtZSxcbiAgICBhdmF0YXI6IGF1dGhVc2VyLnBpY3R1cmUsXG4gIH0pXG5cbiAgaWYgKFxuICAgIGN1cnJlbnRVc2VyLmN1cnJlbnQuaWQgIT09IGF1dGhVc2VyLmlkLnRvU3RyaW5nKCkgfHxcbiAgICBjdXJyZW50VXNlci5jdXJyZW50Lm5hbWUgIT09IGF1dGhVc2VyLmZpcnN0TmFtZSB8fFxuICAgIGN1cnJlbnRVc2VyLmN1cnJlbnQuYXZhdGFyICE9PSBhdXRoVXNlci5waWN0dXJlXG4gICkge1xuICAgIGN1cnJlbnRVc2VyLmN1cnJlbnQgPSB7XG4gICAgICBpZDogYXV0aFVzZXIuaWQudG9TdHJpbmcoKSxcbiAgICAgIG5hbWU6IGF1dGhVc2VyLmZpcnN0TmFtZSxcbiAgICAgIGF2YXRhcjogYXV0aFVzZXIucGljdHVyZSxcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHtcbiAgICBjdXJyZW50VXNlcjogY3VycmVudFVzZXIuY3VycmVudCxcbiAgfVxufVxuXG5jb25zdCBwYXJzZVNTRUxpbmUgPSAobGluZTogc3RyaW5nKTogeyBldmVudFR5cGU6IHN0cmluZzsgZGF0YTogdW5rbm93biB9IHwgbnVsbCA9PiB7XG4gIGlmICghbGluZS50cmltKCkpIHJldHVybiBudWxsXG5cbiAgY29uc3QgW2V2ZW50TGluZSwgZGF0YUxpbmVdID0gbGluZS5zcGxpdCgnXFxuJylcbiAgaWYgKCFldmVudExpbmUgfHwgIWRhdGFMaW5lKSByZXR1cm4gbnVsbFxuXG4gIGNvbnN0IGV2ZW50VHlwZSA9IGV2ZW50TGluZS5yZXBsYWNlKCdldmVudDogJywgJycpLnRyaW0oKVxuICBjb25zdCBkYXRhU3RyID0gZGF0YUxpbmUucmVwbGFjZSgnZGF0YTogJywgJycpLnRyaW0oKVxuXG4gIHRyeSB7XG4gICAgY29uc3QgZGF0YSA9IEpTT04ucGFyc2UoZGF0YVN0cilcbiAgICByZXR1cm4geyBldmVudFR5cGUsIGRhdGEgfVxuICB9IGNhdGNoIChwYXJzZUVycm9yKSB7XG4gICAgY29uc29sZS5lcnJvcignRXJyb3IgcGFyc2luZyBTU0UgZGF0YTonLCBwYXJzZUVycm9yLCBkYXRhU3RyKVxuICAgIHJldHVybiBudWxsXG4gIH1cbn1cblxuY29uc3QgcHJvY2Vzc1NTRVN0cmVhbSA9IGFzeW5jIChcbiAgcmVzcG9uc2U6IFJlc3BvbnNlLFxuICB0aHJlYWRJZDogc3RyaW5nLFxuICBjYWxsYmFja3M6IHtcbiAgICBvblRoaW5raW5nOiAoKSA9PiB2b2lkXG4gICAgb25Ub2tlbjogKGNvbnRlbnQ6IHN0cmluZykgPT4gdm9pZFxuICAgIG9uTm9kZTogKG1lc3NhZ2U6IHN0cmluZywgdGhyZWFkSWQ6IHN0cmluZykgPT4gdm9pZFxuICAgIG9uQ29tcGxldGU6IChcbiAgICAgIGZpbmFsQ29udGVudDogc3RyaW5nLFxuICAgICAgc291cmNlczogYW55LFxuICAgICAgbWVtb3J5U2Vzc2lvbklkOiBzdHJpbmcsXG4gICAgICBjdXJyZW50VGhyZWFkSWQ6IHN0cmluZyxcbiAgICAgIGF0dGFjaG1lbnRzPzogYW55W10gfCBudWxsLFxuICAgICAgc3VnZ2VzdGlvbnM/OiBzdHJpbmdbXSB8IG51bGwsXG4gICAgICBhZ2VudElkPzogc3RyaW5nIHwgbnVsbFxuICAgICkgPT4gdm9pZFxuICAgIG9uRXJyb3I6IChlcnJvcjogYW55LCB0aHJlYWRJZDogc3RyaW5nKSA9PiB2b2lkXG4gICAgb25BcHByb3ZhbFJlcXVpcmVkPzogKGFwcHJvdmFsOiBhbnksIGFjY3VtdWxhdGVkQ29udGVudDogc3RyaW5nLCBjdXJyZW50VGhyZWFkSWQ6IHN0cmluZykgPT4gdm9pZFxuICB9XG4pOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgY29uc3QgcmVhZGVyID0gcmVzcG9uc2UuYm9keT8uZ2V0UmVhZGVyKClcbiAgaWYgKCFyZWFkZXIpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIHJlYWRlciBhdmFpbGFibGUnKVxuICB9XG5cbiAgY29uc3QgZGVjb2RlciA9IG5ldyBUZXh0RGVjb2RlcigpXG4gIGxldCBidWZmZXIgPSAnJ1xuICBsZXQgYWNjdW11bGF0ZWRDb250ZW50ID0gJydcbiAgbGV0IGlzU3RyZWFtQ29tcGxldGUgPSBmYWxzZVxuXG4gIGZ1bmN0aW9uIGhhbmRsZUxpbmUobGluZTogc3RyaW5nKSB7XG4gICAgY29uc3QgcGFyc2VkID0gcGFyc2VTU0VMaW5lKGxpbmUpXG4gICAgaWYgKCFwYXJzZWQpIHJldHVyblxuXG4gICAgY29uc3QgeyBldmVudFR5cGUsIGRhdGEgfSA9IHBhcnNlZFxuICAgIGNvbnN0IGV2ZW50RGF0YSA9IGRhdGEgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj5cblxuICAgIGlmIChldmVudFR5cGUgPT09ICd0aGlua2luZycpIHtcbiAgICAgIGNhbGxiYWNrcy5vblRoaW5raW5nKClcbiAgICB9IGVsc2UgaWYgKGV2ZW50VHlwZSA9PT0gJ3Rva2VuJykge1xuICAgICAgY29uc3QgY29udGVudCA9IHR5cGVvZiBldmVudERhdGEuY29udGVudCA9PT0gJ3N0cmluZycgPyBldmVudERhdGEuY29udGVudCA6ICcnXG4gICAgICBhY2N1bXVsYXRlZENvbnRlbnQgPSBtZXJnZVN0cmVhbUNodW5rKGFjY3VtdWxhdGVkQ29udGVudCwgY29udGVudClcbiAgICAgIGNhbGxiYWNrcy5vblRva2VuKGFjY3VtdWxhdGVkQ29udGVudClcbiAgICB9IGVsc2UgaWYgKGV2ZW50VHlwZSA9PT0gJ2NvbnRlbnQnKSB7XG4gICAgICBjb25zdCBjb250ZW50ID0gdHlwZW9mIGV2ZW50RGF0YS5jb250ZW50ID09PSAnc3RyaW5nJyA/IGV2ZW50RGF0YS5jb250ZW50IDogJydcbiAgICAgIGFjY3VtdWxhdGVkQ29udGVudCA9IG1lcmdlU3RyZWFtQ2h1bmsoYWNjdW11bGF0ZWRDb250ZW50LCBjb250ZW50KVxuICAgICAgY2FsbGJhY2tzLm9uVG9rZW4oYWNjdW11bGF0ZWRDb250ZW50KVxuICAgICAgaWYgKGlzQ29tcGxldGVMaWtlU3NlUGF5bG9hZChldmVudERhdGEpKSB7XG4gICAgICAgIGNvbnN0IGZpbmFsQ29udGVudCA9IGNvbnRlbnQgfHwgYWNjdW11bGF0ZWRDb250ZW50XG4gICAgICAgIGNvbnN0IHNvdXJjZXMgPSBldmVudERhdGEuc291cmNlcyB8fCBudWxsXG4gICAgICAgIGNvbnN0IG1lbW9yeVNlc3Npb25JZCA9IChldmVudERhdGEubWVtb3J5X3Nlc3Npb25faWQgYXMgc3RyaW5nKSB8fCAnJ1xuICAgICAgICBjb25zdCBhdHRhY2htZW50cyA9IEFycmF5LmlzQXJyYXkoZXZlbnREYXRhLmF0dGFjaG1lbnRzKSA/IGV2ZW50RGF0YS5hdHRhY2htZW50cyA6IG51bGxcbiAgICAgICAgY29uc3Qgc3VnZ2VzdGlvbnMgPSBBcnJheS5pc0FycmF5KGV2ZW50RGF0YS5zdWdnZXN0X3JlcGx5KVxuICAgICAgICAgID8gKGV2ZW50RGF0YS5zdWdnZXN0X3JlcGx5IGFzIHN0cmluZ1tdKVxuICAgICAgICAgIDogQXJyYXkuaXNBcnJheShldmVudERhdGEuc3VnZ2VzdGlvbnMpXG4gICAgICAgICAgICA/IChldmVudERhdGEuc3VnZ2VzdGlvbnMgYXMgc3RyaW5nW10pXG4gICAgICAgICAgICA6IG51bGxcbiAgICAgICAgY29uc3QgYWdlbnRJZFJhdyA9IGV2ZW50RGF0YS5hZ2VudF9pZCA/PyBldmVudERhdGEuYWdlbnRJZFxuICAgICAgICBjb25zdCBjb21wbGV0ZWRBZ2VudElkID1cbiAgICAgICAgICBhZ2VudElkUmF3ICE9IG51bGwgJiYgU3RyaW5nKGFnZW50SWRSYXcpLnRyaW0oKSAhPT0gJycgPyBTdHJpbmcoYWdlbnRJZFJhdykudHJpbSgpIDogbnVsbFxuICAgICAgICBjYWxsYmFja3Mub25Db21wbGV0ZShcbiAgICAgICAgICBmaW5hbENvbnRlbnQsXG4gICAgICAgICAgc291cmNlcyxcbiAgICAgICAgICBtZW1vcnlTZXNzaW9uSWQsXG4gICAgICAgICAgdGhyZWFkSWQsXG4gICAgICAgICAgYXR0YWNobWVudHMsXG4gICAgICAgICAgc3VnZ2VzdGlvbnMsXG4gICAgICAgICAgY29tcGxldGVkQWdlbnRJZFxuICAgICAgICApXG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChldmVudFR5cGUgPT09ICdub2RlJykge1xuICAgICAgaWYgKGV2ZW50RGF0YS5tZXNzYWdlICYmIHR5cGVvZiBldmVudERhdGEubWVzc2FnZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgY2FsbGJhY2tzLm9uTm9kZShldmVudERhdGEubWVzc2FnZSwgdGhyZWFkSWQpXG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChldmVudFR5cGUgPT09ICdjb21wbGV0ZScpIHtcbiAgICAgIGNvbnN0IGZpbmFsQ29udGVudCA9IChldmVudERhdGEuY29udGVudCBhcyBzdHJpbmcpIHx8IGFjY3VtdWxhdGVkQ29udGVudFxuICAgICAgY29uc3Qgc291cmNlcyA9IChldmVudERhdGEuc291cmNlcyBhcyB1bmtub3duKSB8fCBudWxsXG4gICAgICBjb25zdCBtZW1vcnlTZXNzaW9uSWQgPSAoZXZlbnREYXRhLm1lbW9yeV9zZXNzaW9uX2lkIGFzIHN0cmluZykgfHwgJydcbiAgICAgIGNvbnN0IGF0dGFjaG1lbnRzID0gQXJyYXkuaXNBcnJheShldmVudERhdGEuYXR0YWNobWVudHMpID8gZXZlbnREYXRhLmF0dGFjaG1lbnRzIDogbnVsbFxuICAgICAgY29uc3Qgc3VnZ2VzdGlvbnMgPSBBcnJheS5pc0FycmF5KGV2ZW50RGF0YS5zdWdnZXN0X3JlcGx5KVxuICAgICAgICA/IChldmVudERhdGEuc3VnZ2VzdF9yZXBseSBhcyBzdHJpbmdbXSlcbiAgICAgICAgOiBBcnJheS5pc0FycmF5KGV2ZW50RGF0YS5zdWdnZXN0aW9ucylcbiAgICAgICAgICA/IChldmVudERhdGEuc3VnZ2VzdGlvbnMgYXMgc3RyaW5nW10pXG4gICAgICAgICAgOiBudWxsXG4gICAgICBjb25zdCBhZ2VudElkUmF3ID0gZXZlbnREYXRhLmFnZW50X2lkID8/IGV2ZW50RGF0YS5hZ2VudElkXG4gICAgICBjb25zdCBjb21wbGV0ZWRBZ2VudElkID0gYWdlbnRJZFJhdyAhPSBudWxsICYmIFN0cmluZyhhZ2VudElkUmF3KS50cmltKCkgIT09ICcnID8gU3RyaW5nKGFnZW50SWRSYXcpLnRyaW0oKSA6IG51bGxcbiAgICAgIGNhbGxiYWNrcy5vbkNvbXBsZXRlKGZpbmFsQ29udGVudCwgc291cmNlcywgbWVtb3J5U2Vzc2lvbklkLCB0aHJlYWRJZCwgYXR0YWNobWVudHMsIHN1Z2dlc3Rpb25zLCBjb21wbGV0ZWRBZ2VudElkKVxuICAgIH0gZWxzZSBpZiAoZXZlbnRUeXBlID09PSAnYXBwcm92YWxfcmVxdWlyZWQnKSB7XG4gICAgICBjYWxsYmFja3Mub25BcHByb3ZhbFJlcXVpcmVkPy4oZXZlbnREYXRhLCBhY2N1bXVsYXRlZENvbnRlbnQsIHRocmVhZElkKVxuICAgIH0gZWxzZSBpZiAoZXZlbnRUeXBlID09PSAnZXJyb3InKSB7XG4gICAgICBjYWxsYmFja3Mub25FcnJvcihldmVudERhdGEuZXJyb3IsIHRocmVhZElkKVxuICAgIH1cbiAgfVxuXG4gIHdoaWxlICghaXNTdHJlYW1Db21wbGV0ZSkge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1hd2FpdC1pbi1sb29wXG4gICAgY29uc3QgeyBkb25lLCB2YWx1ZSB9ID0gYXdhaXQgcmVhZGVyLnJlYWQoKVxuICAgIGlmIChkb25lKSB7XG4gICAgICBpc1N0cmVhbUNvbXBsZXRlID0gdHJ1ZVxuICAgICAgYnJlYWtcbiAgICB9XG5cbiAgICBidWZmZXIgKz0gZGVjb2Rlci5kZWNvZGUodmFsdWUsIHsgc3RyZWFtOiB0cnVlIH0pXG4gICAgY29uc3QgbGluZXMgPSBidWZmZXIuc3BsaXQoJ1xcblxcbicpXG4gICAgYnVmZmVyID0gbGluZXMucG9wKCkgfHwgJydcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGluZXMubGVuZ3RoOyBpICs9IDEpIHtcbiAgICAgIGhhbmRsZUxpbmUobGluZXNbaV0pXG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBjb25zdCB1c2VDaGF0TWFuYWdlciA9ICh7XG4gIGNoYXRJZDogaW5pdGlhbENoYXRJZCxcbiAgdXNlckluaXRpYWxNZXNzYWdlLFxuICBvbkVycm9yLFxuICBhZ2VudHMgPSBbXSxcbn06IFVzZUNoYXRNYW5hZ2VyUHJvcHMpID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUKClcbiAgY29uc3QgYXV0aFVzZXIgPSB1c2VVc2VyKClcbiAgY29uc3Qge1xuICAgIHByb2plY3QsXG4gICAgc2V0UHJvamVjdCxcbiAgICBjbGllbnQsXG4gICAgc2V0Q2xpZW50LFxuICAgIHRhc2ssXG4gICAgc2V0VGFzayxcbiAgICBhZ2VudCxcbiAgICBpc1dlYlNlYXJjaEFjdGl2ZSxcbiAgICBpc0RlZXBTZWFyY2hBY3RpdmUsXG4gICAgY2hpcHNQcm9qZWN0LFxuICAgIHNldENoaXBzUHJvamVjdCxcbiAgfSA9IHVzZUdsb2JhbENvbnRleHQoKVxuICBjb25zdCBldmVudCA9IHVzZUV2ZW50KClcbiAgY29uc3QgeyBmZXRjaFByb2plY3RzIH0gPSB1c2VQcm9qZWN0cygpXG4gIGNvbnN0IHsgY3VycmVudFVzZXIgfSA9IHVzZVN0YWJsZUNhbGxiYWNrcyhhdXRoVXNlcilcbiAgY29uc3QgeyBnZXRUYWJUYXNrRGVmYXVsdCB9ID0gdXNlVGFiVGFza0RlZmF1bHQoKVxuICBjb25zdCBjdXJyZW50TWVzc2FnZUlkID0gdXNlUmVmKHV1aWR2NCgpKVxuICBjb25zdCBjdXJyZW50VXNlclF1ZXN0aW9uID0gdXNlUmVmPHN0cmluZyB8IG51bGw+KG51bGwpXG4gIGNvbnN0IGN1cnJlbnRDaGF0SWQgPSB1c2VSZWYoaW5pdGlhbENoYXRJZCB8fCB1dWlkdjQoKSlcbiAgY29uc3QgcmVwb3J0ZWRFdmVudCA9IHVzZVJlZihmYWxzZSlcbiAgY29uc3QgbWVzc2FnZXNSZWYgPSB1c2VSZWY8Q2hhdE1lc3NhZ2VbXT4oW10pXG4gIC8qKlxuICAgKiBHdWFyZGEgaW5mbyBkZWwgw7psdGltbyBhcHByb3ZhbCBtYW51YWwgKGN1YW5kbyBlbCB1c3VhcmlvIHRpcGVhIFwic2lcIi9cIm5vXCIgZW4gbHVnYXJcbiAgICogZGUgY2xpY2tlYXIgZWwgYm90w7NuKS4gRW4gbWFudWFsIGFwcHJvdmFsLCBgaGFuZGxlQXBwcm92YWxSZXF1aXJlZGAgcmV0b3JuYSBlYXJseVxuICAgKiBzaW4gYWdyZWdhciB1biBtZW5zYWplIGNvbiBgYXBwcm92YWxgLCBhc8OtIHF1ZSBsYSBsw7NnaWNhIGRlIHJlZmV0Y2ggZW4gYG9uU3RyZWFtRmluaXNoYFxuICAgKiBubyBsbyBkZXRlY3RhIHbDrWEgYHByZXZpb3VzTWVzc2FnZS5hcHByb3ZhbGAuIExvIGd1YXJkYW1vcyBhY8OhIHBhcmEgY29uc3VtaXJsbyBkZXNwdcOpcy5cbiAgICovXG4gIGNvbnN0IGxhc3RNYW51YWxBcHByb3ZhbFJlZiA9IHVzZVJlZjx7XG4gICAgdG9vbE5hbWU6IHN0cmluZ1xuICAgIHRvb2xBcmdzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB8IG51bGxcbiAgfSB8IG51bGw+KG51bGwpXG4gIC8qKiBDb250ZXh0byBkZWwgbWVuc2FqZSBkZSBhcHJvYmFjacOzbiBwcmV2aW8gYWwgZWplY3V0YXIgY29udGludWUtdGhyZWFkLiAqL1xuICBjb25zdCBoaXRsRXhlY3V0aW9uQ29udGV4dFJlZiA9IHVzZVJlZjxIaXRsRXhlY3V0aW9uQ29udGV4dCB8IG51bGw+KG51bGwpXG4gIGNvbnN0IGlzUHJvY2Vzc2luZ1JlZiA9IHVzZVJlZihmYWxzZSlcbiAgY29uc3QgZmlyc3RUaW1lUmVmID0gdXNlUmVmKGZhbHNlKVxuICAvKiogSWQgZGVsIHBsYWNlaG9sZGVyIGRlbCBtZW5zYWplIGVuIHN0cmVhbWluZyBhY3Rpdm8gKHNpIGhheSkuICovXG4gIGNvbnN0IHN0cmVhbWluZ1BsYWNlaG9sZGVySWRSZWYgPSB1c2VSZWY8c3RyaW5nIHwgbnVsbD4obnVsbClcbiAgLyoqXG4gICAqIENoYXQgYWwgcXVlIHBlcnRlbmVjZSBlbCBzdHJlYW0gYWN0dWFsbWVudGUgYWN0aXZvLiBTaSBjYW1iaWEgZWwgY2hhdFxuICAgKiBtaWVudHJhcyB1biBzdHJlYW0gZXN0w6EgZW4gdnVlbG8sIGRlc2NhcnRhbW9zIGxvcyB0b2tlbnMgcmVzaWR1YWxlc1xuICAgKiBxdWUgcHVlZGFuIGxsZWdhciBhbnRlcyBkZSBxdWUgZWwgYWJvcnQgc2UgY29tcGxldGUuXG4gICAqL1xuICBjb25zdCBhY3RpdmVTdHJlYW1DaGF0SWRSZWYgPSB1c2VSZWY8c3RyaW5nIHwgbnVsbD4obnVsbClcbiAgLyoqIFNldHRlciBpbmRpcmVjdG8gcGFyYSBhYm9ydGFyIGVsIHN0cmVhbSBhbnRlcyBkZSBxdWUgZWwgaG9vayBkZVxuICAgKiBvcnF1ZXN0YWRvciBlc3TDqSBpbmljaWFsaXphZG8gKHNlIGxpbmtlYSBtw6FzIGFiYWpvKS4gKi9cbiAgY29uc3QgYWJvcnRTdHJlYW1TaWxlbnRseVJlZiA9IHVzZVJlZjwoKSA9PiB2b2lkPigoKSA9PiB1bmRlZmluZWQpXG4gIGNvbnN0IGNsZWFyU3RyZWFtVWlSZWYgPSB1c2VSZWY8KCkgPT4gdm9pZD4oKCkgPT4gdW5kZWZpbmVkKVxuICBjb25zdCBbYWN0aXZlTG9hZGluZ3MsIHNldEFjdGl2ZUxvYWRpbmdzXSA9IHVzZVN0YXRlPFJlY29yZDxzdHJpbmcsIHN0cmluZz4+KHt9KVxuXG4gIGNvbnN0IGlzV2ViU2VhcmNoQWN0aXZlUmVmID0gdXNlUmVmKGlzV2ViU2VhcmNoQWN0aXZlKVxuICBjb25zdCBpc0RlZXBTZWFyY2hBY3RpdmVSZWYgPSB1c2VSZWYoaXNEZWVwU2VhcmNoQWN0aXZlKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaXNXZWJTZWFyY2hBY3RpdmVSZWYuY3VycmVudCA9IGlzV2ViU2VhcmNoQWN0aXZlXG4gICAgaXNEZWVwU2VhcmNoQWN0aXZlUmVmLmN1cnJlbnQgPSBpc0RlZXBTZWFyY2hBY3RpdmVcbiAgfSwgW2lzV2ViU2VhcmNoQWN0aXZlLCBpc0RlZXBTZWFyY2hBY3RpdmVdKVxuXG4gIGNvbnN0IHsgbG9hZGluZ01lc3NhZ2VzLCBtZXNzYWdlcywgaXNMb2FkaW5nTW9yZU1lc3NhZ2VzLCBsb2FkTWVzc2FnZXMsIGFkZE1lc3NhZ2UsIHJlbW92ZU1lc3NhZ2UsIGhhbmRsZVNjcm9sbCB9ID1cbiAgICB1c2VDaGF0TWVzc2FnZXMoe1xuICAgICAgY2hhdElkOiBpbml0aWFsQ2hhdElkIHx8IGN1cnJlbnRDaGF0SWQuY3VycmVudCxcbiAgICAgIGN1cnJlbnRVc2VyLFxuICAgICAgdXNlckluaXRpYWxNZXNzYWdlLFxuICAgICAgb25FcnJvcixcbiAgICAgIGFnZW50cyxcbiAgICB9KVxuXG4gIG1lc3NhZ2VzUmVmLmN1cnJlbnQgPSBtZXNzYWdlc1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgY3VzdG9tRXZlbnQgPSBuZXcgQ3VzdG9tRXZlbnQoJ2NoYXQtbG9hZGluZy1tZXNzYWdlcy1jaGFuZ2VkJywge1xuICAgICAgZGV0YWlsOiB7IGxvYWRpbmdNZXNzYWdlcyB9LFxuICAgIH0pXG4gICAgZG9jdW1lbnQuZGlzcGF0Y2hFdmVudChjdXN0b21FdmVudClcbiAgfSwgW2xvYWRpbmdNZXNzYWdlc10pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoaW5pdGlhbENoYXRJZCAmJiBpbml0aWFsQ2hhdElkICE9PSBjdXJyZW50Q2hhdElkLmN1cnJlbnQpIHtcbiAgICAgIC8vIFNpIGhheSB1biBzdHJlYW0gZW4gY3Vyc28sIGFib3J0YXJsbyBzaWxlbmNpb3NhbWVudGUgcGFyYSBxdWUgbG9zXG4gICAgICAvLyB0b2tlbnMgcmVzaWR1YWxlcyBubyBzZSBlc2NyaWJhbiBlbiBlbCBjaGF0IG51ZXZvLlxuICAgICAgYWJvcnRTdHJlYW1TaWxlbnRseVJlZi5jdXJyZW50KClcblxuICAgICAgLy8gTGltcGlhciBjb250ZXh0byBnbG9iYWwgYWwgY2FtYmlhciBkZSBjb252ZXJzYWNpw7NuXG4gICAgICBzZXRQcm9qZWN0KG51bGwpXG4gICAgICBzZXRDbGllbnQ/LihudWxsKVxuICAgICAgc2V0Q2hpcHNQcm9qZWN0KG51bGwpXG4gICAgICBzZXRUYXNrKG51bGwpXG5cbiAgICAgIGN1cnJlbnRDaGF0SWQuY3VycmVudCA9IGluaXRpYWxDaGF0SWRcbiAgICAgIGN1cnJlbnRNZXNzYWdlSWQuY3VycmVudCA9IHV1aWR2NCgpXG4gICAgICBjdXJyZW50VXNlclF1ZXN0aW9uLmN1cnJlbnQgPSBudWxsXG4gICAgICByZXBvcnRlZEV2ZW50LmN1cnJlbnQgPSBmYWxzZVxuICAgICAgaXNQcm9jZXNzaW5nUmVmLmN1cnJlbnQgPSBmYWxzZVxuICAgICAgc3RyZWFtaW5nUGxhY2Vob2xkZXJJZFJlZi5jdXJyZW50ID0gbnVsbFxuICAgICAgYWN0aXZlU3RyZWFtQ2hhdElkUmVmLmN1cnJlbnQgPSBudWxsXG4gICAgICBzdHJlYW1pbmdTdG9yZS5jbGVhcigpXG5cbiAgICAgIGxvYWRNZXNzYWdlcygpXG4gICAgfVxuICB9LCBbaW5pdGlhbENoYXRJZCwgcHJvamVjdCwgc2V0UHJvamVjdCwgc2V0Q2xpZW50LCBzZXRDaGlwc1Byb2plY3QsIHNldFRhc2ssIGxvYWRNZXNzYWdlc10pXG5cbiAgLy8gRWwgY29udGV4dG8gZGUgcHJveWVjdG8vY2xpZW50ZSBhcGxpY2EgYSBhZ2VudGVzIGNsb25lICh0aWVuZW4gdG9vbHMpLiBMb3MgY3VzdG9tIG5vIGxvXG4gIC8vIG5lY2VzaXRhbiBwb3IgYWhvcmEsIGFzw60gcXVlIHBhcmEgZWxsb3Mgbm8gcmVzb2x2ZW1vcyBuaSBkaXNwYXJhbW9zIEdldFByb2plY3RzLlxuICBjb25zdCBpc0Nsb25lQWdlbnQgPSBhZ2VudD8udHlwZSA9PT0gJ2Nsb25lJ1xuXG4gIC8vIFNpbmNyb25pemFyIGNoaXBzUHJvamVjdCBjdWFuZG8gaGF5IG1lbnNhamVzIGNvbiBwcm9qZWN0SWQgcGVybyBjaGlwc1Byb2plY3Qgbm8gc2UgaGEgc2V0ZWFkb1xuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghaXNDbG9uZUFnZW50IHx8IGNoaXBzUHJvamVjdCB8fCBsb2FkaW5nTWVzc2FnZXMpIHJldHVyblxuICAgIGNvbnN0IGxhc3RNc2dXaXRoUHJvamVjdCA9IG1lc3NhZ2VzLmZpbHRlcihtc2cgPT4gbXNnLnByb2plY3RJZCkuYXQoLTEpXG4gICAgY29uc3QgeyBwcm9qZWN0SWQsIHByb2plY3ROYW1lIH0gPSBsYXN0TXNnV2l0aFByb2plY3QgfHwge31cbiAgICBpZiAoIXByb2plY3RJZCkgcmV0dXJuXG5cbiAgICBmZXRjaFByb2plY3RzKHByb2plY3RJZCkudGhlbihwcm9qZWN0cyA9PiB7XG4gICAgICBjb25zdCBmb3VuZCA9IHByb2plY3RzPy5maW5kKHAgPT4gTnVtYmVyKHAuaWQpID09PSBOdW1iZXIocHJvamVjdElkKSlcbiAgICAgIGlmIChmb3VuZCkge1xuICAgICAgICBzZXRDaGlwc1Byb2plY3Qoe1xuICAgICAgICAgIHByb2plY3ROYW1lOiBmb3VuZC5uYW1lLFxuICAgICAgICAgIGNsaWVudE5hbWU6IGZvdW5kLmNsaWVudD8ubmFtZSB8fCAnJyxcbiAgICAgICAgICBwcm9qZWN0SWQ6IFN0cmluZyhmb3VuZC5pZCksXG4gICAgICAgIH0pXG4gICAgICAgIHNldFByb2plY3QoZm91bmQpXG4gICAgICB9IGVsc2UgaWYgKHByb2plY3ROYW1lKSB7XG4gICAgICAgIHNldENoaXBzUHJvamVjdCh7XG4gICAgICAgICAgcHJvamVjdE5hbWUsXG4gICAgICAgICAgY2xpZW50TmFtZTogJycsXG4gICAgICAgICAgcHJvamVjdElkOiBTdHJpbmcocHJvamVjdElkKSxcbiAgICAgICAgfSlcbiAgICAgICAgc2V0UHJvamVjdCh7IGlkOiBOdW1iZXIocHJvamVjdElkKSwgbmFtZTogcHJvamVjdE5hbWUgfSlcbiAgICAgIH1cbiAgICB9KVxuICB9LCBbaXNDbG9uZUFnZW50LCBtZXNzYWdlcywgY2hpcHNQcm9qZWN0LCBsb2FkaW5nTWVzc2FnZXMsIGZldGNoUHJvamVjdHMsIHNldENoaXBzUHJvamVjdCwgc2V0UHJvamVjdF0pXG5cbiAgLy8gU2luY3Jvbml6YXIgY2xpZW50IGN1YW5kbyBoYXkgbWVuc2FqZXMgY29uIGNsaWVudElkIHBlcm8gY2xpZW50IG5vIHNlIGhhIHNldGVhZG9cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIWlzQ2xvbmVBZ2VudCB8fCBjbGllbnQgfHwgbG9hZGluZ01lc3NhZ2VzKSByZXR1cm5cbiAgICBjb25zdCBsYXN0TXNnV2l0aENsaWVudCA9IG1lc3NhZ2VzLmZpbHRlcihtc2cgPT4gbXNnLmNsaWVudElkICE9IG51bGwgJiYgbXNnLmNsaWVudE5hbWUpLmF0KC0xKVxuICAgIGNvbnN0IHsgY2xpZW50SWQ6IG1zZ0NsaWVudElkLCBjbGllbnROYW1lOiBtc2dDbGllbnROYW1lIH0gPSBsYXN0TXNnV2l0aENsaWVudCB8fCB7fVxuICAgIGlmIChtc2dDbGllbnRJZCA9PSBudWxsIHx8ICFtc2dDbGllbnROYW1lKSByZXR1cm5cblxuICAgIHNldENsaWVudD8uKHsgaWQ6IE51bWJlcihtc2dDbGllbnRJZCksIG5hbWU6IG1zZ0NsaWVudE5hbWUgfSlcbiAgfSwgW2lzQ2xvbmVBZ2VudCwgbWVzc2FnZXMsIGNsaWVudCwgbG9hZGluZ01lc3NhZ2VzLCBzZXRDbGllbnRdKVxuXG4gIGNvbnN0IGhhbmRsZVN0cmVhbUVycm9yID0gdXNlQ2FsbGJhY2soXG4gICAgKGVycm9yTWVzc2FnZT86IHN0cmluZywgZXJyb3JSYXdNZXNzYWdlPzogc3RyaW5nKSA9PiB7XG4gICAgICBjbGVhclN0cmVhbVVpUmVmLmN1cnJlbnQoKVxuICAgICAgY29uc3QgdGVtcE1lc3NhZ2VJZCA9IGBhbnN3ZXItJHtjdXJyZW50TWVzc2FnZUlkLmN1cnJlbnR9LXN0cmVhbWluZ2BcbiAgICAgIHN0cmVhbWluZ1N0b3JlLmNsZWFyKClcbiAgICAgIHN0cmVhbWluZ1BsYWNlaG9sZGVySWRSZWYuY3VycmVudCA9IG51bGxcbiAgICAgIGFjdGl2ZVN0cmVhbUNoYXRJZFJlZi5jdXJyZW50ID0gbnVsbFxuICAgICAgcmVtb3ZlTWVzc2FnZSh0ZW1wTWVzc2FnZUlkKVxuXG4gICAgICBjb25zdCBtZXNzYWdlID1cbiAgICAgICAgZXJyb3JNZXNzYWdlID09PSBcIkFjY2VzcyBkZW5pZWQ6IFlvdSBkb24ndCBoYXZlIHBlcm1pc3Npb24gdG8gYWNjZXNzIHRoaXMgYWdlbnRcIlxuICAgICAgICAgID8gdCgnY2hhdC5lcnJvckFjY2Vzc0RlbmllZCcpXG4gICAgICAgICAgOiBlcnJvck1lc3NhZ2UgPT09ICdpbnZhbGlkX3JlcXVlc3RfZXJyb3InICYmIGVycm9yUmF3TWVzc2FnZT8uaW5jbHVkZXMoJ3Byb21wdCBpcyB0b28gbG9uZycpXG4gICAgICAgICAgICA/IHQoJ2NoYXQuZXJyb3JQcm9tcHRUb29Mb25nJywgeyB1c2VkOiBlcnJvclJhd01lc3NhZ2UubWF0Y2goLyhcXGQrKSB0b2tlbnMvKT8uWzFdID8/ICcnIH0pXG4gICAgICAgICAgICA6IHQoJ2NoYXQuZXJyb3InKVxuXG4gICAgICBhZGRNZXNzYWdlKHtcbiAgICAgICAgaWQ6IGBhbnN3ZXItJHtjdXJyZW50TWVzc2FnZUlkLmN1cnJlbnR9YCxcbiAgICAgICAgbWVzc2FnZSxcbiAgICAgICAgaXNFcnJvcjogdHJ1ZSxcbiAgICAgICAgZGF0ZTogbmV3IERhdGUoKSxcbiAgICAgICAgdXNlcjogeyBpZDogJ2Fzc2lzdGFudCcsIG5hbWU6ICdBc3Npc3RhbnQnIH0sXG4gICAgICAgIHJvbGU6IENoYXRIaXN0b3J5Um9sZS5BU1NJU1RBTlQsXG4gICAgICB9KVxuICAgICAgaXNQcm9jZXNzaW5nUmVmLmN1cnJlbnQgPSBmYWxzZVxuICAgIH0sXG4gICAgW2FkZE1lc3NhZ2UsIHJlbW92ZU1lc3NhZ2UsIHRdXG4gIClcblxuICBjb25zdCBoYW5kbGVTdHJlYW1VcGRhdGUgPSB1c2VDYWxsYmFjayhcbiAgICAoY29udGVudDogc3RyaW5nLCBzb3VyY2VzOiBhbnksIG1lbW9yeVNlc3Npb25JZDogc3RyaW5nKSA9PiB7XG4gICAgICAvLyBTaSBlbCBjaGF0IGNhbWJpw7MgbWllbnRyYXMgZWwgc3RyZWFtIGVzdGFiYSBlbiB2dWVsbywgZGVzY2FydGFyIGVsXG4gICAgICAvLyB0b2tlbiByZXNpZHVhbDogbm8gZGViZSBwaW50YXJzZSBlbiBlbCBudWV2byBjaGF0LlxuICAgICAgaWYgKGFjdGl2ZVN0cmVhbUNoYXRJZFJlZi5jdXJyZW50ICE9IG51bGwgJiYgYWN0aXZlU3RyZWFtQ2hhdElkUmVmLmN1cnJlbnQgIT09IGN1cnJlbnRDaGF0SWQuY3VycmVudCkge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgY29uc3QgdGVtcE1lc3NhZ2VJZCA9IGBhbnN3ZXItJHtjdXJyZW50TWVzc2FnZUlkLmN1cnJlbnR9LXN0cmVhbWluZ2BcblxuICAgICAgLy8gUHJpbWVyYSBsbGFtYWRhIGRlIGVzdGUgc3RyZWFtOiBpbnNlcnRhbW9zIGVsIHBsYWNlaG9sZGVyIGVuIGVsXG4gICAgICAvLyBhcnJheSBkZSBgbWVzc2FnZXNgIHVuYSDDum5pY2EgdmV6LiBMYXMgbGxhbWFkYXMgc3Vic2lndWllbnRlcyB5YSBub1xuICAgICAgLy8gdG9jYW4gYG1lc3NhZ2VzYDsgZWwgdGV4dG8gdml2ZSBlbiBlbCBzdHJlYW1pbmdTdG9yZSAoZXh0ZXJubyksIHBvclxuICAgICAgLy8gbG8gcXVlIFJlYWN0IG5vIHJlLXJlbmRlcml6YSBlbCDDoXJib2wgY29tcGxldG8gZW4gY2FkYSB0b2tlbi5cbiAgICAgIGlmIChzdHJlYW1pbmdQbGFjZWhvbGRlcklkUmVmLmN1cnJlbnQgIT09IHRlbXBNZXNzYWdlSWQpIHtcbiAgICAgICAgc3RyZWFtaW5nUGxhY2Vob2xkZXJJZFJlZi5jdXJyZW50ID0gdGVtcE1lc3NhZ2VJZFxuICAgICAgICBhY3RpdmVTdHJlYW1DaGF0SWRSZWYuY3VycmVudCA9IGN1cnJlbnRDaGF0SWQuY3VycmVudFxuICAgICAgICBzdHJlYW1pbmdTdG9yZS5zdGFydCh0ZW1wTWVzc2FnZUlkKVxuICAgICAgICBhZGRNZXNzYWdlKHtcbiAgICAgICAgICBpZDogdGVtcE1lc3NhZ2VJZCxcbiAgICAgICAgICBtZXNzYWdlOiAnJyxcbiAgICAgICAgICBkYXRlOiBuZXcgRGF0ZSgpLFxuICAgICAgICAgIHVzZXI6IHsgaWQ6ICdhc3Npc3RhbnQnLCBuYW1lOiAnQXNzaXN0YW50JyB9LFxuICAgICAgICAgIHJvbGU6IENoYXRIaXN0b3J5Um9sZS5BU1NJU1RBTlQsXG4gICAgICAgICAgc291cmNlcyxcbiAgICAgICAgICBtZW1vcnlTZXNzaW9uSWQsXG4gICAgICAgIH0pXG4gICAgICB9XG5cbiAgICAgIHN0cmVhbWluZ1N0b3JlLnNldFRleHQodGVtcE1lc3NhZ2VJZCwgY29udGVudClcbiAgICB9LFxuICAgIFthZGRNZXNzYWdlXVxuICApXG5cbiAgY29uc3QgaGFuZGxlU3RyZWFtRmluaXNoID0gdXNlQ2FsbGJhY2soXG4gICAgYXN5bmMgKFxuICAgICAgY29udGVudDogc3RyaW5nLFxuICAgICAgc291cmNlczogYW55LFxuICAgICAgbWVtb3J5U2Vzc2lvbklkOiBzdHJpbmcsXG4gICAgICByYXdBdHRhY2htZW50cz86IGFueVtdIHwgbnVsbCxcbiAgICAgIHN1Z2dlc3Rpb25zPzogc3RyaW5nW10gfCBudWxsLFxuICAgICAgY29tcGxldGVkQWdlbnRJZD86IHN0cmluZyB8IG51bGwsXG4gICAgICByZXNvbHZlZENvbnRleHQ/OiBSZXNvbHZlZENvbnRleHQgfCBudWxsXG4gICAgKSA9PiB7XG4gICAgICBjb25zdCB0ZW1wTWVzc2FnZUlkID0gYGFuc3dlci0ke2N1cnJlbnRNZXNzYWdlSWQuY3VycmVudH0tc3RyZWFtaW5nYFxuICAgICAgc3RyZWFtaW5nU3RvcmUuY2xlYXIoKVxuICAgICAgc3RyZWFtaW5nUGxhY2Vob2xkZXJJZFJlZi5jdXJyZW50ID0gbnVsbFxuICAgICAgYWN0aXZlU3RyZWFtQ2hhdElkUmVmLmN1cnJlbnQgPSBudWxsXG4gICAgICBoaXRsRXhlY3V0aW9uQ29udGV4dFJlZi5jdXJyZW50ID0gbnVsbFxuICAgICAgcmVtb3ZlTWVzc2FnZSh0ZW1wTWVzc2FnZUlkKVxuICAgICAgY29uc3QgYXR0YWNobWVudHMgPSBub3JtYWxpemVBc3Npc3RhbnRBdHRhY2htZW50cyhyYXdBdHRhY2htZW50cylcblxuICAgICAgLy8gRGV0ZWN0YXIgdG9kYXMgbGFzIFVSTHMgZGUgdGFyZWFzICguLi4vdGFza3MvMTIzL2RldGFpbHxtZXNzYWdlfG1lc3NhZ2VzfGZpbGVzfGhpc3Rvcnl8aG91cnMpXG4gICAgICBjb25zdCB0YXNrVXJsUmVnZXggPSBuZXcgUmVnRXhwKFRBU0tfVVJMX1JFR0VYX1BBVFRFUk4sICdnJylcbiAgICAgIGNvbnN0IG1hdGNoZXMgPSBbLi4uY29udGVudC5tYXRjaEFsbCh0YXNrVXJsUmVnZXgpXVxuXG4gICAgICBsZXQgY29udGVudFRvQWRkID0gY29udGVudFxuICAgICAgY29uc3QgcHJldmlvdXNNZXNzYWdlID0gbWVzc2FnZXNSZWYuY3VycmVudC5maWx0ZXIobSA9PiBtLmlkICE9PSB0ZW1wTWVzc2FnZUlkKS5hdCgtMSlcbiAgICAgIGNvbnN0IGhhc0FwcHJvdmFsSW5QcmV2aW91c01lc3NhZ2UgPSBwcmV2aW91c01lc3NhZ2U/LmFwcHJvdmFsICE9IG51bGxcbiAgICAgIGNvbnN0IFRBU0tfQ1JFQVRJT05fVE9PTFMgPSBbJ2NyZWF0ZV90YXNrJywgJ2NyZWF0ZV90YXNrc19iYXRjaCcsICdjbG9uZV90YXNrJ11cbiAgICAgIGNvbnN0IFRBU0tfRURJVF9UT09MUyA9IFtcbiAgICAgICAgJ2VkaXRfdGFzaycsXG4gICAgICAgICdlZGl0X3Rhc2tzX2JhdGNoJyxcbiAgICAgICAgJ3Rhc2tfYXNzaWduJyxcbiAgICAgICAgJ3Rhc2tfdW5hc3NpZ24nLFxuICAgICAgICAndXBkYXRlX3Rhc2tfdHlwZScsXG4gICAgICAgICd1cGRhdGVfZXN0aW1hdGVkX2hvdXJzJyxcbiAgICAgICAgJ2Fzc2lnbl90YXNrX2xhYmVsJyxcbiAgICAgIF1cbiAgICAgIGNvbnN0IFRBU0tfREVMRVRFX1RPT0xTID0gWydkZWxldGVfdGFzaycsICdkZWxldGVfdGFza3NfYmF0Y2gnXVxuICAgICAgY29uc3QgcGVuZGluZ0FjdGlvbnMgPSBwcmV2aW91c01lc3NhZ2U/LmFwcHJvdmFsPy5wZW5kaW5nX2FjdGlvbnMgfHwgW11cbiAgICAgIGNvbnN0IHdhc1Rhc2tDcmVhdGlvbiA9XG4gICAgICAgIGhhc0FwcHJvdmFsSW5QcmV2aW91c01lc3NhZ2UgJiZcbiAgICAgICAgcGVuZGluZ0FjdGlvbnMuc29tZSgoYWN0aW9uOiBhbnkpID0+IFRBU0tfQ1JFQVRJT05fVE9PTFMuaW5jbHVkZXMoYWN0aW9uLnRvb2xfbmFtZSkpXG4gICAgICBjb25zdCB3YXNUYXNrRWRpdCA9XG4gICAgICAgIGhhc0FwcHJvdmFsSW5QcmV2aW91c01lc3NhZ2UgJiYgcGVuZGluZ0FjdGlvbnMuc29tZSgoYWN0aW9uOiBhbnkpID0+IFRBU0tfRURJVF9UT09MUy5pbmNsdWRlcyhhY3Rpb24udG9vbF9uYW1lKSlcbiAgICAgIGNvbnN0IHdhc1Rhc2tEZWxldGUgPVxuICAgICAgICBoYXNBcHByb3ZhbEluUHJldmlvdXNNZXNzYWdlICYmXG4gICAgICAgIHBlbmRpbmdBY3Rpb25zLnNvbWUoKGFjdGlvbjogYW55KSA9PiBUQVNLX0RFTEVURV9UT09MUy5pbmNsdWRlcyhhY3Rpb24udG9vbF9uYW1lKSlcbiAgICAgIGNvbnN0IHdhc0NyZWF0ZUFnZW50QXBwcm92ZWQgPVxuICAgICAgICBoYXNBcHByb3ZhbEluUHJldmlvdXNNZXNzYWdlICYmXG4gICAgICAgIHByZXZpb3VzTWVzc2FnZT8uYXBwcm92YWxTdGF0dXMgPT09ICdhcHByb3ZlZCcgJiZcbiAgICAgICAgcGVuZGluZ0FjdGlvbnMuc29tZSgoYWN0aW9uOiBhbnkpID0+IGFjdGlvbi50b29sX25hbWUgPT09ICdjcmVhdGVfYWdlbnQnKVxuICAgICAgY29uc3Qgd2FzQ29uZmlndXJlQWdlbnRBY2Nlc3NBcHByb3ZlZCA9XG4gICAgICAgIGhhc0FwcHJvdmFsSW5QcmV2aW91c01lc3NhZ2UgJiZcbiAgICAgICAgcHJldmlvdXNNZXNzYWdlPy5hcHByb3ZhbFN0YXR1cyA9PT0gJ2FwcHJvdmVkJyAmJlxuICAgICAgICBwZW5kaW5nQWN0aW9ucy5zb21lKChhY3Rpb246IGFueSkgPT4gKGFjdGlvbi50b29sX25hbWUgfHwgJycpLnRvTG93ZXJDYXNlKCkgPT09ICdjb25maWd1cmVfYWdlbnRfYWNjZXNzJylcbiAgICAgIGxldCBjcmVhdGVBZ2VudEZvbGxvd1VwOiB7IGFnZW50SWQ6IHN0cmluZyB9IHwgdW5kZWZpbmVkXG4gICAgICBpZiAod2FzQ3JlYXRlQWdlbnRBcHByb3ZlZCAmJiB3aW5kb3cuTUFJQV9DSEFUX0FJX0ZFQVRVUkVfQUNDRVNTX01VTFRJX0FHRU5UUyAmJiBjb21wbGV0ZWRBZ2VudElkPy50cmltKCkpIHtcbiAgICAgICAgY3JlYXRlQWdlbnRGb2xsb3dVcCA9IHsgYWdlbnRJZDogY29tcGxldGVkQWdlbnRJZC50cmltKCkgfVxuICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgd2FzQ29uZmlndXJlQWdlbnRBY2Nlc3NBcHByb3ZlZCAmJlxuICAgICAgICB3aW5kb3cuTUFJQV9DSEFUX0FJX0ZFQVRVUkVfQUNDRVNTX01VTFRJX0FHRU5UUyAmJlxuICAgICAgICAoY29tcGxldGVkQWdlbnRJZD8udHJpbSgpIHx8XG4gICAgICAgICAgZXh0cmFjdEFnZW50SWRGcm9tUGVuZGluZ0FjdGlvbnNCeVRvb2xOYW1lKHBlbmRpbmdBY3Rpb25zLCAnY29uZmlndXJlX2FnZW50X2FjY2VzcycpKVxuICAgICAgKSB7XG4gICAgICAgIGNvbnN0IGNvbmZpZ3VyZWRBZ2VudElkID1cbiAgICAgICAgICBjb21wbGV0ZWRBZ2VudElkPy50cmltKCkgfHxcbiAgICAgICAgICBleHRyYWN0QWdlbnRJZEZyb21QZW5kaW5nQWN0aW9uc0J5VG9vbE5hbWUocGVuZGluZ0FjdGlvbnMsICdjb25maWd1cmVfYWdlbnRfYWNjZXNzJylcbiAgICAgICAgY3JlYXRlQWdlbnRGb2xsb3dVcCA9IHtcbiAgICAgICAgICBhZ2VudElkOiBjb25maWd1cmVkQWdlbnRJZCBhcyBzdHJpbmcsXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKHdhc0NyZWF0ZUFnZW50QXBwcm92ZWQpIHtcbiAgICAgICAgZXZlbnQoRVZFTlRTLmFpQ2hhdEhpdGxPcHRpb24sIHtcbiAgICAgICAgICBhZ2VudF90eXBlOiBnZXRIaXRsQW5hbHl0aWNzQWdlbnRUeXBlKGFnZW50KSxcbiAgICAgICAgICBhY3Rpb25fdHlwZTogYnVpbGRIaXRsQWN0aW9uVHlwZUxpc3QocGVuZGluZ0FjdGlvbnMpLFxuICAgICAgICAgIGRlY2lzaW9uOiAnYWNjZXB0JyxcbiAgICAgICAgICBvcHRpb246ICdjcmVhdGVfYWdlbnQnLFxuICAgICAgICAgIC4uLihjb21wbGV0ZWRBZ2VudElkPy50cmltKCkgPyB7IGNyZWF0ZWRfYWdlbnRfaWQ6IGNvbXBsZXRlZEFnZW50SWQudHJpbSgpIH0gOiB7fSksXG4gICAgICAgIH0pXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHdhc0VkaXRBZ2VudEFwcHJvdmVkID1cbiAgICAgICAgaGFzQXBwcm92YWxJblByZXZpb3VzTWVzc2FnZSAmJlxuICAgICAgICBwcmV2aW91c01lc3NhZ2U/LmFwcHJvdmFsU3RhdHVzID09PSAnYXBwcm92ZWQnICYmXG4gICAgICAgIHBlbmRpbmdBY3Rpb25zLnNvbWUoKGFjdGlvbjogYW55KSA9PiAoYWN0aW9uLnRvb2xfbmFtZSB8fCAnJykudG9Mb3dlckNhc2UoKSA9PT0gJ2VkaXRfYWdlbnQnKVxuXG4gICAgICBsZXQgZWRpdEFnZW50Rm9sbG93VXA6IHsgYWdlbnRJZDogc3RyaW5nIH0gfCB1bmRlZmluZWRcbiAgICAgIGlmICh3YXNFZGl0QWdlbnRBcHByb3ZlZCkge1xuICAgICAgICBjb25zdCBmcm9tU3RyZWFtID0gY29tcGxldGVkQWdlbnRJZD8udHJpbSgpXG4gICAgICAgIGNvbnN0IGZyb21BcmdzID0gZXh0cmFjdEFnZW50SWRGcm9tRWRpdEFnZW50UGVuZGluZ0FjdGlvbnMocGVuZGluZ0FjdGlvbnMpXG4gICAgICAgIGNvbnN0IHJlc29sdmVkQWdlbnRJZCA9IGZyb21TdHJlYW0gfHwgZnJvbUFyZ3NcbiAgICAgICAgaWYgKHJlc29sdmVkQWdlbnRJZCkge1xuICAgICAgICAgIGVkaXRBZ2VudEZvbGxvd1VwID0geyBhZ2VudElkOiByZXNvbHZlZEFnZW50SWQgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHRhc2tJZHNGcm9tVXJscyA9IG1hdGNoZXMubWFwKG1hdGNoID0+IHBhcnNlSW50KG1hdGNoWzFdLCAxMCkpXG4gICAgICBjb25zdCB0YXNrSWRzRnJvbURlbGV0ZUFwcHJvdmFsID0gZXh0cmFjdFRhc2tJZHNGcm9tRGVsZXRlUGVuZGluZ0FjdGlvbnMocGVuZGluZ0FjdGlvbnMpXG4gICAgICBjb25zdCB0YXNrSWRzRnJvbURlbGV0aW9uVGV4dCA9XG4gICAgICAgIHdhc1Rhc2tEZWxldGUgJiYgdGFza0lkc0Zyb21VcmxzLmxlbmd0aCA9PT0gMCAmJiB0YXNrSWRzRnJvbURlbGV0ZUFwcHJvdmFsLmxlbmd0aCA9PT0gMFxuICAgICAgICAgID8gZXh0cmFjdFRhc2tJZHNGcm9tQXNzaXN0YW50RGVsZXRpb25UZXh0KGNvbnRlbnQpXG4gICAgICAgICAgOiBbXVxuICAgICAgY29uc3QgdGFza0lkc0ZvckRhc2hib2FyZCA9XG4gICAgICAgIHRhc2tJZHNGcm9tVXJscy5sZW5ndGggPiAwXG4gICAgICAgICAgPyB0YXNrSWRzRnJvbVVybHNcbiAgICAgICAgICA6IHRhc2tJZHNGcm9tRGVsZXRlQXBwcm92YWwubGVuZ3RoID4gMFxuICAgICAgICAgICAgPyB0YXNrSWRzRnJvbURlbGV0ZUFwcHJvdmFsXG4gICAgICAgICAgICA6IHRhc2tJZHNGcm9tRGVsZXRpb25UZXh0XG5cbiAgICAgIGNvbnN0IHNob3VsZFN5bmNEYXNoYm9hcmQgPVxuICAgICAgICBoYXNBcHByb3ZhbEluUHJldmlvdXNNZXNzYWdlICYmXG4gICAgICAgICh3YXNUYXNrQ3JlYXRpb24gfHwgd2FzVGFza0VkaXQgfHwgd2FzVGFza0RlbGV0ZSkgJiZcbiAgICAgICAgdGFza0lkc0ZvckRhc2hib2FyZC5sZW5ndGggPiAwXG5cbiAgICAgIGlmIChzaG91bGRTeW5jRGFzaGJvYXJkKSB7XG4gICAgICAgIGNvbnN0IHRhc2tJZHMgPSB0YXNrSWRzRm9yRGFzaGJvYXJkXG4gICAgICAgIGlmIChtYXRjaGVzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICBjb25zdCB0YWIgPSBhd2FpdCBnZXRUYWJUYXNrRGVmYXVsdCh0YXNrSWRzWzBdKVxuICAgICAgICAgIGNvbnN0IHRhYlNlZ21lbnQgPSB0YWIgPyBgLyR7dGFifWAgOiAnL2RldGFpbCdcbiAgICAgICAgICBjb250ZW50VG9BZGQgPSBjb250ZW50LnJlcGxhY2UodGFza1VybFJlZ2V4LCB1cmwgPT5cbiAgICAgICAgICAgIHVybC5yZXBsYWNlKC9cXC8oZGV0YWlsfG1lc3NhZ2V8bWVzc2FnZXN8ZmlsZXN8aGlzdG9yeXxob3VycykoPz0kfFxcPykvLCB0YWJTZWdtZW50KVxuICAgICAgICAgIClcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGxhc3RQcm9qZWN0TWVzc2FnZSA9IG1lc3NhZ2VzUmVmLmN1cnJlbnQuZmlsdGVyKG1zZyA9PiBtc2cucHJvamVjdElkKS5hdCgtMSlcbiAgICAgICAgY29uc3QgY29udGV4dFByb2plY3RJZFJhdyA9IHByb2plY3Q/LmlkIHx8IGxhc3RQcm9qZWN0TWVzc2FnZT8ucHJvamVjdElkXG4gICAgICAgIGNvbnN0IGNvbnRleHRQcm9qZWN0SWQgPSBjb250ZXh0UHJvamVjdElkUmF3ID8gcGFyc2VJbnQoU3RyaW5nKGNvbnRleHRQcm9qZWN0SWRSYXcpLCAxMCkgOiBudWxsXG4gICAgICAgIGNvbnN0IHBhdGhNYXRjaCA9IHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZS5tYXRjaCgvXlxcL3Byb2plY3RzXFwvKFxcZCspXFwvLylcbiAgICAgICAgY29uc3Qgcm91dGVQcm9qZWN0SWQgPSBwYXRoTWF0Y2ggPyBwYXJzZUludChwYXRoTWF0Y2hbMV0sIDEwKSA6IG51bGxcbiAgICAgICAgY29uc3QgaXNPblByb2plY3RSb3V0ZSA9IGNvbnRleHRQcm9qZWN0SWQgJiYgcm91dGVQcm9qZWN0SWQgJiYgY29udGV4dFByb2plY3RJZCA9PT0gcm91dGVQcm9qZWN0SWRcblxuICAgICAgICBpZiAoaXNPblByb2plY3RSb3V0ZSkge1xuICAgICAgICAgIGlmICh3YXNUYXNrQ3JlYXRpb24pIHtcbiAgICAgICAgICAgIHdpbmRvdy5uZXdQcm9qZWN0RGFzaGJvYXJkPy5hZGRFeGlzdGluZ1Rhc2tUb0Rhc2hib2FyZD8uKHRhc2tJZHMpXG4gICAgICAgICAgfSBlbHNlIGlmICh3YXNUYXNrRWRpdCkge1xuICAgICAgICAgICAgd2luZG93Lm5ld1Byb2plY3REYXNoYm9hcmQ/LmVkaXRFeGlzdGluZ1Rhc2tJbkRhc2hib2FyZD8uKHRhc2tJZHMpXG4gICAgICAgICAgfSBlbHNlIGlmICh3YXNUYXNrRGVsZXRlKSB7XG4gICAgICAgICAgICB3aW5kb3cubmV3UHJvamVjdERhc2hib2FyZD8uZGVsZXRlRXhpc3RpbmdUYXNrRnJvbURhc2hib2FyZD8uKHRhc2tJZHMpXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIFJlZmV0Y2ggZGVsIHRhc2sgcGFuZWwgc2kgZXN0w6EgYWJpZXJ0byB5IGxhIHRvb2wgYXByb2JhZGEgZWRpdMOzL2JvcnLDsyBlc2EgdGFyZWEuXG4gICAgICAvLyBDdWJyZSBsb3MgZG9zIGZsdWpvcyBkZSBhcHByb3ZhbDpcbiAgICAgIC8vICAgMSkgQXBwcm92YWwgcG9yIGJvdMOzbiDihpIgYHByZXZpb3VzTWVzc2FnZS5hcHByb3ZhbC5wZW5kaW5nX2FjdGlvbnNgICh2w61hIGhhc0FwcHJvdmFsSW5QcmV2aW91c01lc3NhZ2UpXG4gICAgICAvLyAgIDIpIE1hbnVhbCBhcHByb3ZhbCAodXN1YXJpbyB0aXBlYSBcInNpXCIvXCJub1wiKSDihpIgYGxhc3RNYW51YWxBcHByb3ZhbFJlZi5jdXJyZW50YFxuICAgICAgY29uc3Qgb3BlblRhc2tQYW5lbElkID0gd2luZG93LnRhc2tQYW5lbD8udGFza0lkXG4gICAgICBjb25zdCBtYW51YWxBcHByb3ZhbCA9IGxhc3RNYW51YWxBcHByb3ZhbFJlZi5jdXJyZW50XG4gICAgICBsYXN0TWFudWFsQXBwcm92YWxSZWYuY3VycmVudCA9IG51bGwgLy8gY29uc3VtaXIgdW5hIHNvbGEgdmV6XG4gICAgICBjb25zdCBtYW51YWxXYXNUYXNrRWRpdCA9ICEhbWFudWFsQXBwcm92YWwgJiYgVEFTS19FRElUX1RPT0xTLmluY2x1ZGVzKG1hbnVhbEFwcHJvdmFsLnRvb2xOYW1lKVxuICAgICAgY29uc3QgbWFudWFsV2FzVGFza0RlbGV0ZSA9ICEhbWFudWFsQXBwcm92YWwgJiYgVEFTS19ERUxFVEVfVE9PTFMuaW5jbHVkZXMobWFudWFsQXBwcm92YWwudG9vbE5hbWUpXG5cbiAgICAgIGlmIChvcGVuVGFza1BhbmVsSWQgJiYgKHdhc1Rhc2tFZGl0IHx8IHdhc1Rhc2tEZWxldGUgfHwgbWFudWFsV2FzVGFza0VkaXQgfHwgbWFudWFsV2FzVGFza0RlbGV0ZSkpIHtcbiAgICAgICAgY29uc3QgbWFudWFsUHNldWRvQWN0aW9uOiBQZW5kaW5nQWN0aW9uIHwgbnVsbCA9IG1hbnVhbEFwcHJvdmFsXG4gICAgICAgICAgPyAoeyB0b29sX25hbWU6IG1hbnVhbEFwcHJvdmFsLnRvb2xOYW1lLCB0b29sX2FyZ3M6IG1hbnVhbEFwcHJvdmFsLnRvb2xBcmdzID8/IHt9IH0gYXMgUGVuZGluZ0FjdGlvbilcbiAgICAgICAgICA6IG51bGxcbiAgICAgICAgY29uc3QgYWZmZWN0ZWRUYXNrSWRzID0gW1xuICAgICAgICAgIC4uLmV4dHJhY3RUYXNrSWRzRnJvbVBlbmRpbmdBY3Rpb25zQXJncyhwZW5kaW5nQWN0aW9ucyksXG4gICAgICAgICAgLi4udGFza0lkc0Zyb21VcmxzLFxuICAgICAgICAgIC4uLnRhc2tJZHNGcm9tRGVsZXRlQXBwcm92YWwsXG4gICAgICAgICAgLi4uKG1hbnVhbFBzZXVkb0FjdGlvbiA/IGV4dHJhY3RUYXNrSWRzRnJvbVBlbmRpbmdBY3Rpb25zQXJncyhbbWFudWFsUHNldWRvQWN0aW9uXSkgOiBbXSksXG4gICAgICAgIF0ubWFwKFN0cmluZylcbiAgICAgICAgaWYgKGFmZmVjdGVkVGFza0lkcy5pbmNsdWRlcyhTdHJpbmcob3BlblRhc2tQYW5lbElkKSkpIHtcbiAgICAgICAgICB3aW5kb3cudGFza1BhbmVsPy5yZWZldGNoVGFzaz8uKClcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBhZGRNZXNzYWdlKHtcbiAgICAgICAgaWQ6IGBhbnN3ZXItJHttZW1vcnlTZXNzaW9uSWR9YCxcbiAgICAgICAgbWVzc2FnZTogY29udGVudFRvQWRkLFxuICAgICAgICBkYXRlOiBuZXcgRGF0ZSgpLFxuICAgICAgICB1c2VyOiB7IGlkOiAnYXNzaXN0YW50JywgbmFtZTogJ0Fzc2lzdGFudCcgfSxcbiAgICAgICAgcm9sZTogQ2hhdEhpc3RvcnlSb2xlLkFTU0lTVEFOVCxcbiAgICAgICAgc291cmNlcyxcbiAgICAgICAgLi4uKGF0dGFjaG1lbnRzLmxlbmd0aCA+IDAgPyB7IGF0dGFjaG1lbnRzIH0gOiB7fSksXG4gICAgICAgIG1lbW9yeVNlc3Npb25JZCxcbiAgICAgICAgc3VnZ2VzdGlvbnM6IHN1Z2dlc3Rpb25zIHx8IFtdLFxuICAgICAgICAuLi4oY3JlYXRlQWdlbnRGb2xsb3dVcCA/IHsgY3JlYXRlQWdlbnRGb2xsb3dVcCB9IDoge30pLFxuICAgICAgfSlcblxuICAgICAgLy8gT3JxdWVzdGFkb3I6IGFjdHVhbGl6YSBlbCBjaGlwIGRlIGNvbnRleHRvIGNvbiBlbCBwcm95ZWN0by9jbGllbnRlXG4gICAgICAvLyBxdWUgZWwgc3ViYWdlbnRlIHJlc29sdmnDsyBkaW7DoW1pY2FtZW50ZSB2w61hIGhlcnJhbWllbnRhcyAoZWouIHByb2plY3RfaWRcbiAgICAgIC8vIGVuY29udHJhZG8gcG9yIGdldF9wcm9qZWN0X2lkX2Jhc2VkX29uX25hbWUgbyBnZXRfcHJvamVjdF93aXRoX3Rhc2tzX2luZm8pLlxuICAgICAgaWYgKHJlc29sdmVkQ29udGV4dD8ucHJvamVjdF9pZCAmJiAhY2hpcHNQcm9qZWN0KSB7XG4gICAgICAgIGlmIChyZXNvbHZlZENvbnRleHQucHJvamVjdF9uYW1lKSB7XG4gICAgICAgICAgc2V0Q2hpcHNQcm9qZWN0KHtcbiAgICAgICAgICAgIHByb2plY3ROYW1lOiByZXNvbHZlZENvbnRleHQucHJvamVjdF9uYW1lLFxuICAgICAgICAgICAgY2xpZW50TmFtZTogcmVzb2x2ZWRDb250ZXh0LmNsaWVudF9uYW1lIHx8ICcnLFxuICAgICAgICAgICAgcHJvamVjdElkOiBTdHJpbmcocmVzb2x2ZWRDb250ZXh0LnByb2plY3RfaWQpLFxuICAgICAgICAgIH0pXG4gICAgICAgICAgc2V0UHJvamVjdCh7XG4gICAgICAgICAgICBpZDogcmVzb2x2ZWRDb250ZXh0LnByb2plY3RfaWQsXG4gICAgICAgICAgICBuYW1lOiByZXNvbHZlZENvbnRleHQucHJvamVjdF9uYW1lLFxuICAgICAgICAgICAgLi4uKHJlc29sdmVkQ29udGV4dC5jbGllbnRfaWQgPyB7IGNsaWVudElkOiByZXNvbHZlZENvbnRleHQuY2xpZW50X2lkIH0gOiB7fSksXG4gICAgICAgICAgICAuLi4ocmVzb2x2ZWRDb250ZXh0LmNsaWVudF9uYW1lXG4gICAgICAgICAgICAgID8geyBjbGllbnQ6IHsgaWQ6IHJlc29sdmVkQ29udGV4dC5jbGllbnRfaWQgfHwgMCwgbmFtZTogcmVzb2x2ZWRDb250ZXh0LmNsaWVudF9uYW1lIH0gfVxuICAgICAgICAgICAgICA6IHt9KSxcbiAgICAgICAgICB9KVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGZldGNoUHJvamVjdHMocmVzb2x2ZWRDb250ZXh0LnByb2plY3RfaWQpLnRoZW4ocHJvamVjdHMgPT4ge1xuICAgICAgICAgICAgY29uc3QgZm91bmQgPSBwcm9qZWN0cz8uZmluZChwID0+IE51bWJlcihwLmlkKSA9PT0gcmVzb2x2ZWRDb250ZXh0LnByb2plY3RfaWQpXG4gICAgICAgICAgICBpZiAoZm91bmQpIHtcbiAgICAgICAgICAgICAgc2V0Q2hpcHNQcm9qZWN0KHtcbiAgICAgICAgICAgICAgICBwcm9qZWN0TmFtZTogZm91bmQubmFtZSxcbiAgICAgICAgICAgICAgICBjbGllbnROYW1lOiBmb3VuZC5jbGllbnQ/Lm5hbWUgfHwgcmVzb2x2ZWRDb250ZXh0LmNsaWVudF9uYW1lIHx8ICcnLFxuICAgICAgICAgICAgICAgIHByb2plY3RJZDogU3RyaW5nKGZvdW5kLmlkKSxcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgc2V0UHJvamVjdChmb3VuZClcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHNldENoaXBzUHJvamVjdCh7XG4gICAgICAgICAgICAgICAgcHJvamVjdE5hbWU6IGBQcm95ZWN0byAke3Jlc29sdmVkQ29udGV4dC5wcm9qZWN0X2lkfWAsXG4gICAgICAgICAgICAgICAgY2xpZW50TmFtZTogcmVzb2x2ZWRDb250ZXh0LmNsaWVudF9uYW1lIHx8ICcnLFxuICAgICAgICAgICAgICAgIHByb2plY3RJZDogU3RyaW5nKHJlc29sdmVkQ29udGV4dC5wcm9qZWN0X2lkKSxcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgc2V0UHJvamVjdCh7IGlkOiByZXNvbHZlZENvbnRleHQucHJvamVjdF9pZCEsIG5hbWU6IGBQcm95ZWN0byAke3Jlc29sdmVkQ29udGV4dC5wcm9qZWN0X2lkfWAgfSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAocmVzb2x2ZWRDb250ZXh0Py5jbGllbnRfaWQgJiYgIWNsaWVudCkge1xuICAgICAgICBzZXRDbGllbnQ/Lih7XG4gICAgICAgICAgaWQ6IHJlc29sdmVkQ29udGV4dC5jbGllbnRfaWQsXG4gICAgICAgICAgbmFtZTogcmVzb2x2ZWRDb250ZXh0LmNsaWVudF9uYW1lIHx8ICcnLFxuICAgICAgICB9KVxuICAgICAgfVxuXG4gICAgICBpZiAoY3JlYXRlQWdlbnRGb2xsb3dVcD8uYWdlbnRJZCkge1xuICAgICAgICBmZXRjaEFnZW50RGV0YWlsKGNyZWF0ZUFnZW50Rm9sbG93VXAuYWdlbnRJZClcbiAgICAgICAgICAudGhlbihjaGF0QWdlbnQgPT4ge1xuICAgICAgICAgICAgZG9jdW1lbnQuZGlzcGF0Y2hFdmVudChcbiAgICAgICAgICAgICAgbmV3IEN1c3RvbUV2ZW50KCdtYWlhLW1lcmdlLWNyZWF0ZWQtYWdlbnQtaW50by1saXN0Jywge1xuICAgICAgICAgICAgICAgIGRldGFpbDogeyBhZ2VudDogY2hhdEFnZW50IH0sXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApXG4gICAgICAgICAgfSlcbiAgICAgICAgICAuY2F0Y2goZXJyID0+IHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ1t1c2VDaGF0TWFuYWdlcl0gTm8gc2UgcHVkbyBhw7FhZGlyIGVsIGFnZW50ZSByZWNpw6luIGNyZWFkbyBhbCBsaXN0YWRvJywgZXJyKVxuICAgICAgICAgIH0pXG4gICAgICB9XG5cbiAgICAgIGlmIChlZGl0QWdlbnRGb2xsb3dVcD8uYWdlbnRJZCkge1xuICAgICAgICBmZXRjaEFnZW50RGV0YWlsKGVkaXRBZ2VudEZvbGxvd1VwLmFnZW50SWQpXG4gICAgICAgICAgLnRoZW4oY2hhdEFnZW50ID0+IHtcbiAgICAgICAgICAgIGRvY3VtZW50LmRpc3BhdGNoRXZlbnQoXG4gICAgICAgICAgICAgIG5ldyBDdXN0b21FdmVudCgnbWFpYS1zeW5jLWVkaXRlZC1hZ2VudC1mcm9tLWNoYXQnLCB7XG4gICAgICAgICAgICAgICAgZGV0YWlsOiB7IGFnZW50OiBjaGF0QWdlbnQgfSxcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIClcbiAgICAgICAgICB9KVxuICAgICAgICAgIC5jYXRjaChlcnIgPT4ge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcignW3VzZUNoYXRNYW5hZ2VyXSBObyBzZSBwdWRvIHJlZnJlc2NhciBlbCBhZ2VudGUgZWRpdGFkbycsIGVycilcbiAgICAgICAgICB9KVxuICAgICAgfVxuXG4gICAgICBpc1Byb2Nlc3NpbmdSZWYuY3VycmVudCA9IGZhbHNlXG4gICAgICBpZiAoZmlyc3RUaW1lUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgY29uc3QgY3VzdG9tRXZlbnQgPSBuZXcgQ3VzdG9tRXZlbnQoJ3JlZmV0Y2gtc2Vzc2lvbicpXG4gICAgICAgIGRvY3VtZW50LmRpc3BhdGNoRXZlbnQoY3VzdG9tRXZlbnQpXG4gICAgICAgIGZpcnN0VGltZVJlZi5jdXJyZW50ID0gZmFsc2VcbiAgICAgIH1cbiAgICB9LFxuICAgIFthZGRNZXNzYWdlLCByZW1vdmVNZXNzYWdlLCBwcm9qZWN0LCBnZXRUYWJUYXNrRGVmYXVsdCwgZXZlbnQsIGFnZW50XVxuICApXG5cbiAgY29uc3QgaGFuZGxlU3RyZWFtU3RvcCA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBjbGVhclN0cmVhbVVpUmVmLmN1cnJlbnQoKVxuICAgIGNvbnN0IHRlbXBNZXNzYWdlSWQgPSBgYW5zd2VyLSR7Y3VycmVudE1lc3NhZ2VJZC5jdXJyZW50fS1zdHJlYW1pbmdgXG4gICAgc3RyZWFtaW5nU3RvcmUuY2xlYXIoKVxuICAgIHN0cmVhbWluZ1BsYWNlaG9sZGVySWRSZWYuY3VycmVudCA9IG51bGxcbiAgICBhY3RpdmVTdHJlYW1DaGF0SWRSZWYuY3VycmVudCA9IG51bGxcbiAgICByZW1vdmVNZXNzYWdlKHRlbXBNZXNzYWdlSWQpXG5cbiAgICBhZGRNZXNzYWdlKHtcbiAgICAgIGlkOiBgYW5zd2VyLSR7Y3VycmVudE1lc3NhZ2VJZC5jdXJyZW50fS1jYW5jZWxsZWRgLFxuICAgICAgbWVzc2FnZTogdCgnY2hhdC5jYW5jZWxsZWQnKSxcbiAgICAgIGRhdGU6IG5ldyBEYXRlKCksXG4gICAgICB1c2VyOiB7IGlkOiAnYXNzaXN0YW50JywgbmFtZTogJ0Fzc2lzdGFudCcgfSxcbiAgICAgIHJvbGU6IENoYXRIaXN0b3J5Um9sZS5BU1NJU1RBTlQsXG4gICAgICBpc0Zyb250ZW5kQ2FuY2VsbGVkOiB0cnVlLFxuICAgIH0pXG4gICAgaXNQcm9jZXNzaW5nUmVmLmN1cnJlbnQgPSBmYWxzZVxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgY29uc3QgY3VzdG9tRXZlbnQgPSBuZXcgQ3VzdG9tRXZlbnQoJ3JlZmV0Y2gtc2Vzc2lvbicpXG4gICAgICBkb2N1bWVudC5kaXNwYXRjaEV2ZW50KGN1c3RvbUV2ZW50KVxuICAgIH0sIDUwMClcbiAgfSwgW2FkZE1lc3NhZ2UsIHJlbW92ZU1lc3NhZ2UsIHRdKVxuXG4gIGNvbnN0IGhhbmRsZUFwcHJvdmFsUmVxdWlyZWQgPSB1c2VDYWxsYmFjayhcbiAgICAoYXBwcm92YWw6IEFwcHJvdmFsUmVxdWVzdCwgYWNjdW11bGF0ZWRDb250ZW50OiBzdHJpbmcpID0+IHtcbiAgICAgIGNvbnN0IHRlbXBNZXNzYWdlSWQgPSBgYW5zd2VyLSR7Y3VycmVudE1lc3NhZ2VJZC5jdXJyZW50fS1zdHJlYW1pbmdgXG4gICAgICBzdHJlYW1pbmdTdG9yZS5jbGVhcigpXG4gICAgICBzdHJlYW1pbmdQbGFjZWhvbGRlcklkUmVmLmN1cnJlbnQgPSBudWxsXG4gICAgICBhY3RpdmVTdHJlYW1DaGF0SWRSZWYuY3VycmVudCA9IG51bGxcbiAgICAgIHJlbW92ZU1lc3NhZ2UodGVtcE1lc3NhZ2VJZClcblxuICAgICAgLy8gT3JxdWVzdGFkb3I6IGV4dHJhZXIgY29udGV4dG8gcmVzdWVsdG8gZGVsIHBheWxvYWQgZGUgYXByb2JhY2nDs24geVxuICAgICAgLy8gYWN0dWFsaXphciBlbCBjaGlwIGlubWVkaWF0YW1lbnRlIOKAlCBzaW4gZXNwZXJhciBhbCBjb21wbGV0ZS9yZWZyZXNoLlxuICAgICAgLy8gRWwgYmFja2VuZCBpbmNsdXllIHJlc29sdmVkX2NvbnRleHQgZW4gc3ViYWdlbnRfdXNlZCAoZGVudHJvIGRlbFxuICAgICAgLy8gYXBwcm92YWxfcmVxdWlyZWQgZGF0YSBwYXJhIHN1YmFnZW50ZXMpIGNvbiBlbCBwcm9qZWN0X2lkL2NsaWVudF9pZFxuICAgICAgLy8gcXVlIGVsIHN1YmFnZW50ZSBkZXRlcm1pbsOzIGFudGVzIGRlbCBpbnRlcnJ1cHQuXG4gICAgICBjb25zdCBhcHByb3ZhbEFueSA9IGFwcHJvdmFsIGFzIEFwcHJvdmFsUmVxdWVzdCAmIHtcbiAgICAgICAgcmVzb2x2ZWRfY29udGV4dD86IFJlc29sdmVkQ29udGV4dCB8IG51bGxcbiAgICAgICAgc3ViYWdlbnQ/OiB7IHJlc29sdmVkX2NvbnRleHQ/OiBSZXNvbHZlZENvbnRleHQgfCBudWxsIH1cbiAgICAgIH1cbiAgICAgIGNvbnN0IHJjID0gYXBwcm92YWxBbnkucmVzb2x2ZWRfY29udGV4dCA/PyBhcHByb3ZhbEFueS5zdWJhZ2VudD8ucmVzb2x2ZWRfY29udGV4dCA/PyBudWxsXG4gICAgICBpZiAocmM/LnByb2plY3RfaWQgJiYgIWNoaXBzUHJvamVjdCkge1xuICAgICAgICBpZiAocmMucHJvamVjdF9uYW1lKSB7XG4gICAgICAgICAgLy8gVGVuZW1vcyBub21icmU6IHNldGVhciBlbCBjaGlwIGRpcmVjdGFtZW50ZVxuICAgICAgICAgIHNldENoaXBzUHJvamVjdCh7XG4gICAgICAgICAgICBwcm9qZWN0TmFtZTogcmMucHJvamVjdF9uYW1lLFxuICAgICAgICAgICAgY2xpZW50TmFtZTogcmMuY2xpZW50X25hbWUgfHwgJycsXG4gICAgICAgICAgICBwcm9qZWN0SWQ6IFN0cmluZyhyYy5wcm9qZWN0X2lkKSxcbiAgICAgICAgICB9KVxuICAgICAgICAgIHNldFByb2plY3Qoe1xuICAgICAgICAgICAgaWQ6IHJjLnByb2plY3RfaWQsXG4gICAgICAgICAgICBuYW1lOiByYy5wcm9qZWN0X25hbWUsXG4gICAgICAgICAgICAuLi4ocmMuY2xpZW50X2lkID8geyBjbGllbnRJZDogcmMuY2xpZW50X2lkIH0gOiB7fSksXG4gICAgICAgICAgICAuLi4ocmMuY2xpZW50X25hbWUgPyB7IGNsaWVudDogeyBpZDogcmMuY2xpZW50X2lkIHx8IDAsIG5hbWU6IHJjLmNsaWVudF9uYW1lIH0gfSA6IHt9KSxcbiAgICAgICAgICB9KVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIFNvbG8gdGVuZW1vcyBlbCBJRCDigJQgZmV0Y2ggZGVsIG5vbWJyZSBjb21wbGV0byBkZWwgcHJveWVjdG9cbiAgICAgICAgICBmZXRjaFByb2plY3RzKHJjLnByb2plY3RfaWQpLnRoZW4ocHJvamVjdHMgPT4ge1xuICAgICAgICAgICAgY29uc3QgZm91bmQgPSBwcm9qZWN0cz8uZmluZChwID0+IE51bWJlcihwLmlkKSA9PT0gcmMucHJvamVjdF9pZClcbiAgICAgICAgICAgIGlmIChmb3VuZCkge1xuICAgICAgICAgICAgICBzZXRDaGlwc1Byb2plY3Qoe1xuICAgICAgICAgICAgICAgIHByb2plY3ROYW1lOiBmb3VuZC5uYW1lLFxuICAgICAgICAgICAgICAgIGNsaWVudE5hbWU6IGZvdW5kLmNsaWVudD8ubmFtZSB8fCByYy5jbGllbnRfbmFtZSB8fCAnJyxcbiAgICAgICAgICAgICAgICBwcm9qZWN0SWQ6IFN0cmluZyhmb3VuZC5pZCksXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIHNldFByb2plY3QoZm91bmQpXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAvLyBGYWxsYmFjazogbW9zdHJhciBlbCBJRCBzaSBubyBzZSBwdWVkZSByZXNvbHZlciBlbCBub21icmVcbiAgICAgICAgICAgICAgc2V0Q2hpcHNQcm9qZWN0KHtcbiAgICAgICAgICAgICAgICBwcm9qZWN0TmFtZTogYFByb3llY3RvICR7cmMucHJvamVjdF9pZH1gLFxuICAgICAgICAgICAgICAgIGNsaWVudE5hbWU6IHJjLmNsaWVudF9uYW1lIHx8ICcnLFxuICAgICAgICAgICAgICAgIHByb2plY3RJZDogU3RyaW5nKHJjLnByb2plY3RfaWQpLFxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICBzZXRQcm9qZWN0KHsgaWQ6IHJjLnByb2plY3RfaWQhLCBuYW1lOiBgUHJveWVjdG8gJHtyYy5wcm9qZWN0X2lkfWAgfSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAocmM/LmNsaWVudF9pZCAmJiAhY2xpZW50KSB7XG4gICAgICAgIHNldENsaWVudD8uKHsgaWQ6IHJjLmNsaWVudF9pZCwgbmFtZTogcmMuY2xpZW50X25hbWUgfHwgJycgfSlcbiAgICAgIH1cblxuICAgICAgY29uc3QgaGl0bENvbnRleHQ6IEhpdGxFeGVjdXRpb25Db250ZXh0ID0ge1xuICAgICAgICBtZXNzYWdlSWQ6IGBhcHByb3ZhbC0ke2FwcHJvdmFsLm9yaWdpbmFsX3RocmVhZF9pZH1gLFxuICAgICAgICBtZXNzYWdlVGV4dDogYWNjdW11bGF0ZWRDb250ZW50IHx8ICcnLFxuICAgICAgICBhcHByb3ZhbCxcbiAgICAgICAgcGVuZGluZ0FjdGlvbnM6IGFwcHJvdmFsLnBlbmRpbmdfYWN0aW9ucyxcbiAgICAgICAgdGhyZWFkSWRzOiBhcHByb3ZhbC5wZW5kaW5nX2FjdGlvbnM/Lm1hcChhY3Rpb24gPT4gYWN0aW9uLnRocmVhZF9pZCksXG4gICAgICB9XG4gICAgICBoaXRsRXhlY3V0aW9uQ29udGV4dFJlZi5jdXJyZW50ID0gaGl0bENvbnRleHRcblxuICAgICAgaWYgKGFwcHJvdmFsLm1hbnVhbF9hcHByb3ZhbF9kZXRlY3RlZCkge1xuICAgICAgICBjb25zdCBmaXJzdEFjdGlvbiA9IGFwcHJvdmFsLnBlbmRpbmdfYWN0aW9ucz8uWzBdXG4gICAgICAgIGNvbnN0IHRvb2xOYW1lID0gKGFwcHJvdmFsIGFzIHsgdG9vbF9uYW1lPzogc3RyaW5nIH0pLnRvb2xfbmFtZSA/PyBmaXJzdEFjdGlvbj8udG9vbF9uYW1lID8/ICcnXG4gICAgICAgIGNvbnN0IHRvb2xBcmdzID1cbiAgICAgICAgICAoKGFwcHJvdmFsIGFzIHsgdG9vbF9hcmdzPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gfSkudG9vbF9hcmdzID8/XG4gICAgICAgICAgICAoZmlyc3RBY3Rpb24/LnRvb2xfYXJncyBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB8IHVuZGVmaW5lZCkpIHx8XG4gICAgICAgICAgbnVsbFxuICAgICAgICBpZiAodG9vbE5hbWUpIHtcbiAgICAgICAgICBsYXN0TWFudWFsQXBwcm92YWxSZWYuY3VycmVudCA9IHsgdG9vbE5hbWUsIHRvb2xBcmdzIH1cbiAgICAgICAgfVxuICAgICAgICBpc1Byb2Nlc3NpbmdSZWYuY3VycmVudCA9IGZhbHNlXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICAvLyBBZGQgYSBtZXNzYWdlIHdpdGggdGhlIGFwcHJvdmFsIHJlcXVlc3RcbiAgICAgIGFkZE1lc3NhZ2Uoe1xuICAgICAgICBpZDogYGFwcHJvdmFsLSR7YXBwcm92YWwub3JpZ2luYWxfdGhyZWFkX2lkfWAsXG4gICAgICAgIG1lc3NhZ2U6IGFjY3VtdWxhdGVkQ29udGVudCB8fCAnJyxcbiAgICAgICAgZGF0ZTogbmV3IERhdGUoKSxcbiAgICAgICAgdXNlcjogeyBpZDogJ2Fzc2lzdGFudCcsIG5hbWU6ICdBc3Npc3RhbnQnIH0sXG4gICAgICAgIHJvbGU6IENoYXRIaXN0b3J5Um9sZS5BU1NJU1RBTlQsXG4gICAgICAgIGFwcHJvdmFsLFxuICAgICAgICBhcHByb3ZhbFN0YXR1czogJ3BlbmRpbmcnLFxuICAgICAgfSlcbiAgICAgIGlzUHJvY2Vzc2luZ1JlZi5jdXJyZW50ID0gZmFsc2VcbiAgICB9LFxuICAgIFthZGRNZXNzYWdlLCByZW1vdmVNZXNzYWdlLCBjaGlwc1Byb2plY3QsIHNldENoaXBzUHJvamVjdCwgc2V0UHJvamVjdCwgY2xpZW50LCBzZXRDbGllbnRdXG4gIClcblxuICBjb25zdCB7XG4gICAgYXNrTWFpYSxcbiAgICBpc0xvYWRpbmc6IHdhaXRpbmdSZXNwb25zZSxcbiAgICBpc1dyaXRpbmcsXG4gICAgbG9hZGluZ01lc3NhZ2UsXG4gICAgc3RyZWFtQWN0aXZpdHksXG4gICAgdXBkYXRlU3RyZWFtQWN0aXZpdHksXG4gICAgc3RvcFN0cmVhbWluZyxcbiAgICBhYm9ydFN0cmVhbVNpbGVudGx5LFxuICB9ID0gdXNlT3JjaGVzdHJhdG9yU3RyZWFtKHtcbiAgICBvbkVycm9yOiBoYW5kbGVTdHJlYW1FcnJvcixcbiAgICBvblN0cmVhbVVwZGF0ZTogaGFuZGxlU3RyZWFtVXBkYXRlLFxuICAgIG9uRmluaXNoU3RyZWFtOiBoYW5kbGVTdHJlYW1GaW5pc2gsXG4gICAgb25TdG9wOiBoYW5kbGVTdHJlYW1TdG9wLFxuICAgIG9uQXBwcm92YWxSZXF1aXJlZDogaGFuZGxlQXBwcm92YWxSZXF1aXJlZCxcbiAgICBoaXRsRXhlY3V0aW9uQ29udGV4dFJlZixcbiAgfSlcblxuICAvLyBNYW50ZW5lbW9zIGVsIHNldHRlciBtw6FzIHJlY2llbnRlIGVuIHVuYSByZWYgcGFyYSBxdWUgcHVlZGEgdXNhcnNlIGRlc2RlXG4gIC8vIGVmZWN0b3MgZGVmaW5pZG9zIGFudGVzIGVuIGVsIGFyY2hpdm8gKGNhbWJpbyBkZSBjaGF0LCByZXNldCwgZXRjLikuXG4gIGFib3J0U3RyZWFtU2lsZW50bHlSZWYuY3VycmVudCA9IGFib3J0U3RyZWFtU2lsZW50bHlcbiAgY2xlYXJTdHJlYW1VaVJlZi5jdXJyZW50ID0gKCkgPT4ge1xuICAgIHVwZGF0ZVN0cmVhbUFjdGl2aXR5KG51bGwpXG4gICAgc2V0QWN0aXZlTG9hZGluZ3Moe30pXG4gICAgaGl0bEV4ZWN1dGlvbkNvbnRleHRSZWYuY3VycmVudCA9IG51bGxcbiAgfVxuXG4gIGNvbnN0IGN1cnJlbnRQcm9qZWN0ID0gcHJvamVjdFxuXG4gIGNvbnN0IHNlbmRNZXNzYWdlID0gdXNlQ2FsbGJhY2soXG4gICAgYXN5bmMgKFxuICAgICAgbWVzc2FnZTogc3RyaW5nLFxuICAgICAgYXR0YWNobWVudHNPck9wdGlvbnM/OiBBdHRhY2htZW50RmlsZVtdIHwgU2VuZE1lc3NhZ2VPcHRpb25zLFxuICAgICAgZmFxSWQ/OiBzdHJpbmcsXG4gICAgICBhZ2VudFN1Z2dlc3Rpb25JZD86IHN0cmluZyxcbiAgICAgIG1lbnRpb25zPzogQ29udGV4dE1lbnRpb25bXSxcbiAgICAgIGZ1YUlkPzogc3RyaW5nLFxuICAgICAgc2NJZD86IHN0cmluZ1xuICAgICkgPT4ge1xuICAgICAgaWYgKGlzUHJvY2Vzc2luZ1JlZi5jdXJyZW50IHx8IHdhaXRpbmdSZXNwb25zZSB8fCBsb2FkaW5nTWVzc2FnZXMpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHsgYXR0YWNobWVudHMsIG9wdGlvbnMgfSA9IG5vcm1hbGl6ZVNlbmRNZXNzYWdlQXJncyhhdHRhY2htZW50c09yT3B0aW9ucylcbiAgICAgIC8vIExhcyBtZW50aW9ucyBwdWVkZW4gdmVuaXIgdsOtYSA1dG8gcGFyw6FtZXRybyAoY2FsbCBwb3NpdGlvbmFsIGRlc2RlIGVsIGZvb3RlcilcbiAgICAgIC8vIG8gdsOtYSBTZW5kTWVzc2FnZU9wdGlvbnMgKGNhbGwgcHJvZ3JhbcOhdGljbykuIEVsIHBhcsOhbWV0cm8gZXhwbMOtY2l0byBnYW5hLlxuICAgICAgY29uc3QgZWZmZWN0aXZlTWVudGlvbnMgPSBtZW50aW9ucyA/PyBvcHRpb25zLm1lbnRpb25zXG4gICAgICBjb25zdCBjb250ZXh0TWVzc2FnZTogQ29udGV4dE1lc3NhZ2UgfCB1bmRlZmluZWQgPSBidWlsZENvbnRleHRNZXNzYWdlKGVmZmVjdGl2ZU1lbnRpb25zKVxuICAgICAgY29uc3QgcGF5bG9hZEZ1YUlkID0gZnVhSWQgPz8gb3B0aW9ucy5mdWFJZFxuICAgICAgY29uc3QgcGF5bG9hZFNjSWQgPSBzY0lkID8/IG9wdGlvbnMuc2NJZFxuICAgICAgY29uc3QgcGF5bG9hZENvbnRleHREYXRhID0gb3B0aW9ucy5jb250ZXh0RGF0YVxuICAgICAgY29uc3QgZGlzcGxheU1lc3NhZ2UgPSBmb3JtYXRRdWlja0FjdGlvbk1lc3NhZ2VGb3JEaXNwbGF5KG1lc3NhZ2UsIHtcbiAgICAgICAgZnVhSWQ6IHBheWxvYWRGdWFJZCxcbiAgICAgICAgc2NJZDogcGF5bG9hZFNjSWQsXG4gICAgICB9KVxuXG4gICAgICBpc1Byb2Nlc3NpbmdSZWYuY3VycmVudCA9IHRydWVcbiAgICAgIGNvbnN0IG5ld01lc3NhZ2VJZCA9IHV1aWR2NCgpXG4gICAgICBjdXJyZW50TWVzc2FnZUlkLmN1cnJlbnQgPSBuZXdNZXNzYWdlSWRcbiAgICAgIGN1cnJlbnRVc2VyUXVlc3Rpb24uY3VycmVudCA9IG1lc3NhZ2VcblxuICAgICAgaWYgKCFyZXBvcnRlZEV2ZW50LmN1cnJlbnQpIHtcbiAgICAgICAgZXZlbnQoRVZFTlRTLnBtQWlUeXBlZFRleHQpXG4gICAgICAgIHJlcG9ydGVkRXZlbnQuY3VycmVudCA9IHRydWVcbiAgICAgIH1cblxuICAgICAgLy8gVmVyaWZpY2FyIHNpIGVsIGNvbnRleHRvIGdsb2JhbCBlc3TDoSBkZXNhY3R1YWxpemFkb1xuICAgICAgY29uc3QgbGFzdE1lc3NhZ2VXaXRoUHJvamVjdCA9IG1lc3NhZ2VzUmVmLmN1cnJlbnQuZmlsdGVyKG1zZyA9PiBtc2cucHJvamVjdElkKS5hdCgtMSlcblxuICAgICAgY29uc3QgY3VycmVudEFnZW50RnJvbU1lc3NhZ2VzID0gbWVzc2FnZXNSZWYuY3VycmVudD8uW21lc3NhZ2VzUmVmLmN1cnJlbnQubGVuZ3RoIC0gMV0/LmFnZW50SWRcblxuICAgICAgLy8gTm8gYWdyZWdhciBwcm9qZWN0SWQgYWwgbWVuc2FqZSBkZWwgdXN1YXJpbyAtIHNlIGRldGVybWluYXLDoSBkZXNwdcOpc1xuICAgICAgYWRkTWVzc2FnZSh7XG4gICAgICAgIGlkOiBgcXVlc3Rpb24tJHtjdXJyZW50TWVzc2FnZUlkLmN1cnJlbnR9YCxcbiAgICAgICAgbWVzc2FnZTogZGlzcGxheU1lc3NhZ2UsXG4gICAgICAgIGRhdGU6IG5ldyBEYXRlKCksXG4gICAgICAgIHVzZXI6IGN1cnJlbnRVc2VyLFxuICAgICAgICByb2xlOiBDaGF0SGlzdG9yeVJvbGUuVVNFUixcbiAgICAgICAgc291cmNlczogYXR0YWNobWVudHMsXG4gICAgICAgIC4uLihjb250ZXh0TWVzc2FnZSA/IHsgY29udGV4dE1lc3NhZ2UgfSA6IHt9KSxcbiAgICAgIH0pXG5cbiAgICAgIGN1cnJlbnRNZXNzYWdlSWQuY3VycmVudCA9IHV1aWR2NCgpXG5cbiAgICAgIGNvbnN0IHN0cmVhbWluZ1BsYWNlaG9sZGVySWQgPSBgYW5zd2VyLSR7Y3VycmVudE1lc3NhZ2VJZC5jdXJyZW50fS1zdHJlYW1pbmdgXG4gICAgICBzdHJlYW1pbmdQbGFjZWhvbGRlcklkUmVmLmN1cnJlbnQgPSBzdHJlYW1pbmdQbGFjZWhvbGRlcklkXG4gICAgICBhY3RpdmVTdHJlYW1DaGF0SWRSZWYuY3VycmVudCA9IGN1cnJlbnRDaGF0SWQuY3VycmVudFxuICAgICAgYWRkTWVzc2FnZSh7XG4gICAgICAgIGlkOiBzdHJlYW1pbmdQbGFjZWhvbGRlcklkLFxuICAgICAgICBtZXNzYWdlOiAnJyxcbiAgICAgICAgZGF0ZTogbmV3IERhdGUoKSxcbiAgICAgICAgdXNlcjogeyBpZDogJ2Fzc2lzdGFudCcsIG5hbWU6IGFnZW50Py5uYW1lIHx8ICdBc3Npc3RhbnQnIH0sXG4gICAgICAgIHJvbGU6IENoYXRIaXN0b3J5Um9sZS5BU1NJU1RBTlQsXG4gICAgICB9KVxuXG4gICAgICBsZXQgZmluYWxNZXNzYWdlID0gbWVzc2FnZVxuXG4gICAgICBpZiAobWVzc2FnZSA9PT0gdCgncWEuaXRlbXMucmVudGFiaWxpZGFkX3Byb3llY3RvJykpIHtcbiAgICAgICAgZmluYWxNZXNzYWdlID0gYEZBUTogJHt0KCdxYS5pdGVtcy5yZW50YWJpbGlkYWRfcHJveWVjdG8nKX0gLSBUaXBvIGRlIHJlbnRhYmlsaWRhZDogJHtcbiAgICAgICAgICBvcHRpb25zLnByb2plY3RDaGFuZ2VkPy5pbmNvbWVUeXBlIHx8IHByb2plY3Q/LmluY29tZVR5cGVcbiAgICAgICAgfWBcbiAgICAgIH1cblxuICAgICAgY29uc3QgaGlzdG9yeSA9IG1lc3NhZ2VzUmVmLmN1cnJlbnQubWFwKGhpc3RvcnlNZXNzYWdlID0+ICh7XG4gICAgICAgIGNvbnRlbnQ6IGhpc3RvcnlNZXNzYWdlLm1lc3NhZ2UsXG4gICAgICAgIHJvbGU6IGhpc3RvcnlNZXNzYWdlLnVzZXIuaWQgPT09IGF1dGhVc2VyLmlkLnRvU3RyaW5nKCkgPyBDaGF0SGlzdG9yeVJvbGUuVVNFUiA6IENoYXRIaXN0b3J5Um9sZS5BU1NJU1RBTlQsXG4gICAgICB9KSlcblxuICAgICAgY29uc3QgbGFzdE1lc3NhZ2VQcm9qZWN0SWQgPSBsYXN0TWVzc2FnZVdpdGhQcm9qZWN0Py5wcm9qZWN0SWRcbiAgICAgIC8vIGNoaXBzUHJvamVjdCBlcyBsYSBmdWVudGUgZGUgdmVyZGFkIGRlbCBjb250ZXh0byB2aXNpYmxlIGVuIGVsIGNoaXA6XG4gICAgICAvLyBzZSBzZXRlYSBhbCBwaW5lYXIgZXhwbMOtY2l0YW1lbnRlIG8gcG9yIHJlc29sdWNpw7NuIGRpbsOhbWljYSBkZWwgb3JxdWVzdGFkb3IsXG4gICAgICAvLyB5IHNlIGxpbXBpYSBhbCB2b2x2ZXIgYWwgaG9tZSAobnVldmEgY29udmVyc2FjacOzbiBvIGNhbWJpbyBkZSBjaGF0KS5cbiAgICAgIC8vIEN1YW5kbyBlcyBudWxsIG5vIGhheSBjb250ZXh0byBleHBsw61jaXRvIOKGkiByZXN0YXVyYXIgZGVzZGUgZWwgaGlzdG9yaWFsIGRlbCBjaGF0XG4gICAgICAvLyAoZWouIHByaW1lcmEgYXBlcnR1cmEgZGUgdW5hIGNvbnZlcnNhY2nDs24gZXhpc3RlbnRlKS5cbiAgICAgIGNvbnN0IGNoaXBzUHJvamVjdElkID0gY2hpcHNQcm9qZWN0Py5wcm9qZWN0SWQgPyBOdW1iZXIoY2hpcHNQcm9qZWN0LnByb2plY3RJZCkgOiBudWxsXG5cbiAgICAgIGxldCBwcm9qZWN0VG9SZXF1ZXN0OiBudW1iZXIgfCBudWxsID0gbnVsbFxuXG4gICAgICBpZiAoY2hpcHNQcm9qZWN0SWQgIT0gbnVsbCAmJiBOdW1iZXIuaXNGaW5pdGUoY2hpcHNQcm9qZWN0SWQpKSB7XG4gICAgICAgIHByb2plY3RUb1JlcXVlc3QgPSBjaGlwc1Byb2plY3RJZFxuICAgICAgfSBlbHNlIGlmIChsYXN0TWVzc2FnZVByb2plY3RJZCAhPSBudWxsKSB7XG4gICAgICAgIGNvbnN0IHBhcnNlZCA9IE51bWJlcihsYXN0TWVzc2FnZVByb2plY3RJZClcbiAgICAgICAgcHJvamVjdFRvUmVxdWVzdCA9IE51bWJlci5pc0Zpbml0ZShwYXJzZWQpID8gcGFyc2VkIDogbnVsbFxuICAgICAgfVxuXG4gICAgICBjb25zdCBwcm9qZWN0cyA9IGF3YWl0IGZldGNoUHJvamVjdHMoW3Byb2plY3RUb1JlcXVlc3RdKVxuXG4gICAgICBjb25zdCBwYXlsb2FkRmFxSWQgPSBmYXFJZCA/PyBvcHRpb25zLmZhcUlkXG4gICAgICBjb25zdCBwYXlsb2FkQWdlbnRTdWdnZXN0aW9uSWQgPSBhZ2VudFN1Z2dlc3Rpb25JZCA/PyBvcHRpb25zLmFnZW50U3VnZ2VzdGlvbklkXG5cbiAgICAgIGNvbnN0IHBheWxvYWREYXRhID0ge1xuICAgICAgICBtZXNzYWdlOiBmaW5hbE1lc3NhZ2UsXG4gICAgICAgIGhpc3RvcnksXG4gICAgICAgIHByb2plY3RJZDogcHJvamVjdFRvUmVxdWVzdCxcbiAgICAgICAgbGFuZzogYXV0aFVzZXIubGFuZyxcbiAgICAgICAgdXNlcklkOiBhdXRoVXNlci5pZC50b1N0cmluZygpLFxuICAgICAgICBmaXJzdE5hbWU6IGF1dGhVc2VyLmZpcnN0TmFtZSxcbiAgICAgICAgbGFzdE5hbWU6IGF1dGhVc2VyLmxhc3ROYW1lLFxuICAgICAgICBjb21wYW55SWQ6IGF1dGhVc2VyLmNvbXBhbnlfaWQudG9TdHJpbmcoKSxcbiAgICAgICAgY2hhdElkOiBjdXJyZW50Q2hhdElkLmN1cnJlbnQsXG4gICAgICAgIG1lc3NhZ2VJZDogY3VycmVudE1lc3NhZ2VJZC5jdXJyZW50LFxuICAgICAgICBhZ2VudE5hbWU6IGFnZW50Py5uYW1lIHx8ICcnLFxuICAgICAgICBhZ2VudElkOiBjdXJyZW50QWdlbnRGcm9tTWVzc2FnZXMgfHwgYWdlbnQ/LmlkISxcbiAgICAgICAgaXNXZWJTZWFyY2hBY3RpdmU6IGlzV2ViU2VhcmNoQWN0aXZlUmVmLmN1cnJlbnQsXG4gICAgICAgIGlzRGVlcFNlYXJjaEFjdGl2ZTogaXNEZWVwU2VhcmNoQWN0aXZlUmVmLmN1cnJlbnQsXG4gICAgICAgIC4uLihwcm9qZWN0Py5mZWVJZCAhPSBudWxsID8geyBmZWVJZDogTnVtYmVyKHByb2plY3QuZmVlSWQpIH0gOiB7fSksXG4gICAgICAgIC4uLihjbGllbnQ/LmlkXG4gICAgICAgICAgPyB7IGNsaWVudElkOiBjbGllbnQuaWQsIC4uLihjbGllbnQubmFtZSA/IHsgY2xpZW50TmFtZTogY2xpZW50Lm5hbWUgfSA6IHt9KSB9XG4gICAgICAgICAgOiBwcm9qZWN0Py5jbGllbnRJZCAhPSBudWxsXG4gICAgICAgICAgICA/IHsgY2xpZW50SWQ6IE51bWJlcihwcm9qZWN0LmNsaWVudElkKSB9XG4gICAgICAgICAgICA6IHByb2plY3Q/LmNsaWVudD8uaWRcbiAgICAgICAgICAgICAgPyB7IGNsaWVudElkOiBwcm9qZWN0LmNsaWVudC5pZCwgLi4uKHByb2plY3QuY2xpZW50Lm5hbWUgPyB7IGNsaWVudE5hbWU6IHByb2plY3QuY2xpZW50Lm5hbWUgfSA6IHt9KSB9XG4gICAgICAgICAgICAgIDoge30pLFxuICAgICAgICAuLi4ocHJvamVjdHM/Lmxlbmd0aCA/IHsgcHJvamVjdE5hbWU6IHByb2plY3RzWzBdLm5hbWUgfSA6IHt9KSxcbiAgICAgICAgLi4uKHRhc2s/LmlkICE9IG51bGwgPyB7IHRhc2tJZDogTnVtYmVyKHRhc2suaWQpLCAuLi4odGFzay5uYW1lID8geyB0YXNrTmFtZTogdGFzay5uYW1lIH0gOiB7fSkgfSA6IHt9KSxcbiAgICAgICAgLi4uKGF0dGFjaG1lbnRzLmxlbmd0aCA+IDAgPyB7IGF0dGFjaG1lbnRzIH0gOiB7fSksXG4gICAgICAgIC4uLihwYXlsb2FkRmFxSWQgPyB7IGZhcUlkOiBwYXlsb2FkRmFxSWQgfSA6IHt9KSxcbiAgICAgICAgLi4uKHBheWxvYWRBZ2VudFN1Z2dlc3Rpb25JZCA/IHsgYWdlbnRTdWdnZXN0aW9uSWQ6IHBheWxvYWRBZ2VudFN1Z2dlc3Rpb25JZCB9IDoge30pLFxuICAgICAgICAuLi4ocGF5bG9hZEZ1YUlkID8geyBmdWFJZDogcGF5bG9hZEZ1YUlkIH0gOiB7fSksXG4gICAgICAgIC4uLihwYXlsb2FkU2NJZCA/IHsgc2NJZDogcGF5bG9hZFNjSWQgfSA6IHt9KSxcbiAgICAgICAgLi4uKGFnZW50Py5lbnRpdHkgIT0gbnVsbCA/IHsgYWdlbnRFbnRpdHk6IGFnZW50LmVudGl0eSB9IDoge30pLFxuICAgICAgICAuLi4oYWdlbnQ/LnR5cGUgIT0gbnVsbCA/IHsgYWdlbnRUeXBlOiBhZ2VudC50eXBlIH0gOiB7fSksXG4gICAgICAgIC4uLihjb250ZXh0TWVzc2FnZSA/IHsgY29udGV4dE1lc3NhZ2UgfSA6IHt9KSxcbiAgICAgICAgLi4uKHBheWxvYWRDb250ZXh0RGF0YSA/IHsgY29udGV4dERhdGE6IHBheWxvYWRDb250ZXh0RGF0YSB9IDoge30pLFxuICAgICAgfVxuXG4gICAgICBhc2tNYWlhKHBheWxvYWREYXRhKVxuICAgIH0sXG4gICAgW1xuICAgICAgYWRkTWVzc2FnZSxcbiAgICAgIGV2ZW50LFxuICAgICAgYXNrTWFpYSxcbiAgICAgIHByb2plY3QsXG4gICAgICBjbGllbnQsXG4gICAgICB0YXNrLFxuICAgICAgY2hpcHNQcm9qZWN0LFxuICAgICAgYXV0aFVzZXIsXG4gICAgICBhZ2VudCxcbiAgICAgIHQsXG4gICAgICB3YWl0aW5nUmVzcG9uc2UsXG4gICAgICBsb2FkaW5nTWVzc2FnZXMsXG4gICAgICBpc1dlYlNlYXJjaEFjdGl2ZSxcbiAgICAgIGlzRGVlcFNlYXJjaEFjdGl2ZSxcbiAgICBdXG4gIClcblxuICBjb25zdCBjaGFuZ2VQcm9qZWN0ID0gdXNlQ2FsbGJhY2soXG4gICAgKG9wdGlvbjogUHJvamVjdCkgPT4ge1xuICAgICAgaWYgKCFjdXJyZW50VXNlclF1ZXN0aW9uLmN1cnJlbnQpIHJldHVyblxuXG4gICAgICBpZiAob3B0aW9uLmlkICE9PSBwcm9qZWN0Py5pZCkge1xuICAgICAgICBzZXRQcm9qZWN0KG9wdGlvbilcbiAgICAgIH1cblxuICAgICAgaWYgKHByb2plY3QgJiYgY3VycmVudFVzZXJRdWVzdGlvbi5jdXJyZW50KSB7XG4gICAgICAgIGNvbnN0IGhpc3RvcnkgPSBtZXNzYWdlc1JlZi5jdXJyZW50Lm1hcChoaXN0b3J5TWVzc2FnZSA9PiAoe1xuICAgICAgICAgIGNvbnRlbnQ6IGhpc3RvcnlNZXNzYWdlLm1lc3NhZ2UsXG4gICAgICAgICAgcm9sZTogaGlzdG9yeU1lc3NhZ2UudXNlci5pZCA9PT0gYXV0aFVzZXIuaWQudG9TdHJpbmcoKSA/IENoYXRIaXN0b3J5Um9sZS5VU0VSIDogQ2hhdEhpc3RvcnlSb2xlLkFTU0lTVEFOVCxcbiAgICAgICAgfSkpXG5cbiAgICAgICAgYXNrTWFpYSh7XG4gICAgICAgICAgbWVzc2FnZTogY3VycmVudFVzZXJRdWVzdGlvbi5jdXJyZW50LFxuICAgICAgICAgIGhpc3RvcnksXG4gICAgICAgICAgcHJvamVjdElkOiBvcHRpb24uaWQsXG4gICAgICAgICAgbGFuZzogYXV0aFVzZXIubGFuZyxcbiAgICAgICAgICB1c2VySWQ6IGF1dGhVc2VyLmlkLnRvU3RyaW5nKCksXG4gICAgICAgICAgZmlyc3ROYW1lOiBhdXRoVXNlci5maXJzdE5hbWUsXG4gICAgICAgICAgbGFzdE5hbWU6IGF1dGhVc2VyLmxhc3ROYW1lLFxuICAgICAgICAgIGNvbXBhbnlJZDogYXV0aFVzZXIuY29tcGFueV9pZC50b1N0cmluZygpLFxuICAgICAgICAgIGNoYXRJZDogY3VycmVudENoYXRJZC5jdXJyZW50LFxuICAgICAgICAgIG1lc3NhZ2VJZDogY3VycmVudE1lc3NhZ2VJZC5jdXJyZW50LFxuICAgICAgICAgIGFnZW50TmFtZTogYWdlbnQ/Lm5hbWUgfHwgJycsXG4gICAgICAgICAgYWdlbnRJZDogYWdlbnQ/LmlkIHx8ICcnLFxuICAgICAgICAgIGlzV2ViU2VhcmNoQWN0aXZlOiBpc1dlYlNlYXJjaEFjdGl2ZVJlZi5jdXJyZW50LFxuICAgICAgICAgIGlzRGVlcFNlYXJjaEFjdGl2ZTogaXNEZWVwU2VhcmNoQWN0aXZlUmVmLmN1cnJlbnQsXG4gICAgICAgICAgLi4uKG9wdGlvbj8uZmVlSWQgIT0gbnVsbCA/IHsgZmVlSWQ6IE51bWJlcihvcHRpb24uZmVlSWQpIH0gOiB7fSksXG4gICAgICAgICAgLi4uKG9wdGlvbj8uY2xpZW50SWQgIT0gbnVsbCA/IHsgY2xpZW50SWQ6IE51bWJlcihvcHRpb24uY2xpZW50SWQpIH0gOiB7fSksXG4gICAgICAgICAgLi4uKGFnZW50Py5lbnRpdHkgIT0gbnVsbCA/IHsgYWdlbnRFbnRpdHk6IGFnZW50LmVudGl0eSB9IDoge30pLFxuICAgICAgICAgIC4uLihhZ2VudD8udHlwZSAhPSBudWxsID8geyBhZ2VudFR5cGU6IGFnZW50LnR5cGUgfSA6IHt9KSxcbiAgICAgICAgfSlcbiAgICAgIH1cbiAgICB9LFxuICAgIFtwcm9qZWN0LCBzZXRQcm9qZWN0LCBhc2tNYWlhLCBhdXRoVXNlciwgaXNXZWJTZWFyY2hBY3RpdmUsIGFnZW50XVxuICApXG5cbiAgY29uc3QgaGFuZGxlRmVlZGJhY2sgPSB1c2VDYWxsYmFjayhhc3luYyAoZmVlZGJhY2tQcm9wOiBGZWVkYmFjaywgY2hhdE1lc3NhZ2VJZDogc3RyaW5nKSA9PiB7XG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBtYWlhLkNoYXRzLndhc0hlbHBmdWxDaGF0KGNoYXRNZXNzYWdlSWQsIGZlZWRiYWNrUHJvcCA9PT0gRmVlZGJhY2suVEhVTUJTX1VQKVxuICAgIGlmIChyZXNwb25zZSkge1xuICAgICAgbWVzc2FnZXNSZWYuY3VycmVudCA9IG1lc3NhZ2VzUmVmLmN1cnJlbnQubWFwKG1lc3NhZ2UgPT4ge1xuICAgICAgICBpZiAobWVzc2FnZS5pZCA9PT0gY2hhdE1lc3NhZ2VJZCAmJiBtZXNzYWdlLnJvbGUgPT09ICdhc3Npc3RhbnQnKSB7XG4gICAgICAgICAgcmV0dXJuIHsgLi4ubWVzc2FnZSwgd2FzSGVscGZ1bDogZmVlZGJhY2tQcm9wID09PSBGZWVkYmFjay5USFVNQlNfVVAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBtZXNzYWdlXG4gICAgICB9KVxuICAgIH1cbiAgfSwgW10pXG5cbiAgY29uc3QgaGFuZGxlQXBwcm92YWxEZWNpc2lvbiA9IHVzZUNhbGxiYWNrKFxuICAgIGFzeW5jIChcbiAgICAgIHRocmVhZElkczogc3RyaW5nW10sXG4gICAgICBkZWNpc2lvbjogJ2FwcHJvdmUnIHwgJ3JlamVjdCcsXG4gICAgICBlZGl0ZWRBY3Rpb25zPzogQXJyYXk8eyB0b29sX25hbWU6IHN0cmluZzsgYXJnczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gfT5cbiAgICApID0+IHtcbiAgICAgIGlmICghdGhyZWFkSWRzPy5sZW5ndGgpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcignTm8gdGhyZWFkX2lkcyBwcm92aWRlZCBmb3IgYXBwcm92YWwgZGVjaXNpb24nKVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgLy8gQnVzY2FyIGVsIG1lbnNhamUgcXVlIGNvbnRpZW5lIGFsZ3VubyBkZSBlc3RvcyB0aHJlYWRJZHMgZW4gc3VzIHBlbmRpbmdfYWN0aW9uc1xuICAgICAgY29uc3QgbWVzc2FnZVdpdGhBcHByb3ZhbCA9IG1lc3NhZ2VzUmVmLmN1cnJlbnQuZmluZChtID0+XG4gICAgICAgIG0uYXBwcm92YWw/LnBlbmRpbmdfYWN0aW9ucz8uc29tZShhY3Rpb24gPT4gdGhyZWFkSWRzLmluY2x1ZGVzKGFjdGlvbi50aHJlYWRfaWQpKVxuICAgICAgKVxuXG4gICAgICBpZiAoIW1lc3NhZ2VXaXRoQXBwcm92YWwgfHwgIW1lc3NhZ2VXaXRoQXBwcm92YWwuYXBwcm92YWwpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcignTm8gc2UgZW5jb250csOzIG1lbnNhamUgY29uIGFwcHJvdmFsIHBhcmEgdGhyZWFkX2lkczonLCB0aHJlYWRJZHMpXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBjb25zdCB7IGFwcHJvdmFsIH0gPSBtZXNzYWdlV2l0aEFwcHJvdmFsXG4gICAgICBjb25zdCBtZXNzYWdlSWQgPSBtZXNzYWdlV2l0aEFwcHJvdmFsLmlkXG4gICAgICBjb25zdCBsb2FkaW5nS2V5ID0gdGhyZWFkSWRzWzBdXG5cbiAgICAgIGNvbnN0IGhpdGxDb250ZXh0OiBIaXRsRXhlY3V0aW9uQ29udGV4dCA9IHtcbiAgICAgICAgbWVzc2FnZUlkLFxuICAgICAgICBtZXNzYWdlVGV4dDogbWVzc2FnZVdpdGhBcHByb3ZhbC5tZXNzYWdlLFxuICAgICAgICBhcHByb3ZhbCxcbiAgICAgICAgcGVuZGluZ0FjdGlvbnM6IGFwcHJvdmFsLnBlbmRpbmdfYWN0aW9ucyxcbiAgICAgICAgdGhyZWFkSWRzLFxuICAgICAgfVxuICAgICAgaGl0bEV4ZWN1dGlvbkNvbnRleHRSZWYuY3VycmVudCA9IGhpdGxDb250ZXh0XG5cbiAgICAgIGNvbnN0IGluaXRpYWxBY3Rpdml0eSA9IHJlc29sdmVJbml0aWFsSGl0bFN0cmVhbUFjdGl2aXR5KHQsIGhpdGxDb250ZXh0KVxuXG4gICAgICAvLyBVcGRhdGUgbWVzc2FnZSBzdGF0dXMgaW1tZWRpYXRlbHlcbiAgICAgIG1lc3NhZ2VzUmVmLmN1cnJlbnQgPSBtZXNzYWdlc1JlZi5jdXJyZW50Lm1hcChtZXNzYWdlID0+IHtcbiAgICAgICAgaWYgKG1lc3NhZ2UuaWQgPT09IG1lc3NhZ2VJZCkge1xuICAgICAgICAgIGNvbnN0IG5ld1N0YXR1cyA9IGRlY2lzaW9uID09PSAnYXBwcm92ZScgPyAnYXBwcm92ZWQnIDogJ3JlamVjdGVkJ1xuICAgICAgICAgIHJldHVybiB7IC4uLm1lc3NhZ2UsIGFwcHJvdmFsU3RhdHVzOiBuZXdTdGF0dXMgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBtZXNzYWdlXG4gICAgICB9KVxuXG4gICAgICAvLyBUcmlnZ2VyIHJlLXJlbmRlclxuICAgICAgY29uc3QgZXhpc3RpbmdNZXNzYWdlID0gbWVzc2FnZXNSZWYuY3VycmVudC5maW5kKG0gPT4gbS5pZCA9PT0gbWVzc2FnZUlkKVxuICAgICAgaWYgKGV4aXN0aW5nTWVzc2FnZSkge1xuICAgICAgICBjb25zdCBuZXdTdGF0dXMgPSBkZWNpc2lvbiA9PT0gJ2FwcHJvdmUnID8gJ2FwcHJvdmVkJyA6ICdyZWplY3RlZCdcbiAgICAgICAgYWRkTWVzc2FnZSh7IC4uLmV4aXN0aW5nTWVzc2FnZSwgYXBwcm92YWxTdGF0dXM6IG5ld1N0YXR1cyB9KVxuICAgICAgfVxuXG4gICAgICAvLyBDYWxsIGNvbnRpbnVlLXRocmVhZCBlbmRwb2ludCB3aXRoIEFMTCB0aHJlYWRfaWRzIGluIGEgc2luZ2xlIHJlcXVlc3RcbiAgICAgIGlzUHJvY2Vzc2luZ1JlZi5jdXJyZW50ID0gdHJ1ZVxuICAgICAgY3VycmVudE1lc3NhZ2VJZC5jdXJyZW50ID0gdXVpZHY0KClcblxuICAgICAgLy8gQWRkIGxvYWRpbmdcbiAgICAgIHNldEFjdGl2ZUxvYWRpbmdzKHByZXYgPT4gKHtcbiAgICAgICAgLi4ucHJldixcbiAgICAgICAgW2xvYWRpbmdLZXldOiBpbml0aWFsQWN0aXZpdHkubWVzc2FnZSxcbiAgICAgIH0pKVxuICAgICAgdXBkYXRlU3RyZWFtQWN0aXZpdHkoaW5pdGlhbEFjdGl2aXR5KVxuXG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IG1haWEuT3JjaGVzdHJhdG9yLmNvbnRpbnVlVGhyZWFkKHtcbiAgICAgICAgICB0aHJlYWRJZHMsIC8vIFNlbmQgYWxsIGFjdGlvbiB0aHJlYWRfaWRzIGF0IG9uY2VcbiAgICAgICAgICBzZXNzaW9uSWQ6IGFwcHJvdmFsLnNlc3Npb25faWQsXG4gICAgICAgICAgZGVjaXNpb246IGVkaXRlZEFjdGlvbnMgPyAnZWRpdCcgOiBkZWNpc2lvbixcbiAgICAgICAgICBlZGl0ZWRBY3Rpb25zLFxuICAgICAgICAgIGFnZW50SWQ6IGFnZW50Py5pZCB8fCAnJyxcbiAgICAgICAgICBsYW5nOiBhdXRoVXNlci5sYW5nLFxuICAgICAgICB9KVxuXG4gICAgICAgIGlmICghcmVzcG9uc2Uub2spIHtcbiAgICAgICAgICBoYW5kbGVTdHJlYW1FcnJvcigpXG4gICAgICAgICAgcmV0dXJuXG4gICAgICAgIH1cblxuICAgICAgICAvLyBQcm9jZXNzIFNTRSBzdHJlYW1cbiAgICAgICAgYXdhaXQgcHJvY2Vzc1NTRVN0cmVhbShyZXNwb25zZSwgbG9hZGluZ0tleSwge1xuICAgICAgICAgIG9uVGhpbmtpbmc6ICgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGFjdGl2aXR5OiBTdHJlYW1BY3Rpdml0eSA9IHtcbiAgICAgICAgICAgICAgcGhhc2U6ICd0aGlua2luZycsXG4gICAgICAgICAgICAgIG1lc3NhZ2U6IGdldFRoaW5raW5nTG9hZGluZ01lc3NhZ2UoMCwgdCksXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB1cGRhdGVTdHJlYW1BY3Rpdml0eShhY3Rpdml0eSlcbiAgICAgICAgICB9LFxuICAgICAgICAgIG9uVG9rZW46IChjb250ZW50OiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgIHVwZGF0ZVN0cmVhbUFjdGl2aXR5KGdldFdyaXRpbmdTdHJlYW1BY3Rpdml0eSh0KSlcbiAgICAgICAgICAgIGhhbmRsZVN0cmVhbVVwZGF0ZShjb250ZW50LCBudWxsLCAnJylcbiAgICAgICAgICB9LFxuICAgICAgICAgIG9uTm9kZTogKG1lc3NhZ2U6IHN0cmluZywgY3VycmVudFRocmVhZElkOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG5vZGVBY3Rpdml0eSA9IHJlc29sdmVIaXRsTm9kZVN0cmVhbUFjdGl2aXR5KFxuICAgICAgICAgICAgICBtZXNzYWdlLFxuICAgICAgICAgICAgICB0LFxuICAgICAgICAgICAgICBoaXRsRXhlY3V0aW9uQ29udGV4dFJlZi5jdXJyZW50LFxuICAgICAgICAgICAgICBjdXJyZW50VGhyZWFkSWQsXG4gICAgICAgICAgICAgIHsgdXNlUmVzdW1pbmdGYWxsYmFjazogdHJ1ZSB9XG4gICAgICAgICAgICApXG4gICAgICAgICAgICB1cGRhdGVTdHJlYW1BY3Rpdml0eShub2RlQWN0aXZpdHkpXG4gICAgICAgICAgICBzZXRBY3RpdmVMb2FkaW5ncyhwcmV2ID0+ICh7XG4gICAgICAgICAgICAgIC4uLnByZXYsXG4gICAgICAgICAgICAgIFtjdXJyZW50VGhyZWFkSWRdOiBub2RlQWN0aXZpdHkubWVzc2FnZSxcbiAgICAgICAgICAgIH0pKVxuICAgICAgICAgIH0sXG4gICAgICAgICAgb25Db21wbGV0ZTogKFxuICAgICAgICAgICAgZmluYWxDb250ZW50OiBzdHJpbmcsXG4gICAgICAgICAgICBzb3VyY2VzOiBhbnksXG4gICAgICAgICAgICBtZW1vcnlTZXNzaW9uSWQ6IHN0cmluZyxcbiAgICAgICAgICAgIGN1cnJlbnRUaHJlYWRJZDogc3RyaW5nLFxuICAgICAgICAgICAgYXR0YWNobWVudHM/OiBhbnlbXSB8IG51bGwsXG4gICAgICAgICAgICBzdWdnZXN0aW9ucz86IHN0cmluZ1tdIHwgbnVsbCxcbiAgICAgICAgICAgIGFnZW50SWQ/OiBzdHJpbmcgfCBudWxsXG4gICAgICAgICAgKSA9PiB7XG4gICAgICAgICAgICBoYW5kbGVTdHJlYW1GaW5pc2goZmluYWxDb250ZW50LCBzb3VyY2VzLCBtZW1vcnlTZXNzaW9uSWQsIGF0dGFjaG1lbnRzLCBzdWdnZXN0aW9ucywgYWdlbnRJZClcbiAgICAgICAgICAgIHVwZGF0ZVN0cmVhbUFjdGl2aXR5KG51bGwpXG4gICAgICAgICAgICBoaXRsRXhlY3V0aW9uQ29udGV4dFJlZi5jdXJyZW50ID0gbnVsbFxuICAgICAgICAgICAgc2V0QWN0aXZlTG9hZGluZ3MocHJldiA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IG5ld0xvYWRpbmdzID0geyAuLi5wcmV2IH1cbiAgICAgICAgICAgICAgZGVsZXRlIG5ld0xvYWRpbmdzW2N1cnJlbnRUaHJlYWRJZF1cbiAgICAgICAgICAgICAgcmV0dXJuIG5ld0xvYWRpbmdzXG4gICAgICAgICAgICB9KVxuICAgICAgICAgIH0sXG4gICAgICAgICAgb25BcHByb3ZhbFJlcXVpcmVkOiAoYXBwcm92YWxQYXlsb2FkOiBhbnksIGFjY3VtdWxhdGVkQ29udGVudDogc3RyaW5nLCBjdXJyZW50VGhyZWFkSWQ6IHN0cmluZykgPT4ge1xuICAgICAgICAgICAgLy8gTmV3IEhJVEwgaW50ZXJydXB0aW9uIGRldGVjdGVkIGFmdGVyIHJlc3VtZSAoY2hhaW5lZCBhY3Rpb25zKVxuICAgICAgICAgICAgdXBkYXRlU3RyZWFtQWN0aXZpdHkobnVsbClcbiAgICAgICAgICAgIGhpdGxFeGVjdXRpb25Db250ZXh0UmVmLmN1cnJlbnQgPSBudWxsXG4gICAgICAgICAgICBzZXRBY3RpdmVMb2FkaW5ncyhwcmV2ID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgbmV3TG9hZGluZ3MgPSB7IC4uLnByZXYgfVxuICAgICAgICAgICAgICBkZWxldGUgbmV3TG9hZGluZ3NbY3VycmVudFRocmVhZElkXVxuICAgICAgICAgICAgICByZXR1cm4gbmV3TG9hZGluZ3NcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICBoYW5kbGVBcHByb3ZhbFJlcXVpcmVkKGFwcHJvdmFsUGF5bG9hZCBhcyBBcHByb3ZhbFJlcXVlc3QsIGFjY3VtdWxhdGVkQ29udGVudClcbiAgICAgICAgICB9LFxuICAgICAgICAgIG9uRXJyb3I6ICgpID0+IHtcbiAgICAgICAgICAgIGhhbmRsZVN0cmVhbUVycm9yKClcbiAgICAgICAgICB9LFxuICAgICAgICB9KVxuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgaGFuZGxlU3RyZWFtRXJyb3IoKVxuICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgaXNQcm9jZXNzaW5nUmVmLmN1cnJlbnQgPSBmYWxzZVxuICAgICAgfVxuICAgIH0sXG4gICAgW1xuICAgICAgYXV0aFVzZXIsXG4gICAgICBhZ2VudCxcbiAgICAgIGFkZE1lc3NhZ2UsXG4gICAgICBoYW5kbGVTdHJlYW1FcnJvcixcbiAgICAgIGhhbmRsZVN0cmVhbVVwZGF0ZSxcbiAgICAgIGhhbmRsZVN0cmVhbUZpbmlzaCxcbiAgICAgIGhhbmRsZUFwcHJvdmFsUmVxdWlyZWQsXG4gICAgICB1cGRhdGVTdHJlYW1BY3Rpdml0eSxcbiAgICAgIHQsXG4gICAgXVxuICApXG5cbiAgY29uc3QgaW5pdGlhbGl6ZUNoYXQgPSB1c2VDYWxsYmFjayhhc3luYyAoKSA9PiB7XG4gICAgaWYgKCFmaXJzdFRpbWVSZWYuY3VycmVudCkge1xuICAgICAgZmlyc3RUaW1lUmVmLmN1cnJlbnQgPSB0cnVlXG4gICAgfVxuICAgIGlmIChpbml0aWFsQ2hhdElkKSB7XG4gICAgICBhd2FpdCBsb2FkTWVzc2FnZXMoKVxuICAgIH0gZWxzZSBpZiAodXNlckluaXRpYWxNZXNzYWdlKSB7XG4gICAgICBjb25zdCBoYXNJbml0aWFsTWVzc2FnZSA9IEJvb2xlYW4odXNlckluaXRpYWxNZXNzYWdlLm1lc3NhZ2U/LnRyaW0oKSlcbiAgICAgIGNvbnN0IGhhc0luaXRpYWxBdHRhY2htZW50cyA9IEJvb2xlYW4odXNlckluaXRpYWxNZXNzYWdlLmF0dGFjaG1lbnRzPy5sZW5ndGgpXG4gICAgICBjb25zdCBoYXNJbml0aWFsRmFxID0gQm9vbGVhbih1c2VySW5pdGlhbE1lc3NhZ2UuZmFxSWQpXG4gICAgICBjb25zdCBoYXNJbml0aWFsRnVhID0gQm9vbGVhbih1c2VySW5pdGlhbE1lc3NhZ2UuZnVhSWQpXG4gICAgICBjb25zdCBoYXNJbml0aWFsU2MgPSBCb29sZWFuKHVzZXJJbml0aWFsTWVzc2FnZS5zY0lkKVxuXG4gICAgICBpZiAoIWhhc0luaXRpYWxNZXNzYWdlICYmICFoYXNJbml0aWFsQXR0YWNobWVudHMgJiYgIWhhc0luaXRpYWxGYXEgJiYgIWhhc0luaXRpYWxGdWEgJiYgIWhhc0luaXRpYWxTYykge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgY29uc3QgaGlzdG9yeSA9IG1lc3NhZ2VzUmVmLmN1cnJlbnQubWFwKGhpc3RvcnlNZXNzYWdlID0+ICh7XG4gICAgICAgIGNvbnRlbnQ6IGhpc3RvcnlNZXNzYWdlLm1lc3NhZ2UsXG4gICAgICAgIHJvbGU6IGhpc3RvcnlNZXNzYWdlLnVzZXIuaWQgPT09IGF1dGhVc2VyLmlkLnRvU3RyaW5nKCkgPyBDaGF0SGlzdG9yeVJvbGUuVVNFUiA6IENoYXRIaXN0b3J5Um9sZS5BU1NJU1RBTlQsXG4gICAgICB9KSlcblxuICAgICAgYXNrTWFpYSh7XG4gICAgICAgIG1lc3NhZ2U6IHVzZXJJbml0aWFsTWVzc2FnZS5tZXNzYWdlLFxuICAgICAgICBoaXN0b3J5LFxuICAgICAgICBwcm9qZWN0SWQ6IHByb2plY3Q/LmlkIHx8IG51bGwsXG4gICAgICAgIGxhbmc6IGF1dGhVc2VyLmxhbmcsXG4gICAgICAgIHVzZXJJZDogYXV0aFVzZXIuaWQudG9TdHJpbmcoKSxcbiAgICAgICAgZmlyc3ROYW1lOiBhdXRoVXNlci5maXJzdE5hbWUsXG4gICAgICAgIGxhc3ROYW1lOiBhdXRoVXNlci5sYXN0TmFtZSxcbiAgICAgICAgY29tcGFueUlkOiBhdXRoVXNlci5jb21wYW55X2lkLnRvU3RyaW5nKCksXG4gICAgICAgIGNoYXRJZDogY3VycmVudENoYXRJZC5jdXJyZW50LFxuICAgICAgICBtZXNzYWdlSWQ6IGN1cnJlbnRNZXNzYWdlSWQuY3VycmVudCxcbiAgICAgICAgYWdlbnROYW1lOiBhZ2VudD8ubmFtZSEsXG4gICAgICAgIGFnZW50SWQ6IGFnZW50Py5pZCEsXG4gICAgICAgIGlzV2ViU2VhcmNoQWN0aXZlOiBpc1dlYlNlYXJjaEFjdGl2ZVJlZi5jdXJyZW50LFxuICAgICAgICBpc0RlZXBTZWFyY2hBY3RpdmU6IGlzRGVlcFNlYXJjaEFjdGl2ZVJlZi5jdXJyZW50LFxuICAgICAgICAuLi4ocHJvamVjdD8uZmVlSWQgIT0gbnVsbCA/IHsgZmVlSWQ6IE51bWJlcihwcm9qZWN0LmZlZUlkKSB9IDoge30pLFxuICAgICAgICAuLi4oY2xpZW50Py5pZFxuICAgICAgICAgID8geyBjbGllbnRJZDogY2xpZW50LmlkIH1cbiAgICAgICAgICA6IHByb2plY3Q/LmNsaWVudElkICE9IG51bGxcbiAgICAgICAgICAgID8geyBjbGllbnRJZDogTnVtYmVyKHByb2plY3QuY2xpZW50SWQpIH1cbiAgICAgICAgICAgIDogcHJvamVjdD8uY2xpZW50Py5pZFxuICAgICAgICAgICAgICA/IHsgY2xpZW50SWQ6IHByb2plY3QuY2xpZW50LmlkIH1cbiAgICAgICAgICAgICAgOiB7fSksXG4gICAgICAgIC4uLihwcm9qZWN0Py5uYW1lID8geyBwcm9qZWN0TmFtZTogcHJvamVjdC5uYW1lIH0gOiB7fSksXG4gICAgICAgIC4uLihwcm9qZWN0Py5jbGllbnQ/Lm5hbWVcbiAgICAgICAgICA/IHsgY2xpZW50TmFtZTogcHJvamVjdC5jbGllbnQubmFtZSB9XG4gICAgICAgICAgOiBjbGllbnQ/Lm5hbWVcbiAgICAgICAgICAgID8geyBjbGllbnROYW1lOiBjbGllbnQubmFtZSB9XG4gICAgICAgICAgICA6IHt9KSxcbiAgICAgICAgLi4uKHRhc2s/LmlkICE9IG51bGwgPyB7IHRhc2tJZDogTnVtYmVyKHRhc2suaWQpLCAuLi4odGFzay5uYW1lID8geyB0YXNrTmFtZTogdGFzay5uYW1lIH0gOiB7fSkgfSA6IHt9KSxcbiAgICAgICAgLi4uKHVzZXJJbml0aWFsTWVzc2FnZS5hdHRhY2htZW50cyA/IHsgYXR0YWNobWVudHM6IHVzZXJJbml0aWFsTWVzc2FnZS5hdHRhY2htZW50cyB9IDoge30pLFxuICAgICAgICAuLi4odXNlckluaXRpYWxNZXNzYWdlLmZhcUlkID8geyBmYXFJZDogdXNlckluaXRpYWxNZXNzYWdlLmZhcUlkIH0gOiB7fSksXG4gICAgICAgIC4uLih1c2VySW5pdGlhbE1lc3NhZ2UuYWdlbnRTdWdnZXN0aW9uSWQgPyB7IGFnZW50U3VnZ2VzdGlvbklkOiB1c2VySW5pdGlhbE1lc3NhZ2UuYWdlbnRTdWdnZXN0aW9uSWQgfSA6IHt9KSxcbiAgICAgICAgLi4uKHVzZXJJbml0aWFsTWVzc2FnZS5mdWFJZCA/IHsgZnVhSWQ6IHVzZXJJbml0aWFsTWVzc2FnZS5mdWFJZCB9IDoge30pLFxuICAgICAgICAuLi4odXNlckluaXRpYWxNZXNzYWdlLnNjSWQgPyB7IHNjSWQ6IHVzZXJJbml0aWFsTWVzc2FnZS5zY0lkIH0gOiB7fSksXG4gICAgICAgIC4uLihhZ2VudD8uZW50aXR5ICE9IG51bGwgPyB7IGFnZW50RW50aXR5OiBhZ2VudC5lbnRpdHkgfSA6IHt9KSxcbiAgICAgICAgLi4uKGFnZW50Py50eXBlICE9IG51bGwgPyB7IGFnZW50VHlwZTogYWdlbnQudHlwZSB9IDoge30pLFxuICAgICAgICAuLi4oYnVpbGRDb250ZXh0TWVzc2FnZSh1c2VySW5pdGlhbE1lc3NhZ2UubWVudGlvbnMpXG4gICAgICAgICAgPyB7IGNvbnRleHRNZXNzYWdlOiBidWlsZENvbnRleHRNZXNzYWdlKHVzZXJJbml0aWFsTWVzc2FnZS5tZW50aW9ucykgfVxuICAgICAgICAgIDoge30pLFxuICAgICAgICAuLi4odXNlckluaXRpYWxNZXNzYWdlLmNvbnRleHREYXRhID8geyBjb250ZXh0RGF0YTogdXNlckluaXRpYWxNZXNzYWdlLmNvbnRleHREYXRhIH0gOiB7fSksXG4gICAgICB9KVxuICAgIH1cbiAgfSwgW1xuICAgIGluaXRpYWxDaGF0SWQsXG4gICAgdXNlckluaXRpYWxNZXNzYWdlLFxuICAgIHByb2plY3QsXG4gICAgY2xpZW50LFxuICAgIHRhc2ssXG4gICAgYXV0aFVzZXIsXG4gICAgYWdlbnQsXG4gICAgYXNrTWFpYSxcbiAgICBpc1dlYlNlYXJjaEFjdGl2ZSxcbiAgICBpc0RlZXBTZWFyY2hBY3RpdmUsXG4gIF0pXG5cbiAgY29uc3QgcmVzZXRDaGF0ID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGFib3J0U3RyZWFtU2lsZW50bHlSZWYuY3VycmVudCgpXG4gICAgY3VycmVudE1lc3NhZ2VJZC5jdXJyZW50ID0gdXVpZHY0KClcbiAgICBjdXJyZW50VXNlclF1ZXN0aW9uLmN1cnJlbnQgPSBudWxsXG4gICAgY3VycmVudENoYXRJZC5jdXJyZW50ID0gdXVpZHY0KClcbiAgICByZXBvcnRlZEV2ZW50LmN1cnJlbnQgPSBmYWxzZVxuICAgIHN0cmVhbWluZ1BsYWNlaG9sZGVySWRSZWYuY3VycmVudCA9IG51bGxcbiAgICBhY3RpdmVTdHJlYW1DaGF0SWRSZWYuY3VycmVudCA9IG51bGxcbiAgICBzdHJlYW1pbmdTdG9yZS5jbGVhcigpXG4gIH0sIFtdKVxuXG4gIGNvbnN0IHN0b3BHZW5lcmF0aW9uID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIHN0b3BTdHJlYW1pbmcoKVxuICAgIGlzUHJvY2Vzc2luZ1JlZi5jdXJyZW50ID0gZmFsc2VcbiAgfSwgW3N0b3BTdHJlYW1pbmddKVxuXG4gIHJldHVybiB7XG4gICAgbWVzc2FnZXMsXG4gICAgbG9hZGluZ01lc3NhZ2VzLFxuICAgIGlzTG9hZGluZ01vcmVNZXNzYWdlcyxcbiAgICB3YWl0aW5nUmVzcG9uc2UsXG4gICAgaXNXcml0aW5nLFxuICAgIGxvYWRpbmdNZXNzYWdlLFxuICAgIHN0cmVhbUFjdGl2aXR5LFxuICAgIGFjdGl2ZUxvYWRpbmdzLFxuICAgIGN1cnJlbnRQcm9qZWN0LFxuICAgIGN1cnJlbnRDaGF0SWQ6IGN1cnJlbnRDaGF0SWQuY3VycmVudCxcbiAgICBjdXJyZW50TWVzc2FnZUlkOiBjdXJyZW50TWVzc2FnZUlkLmN1cnJlbnQsXG5cbiAgICBzZW5kTWVzc2FnZSxcbiAgICBjaGFuZ2VQcm9qZWN0LFxuICAgIGhhbmRsZUZlZWRiYWNrLFxuICAgIGhhbmRsZUFwcHJvdmFsRGVjaXNpb24sXG4gICAgaGFuZGxlU2Nyb2xsLFxuICAgIGluaXRpYWxpemVDaGF0LFxuICAgIHJlc2V0Q2hhdCxcbiAgICBzdG9wR2VuZXJhdGlvbixcblxuICAgIGlzRGlzYWJsZWQ6IHdhaXRpbmdSZXNwb25zZSB8fCBsb2FkaW5nTWVzc2FnZXMsXG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVNBLFdBQVcsRUFBRUMsTUFBTSxFQUFFQyxTQUFTLEVBQUVDLFFBQVEsUUFBUSxPQUFPO0FBQ2hFLFNBQVNDLEVBQUUsSUFBSUMsTUFBTSxRQUFRLE1BQU07QUFDbkMsU0FBU0MsZUFBZSxRQUFRLG9CQUFvQjtBQUNwRCxTQUFTQyxxQkFBcUIsUUFBUSwwQkFBMEI7QUFDaEUsU0FBU0MsSUFBSSxRQUFRLFNBQVM7QUFHOUIsU0FBU0MsT0FBTyxRQUFpQix3QkFBd0I7QUFDekQsU0FBU0MsZ0JBQWdCLFFBQVEsOEJBQThCO0FBQy9ELFNBQVNDLE1BQU0sRUFBRUMsUUFBUSxRQUFRLGFBQWE7QUFDOUMsT0FBT0MsSUFBSSxNQUFNLHFCQUFxQjtBQUN0QyxTQUFTQyxRQUFRLFFBQVEsNERBQTREO0FBQ3JGLFNBQXVDQyxlQUFlLFFBQXdDLGtCQUFrQjtBQUNoSCxTQUF5Q0MsbUJBQW1CLFFBQVEsNEJBQTRCO0FBQ2hHLFNBQVNDLGtDQUFrQyxRQUFRLHNDQUFzQztBQUd6RixTQUFTQyxXQUFXLFFBQVEsZ0JBQWdCO0FBQzVDLFNBQVNDLGlCQUFpQixRQUFRLHNCQUFzQjtBQUN4RCxTQUFTQyxzQkFBc0IsUUFBUSwwQkFBMEI7QUFDakUsU0FBU0MsZ0JBQWdCLFFBQVEsNkNBQTZDO0FBRTlFLFNBQVNDLHVCQUF1QixFQUFFQyx5QkFBeUIsUUFBUSwyQkFBMkI7QUFFOUYsU0FDRUMseUJBQXlCLEVBQ3pCQyx3QkFBd0IsRUFDeEJDLDZCQUE2QixFQUM3QkMsZ0NBQWdDLFFBRTNCLG9DQUFvQztBQUMzQyxTQUFTQyxjQUFjLFFBQVEsd0JBQXdCO0FBQ3ZELFNBQVNDLHdCQUF3QixFQUFFQyxnQkFBZ0IsUUFBUSw4QkFBOEI7QUFJekYsSUFBTUMsd0JBQXdCLEdBQUcs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a0JBQWtCLENBQ25CLENBQUM7RUFFRixJQUFNb1UsU0FBUyxHQUFHNWhCLFdBQVcsQ0FBQyxZQUFNO0lBQ2xDNE8sc0JBQXNCLENBQUN4SCxPQUFPLENBQUMsQ0FBQztJQUNoQzZHLGdCQUFnQixDQUFDN0csT0FBTyxHQUFHL0csTUFBTSxDQUFDLENBQUM7SUFDbkM2TixtQkFBbUIsQ0FBQzlHLE9BQU8sR0FBRyxJQUFJO0lBQ2xDK0csYUFBYSxDQUFDL0csT0FBTyxHQUFHL0csTUFBTSxDQUFDLENBQUM7SUFDaEMrTixhQUFhLENBQUNoSCxPQUFPLEdBQUcsS0FBSztJQUM3QnNILHlCQUF5QixDQUFDdEgsT0FBTyxHQUFHLElBQUk7SUFDeEN1SCxxQkFBcUIsQ0FBQ3ZILE9BQU8sR0FBRyxJQUFJO0lBQ3BDeEYsY0FBYyxDQUFDcU8sS0FBSyxDQUFDLENBQUM7RUFDeEIsQ0FBQyxFQUFFLEVBQUUsQ0FBQztFQUVOLElBQU00UixjQUFjLEdBQUc3aEIsV0FBVyxDQUFDLFlBQU07SUFDdkMyYSxhQUFhLENBQUMsQ0FBQztJQUNmbk0sZUFBZSxDQUFDcEgsT0FBTyxHQUFHLEtBQUs7RUFDakMsQ0FBQyxFQUFFLENBQUN1VCxhQUFhLENBQUMsQ0FBQztFQUVuQixPQUFPO0lBQ0xyTCxRQUFRLEVBQVJBLFFBQVE7SUFDUkQsZUFBZSxFQUFmQSxlQUFlO0lBQ2ZFLHFCQUFxQixFQUFyQkEscUJBQXFCO0lBQ3JCOEssZUFBZSxFQUFmQSxlQUFlO0lBQ2ZFLFNBQVMsRUFBVEEsU0FBUztJQUNUQyxjQUFjLEVBQWRBLGNBQWM7SUFDZEMsY0FBYyxFQUFkQSxjQUFjO0lBQ2R6TCxjQUFjLEVBQWRBLGNBQWM7SUFDZDZMLGNBQWMsRUFBZEEsY0FBYztJQUNkMU0sYUFBYSxFQUFFQSxhQUFhLENBQUMvRyxPQUFPO0lBQ3BDNkcsZ0JBQWdCLEVBQUVBLGdCQUFnQixDQUFDN0csT0FBTztJQUUxQzBULFdBQVcsRUFBWEEsV0FBVztJQUNYdUQsYUFBYSxFQUFiQSxhQUFhO0lBQ2JDLGNBQWMsRUFBZEEsY0FBYztJQUNkWSxzQkFBc0IsRUFBdEJBLHNCQUFzQjtJQUN0QnZQLFlBQVksRUFBWkEsWUFBWTtJQUNab1IsY0FBYyxFQUFkQSxjQUFjO0lBQ2RhLFNBQVMsRUFBVEEsU0FBUztJQUNUQyxjQUFjLEVBQWRBLGNBQWM7SUFFZEMsVUFBVSxFQUFFekgsZUFBZSxJQUFJaEw7RUFDakMsQ0FBQztBQUNILENBQUMiLCJpZ25vcmVMaXN0IjpbXX0=
|