@projectcor/maia-components 2.11.67-0 → 2.11.67-2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/components/atoms/Chip/Chip.js +50 -15
- package/lib/components/atoms/Chip/styles.js +9 -5
- package/lib/components/atoms/ContextMentionChip/ContextMentionChip.styles.js +3 -7
- package/lib/components/atoms/ContextMentionEditor/ContextMentionEditor.js +2 -4
- package/lib/components/atoms/ContextMentionItem/ContextMentionItem.js +2 -29
- package/lib/components/atoms/ContextMentionItem/ContextMentionItem.styles.js +24 -33
- package/lib/components/atoms/ContextMentionPopover/ContextMentionPopover.js +42 -30
- package/lib/components/atoms/ContextMentionPopover/ContextMentionPopover.styles.js +21 -13
- package/lib/components/atoms/MAIAInput/MAIAInput.js +32 -14
- package/lib/components/atoms/icons/index.js +1 -3
- package/lib/components/molecules/ChatAIContent/ChatAIContent.js +1 -14
- package/lib/components/molecules/ChatAIHome/ChatAIHome.js +297 -46
- package/lib/components/molecules/ChatAIHome/styles.js +63 -26
- package/lib/components/molecules/ChatAIMessages/ChatAIMessages.js +54 -148
- package/lib/components/molecules/ChatAIMessages/newStyles.js +19 -9
- package/lib/components/molecules/ChatAIModal/ChatAIModal.js +223 -75
- package/lib/components/molecules/ChatAIModal/components/ChatAiModalFooter/ChatAiModalFooter.js +26 -1
- package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeader.js +18 -18
- package/lib/components/molecules/ChatAIModal/constants.js +2 -6
- package/lib/components/molecules/ChatFooter/ChatFooter.js +75 -18
- package/lib/components/molecules/ChatFooter/ChatFooterFaqs.js +22 -7
- package/lib/components/molecules/ChatFooter/styles.js +11 -2
- package/lib/components/molecules/ContextMentionInput/ContextMentionInput.js +1 -3
- package/lib/components/molecules/Sidebar/Sidebar.js +14 -22
- package/lib/components/organisms/DeleteQuestionModal/DeleteQuestionModal.js +1 -8
- package/lib/components/organisms/EditQuestionModal/EditQuestionModal.js +2 -2
- package/lib/constants/config.js +1 -4
- package/lib/constants/maiaTaskPanelAccess.js +7 -5
- package/lib/constants/permissions/index.js +2 -2
- package/lib/constants/permissions/utils.js +1 -4
- package/lib/constants/taskUrls.js +3 -1
- package/lib/context/global-context.js +8 -1
- package/lib/hooks/index.js +2 -1
- package/lib/hooks/useChatManager/useChatManager.js +149 -125
- package/lib/hooks/useChatMessages/useChatMessages.js +34 -5
- package/lib/hooks/useContextMentions.js +15 -60
- package/lib/hooks/useContextPinPopover.js +235 -0
- package/lib/hooks/useEntitySearch.js +96 -337
- package/lib/hooks/useEvent.js +2 -1
- package/lib/hooks/useFrequentlyAskedQuestions.js +12 -10
- package/lib/hooks/useFrequentlyUsedActions.js +5 -3
- package/lib/hooks/useMentionAllowedTypes.js +16 -41
- package/lib/hooks/useMentionPopover.js +49 -54
- package/lib/hooks/useOrchestratorStream/useOrchestratorStream.interface.js +1 -1
- package/lib/hooks/useOrchestratorStream/useOrchestratorStream.js +27 -18
- package/lib/hooks/useProjectSearch.js +4 -28
- package/lib/hooks/useProjectSummaryConfig.js +74 -4
- package/lib/hooks/useRecentClientsSearch.js +4 -34
- package/lib/hooks/useRecentContexts.js +86 -0
- package/lib/hooks/useSmoothStreamText/useSmoothStreamText.js +24 -16
- package/lib/lang/br/index.js +30 -55
- package/lib/lang/en/index.js +30 -55
- package/lib/lang/es/index.js +30 -55
- package/lib/lang/fr/index.js +30 -55
- package/lib/services/maia/Actions/getFrequentlyUsedActions.js +6 -3
- package/lib/services/maia/Agents/getAgents.js +231 -183
- package/lib/services/maia/Chats/getChatMessages.js +34 -6
- package/lib/services/maia/Chats/getChatsByUserId.js +10 -2
- package/lib/services/maia/Faqs/getFrequentlyAskedQuestions.js +6 -4
- package/lib/services/maia/Orchestrator/orchestrator.js +21 -5
- package/lib/services/maia/RecentContexts/getRecentContexts.js +54 -0
- package/lib/services/maia/RecentContexts/index.js +6 -0
- package/lib/services/maia/index.js +4 -2
- package/lib/services/utils/validateIsMaia.js +2 -2
- package/lib/types/agent.js +1 -1
- package/lib/types/contextMention.js +1 -1
- package/lib/utils/agentDisplayName.js +9 -1
- package/lib/utils/contextMentionIcons.js +1 -29
- package/lib/utils/entityLinkRender.js +132 -0
- package/lib/utils/hitlAnalytics.js +3 -3
- package/lib/utils/renderContextMentions.js +6 -9
- package/package.json +1 -1
- package/lib/components/atoms/icons/SkillIcon.js +0 -30
- package/lib/components/atoms/icons/SkillsNavIcon.js +0 -27
- package/lib/components/molecules/ChatAIMySkills/ChatAIMySkills.js +0 -357
- package/lib/components/molecules/ChatAIMySkills/ChatAIMySkills.styles.js +0 -145
- package/lib/components/molecules/ChatAIMySkills/index.js +0 -2
- package/lib/components/organisms/AbmSkillGenerateModal/AbmSkillGenerateModal.js +0 -160
- package/lib/components/organisms/AbmSkillGenerateModal/AbmSkillGenerateModal.styles.js +0 -34
- package/lib/components/organisms/AbmSkillGenerateModal/index.js +0 -2
- package/lib/components/organisms/AbmSkillModal/AbmSkillModal.js +0 -446
- package/lib/components/organisms/AbmSkillModal/AbmSkillModal.styles.js +0 -98
- package/lib/components/organisms/AbmSkillModal/index.js +0 -2
- package/lib/services/maia/Skills/createSkill.js +0 -39
- package/lib/services/maia/Skills/deleteSkill.js +0 -38
- package/lib/services/maia/Skills/generateSkill.js +0 -41
- package/lib/services/maia/Skills/getSkills.js +0 -90
- package/lib/services/maia/Skills/updateSkill.js +0 -39
- package/lib/types/skill.js +0 -2
- package/lib/utils/contextMentionTriggers.js +0 -53
- package/lib/utils/corConnectorMentionTypes.js +0 -37
- package/lib/utils/normalizeAgentConnectors.js +0 -32
|
@@ -1,106 +1,349 @@
|
|
|
1
|
+
import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
|
1
2
|
import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
|
|
3
|
+
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
4
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
2
5
|
/* eslint-disable react/function-component-definition */
|
|
3
6
|
/* eslint-disable jsx-a11y/click-events-have-key-events */
|
|
4
7
|
/* eslint-disable jsx-a11y/no-static-element-interactions */
|
|
5
8
|
import { useEffect, useRef, useState, useCallback, useMemo } from 'react';
|
|
6
9
|
import { Tooltip } from '@projectcor/tooltipv2/lib/components/Tooltip';
|
|
10
|
+
import { ListChecklist } from '@projectcor/icons/lib/components/ListChecklist';
|
|
7
11
|
import { useT } from '../../../hooks/useT';
|
|
8
|
-
import {
|
|
12
|
+
import { EVENTS, useEvent } from '../../../hooks/useEvent';
|
|
13
|
+
import { SCCAIHomeContainer, SCCAIHomeContent, SCCAIHomeContentInner, SCCAIHomeGradientTop, SCCAIHomeGradientBottom, SCCAIHomeHeader, SCCAIHomeGreeting, SCCAIHomeAgentInfoContainer, SCCAIHomeAgentInfo, SCCAIHomeProjectSummary, SCCAIHomeProjectSummaryContent, SCCAIHomeProjectSummaryTitle, SCCAIHomeProjectSummaryDescription, SCCAHWrapperSummaryProject, SCCAIHomeIntroduction, SCCAIHomeCreatedByContainer, SCCAIHomeCreatedByText, SCCAIHomeCreatedByTextName, SCCAIHomeIconContainer, SCCAIHomeLogoWrapper, SCCAIHomeMaiaHeaderStack, SCCAIHomeTitle, SCCAIHomeSubtitle, SCCAIHomeDynamicSection, SCCAIHomeRecentContexts, SCCAIHomeRecentContextsList, SCCAIHomeRecentContextPill, SCCAIHomeRecentContextPillIcon, SCCAIHomeRecentContextPillText, SCCAIHomeRecentContextPillSkeleton } from './styles';
|
|
9
14
|
import { useGlobalContext } from '../../../context/global-context';
|
|
15
|
+
import { CORUserRole, useUser } from '../../../context/cor-user';
|
|
16
|
+
import { useResizeListener } from '../../../hooks/useResize';
|
|
17
|
+
import { getContextMentionIcon } from '../../../utils/contextMentionIcons';
|
|
10
18
|
import { validateIsMaia } from '../../../services/utils/validateIsMaia';
|
|
11
19
|
import { isMaiakerAgent } from '../../../utils/agentDisplayName';
|
|
12
20
|
import { FrequentlyAskedQuestions } from '../../atoms/FrequentlyAskedQuestions';
|
|
13
21
|
import { FrequentlyUsedActions } from '../../atoms/FrequentlyUsedActions';
|
|
14
22
|
import { useFrequentlyUsedActions } from '../../../hooks/useFrequentlyUsedActions';
|
|
15
23
|
import { useFrequentlyAskedQuestions } from '../../../hooks/useFrequentlyAskedQuestions';
|
|
24
|
+
import { useRecentContexts } from '../../../hooks/useRecentContexts';
|
|
16
25
|
import { MAIAIsologo } from '../../atoms/icons/MAIAIsologo';
|
|
17
26
|
import { TemplateGradientIcon } from '../../atoms/icons/TemplateGradientIcon';
|
|
18
27
|
import { ChatAIHomeMaiaker } from './ChatAIHomeMaiaker';
|
|
19
|
-
import { jsxs as _jsxs,
|
|
28
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
20
29
|
export var FrequentQuestions = /*#__PURE__*/function (FrequentQuestions) {
|
|
21
30
|
FrequentQuestions["rentabilidad_proyecto"] = "rentabilidad_proyecto";
|
|
22
31
|
FrequentQuestions["avance_proyecto"] = "avance_proyecto";
|
|
23
32
|
return FrequentQuestions;
|
|
24
33
|
}({});
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
34
|
+
var RECENT_CONTEXTS_LIMIT = 9;
|
|
35
|
+
var RECENT_CONTEXT_ICON_COLOR = '#4D4D4D';
|
|
36
|
+
var RECENT_CONTEXT_SKELETON_KEYS = ['recent-context-skeleton-1', 'recent-context-skeleton-2', 'recent-context-skeleton-3'];
|
|
37
|
+
var RecentContextPill = function RecentContextPill(_ref) {
|
|
38
|
+
var context = _ref.context,
|
|
39
|
+
label = _ref.label,
|
|
40
|
+
onClick = _ref.onClick;
|
|
41
|
+
var textRef = useRef(null);
|
|
42
|
+
var _useResizeListener = useResizeListener(textRef, [label]),
|
|
43
|
+
showTooltip = _useResizeListener.showTooltip;
|
|
44
|
+
return /*#__PURE__*/_jsxs(SCCAIHomeRecentContextPill, {
|
|
45
|
+
type: "button",
|
|
46
|
+
onClick: onClick,
|
|
47
|
+
children: [/*#__PURE__*/_jsx(SCCAIHomeRecentContextPillIcon, {
|
|
48
|
+
children: context.type === 'task' ? /*#__PURE__*/_jsx(ListChecklist, {
|
|
49
|
+
color: RECENT_CONTEXT_ICON_COLOR,
|
|
50
|
+
width: "14px",
|
|
51
|
+
height: "14px"
|
|
52
|
+
}) : getContextMentionIcon(context.type, RECENT_CONTEXT_ICON_COLOR, undefined, 14)
|
|
53
|
+
}), /*#__PURE__*/_jsx(SCCAIHomeRecentContextPillText, {
|
|
54
|
+
ref: textRef,
|
|
55
|
+
children: showTooltip ? /*#__PURE__*/_jsx(Tooltip, {
|
|
56
|
+
title: label,
|
|
57
|
+
children: /*#__PURE__*/_jsx("span", {
|
|
58
|
+
children: label
|
|
59
|
+
})
|
|
60
|
+
}) : label
|
|
61
|
+
})]
|
|
62
|
+
});
|
|
63
|
+
};
|
|
64
|
+
var parseNumericId = function parseNumericId(value) {
|
|
65
|
+
if (value === null || value === undefined || value === '') return null;
|
|
66
|
+
var parsed = Number(value);
|
|
67
|
+
return Number.isFinite(parsed) ? parsed : null;
|
|
68
|
+
};
|
|
69
|
+
var getAllowedRecentContextTypes = function getAllowedRecentContextTypes(roleId) {
|
|
70
|
+
if (roleId === CORUserRole.CLEVEL || roleId === CORUserRole.DIRECTOR || roleId === CORUserRole.PROJECT_MANAGER) {
|
|
71
|
+
return new Set(['client', 'project', 'task']);
|
|
72
|
+
}
|
|
73
|
+
if (roleId === CORUserRole.COLLABORATOR) {
|
|
74
|
+
return new Set(['task']);
|
|
75
|
+
}
|
|
76
|
+
return new Set();
|
|
77
|
+
};
|
|
78
|
+
export var ChatAIHome = function ChatAIHome(_ref2) {
|
|
79
|
+
var handlers = _ref2.handlers,
|
|
80
|
+
onStartChat = _ref2.onStartChat,
|
|
81
|
+
expanded = _ref2.expanded,
|
|
82
|
+
floating = _ref2.floating;
|
|
30
83
|
var _useT = useT(),
|
|
31
84
|
t = _useT.t,
|
|
32
85
|
i18n = _useT.i18n;
|
|
86
|
+
var event = useEvent();
|
|
87
|
+
var user = useUser();
|
|
33
88
|
var _useGlobalContext = useGlobalContext(),
|
|
34
89
|
agent = _useGlobalContext.agent,
|
|
35
|
-
section = _useGlobalContext.section
|
|
90
|
+
section = _useGlobalContext.section,
|
|
91
|
+
client = _useGlobalContext.client,
|
|
92
|
+
project = _useGlobalContext.project,
|
|
93
|
+
task = _useGlobalContext.task,
|
|
94
|
+
chipsProject = _useGlobalContext.chipsProject,
|
|
95
|
+
setClient = _useGlobalContext.setClient,
|
|
96
|
+
setProject = _useGlobalContext.setProject,
|
|
97
|
+
setTask = _useGlobalContext.setTask,
|
|
98
|
+
setChipsProject = _useGlobalContext.setChipsProject;
|
|
36
99
|
var isMAIA = validateIsMaia(agent);
|
|
37
100
|
var floatingCustomCenter = !!(floating && (agent === null || agent === void 0 ? void 0 : agent.type) === 'custom');
|
|
38
101
|
var lang = i18n.language === 'br' ? 'pt' : i18n.language;
|
|
39
102
|
var summaryProjectAccess = typeof window !== 'undefined' && (String(window.MAIA_PROJECT_SUMMARY_FEATURE_ACCESS).toLowerCase() === 'true' || String(window.maiaProjectSummaryAccess).toLowerCase() === 'true');
|
|
40
103
|
var faqsAccess = true;
|
|
41
104
|
var showProjectSummary = !!(isMAIA && summaryProjectAccess);
|
|
105
|
+
// El orchestrator (type === 'orchestrator') muestra FAQs/FUAs agregadas de sus subagentes,
|
|
106
|
+
// así que NO se trata como maiaker acá.
|
|
42
107
|
var isMaiaker = isMaiakerAgent(agent);
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
108
|
+
var isHeaderHome = isMAIA && section === 'header' && (agent === null || agent === void 0 ? void 0 : agent.type) === 'orchestrator';
|
|
109
|
+
var allowedRecentContextTypes = useMemo(function () {
|
|
110
|
+
return getAllowedRecentContextTypes(user.role_id);
|
|
111
|
+
}, [user.role_id]);
|
|
112
|
+
var _useRecentContexts = useRecentContexts({
|
|
113
|
+
enabled: isHeaderHome,
|
|
114
|
+
limit: RECENT_CONTEXTS_LIMIT
|
|
115
|
+
}),
|
|
116
|
+
fetchedRecentContexts = _useRecentContexts.contexts,
|
|
117
|
+
recentContextsLoading = _useRecentContexts.loading;
|
|
118
|
+
var recentContexts = useMemo(function () {
|
|
119
|
+
return fetchedRecentContexts.filter(function (context) {
|
|
120
|
+
return allowedRecentContextTypes.has(context.type);
|
|
121
|
+
});
|
|
122
|
+
}, [fetchedRecentContexts, allowedRecentContextTypes]);
|
|
123
|
+
|
|
124
|
+
// Home del orchestrator en 2 pasos:
|
|
125
|
+
// - Paso 1 (sin contexto pineado): se muestran solo los contextos recientes.
|
|
126
|
+
// - Paso 2 (contexto pineado): se muestran las FAQs/acciones que referencian ese contexto.
|
|
127
|
+
// Volver al paso 1 = quitar el chip (limpia el contexto global).
|
|
128
|
+
var hasPinnedContext = !!(task !== null && task !== void 0 && task.id || chipsProject !== null && chipsProject !== void 0 && chipsProject.projectId || client !== null && client !== void 0 && client.id || project !== null && project !== void 0 && project.id);
|
|
129
|
+
var isRecentContextsStep = isHeaderHome && !hasPinnedContext;
|
|
130
|
+
var isContextHomeStep = isHeaderHome && hasPinnedContext;
|
|
131
|
+
|
|
132
|
+
// Contexto activo para derivar FAQs/acciones (paso 2). Preferimos el pill clickeado;
|
|
133
|
+
// si no, lo reconstruimos desde el contexto global.
|
|
134
|
+
var _useState = useState(null),
|
|
135
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
136
|
+
selectedContext = _useState2[0],
|
|
137
|
+
setSelectedContext = _useState2[1];
|
|
138
|
+
useEffect(function () {
|
|
139
|
+
if (!hasPinnedContext) setSelectedContext(null);
|
|
140
|
+
}, [hasPinnedContext]);
|
|
141
|
+
var activeContext = useMemo(function () {
|
|
142
|
+
if (selectedContext) return selectedContext;
|
|
143
|
+
if (!isContextHomeStep) return null;
|
|
144
|
+
if (task !== null && task !== void 0 && task.id) return {
|
|
145
|
+
type: 'task',
|
|
146
|
+
id: task.id,
|
|
147
|
+
name: task.name
|
|
148
|
+
};
|
|
149
|
+
if (chipsProject !== null && chipsProject !== void 0 && chipsProject.projectId) return {
|
|
150
|
+
type: 'project',
|
|
151
|
+
id: chipsProject.projectId,
|
|
152
|
+
name: chipsProject.projectName
|
|
153
|
+
};
|
|
154
|
+
if (client !== null && client !== void 0 && client.id) return {
|
|
155
|
+
type: 'client',
|
|
156
|
+
id: client.id,
|
|
157
|
+
name: client.name
|
|
158
|
+
};
|
|
159
|
+
return null;
|
|
160
|
+
}, [selectedContext, isContextHomeStep, task === null || task === void 0 ? void 0 : task.id, task === null || task === void 0 ? void 0 : task.name, chipsProject === null || chipsProject === void 0 ? void 0 : chipsProject.projectId, chipsProject === null || chipsProject === void 0 ? void 0 : chipsProject.projectName, client === null || client === void 0 ? void 0 : client.id, client === null || client === void 0 ? void 0 : client.name]);
|
|
161
|
+
|
|
162
|
+
// entity_type del contexto pineado (project/client/task), tomado del contexto global.
|
|
163
|
+
// Aplica tanto al abrir MAIA desde una sección específica como al cambiar de conversación.
|
|
164
|
+
var pinnedEntityType = useMemo(function () {
|
|
165
|
+
if (task !== null && task !== void 0 && task.id) return 'task';
|
|
166
|
+
if (chipsProject !== null && chipsProject !== void 0 && chipsProject.projectId || project !== null && project !== void 0 && project.id) return 'project';
|
|
167
|
+
if (client !== null && client !== void 0 && client.id) return 'client';
|
|
168
|
+
return undefined;
|
|
169
|
+
}, [task === null || task === void 0 ? void 0 : task.id, chipsProject === null || chipsProject === void 0 ? void 0 : chipsProject.projectId, project === null || project === void 0 ? void 0 : project.id, client === null || client === void 0 ? void 0 : client.id]);
|
|
170
|
+
|
|
171
|
+
// FAQs/acciones:
|
|
172
|
+
// - header-home (orchestrator), paso 2: filtradas por `entity_type` del contexto seleccionado.
|
|
173
|
+
// - homes de proyecto/cliente/tarea (sección): filtradas por el `entity_type` del contexto seteado.
|
|
174
|
+
var realListsAgentId = function () {
|
|
175
|
+
if (!isMAIA || isMaiaker) return undefined;
|
|
176
|
+
if (isHeaderHome) return isContextHomeStep ? agent === null || agent === void 0 ? void 0 : agent.id : undefined;
|
|
177
|
+
return agent === null || agent === void 0 ? void 0 : agent.id;
|
|
178
|
+
}();
|
|
179
|
+
var realListsEntityType = function () {
|
|
180
|
+
if (!isHeaderHome) return pinnedEntityType;
|
|
181
|
+
return isContextHomeStep ? activeContext === null || activeContext === void 0 ? void 0 : activeContext.type : undefined;
|
|
182
|
+
}();
|
|
183
|
+
var _useFrequentlyUsedAct = useFrequentlyUsedActions(realListsAgentId, section, realListsEntityType),
|
|
47
184
|
agentFuas = _useFrequentlyUsedAct.actions,
|
|
48
185
|
fuasLoading = _useFrequentlyUsedAct.loading;
|
|
49
|
-
var _useFrequentlyAskedQu = useFrequentlyAskedQuestions(
|
|
186
|
+
var _useFrequentlyAskedQu = useFrequentlyAskedQuestions(realListsAgentId, lang, realListsEntityType),
|
|
50
187
|
agentFaqs = _useFrequentlyAskedQu.faqs,
|
|
51
188
|
faqsLoading = _useFrequentlyAskedQu.loading,
|
|
52
189
|
handleGetFrequentlyAskedQuestions = _useFrequentlyAskedQu.handleGetFrequentlyAskedQuestions;
|
|
53
190
|
var faqsFetchRef = useRef(null);
|
|
54
191
|
useEffect(function () {
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
var
|
|
192
|
+
var _faqsFetchRef$current;
|
|
193
|
+
if (!realListsAgentId || section === 'task') return;
|
|
194
|
+
var currentKey = "".concat(realListsAgentId, "-").concat(lang, "-").concat(realListsEntityType !== null && realListsEntityType !== void 0 ? realListsEntityType : 'all');
|
|
195
|
+
var lastKey = faqsFetchRef.current ? "".concat(faqsFetchRef.current.agentId, "-").concat(faqsFetchRef.current.lang, "-").concat((_faqsFetchRef$current = faqsFetchRef.current.entityType) !== null && _faqsFetchRef$current !== void 0 ? _faqsFetchRef$current : 'all') : null;
|
|
58
196
|
if (currentKey !== lastKey) {
|
|
59
197
|
faqsFetchRef.current = {
|
|
60
|
-
agentId:
|
|
61
|
-
lang: lang
|
|
198
|
+
agentId: realListsAgentId,
|
|
199
|
+
lang: lang,
|
|
200
|
+
entityType: realListsEntityType
|
|
62
201
|
};
|
|
63
202
|
handleGetFrequentlyAskedQuestions({
|
|
64
|
-
agentId:
|
|
65
|
-
lang: lang
|
|
203
|
+
agentId: realListsAgentId,
|
|
204
|
+
lang: lang,
|
|
205
|
+
entityType: realListsEntityType
|
|
66
206
|
});
|
|
67
207
|
}
|
|
68
|
-
}, [
|
|
69
|
-
var
|
|
70
|
-
var
|
|
71
|
-
var
|
|
208
|
+
}, [realListsAgentId, realListsEntityType, section, lang, handleGetFrequentlyAskedQuestions]);
|
|
209
|
+
var faqs = agentFaqs;
|
|
210
|
+
var fuas = agentFuas;
|
|
211
|
+
var faqsAreLoading = faqsLoading;
|
|
212
|
+
var fuasAreLoading = fuasLoading;
|
|
213
|
+
var showRecentContextsBlock = isRecentContextsStep && (recentContextsLoading || recentContexts.length > 0);
|
|
214
|
+
var shouldShowFaqs = (isContextHomeStep || !isHeaderHome && section !== 'task' && faqsAccess) && !isMaiaker && (faqs.length > 0 || faqsAreLoading);
|
|
215
|
+
var shouldShowFuas = !isMaiaker && (isContextHomeStep || !isHeaderHome) && (fuas.length > 0 || fuasAreLoading);
|
|
72
216
|
var showProjectSummaryCard = showProjectSummary && (agent === null || agent === void 0 ? void 0 : agent.entity) === 'project';
|
|
73
|
-
var showFAQs = !!(
|
|
217
|
+
var showFAQs = !!(showRecentContextsBlock || shouldShowFaqs || shouldShowFuas || showProjectSummaryCard || isMaiaker);
|
|
74
218
|
var homeScrollableLayout = showFAQs;
|
|
75
|
-
var showDynamicSection =
|
|
219
|
+
var showDynamicSection = showRecentContextsBlock || shouldShowFaqs || shouldShowFuas || isMaiaker;
|
|
76
220
|
|
|
77
221
|
// Lógica del scroll con gradientes
|
|
78
222
|
var contentContainerRef = useRef(null);
|
|
79
|
-
var _useState = useState(false),
|
|
80
|
-
_useState2 = _slicedToArray(_useState, 2),
|
|
81
|
-
showTopGradient = _useState2[0],
|
|
82
|
-
setShowTopGradient = _useState2[1];
|
|
83
223
|
var _useState3 = useState(false),
|
|
84
224
|
_useState4 = _slicedToArray(_useState3, 2),
|
|
85
|
-
|
|
86
|
-
|
|
225
|
+
showTopGradient = _useState4[0],
|
|
226
|
+
setShowTopGradient = _useState4[1];
|
|
87
227
|
var _useState5 = useState(false),
|
|
88
228
|
_useState6 = _slicedToArray(_useState5, 2),
|
|
89
|
-
|
|
90
|
-
|
|
229
|
+
showBottomGradient = _useState6[0],
|
|
230
|
+
setShowBottomGradient = _useState6[1];
|
|
231
|
+
var _useState7 = useState(false),
|
|
232
|
+
_useState8 = _slicedToArray(_useState7, 2),
|
|
233
|
+
isScrolling = _useState8[0],
|
|
234
|
+
setIsScrolling = _useState8[1];
|
|
91
235
|
var scrollTimeoutRef = useRef(null);
|
|
92
236
|
|
|
93
|
-
// Saludo
|
|
237
|
+
// Saludo fijo por tipo de contexto (i18n). Custom agents siguen usando agent.introduction.
|
|
94
238
|
var greeting = useMemo(function () {
|
|
95
239
|
if (isMaiaker) return '';
|
|
96
|
-
if (
|
|
240
|
+
if (isRecentContextsStep) return '';
|
|
241
|
+
if (isMAIA && pinnedEntityType) {
|
|
242
|
+
return t("homeMenu.contextHome.contextGreeting.".concat(pinnedEntityType));
|
|
243
|
+
}
|
|
97
244
|
var intro = agent === null || agent === void 0 ? void 0 : agent.introduction;
|
|
98
245
|
if (!intro) return '';
|
|
99
246
|
if (Array.isArray(intro) && intro.length > 0) {
|
|
100
247
|
return intro[Math.floor(Math.random() * intro.length)];
|
|
101
248
|
}
|
|
102
249
|
return typeof intro === 'string' ? intro : '';
|
|
103
|
-
}, [agent === null || agent === void 0 ? void 0 : agent.id, agent === null || agent === void 0 ? void 0 : agent.introduction,
|
|
250
|
+
}, [agent === null || agent === void 0 ? void 0 : agent.id, agent === null || agent === void 0 ? void 0 : agent.introduction, isMaiaker, isMAIA, pinnedEntityType, isRecentContextsStep, t]);
|
|
251
|
+
var handleSelectRecentContext = useCallback(function (context, order) {
|
|
252
|
+
var _context$parents, _context$parents2, _context$parents3, _context$parents4;
|
|
253
|
+
event(EVENTS.aiChatContextSelected, {
|
|
254
|
+
order: order,
|
|
255
|
+
type: context.type
|
|
256
|
+
});
|
|
257
|
+
var contextId = parseNumericId(context.id);
|
|
258
|
+
var clientId = parseNumericId((_context$parents = context.parents) === null || _context$parents === void 0 ? void 0 : _context$parents.client_id);
|
|
259
|
+
var projectId = parseNumericId((_context$parents2 = context.parents) === null || _context$parents2 === void 0 ? void 0 : _context$parents2.project_id);
|
|
260
|
+
var clientName = ((_context$parents3 = context.parents) === null || _context$parents3 === void 0 ? void 0 : _context$parents3.client_name) || '';
|
|
261
|
+
var projectName = ((_context$parents4 = context.parents) === null || _context$parents4 === void 0 ? void 0 : _context$parents4.project_name) || '';
|
|
262
|
+
setSelectedContext(context);
|
|
263
|
+
setTask(null);
|
|
264
|
+
setProject(null);
|
|
265
|
+
setClient === null || setClient === void 0 || setClient(null);
|
|
266
|
+
setChipsProject(null);
|
|
267
|
+
if (context.type === 'client') {
|
|
268
|
+
if (contextId == null) return;
|
|
269
|
+
setClient === null || setClient === void 0 || setClient({
|
|
270
|
+
id: contextId,
|
|
271
|
+
name: context.name
|
|
272
|
+
});
|
|
273
|
+
} else if (context.type === 'project') {
|
|
274
|
+
if (contextId == null) return;
|
|
275
|
+
setProject(_objectSpread(_objectSpread({
|
|
276
|
+
id: contextId,
|
|
277
|
+
name: context.name
|
|
278
|
+
}, clientId != null ? {
|
|
279
|
+
clientId: clientId
|
|
280
|
+
} : {}), clientId != null ? {
|
|
281
|
+
client: {
|
|
282
|
+
id: clientId,
|
|
283
|
+
name: clientName
|
|
284
|
+
}
|
|
285
|
+
} : {}));
|
|
286
|
+
setChipsProject({
|
|
287
|
+
projectId: String(contextId),
|
|
288
|
+
projectName: context.name,
|
|
289
|
+
clientName: clientName
|
|
290
|
+
});
|
|
291
|
+
} else if (context.type === 'task') {
|
|
292
|
+
setTask(_objectSpread(_objectSpread({
|
|
293
|
+
id: context.id,
|
|
294
|
+
name: context.name
|
|
295
|
+
}, projectId != null ? {
|
|
296
|
+
projectId: projectId
|
|
297
|
+
} : {}), clientId != null ? {
|
|
298
|
+
clientId: clientId
|
|
299
|
+
} : {}));
|
|
300
|
+
if (clientId != null) {
|
|
301
|
+
setClient === null || setClient === void 0 || setClient({
|
|
302
|
+
id: clientId,
|
|
303
|
+
name: clientName
|
|
304
|
+
});
|
|
305
|
+
}
|
|
306
|
+
if (projectId != null) {
|
|
307
|
+
setProject(_objectSpread(_objectSpread({
|
|
308
|
+
id: projectId,
|
|
309
|
+
name: projectName || "".concat(t('homeMenu.recentContexts.types.project'), " ").concat(projectId)
|
|
310
|
+
}, clientId != null ? {
|
|
311
|
+
clientId: clientId
|
|
312
|
+
} : {}), clientId != null ? {
|
|
313
|
+
client: {
|
|
314
|
+
id: clientId,
|
|
315
|
+
name: clientName
|
|
316
|
+
}
|
|
317
|
+
} : {}));
|
|
318
|
+
setChipsProject({
|
|
319
|
+
projectId: String(projectId),
|
|
320
|
+
projectName: projectName || "".concat(t('homeMenu.recentContexts.types.project'), " ").concat(projectId),
|
|
321
|
+
clientName: clientName
|
|
322
|
+
});
|
|
323
|
+
}
|
|
324
|
+
}
|
|
325
|
+
requestAnimationFrame(function () {
|
|
326
|
+
document.dispatchEvent(new CustomEvent('maia-input-refocus'));
|
|
327
|
+
});
|
|
328
|
+
}, [event, setChipsProject, setClient, setProject, setTask, t]);
|
|
329
|
+
var renderRecentContexts = function renderRecentContexts() {
|
|
330
|
+
if (!isRecentContextsStep) return null;
|
|
331
|
+
return /*#__PURE__*/_jsx(SCCAIHomeRecentContexts, {
|
|
332
|
+
children: /*#__PURE__*/_jsxs(SCCAIHomeRecentContextsList, {
|
|
333
|
+
children: [recentContextsLoading && RECENT_CONTEXT_SKELETON_KEYS.map(function (key) {
|
|
334
|
+
return /*#__PURE__*/_jsx(SCCAIHomeRecentContextPillSkeleton, {}, key);
|
|
335
|
+
}), !recentContextsLoading && recentContexts.map(function (context, index) {
|
|
336
|
+
return /*#__PURE__*/_jsx(RecentContextPill, {
|
|
337
|
+
context: context,
|
|
338
|
+
label: context.name.trim(),
|
|
339
|
+
onClick: function onClick() {
|
|
340
|
+
return handleSelectRecentContext(context, index + 1);
|
|
341
|
+
}
|
|
342
|
+
}, "".concat(context.type, "-").concat(context.id));
|
|
343
|
+
})]
|
|
344
|
+
})
|
|
345
|
+
});
|
|
346
|
+
};
|
|
104
347
|
var checkScroll = useCallback(function () {
|
|
105
348
|
var container = contentContainerRef.current;
|
|
106
349
|
if (!container || !homeScrollableLayout) return;
|
|
@@ -160,14 +403,22 @@ export var ChatAIHome = function ChatAIHome(_ref) {
|
|
|
160
403
|
});
|
|
161
404
|
}
|
|
162
405
|
return /*#__PURE__*/_jsxs(SCCAIHomeMaiaHeaderStack, {
|
|
163
|
-
$noGap: !greeting,
|
|
406
|
+
$noGap: !isRecentContextsStep && !greeting,
|
|
164
407
|
children: [/*#__PURE__*/_jsx(SCCAIHomeIconContainer, {
|
|
165
408
|
children: /*#__PURE__*/_jsx(SCCAIHomeLogoWrapper, {
|
|
166
409
|
children: /*#__PURE__*/_jsx(MAIAIsologo, {})
|
|
167
410
|
})
|
|
168
|
-
}),
|
|
411
|
+
}), isRecentContextsStep ? /*#__PURE__*/_jsxs(_Fragment, {
|
|
412
|
+
children: [/*#__PURE__*/_jsx(SCCAIHomeTitle, {
|
|
413
|
+
children: t('homeMenu.contextHome.greeting', {
|
|
414
|
+
name: user.firstName
|
|
415
|
+
})
|
|
416
|
+
}), /*#__PURE__*/_jsx(SCCAIHomeSubtitle, {
|
|
417
|
+
children: t(user.role_id === CORUserRole.COLLABORATOR ? 'homeMenu.contextHome.subtitleCollaborator' : 'homeMenu.contextHome.subtitle')
|
|
418
|
+
})]
|
|
419
|
+
}) : greeting && /*#__PURE__*/_jsx(SCCAIHomeGreeting, {
|
|
169
420
|
children: greeting
|
|
170
|
-
})
|
|
421
|
+
})]
|
|
171
422
|
});
|
|
172
423
|
};
|
|
173
424
|
return /*#__PURE__*/_jsxs(SCCAIHomeContainer, {
|
|
@@ -207,21 +458,21 @@ export var ChatAIHome = function ChatAIHome(_ref) {
|
|
|
207
458
|
})]
|
|
208
459
|
}), showDynamicSection && /*#__PURE__*/_jsxs(SCCAIHomeDynamicSection, {
|
|
209
460
|
$grow: isMaiaker,
|
|
210
|
-
children: [shouldShowFaqs && /*#__PURE__*/_jsx(FrequentlyAskedQuestions, {
|
|
461
|
+
children: [renderRecentContexts(), shouldShowFaqs && /*#__PURE__*/_jsx(FrequentlyAskedQuestions, {
|
|
211
462
|
onStartChat: onStartChat,
|
|
212
463
|
showFAQs: showFAQs,
|
|
213
464
|
showProjectSummary: showProjectSummary,
|
|
214
465
|
agentId: agent === null || agent === void 0 ? void 0 : agent.id,
|
|
215
466
|
lang: lang,
|
|
216
467
|
isScrolling: isScrolling,
|
|
217
|
-
faqs:
|
|
218
|
-
loading:
|
|
468
|
+
faqs: faqs,
|
|
469
|
+
loading: faqsAreLoading
|
|
219
470
|
}), shouldShowFuas && /*#__PURE__*/_jsx(FrequentlyUsedActions, {
|
|
220
471
|
onStartChat: onStartChat,
|
|
221
472
|
agentId: agent === null || agent === void 0 ? void 0 : agent.id,
|
|
222
473
|
isScrolling: isScrolling,
|
|
223
|
-
actions:
|
|
224
|
-
loading:
|
|
474
|
+
actions: fuas,
|
|
475
|
+
loading: fuasAreLoading
|
|
225
476
|
}), isMaiaker ? /*#__PURE__*/_jsx(ChatAIHomeMaiaker, {
|
|
226
477
|
onStartChat: onStartChat
|
|
227
478
|
}) : null]
|
|
@@ -232,4 +483,4 @@ export var ChatAIHome = function ChatAIHome(_ref) {
|
|
|
232
483
|
})]
|
|
233
484
|
});
|
|
234
485
|
};
|
|
235
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VFZmZlY3QiLCJ1c2VSZWYiLCJ1c2VTdGF0ZSIsInVzZUNhbGxiYWNrIiwidXNlTWVtbyIsIlRvb2x0aXAiLCJ1c2VUIiwiU0NDQUlIb21lQ29udGFpbmVyIiwiU0NDQUlIb21lQ29udGVudCIsIlNDQ0FJSG9tZUNvbnRlbnRJbm5lciIsIlNDQ0FJSG9tZUdyYWRpZW50VG9wIiwiU0NDQUlIb21lR3JhZGllbnRCb3R0b20iLCJTQ0NBSUhvbWVIZWFkZXIiLCJTQ0NBSUhvbWVHcmVldGluZyIsIlNDQ0FJSG9tZUFnZW50SW5mb0NvbnRhaW5lciIsIlNDQ0FJSG9tZUFnZW50SW5mbyIsIlNDQ0FJSG9tZVByb2plY3RTdW1tYXJ5IiwiU0NDQUlIb21lUHJvamVjdFN1bW1hcnlDb250ZW50IiwiU0NDQUlIb21lUHJvamVjdFN1bW1hcnlUaXRsZSIsIlNDQ0FJSG9tZVByb2plY3RTdW1tYXJ5RGVzY3JpcHRpb24iLCJTQ0NBSFdyYXBwZXJTdW1tYXJ5UHJvamVjdCIsIlNDQ0FJSG9tZUludHJvZHVjdGlvbiIsIlNDQ0FJSG9tZUNyZWF0ZWRCeUNvbnRhaW5lciIsIlNDQ0FJSG9tZUNyZWF0ZWRCeVRleHQiLCJTQ0NBSUhvbWVDcmVhdGVkQnlUZXh0TmFtZSIsIlNDQ0FJSG9tZUljb25Db250YWluZXIiLCJTQ0NBSUhvbWVMb2dvV3JhcHBlciIsIlNDQ0FJSG9tZU1haWFIZWFkZXJTdGFjayIsIlNDQ0FJSG9tZUR5bmFtaWNTZWN0aW9uIiwidXNlR2xvYmFsQ29udGV4dCIsInZhbGlkYXRlSXNNYWlhIiwiaXNNYWlha2VyQWdlbnQiLCJGcmVxdWVudGx5QXNrZWRRdWVzdGlvbnMiLCJGcmVxdWVudGx5VXNlZEFjdGlvbnMiLCJ1c2VGcmVxdWVudGx5VXNlZEFjdGlvbnMiLCJ1c2VGcmVxdWVudGx5QXNrZWRRdWVzdGlvbnMiLCJNQUlBSXNvbG9nbyIsIlRlbXBsYXRlR3JhZGllbnRJY29uIiwiQ2hhdEFJSG9tZU1haWFrZXIiLCJqc3hzIiwiX2pzeHMiLCJqc3giLCJfanN4IiwiRnJlcXVlbnRRdWVzdGlvbnMiLCJDaGF0QUlIb21lIiwiX3JlZiIsImhhbmRsZXJzIiwib25TdGFydENoYXQiLCJleHBhbmRlZCIsImZsb2F0aW5nIiwiX3VzZVQiLCJ0IiwiaTE4biIsIl91c2VHbG9iYWxDb250ZXh0IiwiYWdlbnQiLCJzZWN0aW9uIiwiaXNNQUlBIiwiZmxvYXRpbmdDdXN0b21DZW50ZXIiLCJ0eXBlIiwibGFuZyIsImxhbmd1YWdlIiwic3VtbWFyeVByb2plY3RBY2Nlc3MiLCJ3aW5kb3ciLCJTdHJpbmciLCJNQUlBX1BST0pFQ1RfU1VNTUFSWV9GRUFUVVJFX0FDQ0VTUyIsInRvTG93ZXJDYXNlIiwibWFpYVByb2plY3RTdW1tYXJ5QWNjZXNzIiwiZmFxc0FjY2VzcyIsInNob3dQcm9qZWN0U3VtbWFyeSIsImlzTWFpYWtlciIsImhvbWVMaXN0c0FnZW50SWQiLCJpZCIsInVuZGVmaW5lZCIsIl91c2VGcmVxdWVudGx5VXNlZEFjdCIsImFnZW50RnVhcyIsImFjdGlvbnMiLCJmdWFzTG9hZGluZyIsImxvYWRpbmciLCJfdXNlRnJlcXVlbnRseUFza2VkUXUiLCJhZ2VudEZhcXMiLCJmYXFzIiwiZmFxc0xvYWRpbmciLCJoYW5kbGVHZXRGcmVxdWVudGx5QXNrZWRRdWVzdGlvbnMiLCJmYXFzRmV0Y2hSZWYiLCJjdXJyZW50S2V5IiwiY29uY2F0IiwibGFzdEtleSIsImN1cnJlbnQiLCJhZ2VudElkIiwic2hvdWxkU2hvd0ZhcXMiLCJsZW5ndGgiLCJzaG91bGRTaG93RnVhcyIsImhhc0FueUhvbWVMaXN0Q29udGVudCIsInNob3dQcm9qZWN0U3VtbWFyeUNhcmQiLCJlbnRpdHkiLCJzaG93RkFRcyIsImhvbWVTY3JvbGxhYmxlTGF5b3V0Iiwic2hvd0R5bmFtaWNTZWN0aW9uIiwiY29udGVudENvbnRhaW5lclJlZiIsIl91c2VTdGF0ZSIsIl91c2VTdGF0ZTIiLCJfc2xpY2VkVG9BcnJheSIsInNob3dUb3BHcmFkaWVudCIsInNldFNob3dUb3BHcmFkaWVudCIsIl91c2VTdGF0ZTMiLCJfdXNlU3RhdGU0Iiwic2hvd0JvdHRvbUdyYWRpZW50Iiwic2V0U2hvd0JvdHRvbUdyYWRpZW50IiwiX3VzZVN0YXRlNSIsIl91c2VTdGF0ZTYiLCJpc1Njcm9sbGluZyIsInNldElzU2Nyb2xsaW5nIiwic2Nyb2xsVGltZW91dFJlZiIsImdyZWV0aW5nIiwiaW50cm8iLCJpbnRyb2R1Y3Rpb24iLCJBcnJheSIsImlzQXJyYXkiLCJNYXRoIiwiZmxvb3IiLCJyYW5kb20iLCJjaGVja1Njcm9sbCIsImNvbnRhaW5lciIsInNjcm9sbFRvcCIsInNjcm9sbEhlaWdodCIsImNsaWVudEhlaWdodCIsImlzU2Nyb2xsYWJsZSIsImlzQXRUb3AiLCJpc0F0Qm90dG9tIiwiY2xlYXJUaW1lb3V0Iiwic2V0VGltZW91dCIsImFkZEV2ZW50TGlzdGVuZXIiLCJ0aW1lb3V0SWQiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwicmVuZGVySGVhZGVyQ29udGVudCIsIl9hZ2VudCRjcmVhdGVkX2J5IiwiX2FnZW50JGNyZWF0ZWRfYnkyIiwiY2hpbGRyZW4iLCJlbW9qaSIsIm5hbWUiLCJjcmVhdGVkX2J5IiwidGl0bGUiLCJpc19kZWxldGVkIiwiJG5vR2FwIiwiJHNob3ciLCJyZWYiLCIkaXNBZ2VudFZpZXciLCIkZmxvYXRpbmdDdXN0b21DZW50ZXIiLCIkZ2FwIiwiJG1heFdpZHRoIiwib25DbGljayIsInByb2plY3RTdW1tYXJ5IiwiaGVpZ2h0Iiwid2lkdGgiLCIkZ3JvdyJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL21vbGVjdWxlcy9DaGF0QUlIb21lL0NoYXRBSUhvbWUudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIHJlYWN0L2Z1bmN0aW9uLWNvbXBvbmVudC1kZWZpbml0aW9uICovXG4vKiBlc2xpbnQtZGlzYWJsZSBqc3gtYTExeS9jbGljay1ldmVudHMtaGF2ZS1rZXktZXZlbnRzICovXG4vKiBlc2xpbnQtZGlzYWJsZSBqc3gtYTExeS9uby1zdGF0aWMtZWxlbWVudC1pbnRlcmFjdGlvbnMgKi9cbmltcG9ydCB7IHVzZUVmZmVjdCwgdXNlUmVmLCB1c2VTdGF0ZSwgdXNlQ2FsbGJhY2ssIHVzZU1lbW8gfSBmcm9tICdyZWFjdCdcblxuaW1wb3J0IHsgVG9vbHRpcCB9IGZyb20gJ0Bwcm9qZWN0Y29yL3Rvb2x0aXB2Mi9saWIvY29tcG9uZW50cy9Ub29sdGlwJ1xuaW1wb3J0IHsgdXNlVCB9IGZyb20gJy4uLy4uLy4uL2hvb2tzL3VzZVQnXG5cbmltcG9ydCB7IG9wdGlvbnMgfSBmcm9tICcuLi9DaGF0QUlNb2RhbC9jb25zdGFudHMnXG5cbmltcG9ydCB7XG4gIFNDQ0FJSG9tZUNvbnRhaW5lcixcbiAgU0NDQUlIb21lQ29udGVudCxcbiAgU0NDQUlIb21lQ29udGVudElubmVyLFxuICBTQ0NBSUhvbWVHcmFkaWVudFRvcCxcbiAgU0NDQUlIb21lR3JhZGllbnRCb3R0b20sXG4gIFNDQ0FJSG9tZUhlYWRlcixcbiAgU0NDQUlIb21lR3JlZXRpbmcsXG4gIFNDQ0FJSG9tZUFnZW50SW5mb0NvbnRhaW5lcixcbiAgU0NDQUlIb21lQWdlbnRJbmZvLFxuICBTQ0NBSUhvbWVQcm9qZWN0U3VtbWFyeSxcbiAgU0NDQUlIb21lUHJvamVjdFN1bW1hcnlDb250ZW50LFxuICBTQ0NBSUhvbWVQcm9qZWN0U3VtbWFyeVRpdGxlLFxuICBTQ0NBSUhvbWVQcm9qZWN0U3VtbWFyeURlc2NyaXB0aW9uLFxuICBTQ0NBSFdyYXBwZXJTdW1tYXJ5UHJvamVjdCxcbiAgU0NDQUlIb21lSW50cm9kdWN0aW9uLFxuICBTQ0NBSUhvbWVDcmVhdGVkQnlDb250YWluZXIsXG4gIFNDQ0FJSG9tZUNyZWF0ZWRCeVRleHQsXG4gIFNDQ0FJSG9tZUNyZWF0ZWRCeVRleHROYW1lLFxuICBTQ0NBSUhvbWVJY29uQ29udGFpbmVyLFxuICBTQ0NBSUhvbWVMb2dvV3JhcHBlcixcbiAgU0NDQUlIb21lTWFpYUhlYWRlclN0YWNrLFxuICBTQ0NBSUhvbWVEeW5hbWljU2VjdGlvbixcbn0gZnJvbSAnLi9zdHlsZXMnXG5pbXBvcnQgeyB1c2VHbG9iYWxDb250ZXh0IH0gZnJvbSAnLi4vLi4vLi4vY29udGV4dC9nbG9iYWwtY29udGV4dCdcbmltcG9ydCB7IHZhbGlkYXRlSXNNYWlhIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvdXRpbHMvdmFsaWRhdGVJc01haWEnXG5pbXBvcnQgeyBpc01haWFrZXJBZ2VudCB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL2FnZW50RGlzcGxheU5hbWUnXG5pbXBvcnQgeyBBZ2VudCB9IGZyb20gJy4uLy4uLy4uL3R5cGVzL2FnZW50J1xuaW1wb3J0IHsgQXR0YWNobWVudEZpbGUgfSBmcm9tICcuLi9DaGF0Rm9vdGVyL0NoYXRGb290ZXInXG5pbXBvcnQgeyBGcmVxdWVudGx5QXNrZWRRdWVzdGlvbnMgfSBmcm9tICcuLi8uLi9hdG9tcy9GcmVxdWVudGx5QXNrZWRRdWVzdGlvbnMnXG5pbXBvcnQgeyBGcmVxdWVudGx5VXNlZEFjdGlvbnMgfSBmcm9tICcuLi8uLi9hdG9tcy9GcmVxdWVudGx5VXNlZEFjdGlvbnMnXG5pbXBvcnQgeyB1c2VGcmVxdWVudGx5VXNlZEFjdGlvbnMgfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VGcmVxdWVudGx5VXNlZEFjdGlvbnMnXG5pbXBvcnQgeyB1c2VGcmVxdWVudGx5QXNrZWRRdWVzdGlvbnMgfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VGcmVxdWVudGx5QXNrZWRRdWVzdGlvbnMnXG5pbXBvcnQgeyBNQUlBSXNvbG9nbyB9IGZyb20gJy4uLy4uL2F0b21zL2ljb25zL01BSUFJc29sb2dvJ1xuaW1wb3J0IHsgVGVtcGxhdGVHcmFkaWVudEljb24gfSBmcm9tICcuLi8uLi9hdG9tcy9pY29ucy9UZW1wbGF0ZUdyYWRpZW50SWNvbidcbmltcG9ydCB7IENoYXRBSUhvbWVNYWlha2VyIH0gZnJvbSAnLi9DaGF0QUlIb21lTWFpYWtlcidcblxudHlwZSBDaGF0QUlIb21lUHJvcHMgPSB7XG4gIG9uU3RhcnRDaGF0OiAoXG4gICAgbWVzc2FnZTogc3RyaW5nLFxuICAgIGF0dGFjaG1lbnRzPzogQXR0YWNobWVudEZpbGVbXSB8IG51bGwsXG4gICAgZmFxSWQ/OiBzdHJpbmcsXG4gICAgYWdlbnRTdWdnZXN0aW9uSWQ/OiBzdHJpbmcsXG4gICAgbWVudGlvbnM/OiBudWxsLFxuICAgIGZ1YUlkPzogc3RyaW5nXG4gICkgPT4gdm9pZFxuICBoYW5kbGVyczogUmVjb3JkPG9wdGlvbnMsICgpID0+IHZvaWQ+XG4gIGV4cGFuZGVkPzogYm9vbGVhblxuICBmbG9hdGluZz86IGJvb2xlYW5cbn1cblxuZXhwb3J0IGVudW0gRnJlcXVlbnRRdWVzdGlvbnMge1xuICByZW50YWJpbGlkYWRfcHJveWVjdG8gPSAncmVudGFiaWxpZGFkX3Byb3llY3RvJyxcbiAgYXZhbmNlX3Byb3llY3RvID0gJ2F2YW5jZV9wcm95ZWN0bycsXG59XG5cbmV4cG9ydCBjb25zdCBDaGF0QUlIb21lID0gKHsgaGFuZGxlcnMsIG9uU3RhcnRDaGF0LCBleHBhbmRlZCwgZmxvYXRpbmcgfTogQ2hhdEFJSG9tZVByb3BzKSA9PiB7XG4gIGNvbnN0IHsgdCwgaTE4biB9ID0gdXNlVCgpXG4gIGNvbnN0IHsgYWdlbnQsIHNlY3Rpb24gfSA9IHVzZUdsb2JhbENvbnRleHQoKVxuXG4gIGNvbnN0IGlzTUFJQSA9IHZhbGlkYXRlSXNNYWlhKGFnZW50IGFzIEFnZW50KVxuICBjb25zdCBmbG9hdGluZ0N1c3RvbUNlbnRlciA9ICEhKGZsb2F0aW5nICYmIGFnZW50Py50eXBlID09PSAnY3VzdG9tJylcbiAgY29uc3QgbGFuZyA9IGkxOG4ubGFuZ3VhZ2UgPT09ICdicicgPyAncHQnIDogaTE4bi5sYW5ndWFnZVxuXG4gIGNvbnN0IHN1bW1hcnlQcm9qZWN0QWNjZXNzID1cbiAgICB0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyAmJlxuICAgIChTdHJpbmcod2luZG93Lk1BSUFfUFJPSkVDVF9TVU1NQVJZX0ZFQVRVUkVfQUNDRVNTKS50b0xvd2VyQ2FzZSgpID09PSAndHJ1ZScgfHxcbiAgICAgIFN0cmluZyh3aW5kb3cubWFpYVByb2plY3RTdW1tYXJ5QWNjZXNzKS50b0xvd2VyQ2FzZSgpID09PSAndHJ1ZScpXG4gIGNvbnN0IGZhcXNBY2Nlc3MgPSB0cnVlXG4gIGNvbnN0IHNob3dQcm9qZWN0U3VtbWFyeSA9ICEhKGlzTUFJQSAmJiBzdW1tYXJ5UHJvamVjdEFjY2VzcylcbiAgY29uc3QgaXNNYWlha2VyID0gaXNNYWlha2VyQWdlbnQoYWdlbnQpXG4gIC8vIEZVQSB5IEZBUSBzb2xvIGFwbGljYW4gYSBhZ2VudGVzIGNsb25lIChsb3MgY3VzdG9tIG5vIGxhcyB0aWVuZW4gaGFiaWxpdGFkYXMgcG9yIGFob3JhKS5cbiAgLy8gTWFpYWtlciAoY2xvbmUgZ2xvYmFsKSBxdWVkYSBleGNsdWlkbyBjb21vIGFudGVzLlxuICBjb25zdCBob21lTGlzdHNBZ2VudElkID0gaXNNQUlBICYmICFpc01haWFrZXIgPyBhZ2VudD8uaWQgOiB1bmRlZmluZWRcbiAgY29uc3QgeyBhY3Rpb25zOiBhZ2VudEZ1YXMsIGxvYWRpbmc6IGZ1YXNMb2FkaW5nIH0gPSB1c2VGcmVxdWVudGx5VXNlZEFjdGlvbnMoaG9tZUxpc3RzQWdlbnRJZCwgc2VjdGlvbilcbiAgY29uc3Qge1xuICAgIGZhcXM6IGFnZW50RmFxcyxcbiAgICBsb2FkaW5nOiBmYXFzTG9hZGluZyxcbiAgICBoYW5kbGVHZXRGcmVxdWVudGx5QXNrZWRRdWVzdGlvbnMsXG4gIH0gPSB1c2VGcmVxdWVudGx5QXNrZWRRdWVzdGlvbnMoaG9tZUxpc3RzQWdlbnRJZCwgbGFuZylcbiAgY29uc3QgZmFxc0ZldGNoUmVmID0gdXNlUmVmPHsgYWdlbnRJZDogc3RyaW5nOyBsYW5nOiBzdHJpbmcgfSB8IG51bGw+KG51bGwpXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFpc01BSUEgfHwgaXNNYWlha2VyIHx8IHNlY3Rpb24gPT09ICd0YXNrJyB8fCAhYWdlbnQ/LmlkKSByZXR1cm5cbiAgICBjb25zdCBjdXJyZW50S2V5ID0gYCR7YWdlbnQuaWR9LSR7bGFuZ31gXG4gICAgY29uc3QgbGFzdEtleSA9IGZhcXNGZXRjaFJlZi5jdXJyZW50ID8gYCR7ZmFxc0ZldGNoUmVmLmN1cnJlbnQuYWdlbnRJZH0tJHtmYXFzRmV0Y2hSZWYuY3VycmVudC5sYW5nfWAgOiBudWxsXG4gICAgaWYgKGN1cnJlbnRLZXkgIT09IGxhc3RLZXkpIHtcbiAgICAgIGZhcXNGZXRjaFJlZi5jdXJyZW50ID0geyBhZ2VudElkOiBhZ2VudC5pZCwgbGFuZyB9XG4gICAgICBoYW5kbGVHZXRGcmVxdWVudGx5QXNrZWRRdWVzdGlvbnMoeyBhZ2VudElkOiBhZ2VudC5pZCwgbGFuZyB9KVxuICAgIH1cbiAgfSwgW2lzTWFpYWtlciwgc2VjdGlvbiwgYWdlbnQ/LmlkLCBsYW5nLCBoYW5kbGVHZXRGcmVxdWVudGx5QXNrZWRRdWVzdGlvbnNdKVxuXG4gIGNvbnN0IHNob3VsZFNob3dGYXFzID0gIWlzTWFpYWtlciAmJiBzZWN0aW9uICE9PSAndGFzaycgJiYgZmFxc0FjY2VzcyAmJiAoYWdlbnRGYXFzLmxlbmd0aCA+IDAgfHwgZmFxc0xvYWRpbmcpXG4gIGNvbnN0IHNob3VsZFNob3dGdWFzID0gIWlzTWFpYWtlciAmJiAoYWdlbnRGdWFzLmxlbmd0aCA+IDAgfHwgZnVhc0xvYWRpbmcpXG4gIGNvbnN0IGhhc0FueUhvbWVMaXN0Q29udGVudCA9XG4gICAgKCFpc01haWFrZXIgJiYgc2VjdGlvbiAhPT0gJ3Rhc2snICYmIGZhcXNBY2Nlc3MgJiYgYWdlbnRGYXFzLmxlbmd0aCA+IDApIHx8ICghaXNNYWlha2VyICYmIGFnZW50RnVhcy5sZW5ndGggPiAwKVxuXG4gIGNvbnN0IHNob3dQcm9qZWN0U3VtbWFyeUNhcmQgPSBzaG93UHJvamVjdFN1bW1hcnkgJiYgYWdlbnQ/LmVudGl0eSA9PT0gJ3Byb2plY3QnXG4gIGNvbnN0IHNob3dGQVFzID0gISEoaGFzQW55SG9tZUxpc3RDb250ZW50IHx8IHNob3dQcm9qZWN0U3VtbWFyeUNhcmQgfHwgaXNNYWlha2VyKVxuICBjb25zdCBob21lU2Nyb2xsYWJsZUxheW91dCA9IHNob3dGQVFzXG4gIGNvbnN0IHNob3dEeW5hbWljU2VjdGlvbiA9IGhhc0FueUhvbWVMaXN0Q29udGVudCB8fCBzaG91bGRTaG93RmFxcyB8fCBzaG91bGRTaG93RnVhcyB8fCBpc01haWFrZXJcblxuICAvLyBMw7NnaWNhIGRlbCBzY3JvbGwgY29uIGdyYWRpZW50ZXNcbiAgY29uc3QgY29udGVudENvbnRhaW5lclJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbClcbiAgY29uc3QgW3Nob3dUb3BHcmFkaWVudCwgc2V0U2hvd1RvcEdyYWRpZW50XSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBbc2hvd0JvdHRvbUdyYWRpZW50LCBzZXRTaG93Qm90dG9tR3JhZGllbnRdID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IFtpc1Njcm9sbGluZywgc2V0SXNTY3JvbGxpbmddID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IHNjcm9sbFRpbWVvdXRSZWYgPSB1c2VSZWY8UmV0dXJuVHlwZTx0eXBlb2Ygc2V0VGltZW91dD4gfCBudWxsPihudWxsKVxuXG4gIC8vIFNhbHVkbyBhbGVhdG9yaW8gZGVzZGUgYWdlbnQuaW50cm9kdWN0aW9uIChhcnJheSBjb24gMyB2YXJpYW50ZXMgZGVsIGJhY2spLiBFbiB0YXNrLCBtZW5zYWplIGZpam8gaTE4bi4gTWFpYWtlciBzaW4gaW50cm8gZGVsIGFnZW50ZS5cbiAgY29uc3QgZ3JlZXRpbmcgPSB1c2VNZW1vKCgpID0+IHtcbiAgICBpZiAoaXNNYWlha2VyKSByZXR1cm4gJydcbiAgICBpZiAoc2VjdGlvbiA9PT0gJ3Rhc2snKSByZXR1cm4gdCgnaG9tZU1lbnUudGFza0dyZWV0aW5nJylcbiAgICBjb25zdCBpbnRybyA9IGFnZW50Py5pbnRyb2R1Y3Rpb25cbiAgICBpZiAoIWludHJvKSByZXR1cm4gJydcbiAgICBpZiAoQXJyYXkuaXNBcnJheShpbnRybykgJiYgaW50cm8ubGVuZ3RoID4gMCkge1xuICAgICAgcmV0dXJuIGludHJvW01hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIGludHJvLmxlbmd0aCldXG4gICAgfVxuICAgIHJldHVybiB0eXBlb2YgaW50cm8gPT09ICdzdHJpbmcnID8gaW50cm8gOiAnJ1xuICB9LCBbYWdlbnQ/LmlkLCBhZ2VudD8uaW50cm9kdWN0aW9uLCBzZWN0aW9uLCBpc01haWFrZXIsIHRdKVxuXG4gIGNvbnN0IGNoZWNrU2Nyb2xsID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGNvbnN0IGNvbnRhaW5lciA9IGNvbnRlbnRDb250YWluZXJSZWYuY3VycmVudFxuICAgIGlmICghY29udGFpbmVyIHx8ICFob21lU2Nyb2xsYWJsZUxheW91dCkgcmV0dXJuXG5cbiAgICBjb25zdCB7IHNjcm9sbFRvcCwgc2Nyb2xsSGVpZ2h0LCBjbGllbnRIZWlnaHQgfSA9IGNvbnRhaW5lclxuICAgIGNvbnN0IGlzU2Nyb2xsYWJsZSA9IHNjcm9sbEhlaWdodCA+IGNsaWVudEhlaWdodFxuICAgIGNvbnN0IGlzQXRUb3AgPSBzY3JvbGxUb3AgPT09IDBcbiAgICBjb25zdCBpc0F0Qm90dG9tID0gc2Nyb2xsVG9wICsgY2xpZW50SGVpZ2h0ID49IHNjcm9sbEhlaWdodCAtIDFcblxuICAgIHNldFNob3dUb3BHcmFkaWVudChpc1Njcm9sbGFibGUgJiYgIWlzQXRUb3ApXG4gICAgc2V0U2hvd0JvdHRvbUdyYWRpZW50KGlzU2Nyb2xsYWJsZSAmJiAhaXNBdEJvdHRvbSlcbiAgICBzZXRJc1Njcm9sbGluZyh0cnVlKVxuXG4gICAgaWYgKHNjcm9sbFRpbWVvdXRSZWYuY3VycmVudCkge1xuICAgICAgY2xlYXJUaW1lb3V0KHNjcm9sbFRpbWVvdXRSZWYuY3VycmVudClcbiAgICB9XG5cbiAgICBzY3JvbGxUaW1lb3V0UmVmLmN1cnJlbnQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHNldElzU2Nyb2xsaW5nKGZhbHNlKVxuICAgIH0sIDE1MClcbiAgfSwgW2hvbWVTY3JvbGxhYmxlTGF5b3V0XSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghaG9tZVNjcm9sbGFibGVMYXlvdXQpIHtcbiAgICAgIHNldFNob3dUb3BHcmFkaWVudChmYWxzZSlcbiAgICAgIHNldFNob3dCb3R0b21HcmFkaWVudChmYWxzZSlcbiAgICAgIHJldHVybiB1bmRlZmluZWRcbiAgICB9XG5cbiAgICBjb25zdCBjb250YWluZXIgPSBjb250ZW50Q29udGFpbmVyUmVmLmN1cnJlbnRcbiAgICBpZiAoIWNvbnRhaW5lcikge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZFxuICAgIH1cblxuICAgIGNoZWNrU2Nyb2xsKClcbiAgICBjb250YWluZXIuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgY2hlY2tTY3JvbGwpXG5cbiAgICBjb25zdCB0aW1lb3V0SWQgPSBzZXRUaW1lb3V0KGNoZWNrU2Nyb2xsLCAxMDApXG5cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgY29udGFpbmVyLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIGNoZWNrU2Nyb2xsKVxuICAgICAgY2xlYXJUaW1lb3V0KHRpbWVvdXRJZClcbiAgICAgIGlmIChzY3JvbGxUaW1lb3V0UmVmLmN1cnJlbnQpIHtcbiAgICAgICAgY2xlYXJUaW1lb3V0KHNjcm9sbFRpbWVvdXRSZWYuY3VycmVudClcbiAgICAgIH1cbiAgICB9XG4gIH0sIFtob21lU2Nyb2xsYWJsZUxheW91dCwgY2hlY2tTY3JvbGxdKVxuXG4gIGNvbnN0IHJlbmRlckhlYWRlckNvbnRlbnQgPSAoKSA9PiB7XG4gICAgaWYgKCFpc01BSUEpIHtcbiAgICAgIHJldHVybiAoXG4gICAgICAgIDxTQ0NBSUhvbWVBZ2VudEluZm9Db250YWluZXI+XG4gICAgICAgICAgPFNDQ0FJSG9tZUFnZW50SW5mbz5cbiAgICAgICAgICAgIHthZ2VudD8uZW1vaml9IHthZ2VudD8ubmFtZX1cbiAgICAgICAgICA8L1NDQ0FJSG9tZUFnZW50SW5mbz5cbiAgICAgICAgICB7YWdlbnQ/LmNyZWF0ZWRfYnkgJiYgIWlzTUFJQSAmJiAoXG4gICAgICAgICAgICA8U0NDQUlIb21lQ3JlYXRlZEJ5Q29udGFpbmVyPlxuICAgICAgICAgICAgICA8VG9vbHRpcFxuICAgICAgICAgICAgICAgIHRpdGxlPXtcbiAgICAgICAgICAgICAgICAgIGFnZW50Py5jcmVhdGVkX2J5Py5pc19kZWxldGVkID8gdCgnaG9tZU1lbnUuY3JlYXRlZEJ5VG9vbHRpcERlbGV0ZWQnKSA6IHQoJ2hvbWVNZW51LmNyZWF0ZWRCeVRvb2x0aXAnKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxTQ0NBSUhvbWVDcmVhdGVkQnlUZXh0PlxuICAgICAgICAgICAgICAgICAge3QoJ2hvbWVNZW51LmNyZWF0ZWRCeScpfXsnICd9XG4gICAgICAgICAgICAgICAgICA8U0NDQUlIb21lQ3JlYXRlZEJ5VGV4dE5hbWU+e2FnZW50Py5jcmVhdGVkX2J5Py5uYW1lfTwvU0NDQUlIb21lQ3JlYXRlZEJ5VGV4dE5hbWU+XG4gICAgICAgICAgICAgICAgPC9TQ0NBSUhvbWVDcmVhdGVkQnlUZXh0PlxuICAgICAgICAgICAgICA8L1Rvb2x0aXA+XG4gICAgICAgICAgICA8L1NDQ0FJSG9tZUNyZWF0ZWRCeUNvbnRhaW5lcj5cbiAgICAgICAgICApfVxuICAgICAgICA8L1NDQ0FJSG9tZUFnZW50SW5mb0NvbnRhaW5lcj5cbiAgICAgIClcbiAgICB9XG5cbiAgICByZXR1cm4gKFxuICAgICAgPFNDQ0FJSG9tZU1haWFIZWFkZXJTdGFjayAkbm9HYXA9eyFncmVldGluZ30+XG4gICAgICAgIDxTQ0NBSUhvbWVJY29uQ29udGFpbmVyPlxuICAgICAgICAgIDxTQ0NBSUhvbWVMb2dvV3JhcHBlcj5cbiAgICAgICAgICAgIDxNQUlBSXNvbG9nbyAvPlxuICAgICAgICAgIDwvU0NDQUlIb21lTG9nb1dyYXBwZXI+XG4gICAgICAgIDwvU0NDQUlIb21lSWNvbkNvbnRhaW5lcj5cbiAgICAgICAge2dyZWV0aW5nID8gPFNDQ0FJSG9tZUdyZWV0aW5nPntncmVldGluZ308L1NDQ0FJSG9tZUdyZWV0aW5nPiA6IG51bGx9XG4gICAgICA8L1NDQ0FJSG9tZU1haWFIZWFkZXJTdGFjaz5cbiAgICApXG4gIH1cblxuICByZXR1cm4gKFxuICAgIDxTQ0NBSUhvbWVDb250YWluZXIgc2hvd0ZBUXM9e3Nob3dGQVFzfT5cbiAgICAgIHtob21lU2Nyb2xsYWJsZUxheW91dCAmJiA8U0NDQUlIb21lR3JhZGllbnRUb3AgJHNob3c9e3Nob3dUb3BHcmFkaWVudH0gLz59XG4gICAgICA8U0NDQUlIb21lQ29udGVudFxuICAgICAgICByZWY9e2NvbnRlbnRDb250YWluZXJSZWZ9XG4gICAgICAgIHNob3dGQVFzPXtob21lU2Nyb2xsYWJsZUxheW91dH1cbiAgICAgICAgJGlzQWdlbnRWaWV3PXshaXNNQUlBfVxuICAgICAgICAkZmxvYXRpbmdDdXN0b21DZW50ZXI9e2Zsb2F0aW5nQ3VzdG9tQ2VudGVyfVxuICAgICAgPlxuICAgICAgICA8U0NDQUlIb21lQ29udGVudElubmVyXG4gICAgICAgICAgc2hvd0ZBUXM9e2hvbWVTY3JvbGxhYmxlTGF5b3V0fVxuICAgICAgICAgICRpc0FnZW50Vmlldz17IWlzTUFJQX1cbiAgICAgICAgICAkZmxvYXRpbmdDdXN0b21DZW50ZXI9e2Zsb2F0aW5nQ3VzdG9tQ2VudGVyfVxuICAgICAgICA+XG4gICAgICAgICAgPFNDQ0FJSG9tZUhlYWRlclxuICAgICAgICAgICAgJGdhcD17aXNNQUlBICYmIHNlY3Rpb24gIT09ICdwcm9qZWN0JyA/ICc4cHgnIDogJzIwcHgnfVxuICAgICAgICAgICAgJG1heFdpZHRoPXtpc01BSUEgPyAnMTAwJScgOiAnMzgwcHgnfVxuICAgICAgICAgICAgJGlzQWdlbnRWaWV3PXshaXNNQUlBfVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHtyZW5kZXJIZWFkZXJDb250ZW50KCl9XG5cbiAgICAgICAgICAgIHtzZWN0aW9uICE9PSAncHJvamVjdCcgJiYgKFxuICAgICAgICAgICAgICA8U0NDQUlIb21lSW50cm9kdWN0aW9uIGV4cGFuZGVkPXtleHBhbmRlZH0+eyFpc01BSUEgJiYgYWdlbnQ/LmludHJvZHVjdGlvbn08L1NDQ0FJSG9tZUludHJvZHVjdGlvbj5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgPC9TQ0NBSUhvbWVIZWFkZXI+XG4gICAgICAgICAge3Nob3dQcm9qZWN0U3VtbWFyeUNhcmQgJiYgKFxuICAgICAgICAgICAgPFNDQ0FIV3JhcHBlclN1bW1hcnlQcm9qZWN0IG9uQ2xpY2s9e2hhbmRsZXJzLnByb2plY3RTdW1tYXJ5fT5cbiAgICAgICAgICAgICAgPFNDQ0FJSG9tZVByb2plY3RTdW1tYXJ5PlxuICAgICAgICAgICAgICAgIDxUZW1wbGF0ZUdyYWRpZW50SWNvbiBoZWlnaHQ9ezI0fSB3aWR0aD17MjR9IC8+XG4gICAgICAgICAgICAgIDwvU0NDQUlIb21lUHJvamVjdFN1bW1hcnk+XG4gICAgICAgICAgICAgIDxTQ0NBSUhvbWVQcm9qZWN0U3VtbWFyeUNvbnRlbnQ+XG4gICAgICAgICAgICAgICAgPFNDQ0FJSG9tZVByb2plY3RTdW1tYXJ5VGl0bGU+e3QoJ2hvbWVNZW51LnByb2plY3RTdW1tYXJ5LnRpdGxlJyl9PC9TQ0NBSUhvbWVQcm9qZWN0U3VtbWFyeVRpdGxlPlxuICAgICAgICAgICAgICAgIDxTQ0NBSUhvbWVQcm9qZWN0U3VtbWFyeURlc2NyaXB0aW9uPlxuICAgICAgICAgICAgICAgICAge3QoJ2hvbWVNZW51LnByb2plY3RTdW1tYXJ5LmRlc2NyaXB0aW9uJyl9XG4gICAgICAgICAgICAgICAgPC9TQ0NBSUhvbWVQcm9qZWN0U3VtbWFyeURlc2NyaXB0aW9uPlxuICAgICAgICAgICAgICA8L1NDQ0FJSG9tZVByb2plY3RTdW1tYXJ5Q29udGVudD5cbiAgICAgICAgICAgIDwvU0NDQUhXcmFwcGVyU3VtbWFyeVByb2plY3Q+XG4gICAgICAgICAgKX1cbiAgICAgICAgICB7c2hvd0R5bmFtaWNTZWN0aW9uICYmIChcbiAgICAgICAgICAgIDxTQ0NBSUhvbWVEeW5hbWljU2VjdGlvbiAkZ3Jvdz17aXNNYWlha2VyfT5cbiAgICAgICAgICAgICAge3Nob3VsZFNob3dGYXFzICYmIChcbiAgICAgICAgICAgICAgICA8RnJlcXVlbnRseUFza2VkUXVlc3Rpb25zXG4gICAgICAgICAgICAgICAgICBvblN0YXJ0Q2hhdD17b25TdGFydENoYXR9XG4gICAgICAgICAgICAgICAgICBzaG93RkFRcz17c2hvd0ZBUXN9XG4gICAgICAgICAgICAgICAgICBzaG93UHJvamVjdFN1bW1hcnk9e3Nob3dQcm9qZWN0U3VtbWFyeX1cbiAgICAgICAgICAgICAgICAgIGFnZW50SWQ9e2FnZW50Py5pZH1cbiAgICAgICAgICAgICAgICAgIGxhbmc9e2xhbmd9XG4gICAgICAgICAgICAgICAgICBpc1Njcm9sbGluZz17aXNTY3JvbGxpbmd9XG4gICAgICAgICAgICAgICAgICBmYXFzPXthZ2VudEZhcXN9XG4gICAgICAgICAgICAgICAgICBsb2FkaW5nPXtmYXFzTG9hZGluZ31cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICB7c2hvdWxkU2hvd0Z1YXMgJiYgKFxuICAgICAgICAgICAgICAgIDxGcmVxdWVudGx5VXNlZEFjdGlvbnNcbiAgICAgICAgICAgICAgICAgIG9uU3RhcnRDaGF0PXtvblN0YXJ0Q2hhdH1cbiAgICAgICAgICAgICAgICAgIGFnZW50SWQ9e2FnZW50Py5pZH1cbiAgICAgICAgICAgICAgICAgIGlzU2Nyb2xsaW5nPXtpc1Njcm9sbGluZ31cbiAgICAgICAgICAgICAgICAgIGFjdGlvbnM9e2FnZW50RnVhc31cbiAgICAgICAgICAgICAgICAgIGxvYWRpbmc9e2Z1YXNMb2FkaW5nfVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgIHtpc01haWFrZXIgPyA8Q2hhdEFJSG9tZU1haWFrZXIgb25TdGFydENoYXQ9e29uU3RhcnRDaGF0fSAvPiA6IG51bGx9XG4gICAgICAgICAgICA8L1NDQ0FJSG9tZUR5bmFtaWNTZWN0aW9uPlxuICAgICAgICAgICl9XG4gICAgICAgIDwvU0NDQUlIb21lQ29udGVudElubmVyPlxuICAgICAgPC9TQ0NBSUhvbWVDb250ZW50PlxuICAgICAge2hvbWVTY3JvbGxhYmxlTGF5b3V0ICYmIDxTQ0NBSUhvbWVHcmFkaWVudEJvdHRvbSAkc2hvdz17c2hvd0JvdHRvbUdyYWRpZW50fSAvPn1cbiAgICA8L1NDQ0FJSG9tZUNvbnRhaW5lcj5cbiAgKVxufVxuIl0sIm1hcHBpbmdzIjoiO0FBQUE7QUFDQTtBQUNBO0FBQ0EsU0FBU0EsU0FBUyxFQUFFQyxNQUFNLEVBQUVDLFFBQVEsRUFBRUMsV0FBVyxFQUFFQyxPQUFPLFFBQVEsT0FBTztBQUV6RSxTQUFTQyxPQUFPLFFBQVEsOENBQThDO0FBQ3RFLFNBQVNDLElBQUksUUFBUSxxQkFBcUI7QUFJMUMsU0FDRUMsa0JBQWtCLEVBQ2xCQyxnQkFBZ0IsRUFDaEJDLHFCQUFxQixFQUNyQkMsb0JBQW9CLEVBQ3BCQyx1QkFBdUIsRUFDdkJDLGVBQWUsRUFDZkMsaUJBQWlCLEVBQ2pCQywyQkFBMkIsRUFDM0JDLGtCQUFrQixFQUNsQkMsdUJBQXVCLEVBQ3ZCQyw4QkFBOEIsRUFDOUJDLDRCQUE0QixFQUM1QkMsa0NBQWtDLEVBQ2xDQywwQkFBMEIsRUFDMUJDLHFCQUFxQixFQUNyQkMsMkJBQTJCLEVBQzNCQyxzQkFBc0IsRUFDdEJDLDBCQUEwQixFQUMxQkMsc0JBQXNCLEVBQ3RCQyxvQkFBb0IsRUFDcEJDLHdCQUF3QixFQUN4QkMsdUJBQXVCLFFBQ2xCLFVBQVU7QUFDakIsU0FBU0MsZ0JBQWdCLFFBQVEsaUNBQWlDO0FBQ2xFLFNBQVNDLGNBQWMsUUFBUSx3Q0FBd0M7QUFDdkUsU0FBU0MsY0FBYyxRQUFRLGlDQUFpQztBQUdoRSxTQUFTQyx3QkFBd0IsUUFBUSxzQ0FBc0M7QUFDL0UsU0FBU0MscUJBQXFCLFFBQVEsbUNBQW1DO0FBQ3pFLFNBQVNDLHdCQUF3QixRQUFRLHlDQUF5QztBQUNsRixTQUFTQywyQkFBMkIsUUFBUSw0Q0FBNEM7QUFDeEYsU0FBU0MsV0FBVyxRQUFRLCtCQUErQjtBQUMzRCxTQUFTQyxvQkFBb0IsUUFBUSx3Q0FBd0M7QUFDN0UsU0FBU0MsaUJBQWlCLFFBQVEscUJBQXFCO0FBQUEsU0FBQUMsSUFBQSxJQUFBQyxLQUFBLEVBQUFDLEdBQUEsSUFBQUMsSUFBQTtBQWdCdkQsV0FBWUMsaUJBQWlCLDBCQUFqQkEsaUJBQWlCO0VBQWpCQSxpQkFBaUI7RUFBakJBLGlCQUFpQjtFQUFBLE9BQWpCQSxpQkFBaUI7QUFBQTtBQUs3QixPQUFPLElBQU1DLFVBQVUsR0FBRyxTQUFiQSxVQUFVQSxDQUFBQyxJQUFBLEVBQXVFO0VBQUEsSUFBakVDLFFBQVEsR0FBQUQsSUFBQSxDQUFSQyxRQUFRO0lBQUVDLFdBQVcsR0FBQUYsSUFBQSxDQUFYRSxXQUFXO0lBQUVDLFFBQVEsR0FBQUgsSUFBQSxDQUFSRyxRQUFRO0lBQUVDLFFBQVEsR0FBQUosSUFBQSxDQUFSSSxRQUFRO0VBQ3BFLElBQUFDLEtBQUEsR0FBb0I1QyxJQUFJLENBQUMsQ0FBQztJQUFsQjZDLENBQUMsR0FBQUQsS0FBQSxDQUFEQyxDQUFDO0lBQUVDLElBQUksR0FBQUYsS0FBQSxDQUFKRSxJQUFJO0VBQ2YsSUFBQUMsaUJBQUEsR0FBMkJ4QixnQkFBZ0IsQ0FBQyxDQUFDO0lBQXJDeUIsS0FBSyxHQUFBRCxpQkFBQSxDQUFMQyxLQUFLO0lBQUVDLE9BQU8sR0FBQUYsaUJBQUEsQ0FBUEUsT0FBTztFQUV0QixJQUFNQyxNQUFNLEdBQUcxQixjQUFjLENBQUN3QixLQUFjLENBQUM7RUFDN0MsSUFBTUcsb0JBQW9CLEdBQUcsQ0FBQyxFQUFFUixRQUFRLElBQUksQ0FBQUssS0FBSyxhQUFMQSxLQUFLLHVCQUFMQSxLQUFLLENBQUVJLElBQUksTUFBSyxRQUFRLENBQUM7RUFDckUsSUFBTUMsSUFBSSxHQUFHUCxJQUFJLENBQUNRLFFBQVEsS0FBSyxJQUFJLEdBQUcsSUFBSSxHQUFHUixJQUFJLENBQUNRLFFBQVE7RUFFMUQsSUFBTUMsb0JBQW9CLEdBQ3hCLE9BQU9DLE1BQU0sS0FBSyxXQUFXLEtBQzVCQyxNQUFNLENBQUNELE1BQU0sQ0FBQ0UsbUNBQW1DLENBQUMsQ0FBQ0MsV0FBVyxDQUFDLENBQUMsS0FBSyxNQUFNLElBQzFFRixNQUFNLENBQUNELE1BQU0sQ0FBQ0ksd0JBQXdCLENBQUMsQ0FBQ0QsV0FBVyxDQUFDLENBQUMsS0FBSyxNQUFNLENBQUM7RUFDckUsSUFBTUUsVUFBVSxHQUFHLElBQUk7RUFDdkIsSUFBTUMsa0JBQWtCLEdBQUcsQ0FBQyxFQUFFWixNQUFNLElBQUlLLG9CQUFvQixDQUFDO0VBQzdELElBQU1RLFNBQVMsR0FBR3RDLGNBQWMsQ0FBQ3VCLEtBQUssQ0FBQztFQUN2QztFQUNBO0VBQ0EsSUFBTWdCLGdCQUFnQixHQUFHZCxNQUFNLElBQUksQ0FBQ2EsU0FBUyxHQUFHZixLQUFLLGFBQUxBLEtBQUssdUJBQUxBLEtBQUssQ0FBRWlCLEVBQUUsR0FBR0MsU0FBUztFQUNyRSxJQUFBQyxxQkFBQSxHQUFxRHZDLHdCQUF3QixDQUFDb0MsZ0JBQWdCLEVBQUVmLE9BQU8sQ0FBQztJQUF2Rm1CLFNBQVMsR0FBQUQscUJBQUEsQ0FBbEJFLE9BQU87SUFBc0JDLFdBQVcsR0FBQUgscUJBQUEsQ0FBcEJJLE9BQU87RUFDbkMsSUFBQUMscUJBQUEsR0FJSTNDLDJCQUEyQixDQUFDbUMsZ0JBQWdCLEVBQUVYLElBQUksQ0FBQztJQUgvQ29CLFNBQVMsR0FBQUQscUJBQUEsQ0FBZkUsSUFBSTtJQUNLQyxXQUFXLEdBQUFILHFCQUFBLENBQXBCRCxPQUFPO0lBQ1BLLGlDQUFpQyxHQUFBSixxQkFBQSxDQUFqQ0ksaUNBQWlDO0VBRW5DLElBQU1DLFlBQVksR0FBR2xGLE1BQU0sQ0FBMkMsSUFBSSxDQUFDO0VBQzNFRCxTQUFTLENBQUMsWUFBTTtJQUNkLElBQUksQ0FBQ3dELE1BQU0sSUFBSWEsU0FBUyxJQUFJZCxPQUFPLEtBQUssTUFBTSxJQUFJLEVBQUNELEtBQUssYUFBTEEsS0FBSyxlQUFMQSxLQUFLLENBQUVpQixFQUFFLEdBQUU7SUFDOUQsSUFBTWEsVUFBVSxNQUFBQyxNQUFBLENBQU0vQixLQUFLLENBQUNpQixFQUFFLE9BQUFjLE1BQUEsQ0FBSTFCLElBQUksQ0FBRTtJQUN4QyxJQUFNMkIsT0FBTyxHQUFHSCxZQUFZLENBQUNJLE9BQU8sTUFBQUYsTUFBQSxDQUFNRixZQUFZLENBQUNJLE9BQU8sQ0FBQ0MsT0FBTyxPQUFBSCxNQUFBLENBQUlGLFlBQVksQ0FBQ0ksT0FBTyxDQUFDNUIsSUFBSSxJQUFLLElBQUk7SUFDNUcsSUFBSXlCLFVBQVUsS0FBS0UsT0FBTyxFQUFFO01BQzFCSCxZQUFZLENBQUNJLE9BQU8sR0FBRztRQUFFQyxPQUFPLEVBQUVsQyxLQUFLLENBQUNpQixFQUFFO1FBQUVaLElBQUksRUFBSkE7TUFBSyxDQUFDO01BQ2xEdUIsaUNBQWlDLENBQUM7UUFBRU0sT0FBTyxFQUFFbEMsS0FBSyxDQUFDaUIsRUFBRTtRQUFFWixJQUFJLEVBQUpBO01BQUssQ0FBQyxDQUFDO0lBQ2hFO0VBQ0YsQ0FBQyxFQUFFLENBQUNVLFNBQVMsRUFBRWQsT0FBTyxFQUFFRCxLQUFLLGFBQUxBLEtBQUssdUJBQUxBLEtBQUssQ0FBRWlCLEVBQUUsRUFBRVosSUFBSSxFQUFFdUIsaUNBQWlDLENBQUMsQ0FBQztFQUU1RSxJQUFNTyxjQUFjLEdBQUcsQ0FBQ3BCLFNBQVMsSUFBSWQsT0FBTyxLQUFLLE1BQU0sSUFBSVksVUFBVSxLQUFLWSxTQUFTLENBQUNXLE1BQU0sR0FBRyxDQUFDLElBQUlULFdBQVcsQ0FBQztFQUM5RyxJQUFNVSxjQUFjLEdBQUcsQ0FBQ3RCLFNBQVMsS0FBS0ssU0FBUyxDQUFDZ0IsTUFBTSxHQUFHLENBQUMsSUFBSWQsV0FBVyxDQUFDO0VBQzFFLElBQU1nQixxQkFBcUIsR0FDeEIsQ0FBQ3ZCLFNBQVMsSUFBSWQsT0FBTyxLQUFLLE1BQU0sSUFBSVksVUFBVSxJQUFJWSxTQUFTLENBQUNXLE1BQU0sR0FBRyxDQUFDLElBQU0sQ0FBQ3JCLFNBQVMsSUFBSUssU0FBUyxDQUFDZ0IsTUFBTSxHQUFHLENBQUU7RUFFbEgsSUFBTUcsc0JBQXNCLEdBQUd6QixrQkFBa0IsSUFBSSxDQUFBZCxLQUFLLGFBQUxBLEtBQUssdUJBQUxBLEtBQUssQ0FBRXdDLE1BQU0sTUFBSyxTQUFTO0VBQ2hGLElBQU1DLFFBQVEsR0FBRyxDQUFDLEVBQUVILHFCQUFxQixJQUFJQyxzQkFBc0IsSUFBSXhCLFNBQVMsQ0FBQztFQUNqRixJQUFNMkIsb0JBQW9CLEdBQUdELFFBQVE7RUFDckMsSUFBTUUsa0JBQWtCLEdBQUdMLHFCQUFxQixJQUFJSCxjQUFjLElBQUlFLGNBQWMsSUFBSXRCLFNBQVM7O0VBRWpHO0VBQ0EsSUFBTTZCLG1CQUFtQixHQUFHakcsTUFBTSxDQUFpQixJQUFJLENBQUM7RUFDeEQsSUFBQWtHLFNBQUEsR0FBOENqRyxRQUFRLENBQUMsS0FBSyxDQUFDO0lBQUFrRyxVQUFBLEdBQUFDLGNBQUEsQ0FBQUYsU0FBQTtJQUF0REcsZUFBZSxHQUFBRixVQUFBO0lBQUVHLGtCQUFrQixHQUFBSCxVQUFBO0VBQzFDLElBQUFJLFVBQUEsR0FBb0R0RyxRQUFRLENBQUMsS0FBSyxDQUFDO0lBQUF1RyxVQUFBLEdBQUFKLGNBQUEsQ0FBQUcsVUFBQTtJQUE1REUsa0JBQWtCLEdBQUFELFVBQUE7SUFBRUUscUJBQXFCLEdBQUFGLFVBQUE7RUFDaEQsSUFBQUcsVUFBQSxHQUFzQzFHLFFBQVEsQ0FBQyxLQUFLLENBQUM7SUFBQTJHLFVBQUEsR0FBQVIsY0FBQSxDQUFBTyxVQUFBO0lBQTlDRSxXQUFXLEdBQUFELFVBQUE7SUFBRUUsY0FBYyxHQUFBRixVQUFBO0VBQ2xDLElBQU1HLGdCQUFnQixHQUFHL0csTUFBTSxDQUF1QyxJQUFJLENBQUM7O0VBRTNFO0VBQ0EsSUFBTWdILFFBQVEsR0FBRzdHLE9BQU8sQ0FBQyxZQUFNO0lBQzdCLElBQUlpRSxTQUFTLEVBQUUsT0FBTyxFQUFFO0lBQ3hCLElBQUlkLE9BQU8sS0FBSyxNQUFNLEVBQUUsT0FBT0osQ0FBQyxDQUFDLHVCQUF1QixDQUFDO0lBQ3pELElBQU0rRCxLQUFLLEdBQUc1RCxLQUFLLGFBQUxBLEtBQUssdUJBQUxBLEtBQUssQ0FBRTZELFlBQVk7SUFDakMsSUFBSSxDQUFDRCxLQUFLLEVBQUUsT0FBTyxFQUFFO0lBQ3JCLElBQUlFLEtBQUssQ0FBQ0MsT0FBTyxDQUFDSCxLQUFLLENBQUMsSUFBSUEsS0FBSyxDQUFDeEIsTUFBTSxHQUFHLENBQUMsRUFBRTtNQUM1QyxPQUFPd0IsS0FBSyxDQUFDSSxJQUFJLENBQUNDLEtBQUssQ0FBQ0QsSUFBSSxDQUFDRSxNQUFNLENBQUMsQ0FBQyxHQUFHTixLQUFLLENBQUN4QixNQUFNLENBQUMsQ0FBQztJQUN4RDtJQUNBLE9BQU8sT0FBT3dCLEtBQUssS0FBSyxRQUFRLEdBQUdBLEtBQUssR0FBRyxFQUFFO0VBQy9DLENBQUMsRUFBRSxDQUFDNUQsS0FBSyxhQUFMQSxLQUFLLHVCQUFMQSxLQUFLLENBQUVpQixFQUFFLEVBQUVqQixLQUFLLGFBQUxBLEtBQUssdUJBQUxBLEtBQUssQ0FBRTZELFlBQVksRUFBRTVELE9BQU8sRUFBRWMsU0FBUyxFQUFFbEIsQ0FBQyxDQUFDLENBQUM7RUFFM0QsSUFBTXNFLFdBQVcsR0FBR3RILFdBQVcsQ0FBQyxZQUFNO0lBQ3BDLElBQU11SCxTQUFTLEdBQUd4QixtQkFBbUIsQ0FBQ1gsT0FBTztJQUM3QyxJQUFJLENBQUNtQyxTQUFTLElBQUksQ0FBQzFCLG9CQUFvQixFQUFFO0lBRXpDLElBQVEyQixTQUFTLEdBQWlDRCxTQUFTLENBQW5EQyxTQUFTO01BQUVDLFlBQVksR0FBbUJGLFNBQVMsQ0FBeENFLFlBQVk7TUFBRUMsWUFBWSxHQUFLSCxTQUFTLENBQTFCRyxZQUFZO0lBQzdDLElBQU1DLFlBQVksR0FBR0YsWUFBWSxHQUFHQyxZQUFZO0lBQ2hELElBQU1FLE9BQU8sR0FBR0osU0FBUyxLQUFLLENBQUM7SUFDL0IsSUFBTUssVUFBVSxHQUFHTCxTQUFTLEdBQUdFLFlBQVksSUFBSUQsWUFBWSxHQUFHLENBQUM7SUFFL0RyQixrQkFBa0IsQ0FBQ3VCLFlBQVksSUFBSSxDQUFDQyxPQUFPLENBQUM7SUFDNUNwQixxQkFBcUIsQ0FBQ21CLFlBQVksSUFBSSxDQUFDRSxVQUFVLENBQUM7SUFDbERqQixjQUFjLENBQUMsSUFBSSxDQUFDO0lBRXBCLElBQUlDLGdCQUFnQixDQUFDekIsT0FBTyxFQUFFO01BQzVCMEMsWUFBWSxDQUFDakIsZ0JBQWdCLENBQUN6QixPQUFPLENBQUM7SUFDeEM7SUFFQXlCLGdCQUFnQixDQUFDekIsT0FBTyxHQUFHMkMsVUFBVSxDQUFDLFlBQU07TUFDMUNuQixjQUFjLENBQUMsS0FBSyxDQUFDO0lBQ3ZCLENBQUMsRUFBRSxHQUFHLENBQUM7RUFDVCxDQUFDLEVBQUUsQ0FBQ2Ysb0JBQW9CLENBQUMsQ0FBQztFQUUxQmhHLFNBQVMsQ0FBQyxZQUFNO0lBQ2QsSUFBSSxDQUFDZ0csb0JBQW9CLEVBQUU7TUFDekJPLGtCQUFrQixDQUFDLEtBQUssQ0FBQztNQUN6QkkscUJBQXFCLENBQUMsS0FBSyxDQUFDO01BQzVCLE9BQU9uQyxTQUFTO0lBQ2xCO0lBRUEsSUFBTWtELFNBQVMsR0FBR3hCLG1CQUFtQixDQUFDWCxPQUFPO0lBQzdDLElBQUksQ0FBQ21DLFNBQVMsRUFBRTtNQUNkLE9BQU9sRCxTQUFTO0lBQ2xCO0lBRUFpRCxXQUFXLENBQUMsQ0FBQztJQUNiQyxTQUFTLENBQUNTLGdCQUFnQixDQUFDLFFBQVEsRUFBRVYsV0FBVyxDQUFDO0lBRWpELElBQU1XLFNBQVMsR0FBR0YsVUFBVSxDQUFDVCxXQUFXLEVBQUUsR0FBRyxDQUFDO0lBRTlDLE9BQU8sWUFBTTtNQUNYQyxTQUFTLENBQUNXLG1CQUFtQixDQUFDLFFBQVEsRUFBRVosV0FBVyxDQUFDO01BQ3BEUSxZQUFZLENBQUNHLFNBQVMsQ0FBQztNQUN2QixJQUFJcEIsZ0JBQWdCLENBQUN6QixPQUFPLEVBQUU7UUFDNUIwQyxZQUFZLENBQUNqQixnQkFBZ0IsQ0FBQ3pCLE9BQU8sQ0FBQztNQUN4QztJQUNGLENBQUM7RUFDSCxDQUFDLEVBQUUsQ0FBQ1Msb0JBQW9CLEVBQUV5QixXQUFXLENBQUMsQ0FBQztFQUV2QyxJQUFNYSxtQkFBbUIsR0FBRyxTQUF0QkEsbUJBQW1CQSxDQUFBLEVBQVM7SUFDaEMsSUFBSSxDQUFDOUUsTUFBTSxFQUFFO01BQUEsSUFBQStFLGlCQUFBLEVBQUFDLGtCQUFBO01BQ1gsb0JBQ0VoRyxLQUFBLENBQUMxQiwyQkFBMkI7UUFBQTJILFFBQUEsZ0JBQzFCakcsS0FBQSxDQUFDekIsa0JBQWtCO1VBQUEwSCxRQUFBLEdBQ2hCbkYsS0FBSyxhQUFMQSxLQUFLLHVCQUFMQSxLQUFLLENBQUVvRixLQUFLLEVBQUMsR0FBQyxFQUFDcEYsS0FBSyxhQUFMQSxLQUFLLHVCQUFMQSxLQUFLLENBQUVxRixJQUFJO1FBQUEsQ0FDVCxDQUFDLEVBQ3BCLENBQUFyRixLQUFLLGFBQUxBLEtBQUssdUJBQUxBLEtBQUssQ0FBRXNGLFVBQVUsS0FBSSxDQUFDcEYsTUFBTSxpQkFDM0JkLElBQUEsQ0FBQ3BCLDJCQUEyQjtVQUFBbUgsUUFBQSxlQUMxQi9GLElBQUEsQ0FBQ3JDLE9BQU87WUFDTndJLEtBQUssRUFDSHZGLEtBQUssYUFBTEEsS0FBSyxnQkFBQWlGLGlCQUFBLEdBQUxqRixLQUFLLENBQUVzRixVQUFVLGNBQUFMLGlCQUFBLGVBQWpCQSxpQkFBQSxDQUFtQk8sVUFBVSxHQUFHM0YsQ0FBQyxDQUFDLGtDQUFrQyxDQUFDLEdBQUdBLENBQUMsQ0FBQywyQkFBMkIsQ0FDdEc7WUFBQXNGLFFBQUEsZUFFRGpHLEtBQUEsQ0FBQ2pCLHNCQUFzQjtjQUFBa0gsUUFBQSxHQUNwQnRGLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQyxFQUFFLEdBQUcsZUFDN0JULElBQUEsQ0FBQ2xCLDBCQUEwQjtnQkFBQWlILFFBQUEsRUFBRW5GLEtBQUssYUFBTEEsS0FBSyxnQkFBQWtGLGtCQUFBLEdBQUxsRixLQUFLLENBQUVzRixVQUFVLGNBQUFKLGtCQUFBLHVCQUFqQkEsa0JBQUEsQ0FBbUJHO2NBQUksQ0FBNkIsQ0FBQztZQUFBLENBQzVEO1VBQUMsQ0FDbEI7UUFBQyxDQUNpQixDQUM5QjtNQUFBLENBQzBCLENBQUM7SUFFbEM7SUFFQSxvQkFDRW5HLEtBQUEsQ0FBQ2Isd0JBQXdCO01BQUNvSCxNQUFNLEVBQUUsQ0FBQzlCLFFBQVM7TUFBQXdCLFFBQUEsZ0JBQzFDL0YsSUFBQSxDQUFDakIsc0JBQXNCO1FBQUFnSCxRQUFBLGVBQ3JCL0YsSUFBQSxDQUFDaEIsb0JBQW9CO1VBQUErRyxRQUFBLGVBQ25CL0YsSUFBQSxDQUFDTixXQUFXLElBQUU7UUFBQyxDQUNLO01BQUMsQ0FDRCxDQUFDLEVBQ3hCNkUsUUFBUSxnQkFBR3ZFLElBQUEsQ0FBQzdCLGlCQUFpQjtRQUFBNEgsUUFBQSxFQUFFeEI7TUFBUSxDQUFvQixDQUFDLEdBQUcsSUFBSTtJQUFBLENBQzVDLENBQUM7RUFFL0IsQ0FBQztFQUVELG9CQUNFekUsS0FBQSxDQUFDakMsa0JBQWtCO0lBQUN3RixRQUFRLEVBQUVBLFFBQVM7SUFBQTBDLFFBQUEsR0FDcEN6QyxvQkFBb0IsaUJBQUl0RCxJQUFBLENBQUNoQyxvQkFBb0I7TUFBQ3NJLEtBQUssRUFBRTFDO0lBQWdCLENBQUUsQ0FBQyxlQUN6RTVELElBQUEsQ0FBQ2xDLGdCQUFnQjtNQUNmeUksR0FBRyxFQUFFL0MsbUJBQW9CO01BQ3pCSCxRQUFRLEVBQUVDLG9CQUFxQjtNQUMvQmtELFlBQVksRUFBRSxDQUFDMUYsTUFBTztNQUN0QjJGLHFCQUFxQixFQUFFMUYsb0JBQXFCO01BQUFnRixRQUFBLGVBRTVDakcsS0FBQSxDQUFDL0IscUJBQXFCO1FBQ3BCc0YsUUFBUSxFQUFFQyxvQkFBcUI7UUFDL0JrRCxZQUFZLEVBQUUsQ0FBQzFGLE1BQU87UUFDdEIyRixxQkFBcUIsRUFBRTFGLG9CQUFxQjtRQUFBZ0YsUUFBQSxnQkFFNUNqRyxLQUFBLENBQUM1QixlQUFlO1VBQ2R3SSxJQUFJLEVBQUU1RixNQUFNLElBQUlELE9BQU8sS0FBSyxTQUFTLEdBQUcsS0FBSyxHQUFHLE1BQU87VUFDdkQ4RixTQUFTLEVBQUU3RixNQUFNLEdBQUcsTUFBTSxHQUFHLE9BQVE7VUFDckMwRixZQUFZLEVBQUUsQ0FBQzFGLE1BQU87VUFBQWlGLFFBQUEsR0FFckJILG1CQUFtQixDQUFDLENBQUMsRUFFckIvRSxPQUFPLEtBQUssU0FBUyxpQkFDcEJiLElBQUEsQ0FBQ3JCLHFCQUFxQjtZQUFDMkIsUUFBUSxFQUFFQSxRQUFTO1lBQUF5RixRQUFBLEVBQUUsQ0FBQ2pGLE1BQU0sS0FBSUYsS0FBSyxhQUFMQSxLQUFLLHVCQUFMQSxLQUFLLENBQUU2RCxZQUFZO1VBQUEsQ0FBd0IsQ0FDbkc7UUFBQSxDQUNjLENBQUMsRUFDakJ0QixzQkFBc0IsaUJBQ3JCckQsS0FBQSxDQUFDcEIsMEJBQTBCO1VBQUNrSSxPQUFPLEVBQUV4RyxRQUFRLENBQUN5RyxjQUFlO1VBQUFkLFFBQUEsZ0JBQzNEL0YsSUFBQSxDQUFDMUIsdUJBQXVCO1lBQUF5SCxRQUFBLGVBQ3RCL0YsSUFBQSxDQUFDTCxvQkFBb0I7Y0FBQ21ILE1BQU0sRUFBRSxFQUFHO2NBQUNDLEtBQUssRUFBRTtZQUFHLENBQUU7VUFBQyxDQUN4QixDQUFDLGVBQzFCakgsS0FBQSxDQUFDdkIsOEJBQThCO1lBQUF3SCxRQUFBLGdCQUM3Qi9GLElBQUEsQ0FBQ3hCLDRCQUE0QjtjQUFBdUgsUUFBQSxFQUFFdEYsQ0FBQyxDQUFDLCtCQUErQjtZQUFDLENBQStCLENBQUMsZUFDakdULElBQUEsQ0FBQ3ZCLGtDQUFrQztjQUFBc0gsUUFBQSxFQUNoQ3RGLENBQUMsQ0FBQyxxQ0FBcUM7WUFBQyxDQUNQLENBQUM7VUFBQSxDQUNQLENBQUM7UUFBQSxDQUNQLENBQzdCLEVBQ0E4QyxrQkFBa0IsaUJBQ2pCekQsS0FBQSxDQUFDWix1QkFBdUI7VUFBQzhILEtBQUssRUFBRXJGLFNBQVU7VUFBQW9FLFFBQUEsR0FDdkNoRCxjQUFjLGlCQUNiL0MsSUFBQSxDQUFDVix3QkFBd0I7WUFDdkJlLFdBQVcsRUFBRUEsV0FBWTtZQUN6QmdELFFBQVEsRUFBRUEsUUFBUztZQUNuQjNCLGtCQUFrQixFQUFFQSxrQkFBbUI7WUFDdkNvQixPQUFPLEVBQUVsQyxLQUFLLGFBQUxBLEtBQUssdUJBQUxBLEtBQUssQ0FBRWlCLEVBQUc7WUFDbkJaLElBQUksRUFBRUEsSUFBSztZQUNYbUQsV0FBVyxFQUFFQSxXQUFZO1lBQ3pCOUIsSUFBSSxFQUFFRCxTQUFVO1lBQ2hCRixPQUFPLEVBQUVJO1VBQVksQ0FDdEIsQ0FDRixFQUNBVSxjQUFjLGlCQUNiakQsSUFBQSxDQUFDVCxxQkFBcUI7WUFDcEJjLFdBQVcsRUFBRUEsV0FBWTtZQUN6QnlDLE9BQU8sRUFBRWxDLEtBQUssYUFBTEEsS0FBSyx1QkFBTEEsS0FBSyxDQUFFaUIsRUFBRztZQUNuQnVDLFdBQVcsRUFBRUEsV0FBWTtZQUN6Qm5DLE9BQU8sRUFBRUQsU0FBVTtZQUNuQkcsT0FBTyxFQUFFRDtVQUFZLENBQ3RCLENBQ0YsRUFDQVAsU0FBUyxnQkFBRzNCLElBQUEsQ0FBQ0osaUJBQWlCO1lBQUNTLFdBQVcsRUFBRUE7VUFBWSxDQUFFLENBQUMsR0FBRyxJQUFJO1FBQUEsQ0FDNUMsQ0FDMUI7TUFBQSxDQUNvQjtJQUFDLENBQ1IsQ0FBQyxFQUNsQmlELG9CQUFvQixpQkFBSXRELElBQUEsQ0FBQy9CLHVCQUF1QjtNQUFDcUksS0FBSyxFQUFFdEM7SUFBbUIsQ0FBRSxDQUFDO0VBQUEsQ0FDN0QsQ0FBQztBQUV6QixDQUFDIiwiaWdub3JlTGlzdCI6W119
|
|
486
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VFZmZlY3QiLCJ1c2VSZWYiLCJ1c2VTdGF0ZSIsInVzZUNhbGxiYWNrIiwidXNlTWVtbyIsIlRvb2x0aXAiLCJMaXN0Q2hlY2tsaXN0IiwidXNlVCIsIkVWRU5UUyIsInVzZUV2ZW50IiwiU0NDQUlIb21lQ29udGFpbmVyIiwiU0NDQUlIb21lQ29udGVudCIsIlNDQ0FJSG9tZUNvbnRlbnRJbm5lciIsIlNDQ0FJSG9tZUdyYWRpZW50VG9wIiwiU0NDQUlIb21lR3JhZGllbnRCb3R0b20iLCJTQ0NBSUhvbWVIZWFkZXIiLCJTQ0NBSUhvbWVHcmVldGluZyIsIlNDQ0FJSG9tZUFnZW50SW5mb0NvbnRhaW5lciIsIlNDQ0FJSG9tZUFnZW50SW5mbyIsIlNDQ0FJSG9tZVByb2plY3RTdW1tYXJ5IiwiU0NDQUlIb21lUHJvamVjdFN1bW1hcnlDb250ZW50IiwiU0NDQUlIb21lUHJvamVjdFN1bW1hcnlUaXRsZSIsIlNDQ0FJSG9tZVByb2plY3RTdW1tYXJ5RGVzY3JpcHRpb24iLCJTQ0NBSFdyYXBwZXJTdW1tYXJ5UHJvamVjdCIsIlNDQ0FJSG9tZUludHJvZHVjdGlvbiIsIlNDQ0FJSG9tZUNyZWF0ZWRCeUNvbnRhaW5lciIsIlNDQ0FJSG9tZUNyZWF0ZWRCeVRleHQiLCJTQ0NBSUhvbWVDcmVhdGVkQnlUZXh0TmFtZSIsIlNDQ0FJSG9tZUljb25Db250YWluZXIiLCJTQ0NBSUhvbWVMb2dvV3JhcHBlciIsIlNDQ0FJSG9tZU1haWFIZWFkZXJTdGFjayIsIlNDQ0FJSG9tZVRpdGxlIiwiU0NDQUlIb21lU3VidGl0bGUiLCJTQ0NBSUhvbWVEeW5hbWljU2VjdGlvbiIsIlNDQ0FJSG9tZVJlY2VudENvbnRleHRzIiwiU0NDQUlIb21lUmVjZW50Q29udGV4dHNMaXN0IiwiU0NDQUlIb21lUmVjZW50Q29udGV4dFBpbGwiLCJTQ0NBSUhvbWVSZWNlbnRDb250ZXh0UGlsbEljb24iLCJTQ0NBSUhvbWVSZWNlbnRDb250ZXh0UGlsbFRleHQiLCJTQ0NBSUhvbWVSZWNlbnRDb250ZXh0UGlsbFNrZWxldG9uIiwidXNlR2xvYmFsQ29udGV4dCIsIkNPUlVzZXJSb2xlIiwidXNlVXNlciIsInVzZVJlc2l6ZUxpc3RlbmVyIiwiZ2V0Q29udGV4dE1lbnRpb25JY29uIiwidmFsaWRhdGVJc01haWEiLCJpc01haWFrZXJBZ2VudCIsIkZyZXF1ZW50bHlBc2tlZFF1ZXN0aW9ucyIsIkZyZXF1ZW50bHlVc2VkQWN0aW9ucyIsInVzZUZyZXF1ZW50bHlVc2VkQWN0aW9ucyIsInVzZUZyZXF1ZW50bHlBc2tlZFF1ZXN0aW9ucyIsInVzZVJlY2VudENvbnRleHRzIiwiTUFJQUlzb2xvZ28iLCJUZW1wbGF0ZUdyYWRpZW50SWNvbiIsIkNoYXRBSUhvbWVNYWlha2VyIiwianN4IiwiX2pzeCIsImpzeHMiLCJfanN4cyIsIkZyYWdtZW50IiwiX0ZyYWdtZW50IiwiRnJlcXVlbnRRdWVzdGlvbnMiLCJSRUNFTlRfQ09OVEVYVFNfTElNSVQiLCJSRUNFTlRfQ09OVEVYVF9JQ09OX0NPTE9SIiwiUkVDRU5UX0NPTlRFWFRfU0tFTEVUT05fS0VZUyIsIlJlY2VudENvbnRleHRQaWxsIiwiX3JlZiIsImNvbnRleHQiLCJsYWJlbCIsIm9uQ2xpY2siLCJ0ZXh0UmVmIiwiX3VzZVJlc2l6ZUxpc3RlbmVyIiwic2hvd1Rvb2x0aXAiLCJ0eXBlIiwiY2hpbGRyZW4iLCJjb2xvciIsIndpZHRoIiwiaGVpZ2h0IiwidW5kZWZpbmVkIiwicmVmIiwidGl0bGUiLCJwYXJzZU51bWVyaWNJZCIsInZhbHVlIiwicGFyc2VkIiwiTnVtYmVyIiwiaXNGaW5pdGUiLCJnZXRBbGxvd2VkUmVjZW50Q29udGV4dFR5cGVzIiwicm9sZUlkIiwiQ0xFVkVMIiwiRElSRUNUT1IiLCJQUk9KRUNUX01BTkFHRVIiLCJTZXQiLCJDT0xMQUJPUkFUT1IiLCJDaGF0QUlIb21lIiwiX3JlZjIiLCJoYW5kbGVycyIsIm9uU3RhcnRDaGF0IiwiZXhwYW5kZWQiLCJmbG9hdGluZyIsIl91c2VUIiwidCIsImkxOG4iLCJldmVudCIsInVzZXIiLCJfdXNlR2xvYmFsQ29udGV4dCIsImFnZW50Iiwic2VjdGlvbiIsImNsaWVudCIsInByb2plY3QiLCJ0YXNrIiwiY2hpcHNQcm9qZWN0Iiwic2V0Q2xpZW50Iiwic2V0UHJvamVjdCIsInNldFRhc2siLCJzZXRDaGlwc1Byb2plY3QiLCJpc01BSUEiLCJmbG9hdGluZ0N1c3RvbUNlbnRlciIsImxhbmciLCJsYW5ndWFnZSIsInN1bW1hcnlQcm9qZWN0QWNjZXNzIiwid2luZG93IiwiU3RyaW5nIiwiTUFJQV9QUk9KRUNUX1NVTU1BUllfRkVBVFVSRV9BQ0NFU1MiLCJ0b0xvd2VyQ2FzZSIsIm1haWFQcm9qZWN0U3VtbWFyeUFjY2VzcyIsImZhcXNBY2Nlc3MiLCJzaG93UHJvamVjdFN1bW1hcnkiLCJpc01haWFrZXIiLCJpc0hlYWRlckhvbWUiLCJhbGxvd2VkUmVjZW50Q29udGV4dFR5cGVzIiwicm9sZV9pZCIsIl91c2VSZWNlbnRDb250ZXh0cyIsImVuYWJsZWQiLCJsaW1pdCIsImZldGNoZWRSZWNlbnRDb250ZXh0cyIsImNvbnRleHRzIiwicmVjZW50Q29udGV4dHNMb2FkaW5nIiwibG9hZGluZyIsInJlY2VudENvbnRleHRzIiwiZmlsdGVyIiwiaGFzIiwiaGFzUGlubmVkQ29udGV4dCIsImlkIiwicHJvamVjdElkIiwiaXNSZWNlbnRDb250ZXh0c1N0ZXAiLCJpc0NvbnRleHRIb21lU3RlcCIsIl91c2VTdGF0ZSIsIl91c2VTdGF0ZTIiLCJfc2xpY2VkVG9BcnJheSIsInNlbGVjdGVkQ29udGV4dCIsInNldFNlbGVjdGVkQ29udGV4dCIsImFjdGl2ZUNvbnRleHQiLCJuYW1lIiwicHJvamVjdE5hbWUiLCJwaW5uZWRFbnRpdHlUeXBlIiwicmVhbExpc3RzQWdlbnRJZCIsInJlYWxMaXN0c0VudGl0eVR5cGUiLCJfdXNlRnJlcXVlbnRseVVzZWRBY3QiLCJhZ2VudEZ1YXMiLCJhY3Rpb25zIiwiZnVhc0xvYWRpbmciLCJfdXNlRnJlcXVlbnRseUFza2VkUXUiLCJhZ2VudEZhcXMiLCJmYXFzIiwiZmFxc0xvYWRpbmciLCJoYW5kbGVHZXRGcmVxdWVudGx5QXNrZWRRdWVzdGlvbnMiLCJmYXFzRmV0Y2hSZWYiLCJfZmFxc0ZldGNoUmVmJGN1cnJlbnQiLCJjdXJyZW50S2V5IiwiY29uY2F0IiwibGFzdEtleSIsImN1cnJlbnQiLCJhZ2VudElkIiwiZW50aXR5VHlwZSIsImZ1YXMiLCJmYXFzQXJlTG9hZGluZyIsImZ1YXNBcmVMb2FkaW5nIiwic2hvd1JlY2VudENvbnRleHRzQmxvY2siLCJsZW5ndGgiLCJzaG91bGRTaG93RmFxcyIsInNob3VsZFNob3dGdWFzIiwic2hvd1Byb2plY3RTdW1tYXJ5Q2FyZCIsImVudGl0eSIsInNob3dGQVFzIiwiaG9tZVNjcm9sbGFibGVMYXlvdXQiLCJzaG93RHluYW1pY1NlY3Rpb24iLCJjb250ZW50Q29udGFpbmVyUmVmIiwiX3VzZVN0YXRlMyIsIl91c2VTdGF0ZTQiLCJzaG93VG9wR3JhZGllbnQiLCJzZXRTaG93VG9wR3JhZGllbnQiLCJfdXNlU3RhdGU1IiwiX3VzZVN0YXRlNiIsInNob3dCb3R0b21HcmFkaWVudCIsInNldFNob3dCb3R0b21HcmFkaWVudCIsIl91c2VTdGF0ZTciLCJfdXNlU3RhdGU4IiwiaXNTY3JvbGxpbmciLCJzZXRJc1Njcm9sbGluZyIsInNjcm9sbFRpbWVvdXRSZWYiLCJncmVldGluZyIsImludHJvIiwiaW50cm9kdWN0aW9uIiwiQXJyYXkiLCJpc0FycmF5IiwiTWF0aCIsImZsb29yIiwicmFuZG9tIiwiaGFuZGxlU2VsZWN0UmVjZW50Q29udGV4dCIsIm9yZGVyIiwiX2NvbnRleHQkcGFyZW50cyIsIl9jb250ZXh0JHBhcmVudHMyIiwiX2NvbnRleHQkcGFyZW50czMiLCJfY29udGV4dCRwYXJlbnRzNCIsImFpQ2hhdENvbnRleHRTZWxlY3RlZCIsImNvbnRleHRJZCIsImNsaWVudElkIiwicGFyZW50cyIsImNsaWVudF9pZCIsInByb2plY3RfaWQiLCJjbGllbnROYW1lIiwiY2xpZW50X25hbWUiLCJwcm9qZWN0X25hbWUiLCJfb2JqZWN0U3ByZWFkIiwicmVxdWVzdEFuaW1hdGlvbkZyYW1lIiwiZG9jdW1lbnQiLCJkaXNwYXRjaEV2ZW50IiwiQ3VzdG9tRXZlbnQiLCJyZW5kZXJSZWNlbnRDb250ZXh0cyIsIm1hcCIsImtleSIsImluZGV4IiwidHJpbSIsImNoZWNrU2Nyb2xsIiwiY29udGFpbmVyIiwic2Nyb2xsVG9wIiwic2Nyb2xsSGVpZ2h0IiwiY2xpZW50SGVpZ2h0IiwiaXNTY3JvbGxhYmxlIiwiaXNBdFRvcCIsImlzQXRCb3R0b20iLCJjbGVhclRpbWVvdXQiLCJzZXRUaW1lb3V0IiwiYWRkRXZlbnRMaXN0ZW5lciIsInRpbWVvdXRJZCIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJyZW5kZXJIZWFkZXJDb250ZW50IiwiX2FnZW50JGNyZWF0ZWRfYnkiLCJfYWdlbnQkY3JlYXRlZF9ieTIiLCJlbW9qaSIsImNyZWF0ZWRfYnkiLCJpc19kZWxldGVkIiwiJG5vR2FwIiwiZmlyc3ROYW1lIiwiJHNob3ciLCIkaXNBZ2VudFZpZXciLCIkZmxvYXRpbmdDdXN0b21DZW50ZXIiLCIkZ2FwIiwiJG1heFdpZHRoIiwicHJvamVjdFN1bW1hcnkiLCIkZ3JvdyJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL21vbGVjdWxlcy9DaGF0QUlIb21lL0NoYXRBSUhvbWUudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIHJlYWN0L2Z1bmN0aW9uLWNvbXBvbmVudC1kZWZpbml0aW9uICovXG4vKiBlc2xpbnQtZGlzYWJsZSBqc3gtYTExeS9jbGljay1ldmVudHMtaGF2ZS1rZXktZXZlbnRzICovXG4vKiBlc2xpbnQtZGlzYWJsZSBqc3gtYTExeS9uby1zdGF0aWMtZWxlbWVudC1pbnRlcmFjdGlvbnMgKi9cbmltcG9ydCB7IHVzZUVmZmVjdCwgdXNlUmVmLCB1c2VTdGF0ZSwgdXNlQ2FsbGJhY2ssIHVzZU1lbW8gfSBmcm9tICdyZWFjdCdcblxuaW1wb3J0IHsgVG9vbHRpcCB9IGZyb20gJ0Bwcm9qZWN0Y29yL3Rvb2x0aXB2Mi9saWIvY29tcG9uZW50cy9Ub29sdGlwJ1xuaW1wb3J0IHsgTGlzdENoZWNrbGlzdCB9IGZyb20gJ0Bwcm9qZWN0Y29yL2ljb25zL2xpYi9jb21wb25lbnRzL0xpc3RDaGVja2xpc3QnXG5pbXBvcnQgeyB1c2VUIH0gZnJvbSAnLi4vLi4vLi4vaG9va3MvdXNlVCdcbmltcG9ydCB7IEVWRU5UUywgdXNlRXZlbnQgfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VFdmVudCdcblxuaW1wb3J0IHsgb3B0aW9ucyB9IGZyb20gJy4uL0NoYXRBSU1vZGFsL2NvbnN0YW50cydcblxuaW1wb3J0IHtcbiAgU0NDQUlIb21lQ29udGFpbmVyLFxuICBTQ0NBSUhvbWVDb250ZW50LFxuICBTQ0NBSUhvbWVDb250ZW50SW5uZXIsXG4gIFNDQ0FJSG9tZUdyYWRpZW50VG9wLFxuICBTQ0NBSUhvbWVHcmFkaWVudEJvdHRvbSxcbiAgU0NDQUlIb21lSGVhZGVyLFxuICBTQ0NBSUhvbWVHcmVldGluZyxcbiAgU0NDQUlIb21lQWdlbnRJbmZvQ29udGFpbmVyLFxuICBTQ0NBSUhvbWVBZ2VudEluZm8sXG4gIFNDQ0FJSG9tZVByb2plY3RTdW1tYXJ5LFxuICBTQ0NBSUhvbWVQcm9qZWN0U3VtbWFyeUNvbnRlbnQsXG4gIFNDQ0FJSG9tZVByb2plY3RTdW1tYXJ5VGl0bGUsXG4gIFNDQ0FJSG9tZVByb2plY3RTdW1tYXJ5RGVzY3JpcHRpb24sXG4gIFNDQ0FIV3JhcHBlclN1bW1hcnlQcm9qZWN0LFxuICBTQ0NBSUhvbWVJbnRyb2R1Y3Rpb24sXG4gIFNDQ0FJSG9tZUNyZWF0ZWRCeUNvbnRhaW5lcixcbiAgU0NDQUlIb21lQ3JlYXRlZEJ5VGV4dCxcbiAgU0NDQUlIb21lQ3JlYXRlZEJ5VGV4dE5hbWUsXG4gIFNDQ0FJSG9tZUljb25Db250YWluZXIsXG4gIFNDQ0FJSG9tZUxvZ29XcmFwcGVyLFxuICBTQ0NBSUhvbWVNYWlhSGVhZGVyU3RhY2ssXG4gIFNDQ0FJSG9tZVRpdGxlLFxuICBTQ0NBSUhvbWVTdWJ0aXRsZSxcbiAgU0NDQUlIb21lRHluYW1pY1NlY3Rpb24sXG4gIFNDQ0FJSG9tZVJlY2VudENvbnRleHRzLFxuICBTQ0NBSUhvbWVSZWNlbnRDb250ZXh0c0xpc3QsXG4gIFNDQ0FJSG9tZVJlY2VudENvbnRleHRQaWxsLFxuICBTQ0NBSUhvbWVSZWNlbnRDb250ZXh0UGlsbEljb24sXG4gIFNDQ0FJSG9tZVJlY2VudENvbnRleHRQaWxsVGV4dCxcbiAgU0NDQUlIb21lUmVjZW50Q29udGV4dFBpbGxTa2VsZXRvbixcbn0gZnJvbSAnLi9zdHlsZXMnXG5pbXBvcnQgeyB1c2VHbG9iYWxDb250ZXh0IH0gZnJvbSAnLi4vLi4vLi4vY29udGV4dC9nbG9iYWwtY29udGV4dCdcbmltcG9ydCB7IENPUlVzZXJSb2xlLCB1c2VVc2VyIH0gZnJvbSAnLi4vLi4vLi4vY29udGV4dC9jb3ItdXNlcidcbmltcG9ydCB7IHVzZVJlc2l6ZUxpc3RlbmVyIH0gZnJvbSAnLi4vLi4vLi4vaG9va3MvdXNlUmVzaXplJ1xuaW1wb3J0IHsgZ2V0Q29udGV4dE1lbnRpb25JY29uIH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvY29udGV4dE1lbnRpb25JY29ucydcbmltcG9ydCB7IHZhbGlkYXRlSXNNYWlhIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvdXRpbHMvdmFsaWRhdGVJc01haWEnXG5pbXBvcnQgeyBpc01haWFrZXJBZ2VudCB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL2FnZW50RGlzcGxheU5hbWUnXG5pbXBvcnQgeyBBZ2VudCB9IGZyb20gJy4uLy4uLy4uL3R5cGVzL2FnZW50J1xuaW1wb3J0IHsgQXR0YWNobWVudEZpbGUgfSBmcm9tICcuLi9DaGF0Rm9vdGVyL0NoYXRGb290ZXInXG5pbXBvcnQgeyBGcmVxdWVudGx5QXNrZWRRdWVzdGlvbnMgfSBmcm9tICcuLi8uLi9hdG9tcy9GcmVxdWVudGx5QXNrZWRRdWVzdGlvbnMnXG5pbXBvcnQgeyBGcmVxdWVudGx5VXNlZEFjdGlvbnMgfSBmcm9tICcuLi8uLi9hdG9tcy9GcmVxdWVudGx5VXNlZEFjdGlvbnMnXG5pbXBvcnQgeyB1c2VGcmVxdWVudGx5VXNlZEFjdGlvbnMgfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VGcmVxdWVudGx5VXNlZEFjdGlvbnMnXG5pbXBvcnQgeyB1c2VGcmVxdWVudGx5QXNrZWRRdWVzdGlvbnMgfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VGcmVxdWVudGx5QXNrZWRRdWVzdGlvbnMnXG5pbXBvcnQgeyB1c2VSZWNlbnRDb250ZXh0cyB9IGZyb20gJy4uLy4uLy4uL2hvb2tzL3VzZVJlY2VudENvbnRleHRzJ1xuaW1wb3J0IHR5cGUgeyBSZWNlbnRDb250ZXh0SXRlbSwgUmVjZW50Q29udGV4dFR5cGUgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9tYWlhL1JlY2VudENvbnRleHRzJ1xuaW1wb3J0IHsgTUFJQUlzb2xvZ28gfSBmcm9tICcuLi8uLi9hdG9tcy9pY29ucy9NQUlBSXNvbG9nbydcbmltcG9ydCB7IFRlbXBsYXRlR3JhZGllbnRJY29uIH0gZnJvbSAnLi4vLi4vYXRvbXMvaWNvbnMvVGVtcGxhdGVHcmFkaWVudEljb24nXG5pbXBvcnQgeyBDaGF0QUlIb21lTWFpYWtlciB9IGZyb20gJy4vQ2hhdEFJSG9tZU1haWFrZXInXG5cbnR5cGUgQ2hhdEFJSG9tZVByb3BzID0ge1xuICBvblN0YXJ0Q2hhdDogKFxuICAgIG1lc3NhZ2U6IHN0cmluZyxcbiAgICBhdHRhY2htZW50cz86IEF0dGFjaG1lbnRGaWxlW10gfCBudWxsLFxuICAgIGZhcUlkPzogc3RyaW5nLFxuICAgIGFnZW50U3VnZ2VzdGlvbklkPzogc3RyaW5nLFxuICAgIG1lbnRpb25zPzogbnVsbCxcbiAgICBmdWFJZD86IHN0cmluZ1xuICApID0+IHZvaWRcbiAgaGFuZGxlcnM6IFJlY29yZDxvcHRpb25zLCAoKSA9PiB2b2lkPlxuICBleHBhbmRlZD86IGJvb2xlYW5cbiAgZmxvYXRpbmc/OiBib29sZWFuXG59XG5cbmV4cG9ydCBlbnVtIEZyZXF1ZW50UXVlc3Rpb25zIHtcbiAgcmVudGFiaWxpZGFkX3Byb3llY3RvID0gJ3JlbnRhYmlsaWRhZF9wcm95ZWN0bycsXG4gIGF2YW5jZV9wcm95ZWN0byA9ICdhdmFuY2VfcHJveWVjdG8nLFxufVxuXG5jb25zdCBSRUNFTlRfQ09OVEVYVFNfTElNSVQgPSA5XG5jb25zdCBSRUNFTlRfQ09OVEVYVF9JQ09OX0NPTE9SID0gJyM0RDRENEQnXG5jb25zdCBSRUNFTlRfQ09OVEVYVF9TS0VMRVRPTl9LRVlTID0gW1xuICAncmVjZW50LWNvbnRleHQtc2tlbGV0b24tMScsXG4gICdyZWNlbnQtY29udGV4dC1za2VsZXRvbi0yJyxcbiAgJ3JlY2VudC1jb250ZXh0LXNrZWxldG9uLTMnLFxuXVxuXG5jb25zdCBSZWNlbnRDb250ZXh0UGlsbCA9ICh7XG4gIGNvbnRleHQsXG4gIGxhYmVsLFxuICBvbkNsaWNrLFxufToge1xuICBjb250ZXh0OiBSZWNlbnRDb250ZXh0SXRlbVxuICBsYWJlbDogc3RyaW5nXG4gIG9uQ2xpY2s6ICgpID0+IHZvaWRcbn0pID0+IHtcbiAgY29uc3QgdGV4dFJlZiA9IHVzZVJlZjxIVE1MU3BhbkVsZW1lbnQ+KG51bGwpXG4gIGNvbnN0IHsgc2hvd1Rvb2x0aXAgfSA9IHVzZVJlc2l6ZUxpc3RlbmVyKHRleHRSZWYsIFtsYWJlbF0pXG5cbiAgcmV0dXJuIChcbiAgICA8U0NDQUlIb21lUmVjZW50Q29udGV4dFBpbGwgdHlwZT1cImJ1dHRvblwiIG9uQ2xpY2s9e29uQ2xpY2t9PlxuICAgICAgPFNDQ0FJSG9tZVJlY2VudENvbnRleHRQaWxsSWNvbj5cbiAgICAgICAge2NvbnRleHQudHlwZSA9PT0gJ3Rhc2snID8gKFxuICAgICAgICAgIDxMaXN0Q2hlY2tsaXN0IGNvbG9yPXtSRUNFTlRfQ09OVEVYVF9JQ09OX0NPTE9SfSB3aWR0aD1cIjE0cHhcIiBoZWlnaHQ9XCIxNHB4XCIgLz5cbiAgICAgICAgKSA6IChcbiAgICAgICAgICBnZXRDb250ZXh0TWVudGlvbkljb24oY29udGV4dC50eXBlLCBSRUNFTlRfQ09OVEVYVF9JQ09OX0NPTE9SLCB1bmRlZmluZWQsIDE0KVxuICAgICAgICApfVxuICAgICAgPC9TQ0NBSUhvbWVSZWNlbnRDb250ZXh0UGlsbEljb24+XG4gICAgICA8U0NDQUlIb21lUmVjZW50Q29udGV4dFBpbGxUZXh0IHJlZj17dGV4dFJlZn0+XG4gICAgICAgIHtzaG93VG9vbHRpcCA/IChcbiAgICAgICAgICA8VG9vbHRpcCB0aXRsZT17bGFiZWx9PlxuICAgICAgICAgICAgPHNwYW4+e2xhYmVsfTwvc3Bhbj5cbiAgICAgICAgICA8L1Rvb2x0aXA+XG4gICAgICAgICkgOiAoXG4gICAgICAgICAgbGFiZWxcbiAgICAgICAgKX1cbiAgICAgIDwvU0NDQUlIb21lUmVjZW50Q29udGV4dFBpbGxUZXh0PlxuICAgIDwvU0NDQUlIb21lUmVjZW50Q29udGV4dFBpbGw+XG4gIClcbn1cblxuY29uc3QgcGFyc2VOdW1lcmljSWQgPSAodmFsdWU/OiBzdHJpbmcgfCBudW1iZXIgfCBudWxsKTogbnVtYmVyIHwgbnVsbCA9PiB7XG4gIGlmICh2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IHZhbHVlID09PSAnJykgcmV0dXJuIG51bGxcbiAgY29uc3QgcGFyc2VkID0gTnVtYmVyKHZhbHVlKVxuICByZXR1cm4gTnVtYmVyLmlzRmluaXRlKHBhcnNlZCkgPyBwYXJzZWQgOiBudWxsXG59XG5cbmNvbnN0IGdldEFsbG93ZWRSZWNlbnRDb250ZXh0VHlwZXMgPSAocm9sZUlkPzogQ09SVXNlclJvbGUpOiBTZXQ8UmVjZW50Q29udGV4dFR5cGU+ID0+IHtcbiAgaWYgKHJvbGVJZCA9PT0gQ09SVXNlclJvbGUuQ0xFVkVMIHx8IHJvbGVJZCA9PT0gQ09SVXNlclJvbGUuRElSRUNUT1IgfHwgcm9sZUlkID09PSBDT1JVc2VyUm9sZS5QUk9KRUNUX01BTkFHRVIpIHtcbiAgICByZXR1cm4gbmV3IFNldChbJ2NsaWVudCcsICdwcm9qZWN0JywgJ3Rhc2snXSlcbiAgfVxuICBpZiAocm9sZUlkID09PSBDT1JVc2VyUm9sZS5DT0xMQUJPUkFUT1IpIHtcbiAgICByZXR1cm4gbmV3IFNldChbJ3Rhc2snXSlcbiAgfVxuICByZXR1cm4gbmV3IFNldCgpXG59XG5cbmV4cG9ydCBjb25zdCBDaGF0QUlIb21lID0gKHsgaGFuZGxlcnMsIG9uU3RhcnRDaGF0LCBleHBhbmRlZCwgZmxvYXRpbmcgfTogQ2hhdEFJSG9tZVByb3BzKSA9PiB7XG4gIGNvbnN0IHsgdCwgaTE4biB9ID0gdXNlVCgpXG4gIGNvbnN0IGV2ZW50ID0gdXNlRXZlbnQoKVxuICBjb25zdCB1c2VyID0gdXNlVXNlcigpXG4gIGNvbnN0IHsgYWdlbnQsIHNlY3Rpb24sIGNsaWVudCwgcHJvamVjdCwgdGFzaywgY2hpcHNQcm9qZWN0LCBzZXRDbGllbnQsIHNldFByb2plY3QsIHNldFRhc2ssIHNldENoaXBzUHJvamVjdCB9ID1cbiAgICB1c2VHbG9iYWxDb250ZXh0KClcblxuICBjb25zdCBpc01BSUEgPSB2YWxpZGF0ZUlzTWFpYShhZ2VudCBhcyBBZ2VudClcbiAgY29uc3QgZmxvYXRpbmdDdXN0b21DZW50ZXIgPSAhIShmbG9hdGluZyAmJiBhZ2VudD8udHlwZSA9PT0gJ2N1c3RvbScpXG4gIGNvbnN0IGxhbmcgPSBpMThuLmxhbmd1YWdlID09PSAnYnInID8gJ3B0JyA6IGkxOG4ubGFuZ3VhZ2VcblxuICBjb25zdCBzdW1tYXJ5UHJvamVjdEFjY2VzcyA9XG4gICAgdHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiZcbiAgICAoU3RyaW5nKHdpbmRvdy5NQUlBX1BST0pFQ1RfU1VNTUFSWV9GRUFUVVJFX0FDQ0VTUykudG9Mb3dlckNhc2UoKSA9PT0gJ3RydWUnIHx8XG4gICAgICBTdHJpbmcod2luZG93Lm1haWFQcm9qZWN0U3VtbWFyeUFjY2VzcykudG9Mb3dlckNhc2UoKSA9PT0gJ3RydWUnKVxuICBjb25zdCBmYXFzQWNjZXNzID0gdHJ1ZVxuICBjb25zdCBzaG93UHJvamVjdFN1bW1hcnkgPSAhIShpc01BSUEgJiYgc3VtbWFyeVByb2plY3RBY2Nlc3MpXG4gIC8vIEVsIG9yY2hlc3RyYXRvciAodHlwZSA9PT0gJ29yY2hlc3RyYXRvcicpIG11ZXN0cmEgRkFRcy9GVUFzIGFncmVnYWRhcyBkZSBzdXMgc3ViYWdlbnRlcyxcbiAgLy8gYXPDrSBxdWUgTk8gc2UgdHJhdGEgY29tbyBtYWlha2VyIGFjw6EuXG4gIGNvbnN0IGlzTWFpYWtlciA9IGlzTWFpYWtlckFnZW50KGFnZW50KVxuICBjb25zdCBpc0hlYWRlckhvbWUgPSBpc01BSUEgJiYgc2VjdGlvbiA9PT0gJ2hlYWRlcicgJiYgYWdlbnQ/LnR5cGUgPT09ICdvcmNoZXN0cmF0b3InXG4gIGNvbnN0IGFsbG93ZWRSZWNlbnRDb250ZXh0VHlwZXMgPSB1c2VNZW1vKCgpID0+IGdldEFsbG93ZWRSZWNlbnRDb250ZXh0VHlwZXModXNlci5yb2xlX2lkKSwgW3VzZXIucm9sZV9pZF0pXG4gIGNvbnN0IHsgY29udGV4dHM6IGZldGNoZWRSZWNlbnRDb250ZXh0cywgbG9hZGluZzogcmVjZW50Q29udGV4dHNMb2FkaW5nIH0gPSB1c2VSZWNlbnRDb250ZXh0cyh7XG4gICAgZW5hYmxlZDogaXNIZWFkZXJIb21lLFxuICAgIGxpbWl0OiBSRUNFTlRfQ09OVEVYVFNfTElNSVQsXG4gIH0pXG4gIGNvbnN0IHJlY2VudENvbnRleHRzID0gdXNlTWVtbyhcbiAgICAoKSA9PiBmZXRjaGVkUmVjZW50Q29udGV4dHMuZmlsdGVyKGNvbnRleHQgPT4gYWxsb3dlZFJlY2VudENvbnRleHRUeXBlcy5oYXMoY29udGV4dC50eXBlKSksXG4gICAgW2ZldGNoZWRSZWNlbnRDb250ZXh0cywgYWxsb3dlZFJlY2VudENvbnRleHRUeXBlc11cbiAgKVxuXG4gIC8vIEhvbWUgZGVsIG9yY2hlc3RyYXRvciBlbiAyIHBhc29zOlxuICAvLyAgLSBQYXNvIDEgKHNpbiBjb250ZXh0byBwaW5lYWRvKTogc2UgbXVlc3RyYW4gc29sbyBsb3MgY29udGV4dG9zIHJlY2llbnRlcy5cbiAgLy8gIC0gUGFzbyAyIChjb250ZXh0byBwaW5lYWRvKTogc2UgbXVlc3RyYW4gbGFzIEZBUXMvYWNjaW9uZXMgcXVlIHJlZmVyZW5jaWFuIGVzZSBjb250ZXh0by5cbiAgLy8gVm9sdmVyIGFsIHBhc28gMSA9IHF1aXRhciBlbCBjaGlwIChsaW1waWEgZWwgY29udGV4dG8gZ2xvYmFsKS5cbiAgY29uc3QgaGFzUGlubmVkQ29udGV4dCA9ICEhKHRhc2s/LmlkIHx8IGNoaXBzUHJvamVjdD8ucHJvamVjdElkIHx8IGNsaWVudD8uaWQgfHwgcHJvamVjdD8uaWQpXG4gIGNvbnN0IGlzUmVjZW50Q29udGV4dHNTdGVwID0gaXNIZWFkZXJIb21lICYmICFoYXNQaW5uZWRDb250ZXh0XG4gIGNvbnN0IGlzQ29udGV4dEhvbWVTdGVwID0gaXNIZWFkZXJIb21lICYmIGhhc1Bpbm5lZENvbnRleHRcblxuICAvLyBDb250ZXh0byBhY3Rpdm8gcGFyYSBkZXJpdmFyIEZBUXMvYWNjaW9uZXMgKHBhc28gMikuIFByZWZlcmltb3MgZWwgcGlsbCBjbGlja2VhZG87XG4gIC8vIHNpIG5vLCBsbyByZWNvbnN0cnVpbW9zIGRlc2RlIGVsIGNvbnRleHRvIGdsb2JhbC5cbiAgY29uc3QgW3NlbGVjdGVkQ29udGV4dCwgc2V0U2VsZWN0ZWRDb250ZXh0XSA9IHVzZVN0YXRlPFJlY2VudENvbnRleHRJdGVtIHwgbnVsbD4obnVsbClcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIWhhc1Bpbm5lZENvbnRleHQpIHNldFNlbGVjdGVkQ29udGV4dChudWxsKVxuICB9LCBbaGFzUGlubmVkQ29udGV4dF0pXG5cbiAgY29uc3QgYWN0aXZlQ29udGV4dCA9IHVzZU1lbW88UmVjZW50Q29udGV4dEl0ZW0gfCBudWxsPigoKSA9PiB7XG4gICAgaWYgKHNlbGVjdGVkQ29udGV4dCkgcmV0dXJuIHNlbGVjdGVkQ29udGV4dFxuICAgIGlmICghaXNDb250ZXh0SG9tZVN0ZXApIHJldHVybiBudWxsXG4gICAgaWYgKHRhc2s/LmlkKSByZXR1cm4geyB0eXBlOiAndGFzaycsIGlkOiB0YXNrLmlkLCBuYW1lOiB0YXNrLm5hbWUgfVxuICAgIGlmIChjaGlwc1Byb2plY3Q/LnByb2plY3RJZCkgcmV0dXJuIHsgdHlwZTogJ3Byb2plY3QnLCBpZDogY2hpcHNQcm9qZWN0LnByb2plY3RJZCwgbmFtZTogY2hpcHNQcm9qZWN0LnByb2plY3ROYW1lIH1cbiAgICBpZiAoY2xpZW50Py5pZCkgcmV0dXJuIHsgdHlwZTogJ2NsaWVudCcsIGlkOiBjbGllbnQuaWQsIG5hbWU6IGNsaWVudC5uYW1lIH1cbiAgICByZXR1cm4gbnVsbFxuICB9LCBbXG4gICAgc2VsZWN0ZWRDb250ZXh0LFxuICAgIGlzQ29udGV4dEhvbWVTdGVwLFxuICAgIHRhc2s/LmlkLFxuICAgIHRhc2s/Lm5hbWUsXG4gICAgY2hpcHNQcm9qZWN0Py5wcm9qZWN0SWQsXG4gICAgY2hpcHNQcm9qZWN0Py5wcm9qZWN0TmFtZSxcbiAgICBjbGllbnQ/LmlkLFxuICAgIGNsaWVudD8ubmFtZSxcbiAgXSlcblxuICAvLyBlbnRpdHlfdHlwZSBkZWwgY29udGV4dG8gcGluZWFkbyAocHJvamVjdC9jbGllbnQvdGFzayksIHRvbWFkbyBkZWwgY29udGV4dG8gZ2xvYmFsLlxuICAvLyBBcGxpY2EgdGFudG8gYWwgYWJyaXIgTUFJQSBkZXNkZSB1bmEgc2VjY2nDs24gZXNwZWPDrWZpY2EgY29tbyBhbCBjYW1iaWFyIGRlIGNvbnZlcnNhY2nDs24uXG4gIGNvbnN0IHBpbm5lZEVudGl0eVR5cGUgPSB1c2VNZW1vPFJlY2VudENvbnRleHRUeXBlIHwgdW5kZWZpbmVkPigoKSA9PiB7XG4gICAgaWYgKHRhc2s/LmlkKSByZXR1cm4gJ3Rhc2snXG4gICAgaWYgKGNoaXBzUHJvamVjdD8ucHJvamVjdElkIHx8IHByb2plY3Q/LmlkKSByZXR1cm4gJ3Byb2plY3QnXG4gICAgaWYgKGNsaWVudD8uaWQpIHJldHVybiAnY2xpZW50J1xuICAgIHJldHVybiB1bmRlZmluZWRcbiAgfSwgW3Rhc2s/LmlkLCBjaGlwc1Byb2plY3Q/LnByb2plY3RJZCwgcHJvamVjdD8uaWQsIGNsaWVudD8uaWRdKVxuXG4gIC8vIEZBUXMvYWNjaW9uZXM6XG4gIC8vICAtIGhlYWRlci1ob21lIChvcmNoZXN0cmF0b3IpLCBwYXNvIDI6IGZpbHRyYWRhcyBwb3IgYGVudGl0eV90eXBlYCBkZWwgY29udGV4dG8gc2VsZWNjaW9uYWRvLlxuICAvLyAgLSBob21lcyBkZSBwcm95ZWN0by9jbGllbnRlL3RhcmVhIChzZWNjacOzbik6IGZpbHRyYWRhcyBwb3IgZWwgYGVudGl0eV90eXBlYCBkZWwgY29udGV4dG8gc2V0ZWFkby5cbiAgY29uc3QgcmVhbExpc3RzQWdlbnRJZCA9ICgoKSA9PiB7XG4gICAgaWYgKCFpc01BSUEgfHwgaXNNYWlha2VyKSByZXR1cm4gdW5kZWZpbmVkXG4gICAgaWYgKGlzSGVhZGVySG9tZSkgcmV0dXJuIGlzQ29udGV4dEhvbWVTdGVwID8gYWdlbnQ/LmlkIDogdW5kZWZpbmVkXG4gICAgcmV0dXJuIGFnZW50Py5pZFxuICB9KSgpXG4gIGNvbnN0IHJlYWxMaXN0c0VudGl0eVR5cGUgPSAoKCkgPT4ge1xuICAgIGlmICghaXNIZWFkZXJIb21lKSByZXR1cm4gcGlubmVkRW50aXR5VHlwZVxuICAgIHJldHVybiBpc0NvbnRleHRIb21lU3RlcCA/IGFjdGl2ZUNvbnRleHQ/LnR5cGUgOiB1bmRlZmluZWRcbiAgfSkoKVxuICBjb25zdCB7IGFjdGlvbnM6IGFnZW50RnVhcywgbG9hZGluZzogZnVhc0xvYWRpbmcgfSA9IHVzZUZyZXF1ZW50bHlVc2VkQWN0aW9ucyhcbiAgICByZWFsTGlzdHNBZ2VudElkLFxuICAgIHNlY3Rpb24sXG4gICAgcmVhbExpc3RzRW50aXR5VHlwZVxuICApXG4gIGNvbnN0IHtcbiAgICBmYXFzOiBhZ2VudEZhcXMsXG4gICAgbG9hZGluZzogZmFxc0xvYWRpbmcsXG4gICAgaGFuZGxlR2V0RnJlcXVlbnRseUFza2VkUXVlc3Rpb25zLFxuICB9ID0gdXNlRnJlcXVlbnRseUFza2VkUXVlc3Rpb25zKHJlYWxMaXN0c0FnZW50SWQsIGxhbmcsIHJlYWxMaXN0c0VudGl0eVR5cGUpXG4gIGNvbnN0IGZhcXNGZXRjaFJlZiA9IHVzZVJlZjx7IGFnZW50SWQ6IHN0cmluZzsgbGFuZzogc3RyaW5nOyBlbnRpdHlUeXBlPzogc3RyaW5nIH0gfCBudWxsPihudWxsKVxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghcmVhbExpc3RzQWdlbnRJZCB8fCBzZWN0aW9uID09PSAndGFzaycpIHJldHVyblxuICAgIGNvbnN0IGN1cnJlbnRLZXkgPSBgJHtyZWFsTGlzdHNBZ2VudElkfS0ke2xhbmd9LSR7cmVhbExpc3RzRW50aXR5VHlwZSA/PyAnYWxsJ31gXG4gICAgY29uc3QgbGFzdEtleSA9IGZhcXNGZXRjaFJlZi5jdXJyZW50XG4gICAgICA/IGAke2ZhcXNGZXRjaFJlZi5jdXJyZW50LmFnZW50SWR9LSR7ZmFxc0ZldGNoUmVmLmN1cnJlbnQubGFuZ30tJHtmYXFzRmV0Y2hSZWYuY3VycmVudC5lbnRpdHlUeXBlID8/ICdhbGwnfWBcbiAgICAgIDogbnVsbFxuICAgIGlmIChjdXJyZW50S2V5ICE9PSBsYXN0S2V5KSB7XG4gICAgICBmYXFzRmV0Y2hSZWYuY3VycmVudCA9IHsgYWdlbnRJZDogcmVhbExpc3RzQWdlbnRJZCwgbGFuZywgZW50aXR5VHlwZTogcmVhbExpc3RzRW50aXR5VHlwZSB9XG4gICAgICBoYW5kbGVHZXRGcmVxdWVudGx5QXNrZWRRdWVzdGlvbnMoeyBhZ2VudElkOiByZWFsTGlzdHNBZ2VudElkLCBsYW5nLCBlbnRpdHlUeXBlOiByZWFsTGlzdHNFbnRpdHlUeXBlIH0pXG4gICAgfVxuICB9LCBbcmVhbExpc3RzQWdlbnRJZCwgcmVhbExpc3RzRW50aXR5VHlwZSwgc2VjdGlvbiwgbGFuZywgaGFuZGxlR2V0RnJlcXVlbnRseUFza2VkUXVlc3Rpb25zXSlcblxuICBjb25zdCBmYXFzID0gYWdlbnRGYXFzXG4gIGNvbnN0IGZ1YXMgPSBhZ2VudEZ1YXNcbiAgY29uc3QgZmFxc0FyZUxvYWRpbmcgPSBmYXFzTG9hZGluZ1xuICBjb25zdCBmdWFzQXJlTG9hZGluZyA9IGZ1YXNMb2FkaW5nXG5cbiAgY29uc3Qgc2hvd1JlY2VudENvbnRleHRzQmxvY2sgPSBpc1JlY2VudENvbnRleHRzU3RlcCAmJiAocmVjZW50Q29udGV4dHNMb2FkaW5nIHx8IHJlY2VudENvbnRleHRzLmxlbmd0aCA+IDApXG4gIGNvbnN0IHNob3VsZFNob3dGYXFzID1cbiAgICAoaXNDb250ZXh0SG9tZVN0ZXAgfHwgKCFpc0hlYWRlckhvbWUgJiYgc2VjdGlvbiAhPT0gJ3Rhc2snICYmIGZhcXNBY2Nlc3MpKSAmJlxuICAgICFpc01haWFrZXIgJiZcbiAgICAoZmFxcy5sZW5ndGggPiAwIHx8IGZhcXNBcmVMb2FkaW5nKVxuICBjb25zdCBzaG91bGRTaG93RnVhcyA9ICFpc01haWFrZXIgJiYgKGlzQ29udGV4dEhvbWVTdGVwIHx8ICFpc0hlYWRlckhvbWUpICYmIChmdWFzLmxlbmd0aCA+IDAgfHwgZnVhc0FyZUxvYWRpbmcpXG5cbiAgY29uc3Qgc2hvd1Byb2plY3RTdW1tYXJ5Q2FyZCA9IHNob3dQcm9qZWN0U3VtbWFyeSAmJiBhZ2VudD8uZW50aXR5ID09PSAncHJvamVjdCdcbiAgY29uc3Qgc2hvd0ZBUXMgPSAhIShcbiAgICBzaG93UmVjZW50Q29udGV4dHNCbG9jayB8fFxuICAgIHNob3VsZFNob3dGYXFzIHx8XG4gICAgc2hvdWxkU2hvd0Z1YXMgfHxcbiAgICBzaG93UHJvamVjdFN1bW1hcnlDYXJkIHx8XG4gICAgaXNNYWlha2VyXG4gIClcbiAgY29uc3QgaG9tZVNjcm9sbGFibGVMYXlvdXQgPSBzaG93RkFRc1xuICBjb25zdCBzaG93RHluYW1pY1NlY3Rpb24gPSBzaG93UmVjZW50Q29udGV4dHNCbG9jayB8fCBzaG91bGRTaG93RmFxcyB8fCBzaG91bGRTaG93RnVhcyB8fCBpc01haWFrZXJcblxuICAvLyBMw7NnaWNhIGRlbCBzY3JvbGwgY29uIGdyYWRpZW50ZXNcbiAgY29uc3QgY29udGVudENvbnRhaW5lclJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbClcbiAgY29uc3QgW3Nob3dUb3BHcmFkaWVudCwgc2V0U2hvd1RvcEdyYWRpZW50XSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBbc2hvd0JvdHRvbUdyYWRpZW50LCBzZXRTaG93Qm90dG9tR3JhZGllbnRdID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IFtpc1Njcm9sbGluZywgc2V0SXNTY3JvbGxpbmddID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IHNjcm9sbFRpbWVvdXRSZWYgPSB1c2VSZWY8UmV0dXJuVHlwZTx0eXBlb2Ygc2V0VGltZW91dD4gfCBudWxsPihudWxsKVxuXG4gIC8vIFNhbHVkbyBmaWpvIHBvciB0aXBvIGRlIGNvbnRleHRvIChpMThuKS4gQ3VzdG9tIGFnZW50cyBzaWd1ZW4gdXNhbmRvIGFnZW50LmludHJvZHVjdGlvbi5cbiAgY29uc3QgZ3JlZXRpbmcgPSB1c2VNZW1vKCgpID0+IHtcbiAgICBpZiAoaXNNYWlha2VyKSByZXR1cm4gJydcbiAgICBpZiAoaXNSZWNlbnRDb250ZXh0c1N0ZXApIHJldHVybiAnJ1xuXG4gICAgaWYgKGlzTUFJQSAmJiBwaW5uZWRFbnRpdHlUeXBlKSB7XG4gICAgICByZXR1cm4gdChgaG9tZU1lbnUuY29udGV4dEhvbWUuY29udGV4dEdyZWV0aW5nLiR7cGlubmVkRW50aXR5VHlwZX1gKVxuICAgIH1cblxuICAgIGNvbnN0IGludHJvID0gYWdlbnQ/LmludHJvZHVjdGlvblxuICAgIGlmICghaW50cm8pIHJldHVybiAnJ1xuICAgIGlmIChBcnJheS5pc0FycmF5KGludHJvKSAmJiBpbnRyby5sZW5ndGggPiAwKSB7XG4gICAgICByZXR1cm4gaW50cm9bTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogaW50cm8ubGVuZ3RoKV1cbiAgICB9XG4gICAgcmV0dXJuIHR5cGVvZiBpbnRybyA9PT0gJ3N0cmluZycgPyBpbnRybyA6ICcnXG4gIH0sIFthZ2VudD8uaWQsIGFnZW50Py5pbnRyb2R1Y3Rpb24sIGlzTWFpYWtlciwgaXNNQUlBLCBwaW5uZWRFbnRpdHlUeXBlLCBpc1JlY2VudENvbnRleHRzU3RlcCwgdF0pXG5cbiAgY29uc3QgaGFuZGxlU2VsZWN0UmVjZW50Q29udGV4dCA9IHVzZUNhbGxiYWNrKFxuICAgIChjb250ZXh0OiBSZWNlbnRDb250ZXh0SXRlbSwgb3JkZXI6IG51bWJlcikgPT4ge1xuICAgICAgZXZlbnQoRVZFTlRTLmFpQ2hhdENvbnRleHRTZWxlY3RlZCwgeyBvcmRlciwgdHlwZTogY29udGV4dC50eXBlIH0pXG5cbiAgICAgIGNvbnN0IGNvbnRleHRJZCA9IHBhcnNlTnVtZXJpY0lkKGNvbnRleHQuaWQpXG4gICAgICBjb25zdCBjbGllbnRJZCA9IHBhcnNlTnVtZXJpY0lkKGNvbnRleHQucGFyZW50cz8uY2xpZW50X2lkKVxuICAgICAgY29uc3QgcHJvamVjdElkID0gcGFyc2VOdW1lcmljSWQoY29udGV4dC5wYXJlbnRzPy5wcm9qZWN0X2lkKVxuICAgICAgY29uc3QgY2xpZW50TmFtZSA9IGNvbnRleHQucGFyZW50cz8uY2xpZW50X25hbWUgfHwgJydcbiAgICAgIGNvbnN0IHByb2plY3ROYW1lID0gY29udGV4dC5wYXJlbnRzPy5wcm9qZWN0X25hbWUgfHwgJydcblxuICAgICAgc2V0U2VsZWN0ZWRDb250ZXh0KGNvbnRleHQpXG4gICAgICBzZXRUYXNrKG51bGwpXG4gICAgICBzZXRQcm9qZWN0KG51bGwpXG4gICAgICBzZXRDbGllbnQ/LihudWxsKVxuICAgICAgc2V0Q2hpcHNQcm9qZWN0KG51bGwpXG5cbiAgICAgIGlmIChjb250ZXh0LnR5cGUgPT09ICdjbGllbnQnKSB7XG4gICAgICAgIGlmIChjb250ZXh0SWQgPT0gbnVsbCkgcmV0dXJuXG4gICAgICAgIHNldENsaWVudD8uKHsgaWQ6IGNvbnRleHRJZCwgbmFtZTogY29udGV4dC5uYW1lIH0pXG4gICAgICB9IGVsc2UgaWYgKGNvbnRleHQudHlwZSA9PT0gJ3Byb2plY3QnKSB7XG4gICAgICAgIGlmIChjb250ZXh0SWQgPT0gbnVsbCkgcmV0dXJuXG4gICAgICAgIHNldFByb2plY3Qoe1xuICAgICAgICAgIGlkOiBjb250ZXh0SWQsXG4gICAgICAgICAgbmFtZTogY29udGV4dC5uYW1lLFxuICAgICAgICAgIC4uLihjbGllbnRJZCAhPSBudWxsID8geyBjbGllbnRJZCB9IDoge30pLFxuICAgICAgICAgIC4uLihjbGllbnRJZCAhPSBudWxsID8geyBjbGllbnQ6IHsgaWQ6IGNsaWVudElkLCBuYW1lOiBjbGllbnROYW1lIH0gfSA6IHt9KSxcbiAgICAgICAgfSlcbiAgICAgICAgc2V0Q2hpcHNQcm9qZWN0KHtcbiAgICAgICAgICBwcm9qZWN0SWQ6IFN0cmluZyhjb250ZXh0SWQpLFxuICAgICAgICAgIHByb2plY3ROYW1lOiBjb250ZXh0Lm5hbWUsXG4gICAgICAgICAgY2xpZW50TmFtZSxcbiAgICAgICAgfSlcbiAgICAgIH0gZWxzZSBpZiAoY29udGV4dC50eXBlID09PSAndGFzaycpIHtcbiAgICAgICAgc2V0VGFzayh7XG4gICAgICAgICAgaWQ6IGNvbnRleHQuaWQsXG4gICAgICAgICAgbmFtZTogY29udGV4dC5uYW1lLFxuICAgICAgICAgIC4uLihwcm9qZWN0SWQgIT0gbnVsbCA/IHsgcHJvamVjdElkIH0gOiB7fSksXG4gICAgICAgICAgLi4uKGNsaWVudElkICE9IG51bGwgPyB7IGNsaWVudElkIH0gOiB7fSksXG4gICAgICAgIH0pXG4gICAgICAgIGlmIChjbGllbnRJZCAhPSBudWxsKSB7XG4gICAgICAgICAgc2V0Q2xpZW50Py4oeyBpZDogY2xpZW50SWQsIG5hbWU6IGNsaWVudE5hbWUgfSlcbiAgICAgICAgfVxuICAgICAgICBpZiAocHJvamVjdElkICE9IG51bGwpIHtcbiAgICAgICAgICBzZXRQcm9qZWN0KHtcbiAgICAgICAgICAgIGlkOiBwcm9qZWN0SWQsXG4gICAgICAgICAgICBuYW1lOiBwcm9qZWN0TmFtZSB8fCBgJHt0KCdob21lTWVudS5yZWNlbnRDb250ZXh0cy50eXBlcy5wcm9qZWN0Jyl9ICR7cHJvamVjdElkfWAsXG4gICAgICAgICAgICAuLi4oY2xpZW50SWQgIT0gbnVsbCA/IHsgY2xpZW50SWQgfSA6IHt9KSxcbiAgICAgICAgICAgIC4uLihjbGllbnRJZCAhPSBudWxsID8geyBjbGllbnQ6IHsgaWQ6IGNsaWVudElkLCBuYW1lOiBjbGllbnROYW1lIH0gfSA6IHt9KSxcbiAgICAgICAgICB9KVxuICAgICAgICAgIHNldENoaXBzUHJvamVjdCh7XG4gICAgICAgICAgICBwcm9qZWN0SWQ6IFN0cmluZyhwcm9qZWN0SWQpLFxuICAgICAgICAgICAgcHJvamVjdE5hbWU6IHByb2plY3ROYW1lIHx8IGAke3QoJ2hvbWVNZW51LnJlY2VudENvbnRleHRzLnR5cGVzLnByb2plY3QnKX0gJHtwcm9qZWN0SWR9YCxcbiAgICAgICAgICAgIGNsaWVudE5hbWUsXG4gICAgICAgICAgfSlcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgICBkb2N1bWVudC5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgnbWFpYS1pbnB1dC1yZWZvY3VzJykpXG4gICAgICB9KVxuICAgIH0sXG4gICAgW2V2ZW50LCBzZXRDaGlwc1Byb2plY3QsIHNldENsaWVudCwgc2V0UHJvamVjdCwgc2V0VGFzaywgdF1cbiAgKVxuXG4gIGNvbnN0IHJlbmRlclJlY2VudENvbnRleHRzID0gKCkgPT4ge1xuICAgIGlmICghaXNSZWNlbnRDb250ZXh0c1N0ZXApIHJldHVybiBudWxsXG5cbiAgICByZXR1cm4gKFxuICAgICAgPFNDQ0FJSG9tZVJlY2VudENvbnRleHRzPlxuICAgICAgICA8U0NDQUlIb21lUmVjZW50Q29udGV4dHNMaXN0PlxuICAgICAgICAgIHtyZWNlbnRDb250ZXh0c0xvYWRpbmcgJiZcbiAgICAgICAgICAgIFJFQ0VOVF9DT05URVhUX1NLRUxFVE9OX0tFWVMubWFwKGtleSA9PiA8U0NDQUlIb21lUmVjZW50Q29udGV4dFBpbGxTa2VsZXRvbiBrZXk9e2tleX0gLz4pfVxuICAgICAgICAgIHshcmVjZW50Q29udGV4dHNMb2FkaW5nICYmXG4gICAgICAgICAgICByZWNlbnRDb250ZXh0cy5tYXAoKGNvbnRleHQsIGluZGV4KSA9PiAoXG4gICAgICAgICAgICAgIDxSZWNlbnRDb250ZXh0UGlsbFxuICAgICAgICAgICAgICAgIGtleT17YCR7Y29udGV4dC50eXBlfS0ke2NvbnRleHQuaWR9YH1cbiAgICAgICAgICAgICAgICBjb250ZXh0PXtjb250ZXh0fVxuICAgICAgICAgICAgICAgIGxhYmVsPXtjb250ZXh0Lm5hbWUudHJpbSgpfVxuICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IGhhbmRsZVNlbGVjdFJlY2VudENvbnRleHQoY29udGV4dCwgaW5kZXggKyAxKX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICkpfVxuICAgICAgICA8L1NDQ0FJSG9tZVJlY2VudENvbnRleHRzTGlzdD5cbiAgICAgIDwvU0NDQUlIb21lUmVjZW50Q29udGV4dHM+XG4gICAgKVxuICB9XG5cbiAgY29uc3QgY2hlY2tTY3JvbGwgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgY29uc3QgY29udGFpbmVyID0gY29udGVudENvbnRhaW5lclJlZi5jdXJyZW50XG4gICAgaWYgKCFjb250YWluZXIgfHwgIWhvbWVTY3JvbGxhYmxlTGF5b3V0KSByZXR1cm5cblxuICAgIGNvbnN0IHsgc2Nyb2xsVG9wLCBzY3JvbGxIZWlnaHQsIGNsaWVudEhlaWdodCB9ID0gY29udGFpbmVyXG4gICAgY29uc3QgaXNTY3JvbGxhYmxlID0gc2Nyb2xsSGVpZ2h0ID4gY2xpZW50SGVpZ2h0XG4gICAgY29uc3QgaXNBdFRvcCA9IHNjcm9sbFRvcCA9PT0gMFxuICAgIGNvbnN0IGlzQXRCb3R0b20gPSBzY3JvbGxUb3AgKyBjbGllbnRIZWlnaHQgPj0gc2Nyb2xsSGVpZ2h0IC0gMVxuXG4gICAgc2V0U2hvd1RvcEdyYWRpZW50KGlzU2Nyb2xsYWJsZSAmJiAhaXNBdFRvcClcbiAgICBzZXRTaG93Qm90dG9tR3JhZGllbnQoaXNTY3JvbGxhYmxlICYmICFpc0F0Qm90dG9tKVxuICAgIHNldElzU2Nyb2xsaW5nKHRydWUpXG5cbiAgICBpZiAoc2Nyb2xsVGltZW91dFJlZi5jdXJyZW50KSB7XG4gICAgICBjbGVhclRpbWVvdXQoc2Nyb2xsVGltZW91dFJlZi5jdXJyZW50KVxuICAgIH1cblxuICAgIHNjcm9sbFRpbWVvdXRSZWYuY3VycmVudCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgc2V0SXNTY3JvbGxpbmcoZmFsc2UpXG4gICAgfSwgMTUwKVxuICB9LCBbaG9tZVNjcm9sbGFibGVMYXlvdXRdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFob21lU2Nyb2xsYWJsZUxheW91dCkge1xuICAgICAgc2V0U2hvd1RvcEdyYWRpZW50KGZhbHNlKVxuICAgICAgc2V0U2hvd0JvdHRvbUdyYWRpZW50KGZhbHNlKVxuICAgICAgcmV0dXJuIHVuZGVmaW5lZFxuICAgIH1cblxuICAgIGNvbnN0IGNvbnRhaW5lciA9IGNvbnRlbnRDb250YWluZXJSZWYuY3VycmVudFxuICAgIGlmICghY29udGFpbmVyKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkXG4gICAgfVxuXG4gICAgY2hlY2tTY3JvbGwoKVxuICAgIGNvbnRhaW5lci5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBjaGVja1Njcm9sbClcblxuICAgIGNvbnN0IHRpbWVvdXRJZCA9IHNldFRpbWVvdXQoY2hlY2tTY3JvbGwsIDEwMClcblxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBjb250YWluZXIucmVtb3ZlRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgY2hlY2tTY3JvbGwpXG4gICAgICBjbGVhclRpbWVvdXQodGltZW91dElkKVxuICAgICAgaWYgKHNjcm9sbFRpbWVvdXRSZWYuY3VycmVudCkge1xuICAgICAgICBjbGVhclRpbWVvdXQoc2Nyb2xsVGltZW91dFJlZi5jdXJyZW50KVxuICAgICAgfVxuICAgIH1cbiAgfSwgW2hvbWVTY3JvbGxhYmxlTGF5b3V0LCBjaGVja1Njcm9sbF0pXG5cbiAgY29uc3QgcmVuZGVySGVhZGVyQ29udGVudCA9ICgpID0+IHtcbiAgICBpZiAoIWlzTUFJQSkge1xuICAgICAgcmV0dXJuIChcbiAgICAgICAgPFNDQ0FJSG9tZUFnZW50SW5mb0NvbnRhaW5lcj5cbiAgICAgICAgICA8U0NDQUlIb21lQWdlbnRJbmZvPlxuICAgICAgICAgICAge2FnZW50Py5lbW9qaX0ge2FnZW50Py5uYW1lfVxuICAgICAgICAgIDwvU0NDQUlIb21lQWdlbnRJbmZvPlxuICAgICAgICAgIHthZ2VudD8uY3JlYXRlZF9ieSAmJiAhaXNNQUlBICYmIChcbiAgICAgICAgICAgIDxTQ0NBSUhvbWVDcmVhdGVkQnlDb250YWluZXI+XG4gICAgICAgICAgICAgIDxUb29sdGlwXG4gICAgICAgICAgICAgICAgdGl0bGU9e1xuICAgICAgICAgICAgICAgICAgYWdlbnQ/LmNyZWF0ZWRfYnk/LmlzX2RlbGV0ZWQgPyB0KCdob21lTWVudS5jcmVhdGVkQnlUb29sdGlwRGVsZXRlZCcpIDogdCgnaG9tZU1lbnUuY3JlYXRlZEJ5VG9vbHRpcCcpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPFNDQ0FJSG9tZUNyZWF0ZWRCeVRleHQ+XG4gICAgICAgICAgICAgICAgICB7dCgnaG9tZU1lbnUuY3JlYXRlZEJ5Jyl9eycgJ31cbiAgICAgICAgICAgICAgICAgIDxTQ0NBSUhvbWVDcmVhdGVkQnlUZXh0TmFtZT57YWdlbnQ/LmNyZWF0ZWRfYnk/Lm5hbWV9PC9TQ0NBSUhvbWVDcmVhdGVkQnlUZXh0TmFtZT5cbiAgICAgICAgICAgICAgICA8L1NDQ0FJSG9tZUNyZWF0ZWRCeVRleHQ+XG4gICAgICAgICAgICAgIDwvVG9vbHRpcD5cbiAgICAgICAgICAgIDwvU0NDQUlIb21lQ3JlYXRlZEJ5Q29udGFpbmVyPlxuICAgICAgICAgICl9XG4gICAgICAgIDwvU0NDQUlIb21lQWdlbnRJbmZvQ29udGFpbmVyPlxuICAgICAgKVxuICAgIH1cblxuICAgIHJldHVybiAoXG4gICAgICA8U0NDQUlIb21lTWFpYUhlYWRlclN0YWNrICRub0dhcD17IWlzUmVjZW50Q29udGV4dHNTdGVwICYmICFncmVldGluZ30+XG4gICAgICAgIDxTQ0NBSUhvbWVJY29uQ29udGFpbmVyPlxuICAgICAgICAgIDxTQ0NBSUhvbWVMb2dvV3JhcHBlcj5cbiAgICAgICAgICAgIDxNQUlBSXNvbG9nbyAvPlxuICAgICAgICAgIDwvU0NDQUlIb21lTG9nb1dyYXBwZXI+XG4gICAgICAgIDwvU0NDQUlIb21lSWNvbkNvbnRhaW5lcj5cbiAgICAgICAge2lzUmVjZW50Q29udGV4dHNTdGVwID8gKFxuICAgICAgICAgIDw+XG4gICAgICAgICAgICA8U0NDQUlIb21lVGl0bGU+e3QoJ2hvbWVNZW51LmNvbnRleHRIb21lLmdyZWV0aW5nJywgeyBuYW1lOiB1c2VyLmZpcnN0TmFtZSB9KX08L1NDQ0FJSG9tZVRpdGxlPlxuICAgICAgICAgICAgPFNDQ0FJSG9tZVN1YnRpdGxlPlxuICAgICAgICAgICAgICB7dChcbiAgICAgICAgICAgICAgICB1c2VyLnJvbGVfaWQgPT09IENPUlVzZXJSb2xlLkNPTExBQk9SQVRPUlxuICAgICAgICAgICAgICAgICAgPyAnaG9tZU1lbnUuY29udGV4dEhvbWUuc3VidGl0bGVDb2xsYWJvcmF0b3InXG4gICAgICAgICAgICAgICAgICA6ICdob21lTWVudS5jb250ZXh0SG9tZS5zdWJ0aXRsZSdcbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDwvU0NDQUlIb21lU3VidGl0bGU+XG4gICAgICAgICAgPC8+XG4gICAgICAgICkgOiAoXG4gICAgICAgICAgZ3JlZXRpbmcgJiYgPFNDQ0FJSG9tZUdyZWV0aW5nPntncmVldGluZ308L1NDQ0FJSG9tZUdyZWV0aW5nPlxuICAgICAgICApfVxuICAgICAgPC9TQ0NBSUhvbWVNYWlhSGVhZGVyU3RhY2s+XG4gICAgKVxuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8U0NDQUlIb21lQ29udGFpbmVyIHNob3dGQVFzPXtzaG93RkFRc30+XG4gICAgICB7aG9tZVNjcm9sbGFibGVMYXlvdXQgJiYgPFNDQ0FJSG9tZUdyYWRpZW50VG9wICRzaG93PXtzaG93VG9wR3JhZGllbnR9IC8+fVxuICAgICAgPFNDQ0FJSG9tZUNvbnRlbnRcbiAgICAgICAgcmVmPXtjb250ZW50Q29udGFpbmVyUmVmfVxuICAgICAgICBzaG93RkFRcz17aG9tZVNjcm9sbGFibGVMYXlvdXR9XG4gICAgICAgICRpc0FnZW50Vmlldz17IWlzTUFJQX1cbiAgICAgICAgJGZsb2F0aW5nQ3VzdG9tQ2VudGVyPXtmbG9hdGluZ0N1c3RvbUNlbnRlcn1cbiAgICAgID5cbiAgICAgICAgPFNDQ0FJSG9tZUNvbnRlbnRJbm5lclxuICAgICAgICAgIHNob3dGQVFzPXtob21lU2Nyb2xsYWJsZUxheW91dH1cbiAgICAgICAgICAkaXNBZ2VudFZpZXc9eyFpc01BSUF9XG4gICAgICAgICAgJGZsb2F0aW5nQ3VzdG9tQ2VudGVyPXtmbG9hdGluZ0N1c3RvbUNlbnRlcn1cbiAgICAgICAgPlxuICAgICAgICAgIDxTQ0NBSUhvbWVIZWFkZXJcbiAgICAgICAgICAgICRnYXA9e2lzTUFJQSAmJiBzZWN0aW9uICE9PSAncHJvamVjdCcgPyAnOHB4JyA6ICcyMHB4J31cbiAgICAgICAgICAgICRtYXhXaWR0aD17aXNNQUlBID8gJzEwMCUnIDogJzM4MHB4J31cbiAgICAgICAgICAgICRpc0FnZW50Vmlldz17IWlzTUFJQX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7cmVuZGVySGVhZGVyQ29udGVudCgpfVxuXG4gICAgICAgICAgICB7c2VjdGlvbiAhPT0gJ3Byb2plY3QnICYmIChcbiAgICAgICAgICAgICAgPFNDQ0FJSG9tZUludHJvZHVjdGlvbiBleHBhbmRlZD17ZXhwYW5kZWR9PnshaXNNQUlBICYmIGFnZW50Py5pbnRyb2R1Y3Rpb259PC9TQ0NBSUhvbWVJbnRyb2R1Y3Rpb24+XG4gICAgICAgICAgICApfVxuICAgICAgICAgIDwvU0NDQUlIb21lSGVhZGVyPlxuICAgICAgICAgIHtzaG93UHJvamVjdFN1bW1hcnlDYXJkICYmIChcbiAgICAgICAgICAgIDxTQ0NBSFdyYXBwZXJTdW1tYXJ5UHJvamVjdCBvbkNsaWNrPXtoYW5kbGVycy5wcm9qZWN0U3VtbWFyeX0+XG4gICAgICAgICAgICAgIDxTQ0NBSUhvbWVQcm9qZWN0U3VtbWFyeT5cbiAgICAgICAgICAgICAgICA8VGVtcGxhdGVHcmFkaWVudEljb24gaGVpZ2h0PXsyNH0gd2lkdGg9ezI0fSAvPlxuICAgICAgICAgICAgICA8L1NDQ0FJSG9tZVByb2plY3RTdW1tYXJ5PlxuICAgICAgICAgICAgICA8U0NDQUlIb21lUHJvamVjdFN1bW1hcnlDb250ZW50PlxuICAgICAgICAgICAgICAgIDxTQ0NBSUhvbWVQcm9qZWN0U3VtbWFyeVRpdGxlPnt0KCdob21lTWVudS5wcm9qZWN0U3VtbWFyeS50aXRsZScpfTwvU0NDQUlIb21lUHJvamVjdFN1bW1hcnlUaXRsZT5cbiAgICAgICAgICAgICAgICA8U0NDQUlIb21lUHJvamVjdFN1bW1hcnlEZXNjcmlwdGlvbj5cbiAgICAgICAgICAgICAgICAgIHt0KCdob21lTWVudS5wcm9qZWN0U3VtbWFyeS5kZXNjcmlwdGlvbicpfVxuICAgICAgICAgICAgICAgIDwvU0NDQUlIb21lUHJvamVjdFN1bW1hcnlEZXNjcmlwdGlvbj5cbiAgICAgICAgICAgICAgPC9TQ0NBSUhvbWVQcm9qZWN0U3VtbWFyeUNvbnRlbnQ+XG4gICAgICAgICAgICA8L1NDQ0FIV3JhcHBlclN1bW1hcnlQcm9qZWN0PlxuICAgICAgICAgICl9XG4gICAgICAgICAge3Nob3dEeW5hbWljU2VjdGlvbiAmJiAoXG4gICAgICAgICAgICA8U0NDQUlIb21lRHluYW1pY1NlY3Rpb24gJGdyb3c9e2lzTWFpYWtlcn0+XG4gICAgICAgICAgICAgIHtyZW5kZXJSZWNlbnRDb250ZXh0cygpfVxuICAgICAgICAgICAgICB7c2hvdWxkU2hvd0ZhcXMgJiYgKFxuICAgICAgICAgICAgICAgIDxGcmVxdWVudGx5QXNrZWRRdWVzdGlvbnNcbiAgICAgICAgICAgICAgICAgIG9uU3RhcnRDaGF0PXtvblN0YXJ0Q2hhdH1cbiAgICAgICAgICAgICAgICAgIHNob3dGQVFzPXtzaG93RkFRc31cbiAgICAgICAgICAgICAgICAgIHNob3dQcm9qZWN0U3VtbWFyeT17c2hvd1Byb2plY3RTdW1tYXJ5fVxuICAgICAgICAgICAgICAgICAgYWdlbnRJZD17YWdlbnQ/LmlkfVxuICAgICAgICAgICAgICAgICAgbGFuZz17bGFuZ31cbiAgICAgICAgICAgICAgICAgIGlzU2Nyb2xsaW5nPXtpc1Njcm9sbGluZ31cbiAgICAgICAgICAgICAgICAgIGZhcXM9e2ZhcXN9XG4gICAgICAgICAgICAgICAgICBsb2FkaW5nPXtmYXFzQXJlTG9hZGluZ31cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICB7c2hvdWxkU2hvd0Z1YXMgJiYgKFxuICAgICAgICAgICAgICAgIDxGcmVxdWVudGx5VXNlZEFjdGlvbnNcbiAgICAgICAgICAgICAgICAgIG9uU3RhcnRDaGF0PXtvblN0YXJ0Q2hhdH1cbiAgICAgICAgICAgICAgICAgIGFnZW50SWQ9e2FnZW50Py5pZH1cbiAgICAgICAgICAgICAgICAgIGlzU2Nyb2xsaW5nPXtpc1Njcm9sbGluZ31cbiAgICAgICAgICAgICAgICAgIGFjdGlvbnM9e2Z1YXN9XG4gICAgICAgICAgICAgICAgICBsb2FkaW5nPXtmdWFzQXJlTG9hZGluZ31cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICB7aXNNYWlha2VyID8gPENoYXRBSUhvbWVNYWlha2VyIG9uU3RhcnRDaGF0PXtvblN0YXJ0Q2hhdH0gLz4gOiBudWxsfVxuICAgICAgICAgICAgPC9TQ0NBSUhvbWVEeW5hbWljU2VjdGlvbj5cbiAgICAgICAgICApfVxuICAgICAgICA8L1NDQ0FJSG9tZUNvbnRlbnRJbm5lcj5cbiAgICAgIDwvU0NDQUlIb21lQ29udGVudD5cbiAgICAgIHtob21lU2Nyb2xsYWJsZUxheW91dCAmJiA8U0NDQUlIb21lR3JhZGllbnRCb3R0b20gJHNob3c9e3Nob3dCb3R0b21HcmFkaWVudH0gLz59XG4gICAgPC9TQ0NBSUhvbWVDb250YWluZXI+XG4gIClcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBLFNBQVNBLFNBQVMsRUFBRUMsTUFBTSxFQUFFQyxRQUFRLEVBQUVDLFdBQVcsRUFBRUMsT0FBTyxRQUFRLE9BQU87QUFFekUsU0FBU0MsT0FBTyxRQUFRLDhDQUE4QztBQUN0RSxTQUFTQyxhQUFhLFFBQVEsZ0RBQWdEO0FBQzlFLFNBQVNDLElBQUksUUFBUSxxQkFBcUI7QUFDMUMsU0FBU0MsTUFBTSxFQUFFQyxRQUFRLFFBQVEseUJBQXlCO0FBSTFELFNBQ0VDLGtCQUFrQixFQUNsQkMsZ0JBQWdCLEVBQ2hCQyxxQkFBcUIsRUFDckJDLG9CQUFvQixFQUNwQkMsdUJBQXVCLEVBQ3ZCQyxlQUFlLEVBQ2ZDLGlCQUFpQixFQUNqQkMsMkJBQTJCLEVBQzNCQyxrQkFBa0IsRUFDbEJDLHVCQUF1QixFQUN2QkMsOEJBQThCLEVBQzlCQyw0QkFBNEIsRUFDNUJDLGtDQUFrQyxFQUNsQ0MsMEJBQTBCLEVBQzFCQyxxQkFBcUIsRUFDckJDLDJCQUEyQixFQUMzQkMsc0JBQXNCLEVBQ3RCQywwQkFBMEIsRUFDMUJDLHNCQUFzQixFQUN0QkMsb0JBQW9CLEVBQ3BCQyx3QkFBd0IsRUFDeEJDLGNBQWMsRUFDZEMsaUJBQWlCLEVBQ2pCQyx1QkFBdUIsRUFDdkJDLHVCQUF1QixFQUN2QkMsMkJBQTJCLEVBQzNCQywwQkFBMEIsRUFD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
|