@projectcor/maia-components 2.39.5-0 → 2.41.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/README.md +2 -0
- package/lib/App.js +19 -44
- package/lib/components/atoms/Chip/Chip.js +62 -5
- package/lib/components/atoms/Chip/styles.js +12 -3
- package/lib/components/atoms/FrequentlyUsedActions/FrequentlyUsedActions.js +1 -3
- package/lib/components/atoms/FrequentlyUsedActions/FrequentlyUsedActions.styles.js +7 -19
- package/lib/components/atoms/MAIAInput/MAIAInput.js +4 -2
- package/lib/components/atoms/ReasoningBlock/ReasoningBlock.js +2 -7
- package/lib/components/atoms/ReasoningBlock/ReasoningBlock.styles.js +14 -10
- package/lib/components/atoms/ReasoningBlock/ReasoningSteps.js +1 -1
- package/lib/components/atoms/ReasoningBlock/ReasoningTimeline.js +37 -57
- package/lib/components/atoms/ReasoningBlock/reasoningLiveNarration.js +12 -18
- package/lib/components/index.js +1 -2
- package/lib/components/molecules/ChatAIContent/ChatAIContent.js +3 -7
- package/lib/components/molecules/ChatAIHome/ChatAIHome.js +6 -21
- package/lib/components/molecules/ChatAIMessages/ChatAIMessages.js +3 -9
- package/lib/components/molecules/ChatAIMessages/newStyles.js +26 -29
- package/lib/components/molecules/ChatAIModal/ChatAIModal.helpers.js +1 -8
- package/lib/components/molecules/ChatAIModal/ChatAIModal.js +50 -61
- package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeader.js +61 -65
- package/lib/components/molecules/ChatAIModal/components/MaiaMinimizedPill/MaiaMinimizedPill.js +8 -9
- package/lib/components/molecules/ChatAIModal/components/MaiaMinimizedPill/MaiaMinimizedPill.styles.js +8 -9
- package/lib/components/molecules/ChatFooter/ChatFooter.js +41 -23
- package/lib/components/molecules/Sidebar/Sidebar.js +40 -85
- package/lib/components/organisms/AbmAgentModal/AbmAgentModal.js +2 -2
- package/lib/constants/permissions/index.js +2 -2
- package/lib/constants/permissions/utils.js +1 -4
- package/lib/dev/DevReasoningTimeline.js +17 -11
- package/lib/hooks/useChatManager/useChatManager.js +7 -7
- package/lib/hooks/useEvent.js +2 -1
- package/lib/hooks/useFrequentlyUsedActions.js +1 -2
- package/lib/hooks/useMinimizedPillNoveltyDot/index.js +2 -0
- package/lib/hooks/useMinimizedPillNoveltyDot/useMinimizedPillNoveltyDot.js +21 -0
- package/lib/index.js +2 -5
- package/lib/lang/br/index.js +5 -27
- package/lib/lang/en/index.js +5 -27
- package/lib/lang/es/index.js +5 -27
- package/lib/lang/fr/index.js +5 -27
- package/lib/services/maia/Actions/getFrequentlyUsedActions.js +1 -1
- package/lib/store/sessions/sessionStreamManager.js +52 -40
- package/lib/styles/cascade.js +3 -29
- package/lib/styles/transitions.js +1 -3
- package/lib/types/global.d.js +1 -1
- package/lib/utils/hoursPlannerQuickActionType.js +1 -74
- package/lib/utils/navigateContextEntity.js +21 -0
- package/lib/utils/streamActivityMessages.js +19 -32
- package/package.json +1 -1
- package/CHANGELOG.md +0 -819
- package/lib/components/atoms/ApprovalBox/ApprovalBox.spec.js +0 -135
- package/lib/components/atoms/Checkbox/Checkbox.spec.js +0 -27
- package/lib/components/atoms/Chip/Chip.spec.js +0 -32
- package/lib/components/atoms/ContextMentionChip/ContextMentionChip.spec.js +0 -29
- package/lib/components/atoms/Fade/Fade.spec.js +0 -31
- package/lib/components/atoms/MAIAButton/MAIAButton.spec.js +0 -42
- package/lib/components/atoms/MAIAInput/MAIAInput.spec.js +0 -300
- package/lib/components/atoms/ReasoningBlock/ReasoningBlock.spec.js +0 -69
- package/lib/components/atoms/ReasoningBlock/ReasoningSteps.spec.js +0 -59
- package/lib/components/atoms/ReasoningBlock/ReasoningTimeline.spec.js +0 -58
- package/lib/components/atoms/ReasoningBlock/reasoningLiveNarration.spec.js +0 -68
- package/lib/components/atoms/ReasoningBlock/useCollapsibleHeight.js +0 -52
- package/lib/components/atoms/ReasoningBlock/useCollapsibleHeight.spec.js +0 -90
- package/lib/components/atoms/SkillsDropdown/SkillsDropdown.spec.js +0 -107
- package/lib/components/atoms/SlashCommandDropdown/SlashCommandDropdown.spec.js +0 -85
- package/lib/components/atoms/Switch/Switch.spec.js +0 -41
- package/lib/components/molecules/AbmSection/AbmAccessibilitySection/AbmAccessibilitySection.spec.js +0 -77
- package/lib/components/molecules/ChatAIHome/ChatAIHome.spec.js +0 -246
- package/lib/components/molecules/ChatAIMessages/ChatAICreateAgentActions.spec.js +0 -104
- package/lib/components/molecules/ChatAIMessages/ChatAIMessages.spec.js +0 -291
- package/lib/components/molecules/ChatAIMessages/ChatAISuggestions.spec.js +0 -46
- package/lib/components/molecules/ChatAIModal/ChatAIModal.helpers.spec.js +0 -148
- package/lib/components/molecules/ChatAIMySkills/ChatAIMySkills.spec.js +0 -128
- package/lib/components/molecules/ChatFooter/ChatFooter.spec.js +0 -112
- package/lib/components/molecules/ContextMentionInput/ContextMentionInput.spec.js +0 -84
- package/lib/components/molecules/MessageFeedback/MessageFeedback.spec.js +0 -116
- package/lib/components/molecules/Sidebar/Sidebar.spec.js +0 -228
- package/lib/components/organisms/AbmAgentModal/AbmAgentModal.spec.js +0 -335
- package/lib/components/organisms/AbmSkillModal/AbmSkillModal.spec.js +0 -405
- package/lib/components/organisms/ChatAI/ChatAI.spec.js +0 -174
- package/lib/components/organisms/ChatAIPage/ChatAIPage.js +0 -486
- package/lib/components/organisms/ChatAIPage/ChatAIPage.spec.js +0 -231
- package/lib/components/organisms/ChatAIPage/ChatAIPage.styles.js +0 -16
- package/lib/components/organisms/ChatAIPage/ChatAIPageHeader.js +0 -253
- package/lib/components/organisms/ChatAIPage/ChatAIPageHeader.spec.js +0 -139
- package/lib/components/organisms/ChatAIPage/ChatAIPageHeader.styles.js +0 -13
- package/lib/components/organisms/ChatAIPage/ChatAIPageHome.js +0 -229
- package/lib/components/organisms/ChatAIPage/ChatAIPageHome.spec.js +0 -142
- package/lib/components/organisms/ChatAIPage/ChatAIPageHome.styles.js +0 -144
- package/lib/components/organisms/ChatAIPage/getDaypart.js +0 -9
- package/lib/components/organisms/ChatAIPage/getDaypart.spec.js +0 -19
- package/lib/components/organisms/ChatAIPage/index.js +0 -3
- package/lib/components/organisms/ChatAIPage/pageHomeMockCards.js +0 -17
- package/lib/components/organisms/DeleteAgentModal/DeleteAgentModal.spec.js +0 -59
- package/lib/components/organisms/DeleteQuestionModal/DeleteQuestionModal.spec.js +0 -79
- package/lib/components/organisms/EditQuestionModal/EditQuestionModal.spec.js +0 -86
- package/lib/constants/permissions/utils.spec.js +0 -34
- package/lib/dev/DevMaiaPage.js +0 -30
- package/lib/hooks/useAgentModel/useCreateAgent.spec.js +0 -95
- package/lib/hooks/useAgentModel/useUpdateAgent.spec.js +0 -96
- package/lib/hooks/useCaretPosition.spec.js +0 -58
- package/lib/hooks/useChatMessages/useChatMessages.spec.js +0 -279
- package/lib/hooks/useDebounce.spec.js +0 -42
- package/lib/hooks/useEvent.spec.js +0 -40
- package/lib/hooks/useIsMaiaPageRoute.js +0 -26
- package/lib/hooks/useIsMaiaPageRoute.spec.js +0 -26
- package/lib/hooks/useMentionAllowedTypes.spec.js +0 -89
- package/lib/hooks/useModal/useModal.spec.js +0 -73
- package/lib/hooks/useResize.spec.js +0 -37
- package/lib/hooks/useSkillsCatalog.spec.js +0 -88
- package/lib/hooks/useSnackBarManager/useSnackBarManager.spec.js +0 -33
- package/lib/hooks/useT.spec.js +0 -20
- package/lib/hooks/useToggle.spec.js +0 -33
- package/lib/lib/utils.js +0 -9
- package/lib/services/maia/Access/updateAccess.spec.js +0 -108
- package/lib/services/maia/Actions/getFrequentlyUsedActions.spec.js +0 -69
- package/lib/services/maia/Actions/getSlashCommands.spec.js +0 -74
- package/lib/services/maia/Agents/createAgent.spec.js +0 -55
- package/lib/services/maia/Agents/deleteAgent.spec.js +0 -42
- package/lib/services/maia/Agents/fetchAgentDetail.spec.js +0 -108
- package/lib/services/maia/Agents/getAgentById.spec.js +0 -55
- package/lib/services/maia/Agents/getAgentSuggestions.spec.js +0 -82
- package/lib/services/maia/Agents/setAgentToolGroups.spec.js +0 -45
- package/lib/services/maia/Agents/toggleFavorite.spec.js +0 -47
- package/lib/services/maia/Agents/updateAgent.spec.js +0 -48
- package/lib/services/maia/Chats/deleteChat.spec.js +0 -31
- package/lib/services/maia/Chats/getChatMessages.spec.js +0 -150
- package/lib/services/maia/Chats/getChatsByUserId.spec.js +0 -149
- package/lib/services/maia/Chats/markSessionAsRead.spec.js +0 -30
- package/lib/services/maia/Chats/patchChat.spec.js +0 -41
- package/lib/services/maia/Chats/wasHelpfulChat.spec.js +0 -28
- package/lib/services/maia/Faqs/getFrequentlyAskedQuestions.spec.js +0 -58
- package/lib/services/maia/Knowledge/delete.spec.js +0 -45
- package/lib/services/maia/Knowledge/download.spec.js +0 -78
- package/lib/services/maia/Knowledge/save.spec.js +0 -58
- package/lib/services/maia/Orchestrator/orchestrator.spec.js +0 -72
- package/lib/services/maia/RecentClients/getRecentClients.spec.js +0 -52
- package/lib/services/maia/RecentContexts/getRecentContexts.spec.js +0 -83
- package/lib/services/maia/RecentProjects/getRecentProjects.spec.js +0 -82
- package/lib/services/maia/RecentTasks/getRecentTasks.spec.js +0 -63
- package/lib/services/maia/RecentUsers/getRecentUsers.spec.js +0 -82
- package/lib/services/maia/Skills/createSkill.spec.js +0 -68
- package/lib/services/maia/Skills/deleteSkill.spec.js +0 -42
- package/lib/services/maia/Skills/generateSkill.spec.js +0 -48
- package/lib/services/maia/Skills/getSkills.spec.js +0 -152
- package/lib/services/maia/Skills/updateSkill.spec.js +0 -62
- package/lib/services/maia/client.spec.js +0 -56
- package/lib/services/utils/fetchCOR.spec.js +0 -211
- package/lib/services/utils/getCookie.spec.js +0 -20
- package/lib/store/chatsSidebarOptimistic.spec.js +0 -120
- package/lib/store/maiaLastChatPersistence.spec.js +0 -22
- package/lib/store/maiaPanelSessionPersistence.spec.js +0 -62
- package/lib/store/sessions/sessions.types.spec.js +0 -16
- package/lib/store/sessions/useSessionsStore.spec.js +0 -135
- package/lib/store/useChatsStore.spec.js +0 -619
- package/lib/store/useFaqsStore.spec.js +0 -57
- package/lib/utils/agentDisplayName.spec.js +0 -44
- package/lib/utils/autoApproveStorage.spec.js +0 -25
- package/lib/utils/chatInputFiles.spec.js +0 -39
- package/lib/utils/contextMentionLabel.spec.js +0 -13
- package/lib/utils/contextMentionTriggers.spec.js +0 -38
- package/lib/utils/contextMentionTypeLabel.spec.js +0 -14
- package/lib/utils/corConnectorMentionTypes.spec.js +0 -23
- package/lib/utils/fileDownloadHelper.spec.js +0 -67
- package/lib/utils/formatQuickActionMessage.spec.js +0 -27
- package/lib/utils/formatUnreadCount.spec.js +0 -12
- package/lib/utils/getUnitFileSize.spec.js +0 -18
- package/lib/utils/hitlAnalytics.spec.js +0 -100
- package/lib/utils/hoursPlannerQuickActionType.spec.js +0 -64
- package/lib/utils/maiaPageRoute.js +0 -24
- package/lib/utils/maiaPageRoute.spec.js +0 -23
- package/lib/utils/mapBackendLang.spec.js +0 -19
- package/lib/utils/normalizeAgentConnectors.spec.js +0 -89
- package/lib/utils/orchestratorSubagents.spec.js +0 -32
- package/lib/utils/reasoningMappers.spec.js +0 -103
- package/lib/utils/retryCompletion.spec.js +0 -99
- package/lib/utils/skillContentSize.spec.js +0 -13
- package/lib/utils/slashCommandMarker.spec.js +0 -43
- package/lib/utils/sortManagerHoursHomeFuas.spec.js +0 -51
- package/lib/utils/sseStreamContent.spec.js +0 -31
- package/lib/utils/streamActivityMessages.spec.js +0 -131
- package/lib/utils/validateTrimmedFields.spec.js +0 -26
|
@@ -247,12 +247,6 @@ export var ChatAIHome = function ChatAIHome(_ref2) {
|
|
|
247
247
|
var _useFrequentlyUsedAct3 = useFrequentlyUsedActions(isHeaderManagerHoursHome ? agent === null || agent === void 0 ? void 0 : agent.id : undefined, 'home_with_hours'),
|
|
248
248
|
managerHomeFuas = _useFrequentlyUsedAct3.actions,
|
|
249
249
|
managerHomeFuasLoading = _useFrequentlyUsedAct3.loading;
|
|
250
|
-
// A11: my-day + should-review CTAs only for collaborator (role_id=4) + fullscreen header home.
|
|
251
|
-
// Both FUAs share section=home_fullscreen_collaborator (order 1 my-day / order 2 should-review).
|
|
252
|
-
var shouldFetchCollaboratorFullscreenFuas = Boolean(expanded && isCollaboratorRole(user.role_id) && isHeaderHome);
|
|
253
|
-
var _useFrequentlyUsedAct4 = useFrequentlyUsedActions(shouldFetchCollaboratorFullscreenFuas ? agent === null || agent === void 0 ? void 0 : agent.id : undefined, 'home_fullscreen_collaborator'),
|
|
254
|
-
collaboratorFullscreenFuas = _useFrequentlyUsedAct4.actions,
|
|
255
|
-
collaboratorFullscreenFuasLoading = _useFrequentlyUsedAct4.loading;
|
|
256
250
|
var headerHoursFuas = useMemo(function () {
|
|
257
251
|
if (isHeaderManagerHoursHome) return sortManagerHoursHomeFuas(managerHomeFuas);
|
|
258
252
|
return collaboratorPlannerFuas;
|
|
@@ -294,13 +288,10 @@ export var ChatAIHome = function ChatAIHome(_ref2) {
|
|
|
294
288
|
var shouldShowPlannerFuasLoading = isHeaderHoursAgentHome && headerHoursFuasLoading && headerHoursFuas.length === 0;
|
|
295
289
|
var shouldShowPlannerFuasContent = isHeaderHoursAgentHome && headerHoursFuas.length > 0;
|
|
296
290
|
var shouldShowPlannerFuas = shouldShowPlannerFuasLoading || shouldShowPlannerFuasContent;
|
|
297
|
-
var shouldShowCollaboratorFullscreenFuasLoading = shouldFetchCollaboratorFullscreenFuas && collaboratorFullscreenFuasLoading && collaboratorFullscreenFuas.length === 0;
|
|
298
|
-
var shouldShowCollaboratorFullscreenFuasContent = shouldFetchCollaboratorFullscreenFuas && collaboratorFullscreenFuas.length > 0;
|
|
299
|
-
var shouldShowCollaboratorFullscreenFuas = shouldShowCollaboratorFullscreenFuasLoading || shouldShowCollaboratorFullscreenFuasContent;
|
|
300
291
|
var showProjectSummaryCard = showProjectSummary && (agent === null || agent === void 0 ? void 0 : agent.entity) === 'project';
|
|
301
|
-
var showFAQs = !!(showRecentContextsBlock || shouldShowFaqs || shouldShowFuas || shouldShowPlannerFuas ||
|
|
292
|
+
var showFAQs = !!(showRecentContextsBlock || shouldShowFaqs || shouldShowFuas || shouldShowPlannerFuas || showProjectSummaryCard || isMaiaker);
|
|
302
293
|
var homeScrollableLayout = showFAQs;
|
|
303
|
-
var showDynamicSection = showRecentContextsBlock || shouldShowFaqs || shouldShowFuas || shouldShowPlannerFuas ||
|
|
294
|
+
var showDynamicSection = showRecentContextsBlock || shouldShowFaqs || shouldShowFuas || shouldShowPlannerFuas || isMaiaker;
|
|
304
295
|
|
|
305
296
|
// Lógica del scroll con gradientes
|
|
306
297
|
var contentContainerRef = useRef(null);
|
|
@@ -410,7 +401,7 @@ export var ChatAIHome = function ChatAIHome(_ref2) {
|
|
|
410
401
|
document.dispatchEvent(new CustomEvent('maia-input-refocus'));
|
|
411
402
|
});
|
|
412
403
|
}, [event, setChipsProject, setClient, setProject, setTask, t]);
|
|
413
|
-
var handleHomeStartChat = useCallback(function (message, attachments, faqId, agentSuggestionId, mentions, fuaId
|
|
404
|
+
var handleHomeStartChat = useCallback(function (message, attachments, faqId, agentSuggestionId, mentions, fuaId) {
|
|
414
405
|
if (isHeaderManagerHoursHome && fuaId) {
|
|
415
406
|
flushSync(function () {
|
|
416
407
|
setSelectedContext(null);
|
|
@@ -420,7 +411,7 @@ export var ChatAIHome = function ChatAIHome(_ref2) {
|
|
|
420
411
|
setChipsProject(null);
|
|
421
412
|
});
|
|
422
413
|
}
|
|
423
|
-
onStartChat(message, attachments, faqId, agentSuggestionId, mentions, fuaId
|
|
414
|
+
onStartChat(message, attachments, faqId, agentSuggestionId, mentions, fuaId);
|
|
424
415
|
}, [isHeaderManagerHoursHome, onStartChat, setChipsProject, setClient, setProject, setTask]);
|
|
425
416
|
var renderRecentContexts = function renderRecentContexts() {
|
|
426
417
|
if (!isRecentContextsStep) return null;
|
|
@@ -629,13 +620,7 @@ export var ChatAIHome = function ChatAIHome(_ref2) {
|
|
|
629
620
|
}), showDynamicSection && /*#__PURE__*/_jsxs(SCCAIHomeDynamicSection, {
|
|
630
621
|
$grow: isMaiaker,
|
|
631
622
|
$alignStart: isHeaderTaskContextHome || isLeftAlignedOrchestratorHome,
|
|
632
|
-
children: [
|
|
633
|
-
onStartChat: handleHomeStartChat,
|
|
634
|
-
agentId: agent === null || agent === void 0 ? void 0 : agent.id,
|
|
635
|
-
isScrolling: isScrolling,
|
|
636
|
-
actions: collaboratorFullscreenFuas,
|
|
637
|
-
loading: collaboratorFullscreenFuasLoading
|
|
638
|
-
}) : null, shouldShowPlannerFuas ? /*#__PURE__*/_jsx(FrequentlyUsedActions, {
|
|
623
|
+
children: [shouldShowPlannerFuas ? /*#__PURE__*/_jsx(FrequentlyUsedActions, {
|
|
639
624
|
variant: "planner",
|
|
640
625
|
onStartChat: handleHomeStartChat,
|
|
641
626
|
agentId: agent === null || agent === void 0 ? void 0 : agent.id,
|
|
@@ -667,4 +652,4 @@ export var ChatAIHome = function ChatAIHome(_ref2) {
|
|
|
667
652
|
})]
|
|
668
653
|
});
|
|
669
654
|
};
|
|
670
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VFZmZlY3QiLCJ1c2VMYXlvdXRFZmZlY3QiLCJ1c2VSZWYiLCJ1c2VTdGF0ZSIsInVzZUNhbGxiYWNrIiwidXNlTWVtbyIsImZsdXNoU3luYyIsIlRvb2x0aXAiLCJMaXN0Q2hlY2tsaXN0IiwidXNlVCIsIkVWRU5UUyIsInVzZUV2ZW50IiwiU0NDQUlIb21lQ29udGFpbmVyIiwiU0NDQUlIb21lQ29udGVudCIsIlNDQ0FJSG9tZUNvbnRlbnRJbm5lciIsIlNDQ0FJSG9tZUdyYWRpZW50VG9wIiwiU0NDQUlIb21lR3JhZGllbnRCb3R0b20iLCJTQ0NBSUhvbWVIZWFkZXIiLCJTQ0NBSUhvbWVHcmVldGluZyIsIlNDQ0FJSG9tZUFnZW50SW5mb0NvbnRhaW5lciIsIlNDQ0FJSG9tZUFnZW50SW5mbyIsIlNDQ0FJSG9tZVByb2plY3RTdW1tYXJ5IiwiU0NDQUlIb21lUHJvamVjdFN1bW1hcnlDb250ZW50IiwiU0NDQUlIb21lUHJvamVjdFN1bW1hcnlUaXRsZSIsIlNDQ0FJSG9tZVByb2plY3RTdW1tYXJ5RGVzY3JpcHRpb24iLCJTQ0NBSFdyYXBwZXJTdW1tYXJ5UHJvamVjdCIsIlNDQ0FJSG9tZUludHJvZHVjdGlvbiIsIlNDQ0FJSG9tZUNyZWF0ZWRCeUNvbnRhaW5lciIsIlNDQ0FJSG9tZUNyZWF0ZWRCeVRleHQiLCJTQ0NBSUhvbWVDcmVhdGVkQnlUZXh0TmFtZSIsIlNDQ0FJSG9tZUljb25Db250YWluZXIiLCJTQ0NBSUhvbWVMb2dvV3JhcHBlciIsIlNDQ0FJSG9tZU1haWFIZWFkZXJTdGFjayIsIlNDQ0FJSG9tZVRpdGxlIiwiU0NDQUlIb21lVGl0bGVCbG9jayIsIlNDQ0FJSG9tZVN1YnRpdGxlIiwiU0NDQUlIb21lRHluYW1pY1NlY3Rpb24iLCJTQ0NBSUhvbWVSZWNlbnRDb250ZXh0cyIsIlNDQ0FJSG9tZVJlY2VudENvbnRleHRzTGlzdCIsIlNDQ0FJSG9tZVJlY2VudENvbnRleHRzU2VjdGlvbkhlYWRlciIsIlNDQ0FJSG9tZVJlY2VudENvbnRleHRzU2VjdGlvblRpdGxlIiwiU0NDQUlIb21lUmVjZW50Q29udGV4dHNTZWN0aW9uU3VidGl0bGUiLCJTQ0NBSUhvbWVSZWNlbnRDb250ZXh0UGlsbCIsIlNDQ0FJSG9tZVJlY2VudENvbnRleHRQaWxsSWNvbiIsIlNDQ0FJSG9tZVJlY2VudENvbnRleHRQaWxsVGV4dCIsIlNDQ0FJSG9tZVJlY2VudENvbnRleHRQaWxsU2tlbGV0b24iLCJNQUlBX0hFQURFUl9DT0xMQUJPUkFUT1JfSE9NRV9DT05URU5UX1dJRFRIX1BYIiwidXNlR2xvYmFsQ29udGV4dCIsInVzZVVzZXIiLCJDT1JVc2VyUm9sZSIsImlzQ29sbGFib3JhdG9yUm9sZSIsImlzTWFuYWdlclJvbGUiLCJ1c2VSZXNpemVMaXN0ZW5lciIsImdldENvbnRleHRNZW50aW9uSWNvbiIsIm9yY2hlc3RyYXRvckhhc0hvdXJzU3ViYWdlbnQiLCJ2YWxpZGF0ZUlzTWFpYSIsImlzTWFpYWtlckFnZW50IiwiRnJlcXVlbnRseUFza2VkUXVlc3Rpb25zIiwiRnJlcXVlbnRseVVzZWRBY3Rpb25zIiwidXNlRnJlcXVlbnRseVVzZWRBY3Rpb25zIiwic29ydE1hbmFnZXJIb3Vyc0hvbWVGdWFzIiwidXNlRnJlcXVlbnRseUFza2VkUXVlc3Rpb25zIiwidXNlUmVjZW50Q29udGV4dHMiLCJNQUlBSXNvbG9nbyIsIlRlbXBsYXRlR3JhZGllbnRJY29uIiwiQ2hhdEFJSG9tZU1haWFrZXIiLCJqc3giLCJfanN4IiwianN4cyIsIl9qc3hzIiwiRnJhZ21lbnQiLCJfRnJhZ21lbnQiLCJGcmVxdWVudFF1ZXN0aW9ucyIsIlJFQ0VOVF9DT05URVhUU19MSU1JVCIsIlJFQ0VOVF9DT05URVhUX0lDT05fQ09MT1IiLCJSRUNFTlRfQ09OVEVYVF9JQ09OX1NJWkVfUFgiLCJSRUNFTlRfQ09OVEVYVF9TS0VMRVRPTl9LRVlTIiwiUmVjZW50Q29udGV4dFBpbGwiLCJfcmVmIiwiY29udGV4dCIsImxhYmVsIiwib25DbGljayIsIl9yZWYkZnVsbFdpZHRoIiwiZnVsbFdpZHRoIiwidGV4dFJlZiIsIl91c2VSZXNpemVMaXN0ZW5lciIsInNob3dUb29sdGlwIiwidHlwZSIsIiRmdWxsV2lkdGgiLCJjaGlsZHJlbiIsImNvbG9yIiwid2lkdGgiLCJoZWlnaHQiLCJ1bmRlZmluZWQiLCJyZWYiLCJ0aXRsZSIsInBhcnNlTnVtZXJpY0lkIiwidmFsdWUiLCJwYXJzZWQiLCJOdW1iZXIiLCJpc0Zpbml0ZSIsImdldEFsbG93ZWRSZWNlbnRDb250ZXh0VHlwZXMiLCJyb2xlSWQiLCJub3JtYWxpemVkUm9sZUlkIiwiQ0xFVkVMIiwiRElSRUNUT1IiLCJQUk9KRUNUX01BTkFHRVIiLCJTZXQiLCJDaGF0QUlIb21lIiwiX3JlZjIiLCJoYW5kbGVycyIsIm9uU3RhcnRDaGF0IiwiZXhwYW5kZWQiLCJmbG9hdGluZyIsIl91c2VUIiwidCIsImkxOG4iLCJldmVudCIsInVzZXIiLCJfdXNlR2xvYmFsQ29udGV4dCIsImFnZW50Iiwic2VjdGlvbiIsImNsaWVudCIsInByb2plY3QiLCJ0YXNrIiwiY2hpcHNQcm9qZWN0Iiwic2V0Q2xpZW50Iiwic2V0UHJvamVjdCIsInNldFRhc2siLCJzZXRDaGlwc1Byb2plY3QiLCJpc01BSUEiLCJmbG9hdGluZ0N1c3RvbUNlbnRlciIsImxhbmciLCJsYW5ndWFnZSIsInN1bW1hcnlQcm9qZWN0QWNjZXNzIiwid2luZG93IiwiU3RyaW5nIiwiTUFJQV9QUk9KRUNUX1NVTU1BUllfRkVBVFVSRV9BQ0NFU1MiLCJ0b0xvd2VyQ2FzZSIsIm1haWFQcm9qZWN0U3VtbWFyeUFjY2VzcyIsImZhcXNBY2Nlc3MiLCJzaG93UHJvamVjdFN1bW1hcnkiLCJpc01haWFrZXIiLCJpc0hlYWRlckhvbWUiLCJpc09yY2hlc3RyYXRvciIsImlzUGxhbm5lckhvbWUiLCJpc1NlY3Rpb25PcmNoZXN0cmF0b3JIb21lIiwiaGFzSG91cnNTdWJhZ2VudCIsImhhc1Bpbm5lZENvbnRleHQiLCJpZCIsInByb2plY3RJZCIsImlzUmVjZW50Q29udGV4dHNTdGVwIiwiaXNIZWFkZXJUYXNrQ29udGV4dEhvbWUiLCJyb2xlX2lkIiwiaXNIZWFkZXJIb3Vyc0FnZW50SG9tZSIsImlzSGVhZGVyTWFuYWdlckhvdXJzSG9tZSIsImhlYWRlclRhc2tDb250ZXh0U3VidGl0bGVLZXkiLCJpc0NvbnRleHRIb21lU3RlcCIsImlzTGVmdEFsaWduZWRPcmNoZXN0cmF0b3JIb21lIiwiYWxsb3dlZFJlY2VudENvbnRleHRUeXBlcyIsIl91c2VSZWNlbnRDb250ZXh0cyIsImVuYWJsZWQiLCJsaW1pdCIsImZldGNoZWRSZWNlbnRDb250ZXh0cyIsImNvbnRleHRzIiwicmVjZW50Q29udGV4dHNMb2FkaW5nIiwibG9hZGluZyIsInJlY2VudENvbnRleHRzIiwiZmlsdGVyIiwiaGFzIiwiX3VzZVN0YXRlIiwiX3VzZVN0YXRlMiIsIl9zbGljZWRUb0FycmF5Iiwic2VsZWN0ZWRDb250ZXh0Iiwic2V0U2VsZWN0ZWRDb250ZXh0IiwiYWN0aXZlQ29udGV4dCIsIm5hbWUiLCJwcm9qZWN0TmFtZSIsInBpbm5lZEVudGl0eVR5cGUiLCJmYXFzQ29udGV4dEVudGl0eVR5cGUiLCJfYWN0aXZlQ29udGV4dCR0eXBlIiwiaXNDbGllbnRDb250ZXh0Rm9yRmFxcyIsImZ1YXNTZWN0aW9uIiwicmVhbExpc3RzQWdlbnRJZCIsInJlYWxMaXN0c0VudGl0eVR5cGUiLCJfYWN0aXZlQ29udGV4dCR0eXBlMiIsIl91c2VGcmVxdWVudGx5VXNlZEFjdCIsImFnZW50RnVhcyIsImFjdGlvbnMiLCJmdWFzTG9hZGluZyIsIl91c2VGcmVxdWVudGx5VXNlZEFjdDIiLCJjb2xsYWJvcmF0b3JQbGFubmVyRnVhcyIsImNvbGxhYm9yYXRvclBsYW5uZXJGdWFzTG9hZGluZyIsIl91c2VGcmVxdWVudGx5VXNlZEFjdDMiLCJtYW5hZ2VySG9tZUZ1YXMiLCJtYW5hZ2VySG9tZUZ1YXNMb2FkaW5nIiwic2hvdWxkRmV0Y2hDb2xsYWJvcmF0b3JGdWxsc2NyZWVuRnVhcyIsIkJvb2xlYW4iLCJfdXNlRnJlcXVlbnRseVVzZWRBY3Q0IiwiY29sbGFib3JhdG9yRnVsbHNjcmVlbkZ1YXMiLCJjb2xsYWJvcmF0b3JGdWxsc2NyZWVuRnVhc0xvYWRpbmciLCJoZWFkZXJIb3Vyc0Z1YXMiLCJoZWFkZXJIb3Vyc0Z1YXNMb2FkaW5nIiwiZmFxc0xpc3RBZ2VudElkIiwiZmFxc0xpc3RFbnRpdHlUeXBlIiwiX3VzZUZyZXF1ZW50bHlBc2tlZFF1IiwiYWdlbnRGYXFzIiwiZmFxcyIsImZhcXNMb2FkaW5nIiwiaGFuZGxlR2V0RnJlcXVlbnRseUFza2VkUXVlc3Rpb25zIiwiZmFxc0ZldGNoUmVmIiwiX2ZhcXNGZXRjaFJlZiRjdXJyZW50IiwiY3VycmVudEtleSIsImNvbmNhdCIsImxhc3RLZXkiLCJjdXJyZW50IiwiYWdlbnRJZCIsImVudGl0eVR5cGUiLCJmdWFzIiwiZmFxc0FyZUxvYWRpbmciLCJmdWFzQXJlTG9hZGluZyIsInNob3dSZWNlbnRDb250ZXh0c0Jsb2NrIiwibGVuZ3RoIiwic2hvdWxkU2hvd0ZhcXMiLCJzaG91bGRTaG93RnVhcyIsInNob3VsZFNob3dQbGFubmVyRnVhc0xvYWRpbmciLCJzaG91bGRTaG93UGxhbm5lckZ1YXNDb250ZW50Iiwic2hvdWxkU2hvd1BsYW5uZXJGdWFzIiwic2hvdWxkU2hvd0NvbGxhYm9yYXRvckZ1bGxzY3JlZW5GdWFzTG9hZGluZyIsInNob3VsZFNob3dDb2xsYWJvcmF0b3JGdWxsc2NyZWVuRnVhc0NvbnRlbnQiLCJzaG91bGRTaG93Q29sbGFib3JhdG9yRnVsbHNjcmVlbkZ1YXMiLCJzaG93UHJvamVjdFN1bW1hcnlDYXJkIiwiZW50aXR5Iiwic2hvd0ZBUXMiLCJob21lU2Nyb2xsYWJsZUxheW91dCIsInNob3dEeW5hbWljU2VjdGlvbiIsImNvbnRlbnRDb250YWluZXJSZWYiLCJfdXNlU3RhdGUzIiwiX3VzZVN0YXRlNCIsInNob3dUb3BHcmFkaWVudCIsInNldFNob3dUb3BHcmFkaWVudCIsIl91c2VTdGF0ZTUiLCJfdXNlU3RhdGU2Iiwic2hvd0JvdHRvbUdyYWRpZW50Iiwic2V0U2hvd0JvdHRvbUdyYWRpZW50IiwiX3VzZVN0YXRlNyIsIl91c2VTdGF0ZTgiLCJpc1Njcm9sbGluZyIsInNldElzU2Nyb2xsaW5nIiwic2Nyb2xsVGltZW91dFJlZiIsImdyZWV0aW5nIiwiaW50cm8iLCJpbnRyb2R1Y3Rpb24iLCJBcnJheSIsImlzQXJyYXkiLCJNYXRoIiwiZmxvb3IiLCJyYW5kb20iLCJoYW5kbGVTZWxlY3RSZWNlbnRDb250ZXh0Iiwib3JkZXIiLCJfY29udGV4dCRwYXJlbnRzIiwiX2NvbnRleHQkcGFyZW50czIiLCJfY29udGV4dCRwYXJlbnRzMyIsIl9jb250ZXh0JHBhcmVudHM0IiwiYWlDaGF0Q29udGV4dFNlbGVjdGVkIiwiY29udGV4dElkIiwiY2xpZW50SWQiLCJwYXJlbnRzIiwiY2xpZW50X2lkIiwicHJvamVjdF9pZCIsImNsaWVudE5hbWUiLCJjbGllbnRfbmFtZSIsInByb2plY3RfbmFtZSIsIl9vYmplY3RTcHJlYWQiLCJyZXF1ZXN0QW5pbWF0aW9uRnJhbWUiLCJkb2N1bWVudCIsImRpc3BhdGNoRXZlbnQiLCJDdXN0b21FdmVudCIsImhhbmRsZUhvbWVTdGFydENoYXQiLCJtZXNzYWdlIiwiYXR0YWNobWVudHMiLCJmYXFJZCIsImFnZW50U3VnZ2VzdGlvbklkIiwibWVudGlvbnMiLCJmdWFJZCIsInNjSWQiLCJjb250ZXh0RGF0YSIsInJlbmRlclJlY2VudENvbnRleHRzIiwiJGZpeGVkQ29udGVudFdpZHRoIiwiJGZsdXNoUGlsbHMiLCJtYXAiLCJrZXkiLCJpbmRleCIsInRyaW0iLCJjaGVja1Njcm9sbCIsImNvbnRhaW5lciIsInNjcm9sbFRvcCIsInNjcm9sbEhlaWdodCIsImNsaWVudEhlaWdodCIsImlzU2Nyb2xsYWJsZSIsImlzQXRUb3AiLCJpc0F0Qm90dG9tIiwiaGFuZGxlU2Nyb2xsIiwiY2xlYXJUaW1lb3V0Iiwic2V0VGltZW91dCIsInNjaGVkdWxlQ2hlY2tTY3JvbGwiLCJhZGRFdmVudExpc3RlbmVyIiwicmVzaXplT2JzZXJ2ZXIiLCJSZXNpemVPYnNlcnZlciIsIm9ic2VydmUiLCJzY3JvbGxDb250ZW50IiwiZmlyc3RFbGVtZW50Q2hpbGQiLCJFbGVtZW50IiwidGltZW91dElkIiwibGF0ZVRpbWVvdXRJZCIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJkaXNjb25uZWN0IiwicmVuZGVySGVhZGVyQ29udGVudCIsIl9hZ2VudCRjcmVhdGVkX2J5IiwiX2FnZW50JGNyZWF0ZWRfYnkyIiwiZW1vamkiLCJjcmVhdGVkX2J5IiwiaXNfZGVsZXRlZCIsImNvbnRlbnRBbGlnblN0YXJ0IiwibWFpYUhlYWRlclN0YWNrTmVlZHNHYXAiLCIkbm9HYXAiLCIkYWxpZ24iLCIkc2l6ZSIsImZpcnN0TmFtZSIsIiRjb2xsYWJvcmF0b3JIb21lIiwiZml4ZWRIb21lQ29udGVudFdpZHRoIiwic2hvd0FnZW50SW50cm9kdWN0aW9uIiwiJGFsaWduU3RhcnQiLCIkc2hvdyIsIiRpc0FnZW50VmlldyIsIiRmbG9hdGluZ0N1c3RvbUNlbnRlciIsIiRjZW50ZXJWZXJ0aWNhbGx5IiwiJGhlYWRlckNvbGxhYm9yYXRvckhvbWUiLCIkc2VjdGlvbk9yY2hlc3RyYXRvckhvbWUiLCIkZ2FwIiwiJG1heFdpZHRoIiwicHJvamVjdFN1bW1hcnkiLCIkZ3JvdyIsInZhcmlhbnQiXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy9tb2xlY3VsZXMvQ2hhdEFJSG9tZS9DaGF0QUlIb21lLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSByZWFjdC9mdW5jdGlvbi1jb21wb25lbnQtZGVmaW5pdGlvbiAqL1xuLyogZXNsaW50LWRpc2FibGUganN4LWExMXkvY2xpY2stZXZlbnRzLWhhdmUta2V5LWV2ZW50cyAqL1xuLyogZXNsaW50LWRpc2FibGUganN4LWExMXkvbm8tc3RhdGljLWVsZW1lbnQtaW50ZXJhY3Rpb25zICovXG5pbXBvcnQgeyB1c2VFZmZlY3QsIHVzZUxheW91dEVmZmVjdCwgdXNlUmVmLCB1c2VTdGF0ZSwgdXNlQ2FsbGJhY2ssIHVzZU1lbW8gfSBmcm9tICdyZWFjdCdcbmltcG9ydCB7IGZsdXNoU3luYyB9IGZyb20gJ3JlYWN0LWRvbSdcblxuaW1wb3J0IHsgVG9vbHRpcCB9IGZyb20gJ0Bwcm9qZWN0Y29yL3Rvb2x0aXB2Mi9saWIvY29tcG9uZW50cy9Ub29sdGlwJ1xuaW1wb3J0IHsgTGlzdENoZWNrbGlzdCB9IGZyb20gJ0Bwcm9qZWN0Y29yL2ljb25zL2xpYi9jb21wb25lbnRzL0xpc3RDaGVja2xpc3QnXG5pbXBvcnQgeyB1c2VUIH0gZnJvbSAnLi4vLi4vLi4vaG9va3MvdXNlVCdcbmltcG9ydCB7IEVWRU5UUywgdXNlRXZlbnQgfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VFdmVudCdcblxuaW1wb3J0IHsgb3B0aW9ucyB9IGZyb20gJy4uL0NoYXRBSU1vZGFsL2NvbnN0YW50cydcblxuaW1wb3J0IHtcbiAgU0NDQUlIb21lQ29udGFpbmVyLFxuICBTQ0NBSUhvbWVDb250ZW50LFxuICBTQ0NBSUhvbWVDb250ZW50SW5uZXIsXG4gIFNDQ0FJSG9tZUdyYWRpZW50VG9wLFxuICBTQ0NBSUhvbWVHcmFkaWVudEJvdHRvbSxcbiAgU0NDQUlIb21lSGVhZGVyLFxuICBTQ0NBSUhvbWVHcmVldGluZyxcbiAgU0NDQUlIb21lQWdlbnRJbmZvQ29udGFpbmVyLFxuICBTQ0NBSUhvbWVBZ2VudEluZm8sXG4gIFNDQ0FJSG9tZVByb2plY3RTdW1tYXJ5LFxuICBTQ0NBSUhvbWVQcm9qZWN0U3VtbWFyeUNvbnRlbnQsXG4gIFNDQ0FJSG9tZVByb2plY3RTdW1tYXJ5VGl0bGUsXG4gIFNDQ0FJSG9tZVByb2plY3RTdW1tYXJ5RGVzY3JpcHRpb24sXG4gIFNDQ0FIV3JhcHBlclN1bW1hcnlQcm9qZWN0LFxuICBTQ0NBSUhvbWVJbnRyb2R1Y3Rpb24sXG4gIFNDQ0FJSG9tZUNyZWF0ZWRCeUNvbnRhaW5lcixcbiAgU0NDQUlIb21lQ3JlYXRlZEJ5VGV4dCxcbiAgU0NDQUlIb21lQ3JlYXRlZEJ5VGV4dE5hbWUsXG4gIFNDQ0FJSG9tZUljb25Db250YWluZXIsXG4gIFNDQ0FJSG9tZUxvZ29XcmFwcGVyLFxuICBTQ0NBSUhvbWVNYWlhSGVhZGVyU3RhY2ssXG4gIFNDQ0FJSG9tZVRpdGxlLFxuICBTQ0NBSUhvbWVUaXRsZUJsb2NrLFxuICBTQ0NBSUhvbWVTdWJ0aXRsZSxcbiAgU0NDQUlIb21lRHluYW1pY1NlY3Rpb24sXG4gIFNDQ0FJSG9tZVJlY2VudENvbnRleHRzLFxuICBTQ0NBSUhvbWVSZWNlbnRDb250ZXh0c0xpc3QsXG4gIFNDQ0FJSG9tZVJlY2VudENvbnRleHRzU2VjdGlvbkhlYWRlcixcbiAgU0NDQUlIb21lUmVjZW50Q29udGV4dHNTZWN0aW9uVGl0bGUsXG4gIFNDQ0FJSG9tZVJlY2VudENvbnRleHRzU2VjdGlvblN1YnRpdGxlLFxuICBTQ0NBSUhvbWVSZWNlbnRDb250ZXh0UGlsbCxcbiAgU0NDQUlIb21lUmVjZW50Q29udGV4dFBpbGxJY29uLFxuICBTQ0NBSUhvbWVSZWNlbnRDb250ZXh0UGlsbFRleHQsXG4gIFNDQ0FJSG9tZVJlY2VudENvbnRleHRQaWxsU2tlbGV0b24sXG4gIE1BSUFfSEVBREVSX0NPTExBQk9SQVRPUl9IT01FX0NPTlRFTlRfV0lEVEhfUFgsXG59IGZyb20gJy4vc3R5bGVzJ1xuaW1wb3J0IHsgdXNlR2xvYmFsQ29udGV4dCwgdHlwZSBTZWN0aW9uIH0gZnJvbSAnLi4vLi4vLi4vY29udGV4dC9nbG9iYWwtY29udGV4dCdcbmltcG9ydCB7IHVzZVVzZXIsIENPUlVzZXJSb2xlLCBpc0NvbGxhYm9yYXRvclJvbGUsIGlzTWFuYWdlclJvbGUgfSBmcm9tICcuLi8uLi8uLi9jb250ZXh0L2Nvci11c2VyJ1xuaW1wb3J0IHsgdXNlUmVzaXplTGlzdGVuZXIgfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VSZXNpemUnXG5pbXBvcnQgeyBnZXRDb250ZXh0TWVudGlvbkljb24gfSBmcm9tICcuLi8uLi8uLi91dGlscy9jb250ZXh0TWVudGlvbkljb25zJ1xuaW1wb3J0IHsgb3JjaGVzdHJhdG9ySGFzSG91cnNTdWJhZ2VudCB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL29yY2hlc3RyYXRvclN1YmFnZW50cydcbmltcG9ydCB7IHZhbGlkYXRlSXNNYWlhIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvdXRpbHMvdmFsaWRhdGVJc01haWEnXG5pbXBvcnQgeyBpc01haWFrZXJBZ2VudCB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL2FnZW50RGlzcGxheU5hbWUnXG5pbXBvcnQgeyBBZ2VudCB9IGZyb20gJy4uLy4uLy4uL3R5cGVzL2FnZW50J1xuaW1wb3J0IHsgQXR0YWNobWVudEZpbGUgfSBmcm9tICcuLi9DaGF0Rm9vdGVyL0NoYXRGb290ZXInXG5pbXBvcnQgeyBGcmVxdWVudGx5QXNrZWRRdWVzdGlvbnMgfSBmcm9tICcuLi8uLi9hdG9tcy9GcmVxdWVudGx5QXNrZWRRdWVzdGlvbnMnXG5pbXBvcnQgeyBGcmVxdWVudGx5VXNlZEFjdGlvbnMgfSBmcm9tICcuLi8uLi9hdG9tcy9GcmVxdWVudGx5VXNlZEFjdGlvbnMnXG5pbXBvcnQgeyB1c2VGcmVxdWVudGx5VXNlZEFjdGlvbnMgfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VGcmVxdWVudGx5VXNlZEFjdGlvbnMnXG5pbXBvcnQgeyBzb3J0TWFuYWdlckhvdXJzSG9tZUZ1YXMgfSBmcm9tICcuLi8uLi8uLi91dGlscy9zb3J0TWFuYWdlckhvdXJzSG9tZUZ1YXMnXG5pbXBvcnQgeyB1c2VGcmVxdWVudGx5QXNrZWRRdWVzdGlvbnMgfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VGcmVxdWVudGx5QXNrZWRRdWVzdGlvbnMnXG5pbXBvcnQgeyB1c2VSZWNlbnRDb250ZXh0cyB9IGZyb20gJy4uLy4uLy4uL2hvb2tzL3VzZVJlY2VudENvbnRleHRzJ1xuaW1wb3J0IHR5cGUgeyBSZWNlbnRDb250ZXh0SXRlbSwgUmVjZW50Q29udGV4dFR5cGUgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9tYWlhL1JlY2VudENvbnRleHRzJ1xuaW1wb3J0IHsgTUFJQUlzb2xvZ28gfSBmcm9tICcuLi8uLi9hdG9tcy9pY29ucy9NQUlBSXNvbG9nbydcbmltcG9ydCB7IFRlbXBsYXRlR3JhZGllbnRJY29uIH0gZnJvbSAnLi4vLi4vYXRvbXMvaWNvbnMvVGVtcGxhdGVHcmFkaWVudEljb24nXG5pbXBvcnQgeyBDaGF0QUlIb21lTWFpYWtlciB9IGZyb20gJy4vQ2hhdEFJSG9tZU1haWFrZXInXG5cbnR5cGUgQ2hhdEFJSG9tZVByb3BzID0ge1xuICBvblN0YXJ0Q2hhdDogKFxuICAgIG1lc3NhZ2U6IHN0cmluZyxcbiAgICBhdHRhY2htZW50cz86IEF0dGFjaG1lbnRGaWxlW10gfCBudWxsLFxuICAgIGZhcUlkPzogc3RyaW5nLFxuICAgIGFnZW50U3VnZ2VzdGlvbklkPzogc3RyaW5nLFxuICAgIG1lbnRpb25zPzogbnVsbCxcbiAgICBmdWFJZD86IHN0cmluZyxcbiAgICBzY0lkPzogc3RyaW5nLFxuICAgIGNvbnRleHREYXRhPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj5cbiAgKSA9PiB2b2lkXG4gIGhhbmRsZXJzOiBSZWNvcmQ8b3B0aW9ucywgKCkgPT4gdm9pZD5cbiAgZXhwYW5kZWQ/OiBib29sZWFuXG4gIGZsb2F0aW5nPzogYm9vbGVhblxufVxuXG5leHBvcnQgZW51bSBGcmVxdWVudFF1ZXN0aW9ucyB7XG4gIHJlbnRhYmlsaWRhZF9wcm95ZWN0byA9ICdyZW50YWJpbGlkYWRfcHJveWVjdG8nLFxuICBhdmFuY2VfcHJveWVjdG8gPSAnYXZhbmNlX3Byb3llY3RvJyxcbn1cblxuY29uc3QgUkVDRU5UX0NPTlRFWFRTX0xJTUlUID0gOVxuY29uc3QgUkVDRU5UX0NPTlRFWFRfSUNPTl9DT0xPUiA9ICcjNEQ0RDREJ1xuY29uc3QgUkVDRU5UX0NPTlRFWFRfSUNPTl9TSVpFX1BYID0gMTVcbmNvbnN0IFJFQ0VOVF9DT05URVhUX1NLRUxFVE9OX0tFWVMgPSBbXG4gICdyZWNlbnQtY29udGV4dC1za2VsZXRvbi0xJyxcbiAgJ3JlY2VudC1jb250ZXh0LXNrZWxldG9uLTInLFxuICAncmVjZW50LWNvbnRleHQtc2tlbGV0b24tMycsXG5dXG5cbmNvbnN0IFJlY2VudENvbnRleHRQaWxsID0gKHtcbiAgY29udGV4dCxcbiAgbGFiZWwsXG4gIG9uQ2xpY2ssXG4gIGZ1bGxXaWR0aCA9IGZhbHNlLFxufToge1xuICBjb250ZXh0OiBSZWNlbnRDb250ZXh0SXRlbVxuICBsYWJlbDogc3RyaW5nXG4gIG9uQ2xpY2s6ICgpID0+IHZvaWRcbiAgZnVsbFdpZHRoPzogYm9vbGVhblxufSkgPT4ge1xuICBjb25zdCB0ZXh0UmVmID0gdXNlUmVmPEhUTUxTcGFuRWxlbWVudD4obnVsbClcbiAgY29uc3QgeyBzaG93VG9vbHRpcCB9ID0gdXNlUmVzaXplTGlzdGVuZXIodGV4dFJlZiwgW2xhYmVsXSlcblxuICByZXR1cm4gKFxuICAgIDxTQ0NBSUhvbWVSZWNlbnRDb250ZXh0UGlsbCB0eXBlPVwiYnV0dG9uXCIgb25DbGljaz17b25DbGlja30gJGZ1bGxXaWR0aD17ZnVsbFdpZHRofT5cbiAgICAgIDxTQ0NBSUhvbWVSZWNlbnRDb250ZXh0UGlsbEljb24+XG4gICAgICAgIHtjb250ZXh0LnR5cGUgPT09ICd0YXNrJyA/IChcbiAgICAgICAgICA8TGlzdENoZWNrbGlzdCBjb2xvcj17UkVDRU5UX0NPTlRFWFRfSUNPTl9DT0xPUn0gd2lkdGg9XCIxNXB4XCIgaGVpZ2h0PVwiMTVweFwiIC8+XG4gICAgICAgICkgOiAoXG4gICAgICAgICAgZ2V0Q29udGV4dE1lbnRpb25JY29uKGNvbnRleHQudHlwZSwgUkVDRU5UX0NPTlRFWFRfSUNPTl9DT0xPUiwgdW5kZWZpbmVkLCBSRUNFTlRfQ09OVEVYVF9JQ09OX1NJWkVfUFgpXG4gICAgICAgICl9XG4gICAgICA8L1NDQ0FJSG9tZVJlY2VudENvbnRleHRQaWxsSWNvbj5cbiAgICAgIDxTQ0NBSUhvbWVSZWNlbnRDb250ZXh0UGlsbFRleHQgcmVmPXt0ZXh0UmVmfT5cbiAgICAgICAge3Nob3dUb29sdGlwID8gKFxuICAgICAgICAgIDxUb29sdGlwIHRpdGxlPXtsYWJlbH0+XG4gICAgICAgICAgICA8c3Bhbj57bGFiZWx9PC9zcGFuPlxuICAgICAgICAgIDwvVG9vbHRpcD5cbiAgICAgICAgKSA6IChcbiAgICAgICAgICBsYWJlbFxuICAgICAgICApfVxuICAgICAgPC9TQ0NBSUhvbWVSZWNlbnRDb250ZXh0UGlsbFRleHQ+XG4gICAgPC9TQ0NBSUhvbWVSZWNlbnRDb250ZXh0UGlsbD5cbiAgKVxufVxuXG5jb25zdCBwYXJzZU51bWVyaWNJZCA9ICh2YWx1ZT86IHN0cmluZyB8IG51bWJlciB8IG51bGwpOiBudW1iZXIgfCBudWxsID0+IHtcbiAgaWYgKHZhbHVlID09PSBudWxsIHx8IHZhbHVlID09PSB1bmRlZmluZWQgfHwgdmFsdWUgPT09ICcnKSByZXR1cm4gbnVsbFxuICBjb25zdCBwYXJzZWQgPSBOdW1iZXIodmFsdWUpXG4gIHJldHVybiBOdW1iZXIuaXNGaW5pdGUocGFyc2VkKSA/IHBhcnNlZCA6IG51bGxcbn1cblxuY29uc3QgZ2V0QWxsb3dlZFJlY2VudENvbnRleHRUeXBlcyA9IChyb2xlSWQ/OiBDT1JVc2VyUm9sZSB8IG51bWJlciB8IHN0cmluZyk6IFNldDxSZWNlbnRDb250ZXh0VHlwZT4gPT4ge1xuICBjb25zdCBub3JtYWxpemVkUm9sZUlkID0gTnVtYmVyKHJvbGVJZClcbiAgaWYgKFxuICAgIG5vcm1hbGl6ZWRSb2xlSWQgPT09IENPUlVzZXJSb2xlLkNMRVZFTCB8fFxuICAgIG5vcm1hbGl6ZWRSb2xlSWQgPT09IENPUlVzZXJSb2xlLkRJUkVDVE9SIHx8XG4gICAgbm9ybWFsaXplZFJvbGVJZCA9PT0gQ09SVXNlclJvbGUuUFJPSkVDVF9NQU5BR0VSXG4gICkge1xuICAgIHJldHVybiBuZXcgU2V0KFsnY2xpZW50JywgJ3Byb2plY3QnLCAndGFzayddKVxuICB9XG4gIGlmIChpc0NvbGxhYm9yYXRvclJvbGUocm9sZUlkKSkge1xuICAgIHJldHVybiBuZXcgU2V0KFsndGFzayddKVxuICB9XG4gIHJldHVybiBuZXcgU2V0KClcbn1cblxuZXhwb3J0IGNvbnN0IENoYXRBSUhvbWUgPSAoeyBoYW5kbGVycywgb25TdGFydENoYXQsIGV4cGFuZGVkLCBmbG9hdGluZyB9OiBDaGF0QUlIb21lUHJvcHMpID0+IHtcbiAgY29uc3QgeyB0LCBpMThuIH0gPSB1c2VUKClcbiAgY29uc3QgZXZlbnQgPSB1c2VFdmVudCgpXG4gIGNvbnN0IHVzZXIgPSB1c2VVc2VyKClcbiAgY29uc3QgeyBhZ2VudCwgc2VjdGlvbiwgY2xpZW50LCBwcm9qZWN0LCB0YXNrLCBjaGlwc1Byb2plY3QsIHNldENsaWVudCwgc2V0UHJvamVjdCwgc2V0VGFzaywgc2V0Q2hpcHNQcm9qZWN0IH0gPVxuICAgIHVzZUdsb2JhbENvbnRleHQoKVxuXG4gIGNvbnN0IGlzTUFJQSA9IHZhbGlkYXRlSXNNYWlhKGFnZW50IGFzIEFnZW50KVxuICBjb25zdCBmbG9hdGluZ0N1c3RvbUNlbnRlciA9ICEhKGZsb2F0aW5nICYmIGFnZW50Py50eXBlID09PSAnY3VzdG9tJylcbiAgY29uc3QgbGFuZyA9IGkxOG4ubGFuZ3VhZ2UgPT09ICdicicgPyAncHQnIDogaTE4bi5sYW5ndWFnZVxuXG4gIGNvbnN0IHN1bW1hcnlQcm9qZWN0QWNjZXNzID1cbiAgICB0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyAmJlxuICAgIChTdHJpbmcod2luZG93Lk1BSUFfUFJPSkVDVF9TVU1NQVJZX0ZFQVRVUkVfQUNDRVNTKS50b0xvd2VyQ2FzZSgpID09PSAndHJ1ZScgfHxcbiAgICAgIFN0cmluZyh3aW5kb3cubWFpYVByb2plY3RTdW1tYXJ5QWNjZXNzKS50b0xvd2VyQ2FzZSgpID09PSAndHJ1ZScpXG4gIGNvbnN0IGZhcXNBY2Nlc3MgPSB0cnVlXG4gIGNvbnN0IHNob3dQcm9qZWN0U3VtbWFyeSA9ICEhKGlzTUFJQSAmJiBzdW1tYXJ5UHJvamVjdEFjY2VzcylcbiAgLy8gRWwgb3JjaGVzdHJhdG9yICh0eXBlID09PSAnb3JjaGVzdHJhdG9yJykgbXVlc3RyYSBGQVFzL0ZVQXMgYWdyZWdhZGFzIGRlIHN1cyBzdWJhZ2VudGVzLFxuICAvLyBhc8OtIHF1ZSBOTyBzZSB0cmF0YSBjb21vIG1haWFrZXIgYWPDoS5cbiAgY29uc3QgaXNNYWlha2VyID0gaXNNYWlha2VyQWdlbnQoYWdlbnQpXG4gIGNvbnN0IGlzSGVhZGVySG9tZSA9IGlzTUFJQSAmJiBzZWN0aW9uID09PSAnaGVhZGVyJyAmJiBhZ2VudD8udHlwZSA9PT0gJ29yY2hlc3RyYXRvcidcbiAgLy8gRWwgb3JjaGVzdHJhdG9yIHVzYSBlbCBob21lIGVuIDIgcGFzb3MgKGNvbnRleHRvcyByZWNpZW50ZXMg4oaUIEZBUXMvRlVBcykgZW4gaGVhZGVyL3Byb2plY3QvY2xpZW50L3Rhc2suXG4gIC8vIEVuIHByb2plY3QvY2xpZW50L3Rhc2ssIGFsIGxpbXBpYXIgZWwgY29udGV4dG8gKHAuIGVqLiBhbCByZXNlbGVjY2lvbmFyIE1BSUFcbiAgLy8gZGVzZGUgZWwgbGlzdGFkbyBkZSBhZ2VudGVzKSBzZSBtdWVzdHJhIGVsIHNlbGVjdG9yIGRlIGNvbnRleHRvcyByZWNpZW50ZXMgZW4gbHVnYXIgZGUgdW4gaG9tZSB2YWPDrW8uXG4gIGNvbnN0IGlzT3JjaGVzdHJhdG9yID0gaXNNQUlBICYmIGFnZW50Py50eXBlID09PSAnb3JjaGVzdHJhdG9yJ1xuICAvLyBQbGFubmVyOiBob21lIGRlIEZVQXMgZGVsIG9yY2hlc3RyYXRvciAoc2luIHNlbGVjdG9yIGRlIGNvbnRleHRvcykuXG4gIC8vIFNpIGVsIHVzdWFyaW8gbmF2ZWdhIGEgTWFpYWtlciB1IG90cm8gYWdlbnRlLCBzZWN0aW9uIHNpZ3VlIHNpZW5kbyBgcGxhbm5lcmAgcGVybyB5YSBubyBlcyBlc3RlIGhvbWUuXG4gIGNvbnN0IGlzUGxhbm5lckhvbWUgPSBzZWN0aW9uID09PSAncGxhbm5lcicgJiYgaXNPcmNoZXN0cmF0b3JcbiAgLy8gSG9tZXMgZGUgc2VjY2nDs24gKHByb2plY3QvY2xpZW50L3Rhc2spOiBzaW4gaXNvbG9nbywgY29udGVuaWRvIHRvcC1sZWZ0LCBjb2x1bW5hIDQ0OHB4IGNlbnRyYWRhLlxuICBjb25zdCBpc1NlY3Rpb25PcmNoZXN0cmF0b3JIb21lID0gaXNPcmNoZXN0cmF0b3IgJiYgIWlzSGVhZGVySG9tZSAmJiAhaXNQbGFubmVySG9tZVxuICBjb25zdCBoYXNIb3Vyc1N1YmFnZW50ID0gb3JjaGVzdHJhdG9ySGFzSG91cnNTdWJhZ2VudChhZ2VudClcblxuICAvLyBIb21lIGRlbCBvcmNoZXN0cmF0b3IgZW4gMiBwYXNvczpcbiAgLy8gIC0gUGFzbyAxIChzaW4gY29udGV4dG8gcGluZWFkbyk6IHNlIG11ZXN0cmFuIHNvbG8gbG9zIGNvbnRleHRvcyByZWNpZW50ZXMuXG4gIC8vICAtIFBhc28gMiAoY29udGV4dG8gcGluZWFkbyk6IHNlIG11ZXN0cmFuIGxhcyBGQVFzL2FjY2lvbmVzIHF1ZSByZWZlcmVuY2lhbiBlc2UgY29udGV4dG8uXG4gIGNvbnN0IGhhc1Bpbm5lZENvbnRleHQgPSAhISh0YXNrPy5pZCB8fCBjaGlwc1Byb2plY3Q/LnByb2plY3RJZCB8fCBjbGllbnQ/LmlkIHx8IHByb2plY3Q/LmlkKVxuICBjb25zdCBpc1JlY2VudENvbnRleHRzU3RlcCA9IGlzT3JjaGVzdHJhdG9yICYmICFoYXNQaW5uZWRDb250ZXh0ICYmICFpc1BsYW5uZXJIb21lXG4gIC8vIEhlYWRlciBwYXNvIDEgY29tcGFjdG8gKHNpbiBpc29sb2dvLCBwaWxscyBmdWxsLXdpZHRoKTogY29sYWJvcmFkb3IgeSBtYW5hZ2VycyAoQy1MZXZlbC9EaXJlY3Rvci9QTSkuXG4gIGNvbnN0IGlzSGVhZGVyVGFza0NvbnRleHRIb21lID1cbiAgICBzZWN0aW9uID09PSAnaGVhZGVyJyAmJiBpc1JlY2VudENvbnRleHRzU3RlcCAmJiAoaXNDb2xsYWJvcmF0b3JSb2xlKHVzZXIucm9sZV9pZCkgfHwgaXNNYW5hZ2VyUm9sZSh1c2VyLnJvbGVfaWQpKVxuICAvLyBCbG9xdWUgRlVBcyBwbGFubmVyICsgc2VjY2nDs24gZGUgY29udGV4dG9zIHJlY2llbnRlcyBjb24gdMOtdHVsb3MgKGNvbGFib3JhZG9yIG8gbWFuYWdlciBjb24gaG91cikuXG4gIGNvbnN0IGlzSGVhZGVySG91cnNBZ2VudEhvbWUgPSBpc0hlYWRlclRhc2tDb250ZXh0SG9tZSAmJiBoYXNIb3Vyc1N1YmFnZW50XG4gIGNvbnN0IGlzSGVhZGVyTWFuYWdlckhvdXJzSG9tZSA9IGlzSGVhZGVySG91cnNBZ2VudEhvbWUgJiYgaXNNYW5hZ2VyUm9sZSh1c2VyLnJvbGVfaWQpXG4gIGNvbnN0IGhlYWRlclRhc2tDb250ZXh0U3VidGl0bGVLZXkgPSB1c2VNZW1vKCgpID0+IHtcbiAgICBpZiAoaXNIZWFkZXJIb3Vyc0FnZW50SG9tZSkge1xuICAgICAgaWYgKGlzSGVhZGVyTWFuYWdlckhvdXJzSG9tZSkgcmV0dXJuICdob21lTWVudS5jb250ZXh0SG9tZS5zdWJ0aXRsZU1hbmFnZXJXaXRoSG91cnMnXG4gICAgICByZXR1cm4gJ2hvbWVNZW51LmNvbnRleHRIb21lLnN1YnRpdGxlQ29sbGFib3JhdG9yV2l0aEhvdXJzJ1xuICAgIH1cbiAgICBpZiAoaXNNYW5hZ2VyUm9sZSh1c2VyLnJvbGVfaWQpKSByZXR1cm4gJ2hvbWVNZW51LmNvbnRleHRIb21lLnN1YnRpdGxlJ1xuICAgIHJldHVybiAnaG9tZU1lbnUuY29udGV4dEhvbWUuc3VidGl0bGVDb2xsYWJvcmF0b3InXG4gIH0sIFtpc0hlYWRlckhvdXJzQWdlbnRIb21lLCBpc0hlYWRlck1hbmFnZXJIb3Vyc0hvbWUsIHVzZXIucm9sZV9pZF0pXG4gIGNvbnN0IGlzQ29udGV4dEhvbWVTdGVwID0gaXNIZWFkZXJIb21lICYmIGhhc1Bpbm5lZENvbnRleHRcbiAgLy8gSGVhZGVyIHBhc28gMiAoRkFRcy9GVUFzIGNvbiBjb250ZXh0bykgeSBob21lcyBkZSBzZWNjacOzbiBjb21wYXJ0ZW4gbGF5b3V0OiBzaW4gaXNvbG9nbywgdGV4dG8gYSBsYSBpenF1aWVyZGEuXG4gIGNvbnN0IGlzTGVmdEFsaWduZWRPcmNoZXN0cmF0b3JIb21lID0gaXNTZWN0aW9uT3JjaGVzdHJhdG9ySG9tZSB8fCBpc0NvbnRleHRIb21lU3RlcFxuXG4gIGNvbnN0IGFsbG93ZWRSZWNlbnRDb250ZXh0VHlwZXMgPSB1c2VNZW1vKCgpID0+IHtcbiAgICBpZiAoaXNIZWFkZXJNYW5hZ2VySG91cnNIb21lKSByZXR1cm4gZ2V0QWxsb3dlZFJlY2VudENvbnRleHRUeXBlcyh1c2VyLnJvbGVfaWQpXG4gICAgaWYgKGlzSGVhZGVyVGFza0NvbnRleHRIb21lICYmIGlzTWFuYWdlclJvbGUodXNlci5yb2xlX2lkKSkgcmV0dXJuIGdldEFsbG93ZWRSZWNlbnRDb250ZXh0VHlwZXModXNlci5yb2xlX2lkKVxuICAgIGlmIChpc0hlYWRlclRhc2tDb250ZXh0SG9tZSkgcmV0dXJuIG5ldyBTZXQ8UmVjZW50Q29udGV4dFR5cGU+KFsndGFzayddKVxuICAgIHJldHVybiBnZXRBbGxvd2VkUmVjZW50Q29udGV4dFR5cGVzKHVzZXIucm9sZV9pZClcbiAgfSwgW3VzZXIucm9sZV9pZCwgaXNIZWFkZXJNYW5hZ2VySG91cnNIb21lLCBpc0hlYWRlclRhc2tDb250ZXh0SG9tZV0pXG4gIGNvbnN0IHsgY29udGV4dHM6IGZldGNoZWRSZWNlbnRDb250ZXh0cywgbG9hZGluZzogcmVjZW50Q29udGV4dHNMb2FkaW5nIH0gPSB1c2VSZWNlbnRDb250ZXh0cyh7XG4gICAgZW5hYmxlZDogaXNPcmNoZXN0cmF0b3IgJiYgIWlzUGxhbm5lckhvbWUsXG4gICAgbGltaXQ6IFJFQ0VOVF9DT05URVhUU19MSU1JVCxcbiAgfSlcbiAgY29uc3QgcmVjZW50Q29udGV4dHMgPSB1c2VNZW1vKFxuICAgICgpID0+IGZldGNoZWRSZWNlbnRDb250ZXh0cy5maWx0ZXIoY29udGV4dCA9PiBhbGxvd2VkUmVjZW50Q29udGV4dFR5cGVzLmhhcyhjb250ZXh0LnR5cGUpKSxcbiAgICBbZmV0Y2hlZFJlY2VudENvbnRleHRzLCBhbGxvd2VkUmVjZW50Q29udGV4dFR5cGVzXVxuICApXG5cbiAgLy8gQ29udGV4dG8gYWN0aXZvIHBhcmEgZGVyaXZhciBGQVFzL2FjY2lvbmVzIChwYXNvIDIpLiBQcmVmZXJpbW9zIGVsIHBpbGwgY2xpY2tlYWRvO1xuICAvLyBzaSBubywgbG8gcmVjb25zdHJ1aW1vcyBkZXNkZSBlbCBjb250ZXh0byBnbG9iYWwuXG4gIGNvbnN0IFtzZWxlY3RlZENvbnRleHQsIHNldFNlbGVjdGVkQ29udGV4dF0gPSB1c2VTdGF0ZTxSZWNlbnRDb250ZXh0SXRlbSB8IG51bGw+KG51bGwpXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFoYXNQaW5uZWRDb250ZXh0KSBzZXRTZWxlY3RlZENvbnRleHQobnVsbClcbiAgfSwgW2hhc1Bpbm5lZENvbnRleHRdKVxuXG4gIGNvbnN0IGFjdGl2ZUNvbnRleHQgPSB1c2VNZW1vPFJlY2VudENvbnRleHRJdGVtIHwgbnVsbD4oKCkgPT4ge1xuICAgIGlmIChzZWxlY3RlZENvbnRleHQpIHJldHVybiBzZWxlY3RlZENvbnRleHRcbiAgICBpZiAoIWlzQ29udGV4dEhvbWVTdGVwKSByZXR1cm4gbnVsbFxuICAgIGlmICh0YXNrPy5pZCkgcmV0dXJuIHsgdHlwZTogJ3Rhc2snLCBpZDogdGFzay5pZCwgbmFtZTogdGFzay5uYW1lIH1cbiAgICBpZiAoY2hpcHNQcm9qZWN0Py5wcm9qZWN0SWQpIHJldHVybiB7IHR5cGU6ICdwcm9qZWN0JywgaWQ6IGNoaXBzUHJvamVjdC5wcm9qZWN0SWQsIG5hbWU6IGNoaXBzUHJvamVjdC5wcm9qZWN0TmFtZSB9XG4gICAgaWYgKGNsaWVudD8uaWQpIHJldHVybiB7IHR5cGU6ICdjbGllbnQnLCBpZDogY2xpZW50LmlkLCBuYW1lOiBjbGllbnQubmFtZSB9XG4gICAgcmV0dXJuIG51bGxcbiAgfSwgW1xuICAgIHNlbGVjdGVkQ29udGV4dCxcbiAgICBpc0NvbnRleHRIb21lU3RlcCxcbiAgICB0YXNrPy5pZCxcbiAgICB0YXNrPy5uYW1lLFxuICAgIGNoaXBzUHJvamVjdD8ucHJvamVjdElkLFxuICAgIGNoaXBzUHJvamVjdD8ucHJvamVjdE5hbWUsXG4gICAgY2xpZW50Py5pZCxcbiAgICBjbGllbnQ/Lm5hbWUsXG4gIF0pXG5cbiAgLy8gZW50aXR5X3R5cGUgZGVsIGNvbnRleHRvIHBpbmVhZG8gKHByb2plY3QvY2xpZW50L3Rhc2spLCB0b21hZG8gZGVsIGNvbnRleHRvIGdsb2JhbC5cbiAgLy8gQXBsaWNhIHRhbnRvIGFsIGFicmlyIE1BSUEgZGVzZGUgdW5hIHNlY2Npw7NuIGVzcGVjw61maWNhIGNvbW8gYWwgY2FtYmlhciBkZSBjb252ZXJzYWNpw7NuLlxuICBjb25zdCBwaW5uZWRFbnRpdHlUeXBlID0gdXNlTWVtbzxSZWNlbnRDb250ZXh0VHlwZSB8IHVuZGVmaW5lZD4oKCkgPT4ge1xuICAgIGlmICh0YXNrPy5pZCkgcmV0dXJuICd0YXNrJ1xuICAgIGlmIChjaGlwc1Byb2plY3Q/LnByb2plY3RJZCB8fCBwcm9qZWN0Py5pZCkgcmV0dXJuICdwcm9qZWN0J1xuICAgIGlmIChjbGllbnQ/LmlkKSByZXR1cm4gJ2NsaWVudCdcbiAgICByZXR1cm4gdW5kZWZpbmVkXG4gIH0sIFt0YXNrPy5pZCwgY2hpcHNQcm9qZWN0Py5wcm9qZWN0SWQsIHByb2plY3Q/LmlkLCBjbGllbnQ/LmlkXSlcblxuICAvLyBGQVFzIHNvbG8gY29uIGNvbnRleHRvIGNsaWVudGUgcGluZWFkbyAoaGVhZGVyIHBhc28gMiBvIHNlY2Npw7NuIGNsaWVudCkuXG4gIC8vIFByb3llY3RvLCB0YXJlYSB5IHBsYW5uZXIgbXVlc3RyYW4gc29sbyBGVUFzLlxuICBjb25zdCBmYXFzQ29udGV4dEVudGl0eVR5cGUgPSB1c2VNZW1vPFJlY2VudENvbnRleHRUeXBlIHwgdW5kZWZpbmVkPigoKSA9PiB7XG4gICAgaWYgKGlzUGxhbm5lckhvbWUgfHwgaXNSZWNlbnRDb250ZXh0c1N0ZXApIHJldHVybiB1bmRlZmluZWRcbiAgICBpZiAoaXNIZWFkZXJIb21lKSB7XG4gICAgICByZXR1cm4gaXNDb250ZXh0SG9tZVN0ZXAgPyAoYWN0aXZlQ29udGV4dD8udHlwZSA/PyBwaW5uZWRFbnRpdHlUeXBlKSA6IHVuZGVmaW5lZFxuICAgIH1cbiAgICByZXR1cm4gcGlubmVkRW50aXR5VHlwZVxuICB9LCBbaXNQbGFubmVySG9tZSwgaXNSZWNlbnRDb250ZXh0c1N0ZXAsIGlzSGVhZGVySG9tZSwgaXNDb250ZXh0SG9tZVN0ZXAsIGFjdGl2ZUNvbnRleHQ/LnR5cGUsIHBpbm5lZEVudGl0eVR5cGVdKVxuICBjb25zdCBpc0NsaWVudENvbnRleHRGb3JGYXFzID0gZmFxc0NvbnRleHRFbnRpdHlUeXBlID09PSAnY2xpZW50J1xuICAvLyBgc2VjdGlvbmAgcXVlIHNlIGNvbnN1bHRhIHBhcmEgbGFzIEZVQXM6IGVuIG5vLWhlYWRlciBzaWd1ZSBlbCB0aXBvIGRlIGNvbnRleHRvIHBpbmVhZG8uXG4gIC8vIEVuIHBsYW5uZXIgc2UgZnVlcnphIGxhIHNlY3Rpb24gQVBJIGBwbGFubmVyYC5cbiAgY29uc3QgZnVhc1NlY3Rpb246IFNlY3Rpb24gPSAoKCkgPT4ge1xuICAgIGlmIChpc1BsYW5uZXJIb21lKSByZXR1cm4gJ3BsYW5uZXInXG4gICAgaWYgKCFpc0hlYWRlckhvbWUgJiYgcGlubmVkRW50aXR5VHlwZSkgcmV0dXJuIHBpbm5lZEVudGl0eVR5cGVcbiAgICByZXR1cm4gc2VjdGlvblxuICB9KSgpXG5cbiAgLy8gRkFRcy9hY2Npb25lczpcbiAgLy8gIC0gaGVhZGVyLWhvbWUgKG9yY2hlc3RyYXRvciksIHBhc28gMjogZmlsdHJhZGFzIHBvciBgZW50aXR5X3R5cGVgIGRlbCBjb250ZXh0byBzZWxlY2Npb25hZG8uXG4gIC8vICAtIGhvbWVzIGRlIHByb3llY3RvL2NsaWVudGUvdGFyZWEgKHNlY2Npw7NuKTogZmlsdHJhZGFzIHBvciBlbCBgZW50aXR5X3R5cGVgIGRlbCBjb250ZXh0byBzZXRlYWRvLlxuICAvLyAgLSBwbGFubmVyOiBGVUFzIGNvbiBzZWN0aW9uPXBsYW5uZXIsIHNpbiBlbnRpdHlfdHlwZSBuaSBGQVFzLlxuICBjb25zdCByZWFsTGlzdHNBZ2VudElkID0gKCgpID0+IHtcbiAgICBpZiAoIWlzTUFJQSB8fCBpc01haWFrZXIpIHJldHVybiB1bmRlZmluZWRcbiAgICAvLyBQYXNvIDEgKGNvbnRleHRvcyByZWNpZW50ZXMsIHNpbiBjb250ZXh0byk6IG5vIHNlIHBpZGVuIEZBUXMvRlVBcy5cbiAgICBpZiAoaXNSZWNlbnRDb250ZXh0c1N0ZXApIHJldHVybiB1bmRlZmluZWRcbiAgICBpZiAoaXNIZWFkZXJIb21lKSByZXR1cm4gaXNDb250ZXh0SG9tZVN0ZXAgPyBhZ2VudD8uaWQgOiB1bmRlZmluZWRcbiAgICByZXR1cm4gYWdlbnQ/LmlkXG4gIH0pKClcbiAgY29uc3QgcmVhbExpc3RzRW50aXR5VHlwZSA9ICgoKSA9PiB7XG4gICAgaWYgKGlzUGxhbm5lckhvbWUpIHJldHVybiAncGxhbm5lcidcbiAgICBpZiAoIWlzSGVhZGVySG9tZSkgcmV0dXJuIHBpbm5lZEVudGl0eVR5cGVcbiAgICByZXR1cm4gaXNDb250ZXh0SG9tZVN0ZXAgPyAoYWN0aXZlQ29udGV4dD8udHlwZSA/PyBwaW5uZWRFbnRpdHlUeXBlKSA6IHVuZGVmaW5lZFxuICB9KSgpXG4gIGNvbnN0IHsgYWN0aW9uczogYWdlbnRGdWFzLCBsb2FkaW5nOiBmdWFzTG9hZGluZyB9ID0gdXNlRnJlcXVlbnRseVVzZWRBY3Rpb25zKFxuICAgIHJlYWxMaXN0c0FnZW50SWQsXG4gICAgZnVhc1NlY3Rpb24sXG4gICAgcmVhbExpc3RzRW50aXR5VHlwZVxuICApXG4gIGNvbnN0IHsgYWN0aW9uczogY29sbGFib3JhdG9yUGxhbm5lckZ1YXMsIGxvYWRpbmc6IGNvbGxhYm9yYXRvclBsYW5uZXJGdWFzTG9hZGluZyB9ID0gdXNlRnJlcXVlbnRseVVzZWRBY3Rpb25zKFxuICAgIGlzSGVhZGVySG91cnNBZ2VudEhvbWUgJiYgIWlzSGVhZGVyTWFuYWdlckhvdXJzSG9tZSA/IGFnZW50Py5pZCA6IHVuZGVmaW5lZCxcbiAgICAncGxhbm5lcidcbiAgKVxuICBjb25zdCB7IGFjdGlvbnM6IG1hbmFnZXJIb21lRnVhcywgbG9hZGluZzogbWFuYWdlckhvbWVGdWFzTG9hZGluZyB9ID0gdXNlRnJlcXVlbnRseVVzZWRBY3Rpb25zKFxuICAgIGlzSGVhZGVyTWFuYWdlckhvdXJzSG9tZSA/IGFnZW50Py5pZCA6IHVuZGVmaW5lZCxcbiAgICAnaG9tZV93aXRoX2hvdXJzJ1xuICApXG4gIC8vIEExMTogbXktZGF5ICsgc2hvdWxkLXJldmlldyBDVEFzIG9ubHkgZm9yIGNvbGxhYm9yYXRvciAocm9sZV9pZD00KSArIGZ1bGxzY3JlZW4gaGVhZGVyIGhvbWUuXG4gIC8vIEJvdGggRlVBcyBzaGFyZSBzZWN0aW9uPWhvbWVfZnVsbHNjcmVlbl9jb2xsYWJvcmF0b3IgKG9yZGVyIDEgbXktZGF5IC8gb3JkZXIgMiBzaG91bGQtcmV2aWV3KS5cbiAgY29uc3Qgc2hvdWxkRmV0Y2hDb2xsYWJvcmF0b3JGdWxsc2NyZWVuRnVhcyA9IEJvb2xlYW4oZXhwYW5kZWQgJiYgaXNDb2xsYWJvcmF0b3JSb2xlKHVzZXIucm9sZV9pZCkgJiYgaXNIZWFkZXJIb21lKVxuICBjb25zdCB7IGFjdGlvbnM6IGNvbGxhYm9yYXRvckZ1bGxzY3JlZW5GdWFzLCBsb2FkaW5nOiBjb2xsYWJvcmF0b3JGdWxsc2NyZWVuRnVhc0xvYWRpbmcgfSA9IHVzZUZyZXF1ZW50bHlVc2VkQWN0aW9ucyhcbiAgICBzaG91bGRGZXRjaENvbGxhYm9yYXRvckZ1bGxzY3JlZW5GdWFzID8gYWdlbnQ/LmlkIDogdW5kZWZpbmVkLFxuICAgICdob21lX2Z1bGxzY3JlZW5fY29sbGFib3JhdG9yJ1xuICApXG4gIGNvbnN0IGhlYWRlckhvdXJzRnVhcyA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGlmIChpc0hlYWRlck1hbmFnZXJIb3Vyc0hvbWUpIHJldHVybiBzb3J0TWFuYWdlckhvdXJzSG9tZUZ1YXMobWFuYWdlckhvbWVGdWFzKVxuICAgIHJldHVybiBjb2xsYWJvcmF0b3JQbGFubmVyRnVhc1xuICB9LCBbaXNIZWFkZXJNYW5hZ2VySG91cnNIb21lLCBtYW5hZ2VySG9tZUZ1YXMsIGNvbGxhYm9yYXRvclBsYW5uZXJGdWFzXSlcbiAgY29uc3QgaGVhZGVySG91cnNGdWFzTG9hZGluZyA9IGlzSGVhZGVyTWFuYWdlckhvdXJzSG9tZSA/IG1hbmFnZXJIb21lRnVhc0xvYWRpbmcgOiBjb2xsYWJvcmF0b3JQbGFubmVyRnVhc0xvYWRpbmdcbiAgY29uc3QgZmFxc0xpc3RBZ2VudElkID0gaXNDbGllbnRDb250ZXh0Rm9yRmFxcyA/IHJlYWxMaXN0c0FnZW50SWQgOiB1bmRlZmluZWRcbiAgY29uc3QgZmFxc0xpc3RFbnRpdHlUeXBlID0gaXNDbGllbnRDb250ZXh0Rm9yRmFxcyA/IHJlYWxMaXN0c0VudGl0eVR5cGUgOiB1bmRlZmluZWRcbiAgY29uc3Qge1xuICAgIGZhcXM6IGFnZW50RmFxcyxcbiAgICBsb2FkaW5nOiBmYXFzTG9hZGluZyxcbiAgICBoYW5kbGVHZXRGcmVxdWVudGx5QXNrZWRRdWVzdGlvbnMsXG4gIH0gPSB1c2VGcmVxdWVudGx5QXNrZWRRdWVzdGlvbnMoZmFxc0xpc3RBZ2VudElkLCBsYW5nLCBmYXFzTGlzdEVudGl0eVR5cGUpXG4gIGNvbnN0IGZhcXNGZXRjaFJlZiA9IHVzZVJlZjx7IGFnZW50SWQ6IHN0cmluZzsgbGFuZzogc3RyaW5nOyBlbnRpdHlUeXBlPzogc3RyaW5nIH0gfCBudWxsPihudWxsKVxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIC8vIEZBUXMgc29sbyBwYXJhIGNvbnRleHRvIGNsaWVudGU7IGVsIHJlc3RvIG11ZXN0cmEgc29sbyBGVUFzLlxuICAgIGlmICghcmVhbExpc3RzQWdlbnRJZCB8fCAhaXNDbGllbnRDb250ZXh0Rm9yRmFxcykgcmV0dXJuXG4gICAgY29uc3QgY3VycmVudEtleSA9IGAke3JlYWxMaXN0c0FnZW50SWR9LSR7bGFuZ30tJHtyZWFsTGlzdHNFbnRpdHlUeXBlID8/ICdhbGwnfWBcbiAgICBjb25zdCBsYXN0S2V5ID0gZmFxc0ZldGNoUmVmLmN1cnJlbnRcbiAgICAgID8gYCR7ZmFxc0ZldGNoUmVmLmN1cnJlbnQuYWdlbnRJZH0tJHtmYXFzRmV0Y2hSZWYuY3VycmVudC5sYW5nfS0ke2ZhcXNGZXRjaFJlZi5jdXJyZW50LmVudGl0eVR5cGUgPz8gJ2FsbCd9YFxuICAgICAgOiBudWxsXG4gICAgaWYgKGN1cnJlbnRLZXkgIT09IGxhc3RLZXkpIHtcbiAgICAgIGZhcXNGZXRjaFJlZi5jdXJyZW50ID0geyBhZ2VudElkOiByZWFsTGlzdHNBZ2VudElkLCBsYW5nLCBlbnRpdHlUeXBlOiByZWFsTGlzdHNFbnRpdHlUeXBlIH1cbiAgICAgIGhhbmRsZUdldEZyZXF1ZW50bHlBc2tlZFF1ZXN0aW9ucyh7IGFnZW50SWQ6IHJlYWxMaXN0c0FnZW50SWQsIGxhbmcsIGVudGl0eVR5cGU6IHJlYWxMaXN0c0VudGl0eVR5cGUgfSlcbiAgICB9XG4gIH0sIFtyZWFsTGlzdHNBZ2VudElkLCByZWFsTGlzdHNFbnRpdHlUeXBlLCBpc0NsaWVudENvbnRleHRGb3JGYXFzLCBsYW5nLCBoYW5kbGVHZXRGcmVxdWVudGx5QXNrZWRRdWVzdGlvbnNdKVxuXG4gIGNvbnN0IGZhcXMgPSBhZ2VudEZhcXNcbiAgY29uc3QgZnVhcyA9IGFnZW50RnVhc1xuICBjb25zdCBmYXFzQXJlTG9hZGluZyA9IGZhcXNMb2FkaW5nXG4gIGNvbnN0IGZ1YXNBcmVMb2FkaW5nID0gZnVhc0xvYWRpbmdcblxuICBjb25zdCBzaG93UmVjZW50Q29udGV4dHNCbG9jayA9IGlzUmVjZW50Q29udGV4dHNTdGVwICYmIChyZWNlbnRDb250ZXh0c0xvYWRpbmcgfHwgcmVjZW50Q29udGV4dHMubGVuZ3RoID4gMClcbiAgY29uc3Qgc2hvdWxkU2hvd0ZhcXMgPVxuICAgIGlzTUFJQSAmJlxuICAgIGlzQ2xpZW50Q29udGV4dEZvckZhcXMgJiZcbiAgICAhaXNSZWNlbnRDb250ZXh0c1N0ZXAgJiZcbiAgICAoaXNDb250ZXh0SG9tZVN0ZXAgfHwgKCFpc0hlYWRlckhvbWUgJiYgZmFxc0FjY2VzcykpICYmXG4gICAgIWlzTWFpYWtlciAmJlxuICAgIChmYXFzLmxlbmd0aCA+IDAgfHwgZmFxc0FyZUxvYWRpbmcpXG4gIGNvbnN0IHNob3VsZFNob3dGdWFzID1cbiAgICAhaXNSZWNlbnRDb250ZXh0c1N0ZXAgJiYgIWlzTWFpYWtlciAmJiAoaXNDb250ZXh0SG9tZVN0ZXAgfHwgIWlzSGVhZGVySG9tZSkgJiYgKGZ1YXMubGVuZ3RoID4gMCB8fCBmdWFzQXJlTG9hZGluZylcbiAgY29uc3Qgc2hvdWxkU2hvd1BsYW5uZXJGdWFzTG9hZGluZyA9IGlzSGVhZGVySG91cnNBZ2VudEhvbWUgJiYgaGVhZGVySG91cnNGdWFzTG9hZGluZyAmJiBoZWFkZXJIb3Vyc0Z1YXMubGVuZ3RoID09PSAwXG4gIGNvbnN0IHNob3VsZFNob3dQbGFubmVyRnVhc0NvbnRlbnQgPSBpc0hlYWRlckhvdXJzQWdlbnRIb21lICYmIGhlYWRlckhvdXJzRnVhcy5sZW5ndGggPiAwXG4gIGNvbnN0IHNob3VsZFNob3dQbGFubmVyRnVhcyA9IHNob3VsZFNob3dQbGFubmVyRnVhc0xvYWRpbmcgfHwgc2hvdWxkU2hvd1BsYW5uZXJGdWFzQ29udGVudFxuICBjb25zdCBzaG91bGRTaG93Q29sbGFib3JhdG9yRnVsbHNjcmVlbkZ1YXNMb2FkaW5nID1cbiAgICBzaG91bGRGZXRjaENvbGxhYm9yYXRvckZ1bGxzY3JlZW5GdWFzICYmXG4gICAgY29sbGFib3JhdG9yRnVsbHNjcmVlbkZ1YXNMb2FkaW5nICYmXG4gICAgY29sbGFib3JhdG9yRnVsbHNjcmVlbkZ1YXMubGVuZ3RoID09PSAwXG4gIGNvbnN0IHNob3VsZFNob3dDb2xsYWJvcmF0b3JGdWxsc2NyZWVuRnVhc0NvbnRlbnQgPVxuICAgIHNob3VsZEZldGNoQ29sbGFib3JhdG9yRnVsbHNjcmVlbkZ1YXMgJiYgY29sbGFib3JhdG9yRnVsbHNjcmVlbkZ1YXMubGVuZ3RoID4gMFxuICBjb25zdCBzaG91bGRTaG93Q29sbGFib3JhdG9yRnVsbHNjcmVlbkZ1YXMgPVxuICAgIHNob3VsZFNob3dDb2xsYWJvcmF0b3JGdWxsc2NyZWVuRnVhc0xvYWRpbmcgfHwgc2hvdWxkU2hvd0NvbGxhYm9yYXRvckZ1bGxzY3JlZW5GdWFzQ29udGVudFxuXG4gIGNvbnN0IHNob3dQcm9qZWN0U3VtbWFyeUNhcmQgPSBzaG93UHJvamVjdFN1bW1hcnkgJiYgYWdlbnQ/LmVudGl0eSA9PT0gJ3Byb2plY3QnXG4gIGNvbnN0IHNob3dGQVFzID0gISEoXG4gICAgc2hvd1JlY2VudENvbnRleHRzQmxvY2sgfHxcbiAgICBzaG91bGRTaG93RmFxcyB8fFxuICAgIHNob3VsZFNob3dGdWFzIHx8XG4gICAgc2hvdWxkU2hvd1BsYW5uZXJGdWFzIHx8XG4gICAgc2hvdWxkU2hvd0NvbGxhYm9yYXRvckZ1bGxzY3JlZW5GdWFzIHx8XG4gICAgc2hvd1Byb2plY3RTdW1tYXJ5Q2FyZCB8fFxuICAgIGlzTWFpYWtlclxuICApXG4gIGNvbnN0IGhvbWVTY3JvbGxhYmxlTGF5b3V0ID0gc2hvd0ZBUXNcbiAgY29uc3Qgc2hvd0R5bmFtaWNTZWN0aW9uID1cbiAgICBzaG93UmVjZW50Q29udGV4dHNCbG9jayB8fFxuICAgIHNob3VsZFNob3dGYXFzIHx8XG4gICAgc2hvdWxkU2hvd0Z1YXMgfHxcbiAgICBzaG91bGRTaG93UGxhbm5lckZ1YXMgfHxcbiAgICBzaG91bGRTaG93Q29sbGFib3JhdG9yRnVsbHNjcmVlbkZ1YXMgfHxcbiAgICBpc01haWFrZXJcblxuICAvLyBMw7NnaWNhIGRlbCBzY3JvbGwgY29uIGdyYWRpZW50ZXNcbiAgY29uc3QgY29udGVudENvbnRhaW5lclJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbClcbiAgY29uc3QgW3Nob3dUb3BHcmFkaWVudCwgc2V0U2hvd1RvcEdyYWRpZW50XSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBbc2hvd0JvdHRvbUdyYWRpZW50LCBzZXRTaG93Qm90dG9tR3JhZGllbnRdID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IFtpc1Njcm9sbGluZywgc2V0SXNTY3JvbGxpbmddID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IHNjcm9sbFRpbWVvdXRSZWYgPSB1c2VSZWY8UmV0dXJuVHlwZTx0eXBlb2Ygc2V0VGltZW91dD4gfCBudWxsPihudWxsKVxuXG4gIC8vIFNhbHVkbyBmaWpvIHBvciB0aXBvIGRlIGNvbnRleHRvIChpMThuKS4gQ3VzdG9tIGFnZW50cyBzaWd1ZW4gdXNhbmRvIGFnZW50LmludHJvZHVjdGlvbi5cbiAgLy8gUGxhbm5lciB1c2EgdMOtdHVsbyArIGJhamFkYSBwcm9waW9zIChgcGxhbm5lckhvbWVgKSwgbm8gZXN0ZSBncmVldGluZy5cbiAgY29uc3QgZ3JlZXRpbmcgPSB1c2VNZW1vKCgpID0+IHtcbiAgICBpZiAoaXNNYWlha2VyIHx8IGlzUGxhbm5lckhvbWUgfHwgaXNSZWNlbnRDb250ZXh0c1N0ZXApIHJldHVybiAnJ1xuXG4gICAgaWYgKGlzTUFJQSAmJiBwaW5uZWRFbnRpdHlUeXBlKSB7XG4gICAgICByZXR1cm4gdChgaG9tZU1lbnUuY29udGV4dEhvbWUuY29udGV4dEdyZWV0aW5nLiR7cGlubmVkRW50aXR5VHlwZX1gKVxuICAgIH1cblxuICAgIGNvbnN0IGludHJvID0gYWdlbnQ/LmludHJvZHVjdGlvblxuICAgIGlmICghaW50cm8pIHJldHVybiAnJ1xuICAgIGlmIChBcnJheS5pc0FycmF5KGludHJvKSAmJiBpbnRyby5sZW5ndGggPiAwKSB7XG4gICAgICByZXR1cm4gaW50cm9bTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogaW50cm8ubGVuZ3RoKV1cbiAgICB9XG4gICAgcmV0dXJuIHR5cGVvZiBpbnRybyA9PT0gJ3N0cmluZycgPyBpbnRybyA6ICcnXG4gIH0sIFthZ2VudD8uaWQsIGFnZW50Py5pbnRyb2R1Y3Rpb24sIGlzTWFpYWtlciwgaXNQbGFubmVySG9tZSwgaXNNQUlBLCBwaW5uZWRFbnRpdHlUeXBlLCBpc1JlY2VudENvbnRleHRzU3RlcCwgdF0pXG5cbiAgY29uc3QgaGFuZGxlU2VsZWN0UmVjZW50Q29udGV4dCA9IHVzZUNhbGxiYWNrKFxuICAgIChjb250ZXh0OiBSZWNlbnRDb250ZXh0SXRlbSwgb3JkZXI6IG51bWJlcikgPT4ge1xuICAgICAgZXZlbnQoRVZFTlRTLmFpQ2hhdENvbnRleHRTZWxlY3RlZCwgeyBvcmRlciwgdHlwZTogY29udGV4dC50eXBlIH0pXG5cbiAgICAgIGNvbnN0IGNvbnRleHRJZCA9IHBhcnNlTnVtZXJpY0lkKGNvbnRleHQuaWQpXG4gICAgICBjb25zdCBjbGllbnRJZCA9IHBhcnNlTnVtZXJpY0lkKGNvbnRleHQucGFyZW50cz8uY2xpZW50X2lkKVxuICAgICAgY29uc3QgcHJvamVjdElkID0gcGFyc2VOdW1lcmljSWQoY29udGV4dC5wYXJlbnRzPy5wcm9qZWN0X2lkKVxuICAgICAgY29uc3QgY2xpZW50TmFtZSA9IGNvbnRleHQucGFyZW50cz8uY2xpZW50X25hbWUgfHwgJydcbiAgICAgIGNvbnN0IHByb2plY3ROYW1lID0gY29udGV4dC5wYXJlbnRzPy5wcm9qZWN0X25hbWUgfHwgJydcblxuICAgICAgc2V0U2VsZWN0ZWRDb250ZXh0KGNvbnRleHQpXG4gICAgICBzZXRUYXNrKG51bGwpXG4gICAgICBzZXRQcm9qZWN0KG51bGwpXG4gICAgICBzZXRDbGllbnQ/LihudWxsKVxuICAgICAgc2V0Q2hpcHNQcm9qZWN0KG51bGwpXG5cbiAgICAgIGlmIChjb250ZXh0LnR5cGUgPT09ICdjbGllbnQnKSB7XG4gICAgICAgIGlmIChjb250ZXh0SWQgPT0gbnVsbCkgcmV0dXJuXG4gICAgICAgIHNldENsaWVudD8uKHsgaWQ6IGNvbnRleHRJZCwgbmFtZTogY29udGV4dC5uYW1lIH0pXG4gICAgICB9IGVsc2UgaWYgKGNvbnRleHQudHlwZSA9PT0gJ3Byb2plY3QnKSB7XG4gICAgICAgIGlmIChjb250ZXh0SWQgPT0gbnVsbCkgcmV0dXJuXG4gICAgICAgIHNldFByb2plY3Qoe1xuICAgICAgICAgIGlkOiBjb250ZXh0SWQsXG4gICAgICAgICAgbmFtZTogY29udGV4dC5uYW1lLFxuICAgICAgICAgIC4uLihjbGllbnRJZCAhPSBudWxsID8geyBjbGllbnRJZCB9IDoge30pLFxuICAgICAgICAgIC4uLihjbGllbnRJZCAhPSBudWxsID8geyBjbGllbnQ6IHsgaWQ6IGNsaWVudElkLCBuYW1lOiBjbGllbnROYW1lIH0gfSA6IHt9KSxcbiAgICAgICAgfSlcbiAgICAgICAgc2V0Q2hpcHNQcm9qZWN0KHtcbiAgICAgICAgICBwcm9qZWN0SWQ6IFN0cmluZyhjb250ZXh0SWQpLFxuICAgICAgICAgIHByb2plY3ROYW1lOiBjb250ZXh0Lm5hbWUsXG4gICAgICAgICAgY2xpZW50TmFtZSxcbiAgICAgICAgfSlcbiAgICAgIH0gZWxzZSBpZiAoY29udGV4dC50eXBlID09PSAndGFzaycpIHtcbiAgICAgICAgc2V0VGFzayh7XG4gICAgICAgICAgaWQ6IGNvbnRleHQuaWQsXG4gICAgICAgICAgbmFtZTogY29udGV4dC5uYW1lLFxuICAgICAgICAgIC4uLihwcm9qZWN0SWQgIT0gbnVsbCA/IHsgcHJvamVjdElkIH0gOiB7fSksXG4gICAgICAgICAgLi4uKGNsaWVudElkICE9IG51bGwgPyB7IGNsaWVudElkIH0gOiB7fSksXG4gICAgICAgIH0pXG4gICAgICAgIGlmIChjbGllbnRJZCAhPSBudWxsKSB7XG4gICAgICAgICAgc2V0Q2xpZW50Py4oeyBpZDogY2xpZW50SWQsIG5hbWU6IGNsaWVudE5hbWUgfSlcbiAgICAgICAgfVxuICAgICAgICBpZiAocHJvamVjdElkICE9IG51bGwpIHtcbiAgICAgICAgICBzZXRQcm9qZWN0KHtcbiAgICAgICAgICAgIGlkOiBwcm9qZWN0SWQsXG4gICAgICAgICAgICBuYW1lOiBwcm9qZWN0TmFtZSB8fCBgJHt0KCdob21lTWVudS5yZWNlbnRDb250ZXh0cy50eXBlcy5wcm9qZWN0Jyl9ICR7cHJvamVjdElkfWAsXG4gICAgICAgICAgICAuLi4oY2xpZW50SWQgIT0gbnVsbCA/IHsgY2xpZW50SWQgfSA6IHt9KSxcbiAgICAgICAgICAgIC4uLihjbGllbnRJZCAhPSBudWxsID8geyBjbGllbnQ6IHsgaWQ6IGNsaWVudElkLCBuYW1lOiBjbGllbnROYW1lIH0gfSA6IHt9KSxcbiAgICAgICAgICB9KVxuICAgICAgICAgIHNldENoaXBzUHJvamVjdCh7XG4gICAgICAgICAgICBwcm9qZWN0SWQ6IFN0cmluZyhwcm9qZWN0SWQpLFxuICAgICAgICAgICAgcHJvamVjdE5hbWU6IHByb2plY3ROYW1lIHx8IGAke3QoJ2hvbWVNZW51LnJlY2VudENvbnRleHRzLnR5cGVzLnByb2plY3QnKX0gJHtwcm9qZWN0SWR9YCxcbiAgICAgICAgICAgIGNsaWVudE5hbWUsXG4gICAgICAgICAgfSlcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgICBkb2N1bWVudC5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgnbWFpYS1pbnB1dC1yZWZvY3VzJykpXG4gICAgICB9KVxuICAgIH0sXG4gICAgW2V2ZW50LCBzZXRDaGlwc1Byb2plY3QsIHNldENsaWVudCwgc2V0UHJvamVjdCwgc2V0VGFzaywgdF1cbiAgKVxuXG4gIGNvbnN0IGhhbmRsZUhvbWVTdGFydENoYXQgPSB1c2VDYWxsYmFjayhcbiAgICAoXG4gICAgICBtZXNzYWdlOiBzdHJpbmcsXG4gICAgICBhdHRhY2htZW50cz86IEF0dGFjaG1lbnRGaWxlW10gfCBudWxsLFxuICAgICAgZmFxSWQ/OiBzdHJpbmcsXG4gICAgICBhZ2VudFN1Z2dlc3Rpb25JZD86IHN0cmluZyxcbiAgICAgIG1lbnRpb25zPzogbnVsbCxcbiAgICAgIGZ1YUlkPzogc3RyaW5nLFxuICAgICAgc2NJZD86IHN0cmluZyxcbiAgICAgIGNvbnRleHREYXRhPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj5cbiAgICApID0+IHtcbiAgICAgIGlmIChpc0hlYWRlck1hbmFnZXJIb3Vyc0hvbWUgJiYgZnVhSWQpIHtcbiAgICAgICAgZmx1c2hTeW5jKCgpID0+IHtcbiAgICAgICAgICBzZXRTZWxlY3RlZENvbnRleHQobnVsbClcbiAgICAgICAgICBzZXRUYXNrKG51bGwpXG4gICAgICAgICAgc2V0UHJvamVjdChudWxsKVxuICAgICAgICAgIHNldENsaWVudD8uKG51bGwpXG4gICAgICAgICAgc2V0Q2hpcHNQcm9qZWN0KG51bGwpXG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgICBvblN0YXJ0Q2hhdChtZXNzYWdlLCBhdHRhY2htZW50cywgZmFxSWQsIGFnZW50U3VnZ2VzdGlvbklkLCBtZW50aW9ucywgZnVhSWQsIHNjSWQsIGNvbnRleHREYXRhKVxuICAgIH0sXG4gICAgW2lzSGVhZGVyTWFuYWdlckhvdXJzSG9tZSwgb25TdGFydENoYXQsIHNldENoaXBzUHJvamVjdCwgc2V0Q2xpZW50LCBzZXRQcm9qZWN0LCBzZXRUYXNrXVxuICApXG5cbiAgY29uc3QgcmVuZGVyUmVjZW50Q29udGV4dHMgPSAoKSA9PiB7XG4gICAgaWYgKCFpc1JlY2VudENvbnRleHRzU3RlcCkgcmV0dXJuIG51bGxcblxuICAgIHJldHVybiAoXG4gICAgICA8U0NDQUlIb21lUmVjZW50Q29udGV4dHNcbiAgICAgICAgJGZpeGVkQ29udGVudFdpZHRoPXtpc0hlYWRlclRhc2tDb250ZXh0SG9tZSA/IE1BSUFfSEVBREVSX0NPTExBQk9SQVRPUl9IT01FX0NPTlRFTlRfV0lEVEhfUFggOiB1bmRlZmluZWR9XG4gICAgICA+XG4gICAgICAgIHtpc0hlYWRlckhvdXJzQWdlbnRIb21lID8gKFxuICAgICAgICAgIDxTQ0NBSUhvbWVSZWNlbnRDb250ZXh0c1NlY3Rpb25IZWFkZXI+XG4gICAgICAgICAgICA8U0NDQUlIb21lUmVjZW50Q29udGV4dHNTZWN0aW9uVGl0bGU+XG4gICAgICAgICAgICAgIHt0KFxuICAgICAgICAgICAgICAgIGlzSGVhZGVyTWFuYWdlckhvdXJzSG9tZVxuICAgICAgICAgICAgICAgICAgPyAnaG9tZU1lbnUuY29udGV4dEhvbWUucmVjZW50Q29udGV4dHNTZWN0aW9uTWFuYWdlci50aXRsZSdcbiAgICAgICAgICAgICAgICAgIDogJ2hvbWVNZW51LmNvbnRleHRIb21lLnJlY2VudFRhc2tzU2VjdGlvbi50aXRsZSdcbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDwvU0NDQUlIb21lUmVjZW50Q29udGV4dHNTZWN0aW9uVGl0bGU+XG4gICAgICAgICAgICA8U0NDQUlIb21lUmVjZW50Q29udGV4dHNTZWN0aW9uU3VidGl0bGU+XG4gICAgICAgICAgICAgIHt0KFxuICAgICAgICAgICAgICAgIGlzSGVhZGVyTWFuYWdlckhvdXJzSG9tZVxuICAgICAgICAgICAgICAgICAgPyAnaG9tZU1lbnUuY29udGV4dEhvbWUucmVjZW50Q29udGV4dHNTZWN0aW9uTWFuYWdlci5zdWJ0aXRsZSdcbiAgICAgICAgICAgICAgICAgIDogJ2hvbWVNZW51LmNvbnRleHRIb21lLnJlY2VudFRhc2tzU2VjdGlvbi5zdWJ0aXRsZSdcbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDwvU0NDQUlIb21lUmVjZW50Q29udGV4dHNTZWN0aW9uU3VidGl0bGU+XG4gICAgICAgICAgPC9TQ0NBSUhvbWVSZWNlbnRDb250ZXh0c1NlY3Rpb25IZWFkZXI+XG4gICAgICAgICkgOiBudWxsfVxuICAgICAgICA8U0NDQUlIb21lUmVjZW50Q29udGV4dHNMaXN0ICRmbHVzaFBpbGxzPXtpc0hlYWRlclRhc2tDb250ZXh0SG9tZX0+XG4gICAgICAgICAge3JlY2VudENvbnRleHRzTG9hZGluZyAmJlxuICAgICAgICAgICAgUkVDRU5UX0NPTlRFWFRfU0tFTEVUT05fS0VZUy5tYXAoa2V5ID0+IDxTQ0NBSUhvbWVSZWNlbnRDb250ZXh0UGlsbFNrZWxldG9uIGtleT17a2V5fSAvPil9XG4gICAgICAgICAgeyFyZWNlbnRDb250ZXh0c0xvYWRpbmcgJiZcbiAgICAgICAgICAgIHJlY2VudENvbnRleHRzLm1hcCgoY29udGV4dCwgaW5kZXgpID0+IChcbiAgICAgICAgICAgICAgPFJlY2VudENvbnRleHRQaWxsXG4gICAgICAgICAgICAgICAga2V5PXtgJHtjb250ZXh0LnR5cGV9LSR7Y29udGV4dC5pZH1gfVxuICAgICAgICAgICAgICAgIGNvbnRleHQ9e2NvbnRleHR9XG4gICAgICAgICAgICAgICAgbGFiZWw9e2NvbnRleHQubmFtZS50cmltKCl9XG4gICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gaGFuZGxlU2VsZWN0UmVjZW50Q29udGV4dChjb250ZXh0LCBpbmRleCArIDEpfVxuICAgICAgICAgICAgICAgIGZ1bGxXaWR0aD17aXNIZWFkZXJUYXNrQ29udGV4dEhvbWV9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICApKX1cbiAgICAgICAgPC9TQ0NBSUhvbWVSZWNlbnRDb250ZXh0c0xpc3Q+XG4gICAgICA8L1NDQ0FJSG9tZVJlY2VudENvbnRleHRzPlxuICAgIClcbiAgfVxuXG4gIGNvbnN0IGNoZWNrU2Nyb2xsID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGNvbnN0IGNvbnRhaW5lciA9IGNvbnRlbnRDb250YWluZXJSZWYuY3VycmVudFxuICAgIGlmICghY29udGFpbmVyIHx8ICFob21lU2Nyb2xsYWJsZUxheW91dCkgcmV0dXJuXG5cbiAgICBjb25zdCB7IHNjcm9sbFRvcCwgc2Nyb2xsSGVpZ2h0LCBjbGllbnRIZWlnaHQgfSA9IGNvbnRhaW5lclxuICAgIGNvbnN0IGlzU2Nyb2xsYWJsZSA9IHNjcm9sbEhlaWdodCA+IGNsaWVudEhlaWdodFxuICAgIGNvbnN0IGlzQXRUb3AgPSBzY3JvbGxUb3AgPT09IDBcbiAgICBjb25zdCBpc0F0Qm90dG9tID0gc2Nyb2xsVG9wICsgY2xpZW50SGVpZ2h0ID49IHNjcm9sbEhlaWdodCAtIDFcblxuICAgIHNldFNob3dUb3BHcmFkaWVudChpc1Njcm9sbGFibGUgJiYgIWlzQXRUb3ApXG4gICAgc2V0U2hvd0JvdHRvbUdyYWRpZW50KGlzU2Nyb2xsYWJsZSAmJiAhaXNBdEJvdHRvbSlcbiAgfSwgW2hvbWVTY3JvbGxhYmxlTGF5b3V0XSlcblxuICBjb25zdCBoYW5kbGVTY3JvbGwgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgY2hlY2tTY3JvbGwoKVxuICAgIHNldElzU2Nyb2xsaW5nKHRydWUpXG5cbiAgICBpZiAoc2Nyb2xsVGltZW91dFJlZi5jdXJyZW50KSB7XG4gICAgICBjbGVhclRpbWVvdXQoc2Nyb2xsVGltZW91dFJlZi5jdXJyZW50KVxuICAgIH1cblxuICAgIHNjcm9sbFRpbWVvdXRSZWYuY3VycmVudCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgc2V0SXNTY3JvbGxpbmcoZmFsc2UpXG4gICAgfSwgMTUwKVxuICB9LCBbY2hlY2tTY3JvbGxdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFob21lU2Nyb2xsYWJsZUxheW91dCkge1xuICAgICAgc2V0U2hvd1RvcEdyYWRpZW50KGZhbHNlKVxuICAgICAgc2V0U2hvd0JvdHRvbUdyYWRpZW50KGZhbHNlKVxuICAgICAgcmV0dXJuIHVuZGVmaW5lZFxuICAgIH1cblxuICAgIGNvbnN0IGNvbnRhaW5lciA9IGNvbnRlbnRDb250YWluZXJSZWYuY3VycmVudFxuICAgIGlmICghY29udGFpbmVyKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkXG4gICAgfVxuXG4gICAgY29uc3Qgc2NoZWR1bGVDaGVja1Njcm9sbCA9ICgpID0+IHtcbiAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICAgIGNoZWNrU2Nyb2xsKClcbiAgICAgIH0pXG4gICAgfVxuXG4gICAgc2NoZWR1bGVDaGVja1Njcm9sbCgpXG4gICAgY29udGFpbmVyLmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIGhhbmRsZVNjcm9sbClcblxuICAgIGNvbnN0IHJlc2l6ZU9ic2VydmVyID0gbmV3IFJlc2l6ZU9ic2VydmVyKHNjaGVkdWxlQ2hlY2tTY3JvbGwpXG4gICAgcmVzaXplT2JzZXJ2ZXIub2JzZXJ2ZShjb250YWluZXIpXG4gICAgY29uc3Qgc2Nyb2xsQ29udGVudCA9IGNvbnRhaW5lci5maXJzdEVsZW1lbnRDaGlsZFxuICAgIGlmIChzY3JvbGxDb250ZW50IGluc3RhbmNlb2YgRWxlbWVudCkge1xuICAgICAgcmVzaXplT2JzZXJ2ZXIub2JzZXJ2ZShzY3JvbGxDb250ZW50KVxuICAgIH1cblxuICAgIGNvbnN0IHRpbWVvdXRJZCA9IHdpbmRvdy5zZXRUaW1lb3V0KHNjaGVkdWxlQ2hlY2tTY3JvbGwsIDEwMClcbiAgICBjb25zdCBsYXRlVGltZW91dElkID0gd2luZG93LnNldFRpbWVvdXQoc2NoZWR1bGVDaGVja1Njcm9sbCwgNDAwKVxuXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGNvbnRhaW5lci5yZW1vdmVFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBoYW5kbGVTY3JvbGwpXG4gICAgICByZXNpemVPYnNlcnZlci5kaXNjb25uZWN0KClcbiAgICAgIGNsZWFyVGltZW91dCh0aW1lb3V0SWQpXG4gICAgICBjbGVhclRpbWVvdXQobGF0ZVRpbWVvdXRJZClcbiAgICAgIGlmIChzY3JvbGxUaW1lb3V0UmVmLmN1cnJlbnQpIHtcbiAgICAgICAgY2xlYXJUaW1lb3V0KHNjcm9sbFRpbWVvdXRSZWYuY3VycmVudClcbiAgICAgIH1cbiAgICB9XG4gIH0sIFtob21lU2Nyb2xsYWJsZUxheW91dCwgY2hlY2tTY3JvbGwsIGhhbmRsZVNjcm9sbF0pXG5cbiAgdXNlTGF5b3V0RWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIWhvbWVTY3JvbGxhYmxlTGF5b3V0KSByZXR1cm5cbiAgICBjaGVja1Njcm9sbCgpXG4gIH0sIFtcbiAgICBob21lU2Nyb2xsYWJsZUxheW91dCxcbiAgICBjaGVja1Njcm9sbCxcbiAgICByZWNlbnRDb250ZXh0c0xvYWRpbmcsXG4gICAgcmVjZW50Q29udGV4dHMubGVuZ3RoLFxuICAgIGhlYWRlckhvdXJzRnVhc0xvYWRpbmcsXG4gICAgaGVhZGVySG91cnNGdWFzLmxlbmd0aCxcbiAgICBmdWFzTG9hZGluZyxcbiAgICBmdWFzLmxlbmd0aCxcbiAgICBmYXFzQXJlTG9hZGluZyxcbiAgICBmYXFzLmxlbmd0aCxcbiAgICBzaG91bGRTaG93UGxhbm5lckZ1YXMsXG4gICAgaXNNYWlha2VyLFxuICBdKVxuXG4gIGNvbnN0IHJlbmRlckhlYWRlckNvbnRlbnQgPSAoKSA9PiB7XG4gICAgaWYgKCFpc01BSUEpIHtcbiAgICAgIHJldHVybiAoXG4gICAgICAgIDxTQ0NBSUhvbWVBZ2VudEluZm9Db250YWluZXI+XG4gICAgICAgICAgPFNDQ0FJSG9tZUFnZW50SW5mbz5cbiAgICAgICAgICAgIHthZ2VudD8uZW1vaml9IHthZ2VudD8ubmFtZX1cbiAgICAgICAgICA8L1NDQ0FJSG9tZUFnZW50SW5mbz5cbiAgICAgICAgICB7YWdlbnQ/LmNyZWF0ZWRfYnkgJiYgIWlzTUFJQSAmJiAoXG4gICAgICAgICAgICA8U0NDQUlIb21lQ3JlYXRlZEJ5Q29udGFpbmVyPlxuICAgICAgICAgICAgICA8VG9vbHRpcFxuICAgICAgICAgICAgICAgIHRpdGxlPXtcbiAgICAgICAgICAgICAgICAgIGFnZW50Py5jcmVhdGVkX2J5Py5pc19kZWxldGVkID8gdCgnaG9tZU1lbnUuY3JlYXRlZEJ5VG9vbHRpcERlbGV0ZWQnKSA6IHQoJ2hvbWVNZW51LmNyZWF0ZWRCeVRvb2x0aXAnKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxTQ0NBSUhvbWVDcmVhdGVkQnlUZXh0PlxuICAgICAgICAgICAgICAgICAge3QoJ2hvbWVNZW51LmNyZWF0ZWRCeScpfXsnICd9XG4gICAgICAgICAgICAgICAgICA8U0NDQUlIb21lQ3JlYXRlZEJ5VGV4dE5hbWU+e2FnZW50Py5jcmVhdGVkX2J5Py5uYW1lfTwvU0NDQUlIb21lQ3JlYXRlZEJ5VGV4dE5hbWU+XG4gICAgICAgICAgICAgICAgPC9TQ0NBSUhvbWVDcmVhdGVkQnlUZXh0PlxuICAgICAgICAgICAgICA8L1Rvb2x0aXA+XG4gICAgICAgICAgICA8L1NDQ0FJSG9tZUNyZWF0ZWRCeUNvbnRhaW5lcj5cbiAgICAgICAgICApfVxuICAgICAgICA8L1NDQ0FJSG9tZUFnZW50SW5mb0NvbnRhaW5lcj5cbiAgICAgIClcbiAgICB9XG5cbiAgICBjb25zdCBjb250ZW50QWxpZ25TdGFydCA9IGlzUGxhbm5lckhvbWUgfHwgaXNIZWFkZXJUYXNrQ29udGV4dEhvbWUgfHwgaXNMZWZ0QWxpZ25lZE9yY2hlc3RyYXRvckhvbWVcblxuICAgIGNvbnN0IG1haWFIZWFkZXJTdGFja05lZWRzR2FwID1cbiAgICAgIChpc1JlY2VudENvbnRleHRzU3RlcCAmJiAhaXNIZWFkZXJUYXNrQ29udGV4dEhvbWUgJiYgIWlzUGxhbm5lckhvbWUpIHx8XG4gICAgICAoIWlzUmVjZW50Q29udGV4dHNTdGVwICYmXG4gICAgICAgICEhZ3JlZXRpbmcgJiZcbiAgICAgICAgIWlzUGxhbm5lckhvbWUgJiZcbiAgICAgICAgIWlzSGVhZGVyVGFza0NvbnRleHRIb21lICYmXG4gICAgICAgICFpc0xlZnRBbGlnbmVkT3JjaGVzdHJhdG9ySG9tZSlcblxuICAgIHJldHVybiAoXG4gICAgICA8U0NDQUlIb21lTWFpYUhlYWRlclN0YWNrICRub0dhcD17IW1haWFIZWFkZXJTdGFja05lZWRzR2FwfSAkYWxpZ249e2NvbnRlbnRBbGlnblN0YXJ0ID8gJ3N0YXJ0JyA6ICdjZW50ZXInfT5cbiAgICAgICAgeyFpc1BsYW5uZXJIb21lICYmICFpc0hlYWRlclRhc2tDb250ZXh0SG9tZSAmJiAhaXNMZWZ0QWxpZ25lZE9yY2hlc3RyYXRvckhvbWUgJiYgKFxuICAgICAgICAgIDxTQ0NBSUhvbWVJY29uQ29udGFpbmVyPlxuICAgICAgICAgICAgPFNDQ0FJSG9tZUxvZ29XcmFwcGVyPlxuICAgICAgICAgICAgICA8TUFJQUlzb2xvZ28gLz5cbiAgICAgICAgICAgIDwvU0NDQUlIb21lTG9nb1dyYXBwZXI+XG4gICAgICAgICAgPC9TQ0NBSUhvbWVJY29uQ29udGFpbmVyPlxuICAgICAgICApfVxuICAgICAgICB7aXNQbGFubmVySG9tZSAmJiAoXG4gICAgICAgICAgPFNDQ0FJSG9tZVRpdGxlQmxvY2sgJGFsaWduPVwic3RhcnRcIj5cbiAgICAgICAgICAgIDxTQ0NBSUhvbWVUaXRsZSAkc2l6ZT1cIm1kXCIgJGFsaWduPVwic3RhcnRcIj5cbiAgICAgICAgICAgICAge3QoJ2hvbWVNZW51LnBsYW5uZXJIb21lLnRpdGxlJyl9XG4gICAgICAgICAgICA8L1NDQ0FJSG9tZVRpdGxlPlxuICAgICAgICAgICAgPFNDQ0FJSG9tZVN1YnRpdGxlICRhbGlnbj1cInN0YXJ0XCI+e3QoJ2hvbWVNZW51LnBsYW5uZXJIb21lLnN1YnRpdGxlJyl9PC9TQ0NBSUhvbWVTdWJ0aXRsZT5cbiAgICAgICAgICA8L1NDQ0FJSG9tZVRpdGxlQmxvY2s+XG4gICAgICAgICl9XG4gICAgICAgIHshaXNQbGFubmVySG9tZSAmJiBpc1JlY2VudENvbnRleHRzU3RlcCAmJiBpc0hlYWRlclRhc2tDb250ZXh0SG9tZSAmJiAoXG4gICAgICAgICAgPFNDQ0FJSG9tZVRpdGxlQmxvY2sgJGFsaWduPVwic3RhcnRcIiAkZnVsbFdpZHRoPlxuICAgICAgICAgICAgPFNDQ0FJSG9tZVRpdGxlICRzaXplPVwiY29udGV4dFwiICRhbGlnbj1cInN0YXJ0XCIgJGZ1bGxXaWR0aD5cbiAgICAgICAgICAgICAge3QoJ2hvbWVNZW51LmNvbnRleHRIb21lLmdyZWV0aW5nJywgeyBuYW1lOiB1c2VyLmZpcnN0TmFtZSB9KX1cbiAgICAgICAgICAgIDwvU0NDQUlIb21lVGl0bGU+XG4gICAgICAgICAgICA8U0NDQUlIb21lU3VidGl0bGUgJGFsaWduPVwic3RhcnRcIiAkY29sbGFib3JhdG9ySG9tZT5cbiAgICAgICAgICAgICAge3QoaGVhZGVyVGFza0NvbnRleHRTdWJ0aXRsZUtleSl9XG4gICAgICAgICAgICA8L1NDQ0FJSG9tZVN1YnRpdGxlPlxuICAgICAgICAgIDwvU0NDQUlIb21lVGl0bGVCbG9jaz5cbiAgICAgICAgKX1cbiAgICAgICAgeyFpc1BsYW5uZXJIb21lICYmIGlzUmVjZW50Q29udGV4dHNTdGVwICYmICFpc0hlYWRlclRhc2tDb250ZXh0SG9tZSAmJiAoXG4gICAgICAgICAgPD5cbiAgICAgICAgICAgIDxTQ0NBSUhvbWVUaXRsZSAkYWxpZ249e2lzTGVmdEFsaWduZWRPcmNoZXN0cmF0b3JIb21lID8gJ3N0YXJ0JyA6IHVuZGVmaW5lZH0+XG4gICAgICAgICAgICAgIHt0KCdob21lTWVudS5jb250ZXh0SG9tZS5ncmVldGluZycsIHsgbmFtZTogdXNlci5maXJzdE5hbWUgfSl9XG4gICAgICAgICAgICA8L1NDQ0FJSG9tZVRpdGxlPlxuICAgICAgICAgICAgPFNDQ0FJSG9tZVN1YnRpdGxlICRhbGlnbj17aXNMZWZ0QWxpZ25lZE9yY2hlc3RyYXRvckhvbWUgPyAnc3RhcnQnIDogdW5kZWZpbmVkfT5cbiAgICAgICAgICAgICAge3QoXG4gICAgICAgICAgICAgICAgaXNDb2xsYWJvcmF0b3JSb2xlKHVzZXIucm9sZV9pZClcbiAgICAgICAgICAgICAgICAgID8gJ2hvbWVNZW51LmNvbnRleHRIb21lLnN1YnRpdGxlQ29sbGFib3JhdG9yJ1xuICAgICAgICAgICAgICAgICAgOiAnaG9tZU1lbnUuY29udGV4dEhvbWUuc3VidGl0bGUnXG4gICAgICAgICAgICAgICl9XG4gICAgICAgICAgICA8L1NDQ0FJSG9tZVN1YnRpdGxlPlxuICAgICAgICAgIDwvPlxuICAgICAgICApfVxuICAgICAgICB7IWlzUGxhbm5lckhvbWUgJiYgIWlzUmVjZW50Q29udGV4dHNTdGVwICYmIGdyZWV0aW5nICYmIChcbiAgICAgICAgICA8U0NDQUlIb21lR3JlZXRpbmdcbiAgICAgICAgICAgICRhbGlnbj17aXNMZWZ0QWxpZ25lZE9yY2hlc3RyYXRvckhvbWUgPyAnc3RhcnQnIDogdW5kZWZpbmVkfVxuICAgICAgICAgICAgJHNpemU9e2lzTGVmdEFsaWduZWRPcmNoZXN0cmF0b3JIb21lID8gJ21kJyA6ICdsZyd9XG4gICAgICAgICAgPlxuICAgICAgICAgICAge2dyZWV0aW5nfVxuICAgICAgICAgIDwvU0NDQUlIb21lR3JlZXRpbmc+XG4gICAgICAgICl9XG4gICAgICA8L1NDQ0FJSG9tZU1haWFIZWFkZXJTdGFjaz5cbiAgICApXG4gIH1cblxuICBjb25zdCBmaXhlZEhvbWVDb250ZW50V2lkdGggPVxuICAgIGlzSGVhZGVyVGFza0NvbnRleHRIb21lIHx8IGlzTGVmdEFsaWduZWRPcmNoZXN0cmF0b3JIb21lXG4gICAgICA/IE1BSUFfSEVBREVSX0NPTExBQk9SQVRPUl9IT01FX0NPTlRFTlRfV0lEVEhfUFhcbiAgICAgIDogdW5kZWZpbmVkXG4gIGNvbnN0IGNvbnRlbnRBbGlnblN0YXJ0ID0gaXNQbGFubmVySG9tZSB8fCBpc0hlYWRlclRhc2tDb250ZXh0SG9tZSB8fCBpc0xlZnRBbGlnbmVkT3JjaGVzdHJhdG9ySG9tZVxuICBjb25zdCBzaG93QWdlbnRJbnRyb2R1Y3Rpb24gPSBzZWN0aW9uICE9PSAncHJvamVjdCcgJiYgIWlzTUFJQSAmJiAhIWFnZW50Py5pbnRyb2R1Y3Rpb25cblxuICByZXR1cm4gKFxuICAgIDxTQ0NBSUhvbWVDb250YWluZXIgc2hvd0ZBUXM9e3Nob3dGQVFzfSAkYWxpZ25TdGFydD17aXNMZWZ0QWxpZ25lZE9yY2hlc3RyYXRvckhvbWV9PlxuICAgICAge2hvbWVTY3JvbGxhYmxlTGF5b3V0ICYmIDxTQ0NBSUhvbWVHcmFkaWVudFRvcCAkc2hvdz17c2hvd1RvcEdyYWRpZW50fSAvPn1cbiAgICAgIDxTQ0NBSUhvbWVDb250ZW50XG4gICAgICAgIHJlZj17Y29udGVudENvbnRhaW5lclJlZn1cbiAgICAgICAgc2hvd0ZBUXM9e2hvbWVTY3JvbGxhYmxlTGF5b3V0fVxuICAgICAgICAkaXNBZ2VudFZpZXc9eyFpc01BSUF9XG4gICAgICAgICRmbG9hdGluZ0N1c3RvbUNlbnRlcj17ZmxvYXRpbmdDdXN0b21DZW50ZXJ9XG4gICAgICAgICRjZW50ZXJWZXJ0aWNhbGx5PXtpc1BsYW5uZXJIb21lfVxuICAgICAgICAkYWxpZ25TdGFydD17aXNMZWZ0QWxpZ25lZE9yY2hlc3RyYXRvckhvbWV9XG4gICAgICAgICRmaXhlZENvbnRlbnRXaWR0aD17Zml4ZWRIb21lQ29udGVudFdpZHRofVxuICAgICAgPlxuICAgICAgICA8U0NDQUlIb21lQ29udGVudElubmVyXG4gICAgICAgICAgc2hvd0ZBUXM9e2hvbWVTY3JvbGxhYmxlTGF5b3V0fVxuICAgICAgICAgICRpc0FnZW50Vmlldz17IWlzTUFJQX1cbiAgICAgICAgICAkZmxvYXRpbmdDdXN0b21DZW50ZXI9e2Zsb2F0aW5nQ3VzdG9tQ2VudGVyfVxuICAgICAgICAgICRjZW50ZXJWZXJ0aWNhbGx5PXtpc1BsYW5uZXJIb21lfVxuICAgICAgICAgICRhbGlnblN0YXJ0PXtpc0hlYWRlclRhc2tDb250ZXh0SG9tZSB8fCBpc0xlZnRBbGlnbmVkT3JjaGVzdHJhdG9ySG9tZX1cbiAgICAgICAgICAkaGVhZGVyQ29sbGFib3JhdG9ySG9tZT17aXNIZWFkZXJUYXNrQ29udGV4dEhvbWV9XG4gICAgICAgICAgJHNlY3Rpb25PcmNoZXN0cmF0b3JIb21lPXtpc0xlZnRBbGlnbmVkT3JjaGVzdHJhdG9ySG9tZX1cbiAgICAgICAgPlxuICAgICAgICAgIDxTQ0NBSUhvbWVIZWFkZXJcbiAgICAgICAgICAgICRnYXA9e3Nob3dBZ2VudEludHJvZHVjdGlvbiA/ICcyMHB4JyA6ICcwJ31cbiAgICAgICAgICAgICRtYXhXaWR0aD17aXNNQUlBID8gJzEwMCUnIDogJzM4MHB4J31cbiAgICAgICAgICAgICRpc0FnZW50Vmlldz17IWlzTUFJQX1cbiAgICAgICAgICAgICRhbGlnbj17Y29udGVudEFsaWduU3RhcnQgPyAnc3RhcnQnIDogJ2NlbnRlcid9XG4gICAgICAgICAgPlxuICAgICAgICAgICAge3JlbmRlckhlYWRlckNvbnRlbnQoKX1cblxuICAgICAgICAgICAge3Nob3dBZ2VudEludHJvZHVjdGlvbiA/IChcbiAgICAgICAgICAgICAgPFNDQ0FJSG9tZUludHJvZHVjdGlvbiBleHBhbmRlZD17ZXhwYW5kZWR9PnthZ2VudC5pbnRyb2R1Y3Rpb259PC9TQ0NBSUhvbWVJbnRyb2R1Y3Rpb24+XG4gICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICA8L1NDQ0FJSG9tZUhlYWRlcj5cbiAgICAgICAgICB7c2hvd1Byb2plY3RTdW1tYXJ5Q2FyZCAmJiAoXG4gICAgICAgICAgICA8U0NDQUhXcmFwcGVyU3VtbWFyeVByb2plY3Qgb25DbGljaz17aGFuZGxlcnMucHJvamVjdFN1bW1hcnl9PlxuICAgICAgICAgICAgICA8U0NDQUlIb21lUHJvamVjdFN1bW1hcnk+XG4gICAgICAgICAgICAgICAgPFRlbXBsYXRlR3JhZGllbnRJY29uIGhlaWdodD17MjR9IHdpZHRoPXsyNH0gLz5cbiAgICAgICAgICAgICAgPC9TQ0NBSUhvbWVQcm9qZWN0U3VtbWFyeT5cbiAgICAgICAgICAgICAgPFNDQ0FJSG9tZVByb2plY3RTdW1tYXJ5Q29udGVudD5cbiAgICAgICAgICAgICAgICA8U0NDQUlIb21lUHJvamVjdFN1bW1hcnlUaXRsZT57dCgnaG9tZU1lbnUucHJvamVjdFN1bW1hcnkudGl0bGUnKX08L1NDQ0FJSG9tZVByb2plY3RTdW1tYXJ5VGl0bGU+XG4gICAgICAgICAgICAgICAgPFNDQ0FJSG9tZVByb2plY3RTdW1tYXJ5RGVzY3JpcHRpb24+XG4gICAgICAgICAgICAgICAgICB7dCgnaG9tZU1lbnUucHJvamVjdFN1bW1hcnkuZGVzY3JpcHRpb24nKX1cbiAgICAgICAgICAgICAgICA8L1NDQ0FJSG9tZVByb2plY3RTdW1tYXJ5RGVzY3JpcHRpb24+XG4gICAgICAgICAgICAgIDwvU0NDQUlIb21lUHJvamVjdFN1bW1hcnlDb250ZW50PlxuICAgICAgICAgICAgPC9TQ0NBSFdyYXBwZXJTdW1tYXJ5UHJvamVjdD5cbiAgICAgICAgICApfVxuICAgICAgICAgIHtzaG93RHluYW1pY1NlY3Rpb24gJiYgKFxuICAgICAgICAgICAgPFNDQ0FJSG9tZUR5bmFtaWNTZWN0aW9uXG4gICAgICAgICAgICAgICRncm93PXtpc01haWFrZXJ9XG4gICAgICAgICAgICAgICRhbGlnblN0YXJ0PXtpc0hlYWRlclRhc2tDb250ZXh0SG9tZSB8fCBpc0xlZnRBbGlnbmVkT3JjaGVzdHJhdG9ySG9tZX1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3Nob3VsZFNob3dDb2xsYWJvcmF0b3JGdWxsc2NyZWVuRnVhcyA/IChcbiAgICAgICAgICAgICAgICA8RnJlcXVlbnRseVVzZWRBY3Rpb25zXG4gICAgICAgICAgICAgICAgICBvblN0YXJ0Q2hhdD17aGFuZGxlSG9tZVN0YXJ0Q2hhdH1cbiAgICAgICAgICAgICAgICAgIGFnZW50SWQ9e2FnZW50Py5pZH1cbiAgICAgICAgICAgICAgICAgIGlzU2Nyb2xsaW5nPXtpc1Njcm9sbGluZ31cbiAgICAgICAgICAgICAgICAgIGFjdGlvbnM9e2NvbGxhYm9yYXRvckZ1bGxzY3JlZW5GdWFzfVxuICAgICAgICAgICAgICAgICAgbG9hZGluZz17Y29sbGFib3JhdG9yRnVsbHNjcmVlbkZ1YXNMb2FkaW5nfVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgICAgICB7c2hvdWxkU2hvd1BsYW5uZXJGdWFzID8gKFxuICAgICAgICAgICAgICAgIDxGcmVxdWVudGx5VXNlZEFjdGlvbnNcbiAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJwbGFubmVyXCJcbiAgICAgICAgICAgICAgICAgIG9uU3RhcnRDaGF0PXtoYW5kbGVIb21lU3RhcnRDaGF0fVxuICAgICAgICAgICAgICAgICAgYWdlbnRJZD17YWdlbnQ/LmlkfVxuICAgICAgICAgICAgICAgICAgaXNTY3JvbGxpbmc9e2lzU2Nyb2xsaW5nfVxuICAgICAgICAgICAgICAgICAgYWN0aW9ucz17aGVhZGVySG91cnNGdWFzfVxuICAgICAgICAgICAgICAgICAgbG9hZGluZz17aGVhZGVySG91cnNGdWFzTG9hZGluZ31cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICAgICAge3JlbmRlclJlY2VudENvbnRleHRzKCl9XG4gICAgICAgICAgICAgIHtzaG91bGRTaG93RmFxcyAmJiAoXG4gICAgICAgICAgICAgICAgPEZyZXF1ZW50bHlBc2tlZFF1ZXN0aW9uc1xuICAgICAgICAgICAgICAgICAgb25TdGFydENoYXQ9e29uU3RhcnRDaGF0fVxuICAgICAgICAgICAgICAgICAgc2hvd0ZBUXM9e3Nob3dGQVFzfVxuICAgICAgICAgICAgICAgICAgc2hvd1Byb2plY3RTdW1tYXJ5PXtzaG93UHJvamVjdFN1bW1hcnl9XG4gICAgICAgICAgICAgICAgICBhZ2VudElkPXthZ2VudD8uaWR9XG4gICAgICAgICAgICAgICAgICBsYW5nPXtsYW5nfVxuICAgICAgICAgICAgICAgICAgaXNTY3JvbGxpbmc9e2lzU2Nyb2xsaW5nfVxuICAgICAgICAgICAgICAgICAgZmFxcz17ZmFxc31cbiAgICAgICAgICAgICAgICAgIGxvYWRpbmc9e2ZhcXNBcmVMb2FkaW5nfVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgIHtzaG91bGRTaG93RnVhcyAmJiAoXG4gICAgICAgICAgICAgICAgPEZyZXF1ZW50bHlVc2VkQWN0aW9uc1xuICAgICAgICAgICAgICAgICAgb25TdGFydENoYXQ9e29uU3RhcnRDaGF0fVxuICAgICAgICAgICAgICAgICAgYWdlbnRJZD17YWdlbnQ/LmlkfVxuICAgICAgICAgICAgICAgICAgaXNTY3JvbGxpbmc9e2lzU2Nyb2xsaW5nfVxuICAgICAgICAgICAgICAgICAgYWN0aW9ucz17ZnVhc31cbiAgICAgICAgICAgICAgICAgIGxvYWRpbmc9e2Z1YXNBcmVMb2FkaW5nfVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgIHtpc01haWFrZXIgPyA8Q2hhdEFJSG9tZU1haWFrZXIgb25TdGFydENoYXQ9e29uU3RhcnRDaGF0fSAvPiA6IG51bGx9XG4gICAgICAgICAgICA8L1NDQ0FJSG9tZUR5bmFtaWNTZWN0aW9uPlxuICAgICAgICAgICl9XG4gICAgICAgIDwvU0NDQUlIb21lQ29udGVudElubmVyPlxuICAgICAgPC9TQ0NBSUhvbWVDb250ZW50PlxuICAgICAge2hvbWVTY3JvbGxhYmxlTGF5b3V0ICYmIDxTQ0NBSUhvbWVHcmFkaWVudEJvdHRvbSAkc2hvdz17c2hvd0JvdHRvbUdyYWRpZW50fSAvPn1cbiAgICA8L1NDQ0FJSG9tZUNvbnRhaW5lcj5cbiAgKVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7O0FBQUE7QUFDQTtBQUNBO0FBQ0EsU0FBU0EsU0FBUyxFQUFFQyxlQUFlLEVBQUVDLE1BQU0sRUFBRUMsUUFBUSxFQUFFQyxXQUFXLEVBQUVDLE9BQU8sUUFBUSxPQUFPO0FBQzFGLFNBQVNDLFNBQVMsUUFBUSxXQUFXO0FBRXJDLFNBQVNDLE9BQU8sUUFBUSw4Q0FBOEM7QUFDdEUsU0FBU0MsYUFBYSxRQUFRLGdEQUFnRDtBQUM5RSxTQUFTQyxJQUFJLFFBQVEscUJBQXFCO0FBQzFDLFNBQVNDLE1BQU0sRUFBRUMsUUFBUSxRQUFRLHlCQUF5QjtBQUkxRCxTQUNFQyxrQkFBa0IsRUFDbEJDLGdCQUFnQixFQUNoQkMscUJBQXFCLEVBQ3JCQyxvQkFBb0IsRUFDcEJDLHVCQUF1QixFQUN2QkMsZUFBZSxFQUNmQyxpQkFBaUIsRUFDakJDLDJCQUEyQixFQUMzQkMsa0JBQWtCLEVBQ2xCQyx1QkFBdUIsRUFDdkJDLDhCQUE4QixFQUM5QkMsNEJBQTRCLEVBQzVCQyxrQ0FBa0MsRUFDbENDLDBCQUEwQixFQUMxQkMscUJBQXFCLEVBQ3JCQywyQkFBMkIsRUFDM0JDLHNCQUFzQixFQUN0QkMsMEJBQTBCLEVBQzFCQyxzQkFBc0IsRUFDdEJDLG9CQUFvQixFQUNwQkMs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
|
|
655
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VFZmZlY3QiLCJ1c2VMYXlvdXRFZmZlY3QiLCJ1c2VSZWYiLCJ1c2VTdGF0ZSIsInVzZUNhbGxiYWNrIiwidXNlTWVtbyIsImZsdXNoU3luYyIsIlRvb2x0aXAiLCJMaXN0Q2hlY2tsaXN0IiwidXNlVCIsIkVWRU5UUyIsInVzZUV2ZW50IiwiU0NDQUlIb21lQ29udGFpbmVyIiwiU0NDQUlIb21lQ29udGVudCIsIlNDQ0FJSG9tZUNvbnRlbnRJbm5lciIsIlNDQ0FJSG9tZUdyYWRpZW50VG9wIiwiU0NDQUlIb21lR3JhZGllbnRCb3R0b20iLCJTQ0NBSUhvbWVIZWFkZXIiLCJTQ0NBSUhvbWVHcmVldGluZyIsIlNDQ0FJSG9tZUFnZW50SW5mb0NvbnRhaW5lciIsIlNDQ0FJSG9tZUFnZW50SW5mbyIsIlNDQ0FJSG9tZVByb2plY3RTdW1tYXJ5IiwiU0NDQUlIb21lUHJvamVjdFN1bW1hcnlDb250ZW50IiwiU0NDQUlIb21lUHJvamVjdFN1bW1hcnlUaXRsZSIsIlNDQ0FJSG9tZVByb2plY3RTdW1tYXJ5RGVzY3JpcHRpb24iLCJTQ0NBSFdyYXBwZXJTdW1tYXJ5UHJvamVjdCIsIlNDQ0FJSG9tZUludHJvZHVjdGlvbiIsIlNDQ0FJSG9tZUNyZWF0ZWRCeUNvbnRhaW5lciIsIlNDQ0FJSG9tZUNyZWF0ZWRCeVRleHQiLCJTQ0NBSUhvbWVDcmVhdGVkQnlUZXh0TmFtZSIsIlNDQ0FJSG9tZUljb25Db250YWluZXIiLCJTQ0NBSUhvbWVMb2dvV3JhcHBlciIsIlNDQ0FJSG9tZU1haWFIZWFkZXJTdGFjayIsIlNDQ0FJSG9tZVRpdGxlIiwiU0NDQUlIb21lVGl0bGVCbG9jayIsIlNDQ0FJSG9tZVN1YnRpdGxlIiwiU0NDQUlIb21lRHluYW1pY1NlY3Rpb24iLCJTQ0NBSUhvbWVSZWNlbnRDb250ZXh0cyIsIlNDQ0FJSG9tZVJlY2VudENvbnRleHRzTGlzdCIsIlNDQ0FJSG9tZVJlY2VudENvbnRleHRzU2VjdGlvbkhlYWRlciIsIlNDQ0FJSG9tZVJlY2VudENvbnRleHRzU2VjdGlvblRpdGxlIiwiU0NDQUlIb21lUmVjZW50Q29udGV4dHNTZWN0aW9uU3VidGl0bGUiLCJTQ0NBSUhvbWVSZWNlbnRDb250ZXh0UGlsbCIsIlNDQ0FJSG9tZVJlY2VudENvbnRleHRQaWxsSWNvbiIsIlNDQ0FJSG9tZVJlY2VudENvbnRleHRQaWxsVGV4dCIsIlNDQ0FJSG9tZVJlY2VudENvbnRleHRQaWxsU2tlbGV0b24iLCJNQUlBX0hFQURFUl9DT0xMQUJPUkFUT1JfSE9NRV9DT05URU5UX1dJRFRIX1BYIiwidXNlR2xvYmFsQ29udGV4dCIsInVzZVVzZXIiLCJDT1JVc2VyUm9sZSIsImlzQ29sbGFib3JhdG9yUm9sZSIsImlzTWFuYWdlclJvbGUiLCJ1c2VSZXNpemVMaXN0ZW5lciIsImdldENvbnRleHRNZW50aW9uSWNvbiIsIm9yY2hlc3RyYXRvckhhc0hvdXJzU3ViYWdlbnQiLCJ2YWxpZGF0ZUlzTWFpYSIsImlzTWFpYWtlckFnZW50IiwiRnJlcXVlbnRseUFza2VkUXVlc3Rpb25zIiwiRnJlcXVlbnRseVVzZWRBY3Rpb25zIiwidXNlRnJlcXVlbnRseVVzZWRBY3Rpb25zIiwic29ydE1hbmFnZXJIb3Vyc0hvbWVGdWFzIiwidXNlRnJlcXVlbnRseUFza2VkUXVlc3Rpb25zIiwidXNlUmVjZW50Q29udGV4dHMiLCJNQUlBSXNvbG9nbyIsIlRlbXBsYXRlR3JhZGllbnRJY29uIiwiQ2hhdEFJSG9tZU1haWFrZXIiLCJqc3giLCJfanN4IiwianN4cyIsIl9qc3hzIiwiRnJhZ21lbnQiLCJfRnJhZ21lbnQiLCJGcmVxdWVudFF1ZXN0aW9ucyIsIlJFQ0VOVF9DT05URVhUU19MSU1JVCIsIlJFQ0VOVF9DT05URVhUX0lDT05fQ09MT1IiLCJSRUNFTlRfQ09OVEVYVF9JQ09OX1NJWkVfUFgiLCJSRUNFTlRfQ09OVEVYVF9TS0VMRVRPTl9LRVlTIiwiUmVjZW50Q29udGV4dFBpbGwiLCJfcmVmIiwiY29udGV4dCIsImxhYmVsIiwib25DbGljayIsIl9yZWYkZnVsbFdpZHRoIiwiZnVsbFdpZHRoIiwidGV4dFJlZiIsIl91c2VSZXNpemVMaXN0ZW5lciIsInNob3dUb29sdGlwIiwidHlwZSIsIiRmdWxsV2lkdGgiLCJjaGlsZHJlbiIsImNvbG9yIiwid2lkdGgiLCJoZWlnaHQiLCJ1bmRlZmluZWQiLCJyZWYiLCJ0aXRsZSIsInBhcnNlTnVtZXJpY0lkIiwidmFsdWUiLCJwYXJzZWQiLCJOdW1iZXIiLCJpc0Zpbml0ZSIsImdldEFsbG93ZWRSZWNlbnRDb250ZXh0VHlwZXMiLCJyb2xlSWQiLCJub3JtYWxpemVkUm9sZUlkIiwiQ0xFVkVMIiwiRElSRUNUT1IiLCJQUk9KRUNUX01BTkFHRVIiLCJTZXQiLCJDaGF0QUlIb21lIiwiX3JlZjIiLCJoYW5kbGVycyIsIm9uU3RhcnRDaGF0IiwiZXhwYW5kZWQiLCJmbG9hdGluZyIsIl91c2VUIiwidCIsImkxOG4iLCJldmVudCIsInVzZXIiLCJfdXNlR2xvYmFsQ29udGV4dCIsImFnZW50Iiwic2VjdGlvbiIsImNsaWVudCIsInByb2plY3QiLCJ0YXNrIiwiY2hpcHNQcm9qZWN0Iiwic2V0Q2xpZW50Iiwic2V0UHJvamVjdCIsInNldFRhc2siLCJzZXRDaGlwc1Byb2plY3QiLCJpc01BSUEiLCJmbG9hdGluZ0N1c3RvbUNlbnRlciIsImxhbmciLCJsYW5ndWFnZSIsInN1bW1hcnlQcm9qZWN0QWNjZXNzIiwid2luZG93IiwiU3RyaW5nIiwiTUFJQV9QUk9KRUNUX1NVTU1BUllfRkVBVFVSRV9BQ0NFU1MiLCJ0b0xvd2VyQ2FzZSIsIm1haWFQcm9qZWN0U3VtbWFyeUFjY2VzcyIsImZhcXNBY2Nlc3MiLCJzaG93UHJvamVjdFN1bW1hcnkiLCJpc01haWFrZXIiLCJpc0hlYWRlckhvbWUiLCJpc09yY2hlc3RyYXRvciIsImlzUGxhbm5lckhvbWUiLCJpc1NlY3Rpb25PcmNoZXN0cmF0b3JIb21lIiwiaGFzSG91cnNTdWJhZ2VudCIsImhhc1Bpbm5lZENvbnRleHQiLCJpZCIsInByb2plY3RJZCIsImlzUmVjZW50Q29udGV4dHNTdGVwIiwiaXNIZWFkZXJUYXNrQ29udGV4dEhvbWUiLCJyb2xlX2lkIiwiaXNIZWFkZXJIb3Vyc0FnZW50SG9tZSIsImlzSGVhZGVyTWFuYWdlckhvdXJzSG9tZSIsImhlYWRlclRhc2tDb250ZXh0U3VidGl0bGVLZXkiLCJpc0NvbnRleHRIb21lU3RlcCIsImlzTGVmdEFsaWduZWRPcmNoZXN0cmF0b3JIb21lIiwiYWxsb3dlZFJlY2VudENvbnRleHRUeXBlcyIsIl91c2VSZWNlbnRDb250ZXh0cyIsImVuYWJsZWQiLCJsaW1pdCIsImZldGNoZWRSZWNlbnRDb250ZXh0cyIsImNvbnRleHRzIiwicmVjZW50Q29udGV4dHNMb2FkaW5nIiwibG9hZGluZyIsInJlY2VudENvbnRleHRzIiwiZmlsdGVyIiwiaGFzIiwiX3VzZVN0YXRlIiwiX3VzZVN0YXRlMiIsIl9zbGljZWRUb0FycmF5Iiwic2VsZWN0ZWRDb250ZXh0Iiwic2V0U2VsZWN0ZWRDb250ZXh0IiwiYWN0aXZlQ29udGV4dCIsIm5hbWUiLCJwcm9qZWN0TmFtZSIsInBpbm5lZEVudGl0eVR5cGUiLCJmYXFzQ29udGV4dEVudGl0eVR5cGUiLCJfYWN0aXZlQ29udGV4dCR0eXBlIiwiaXNDbGllbnRDb250ZXh0Rm9yRmFxcyIsImZ1YXNTZWN0aW9uIiwicmVhbExpc3RzQWdlbnRJZCIsInJlYWxMaXN0c0VudGl0eVR5cGUiLCJfYWN0aXZlQ29udGV4dCR0eXBlMiIsIl91c2VGcmVxdWVudGx5VXNlZEFjdCIsImFnZW50RnVhcyIsImFjdGlvbnMiLCJmdWFzTG9hZGluZyIsIl91c2VGcmVxdWVudGx5VXNlZEFjdDIiLCJjb2xsYWJvcmF0b3JQbGFubmVyRnVhcyIsImNvbGxhYm9yYXRvclBsYW5uZXJGdWFzTG9hZGluZyIsIl91c2VGcmVxdWVudGx5VXNlZEFjdDMiLCJtYW5hZ2VySG9tZUZ1YXMiLCJtYW5hZ2VySG9tZUZ1YXNMb2FkaW5nIiwiaGVhZGVySG91cnNGdWFzIiwiaGVhZGVySG91cnNGdWFzTG9hZGluZyIsImZhcXNMaXN0QWdlbnRJZCIsImZhcXNMaXN0RW50aXR5VHlwZSIsIl91c2VGcmVxdWVudGx5QXNrZWRRdSIsImFnZW50RmFxcyIsImZhcXMiLCJmYXFzTG9hZGluZyIsImhhbmRsZUdldEZyZXF1ZW50bHlBc2tlZFF1ZXN0aW9ucyIsImZhcXNGZXRjaFJlZiIsIl9mYXFzRmV0Y2hSZWYkY3VycmVudCIsImN1cnJlbnRLZXkiLCJjb25jYXQiLCJsYXN0S2V5IiwiY3VycmVudCIsImFnZW50SWQiLCJlbnRpdHlUeXBlIiwiZnVhcyIsImZhcXNBcmVMb2FkaW5nIiwiZnVhc0FyZUxvYWRpbmciLCJzaG93UmVjZW50Q29udGV4dHNCbG9jayIsImxlbmd0aCIsInNob3VsZFNob3dGYXFzIiwic2hvdWxkU2hvd0Z1YXMiLCJzaG91bGRTaG93UGxhbm5lckZ1YXNMb2FkaW5nIiwic2hvdWxkU2hvd1BsYW5uZXJGdWFzQ29udGVudCIsInNob3VsZFNob3dQbGFubmVyRnVhcyIsInNob3dQcm9qZWN0U3VtbWFyeUNhcmQiLCJlbnRpdHkiLCJzaG93RkFRcyIsImhvbWVTY3JvbGxhYmxlTGF5b3V0Iiwic2hvd0R5bmFtaWNTZWN0aW9uIiwiY29udGVudENvbnRhaW5lclJlZiIsIl91c2VTdGF0ZTMiLCJfdXNlU3RhdGU0Iiwic2hvd1RvcEdyYWRpZW50Iiwic2V0U2hvd1RvcEdyYWRpZW50IiwiX3VzZVN0YXRlNSIsIl91c2VTdGF0ZTYiLCJzaG93Qm90dG9tR3JhZGllbnQiLCJzZXRTaG93Qm90dG9tR3JhZGllbnQiLCJfdXNlU3RhdGU3IiwiX3VzZVN0YXRlOCIsImlzU2Nyb2xsaW5nIiwic2V0SXNTY3JvbGxpbmciLCJzY3JvbGxUaW1lb3V0UmVmIiwiZ3JlZXRpbmciLCJpbnRybyIsImludHJvZHVjdGlvbiIsIkFycmF5IiwiaXNBcnJheSIsIk1hdGgiLCJmbG9vciIsInJhbmRvbSIsImhhbmRsZVNlbGVjdFJlY2VudENvbnRleHQiLCJvcmRlciIsIl9jb250ZXh0JHBhcmVudHMiLCJfY29udGV4dCRwYXJlbnRzMiIsIl9jb250ZXh0JHBhcmVudHMzIiwiX2NvbnRleHQkcGFyZW50czQiLCJhaUNoYXRDb250ZXh0U2VsZWN0ZWQiLCJjb250ZXh0SWQiLCJjbGllbnRJZCIsInBhcmVudHMiLCJjbGllbnRfaWQiLCJwcm9qZWN0X2lkIiwiY2xpZW50TmFtZSIsImNsaWVudF9uYW1lIiwicHJvamVjdF9uYW1lIiwiX29iamVjdFNwcmVhZCIsInJlcXVlc3RBbmltYXRpb25GcmFtZSIsImRvY3VtZW50IiwiZGlzcGF0Y2hFdmVudCIsIkN1c3RvbUV2ZW50IiwiaGFuZGxlSG9tZVN0YXJ0Q2hhdCIsIm1lc3NhZ2UiLCJhdHRhY2htZW50cyIsImZhcUlkIiwiYWdlbnRTdWdnZXN0aW9uSWQiLCJtZW50aW9ucyIsImZ1YUlkIiwicmVuZGVyUmVjZW50Q29udGV4dHMiLCIkZml4ZWRDb250ZW50V2lkdGgiLCIkZmx1c2hQaWxscyIsIm1hcCIsImtleSIsImluZGV4IiwidHJpbSIsImNoZWNrU2Nyb2xsIiwiY29udGFpbmVyIiwic2Nyb2xsVG9wIiwic2Nyb2xsSGVpZ2h0IiwiY2xpZW50SGVpZ2h0IiwiaXNTY3JvbGxhYmxlIiwiaXNBdFRvcCIsImlzQXRCb3R0b20iLCJoYW5kbGVTY3JvbGwiLCJjbGVhclRpbWVvdXQiLCJzZXRUaW1lb3V0Iiwic2NoZWR1bGVDaGVja1Njcm9sbCIsImFkZEV2ZW50TGlzdGVuZXIiLCJyZXNpemVPYnNlcnZlciIsIlJlc2l6ZU9ic2VydmVyIiwib2JzZXJ2ZSIsInNjcm9sbENvbnRlbnQiLCJmaXJzdEVsZW1lbnRDaGlsZCIsIkVsZW1lbnQiLCJ0aW1lb3V0SWQiLCJsYXRlVGltZW91dElkIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsImRpc2Nvbm5lY3QiLCJyZW5kZXJIZWFkZXJDb250ZW50IiwiX2FnZW50JGNyZWF0ZWRfYnkiLCJfYWdlbnQkY3JlYXRlZF9ieTIiLCJlbW9qaSIsImNyZWF0ZWRfYnkiLCJpc19kZWxldGVkIiwiY29udGVudEFsaWduU3RhcnQiLCJtYWlhSGVhZGVyU3RhY2tOZWVkc0dhcCIsIiRub0dhcCIsIiRhbGlnbiIsIiRzaXplIiwiZmlyc3ROYW1lIiwiJGNvbGxhYm9yYXRvckhvbWUiLCJmaXhlZEhvbWVDb250ZW50V2lkdGgiLCJzaG93QWdlbnRJbnRyb2R1Y3Rpb24iLCIkYWxpZ25TdGFydCIsIiRzaG93IiwiJGlzQWdlbnRWaWV3IiwiJGZsb2F0aW5nQ3VzdG9tQ2VudGVyIiwiJGNlbnRlclZlcnRpY2FsbHkiLCIkaGVhZGVyQ29sbGFib3JhdG9ySG9tZSIsIiRzZWN0aW9uT3JjaGVzdHJhdG9ySG9tZSIsIiRnYXAiLCIkbWF4V2lkdGgiLCJwcm9qZWN0U3VtbWFyeSIsIiRncm93IiwidmFyaWFudCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL21vbGVjdWxlcy9DaGF0QUlIb21lL0NoYXRBSUhvbWUudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIHJlYWN0L2Z1bmN0aW9uLWNvbXBvbmVudC1kZWZpbml0aW9uICovXG4vKiBlc2xpbnQtZGlzYWJsZSBqc3gtYTExeS9jbGljay1ldmVudHMtaGF2ZS1rZXktZXZlbnRzICovXG4vKiBlc2xpbnQtZGlzYWJsZSBqc3gtYTExeS9uby1zdGF0aWMtZWxlbWVudC1pbnRlcmFjdGlvbnMgKi9cbmltcG9ydCB7IHVzZUVmZmVjdCwgdXNlTGF5b3V0RWZmZWN0LCB1c2VSZWYsIHVzZVN0YXRlLCB1c2VDYWxsYmFjaywgdXNlTWVtbyB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgZmx1c2hTeW5jIH0gZnJvbSAncmVhY3QtZG9tJ1xuXG5pbXBvcnQgeyBUb29sdGlwIH0gZnJvbSAnQHByb2plY3Rjb3IvdG9vbHRpcHYyL2xpYi9jb21wb25lbnRzL1Rvb2x0aXAnXG5pbXBvcnQgeyBMaXN0Q2hlY2tsaXN0IH0gZnJvbSAnQHByb2plY3Rjb3IvaWNvbnMvbGliL2NvbXBvbmVudHMvTGlzdENoZWNrbGlzdCdcbmltcG9ydCB7IHVzZVQgfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VUJ1xuaW1wb3J0IHsgRVZFTlRTLCB1c2VFdmVudCB9IGZyb20gJy4uLy4uLy4uL2hvb2tzL3VzZUV2ZW50J1xuXG5pbXBvcnQgeyBvcHRpb25zIH0gZnJvbSAnLi4vQ2hhdEFJTW9kYWwvY29uc3RhbnRzJ1xuXG5pbXBvcnQge1xuICBTQ0NBSUhvbWVDb250YWluZXIsXG4gIFNDQ0FJSG9tZUNvbnRlbnQsXG4gIFNDQ0FJSG9tZUNvbnRlbnRJbm5lcixcbiAgU0NDQUlIb21lR3JhZGllbnRUb3AsXG4gIFNDQ0FJSG9tZUdyYWRpZW50Qm90dG9tLFxuICBTQ0NBSUhvbWVIZWFkZXIsXG4gIFNDQ0FJSG9tZUdyZWV0aW5nLFxuICBTQ0NBSUhvbWVBZ2VudEluZm9Db250YWluZXIsXG4gIFNDQ0FJSG9tZUFnZW50SW5mbyxcbiAgU0NDQUlIb21lUHJvamVjdFN1bW1hcnksXG4gIFNDQ0FJSG9tZVByb2plY3RTdW1tYXJ5Q29udGVudCxcbiAgU0NDQUlIb21lUHJvamVjdFN1bW1hcnlUaXRsZSxcbiAgU0NDQUlIb21lUHJvamVjdFN1bW1hcnlEZXNjcmlwdGlvbixcbiAgU0NDQUhXcmFwcGVyU3VtbWFyeVByb2plY3QsXG4gIFNDQ0FJSG9tZUludHJvZHVjdGlvbixcbiAgU0NDQUlIb21lQ3JlYXRlZEJ5Q29udGFpbmVyLFxuICBTQ0NBSUhvbWVDcmVhdGVkQnlUZXh0LFxuICBTQ0NBSUhvbWVDcmVhdGVkQnlUZXh0TmFtZSxcbiAgU0NDQUlIb21lSWNvbkNvbnRhaW5lcixcbiAgU0NDQUlIb21lTG9nb1dyYXBwZXIsXG4gIFNDQ0FJSG9tZU1haWFIZWFkZXJTdGFjayxcbiAgU0NDQUlIb21lVGl0bGUsXG4gIFNDQ0FJSG9tZVRpdGxlQmxvY2ssXG4gIFNDQ0FJSG9tZVN1YnRpdGxlLFxuICBTQ0NBSUhvbWVEeW5hbWljU2VjdGlvbixcbiAgU0NDQUlIb21lUmVjZW50Q29udGV4dHMsXG4gIFNDQ0FJSG9tZVJlY2VudENvbnRleHRzTGlzdCxcbiAgU0NDQUlIb21lUmVjZW50Q29udGV4dHNTZWN0aW9uSGVhZGVyLFxuICBTQ0NBSUhvbWVSZWNlbnRDb250ZXh0c1NlY3Rpb25UaXRsZSxcbiAgU0NDQUlIb21lUmVjZW50Q29udGV4dHNTZWN0aW9uU3VidGl0bGUsXG4gIFNDQ0FJSG9tZVJlY2VudENvbnRleHRQaWxsLFxuICBTQ0NBSUhvbWVSZWNlbnRDb250ZXh0UGlsbEljb24sXG4gIFNDQ0FJSG9tZVJlY2VudENvbnRleHRQaWxsVGV4dCxcbiAgU0NDQUlIb21lUmVjZW50Q29udGV4dFBpbGxTa2VsZXRvbixcbiAgTUFJQV9IRUFERVJfQ09MTEFCT1JBVE9SX0hPTUVfQ09OVEVOVF9XSURUSF9QWCxcbn0gZnJvbSAnLi9zdHlsZXMnXG5pbXBvcnQgeyB1c2VHbG9iYWxDb250ZXh0LCB0eXBlIFNlY3Rpb24gfSBmcm9tICcuLi8uLi8uLi9jb250ZXh0L2dsb2JhbC1jb250ZXh0J1xuaW1wb3J0IHsgdXNlVXNlciwgQ09SVXNlclJvbGUsIGlzQ29sbGFib3JhdG9yUm9sZSwgaXNNYW5hZ2VyUm9sZSB9IGZyb20gJy4uLy4uLy4uL2NvbnRleHQvY29yLXVzZXInXG5pbXBvcnQgeyB1c2VSZXNpemVMaXN0ZW5lciB9IGZyb20gJy4uLy4uLy4uL2hvb2tzL3VzZVJlc2l6ZSdcbmltcG9ydCB7IGdldENvbnRleHRNZW50aW9uSWNvbiB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL2NvbnRleHRNZW50aW9uSWNvbnMnXG5pbXBvcnQgeyBvcmNoZXN0cmF0b3JIYXNIb3Vyc1N1YmFnZW50IH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvb3JjaGVzdHJhdG9yU3ViYWdlbnRzJ1xuaW1wb3J0IHsgdmFsaWRhdGVJc01haWEgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy91dGlscy92YWxpZGF0ZUlzTWFpYSdcbmltcG9ydCB7IGlzTWFpYWtlckFnZW50IH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvYWdlbnREaXNwbGF5TmFtZSdcbmltcG9ydCB7IEFnZW50IH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMvYWdlbnQnXG5pbXBvcnQgeyBBdHRhY2htZW50RmlsZSB9IGZyb20gJy4uL0NoYXRGb290ZXIvQ2hhdEZvb3RlcidcbmltcG9ydCB7IEZyZXF1ZW50bHlBc2tlZFF1ZXN0aW9ucyB9IGZyb20gJy4uLy4uL2F0b21zL0ZyZXF1ZW50bHlBc2tlZFF1ZXN0aW9ucydcbmltcG9ydCB7IEZyZXF1ZW50bHlVc2VkQWN0aW9ucyB9IGZyb20gJy4uLy4uL2F0b21zL0ZyZXF1ZW50bHlVc2VkQWN0aW9ucydcbmltcG9ydCB7IHVzZUZyZXF1ZW50bHlVc2VkQWN0aW9ucyB9IGZyb20gJy4uLy4uLy4uL2hvb2tzL3VzZUZyZXF1ZW50bHlVc2VkQWN0aW9ucydcbmltcG9ydCB7IHNvcnRNYW5hZ2VySG91cnNIb21lRnVhcyB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL3NvcnRNYW5hZ2VySG91cnNIb21lRnVhcydcbmltcG9ydCB7IHVzZUZyZXF1ZW50bHlBc2tlZFF1ZXN0aW9ucyB9IGZyb20gJy4uLy4uLy4uL2hvb2tzL3VzZUZyZXF1ZW50bHlBc2tlZFF1ZXN0aW9ucydcbmltcG9ydCB7IHVzZVJlY2VudENvbnRleHRzIH0gZnJvbSAnLi4vLi4vLi4vaG9va3MvdXNlUmVjZW50Q29udGV4dHMnXG5pbXBvcnQgdHlwZSB7IFJlY2VudENvbnRleHRJdGVtLCBSZWNlbnRDb250ZXh0VHlwZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL21haWEvUmVjZW50Q29udGV4dHMnXG5pbXBvcnQgeyBNQUlBSXNvbG9nbyB9IGZyb20gJy4uLy4uL2F0b21zL2ljb25zL01BSUFJc29sb2dvJ1xuaW1wb3J0IHsgVGVtcGxhdGVHcmFkaWVudEljb24gfSBmcm9tICcuLi8uLi9hdG9tcy9pY29ucy9UZW1wbGF0ZUdyYWRpZW50SWNvbidcbmltcG9ydCB7IENoYXRBSUhvbWVNYWlha2VyIH0gZnJvbSAnLi9DaGF0QUlIb21lTWFpYWtlcidcblxudHlwZSBDaGF0QUlIb21lUHJvcHMgPSB7XG4gIG9uU3RhcnRDaGF0OiAoXG4gICAgbWVzc2FnZTogc3RyaW5nLFxuICAgIGF0dGFjaG1lbnRzPzogQXR0YWNobWVudEZpbGVbXSB8IG51bGwsXG4gICAgZmFxSWQ/OiBzdHJpbmcsXG4gICAgYWdlbnRTdWdnZXN0aW9uSWQ/OiBzdHJpbmcsXG4gICAgbWVudGlvbnM/OiBudWxsLFxuICAgIGZ1YUlkPzogc3RyaW5nXG4gICkgPT4gdm9pZFxuICBoYW5kbGVyczogUmVjb3JkPG9wdGlvbnMsICgpID0+IHZvaWQ+XG4gIGV4cGFuZGVkPzogYm9vbGVhblxuICBmbG9hdGluZz86IGJvb2xlYW5cbn1cblxuZXhwb3J0IGVudW0gRnJlcXVlbnRRdWVzdGlvbnMge1xuICByZW50YWJpbGlkYWRfcHJveWVjdG8gPSAncmVudGFiaWxpZGFkX3Byb3llY3RvJyxcbiAgYXZhbmNlX3Byb3llY3RvID0gJ2F2YW5jZV9wcm95ZWN0bycsXG59XG5cbmNvbnN0IFJFQ0VOVF9DT05URVhUU19MSU1JVCA9IDlcbmNvbnN0IFJFQ0VOVF9DT05URVhUX0lDT05fQ09MT1IgPSAnIzRENEQ0RCdcbmNvbnN0IFJFQ0VOVF9DT05URVhUX0lDT05fU0laRV9QWCA9IDE1XG5jb25zdCBSRUNFTlRfQ09OVEVYVF9TS0VMRVRPTl9LRVlTID0gW1xuICAncmVjZW50LWNvbnRleHQtc2tlbGV0b24tMScsXG4gICdyZWNlbnQtY29udGV4dC1za2VsZXRvbi0yJyxcbiAgJ3JlY2VudC1jb250ZXh0LXNrZWxldG9uLTMnLFxuXVxuXG5jb25zdCBSZWNlbnRDb250ZXh0UGlsbCA9ICh7XG4gIGNvbnRleHQsXG4gIGxhYmVsLFxuICBvbkNsaWNrLFxuICBmdWxsV2lkdGggPSBmYWxzZSxcbn06IHtcbiAgY29udGV4dDogUmVjZW50Q29udGV4dEl0ZW1cbiAgbGFiZWw6IHN0cmluZ1xuICBvbkNsaWNrOiAoKSA9PiB2b2lkXG4gIGZ1bGxXaWR0aD86IGJvb2xlYW5cbn0pID0+IHtcbiAgY29uc3QgdGV4dFJlZiA9IHVzZVJlZjxIVE1MU3BhbkVsZW1lbnQ+KG51bGwpXG4gIGNvbnN0IHsgc2hvd1Rvb2x0aXAgfSA9IHVzZVJlc2l6ZUxpc3RlbmVyKHRleHRSZWYsIFtsYWJlbF0pXG5cbiAgcmV0dXJuIChcbiAgICA8U0NDQUlIb21lUmVjZW50Q29udGV4dFBpbGwgdHlwZT1cImJ1dHRvblwiIG9uQ2xpY2s9e29uQ2xpY2t9ICRmdWxsV2lkdGg9e2Z1bGxXaWR0aH0+XG4gICAgICA8U0NDQUlIb21lUmVjZW50Q29udGV4dFBpbGxJY29uPlxuICAgICAgICB7Y29udGV4dC50eXBlID09PSAndGFzaycgPyAoXG4gICAgICAgICAgPExpc3RDaGVja2xpc3QgY29sb3I9e1JFQ0VOVF9DT05URVhUX0lDT05fQ09MT1J9IHdpZHRoPVwiMTVweFwiIGhlaWdodD1cIjE1cHhcIiAvPlxuICAgICAgICApIDogKFxuICAgICAgICAgIGdldENvbnRleHRNZW50aW9uSWNvbihjb250ZXh0LnR5cGUsIFJFQ0VOVF9DT05URVhUX0lDT05fQ09MT1IsIHVuZGVmaW5lZCwgUkVDRU5UX0NPTlRFWFRfSUNPTl9TSVpFX1BYKVxuICAgICAgICApfVxuICAgICAgPC9TQ0NBSUhvbWVSZWNlbnRDb250ZXh0UGlsbEljb24+XG4gICAgICA8U0NDQUlIb21lUmVjZW50Q29udGV4dFBpbGxUZXh0IHJlZj17dGV4dFJlZn0+XG4gICAgICAgIHtzaG93VG9vbHRpcCA/IChcbiAgICAgICAgICA8VG9vbHRpcCB0aXRsZT17bGFiZWx9PlxuICAgICAgICAgICAgPHNwYW4+e2xhYmVsfTwvc3Bhbj5cbiAgICAgICAgICA8L1Rvb2x0aXA+XG4gICAgICAgICkgOiAoXG4gICAgICAgICAgbGFiZWxcbiAgICAgICAgKX1cbiAgICAgIDwvU0NDQUlIb21lUmVjZW50Q29udGV4dFBpbGxUZXh0PlxuICAgIDwvU0NDQUlIb21lUmVjZW50Q29udGV4dFBpbGw+XG4gIClcbn1cblxuY29uc3QgcGFyc2VOdW1lcmljSWQgPSAodmFsdWU/OiBzdHJpbmcgfCBudW1iZXIgfCBudWxsKTogbnVtYmVyIHwgbnVsbCA9PiB7XG4gIGlmICh2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IHZhbHVlID09PSAnJykgcmV0dXJuIG51bGxcbiAgY29uc3QgcGFyc2VkID0gTnVtYmVyKHZhbHVlKVxuICByZXR1cm4gTnVtYmVyLmlzRmluaXRlKHBhcnNlZCkgPyBwYXJzZWQgOiBudWxsXG59XG5cbmNvbnN0IGdldEFsbG93ZWRSZWNlbnRDb250ZXh0VHlwZXMgPSAocm9sZUlkPzogQ09SVXNlclJvbGUgfCBudW1iZXIgfCBzdHJpbmcpOiBTZXQ8UmVjZW50Q29udGV4dFR5cGU+ID0+IHtcbiAgY29uc3Qgbm9ybWFsaXplZFJvbGVJZCA9IE51bWJlcihyb2xlSWQpXG4gIGlmIChcbiAgICBub3JtYWxpemVkUm9sZUlkID09PSBDT1JVc2VyUm9sZS5DTEVWRUwgfHxcbiAgICBub3JtYWxpemVkUm9sZUlkID09PSBDT1JVc2VyUm9sZS5ESVJFQ1RPUiB8fFxuICAgIG5vcm1hbGl6ZWRSb2xlSWQgPT09IENPUlVzZXJSb2xlLlBST0pFQ1RfTUFOQUdFUlxuICApIHtcbiAgICByZXR1cm4gbmV3IFNldChbJ2NsaWVudCcsICdwcm9qZWN0JywgJ3Rhc2snXSlcbiAgfVxuICBpZiAoaXNDb2xsYWJvcmF0b3JSb2xlKHJvbGVJZCkpIHtcbiAgICByZXR1cm4gbmV3IFNldChbJ3Rhc2snXSlcbiAgfVxuICByZXR1cm4gbmV3IFNldCgpXG59XG5cbmV4cG9ydCBjb25zdCBDaGF0QUlIb21lID0gKHsgaGFuZGxlcnMsIG9uU3RhcnRDaGF0LCBleHBhbmRlZCwgZmxvYXRpbmcgfTogQ2hhdEFJSG9tZVByb3BzKSA9PiB7XG4gIGNvbnN0IHsgdCwgaTE4biB9ID0gdXNlVCgpXG4gIGNvbnN0IGV2ZW50ID0gdXNlRXZlbnQoKVxuICBjb25zdCB1c2VyID0gdXNlVXNlcigpXG4gIGNvbnN0IHsgYWdlbnQsIHNlY3Rpb24sIGNsaWVudCwgcHJvamVjdCwgdGFzaywgY2hpcHNQcm9qZWN0LCBzZXRDbGllbnQsIHNldFByb2plY3QsIHNldFRhc2ssIHNldENoaXBzUHJvamVjdCB9ID1cbiAgICB1c2VHbG9iYWxDb250ZXh0KClcblxuICBjb25zdCBpc01BSUEgPSB2YWxpZGF0ZUlzTWFpYShhZ2VudCBhcyBBZ2VudClcbiAgY29uc3QgZmxvYXRpbmdDdXN0b21DZW50ZXIgPSAhIShmbG9hdGluZyAmJiBhZ2VudD8udHlwZSA9PT0gJ2N1c3RvbScpXG4gIGNvbnN0IGxhbmcgPSBpMThuLmxhbmd1YWdlID09PSAnYnInID8gJ3B0JyA6IGkxOG4ubGFuZ3VhZ2VcblxuICBjb25zdCBzdW1tYXJ5UHJvamVjdEFjY2VzcyA9XG4gICAgdHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiZcbiAgICAoU3RyaW5nKHdpbmRvdy5NQUlBX1BST0pFQ1RfU1VNTUFSWV9GRUFUVVJFX0FDQ0VTUykudG9Mb3dlckNhc2UoKSA9PT0gJ3RydWUnIHx8XG4gICAgICBTdHJpbmcod2luZG93Lm1haWFQcm9qZWN0U3VtbWFyeUFjY2VzcykudG9Mb3dlckNhc2UoKSA9PT0gJ3RydWUnKVxuICBjb25zdCBmYXFzQWNjZXNzID0gdHJ1ZVxuICBjb25zdCBzaG93UHJvamVjdFN1bW1hcnkgPSAhIShpc01BSUEgJiYgc3VtbWFyeVByb2plY3RBY2Nlc3MpXG4gIC8vIEVsIG9yY2hlc3RyYXRvciAodHlwZSA9PT0gJ29yY2hlc3RyYXRvcicpIG11ZXN0cmEgRkFRcy9GVUFzIGFncmVnYWRhcyBkZSBzdXMgc3ViYWdlbnRlcyxcbiAgLy8gYXPDrSBxdWUgTk8gc2UgdHJhdGEgY29tbyBtYWlha2VyIGFjw6EuXG4gIGNvbnN0IGlzTWFpYWtlciA9IGlzTWFpYWtlckFnZW50KGFnZW50KVxuICBjb25zdCBpc0hlYWRlckhvbWUgPSBpc01BSUEgJiYgc2VjdGlvbiA9PT0gJ2hlYWRlcicgJiYgYWdlbnQ/LnR5cGUgPT09ICdvcmNoZXN0cmF0b3InXG4gIC8vIEVsIG9yY2hlc3RyYXRvciB1c2EgZWwgaG9tZSBlbiAyIHBhc29zIChjb250ZXh0b3MgcmVjaWVudGVzIOKGlCBGQVFzL0ZVQXMpIGVuIGhlYWRlci9wcm9qZWN0L2NsaWVudC90YXNrLlxuICAvLyBFbiBwcm9qZWN0L2NsaWVudC90YXNrLCBhbCBsaW1waWFyIGVsIGNvbnRleHRvIChwLiBlai4gYWwgcmVzZWxlY2Npb25hciBNQUlBXG4gIC8vIGRlc2RlIGVsIGxpc3RhZG8gZGUgYWdlbnRlcykgc2UgbXVlc3RyYSBlbCBzZWxlY3RvciBkZSBjb250ZXh0b3MgcmVjaWVudGVzIGVuIGx1Z2FyIGRlIHVuIGhvbWUgdmFjw61vLlxuICBjb25zdCBpc09yY2hlc3RyYXRvciA9IGlzTUFJQSAmJiBhZ2VudD8udHlwZSA9PT0gJ29yY2hlc3RyYXRvcidcbiAgLy8gUGxhbm5lcjogaG9tZSBkZSBGVUFzIGRlbCBvcmNoZXN0cmF0b3IgKHNpbiBzZWxlY3RvciBkZSBjb250ZXh0b3MpLlxuICAvLyBTaSBlbCB1c3VhcmlvIG5hdmVnYSBhIE1haWFrZXIgdSBvdHJvIGFnZW50ZSwgc2VjdGlvbiBzaWd1ZSBzaWVuZG8gYHBsYW5uZXJgIHBlcm8geWEgbm8gZXMgZXN0ZSBob21lLlxuICBjb25zdCBpc1BsYW5uZXJIb21lID0gc2VjdGlvbiA9PT0gJ3BsYW5uZXInICYmIGlzT3JjaGVzdHJhdG9yXG4gIC8vIEhvbWVzIGRlIHNlY2Npw7NuIChwcm9qZWN0L2NsaWVudC90YXNrKTogc2luIGlzb2xvZ28sIGNvbnRlbmlkbyB0b3AtbGVmdCwgY29sdW1uYSA0NDhweCBjZW50cmFkYS5cbiAgY29uc3QgaXNTZWN0aW9uT3JjaGVzdHJhdG9ySG9tZSA9IGlzT3JjaGVzdHJhdG9yICYmICFpc0hlYWRlckhvbWUgJiYgIWlzUGxhbm5lckhvbWVcbiAgY29uc3QgaGFzSG91cnNTdWJhZ2VudCA9IG9yY2hlc3RyYXRvckhhc0hvdXJzU3ViYWdlbnQoYWdlbnQpXG5cbiAgLy8gSG9tZSBkZWwgb3JjaGVzdHJhdG9yIGVuIDIgcGFzb3M6XG4gIC8vICAtIFBhc28gMSAoc2luIGNvbnRleHRvIHBpbmVhZG8pOiBzZSBtdWVzdHJhbiBzb2xvIGxvcyBjb250ZXh0b3MgcmVjaWVudGVzLlxuICAvLyAgLSBQYXNvIDIgKGNvbnRleHRvIHBpbmVhZG8pOiBzZSBtdWVzdHJhbiBsYXMgRkFRcy9hY2Npb25lcyBxdWUgcmVmZXJlbmNpYW4gZXNlIGNvbnRleHRvLlxuICBjb25zdCBoYXNQaW5uZWRDb250ZXh0ID0gISEodGFzaz8uaWQgfHwgY2hpcHNQcm9qZWN0Py5wcm9qZWN0SWQgfHwgY2xpZW50Py5pZCB8fCBwcm9qZWN0Py5pZClcbiAgY29uc3QgaXNSZWNlbnRDb250ZXh0c1N0ZXAgPSBpc09yY2hlc3RyYXRvciAmJiAhaGFzUGlubmVkQ29udGV4dCAmJiAhaXNQbGFubmVySG9tZVxuICAvLyBIZWFkZXIgcGFzbyAxIGNvbXBhY3RvIChzaW4gaXNvbG9nbywgcGlsbHMgZnVsbC13aWR0aCk6IGNvbGFib3JhZG9yIHkgbWFuYWdlcnMgKEMtTGV2ZWwvRGlyZWN0b3IvUE0pLlxuICBjb25zdCBpc0hlYWRlclRhc2tDb250ZXh0SG9tZSA9XG4gICAgc2VjdGlvbiA9PT0gJ2hlYWRlcicgJiYgaXNSZWNlbnRDb250ZXh0c1N0ZXAgJiYgKGlzQ29sbGFib3JhdG9yUm9sZSh1c2VyLnJvbGVfaWQpIHx8IGlzTWFuYWdlclJvbGUodXNlci5yb2xlX2lkKSlcbiAgLy8gQmxvcXVlIEZVQXMgcGxhbm5lciArIHNlY2Npw7NuIGRlIGNvbnRleHRvcyByZWNpZW50ZXMgY29uIHTDrXR1bG9zIChjb2xhYm9yYWRvciBvIG1hbmFnZXIgY29uIGhvdXIpLlxuICBjb25zdCBpc0hlYWRlckhvdXJzQWdlbnRIb21lID0gaXNIZWFkZXJUYXNrQ29udGV4dEhvbWUgJiYgaGFzSG91cnNTdWJhZ2VudFxuICBjb25zdCBpc0hlYWRlck1hbmFnZXJIb3Vyc0hvbWUgPSBpc0hlYWRlckhvdXJzQWdlbnRIb21lICYmIGlzTWFuYWdlclJvbGUodXNlci5yb2xlX2lkKVxuICBjb25zdCBoZWFkZXJUYXNrQ29udGV4dFN1YnRpdGxlS2V5ID0gdXNlTWVtbygoKSA9PiB7XG4gICAgaWYgKGlzSGVhZGVySG91cnNBZ2VudEhvbWUpIHtcbiAgICAgIGlmIChpc0hlYWRlck1hbmFnZXJIb3Vyc0hvbWUpIHJldHVybiAnaG9tZU1lbnUuY29udGV4dEhvbWUuc3VidGl0bGVNYW5hZ2VyV2l0aEhvdXJzJ1xuICAgICAgcmV0dXJuICdob21lTWVudS5jb250ZXh0SG9tZS5zdWJ0aXRsZUNvbGxhYm9yYXRvcldpdGhIb3VycydcbiAgICB9XG4gICAgaWYgKGlzTWFuYWdlclJvbGUodXNlci5yb2xlX2lkKSkgcmV0dXJuICdob21lTWVudS5jb250ZXh0SG9tZS5zdWJ0aXRsZSdcbiAgICByZXR1cm4gJ2hvbWVNZW51LmNvbnRleHRIb21lLnN1YnRpdGxlQ29sbGFib3JhdG9yJ1xuICB9LCBbaXNIZWFkZXJIb3Vyc0FnZW50SG9tZSwgaXNIZWFkZXJNYW5hZ2VySG91cnNIb21lLCB1c2VyLnJvbGVfaWRdKVxuICBjb25zdCBpc0NvbnRleHRIb21lU3RlcCA9IGlzSGVhZGVySG9tZSAmJiBoYXNQaW5uZWRDb250ZXh0XG4gIC8vIEhlYWRlciBwYXNvIDIgKEZBUXMvRlVBcyBjb24gY29udGV4dG8pIHkgaG9tZXMgZGUgc2VjY2nDs24gY29tcGFydGVuIGxheW91dDogc2luIGlzb2xvZ28sIHRleHRvIGEgbGEgaXpxdWllcmRhLlxuICBjb25zdCBpc0xlZnRBbGlnbmVkT3JjaGVzdHJhdG9ySG9tZSA9IGlzU2VjdGlvbk9yY2hlc3RyYXRvckhvbWUgfHwgaXNDb250ZXh0SG9tZVN0ZXBcblxuICBjb25zdCBhbGxvd2VkUmVjZW50Q29udGV4dFR5cGVzID0gdXNlTWVtbygoKSA9PiB7XG4gICAgaWYgKGlzSGVhZGVyTWFuYWdlckhvdXJzSG9tZSkgcmV0dXJuIGdldEFsbG93ZWRSZWNlbnRDb250ZXh0VHlwZXModXNlci5yb2xlX2lkKVxuICAgIGlmIChpc0hlYWRlclRhc2tDb250ZXh0SG9tZSAmJiBpc01hbmFnZXJSb2xlKHVzZXIucm9sZV9pZCkpIHJldHVybiBnZXRBbGxvd2VkUmVjZW50Q29udGV4dFR5cGVzKHVzZXIucm9sZV9pZClcbiAgICBpZiAoaXNIZWFkZXJUYXNrQ29udGV4dEhvbWUpIHJldHVybiBuZXcgU2V0PFJlY2VudENvbnRleHRUeXBlPihbJ3Rhc2snXSlcbiAgICByZXR1cm4gZ2V0QWxsb3dlZFJlY2VudENvbnRleHRUeXBlcyh1c2VyLnJvbGVfaWQpXG4gIH0sIFt1c2VyLnJvbGVfaWQsIGlzSGVhZGVyTWFuYWdlckhvdXJzSG9tZSwgaXNIZWFkZXJUYXNrQ29udGV4dEhvbWVdKVxuICBjb25zdCB7IGNvbnRleHRzOiBmZXRjaGVkUmVjZW50Q29udGV4dHMsIGxvYWRpbmc6IHJlY2VudENvbnRleHRzTG9hZGluZyB9ID0gdXNlUmVjZW50Q29udGV4dHMoe1xuICAgIGVuYWJsZWQ6IGlzT3JjaGVzdHJhdG9yICYmICFpc1BsYW5uZXJIb21lLFxuICAgIGxpbWl0OiBSRUNFTlRfQ09OVEVYVFNfTElNSVQsXG4gIH0pXG4gIGNvbnN0IHJlY2VudENvbnRleHRzID0gdXNlTWVtbyhcbiAgICAoKSA9PiBmZXRjaGVkUmVjZW50Q29udGV4dHMuZmlsdGVyKGNvbnRleHQgPT4gYWxsb3dlZFJlY2VudENvbnRleHRUeXBlcy5oYXMoY29udGV4dC50eXBlKSksXG4gICAgW2ZldGNoZWRSZWNlbnRDb250ZXh0cywgYWxsb3dlZFJlY2VudENvbnRleHRUeXBlc11cbiAgKVxuXG4gIC8vIENvbnRleHRvIGFjdGl2byBwYXJhIGRlcml2YXIgRkFRcy9hY2Npb25lcyAocGFzbyAyKS4gUHJlZmVyaW1vcyBlbCBwaWxsIGNsaWNrZWFkbztcbiAgLy8gc2kgbm8sIGxvIHJlY29uc3RydWltb3MgZGVzZGUgZWwgY29udGV4dG8gZ2xvYmFsLlxuICBjb25zdCBbc2VsZWN0ZWRDb250ZXh0LCBzZXRTZWxlY3RlZENvbnRleHRdID0gdXNlU3RhdGU8UmVjZW50Q29udGV4dEl0ZW0gfCBudWxsPihudWxsKVxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghaGFzUGlubmVkQ29udGV4dCkgc2V0U2VsZWN0ZWRDb250ZXh0KG51bGwpXG4gIH0sIFtoYXNQaW5uZWRDb250ZXh0XSlcblxuICBjb25zdCBhY3RpdmVDb250ZXh0ID0gdXNlTWVtbzxSZWNlbnRDb250ZXh0SXRlbSB8IG51bGw+KCgpID0+IHtcbiAgICBpZiAoc2VsZWN0ZWRDb250ZXh0KSByZXR1cm4gc2VsZWN0ZWRDb250ZXh0XG4gICAgaWYgKCFpc0NvbnRleHRIb21lU3RlcCkgcmV0dXJuIG51bGxcbiAgICBpZiAodGFzaz8uaWQpIHJldHVybiB7IHR5cGU6ICd0YXNrJywgaWQ6IHRhc2suaWQsIG5hbWU6IHRhc2submFtZSB9XG4gICAgaWYgKGNoaXBzUHJvamVjdD8ucHJvamVjdElkKSByZXR1cm4geyB0eXBlOiAncHJvamVjdCcsIGlkOiBjaGlwc1Byb2plY3QucHJvamVjdElkLCBuYW1lOiBjaGlwc1Byb2plY3QucHJvamVjdE5hbWUgfVxuICAgIGlmIChjbGllbnQ/LmlkKSByZXR1cm4geyB0eXBlOiAnY2xpZW50JywgaWQ6IGNsaWVudC5pZCwgbmFtZTogY2xpZW50Lm5hbWUgfVxuICAgIHJldHVybiBudWxsXG4gIH0sIFtcbiAgICBzZWxlY3RlZENvbnRleHQsXG4gICAgaXNDb250ZXh0SG9tZVN0ZXAsXG4gICAgdGFzaz8uaWQsXG4gICAgdGFzaz8ubmFtZSxcbiAgICBjaGlwc1Byb2plY3Q/LnByb2plY3RJZCxcbiAgICBjaGlwc1Byb2plY3Q/LnByb2plY3ROYW1lLFxuICAgIGNsaWVudD8uaWQsXG4gICAgY2xpZW50Py5uYW1lLFxuICBdKVxuXG4gIC8vIGVudGl0eV90eXBlIGRlbCBjb250ZXh0byBwaW5lYWRvIChwcm9qZWN0L2NsaWVudC90YXNrKSwgdG9tYWRvIGRlbCBjb250ZXh0byBnbG9iYWwuXG4gIC8vIEFwbGljYSB0YW50byBhbCBhYnJpciBNQUlBIGRlc2RlIHVuYSBzZWNjacOzbiBlc3BlY8OtZmljYSBjb21vIGFsIGNhbWJpYXIgZGUgY29udmVyc2FjacOzbi5cbiAgY29uc3QgcGlubmVkRW50aXR5VHlwZSA9IHVzZU1lbW88UmVjZW50Q29udGV4dFR5cGUgfCB1bmRlZmluZWQ+KCgpID0+IHtcbiAgICBpZiAodGFzaz8uaWQpIHJldHVybiAndGFzaydcbiAgICBpZiAoY2hpcHNQcm9qZWN0Py5wcm9qZWN0SWQgfHwgcHJvamVjdD8uaWQpIHJldHVybiAncHJvamVjdCdcbiAgICBpZiAoY2xpZW50Py5pZCkgcmV0dXJuICdjbGllbnQnXG4gICAgcmV0dXJuIHVuZGVmaW5lZFxuICB9LCBbdGFzaz8uaWQsIGNoaXBzUHJvamVjdD8ucHJvamVjdElkLCBwcm9qZWN0Py5pZCwgY2xpZW50Py5pZF0pXG5cbiAgLy8gRkFRcyBzb2xvIGNvbiBjb250ZXh0byBjbGllbnRlIHBpbmVhZG8gKGhlYWRlciBwYXNvIDIgbyBzZWNjacOzbiBjbGllbnQpLlxuICAvLyBQcm95ZWN0bywgdGFyZWEgeSBwbGFubmVyIG11ZXN0cmFuIHNvbG8gRlVBcy5cbiAgY29uc3QgZmFxc0NvbnRleHRFbnRpdHlUeXBlID0gdXNlTWVtbzxSZWNlbnRDb250ZXh0VHlwZSB8IHVuZGVmaW5lZD4oKCkgPT4ge1xuICAgIGlmIChpc1BsYW5uZXJIb21lIHx8IGlzUmVjZW50Q29udGV4dHNTdGVwKSByZXR1cm4gdW5kZWZpbmVkXG4gICAgaWYgKGlzSGVhZGVySG9tZSkge1xuICAgICAgcmV0dXJuIGlzQ29udGV4dEhvbWVTdGVwID8gKGFjdGl2ZUNvbnRleHQ/LnR5cGUgPz8gcGlubmVkRW50aXR5VHlwZSkgOiB1bmRlZmluZWRcbiAgICB9XG4gICAgcmV0dXJuIHBpbm5lZEVudGl0eVR5cGVcbiAgfSwgW2lzUGxhbm5lckhvbWUsIGlzUmVjZW50Q29udGV4dHNTdGVwLCBpc0hlYWRlckhvbWUsIGlzQ29udGV4dEhvbWVTdGVwLCBhY3RpdmVDb250ZXh0Py50eXBlLCBwaW5uZWRFbnRpdHlUeXBlXSlcbiAgY29uc3QgaXNDbGllbnRDb250ZXh0Rm9yRmFxcyA9IGZhcXNDb250ZXh0RW50aXR5VHlwZSA9PT0gJ2NsaWVudCdcbiAgLy8gYHNlY3Rpb25gIHF1ZSBzZSBjb25zdWx0YSBwYXJhIGxhcyBGVUFzOiBlbiBuby1oZWFkZXIgc2lndWUgZWwgdGlwbyBkZSBjb250ZXh0byBwaW5lYWRvLlxuICAvLyBFbiBwbGFubmVyIHNlIGZ1ZXJ6YSBsYSBzZWN0aW9uIEFQSSBgcGxhbm5lcmAuXG4gIGNvbnN0IGZ1YXNTZWN0aW9uOiBTZWN0aW9uID0gKCgpID0+IHtcbiAgICBpZiAoaXNQbGFubmVySG9tZSkgcmV0dXJuICdwbGFubmVyJ1xuICAgIGlmICghaXNIZWFkZXJIb21lICYmIHBpbm5lZEVudGl0eVR5cGUpIHJldHVybiBwaW5uZWRFbnRpdHlUeXBlXG4gICAgcmV0dXJuIHNlY3Rpb25cbiAgfSkoKVxuXG4gIC8vIEZBUXMvYWNjaW9uZXM6XG4gIC8vICAtIGhlYWRlci1ob21lIChvcmNoZXN0cmF0b3IpLCBwYXNvIDI6IGZpbHRyYWRhcyBwb3IgYGVudGl0eV90eXBlYCBkZWwgY29udGV4dG8gc2VsZWNjaW9uYWRvLlxuICAvLyAgLSBob21lcyBkZSBwcm95ZWN0by9jbGllbnRlL3RhcmVhIChzZWNjacOzbik6IGZpbHRyYWRhcyBwb3IgZWwgYGVudGl0eV90eXBlYCBkZWwgY29udGV4dG8gc2V0ZWFkby5cbiAgLy8gIC0gcGxhbm5lcjogRlVBcyBjb24gc2VjdGlvbj1wbGFubmVyLCBzaW4gZW50aXR5X3R5cGUgbmkgRkFRcy5cbiAgY29uc3QgcmVhbExpc3RzQWdlbnRJZCA9ICgoKSA9PiB7XG4gICAgaWYgKCFpc01BSUEgfHwgaXNNYWlha2VyKSByZXR1cm4gdW5kZWZpbmVkXG4gICAgLy8gUGFzbyAxIChjb250ZXh0b3MgcmVjaWVudGVzLCBzaW4gY29udGV4dG8pOiBubyBzZSBwaWRlbiBGQVFzL0ZVQXMuXG4gICAgaWYgKGlzUmVjZW50Q29udGV4dHNTdGVwKSByZXR1cm4gdW5kZWZpbmVkXG4gICAgaWYgKGlzSGVhZGVySG9tZSkgcmV0dXJuIGlzQ29udGV4dEhvbWVTdGVwID8gYWdlbnQ/LmlkIDogdW5kZWZpbmVkXG4gICAgcmV0dXJuIGFnZW50Py5pZFxuICB9KSgpXG4gIGNvbnN0IHJlYWxMaXN0c0VudGl0eVR5cGUgPSAoKCkgPT4ge1xuICAgIGlmIChpc1BsYW5uZXJIb21lKSByZXR1cm4gJ3BsYW5uZXInXG4gICAgaWYgKCFpc0hlYWRlckhvbWUpIHJldHVybiBwaW5uZWRFbnRpdHlUeXBlXG4gICAgcmV0dXJuIGlzQ29udGV4dEhvbWVTdGVwID8gKGFjdGl2ZUNvbnRleHQ/LnR5cGUgPz8gcGlubmVkRW50aXR5VHlwZSkgOiB1bmRlZmluZWRcbiAgfSkoKVxuICBjb25zdCB7IGFjdGlvbnM6IGFnZW50RnVhcywgbG9hZGluZzogZnVhc0xvYWRpbmcgfSA9IHVzZUZyZXF1ZW50bHlVc2VkQWN0aW9ucyhcbiAgICByZWFsTGlzdHNBZ2VudElkLFxuICAgIGZ1YXNTZWN0aW9uLFxuICAgIHJlYWxMaXN0c0VudGl0eVR5cGVcbiAgKVxuICBjb25zdCB7IGFjdGlvbnM6IGNvbGxhYm9yYXRvclBsYW5uZXJGdWFzLCBsb2FkaW5nOiBjb2xsYWJvcmF0b3JQbGFubmVyRnVhc0xvYWRpbmcgfSA9IHVzZUZyZXF1ZW50bHlVc2VkQWN0aW9ucyhcbiAgICBpc0hlYWRlckhvdXJzQWdlbnRIb21lICYmICFpc0hlYWRlck1hbmFnZXJIb3Vyc0hvbWUgPyBhZ2VudD8uaWQgOiB1bmRlZmluZWQsXG4gICAgJ3BsYW5uZXInXG4gIClcbiAgY29uc3QgeyBhY3Rpb25zOiBtYW5hZ2VySG9tZUZ1YXMsIGxvYWRpbmc6IG1hbmFnZXJIb21lRnVhc0xvYWRpbmcgfSA9IHVzZUZyZXF1ZW50bHlVc2VkQWN0aW9ucyhcbiAgICBpc0hlYWRlck1hbmFnZXJIb3Vyc0hvbWUgPyBhZ2VudD8uaWQgOiB1bmRlZmluZWQsXG4gICAgJ2hvbWVfd2l0aF9ob3VycydcbiAgKVxuICBjb25zdCBoZWFkZXJIb3Vyc0Z1YXMgPSB1c2VNZW1vKCgpID0+IHtcbiAgICBpZiAoaXNIZWFkZXJNYW5hZ2VySG91cnNIb21lKSByZXR1cm4gc29ydE1hbmFnZXJIb3Vyc0hvbWVGdWFzKG1hbmFnZXJIb21lRnVhcylcbiAgICByZXR1cm4gY29sbGFib3JhdG9yUGxhbm5lckZ1YXNcbiAgfSwgW2lzSGVhZGVyTWFuYWdlckhvdXJzSG9tZSwgbWFuYWdlckhvbWVGdWFzLCBjb2xsYWJvcmF0b3JQbGFubmVyRnVhc10pXG4gIGNvbnN0IGhlYWRlckhvdXJzRnVhc0xvYWRpbmcgPSBpc0hlYWRlck1hbmFnZXJIb3Vyc0hvbWUgPyBtYW5hZ2VySG9tZUZ1YXNMb2FkaW5nIDogY29sbGFib3JhdG9yUGxhbm5lckZ1YXNMb2FkaW5nXG4gIGNvbnN0IGZhcXNMaXN0QWdlbnRJZCA9IGlzQ2xpZW50Q29udGV4dEZvckZhcXMgPyByZWFsTGlzdHNBZ2VudElkIDogdW5kZWZpbmVkXG4gIGNvbnN0IGZhcXNMaXN0RW50aXR5VHlwZSA9IGlzQ2xpZW50Q29udGV4dEZvckZhcXMgPyByZWFsTGlzdHNFbnRpdHlUeXBlIDogdW5kZWZpbmVkXG4gIGNvbnN0IHtcbiAgICBmYXFzOiBhZ2VudEZhcXMsXG4gICAgbG9hZGluZzogZmFxc0xvYWRpbmcsXG4gICAgaGFuZGxlR2V0RnJlcXVlbnRseUFza2VkUXVlc3Rpb25zLFxuICB9ID0gdXNlRnJlcXVlbnRseUFza2VkUXVlc3Rpb25zKGZhcXNMaXN0QWdlbnRJZCwgbGFuZywgZmFxc0xpc3RFbnRpdHlUeXBlKVxuICBjb25zdCBmYXFzRmV0Y2hSZWYgPSB1c2VSZWY8eyBhZ2VudElkOiBzdHJpbmc7IGxhbmc6IHN0cmluZzsgZW50aXR5VHlwZT86IHN0cmluZyB9IHwgbnVsbD4obnVsbClcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAvLyBGQVFzIHNvbG8gcGFyYSBjb250ZXh0byBjbGllbnRlOyBlbCByZXN0byBtdWVzdHJhIHNvbG8gRlVBcy5cbiAgICBpZiAoIXJlYWxMaXN0c0FnZW50SWQgfHwgIWlzQ2xpZW50Q29udGV4dEZvckZhcXMpIHJldHVyblxuICAgIGNvbnN0IGN1cnJlbnRLZXkgPSBgJHtyZWFsTGlzdHNBZ2VudElkfS0ke2xhbmd9LSR7cmVhbExpc3RzRW50aXR5VHlwZSA/PyAnYWxsJ31gXG4gICAgY29uc3QgbGFzdEtleSA9IGZhcXNGZXRjaFJlZi5jdXJyZW50XG4gICAgICA/IGAke2ZhcXNGZXRjaFJlZi5jdXJyZW50LmFnZW50SWR9LSR7ZmFxc0ZldGNoUmVmLmN1cnJlbnQubGFuZ30tJHtmYXFzRmV0Y2hSZWYuY3VycmVudC5lbnRpdHlUeXBlID8/ICdhbGwnfWBcbiAgICAgIDogbnVsbFxuICAgIGlmIChjdXJyZW50S2V5ICE9PSBsYXN0S2V5KSB7XG4gICAgICBmYXFzRmV0Y2hSZWYuY3VycmVudCA9IHsgYWdlbnRJZDogcmVhbExpc3RzQWdlbnRJZCwgbGFuZywgZW50aXR5VHlwZTogcmVhbExpc3RzRW50aXR5VHlwZSB9XG4gICAgICBoYW5kbGVHZXRGcmVxdWVudGx5QXNrZWRRdWVzdGlvbnMoeyBhZ2VudElkOiByZWFsTGlzdHNBZ2VudElkLCBsYW5nLCBlbnRpdHlUeXBlOiByZWFsTGlzdHNFbnRpdHlUeXBlIH0pXG4gICAgfVxuICB9LCBbcmVhbExpc3RzQWdlbnRJZCwgcmVhbExpc3RzRW50aXR5VHlwZSwgaXNDbGllbnRDb250ZXh0Rm9yRmFxcywgbGFuZywgaGFuZGxlR2V0RnJlcXVlbnRseUFza2VkUXVlc3Rpb25zXSlcblxuICBjb25zdCBmYXFzID0gYWdlbnRGYXFzXG4gIGNvbnN0IGZ1YXMgPSBhZ2VudEZ1YXNcbiAgY29uc3QgZmFxc0FyZUxvYWRpbmcgPSBmYXFzTG9hZGluZ1xuICBjb25zdCBmdWFzQXJlTG9hZGluZyA9IGZ1YXNMb2FkaW5nXG5cbiAgY29uc3Qgc2hvd1JlY2VudENvbnRleHRzQmxvY2sgPSBpc1JlY2VudENvbnRleHRzU3RlcCAmJiAocmVjZW50Q29udGV4dHNMb2FkaW5nIHx8IHJlY2VudENvbnRleHRzLmxlbmd0aCA+IDApXG4gIGNvbnN0IHNob3VsZFNob3dGYXFzID1cbiAgICBpc01BSUEgJiZcbiAgICBpc0NsaWVudENvbnRleHRGb3JGYXFzICYmXG4gICAgIWlzUmVjZW50Q29udGV4dHNTdGVwICYmXG4gICAgKGlzQ29udGV4dEhvbWVTdGVwIHx8ICghaXNIZWFkZXJIb21lICYmIGZhcXNBY2Nlc3MpKSAmJlxuICAgICFpc01haWFrZXIgJiZcbiAgICAoZmFxcy5sZW5ndGggPiAwIHx8IGZhcXNBcmVMb2FkaW5nKVxuICBjb25zdCBzaG91bGRTaG93RnVhcyA9XG4gICAgIWlzUmVjZW50Q29udGV4dHNTdGVwICYmICFpc01haWFrZXIgJiYgKGlzQ29udGV4dEhvbWVTdGVwIHx8ICFpc0hlYWRlckhvbWUpICYmIChmdWFzLmxlbmd0aCA+IDAgfHwgZnVhc0FyZUxvYWRpbmcpXG4gIGNvbnN0IHNob3VsZFNob3dQbGFubmVyRnVhc0xvYWRpbmcgPSBpc0hlYWRlckhvdXJzQWdlbnRIb21lICYmIGhlYWRlckhvdXJzRnVhc0xvYWRpbmcgJiYgaGVhZGVySG91cnNGdWFzLmxlbmd0aCA9PT0gMFxuICBjb25zdCBzaG91bGRTaG93UGxhbm5lckZ1YXNDb250ZW50ID0gaXNIZWFkZXJIb3Vyc0FnZW50SG9tZSAmJiBoZWFkZXJIb3Vyc0Z1YXMubGVuZ3RoID4gMFxuICBjb25zdCBzaG91bGRTaG93UGxhbm5lckZ1YXMgPSBzaG91bGRTaG93UGxhbm5lckZ1YXNMb2FkaW5nIHx8IHNob3VsZFNob3dQbGFubmVyRnVhc0NvbnRlbnRcblxuICBjb25zdCBzaG93UHJvamVjdFN1bW1hcnlDYXJkID0gc2hvd1Byb2plY3RTdW1tYXJ5ICYmIGFnZW50Py5lbnRpdHkgPT09ICdwcm9qZWN0J1xuICBjb25zdCBzaG93RkFRcyA9ICEhKFxuICAgIHNob3dSZWNlbnRDb250ZXh0c0Jsb2NrIHx8XG4gICAgc2hvdWxkU2hvd0ZhcXMgfHxcbiAgICBzaG91bGRTaG93RnVhcyB8fFxuICAgIHNob3VsZFNob3dQbGFubmVyRnVhcyB8fFxuICAgIHNob3dQcm9qZWN0U3VtbWFyeUNhcmQgfHxcbiAgICBpc01haWFrZXJcbiAgKVxuICBjb25zdCBob21lU2Nyb2xsYWJsZUxheW91dCA9IHNob3dGQVFzXG4gIGNvbnN0IHNob3dEeW5hbWljU2VjdGlvbiA9XG4gICAgc2hvd1JlY2VudENvbnRleHRzQmxvY2sgfHwgc2hvdWxkU2hvd0ZhcXMgfHwgc2hvdWxkU2hvd0Z1YXMgfHwgc2hvdWxkU2hvd1BsYW5uZXJGdWFzIHx8IGlzTWFpYWtlclxuXG4gIC8vIEzDs2dpY2EgZGVsIHNjcm9sbCBjb24gZ3JhZGllbnRlc1xuICBjb25zdCBjb250ZW50Q29udGFpbmVyUmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKVxuICBjb25zdCBbc2hvd1RvcEdyYWRpZW50LCBzZXRTaG93VG9wR3JhZGllbnRdID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IFtzaG93Qm90dG9tR3JhZGllbnQsIHNldFNob3dCb3R0b21HcmFkaWVudF0gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgW2lzU2Nyb2xsaW5nLCBzZXRJc1Njcm9sbGluZ10gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3Qgc2Nyb2xsVGltZW91dFJlZiA9IHVzZVJlZjxSZXR1cm5UeXBlPHR5cGVvZiBzZXRUaW1lb3V0PiB8IG51bGw+KG51bGwpXG5cbiAgLy8gU2FsdWRvIGZpam8gcG9yIHRpcG8gZGUgY29udGV4dG8gKGkxOG4pLiBDdXN0b20gYWdlbnRzIHNpZ3VlbiB1c2FuZG8gYWdlbnQuaW50cm9kdWN0aW9uLlxuICAvLyBQbGFubmVyIHVzYSB0w610dWxvICsgYmFqYWRhIHByb3Bpb3MgKGBwbGFubmVySG9tZWApLCBubyBlc3RlIGdyZWV0aW5nLlxuICBjb25zdCBncmVldGluZyA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGlmIChpc01haWFrZXIgfHwgaXNQbGFubmVySG9tZSB8fCBpc1JlY2VudENvbnRleHRzU3RlcCkgcmV0dXJuICcnXG5cbiAgICBpZiAoaXNNQUlBICYmIHBpbm5lZEVudGl0eVR5cGUpIHtcbiAgICAgIHJldHVybiB0KGBob21lTWVudS5jb250ZXh0SG9tZS5jb250ZXh0R3JlZXRpbmcuJHtwaW5uZWRFbnRpdHlUeXBlfWApXG4gICAgfVxuXG4gICAgY29uc3QgaW50cm8gPSBhZ2VudD8uaW50cm9kdWN0aW9uXG4gICAgaWYgKCFpbnRybykgcmV0dXJuICcnXG4gICAgaWYgKEFycmF5LmlzQXJyYXkoaW50cm8pICYmIGludHJvLmxlbmd0aCA+IDApIHtcbiAgICAgIHJldHVybiBpbnRyb1tNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiBpbnRyby5sZW5ndGgpXVxuICAgIH1cbiAgICByZXR1cm4gdHlwZW9mIGludHJvID09PSAnc3RyaW5nJyA/IGludHJvIDogJydcbiAgfSwgW2FnZW50Py5pZCwgYWdlbnQ/LmludHJvZHVjdGlvbiwgaXNNYWlha2VyLCBpc1BsYW5uZXJIb21lLCBpc01BSUEsIHBpbm5lZEVudGl0eVR5cGUsIGlzUmVjZW50Q29udGV4dHNTdGVwLCB0XSlcblxuICBjb25zdCBoYW5kbGVTZWxlY3RSZWNlbnRDb250ZXh0ID0gdXNlQ2FsbGJhY2soXG4gICAgKGNvbnRleHQ6IFJlY2VudENvbnRleHRJdGVtLCBvcmRlcjogbnVtYmVyKSA9PiB7XG4gICAgICBldmVudChFVkVOVFMuYWlDaGF0Q29udGV4dFNlbGVjdGVkLCB7IG9yZGVyLCB0eXBlOiBjb250ZXh0LnR5cGUgfSlcblxuICAgICAgY29uc3QgY29udGV4dElkID0gcGFyc2VOdW1lcmljSWQoY29udGV4dC5pZClcbiAgICAgIGNvbnN0IGNsaWVudElkID0gcGFyc2VOdW1lcmljSWQoY29udGV4dC5wYXJlbnRzPy5jbGllbnRfaWQpXG4gICAgICBjb25zdCBwcm9qZWN0SWQgPSBwYXJzZU51bWVyaWNJZChjb250ZXh0LnBhcmVudHM/LnByb2plY3RfaWQpXG4gICAgICBjb25zdCBjbGllbnROYW1lID0gY29udGV4dC5wYXJlbnRzPy5jbGllbnRfbmFtZSB8fCAnJ1xuICAgICAgY29uc3QgcHJvamVjdE5hbWUgPSBjb250ZXh0LnBhcmVudHM/LnByb2plY3RfbmFtZSB8fCAnJ1xuXG4gICAgICBzZXRTZWxlY3RlZENvbnRleHQoY29udGV4dClcbiAgICAgIHNldFRhc2sobnVsbClcbiAgICAgIHNldFByb2plY3QobnVsbClcbiAgICAgIHNldENsaWVudD8uKG51bGwpXG4gICAgICBzZXRDaGlwc1Byb2plY3QobnVsbClcblxuICAgICAgaWYgKGNvbnRleHQudHlwZSA9PT0gJ2NsaWVudCcpIHtcbiAgICAgICAgaWYgKGNvbnRleHRJZCA9PSBudWxsKSByZXR1cm5cbiAgICAgICAgc2V0Q2xpZW50Py4oeyBpZDogY29udGV4dElkLCBuYW1lOiBjb250ZXh0Lm5hbWUgfSlcbiAgICAgIH0gZWxzZSBpZiAoY29udGV4dC50eXBlID09PSAncHJvamVjdCcpIHtcbiAgICAgICAgaWYgKGNvbnRleHRJZCA9PSBudWxsKSByZXR1cm5cbiAgICAgICAgc2V0UHJvamVjdCh7XG4gICAgICAgICAgaWQ6IGNvbnRleHRJZCxcbiAgICAgICAgICBuYW1lOiBjb250ZXh0Lm5hbWUsXG4gICAgICAgICAgLi4uKGNsaWVudElkICE9IG51bGwgPyB7IGNsaWVudElkIH0gOiB7fSksXG4gICAgICAgICAgLi4uKGNsaWVudElkICE9IG51bGwgPyB7IGNsaWVudDogeyBpZDogY2xpZW50SWQsIG5hbWU6IGNsaWVudE5hbWUgfSB9IDoge30pLFxuICAgICAgICB9KVxuICAgICAgICBzZXRDaGlwc1Byb2plY3Qoe1xuICAgICAgICAgIHByb2plY3RJZDogU3RyaW5nKGNvbnRleHRJZCksXG4gICAgICAgICAgcHJvamVjdE5hbWU6IGNvbnRleHQubmFtZSxcbiAgICAgICAgICBjbGllbnROYW1lLFxuICAgICAgICB9KVxuICAgICAgfSBlbHNlIGlmIChjb250ZXh0LnR5cGUgPT09ICd0YXNrJykge1xuICAgICAgICBzZXRUYXNrKHtcbiAgICAgICAgICBpZDogY29udGV4dC5pZCxcbiAgICAgICAgICBuYW1lOiBjb250ZXh0Lm5hbWUsXG4gICAgICAgICAgLi4uKHByb2plY3RJZCAhPSBudWxsID8geyBwcm9qZWN0SWQgfSA6IHt9KSxcbiAgICAgICAgICAuLi4oY2xpZW50SWQgIT0gbnVsbCA/IHsgY2xpZW50SWQgfSA6IHt9KSxcbiAgICAgICAgfSlcbiAgICAgICAgaWYgKGNsaWVudElkICE9IG51bGwpIHtcbiAgICAgICAgICBzZXRDbGllbnQ/Lih7IGlkOiBjbGllbnRJZCwgbmFtZTogY2xpZW50TmFtZSB9KVxuICAgICAgICB9XG4gICAgICAgIGlmIChwcm9qZWN0SWQgIT0gbnVsbCkge1xuICAgICAgICAgIHNldFByb2plY3Qoe1xuICAgICAgICAgICAgaWQ6IHByb2plY3RJZCxcbiAgICAgICAgICAgIG5hbWU6IHByb2plY3ROYW1lIHx8IGAke3QoJ2hvbWVNZW51LnJlY2VudENvbnRleHRzLnR5cGVzLnByb2plY3QnKX0gJHtwcm9qZWN0SWR9YCxcbiAgICAgICAgICAgIC4uLihjbGllbnRJZCAhPSBudWxsID8geyBjbGllbnRJZCB9IDoge30pLFxuICAgICAgICAgICAgLi4uKGNsaWVudElkICE9IG51bGwgPyB7IGNsaWVudDogeyBpZDogY2xpZW50SWQsIG5hbWU6IGNsaWVudE5hbWUgfSB9IDoge30pLFxuICAgICAgICAgIH0pXG4gICAgICAgICAgc2V0Q2hpcHNQcm9qZWN0KHtcbiAgICAgICAgICAgIHByb2plY3RJZDogU3RyaW5nKHByb2plY3RJZCksXG4gICAgICAgICAgICBwcm9qZWN0TmFtZTogcHJvamVjdE5hbWUgfHwgYCR7dCgnaG9tZU1lbnUucmVjZW50Q29udGV4dHMudHlwZXMucHJvamVjdCcpfSAke3Byb2plY3RJZH1gLFxuICAgICAgICAgICAgY2xpZW50TmFtZSxcbiAgICAgICAgICB9KVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICAgIGRvY3VtZW50LmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCdtYWlhLWlucHV0LXJlZm9jdXMnKSlcbiAgICAgIH0pXG4gICAgfSxcbiAgICBbZXZlbnQsIHNldENoaXBzUHJvamVjdCwgc2V0Q2xpZW50LCBzZXRQcm9qZWN0LCBzZXRUYXNrLCB0XVxuICApXG5cbiAgY29uc3QgaGFuZGxlSG9tZVN0YXJ0Q2hhdCA9IHVzZUNhbGxiYWNrKFxuICAgIChcbiAgICAgIG1lc3NhZ2U6IHN0cmluZyxcbiAgICAgIGF0dGFjaG1lbnRzPzogQXR0YWNobWVudEZpbGVbXSB8IG51bGwsXG4gICAgICBmYXFJZD86IHN0cmluZyxcbiAgICAgIGFnZW50U3VnZ2VzdGlvbklkPzogc3RyaW5nLFxuICAgICAgbWVudGlvbnM/OiBudWxsLFxuICAgICAgZnVhSWQ/OiBzdHJpbmdcbiAgICApID0+IHtcbiAgICAgIGlmIChpc0hlYWRlck1hbmFnZXJIb3Vyc0hvbWUgJiYgZnVhSWQpIHtcbiAgICAgICAgZmx1c2hTeW5jKCgpID0+IHtcbiAgICAgICAgICBzZXRTZWxlY3RlZENvbnRleHQobnVsbClcbiAgICAgICAgICBzZXRUYXNrKG51bGwpXG4gICAgICAgICAgc2V0UHJvamVjdChudWxsKVxuICAgICAgICAgIHNldENsaWVudD8uKG51bGwpXG4gICAgICAgICAgc2V0Q2hpcHNQcm9qZWN0KG51bGwpXG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgICBvblN0YXJ0Q2hhdChtZXNzYWdlLCBhdHRhY2htZW50cywgZmFxSWQsIGFnZW50U3VnZ2VzdGlvbklkLCBtZW50aW9ucywgZnVhSWQpXG4gICAgfSxcbiAgICBbaXNIZWFkZXJNYW5hZ2VySG91cnNIb21lLCBvblN0YXJ0Q2hhdCwgc2V0Q2hpcHNQcm9qZWN0LCBzZXRDbGllbnQsIHNldFByb2plY3QsIHNldFRhc2tdXG4gIClcblxuICBjb25zdCByZW5kZXJSZWNlbnRDb250ZXh0cyA9ICgpID0+IHtcbiAgICBpZiAoIWlzUmVjZW50Q29udGV4dHNTdGVwKSByZXR1cm4gbnVsbFxuXG4gICAgcmV0dXJuIChcbiAgICAgIDxTQ0NBSUhvbWVSZWNlbnRDb250ZXh0c1xuICAgICAgICAkZml4ZWRDb250ZW50V2lkdGg9e2lzSGVhZGVyVGFza0NvbnRleHRIb21lID8gTUFJQV9IRUFERVJfQ09MTEFCT1JBVE9SX0hPTUVfQ09OVEVOVF9XSURUSF9QWCA6IHVuZGVmaW5lZH1cbiAgICAgID5cbiAgICAgICAge2lzSGVhZGVySG91cnNBZ2VudEhvbWUgPyAoXG4gICAgICAgICAgPFNDQ0FJSG9tZVJlY2VudENvbnRleHRzU2VjdGlvbkhlYWRlcj5cbiAgICAgICAgICAgIDxTQ0NBSUhvbWVSZWNlbnRDb250ZXh0c1NlY3Rpb25UaXRsZT5cbiAgICAgICAgICAgICAge3QoXG4gICAgICAgICAgICAgICAgaXNIZWFkZXJNYW5hZ2VySG91cnNIb21lXG4gICAgICAgICAgICAgICAgICA/ICdob21lTWVudS5jb250ZXh0SG9tZS5yZWNlbnRDb250ZXh0c1NlY3Rpb25NYW5hZ2VyLnRpdGxlJ1xuICAgICAgICAgICAgICAgICAgOiAnaG9tZU1lbnUuY29udGV4dEhvbWUucmVjZW50VGFza3NTZWN0aW9uLnRpdGxlJ1xuICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgPC9TQ0NBSUhvbWVSZWNlbnRDb250ZXh0c1NlY3Rpb25UaXRsZT5cbiAgICAgICAgICAgIDxTQ0NBSUhvbWVSZWNlbnRDb250ZXh0c1NlY3Rpb25TdWJ0aXRsZT5cbiAgICAgICAgICAgICAge3QoXG4gICAgICAgICAgICAgICAgaXNIZWFkZXJNYW5hZ2VySG91cnNIb21lXG4gICAgICAgICAgICAgICAgICA/ICdob21lTWVudS5jb250ZXh0SG9tZS5yZWNlbnRDb250ZXh0c1NlY3Rpb25NYW5hZ2VyLnN1YnRpdGxlJ1xuICAgICAgICAgICAgICAgICAgOiAnaG9tZU1lbnUuY29udGV4dEhvbWUucmVjZW50VGFza3NTZWN0aW9uLnN1YnRpdGxlJ1xuICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgPC9TQ0NBSUhvbWVSZWNlbnRDb250ZXh0c1NlY3Rpb25TdWJ0aXRsZT5cbiAgICAgICAgICA8L1NDQ0FJSG9tZVJlY2VudENvbnRleHRzU2VjdGlvbkhlYWRlcj5cbiAgICAgICAgKSA6IG51bGx9XG4gICAgICAgIDxTQ0NBSUhvbWVSZWNlbnRDb250ZXh0c0xpc3QgJGZsdXNoUGlsbHM9e2lzSGVhZGVyVGFza0NvbnRleHRIb21lfT5cbiAgICAgICAgICB7cmVjZW50Q29udGV4dHNMb2FkaW5nICYmXG4gICAgICAgICAgICBSRUNFTlRfQ09OVEVYVF9TS0VMRVRPTl9LRVlTLm1hcChrZXkgPT4gPFNDQ0FJSG9tZVJlY2VudENvbnRleHRQaWxsU2tlbGV0b24ga2V5PXtrZXl9IC8+KX1cbiAgICAgICAgICB7IXJlY2VudENvbnRleHRzTG9hZGluZyAmJlxuICAgICAgICAgICAgcmVjZW50Q29udGV4dHMubWFwKChjb250ZXh0LCBpbmRleCkgPT4gKFxuICAgICAgICAgICAgICA8UmVjZW50Q29udGV4dFBpbGxcbiAgICAgICAgICAgICAgICBrZXk9e2Ake2NvbnRleHQudHlwZX0tJHtjb250ZXh0LmlkfWB9XG4gICAgICAgICAgICAgICAgY29udGV4dD17Y29udGV4dH1cbiAgICAgICAgICAgICAgICBsYWJlbD17Y29udGV4dC5uYW1lLnRyaW0oKX1cbiAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBoYW5kbGVTZWxlY3RSZWNlbnRDb250ZXh0KGNvbnRleHQsIGluZGV4ICsgMSl9XG4gICAgICAgICAgICAgICAgZnVsbFdpZHRoPXtpc0hlYWRlclRhc2tDb250ZXh0SG9tZX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICkpfVxuICAgICAgICA8L1NDQ0FJSG9tZVJlY2VudENvbnRleHRzTGlzdD5cbiAgICAgIDwvU0NDQUlIb21lUmVjZW50Q29udGV4dHM+XG4gICAgKVxuICB9XG5cbiAgY29uc3QgY2hlY2tTY3JvbGwgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgY29uc3QgY29udGFpbmVyID0gY29udGVudENvbnRhaW5lclJlZi5jdXJyZW50XG4gICAgaWYgKCFjb250YWluZXIgfHwgIWhvbWVTY3JvbGxhYmxlTGF5b3V0KSByZXR1cm5cblxuICAgIGNvbnN0IHsgc2Nyb2xsVG9wLCBzY3JvbGxIZWlnaHQsIGNsaWVudEhlaWdodCB9ID0gY29udGFpbmVyXG4gICAgY29uc3QgaXNTY3JvbGxhYmxlID0gc2Nyb2xsSGVpZ2h0ID4gY2xpZW50SGVpZ2h0XG4gICAgY29uc3QgaXNBdFRvcCA9IHNjcm9sbFRvcCA9PT0gMFxuICAgIGNvbnN0IGlzQXRCb3R0b20gPSBzY3JvbGxUb3AgKyBjbGllbnRIZWlnaHQgPj0gc2Nyb2xsSGVpZ2h0IC0gMVxuXG4gICAgc2V0U2hvd1RvcEdyYWRpZW50KGlzU2Nyb2xsYWJsZSAmJiAhaXNBdFRvcClcbiAgICBzZXRTaG93Qm90dG9tR3JhZGllbnQoaXNTY3JvbGxhYmxlICYmICFpc0F0Qm90dG9tKVxuICB9LCBbaG9tZVNjcm9sbGFibGVMYXlvdXRdKVxuXG4gIGNvbnN0IGhhbmRsZVNjcm9sbCA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBjaGVja1Njcm9sbCgpXG4gICAgc2V0SXNTY3JvbGxpbmcodHJ1ZSlcblxuICAgIGlmIChzY3JvbGxUaW1lb3V0UmVmLmN1cnJlbnQpIHtcbiAgICAgIGNsZWFyVGltZW91dChzY3JvbGxUaW1lb3V0UmVmLmN1cnJlbnQpXG4gICAgfVxuXG4gICAgc2Nyb2xsVGltZW91dFJlZi5jdXJyZW50ID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBzZXRJc1Njcm9sbGluZyhmYWxzZSlcbiAgICB9LCAxNTApXG4gIH0sIFtjaGVja1Njcm9sbF0pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIWhvbWVTY3JvbGxhYmxlTGF5b3V0KSB7XG4gICAgICBzZXRTaG93VG9wR3JhZGllbnQoZmFsc2UpXG4gICAgICBzZXRTaG93Qm90dG9tR3JhZGllbnQoZmFsc2UpXG4gICAgICByZXR1cm4gdW5kZWZpbmVkXG4gICAgfVxuXG4gICAgY29uc3QgY29udGFpbmVyID0gY29udGVudENvbnRhaW5lclJlZi5jdXJyZW50XG4gICAgaWYgKCFjb250YWluZXIpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWRcbiAgICB9XG5cbiAgICBjb25zdCBzY2hlZHVsZUNoZWNrU2Nyb2xsID0gKCkgPT4ge1xuICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcbiAgICAgICAgY2hlY2tTY3JvbGwoKVxuICAgICAgfSlcbiAgICB9XG5cbiAgICBzY2hlZHVsZUNoZWNrU2Nyb2xsKClcbiAgICBjb250YWluZXIuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgaGFuZGxlU2Nyb2xsKVxuXG4gICAgY29uc3QgcmVzaXplT2JzZXJ2ZXIgPSBuZXcgUmVzaXplT2JzZXJ2ZXIoc2NoZWR1bGVDaGVja1Njcm9sbClcbiAgICByZXNpemVPYnNlcnZlci5vYnNlcnZlKGNvbnRhaW5lcilcbiAgICBjb25zdCBzY3JvbGxDb250ZW50ID0gY29udGFpbmVyLmZpcnN0RWxlbWVudENoaWxkXG4gICAgaWYgKHNjcm9sbENvbnRlbnQgaW5zdGFuY2VvZiBFbGVtZW50KSB7XG4gICAgICByZXNpemVPYnNlcnZlci5vYnNlcnZlKHNjcm9sbENvbnRlbnQpXG4gICAgfVxuXG4gICAgY29uc3QgdGltZW91dElkID0gd2luZG93LnNldFRpbWVvdXQoc2NoZWR1bGVDaGVja1Njcm9sbCwgMTAwKVxuICAgIGNvbnN0IGxhdGVUaW1lb3V0SWQgPSB3aW5kb3cuc2V0VGltZW91dChzY2hlZHVsZUNoZWNrU2Nyb2xsLCA0MDApXG5cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgY29udGFpbmVyLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIGhhbmRsZVNjcm9sbClcbiAgICAgIHJlc2l6ZU9ic2VydmVyLmRpc2Nvbm5lY3QoKVxuICAgICAgY2xlYXJUaW1lb3V0KHRpbWVvdXRJZClcbiAgICAgIGNsZWFyVGltZW91dChsYXRlVGltZW91dElkKVxuICAgICAgaWYgKHNjcm9sbFRpbWVvdXRSZWYuY3VycmVudCkge1xuICAgICAgICBjbGVhclRpbWVvdXQoc2Nyb2xsVGltZW91dFJlZi5jdXJyZW50KVxuICAgICAgfVxuICAgIH1cbiAgfSwgW2hvbWVTY3JvbGxhYmxlTGF5b3V0LCBjaGVja1Njcm9sbCwgaGFuZGxlU2Nyb2xsXSlcblxuICB1c2VMYXlvdXRFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghaG9tZVNjcm9sbGFibGVMYXlvdXQpIHJldHVyblxuICAgIGNoZWNrU2Nyb2xsKClcbiAgfSwgW1xuICAgIGhvbWVTY3JvbGxhYmxlTGF5b3V0LFxuICAgIGNoZWNrU2Nyb2xsLFxuICAgIHJlY2VudENvbnRleHRzTG9hZGluZyxcbiAgICByZWNlbnRDb250ZXh0cy5sZW5ndGgsXG4gICAgaGVhZGVySG91cnNGdWFzTG9hZGluZyxcbiAgICBoZWFkZXJIb3Vyc0Z1YXMubGVuZ3RoLFxuICAgIGZ1YXNMb2FkaW5nLFxuICAgIGZ1YXMubGVuZ3RoLFxuICAgIGZhcXNBcmVMb2FkaW5nLFxuICAgIGZhcXMubGVuZ3RoLFxuICAgIHNob3VsZFNob3dQbGFubmVyRnVhcyxcbiAgICBpc01haWFrZXIsXG4gIF0pXG5cbiAgY29uc3QgcmVuZGVySGVhZGVyQ29udGVudCA9ICgpID0+IHtcbiAgICBpZiAoIWlzTUFJQSkge1xuICAgICAgcmV0dXJuIChcbiAgICAgICAgPFNDQ0FJSG9tZUFnZW50SW5mb0NvbnRhaW5lcj5cbiAgICAgICAgICA8U0NDQUlIb21lQWdlbnRJbmZvPlxuICAgICAgICAgICAge2FnZW50Py5lbW9qaX0ge2FnZW50Py5uYW1lfVxuICAgICAgICAgIDwvU0NDQUlIb21lQWdlbnRJbmZvPlxuICAgICAgICAgIHthZ2VudD8uY3JlYXRlZF9ieSAmJiAhaXNNQUlBICYmIChcbiAgICAgICAgICAgIDxTQ0NBSUhvbWVDcmVhdGVkQnlDb250YWluZXI+XG4gICAgICAgICAgICAgIDxUb29sdGlwXG4gICAgICAgICAgICAgICAgdGl0bGU9e1xuICAgICAgICAgICAgICAgICAgYWdlbnQ/LmNyZWF0ZWRfYnk/LmlzX2RlbGV0ZWQgPyB0KCdob21lTWVudS5jcmVhdGVkQnlUb29sdGlwRGVsZXRlZCcpIDogdCgnaG9tZU1lbnUuY3JlYXRlZEJ5VG9vbHRpcCcpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPFNDQ0FJSG9tZUNyZWF0ZWRCeVRleHQ+XG4gICAgICAgICAgICAgICAgICB7dCgnaG9tZU1lbnUuY3JlYXRlZEJ5Jyl9eycgJ31cbiAgICAgICAgICAgICAgICAgIDxTQ0NBSUhvbWVDcmVhdGVkQnlUZXh0TmFtZT57YWdlbnQ/LmNyZWF0ZWRfYnk/Lm5hbWV9PC9TQ0NBSUhvbWVDcmVhdGVkQnlUZXh0TmFtZT5cbiAgICAgICAgICAgICAgICA8L1NDQ0FJSG9tZUNyZWF0ZWRCeVRleHQ+XG4gICAgICAgICAgICAgIDwvVG9vbHRpcD5cbiAgICAgICAgICAgIDwvU0NDQUlIb21lQ3JlYXRlZEJ5Q29udGFpbmVyPlxuICAgICAgICAgICl9XG4gICAgICAgIDwvU0NDQUlIb21lQWdlbnRJbmZvQ29udGFpbmVyPlxuICAgICAgKVxuICAgIH1cblxuICAgIGNvbnN0IGNvbnRlbnRBbGlnblN0YXJ0ID0gaXNQbGFubmVySG9tZSB8fCBpc0hlYWRlclRhc2tDb250ZXh0SG9tZSB8fCBpc0xlZnRBbGlnbmVkT3JjaGVzdHJhdG9ySG9tZVxuXG4gICAgY29uc3QgbWFpYUhlYWRlclN0YWNrTmVlZHNHYXAgPVxuICAgICAgKGlzUmVjZW50Q29udGV4dHNTdGVwICYmICFpc0hlYWRlclRhc2tDb250ZXh0SG9tZSAmJiAhaXNQbGFubmVySG9tZSkgfHxcbiAgICAgICghaXNSZWNlbnRDb250ZXh0c1N0ZXAgJiZcbiAgICAgICAgISFncmVldGluZyAmJlxuICAgICAgICAhaXNQbGFubmVySG9tZSAmJlxuICAgICAgICAhaXNIZWFkZXJUYXNrQ29udGV4dEhvbWUgJiZcbiAgICAgICAgIWlzTGVmdEFsaWduZWRPcmNoZXN0cmF0b3JIb21lKVxuXG4gICAgcmV0dXJuIChcbiAgICAgIDxTQ0NBSUhvbWVNYWlhSGVhZGVyU3RhY2sgJG5vR2FwPXshbWFpYUhlYWRlclN0YWNrTmVlZHNHYXB9ICRhbGlnbj17Y29udGVudEFsaWduU3RhcnQgPyAnc3RhcnQnIDogJ2NlbnRlcid9PlxuICAgICAgICB7IWlzUGxhbm5lckhvbWUgJiYgIWlzSGVhZGVyVGFza0NvbnRleHRIb21lICYmICFpc0xlZnRBbGlnbmVkT3JjaGVzdHJhdG9ySG9tZSAmJiAoXG4gICAgICAgICAgPFNDQ0FJSG9tZUljb25Db250YWluZXI+XG4gICAgICAgICAgICA8U0NDQUlIb21lTG9nb1dyYXBwZXI+XG4gICAgICAgICAgICAgIDxNQUlBSXNvbG9nbyAvPlxuICAgICAgICAgICAgPC9TQ0NBSUhvbWVMb2dvV3JhcHBlcj5cbiAgICAgICAgICA8L1NDQ0FJSG9tZUljb25Db250YWluZXI+XG4gICAgICAgICl9XG4gICAgICAgIHtpc1BsYW5uZXJIb21lICYmIChcbiAgICAgICAgICA8U0NDQUlIb21lVGl0bGVCbG9jayAkYWxpZ249XCJzdGFydFwiPlxuICAgICAgICAgICAgPFNDQ0FJSG9tZVRpdGxlICRzaXplPVwibWRcIiAkYWxpZ249XCJzdGFydFwiPlxuICAgICAgICAgICAgICB7dCgnaG9tZU1lbnUucGxhbm5lckhvbWUudGl0bGUnKX1cbiAgICAgICAgICAgIDwvU0NDQUlIb21lVGl0bGU+XG4gICAgICAgICAgICA8U0NDQUlIb21lU3VidGl0bGUgJGFsaWduPVwic3RhcnRcIj57dCgnaG9tZU1lbnUucGxhbm5lckhvbWUuc3VidGl0bGUnKX08L1NDQ0FJSG9tZVN1YnRpdGxlPlxuICAgICAgICAgIDwvU0NDQUlIb21lVGl0bGVCbG9jaz5cbiAgICAgICAgKX1cbiAgICAgICAgeyFpc1BsYW5uZXJIb21lICYmIGlzUmVjZW50Q29udGV4dHNTdGVwICYmIGlzSGVhZGVyVGFza0NvbnRleHRIb21lICYmIChcbiAgICAgICAgICA8U0NDQUlIb21lVGl0bGVCbG9jayAkYWxpZ249XCJzdGFydFwiICRmdWxsV2lkdGg+XG4gICAgICAgICAgICA8U0NDQUlIb21lVGl0bGUgJHNpemU9XCJjb250ZXh0XCIgJGFsaWduPVwic3RhcnRcIiAkZnVsbFdpZHRoPlxuICAgICAgICAgICAgICB7dCgnaG9tZU1lbnUuY29udGV4dEhvbWUuZ3JlZXRpbmcnLCB7IG5hbWU6IHVzZXIuZmlyc3ROYW1lIH0pfVxuICAgICAgICAgICAgPC9TQ0NBSUhvbWVUaXRsZT5cbiAgICAgICAgICAgIDxTQ0NBSUhvbWVTdWJ0aXRsZSAkYWxpZ249XCJzdGFydFwiICRjb2xsYWJvcmF0b3JIb21lPlxuICAgICAgICAgICAgICB7dChoZWFkZXJUYXNrQ29udGV4dFN1YnRpdGxlS2V5KX1cbiAgICAgICAgICAgIDwvU0NDQUlIb21lU3VidGl0bGU+XG4gICAgICAgICAgPC9TQ0NBSUhvbWVUaXRsZUJsb2NrPlxuICAgICAgICApfVxuICAgICAgICB7IWlzUGxhbm5lckhvbWUgJiYgaXNSZWNlbnRDb250ZXh0c1N0ZXAgJiYgIWlzSGVhZGVyVGFza0NvbnRleHRIb21lICYmIChcbiAgICAgICAgICA8PlxuICAgICAgICAgICAgPFNDQ0FJSG9tZVRpdGxlICRhbGlnbj17aXNMZWZ0QWxpZ25lZE9yY2hlc3RyYXRvckhvbWUgPyAnc3RhcnQnIDogdW5kZWZpbmVkfT5cbiAgICAgICAgICAgICAge3QoJ2hvbWVNZW51LmNvbnRleHRIb21lLmdyZWV0aW5nJywgeyBuYW1lOiB1c2VyLmZpcnN0TmFtZSB9KX1cbiAgICAgICAgICAgIDwvU0NDQUlIb21lVGl0bGU+XG4gICAgICAgICAgICA8U0NDQUlIb21lU3VidGl0bGUgJGFsaWduPXtpc0xlZnRBbGlnbmVkT3JjaGVzdHJhdG9ySG9tZSA/ICdzdGFydCcgOiB1bmRlZmluZWR9PlxuICAgICAgICAgICAgICB7dChcbiAgICAgICAgICAgICAgICBpc0NvbGxhYm9yYXRvclJvbGUodXNlci5yb2xlX2lkKVxuICAgICAgICAgICAgICAgICAgPyAnaG9tZU1lbnUuY29udGV4dEhvbWUuc3VidGl0bGVDb2xsYWJvcmF0b3InXG4gICAgICAgICAgICAgICAgICA6ICdob21lTWVudS5jb250ZXh0SG9tZS5zdWJ0aXRsZSdcbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDwvU0NDQUlIb21lU3VidGl0bGU+XG4gICAgICAgICAgPC8+XG4gICAgICAgICl9XG4gICAgICAgIHshaXNQbGFubmVySG9tZSAmJiAhaXNSZWNlbnRDb250ZXh0c1N0ZXAgJiYgZ3JlZXRpbmcgJiYgKFxuICAgICAgICAgIDxTQ0NBSUhvbWVHcmVldGluZ1xuICAgICAgICAgICAgJGFsaWduPXtpc0xlZnRBbGlnbmVkT3JjaGVzdHJhdG9ySG9tZSA/ICdzdGFydCcgOiB1bmRlZmluZWR9XG4gICAgICAgICAgICAkc2l6ZT17aXNMZWZ0QWxpZ25lZE9yY2hlc3RyYXRvckhvbWUgPyAnbWQnIDogJ2xnJ31cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7Z3JlZXRpbmd9XG4gICAgICAgICAgPC9TQ0NBSUhvbWVHcmVldGluZz5cbiAgICAgICAgKX1cbiAgICAgIDwvU0NDQUlIb21lTWFpYUhlYWRlclN0YWNrPlxuICAgIClcbiAgfVxuXG4gIGNvbnN0IGZpeGVkSG9tZUNvbnRlbnRXaWR0aCA9XG4gICAgaXNIZWFkZXJUYXNrQ29udGV4dEhvbWUgfHwgaXNMZWZ0QWxpZ25lZE9yY2hlc3RyYXRvckhvbWVcbiAgICAgID8gTUFJQV9IRUFERVJfQ09MTEFCT1JBVE9SX0hPTUVfQ09OVEVOVF9XSURUSF9QWFxuICAgICAgOiB1bmRlZmluZWRcbiAgY29uc3QgY29udGVudEFsaWduU3RhcnQgPSBpc1BsYW5uZXJIb21lIHx8IGlzSGVhZGVyVGFza0NvbnRleHRIb21lIHx8IGlzTGVmdEFsaWduZWRPcmNoZXN0cmF0b3JIb21lXG4gIGNvbnN0IHNob3dBZ2VudEludHJvZHVjdGlvbiA9IHNlY3Rpb24gIT09ICdwcm9qZWN0JyAmJiAhaXNNQUlBICYmICEhYWdlbnQ/LmludHJvZHVjdGlvblxuXG4gIHJldHVybiAoXG4gICAgPFNDQ0FJSG9tZUNvbnRhaW5lciBzaG93RkFRcz17c2hvd0ZBUXN9ICRhbGlnblN0YXJ0PXtpc0xlZnRBbGlnbmVkT3JjaGVzdHJhdG9ySG9tZX0+XG4gICAgICB7aG9tZVNjcm9sbGFibGVMYXlvdXQgJiYgPFNDQ0FJSG9tZUdyYWRpZW50VG9wICRzaG93PXtzaG93VG9wR3JhZGllbnR9IC8+fVxuICAgICAgPFNDQ0FJSG9tZUNvbnRlbnRcbiAgICAgICAgcmVmPXtjb250ZW50Q29udGFpbmVyUmVmfVxuICAgICAgICBzaG93RkFRcz17aG9tZVNjcm9sbGFibGVMYXlvdXR9XG4gICAgICAgICRpc0FnZW50Vmlldz17IWlzTUFJQX1cbiAgICAgICAgJGZsb2F0aW5nQ3VzdG9tQ2VudGVyPXtmbG9hdGluZ0N1c3RvbUNlbnRlcn1cbiAgICAgICAgJGNlbnRlclZlcnRpY2FsbHk9e2lzUGxhbm5lckhvbWV9XG4gICAgICAgICRhbGlnblN0YXJ0PXtpc0xlZnRBbGlnbmVkT3JjaGVzdHJhdG9ySG9tZX1cbiAgICAgICAgJGZpeGVkQ29udGVudFdpZHRoPXtmaXhlZEhvbWVDb250ZW50V2lkdGh9XG4gICAgICA+XG4gICAgICAgIDxTQ0NBSUhvbWVDb250ZW50SW5uZXJcbiAgICAgICAgICBzaG93RkFRcz17aG9tZVNjcm9sbGFibGVMYXlvdXR9XG4gICAgICAgICAgJGlzQWdlbnRWaWV3PXshaXNNQUlBfVxuICAgICAgICAgICRmbG9hdGluZ0N1c3RvbUNlbnRlcj17ZmxvYXRpbmdDdXN0b21DZW50ZXJ9XG4gICAgICAgICAgJGNlbnRlclZlcnRpY2FsbHk9e2lzUGxhbm5lckhvbWV9XG4gICAgICAgICAgJGFsaWduU3RhcnQ9e2lzSGVhZGVyVGFza0NvbnRleHRIb21lIHx8IGlzTGVmdEFsaWduZWRPcmNoZXN0cmF0b3JIb21lfVxuICAgICAgICAgICRoZWFkZXJDb2xsYWJvcmF0b3JIb21lPXtpc0hlYWRlclRhc2tDb250ZXh0SG9tZX1cbiAgICAgICAgICAkc2VjdGlvbk9yY2hlc3RyYXRvckhvbWU9e2lzTGVmdEFsaWduZWRPcmNoZXN0cmF0b3JIb21lfVxuICAgICAgICA+XG4gICAgICAgICAgPFNDQ0FJSG9tZUhlYWRlclxuICAgICAgICAgICAgJGdhcD17c2hvd0FnZW50SW50cm9kdWN0aW9uID8gJzIwcHgnIDogJzAnfVxuICAgICAgICAgICAgJG1heFdpZHRoPXtpc01BSUEgPyAnMTAwJScgOiAnMzgwcHgnfVxuICAgICAgICAgICAgJGlzQWdlbnRWaWV3PXshaXNNQUlBfVxuICAgICAgICAgICAgJGFsaWduPXtjb250ZW50QWxpZ25TdGFydCA/ICdzdGFydCcgOiAnY2VudGVyJ31cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7cmVuZGVySGVhZGVyQ29udGVudCgpfVxuXG4gICAgICAgICAgICB7c2hvd0FnZW50SW50cm9kdWN0aW9uID8gKFxuICAgICAgICAgICAgICA8U0NDQUlIb21lSW50cm9kdWN0aW9uIGV4cGFuZGVkPXtleHBhbmRlZH0+e2FnZW50LmludHJvZHVjdGlvbn08L1NDQ0FJSG9tZUludHJvZHVjdGlvbj5cbiAgICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgIDwvU0NDQUlIb21lSGVhZGVyPlxuICAgICAgICAgIHtzaG93UHJvamVjdFN1bW1hcnlDYXJkICYmIChcbiAgICAgICAgICAgIDxTQ0NBSFdyYXBwZXJTdW1tYXJ5UHJvamVjdCBvbkNsaWNrPXtoYW5kbGVycy5wcm9qZWN0U3VtbWFyeX0+XG4gICAgICAgICAgICAgIDxTQ0NBSUhvbWVQcm9qZWN0U3VtbWFyeT5cbiAgICAgICAgICAgICAgICA8VGVtcGxhdGVHcmFkaWVudEljb24gaGVpZ2h0PXsyNH0gd2lkdGg9ezI0fSAvPlxuICAgICAgICAgICAgICA8L1NDQ0FJSG9tZVByb2plY3RTdW1tYXJ5PlxuICAgICAgICAgICAgICA8U0NDQUlIb21lUHJvamVjdFN1bW1hcnlDb250ZW50PlxuICAgICAgICAgICAgICAgIDxTQ0NBSUhvbWVQcm9qZWN0U3VtbWFyeVRpdGxlPnt0KCdob21lTWVudS5wcm9qZWN0U3VtbWFyeS50aXRsZScpfTwvU0NDQUlIb21lUHJvamVjdFN1bW1hcnlUaXRsZT5cbiAgICAgICAgICAgICAgICA8U0NDQUlIb21lUHJvamVjdFN1bW1hcnlEZXNjcmlwdGlvbj5cbiAgICAgICAgICAgICAgICAgIHt0KCdob21lTWVudS5wcm9qZWN0U3VtbWFyeS5kZXNjcmlwdGlvbicpfVxuICAgICAgICAgICAgICAgIDwvU0NDQUlIb21lUHJvamVjdFN1bW1hcnlEZXNjcmlwdGlvbj5cbiAgICAgICAgICAgICAgPC9TQ0NBSUhvbWVQcm9qZWN0U3VtbWFyeUNvbnRlbnQ+XG4gICAgICAgICAgICA8L1NDQ0FIV3JhcHBlclN1bW1hcnlQcm9qZWN0PlxuICAgICAgICAgICl9XG4gICAgICAgICAge3Nob3dEeW5hbWljU2VjdGlvbiAmJiAoXG4gICAgICAgICAgICA8U0NDQUlIb21lRHluYW1pY1NlY3Rpb25cbiAgICAgICAgICAgICAgJGdyb3c9e2lzTWFpYWtlcn1cbiAgICAgICAgICAgICAgJGFsaWduU3RhcnQ9e2lzSGVhZGVyVGFza0NvbnRleHRIb21lIHx8IGlzTGVmdEFsaWduZWRPcmNoZXN0cmF0b3JIb21lfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7c2hvdWxkU2hvd1BsYW5uZXJGdWFzID8gKFxuICAgICAgICAgICAgICAgIDxGcmVxdWVudGx5VXNlZEFjdGlvbnNcbiAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJwbGFubmVyXCJcbiAgICAgICAgICAgICAgICAgIG9uU3RhcnRDaGF0PXtoYW5kbGVIb21lU3RhcnRDaGF0fVxuICAgICAgICAgICAgICAgICAgYWdlbnRJZD17YWdlbnQ/LmlkfVxuICAgICAgICAgICAgICAgICAgaXNTY3JvbGxpbmc9e2lzU2Nyb2xsaW5nfVxuICAgICAgICAgICAgICAgICAgYWN0aW9ucz17aGVhZGVySG91cnNGdWFzfVxuICAgICAgICAgICAgICAgICAgbG9hZGluZz17aGVhZGVySG91cnNGdWFzTG9hZGluZ31cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICAgICAge3JlbmRlclJlY2VudENvbnRleHRzKCl9XG4gICAgICAgICAgICAgIHtzaG91bGRTaG93RmFxcyAmJiAoXG4gICAgICAgICAgICAgICAgPEZyZXF1ZW50bHlBc2tlZFF1ZXN0aW9uc1xuICAgICAgICAgICAgICAgICAgb25TdGFydENoYXQ9e29uU3RhcnRDaGF0fVxuICAgICAgICAgICAgICAgICAgc2hvd0ZBUXM9e3Nob3dGQVFzfVxuICAgICAgICAgICAgICAgICAgc2hvd1Byb2plY3RTdW1tYXJ5PXtzaG93UHJvamVjdFN1bW1hcnl9XG4gICAgICAgICAgICAgICAgICBhZ2VudElkPXthZ2VudD8uaWR9XG4gICAgICAgICAgICAgICAgICBsYW5nPXtsYW5nfVxuICAgICAgICAgICAgICAgICAgaXNTY3JvbGxpbmc9e2lzU2Nyb2xsaW5nfVxuICAgICAgICAgICAgICAgICAgZmFxcz17ZmFxc31cbiAgICAgICAgICAgICAgICAgIGxvYWRpbmc9e2ZhcXNBcmVMb2FkaW5nfVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgIHtzaG91bGRTaG93RnVhcyAmJiAoXG4gICAgICAgICAgICAgICAgPEZyZXF1ZW50bHlVc2VkQWN0aW9uc1xuICAgICAgICAgICAgICAgICAgb25TdGFydENoYXQ9e29uU3RhcnRDaGF0fVxuICAgICAgICAgICAgICAgICAgYWdlbnRJZD17YWdlbnQ/LmlkfVxuICAgICAgICAgICAgICAgICAgaXNTY3JvbGxpbmc9e2lzU2Nyb2xsaW5nfVxuICAgICAgICAgICAgICAgICAgYWN0aW9ucz17ZnVhc31cbiAgICAgICAgICAgICAgICAgIGxvYWRpbmc9e2Z1YXNBcmVMb2FkaW5nfVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgIHtpc01haWFrZXIgPyA8Q2hhdEFJSG9tZU1haWFrZXIgb25TdGFydENoYXQ9e29uU3RhcnRDaGF0fSAvPiA6IG51bGx9XG4gICAgICAgICAgICA8L1NDQ0FJSG9tZUR5bmFtaWNTZWN0aW9uPlxuICAgICAgICAgICl9XG4gICAgICAgIDwvU0NDQUlIb21lQ29udGVudElubmVyPlxuICAgICAgPC9TQ0NBSUhvbWVDb250ZW50PlxuICAgICAge2hvbWVTY3JvbGxhYmxlTGF5b3V0ICYmIDxTQ0NBSUhvbWVHcmFkaWVudEJvdHRvbSAkc2hvdz17c2hvd0JvdHRvbUdyYWRpZW50fSAvPn1cbiAgICA8L1NDQ0FJSG9tZUNvbnRhaW5lcj5cbiAgKVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7O0FBQUE7QUFDQTtBQUNBO0FBQ0EsU0FBU0EsU0FBUyxFQUFFQyxlQUFlLEVBQUVDLE1BQU0sRUFBRUMsUUFBUSxFQUFFQyxXQUFXLEVBQUVDLE9BQU8sUUFBUSxPQUFPO0FBQzFGLFNBQVNDLFNBQVMsUUFBUSxXQUFXO0FBRXJDLFNBQVNDLE9BQU8sUUFBUSw4Q0FBOEM7QUFDdEUsU0FBU0MsYUFBYSxRQUFRLGdEQUFnRDtBQUM5RSxTQUFTQyxJQUFJLFFBQVEscUJBQXFCO0FBQzFDLFNBQVNDLE1BQU0sRUFBRUMsUUFBUSxRQUFRLHlCQUF5QjtBQUkxRCxTQUNFQyxrQkFBa0IsRUFDbEJDLGdCQUFnQixFQUNoQkMscUJBQXFCLEVBQ3JCQyxvQkFBb0IsRUFDcEJDLHVCQUF1QixFQUN2QkMsZUFBZSxFQUNmQyxpQkFBaUIsRUFDakJDLDJCQUEyQixFQUMzQkMsa0JBQWtCLEVBQ2xCQyx1QkFBdUIsRUFDdkJDLDhCQUE4QixFQUM5QkMsNEJBQTRCLEVBQzVCQyxrQ0FBa0MsRUFDbENDLDBCQUEwQixFQUMxQkMscUJBQXFCLEVBQ3JCQywyQkFBMkIsRUFDM0JDLHNCQUFzQixFQUN0QkMsMEJBQTBCLEVBQzFCQyxzQkFBc0IsRUFDdEJDLG9CQUFvQixFQUNwQkMsd0JBQXdCLEVBQ3hCQyxjQUFjLEVBQ2RDLG1CQUFtQixFQUNuQkMsaUJBQWlCLEVBQ2pCQyx1QkFBdUIsRUFDdkJDLHVCQUF1QixFQUN2QkMsMkJBQTJCLEVBQzNCQyxvQ0FBb0MsRUFDcENDLG1DQUFtQyxFQUNuQ0Msc0NBQXNDLEVBQ3RDQywwQkFBMEIsRUFDMUJDLDhCQUE4QixFQUM5QkMsOEJBQThC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
|