@projectcor/maia-components 2.41.0 → 2.41.1-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/CHANGELOG.md +840 -0
- package/lib/App.js +44 -19
- package/lib/components/atoms/ApprovalBox/ApprovalBox.spec.js +135 -0
- package/lib/components/atoms/Checkbox/Checkbox.spec.js +27 -0
- package/lib/components/atoms/Chip/Chip.spec.js +82 -0
- package/lib/components/atoms/ContextMentionChip/ContextMentionChip.spec.js +29 -0
- package/lib/components/atoms/Fade/Fade.spec.js +31 -0
- package/lib/components/atoms/FrequentlyUsedActions/FrequentlyUsedActions.js +3 -1
- package/lib/components/atoms/FrequentlyUsedActions/FrequentlyUsedActions.styles.js +19 -7
- package/lib/components/atoms/MAIAButton/MAIAButton.spec.js +42 -0
- package/lib/components/atoms/MAIAInput/MAIAInput.spec.js +300 -0
- package/lib/components/atoms/ReasoningBlock/ReasoningBlock.js +7 -2
- package/lib/components/atoms/ReasoningBlock/ReasoningBlock.spec.js +69 -0
- package/lib/components/atoms/ReasoningBlock/ReasoningBlock.styles.js +10 -14
- package/lib/components/atoms/ReasoningBlock/ReasoningSteps.js +1 -1
- package/lib/components/atoms/ReasoningBlock/ReasoningSteps.spec.js +59 -0
- package/lib/components/atoms/ReasoningBlock/ReasoningTimeline.js +57 -37
- package/lib/components/atoms/ReasoningBlock/ReasoningTimeline.spec.js +58 -0
- package/lib/components/atoms/ReasoningBlock/reasoningLiveNarration.js +18 -12
- package/lib/components/atoms/ReasoningBlock/reasoningLiveNarration.spec.js +68 -0
- package/lib/components/atoms/ReasoningBlock/useCollapsibleHeight.js +52 -0
- package/lib/components/atoms/ReasoningBlock/useCollapsibleHeight.spec.js +90 -0
- package/lib/components/atoms/SkillsDropdown/SkillsDropdown.spec.js +107 -0
- package/lib/components/atoms/SlashCommandDropdown/SlashCommandDropdown.spec.js +85 -0
- package/lib/components/atoms/Switch/Switch.spec.js +41 -0
- package/lib/components/index.js +2 -1
- package/lib/components/molecules/AbmSection/AbmAccessibilitySection/AbmAccessibilitySection.spec.js +77 -0
- package/lib/components/molecules/ChatAIContent/ChatAIContent.js +7 -3
- package/lib/components/molecules/ChatAIHome/ChatAIHome.js +21 -6
- package/lib/components/molecules/ChatAIHome/ChatAIHome.spec.js +246 -0
- package/lib/components/molecules/ChatAIMessages/ChatAICreateAgentActions.spec.js +104 -0
- package/lib/components/molecules/ChatAIMessages/ChatAIMessages.js +9 -3
- package/lib/components/molecules/ChatAIMessages/ChatAIMessages.spec.js +291 -0
- package/lib/components/molecules/ChatAIMessages/ChatAISuggestions.spec.js +46 -0
- package/lib/components/molecules/ChatAIMessages/newStyles.js +29 -26
- package/lib/components/molecules/ChatAIModal/ChatAIModal.helpers.js +8 -1
- package/lib/components/molecules/ChatAIModal/ChatAIModal.helpers.spec.js +148 -0
- package/lib/components/molecules/ChatAIModal/ChatAIModal.js +25 -8
- package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeader.js +65 -61
- package/lib/components/molecules/ChatAIModal/components/MaiaMinimizedPill/MaiaMinimizedPill.spec.js +37 -0
- package/lib/components/molecules/ChatAIMySkills/ChatAIMySkills.spec.js +128 -0
- package/lib/components/molecules/ChatFooter/ChatFooter.js +5 -3
- package/lib/components/molecules/ChatFooter/ChatFooter.spec.js +112 -0
- package/lib/components/molecules/ContextMentionInput/ContextMentionInput.spec.js +84 -0
- package/lib/components/molecules/MessageFeedback/MessageFeedback.spec.js +116 -0
- package/lib/components/molecules/Sidebar/Sidebar.js +28 -23
- package/lib/components/molecules/Sidebar/Sidebar.spec.js +234 -0
- package/lib/components/organisms/AbmAgentModal/AbmAgentModal.js +2 -2
- package/lib/components/organisms/AbmAgentModal/AbmAgentModal.spec.js +335 -0
- package/lib/components/organisms/AbmSkillModal/AbmSkillModal.spec.js +405 -0
- package/lib/components/organisms/ChatAI/ChatAI.spec.js +174 -0
- package/lib/components/organisms/ChatAIPage/ChatAIPage.js +486 -0
- package/lib/components/organisms/ChatAIPage/ChatAIPage.spec.js +231 -0
- package/lib/components/organisms/ChatAIPage/ChatAIPage.styles.js +16 -0
- package/lib/components/organisms/ChatAIPage/ChatAIPageHeader.js +253 -0
- package/lib/components/organisms/ChatAIPage/ChatAIPageHeader.spec.js +139 -0
- package/lib/components/organisms/ChatAIPage/ChatAIPageHeader.styles.js +13 -0
- package/lib/components/organisms/ChatAIPage/ChatAIPageHome.js +250 -0
- package/lib/components/organisms/ChatAIPage/ChatAIPageHome.spec.js +224 -0
- package/lib/components/organisms/ChatAIPage/ChatAIPageHome.styles.js +144 -0
- package/lib/components/organisms/ChatAIPage/getDaypart.js +9 -0
- package/lib/components/organisms/ChatAIPage/getDaypart.spec.js +19 -0
- package/lib/components/organisms/ChatAIPage/index.js +3 -0
- package/lib/components/organisms/DeleteAgentModal/DeleteAgentModal.spec.js +59 -0
- package/lib/components/organisms/DeleteQuestionModal/DeleteQuestionModal.spec.js +79 -0
- package/lib/components/organisms/EditQuestionModal/EditQuestionModal.spec.js +86 -0
- package/lib/constants/permissions/index.js +2 -2
- package/lib/constants/permissions/utils.js +4 -1
- package/lib/constants/permissions/utils.spec.js +34 -0
- package/lib/dev/DevMaiaPage.js +30 -0
- package/lib/dev/DevReasoningTimeline.js +11 -17
- package/lib/hooks/useAgentModel/useCreateAgent.spec.js +95 -0
- package/lib/hooks/useAgentModel/useUpdateAgent.spec.js +96 -0
- package/lib/hooks/useCaretPosition.spec.js +58 -0
- package/lib/hooks/useChatManager/useChatManager.js +7 -7
- package/lib/hooks/useChatMessages/useChatMessages.spec.js +279 -0
- package/lib/hooks/useDebounce.spec.js +42 -0
- package/lib/hooks/useEvent.spec.js +40 -0
- package/lib/hooks/useFrequentlyUsedActions.js +31 -12
- package/lib/hooks/useIsMaiaPageRoute.js +26 -0
- package/lib/hooks/useIsMaiaPageRoute.spec.js +26 -0
- package/lib/hooks/useMentionAllowedTypes.spec.js +89 -0
- package/lib/hooks/useMinimizedPillNoveltyDot/useMinimizedPillNoveltyDot.spec.js +67 -0
- package/lib/hooks/useModal/useModal.spec.js +73 -0
- package/lib/hooks/useResize.spec.js +37 -0
- package/lib/hooks/useSkillsCatalog.spec.js +88 -0
- package/lib/hooks/useSnackBarManager/useSnackBarManager.spec.js +33 -0
- package/lib/hooks/useT.spec.js +20 -0
- package/lib/hooks/useToggle.spec.js +33 -0
- package/lib/index.js +5 -2
- package/lib/lang/br/index.js +26 -1
- package/lib/lang/en/index.js +26 -1
- package/lib/lang/es/index.js +26 -1
- package/lib/lang/fr/index.js +26 -1
- package/lib/lib/utils.js +9 -0
- package/lib/services/maia/Access/updateAccess.spec.js +108 -0
- package/lib/services/maia/Actions/getFrequentlyUsedActions.js +1 -1
- package/lib/services/maia/Actions/getFrequentlyUsedActions.spec.js +69 -0
- package/lib/services/maia/Actions/getSlashCommands.spec.js +74 -0
- package/lib/services/maia/Agents/createAgent.spec.js +55 -0
- package/lib/services/maia/Agents/deleteAgent.spec.js +42 -0
- package/lib/services/maia/Agents/fetchAgentDetail.spec.js +108 -0
- package/lib/services/maia/Agents/getAgentById.spec.js +55 -0
- package/lib/services/maia/Agents/getAgentSuggestions.spec.js +82 -0
- package/lib/services/maia/Agents/setAgentToolGroups.spec.js +45 -0
- package/lib/services/maia/Agents/toggleFavorite.spec.js +47 -0
- package/lib/services/maia/Agents/updateAgent.spec.js +48 -0
- package/lib/services/maia/Chats/deleteChat.spec.js +31 -0
- package/lib/services/maia/Chats/getChatMessages.spec.js +150 -0
- package/lib/services/maia/Chats/getChatsByUserId.spec.js +149 -0
- package/lib/services/maia/Chats/markSessionAsRead.spec.js +30 -0
- package/lib/services/maia/Chats/patchChat.spec.js +41 -0
- package/lib/services/maia/Chats/wasHelpfulChat.spec.js +28 -0
- package/lib/services/maia/Faqs/getFrequentlyAskedQuestions.spec.js +58 -0
- package/lib/services/maia/Knowledge/delete.spec.js +45 -0
- package/lib/services/maia/Knowledge/download.spec.js +78 -0
- package/lib/services/maia/Knowledge/save.spec.js +58 -0
- package/lib/services/maia/Orchestrator/orchestrator.spec.js +72 -0
- package/lib/services/maia/RecentClients/getRecentClients.spec.js +52 -0
- package/lib/services/maia/RecentContexts/getRecentContexts.spec.js +83 -0
- package/lib/services/maia/RecentProjects/getRecentProjects.spec.js +82 -0
- package/lib/services/maia/RecentTasks/getRecentTasks.spec.js +63 -0
- package/lib/services/maia/RecentUsers/getRecentUsers.spec.js +82 -0
- package/lib/services/maia/Skills/createSkill.spec.js +68 -0
- package/lib/services/maia/Skills/deleteSkill.spec.js +42 -0
- package/lib/services/maia/Skills/generateSkill.spec.js +48 -0
- package/lib/services/maia/Skills/getSkills.spec.js +152 -0
- package/lib/services/maia/Skills/updateSkill.spec.js +62 -0
- package/lib/services/maia/client.spec.js +56 -0
- package/lib/services/utils/fetchCOR.spec.js +211 -0
- package/lib/services/utils/getCookie.spec.js +20 -0
- package/lib/store/chatsSidebarOptimistic.spec.js +120 -0
- package/lib/store/maiaLastChatPersistence.spec.js +22 -0
- package/lib/store/maiaPanelSessionPersistence.spec.js +62 -0
- package/lib/store/sessions/sessionStreamManager.js +40 -52
- package/lib/store/sessions/sessions.types.spec.js +16 -0
- package/lib/store/sessions/useSessionsStore.spec.js +135 -0
- package/lib/store/useChatsStore.spec.js +619 -0
- package/lib/store/useFaqsStore.spec.js +57 -0
- package/lib/styles/cascade.js +29 -3
- package/lib/styles/transitions.js +3 -1
- package/lib/types/global.d.js +1 -1
- package/lib/utils/agentDisplayName.spec.js +44 -0
- package/lib/utils/autoApproveStorage.spec.js +25 -0
- package/lib/utils/chatInputFiles.spec.js +39 -0
- package/lib/utils/contextMentionLabel.spec.js +13 -0
- package/lib/utils/contextMentionTriggers.spec.js +38 -0
- package/lib/utils/contextMentionTypeLabel.spec.js +14 -0
- package/lib/utils/corConnectorMentionTypes.spec.js +23 -0
- package/lib/utils/fileDownloadHelper.spec.js +67 -0
- package/lib/utils/formatQuickActionMessage.spec.js +27 -0
- package/lib/utils/formatUnreadCount.spec.js +12 -0
- package/lib/utils/getUnitFileSize.spec.js +18 -0
- package/lib/utils/hitlAnalytics.spec.js +100 -0
- package/lib/utils/hoursPlannerQuickActionType.js +74 -1
- package/lib/utils/hoursPlannerQuickActionType.spec.js +64 -0
- package/lib/utils/maiaPageRoute.js +24 -0
- package/lib/utils/maiaPageRoute.spec.js +23 -0
- package/lib/utils/mapBackendLang.spec.js +19 -0
- package/lib/utils/navigateContextEntity.spec.js +50 -0
- package/lib/utils/normalizeAgentConnectors.spec.js +89 -0
- package/lib/utils/orchestratorSubagents.spec.js +32 -0
- package/lib/utils/reasoningMappers.spec.js +103 -0
- package/lib/utils/retryCompletion.spec.js +99 -0
- package/lib/utils/skillContentSize.spec.js +13 -0
- package/lib/utils/slashCommandMarker.spec.js +43 -0
- package/lib/utils/sortManagerHoursHomeFuas.spec.js +51 -0
- package/lib/utils/sseStreamContent.spec.js +31 -0
- package/lib/utils/streamActivityMessages.js +32 -19
- package/lib/utils/streamActivityMessages.spec.js +131 -0
- package/lib/utils/validateTrimmedFields.spec.js +26 -0
- package/package.json +1 -1
- package/README.md +0 -2
|
@@ -237,15 +237,19 @@ export var Sidebar = function Sidebar(_ref3) {
|
|
|
237
237
|
isLegacyContextSession = _ref3$isLegacyContext === void 0 ? false : _ref3$isLegacyContext,
|
|
238
238
|
_ref3$initialOpen = _ref3.initialOpen,
|
|
239
239
|
initialOpen = _ref3$initialOpen === void 0 ? false : _ref3$initialOpen,
|
|
240
|
-
onOpenChange = _ref3.onOpenChange
|
|
240
|
+
onOpenChange = _ref3.onOpenChange,
|
|
241
|
+
open = _ref3.open,
|
|
242
|
+
_ref3$conversationsOn = _ref3.conversationsOnly,
|
|
243
|
+
conversationsOnly = _ref3$conversationsOn === void 0 ? false : _ref3$conversationsOn;
|
|
241
244
|
var _useT2 = useT(),
|
|
242
245
|
t = _useT2.t,
|
|
243
246
|
i18n = _useT2.i18n;
|
|
244
247
|
var tooltipZIndex = useMaiaTaskPanelZIndex(1500, 'overlay');
|
|
245
248
|
var _useState3 = useState(initialOpen),
|
|
246
249
|
_useState4 = _slicedToArray(_useState3, 2),
|
|
247
|
-
|
|
248
|
-
|
|
250
|
+
uncontrolledOpen = _useState4[0],
|
|
251
|
+
setUncontrolledOpen = _useState4[1];
|
|
252
|
+
var isOpen = open !== null && open !== void 0 ? open : uncontrolledOpen;
|
|
249
253
|
var _useState5 = useState(null),
|
|
250
254
|
_useState6 = _slicedToArray(_useState5, 2),
|
|
251
255
|
isOpenModal = _useState6[0],
|
|
@@ -309,7 +313,7 @@ export var Sidebar = function Sidebar(_ref3) {
|
|
|
309
313
|
var canViewSkills = canAccessToSkills(user) && ((user === null || user === void 0 ? void 0 : user.company_id) === 2336 || (user === null || user === void 0 ? void 0 : user.company_id) === 13303);
|
|
310
314
|
var showMarketplaceSidebarButton = !!canCreateAgents && hasMultiAgentsFeatureAccess;
|
|
311
315
|
var agentNavButtonCount = (showMarketplaceSidebarButton ? 1 : 0) + (canViewAgents ? 1 : 0) + (canViewSkills ? 1 : 0);
|
|
312
|
-
var showAgentsNavBlock = showMarketplaceSidebarButton || canViewAgents || canViewSkills;
|
|
316
|
+
var showAgentsNavBlock = !conversationsOnly && (showMarketplaceSidebarButton || canViewAgents || canViewSkills);
|
|
313
317
|
var myAgentsSidebarTrackedRef = useRef(false);
|
|
314
318
|
useEffect(function () {
|
|
315
319
|
if (!canViewAgents || myAgentsSidebarTrackedRef.current) return;
|
|
@@ -368,11 +372,11 @@ export var Sidebar = function Sidebar(_ref3) {
|
|
|
368
372
|
eventAmplitude(EVENTS.aiChatSidebar, {
|
|
369
373
|
action: isOpen ? 'close' : 'open'
|
|
370
374
|
});
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
375
|
+
var next = !isOpen;
|
|
376
|
+
if (open === undefined) {
|
|
377
|
+
setUncontrolledOpen(next);
|
|
378
|
+
}
|
|
379
|
+
onOpenChange === null || onOpenChange === void 0 || onOpenChange(next);
|
|
376
380
|
};
|
|
377
381
|
var handleOpenCreateAgent = /*#__PURE__*/function () {
|
|
378
382
|
var _ref6 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee2() {
|
|
@@ -511,6 +515,18 @@ export var Sidebar = function Sidebar(_ref3) {
|
|
|
511
515
|
}, [fetchChats]);
|
|
512
516
|
var isAgentsHubSection = showNewChat && (agentsNavActive === 'myAgents' || agentsNavActive === 'maiaker' || agentsNavActive === 'mySkills');
|
|
513
517
|
var showNewChatButton = isAgentsHubSection || !showNewChat && !hasError && !loadingChats && !isLegacyContextSession && ((userPermissions === null || userPermissions === void 0 ? void 0 : userPermissions.view) && !(selectedAgent !== null && selectedAgent !== void 0 && selectedAgent.is_deleted) && !(selectedAgent !== null && selectedAgent !== void 0 && selectedAgent.has_not_permissions) && !(selectedAgent !== null && selectedAgent !== void 0 && selectedAgent.has_not_access) || !(userPermissions !== null && userPermissions !== void 0 && userPermissions.view) && !(selectedAgent !== null && selectedAgent !== void 0 && selectedAgent.is_deleted) && !(selectedAgent !== null && selectedAgent !== void 0 && selectedAgent.has_not_permissions) && !(selectedAgent !== null && selectedAgent !== void 0 && selectedAgent.has_not_access));
|
|
518
|
+
var newChatButton = /*#__PURE__*/_jsx(Tooltip, {
|
|
519
|
+
title: t('conversations.newChat'),
|
|
520
|
+
zIndex: tooltipZIndex,
|
|
521
|
+
children: /*#__PURE__*/_jsx(SCSWrapperNewChatIcon, {
|
|
522
|
+
onClick: handleNewChat,
|
|
523
|
+
"aria-label": t('conversations.newChat'),
|
|
524
|
+
children: /*#__PURE__*/_jsx(NewChat, {
|
|
525
|
+
width: 16,
|
|
526
|
+
height: 16
|
|
527
|
+
})
|
|
528
|
+
})
|
|
529
|
+
});
|
|
514
530
|
return /*#__PURE__*/_jsxs(SCSSidebarRoot, {
|
|
515
531
|
$isOpen: isOpen,
|
|
516
532
|
children: [/*#__PURE__*/_jsxs(SCSSidebarToolbar, {
|
|
@@ -531,18 +547,7 @@ export var Sidebar = function Sidebar(_ref3) {
|
|
|
531
547
|
height: 20
|
|
532
548
|
})
|
|
533
549
|
})
|
|
534
|
-
}), showNewChatButton ? /*#__PURE__*/
|
|
535
|
-
title: t('conversations.newChat'),
|
|
536
|
-
zIndex: tooltipZIndex,
|
|
537
|
-
children: /*#__PURE__*/_jsx(SCSWrapperNewChatIcon, {
|
|
538
|
-
onClick: handleNewChat,
|
|
539
|
-
"aria-label": t('conversations.newChat'),
|
|
540
|
-
children: /*#__PURE__*/_jsx(NewChat, {
|
|
541
|
-
width: 16,
|
|
542
|
-
height: 16
|
|
543
|
-
})
|
|
544
|
-
})
|
|
545
|
-
}) : null, !isOpen && showAgentsNavBlock ? /*#__PURE__*/_jsxs(_Fragment, {
|
|
550
|
+
}), showNewChatButton ? newChatButton : null, !isOpen && showAgentsNavBlock ? /*#__PURE__*/_jsxs(_Fragment, {
|
|
546
551
|
children: [/*#__PURE__*/_jsx(SCSSidebarCollapsedDivider, {}), showMarketplaceSidebarButton ? /*#__PURE__*/_jsx(Tooltip, {
|
|
547
552
|
title: t('conversations.maiakerNav'),
|
|
548
553
|
zIndex: tooltipZIndex,
|
|
@@ -639,7 +644,7 @@ export var Sidebar = function Sidebar(_ref3) {
|
|
|
639
644
|
ref: chatsContainerRef,
|
|
640
645
|
$hasChats: chats.length > 0,
|
|
641
646
|
$offsetVariant: hasError ? 'error' : 'default',
|
|
642
|
-
$agentNavButtonCount: agentNavButtonCount,
|
|
647
|
+
$agentNavButtonCount: showAgentsNavBlock ? agentNavButtonCount : 0,
|
|
643
648
|
children: hasError && !chats.length ? /*#__PURE__*/_jsxs(SCSSidebarErrorStateColumn, {
|
|
644
649
|
children: [/*#__PURE__*/_jsx(SCSSidebarErrorStateTop, {
|
|
645
650
|
children: /*#__PURE__*/_jsx(ErrorState, {})
|
|
@@ -703,4 +708,4 @@ export var Sidebar = function Sidebar(_ref3) {
|
|
|
703
708
|
})]
|
|
704
709
|
});
|
|
705
710
|
};
|
|
706
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VFZmZlY3QiLCJ1c2VNZW1vIiwidXNlUmVmIiwidXNlU3RhdGUiLCJDaGV2cm9uRG91YmxlTGVmdCIsIkhpc3RvcnkiLCJDVUJ1dHRvbiIsIk1lbnVEb3RzIiwiUGVuY2lsIiwiVHJhc2giLCJUb29sdGlwIiwiRW1wdHlIaXN0b3J5SWNvbiIsInVzZVJlc2l6ZUxpc3RlbmVyIiwidXNlQ2hhdHMiLCJTaWRlYmFyQ2hhdHNTa2VsZXRvbiIsIkVycm9yU3RhdGUiLCJNQUlBSWNvbiIsIk1haWFTdG9yZUljb24iLCJNeUFnZW50c05hdkljb24iLCJTa2lsbHNOYXZJY29uIiwiTmV3Q2hhdCIsIkVWRU5UUyIsInVzZUV2ZW50IiwidXNlVCIsIk9wdGlvbkl0ZW0iLCJFZGl0UXVlc3Rpb25Nb2RhbCIsIkRlbGV0ZVF1ZXN0aW9uTW9kYWwiLCJFcnJvckljb24iLCJ1c2VVc2VyIiwiRmVlZGJhY2tCdXR0b24iLCJ1c2VHbG9iYWxDb250ZXh0IiwiZmV0Y2hNYWlhIiwiY2FuQWNjZXNzVG9Ta2lsbHMiLCJtYXBDT1JMYW5nIiwiZm9ybWF0Q2hhdExpc3RUaXRsZU1lbnRpb25zIiwiZ2V0QWdlbnREaXNwbGF5TmFtZSIsImlzTWFya2V0cGxhY2VHbG9iYWxDbG9uZUFnZW50IiwiQVBQQ1VFU19FVkVOVFMiLCJBUFBDVUVTX1NFTEVDVE9SUyIsInRyYWNrQXBwY3Vlc0V2ZW50IiwiU2Vzc2lvbkdlbmVyYXRpbmdEb3QiLCJ1c2VJc1Nlc3Npb25HZW5lcmF0aW5nIiwidXNlU2Vzc2lvbk1ldGEiLCJ1c2VNYWlhVGFza1BhbmVsWkluZGV4IiwidXNlQ2hhdHNTdG9yZSIsIlNDTEhDV3JhcHBlciIsIlNDTEhDV3JhcHBlckFnZW50IiwiU0NMSENXcmFwcGVyQWdlbnRUZXh0IiwiU0NMSENXcmFwcGVyQnV0dG9uQWN0aW9ucyIsIlNDTEhDV3JhcHBlckNvbnRlbnQiLCJTQ0xIQ1dyYXBwZXJUaXRsZSIsIlNDTEhDV3JhcHBlclRpdGxlUm93IiwiU0NTV3JhcHBlckNvbGxhcHNlZEJ1dHRvbiIsIlNDU1dyYXBwZXJOZXdDaGF0SWNvbiIsIlNDU1dyYXBwZXJBZ2VudHNOYXZJY29uIiwiU0NTU2lkZWJhclJvb3QiLCJTQ1NTaWRlYmFyVG9vbGJhciIsIlNDU1NpZGViYXJCb2R5IiwiU0NTU2lkZWJhck9wZW5QYW5lbCIsIlNDU1NpZGViYXJBZ2VudHNCbG9jayIsIlNDU1NpZGViYXJBZ2VudHNBY3Rpb25zIiwiU0NTU2lkZWJhck1haWFrZXJOYXZCdXR0b24iLCJTQ1NTaWRlYmFyTWFpYWtlck5hdkxhYmVsIiwiU0NTU2lkZWJhck1haWFrZXJOYXZCYWRnZU5ldyIsIlNDU1NpZGViYXJDb252ZXJzYXRpb25zSGVhZGluZyIsIlNDU1NpZGViYXJDb252ZXJzYXRpb25zSGVhZGluZ1JvdyIsIlNDU1NpZGViYXJDaGF0c1Njcm9sbCIsIlNDU1NpZGViYXJFcnJvclN0YXRlQ29sdW1uIiwiU0NTU2lkZWJhckVycm9yU3RhdGVUb3AiLCJTQ1NTaWRlYmFyRXJyb3JCYW5uZXIiLCJTQ1NTaWRlYmFyRXJyb3JCYW5uZXJJY29uV3JhcCIsIlNDU1NpZGViYXJFcnJvckJhbm5lck1lc3NhZ2UiLCJTQ1NTaWRlYmFyTG9hZGluZ0FyZWEiLCJTQ1NTaWRlYmFyTG9hZE1vcmVSb3ciLCJTQ1NTaWRlYmFyRW1wdHlDaGF0cyIsIlNDU1NpZGViYXJFbXB0eUNoYXRzVGV4dCIsIlNDU1NpZGViYXJDaGF0c0Zvb3RlciIsIlNDU1NpZGViYXJGb290ZXJBY3Rpb25zIiwiU0NTU2lkZWJhckNvbGxhcHNlZERpdmlkZXIiLCJqc3giLCJfanN4IiwianN4cyIsIl9qc3hzIiwiRnJhZ21lbnQiLCJfRnJhZ21lbnQiLCJhY3Rpb25zIiwiZWRpdCIsInByb3BzIiwiX29iamVjdFNwcmVhZCIsImRlbGV0ZSIsImFiYnJldmlhdGVTcGVjaWFsaXN0SW5BZ2VudE5hbWUiLCJhZ2VudE5hbWUiLCJyZXBsYWNlIiwiTGlzdEhpc3RvcnlDaGF0IiwiX3JlZiIsImNoYXQiLCJvbkNsaWNrIiwiaXNNb2RhbE9wZW4iLCJvbk9wZW5Nb2RhbCIsIm9uQ2xvc2VNb2RhbCIsImhhbmRsZXJzIiwiaXNTZWxlY3RlZCIsImluZGV4IiwidG9vbHRpcFpJbmRleCIsInRleHRSZWYiLCJhZ2VudFJlZiIsImRpc3BsYXlUaXRsZSIsInRpdGxlIiwiZGlzcGxheUFnZW50IiwiYWdlbnRUeXBlIiwiYWdlbnQiLCJjb250ZXh0TmFtZSIsInByb2plY3ROYW1lIiwiY2xpZW50TmFtZSIsIl91c2VSZXNpemVMaXN0ZW5lciIsInNob3dUb29sdGlwIiwiX3VzZVJlc2l6ZUxpc3RlbmVyMiIsInNob3dUb29sdGlwQWdlbnQiLCJfdXNlVCIsInQiLCJfdXNlU3RhdGUiLCJfdXNlU3RhdGUyIiwiX3NsaWNlZFRvQXJyYXkiLCJhY3Rpb24iLCJzZXRBY3Rpb24iLCJpc0dlbmVyYXRpbmciLCJzZXNzaW9uRXh0ZXJuYWxJZCIsInNlc3Npb25NZXRhIiwiaXNVbnJlYWQiLCJpc1JlYWQiLCJtZW51SXRlbXMiLCJsYWJlbCIsIm9uQ2xpY2tJdGVtIiwiY2hhdElkIiwiSWNvbiIsImV2ZW50S2V5IiwicG1BaU1lbnVFZGl0IiwicG1BaU1lbnVEZWxldGUiLCJoYW5kbGVDb25maXJtQWN0aW9uIiwiY2hhdERhdGEiLCJoYW5kbGVVcGRhdGVDaGF0IiwiaGFuZGxlRGVsZXRlQ2hhdCIsImNoaWxkcmVuIiwiZSIsInN0b3BQcm9wYWdhdGlvbiIsIiRpbmRleCIsImFyaWFMYWJlbCIsImlzV3JpdGluZyIsImFuaW1hdGVkIiwiekluZGV4IiwicmVmIiwiJHVucmVhZCIsImNvbmNhdCIsIndpZHRoIiwiaGVpZ2h0Iiwic3R5bGUiLCJmb250U2l6ZSIsImVtb2ppIiwiaWNvbk9ubHkiLCJzaXplIiwidmFyaWFudCIsImV2ZW50IiwiaWQiLCJwb3NpdGlvbiIsInRvcCIsInJpZ2h0IiwiYmFja2dyb3VuZENvbG9yIiwiZGlzcGxheSIsImZsZXhEaXJlY3Rpb24iLCJib3JkZXJSYWRpdXMiLCJib3JkZXIiLCJtaW5XaWR0aCIsIm1hcCIsIl9yZWYyIiwib25DbG9zZSIsImhhbmRsZVNldElzT3Blbk1vZGFsIiwiU2lkZWJhciIsIl9yZWYzIiwiX3VzZXIkcGVybWlzc2lvbnMiLCJvbkdvVG9DaGF0IiwiX3JlZjMkb25FcnJvciIsIm9uRXJyb3IiLCJoYW5kbGVHb1RvSG9tZSIsImhhbmRsZVN0YXJ0TmV3Q2hhdCIsImhhbmRsZU9wZW5NYXJrZXRwbGFjZSIsImhhbmRsZU9wZW5Ta2lsbHMiLCJvbk9wZW5NYWlha2VyQ3JlYXRvciIsInNob3dOZXdDaGF0IiwicmVmZXRjaENoYXRzIiwiaGFuZGxlU2V0UmVmZXRjaENoYXRzIiwiaGFzRXJyb3IiLCJfcmVmMyRhZ2VudHNOYXZBY3RpdmUiLCJhZ2VudHNOYXZBY3RpdmUiLCJfcmVmMyRpc0xlZ2FjeUNvbnRleHQiLCJpc0xlZ2FjeUNvbnRleHRTZXNzaW9uIiwiX3JlZjMkaW5pdGlhbE9wZW4iLCJpbml0aWFsT3BlbiIsIm9uT3BlbkNoYW5nZSIsIl91c2VUMiIsImkxOG4iLCJfdXNlU3RhdGUzIiwiX3VzZVN0YXRlNCIsImlzT3BlbiIsInNldElzT3BlbiIsIl91c2VTdGF0ZTUiLCJfdXNlU3RhdGU2IiwiaXNPcGVuTW9kYWwiLCJzZXRJc09wZW5Nb2RhbCIsImFjdGl2ZUNoYXRJZCIsInN0YXRlIiwiY2hhdHNGZXRjaGVkUmVmIiwiY2hhdHNDb250YWluZXJSZWYiLCJ1c2VyIiwiZXZlbnRBbXBsaXR1ZGUiLCJfdXNlR2xvYmFsQ29udGV4dCIsInNlbGVjdGVkQWdlbnQiLCJzZWxlY3RBZ2VudCIsInNldFByb2plY3QiLCJzZXRDbGllbnQiLCJzZXRUYXNrIiwiX3VzZUNoYXRzIiwibG9hZGluZ0NoYXRzIiwiY2hhdHMiLCJkZWxldGVDaGF0IiwidXBkYXRlQ2hhdCIsImZldGNoQ2hhdHMiLCJsaW1pdCIsIm9mZnNldCIsImhhc01vcmVDaGF0cyIsImxvYWRNb3JlQ2hhdHMiLCJpc0xvYWRpbmdNb3JlQ2hhdHMiLCJzZXRVbnJlYWRDb3VudCIsInNldENoYXRSZWFkU3RhdGUiLCJ1bnJlYWRTdWJzY3JpYmVkUmVmIiwiJF9zYyIsInVuZGVmaW5lZCIsImNoYW5uZWwiLCJoYW5kbGVVbnJlYWRFdmVudCIsIl9yZWY0IiwibW9kZWxEYXRhIiwibW9kZWxfZGF0YSIsInVucmVhZF9jb3VudCIsInNlc3Npb25faWQiLCJpc19yZWFkIiwic3Vic2NyaWJlSGFuZGxlciIsImN1cnJlbnQiLCJfJF9zYyRhY3Rpb25UeXBlIiwiXyRfc2MkY2hhbm5lbFR5cGUiLCJ1cGRhdGVDb25uZWN0aW9uTW9kZWwiLCJtb2RlbF9oYXNoIiwiYWN0aW9uVHlwZSIsIlNVQlNDUklCRSIsImNoYW5uZWxUeXBlIiwiTU9ERUxfQ0hBTk5FTCIsInVzZXJQZXJtaXNzaW9ucyIsInBlcm1pc3Npb25zIiwiYWlfYWdlbnRzIiwiY2FuQ3JlYXRlQWdlbnRzIiwiY3JlYXRlIiwiaGFzTXVsdGlBZ2VudHNGZWF0dXJlQWNjZXNzIiwid2luZG93IiwiTUFJQV9DSEFUX0FJX0ZFQVRVUkVfQUNDRVNTX01VTFRJX0FHRU5UUyIsImNhblZpZXdBZ2VudHMiLCJ2aWV3IiwiY2FuVmlld1NraWxscyIsImNvbXBhbnlfaWQiLCJzaG93TWFya2V0cGxhY2VTaWRlYmFyQnV0dG9uIiwiYWdlbnROYXZCdXR0b25Db3VudCIsInNob3dBZ2VudHNOYXZCbG9jayIsIm15QWdlbnRzU2lkZWJhclRyYWNrZWRSZWYiLCJtYWlhU2lkZWJhck15QWdlbnRzIiwiX3JlZjUiLCJfYXN5bmNUb0dlbmVyYXRvciIsIl9yZWdlbmVyYXRvclJ1bnRpbWUiLCJtYXJrIiwiX2NhbGxlZSIsIndyYXAiLCJfY29udGV4dCIsInByZXYiLCJuZXh0Iiwic3RvcCIsIl94IiwiYXBwbHkiLCJhcmd1bWVudHMiLCJoYW5kbGVPcGVuTW9kYWwiLCJoYW5kbGVDbG9zZU1vZGFsIiwiaGFuZGxlQ2xpY2tPdXRzaWRlIiwidGFyZ2V0IiwiY2xvc2VzdCIsImRvY3VtZW50IiwiYWRkRXZlbnRMaXN0ZW5lciIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJoYW5kbGVUb2dnbGVTaWRlYmFyIiwiYWlDaGF0U2lkZWJhciIsImhhbmRsZU9wZW5DcmVhdGVBZ2VudCIsIl9yZWY2IiwiX2NhbGxlZTIiLCJyZXNwb25zZSIsImRhdGEiLCJtYWlha2VyQWdlbnQiLCJfdCIsIl90MiIsIl9jb250ZXh0MiIsImFicnVwdCIsInBhdGgiLCJsYW5ndWFnZSIsIm1ldGhvZCIsInNlbnQiLCJqc29uIiwiZmluZCIsImFnZW50SXRlbSIsImhhbmRsZVNjcm9sbCIsIl9jaGF0c0NvbnRhaW5lclJlZiRjdSIsInNjcm9sbFRvcCIsInNjcm9sbEhlaWdodCIsImNsaWVudEhlaWdodCIsImlzQXRCb3R0b20iLCJjb250YWluZXIiLCJoYW5kbGVOZXdDaGF0IiwiYWlTaWRlYmFyTmV3Q2hhdCIsImhhbmRsZVJlZmV0Y2hTZXNzaW9uIiwiYmFja2dyb3VuZCIsImlzQWdlbnRzSHViU2VjdGlvbiIsInNob3dOZXdDaGF0QnV0dG9uIiwiaXNfZGVsZXRlZCIsImhhc19ub3RfcGVybWlzc2lvbnMiLCJoYXNfbm90X2FjY2VzcyIsIiRpc09wZW4iLCJjb2xvciIsIiRhY3RpdmUiLCJhaUNoYXRNcE9wZW4iLCJhaVNpZGViYXJNeUFnZW50cyIsImFpU2lkZWJhck15U2tpbGxzIiwidHlwZSIsIiRoYXNDaGF0cyIsImxlbmd0aCIsIiRvZmZzZXRWYXJpYW50IiwiJGFnZW50TmF2QnV0dG9uQ291bnQiLCJjb3VudCIsIiRqdXN0aWZ5QmV0d2VlbiJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL21vbGVjdWxlcy9TaWRlYmFyL1NpZGViYXIudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIGNhbWVsY2FzZSAqL1xuLyogZXNsaW50LWRpc2FibGUgbm8tdW5kZWYgKi9cbi8qIGVzbGludC1kaXNhYmxlIG5vLXBhcmFtLXJlYXNzaWduICovXG4vKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tc2hhZG93ICovXG4vKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55ICovXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1uZXN0ZWQtdGVybmFyeSAqL1xuLyogZXNsaW50LWRpc2FibGUganN4LWExMXkvY2xpY2stZXZlbnRzLWhhdmUta2V5LWV2ZW50cyAqL1xuLyogZXNsaW50LWRpc2FibGUganN4LWExMXkvbm8tc3RhdGljLWVsZW1lbnQtaW50ZXJhY3Rpb25zICovXG5pbXBvcnQgeyB1c2VFZmZlY3QsIHVzZU1lbW8sIHVzZVJlZiwgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCdcbmltcG9ydCB7IENoZXZyb25Eb3VibGVMZWZ0IH0gZnJvbSAnQHByb2plY3Rjb3IvaWNvbnMvbGliL2NvbXBvbmVudHMvQ2hldnJvbkRvdWJsZUxlZnQnXG5pbXBvcnQgeyBIaXN0b3J5IH0gZnJvbSAnQHByb2plY3Rjb3IvaWNvbnMvbGliL2NvbXBvbmVudHMvSGlzdG9yeSdcbmltcG9ydCB7IENVQnV0dG9uIH0gZnJvbSAnQHByb2plY3Rjb3IvYnV0dG9uL2xpYi9jb21wb25lbnRzL0NVQnV0dG9uJ1xuaW1wb3J0IHsgTWVudURvdHMgfSBmcm9tICdAcHJvamVjdGNvci9pY29ucy9saWIvY29tcG9uZW50cy9NZW51RG90cydcbmltcG9ydCB7IFBlbmNpbCB9IGZyb20gJ0Bwcm9qZWN0Y29yL2ljb25zL2xpYi9jb21wb25lbnRzL1BlbmNpbCdcbmltcG9ydCB7IFRyYXNoIH0gZnJvbSAnQHByb2plY3Rjb3IvaWNvbnMvbGliL2NvbXBvbmVudHMvVHJhc2gnXG5cbmltcG9ydCB7IFRvb2x0aXAgfSBmcm9tICdAcHJvamVjdGNvci90b29sdGlwdjIvbGliL2NvbXBvbmVudHMvVG9vbHRpcCdcblxuaW1wb3J0IHsgRW1wdHlIaXN0b3J5SWNvbiB9IGZyb20gJy4uLy4uL2F0b21zL2ljb25zL0VtcHR5SGlzdG9yeSdcbmltcG9ydCB7IHVzZVJlc2l6ZUxpc3RlbmVyIH0gZnJvbSAnLi4vLi4vLi4vaG9va3MvdXNlUmVzaXplJ1xuaW1wb3J0IHsgdXNlQ2hhdHMgfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VDaGF0cydcbmltcG9ydCB7IFNpZGViYXJDaGF0c1NrZWxldG9uIH0gZnJvbSAnLi9TaWRlYmFyLnNrZWxldG9uJ1xuaW1wb3J0IHsgRXJyb3JTdGF0ZSwgTUFJQUljb24sIE1haWFTdG9yZUljb24sIE15QWdlbnRzTmF2SWNvbiwgU2tpbGxzTmF2SWNvbiwgTmV3Q2hhdCB9IGZyb20gJy4uLy4uL2F0b21zL2ljb25zJ1xuaW1wb3J0IHsgRVZFTlRTLCB1c2VFdmVudCB9IGZyb20gJy4uLy4uLy4uL2hvb2tzL3VzZUV2ZW50J1xuaW1wb3J0IHsgdXNlVCB9IGZyb20gJy4uLy4uLy4uL2hvb2tzL3VzZVQnXG5pbXBvcnQgeyBPcHRpb25JdGVtIH0gZnJvbSAnLi4vLi4vYXRvbXMvQ2FyZE1lbnUvQ2FyZE1lbnUnXG5pbXBvcnQgeyBFZGl0UXVlc3Rpb25Nb2RhbCB9IGZyb20gJy4uLy4uL29yZ2FuaXNtcy9FZGl0UXVlc3Rpb25Nb2RhbCdcbmltcG9ydCB7IERlbGV0ZVF1ZXN0aW9uTW9kYWwgfSBmcm9tICcuLi8uLi9vcmdhbmlzbXMvRGVsZXRlUXVlc3Rpb25Nb2RhbCdcbmltcG9ydCB7IEVycm9ySWNvbiB9IGZyb20gJy4uLy4uL2F0b21zL2ljb25zL0Vycm9ySWNvbidcbmltcG9ydCB7IHVzZVVzZXIgfSBmcm9tICcuLi8uLi8uLi9jb250ZXh0L2Nvci11c2VyJ1xuaW1wb3J0IHsgRmVlZGJhY2tCdXR0b24gfSBmcm9tICcuLi8uLi9hdG9tcy9GZWVkYmFja0J1dHRvbidcbmltcG9ydCB7IHVzZUdsb2JhbENvbnRleHQgfSBmcm9tICcuLi8uLi8uLi9jb250ZXh0L2dsb2JhbC1jb250ZXh0J1xuaW1wb3J0IHsgZmV0Y2hNYWlhIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvbWFpYS9jbGllbnQnXG5pbXBvcnQgeyBjYW5BY2Nlc3NUb1NraWxscyB9IGZyb20gJy4uLy4uLy4uL2NvbnN0YW50cy9wZXJtaXNzaW9ucydcbmltcG9ydCB7IG1hcENPUkxhbmcgfSBmcm9tICcuLi8uLi8uLi9sYW5nL3V0aWxzJ1xuaW1wb3J0IHsgZm9ybWF0Q2hhdExpc3RUaXRsZU1lbnRpb25zIH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvcmVuZGVyQ29udGV4dE1lbnRpb25zJ1xuaW1wb3J0IHsgZ2V0QWdlbnREaXNwbGF5TmFtZSwgaXNNYXJrZXRwbGFjZUdsb2JhbENsb25lQWdlbnQgfSBmcm9tICcuLi8uLi8uLi91dGlscy9hZ2VudERpc3BsYXlOYW1lJ1xuaW1wb3J0IHsgQVBQQ1VFU19FVkVOVFMsIEFQUENVRVNfU0VMRUNUT1JTLCB0cmFja0FwcGN1ZXNFdmVudCB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2FwcGN1ZXMnXG5pbXBvcnQgeyBTZXNzaW9uR2VuZXJhdGluZ0RvdCB9IGZyb20gJy4uLy4uL2F0b21zL1Nlc3Npb25HZW5lcmF0aW5nRG90J1xuaW1wb3J0IHsgdXNlSXNTZXNzaW9uR2VuZXJhdGluZywgdXNlU2Vzc2lvbk1ldGEgfSBmcm9tICcuLi8uLi8uLi9zdG9yZS9zZXNzaW9ucy91c2VTZXNzaW9uTWV0YSdcbmltcG9ydCB7IHVzZU1haWFUYXNrUGFuZWxaSW5kZXggfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VNYWlhVGFza1BhbmVsWkluZGV4J1xuaW1wb3J0IHsgdXNlQ2hhdHNTdG9yZSB9IGZyb20gJy4uLy4uLy4uL3N0b3JlL3VzZUNoYXRzU3RvcmUnXG5pbXBvcnQge1xuICBTQ0xIQ1dyYXBwZXIsXG4gIFNDTEhDV3JhcHBlckFnZW50LFxuICBTQ0xIQ1dyYXBwZXJBZ2VudFRleHQsXG4gIFNDTEhDV3JhcHBlckJ1dHRvbkFjdGlvbnMsXG4gIFNDTEhDV3JhcHBlckNvbnRlbnQsXG4gIFNDTEhDV3JhcHBlclRpdGxlLFxuICBTQ0xIQ1dyYXBwZXJUaXRsZVJvdyxcbiAgU0NTV3JhcHBlckNvbGxhcHNlZEJ1dHRvbixcbiAgU0NTV3JhcHBlck5ld0NoYXRJY29uLFxuICBTQ1NXcmFwcGVyQWdlbnRzTmF2SWNvbixcbn0gZnJvbSAnLi9TaWRlYmFyLnN0eWxlcydcbmltcG9ydCB7XG4gIFNDU1NpZGViYXJSb290LFxuICBTQ1NTaWRlYmFyVG9vbGJhcixcbiAgU0NTU2lkZWJhckJvZHksXG4gIFNDU1NpZGViYXJPcGVuUGFuZWwsXG4gIFNDU1NpZGViYXJBZ2VudHNCbG9jayxcbiAgU0NTU2lkZWJhckFnZW50c0FjdGlvbnMsXG4gIFNDU1NpZGViYXJNYWlha2VyTmF2QnV0dG9uLFxuICBTQ1NTaWRlYmFyTWFpYWtlck5hdkxhYmVsLFxuICBTQ1NTaWRlYmFyTWFpYWtlck5hdkJhZGdlTmV3LFxuICBTQ1NTaWRlYmFyQ29udmVyc2F0aW9uc0hlYWRpbmcsXG4gIFNDU1NpZGViYXJDb252ZXJzYXRpb25zSGVhZGluZ1JvdyxcbiAgU0NTU2lkZWJhckNoYXRzU2Nyb2xsLFxuICBTQ1NTaWRlYmFyRXJyb3JTdGF0ZUNvbHVtbixcbiAgU0NTU2lkZWJhckVycm9yU3RhdGVUb3AsXG4gIFNDU1NpZGViYXJFcnJvckJhbm5lcixcbiAgU0NTU2lkZWJhckVycm9yQmFubmVySWNvbldyYXAsXG4gIFNDU1NpZGViYXJFcnJvckJhbm5lck1lc3NhZ2UsXG4gIFNDU1NpZGViYXJMb2FkaW5nQXJlYSxcbiAgU0NTU2lkZWJhckxvYWRNb3JlUm93LFxuICBTQ1NTaWRlYmFyRW1wdHlDaGF0cyxcbiAgU0NTU2lkZWJhckVtcHR5Q2hhdHNUZXh0LFxuICBTQ1NTaWRlYmFyQ2hhdHNGb290ZXIsXG4gIFNDU1NpZGViYXJGb290ZXJBY3Rpb25zLFxuICBTQ1NTaWRlYmFyQ29sbGFwc2VkRGl2aWRlcixcbn0gZnJvbSAnLi9TaWRlYmFyLmxheW91dC5zdHlsZXMnXG5cbmNvbnN0IGFjdGlvbnMgPSB7XG4gIGVkaXQ6IChwcm9wczogYW55KSA9PiA8RWRpdFF1ZXN0aW9uTW9kYWwgey4uLnByb3BzfSAvPixcbiAgZGVsZXRlOiAocHJvcHM6IGFueSkgPT4gPERlbGV0ZVF1ZXN0aW9uTW9kYWwgey4uLnByb3BzfSAvPixcbn1cblxuLyoqIEFicmV2aWEgXCJlc3BlY2lhbGlzdGFcIi9cImVzcGVjaWFsaXN0XCIg4oaSIFwiRXNwLlwiIChFUy9QVCkgeSBcInNwZWNpYWxpc3RcIiDihpIgXCJTcGVjLlwiIChFTikgZW4gZWwgbm9tYnJlIGRlbCBhZ2VudGUuICovXG5mdW5jdGlvbiBhYmJyZXZpYXRlU3BlY2lhbGlzdEluQWdlbnROYW1lKGFnZW50TmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgaWYgKCFhZ2VudE5hbWUgfHwgdHlwZW9mIGFnZW50TmFtZSAhPT0gJ3N0cmluZycpIHJldHVybiBhZ2VudE5hbWVcbiAgcmV0dXJuIGFnZW50TmFtZS5yZXBsYWNlKC9cXGIoZXNwZWNpYWxpc3RhfGVzcGVjaWFsaXN0KVxcYi9naSwgJ0VzcC4nKS5yZXBsYWNlKC9cXGJzcGVjaWFsaXN0XFxiL2dpLCAnU3BlYy4nKVxufVxuXG5jb25zdCBMaXN0SGlzdG9yeUNoYXQgPSAoe1xuICBjaGF0LFxuICBvbkNsaWNrLFxuICBpc01vZGFsT3BlbixcbiAgb25PcGVuTW9kYWwsXG4gIG9uQ2xvc2VNb2RhbCxcbiAgaGFuZGxlcnMsXG4gIGlzU2VsZWN0ZWQsXG4gIGluZGV4LFxuICB0b29sdGlwWkluZGV4LFxufToge1xuICBjaGF0OiBhbnlcbiAgb25DbGljazogKGNoYXQ6IGFueSkgPT4gdm9pZFxuICBpc01vZGFsT3BlbjogYm9vbGVhblxuICBvbk9wZW5Nb2RhbDogKGNoYXRJZDogc3RyaW5nKSA9PiB2b2lkXG4gIG9uQ2xvc2VNb2RhbDogKCkgPT4gdm9pZFxuICBoYW5kbGVyczoge1xuICAgIGhhbmRsZURlbGV0ZUNoYXQ6IChjaGF0OiBhbnkpID0+IHZvaWRcbiAgICBoYW5kbGVVcGRhdGVDaGF0OiAoY2hhdDogYW55KSA9PiB2b2lkXG4gIH1cbiAgaXNTZWxlY3RlZDogYm9vbGVhblxuICBpbmRleDogbnVtYmVyXG4gIHRvb2x0aXBaSW5kZXg6IG51bWJlclxufSkgPT4ge1xuICBjb25zdCB0ZXh0UmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKVxuICBjb25zdCBhZ2VudFJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbClcbiAgY29uc3QgZGlzcGxheVRpdGxlID0gdXNlTWVtbygoKSA9PiBmb3JtYXRDaGF0TGlzdFRpdGxlTWVudGlvbnMoY2hhdC50aXRsZSksIFtjaGF0LnRpdGxlXSlcbiAgY29uc3QgZGlzcGxheUFnZW50ID0gZ2V0QWdlbnREaXNwbGF5TmFtZShjaGF0LmFnZW50VHlwZSwgY2hhdC5hZ2VudClcbiAgY29uc3QgY29udGV4dE5hbWUgPSBjaGF0LnByb2plY3ROYW1lIHx8IGNoYXQuY2xpZW50TmFtZVxuICBjb25zdCB7IHNob3dUb29sdGlwIH0gPSB1c2VSZXNpemVMaXN0ZW5lcih0ZXh0UmVmLCBbZGlzcGxheVRpdGxlXSlcbiAgY29uc3QgeyBzaG93VG9vbHRpcDogc2hvd1Rvb2x0aXBBZ2VudCB9ID0gdXNlUmVzaXplTGlzdGVuZXIoYWdlbnRSZWYsIFtjaGF0LmFnZW50XSlcbiAgY29uc3QgeyB0IH0gPSB1c2VUKClcbiAgY29uc3QgW2FjdGlvbiwgc2V0QWN0aW9uXSA9IHVzZVN0YXRlPHN0cmluZyB8IG51bGw+KG51bGwpXG4gIGNvbnN0IGlzR2VuZXJhdGluZyA9IHVzZUlzU2Vzc2lvbkdlbmVyYXRpbmcoY2hhdC5zZXNzaW9uRXh0ZXJuYWxJZClcbiAgY29uc3Qgc2Vzc2lvbk1ldGEgPSB1c2VTZXNzaW9uTWV0YShjaGF0LnNlc3Npb25FeHRlcm5hbElkKVxuICBjb25zdCBpc1VucmVhZCA9IGNoYXQuaXNSZWFkID09PSBmYWxzZSAmJiAhaXNHZW5lcmF0aW5nXG5cbiAgY29uc3QgbWVudUl0ZW1zID0gW1xuICAgIHtcbiAgICAgIGxhYmVsOiB0KCdoaXN0b3J5Lm1lbnUucmVuYW1lJyksXG4gICAgICBvbkNsaWNrSXRlbTogKGNoYXRJZDogc3RyaW5nKSA9PiB7XG4gICAgICAgIHNldEFjdGlvbignZWRpdCcpXG4gICAgICAgIG9uT3Blbk1vZGFsKGNoYXRJZClcbiAgICAgIH0sXG4gICAgICBJY29uOiBQZW5jaWwsXG4gICAgICBldmVudEtleTogRVZFTlRTLnBtQWlNZW51RWRpdCxcbiAgICB9LFxuICAgIHtcbiAgICAgIGxhYmVsOiB0KCdoaXN0b3J5Lm1lbnUuZGVsZXRlJyksXG4gICAgICBvbkNsaWNrSXRlbTogKGNoYXRJZDogc3RyaW5nKSA9PiB7XG4gICAgICAgIHNldEFjdGlvbignZGVsZXRlJylcbiAgICAgICAgb25PcGVuTW9kYWwoY2hhdElkKVxuICAgICAgfSxcbiAgICAgIEljb246IFRyYXNoLFxuICAgICAgZXZlbnRLZXk6IEVWRU5UUy5wbUFpTWVudURlbGV0ZSxcbiAgICB9LFxuICBdXG5cbiAgY29uc3QgaGFuZGxlQ29uZmlybUFjdGlvbiA9IChjaGF0RGF0YTogYW55KSA9PiB7XG4gICAgaWYgKGFjdGlvbiA9PT0gJ2VkaXQnKSB7XG4gICAgICBoYW5kbGVycy5oYW5kbGVVcGRhdGVDaGF0KGNoYXREYXRhKVxuICAgIH0gZWxzZSB7XG4gICAgICBoYW5kbGVycy5oYW5kbGVEZWxldGVDaGF0KGNoYXREYXRhKVxuICAgIH1cbiAgICBzZXRBY3Rpb24obnVsbClcbiAgICBvbkNsb3NlTW9kYWwoKVxuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgPFNDTEhDV3JhcHBlckNvbnRlbnRcbiAgICAgICAgb25DbGljaz17ZSA9PiB7XG4gICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKVxuICAgICAgICAgIG9uQ2xpY2soY2hhdClcbiAgICAgICAgfX1cbiAgICAgICAga2V5PXtgY29udmVyc2F0aW9uLSR7Y2hhdC5zZXNzaW9uRXh0ZXJuYWxJZH1gfVxuICAgICAgICBpc01vZGFsT3Blbj17aXNNb2RhbE9wZW59XG4gICAgICAgIGlzU2VsZWN0ZWQ9e2lzU2VsZWN0ZWR9XG4gICAgICAgICRpbmRleD17aW5kZXh9XG4gICAgICA+XG4gICAgICAgIDxTQ0xIQ1dyYXBwZXI+XG4gICAgICAgICAgPFNDTEhDV3JhcHBlclRpdGxlUm93PlxuICAgICAgICAgICAge2lzR2VuZXJhdGluZyB8fCBpc1VucmVhZCA/IChcbiAgICAgICAgICAgICAgPFNlc3Npb25HZW5lcmF0aW5nRG90XG4gICAgICAgICAgICAgICAgYXJpYUxhYmVsPXtpc0dlbmVyYXRpbmcgPyB0KCdjb252ZXJzYXRpb25zLmdlbmVyYXRpbmcnKSA6IHQoJ2NvbnZlcnNhdGlvbnMudW5yZWFkTGFiZWwnKX1cbiAgICAgICAgICAgICAgICBpc1dyaXRpbmc9e2lzR2VuZXJhdGluZyAmJiBzZXNzaW9uTWV0YT8uaXNXcml0aW5nfVxuICAgICAgICAgICAgICAgIGFuaW1hdGVkPXtpc0dlbmVyYXRpbmd9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICAgIDxUb29sdGlwIHRpdGxlPXtzaG93VG9vbHRpcCA/IGRpc3BsYXlUaXRsZSA6ICcnfSB6SW5kZXg9e3Rvb2x0aXBaSW5kZXh9PlxuICAgICAgICAgICAgICA8U0NMSENXcmFwcGVyVGl0bGUgcmVmPXt0ZXh0UmVmfSAkdW5yZWFkPXtpc1VucmVhZH0+XG4gICAgICAgICAgICAgICAge2Rpc3BsYXlUaXRsZSB8fCB0KCdjb252ZXJzYXRpb25zLmVtcHR5TGFiZWwnKX1cbiAgICAgICAgICAgICAgPC9TQ0xIQ1dyYXBwZXJUaXRsZT5cbiAgICAgICAgICAgIDwvVG9vbHRpcD5cbiAgICAgICAgICA8L1NDTEhDV3JhcHBlclRpdGxlUm93PlxuICAgICAgICAgIDxUb29sdGlwXG4gICAgICAgICAgICB0aXRsZT17c2hvd1Rvb2x0aXBBZ2VudCA/IGRpc3BsYXlBZ2VudCArIChjb250ZXh0TmFtZSA/IGAgLSAke2NvbnRleHROYW1lfWAgOiAnJykgOiAnJ31cbiAgICAgICAgICAgIHpJbmRleD17dG9vbHRpcFpJbmRleH1cbiAgICAgICAgICA+XG4gICAgICAgICAgICA8U0NMSENXcmFwcGVyQWdlbnQ+XG4gICAgICAgICAgICAgIHtjaGF0LmFnZW50VHlwZSA9PT0gJ2Nsb25lJyB8fCBjaGF0LmFnZW50VHlwZSA9PT0gJ29yY2hlc3RyYXRvcicgPyAoXG4gICAgICAgICAgICAgICAgPE1BSUFJY29uIHdpZHRoPXsxNH0gaGVpZ2h0PXsxNH0gLz5cbiAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICA8c3BhbiBzdHlsZT17eyBmb250U2l6ZTogJzE0cHgnIH19PntjaGF0LmVtb2ppfTwvc3Bhbj5cbiAgICAgICAgICAgICAgKX1cblxuICAgICAgICAgICAgICA8U0NMSENXcmFwcGVyQWdlbnRUZXh0IHJlZj17YWdlbnRSZWZ9PlxuICAgICAgICAgICAgICAgIHtjaGF0LmFnZW50VHlwZSA9PT0gJ2Nsb25lJyB8fCBjaGF0LmFnZW50VHlwZSA9PT0gJ29yY2hlc3RyYXRvcidcbiAgICAgICAgICAgICAgICAgID8gYWJicmV2aWF0ZVNwZWNpYWxpc3RJbkFnZW50TmFtZShjaGF0LmFnZW50KVxuICAgICAgICAgICAgICAgICAgOiBjaGF0LmFnZW50fVxuICAgICAgICAgICAgICAgIHtjaGF0LnByb2plY3ROYW1lICYmIGAgLSAke2NoYXQucHJvamVjdE5hbWV9YH1cbiAgICAgICAgICAgICAgPC9TQ0xIQ1dyYXBwZXJBZ2VudFRleHQ+XG4gICAgICAgICAgICA8L1NDTEhDV3JhcHBlckFnZW50PlxuICAgICAgICAgIDwvVG9vbHRpcD5cbiAgICAgICAgPC9TQ0xIQ1dyYXBwZXI+XG4gICAgICAgIDxTQ0xIQ1dyYXBwZXJCdXR0b25BY3Rpb25zPlxuICAgICAgICAgIDxDVUJ1dHRvblxuICAgICAgICAgICAgaWNvbk9ubHlcbiAgICAgICAgICAgIHNpemU9XCJzbWFsbFwiXG4gICAgICAgICAgICB2YXJpYW50PVwidGV4dFwiXG4gICAgICAgICAgICBvbkNsaWNrPXtldmVudCA9PiB7XG4gICAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXG4gICAgICAgICAgICAgIG9uT3Blbk1vZGFsKGNoYXQuaWQpXG4gICAgICAgICAgICB9fVxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxNZW51RG90cyB3aWR0aD17MjB9IGhlaWdodD17MjB9IC8+XG4gICAgICAgICAgPC9DVUJ1dHRvbj5cbiAgICAgICAgICB7aXNNb2RhbE9wZW4gJiYgIWFjdGlvbiAmJiAoXG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIGRhdGEtbW9kYWwtY29udGFpbmVyXG4gICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgcG9zaXRpb246ICdhYnNvbHV0ZScsXG4gICAgICAgICAgICAgICAgdG9wOiAnMzJweCcsXG4gICAgICAgICAgICAgICAgcmlnaHQ6ICcxNnB4JyxcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6ICd3aGl0ZScsXG4gICAgICAgICAgICAgICAgekluZGV4OiAxMDAwLFxuICAgICAgICAgICAgICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICAgICAgICAgICAgICBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJyxcbiAgICAgICAgICAgICAgICBib3JkZXJSYWRpdXM6ICc0cHgnLFxuICAgICAgICAgICAgICAgIGJvcmRlcjogJzFweCBzb2xpZCByZ2JhKDIyNCwgMjI0LCAyMjQsIDEpJyxcbiAgICAgICAgICAgICAgICBtaW5XaWR0aDogJzEyNHB4JyxcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge21lbnVJdGVtcy5tYXAoKHsgbGFiZWwsIG9uQ2xpY2tJdGVtLCBJY29uLCBldmVudEtleSB9KSA9PiAoXG4gICAgICAgICAgICAgICAgPE9wdGlvbkl0ZW1cbiAgICAgICAgICAgICAgICAgIGtleT17bGFiZWx9XG4gICAgICAgICAgICAgICAgICBsYWJlbD17bGFiZWx9XG4gICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBvbkNsaWNrSXRlbShjaGF0LmlkKX1cbiAgICAgICAgICAgICAgICAgIEljb249e0ljb259XG4gICAgICAgICAgICAgICAgICBldmVudEtleT17ZXZlbnRLZXl9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICApfVxuICAgICAgICA8L1NDTEhDV3JhcHBlckJ1dHRvbkFjdGlvbnM+XG4gICAgICA8L1NDTEhDV3JhcHBlckNvbnRlbnQ+XG4gICAgICB7ISFhY3Rpb24gJiZcbiAgICAgICAgYWN0aW9uc1thY3Rpb25dKHtcbiAgICAgICAgICBvbkNsb3NlOiAoKSA9PiB7XG4gICAgICAgICAgICBvbkNsb3NlTW9kYWwoKVxuICAgICAgICAgICAgc2V0QWN0aW9uKG51bGwpXG4gICAgICAgICAgfSxcbiAgICAgICAgICBjaGF0LFxuICAgICAgICAgIGhhbmRsZXJzOiB7XG4gICAgICAgICAgICBoYW5kbGVDb25maXJtQWN0aW9uLFxuICAgICAgICAgICAgaGFuZGxlU2V0SXNPcGVuTW9kYWw6IG9uQ2xvc2VNb2RhbCxcbiAgICAgICAgICB9LFxuICAgICAgICB9KX1cbiAgICA8Lz5cbiAgKVxufVxuXG5leHBvcnQgY29uc3QgU2lkZWJhciA9ICh7XG4gIG9uR29Ub0NoYXQsXG4gIG9uRXJyb3IgPSAoKSA9PiBudWxsLFxuICBoYW5kbGVHb1RvSG9tZSxcbiAgaGFuZGxlU3RhcnROZXdDaGF0LFxuICBoYW5kbGVPcGVuTWFya2V0cGxhY2UsXG4gIGhhbmRsZU9wZW5Ta2lsbHMsXG4gIG9uT3Blbk1haWFrZXJDcmVhdG9yLFxuICBzaG93TmV3Q2hhdCxcbiAgcmVmZXRjaENoYXRzLFxuICBoYW5kbGVTZXRSZWZldGNoQ2hhdHMsXG4gIGhhc0Vycm9yLFxuICBhZ2VudHNOYXZBY3RpdmUgPSBudWxsLFxuICBpc0xlZ2FjeUNvbnRleHRTZXNzaW9uID0gZmFsc2UsXG4gIGluaXRpYWxPcGVuID0gZmFsc2UsXG4gIG9uT3BlbkNoYW5nZSxcbn06IHtcbiAgb25Hb1RvQ2hhdDogKGNoYXRJZDogc3RyaW5nKSA9PiB2b2lkXG4gIG9uRXJyb3I6ICgpID0+IHZvaWRcbiAgaGFuZGxlR29Ub0hvbWU6ICgpID0+IHZvaWRcbiAgLyoqIEluaWNpYSB1biBjaGF0IG51ZXZvOyBlbiBNaXMgYWdlbnRlcyAvIE1haWFrZXIgLyBNaXMgc2tpbGxzIHVzYSBlbCBwcmltZXIgYWdlbnRlIGRlIGxhIGxpc3RhLiAqL1xuICBoYW5kbGVTdGFydE5ld0NoYXQ/OiAoKSA9PiB2b2lkXG4gIGhhbmRsZU9wZW5NYXJrZXRwbGFjZTogKCkgPT4gdm9pZFxuICBoYW5kbGVPcGVuU2tpbGxzOiAoKSA9PiB2b2lkXG4gIC8qKiBBYnJlIGVsIGNyZWFkb3IgTWFpYWtlciAobWlzbWEgbMOzZ2ljYSBxdWUgZWwgaHViIGRlbCBtb2RhbCkuICovXG4gIG9uT3Blbk1haWFrZXJDcmVhdG9yPzogKCkgPT4gdm9pZCB8IFByb21pc2U8dm9pZD5cbiAgc2hvd05ld0NoYXQ6IGJvb2xlYW5cbiAgcmVmZXRjaENoYXRzOiBib29sZWFuXG4gIGhhbmRsZVNldFJlZmV0Y2hDaGF0czogKHJlZmV0Y2g6IGJvb2xlYW4pID0+IHZvaWRcbiAgaGFzRXJyb3I6IGJvb2xlYW5cbiAgLyoqIFJlc2FsdGEgTWFpYWtlciwgTWlzIGFnZW50ZXMgbyBNaXMgc2tpbGxzICovXG4gIGFnZW50c05hdkFjdGl2ZT86ICdtYWlha2VyJyB8ICdteUFnZW50cycgfCAnbXlTa2lsbHMnIHwgbnVsbFxuICAvKiogQ29udmVyc2FjacOzbiBkZSB1biBjbG9uZSBsZWdhY3kgKGFnZW50X3R5cGUgY2xvbmUgKyBlbnRpdHkgcHJvamVjdC9jbGllbnQvdGFzayk6IG9jdWx0YSBcIm51ZXZvIGNoYXRcIi4gKi9cbiAgaXNMZWdhY3lDb250ZXh0U2Vzc2lvbj86IGJvb2xlYW5cbiAgLyoqIEVzdGFkbyBpbmljaWFsIGRlbCBzaWRlYmFyIChyZXN0YXVyYWNpw7NuIGRlIHNlc2nDs24gdHJhcyBuYXZlZ2FjacOzbikuICovXG4gIGluaXRpYWxPcGVuPzogYm9vbGVhblxuICBvbk9wZW5DaGFuZ2U/OiAob3BlbjogYm9vbGVhbikgPT4gdm9pZFxufSkgPT4ge1xuICBjb25zdCB7IHQsIGkxOG4gfSA9IHVzZVQoKVxuICBjb25zdCB0b29sdGlwWkluZGV4ID0gdXNlTWFpYVRhc2tQYW5lbFpJbmRleCgxNTAwLCAnb3ZlcmxheScpXG4gIGNvbnN0IFtpc09wZW4sIHNldElzT3Blbl0gPSB1c2VTdGF0ZShpbml0aWFsT3BlbilcbiAgY29uc3QgW2lzT3Blbk1vZGFsLCBzZXRJc09wZW5Nb2RhbF0gPSB1c2VTdGF0ZTxzdHJpbmcgfCBudWxsPihudWxsKVxuICBjb25zdCBhY3RpdmVDaGF0SWQgPSB1c2VDaGF0c1N0b3JlKHN0YXRlID0+IHN0YXRlLmFjdGl2ZUNoYXRJZClcbiAgY29uc3QgY2hhdHNGZXRjaGVkUmVmID0gdXNlUmVmKGZhbHNlKVxuICBjb25zdCBjaGF0c0NvbnRhaW5lclJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbClcbiAgY29uc3QgdXNlciA9IHVzZVVzZXIoKVxuICBjb25zdCBldmVudEFtcGxpdHVkZSA9IHVzZUV2ZW50KClcbiAgY29uc3QgeyBhZ2VudDogc2VsZWN0ZWRBZ2VudCwgc2VsZWN0QWdlbnQsIHNldFByb2plY3QsIHNldENsaWVudCwgc2V0VGFzayB9ID0gdXNlR2xvYmFsQ29udGV4dCgpXG4gIGNvbnN0IHtcbiAgICBsb2FkaW5nQ2hhdHMsXG4gICAgY2hhdHMsXG4gICAgZGVsZXRlQ2hhdCxcbiAgICB1cGRhdGVDaGF0LFxuICAgIGZldGNoQ2hhdHMsXG4gICAgbGltaXQsXG4gICAgb2Zmc2V0LFxuICAgIGhhc01vcmVDaGF0cyxcbiAgICBsb2FkTW9yZUNoYXRzLFxuICAgIGlzTG9hZGluZ01vcmVDaGF0cyxcbiAgICBzZXRVbnJlYWRDb3VudCxcbiAgICBzZXRDaGF0UmVhZFN0YXRlLFxuICB9ID0gdXNlQ2hhdHMoe1xuICAgIG9uRXJyb3IsXG4gIH0pXG5cbiAgY29uc3QgdW5yZWFkU3Vic2NyaWJlZFJlZiA9IHVzZVJlZihmYWxzZSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghdXNlcj8uaWQgfHwgdHlwZW9mICRfc2MgPT09ICd1bmRlZmluZWQnIHx8ICEkX3NjKSByZXR1cm4gdW5kZWZpbmVkXG5cbiAgICBjb25zdCBjaGFubmVsID0gYHNlc3Npb25zLnVucmVhZDoke3VzZXIuaWR9YFxuICAgIGNvbnN0IGhhbmRsZVVucmVhZEV2ZW50ID0gKHtcbiAgICAgIG1vZGVsX2RhdGE6IG1vZGVsRGF0YSxcbiAgICB9OiB7XG4gICAgICBtb2RlbF9kYXRhPzogeyB1bnJlYWRfY291bnQ/OiBudW1iZXI7IHNlc3Npb25faWQ/OiBzdHJpbmc7IGlzX3JlYWQ/OiBib29sZWFuIH1cbiAgICB9KSA9PiB7XG4gICAgICBpZiAodHlwZW9mIG1vZGVsRGF0YT8udW5yZWFkX2NvdW50ID09PSAnbnVtYmVyJykge1xuICAgICAgICBzZXRVbnJlYWRDb3VudChtb2RlbERhdGEudW5yZWFkX2NvdW50KVxuICAgICAgfVxuICAgICAgaWYgKG1vZGVsRGF0YT8uc2Vzc2lvbl9pZCAmJiB0eXBlb2YgbW9kZWxEYXRhPy5pc19yZWFkID09PSAnYm9vbGVhbicpIHtcbiAgICAgICAgc2V0Q2hhdFJlYWRTdGF0ZShtb2RlbERhdGEuc2Vzc2lvbl9pZCwgbW9kZWxEYXRhLmlzX3JlYWQpXG4gICAgICB9XG4gICAgfVxuXG4gICAgJF9zYy5zdWJzY3JpYmVIYW5kbGVyKGNoYW5uZWwsIGhhbmRsZVVucmVhZEV2ZW50KVxuXG4gICAgaWYgKCF1bnJlYWRTdWJzY3JpYmVkUmVmLmN1cnJlbnQpIHtcbiAgICAgICRfc2MudXBkYXRlQ29ubmVjdGlvbk1vZGVsKFxuICAgICAgICB7XG4gICAgICAgICAgbW9kZWxfaGFzaDogY2hhbm5lbCxcbiAgICAgICAgICBhY3Rpb246ICRfc2MuYWN0aW9uVHlwZT8uU1VCU0NSSUJFLFxuICAgICAgICB9LFxuICAgICAgICBjaGFubmVsLFxuICAgICAgICB1c2VyLFxuICAgICAgICB1c2VyLFxuICAgICAgICAkX3NjLmNoYW5uZWxUeXBlPy5NT0RFTF9DSEFOTkVMXG4gICAgICApXG4gICAgICB1bnJlYWRTdWJzY3JpYmVkUmVmLmN1cnJlbnQgPSB0cnVlXG4gICAgfVxuXG4gICAgcmV0dXJuIHVuZGVmaW5lZFxuICB9LCBbdXNlciwgc2V0VW5yZWFkQ291bnQsIHNldENoYXRSZWFkU3RhdGVdKVxuXG4gIGNvbnN0IHVzZXJQZXJtaXNzaW9ucyA9IHVzZXI/LnBlcm1pc3Npb25zPy5haV9hZ2VudHNcbiAgY29uc3QgY2FuQ3JlYXRlQWdlbnRzID0gISF1c2VyUGVybWlzc2lvbnM/LmNyZWF0ZVxuICBjb25zdCBoYXNNdWx0aUFnZW50c0ZlYXR1cmVBY2Nlc3MgPSAhIXdpbmRvdy5NQUlBX0NIQVRfQUlfRkVBVFVSRV9BQ0NFU1NfTVVMVElfQUdFTlRTXG4gIGNvbnN0IGNhblZpZXdBZ2VudHMgPSAhIXVzZXJQZXJtaXNzaW9ucz8udmlldyAmJiBoYXNNdWx0aUFnZW50c0ZlYXR1cmVBY2Nlc3NcbiAgY29uc3QgY2FuVmlld1NraWxscyA9IGNhbkFjY2Vzc1RvU2tpbGxzKHVzZXIpICYmICh1c2VyPy5jb21wYW55X2lkID09PSAyMzM2IHx8IHVzZXI/LmNvbXBhbnlfaWQgPT09IDEzMzAzKVxuICBjb25zdCBzaG93TWFya2V0cGxhY2VTaWRlYmFyQnV0dG9uID0gISFjYW5DcmVhdGVBZ2VudHMgJiYgaGFzTXVsdGlBZ2VudHNGZWF0dXJlQWNjZXNzXG4gIGNvbnN0IGFnZW50TmF2QnV0dG9uQ291bnQgPSAoKHNob3dNYXJrZXRwbGFjZVNpZGViYXJCdXR0b24gPyAxIDogMCkgK1xuICAgIChjYW5WaWV3QWdlbnRzID8gMSA6IDApICtcbiAgICAoY2FuVmlld1NraWxscyA/IDEgOiAwKSkgYXMgMCB8IDEgfCAyIHwgM1xuICBjb25zdCBzaG93QWdlbnRzTmF2QmxvY2sgPSBzaG93TWFya2V0cGxhY2VTaWRlYmFyQnV0dG9uIHx8IGNhblZpZXdBZ2VudHMgfHwgY2FuVmlld1NraWxsc1xuICBjb25zdCBteUFnZW50c1NpZGViYXJUcmFja2VkUmVmID0gdXNlUmVmKGZhbHNlKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFjYW5WaWV3QWdlbnRzIHx8IG15QWdlbnRzU2lkZWJhclRyYWNrZWRSZWYuY3VycmVudCkgcmV0dXJuXG5cbiAgICBteUFnZW50c1NpZGViYXJUcmFja2VkUmVmLmN1cnJlbnQgPSB0cnVlXG4gICAgdHJhY2tBcHBjdWVzRXZlbnQoQVBQQ1VFU19FVkVOVFMubWFpYVNpZGViYXJNeUFnZW50cylcbiAgfSwgW2NhblZpZXdBZ2VudHNdKVxuXG4gIGNvbnN0IGhhbmRsZURlbGV0ZUNoYXQgPSBhc3luYyAoY2hhdDogYW55KSA9PiB7XG4gICAgZGVsZXRlQ2hhdChjaGF0LnNlc3Npb25FeHRlcm5hbElkKVxuICAgIHNldElzT3Blbk1vZGFsKG51bGwpXG4gICAgaGFuZGxlR29Ub0hvbWUoKVxuICB9XG5cbiAgY29uc3QgaGFuZGxlVXBkYXRlQ2hhdCA9IChjaGF0OiBhbnkpID0+IHtcbiAgICB1cGRhdGVDaGF0KGNoYXQpXG4gICAgc2V0SXNPcGVuTW9kYWwobnVsbClcbiAgfVxuXG4gIGNvbnN0IGhhbmRsZU9wZW5Nb2RhbCA9IChjaGF0SWQ6IHN0cmluZykgPT4ge1xuICAgIGlmIChpc09wZW5Nb2RhbCAmJiBpc09wZW5Nb2RhbCAhPT0gY2hhdElkKSB7XG4gICAgICBzZXRJc09wZW5Nb2RhbChudWxsKVxuICAgIH0gZWxzZSB7XG4gICAgICBzZXRJc09wZW5Nb2RhbChjaGF0SWQpXG4gICAgfVxuICB9XG5cbiAgY29uc3QgaGFuZGxlQ2xvc2VNb2RhbCA9ICgpID0+IHtcbiAgICBzZXRJc09wZW5Nb2RhbChudWxsKVxuICB9XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBoYW5kbGVDbGlja091dHNpZGUgPSAoZXZlbnQ6IE1vdXNlRXZlbnQpID0+IHtcbiAgICAgIGlmIChpc09wZW5Nb2RhbCAmJiAhKGV2ZW50LnRhcmdldCBhcyBFbGVtZW50KS5jbG9zZXN0KCdbZGF0YS1tb2RhbC1jb250YWluZXJdJykpIHtcbiAgICAgICAgc2V0SXNPcGVuTW9kYWwobnVsbClcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoaXNPcGVuTW9kYWwpIHtcbiAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlZG93bicsIGhhbmRsZUNsaWNrT3V0c2lkZSlcbiAgICB9XG5cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2Vkb3duJywgaGFuZGxlQ2xpY2tPdXRzaWRlKVxuICAgIH1cbiAgfSwgW2lzT3Blbk1vZGFsXSlcblxuICBjb25zdCBoYW5kbGVUb2dnbGVTaWRlYmFyID0gKCkgPT4ge1xuICAgIGlmIChpc09wZW5Nb2RhbCkge1xuICAgICAgc2V0SXNPcGVuTW9kYWwobnVsbClcbiAgICB9XG4gICAgZXZlbnRBbXBsaXR1ZGUoRVZFTlRTLmFpQ2hhdFNpZGViYXIsIHsgYWN0aW9uOiBpc09wZW4gPyAnY2xvc2UnIDogJ29wZW4nIH0pXG4gICAgc2V0SXNPcGVuKHByZXYgPT4ge1xuICAgICAgY29uc3QgbmV4dCA9ICFwcmV2XG4gICAgICBvbk9wZW5DaGFuZ2U/LihuZXh0KVxuICAgICAgcmV0dXJuIG5leHRcbiAgICB9KVxuICB9XG5cbiAgY29uc3QgaGFuZGxlT3BlbkNyZWF0ZUFnZW50ID0gYXN5bmMgKCkgPT4ge1xuICAgIGlmIChvbk9wZW5NYWlha2VyQ3JlYXRvcikge1xuICAgICAgdHJ5IHtcbiAgICAgICAgYXdhaXQgb25PcGVuTWFpYWtlckNyZWF0b3IoKVxuICAgICAgfSBjYXRjaCB7XG4gICAgICAgIG9uRXJyb3IoKVxuICAgICAgfVxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2hNYWlhKHtcbiAgICAgICAgcGF0aDogYGFnZW50cz9hZ2VudF90eXBlPWNsb25lJmVudGl0eT1nbG9iYWwmbGFuZz0ke21hcENPUkxhbmcoaTE4bi5sYW5ndWFnZSl9YCxcbiAgICAgICAgbWV0aG9kOiAnR0VUJyxcbiAgICAgIH0pXG4gICAgICBjb25zdCBkYXRhID0gYXdhaXQgcmVzcG9uc2UuanNvbigpXG4gICAgICBjb25zdCBtYWlha2VyQWdlbnQgPSAoZGF0YS5kYXRhIHx8IFtdKS5maW5kKChhZ2VudEl0ZW06IHsgdHlwZT86IHN0cmluZzsgZW50aXR5Pzogc3RyaW5nOyBuYW1lPzogc3RyaW5nIH0pID0+XG4gICAgICAgIGlzTWFya2V0cGxhY2VHbG9iYWxDbG9uZUFnZW50KGFnZW50SXRlbSlcbiAgICAgIClcblxuICAgICAgaWYgKCFtYWlha2VyQWdlbnQpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIHNldFByb2plY3QobnVsbClcbiAgICAgIHNldENsaWVudD8uKG51bGwpXG4gICAgICBzZXRUYXNrKG51bGwpXG4gICAgICAvLyBoYW5kbGVHb1RvSG9tZSBwdWVkZSByZXNlbGVjY2lvbmFyIGFnZW50cy5kYXRhWzBdIHNpIGVsIGFnZW50ZSBnbG9iYWwgYXVuIGVzdGEgZW4gbnVsbFxuICAgICAgLy8gKGNsb3N1cmUgc3RhbGUgZGUgbGEgc2VjY2lvbiBcIk1pcyBhZ2VudGVzXCIpLCBwb3IgZXNvIHNlbGVjdEFnZW50KG1haWFrZXJBZ2VudCkgdmEgZGVzcHVlcy5cbiAgICAgIGhhbmRsZUdvVG9Ib21lKClcbiAgICAgIHNlbGVjdEFnZW50KG1haWFrZXJBZ2VudClcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgb25FcnJvcigpXG4gICAgfVxuICB9XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIWNoYXRzRmV0Y2hlZFJlZi5jdXJyZW50KSB7XG4gICAgICBjaGF0c0ZldGNoZWRSZWYuY3VycmVudCA9IHRydWVcbiAgICAgIGZldGNoQ2hhdHMoeyBsaW1pdCwgb2Zmc2V0IH0pXG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgLy8gUmVmZXRjaCBzb2xpY2l0YWRvIHBvciBwcm9wOiBzZSBlamVjdXRhIGF1bnF1ZSBlbCBzaWRlYmFyIGVzdMOpIGNvbGFwc2Fkby5cbiAgICBpZiAocmVmZXRjaENoYXRzKSB7XG4gICAgICBmZXRjaENoYXRzKHsgbGltaXQsIG9mZnNldCB9KVxuICAgICAgaGFuZGxlU2V0UmVmZXRjaENoYXRzKGZhbHNlKVxuICAgIH1cbiAgfSwgW3JlZmV0Y2hDaGF0cywgaGFuZGxlU2V0UmVmZXRjaENoYXRzLCBmZXRjaENoYXRzLCBsaW1pdCwgb2Zmc2V0XSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGhhbmRsZVNjcm9sbCA9ICgpID0+IHtcbiAgICAgIGlmICghY2hhdHNDb250YWluZXJSZWYuY3VycmVudCB8fCAhaGFzTW9yZUNoYXRzIHx8IGlzTG9hZGluZ01vcmVDaGF0cyB8fCBoYXNFcnJvcikge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgY29uc3QgeyBzY3JvbGxUb3AsIHNjcm9sbEhlaWdodCwgY2xpZW50SGVpZ2h0IH0gPSBjaGF0c0NvbnRhaW5lclJlZi5jdXJyZW50XG4gICAgICBjb25zdCBpc0F0Qm90dG9tID0gc2Nyb2xsVG9wICsgY2xpZW50SGVpZ2h0ID49IHNjcm9sbEhlaWdodCAtIDEwXG5cbiAgICAgIGlmIChpc0F0Qm90dG9tKSB7XG4gICAgICAgIGxvYWRNb3JlQ2hhdHMoKVxuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IGNvbnRhaW5lciA9IGNoYXRzQ29udGFpbmVyUmVmLmN1cnJlbnRcbiAgICBpZiAoY29udGFpbmVyKSB7XG4gICAgICBjb250YWluZXIuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgaGFuZGxlU2Nyb2xsKVxuICAgIH1cblxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBpZiAoY29udGFpbmVyKSB7XG4gICAgICAgIGNvbnRhaW5lci5yZW1vdmVFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBoYW5kbGVTY3JvbGwpXG4gICAgICB9XG4gICAgfVxuICB9LCBbaGFzTW9yZUNoYXRzLCBpc0xvYWRpbmdNb3JlQ2hhdHMsIGxvYWRNb3JlQ2hhdHMsIGhhc0Vycm9yXSlcblxuICBjb25zdCBoYW5kbGVOZXdDaGF0ID0gKCkgPT4ge1xuICAgIGV2ZW50QW1wbGl0dWRlKEVWRU5UUy5haVNpZGViYXJOZXdDaGF0KVxuICAgIGlmIChpc09wZW5Nb2RhbCkge1xuICAgICAgc2V0SXNPcGVuTW9kYWwobnVsbClcbiAgICB9XG4gICAgaWYgKGhhbmRsZVN0YXJ0TmV3Q2hhdCkge1xuICAgICAgaGFuZGxlU3RhcnROZXdDaGF0KClcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBoYW5kbGVHb1RvSG9tZSgpXG4gIH1cblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIC8vIEFsIGNyZWFyL2FjdHVhbGl6YXIgdW5hIGNvbnZlcnNhY2nDs24gcmVmcmVzY2Ftb3MgbGEgbGlzdGEgYXVucXVlIGVsIHNpZGViYXIgZXN0w6kgY29sYXBzYWRvLlxuICAgIGNvbnN0IGhhbmRsZVJlZmV0Y2hTZXNzaW9uID0gKCkgPT4ge1xuICAgICAgY2hhdHNGZXRjaGVkUmVmLmN1cnJlbnQgPSB0cnVlXG4gICAgICBmZXRjaENoYXRzKHsgbGltaXQ6IDIwLCBvZmZzZXQ6IDAsIGJhY2tncm91bmQ6IHRydWUgfSlcbiAgICB9XG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigncmVmZXRjaC1zZXNzaW9uJywgaGFuZGxlUmVmZXRjaFNlc3Npb24pXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3JlZmV0Y2gtc2Vzc2lvbicsIGhhbmRsZVJlZmV0Y2hTZXNzaW9uKVxuICAgIH1cbiAgfSwgW2ZldGNoQ2hhdHNdKVxuXG4gIGNvbnN0IGlzQWdlbnRzSHViU2VjdGlvbiA9XG4gICAgc2hvd05ld0NoYXQgJiYgKGFnZW50c05hdkFjdGl2ZSA9PT0gJ215QWdlbnRzJyB8fCBhZ2VudHNOYXZBY3RpdmUgPT09ICdtYWlha2VyJyB8fCBhZ2VudHNOYXZBY3RpdmUgPT09ICdteVNraWxscycpXG5cbiAgY29uc3Qgc2hvd05ld0NoYXRCdXR0b24gPVxuICAgIGlzQWdlbnRzSHViU2VjdGlvbiB8fFxuICAgICghc2hvd05ld0NoYXQgJiZcbiAgICAgICFoYXNFcnJvciAmJlxuICAgICAgIWxvYWRpbmdDaGF0cyAmJlxuICAgICAgIWlzTGVnYWN5Q29udGV4dFNlc3Npb24gJiZcbiAgICAgICgodXNlclBlcm1pc3Npb25zPy52aWV3ICYmXG4gICAgICAgICFzZWxlY3RlZEFnZW50Py5pc19kZWxldGVkICYmXG4gICAgICAgICFzZWxlY3RlZEFnZW50Py5oYXNfbm90X3Blcm1pc3Npb25zICYmXG4gICAgICAgICFzZWxlY3RlZEFnZW50Py5oYXNfbm90X2FjY2VzcykgfHxcbiAgICAgICAgKCF1c2VyUGVybWlzc2lvbnM/LnZpZXcgJiZcbiAgICAgICAgICAhc2VsZWN0ZWRBZ2VudD8uaXNfZGVsZXRlZCAmJlxuICAgICAgICAgICFzZWxlY3RlZEFnZW50Py5oYXNfbm90X3Blcm1pc3Npb25zICYmXG4gICAgICAgICAgIXNlbGVjdGVkQWdlbnQ/Lmhhc19ub3RfYWNjZXNzKSkpXG5cbiAgcmV0dXJuIChcbiAgICA8U0NTU2lkZWJhclJvb3QgJGlzT3Blbj17aXNPcGVufT5cbiAgICAgIDxTQ1NTaWRlYmFyVG9vbGJhciAkaXNPcGVuPXtpc09wZW59PlxuICAgICAgICA8VG9vbHRpcCB0aXRsZT17aXNPcGVuID8gdCgnY29udmVyc2F0aW9ucy5jb2xsYXBzZScpIDogdCgnaGlzdG9yeS50b29sdGlwJyl9IHpJbmRleD17dG9vbHRpcFpJbmRleH0+XG4gICAgICAgICAgPFNDU1dyYXBwZXJDb2xsYXBzZWRCdXR0b24gb25DbGljaz17aGFuZGxlVG9nZ2xlU2lkZWJhcn0gaXNPcGVuPXtpc09wZW59PlxuICAgICAgICAgICAge2lzT3BlbiA/IChcbiAgICAgICAgICAgICAgPENoZXZyb25Eb3VibGVMZWZ0IGNvbG9yPVwicmdiYSgxMDIsIDEwMiwgMTAyLCAxKVwiIHdpZHRoPXsxNn0gaGVpZ2h0PXsxNn0gLz5cbiAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgIDxIaXN0b3J5IGNvbG9yPVwicmdiYSgxMywgMTMsIDEzLCAxKVwiIHdpZHRoPXsyMH0gaGVpZ2h0PXsyMH0gLz5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgPC9TQ1NXcmFwcGVyQ29sbGFwc2VkQnV0dG9uPlxuICAgICAgICA8L1Rvb2x0aXA+XG4gICAgICAgIHtzaG93TmV3Q2hhdEJ1dHRvbiA/IChcbiAgICAgICAgICA8VG9vbHRpcCB0aXRsZT17dCgnY29udmVyc2F0aW9ucy5uZXdDaGF0Jyl9IHpJbmRleD17dG9vbHRpcFpJbmRleH0+XG4gICAgICAgICAgICA8U0NTV3JhcHBlck5ld0NoYXRJY29uIG9uQ2xpY2s9e2hhbmRsZU5ld0NoYXR9IGFyaWEtbGFiZWw9e3QoJ2NvbnZlcnNhdGlvbnMubmV3Q2hhdCcpfT5cbiAgICAgICAgICAgICAgPE5ld0NoYXQgd2lkdGg9ezE2fSBoZWlnaHQ9ezE2fSAvPlxuICAgICAgICAgICAgPC9TQ1NXcmFwcGVyTmV3Q2hhdEljb24+XG4gICAgICAgICAgPC9Ub29sdGlwPlxuICAgICAgICApIDogbnVsbH1cbiAgICAgICAgeyFpc09wZW4gJiYgc2hvd0FnZW50c05hdkJsb2NrID8gKFxuICAgICAgICAgIDw+XG4gICAgICAgICAgICA8U0NTU2lkZWJhckNvbGxhcHNlZERpdmlkZXIgLz5cbiAgICAgICAgICAgIHtzaG93TWFya2V0cGxhY2VTaWRlYmFyQnV0dG9uID8gKFxuICAgICAgICAgICAgICA8VG9vbHRpcCB0aXRsZT17dCgnY29udmVyc2F0aW9ucy5tYWlha2VyTmF2Jyl9IHpJbmRleD17dG9vbHRpcFpJbmRleH0+XG4gICAgICAgICAgICAgICAgPFNDU1dyYXBwZXJBZ2VudHNOYXZJY29uXG4gICAgICAgICAgICAgICAgICAkYWN0aXZlPXthZ2VudHNOYXZBY3RpdmUgPT09ICdtYWlha2VyJ31cbiAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgZXZlbnRBbXBsaXR1ZGUoRVZFTlRTLmFpQ2hhdE1wT3BlbilcbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlT3BlbkNyZWF0ZUFnZW50KClcbiAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPE1haWFTdG9yZUljb24gc2l6ZT17MTZ9IC8+XG4gICAgICAgICAgICAgICAgPC9TQ1NXcmFwcGVyQWdlbnRzTmF2SWNvbj5cbiAgICAgICAgICAgICAgPC9Ub29sdGlwPlxuICAgICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgICB7Y2FuVmlld0FnZW50cyA/IChcbiAgICAgICAgICAgICAgPFRvb2x0aXAgdGl0bGU9e3QoJ2NvbnZlcnNhdGlvbnMubXlBZ2VudHNOYXYnKX0gekluZGV4PXt0b29sdGlwWkluZGV4fT5cbiAgICAgICAgICAgICAgICA8U0NTV3JhcHBlckFnZW50c05hdkljb25cbiAgICAgICAgICAgICAgICAgICRhY3RpdmU9e2FnZW50c05hdkFjdGl2ZSA9PT0gJ215QWdlbnRzJ31cbiAgICAgICAgICAgICAgICAgIGRhdGEtYXBwY3Vlcz17QVBQQ1VFU19TRUxFQ1RPUlMubWFpYVNpZGViYXJNeUFnZW50c31cbiAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgZXZlbnRBbXBsaXR1ZGUoRVZFTlRTLmFpU2lkZWJhck15QWdlbnRzKVxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVPcGVuTWFya2V0cGxhY2UoKVxuICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8TXlBZ2VudHNOYXZJY29uIHNpemU9ezE2fSAvPlxuICAgICAgICAgICAgICAgIDwvU0NTV3JhcHBlckFnZW50c05hdkljb24+XG4gICAgICAgICAgICAgIDwvVG9vbHRpcD5cbiAgICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgICAge2NhblZpZXdTa2lsbHMgPyAoXG4gICAgICAgICAgICAgIDxUb29sdGlwIHRpdGxlPXt0KCdjb252ZXJzYXRpb25zLm15U2tpbGxzTmF2Jyl9IHpJbmRleD17dG9vbHRpcFpJbmRleH0+XG4gICAgICAgICAgICAgICAgPFNDU1dyYXBwZXJBZ2VudHNOYXZJY29uXG4gICAgICAgICAgICAgICAgICAkYWN0aXZlPXthZ2VudHNOYXZBY3RpdmUgPT09ICdteVNraWxscyd9XG4gICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGV2ZW50QW1wbGl0dWRlKEVWRU5UUy5haVNpZGViYXJNeVNraWxscylcbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlT3BlblNraWxscygpXG4gICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxTa2lsbHNOYXZJY29uIHNpemU9ezE2fSAvPlxuICAgICAgICAgICAgICAgIDwvU0NTV3JhcHBlckFnZW50c05hdkljb24+XG4gICAgICAgICAgICAgIDwvVG9vbHRpcD5cbiAgICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgIDwvPlxuICAgICAgICApIDogbnVsbH1cbiAgICAgIDwvU0NTU2lkZWJhclRvb2xiYXI+XG4gICAgICA8U0NTU2lkZWJhckJvZHkgJGlzT3Blbj17aXNPcGVufT5cbiAgICAgICAge2lzT3BlbiA/IChcbiAgICAgICAgICA8U0NTU2lkZWJhck9wZW5QYW5lbD5cbiAgICAgICAgICAgIDxTQ1NTaWRlYmFyQWdlbnRzQmxvY2s+XG4gICAgICAgICAgICAgIHtzaG93QWdlbnRzTmF2QmxvY2sgPyAoXG4gICAgICAgICAgICAgICAgPFNDU1NpZGViYXJBZ2VudHNBY3Rpb25zPlxuICAgICAgICAgICAgICAgICAge3Nob3dNYXJrZXRwbGFjZVNpZGViYXJCdXR0b24gPyAoXG4gICAgICAgICAgICAgICAgICAgIDxTQ1NTaWRlYmFyTWFpYWtlck5hdkJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50QW1wbGl0dWRlKEVWRU5UUy5haUNoYXRNcE9wZW4pXG4gICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVPcGVuQ3JlYXRlQWdlbnQoKVxuICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgJGFjdGl2ZT17YWdlbnRzTmF2QWN0aXZlID09PSAnbWFpYWtlcid9XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICA8TWFpYVN0b3JlSWNvbiBzaXplPXsxNn0gLz5cbiAgICAgICAgICAgICAgICAgICAgICA8U0NTU2lkZWJhck1haWFrZXJOYXZMYWJlbD57dCgnY29udmVyc2F0aW9ucy5tYWlha2VyTmF2Jyl9PC9TQ1NTaWRlYmFyTWFpYWtlck5hdkxhYmVsPlxuICAgICAgICAgICAgICAgICAgICA8L1NDU1NpZGViYXJNYWlha2VyTmF2QnV0dG9uPlxuICAgICAgICAgICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgICAgICAgICB7Y2FuVmlld0FnZW50cyA/IChcbiAgICAgICAgICAgICAgICAgICAgPFNDU1NpZGViYXJNYWlha2VyTmF2QnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgZGF0YS1hcHBjdWVzPXtBUFBDVUVTX1NFTEVDVE9SUy5tYWlhU2lkZWJhck15QWdlbnRzfVxuICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50QW1wbGl0dWRlKEVWRU5UUy5haVNpZGViYXJNeUFnZW50cylcbiAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZU9wZW5NYXJrZXRwbGFjZSgpXG4gICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAkYWN0aXZlPXthZ2VudHNOYXZBY3RpdmUgPT09ICdteUFnZW50cyd9XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICA8TXlBZ2VudHNOYXZJY29uIHNpemU9ezE2fSAvPlxuICAgICAgICAgICAgICAgICAgICAgIDxTQ1NTaWRlYmFyTWFpYWtlck5hdkxhYmVsPnt0KCdjb252ZXJzYXRpb25zLm15QWdlbnRzTmF2Jyl9PC9TQ1NTaWRlYmFyTWFpYWtlck5hdkxhYmVsPlxuICAgICAgICAgICAgICAgICAgICA8L1NDU1NpZGViYXJNYWlha2VyTmF2QnV0dG9uPlxuICAgICAgICAgICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgICAgICAgICB7Y2FuVmlld1NraWxscyA/IChcbiAgICAgICAgICAgICAgICAgICAgPFNDU1NpZGViYXJNYWlha2VyTmF2QnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnRBbXBsaXR1ZGUoRVZFTlRTLmFpU2lkZWJhck15U2tpbGxzKVxuICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlT3BlblNraWxscygpXG4gICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAkYWN0aXZlPXthZ2VudHNOYXZBY3RpdmUgPT09ICdteVNraWxscyd9XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICA8U2tpbGxzTmF2SWNvbiBzaXplPXsxNn0gLz5cbiAgICAgICAgICAgICAgICAgICAgICA8U0NTU2lkZWJhck1haWFrZXJOYXZMYWJlbD57dCgnY29udmVyc2F0aW9ucy5teVNraWxsc05hdicpfTwvU0NTU2lkZWJhck1haWFrZXJOYXZMYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICA8U0NTU2lkZWJhck1haWFrZXJOYXZCYWRnZU5ldz57dCgnaG9tZU1lbnUubWFpYWtlci5iYWRnZU5ldycpfTwvU0NTU2lkZWJhck1haWFrZXJOYXZCYWRnZU5ldz5cbiAgICAgICAgICAgICAgICAgICAgPC9TQ1NTaWRlYmFyTWFpYWtlck5hdkJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgICAgICAgIDwvU0NTU2lkZWJhckFnZW50c0FjdGlvbnM+XG4gICAgICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgICAgICA8U0NTU2lkZWJhckNvbnZlcnNhdGlvbnNIZWFkaW5nUm93PlxuICAgICAgICAgICAgICAgIDxTQ1NTaWRlYmFyQ29udmVyc2F0aW9uc0hlYWRpbmc+e3QoJ2NvbnZlcnNhdGlvbnMudGl0bGUnKX08L1NDU1NpZGViYXJDb252ZXJzYXRpb25zSGVhZGluZz5cbiAgICAgICAgICAgICAgPC9TQ1NTaWRlYmFyQ29udmVyc2F0aW9uc0hlYWRpbmdSb3c+XG4gICAgICAgICAgICA8L1NDU1NpZGViYXJBZ2VudHNCbG9jaz5cbiAgICAgICAgICAgIDxTQ1NTaWRlYmFyQ2hhdHNTY3JvbGxcbiAgICAgICAgICAgICAgcmVmPXtjaGF0c0NvbnRhaW5lclJlZn1cbiAgICAgICAgICAgICAgJGhhc0NoYXRzPXtjaGF0cy5sZW5ndGggPiAwfVxuICAgICAgICAgICAgICAkb2Zmc2V0VmFyaWFudD17aGFzRXJyb3IgPyAnZXJyb3InIDogJ2RlZmF1bHQnfVxuICAgICAgICAgICAgICAkYWdlbnROYXZCdXR0b25Db3VudD17YWdlbnROYXZCdXR0b25Db3VudH1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge2hhc0Vycm9yICYmICFjaGF0cy5sZW5ndGggPyAoXG4gICAgICAgICAgICAgICAgPFNDU1NpZGViYXJFcnJvclN0YXRlQ29sdW1uPlxuICAgICAgICAgICAgICAgICAgPFNDU1NpZGViYXJFcnJvclN0YXRlVG9wPlxuICAgICAgICAgICAgICAgICAgICA8RXJyb3JTdGF0ZSAvPlxuICAgICAgICAgICAgICAgICAgPC9TQ1NTaWRlYmFyRXJyb3JTdGF0ZVRvcD5cbiAgICAgICAgICAgICAgICAgIDxTQ1NTaWRlYmFyRXJyb3JCYW5uZXI+XG4gICAgICAgICAgICAgICAgICAgIDxTQ1NTaWRlYmFyRXJyb3JCYW5uZXJJY29uV3JhcD5cbiAgICAgICAgICAgICAgICAgICAgICA8RXJyb3JJY29uIC8+XG4gICAgICAgICAgICAgICAgICAgIDwvU0NTU2lkZWJhckVycm9yQmFubmVySWNvbldyYXA+XG4gICAgICAgICAgICAgICAgICAgIDxTQ1NTaWRlYmFyRXJyb3JCYW5uZXJNZXNzYWdlPnt0KCdjb252ZXJzYXRpb25zLmVycm9yJyl9PC9TQ1NTaWRlYmFyRXJyb3JCYW5uZXJNZXNzYWdlPlxuICAgICAgICAgICAgICAgICAgPC9TQ1NTaWRlYmFyRXJyb3JCYW5uZXI+XG4gICAgICAgICAgICAgICAgPC9TQ1NTaWRlYmFyRXJyb3JTdGF0ZUNvbHVtbj5cbiAgICAgICAgICAgICAgKSA6IGxvYWRpbmdDaGF0cyA/IChcbiAgICAgICAgICAgICAgICA8U0NTU2lkZWJhckxvYWRpbmdBcmVhPlxuICAgICAgICAgICAgICAgICAgPFNpZGViYXJDaGF0c1NrZWxldG9uIC8+XG4gICAgICAgICAgICAgICAgPC9TQ1NTaWRlYmFyTG9hZGluZ0FyZWE+XG4gICAgICAgICAgICAgICkgOiBjaGF0cy5sZW5ndGggPyAoXG4gICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgIHtjaGF0cy5tYXAoKGNoYXQsIGluZGV4KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgPExpc3RIaXN0b3J5Q2hhdFxuICAgICAgICAgICAgICAgICAgICAgICAga2V5PXtjaGF0LmlkfVxuICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXg9e2luZGV4fVxuICAgICAgICAgICAgICAgICAgICAgICAgY2hhdD17Y2hhdH1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e2NoYXREYXRhID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzT3Blbk1vZGFsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0SXNPcGVuTW9kYWwobnVsbClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICBvbkdvVG9DaGF0KGNoYXREYXRhKVxuICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIGlzTW9kYWxPcGVuPXtpc09wZW5Nb2RhbCA9PT0gY2hhdC5pZH1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uT3Blbk1vZGFsPXtoYW5kbGVPcGVuTW9kYWx9XG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNsb3NlTW9kYWw9e2hhbmRsZUNsb3NlTW9kYWx9XG4gICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVycz17e1xuICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVEZWxldGVDaGF0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVVcGRhdGVDaGF0LFxuICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIGlzU2VsZWN0ZWQ9e2FjdGl2ZUNoYXRJZCA9PT0gY2hhdC5zZXNzaW9uRXh0ZXJuYWxJZH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHRvb2x0aXBaSW5kZXg9e3Rvb2x0aXBaSW5kZXh9XG4gICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgfSl9XG4gICAgICAgICAgICAgICAgICB7aXNMb2FkaW5nTW9yZUNoYXRzICYmIChcbiAgICAgICAgICAgICAgICAgICAgPFNDU1NpZGViYXJMb2FkTW9yZVJvdz5cbiAgICAgICAgICAgICAgICAgICAgICA8U2lkZWJhckNoYXRzU2tlbGV0b24gY291bnQ9ezJ9IC8+XG4gICAgICAgICAgICAgICAgICAgIDwvU0NTU2lkZWJhckxvYWRNb3JlUm93PlxuICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICA8Lz5cbiAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICA8U0NTU2lkZWJhckVtcHR5Q2hhdHM+XG4gICAgICAgICAgICAgICAgICA8RW1wdHlIaXN0b3J5SWNvbiAvPlxuICAgICAgICAgICAgICAgICAgPFNDU1NpZGViYXJFbXB0eUNoYXRzVGV4dD57dCgnY29udmVyc2F0aW9ucy5lbXB0eScpfTwvU0NTU2lkZWJhckVtcHR5Q2hhdHNUZXh0PlxuICAgICAgICAgICAgICAgIDwvU0NTU2lkZWJhckVtcHR5Q2hhdHM+XG4gICAgICAgICAgICAgICl9XG4gICAgICAgICAgICA8L1NDU1NpZGViYXJDaGF0c1Njcm9sbD5cbiAgICAgICAgICAgIDxTQ1NTaWRlYmFyQ2hhdHNGb290ZXI+XG4gICAgICAgICAgICAgIHtoYXNFcnJvciAmJiBjaGF0cy5sZW5ndGggPyAoXG4gICAgICAgICAgICAgICAgPFNDU1NpZGViYXJFcnJvckJhbm5lcj5cbiAgICAgICAgICAgICAgICAgIDxTQ1NTaWRlYmFyRXJyb3JCYW5uZXJJY29uV3JhcD5cbiAgICAgICAgICAgICAgICAgICAgPEVycm9ySWNvbiAvPlxuICAgICAgICAgICAgICAgICAgPC9TQ1NTaWRlYmFyRXJyb3JCYW5uZXJJY29uV3JhcD5cbiAgICAgICAgICAgICAgICAgIDxTQ1NTaWRlYmFyRXJyb3JCYW5uZXJNZXNzYWdlPnt0KCdjb252ZXJzYXRpb25zLmVycm9yJyl9PC9TQ1NTaWRlYmFyRXJyb3JCYW5uZXJNZXNzYWdlPlxuICAgICAgICAgICAgICAgIDwvU0NTU2lkZWJhckVycm9yQmFubmVyPlxuICAgICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICAgIDwvU0NTU2lkZWJhckNoYXRzRm9vdGVyPlxuICAgICAgICAgIDwvU0NTU2lkZWJhck9wZW5QYW5lbD5cbiAgICAgICAgKSA6IG51bGx9XG4gICAgICAgIDxTQ1NTaWRlYmFyRm9vdGVyQWN0aW9ucyAkaXNPcGVuPXtpc09wZW59ICRqdXN0aWZ5QmV0d2Vlbj17ISFzZWxlY3RlZEFnZW50fT5cbiAgICAgICAgICB7c2VsZWN0ZWRBZ2VudCA/IDxGZWVkYmFja0J1dHRvbiBzZWxlY3RlZEFnZW50PXtzZWxlY3RlZEFnZW50fSBpc09wZW49e2lzT3Blbn0gLz4gOiBudWxsfVxuICAgICAgICA8L1NDU1NpZGViYXJGb290ZXJBY3Rpb25zPlxuICAgICAgPC9TQ1NTaWRlYmFyQm9keT5cbiAgICA8L1NDU1NpZGViYXJSb290PlxuICApXG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTQSxTQUFTLEVBQUVDLE9BQU8sRUFBRUMsTUFBTSxFQUFFQyxRQUFRLFFBQVEsT0FBTztBQUM1RCxTQUFTQyxpQkFBaUIsUUFBUSxvREFBb0Q7QUFDdEYsU0FBU0MsT0FBTyxRQUFRLDBDQUEwQztBQUNsRSxTQUFTQyxRQUFRLFFBQVEsNENBQTRDO0FBQ3JFLFNBQVNDLFFBQVEsUUFBUSwyQ0FBMkM7QUFDcEUsU0FBU0MsTUFBTSxRQUFRLHlDQUF5QztBQUNoRSxTQUFTQyxLQUFLLFFBQVEsd0NBQXdDO0FBRTlELFNBQVNDLE9BQU8sUUFBUSw4Q0FBOEM7QUFFdEUsU0FBU0MsZ0JBQWdCLFFBQVEsZ0NBQWdDO0FBQ2pFLFNBQVNDLGlCQUFpQixRQUFRLDBCQUEwQjtBQUM1RCxTQUFTQyxRQUFRLFFBQVEseUJBQXlCO0FBQ2xELFNBQVNDLG9CQUFvQixRQUFRLG9CQUFvQjtBQUN6RCxTQUFTQyxVQUFVLEVBQUVDLFFBQVEsRUFBRUMsYUFBYSxFQUFFQyxlQUFlLEVBQUVDLGFBQWEsRUFBRUMsT0FBTyxRQUFRLG1CQUFtQjtBQUNoSCxTQUFTQyxNQUFNLEVBQUVDLFFBQVEsUUFBUSx5QkFBeUI7QUFDMUQsU0FBU0MsSUFBSSxRQUFRLHFCQUFxQjtBQUMxQyxTQUFTQyxVQUFVLFFBQVEsK0JBQStCO0FBQzFELFNBQVNDLGlCQUFpQixRQUFRLG1DQUFtQztBQUNyRSxTQUFTQyxtQkFBbUIsUUFBUSxxQ0FBcUM7QUFDekUsU0FBU0MsU0FBUyxRQUFRLDZCQUE2QjtBQUN2RCxTQUFTQyxPQUFPLFFBQVEsMkJBQTJCO0FBQ25ELFNBQVNDLGNBQWMsUUFBUSw0QkFBNEI7QUFDM0QsU0FBU0MsZ0JBQWdCLFFBQVEsaUNBQWlDO0FBQ2xFLFNBQVNDLFNBQVMsUUFBUSwrQkFBK0I7QUFDekQsU0FBU0MsaUJBQWlCLFFBQVEsZ0NBQWdDO0FBQ2xFLFNBQVNDLFVBQVUsUUFBUSxxQkFBcUI7QUFDaEQsU0FBU0MsMkJBQTJCLFFBQVEsc0NBQXNDO0FBQ2xGLFNBQVNDLG1CQUFtQixFQUFFQyw2QkFBNkIsUUFBUSxpQ0FBaUM7QUFDcEcsU0FBU0MsY0FBYyxFQUFFQyxpQkFBaUIsRUFBRUMsaUJBQWlCLFFBQVEsMkJBQTJCO0FBQ2hHLFNBQVNDLG9CQUFvQixRQUFRLGtDQUFrQztBQUN2RSxTQUFTQyxzQkFBc0IsRUFBRUMsY0FBYyxRQUFRLHdDQUF3QztBQUMvRixTQUFTQyxzQkFBc0IsUUFBUSx1Q0FBdUM7QUFDOUUsU0FBU0MsYUFBYSxRQUFRLDhCQUE4QjtBQUM1RCxTQUNFQyxZQUFZLEVBQ1pDLGlCQUFpQixFQUNqQkMscUJBQXFCLEVBQ3JCQyx5QkFBeUIsRUFDekJDLG1CQUFtQixFQUNuQkMsaUJBQWlCLEVBQ2pCQyxvQkFBb0IsRUFDcEJDLHlCQUF5QixFQUN6QkMscUJBQXFCLEVBQ3JCQyx1QkFBdUIsUUFDbEIsa0JBQWtCO0FBQ3pCLFNBQ0VDLGNBQWMsRUFDZEMsaUJBQWlCLEVBQ2pCQyxjQUFjLEVBQ2RDLG1CQUFtQixFQUNuQkMscUJBQXFCLEVBQ3JCQyx1QkFBdUIsRUFDdkJDLDBCQUEwQixFQUMxQkMseUJBQXlCLEVBQ3pCQyw0QkFBNEIsRUFDNUJDLDhCQUE4QixFQUM5QkMsaUNBQWlDLEVBQ2pDQyxxQkFBcUIsRUFDckJDLDBCQUEwQixFQUMxQkMsdUJBQXVCLEVBQ3ZCQyxxQkFBcUIsRUFDckJDLDZCQUE2QixFQUM3QkMsNEJBQTRCLEVBQzVCQyxxQkFBcUIsRUFDckJDLHFCQUFxQixFQUNyQkMsb0JBQW9CLEVBQ3BCQyx3QkFBd0IsRUFDeEJDLHFCQUFxQixFQUNyQkMsdUJBQXVCLEVBQ3ZCQywwQkFBMEIsUUFDckIseUJBQXlCO0FBQUEsU0FBQUMsR0FBQSxJQUFBQyxJQUFBLEVBQUFDLElBQUEsSUFBQUMsS0FBQSxFQUFBQyxRQUFBLElBQUFDLFNBQUE7QUFFaEMsSUFBTUMsT0FBTyxHQUFHO0VBQ2RDLElBQUksRUFBRSxTQUFOQSxJQUFJQSxDQUFHQyxLQUFVO0lBQUEsb0JBQUtQLElBQUEsQ0FBQ3ZELGlCQUFpQixFQUFBK0QsYUFBQSxLQUFLRCxLQUFLLENBQUcsQ0FBQztFQUFBO0VBQ3RELFVBQVEsU0FBUkUsT0FBTUEsQ0FBR0YsS0FBVTtJQUFBLG9CQUFLUCxJQUFBLENBQUN0RCxtQkFBbUIsRUFBQThELGFBQUEsS0FBS0QsS0FBSyxDQUFHLENBQUM7RUFBQTtBQUM1RCxDQUFDOztBQUVEO0FBQ0EsU0FBU0csK0JBQStCQSxDQUFDQyxTQUFpQixFQUFVO0VBQ2xFLElBQUksQ0FBQ0EsU0FBUyxJQUFJLE9BQU9BLFNBQVMsS0FBSyxRQUFRLEVBQUUsT0FBT0EsU0FBUztFQUNqRSxPQUFPQSxTQUFTLENBQUNDLE9BQU8sQ0FBQyxrQ0FBa0MsRUFBRSxNQUFNLENBQUMsQ0FBQ0EsT0FBTyxDQUFDLGtCQUFrQixFQUFFLE9BQU8sQ0FBQztBQUMzRztBQUVBLElBQU1DLGVBQWUsR0FBRyxTQUFsQkEsZUFBZUEsQ0FBQUMsSUFBQSxFQXVCZjtFQUFBLElBdEJKQyxJQUFJLEdBQUFELElBQUEsQ0FBSkMsSUFBSTtJQUNKQyxRQUFPLEdBQUFGLElBQUEsQ0FBUEUsT0FBTztJQUNQQyxXQUFXLEdBQUFILElBQUEsQ0FBWEcsV0FBVztJQUNYQyxXQUFXLEdBQUFKLElBQUEsQ0FBWEksV0FBVztJQUNYQyxZQUFZLEdBQUFMLElBQUEsQ0FBWkssWUFBWTtJQUNaQyxRQUFRLEdBQUFOLElBQUEsQ0FBUk0sUUFBUTtJQUNSQyxVQUFVLEdBQUFQLElBQUEsQ0FBVk8sVUFBVTtJQUNWQyxLQUFLLEdBQUFSLElBQUEsQ0FBTFEsS0FBSztJQUNMQyxhQUFhLEdBQUFULElBQUEsQ0FBYlMsYUFBYTtFQWViLElBQU1DLE9BQU8sR0FBR3RHLE1BQU0sQ0FBaUIsSUFBSSxDQUFDO0VBQzVDLElBQU11RyxRQUFRLEdBQUd2RyxNQUFNLENBQWlCLElBQUksQ0FBQztFQUM3QyxJQUFNd0csWUFBWSxHQUFHekcsT0FBTyxDQUFDO0lBQUEsT0FBTWlDLDJCQUEyQixDQUFDNkQsSUFBSSxDQUFDWSxLQUFLLENBQUM7RUFBQSxHQUFFLENBQUNaLElBQUksQ0FBQ1ksS0FBSyxDQUFDLENBQUM7RUFDekYsSUFBTUMsWUFBWSxHQUFHekUsbUJBQW1CLENBQUM0RCxJQUFJLENBQUNjLFNBQVMsRUFBRWQsSUFBSSxDQUFDZSxLQUFLLENBQUM7RUFDcEUsSUFBTUMsV0FBVyxHQUFHaEIsSUFBSSxDQUFDaUIsV0FBVyxJQUFJakIsSUFBSSxDQUFDa0IsVUFBVTtFQUN2RCxJQUFBQyxrQkFBQSxHQUF3QnRHLGlCQUFpQixDQUFDNEYsT0FBTyxFQUFFLENBQUNFLFlBQVksQ0FBQyxDQUFDO0lBQTFEUyxXQUFXLEdBQUFELGtCQUFBLENBQVhDLFdBQVc7RUFDbkIsSUFBQUMsbUJBQUEsR0FBMEN4RyxpQkFBaUIsQ0FBQzZGLFFBQVEsRUFBRSxDQUFDVixJQUFJLENBQUNlLEtBQUssQ0FBQyxDQUFDO0lBQTlETyxnQkFBZ0IsR0FBQUQsbUJBQUEsQ0FBN0JELFdBQVc7RUFDbkIsSUFBQUcsS0FBQSxHQUFjL0YsSUFBSSxDQUFDLENBQUM7SUFBWmdHLENBQUMsR0FBQUQsS0FBQSxDQUFEQyxDQUFDO0VBQ1QsSUFBQUMsU0FBQSxHQUE0QnJILFFBQVEsQ0FBZ0IsSUFBSSxDQUFDO0lBQUFzSCxVQUFBLEdBQUFDLGNBQUEsQ0FBQUYsU0FBQTtJQUFsREcsTUFBTSxHQUFBRixVQUFBO0lBQUVHLFNBQVMsR0FBQUgsVUFBQTtFQUN4QixJQUFNSSxZQUFZLEdBQUdwRixzQkFBc0IsQ0FBQ3NELElBQUksQ0FBQytCLGlCQUFpQixDQUFDO0VBQ25FLElBQU1DLFdBQVcsR0FBR3JGLGNBQWMsQ0FBQ3FELElBQUksQ0FBQytCLGlCQUFpQixDQUFDO0VBQzFELElBQU1FLFFBQVEsR0FBR2pDLElBQUksQ0FBQ2tDLE1BQU0sS0FBSyxLQUFLLElBQUksQ0FBQ0osWUFBWTtFQUV2RCxJQUFNSyxTQUFTLEdBQUcsQ0FDaEI7SUFDRUMsS0FBSyxFQUFFWixDQUFDLENBQUMscUJBQXFCLENBQUM7SUFDL0JhLFdBQVcsRUFBRSxTQUFiQSxXQUFXQSxDQUFHQyxNQUFjLEVBQUs7TUFDL0JULFNBQVMsQ0FBQyxNQUFNLENBQUM7TUFDakIxQixXQUFXLENBQUNtQyxNQUFNLENBQUM7SUFDckIsQ0FBQztJQUNEQyxJQUFJLEVBQUU5SCxNQUFNO0lBQ1orSCxRQUFRLEVBQUVsSCxNQUFNLENBQUNtSDtFQUNuQixDQUFDLEVBQ0Q7SUFDRUwsS0FBSyxFQUFFWixDQUFDLENBQUMscUJBQXFCLENBQUM7SUFDL0JhLFdBQVcsRUFBRSxTQUFiQSxXQUFXQSxDQUFHQyxNQUFjLEVBQUs7TUFDL0JULFNBQVMsQ0FBQyxRQUFRLENBQUM7TUFDbkIxQixXQUFXLENBQUNtQyxNQUFNLENBQUM7SUFDckIsQ0FBQztJQUNEQyxJQUFJLEVBQUU3SCxLQUFLO0lBQ1g4SCxRQUFRLEVBQUVsSCxNQUFNLENBQUNvSDtFQUNuQixDQUFDLENBQ0Y7RUFFRCxJQUFNQyxtQkFBbUIsR0FBRyxTQUF0QkEsbUJBQW1CQSxDQUFJQyxRQUFhLEVBQUs7SUFDN0MsSUFBSWhCLE1BQU0sS0FBSyxNQUFNLEVBQUU7TUFDckJ2QixRQUFRLENBQUN3QyxnQkFBZ0IsQ0FBQ0QsUUFBUSxDQUFDO0lBQ3JDLENBQUMsTUFBTTtNQUNMdkMsUUFBUSxDQUFDeUMsZ0JBQWdCLENBQUNGLFFBQVEsQ0FBQztJQUNyQztJQUNBZixTQUFTLENBQUMsSUFBSSxDQUFDO0lBQ2Z6QixZQUFZLENBQUMsQ0FBQztFQUNoQixDQUFDO0VBRUQsb0JBQ0VqQixLQUFBLENBQUFFLFNBQUE7SUFBQTBELFFBQUEsZ0JBQ0U1RCxLQUFBLENBQUNqQyxtQkFBbUI7TUFDbEIrQyxPQUFPLEVBQUUsU0FBVEEsT0FBT0EsQ0FBRStDLENBQUMsRUFBSTtRQUNaQSxDQUFDLENBQUNDLGVBQWUsQ0FBQyxDQUFDO1FBQ25CaEQsUUFBTyxDQUFDRCxJQUFJLENBQUM7TUFDZixDQUFFO01BRUZFLFdBQVcsRUFBRUEsV0FBWTtNQUN6QkksVUFBVSxFQUFFQSxVQUFXO01BQ3ZCNEMsTUFBTSxFQUFFM0MsS0FBTTtNQUFBd0MsUUFBQSxnQkFFZDVELEtBQUEsQ0FBQ3JDLFlBQVk7UUFBQWlHLFFBQUEsZ0JBQ1g1RCxLQUFBLENBQUMvQixvQkFBb0I7VUFBQTJGLFFBQUEsR0FDbEJqQixZQUFZLElBQUlHLFFBQVEsZ0JBQ3ZCaEQsSUFBQSxDQUFDeEMsb0JBQW9CO1lBQ25CMEcsU0FBUyxFQUFFckIsWUFBWSxHQUFHTixDQUFDLENBQUMsMEJBQTBCLENBQUMsR0FBR0EsQ0FBQyxDQUFDLDJCQUEyQixDQUFFO1lBQ3pGNEIsU0FBUyxFQUFFdEIsWUFBWSxLQUFJRSxXQUFXLGFBQVhBLFdBQVcsdUJBQVhBLFdBQVcsQ0FBRW9CLFNBQVMsQ0FBQztZQUNsREMsUUFBUSxFQUFFdkI7VUFBYSxDQUN4QixDQUFDLEdBQ0EsSUFBSSxlQUNSN0MsSUFBQSxDQUFDdEUsT0FBTztZQUFDaUcsS0FBSyxFQUFFUSxXQUFXLEdBQUdULFlBQVksR0FBRyxFQUFHO1lBQUMyQyxNQUFNLEVBQUU5QyxhQUFjO1lBQUF1QyxRQUFBLGVBQ3JFOUQsSUFBQSxDQUFDOUIsaUJBQWlCO2NBQUNvRyxHQUFHLEVBQUU5QyxPQUFRO2NBQUMrQyxPQUFPLEVBQUV2QixRQUFTO2NBQUFjLFFBQUEsRUFDaERwQyxZQUFZLElBQUlhLENBQUMsQ0FBQywwQkFBMEI7WUFBQyxDQUM3QjtVQUFDLENBQ2IsQ0FBQztRQUFBLENBQ1UsQ0FBQyxlQUN2QnZDLElBQUEsQ0FBQ3RFLE9BQU87VUFDTmlHLEtBQUssRUFBRVUsZ0JBQWdCLEdBQUdULFlBQVksSUFBSUcsV0FBVyxTQUFBeUMsTUFBQSxDQUFTekMsV0FBVyxJQUFLLEVBQUUsQ0FBQyxHQUFHLEVBQUc7VUFDdkZzQyxNQUFNLEVBQUU5QyxhQUFjO1VBQUF1QyxRQUFBLGVBRXRCNUQsS0FBQSxDQUFDcEMsaUJBQWlCO1lBQUFnRyxRQUFBLEdBQ2YvQyxJQUFJLENBQUNjLFNBQVMsS0FBSyxPQUFPLElBQUlkLElBQUksQ0FBQ2MsU0FBUyxLQUFLLGNBQWMsZ0JBQzlEN0IsSUFBQSxDQUFDaEUsUUFBUTtjQUFDeUksS0FBSyxFQUFFLEVBQUc7Y0FBQ0MsTUFBTSxFQUFFO1lBQUcsQ0FBRSxDQUFDLGdCQUVuQzFFLElBQUE7Y0FBTTJFLEtBQUssRUFBRTtnQkFBRUMsUUFBUSxFQUFFO2NBQU8sQ0FBRTtjQUFBZCxRQUFBLEVBQUUvQyxJQUFJLENBQUM4RDtZQUFLLENBQU8sQ0FDdEQsZUFFRDNFLEtBQUEsQ0FBQ25DLHFCQUFxQjtjQUFDdUcsR0FBRyxFQUFFN0MsUUFBUztjQUFBcUMsUUFBQSxHQUNsQy9DLElBQUksQ0FBQ2MsU0FBUyxLQUFLLE9BQU8sSUFBSWQsSUFBSSxDQUFDYyxTQUFTLEtBQUssY0FBYyxHQUM1RG5CLCtCQUErQixDQUFDSyxJQUFJLENBQUNlLEtBQUssQ0FBQyxHQUMzQ2YsSUFBSSxDQUFDZSxLQUFLLEVBQ2JmLElBQUksQ0FBQ2lCLFdBQVcsVUFBQXdDLE1BQUEsQ0FBVXpELElBQUksQ0FBQ2lCLFdBQVcsQ0FBRTtZQUFBLENBQ3hCLENBQUM7VUFBQSxDQUNQO1FBQUMsQ0FDYixDQUFDO01BQUEsQ0FDRSxDQUFDLGVBQ2Y5QixLQUFBLENBQUNsQyx5QkFBeUI7UUFBQThGLFFBQUEsZ0JBQ3hCOUQsSUFBQSxDQUFDMUUsUUFBUTtVQUNQd0osUUFBUTtVQUNSQyxJQUFJLEVBQUMsT0FBTztVQUNaQyxPQUFPLEVBQUMsTUFBTTtVQUNkaEUsT0FBTyxFQUFFLFNBQVRBLE9BQU9BLENBQUVpRSxLQUFLLEVBQUk7WUFDaEJBLEtBQUssQ0FBQ2pCLGVBQWUsQ0FBQyxDQUFDO1lBQ3ZCOUMsV0FBVyxDQUFDSCxJQUFJLENBQUNtRSxFQUFFLENBQUM7VUFDdEIsQ0FBRTtVQUFBcEIsUUFBQSxlQUVGOUQsSUFBQSxDQUFDekUsUUFBUTtZQUFDa0osS0FBSyxFQUFFLEVBQUc7WUFBQ0MsTUFBTSxFQUFFO1VBQUcsQ0FBRTtRQUFDLENBQzNCLENBQUMsRUFDVnpELFdBQVcsSUFBSSxDQUFDMEIsTUFBTSxpQkFDckIzQyxJQUFBO1VBQ0UsNEJBQW9CO1VBQ3BCMkUsS0FBSyxFQUFFO1lBQ0xRLFFBQVEsRUFBRSxVQUFVO1lBQ3BCQyxHQUFHLEVBQUUsTUFBTTtZQUNYQyxLQUFLLEVBQUUsTUFBTTtZQUNiQyxlQUFlLEVBQUUsT0FBTztZQUN4QmpCLE1BQU0sRUFBRSxJQUFJO1lBQ1prQixPQUFPLEVBQUUsTUFBTTtZQUNmQyxhQUFhLEVBQUUsUUFBUTtZQUN2QkMsWUFBWSxFQUFFLEtBQUs7WUFDbkJDLE1BQU0sRUFBRSxrQ0FBa0M7WUFDMUNDLFFBQVEsRUFBRTtVQUNaLENBQUU7VUFBQTdCLFFBQUEsRUFFRFosU0FBUyxDQUFDMEMsR0FBRyxDQUFDLFVBQUFDLEtBQUE7WUFBQSxJQUFHMUMsS0FBSyxHQUFBMEMsS0FBQSxDQUFMMUMsS0FBSztjQUFFQyxXQUFXLEdBQUF5QyxLQUFBLENBQVh6QyxXQUFXO2NBQUVFLElBQUksR0FBQXVDLEtBQUEsQ0FBSnZDLElBQUk7Y0FBRUMsUUFBUSxHQUFBc0MsS0FBQSxDQUFSdEMsUUFBUTtZQUFBLG9CQUNsRHZELElBQUEsQ0FBQ3hELFVBQVU7Y0FFVDJHLEtBQUssRUFBRUEsS0FBTTtjQUNibkMsT0FBTyxFQUFFLFNBQVRBLE9BQU9BLENBQUE7Z0JBQUEsT0FBUW9DLFdBQVcsQ0FBQ3JDLElBQUksQ0FBQ21FLEVBQUUsQ0FBQztjQUFBLENBQUM7Y0FDcEM1QixJQUFJLEVBQUVBLElBQUs7Y0FDWEMsUUFBUSxFQUFFQTtZQUFTLEdBSmRKLEtBS04sQ0FBQztVQUFBLENBQ0g7UUFBQyxDQUNDLENBQ047TUFBQSxDQUN3QixDQUFDO0lBQUEsbUJBQUFxQixNQUFBLENBL0VQekQsSUFBSSxDQUFDK0IsaUJBQWlCLENBZ0Z4QixDQUFDLEVBQ3JCLENBQUMsQ0FBQ0gsTUFBTSxJQUNQdEMsT0FBTyxDQUFDc0MsTUFBTSxDQUFDLENBQUM7TUFDZG1ELE9BQU8sRUFBRSxTQUFUQSxPQUFPQSxDQUFBLEVBQVE7UUFDYjNFLFlBQVksQ0FBQyxDQUFDO1FBQ2R5QixTQUFTLENBQUMsSUFBSSxDQUFDO01BQ2pCLENBQUM7TUFDRDdCLElBQUksRUFBSkEsSUFBSTtNQUNKSyxRQUFRLEVBQUU7UUFDUnNDLG1CQUFtQixFQUFuQkEsbUJBQW1CO1FBQ25CcUMsb0JBQW9CLEVBQUU1RTtNQUN4QjtJQUNGLENBQUMsQ0FBQztFQUFBLENBQ0osQ0FBQztBQUVQLENBQUM7QUFFRCxPQUFPLElBQU02RSxPQUFPLEdBQUcsU0FBVkEsT0FBT0EsQ0FBQUMsS0FBQSxFQXFDZDtFQUFBLElBQUFDLGlCQUFBO0VBQUEsSUFwQ0pDLFVBQVUsR0FBQUYsS0FBQSxDQUFWRSxVQUFVO0lBQUFDLGFBQUEsR0FBQUgsS0FBQSxDQUNWSSxPQUFPO0lBQVBBLE9BQU8sR0FBQUQsYUFBQSxjQUFHO01BQUEsT0FBTSxJQUFJO0lBQUEsSUFBQUEsYUFBQTtJQUNwQkUsY0FBYyxHQUFBTCxLQUFBLENBQWRLLGNBQWM7SUFDZEMsa0JBQWtCLEdBQUFOLEtBQUEsQ0FBbEJNLGtCQUFrQjtJQUNsQkMscUJBQXFCLEdBQUFQLEtBQUEsQ0FBckJPLHFCQUFxQjtJQUNyQkMsZ0JBQWdCLEdBQUFSLEtBQUEsQ0FBaEJRLGdCQUFnQjtJQUNoQkMsb0JBQW9CLEdBQUFULEtBQUEsQ0FBcEJTLG9CQUFvQjtJQUNwQkMsV0FBVyxHQUFBVixLQUFBLENBQVhVLFdBQVc7SUFDWEMsWUFBWSxHQUFBWCxLQUFBLENBQVpXLFlBQVk7SUFDWkMscUJBQXFCLEdBQUFaLEtBQUEsQ0FBckJZLHFCQUFxQjtJQUNyQkMsUUFBUSxHQUFBYixLQUFBLENBQVJhLFFBQVE7SUFBQUMscUJBQUEsR0FBQWQsS0FBQSxDQUNSZSxlQUFlO0lBQWZBLGVBQWUsR0FBQUQscUJBQUEsY0FBRyxJQUFJLEdBQUFBLHFCQUFBO0lBQUFFLHFCQUFBLEdBQUFoQixLQUFBLENBQ3RCaUIsc0JBQXNCO0lBQXRCQSxzQkFBc0IsR0FBQUQscUJBQUEsY0FBRyxLQUFLLEdBQUFBLHFCQUFBO0lBQUFFLGlCQUFBLEdBQUFsQixLQUFBLENBQzlCbUIsV0FBVztJQUFYQSxXQUFXLEdBQUFELGlCQUFBLGNBQUcsS0FBSyxHQUFBQSxpQkFBQTtJQUNuQkUsWUFBWSxHQUFBcEIsS0FBQSxDQUFab0IsWUFBWTtFQXVCWixJQUFBQyxNQUFBLEdBQW9CL0ssSUFBSSxDQUFDLENBQUM7SUFBbEJnRyxDQUFDLEdBQUErRSxNQUFBLENBQUQvRSxDQUFDO0lBQUVnRixJQUFJLEdBQUFELE1BQUEsQ0FBSkMsSUFBSTtFQUNmLElBQU1oRyxhQUFhLEdBQUc1RCxzQkFBc0IsQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDO0VBQzdELElBQUE2SixVQUFBLEdBQTRCck0sUUFBUSxDQUFDaU0sV0FBVyxDQUFDO0lBQUFLLFVBQUEsR0FBQS9FLGNBQUEsQ0FBQThFLFVBQUE7SUFBMUNFLE1BQU0sR0FBQUQsVUFBQTtJQUFFRSxTQUFTLEdBQUFGLFVBQUE7RUFDeEIsSUFBQUcsVUFBQSxHQUFzQ3pNLFFBQVEsQ0FBZ0IsSUFBSSxDQUFDO0lBQUEwTSxVQUFBLEdBQUFuRixjQUFBLENBQUFrRixVQUFBO0lBQTVERSxXQUFXLEdBQUFELFVBQUE7SUFBRUUsY0FBYyxHQUFBRixVQUFBO0VBQ2xDLElBQU1HLFlBQVksR0FBR3BLLGFBQWEsQ0FBQyxVQUFBcUssS0FBSztJQUFBLE9BQUlBLEtBQUssQ0FBQ0QsWUFBWTtFQUFBLEVBQUM7RUFDL0QsSUFBTUUsZUFBZSxHQUFHaE4sTUFBTSxDQUFDLEtBQUssQ0FBQztFQUNyQyxJQUFNaU4saUJBQWlCLEdBQUdqTixNQUFNLENBQWlCLElBQUksQ0FBQztFQUN0RCxJQUFNa04sSUFBSSxHQUFHeEwsT0FBTyxDQUFDLENBQUM7RUFDdEIsSUFBTXlMLGNBQWMsR0FBRy9MLFFBQVEsQ0FBQyxDQUFDO0VBQ2pDLElBQUFnTSxpQkFBQSxHQUE4RXhMLGdCQUFnQixDQUFDLENBQUM7SUFBakZ5TCxhQUFhLEdBQUFELGlCQUFBLENBQXBCeEcsS0FBSztJQUFpQjBHLFdBQVcsR0FBQUYsaUJBQUEsQ0FBWEUsV0FBVztJQUFFQyxVQUFVLEdBQUFILGlCQUFBLENBQVZHLFVBQVU7SUFBRUMsU0FBUyxHQUFBSixpQkFBQSxDQUFUSSxTQUFTO0lBQUVDLE9BQU8sR0FBQUwsaUJBQUEsQ0FBUEssT0FBTztFQUN6RSxJQUFBQyxTQUFBLEdBYUkvTSxRQUFRLENBQUM7TUFDWHdLLE9BQU8sRUFBUEE7SUFDRixDQUFDLENBQUM7SUFkQXdDLFlBQVksR0FBQUQsU0FBQSxDQUFaQyxZQUFZO0lBQ1pDLEtBQUssR0FBQUYsU0FBQSxDQUFMRSxLQUFLO0lBQ0xDLFVBQVUsR0FBQUgsU0FBQSxDQUFWRyxVQUFVO0lBQ1ZDLFVBQVUsR0FBQUosU0FBQSxDQUFWSSxVQUFVO0lBQ1ZDLFVBQVUsR0FBQUwsU0FBQSxDQUFWSyxVQUFVO0lBQ1ZDLEtBQUssR0FBQU4sU0FBQSxDQUFMTSxLQUFLO0lBQ0xDLE1BQU0sR0FBQVAsU0FBQSxDQUFOTyxNQUFNO0lBQ05DLFlBQVksR0FBQVIsU0FBQSxDQUFaUSxZQUFZO0lBQ1pDLGFBQWEsR0FBQVQsU0FBQSxDQUFiUyxhQUFhO0lBQ2JDLGtCQUFrQixHQUFBVixTQUFBLENBQWxCVSxrQkFBa0I7SUFDbEJDLGNBQWMsR0FBQVgsU0FBQSxDQUFkVyxjQUFjO0lBQ2RDLGdCQUFnQixHQUFBWixTQUFBLENBQWhCWSxnQkFBZ0I7RUFLbEIsSUFBTUMsbUJBQW1CLEdBQUd2TyxNQUFNLENBQUMsS0FBSyxDQUFDO0VBRXpDRixTQUFTLENBQUMsWUFBTTtJQUNkLElBQUksRUFBQ29OLElBQUksYUFBSkEsSUFBSSxlQUFKQSxJQUFJLENBQUVsRCxFQUFFLEtBQUksT0FBT3dFLElBQUksS0FBSyxXQUFXLElBQUksQ0FBQ0EsSUFBSSxFQUFFLE9BQU9DLFNBQVM7SUFFdkUsSUFBTUMsT0FBTyxzQkFBQXBGLE1BQUEsQ0FBc0I0RCxJQUFJLENBQUNsRCxFQUFFLENBQUU7SUFDNUMsSUFBTTJFLGlCQUFpQixHQUFHLFNBQXBCQSxpQkFBaUJBLENBQUFDLEtBQUEsRUFJakI7TUFBQSxJQUhRQyxTQUFTLEdBQUFELEtBQUEsQ0FBckJFLFVBQVU7TUFJVixJQUFJLFFBQU9ELFNBQVMsYUFBVEEsU0FBUyx1QkFBVEEsU0FBUyxDQUFFRSxZQUFZLE1BQUssUUFBUSxFQUFFO1FBQy9DVixjQUFjLENBQUNRLFNBQVMsQ0FBQ0UsWUFBWSxDQUFDO01BQ3hDO01BQ0EsSUFBSUYsU0FBUyxhQUFUQSxTQUFTLGVBQVRBLFNBQVMsQ0FBRUcsVUFBVSxJQUFJLFFBQU9ILFNBQVMsYUFBVEEsU0FBUyx1QkFBVEEsU0FBUyxDQUFFSSxPQUFPLE1BQUssU0FBUyxFQUFFO1FBQ3BFWCxnQkFBZ0IsQ0FBQ08sU0FBUyxDQUFDRyxVQUFVLEVBQUVILFNBQVMsQ0FBQ0ksT0FBTyxDQUFDO01BQzNEO0lBQ0YsQ0FBQztJQUVEVCxJQUFJLENBQUNVLGdCQUFnQixDQUFDUixPQUFPLEVBQUVDLGlCQUFpQixDQUFDO0lBRWpELElBQUksQ0FBQ0osbUJBQW1CLENBQUNZLE9BQU8sRUFBRTtNQUFBLElBQUFDLGdCQUFBLEVBQUFDLGlCQUFBO01BQ2hDYixJQUFJLENBQUNjLHFCQUFxQixDQUN4QjtRQUNFQyxVQUFVLEVBQUViLE9BQU87UUFDbkJqSCxNQUFNLEdBQUEySCxnQkFBQSxHQUFFWixJQUFJLENBQUNnQixVQUFVLGNBQUFKLGdCQUFBLHVCQUFmQSxnQkFBQSxDQUFpQks7TUFDM0IsQ0FBQyxFQUNEZixPQUFPLEVBQ1B4QixJQUFJLEVBQ0pBLElBQUksR0FBQW1DLGlCQUFBLEdBQ0piLElBQUksQ0FBQ2tCLFdBQVcsY0FBQUwsaUJBQUEsdUJBQWhCQSxpQkFBQSxDQUFrQk0sYUFDcEIsQ0FBQztNQUNEcEIsbUJBQW1CLENBQUNZLE9BQU8sR0FBRyxJQUFJO0lBQ3BDO0lBRUEsT0FBT1YsU0FBUztFQUNsQixDQUFDLEVBQUUsQ0FBQ3ZCLElBQUksRUFBRW1CLGNBQWMsRUFBRUMsZ0JBQWdCLENBQUMsQ0FBQztFQUU1QyxJQUFNc0IsZUFBZSxHQUFHMUMsSUFBSSxhQUFKQSxJQUFJLGdCQUFBbEMsaUJBQUEsR0FBSmtDLElBQUksQ0FBRTJDLFdBQVcsY0FBQTdFLGlCQUFBLHVCQUFqQkEsaUJBQUEsQ0FBbUI4RSxTQUFTO0VBQ3BELElBQU1DLGVBQWUsR0FBRyxDQUFDLEVBQUNILGVBQWUsYUFBZkEsZUFBZSxlQUFmQSxlQUFlLENBQUVJLE1BQU07RUFDakQsSUFBTUMsMkJBQTJCLEdBQUcsQ0FBQyxDQUFDQyxNQUFNLENBQUNDLHdDQUF3QztFQUNyRixJQUFNQyxhQUFhLEdBQUcsQ0FBQyxFQUFDUixlQUFlLGFBQWZBLGVBQWUsZUFBZkEsZUFBZSxDQUFFUyxJQUFJLEtBQUlKLDJCQUEyQjtFQUM1RSxJQUFNSyxhQUFhLEdBQUd4TyxpQkFBaUIsQ0FBQ29MLElBQUksQ0FBQyxLQUFLLENBQUFBLElBQUksYUFBSkEsSUFBSSx1QkFBSkEsSUFBSSxDQUFFcUQsVUFBVSxNQUFLLElBQUksSUFBSSxDQUFBckQsSUFBSSxhQUFKQSxJQUFJLHVCQUFKQSxJQUFJLENBQUVxRCxVQUFVLE1BQUssS0FBSyxDQUFDO0VBQzFHLElBQU1DLDRCQUE0QixHQUFHLENBQUMsQ0FBQ1QsZUFBZSxJQUFJRSwyQkFBMkI7RUFDckYsSUFBTVEsbUJBQW1CLEdBQUksQ0FBQ0QsNEJBQTRCLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FDL0RKLGFBQWEsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQ3RCRSxhQUFhLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBbUI7RUFDM0MsSUFBTUksa0JBQWtCLEdBQUdGLDRCQUE0QixJQUFJSixhQUFhLElBQUlFLGFBQWE7RUFDekYsSUFBTUsseUJBQXlCLEdBQUczUSxNQUFNLENBQUMsS0FBSyxDQUFDO0VBRS9DRixTQUFTLENBQUMsWUFBTTtJQUNkLElBQUksQ0FBQ3NRLGFBQWEsSUFBSU8seUJBQXlCLENBQUN4QixPQUFPLEVBQUU7SUFFekR3Qix5QkFBeUIsQ0FBQ3hCLE9BQU8sR0FBRyxJQUFJO0lBQ3hDOU0saUJBQWlCLENBQUNGLGNBQWMsQ0FBQ3lPLG1CQUFtQixDQUFDO0VBQ3ZELENBQUMsRUFBRSxDQUFDUixhQUFhLENBQUMsQ0FBQztFQUVuQixJQUFNekgsZ0JBQWdCO0lBQUEsSUFBQWtJLEtBQUEsR0FBQUMsaUJBQUEsY0FBQUMsbUJBQUEsQ0FBQUMsSUFBQSxDQUFHLFNBQUFDLFFBQU9wTCxJQUFTO01BQUEsT0FBQWtMLG1CQUFBLENBQUFHLElBQUEsV0FBQUMsUUFBQTtRQUFBLGtCQUFBQSxRQUFBLENBQUFDLElBQUEsR0FBQUQsUUFBQSxDQUFBRSxJQUFBO1VBQUE7WUFDdkN4RCxVQUFVLENBQUNoSSxJQUFJLENBQUMrQixpQkFBaUIsQ0FBQztZQUNsQ2lGLGNBQWMsQ0FBQyxJQUFJLENBQUM7WUFDcEJ6QixjQUFjLENBQUMsQ0FBQztVQUFBO1VBQUE7WUFBQSxPQUFBK0YsUUFBQSxDQUFBRyxJQUFBO1FBQUE7TUFBQSxHQUFBTCxPQUFBO0lBQUEsQ0FDakI7SUFBQSxnQkFKS3RJLGdCQUFnQkEsQ0FBQTRJLEVBQUE7TUFBQSxPQUFBVixLQUFBLENBQUFXLEtBQUEsT0FBQUMsU0FBQTtJQUFBO0VBQUEsR0FJckI7RUFFRCxJQUFNL0ksZ0JBQWdCLEdBQUcsU0FBbkJBLGdCQUFnQkEsQ0FBSTdDLElBQVMsRUFBSztJQUN0Q2lJLFVBQVUsQ0FBQ2pJLElBQUksQ0FBQztJQUNoQmdILGNBQWMsQ0FBQyxJQUFJLENBQUM7RUFDdEIsQ0FBQztFQUVELElBQU02RSxlQUFlLEdBQUcsU0FBbEJBLGVBQWVBLENBQUl2SixNQUFjLEVBQUs7SUFDMUMsSUFBSXlFLFdBQVcsSUFBSUEsV0FBVyxLQUFLekUsTUFBTSxFQUFFO01BQ3pDMEUsY0FBYyxDQUFDLElBQUksQ0FBQztJQUN0QixDQUFDLE1BQU07TUFDTEEsY0FBYyxDQUFDMUUsTUFBTSxDQUFDO0lBQ3hCO0VBQ0YsQ0FBQztFQUVELElBQU13SixnQkFBZ0IsR0FBRyxTQUFuQkEsZ0JBQWdCQSxDQUFBLEVBQVM7SUFDN0I5RSxjQUFjLENBQUMsSUFBSSxDQUFDO0VBQ3RCLENBQUM7RUFFRC9NLFNBQVMsQ0FBQyxZQUFNO0lBQ2QsSUFBTThSLGtCQUFrQixHQUFHLFNBQXJCQSxrQkFBa0JBLENBQUk3SCxLQUFpQixFQUFLO01BQ2hELElBQUk2QyxXQUFXLElBQUksQ0FBRTdDLEtBQUssQ0FBQzhILE1BQU0sQ0FBYUMsT0FBTyxDQUFDLHdCQUF3QixDQUFDLEVBQUU7UUFDL0VqRixjQUFjLENBQUMsSUFBSSxDQUFDO01BQ3RCO0lBQ0YsQ0FBQztJQUVELElBQUlELFdBQVcsRUFBRTtNQUNmbUYsUUFBUSxDQUFDQyxnQkFBZ0IsQ0FBQyxXQUFXLEVBQUVKLGtCQUFrQixDQUFDO0lBQzVEO0lBRUEsT0FBTyxZQUFNO01BQ1hHLFFBQVEsQ0FBQ0UsbUJBQW1CLENBQUMsV0FBVyxFQUFFTCxrQkFBa0IsQ0FBQztJQUMvRCxDQUFDO0VBQ0gsQ0FBQyxFQUFFLENBQUNoRixXQUFXLENBQUMsQ0FBQztFQUVqQixJQUFNc0YsbUJBQW1CLEdBQUcsU0FBdEJBLG1CQUFtQkEsQ0FBQSxFQUFTO0lBQ2hDLElBQUl0RixXQUFXLEVBQUU7TUFDZkMsY0FBYyxDQUFDLElBQUksQ0FBQztJQUN0QjtJQUNBTSxjQUFjLENBQUNoTSxNQUFNLENBQUNnUixhQUFhLEVBQUU7TUFBRTFLLE1BQU0sRUFBRStFLE1BQU0sR0FBRyxPQUFPLEdBQUc7SUFBTyxDQUFDLENBQUM7SUFDM0VDLFNBQVMsQ0FBQyxVQUFBMkUsSUFBSSxFQUFJO01BQ2hCLElBQU1DLElBQUksR0FBRyxDQUFDRCxJQUFJO01BQ2xCakYsWUFBWSxhQUFaQSxZQUFZLGVBQVpBLFlBQVksQ0FBR2tGLElBQUksQ0FBQztNQUNwQixPQUFPQSxJQUFJO0lBQ2IsQ0FBQyxDQUFDO0VBQ0osQ0FBQztFQUVELElBQU1lLHFCQUFxQjtJQUFBLElBQUFDLEtBQUEsR0FBQXZCLGlCQUFBLGNBQUFDLG1CQUFBLENBQUFDLElBQUEsQ0FBRyxTQUFBc0IsU0FBQTtNQUFBLElBQUFDLFFBQUEsRUFBQUMsSUFBQSxFQUFBQyxZQUFBLEVBQUFDLEVBQUEsRUFBQUMsR0FBQTtNQUFBLE9BQUE1QixtQkFBQSxDQUFBRyxJQUFBLFdBQUEwQixTQUFBO1FBQUEsa0JBQUFBLFNBQUEsQ0FBQXhCLElBQUEsR0FBQXdCLFNBQUEsQ0FBQXZCLElBQUE7VUFBQTtZQUFBLEtBQ3hCN0Ysb0JBQW9CO2NBQUFvSCxTQUFBLENBQUF2QixJQUFBO2NBQUE7WUFBQTtZQUFBdUIsU0FBQSxDQUFBeEIsSUFBQTtZQUFBd0IsU0FBQSxDQUFBdkIsSUFBQTtZQUFBLE9BRWQ3RixvQkFBb0IsQ0FBQyxDQUFDO1VBQUE7WUFBQW9ILFNBQUEsQ0FBQXZCLElBQUE7WUFBQTtVQUFBO1lBQUF1QixTQUFBLENBQUF4QixJQUFBO1lBQUFzQixFQUFBLEdBQUFFLFNBQUE7WUFFNUJ6SCxPQUFPLENBQUMsQ0FBQztVQUFBO1lBQUEsT0FBQXlILFNBQUEsQ0FBQUMsTUFBQTtVQUFBO1lBQUFELFNBQUEsQ0FBQXhCLElBQUE7WUFBQXdCLFNBQUEsQ0FBQXZCLElBQUE7WUFBQSxPQU1ZeFAsU0FBUyxDQUFDO2NBQy9CaVIsSUFBSSxnREFBQXhKLE1BQUEsQ0FBZ0R2SCxVQUFVLENBQUNzSyxJQUFJLENBQUMwRyxRQUFRLENBQUMsQ0FBRTtjQUMvRUMsTUFBTSxFQUFFO1lBQ1YsQ0FBQyxDQUFDO1VBQUE7WUFISVQsUUFBUSxHQUFBSyxTQUFBLENBQUFLLElBQUE7WUFBQUwsU0FBQSxDQUFBdkIsSUFBQTtZQUFBLE9BSUtrQixRQUFRLENBQUNXLElBQUksQ0FBQyxDQUFDO1VBQUE7WUFBNUJWLElBQUksR0FBQUksU0FBQSxDQUFBSyxJQUFBO1lBQ0pSLFlBQVksR0FBRyxDQUFDRCxJQUFJLENBQUNBLElBQUksSUFBSSxFQUFFLEVBQUVXLElBQUksQ0FBQyxVQUFDQyxTQUE0RDtjQUFBLE9BQ3ZHbFIsNkJBQTZCLENBQUNrUixTQUFTLENBQUM7WUFBQSxDQUMxQyxDQUFDO1lBQUEsSUFFSVgsWUFBWTtjQUFBRyxTQUFBLENBQUF2QixJQUFBO2NBQUE7WUFBQTtZQUFBLE9BQUF1QixTQUFBLENBQUFDLE1BQUE7VUFBQTtZQUlqQnRGLFVBQVUsQ0FBQyxJQUFJLENBQUM7WUFDaEJDLFNBQVMsYUFBVEEsU0FBUyxlQUFUQSxTQUFTLENBQUcsSUFBSSxDQUFDO1lBQ2pCQyxPQUFPLENBQUMsSUFBSSxDQUFDO1lBQ2I7WUFDQTtZQUNBckMsY0FBYyxDQUFDLENBQUM7WUFDaEJrQyxXQUFXLENBQUNtRixZQUFZLENBQUM7WUFBQUcsU0FBQSxDQUFBdkIsSUFBQTtZQUFBO1VBQUE7WUFBQXVCLFNBQUEsQ0FBQXhCLElBQUE7WUFBQXVCLEdBQUEsR0FBQUMsU0FBQTtZQUV6QnpILE9BQU8sQ0FBQyxDQUFDO1VBQUE7VUFBQTtZQUFBLE9BQUF5SCxTQUFBLENBQUF0QixJQUFBO1FBQUE7TUFBQSxHQUFBZ0IsUUFBQTtJQUFBLENBRVo7SUFBQSxnQkFsQ0tGLHFCQUFxQkEsQ0FBQTtNQUFBLE9BQUFDLEtBQUEsQ0FBQWIsS0FBQSxPQUFBQyxTQUFBO0lBQUE7RUFBQSxHQWtDMUI7RUFFRDNSLFNBQVMsQ0FBQyxZQUFNO0lBQ2QsSUFBSSxDQUFDa04sZUFBZSxDQUFDbUMsT0FBTyxFQUFFO01BQzVCbkMsZUFBZSxDQUFDbUMsT0FBTyxHQUFHLElBQUk7TUFDOUJwQixVQUFVLENBQUM7UUFBRUMsS0FBSyxFQUFMQSxLQUFLO1FBQUVDLE1BQU0sRUFBTkE7TUFBTyxDQUFDLENBQUM7TUFDN0I7SUFDRjtJQUNBO0lBQ0EsSUFBSXZDLFlBQVksRUFBRTtNQUNoQnFDLFVBQVUsQ0FBQztRQUFFQyxLQUFLLEVBQUxBLEtBQUs7UUFBRUMsTUFBTSxFQUFOQTtNQUFPLENBQUMsQ0FBQztNQUM3QnRDLHFCQUFxQixDQUFDLEtBQUssQ0FBQztJQUM5QjtFQUNGLENBQUMsRUFBRSxDQUFDRCxZQUFZLEVBQUVDLHFCQUFxQixFQUFFb0MsVUFBVSxFQUFFQyxLQUFLLEVBQUVDLE1BQU0sQ0FBQyxDQUFDO0VBRXBFbk8sU0FBUyxDQUFDLFlBQU07SUFDZCxJQUFNdVQsWUFBWSxHQUFHLFNBQWZBLFlBQVlBLENBQUEsRUFBUztNQUN6QixJQUFJLENBQUNwRyxpQkFBaUIsQ0FBQ2tDLE9BQU8sSUFBSSxDQUFDakIsWUFBWSxJQUFJRSxrQkFBa0IsSUFBSXhDLFFBQVEsRUFBRTtRQUNqRjtNQUNGO01BRUEsSUFBQTBILHFCQUFBLEdBQWtEckcsaUJBQWlCLENBQUNrQyxPQUFPO1FBQW5Fb0UsU0FBUyxHQUFBRCxxQkFBQSxDQUFUQyxTQUFTO1FBQUVDLFlBQVksR0FBQUYscUJBQUEsQ0FBWkUsWUFBWTtRQUFFQyxZQUFZLEdBQUFILHFCQUFBLENBQVpHLFlBQVk7TUFDN0MsSUFBTUMsVUFBVSxHQUFHSCxTQUFTLEdBQUdFLFlBQVksSUFBSUQsWUFBWSxHQUFHLEVBQUU7TUFFaEUsSUFBSUUsVUFBVSxFQUFFO1FBQ2R2RixhQUFhLENBQUMsQ0FBQztNQUNqQjtJQUNGLENBQUM7SUFFRCxJQUFNd0YsU0FBUyxHQUFHMUcsaUJBQWlCLENBQUNrQyxPQUFPO0lBQzNDLElBQUl3RSxTQUFTLEVBQUU7TUFDYkEsU0FBUyxDQUFDM0IsZ0JBQWdCLENBQUMsUUFBUSxFQUFFcUIsWUFBWSxDQUFDO0lBQ3BEO0lBRUEsT0FBTyxZQUFNO01BQ1gsSUFBSU0sU0FBUyxFQUFFO1FBQ2JBLFNBQVMsQ0FBQzFCLG1CQUFtQixDQUFDLFFBQVEsRUFBRW9CLFlBQVksQ0FBQztNQUN2RDtJQUNGLENBQUM7RUFDSCxDQUFDLEVBQUUsQ0FBQ25GLFlBQVksRUFBRUUsa0JBQWtCLEVBQUVELGFBQWEsRUFBRXZDLFFBQVEsQ0FBQyxDQUFDO0VBRS9ELElBQU1nSSxhQUFhLEdBQUcsU0FBaEJBLGFBQWFBLENBQUEsRUFBUztJQUMxQnpHLGNBQWMsQ0FBQ2hNLE1BQU0sQ0FBQzBTLGdCQUFnQixDQUFDO0lBQ3ZDLElBQUlqSCxXQUFXLEVBQUU7TUFDZkMsY0FBYyxDQUFDLElBQUksQ0FBQztJQUN0QjtJQUNBLElBQUl4QixrQkFBa0IsRUFBRTtNQUN0QkEsa0JBQWtCLENBQUMsQ0FBQztNQUNwQjtJQUNGO0lBQ0FELGNBQWMsQ0FBQyxDQUFDO0VBQ2xCLENBQUM7RUFFRHRMLFNBQVMsQ0FBQyxZQUFNO0lBQ2Q7SUFDQSxJQUFNZ1Usb0JBQW9CLEdBQUcsU0FBdkJBLG9CQUFvQkEsQ0FBQSxFQUFTO01BQ2pDOUcsZUFBZSxDQUFDbUMsT0FBTyxHQUFHLElBQUk7TUFDOUJwQixVQUFVLENBQUM7UUFBRUMsS0FBSyxFQUFFLEVBQUU7UUFBRUMsTUFBTSxFQUFFLENBQUM7UUFBRThGLFVBQVUsRUFBRTtNQUFLLENBQUMsQ0FBQztJQUN4RCxDQUFDO0lBQ0RoQyxRQUFRLENBQUNDLGdCQUFnQixDQUFDLGlCQUFpQixFQUFFOEIsb0JBQW9CLENBQUM7SUFDbEUsT0FBTyxZQUFNO01BQ1gvQixRQUFRLENBQUNFLG1CQUFtQixDQUFDLGlCQUFpQixFQUFFNkIsb0JBQW9CLENBQUM7SUFDdkUsQ0FBQztFQUNILENBQUMsRUFBRSxDQUFDL0YsVUFBVSxDQUFDLENBQUM7RUFFaEIsSUFBTWlHLGtCQUFrQixHQUN0QnZJLFdBQVcsS0FBS0ssZUFBZSxLQUFLLFVBQVUsSUFBSUEsZUFBZSxLQUFLLFNBQVMsSUFBSUEsZUFBZSxLQUFLLFVBQVUsQ0FBQztFQUVwSCxJQUFNbUksaUJBQWlCLEdBQ3JCRCxrQkFBa0IsSUFDakIsQ0FBQ3ZJLFdBQVcsSUFDWCxDQUFDRyxRQUFRLElBQ1QsQ0FBQytCLFlBQVksSUFDYixDQUFDM0Isc0JBQXNCLEtBQ3JCLENBQUE0RCxlQUFlLGFBQWZBLGVBQWUsdUJBQWZBLGVBQWUsQ0FBRVMsSUFBSSxLQUNyQixFQUFDaEQsYUFBYSxhQUFiQSxhQUFhLGVBQWJBLGFBQWEsQ0FBRTZHLFVBQVUsS0FDMUIsRUFBQzdHLGFBQWEsYUFBYkEsYUFBYSxlQUFiQSxhQUFhLENBQUU4RyxtQkFBbUIsS0FDbkMsRUFBQzlHLGFBQWEsYUFBYkEsYUFBYSxlQUFiQSxhQUFhLENBQUUrRyxjQUFjLEtBQzdCLEVBQUN4RSxlQUFlLGFBQWZBLGVBQWUsZUFBZkEsZUFBZSxDQUFFUyxJQUFJLEtBQ3JCLEVBQUNoRCxhQUFhLGFBQWJBLGFBQWEsZUFBYkEsYUFBYSxDQUFFNkcsVUFBVSxLQUMxQixFQUFDN0csYUFBYSxhQUFiQSxhQUFhLGVBQWJBLGFBQWEsQ0FBRThHLG1CQUFtQixLQUNuQyxFQUFDOUcsYUFBYSxhQUFiQSxhQUFhLGVBQWJBLGFBQWEsQ0FBRStHLGNBQWMsQ0FBQyxDQUFFO0VBRXpDLG9CQUNFcFAsS0FBQSxDQUFDM0IsY0FBYztJQUFDZ1IsT0FBTyxFQUFFN0gsTUFBTztJQUFBNUQsUUFBQSxnQkFDOUI1RCxLQUFBLENBQUMxQixpQkFBaUI7TUFBQytRLE9BQU8sRUFBRTdILE1BQU87TUFBQTVELFFBQUEsZ0JBQ2pDOUQsSUFBQSxDQUFDdEUsT0FBTztRQUFDaUcsS0FBSyxFQUFFK0YsTUFBTSxHQUFHbkYsQ0FBQyxDQUFDLHdCQUF3QixDQUFDLEdBQUdBLENBQUMsQ0FBQyxpQkFBaUIsQ0FBRTtRQUFDOEIsTUFBTSxFQUFFOUMsYUFBYztRQUFBdUMsUUFBQSxlQUNqRzlELElBQUEsQ0FBQzVCLHlCQUF5QjtVQUFDNEMsT0FBTyxFQUFFb00sbUJBQW9CO1VBQUMxRixNQUFNLEVBQUVBLE1BQU87VUFBQTVELFFBQUEsRUFDckU0RCxNQUFNLGdCQUNMMUgsSUFBQSxDQUFDNUUsaUJBQWlCO1lBQUNvVSxLQUFLLEVBQUMsd0JBQXdCO1lBQUMvSyxLQUFLLEVBQUUsRUFBRztZQUFDQyxNQUFNLEVBQUU7VUFBRyxDQUFFLENBQUMsZ0JBRTNFMUUsSUFBQSxDQUFDM0UsT0FBTztZQUFDbVUsS0FBSyxFQUFDLHFCQUFxQjtZQUFDL0ssS0FBSyxFQUFFLEVBQUc7WUFBQ0MsTUFBTSxFQUFFO1VBQUcsQ0FBRTtRQUM5RCxDQUN3QjtNQUFDLENBQ3JCLENBQUMsRUFDVHlLLGlCQUFpQixnQkFDaEJuUCxJQUFBLENBQUN0RSxPQUFPO1FBQUNpRyxLQUFLLEVBQUVZLENBQUMsQ0FBQyx1QkFBdUIsQ0FBRTtRQUFDOEIsTUFBTSxFQUFFOUMsYUFBYztRQUFBdUMsUUFBQSxlQUNoRTlELElBQUEsQ0FBQzNCLHFCQUFxQjtVQUFDMkMsT0FBTyxFQUFFOE4sYUFBYztVQUFDLGNBQVl2TSxDQUFDLENBQUMsdUJBQXVCLENBQUU7VUFBQXVCLFFBQUEsZUFDcEY5RCxJQUFBLENBQUM1RCxPQUFPO1lBQUNxSSxLQUFLLEVBQUUsRUFBRztZQUFDQyxNQUFNLEVBQUU7VUFBRyxDQUFFO1FBQUMsQ0FDYjtNQUFDLENBQ2pCLENBQUMsR0FDUixJQUFJLEVBQ1AsQ0FBQ2dELE1BQU0sSUFBSWtFLGtCQUFrQixnQkFDNUIxTCxLQUFBLENBQUFFLFNBQUE7UUFBQTBELFFBQUEsZ0JBQ0U5RCxJQUFBLENBQUNGLDBCQUEwQixJQUFFLENBQUMsRUFDN0I0TCw0QkFBNEIsZ0JBQzNCMUwsSUFBQSxDQUFDdEUsT0FBTztVQUFDaUcsS0FBSyxFQUFFWSxDQUFDLENBQUMsMEJBQTBCLENBQUU7VUFBQzhCLE1BQU0sRUFBRTlDLGFBQWM7VUFBQXVDLFFBQUEsZUFDbkU5RCxJQUFBLENBQUMxQix1QkFBdUI7WUFDdEJtUixPQUFPLEVBQUV6SSxlQUFlLEtBQUssU0FBVTtZQUN2Q2hHLE9BQU8sRUFBRSxTQUFUQSxPQUFPQSxDQUFBLEVBQVE7Y0FDYnFILGNBQWMsQ0FBQ2hNLE1BQU0sQ0FBQ3FULFlBQVksQ0FBQztjQUNuQ3BDLHFCQUFxQixDQUFDLENBQUM7WUFDekIsQ0FBRTtZQUFBeEosUUFBQSxlQUVGOUQsSUFBQSxDQUFDL0QsYUFBYTtjQUFDOEksSUFBSSxFQUFFO1lBQUcsQ0FBRTtVQUFDLENBQ0o7UUFBQyxDQUNuQixDQUFDLEdBQ1IsSUFBSSxFQUNQdUcsYUFBYSxnQkFDWnRMLElBQUEsQ0FBQ3RFLE9BQU87VUFBQ2lHLEtBQUssRUFBRVksQ0FBQyxDQUFDLDJCQUEyQixDQUFFO1VBQUM4QixNQUFNLEVBQUU5QyxhQUFjO1VBQUF1QyxRQUFBLGVBQ3BFOUQsSUFBQSxDQUFDMUIsdUJBQXVCO1lBQ3RCbVIsT0FBTyxFQUFFekksZUFBZSxLQUFLLFVBQVc7WUFDeEMsZ0JBQWMxSixpQkFBaUIsQ0FBQ3dPLG1CQUFvQjtZQUNwRDlLLE9BQU8sRUFBRSxTQUFUQSxPQUFPQSxDQUFBLEVBQVE7Y0FDYnFILGNBQWMsQ0FBQ2hNLE1BQU0sQ0FBQ3NULGlCQUFpQixDQUFDO2NBQ3hDbkoscUJBQXFCLENBQUMsQ0FBQztZQUN6QixDQUFFO1lBQUExQyxRQUFBLGVBRUY5RCxJQUFBLENBQUM5RCxlQUFlO2NBQUM2SSxJQUFJLEVBQUU7WUFBRyxDQUFFO1VBQUMsQ0FDTjtRQUFDLENBQ25CLENBQUMsR0FDUixJQUFJLEVBQ1B5RyxhQUFhLGdCQUNaeEwsSUFBQSxDQUFDdEUsT0FBTztVQUFDaUcsS0FBSyxFQUFFWSxDQUFDLENBQUMsMkJBQTJCLENBQUU7VUFBQzhCLE1BQU0sRUFBRTlDLGFBQWM7VUFBQXVDLFFBQUEsZUFDcEU5RCxJQUFBLENBQUMxQix1QkFBdUI7WUFDdEJtUixPQUFPLEVBQUV6SSxlQUFlLEtBQUssVUFBVztZQUN4Q2hHLE9BQU8sRUFBRSxTQUFUQSxPQUFPQSxDQUFBLEVBQVE7Y0FDYnFILGNBQWMsQ0FBQ2hNLE1BQU0sQ0FBQ3VULGlCQUFpQixDQUFDO2NBQ3hDbkosZ0JBQWdCLENBQUMsQ0FBQztZQUNwQixDQUFFO1lBQUEzQyxRQUFBLGVBRUY5RCxJQUFBLENBQUM3RCxhQUFhO2NBQUM0SSxJQUFJLEVBQUU7WUFBRyxDQUFFO1VBQUMsQ0FDSjtRQUFDLENBQ25CLENBQUMsR0FDUixJQUFJO01BQUEsQ0FDUixDQUFDLEdBQ0QsSUFBSTtJQUFBLENBQ1MsQ0FBQyxlQUNwQjdFLEtBQUEsQ0FBQ3pCLGNBQWM7TUFBQzhRLE9BQU8sRUFBRTdILE1BQU87TUFBQTVELFFBQUEsR0FDN0I0RCxNQUFNLGdCQUNMeEgsS0FBQSxDQUFDeEIsbUJBQW1CO1FBQUFvRixRQUFBLGdCQUNsQjVELEtBQUEsQ0FBQ3ZCLHFCQUFxQjtVQUFBbUYsUUFBQSxHQUNuQjhILGtCQUFrQixnQkFDakIxTCxLQUFBLENBQUN0Qix1QkFBdUI7WUFBQWtGLFFBQUEsR0FDckI0SCw0QkFBNEIsZ0JBQzNCeEwsS0FBQSxDQUFDckIsMEJBQTBCO2NBQ3pCZ1IsSUFBSSxFQUFDLFFBQVE7Y0FDYjdPLE9BQU8sRUFBRSxTQUFUQSxPQUFPQSxDQUFBLEVBQVE7Z0JBQ2JxSCxjQUFjLENBQUNoTSxNQUFNLENBQUNxVCxZQUFZLENBQUM7Z0JBQ25DcEMscUJBQXFCLENBQUMsQ0FBQztjQUN6QixDQUFFO2NBQ0ZtQyxPQUFPLEVBQUV6SSxlQUFlLEtBQUssU0FBVTtjQUFBbEQsUUFBQSxnQkFFdkM5RCxJQUFBLENBQUMvRCxhQUFhO2dCQUFDOEksSUFBSSxFQUFFO2NBQUcsQ0FBRSxDQUFDLGVBQzNCL0UsSUFBQSxDQUFDbEIseUJBQXlCO2dCQUFBZ0YsUUFBQSxFQUFFdkIsQ0FBQyxDQUFDLDBCQUEwQjtjQUFDLENBQTRCLENBQUM7WUFBQSxDQUM1RCxDQUFDLEdBQzNCLElBQUksRUFDUCtJLGFBQWEsZ0JBQ1pwTCxLQUFBLENBQUNyQiwwQkFBMEI7Y0FDekJnUixJQUFJLEVBQUMsUUFBUTtjQUNiLGdCQUFjdlMsaUJBQWlCLENBQUN3TyxtQkFBb0I7Y0FDcEQ5SyxPQUFPLEVBQUUsU0FBVEEsT0FBT0EsQ0FBQSxFQUFRO2dCQUNicUgsY0FBYyxDQUFDaE0sTUFBTSxDQUFDc1QsaUJBQWlCLENBQUM7Z0JBQ3hDbkoscUJBQXFCLENBQUMsQ0FBQztjQUN6QixDQUFFO2NBQ0ZpSixPQUFPLEVBQUV6SSxlQUFlLEtBQUssVUFBVztjQUFBbEQsUUFBQSxnQkFFeEM5RCxJQUFBLENBQUM5RCxlQUFlO2dCQUFDNkksSUFBSSxFQUFFO2NBQUcsQ0FBRSxDQUFDLGVBQzdCL0UsSUFBQSxDQUFDbEIseUJBQXlCO2dCQUFBZ0YsUUFBQSxFQUFFdkIsQ0FBQyxDQUFDLDJCQUEyQjtjQUFDLENBQTRCLENBQUM7WUFBQSxDQUM3RCxDQUFDLEdBQzNCLElBQUksRUFDUGlKLGFBQWEsZ0JBQ1p0TCxLQUFBLENBQUNyQiwwQkFBMEI7Y0FDekJnUixJQUFJLEVBQUMsUUFBUTtjQUNiN08sT0FBTyxFQUFFLFNBQVRBLE9BQU9BLENBQUEsRUFBUTtnQkFDYnFILGNBQWMsQ0FBQ2hNLE1BQU0sQ0FBQ3VULGlCQUFpQixDQUFDO2dCQUN4Q25KLGdCQUFnQixDQUFDLENBQUM7Y0FDcEIsQ0FBRTtjQUNGZ0osT0FBTyxFQUFFekksZUFBZSxLQUFLLFVBQVc7Y0FBQWxELFFBQUEsZ0JBRXhDOUQsSUFBQSxDQUFDN0QsYUFBYTtnQkFBQzRJLElBQUksRUFBRTtjQUFHLENBQUUsQ0FBQyxlQUMzQi9FLElBQUEsQ0FBQ2xCLHlCQUF5QjtnQkFBQWdGLFFBQUEsRUFBRXZCLENBQUMsQ0FBQywyQkFBMkI7Y0FBQyxDQUE0QixDQUFDLGVBQ3ZGdkMsSUFBQSxDQUFDakIsNEJBQTRCO2dCQUFBK0UsUUFBQSxFQUFFdkIsQ0FBQyxDQUFDLDJCQUEyQjtjQUFDLENBQStCLENBQUM7WUFBQSxDQUNuRSxDQUFDLEdBQzNCLElBQUk7VUFBQSxDQUNlLENBQUMsR0FDeEIsSUFBSSxlQUNSdkMsSUFBQSxDQUFDZixpQ0FBaUM7WUFBQTZFLFFBQUEsZUFDaEM5RCxJQUFBLENBQUNoQiw4QkFBOEI7Y0FBQThFLFFBQUEsRUFBRXZCLENBQUMsQ0FBQyxxQkFBcUI7WUFBQyxDQUFpQztVQUFDLENBQzFELENBQUM7UUFBQSxDQUNmLENBQUMsZUFDeEJ2QyxJQUFBLENBQUNkLHFCQUFxQjtVQUNwQm9GLEdBQUcsRUFBRTZELGlCQUFrQjtVQUN2QjJILFNBQVMsRUFBRWhILEtBQUssQ0FBQ2lILE1BQU0sR0FBRyxDQUFFO1VBQzVCQyxjQUFjLEVBQUVsSixRQUFRLEdBQUcsT0FBTyxHQUFHLFNBQVU7VUFDL0NtSixvQkFBb0IsRUFBRXRFLG1CQUFvQjtVQUFBN0gsUUFBQSxFQUV6Q2dELFFBQVEsSUFBSSxDQUFDZ0MsS0FBSyxDQUFDaUgsTUFBTSxnQkFDeEI3UCxLQUFBLENBQUNmLDBCQUEwQjtZQUFBMkUsUUFBQSxnQkFDekI5RCxJQUFBLENBQUNaLHVCQUF1QjtjQUFBMEUsUUFBQSxlQUN0QjlELElBQUEsQ0FBQ2pFLFVBQVUsSUFBRTtZQUFDLENBQ1MsQ0FBQyxlQUMxQm1FLEtBQUEsQ0FBQ2IscUJBQXFCO2NBQUF5RSxRQUFBLGdCQUNwQjlELElBQUEsQ0FBQ1YsNkJBQTZCO2dCQUFBd0UsUUFBQSxlQUM1QjlELElBQUEsQ0FBQ3JELFNBQVMsSUFBRTtjQUFDLENBQ2dCLENBQUMsZUFDaENxRCxJQUFBLENBQUNULDRCQUE0QjtnQkFBQXVFLFFBQUEsRUFBRXZCLENBQUMsQ0FBQyxxQkFBcUI7Y0FBQyxDQUErQixDQUFDO1lBQUEsQ0FDbEUsQ0FBQztVQUFBLENBQ0UsQ0FBQyxHQUMzQnNHLFlBQVksZ0JBQ2Q3SSxJQUFBLENBQUNSLHFCQUFxQjtZQUFBc0UsUUFBQSxlQUNwQjlELElBQUEsQ0FBQ2xFLG9CQUFvQixJQUFFO1VBQUMsQ0FDSCxDQUFDLEdBQ3RCZ04sS0FBSyxDQUFDaUgsTUFBTSxnQkFDZDdQLEtBQUEsQ0FBQUUsU0FBQTtZQUFBMEQsUUFBQSxHQUNHZ0YsS0FBSyxDQUFDbEQsR0FBRyxDQUFDLFVBQUM3RSxJQUFJLEVBQUVPLEtBQUssRUFBSztjQUMxQixvQkFDRXRCLElBQUEsQ0FBQ2EsZUFBZTtnQkFFZFMsS0FBSyxFQUFFQSxLQUFNO2dCQUNiUCxJQUFJLEVBQUVBLElBQUs7Z0JBQ1hDLE9BQU8sRUFBRSxTQUFUQSxPQUFPQSxDQUFFMkMsUUFBUSxFQUFJO2tCQUNuQixJQUFJbUUsV0FBVyxFQUFFO29CQUNmQyxjQUFjLENBQUMsSUFBSSxDQUFDO2tCQUN0QjtrQkFDQTVCLFVBQVUsQ0FBQ3hDLFFBQVEsQ0FBQztnQkFDdEIsQ0FBRTtnQkFDRjFDLFdBQVcsRUFBRTZHLFdBQVcsS0FBSy9HLElBQUksQ0FBQ21FLEVBQUc7Z0JBQ3JDaEUsV0FBVyxFQUFFMEwsZUFBZ0I7Z0JBQzdCekwsWUFBWSxFQUFFMEwsZ0JBQWlCO2dCQUMvQnpMLFFBQVEsRUFBRTtrQkFDUnlDLGdCQUFnQixFQUFoQkEsZ0JBQWdCO2tCQUNoQkQsZ0JBQWdCLEVBQWhCQTtnQkFDRixDQUFFO2dCQUNGdkMsVUFBVSxFQUFFMkcsWUFBWSxLQUFLakgsSUFBSSxDQUFDK0IsaUJBQWtCO2dCQUNwRHZCLGFBQWEsRUFBRUE7Y0FBYyxHQWpCeEJSLElBQUksQ0FBQ21FLEVBa0JYLENBQUM7WUFFTixDQUFDLENBQUMsRUFDRG9FLGtCQUFrQixpQkFDakJ0SixJQUFBLENBQUNQLHFCQUFxQjtjQUFBcUUsUUFBQSxlQUNwQjlELElBQUEsQ0FBQ2xFLG9CQUFvQjtnQkFBQ29VLEtBQUssRUFBRTtjQUFFLENBQUU7WUFBQyxDQUNiLENBQ3hCO1VBQUEsQ0FDRCxDQUFDLGdCQUVIaFEsS0FBQSxDQUFDUixvQkFBb0I7WUFBQW9FLFFBQUEsZ0JBQ25COUQsSUFBQSxDQUFDckUsZ0JBQWdCLElBQUUsQ0FBQyxlQUNwQnFFLElBQUEsQ0FBQ0wsd0JBQXdCO2NBQUFtRSxRQUFBLEVBQUV2QixDQUFDLENBQUMscUJBQXFCO1lBQUMsQ0FBMkIsQ0FBQztVQUFBLENBQzNEO1FBQ3ZCLENBQ29CLENBQUMsZUFDeEJ2QyxJQUFBLENBQUNKLHFCQUFxQjtVQUFBa0UsUUFBQSxFQUNuQmdELFFBQVEsSUFBSWdDLEtBQUssQ0FBQ2lILE1BQU0sZ0JBQ3ZCN1AsS0FBQSxDQUFDYixxQkFBcUI7WUFBQXlFLFFBQUEsZ0JBQ3BCOUQsSUFBQSxDQUFDViw2QkFBNkI7Y0FBQXdFLFFBQUEsZUFDNUI5RCxJQUFBLENBQUNyRCxTQUFTLElBQUU7WUFBQyxDQUNnQixDQUFDLGVBQ2hDcUQsSUFBQSxDQUFDVCw0QkFBNEI7Y0FBQXVFLFFBQUEsRUFBRXZCLENBQUMsQ0FBQyxxQkFBcUI7WUFBQyxDQUErQixDQUFDO1VBQUEsQ0FDbEUsQ0FBQyxHQUN0QjtRQUFJLENBQ2EsQ0FBQztNQUFBLENBQ0wsQ0FBQyxHQUNwQixJQUFJLGVBQ1J2QyxJQUFBLENBQUNILHVCQUF1QjtRQUFDMFAsT0FBTyxFQUFFN0gsTUFBTztRQUFDeUksZUFBZSxFQUFFLENBQUMsQ0FBQzVILGFBQWM7UUFBQXpFLFFBQUEsRUFDeEV5RSxhQUFhLGdCQUFHdkksSUFBQSxDQUFDbkQsY0FBYztVQUFDMEwsYUFBYSxFQUFFQSxhQUFjO1VBQUNiLE1BQU0sRUFBRUE7UUFBTyxDQUFFLENBQUMsR0FBRztNQUFJLENBQ2pFLENBQUM7SUFBQSxDQUNaLENBQUM7RUFBQSxDQUNILENBQUM7QUFFckIsQ0FBQyIsImlnbm9yZUxpc3QiOltdfQ==
|
|
711
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VFZmZlY3QiLCJ1c2VNZW1vIiwidXNlUmVmIiwidXNlU3RhdGUiLCJDaGV2cm9uRG91YmxlTGVmdCIsIkhpc3RvcnkiLCJDVUJ1dHRvbiIsIk1lbnVEb3RzIiwiUGVuY2lsIiwiVHJhc2giLCJUb29sdGlwIiwiRW1wdHlIaXN0b3J5SWNvbiIsInVzZVJlc2l6ZUxpc3RlbmVyIiwidXNlQ2hhdHMiLCJTaWRlYmFyQ2hhdHNTa2VsZXRvbiIsIkVycm9yU3RhdGUiLCJNQUlBSWNvbiIsIk1haWFTdG9yZUljb24iLCJNeUFnZW50c05hdkljb24iLCJTa2lsbHNOYXZJY29uIiwiTmV3Q2hhdCIsIkVWRU5UUyIsInVzZUV2ZW50IiwidXNlVCIsIk9wdGlvbkl0ZW0iLCJFZGl0UXVlc3Rpb25Nb2RhbCIsIkRlbGV0ZVF1ZXN0aW9uTW9kYWwiLCJFcnJvckljb24iLCJ1c2VVc2VyIiwiRmVlZGJhY2tCdXR0b24iLCJ1c2VHbG9iYWxDb250ZXh0IiwiZmV0Y2hNYWlhIiwiY2FuQWNjZXNzVG9Ta2lsbHMiLCJtYXBDT1JMYW5nIiwiZm9ybWF0Q2hhdExpc3RUaXRsZU1lbnRpb25zIiwiZ2V0QWdlbnREaXNwbGF5TmFtZSIsImlzTWFya2V0cGxhY2VHbG9iYWxDbG9uZUFnZW50IiwiQVBQQ1VFU19FVkVOVFMiLCJBUFBDVUVTX1NFTEVDVE9SUyIsInRyYWNrQXBwY3Vlc0V2ZW50IiwiU2Vzc2lvbkdlbmVyYXRpbmdEb3QiLCJ1c2VJc1Nlc3Npb25HZW5lcmF0aW5nIiwidXNlU2Vzc2lvbk1ldGEiLCJ1c2VNYWlhVGFza1BhbmVsWkluZGV4IiwidXNlQ2hhdHNTdG9yZSIsIlNDTEhDV3JhcHBlciIsIlNDTEhDV3JhcHBlckFnZW50IiwiU0NMSENXcmFwcGVyQWdlbnRUZXh0IiwiU0NMSENXcmFwcGVyQnV0dG9uQWN0aW9ucyIsIlNDTEhDV3JhcHBlckNvbnRlbnQiLCJTQ0xIQ1dyYXBwZXJUaXRsZSIsIlNDTEhDV3JhcHBlclRpdGxlUm93IiwiU0NTV3JhcHBlckNvbGxhcHNlZEJ1dHRvbiIsIlNDU1dyYXBwZXJOZXdDaGF0SWNvbiIsIlNDU1dyYXBwZXJBZ2VudHNOYXZJY29uIiwiU0NTU2lkZWJhclJvb3QiLCJTQ1NTaWRlYmFyVG9vbGJhciIsIlNDU1NpZGViYXJCb2R5IiwiU0NTU2lkZWJhck9wZW5QYW5lbCIsIlNDU1NpZGViYXJBZ2VudHNCbG9jayIsIlNDU1NpZGViYXJBZ2VudHNBY3Rpb25zIiwiU0NTU2lkZWJhck1haWFrZXJOYXZCdXR0b24iLCJTQ1NTaWRlYmFyTWFpYWtlck5hdkxhYmVsIiwiU0NTU2lkZWJhck1haWFrZXJOYXZCYWRnZU5ldyIsIlNDU1NpZGViYXJDb252ZXJzYXRpb25zSGVhZGluZyIsIlNDU1NpZGViYXJDb252ZXJzYXRpb25zSGVhZGluZ1JvdyIsIlNDU1NpZGViYXJDaGF0c1Njcm9sbCIsIlNDU1NpZGViYXJFcnJvclN0YXRlQ29sdW1uIiwiU0NTU2lkZWJhckVycm9yU3RhdGVUb3AiLCJTQ1NTaWRlYmFyRXJyb3JCYW5uZXIiLCJTQ1NTaWRlYmFyRXJyb3JCYW5uZXJJY29uV3JhcCIsIlNDU1NpZGViYXJFcnJvckJhbm5lck1lc3NhZ2UiLCJTQ1NTaWRlYmFyTG9hZGluZ0FyZWEiLCJTQ1NTaWRlYmFyTG9hZE1vcmVSb3ciLCJTQ1NTaWRlYmFyRW1wdHlDaGF0cyIsIlNDU1NpZGViYXJFbXB0eUNoYXRzVGV4dCIsIlNDU1NpZGViYXJDaGF0c0Zvb3RlciIsIlNDU1NpZGViYXJGb290ZXJBY3Rpb25zIiwiU0NTU2lkZWJhckNvbGxhcHNlZERpdmlkZXIiLCJqc3giLCJfanN4IiwianN4cyIsIl9qc3hzIiwiRnJhZ21lbnQiLCJfRnJhZ21lbnQiLCJhY3Rpb25zIiwiZWRpdCIsInByb3BzIiwiX29iamVjdFNwcmVhZCIsImRlbGV0ZSIsImFiYnJldmlhdGVTcGVjaWFsaXN0SW5BZ2VudE5hbWUiLCJhZ2VudE5hbWUiLCJyZXBsYWNlIiwiTGlzdEhpc3RvcnlDaGF0IiwiX3JlZiIsImNoYXQiLCJvbkNsaWNrIiwiaXNNb2RhbE9wZW4iLCJvbk9wZW5Nb2RhbCIsIm9uQ2xvc2VNb2RhbCIsImhhbmRsZXJzIiwiaXNTZWxlY3RlZCIsImluZGV4IiwidG9vbHRpcFpJbmRleCIsInRleHRSZWYiLCJhZ2VudFJlZiIsImRpc3BsYXlUaXRsZSIsInRpdGxlIiwiZGlzcGxheUFnZW50IiwiYWdlbnRUeXBlIiwiYWdlbnQiLCJjb250ZXh0TmFtZSIsInByb2plY3ROYW1lIiwiY2xpZW50TmFtZSIsIl91c2VSZXNpemVMaXN0ZW5lciIsInNob3dUb29sdGlwIiwiX3VzZVJlc2l6ZUxpc3RlbmVyMiIsInNob3dUb29sdGlwQWdlbnQiLCJfdXNlVCIsInQiLCJfdXNlU3RhdGUiLCJfdXNlU3RhdGUyIiwiX3NsaWNlZFRvQXJyYXkiLCJhY3Rpb24iLCJzZXRBY3Rpb24iLCJpc0dlbmVyYXRpbmciLCJzZXNzaW9uRXh0ZXJuYWxJZCIsInNlc3Npb25NZXRhIiwiaXNVbnJlYWQiLCJpc1JlYWQiLCJtZW51SXRlbXMiLCJsYWJlbCIsIm9uQ2xpY2tJdGVtIiwiY2hhdElkIiwiSWNvbiIsImV2ZW50S2V5IiwicG1BaU1lbnVFZGl0IiwicG1BaU1lbnVEZWxldGUiLCJoYW5kbGVDb25maXJtQWN0aW9uIiwiY2hhdERhdGEiLCJoYW5kbGVVcGRhdGVDaGF0IiwiaGFuZGxlRGVsZXRlQ2hhdCIsImNoaWxkcmVuIiwiZSIsInN0b3BQcm9wYWdhdGlvbiIsIiRpbmRleCIsImFyaWFMYWJlbCIsImlzV3JpdGluZyIsImFuaW1hdGVkIiwiekluZGV4IiwicmVmIiwiJHVucmVhZCIsImNvbmNhdCIsIndpZHRoIiwiaGVpZ2h0Iiwic3R5bGUiLCJmb250U2l6ZSIsImVtb2ppIiwiaWNvbk9ubHkiLCJzaXplIiwidmFyaWFudCIsImV2ZW50IiwiaWQiLCJwb3NpdGlvbiIsInRvcCIsInJpZ2h0IiwiYmFja2dyb3VuZENvbG9yIiwiZGlzcGxheSIsImZsZXhEaXJlY3Rpb24iLCJib3JkZXJSYWRpdXMiLCJib3JkZXIiLCJtaW5XaWR0aCIsIm1hcCIsIl9yZWYyIiwib25DbG9zZSIsImhhbmRsZVNldElzT3Blbk1vZGFsIiwiU2lkZWJhciIsIl9yZWYzIiwiX3VzZXIkcGVybWlzc2lvbnMiLCJvbkdvVG9DaGF0IiwiX3JlZjMkb25FcnJvciIsIm9uRXJyb3IiLCJoYW5kbGVHb1RvSG9tZSIsImhhbmRsZVN0YXJ0TmV3Q2hhdCIsImhhbmRsZU9wZW5NYXJrZXRwbGFjZSIsImhhbmRsZU9wZW5Ta2lsbHMiLCJvbk9wZW5NYWlha2VyQ3JlYXRvciIsInNob3dOZXdDaGF0IiwicmVmZXRjaENoYXRzIiwiaGFuZGxlU2V0UmVmZXRjaENoYXRzIiwiaGFzRXJyb3IiLCJfcmVmMyRhZ2VudHNOYXZBY3RpdmUiLCJhZ2VudHNOYXZBY3RpdmUiLCJfcmVmMyRpc0xlZ2FjeUNvbnRleHQiLCJpc0xlZ2FjeUNvbnRleHRTZXNzaW9uIiwiX3JlZjMkaW5pdGlhbE9wZW4iLCJpbml0aWFsT3BlbiIsIm9uT3BlbkNoYW5nZSIsIm9wZW4iLCJfcmVmMyRjb252ZXJzYXRpb25zT24iLCJjb252ZXJzYXRpb25zT25seSIsIl91c2VUMiIsImkxOG4iLCJfdXNlU3RhdGUzIiwiX3VzZVN0YXRlNCIsInVuY29udHJvbGxlZE9wZW4iLCJzZXRVbmNvbnRyb2xsZWRPcGVuIiwiaXNPcGVuIiwiX3VzZVN0YXRlNSIsIl91c2VTdGF0ZTYiLCJpc09wZW5Nb2RhbCIsInNldElzT3Blbk1vZGFsIiwiYWN0aXZlQ2hhdElkIiwic3RhdGUiLCJjaGF0c0ZldGNoZWRSZWYiLCJjaGF0c0NvbnRhaW5lclJlZiIsInVzZXIiLCJldmVudEFtcGxpdHVkZSIsIl91c2VHbG9iYWxDb250ZXh0Iiwic2VsZWN0ZWRBZ2VudCIsInNlbGVjdEFnZW50Iiwic2V0UHJvamVjdCIsInNldENsaWVudCIsInNldFRhc2siLCJfdXNlQ2hhdHMiLCJsb2FkaW5nQ2hhdHMiLCJjaGF0cyIsImRlbGV0ZUNoYXQiLCJ1cGRhdGVDaGF0IiwiZmV0Y2hDaGF0cyIsImxpbWl0Iiwib2Zmc2V0IiwiaGFzTW9yZUNoYXRzIiwibG9hZE1vcmVDaGF0cyIsImlzTG9hZGluZ01vcmVDaGF0cyIsInNldFVucmVhZENvdW50Iiwic2V0Q2hhdFJlYWRTdGF0ZSIsInVucmVhZFN1YnNjcmliZWRSZWYiLCIkX3NjIiwidW5kZWZpbmVkIiwiY2hhbm5lbCIsImhhbmRsZVVucmVhZEV2ZW50IiwiX3JlZjQiLCJtb2RlbERhdGEiLCJtb2RlbF9kYXRhIiwidW5yZWFkX2NvdW50Iiwic2Vzc2lvbl9pZCIsImlzX3JlYWQiLCJzdWJzY3JpYmVIYW5kbGVyIiwiY3VycmVudCIsIl8kX3NjJGFjdGlvblR5cGUiLCJfJF9zYyRjaGFubmVsVHlwZSIsInVwZGF0ZUNvbm5lY3Rpb25Nb2RlbCIsIm1vZGVsX2hhc2giLCJhY3Rpb25UeXBlIiwiU1VCU0NSSUJFIiwiY2hhbm5lbFR5cGUiLCJNT0RFTF9DSEFOTkVMIiwidXNlclBlcm1pc3Npb25zIiwicGVybWlzc2lvbnMiLCJhaV9hZ2VudHMiLCJjYW5DcmVhdGVBZ2VudHMiLCJjcmVhdGUiLCJoYXNNdWx0aUFnZW50c0ZlYXR1cmVBY2Nlc3MiLCJ3aW5kb3ciLCJNQUlBX0NIQVRfQUlfRkVBVFVSRV9BQ0NFU1NfTVVMVElfQUdFTlRTIiwiY2FuVmlld0FnZW50cyIsInZpZXciLCJjYW5WaWV3U2tpbGxzIiwiY29tcGFueV9pZCIsInNob3dNYXJrZXRwbGFjZVNpZGViYXJCdXR0b24iLCJhZ2VudE5hdkJ1dHRvbkNvdW50Iiwic2hvd0FnZW50c05hdkJsb2NrIiwibXlBZ2VudHNTaWRlYmFyVHJhY2tlZFJlZiIsIm1haWFTaWRlYmFyTXlBZ2VudHMiLCJfcmVmNSIsIl9hc3luY1RvR2VuZXJhdG9yIiwiX3JlZ2VuZXJhdG9yUnVudGltZSIsIm1hcmsiLCJfY2FsbGVlIiwid3JhcCIsIl9jb250ZXh0IiwicHJldiIsIm5leHQiLCJzdG9wIiwiX3giLCJhcHBseSIsImFyZ3VtZW50cyIsImhhbmRsZU9wZW5Nb2RhbCIsImhhbmRsZUNsb3NlTW9kYWwiLCJoYW5kbGVDbGlja091dHNpZGUiLCJ0YXJnZXQiLCJjbG9zZXN0IiwiZG9jdW1lbnQiLCJhZGRFdmVudExpc3RlbmVyIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsImhhbmRsZVRvZ2dsZVNpZGViYXIiLCJhaUNoYXRTaWRlYmFyIiwiaGFuZGxlT3BlbkNyZWF0ZUFnZW50IiwiX3JlZjYiLCJfY2FsbGVlMiIsInJlc3BvbnNlIiwiZGF0YSIsIm1haWFrZXJBZ2VudCIsIl90IiwiX3QyIiwiX2NvbnRleHQyIiwiYWJydXB0IiwicGF0aCIsImxhbmd1YWdlIiwibWV0aG9kIiwic2VudCIsImpzb24iLCJmaW5kIiwiYWdlbnRJdGVtIiwiaGFuZGxlU2Nyb2xsIiwiX2NoYXRzQ29udGFpbmVyUmVmJGN1Iiwic2Nyb2xsVG9wIiwic2Nyb2xsSGVpZ2h0IiwiY2xpZW50SGVpZ2h0IiwiaXNBdEJvdHRvbSIsImNvbnRhaW5lciIsImhhbmRsZU5ld0NoYXQiLCJhaVNpZGViYXJOZXdDaGF0IiwiaGFuZGxlUmVmZXRjaFNlc3Npb24iLCJiYWNrZ3JvdW5kIiwiaXNBZ2VudHNIdWJTZWN0aW9uIiwic2hvd05ld0NoYXRCdXR0b24iLCJpc19kZWxldGVkIiwiaGFzX25vdF9wZXJtaXNzaW9ucyIsImhhc19ub3RfYWNjZXNzIiwibmV3Q2hhdEJ1dHRvbiIsIiRpc09wZW4iLCJjb2xvciIsIiRhY3RpdmUiLCJhaUNoYXRNcE9wZW4iLCJhaVNpZGViYXJNeUFnZW50cyIsImFpU2lkZWJhck15U2tpbGxzIiwidHlwZSIsIiRoYXNDaGF0cyIsImxlbmd0aCIsIiRvZmZzZXRWYXJpYW50IiwiJGFnZW50TmF2QnV0dG9uQ291bnQiLCJjb3VudCIsIiRqdXN0aWZ5QmV0d2VlbiJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL21vbGVjdWxlcy9TaWRlYmFyL1NpZGViYXIudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIGNhbWVsY2FzZSAqL1xuLyogZXNsaW50LWRpc2FibGUgbm8tdW5kZWYgKi9cbi8qIGVzbGludC1kaXNhYmxlIG5vLXBhcmFtLXJlYXNzaWduICovXG4vKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tc2hhZG93ICovXG4vKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55ICovXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1uZXN0ZWQtdGVybmFyeSAqL1xuLyogZXNsaW50LWRpc2FibGUganN4LWExMXkvY2xpY2stZXZlbnRzLWhhdmUta2V5LWV2ZW50cyAqL1xuLyogZXNsaW50LWRpc2FibGUganN4LWExMXkvbm8tc3RhdGljLWVsZW1lbnQtaW50ZXJhY3Rpb25zICovXG5pbXBvcnQgeyB1c2VFZmZlY3QsIHVzZU1lbW8sIHVzZVJlZiwgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCdcbmltcG9ydCB7IENoZXZyb25Eb3VibGVMZWZ0IH0gZnJvbSAnQHByb2plY3Rjb3IvaWNvbnMvbGliL2NvbXBvbmVudHMvQ2hldnJvbkRvdWJsZUxlZnQnXG5pbXBvcnQgeyBIaXN0b3J5IH0gZnJvbSAnQHByb2plY3Rjb3IvaWNvbnMvbGliL2NvbXBvbmVudHMvSGlzdG9yeSdcbmltcG9ydCB7IENVQnV0dG9uIH0gZnJvbSAnQHByb2plY3Rjb3IvYnV0dG9uL2xpYi9jb21wb25lbnRzL0NVQnV0dG9uJ1xuaW1wb3J0IHsgTWVudURvdHMgfSBmcm9tICdAcHJvamVjdGNvci9pY29ucy9saWIvY29tcG9uZW50cy9NZW51RG90cydcbmltcG9ydCB7IFBlbmNpbCB9IGZyb20gJ0Bwcm9qZWN0Y29yL2ljb25zL2xpYi9jb21wb25lbnRzL1BlbmNpbCdcbmltcG9ydCB7IFRyYXNoIH0gZnJvbSAnQHByb2plY3Rjb3IvaWNvbnMvbGliL2NvbXBvbmVudHMvVHJhc2gnXG5cbmltcG9ydCB7IFRvb2x0aXAgfSBmcm9tICdAcHJvamVjdGNvci90b29sdGlwdjIvbGliL2NvbXBvbmVudHMvVG9vbHRpcCdcblxuaW1wb3J0IHsgRW1wdHlIaXN0b3J5SWNvbiB9IGZyb20gJy4uLy4uL2F0b21zL2ljb25zL0VtcHR5SGlzdG9yeSdcbmltcG9ydCB7IHVzZVJlc2l6ZUxpc3RlbmVyIH0gZnJvbSAnLi4vLi4vLi4vaG9va3MvdXNlUmVzaXplJ1xuaW1wb3J0IHsgdXNlQ2hhdHMgfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VDaGF0cydcbmltcG9ydCB7IFNpZGViYXJDaGF0c1NrZWxldG9uIH0gZnJvbSAnLi9TaWRlYmFyLnNrZWxldG9uJ1xuaW1wb3J0IHsgRXJyb3JTdGF0ZSwgTUFJQUljb24sIE1haWFTdG9yZUljb24sIE15QWdlbnRzTmF2SWNvbiwgU2tpbGxzTmF2SWNvbiwgTmV3Q2hhdCB9IGZyb20gJy4uLy4uL2F0b21zL2ljb25zJ1xuaW1wb3J0IHsgRVZFTlRTLCB1c2VFdmVudCB9IGZyb20gJy4uLy4uLy4uL2hvb2tzL3VzZUV2ZW50J1xuaW1wb3J0IHsgdXNlVCB9IGZyb20gJy4uLy4uLy4uL2hvb2tzL3VzZVQnXG5pbXBvcnQgeyBPcHRpb25JdGVtIH0gZnJvbSAnLi4vLi4vYXRvbXMvQ2FyZE1lbnUvQ2FyZE1lbnUnXG5pbXBvcnQgeyBFZGl0UXVlc3Rpb25Nb2RhbCB9IGZyb20gJy4uLy4uL29yZ2FuaXNtcy9FZGl0UXVlc3Rpb25Nb2RhbCdcbmltcG9ydCB7IERlbGV0ZVF1ZXN0aW9uTW9kYWwgfSBmcm9tICcuLi8uLi9vcmdhbmlzbXMvRGVsZXRlUXVlc3Rpb25Nb2RhbCdcbmltcG9ydCB7IEVycm9ySWNvbiB9IGZyb20gJy4uLy4uL2F0b21zL2ljb25zL0Vycm9ySWNvbidcbmltcG9ydCB7IHVzZVVzZXIgfSBmcm9tICcuLi8uLi8uLi9jb250ZXh0L2Nvci11c2VyJ1xuaW1wb3J0IHsgRmVlZGJhY2tCdXR0b24gfSBmcm9tICcuLi8uLi9hdG9tcy9GZWVkYmFja0J1dHRvbidcbmltcG9ydCB7IHVzZUdsb2JhbENvbnRleHQgfSBmcm9tICcuLi8uLi8uLi9jb250ZXh0L2dsb2JhbC1jb250ZXh0J1xuaW1wb3J0IHsgZmV0Y2hNYWlhIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvbWFpYS9jbGllbnQnXG5pbXBvcnQgeyBjYW5BY2Nlc3NUb1NraWxscyB9IGZyb20gJy4uLy4uLy4uL2NvbnN0YW50cy9wZXJtaXNzaW9ucydcbmltcG9ydCB7IG1hcENPUkxhbmcgfSBmcm9tICcuLi8uLi8uLi9sYW5nL3V0aWxzJ1xuaW1wb3J0IHsgZm9ybWF0Q2hhdExpc3RUaXRsZU1lbnRpb25zIH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvcmVuZGVyQ29udGV4dE1lbnRpb25zJ1xuaW1wb3J0IHsgZ2V0QWdlbnREaXNwbGF5TmFtZSwgaXNNYXJrZXRwbGFjZUdsb2JhbENsb25lQWdlbnQgfSBmcm9tICcuLi8uLi8uLi91dGlscy9hZ2VudERpc3BsYXlOYW1lJ1xuaW1wb3J0IHsgQVBQQ1VFU19FVkVOVFMsIEFQUENVRVNfU0VMRUNUT1JTLCB0cmFja0FwcGN1ZXNFdmVudCB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2FwcGN1ZXMnXG5pbXBvcnQgeyBTZXNzaW9uR2VuZXJhdGluZ0RvdCB9IGZyb20gJy4uLy4uL2F0b21zL1Nlc3Npb25HZW5lcmF0aW5nRG90J1xuaW1wb3J0IHsgdXNlSXNTZXNzaW9uR2VuZXJhdGluZywgdXNlU2Vzc2lvbk1ldGEgfSBmcm9tICcuLi8uLi8uLi9zdG9yZS9zZXNzaW9ucy91c2VTZXNzaW9uTWV0YSdcbmltcG9ydCB7IHVzZU1haWFUYXNrUGFuZWxaSW5kZXggfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VNYWlhVGFza1BhbmVsWkluZGV4J1xuaW1wb3J0IHsgdXNlQ2hhdHNTdG9yZSB9IGZyb20gJy4uLy4uLy4uL3N0b3JlL3VzZUNoYXRzU3RvcmUnXG5pbXBvcnQge1xuICBTQ0xIQ1dyYXBwZXIsXG4gIFNDTEhDV3JhcHBlckFnZW50LFxuICBTQ0xIQ1dyYXBwZXJBZ2VudFRleHQsXG4gIFNDTEhDV3JhcHBlckJ1dHRvbkFjdGlvbnMsXG4gIFNDTEhDV3JhcHBlckNvbnRlbnQsXG4gIFNDTEhDV3JhcHBlclRpdGxlLFxuICBTQ0xIQ1dyYXBwZXJUaXRsZVJvdyxcbiAgU0NTV3JhcHBlckNvbGxhcHNlZEJ1dHRvbixcbiAgU0NTV3JhcHBlck5ld0NoYXRJY29uLFxuICBTQ1NXcmFwcGVyQWdlbnRzTmF2SWNvbixcbn0gZnJvbSAnLi9TaWRlYmFyLnN0eWxlcydcbmltcG9ydCB7XG4gIFNDU1NpZGViYXJSb290LFxuICBTQ1NTaWRlYmFyVG9vbGJhcixcbiAgU0NTU2lkZWJhckJvZHksXG4gIFNDU1NpZGViYXJPcGVuUGFuZWwsXG4gIFNDU1NpZGViYXJBZ2VudHNCbG9jayxcbiAgU0NTU2lkZWJhckFnZW50c0FjdGlvbnMsXG4gIFNDU1NpZGViYXJNYWlha2VyTmF2QnV0dG9uLFxuICBTQ1NTaWRlYmFyTWFpYWtlck5hdkxhYmVsLFxuICBTQ1NTaWRlYmFyTWFpYWtlck5hdkJhZGdlTmV3LFxuICBTQ1NTaWRlYmFyQ29udmVyc2F0aW9uc0hlYWRpbmcsXG4gIFNDU1NpZGViYXJDb252ZXJzYXRpb25zSGVhZGluZ1JvdyxcbiAgU0NTU2lkZWJhckNoYXRzU2Nyb2xsLFxuICBTQ1NTaWRlYmFyRXJyb3JTdGF0ZUNvbHVtbixcbiAgU0NTU2lkZWJhckVycm9yU3RhdGVUb3AsXG4gIFNDU1NpZGViYXJFcnJvckJhbm5lcixcbiAgU0NTU2lkZWJhckVycm9yQmFubmVySWNvbldyYXAsXG4gIFNDU1NpZGViYXJFcnJvckJhbm5lck1lc3NhZ2UsXG4gIFNDU1NpZGViYXJMb2FkaW5nQXJlYSxcbiAgU0NTU2lkZWJhckxvYWRNb3JlUm93LFxuICBTQ1NTaWRlYmFyRW1wdHlDaGF0cyxcbiAgU0NTU2lkZWJhckVtcHR5Q2hhdHNUZXh0LFxuICBTQ1NTaWRlYmFyQ2hhdHNGb290ZXIsXG4gIFNDU1NpZGViYXJGb290ZXJBY3Rpb25zLFxuICBTQ1NTaWRlYmFyQ29sbGFwc2VkRGl2aWRlcixcbn0gZnJvbSAnLi9TaWRlYmFyLmxheW91dC5zdHlsZXMnXG5cbmNvbnN0IGFjdGlvbnMgPSB7XG4gIGVkaXQ6IChwcm9wczogYW55KSA9PiA8RWRpdFF1ZXN0aW9uTW9kYWwgey4uLnByb3BzfSAvPixcbiAgZGVsZXRlOiAocHJvcHM6IGFueSkgPT4gPERlbGV0ZVF1ZXN0aW9uTW9kYWwgey4uLnByb3BzfSAvPixcbn1cblxuLyoqIEFicmV2aWEgXCJlc3BlY2lhbGlzdGFcIi9cImVzcGVjaWFsaXN0XCIg4oaSIFwiRXNwLlwiIChFUy9QVCkgeSBcInNwZWNpYWxpc3RcIiDihpIgXCJTcGVjLlwiIChFTikgZW4gZWwgbm9tYnJlIGRlbCBhZ2VudGUuICovXG5mdW5jdGlvbiBhYmJyZXZpYXRlU3BlY2lhbGlzdEluQWdlbnROYW1lKGFnZW50TmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgaWYgKCFhZ2VudE5hbWUgfHwgdHlwZW9mIGFnZW50TmFtZSAhPT0gJ3N0cmluZycpIHJldHVybiBhZ2VudE5hbWVcbiAgcmV0dXJuIGFnZW50TmFtZS5yZXBsYWNlKC9cXGIoZXNwZWNpYWxpc3RhfGVzcGVjaWFsaXN0KVxcYi9naSwgJ0VzcC4nKS5yZXBsYWNlKC9cXGJzcGVjaWFsaXN0XFxiL2dpLCAnU3BlYy4nKVxufVxuXG5jb25zdCBMaXN0SGlzdG9yeUNoYXQgPSAoe1xuICBjaGF0LFxuICBvbkNsaWNrLFxuICBpc01vZGFsT3BlbixcbiAgb25PcGVuTW9kYWwsXG4gIG9uQ2xvc2VNb2RhbCxcbiAgaGFuZGxlcnMsXG4gIGlzU2VsZWN0ZWQsXG4gIGluZGV4LFxuICB0b29sdGlwWkluZGV4LFxufToge1xuICBjaGF0OiBhbnlcbiAgb25DbGljazogKGNoYXQ6IGFueSkgPT4gdm9pZFxuICBpc01vZGFsT3BlbjogYm9vbGVhblxuICBvbk9wZW5Nb2RhbDogKGNoYXRJZDogc3RyaW5nKSA9PiB2b2lkXG4gIG9uQ2xvc2VNb2RhbDogKCkgPT4gdm9pZFxuICBoYW5kbGVyczoge1xuICAgIGhhbmRsZURlbGV0ZUNoYXQ6IChjaGF0OiBhbnkpID0+IHZvaWRcbiAgICBoYW5kbGVVcGRhdGVDaGF0OiAoY2hhdDogYW55KSA9PiB2b2lkXG4gIH1cbiAgaXNTZWxlY3RlZDogYm9vbGVhblxuICBpbmRleDogbnVtYmVyXG4gIHRvb2x0aXBaSW5kZXg6IG51bWJlclxufSkgPT4ge1xuICBjb25zdCB0ZXh0UmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKVxuICBjb25zdCBhZ2VudFJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbClcbiAgY29uc3QgZGlzcGxheVRpdGxlID0gdXNlTWVtbygoKSA9PiBmb3JtYXRDaGF0TGlzdFRpdGxlTWVudGlvbnMoY2hhdC50aXRsZSksIFtjaGF0LnRpdGxlXSlcbiAgY29uc3QgZGlzcGxheUFnZW50ID0gZ2V0QWdlbnREaXNwbGF5TmFtZShjaGF0LmFnZW50VHlwZSwgY2hhdC5hZ2VudClcbiAgY29uc3QgY29udGV4dE5hbWUgPSBjaGF0LnByb2plY3ROYW1lIHx8IGNoYXQuY2xpZW50TmFtZVxuICBjb25zdCB7IHNob3dUb29sdGlwIH0gPSB1c2VSZXNpemVMaXN0ZW5lcih0ZXh0UmVmLCBbZGlzcGxheVRpdGxlXSlcbiAgY29uc3QgeyBzaG93VG9vbHRpcDogc2hvd1Rvb2x0aXBBZ2VudCB9ID0gdXNlUmVzaXplTGlzdGVuZXIoYWdlbnRSZWYsIFtjaGF0LmFnZW50XSlcbiAgY29uc3QgeyB0IH0gPSB1c2VUKClcbiAgY29uc3QgW2FjdGlvbiwgc2V0QWN0aW9uXSA9IHVzZVN0YXRlPHN0cmluZyB8IG51bGw+KG51bGwpXG4gIGNvbnN0IGlzR2VuZXJhdGluZyA9IHVzZUlzU2Vzc2lvbkdlbmVyYXRpbmcoY2hhdC5zZXNzaW9uRXh0ZXJuYWxJZClcbiAgY29uc3Qgc2Vzc2lvbk1ldGEgPSB1c2VTZXNzaW9uTWV0YShjaGF0LnNlc3Npb25FeHRlcm5hbElkKVxuICBjb25zdCBpc1VucmVhZCA9IGNoYXQuaXNSZWFkID09PSBmYWxzZSAmJiAhaXNHZW5lcmF0aW5nXG5cbiAgY29uc3QgbWVudUl0ZW1zID0gW1xuICAgIHtcbiAgICAgIGxhYmVsOiB0KCdoaXN0b3J5Lm1lbnUucmVuYW1lJyksXG4gICAgICBvbkNsaWNrSXRlbTogKGNoYXRJZDogc3RyaW5nKSA9PiB7XG4gICAgICAgIHNldEFjdGlvbignZWRpdCcpXG4gICAgICAgIG9uT3Blbk1vZGFsKGNoYXRJZClcbiAgICAgIH0sXG4gICAgICBJY29uOiBQZW5jaWwsXG4gICAgICBldmVudEtleTogRVZFTlRTLnBtQWlNZW51RWRpdCxcbiAgICB9LFxuICAgIHtcbiAgICAgIGxhYmVsOiB0KCdoaXN0b3J5Lm1lbnUuZGVsZXRlJyksXG4gICAgICBvbkNsaWNrSXRlbTogKGNoYXRJZDogc3RyaW5nKSA9PiB7XG4gICAgICAgIHNldEFjdGlvbignZGVsZXRlJylcbiAgICAgICAgb25PcGVuTW9kYWwoY2hhdElkKVxuICAgICAgfSxcbiAgICAgIEljb246IFRyYXNoLFxuICAgICAgZXZlbnRLZXk6IEVWRU5UUy5wbUFpTWVudURlbGV0ZSxcbiAgICB9LFxuICBdXG5cbiAgY29uc3QgaGFuZGxlQ29uZmlybUFjdGlvbiA9IChjaGF0RGF0YTogYW55KSA9PiB7XG4gICAgaWYgKGFjdGlvbiA9PT0gJ2VkaXQnKSB7XG4gICAgICBoYW5kbGVycy5oYW5kbGVVcGRhdGVDaGF0KGNoYXREYXRhKVxuICAgIH0gZWxzZSB7XG4gICAgICBoYW5kbGVycy5oYW5kbGVEZWxldGVDaGF0KGNoYXREYXRhKVxuICAgIH1cbiAgICBzZXRBY3Rpb24obnVsbClcbiAgICBvbkNsb3NlTW9kYWwoKVxuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgPFNDTEhDV3JhcHBlckNvbnRlbnRcbiAgICAgICAgb25DbGljaz17ZSA9PiB7XG4gICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKVxuICAgICAgICAgIG9uQ2xpY2soY2hhdClcbiAgICAgICAgfX1cbiAgICAgICAga2V5PXtgY29udmVyc2F0aW9uLSR7Y2hhdC5zZXNzaW9uRXh0ZXJuYWxJZH1gfVxuICAgICAgICBpc01vZGFsT3Blbj17aXNNb2RhbE9wZW59XG4gICAgICAgIGlzU2VsZWN0ZWQ9e2lzU2VsZWN0ZWR9XG4gICAgICAgICRpbmRleD17aW5kZXh9XG4gICAgICA+XG4gICAgICAgIDxTQ0xIQ1dyYXBwZXI+XG4gICAgICAgICAgPFNDTEhDV3JhcHBlclRpdGxlUm93PlxuICAgICAgICAgICAge2lzR2VuZXJhdGluZyB8fCBpc1VucmVhZCA/IChcbiAgICAgICAgICAgICAgPFNlc3Npb25HZW5lcmF0aW5nRG90XG4gICAgICAgICAgICAgICAgYXJpYUxhYmVsPXtpc0dlbmVyYXRpbmcgPyB0KCdjb252ZXJzYXRpb25zLmdlbmVyYXRpbmcnKSA6IHQoJ2NvbnZlcnNhdGlvbnMudW5yZWFkTGFiZWwnKX1cbiAgICAgICAgICAgICAgICBpc1dyaXRpbmc9e2lzR2VuZXJhdGluZyAmJiBzZXNzaW9uTWV0YT8uaXNXcml0aW5nfVxuICAgICAgICAgICAgICAgIGFuaW1hdGVkPXtpc0dlbmVyYXRpbmd9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICAgIDxUb29sdGlwIHRpdGxlPXtzaG93VG9vbHRpcCA/IGRpc3BsYXlUaXRsZSA6ICcnfSB6SW5kZXg9e3Rvb2x0aXBaSW5kZXh9PlxuICAgICAgICAgICAgICA8U0NMSENXcmFwcGVyVGl0bGUgcmVmPXt0ZXh0UmVmfSAkdW5yZWFkPXtpc1VucmVhZH0+XG4gICAgICAgICAgICAgICAge2Rpc3BsYXlUaXRsZSB8fCB0KCdjb252ZXJzYXRpb25zLmVtcHR5TGFiZWwnKX1cbiAgICAgICAgICAgICAgPC9TQ0xIQ1dyYXBwZXJUaXRsZT5cbiAgICAgICAgICAgIDwvVG9vbHRpcD5cbiAgICAgICAgICA8L1NDTEhDV3JhcHBlclRpdGxlUm93PlxuICAgICAgICAgIDxUb29sdGlwXG4gICAgICAgICAgICB0aXRsZT17c2hvd1Rvb2x0aXBBZ2VudCA/IGRpc3BsYXlBZ2VudCArIChjb250ZXh0TmFtZSA/IGAgLSAke2NvbnRleHROYW1lfWAgOiAnJykgOiAnJ31cbiAgICAgICAgICAgIHpJbmRleD17dG9vbHRpcFpJbmRleH1cbiAgICAgICAgICA+XG4gICAgICAgICAgICA8U0NMSENXcmFwcGVyQWdlbnQ+XG4gICAgICAgICAgICAgIHtjaGF0LmFnZW50VHlwZSA9PT0gJ2Nsb25lJyB8fCBjaGF0LmFnZW50VHlwZSA9PT0gJ29yY2hlc3RyYXRvcicgPyAoXG4gICAgICAgICAgICAgICAgPE1BSUFJY29uIHdpZHRoPXsxNH0gaGVpZ2h0PXsxNH0gLz5cbiAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICA8c3BhbiBzdHlsZT17eyBmb250U2l6ZTogJzE0cHgnIH19PntjaGF0LmVtb2ppfTwvc3Bhbj5cbiAgICAgICAgICAgICAgKX1cblxuICAgICAgICAgICAgICA8U0NMSENXcmFwcGVyQWdlbnRUZXh0IHJlZj17YWdlbnRSZWZ9PlxuICAgICAgICAgICAgICAgIHtjaGF0LmFnZW50VHlwZSA9PT0gJ2Nsb25lJyB8fCBjaGF0LmFnZW50VHlwZSA9PT0gJ29yY2hlc3RyYXRvcidcbiAgICAgICAgICAgICAgICAgID8gYWJicmV2aWF0ZVNwZWNpYWxpc3RJbkFnZW50TmFtZShjaGF0LmFnZW50KVxuICAgICAgICAgICAgICAgICAgOiBjaGF0LmFnZW50fVxuICAgICAgICAgICAgICAgIHtjaGF0LnByb2plY3ROYW1lICYmIGAgLSAke2NoYXQucHJvamVjdE5hbWV9YH1cbiAgICAgICAgICAgICAgPC9TQ0xIQ1dyYXBwZXJBZ2VudFRleHQ+XG4gICAgICAgICAgICA8L1NDTEhDV3JhcHBlckFnZW50PlxuICAgICAgICAgIDwvVG9vbHRpcD5cbiAgICAgICAgPC9TQ0xIQ1dyYXBwZXI+XG4gICAgICAgIDxTQ0xIQ1dyYXBwZXJCdXR0b25BY3Rpb25zPlxuICAgICAgICAgIDxDVUJ1dHRvblxuICAgICAgICAgICAgaWNvbk9ubHlcbiAgICAgICAgICAgIHNpemU9XCJzbWFsbFwiXG4gICAgICAgICAgICB2YXJpYW50PVwidGV4dFwiXG4gICAgICAgICAgICBvbkNsaWNrPXtldmVudCA9PiB7XG4gICAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXG4gICAgICAgICAgICAgIG9uT3Blbk1vZGFsKGNoYXQuaWQpXG4gICAgICAgICAgICB9fVxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxNZW51RG90cyB3aWR0aD17MjB9IGhlaWdodD17MjB9IC8+XG4gICAgICAgICAgPC9DVUJ1dHRvbj5cbiAgICAgICAgICB7aXNNb2RhbE9wZW4gJiYgIWFjdGlvbiAmJiAoXG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIGRhdGEtbW9kYWwtY29udGFpbmVyXG4gICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgcG9zaXRpb246ICdhYnNvbHV0ZScsXG4gICAgICAgICAgICAgICAgdG9wOiAnMzJweCcsXG4gICAgICAgICAgICAgICAgcmlnaHQ6ICcxNnB4JyxcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6ICd3aGl0ZScsXG4gICAgICAgICAgICAgICAgekluZGV4OiAxMDAwLFxuICAgICAgICAgICAgICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICAgICAgICAgICAgICBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJyxcbiAgICAgICAgICAgICAgICBib3JkZXJSYWRpdXM6ICc0cHgnLFxuICAgICAgICAgICAgICAgIGJvcmRlcjogJzFweCBzb2xpZCByZ2JhKDIyNCwgMjI0LCAyMjQsIDEpJyxcbiAgICAgICAgICAgICAgICBtaW5XaWR0aDogJzEyNHB4JyxcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge21lbnVJdGVtcy5tYXAoKHsgbGFiZWwsIG9uQ2xpY2tJdGVtLCBJY29uLCBldmVudEtleSB9KSA9PiAoXG4gICAgICAgICAgICAgICAgPE9wdGlvbkl0ZW1cbiAgICAgICAgICAgICAgICAgIGtleT17bGFiZWx9XG4gICAgICAgICAgICAgICAgICBsYWJlbD17bGFiZWx9XG4gICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBvbkNsaWNrSXRlbShjaGF0LmlkKX1cbiAgICAgICAgICAgICAgICAgIEljb249e0ljb259XG4gICAgICAgICAgICAgICAgICBldmVudEtleT17ZXZlbnRLZXl9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICApfVxuICAgICAgICA8L1NDTEhDV3JhcHBlckJ1dHRvbkFjdGlvbnM+XG4gICAgICA8L1NDTEhDV3JhcHBlckNvbnRlbnQ+XG4gICAgICB7ISFhY3Rpb24gJiZcbiAgICAgICAgYWN0aW9uc1thY3Rpb25dKHtcbiAgICAgICAgICBvbkNsb3NlOiAoKSA9PiB7XG4gICAgICAgICAgICBvbkNsb3NlTW9kYWwoKVxuICAgICAgICAgICAgc2V0QWN0aW9uKG51bGwpXG4gICAgICAgICAgfSxcbiAgICAgICAgICBjaGF0LFxuICAgICAgICAgIGhhbmRsZXJzOiB7XG4gICAgICAgICAgICBoYW5kbGVDb25maXJtQWN0aW9uLFxuICAgICAgICAgICAgaGFuZGxlU2V0SXNPcGVuTW9kYWw6IG9uQ2xvc2VNb2RhbCxcbiAgICAgICAgICB9LFxuICAgICAgICB9KX1cbiAgICA8Lz5cbiAgKVxufVxuXG5leHBvcnQgY29uc3QgU2lkZWJhciA9ICh7XG4gIG9uR29Ub0NoYXQsXG4gIG9uRXJyb3IgPSAoKSA9PiBudWxsLFxuICBoYW5kbGVHb1RvSG9tZSxcbiAgaGFuZGxlU3RhcnROZXdDaGF0LFxuICBoYW5kbGVPcGVuTWFya2V0cGxhY2UsXG4gIGhhbmRsZU9wZW5Ta2lsbHMsXG4gIG9uT3Blbk1haWFrZXJDcmVhdG9yLFxuICBzaG93TmV3Q2hhdCxcbiAgcmVmZXRjaENoYXRzLFxuICBoYW5kbGVTZXRSZWZldGNoQ2hhdHMsXG4gIGhhc0Vycm9yLFxuICBhZ2VudHNOYXZBY3RpdmUgPSBudWxsLFxuICBpc0xlZ2FjeUNvbnRleHRTZXNzaW9uID0gZmFsc2UsXG4gIGluaXRpYWxPcGVuID0gZmFsc2UsXG4gIG9uT3BlbkNoYW5nZSxcbiAgb3BlbixcbiAgY29udmVyc2F0aW9uc09ubHkgPSBmYWxzZSxcbn06IHtcbiAgb25Hb1RvQ2hhdDogKGNoYXRJZDogc3RyaW5nKSA9PiB2b2lkXG4gIG9uRXJyb3I6ICgpID0+IHZvaWRcbiAgaGFuZGxlR29Ub0hvbWU6ICgpID0+IHZvaWRcbiAgLyoqIEluaWNpYSB1biBjaGF0IG51ZXZvOyBlbiBNaXMgYWdlbnRlcyAvIE1haWFrZXIgLyBNaXMgc2tpbGxzIHVzYSBlbCBwcmltZXIgYWdlbnRlIGRlIGxhIGxpc3RhLiAqL1xuICBoYW5kbGVTdGFydE5ld0NoYXQ/OiAoKSA9PiB2b2lkXG4gIGhhbmRsZU9wZW5NYXJrZXRwbGFjZTogKCkgPT4gdm9pZFxuICBoYW5kbGVPcGVuU2tpbGxzOiAoKSA9PiB2b2lkXG4gIC8qKiBBYnJlIGVsIGNyZWFkb3IgTWFpYWtlciAobWlzbWEgbMOzZ2ljYSBxdWUgZWwgaHViIGRlbCBtb2RhbCkuICovXG4gIG9uT3Blbk1haWFrZXJDcmVhdG9yPzogKCkgPT4gdm9pZCB8IFByb21pc2U8dm9pZD5cbiAgc2hvd05ld0NoYXQ6IGJvb2xlYW5cbiAgcmVmZXRjaENoYXRzOiBib29sZWFuXG4gIGhhbmRsZVNldFJlZmV0Y2hDaGF0czogKHJlZmV0Y2g6IGJvb2xlYW4pID0+IHZvaWRcbiAgaGFzRXJyb3I6IGJvb2xlYW5cbiAgLyoqIFJlc2FsdGEgTWFpYWtlciwgTWlzIGFnZW50ZXMgbyBNaXMgc2tpbGxzICovXG4gIGFnZW50c05hdkFjdGl2ZT86ICdtYWlha2VyJyB8ICdteUFnZW50cycgfCAnbXlTa2lsbHMnIHwgbnVsbFxuICAvKiogQ29udmVyc2FjacOzbiBkZSB1biBjbG9uZSBsZWdhY3kgKGFnZW50X3R5cGUgY2xvbmUgKyBlbnRpdHkgcHJvamVjdC9jbGllbnQvdGFzayk6IG9jdWx0YSBcIm51ZXZvIGNoYXRcIi4gKi9cbiAgaXNMZWdhY3lDb250ZXh0U2Vzc2lvbj86IGJvb2xlYW5cbiAgLyoqIEVzdGFkbyBpbmljaWFsIGRlbCBzaWRlYmFyIChyZXN0YXVyYWNpw7NuIGRlIHNlc2nDs24gdHJhcyBuYXZlZ2FjacOzbikuICovXG4gIGluaXRpYWxPcGVuPzogYm9vbGVhblxuICBvbk9wZW5DaGFuZ2U/OiAob3BlbjogYm9vbGVhbikgPT4gdm9pZFxuICAvKiogU2kgc2UgcGFzYSwgZWwgc2lkZWJhciBlcyBjb250cm9sYWRvIHBvciBlbCBwYWRyZSAocC4gZWouIHRvZ2dsZSBkZWwgaGVhZGVyIGRlIHDDoWdpbmEpLiAqL1xuICBvcGVuPzogYm9vbGVhblxuICAvKiogUMOhZ2luYSAvbWFpYTogc29sbyBoaXN0b3JpYWwgZGUgY29udmVyc2FjaW9uZXMsIHNpbiBuYXYgZGUgYWdlbnRlcy4gKi9cbiAgY29udmVyc2F0aW9uc09ubHk/OiBib29sZWFuXG59KSA9PiB7XG4gIGNvbnN0IHsgdCwgaTE4biB9ID0gdXNlVCgpXG4gIGNvbnN0IHRvb2x0aXBaSW5kZXggPSB1c2VNYWlhVGFza1BhbmVsWkluZGV4KDE1MDAsICdvdmVybGF5JylcbiAgY29uc3QgW3VuY29udHJvbGxlZE9wZW4sIHNldFVuY29udHJvbGxlZE9wZW5dID0gdXNlU3RhdGUoaW5pdGlhbE9wZW4pXG4gIGNvbnN0IGlzT3BlbiA9IG9wZW4gPz8gdW5jb250cm9sbGVkT3BlblxuICBjb25zdCBbaXNPcGVuTW9kYWwsIHNldElzT3Blbk1vZGFsXSA9IHVzZVN0YXRlPHN0cmluZyB8IG51bGw+KG51bGwpXG4gIGNvbnN0IGFjdGl2ZUNoYXRJZCA9IHVzZUNoYXRzU3RvcmUoc3RhdGUgPT4gc3RhdGUuYWN0aXZlQ2hhdElkKVxuICBjb25zdCBjaGF0c0ZldGNoZWRSZWYgPSB1c2VSZWYoZmFsc2UpXG4gIGNvbnN0IGNoYXRzQ29udGFpbmVyUmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKVxuICBjb25zdCB1c2VyID0gdXNlVXNlcigpXG4gIGNvbnN0IGV2ZW50QW1wbGl0dWRlID0gdXNlRXZlbnQoKVxuICBjb25zdCB7IGFnZW50OiBzZWxlY3RlZEFnZW50LCBzZWxlY3RBZ2VudCwgc2V0UHJvamVjdCwgc2V0Q2xpZW50LCBzZXRUYXNrIH0gPSB1c2VHbG9iYWxDb250ZXh0KClcbiAgY29uc3Qge1xuICAgIGxvYWRpbmdDaGF0cyxcbiAgICBjaGF0cyxcbiAgICBkZWxldGVDaGF0LFxuICAgIHVwZGF0ZUNoYXQsXG4gICAgZmV0Y2hDaGF0cyxcbiAgICBsaW1pdCxcbiAgICBvZmZzZXQsXG4gICAgaGFzTW9yZUNoYXRzLFxuICAgIGxvYWRNb3JlQ2hhdHMsXG4gICAgaXNMb2FkaW5nTW9yZUNoYXRzLFxuICAgIHNldFVucmVhZENvdW50LFxuICAgIHNldENoYXRSZWFkU3RhdGUsXG4gIH0gPSB1c2VDaGF0cyh7XG4gICAgb25FcnJvcixcbiAgfSlcblxuICBjb25zdCB1bnJlYWRTdWJzY3JpYmVkUmVmID0gdXNlUmVmKGZhbHNlKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCF1c2VyPy5pZCB8fCB0eXBlb2YgJF9zYyA9PT0gJ3VuZGVmaW5lZCcgfHwgISRfc2MpIHJldHVybiB1bmRlZmluZWRcblxuICAgIGNvbnN0IGNoYW5uZWwgPSBgc2Vzc2lvbnMudW5yZWFkOiR7dXNlci5pZH1gXG4gICAgY29uc3QgaGFuZGxlVW5yZWFkRXZlbnQgPSAoe1xuICAgICAgbW9kZWxfZGF0YTogbW9kZWxEYXRhLFxuICAgIH06IHtcbiAgICAgIG1vZGVsX2RhdGE/OiB7IHVucmVhZF9jb3VudD86IG51bWJlcjsgc2Vzc2lvbl9pZD86IHN0cmluZzsgaXNfcmVhZD86IGJvb2xlYW4gfVxuICAgIH0pID0+IHtcbiAgICAgIGlmICh0eXBlb2YgbW9kZWxEYXRhPy51bnJlYWRfY291bnQgPT09ICdudW1iZXInKSB7XG4gICAgICAgIHNldFVucmVhZENvdW50KG1vZGVsRGF0YS51bnJlYWRfY291bnQpXG4gICAgICB9XG4gICAgICBpZiAobW9kZWxEYXRhPy5zZXNzaW9uX2lkICYmIHR5cGVvZiBtb2RlbERhdGE/LmlzX3JlYWQgPT09ICdib29sZWFuJykge1xuICAgICAgICBzZXRDaGF0UmVhZFN0YXRlKG1vZGVsRGF0YS5zZXNzaW9uX2lkLCBtb2RlbERhdGEuaXNfcmVhZClcbiAgICAgIH1cbiAgICB9XG5cbiAgICAkX3NjLnN1YnNjcmliZUhhbmRsZXIoY2hhbm5lbCwgaGFuZGxlVW5yZWFkRXZlbnQpXG5cbiAgICBpZiAoIXVucmVhZFN1YnNjcmliZWRSZWYuY3VycmVudCkge1xuICAgICAgJF9zYy51cGRhdGVDb25uZWN0aW9uTW9kZWwoXG4gICAgICAgIHtcbiAgICAgICAgICBtb2RlbF9oYXNoOiBjaGFubmVsLFxuICAgICAgICAgIGFjdGlvbjogJF9zYy5hY3Rpb25UeXBlPy5TVUJTQ1JJQkUsXG4gICAgICAgIH0sXG4gICAgICAgIGNoYW5uZWwsXG4gICAgICAgIHVzZXIsXG4gICAgICAgIHVzZXIsXG4gICAgICAgICRfc2MuY2hhbm5lbFR5cGU/Lk1PREVMX0NIQU5ORUxcbiAgICAgIClcbiAgICAgIHVucmVhZFN1YnNjcmliZWRSZWYuY3VycmVudCA9IHRydWVcbiAgICB9XG5cbiAgICByZXR1cm4gdW5kZWZpbmVkXG4gIH0sIFt1c2VyLCBzZXRVbnJlYWRDb3VudCwgc2V0Q2hhdFJlYWRTdGF0ZV0pXG5cbiAgY29uc3QgdXNlclBlcm1pc3Npb25zID0gdXNlcj8ucGVybWlzc2lvbnM/LmFpX2FnZW50c1xuICBjb25zdCBjYW5DcmVhdGVBZ2VudHMgPSAhIXVzZXJQZXJtaXNzaW9ucz8uY3JlYXRlXG4gIGNvbnN0IGhhc011bHRpQWdlbnRzRmVhdHVyZUFjY2VzcyA9ICEhd2luZG93Lk1BSUFfQ0hBVF9BSV9GRUFUVVJFX0FDQ0VTU19NVUxUSV9BR0VOVFNcbiAgY29uc3QgY2FuVmlld0FnZW50cyA9ICEhdXNlclBlcm1pc3Npb25zPy52aWV3ICYmIGhhc011bHRpQWdlbnRzRmVhdHVyZUFjY2Vzc1xuICBjb25zdCBjYW5WaWV3U2tpbGxzID0gY2FuQWNjZXNzVG9Ta2lsbHModXNlcikgJiYgKHVzZXI/LmNvbXBhbnlfaWQgPT09IDIzMzYgfHwgdXNlcj8uY29tcGFueV9pZCA9PT0gMTMzMDMpXG4gIGNvbnN0IHNob3dNYXJrZXRwbGFjZVNpZGViYXJCdXR0b24gPSAhIWNhbkNyZWF0ZUFnZW50cyAmJiBoYXNNdWx0aUFnZW50c0ZlYXR1cmVBY2Nlc3NcbiAgY29uc3QgYWdlbnROYXZCdXR0b25Db3VudCA9ICgoc2hvd01hcmtldHBsYWNlU2lkZWJhckJ1dHRvbiA/IDEgOiAwKSArXG4gICAgKGNhblZpZXdBZ2VudHMgPyAxIDogMCkgK1xuICAgIChjYW5WaWV3U2tpbGxzID8gMSA6IDApKSBhcyAwIHwgMSB8IDIgfCAzXG4gIGNvbnN0IHNob3dBZ2VudHNOYXZCbG9jayA9ICFjb252ZXJzYXRpb25zT25seSAmJiAoc2hvd01hcmtldHBsYWNlU2lkZWJhckJ1dHRvbiB8fCBjYW5WaWV3QWdlbnRzIHx8IGNhblZpZXdTa2lsbHMpXG4gIGNvbnN0IG15QWdlbnRzU2lkZWJhclRyYWNrZWRSZWYgPSB1c2VSZWYoZmFsc2UpXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIWNhblZpZXdBZ2VudHMgfHwgbXlBZ2VudHNTaWRlYmFyVHJhY2tlZFJlZi5jdXJyZW50KSByZXR1cm5cblxuICAgIG15QWdlbnRzU2lkZWJhclRyYWNrZWRSZWYuY3VycmVudCA9IHRydWVcbiAgICB0cmFja0FwcGN1ZXNFdmVudChBUFBDVUVTX0VWRU5UUy5tYWlhU2lkZWJhck15QWdlbnRzKVxuICB9LCBbY2FuVmlld0FnZW50c10pXG5cbiAgY29uc3QgaGFuZGxlRGVsZXRlQ2hhdCA9IGFzeW5jIChjaGF0OiBhbnkpID0+IHtcbiAgICBkZWxldGVDaGF0KGNoYXQuc2Vzc2lvbkV4dGVybmFsSWQpXG4gICAgc2V0SXNPcGVuTW9kYWwobnVsbClcbiAgICBoYW5kbGVHb1RvSG9tZSgpXG4gIH1cblxuICBjb25zdCBoYW5kbGVVcGRhdGVDaGF0ID0gKGNoYXQ6IGFueSkgPT4ge1xuICAgIHVwZGF0ZUNoYXQoY2hhdClcbiAgICBzZXRJc09wZW5Nb2RhbChudWxsKVxuICB9XG5cbiAgY29uc3QgaGFuZGxlT3Blbk1vZGFsID0gKGNoYXRJZDogc3RyaW5nKSA9PiB7XG4gICAgaWYgKGlzT3Blbk1vZGFsICYmIGlzT3Blbk1vZGFsICE9PSBjaGF0SWQpIHtcbiAgICAgIHNldElzT3Blbk1vZGFsKG51bGwpXG4gICAgfSBlbHNlIHtcbiAgICAgIHNldElzT3Blbk1vZGFsKGNoYXRJZClcbiAgICB9XG4gIH1cblxuICBjb25zdCBoYW5kbGVDbG9zZU1vZGFsID0gKCkgPT4ge1xuICAgIHNldElzT3Blbk1vZGFsKG51bGwpXG4gIH1cblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGhhbmRsZUNsaWNrT3V0c2lkZSA9IChldmVudDogTW91c2VFdmVudCkgPT4ge1xuICAgICAgaWYgKGlzT3Blbk1vZGFsICYmICEoZXZlbnQudGFyZ2V0IGFzIEVsZW1lbnQpLmNsb3Nlc3QoJ1tkYXRhLW1vZGFsLWNvbnRhaW5lcl0nKSkge1xuICAgICAgICBzZXRJc09wZW5Nb2RhbChudWxsKVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChpc09wZW5Nb2RhbCkge1xuICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vkb3duJywgaGFuZGxlQ2xpY2tPdXRzaWRlKVxuICAgIH1cblxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZWRvd24nLCBoYW5kbGVDbGlja091dHNpZGUpXG4gICAgfVxuICB9LCBbaXNPcGVuTW9kYWxdKVxuXG4gIGNvbnN0IGhhbmRsZVRvZ2dsZVNpZGViYXIgPSAoKSA9PiB7XG4gICAgaWYgKGlzT3Blbk1vZGFsKSB7XG4gICAgICBzZXRJc09wZW5Nb2RhbChudWxsKVxuICAgIH1cbiAgICBldmVudEFtcGxpdHVkZShFVkVOVFMuYWlDaGF0U2lkZWJhciwgeyBhY3Rpb246IGlzT3BlbiA/ICdjbG9zZScgOiAnb3BlbicgfSlcbiAgICBjb25zdCBuZXh0ID0gIWlzT3BlblxuICAgIGlmIChvcGVuID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHNldFVuY29udHJvbGxlZE9wZW4obmV4dClcbiAgICB9XG4gICAgb25PcGVuQ2hhbmdlPy4obmV4dClcbiAgfVxuXG4gIGNvbnN0IGhhbmRsZU9wZW5DcmVhdGVBZ2VudCA9IGFzeW5jICgpID0+IHtcbiAgICBpZiAob25PcGVuTWFpYWtlckNyZWF0b3IpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IG9uT3Blbk1haWFrZXJDcmVhdG9yKClcbiAgICAgIH0gY2F0Y2gge1xuICAgICAgICBvbkVycm9yKClcbiAgICAgIH1cbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoTWFpYSh7XG4gICAgICAgIHBhdGg6IGBhZ2VudHM/YWdlbnRfdHlwZT1jbG9uZSZlbnRpdHk9Z2xvYmFsJmxhbmc9JHttYXBDT1JMYW5nKGkxOG4ubGFuZ3VhZ2UpfWAsXG4gICAgICAgIG1ldGhvZDogJ0dFVCcsXG4gICAgICB9KVxuICAgICAgY29uc3QgZGF0YSA9IGF3YWl0IHJlc3BvbnNlLmpzb24oKVxuICAgICAgY29uc3QgbWFpYWtlckFnZW50ID0gKGRhdGEuZGF0YSB8fCBbXSkuZmluZCgoYWdlbnRJdGVtOiB7IHR5cGU/OiBzdHJpbmc7IGVudGl0eT86IHN0cmluZzsgbmFtZT86IHN0cmluZyB9KSA9PlxuICAgICAgICBpc01hcmtldHBsYWNlR2xvYmFsQ2xvbmVBZ2VudChhZ2VudEl0ZW0pXG4gICAgICApXG5cbiAgICAgIGlmICghbWFpYWtlckFnZW50KSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBzZXRQcm9qZWN0KG51bGwpXG4gICAgICBzZXRDbGllbnQ/LihudWxsKVxuICAgICAgc2V0VGFzayhudWxsKVxuICAgICAgLy8gaGFuZGxlR29Ub0hvbWUgcHVlZGUgcmVzZWxlY2Npb25hciBhZ2VudHMuZGF0YVswXSBzaSBlbCBhZ2VudGUgZ2xvYmFsIGF1biBlc3RhIGVuIG51bGxcbiAgICAgIC8vIChjbG9zdXJlIHN0YWxlIGRlIGxhIHNlY2Npb24gXCJNaXMgYWdlbnRlc1wiKSwgcG9yIGVzbyBzZWxlY3RBZ2VudChtYWlha2VyQWdlbnQpIHZhIGRlc3B1ZXMuXG4gICAgICBoYW5kbGVHb1RvSG9tZSgpXG4gICAgICBzZWxlY3RBZ2VudChtYWlha2VyQWdlbnQpXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIG9uRXJyb3IoKVxuICAgIH1cbiAgfVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFjaGF0c0ZldGNoZWRSZWYuY3VycmVudCkge1xuICAgICAgY2hhdHNGZXRjaGVkUmVmLmN1cnJlbnQgPSB0cnVlXG4gICAgICBmZXRjaENoYXRzKHsgbGltaXQsIG9mZnNldCB9KVxuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIC8vIFJlZmV0Y2ggc29saWNpdGFkbyBwb3IgcHJvcDogc2UgZWplY3V0YSBhdW5xdWUgZWwgc2lkZWJhciBlc3TDqSBjb2xhcHNhZG8uXG4gICAgaWYgKHJlZmV0Y2hDaGF0cykge1xuICAgICAgZmV0Y2hDaGF0cyh7IGxpbWl0LCBvZmZzZXQgfSlcbiAgICAgIGhhbmRsZVNldFJlZmV0Y2hDaGF0cyhmYWxzZSlcbiAgICB9XG4gIH0sIFtyZWZldGNoQ2hhdHMsIGhhbmRsZVNldFJlZmV0Y2hDaGF0cywgZmV0Y2hDaGF0cywgbGltaXQsIG9mZnNldF0pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBoYW5kbGVTY3JvbGwgPSAoKSA9PiB7XG4gICAgICBpZiAoIWNoYXRzQ29udGFpbmVyUmVmLmN1cnJlbnQgfHwgIWhhc01vcmVDaGF0cyB8fCBpc0xvYWRpbmdNb3JlQ2hhdHMgfHwgaGFzRXJyb3IpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHsgc2Nyb2xsVG9wLCBzY3JvbGxIZWlnaHQsIGNsaWVudEhlaWdodCB9ID0gY2hhdHNDb250YWluZXJSZWYuY3VycmVudFxuICAgICAgY29uc3QgaXNBdEJvdHRvbSA9IHNjcm9sbFRvcCArIGNsaWVudEhlaWdodCA+PSBzY3JvbGxIZWlnaHQgLSAxMFxuXG4gICAgICBpZiAoaXNBdEJvdHRvbSkge1xuICAgICAgICBsb2FkTW9yZUNoYXRzKClcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBjb250YWluZXIgPSBjaGF0c0NvbnRhaW5lclJlZi5jdXJyZW50XG4gICAgaWYgKGNvbnRhaW5lcikge1xuICAgICAgY29udGFpbmVyLmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIGhhbmRsZVNjcm9sbClcbiAgICB9XG5cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgaWYgKGNvbnRhaW5lcikge1xuICAgICAgICBjb250YWluZXIucmVtb3ZlRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgaGFuZGxlU2Nyb2xsKVxuICAgICAgfVxuICAgIH1cbiAgfSwgW2hhc01vcmVDaGF0cywgaXNMb2FkaW5nTW9yZUNoYXRzLCBsb2FkTW9yZUNoYXRzLCBoYXNFcnJvcl0pXG5cbiAgY29uc3QgaGFuZGxlTmV3Q2hhdCA9ICgpID0+IHtcbiAgICBldmVudEFtcGxpdHVkZShFVkVOVFMuYWlTaWRlYmFyTmV3Q2hhdClcbiAgICBpZiAoaXNPcGVuTW9kYWwpIHtcbiAgICAgIHNldElzT3Blbk1vZGFsKG51bGwpXG4gICAgfVxuICAgIGlmIChoYW5kbGVTdGFydE5ld0NoYXQpIHtcbiAgICAgIGhhbmRsZVN0YXJ0TmV3Q2hhdCgpXG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgaGFuZGxlR29Ub0hvbWUoKVxuICB9XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAvLyBBbCBjcmVhci9hY3R1YWxpemFyIHVuYSBjb252ZXJzYWNpw7NuIHJlZnJlc2NhbW9zIGxhIGxpc3RhIGF1bnF1ZSBlbCBzaWRlYmFyIGVzdMOpIGNvbGFwc2Fkby5cbiAgICBjb25zdCBoYW5kbGVSZWZldGNoU2Vzc2lvbiA9ICgpID0+IHtcbiAgICAgIGNoYXRzRmV0Y2hlZFJlZi5jdXJyZW50ID0gdHJ1ZVxuICAgICAgZmV0Y2hDaGF0cyh7IGxpbWl0OiAyMCwgb2Zmc2V0OiAwLCBiYWNrZ3JvdW5kOiB0cnVlIH0pXG4gICAgfVxuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3JlZmV0Y2gtc2Vzc2lvbicsIGhhbmRsZVJlZmV0Y2hTZXNzaW9uKVxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdyZWZldGNoLXNlc3Npb24nLCBoYW5kbGVSZWZldGNoU2Vzc2lvbilcbiAgICB9XG4gIH0sIFtmZXRjaENoYXRzXSlcblxuICBjb25zdCBpc0FnZW50c0h1YlNlY3Rpb24gPVxuICAgIHNob3dOZXdDaGF0ICYmIChhZ2VudHNOYXZBY3RpdmUgPT09ICdteUFnZW50cycgfHwgYWdlbnRzTmF2QWN0aXZlID09PSAnbWFpYWtlcicgfHwgYWdlbnRzTmF2QWN0aXZlID09PSAnbXlTa2lsbHMnKVxuXG4gIGNvbnN0IHNob3dOZXdDaGF0QnV0dG9uID1cbiAgICBpc0FnZW50c0h1YlNlY3Rpb24gfHxcbiAgICAoIXNob3dOZXdDaGF0ICYmXG4gICAgICAhaGFzRXJyb3IgJiZcbiAgICAgICFsb2FkaW5nQ2hhdHMgJiZcbiAgICAgICFpc0xlZ2FjeUNvbnRleHRTZXNzaW9uICYmXG4gICAgICAoKHVzZXJQZXJtaXNzaW9ucz8udmlldyAmJlxuICAgICAgICAhc2VsZWN0ZWRBZ2VudD8uaXNfZGVsZXRlZCAmJlxuICAgICAgICAhc2VsZWN0ZWRBZ2VudD8uaGFzX25vdF9wZXJtaXNzaW9ucyAmJlxuICAgICAgICAhc2VsZWN0ZWRBZ2VudD8uaGFzX25vdF9hY2Nlc3MpIHx8XG4gICAgICAgICghdXNlclBlcm1pc3Npb25zPy52aWV3ICYmXG4gICAgICAgICAgIXNlbGVjdGVkQWdlbnQ/LmlzX2RlbGV0ZWQgJiZcbiAgICAgICAgICAhc2VsZWN0ZWRBZ2VudD8uaGFzX25vdF9wZXJtaXNzaW9ucyAmJlxuICAgICAgICAgICFzZWxlY3RlZEFnZW50Py5oYXNfbm90X2FjY2VzcykpKVxuXG4gIGNvbnN0IG5ld0NoYXRCdXR0b24gPSAoXG4gICAgPFRvb2x0aXAgdGl0bGU9e3QoJ2NvbnZlcnNhdGlvbnMubmV3Q2hhdCcpfSB6SW5kZXg9e3Rvb2x0aXBaSW5kZXh9PlxuICAgICAgPFNDU1dyYXBwZXJOZXdDaGF0SWNvbiBvbkNsaWNrPXtoYW5kbGVOZXdDaGF0fSBhcmlhLWxhYmVsPXt0KCdjb252ZXJzYXRpb25zLm5ld0NoYXQnKX0+XG4gICAgICAgIDxOZXdDaGF0IHdpZHRoPXsxNn0gaGVpZ2h0PXsxNn0gLz5cbiAgICAgIDwvU0NTV3JhcHBlck5ld0NoYXRJY29uPlxuICAgIDwvVG9vbHRpcD5cbiAgKVxuXG4gIHJldHVybiAoXG4gICAgPFNDU1NpZGViYXJSb290ICRpc09wZW49e2lzT3Blbn0+XG4gICAgICA8U0NTU2lkZWJhclRvb2xiYXIgJGlzT3Blbj17aXNPcGVufT5cbiAgICAgICAgPFRvb2x0aXAgdGl0bGU9e2lzT3BlbiA/IHQoJ2NvbnZlcnNhdGlvbnMuY29sbGFwc2UnKSA6IHQoJ2hpc3RvcnkudG9vbHRpcCcpfSB6SW5kZXg9e3Rvb2x0aXBaSW5kZXh9PlxuICAgICAgICAgIDxTQ1NXcmFwcGVyQ29sbGFwc2VkQnV0dG9uIG9uQ2xpY2s9e2hhbmRsZVRvZ2dsZVNpZGViYXJ9IGlzT3Blbj17aXNPcGVufT5cbiAgICAgICAgICAgIHtpc09wZW4gPyAoXG4gICAgICAgICAgICAgIDxDaGV2cm9uRG91YmxlTGVmdCBjb2xvcj1cInJnYmEoMTAyLCAxMDIsIDEwMiwgMSlcIiB3aWR0aD17MTZ9IGhlaWdodD17MTZ9IC8+XG4gICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICA8SGlzdG9yeSBjb2xvcj1cInJnYmEoMTMsIDEzLCAxMywgMSlcIiB3aWR0aD17MjB9IGhlaWdodD17MjB9IC8+XG4gICAgICAgICAgICApfVxuICAgICAgICAgIDwvU0NTV3JhcHBlckNvbGxhcHNlZEJ1dHRvbj5cbiAgICAgICAgPC9Ub29sdGlwPlxuICAgICAgICB7c2hvd05ld0NoYXRCdXR0b24gPyBuZXdDaGF0QnV0dG9uIDogbnVsbH1cbiAgICAgICAgeyFpc09wZW4gJiYgc2hvd0FnZW50c05hdkJsb2NrID8gKFxuICAgICAgICAgIDw+XG4gICAgICAgICAgICA8U0NTU2lkZWJhckNvbGxhcHNlZERpdmlkZXIgLz5cbiAgICAgICAgICAgIHtzaG93TWFya2V0cGxhY2VTaWRlYmFyQnV0dG9uID8gKFxuICAgICAgICAgICAgICA8VG9vbHRpcCB0aXRsZT17dCgnY29udmVyc2F0aW9ucy5tYWlha2VyTmF2Jyl9IHpJbmRleD17dG9vbHRpcFpJbmRleH0+XG4gICAgICAgICAgICAgICAgPFNDU1dyYXBwZXJBZ2VudHNOYXZJY29uXG4gICAgICAgICAgICAgICAgICAkYWN0aXZlPXthZ2VudHNOYXZBY3RpdmUgPT09ICdtYWlha2VyJ31cbiAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgZXZlbnRBbXBsaXR1ZGUoRVZFTlRTLmFpQ2hhdE1wT3BlbilcbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlT3BlbkNyZWF0ZUFnZW50KClcbiAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPE1haWFTdG9yZUljb24gc2l6ZT17MTZ9IC8+XG4gICAgICAgICAgICAgICAgPC9TQ1NXcmFwcGVyQWdlbnRzTmF2SWNvbj5cbiAgICAgICAgICAgICAgPC9Ub29sdGlwPlxuICAgICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgICB7Y2FuVmlld0FnZW50cyA/IChcbiAgICAgICAgICAgICAgPFRvb2x0aXAgdGl0bGU9e3QoJ2NvbnZlcnNhdGlvbnMubXlBZ2VudHNOYXYnKX0gekluZGV4PXt0b29sdGlwWkluZGV4fT5cbiAgICAgICAgICAgICAgICA8U0NTV3JhcHBlckFnZW50c05hdkljb25cbiAgICAgICAgICAgICAgICAgICRhY3RpdmU9e2FnZW50c05hdkFjdGl2ZSA9PT0gJ215QWdlbnRzJ31cbiAgICAgICAgICAgICAgICAgIGRhdGEtYXBwY3Vlcz17QVBQQ1VFU19TRUxFQ1RPUlMubWFpYVNpZGViYXJNeUFnZW50c31cbiAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgZXZlbnRBbXBsaXR1ZGUoRVZFTlRTLmFpU2lkZWJhck15QWdlbnRzKVxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVPcGVuTWFya2V0cGxhY2UoKVxuICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8TXlBZ2VudHNOYXZJY29uIHNpemU9ezE2fSAvPlxuICAgICAgICAgICAgICAgIDwvU0NTV3JhcHBlckFnZW50c05hdkljb24+XG4gICAgICAgICAgICAgIDwvVG9vbHRpcD5cbiAgICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgICAge2NhblZpZXdTa2lsbHMgPyAoXG4gICAgICAgICAgICAgIDxUb29sdGlwIHRpdGxlPXt0KCdjb252ZXJzYXRpb25zLm15U2tpbGxzTmF2Jyl9IHpJbmRleD17dG9vbHRpcFpJbmRleH0+XG4gICAgICAgICAgICAgICAgPFNDU1dyYXBwZXJBZ2VudHNOYXZJY29uXG4gICAgICAgICAgICAgICAgICAkYWN0aXZlPXthZ2VudHNOYXZBY3RpdmUgPT09ICdteVNraWxscyd9XG4gICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGV2ZW50QW1wbGl0dWRlKEVWRU5UUy5haVNpZGViYXJNeVNraWxscylcbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlT3BlblNraWxscygpXG4gICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxTa2lsbHNOYXZJY29uIHNpemU9ezE2fSAvPlxuICAgICAgICAgICAgICAgIDwvU0NTV3JhcHBlckFnZW50c05hdkljb24+XG4gICAgICAgICAgICAgIDwvVG9vbHRpcD5cbiAgICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgIDwvPlxuICAgICAgICApIDogbnVsbH1cbiAgICAgIDwvU0NTU2lkZWJhclRvb2xiYXI+XG4gICAgICA8U0NTU2lkZWJhckJvZHkgJGlzT3Blbj17aXNPcGVufT5cbiAgICAgICAge2lzT3BlbiA/IChcbiAgICAgICAgICA8U0NTU2lkZWJhck9wZW5QYW5lbD5cbiAgICAgICAgICAgIDxTQ1NTaWRlYmFyQWdlbnRzQmxvY2s+XG4gICAgICAgICAgICAgIHtzaG93QWdlbnRzTmF2QmxvY2sgPyAoXG4gICAgICAgICAgICAgICAgPFNDU1NpZGViYXJBZ2VudHNBY3Rpb25zPlxuICAgICAgICAgICAgICAgICAge3Nob3dNYXJrZXRwbGFjZVNpZGViYXJCdXR0b24gPyAoXG4gICAgICAgICAgICAgICAgICAgIDxTQ1NTaWRlYmFyTWFpYWtlck5hdkJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50QW1wbGl0dWRlKEVWRU5UUy5haUNoYXRNcE9wZW4pXG4gICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVPcGVuQ3JlYXRlQWdlbnQoKVxuICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgJGFjdGl2ZT17YWdlbnRzTmF2QWN0aXZlID09PSAnbWFpYWtlcid9XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICA8TWFpYVN0b3JlSWNvbiBzaXplPXsxNn0gLz5cbiAgICAgICAgICAgICAgICAgICAgICA8U0NTU2lkZWJhck1haWFrZXJOYXZMYWJlbD57dCgnY29udmVyc2F0aW9ucy5tYWlha2VyTmF2Jyl9PC9TQ1NTaWRlYmFyTWFpYWtlck5hdkxhYmVsPlxuICAgICAgICAgICAgICAgICAgICA8L1NDU1NpZGViYXJNYWlha2VyTmF2QnV0dG9uPlxuICAgICAgICAgICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgICAgICAgICB7Y2FuVmlld0FnZW50cyA/IChcbiAgICAgICAgICAgICAgICAgICAgPFNDU1NpZGViYXJNYWlha2VyTmF2QnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgZGF0YS1hcHBjdWVzPXtBUFBDVUVTX1NFTEVDVE9SUy5tYWlhU2lkZWJhck15QWdlbnRzfVxuICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50QW1wbGl0dWRlKEVWRU5UUy5haVNpZGViYXJNeUFnZW50cylcbiAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZU9wZW5NYXJrZXRwbGFjZSgpXG4gICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAkYWN0aXZlPXthZ2VudHNOYXZBY3RpdmUgPT09ICdteUFnZW50cyd9XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICA8TXlBZ2VudHNOYXZJY29uIHNpemU9ezE2fSAvPlxuICAgICAgICAgICAgICAgICAgICAgIDxTQ1NTaWRlYmFyTWFpYWtlck5hdkxhYmVsPnt0KCdjb252ZXJzYXRpb25zLm15QWdlbnRzTmF2Jyl9PC9TQ1NTaWRlYmFyTWFpYWtlck5hdkxhYmVsPlxuICAgICAgICAgICAgICAgICAgICA8L1NDU1NpZGViYXJNYWlha2VyTmF2QnV0dG9uPlxuICAgICAgICAgICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgICAgICAgICB7Y2FuVmlld1NraWxscyA/IChcbiAgICAgICAgICAgICAgICAgICAgPFNDU1NpZGViYXJNYWlha2VyTmF2QnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnRBbXBsaXR1ZGUoRVZFTlRTLmFpU2lkZWJhck15U2tpbGxzKVxuICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlT3BlblNraWxscygpXG4gICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAkYWN0aXZlPXthZ2VudHNOYXZBY3RpdmUgPT09ICdteVNraWxscyd9XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICA8U2tpbGxzTmF2SWNvbiBzaXplPXsxNn0gLz5cbiAgICAgICAgICAgICAgICAgICAgICA8U0NTU2lkZWJhck1haWFrZXJOYXZMYWJlbD57dCgnY29udmVyc2F0aW9ucy5teVNraWxsc05hdicpfTwvU0NTU2lkZWJhck1haWFrZXJOYXZMYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICA8U0NTU2lkZWJhck1haWFrZXJOYXZCYWRnZU5ldz57dCgnaG9tZU1lbnUubWFpYWtlci5iYWRnZU5ldycpfTwvU0NTU2lkZWJhck1haWFrZXJOYXZCYWRnZU5ldz5cbiAgICAgICAgICAgICAgICAgICAgPC9TQ1NTaWRlYmFyTWFpYWtlck5hdkJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgICAgICAgIDwvU0NTU2lkZWJhckFnZW50c0FjdGlvbnM+XG4gICAgICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgICAgICA8U0NTU2lkZWJhckNvbnZlcnNhdGlvbnNIZWFkaW5nUm93PlxuICAgICAgICAgICAgICAgIDxTQ1NTaWRlYmFyQ29udmVyc2F0aW9uc0hlYWRpbmc+e3QoJ2NvbnZlcnNhdGlvbnMudGl0bGUnKX08L1NDU1NpZGViYXJDb252ZXJzYXRpb25zSGVhZGluZz5cbiAgICAgICAgICAgICAgPC9TQ1NTaWRlYmFyQ29udmVyc2F0aW9uc0hlYWRpbmdSb3c+XG4gICAgICAgICAgICA8L1NDU1NpZGViYXJBZ2VudHNCbG9jaz5cbiAgICAgICAgICAgIDxTQ1NTaWRlYmFyQ2hhdHNTY3JvbGxcbiAgICAgICAgICAgICAgcmVmPXtjaGF0c0NvbnRhaW5lclJlZn1cbiAgICAgICAgICAgICAgJGhhc0NoYXRzPXtjaGF0cy5sZW5ndGggPiAwfVxuICAgICAgICAgICAgICAkb2Zmc2V0VmFyaWFudD17aGFzRXJyb3IgPyAnZXJyb3InIDogJ2RlZmF1bHQnfVxuICAgICAgICAgICAgICAkYWdlbnROYXZCdXR0b25Db3VudD17c2hvd0FnZW50c05hdkJsb2NrID8gYWdlbnROYXZCdXR0b25Db3VudCA6IDB9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHtoYXNFcnJvciAmJiAhY2hhdHMubGVuZ3RoID8gKFxuICAgICAgICAgICAgICAgIDxTQ1NTaWRlYmFyRXJyb3JTdGF0ZUNvbHVtbj5cbiAgICAgICAgICAgICAgICAgIDxTQ1NTaWRlYmFyRXJyb3JTdGF0ZVRvcD5cbiAgICAgICAgICAgICAgICAgICAgPEVycm9yU3RhdGUgLz5cbiAgICAgICAgICAgICAgICAgIDwvU0NTU2lkZWJhckVycm9yU3RhdGVUb3A+XG4gICAgICAgICAgICAgICAgICA8U0NTU2lkZWJhckVycm9yQmFubmVyPlxuICAgICAgICAgICAgICAgICAgICA8U0NTU2lkZWJhckVycm9yQmFubmVySWNvbldyYXA+XG4gICAgICAgICAgICAgICAgICAgICAgPEVycm9ySWNvbiAvPlxuICAgICAgICAgICAgICAgICAgICA8L1NDU1NpZGViYXJFcnJvckJhbm5lckljb25XcmFwPlxuICAgICAgICAgICAgICAgICAgICA8U0NTU2lkZWJhckVycm9yQmFubmVyTWVzc2FnZT57dCgnY29udmVyc2F0aW9ucy5lcnJvcicpfTwvU0NTU2lkZWJhckVycm9yQmFubmVyTWVzc2FnZT5cbiAgICAgICAgICAgICAgICAgIDwvU0NTU2lkZWJhckVycm9yQmFubmVyPlxuICAgICAgICAgICAgICAgIDwvU0NTU2lkZWJhckVycm9yU3RhdGVDb2x1bW4+XG4gICAgICAgICAgICAgICkgOiBsb2FkaW5nQ2hhdHMgPyAoXG4gICAgICAgICAgICAgICAgPFNDU1NpZGViYXJMb2FkaW5nQXJlYT5cbiAgICAgICAgICAgICAgICAgIDxTaWRlYmFyQ2hhdHNTa2VsZXRvbiAvPlxuICAgICAgICAgICAgICAgIDwvU0NTU2lkZWJhckxvYWRpbmdBcmVhPlxuICAgICAgICAgICAgICApIDogY2hhdHMubGVuZ3RoID8gKFxuICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICB7Y2hhdHMubWFwKChjaGF0LCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgIDxMaXN0SGlzdG9yeUNoYXRcbiAgICAgICAgICAgICAgICAgICAgICAgIGtleT17Y2hhdC5pZH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4PXtpbmRleH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGNoYXQ9e2NoYXR9XG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXtjaGF0RGF0YSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc09wZW5Nb2RhbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldElzT3Blbk1vZGFsKG51bGwpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgb25Hb1RvQ2hhdChjaGF0RGF0YSlcbiAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICBpc01vZGFsT3Blbj17aXNPcGVuTW9kYWwgPT09IGNoYXQuaWR9XG4gICAgICAgICAgICAgICAgICAgICAgICBvbk9wZW5Nb2RhbD17aGFuZGxlT3Blbk1vZGFsfVxuICAgICAgICAgICAgICAgICAgICAgICAgb25DbG9zZU1vZGFsPXtoYW5kbGVDbG9zZU1vZGFsfVxuICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlcnM9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlRGVsZXRlQ2hhdCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlVXBkYXRlQ2hhdCxcbiAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICBpc1NlbGVjdGVkPXthY3RpdmVDaGF0SWQgPT09IGNoYXQuc2Vzc2lvbkV4dGVybmFsSWR9XG4gICAgICAgICAgICAgICAgICAgICAgICB0b29sdGlwWkluZGV4PXt0b29sdGlwWkluZGV4fVxuICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgIH0pfVxuICAgICAgICAgICAgICAgICAge2lzTG9hZGluZ01vcmVDaGF0cyAmJiAoXG4gICAgICAgICAgICAgICAgICAgIDxTQ1NTaWRlYmFyTG9hZE1vcmVSb3c+XG4gICAgICAgICAgICAgICAgICAgICAgPFNpZGViYXJDaGF0c1NrZWxldG9uIGNvdW50PXsyfSAvPlxuICAgICAgICAgICAgICAgICAgICA8L1NDU1NpZGViYXJMb2FkTW9yZVJvdz5cbiAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgPFNDU1NpZGViYXJFbXB0eUNoYXRzPlxuICAgICAgICAgICAgICAgICAgPEVtcHR5SGlzdG9yeUljb24gLz5cbiAgICAgICAgICAgICAgICAgIDxTQ1NTaWRlYmFyRW1wdHlDaGF0c1RleHQ+e3QoJ2NvbnZlcnNhdGlvbnMuZW1wdHknKX08L1NDU1NpZGViYXJFbXB0eUNoYXRzVGV4dD5cbiAgICAgICAgICAgICAgICA8L1NDU1NpZGViYXJFbXB0eUNoYXRzPlxuICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgPC9TQ1NTaWRlYmFyQ2hhdHNTY3JvbGw+XG4gICAgICAgICAgICA8U0NTU2lkZWJhckNoYXRzRm9vdGVyPlxuICAgICAgICAgICAgICB7aGFzRXJyb3IgJiYgY2hhdHMubGVuZ3RoID8gKFxuICAgICAgICAgICAgICAgIDxTQ1NTaWRlYmFyRXJyb3JCYW5uZXI+XG4gICAgICAgICAgICAgICAgICA8U0NTU2lkZWJhckVycm9yQmFubmVySWNvbldyYXA+XG4gICAgICAgICAgICAgICAgICAgIDxFcnJvckljb24gLz5cbiAgICAgICAgICAgICAgICAgIDwvU0NTU2lkZWJhckVycm9yQmFubmVySWNvbldyYXA+XG4gICAgICAgICAgICAgICAgICA8U0NTU2lkZWJhckVycm9yQmFubmVyTWVzc2FnZT57dCgnY29udmVyc2F0aW9ucy5lcnJvcicpfTwvU0NTU2lkZWJhckVycm9yQmFubmVyTWVzc2FnZT5cbiAgICAgICAgICAgICAgICA8L1NDU1NpZGViYXJFcnJvckJhbm5lcj5cbiAgICAgICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgICA8L1NDU1NpZGViYXJDaGF0c0Zvb3Rlcj5cbiAgICAgICAgICA8L1NDU1NpZGViYXJPcGVuUGFuZWw+XG4gICAgICAgICkgOiBudWxsfVxuICAgICAgICA8U0NTU2lkZWJhckZvb3RlckFjdGlvbnMgJGlzT3Blbj17aXNPcGVufSAkanVzdGlmeUJldHdlZW49eyEhc2VsZWN0ZWRBZ2VudH0+XG4gICAgICAgICAge3NlbGVjdGVkQWdlbnQgPyA8RmVlZGJhY2tCdXR0b24gc2VsZWN0ZWRBZ2VudD17c2VsZWN0ZWRBZ2VudH0gaXNPcGVuPXtpc09wZW59IC8+IDogbnVsbH1cbiAgICAgICAgPC9TQ1NTaWRlYmFyRm9vdGVyQWN0aW9ucz5cbiAgICAgIDwvU0NTU2lkZWJhckJvZHk+XG4gICAgPC9TQ1NTaWRlYmFyUm9vdD5cbiAgKVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBU0EsU0FB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
|