@projectcor/maia-components 2.11.32-2 → 2.11.32-3
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/FeedbackButton/FeedbackButton.styles.js +2 -2
- package/lib/components/atoms/icons/MaiaChatLayoutMenuIcon.js +33 -0
- package/lib/components/atoms/icons/index.js +2 -2
- package/lib/components/molecules/ChatAIClientSelector/ChatAIClientSelector.js +10 -41
- package/lib/components/molecules/ChatAIContent/ChatAIContent.js +7 -8
- package/lib/components/molecules/ChatAIHistory/ChatAIHistory.js +3 -16
- package/lib/components/molecules/ChatAIHome/ChatAIHome.js +6 -2
- package/lib/components/molecules/ChatAIHome/styles.js +14 -7
- package/lib/components/molecules/ChatAIMessages/ChatAIMessages.js +178 -165
- package/lib/components/molecules/ChatAIModal/ChatAIModal.js +254 -347
- package/lib/components/molecules/ChatAIModal/ChatAIModal.styles.js +28 -15
- package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeader.js +81 -16
- package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeader.styles.js +17 -2
- package/lib/components/molecules/ChatAIModal/floatingPanelMotion/FloatingPanelMotion.js +16 -0
- package/lib/components/molecules/ChatAIModal/floatingPanelMotion/FloatingPanelMotion.styles.js +12 -0
- package/lib/components/molecules/ChatAIModal/floatingPanelMotion/constants.js +13 -0
- package/lib/components/molecules/ChatAIModal/floatingPanelMotion/index.js +3 -0
- package/lib/components/molecules/ChatAIModal/floatingPanelMotion/useFloatingPanelDragTilt.js +57 -0
- package/lib/components/molecules/ChatAIModal/layout.js +35 -0
- package/lib/components/molecules/ChatAIMyAgents/ChatAIMyAgents.js +9 -10
- package/lib/components/molecules/ChatAIProjectSelector/ChatAIProjectSelector.js +6 -37
- package/lib/components/molecules/Sidebar/Sidebar.js +323 -269
- package/lib/components/molecules/Sidebar/Sidebar.layout.styles.js +22 -17
- package/lib/components/molecules/Sidebar/Sidebar.styles.js +37 -54
- package/lib/dev/Providers.js +2 -2
- package/lib/hooks/useChatManager/useChatManager.js +121 -65
- package/lib/hooks/useChats/useChats.js +4 -12
- package/lib/hooks/useOrchestratorStream/useOrchestratorStream.js +145 -73
- package/lib/hooks/useProjectSearch.js +11 -4
- package/lib/hooks/useSmoothStreamText/index.js +2 -0
- package/lib/hooks/useSmoothStreamText/useSmoothStreamText.js +189 -0
- package/lib/hooks/useStreamingMessage/index.js +3 -0
- package/lib/hooks/useStreamingMessage/streamingStore.js +69 -0
- package/lib/hooks/useStreamingMessage/useStreamingMessage.js +22 -0
- package/lib/lang/br/index.js +6 -11
- package/lib/lang/en/index.js +6 -11
- package/lib/lang/es/index.js +6 -11
- package/lib/lang/fr/index.js +6 -11
- package/lib/mocks/mockChats.js +395 -0
- package/lib/mocks/mockedUser.js +169 -0
- package/lib/services/maia/Chats/getChatsByUserId.js +8 -14
- package/lib/services/maia/Chats/index.js +1 -7
- package/lib/services/maia/Orchestrator/orchestrator.js +6 -4
- package/lib/services/maia/RecentProjects/getRecentProjects.js +2 -2
- package/lib/services/maia/client.js +9 -44
- package/lib/services/query/projectSearchByValueQuery.js +2 -2
- package/lib/store/chatsStore.types.js +2 -10
- package/lib/store/useChatsStore.js +37 -75
- package/lib/types/Chat.js +1 -3
- package/lib/types/Project.js +1 -1
- package/package.json +1 -1
- package/lib/components/atoms/icons/ChatConversation.js +0 -40
- package/lib/components/molecules/Sidebar/SidebarChats.styles.js +0 -73
- package/lib/components/molecules/Sidebar/SidebarChatsSection.js +0 -69
- package/lib/components/molecules/Sidebar/SidebarChatsSectionModal.js +0 -150
- package/lib/components/molecules/Sidebar/SidebarHistoryChat.js +0 -238
- package/lib/components/molecules/Sidebar/sidebarChats.helpers.js +0 -70
- package/lib/components/molecules/Sidebar/sidebarChats.types.js +0 -14
- package/lib/dev/fixtures/devUser.js +0 -173
- package/lib/dev/fixtures/mockedUser.js +0 -169
- package/lib/services/maia/Chats/getChatMessagesV2.js +0 -114
- package/lib/services/maia/Chats/getSessionByAgent.js +0 -66
- package/lib/services/maia/Chats/getSessionsGroupedV2.js +0 -70
|
@@ -1,25 +1,32 @@
|
|
|
1
|
-
import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
|
2
1
|
import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
|
|
3
2
|
import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
|
|
3
|
+
import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
|
4
|
+
import _regeneratorRuntime from "@babel/runtime/regenerator";
|
|
4
5
|
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; }
|
|
5
6
|
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; }
|
|
6
|
-
import _regeneratorRuntime from "@babel/runtime/regenerator";
|
|
7
7
|
/* eslint-disable no-param-reassign */
|
|
8
8
|
/* eslint-disable @typescript-eslint/no-shadow */
|
|
9
9
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
10
10
|
/* eslint-disable no-nested-ternary */
|
|
11
11
|
/* eslint-disable jsx-a11y/click-events-have-key-events */
|
|
12
12
|
/* eslint-disable jsx-a11y/no-static-element-interactions */
|
|
13
|
-
import { useEffect,
|
|
14
|
-
import { AnimatePresence } from 'framer-motion';
|
|
13
|
+
import { useEffect, useRef, useState } from 'react';
|
|
15
14
|
import { ChevronDoubleLeft } from '@projectcor/icons/lib/components/ChevronDoubleLeft';
|
|
15
|
+
import { CUButton } from '@projectcor/button/lib/components/CUButton';
|
|
16
|
+
import { MenuDots } from '@projectcor/icons/lib/components/MenuDots';
|
|
17
|
+
import { Pencil } from '@projectcor/icons/lib/components/Pencil';
|
|
18
|
+
import { Trash } from '@projectcor/icons/lib/components/Trash';
|
|
16
19
|
import { Tooltip } from '@projectcor/tooltipv2/lib/components/Tooltip';
|
|
17
20
|
import { EmptyHistoryIcon } from '../../atoms/icons/EmptyHistory';
|
|
21
|
+
import { useResizeListener } from '../../../hooks/useResize';
|
|
18
22
|
import { useChats } from '../../../hooks/useChats';
|
|
19
23
|
import { Loader } from '../../atoms/Loader';
|
|
20
|
-
import { ErrorState, MaiaStoreIcon, MyAgentsNavIcon, NewChat } from '../../atoms/icons';
|
|
24
|
+
import { ErrorState, MAIAIcon, MaiaStoreIcon, MyAgentsNavIcon, NewChat } from '../../atoms/icons';
|
|
21
25
|
import { EVENTS, useEvent } from '../../../hooks/useEvent';
|
|
22
26
|
import { useT } from '../../../hooks/useT';
|
|
27
|
+
import { OptionItem } from '../../atoms/CardMenu/CardMenu';
|
|
28
|
+
import { EditQuestionModal } from '../../organisms/EditQuestionModal';
|
|
29
|
+
import { DeleteQuestionModal } from '../../organisms/DeleteQuestionModal';
|
|
23
30
|
import { ErrorIcon } from '../../atoms/icons/ErrorIcon';
|
|
24
31
|
import { useUser } from '../../../context/cor-user';
|
|
25
32
|
import { OnboardingModalButton } from '../../atoms/OnboardingModalButton';
|
|
@@ -27,62 +34,190 @@ import { FeedbackButton } from '../../atoms/FeedbackButton';
|
|
|
27
34
|
import { useGlobalContext } from '../../../context/global-context';
|
|
28
35
|
import { fetchMaia } from '../../../services/maia/client';
|
|
29
36
|
import { mapCORLang } from '../../../lang/utils';
|
|
30
|
-
import { SCSWrapperCollapsedButton, SCSWrapperNewChatIcon } from './Sidebar.styles';
|
|
31
|
-
import { SCSSidebarRoot, SCSSidebarToolbar, SCSSidebarBody, SCSSidebarOpenPanel, SCSSidebarAgentsBlock, SCSSidebarAgentsActions, SCSSidebarMaiakerNavButton, SCSSidebarMaiakerNavLabel, SCSSidebarChatsScroll, SCSSidebarErrorStateColumn, SCSSidebarErrorStateTop, SCSSidebarErrorBanner, SCSSidebarErrorBannerIconWrap, SCSSidebarErrorBannerMessage, SCSSidebarLoadingArea, SCSSidebarLoadMoreRow, SCSSidebarEmptyChats, SCSSidebarEmptyChatsText, SCSSidebarChatsFooter, SCSSidebarFooterActions } from './Sidebar.layout.styles';
|
|
32
|
-
import { SCSSidebarSectionModalBackdropMotion } from './SidebarChats.styles';
|
|
33
|
-
import { SidebarChatsSection } from './SidebarChatsSection';
|
|
34
|
-
import { SidebarChatsSectionModal } from './SidebarChatsSectionModal';
|
|
35
|
-
import { buildSidebarSections, groupChatsBySidebarSection } from './sidebarChats.helpers';
|
|
36
|
-
import { SIDEBAR_SECTION_TRANSLATION_KEYS } from './sidebarChats.types';
|
|
37
|
-
import { getChatsStoreState } from '../../../store/useChatsStore';
|
|
38
|
-
import { SECTION_MODAL_SESSIONS_PAGE_LIMIT, SIDEBAR_SESSIONS_PAGE_LIMIT } from '../../../store/chatsStore.types';
|
|
37
|
+
import { SCLHCWrapper, SCLHCWrapperAgent, SCLHCWrapperAgentText, SCLHCWrapperButtonActions, SCLHCWrapperContent, SCLHCWrapperTitle, SCSWrapperCollapsedButton, SCSWrapperNewChatIcon } from './Sidebar.styles';
|
|
38
|
+
import { SCSSidebarRoot, SCSSidebarToolbar, SCSSidebarBody, SCSSidebarOpenPanel, SCSSidebarAgentsBlock, SCSSidebarAgentsHeading, SCSSidebarAgentsHeadingText, SCSSidebarAgentsActions, SCSSidebarMaiakerNavButton, SCSSidebarMaiakerNavLabel, SCSSidebarConversationsHeading, SCSSidebarChatsScroll, SCSSidebarErrorStateColumn, SCSSidebarErrorStateTop, SCSSidebarErrorBanner, SCSSidebarErrorBannerIconWrap, SCSSidebarErrorBannerMessage, SCSSidebarLoadingArea, SCSSidebarLoadMoreRow, SCSSidebarEmptyChats, SCSSidebarEmptyChatsText, SCSSidebarChatsFooter, SCSSidebarFooterActions } from './Sidebar.layout.styles';
|
|
39
39
|
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
40
|
+
var actions = {
|
|
41
|
+
edit: function edit(props) {
|
|
42
|
+
return /*#__PURE__*/_jsx(EditQuestionModal, _objectSpread({}, props));
|
|
43
|
+
},
|
|
44
|
+
"delete": function _delete(props) {
|
|
45
|
+
return /*#__PURE__*/_jsx(DeleteQuestionModal, _objectSpread({}, props));
|
|
46
|
+
}
|
|
47
|
+
};
|
|
48
|
+
|
|
49
|
+
/** Abrevia "especialista"/"especialist" → "Esp." (ES/PT) y "specialist" → "Spec." (EN) en el nombre del agente. */
|
|
50
|
+
function abbreviateSpecialistInAgentName(agentName) {
|
|
51
|
+
if (!agentName || typeof agentName !== 'string') return agentName;
|
|
52
|
+
return agentName.replace(/\b(especialista|especialist)\b/gi, 'Esp.').replace(/\bspecialist\b/gi, 'Spec.');
|
|
53
|
+
}
|
|
54
|
+
var ListHistoryChat = function ListHistoryChat(_ref) {
|
|
55
|
+
var chat = _ref.chat,
|
|
56
|
+
_onClick = _ref.onClick,
|
|
57
|
+
isModalOpen = _ref.isModalOpen,
|
|
58
|
+
onOpenModal = _ref.onOpenModal,
|
|
59
|
+
onCloseModal = _ref.onCloseModal,
|
|
60
|
+
handlers = _ref.handlers,
|
|
61
|
+
isSelected = _ref.isSelected;
|
|
62
|
+
var textRef = useRef(null);
|
|
63
|
+
var agentRef = useRef(null);
|
|
64
|
+
var _useResizeListener = useResizeListener(textRef, [chat.title]),
|
|
65
|
+
showTooltip = _useResizeListener.showTooltip;
|
|
66
|
+
var _useResizeListener2 = useResizeListener(agentRef, [chat.agent]),
|
|
67
|
+
showTooltipAgent = _useResizeListener2.showTooltip;
|
|
57
68
|
var _useT = useT(),
|
|
58
|
-
t = _useT.t
|
|
59
|
-
|
|
60
|
-
var _useState = useState(true),
|
|
69
|
+
t = _useT.t;
|
|
70
|
+
var _useState = useState(null),
|
|
61
71
|
_useState2 = _slicedToArray(_useState, 2),
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
var
|
|
72
|
+
action = _useState2[0],
|
|
73
|
+
setAction = _useState2[1];
|
|
74
|
+
var menuItems = [{
|
|
75
|
+
label: t('history.menu.rename'),
|
|
76
|
+
onClickItem: function onClickItem(chatId) {
|
|
77
|
+
setAction('edit');
|
|
78
|
+
onOpenModal(chatId);
|
|
79
|
+
},
|
|
80
|
+
Icon: Pencil,
|
|
81
|
+
eventKey: EVENTS.pmAiMenuEdit
|
|
82
|
+
}, {
|
|
83
|
+
label: t('history.menu.delete'),
|
|
84
|
+
onClickItem: function onClickItem(chatId) {
|
|
85
|
+
setAction('delete');
|
|
86
|
+
onOpenModal(chatId);
|
|
87
|
+
},
|
|
88
|
+
Icon: Trash,
|
|
89
|
+
eventKey: EVENTS.pmAiMenuDelete
|
|
90
|
+
}];
|
|
91
|
+
var handleConfirmAction = function handleConfirmAction(chatData) {
|
|
92
|
+
if (action === 'edit') {
|
|
93
|
+
handlers.handleUpdateChat(chatData);
|
|
94
|
+
} else {
|
|
95
|
+
handlers.handleDeleteChat(chatData);
|
|
96
|
+
}
|
|
97
|
+
setAction(null);
|
|
98
|
+
onCloseModal();
|
|
99
|
+
};
|
|
100
|
+
return /*#__PURE__*/_jsxs(_Fragment, {
|
|
101
|
+
children: [/*#__PURE__*/_jsxs(SCLHCWrapperContent, {
|
|
102
|
+
onClick: function onClick(e) {
|
|
103
|
+
e.stopPropagation();
|
|
104
|
+
_onClick(chat);
|
|
105
|
+
},
|
|
106
|
+
isModalOpen: isModalOpen,
|
|
107
|
+
isSelected: isSelected,
|
|
108
|
+
children: [/*#__PURE__*/_jsxs(SCLHCWrapper, {
|
|
109
|
+
children: [/*#__PURE__*/_jsx(Tooltip, {
|
|
110
|
+
title: showTooltip ? chat.title : '',
|
|
111
|
+
children: /*#__PURE__*/_jsx(SCLHCWrapperTitle, {
|
|
112
|
+
ref: textRef,
|
|
113
|
+
children: chat.title || t('conversations.emptyLabel')
|
|
114
|
+
})
|
|
115
|
+
}), /*#__PURE__*/_jsx(Tooltip, {
|
|
116
|
+
title: showTooltipAgent ? chat.agent + (chat.projectName ? " - ".concat(chat.projectName) : '') : '',
|
|
117
|
+
children: /*#__PURE__*/_jsxs(SCLHCWrapperAgent, {
|
|
118
|
+
children: [chat.agentType === 'clone' ? /*#__PURE__*/_jsx(MAIAIcon, {
|
|
119
|
+
width: 14,
|
|
120
|
+
height: 14
|
|
121
|
+
}) : /*#__PURE__*/_jsx("span", {
|
|
122
|
+
style: {
|
|
123
|
+
fontSize: '14px'
|
|
124
|
+
},
|
|
125
|
+
children: chat.emoji
|
|
126
|
+
}), /*#__PURE__*/_jsxs(SCLHCWrapperAgentText, {
|
|
127
|
+
ref: agentRef,
|
|
128
|
+
children: [chat.agentType === 'clone' ? abbreviateSpecialistInAgentName(chat.agent) : chat.agent, chat.projectName && " - ".concat(chat.projectName)]
|
|
129
|
+
})]
|
|
130
|
+
})
|
|
131
|
+
})]
|
|
132
|
+
}), /*#__PURE__*/_jsxs(SCLHCWrapperButtonActions, {
|
|
133
|
+
children: [/*#__PURE__*/_jsx(CUButton, {
|
|
134
|
+
iconOnly: true,
|
|
135
|
+
size: "small",
|
|
136
|
+
variant: "text",
|
|
137
|
+
onClick: function onClick(event) {
|
|
138
|
+
event.stopPropagation();
|
|
139
|
+
onOpenModal(chat.id);
|
|
140
|
+
},
|
|
141
|
+
children: /*#__PURE__*/_jsx(MenuDots, {
|
|
142
|
+
width: 20,
|
|
143
|
+
height: 20
|
|
144
|
+
})
|
|
145
|
+
}), isModalOpen && !action && /*#__PURE__*/_jsx("div", {
|
|
146
|
+
"data-modal-container": true,
|
|
147
|
+
style: {
|
|
148
|
+
position: 'absolute',
|
|
149
|
+
top: '32px',
|
|
150
|
+
right: '16px',
|
|
151
|
+
backgroundColor: 'white',
|
|
152
|
+
zIndex: 1000,
|
|
153
|
+
display: 'flex',
|
|
154
|
+
flexDirection: 'column',
|
|
155
|
+
borderRadius: '4px',
|
|
156
|
+
border: '1px solid rgba(224, 224, 224, 1)',
|
|
157
|
+
minWidth: '124px'
|
|
158
|
+
},
|
|
159
|
+
children: menuItems.map(function (_ref2) {
|
|
160
|
+
var label = _ref2.label,
|
|
161
|
+
onClickItem = _ref2.onClickItem,
|
|
162
|
+
Icon = _ref2.Icon,
|
|
163
|
+
eventKey = _ref2.eventKey;
|
|
164
|
+
return /*#__PURE__*/_jsx(OptionItem, {
|
|
165
|
+
label: label,
|
|
166
|
+
onClick: function onClick() {
|
|
167
|
+
return onClickItem(chat.id);
|
|
168
|
+
},
|
|
169
|
+
Icon: Icon,
|
|
170
|
+
eventKey: eventKey
|
|
171
|
+
}, label);
|
|
172
|
+
})
|
|
173
|
+
})]
|
|
174
|
+
})]
|
|
175
|
+
}, "conversation-".concat(chat.sessionExternalId)), !!action && actions[action]({
|
|
176
|
+
onClose: function onClose() {
|
|
177
|
+
onCloseModal();
|
|
178
|
+
setAction(null);
|
|
179
|
+
},
|
|
180
|
+
chat: chat,
|
|
181
|
+
handlers: {
|
|
182
|
+
handleConfirmAction: handleConfirmAction,
|
|
183
|
+
handleSetIsOpenModal: onCloseModal
|
|
184
|
+
}
|
|
185
|
+
})]
|
|
186
|
+
});
|
|
187
|
+
};
|
|
188
|
+
export var Sidebar = function Sidebar(_ref3) {
|
|
189
|
+
var _user$permissions;
|
|
190
|
+
var onGoToChat = _ref3.onGoToChat,
|
|
191
|
+
_ref3$onError = _ref3.onError,
|
|
192
|
+
onError = _ref3$onError === void 0 ? function () {
|
|
193
|
+
return null;
|
|
194
|
+
} : _ref3$onError,
|
|
195
|
+
handleGoToHome = _ref3.handleGoToHome,
|
|
196
|
+
handleOpenMarketplace = _ref3.handleOpenMarketplace,
|
|
197
|
+
showNewChat = _ref3.showNewChat,
|
|
198
|
+
refetchChats = _ref3.refetchChats,
|
|
199
|
+
handleSetRefetchChats = _ref3.handleSetRefetchChats,
|
|
200
|
+
hasError = _ref3.hasError,
|
|
201
|
+
resetSelectedChatRef = _ref3.resetSelectedChatRef,
|
|
202
|
+
_ref3$agentsNavActive = _ref3.agentsNavActive,
|
|
203
|
+
agentsNavActive = _ref3$agentsNavActive === void 0 ? null : _ref3$agentsNavActive;
|
|
204
|
+
var _useT2 = useT(),
|
|
205
|
+
t = _useT2.t,
|
|
206
|
+
i18n = _useT2.i18n;
|
|
207
|
+
var _useState3 = useState(true),
|
|
65
208
|
_useState4 = _slicedToArray(_useState3, 2),
|
|
66
|
-
|
|
67
|
-
|
|
209
|
+
isOpen = _useState4[0],
|
|
210
|
+
setIsOpen = _useState4[1];
|
|
68
211
|
var _useState5 = useState(null),
|
|
69
212
|
_useState6 = _slicedToArray(_useState5, 2),
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
var _useState7 = useState(
|
|
73
|
-
clients: false,
|
|
74
|
-
projects: false,
|
|
75
|
-
agentsByCompany: false
|
|
76
|
-
}),
|
|
213
|
+
isOpenModal = _useState6[0],
|
|
214
|
+
setIsOpenModal = _useState6[1];
|
|
215
|
+
var _useState7 = useState(null),
|
|
77
216
|
_useState8 = _slicedToArray(_useState7, 2),
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
var _useState9 = useState(null),
|
|
81
|
-
_useState0 = _slicedToArray(_useState9, 2),
|
|
82
|
-
selectedChat = _useState0[0],
|
|
83
|
-
setSelectedChat = _useState0[1];
|
|
217
|
+
selectedChat = _useState8[0],
|
|
218
|
+
setSelectedChat = _useState8[1];
|
|
84
219
|
var chatsFetchedRef = useRef(false);
|
|
85
|
-
var
|
|
220
|
+
var chatsContainerRef = useRef(null);
|
|
86
221
|
var user = useUser();
|
|
87
222
|
var eventAmplitude = useEvent();
|
|
88
223
|
var _useGlobalContext = useGlobalContext(),
|
|
@@ -98,32 +233,17 @@ export var Sidebar = function Sidebar(_ref) {
|
|
|
98
233
|
deleteChat = _useChats.deleteChat,
|
|
99
234
|
updateChat = _useChats.updateChat,
|
|
100
235
|
fetchChats = _useChats.fetchChats,
|
|
236
|
+
limit = _useChats.limit,
|
|
237
|
+
offset = _useChats.offset,
|
|
101
238
|
hasMoreChats = _useChats.hasMoreChats,
|
|
102
239
|
loadMoreChats = _useChats.loadMoreChats,
|
|
103
|
-
isLoadingMoreChats = _useChats.isLoadingMoreChats
|
|
104
|
-
sessionsGroupHasMore = _useChats.sessionsGroupHasMore;
|
|
105
|
-
var showFullSidebarErrorColumn = hasError && !chats.length;
|
|
106
|
-
var showSidebarErrorFooterBanner = hasError && chats.length > 0;
|
|
240
|
+
isLoadingMoreChats = _useChats.isLoadingMoreChats;
|
|
107
241
|
var userPermissions = user === null || user === void 0 || (_user$permissions = user.permissions) === null || _user$permissions === void 0 ? void 0 : _user$permissions.ai_agents;
|
|
108
242
|
var canCreateAgents = !!(userPermissions !== null && userPermissions !== void 0 && userPermissions.create);
|
|
109
243
|
var canViewAgents = !!(userPermissions !== null && userPermissions !== void 0 && userPermissions.view);
|
|
110
244
|
var showMarketplaceSidebarButton = !!canCreateAgents && !!window.MAIA_MARKETPLACE_MAIAKER;
|
|
111
245
|
var agentNavButtonCount = (showMarketplaceSidebarButton ? 1 : 0) + (canViewAgents ? 1 : 0);
|
|
112
246
|
var showAgentsNavBlock = showMarketplaceSidebarButton || canViewAgents;
|
|
113
|
-
var groupedChats = useMemo(function () {
|
|
114
|
-
return groupChatsBySidebarSection(chats);
|
|
115
|
-
}, [chats]);
|
|
116
|
-
var sidebarSections = useMemo(function () {
|
|
117
|
-
return buildSidebarSections(groupedChats, function (key) {
|
|
118
|
-
var _user$company;
|
|
119
|
-
return key === 'agentsByCompany' ? t(SIDEBAR_SECTION_TRANSLATION_KEYS[key], {
|
|
120
|
-
companyName: ((_user$company = user.company) === null || _user$company === void 0 ? void 0 : _user$company.trim()) || '—'
|
|
121
|
-
}) : t(SIDEBAR_SECTION_TRANSLATION_KEYS[key]);
|
|
122
|
-
}, sessionsGroupHasMore);
|
|
123
|
-
}, [groupedChats, t, user.company, sessionsGroupHasMore]);
|
|
124
|
-
var expandedSection = expandedSectionModalKey ? sidebarSections.find(function (section) {
|
|
125
|
-
return section.key === expandedSectionModalKey;
|
|
126
|
-
}) || null : null;
|
|
127
247
|
useEffect(function () {
|
|
128
248
|
if (resetSelectedChatRef) {
|
|
129
249
|
resetSelectedChatRef.current = function () {
|
|
@@ -137,12 +257,12 @@ export var Sidebar = function Sidebar(_ref) {
|
|
|
137
257
|
};
|
|
138
258
|
}, [resetSelectedChatRef]);
|
|
139
259
|
var handleDeleteChat = /*#__PURE__*/function () {
|
|
140
|
-
var
|
|
260
|
+
var _ref4 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee(chat) {
|
|
141
261
|
return _regeneratorRuntime.wrap(function (_context) {
|
|
142
262
|
while (1) switch (_context.prev = _context.next) {
|
|
143
263
|
case 0:
|
|
144
264
|
deleteChat(chat.sessionExternalId);
|
|
145
|
-
|
|
265
|
+
setIsOpenModal(null);
|
|
146
266
|
handleGoToHome();
|
|
147
267
|
case 1:
|
|
148
268
|
case "end":
|
|
@@ -151,121 +271,69 @@ export var Sidebar = function Sidebar(_ref) {
|
|
|
151
271
|
}, _callee);
|
|
152
272
|
}));
|
|
153
273
|
return function handleDeleteChat(_x) {
|
|
154
|
-
return
|
|
274
|
+
return _ref4.apply(this, arguments);
|
|
155
275
|
};
|
|
156
276
|
}();
|
|
157
277
|
var handleUpdateChat = function handleUpdateChat(chat) {
|
|
158
278
|
updateChat(chat);
|
|
159
|
-
|
|
279
|
+
setIsOpenModal(null);
|
|
160
280
|
};
|
|
161
|
-
var
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
});
|
|
168
|
-
};
|
|
169
|
-
var handleCloseChatMenu = function handleCloseChatMenu() {
|
|
170
|
-
setChatMenuState(null);
|
|
171
|
-
};
|
|
172
|
-
var handleOpenSectionModal = /*#__PURE__*/function () {
|
|
173
|
-
var _ref3 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee2(sectionKey) {
|
|
174
|
-
var _getChatsStoreState, storeLimit;
|
|
175
|
-
return _regeneratorRuntime.wrap(function (_context2) {
|
|
176
|
-
while (1) switch (_context2.prev = _context2.next) {
|
|
177
|
-
case 0:
|
|
178
|
-
setChatMenuState(null);
|
|
179
|
-
_getChatsStoreState = getChatsStoreState(), storeLimit = _getChatsStoreState.limit;
|
|
180
|
-
if (!(storeLimit === SIDEBAR_SESSIONS_PAGE_LIMIT)) {
|
|
181
|
-
_context2.next = 1;
|
|
182
|
-
break;
|
|
183
|
-
}
|
|
184
|
-
_context2.next = 1;
|
|
185
|
-
return fetchChats({
|
|
186
|
-
limit: SECTION_MODAL_SESSIONS_PAGE_LIMIT,
|
|
187
|
-
offset: 0,
|
|
188
|
-
showGlobalLoader: false
|
|
189
|
-
});
|
|
190
|
-
case 1:
|
|
191
|
-
setExpandedSectionModalKey(sectionKey);
|
|
192
|
-
case 2:
|
|
193
|
-
case "end":
|
|
194
|
-
return _context2.stop();
|
|
195
|
-
}
|
|
196
|
-
}, _callee2);
|
|
197
|
-
}));
|
|
198
|
-
return function handleOpenSectionModal(_x2) {
|
|
199
|
-
return _ref3.apply(this, arguments);
|
|
200
|
-
};
|
|
201
|
-
}();
|
|
202
|
-
var handleCloseSectionModal = function handleCloseSectionModal() {
|
|
203
|
-
setExpandedSectionModalKey(null);
|
|
204
|
-
setChatMenuState(null);
|
|
205
|
-
};
|
|
206
|
-
var handleToggleSectionCollapse = function handleToggleSectionCollapse(sectionKey) {
|
|
207
|
-
setCollapsedSections(function (prev) {
|
|
208
|
-
return _objectSpread(_objectSpread({}, prev), {}, _defineProperty({}, sectionKey, !prev[sectionKey]));
|
|
209
|
-
});
|
|
281
|
+
var handleOpenModal = function handleOpenModal(chatId) {
|
|
282
|
+
if (isOpenModal && isOpenModal !== chatId) {
|
|
283
|
+
setIsOpenModal(null);
|
|
284
|
+
} else {
|
|
285
|
+
setIsOpenModal(chatId);
|
|
286
|
+
}
|
|
210
287
|
};
|
|
211
|
-
var
|
|
212
|
-
|
|
213
|
-
onGoToChat(chatData);
|
|
288
|
+
var handleCloseModal = function handleCloseModal() {
|
|
289
|
+
setIsOpenModal(null);
|
|
214
290
|
};
|
|
215
291
|
useEffect(function () {
|
|
216
292
|
var handleClickOutside = function handleClickOutside(event) {
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
setChatMenuState(null);
|
|
220
|
-
}
|
|
221
|
-
if (expandedSectionModalKey && !target.closest('[data-section-modal-container]')) {
|
|
222
|
-
setExpandedSectionModalKey(null);
|
|
223
|
-
setChatMenuState(null);
|
|
293
|
+
if (isOpenModal && !event.target.closest('[data-modal-container]')) {
|
|
294
|
+
setIsOpenModal(null);
|
|
224
295
|
}
|
|
225
296
|
};
|
|
226
|
-
if (
|
|
297
|
+
if (isOpenModal) {
|
|
227
298
|
document.addEventListener('mousedown', handleClickOutside);
|
|
228
299
|
}
|
|
229
300
|
return function () {
|
|
230
301
|
document.removeEventListener('mousedown', handleClickOutside);
|
|
231
302
|
};
|
|
232
|
-
}, [
|
|
303
|
+
}, [isOpenModal]);
|
|
233
304
|
var handleToggleSidebar = function handleToggleSidebar() {
|
|
234
|
-
if (
|
|
235
|
-
|
|
236
|
-
}
|
|
237
|
-
if (expandedSectionModalKey) {
|
|
238
|
-
setExpandedSectionModalKey(null);
|
|
305
|
+
if (isOpenModal) {
|
|
306
|
+
setIsOpenModal(null);
|
|
239
307
|
}
|
|
240
308
|
setIsOpen(function (prev) {
|
|
241
309
|
return !prev;
|
|
242
310
|
});
|
|
243
311
|
};
|
|
244
312
|
var handleOpenCreateAgent = /*#__PURE__*/function () {
|
|
245
|
-
var
|
|
313
|
+
var _ref5 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee2() {
|
|
246
314
|
var response, data, maiakerAgent;
|
|
247
|
-
return _regeneratorRuntime.wrap(function (
|
|
248
|
-
while (1) switch (
|
|
315
|
+
return _regeneratorRuntime.wrap(function (_context2) {
|
|
316
|
+
while (1) switch (_context2.prev = _context2.next) {
|
|
249
317
|
case 0:
|
|
250
|
-
|
|
318
|
+
_context2.next = 1;
|
|
251
319
|
return fetchMaia({
|
|
252
320
|
path: "agents?agent_type=clone&lang=".concat(mapCORLang(i18n.language)),
|
|
253
321
|
method: 'GET'
|
|
254
322
|
});
|
|
255
323
|
case 1:
|
|
256
|
-
response =
|
|
257
|
-
|
|
324
|
+
response = _context2.sent;
|
|
325
|
+
_context2.next = 2;
|
|
258
326
|
return response.json();
|
|
259
327
|
case 2:
|
|
260
|
-
data =
|
|
328
|
+
data = _context2.sent;
|
|
261
329
|
maiakerAgent = (data.data || []).find(function (agent) {
|
|
262
330
|
return agent.type === 'clone' && agent.entity === 'global';
|
|
263
331
|
});
|
|
264
332
|
if (maiakerAgent) {
|
|
265
|
-
|
|
333
|
+
_context2.next = 3;
|
|
266
334
|
break;
|
|
267
335
|
}
|
|
268
|
-
return
|
|
336
|
+
return _context2.abrupt("return");
|
|
269
337
|
case 3:
|
|
270
338
|
setProject(null);
|
|
271
339
|
setClient === null || setClient === void 0 || setClient(null);
|
|
@@ -273,74 +341,85 @@ export var Sidebar = function Sidebar(_ref) {
|
|
|
273
341
|
handleGoToHome();
|
|
274
342
|
case 4:
|
|
275
343
|
case "end":
|
|
276
|
-
return
|
|
344
|
+
return _context2.stop();
|
|
277
345
|
}
|
|
278
|
-
},
|
|
346
|
+
}, _callee2);
|
|
279
347
|
}));
|
|
280
348
|
return function handleOpenCreateAgent() {
|
|
281
|
-
return
|
|
349
|
+
return _ref5.apply(this, arguments);
|
|
282
350
|
};
|
|
283
351
|
}();
|
|
284
352
|
useEffect(function () {
|
|
285
353
|
if (isOpen && !chatsFetchedRef.current) {
|
|
286
354
|
chatsFetchedRef.current = true;
|
|
287
355
|
fetchChats({
|
|
288
|
-
limit:
|
|
289
|
-
offset:
|
|
356
|
+
limit: limit,
|
|
357
|
+
offset: offset
|
|
290
358
|
});
|
|
291
359
|
return;
|
|
292
360
|
}
|
|
293
361
|
if (refetchChats) {
|
|
294
362
|
fetchChats({
|
|
295
|
-
limit:
|
|
296
|
-
offset:
|
|
363
|
+
limit: limit,
|
|
364
|
+
offset: offset
|
|
297
365
|
});
|
|
298
366
|
handleSetRefetchChats(false);
|
|
299
367
|
}
|
|
300
|
-
}, [isOpen, refetchChats, handleSetRefetchChats
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
368
|
+
}, [isOpen, refetchChats, handleSetRefetchChats]);
|
|
369
|
+
useEffect(function () {
|
|
370
|
+
var handleScroll = function handleScroll() {
|
|
371
|
+
if (!chatsContainerRef.current || !hasMoreChats || isLoadingMoreChats || hasError) {
|
|
372
|
+
return;
|
|
373
|
+
}
|
|
374
|
+
var _chatsContainerRef$cu = chatsContainerRef.current,
|
|
375
|
+
scrollTop = _chatsContainerRef$cu.scrollTop,
|
|
376
|
+
scrollHeight = _chatsContainerRef$cu.scrollHeight,
|
|
377
|
+
clientHeight = _chatsContainerRef$cu.clientHeight;
|
|
378
|
+
var isAtBottom = scrollTop + clientHeight >= scrollHeight - 10;
|
|
379
|
+
if (isAtBottom) {
|
|
380
|
+
loadMoreChats();
|
|
381
|
+
}
|
|
382
|
+
};
|
|
383
|
+
var container = chatsContainerRef.current;
|
|
384
|
+
if (container) {
|
|
385
|
+
container.addEventListener('scroll', handleScroll);
|
|
386
|
+
}
|
|
387
|
+
return function () {
|
|
388
|
+
if (container) {
|
|
389
|
+
container.removeEventListener('scroll', handleScroll);
|
|
390
|
+
}
|
|
391
|
+
};
|
|
392
|
+
}, [hasMoreChats, isLoadingMoreChats, loadMoreChats, hasError]);
|
|
304
393
|
var handleNewChat = /*#__PURE__*/function () {
|
|
305
|
-
var
|
|
306
|
-
return _regeneratorRuntime.wrap(function (
|
|
307
|
-
while (1) switch (
|
|
394
|
+
var _ref6 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee3() {
|
|
395
|
+
return _regeneratorRuntime.wrap(function (_context3) {
|
|
396
|
+
while (1) switch (_context3.prev = _context3.next) {
|
|
308
397
|
case 0:
|
|
309
|
-
if (
|
|
310
|
-
|
|
398
|
+
if (isOpenModal) {
|
|
399
|
+
setIsOpenModal(null);
|
|
311
400
|
}
|
|
312
401
|
setSelectedChat(null);
|
|
313
|
-
|
|
402
|
+
_context3.next = 1;
|
|
314
403
|
return fetchChats({
|
|
315
|
-
limit:
|
|
404
|
+
limit: limit,
|
|
316
405
|
offset: 0
|
|
317
406
|
});
|
|
318
407
|
case 1:
|
|
319
|
-
if (!onNewChat) {
|
|
320
|
-
_context4.next = 3;
|
|
321
|
-
break;
|
|
322
|
-
}
|
|
323
|
-
_context4.next = 2;
|
|
324
|
-
return onNewChat();
|
|
325
|
-
case 2:
|
|
326
|
-
_context4.next = 4;
|
|
327
|
-
break;
|
|
328
|
-
case 3:
|
|
329
408
|
handleGoToHome();
|
|
330
|
-
case
|
|
409
|
+
case 2:
|
|
331
410
|
case "end":
|
|
332
|
-
return
|
|
411
|
+
return _context3.stop();
|
|
333
412
|
}
|
|
334
|
-
},
|
|
413
|
+
}, _callee3);
|
|
335
414
|
}));
|
|
336
415
|
return function handleNewChat() {
|
|
337
|
-
return
|
|
416
|
+
return _ref6.apply(this, arguments);
|
|
338
417
|
};
|
|
339
418
|
}();
|
|
340
419
|
useEffect(function () {
|
|
341
420
|
var handleRefetchSession = function handleRefetchSession() {
|
|
342
421
|
fetchChats({
|
|
343
|
-
limit:
|
|
422
|
+
limit: 20,
|
|
344
423
|
offset: 0
|
|
345
424
|
});
|
|
346
425
|
};
|
|
@@ -348,7 +427,7 @@ export var Sidebar = function Sidebar(_ref) {
|
|
|
348
427
|
return function () {
|
|
349
428
|
document.removeEventListener('refetch-session', handleRefetchSession);
|
|
350
429
|
};
|
|
351
|
-
}, [
|
|
430
|
+
}, []);
|
|
352
431
|
var showNewChatButton = !showNewChat && !hasError && !loadingChats && ((userPermissions === null || userPermissions === void 0 ? void 0 : userPermissions.view) && !(selectedAgent !== null && selectedAgent !== void 0 && selectedAgent.is_deleted) && !(selectedAgent !== null && selectedAgent !== void 0 && selectedAgent.has_not_permissions) && !(selectedAgent !== null && selectedAgent !== void 0 && selectedAgent.has_not_access) || !(userPermissions !== null && userPermissions !== void 0 && userPermissions.view) && !(selectedAgent !== null && selectedAgent !== void 0 && selectedAgent.is_deleted) && !(selectedAgent !== null && selectedAgent !== void 0 && selectedAgent.has_not_permissions) && !(selectedAgent !== null && selectedAgent !== void 0 && selectedAgent.has_not_access));
|
|
353
432
|
return /*#__PURE__*/_jsxs(SCSSidebarRoot, {
|
|
354
433
|
$isOpen: isOpen,
|
|
@@ -360,9 +439,9 @@ export var Sidebar = function Sidebar(_ref) {
|
|
|
360
439
|
onClick: handleToggleSidebar,
|
|
361
440
|
isOpen: isOpen,
|
|
362
441
|
children: /*#__PURE__*/_jsx(ChevronDoubleLeft, {
|
|
363
|
-
color: "
|
|
364
|
-
width:
|
|
365
|
-
height:
|
|
442
|
+
color: "rgba(102, 102, 102, 1)",
|
|
443
|
+
width: 20,
|
|
444
|
+
height: 20
|
|
366
445
|
})
|
|
367
446
|
})
|
|
368
447
|
}), showNewChatButton ? /*#__PURE__*/_jsx(Tooltip, {
|
|
@@ -370,47 +449,53 @@ export var Sidebar = function Sidebar(_ref) {
|
|
|
370
449
|
children: /*#__PURE__*/_jsx(SCSWrapperNewChatIcon, {
|
|
371
450
|
onClick: handleNewChat,
|
|
372
451
|
children: /*#__PURE__*/_jsx(NewChat, {
|
|
373
|
-
width:
|
|
374
|
-
height:
|
|
375
|
-
color: "#4D4D4D"
|
|
452
|
+
width: 20,
|
|
453
|
+
height: 20
|
|
376
454
|
})
|
|
377
455
|
})
|
|
378
456
|
}) : null]
|
|
379
457
|
}), /*#__PURE__*/_jsxs(SCSSidebarBody, {
|
|
380
458
|
$isOpen: isOpen,
|
|
381
459
|
children: [isOpen ? /*#__PURE__*/_jsxs(SCSSidebarOpenPanel, {
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
460
|
+
children: [/*#__PURE__*/_jsxs(SCSSidebarAgentsBlock, {
|
|
461
|
+
children: [showAgentsNavBlock ? /*#__PURE__*/_jsxs(_Fragment, {
|
|
462
|
+
children: [/*#__PURE__*/_jsx(SCSSidebarAgentsHeading, {
|
|
463
|
+
children: /*#__PURE__*/_jsx(SCSSidebarAgentsHeadingText, {
|
|
464
|
+
children: t('conversations.agentsSectionTitle')
|
|
465
|
+
})
|
|
466
|
+
}), /*#__PURE__*/_jsxs(SCSSidebarAgentsActions, {
|
|
467
|
+
children: [showMarketplaceSidebarButton ? /*#__PURE__*/_jsxs(SCSSidebarMaiakerNavButton, {
|
|
468
|
+
type: "button",
|
|
469
|
+
onClick: function onClick() {
|
|
470
|
+
eventAmplitude(EVENTS.aiChatMpOpen);
|
|
471
|
+
handleOpenCreateAgent();
|
|
472
|
+
},
|
|
473
|
+
$active: agentsNavActive === 'maiaker',
|
|
474
|
+
children: [/*#__PURE__*/_jsx(MaiaStoreIcon, {
|
|
475
|
+
size: 16
|
|
476
|
+
}), /*#__PURE__*/_jsx(SCSSidebarMaiakerNavLabel, {
|
|
477
|
+
children: t('conversations.maiakerNav')
|
|
478
|
+
})]
|
|
479
|
+
}) : null, canViewAgents ? /*#__PURE__*/_jsxs(SCSSidebarMaiakerNavButton, {
|
|
480
|
+
type: "button",
|
|
481
|
+
onClick: handleOpenMarketplace,
|
|
482
|
+
$active: agentsNavActive === 'myAgents',
|
|
483
|
+
children: [/*#__PURE__*/_jsx(MyAgentsNavIcon, {
|
|
484
|
+
size: 16
|
|
485
|
+
}), /*#__PURE__*/_jsx(SCSSidebarMaiakerNavLabel, {
|
|
486
|
+
children: t('conversations.myAgentsNav')
|
|
487
|
+
})]
|
|
488
|
+
}) : null]
|
|
489
|
+
})]
|
|
490
|
+
}) : null, /*#__PURE__*/_jsx(SCSSidebarConversationsHeading, {
|
|
491
|
+
children: t('conversations.title')
|
|
492
|
+
})]
|
|
408
493
|
}), /*#__PURE__*/_jsx(SCSSidebarChatsScroll, {
|
|
409
|
-
|
|
494
|
+
ref: chatsContainerRef,
|
|
495
|
+
$hasChats: chats.length > 0,
|
|
410
496
|
$offsetVariant: hasError ? 'error' : 'default',
|
|
411
497
|
$agentNavButtonCount: agentNavButtonCount,
|
|
412
|
-
|
|
413
|
-
children: showFullSidebarErrorColumn ? /*#__PURE__*/_jsxs(SCSSidebarErrorStateColumn, {
|
|
498
|
+
children: hasError && !chats.length ? /*#__PURE__*/_jsxs(SCSSidebarErrorStateColumn, {
|
|
414
499
|
children: [/*#__PURE__*/_jsx(SCSSidebarErrorStateTop, {
|
|
415
500
|
children: /*#__PURE__*/_jsx(ErrorState, {})
|
|
416
501
|
}), /*#__PURE__*/_jsxs(SCSSidebarErrorBanner, {
|
|
@@ -423,24 +508,25 @@ export var Sidebar = function Sidebar(_ref) {
|
|
|
423
508
|
}) : loadingChats ? /*#__PURE__*/_jsx(SCSSidebarLoadingArea, {
|
|
424
509
|
children: /*#__PURE__*/_jsx(Loader, {})
|
|
425
510
|
}) : chats.length ? /*#__PURE__*/_jsxs(_Fragment, {
|
|
426
|
-
children: [
|
|
427
|
-
return /*#__PURE__*/_jsx(
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
511
|
+
children: [chats.map(function (chat) {
|
|
512
|
+
return /*#__PURE__*/_jsx(ListHistoryChat, {
|
|
513
|
+
chat: chat,
|
|
514
|
+
onClick: function onClick(chatData) {
|
|
515
|
+
if (isOpenModal) {
|
|
516
|
+
setIsOpenModal(null);
|
|
517
|
+
}
|
|
518
|
+
setSelectedChat(chatData.sessionExternalId);
|
|
519
|
+
onGoToChat(chatData);
|
|
432
520
|
},
|
|
433
|
-
|
|
434
|
-
|
|
521
|
+
isModalOpen: isOpenModal === chat.id,
|
|
522
|
+
onOpenModal: handleOpenModal,
|
|
523
|
+
onCloseModal: handleCloseModal,
|
|
524
|
+
handlers: {
|
|
525
|
+
handleDeleteChat: handleDeleteChat,
|
|
526
|
+
handleUpdateChat: handleUpdateChat
|
|
435
527
|
},
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
onCloseChatMenu: handleCloseChatMenu,
|
|
439
|
-
handleDeleteChat: handleDeleteChat,
|
|
440
|
-
handleUpdateChat: handleUpdateChat,
|
|
441
|
-
selectedChatSessionExternalId: selectedChat,
|
|
442
|
-
onGoToChat: handleSelectConversation
|
|
443
|
-
}, "chat-section-".concat(section.key));
|
|
528
|
+
isSelected: selectedChat === chat.sessionExternalId
|
|
529
|
+
}, chat.id);
|
|
444
530
|
}), isLoadingMoreChats && /*#__PURE__*/_jsx(SCSSidebarLoadMoreRow, {
|
|
445
531
|
children: /*#__PURE__*/_jsx(Loader, {})
|
|
446
532
|
})]
|
|
@@ -450,7 +536,7 @@ export var Sidebar = function Sidebar(_ref) {
|
|
|
450
536
|
})]
|
|
451
537
|
})
|
|
452
538
|
}), /*#__PURE__*/_jsx(SCSSidebarChatsFooter, {
|
|
453
|
-
children:
|
|
539
|
+
children: hasError && chats.length ? /*#__PURE__*/_jsxs(SCSSidebarErrorBanner, {
|
|
454
540
|
children: [/*#__PURE__*/_jsx(SCSSidebarErrorBannerIconWrap, {
|
|
455
541
|
children: /*#__PURE__*/_jsx(ErrorIcon, {})
|
|
456
542
|
}), /*#__PURE__*/_jsx(SCSSidebarErrorBannerMessage, {
|
|
@@ -466,39 +552,7 @@ export var Sidebar = function Sidebar(_ref) {
|
|
|
466
552
|
isOpen: isOpen
|
|
467
553
|
}) : null, /*#__PURE__*/_jsx(OnboardingModalButton, {})]
|
|
468
554
|
})]
|
|
469
|
-
}), /*#__PURE__*/_jsx(AnimatePresence, {
|
|
470
|
-
children: expandedSectionModalKey && expandedSection ? /*#__PURE__*/_jsxs(_Fragment, {
|
|
471
|
-
children: [/*#__PURE__*/_jsx(SCSSidebarSectionModalBackdropMotion, {
|
|
472
|
-
"aria-hidden": true,
|
|
473
|
-
initial: {
|
|
474
|
-
opacity: 0
|
|
475
|
-
},
|
|
476
|
-
animate: {
|
|
477
|
-
opacity: 1
|
|
478
|
-
},
|
|
479
|
-
exit: {
|
|
480
|
-
opacity: 0
|
|
481
|
-
},
|
|
482
|
-
transition: {
|
|
483
|
-
duration: 0.2,
|
|
484
|
-
ease: 'easeOut'
|
|
485
|
-
}
|
|
486
|
-
}, "sidebar-section-chat-backdrop"), /*#__PURE__*/_jsx(SidebarChatsSectionModal, {
|
|
487
|
-
section: expandedSection,
|
|
488
|
-
onClose: handleCloseSectionModal,
|
|
489
|
-
chatMenuState: chatMenuState,
|
|
490
|
-
onOpenChatMenu: handleOpenChatMenu,
|
|
491
|
-
onCloseChatMenu: handleCloseChatMenu,
|
|
492
|
-
handleDeleteChat: handleDeleteChat,
|
|
493
|
-
handleUpdateChat: handleUpdateChat,
|
|
494
|
-
selectedChatSessionExternalId: selectedChat,
|
|
495
|
-
onGoToChat: handleSelectConversation,
|
|
496
|
-
hasMoreChats: hasMoreChats,
|
|
497
|
-
loadMoreChats: loadMoreChats,
|
|
498
|
-
isLoadingMoreChats: isLoadingMoreChats
|
|
499
|
-
}, expandedSectionModalKey)]
|
|
500
|
-
}) : null
|
|
501
555
|
})]
|
|
502
556
|
});
|
|
503
557
|
};
|
|
504
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VFZmZlY3QiLCJ1c2VNZW1vIiwidXNlUmVmIiwidXNlU3RhdGUiLCJBbmltYXRlUHJlc2VuY2UiLCJDaGV2cm9uRG91YmxlTGVmdCIsIlRvb2x0aXAiLCJFbXB0eUhpc3RvcnlJY29uIiwidXNlQ2hhdHMiLCJMb2FkZXIiLCJFcnJvclN0YXRlIiwiTWFpYVN0b3JlSWNvbiIsIk15QWdlbnRzTmF2SWNvbiIsIk5ld0NoYXQiLCJFVkVOVFMiLCJ1c2VFdmVudCIsInVzZVQiLCJFcnJvckljb24iLCJ1c2VVc2VyIiwiT25ib2FyZGluZ01vZGFsQnV0dG9uIiwiRmVlZGJhY2tCdXR0b24iLCJ1c2VHbG9iYWxDb250ZXh0IiwiZmV0Y2hNYWlhIiwibWFwQ09STGFuZyIsIlNDU1dyYXBwZXJDb2xsYXBzZWRCdXR0b24iLCJTQ1NXcmFwcGVyTmV3Q2hhdEljb24iLCJTQ1NTaWRlYmFyUm9vdCIsIlNDU1NpZGViYXJUb29sYmFyIiwiU0NTU2lkZWJhckJvZHkiLCJTQ1NTaWRlYmFyT3BlblBhbmVsIiwiU0NTU2lkZWJhckFnZW50c0Jsb2NrIiwiU0NTU2lkZWJhckFnZW50c0FjdGlvbnMiLCJTQ1NTaWRlYmFyTWFpYWtlck5hdkJ1dHRvbiIsIlNDU1NpZGViYXJNYWlha2VyTmF2TGFiZWwiLCJTQ1NTaWRlYmFyQ2hhdHNTY3JvbGwiLCJTQ1NTaWRlYmFyRXJyb3JTdGF0ZUNvbHVtbiIsIlNDU1NpZGViYXJFcnJvclN0YXRlVG9wIiwiU0NTU2lkZWJhckVycm9yQmFubmVyIiwiU0NTU2lkZWJhckVycm9yQmFubmVySWNvbldyYXAiLCJTQ1NTaWRlYmFyRXJyb3JCYW5uZXJNZXNzYWdlIiwiU0NTU2lkZWJhckxvYWRpbmdBcmVhIiwiU0NTU2lkZWJhckxvYWRNb3JlUm93IiwiU0NTU2lkZWJhckVtcHR5Q2hhdHMiLCJTQ1NTaWRlYmFyRW1wdHlDaGF0c1RleHQiLCJTQ1NTaWRlYmFyQ2hhdHNGb290ZXIiLCJTQ1NTaWRlYmFyRm9vdGVyQWN0aW9ucyIsIlNDU1NpZGViYXJTZWN0aW9uTW9kYWxCYWNrZHJvcE1vdGlvbiIsIlNpZGViYXJDaGF0c1NlY3Rpb24iLCJTaWRlYmFyQ2hhdHNTZWN0aW9uTW9kYWwiLCJidWlsZFNpZGViYXJTZWN0aW9ucyIsImdyb3VwQ2hhdHNCeVNpZGViYXJTZWN0aW9uIiwiU0lERUJBUl9TRUNUSU9OX1RSQU5TTEFUSU9OX0tFWVMiLCJnZXRDaGF0c1N0b3JlU3RhdGUiLCJTRUNUSU9OX01PREFMX1NFU1NJT05TX1BBR0VfTElNSVQiLCJTSURFQkFSX1NFU1NJT05TX1BBR0VfTElNSVQiLCJqc3giLCJfanN4IiwianN4cyIsIl9qc3hzIiwiRnJhZ21lbnQiLCJfRnJhZ21lbnQiLCJTaWRlYmFyIiwiX3JlZiIsIl91c2VyJHBlcm1pc3Npb25zIiwib25Hb1RvQ2hhdCIsIl9yZWYkb25FcnJvciIsIm9uRXJyb3IiLCJoYW5kbGVHb1RvSG9tZSIsImhhbmRsZU9wZW5NYXJrZXRwbGFjZSIsInNob3dOZXdDaGF0IiwicmVmZXRjaENoYXRzIiwiaGFuZGxlU2V0UmVmZXRjaENoYXRzIiwiaGFzRXJyb3IiLCJyZXNldFNlbGVjdGVkQ2hhdFJlZiIsIl9yZWYkYWdlbnRzTmF2QWN0aXZlIiwiYWdlbnRzTmF2QWN0aXZlIiwib25OZXdDaGF0IiwiX3VzZVQiLCJ0IiwiaTE4biIsIl91c2VTdGF0ZSIsIl91c2VTdGF0ZTIiLCJfc2xpY2VkVG9BcnJheSIsImlzT3BlbiIsInNldElzT3BlbiIsIl91c2VTdGF0ZTMiLCJfdXNlU3RhdGU0IiwiY2hhdE1lbnVTdGF0ZSIsInNldENoYXRNZW51U3RhdGUiLCJfdXNlU3RhdGU1IiwiX3VzZVN0YXRlNiIsImV4cGFuZGVkU2VjdGlvbk1vZGFsS2V5Iiwic2V0RXhwYW5kZWRTZWN0aW9uTW9kYWxLZXkiLCJfdXNlU3RhdGU3IiwiY2xpZW50cyIsInByb2plY3RzIiwiYWdlbnRzQnlDb21wYW55IiwiX3VzZVN0YXRlOCIsImNvbGxhcHNlZFNlY3Rpb25zIiwic2V0Q29sbGFwc2VkU2VjdGlvbnMiLCJfdXNlU3RhdGU5IiwiX3VzZVN0YXRlMCIsInNlbGVjdGVkQ2hhdCIsInNldFNlbGVjdGVkQ2hhdCIsImNoYXRzRmV0Y2hlZFJlZiIsInNpZGViYXJTY3JvbGxSZWYiLCJ1c2VyIiwiZXZlbnRBbXBsaXR1ZGUiLCJfdXNlR2xvYmFsQ29udGV4dCIsInNlbGVjdGVkQWdlbnQiLCJhZ2VudCIsInNlbGVjdEFnZW50Iiwic2V0UHJvamVjdCIsInNldENsaWVudCIsIl91c2VDaGF0cyIsImxvYWRpbmdDaGF0cyIsImNoYXRzIiwiZGVsZXRlQ2hhdCIsInVwZGF0ZUNoYXQiLCJmZXRjaENoYXRzIiwiaGFzTW9yZUNoYXRzIiwibG9hZE1vcmVDaGF0cyIsImlzTG9hZGluZ01vcmVDaGF0cyIsInNlc3Npb25zR3JvdXBIYXNNb3JlIiwic2hvd0Z1bGxTaWRlYmFyRXJyb3JDb2x1bW4iLCJsZW5ndGgiLCJzaG93U2lkZWJhckVycm9yRm9vdGVyQmFubmVyIiwidXNlclBlcm1pc3Npb25zIiwicGVybWlzc2lvbnMiLCJhaV9hZ2VudHMiLCJjYW5DcmVhdGVBZ2VudHMiLCJjcmVhdGUiLCJjYW5WaWV3QWdlbnRzIiwidmlldyIsInNob3dNYXJrZXRwbGFjZVNpZGViYXJCdXR0b24iLCJ3aW5kb3ciLCJNQUlBX01BUktFVFBMQUNFX01BSUFLRVIiLCJhZ2VudE5hdkJ1dHRvbkNvdW50Iiwic2hvd0FnZW50c05hdkJsb2NrIiwiZ3JvdXBlZENoYXRzIiwic2lkZWJhclNlY3Rpb25zIiwia2V5IiwiX3VzZXIkY29tcGFueSIsImNvbXBhbnlOYW1lIiwiY29tcGFueSIsInRyaW0iLCJleHBhbmRlZFNlY3Rpb24iLCJmaW5kIiwic2VjdGlvbiIsImN1cnJlbnQiLCJoYW5kbGVEZWxldGVDaGF0IiwiX3JlZjIiLCJfYXN5bmNUb0dlbmVyYXRvciIsIl9yZWdlbmVyYXRvclJ1bnRpbWUiLCJtYXJrIiwiX2NhbGxlZSIsImNoYXQiLCJ3cmFwIiwiX2NvbnRleHQiLCJwcmV2IiwibmV4dCIsInNlc3Npb25FeHRlcm5hbElkIiwic3RvcCIsIl94IiwiYXBwbHkiLCJhcmd1bWVudHMiLCJoYW5kbGVVcGRhdGVDaGF0IiwiaGFuZGxlT3BlbkNoYXRNZW51IiwiY2hhdElkIiwic3VyZmFjZSIsImhhbmRsZUNsb3NlQ2hhdE1lbnUiLCJoYW5kbGVPcGVuU2VjdGlvbk1vZGFsIiwiX3JlZjMiLCJfY2FsbGVlMiIsInNlY3Rpb25LZXkiLCJfZ2V0Q2hhdHNTdG9yZVN0YXRlIiwic3RvcmVMaW1pdCIsIl9jb250ZXh0MiIsImxpbWl0Iiwib2Zmc2V0Iiwic2hvd0dsb2JhbExvYWRlciIsIl94MiIsImhhbmRsZUNsb3NlU2VjdGlvbk1vZGFsIiwiaGFuZGxlVG9nZ2xlU2VjdGlvbkNvbGxhcHNlIiwiX29iamVjdFNwcmVhZCIsIl9kZWZpbmVQcm9wZXJ0eSIsImhhbmRsZVNlbGVjdENvbnZlcnNhdGlvbiIsImNoYXREYXRhIiwiaGFuZGxlQ2xpY2tPdXRzaWRlIiwiZXZlbnQiLCJ0YXJnZXQiLCJjbG9zZXN0IiwiZG9jdW1lbnQiLCJhZGRFdmVudExpc3RlbmVyIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsImhhbmRsZVRvZ2dsZVNpZGViYXIiLCJoYW5kbGVPcGVuQ3JlYXRlQWdlbnQiLCJfcmVmNCIsIl9jYWxsZWUzIiwicmVzcG9uc2UiLCJkYXRhIiwibWFpYWtlckFnZW50IiwiX2NvbnRleHQzIiwicGF0aCIsImNvbmNhdCIsImxhbmd1YWdlIiwibWV0aG9kIiwic2VudCIsImpzb24iLCJ0eXBlIiwiZW50aXR5IiwiYWJydXB0IiwiaGFuZGxlTmV3Q2hhdCIsIl9yZWY1IiwiX2NhbGxlZTQiLCJfY29udGV4dDQiLCJoYW5kbGVSZWZldGNoU2Vzc2lvbiIsInNob3dOZXdDaGF0QnV0dG9uIiwiaXNfZGVsZXRlZCIsImhhc19ub3RfcGVybWlzc2lvbnMiLCJoYXNfbm90X2FjY2VzcyIsIiRpc09wZW4iLCJjaGlsZHJlbiIsInRpdGxlIiwib25DbGljayIsImNvbG9yIiwid2lkdGgiLCJoZWlnaHQiLCJyZWYiLCJhaUNoYXRNcE9wZW4iLCIkYWN0aXZlIiwic2l6ZSIsIiRoYXNDaGF0cyIsIiRvZmZzZXRWYXJpYW50IiwiJGFnZW50TmF2QnV0dG9uQ291bnQiLCIkZmlsbEhlaWdodCIsIm1hcCIsImNvbGxhcHNlZCIsIm9uVG9nZ2xlQ29sbGFwc2UiLCJvbk9wZW5Nb3JlIiwib25PcGVuQ2hhdE1lbnUiLCJvbkNsb3NlQ2hhdE1lbnUiLCJzZWxlY3RlZENoYXRTZXNzaW9uRXh0ZXJuYWxJZCIsIiRqdXN0aWZ5QmV0d2VlbiIsImluaXRpYWwiLCJvcGFjaXR5IiwiYW5pbWF0ZSIsImV4aXQiLCJ0cmFuc2l0aW9uIiwiZHVyYXRpb24iLCJlYXNlIiwib25DbG9zZSJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL21vbGVjdWxlcy9TaWRlYmFyL1NpZGViYXIudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIG5vLXBhcmFtLXJlYXNzaWduICovXG4vKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tc2hhZG93ICovXG4vKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55ICovXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1uZXN0ZWQtdGVybmFyeSAqL1xuLyogZXNsaW50LWRpc2FibGUganN4LWExMXkvY2xpY2stZXZlbnRzLWhhdmUta2V5LWV2ZW50cyAqL1xuLyogZXNsaW50LWRpc2FibGUganN4LWExMXkvbm8tc3RhdGljLWVsZW1lbnQtaW50ZXJhY3Rpb25zICovXG5pbXBvcnQgeyBNdXRhYmxlUmVmT2JqZWN0LCB1c2VFZmZlY3QsIHVzZU1lbW8sIHVzZVJlZiwgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCdcbmltcG9ydCB7IEFuaW1hdGVQcmVzZW5jZSB9IGZyb20gJ2ZyYW1lci1tb3Rpb24nXG5pbXBvcnQgeyBDaGV2cm9uRG91YmxlTGVmdCB9IGZyb20gJ0Bwcm9qZWN0Y29yL2ljb25zL2xpYi9jb21wb25lbnRzL0NoZXZyb25Eb3VibGVMZWZ0J1xuXG5pbXBvcnQgeyBUb29sdGlwIH0gZnJvbSAnQHByb2plY3Rjb3IvdG9vbHRpcHYyL2xpYi9jb21wb25lbnRzL1Rvb2x0aXAnXG5cbmltcG9ydCB7IEVtcHR5SGlzdG9yeUljb24gfSBmcm9tICcuLi8uLi9hdG9tcy9pY29ucy9FbXB0eUhpc3RvcnknXG5pbXBvcnQgeyB1c2VDaGF0cyB9IGZyb20gJy4uLy4uLy4uL2hvb2tzL3VzZUNoYXRzJ1xuaW1wb3J0IHsgTG9hZGVyIH0gZnJvbSAnLi4vLi4vYXRvbXMvTG9hZGVyJ1xuaW1wb3J0IHsgRXJyb3JTdGF0ZSwgTWFpYVN0b3JlSWNvbiwgTXlBZ2VudHNOYXZJY29uLCBOZXdDaGF0IH0gZnJvbSAnLi4vLi4vYXRvbXMvaWNvbnMnXG5pbXBvcnQgeyBFVkVOVFMsIHVzZUV2ZW50IH0gZnJvbSAnLi4vLi4vLi4vaG9va3MvdXNlRXZlbnQnXG5pbXBvcnQgeyB1c2VUIH0gZnJvbSAnLi4vLi4vLi4vaG9va3MvdXNlVCdcbmltcG9ydCB7IEVycm9ySWNvbiB9IGZyb20gJy4uLy4uL2F0b21zL2ljb25zL0Vycm9ySWNvbidcbmltcG9ydCB7IHVzZVVzZXIgfSBmcm9tICcuLi8uLi8uLi9jb250ZXh0L2Nvci11c2VyJ1xuaW1wb3J0IHsgT25ib2FyZGluZ01vZGFsQnV0dG9uIH0gZnJvbSAnLi4vLi4vYXRvbXMvT25ib2FyZGluZ01vZGFsQnV0dG9uJ1xuaW1wb3J0IHsgRmVlZGJhY2tCdXR0b24gfSBmcm9tICcuLi8uLi9hdG9tcy9GZWVkYmFja0J1dHRvbidcbmltcG9ydCB7IHVzZUdsb2JhbENvbnRleHQgfSBmcm9tICcuLi8uLi8uLi9jb250ZXh0L2dsb2JhbC1jb250ZXh0J1xuaW1wb3J0IHsgZmV0Y2hNYWlhIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvbWFpYS9jbGllbnQnXG5pbXBvcnQgeyBtYXBDT1JMYW5nIH0gZnJvbSAnLi4vLi4vLi4vbGFuZy91dGlscydcbmltcG9ydCB7IFNDU1dyYXBwZXJDb2xsYXBzZWRCdXR0b24sIFNDU1dyYXBwZXJOZXdDaGF0SWNvbiB9IGZyb20gJy4vU2lkZWJhci5zdHlsZXMnXG5pbXBvcnQge1xuICBTQ1NTaWRlYmFyUm9vdCxcbiAgU0NTU2lkZWJhclRvb2xiYXIsXG4gIFNDU1NpZGViYXJCb2R5LFxuICBTQ1NTaWRlYmFyT3BlblBhbmVsLFxuICBTQ1NTaWRlYmFyQWdlbnRzQmxvY2ssXG4gIFNDU1NpZGViYXJBZ2VudHNBY3Rpb25zLFxuICBTQ1NTaWRlYmFyTWFpYWtlck5hdkJ1dHRvbixcbiAgU0NTU2lkZWJhck1haWFrZXJOYXZMYWJlbCxcbiAgU0NTU2lkZWJhckNoYXRzU2Nyb2xsLFxuICBTQ1NTaWRlYmFyRXJyb3JTdGF0ZUNvbHVtbixcbiAgU0NTU2lkZWJhckVycm9yU3RhdGVUb3AsXG4gIFNDU1NpZGViYXJFcnJvckJhbm5lcixcbiAgU0NTU2lkZWJhckVycm9yQmFubmVySWNvbldyYXAsXG4gIFNDU1NpZGViYXJFcnJvckJhbm5lck1lc3NhZ2UsXG4gIFNDU1NpZGViYXJMb2FkaW5nQXJlYSxcbiAgU0NTU2lkZWJhckxvYWRNb3JlUm93LFxuICBTQ1NTaWRlYmFyRW1wdHlDaGF0cyxcbiAgU0NTU2lkZWJhckVtcHR5Q2hhdHNUZXh0LFxuICBTQ1NTaWRlYmFyQ2hhdHNGb290ZXIsXG4gIFNDU1NpZGViYXJGb290ZXJBY3Rpb25zLFxufSBmcm9tICcuL1NpZGViYXIubGF5b3V0LnN0eWxlcydcbmltcG9ydCB7IFNDU1NpZGViYXJTZWN0aW9uTW9kYWxCYWNrZHJvcE1vdGlvbiB9IGZyb20gJy4vU2lkZWJhckNoYXRzLnN0eWxlcydcbmltcG9ydCB7IFNpZGViYXJDaGF0c1NlY3Rpb24gfSBmcm9tICcuL1NpZGViYXJDaGF0c1NlY3Rpb24nXG5pbXBvcnQgeyBTaWRlYmFyQ2hhdHNTZWN0aW9uTW9kYWwgfSBmcm9tICcuL1NpZGViYXJDaGF0c1NlY3Rpb25Nb2RhbCdcbmltcG9ydCB7IGJ1aWxkU2lkZWJhclNlY3Rpb25zLCBncm91cENoYXRzQnlTaWRlYmFyU2VjdGlvbiB9IGZyb20gJy4vc2lkZWJhckNoYXRzLmhlbHBlcnMnXG5pbXBvcnQgdHlwZSB7IFNpZGViYXJDaGF0TWVudVN1cmZhY2UsIFNpZGViYXJDaGF0TWVudVN0YXRlLCBTaWRlYmFyU2VjdGlvbktleSB9IGZyb20gJy4vc2lkZWJhckNoYXRzLnR5cGVzJ1xuaW1wb3J0IHsgU0lERUJBUl9TRUNUSU9OX1RSQU5TTEFUSU9OX0tFWVMgfSBmcm9tICcuL3NpZGViYXJDaGF0cy50eXBlcydcbmltcG9ydCB7IGdldENoYXRzU3RvcmVTdGF0ZSB9IGZyb20gJy4uLy4uLy4uL3N0b3JlL3VzZUNoYXRzU3RvcmUnXG5pbXBvcnQgeyBTRUNUSU9OX01PREFMX1NFU1NJT05TX1BBR0VfTElNSVQsIFNJREVCQVJfU0VTU0lPTlNfUEFHRV9MSU1JVCB9IGZyb20gJy4uLy4uLy4uL3N0b3JlL2NoYXRzU3RvcmUudHlwZXMnXG5cbmV4cG9ydCBjb25zdCBTaWRlYmFyID0gKHtcbiAgb25Hb1RvQ2hhdCxcbiAgb25FcnJvciA9ICgpID0+IG51bGwsXG4gIGhhbmRsZUdvVG9Ib21lLFxuICBoYW5kbGVPcGVuTWFya2V0cGxhY2UsXG4gIHNob3dOZXdDaGF0LFxuICByZWZldGNoQ2hhdHMsXG4gIGhhbmRsZVNldFJlZmV0Y2hDaGF0cyxcbiAgaGFzRXJyb3IsXG4gIHJlc2V0U2VsZWN0ZWRDaGF0UmVmLFxuICBhZ2VudHNOYXZBY3RpdmUgPSBudWxsLFxuICBvbk5ld0NoYXQsXG59OiB7XG4gIG9uR29Ub0NoYXQ6IChjaGF0SWQ6IHN0cmluZykgPT4gdm9pZFxuICBvbkVycm9yOiAoKSA9PiB2b2lkXG4gIGhhbmRsZUdvVG9Ib21lOiAoKSA9PiB2b2lkXG4gIGhhbmRsZU9wZW5NYXJrZXRwbGFjZTogKCkgPT4gdm9pZFxuICBzaG93TmV3Q2hhdDogYm9vbGVhblxuICByZWZldGNoQ2hhdHM6IGJvb2xlYW5cbiAgaGFuZGxlU2V0UmVmZXRjaENoYXRzOiAocmVmZXRjaDogYm9vbGVhbikgPT4gdm9pZFxuICBoYXNFcnJvcjogYm9vbGVhblxuICByZXNldFNlbGVjdGVkQ2hhdFJlZj86IE11dGFibGVSZWZPYmplY3Q8KCgpID0+IHZvaWQpIHwgbnVsbD5cbiAgLyoqIFJlc2FsdGEgTWFpYWtlciBvIE1pcyBhZ2VudGVzICovXG4gIGFnZW50c05hdkFjdGl2ZT86ICdtYWlha2VyJyB8ICdteUFnZW50cycgfCBudWxsXG4gIC8qKlxuICAgKiBBY2Npw7NuIGRlbCBib3TDs24gXCJudWV2byBjaGF0XCIgZGVsIHRvb2xiYXIuIFNpIHNlIHByb3ZlZSwgc2UgaW52b2NhIGVuIGx1Z2FyXG4gICAqIGRlIGBoYW5kbGVHb1RvSG9tZWAgcGFyYSBwZXJtaXRpciBkZXN0aW5vcyBkaXN0aW50b3Mgc2Vnw7puIGVsIGFnZW50ZSBhY3R1YWxcbiAgICogKG15QWdlbnRzIHBhcmEgY3VzdG9tLCBzZWxlY3RvciBkZSBwcm95ZWN0by9jbGllbnRlIHBhcmEgY2xvbmUrZW50aXR5LCBldGMpLlxuICAgKi9cbiAgb25OZXdDaGF0PzogKCkgPT4gdm9pZCB8IFByb21pc2U8dm9pZD5cbn0pID0+IHtcbiAgY29uc3QgeyB0LCBpMThuIH0gPSB1c2VUKClcbiAgY29uc3QgW2lzT3Blbiwgc2V0SXNPcGVuXSA9IHVzZVN0YXRlKHRydWUpXG4gIGNvbnN0IFtjaGF0TWVudVN0YXRlLCBzZXRDaGF0TWVudVN0YXRlXSA9IHVzZVN0YXRlPFNpZGViYXJDaGF0TWVudVN0YXRlPihudWxsKVxuICBjb25zdCBbZXhwYW5kZWRTZWN0aW9uTW9kYWxLZXksIHNldEV4cGFuZGVkU2VjdGlvbk1vZGFsS2V5XSA9IHVzZVN0YXRlPFNpZGViYXJTZWN0aW9uS2V5IHwgbnVsbD4obnVsbClcbiAgY29uc3QgW2NvbGxhcHNlZFNlY3Rpb25zLCBzZXRDb2xsYXBzZWRTZWN0aW9uc10gPSB1c2VTdGF0ZTxSZWNvcmQ8U2lkZWJhclNlY3Rpb25LZXksIGJvb2xlYW4+Pih7XG4gICAgY2xpZW50czogZmFsc2UsXG4gICAgcHJvamVjdHM6IGZhbHNlLFxuICAgIGFnZW50c0J5Q29tcGFueTogZmFsc2UsXG4gIH0pXG4gIGNvbnN0IFtzZWxlY3RlZENoYXQsIHNldFNlbGVjdGVkQ2hhdF0gPSB1c2VTdGF0ZTxzdHJpbmcgfCBudWxsPihudWxsKVxuICBjb25zdCBjaGF0c0ZldGNoZWRSZWYgPSB1c2VSZWYoZmFsc2UpXG4gIGNvbnN0IHNpZGViYXJTY3JvbGxSZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpXG4gIGNvbnN0IHVzZXIgPSB1c2VVc2VyKClcbiAgY29uc3QgZXZlbnRBbXBsaXR1ZGUgPSB1c2VFdmVudCgpXG4gIGNvbnN0IHsgYWdlbnQ6IHNlbGVjdGVkQWdlbnQsIHNlbGVjdEFnZW50LCBzZXRQcm9qZWN0LCBzZXRDbGllbnQgfSA9IHVzZUdsb2JhbENvbnRleHQoKVxuICBjb25zdCB7XG4gICAgbG9hZGluZ0NoYXRzLFxuICAgIGNoYXRzLFxuICAgIGRlbGV0ZUNoYXQsXG4gICAgdXBkYXRlQ2hhdCxcbiAgICBmZXRjaENoYXRzLFxuICAgIGhhc01vcmVDaGF0cyxcbiAgICBsb2FkTW9yZUNoYXRzLFxuICAgIGlzTG9hZGluZ01vcmVDaGF0cyxcbiAgICBzZXNzaW9uc0dyb3VwSGFzTW9yZSxcbiAgfSA9IHVzZUNoYXRzKHtcbiAgICBvbkVycm9yLFxuICB9KVxuXG4gIGNvbnN0IHNob3dGdWxsU2lkZWJhckVycm9yQ29sdW1uID0gaGFzRXJyb3IgJiYgIWNoYXRzLmxlbmd0aFxuICBjb25zdCBzaG93U2lkZWJhckVycm9yRm9vdGVyQmFubmVyID0gaGFzRXJyb3IgJiYgY2hhdHMubGVuZ3RoID4gMFxuXG4gIGNvbnN0IHVzZXJQZXJtaXNzaW9ucyA9IHVzZXI/LnBlcm1pc3Npb25zPy5haV9hZ2VudHNcbiAgY29uc3QgY2FuQ3JlYXRlQWdlbnRzID0gISF1c2VyUGVybWlzc2lvbnM/LmNyZWF0ZVxuICBjb25zdCBjYW5WaWV3QWdlbnRzID0gISF1c2VyUGVybWlzc2lvbnM/LnZpZXdcbiAgY29uc3Qgc2hvd01hcmtldHBsYWNlU2lkZWJhckJ1dHRvbiA9ICEhY2FuQ3JlYXRlQWdlbnRzICYmICEhd2luZG93Lk1BSUFfTUFSS0VUUExBQ0VfTUFJQUtFUlxuICBjb25zdCBhZ2VudE5hdkJ1dHRvbkNvdW50ID0gKChzaG93TWFya2V0cGxhY2VTaWRlYmFyQnV0dG9uID8gMSA6IDApICsgKGNhblZpZXdBZ2VudHMgPyAxIDogMCkpIGFzIDAgfCAxIHwgMlxuICBjb25zdCBzaG93QWdlbnRzTmF2QmxvY2sgPSBzaG93TWFya2V0cGxhY2VTaWRlYmFyQnV0dG9uIHx8IGNhblZpZXdBZ2VudHNcblxuICBjb25zdCBncm91cGVkQ2hhdHMgPSB1c2VNZW1vKCgpID0+IGdyb3VwQ2hhdHNCeVNpZGViYXJTZWN0aW9uKGNoYXRzKSwgW2NoYXRzXSlcblxuICBjb25zdCBzaWRlYmFyU2VjdGlvbnMgPSB1c2VNZW1vKFxuICAgICgpID0+XG4gICAgICBidWlsZFNpZGViYXJTZWN0aW9ucyhcbiAgICAgICAgZ3JvdXBlZENoYXRzLFxuICAgICAgICBrZXkgPT5cbiAgICAgICAgICBrZXkgPT09ICdhZ2VudHNCeUNvbXBhbnknXG4gICAgICAgICAgICA/IHQoU0lERUJBUl9TRUNUSU9OX1RSQU5TTEFUSU9OX0tFWVNba2V5XSwgeyBjb21wYW55TmFtZTogdXNlci5jb21wYW55Py50cmltKCkgfHwgJ+KAlCcgfSlcbiAgICAgICAgICAgIDogdChTSURFQkFSX1NFQ1RJT05fVFJBTlNMQVRJT05fS0VZU1trZXldKSxcbiAgICAgICAgc2Vzc2lvbnNHcm91cEhhc01vcmVcbiAgICAgICksXG4gICAgW2dyb3VwZWRDaGF0cywgdCwgdXNlci5jb21wYW55LCBzZXNzaW9uc0dyb3VwSGFzTW9yZV1cbiAgKVxuXG4gIGNvbnN0IGV4cGFuZGVkU2VjdGlvbiA9IGV4cGFuZGVkU2VjdGlvbk1vZGFsS2V5XG4gICAgPyBzaWRlYmFyU2VjdGlvbnMuZmluZChzZWN0aW9uID0+IHNlY3Rpb24ua2V5ID09PSBleHBhbmRlZFNlY3Rpb25Nb2RhbEtleSkgfHwgbnVsbFxuICAgIDogbnVsbFxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHJlc2V0U2VsZWN0ZWRDaGF0UmVmKSB7XG4gICAgICByZXNldFNlbGVjdGVkQ2hhdFJlZi5jdXJyZW50ID0gKCkgPT4gc2V0U2VsZWN0ZWRDaGF0KG51bGwpXG4gICAgfVxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBpZiAocmVzZXRTZWxlY3RlZENoYXRSZWYpIHtcbiAgICAgICAgcmVzZXRTZWxlY3RlZENoYXRSZWYuY3VycmVudCA9IG51bGxcbiAgICAgIH1cbiAgICB9XG4gIH0sIFtyZXNldFNlbGVjdGVkQ2hhdFJlZl0pXG5cbiAgY29uc3QgaGFuZGxlRGVsZXRlQ2hhdCA9IGFzeW5jIChjaGF0OiBhbnkpID0+IHtcbiAgICBkZWxldGVDaGF0KGNoYXQuc2Vzc2lvbkV4dGVybmFsSWQpXG4gICAgc2V0Q2hhdE1lbnVTdGF0ZShudWxsKVxuICAgIGhhbmRsZUdvVG9Ib21lKClcbiAgfVxuXG4gIGNvbnN0IGhhbmRsZVVwZGF0ZUNoYXQgPSAoY2hhdDogYW55KSA9PiB7XG4gICAgdXBkYXRlQ2hhdChjaGF0KVxuICAgIHNldENoYXRNZW51U3RhdGUobnVsbClcbiAgfVxuXG4gIGNvbnN0IGhhbmRsZU9wZW5DaGF0TWVudSA9IChjaGF0SWQ6IHN0cmluZywgc3VyZmFjZTogU2lkZWJhckNoYXRNZW51U3VyZmFjZSkgPT4ge1xuICAgIHNldENoYXRNZW51U3RhdGUocHJldiA9PiAocHJldj8uY2hhdElkID09PSBjaGF0SWQgJiYgcHJldj8uc3VyZmFjZSA9PT0gc3VyZmFjZSA/IG51bGwgOiB7IGNoYXRJZCwgc3VyZmFjZSB9KSlcbiAgfVxuXG4gIGNvbnN0IGhhbmRsZUNsb3NlQ2hhdE1lbnUgPSAoKSA9PiB7XG4gICAgc2V0Q2hhdE1lbnVTdGF0ZShudWxsKVxuICB9XG5cbiAgY29uc3QgaGFuZGxlT3BlblNlY3Rpb25Nb2RhbCA9IGFzeW5jIChzZWN0aW9uS2V5OiBTaWRlYmFyU2VjdGlvbktleSkgPT4ge1xuICAgIHNldENoYXRNZW51U3RhdGUobnVsbClcbiAgICBjb25zdCB7IGxpbWl0OiBzdG9yZUxpbWl0IH0gPSBnZXRDaGF0c1N0b3JlU3RhdGUoKVxuICAgIGlmIChzdG9yZUxpbWl0ID09PSBTSURFQkFSX1NFU1NJT05TX1BBR0VfTElNSVQpIHtcbiAgICAgIGF3YWl0IGZldGNoQ2hhdHMoe1xuICAgICAgICBsaW1pdDogU0VDVElPTl9NT0RBTF9TRVNTSU9OU19QQUdFX0xJTUlULFxuICAgICAgICBvZmZzZXQ6IDAsXG4gICAgICAgIHNob3dHbG9iYWxMb2FkZXI6IGZhbHNlLFxuICAgICAgfSlcbiAgICB9XG4gICAgc2V0RXhwYW5kZWRTZWN0aW9uTW9kYWxLZXkoc2VjdGlvbktleSlcbiAgfVxuXG4gIGNvbnN0IGhhbmRsZUNsb3NlU2VjdGlvbk1vZGFsID0gKCkgPT4ge1xuICAgIHNldEV4cGFuZGVkU2VjdGlvbk1vZGFsS2V5KG51bGwpXG4gICAgc2V0Q2hhdE1lbnVTdGF0ZShudWxsKVxuICB9XG5cbiAgY29uc3QgaGFuZGxlVG9nZ2xlU2VjdGlvbkNvbGxhcHNlID0gKHNlY3Rpb25LZXk6IFNpZGViYXJTZWN0aW9uS2V5KSA9PiB7XG4gICAgc2V0Q29sbGFwc2VkU2VjdGlvbnMocHJldiA9PiAoe1xuICAgICAgLi4ucHJldixcbiAgICAgIFtzZWN0aW9uS2V5XTogIXByZXZbc2VjdGlvbktleV0sXG4gICAgfSkpXG4gIH1cblxuICBjb25zdCBoYW5kbGVTZWxlY3RDb252ZXJzYXRpb24gPSAoY2hhdERhdGE6IGFueSkgPT4ge1xuICAgIHNldFNlbGVjdGVkQ2hhdChjaGF0RGF0YS5zZXNzaW9uRXh0ZXJuYWxJZClcbiAgICBvbkdvVG9DaGF0KGNoYXREYXRhKVxuICB9XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBoYW5kbGVDbGlja091dHNpZGUgPSAoZXZlbnQ6IE1vdXNlRXZlbnQpID0+IHtcbiAgICAgIGNvbnN0IHRhcmdldCA9IGV2ZW50LnRhcmdldCBhcyBFbGVtZW50XG4gICAgICBpZiAoY2hhdE1lbnVTdGF0ZSAmJiAhdGFyZ2V0LmNsb3Nlc3QoJ1tkYXRhLW1vZGFsLWNvbnRhaW5lcl0nKSkge1xuICAgICAgICBzZXRDaGF0TWVudVN0YXRlKG51bGwpXG4gICAgICB9XG4gICAgICBpZiAoZXhwYW5kZWRTZWN0aW9uTW9kYWxLZXkgJiYgIXRhcmdldC5jbG9zZXN0KCdbZGF0YS1zZWN0aW9uLW1vZGFsLWNvbnRhaW5lcl0nKSkge1xuICAgICAgICBzZXRFeHBhbmRlZFNlY3Rpb25Nb2RhbEtleShudWxsKVxuICAgICAgICBzZXRDaGF0TWVudVN0YXRlKG51bGwpXG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGNoYXRNZW51U3RhdGUgfHwgZXhwYW5kZWRTZWN0aW9uTW9kYWxLZXkpIHtcbiAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlZG93bicsIGhhbmRsZUNsaWNrT3V0c2lkZSlcbiAgICB9XG5cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2Vkb3duJywgaGFuZGxlQ2xpY2tPdXRzaWRlKVxuICAgIH1cbiAgfSwgW2NoYXRNZW51U3RhdGUsIGV4cGFuZGVkU2VjdGlvbk1vZGFsS2V5XSlcblxuICBjb25zdCBoYW5kbGVUb2dnbGVTaWRlYmFyID0gKCkgPT4ge1xuICAgIGlmIChjaGF0TWVudVN0YXRlKSB7XG4gICAgICBzZXRDaGF0TWVudVN0YXRlKG51bGwpXG4gICAgfVxuICAgIGlmIChleHBhbmRlZFNlY3Rpb25Nb2RhbEtleSkge1xuICAgICAgc2V0RXhwYW5kZWRTZWN0aW9uTW9kYWxLZXkobnVsbClcbiAgICB9XG4gICAgc2V0SXNPcGVuKHByZXYgPT4gIXByZXYpXG4gIH1cblxuICBjb25zdCBoYW5kbGVPcGVuQ3JlYXRlQWdlbnQgPSBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaE1haWEoe1xuICAgICAgcGF0aDogYGFnZW50cz9hZ2VudF90eXBlPWNsb25lJmxhbmc9JHttYXBDT1JMYW5nKGkxOG4ubGFuZ3VhZ2UpfWAsXG4gICAgICBtZXRob2Q6ICdHRVQnLFxuICAgIH0pXG4gICAgY29uc3QgZGF0YSA9IGF3YWl0IHJlc3BvbnNlLmpzb24oKVxuICAgIGNvbnN0IG1haWFrZXJBZ2VudCA9IChkYXRhLmRhdGEgfHwgW10pLmZpbmQoKGFnZW50OiBhbnkpID0+IGFnZW50LnR5cGUgPT09ICdjbG9uZScgJiYgYWdlbnQuZW50aXR5ID09PSAnZ2xvYmFsJylcblxuICAgIGlmICghbWFpYWtlckFnZW50KSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBzZXRQcm9qZWN0KG51bGwpXG4gICAgc2V0Q2xpZW50Py4obnVsbClcbiAgICBzZWxlY3RBZ2VudChtYWlha2VyQWdlbnQpXG4gICAgaGFuZGxlR29Ub0hvbWUoKVxuICB9XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoaXNPcGVuICYmICFjaGF0c0ZldGNoZWRSZWYuY3VycmVudCkge1xuICAgICAgY2hhdHNGZXRjaGVkUmVmLmN1cnJlbnQgPSB0cnVlXG4gICAgICBmZXRjaENoYXRzKHsgbGltaXQ6IFNJREVCQVJfU0VTU0lPTlNfUEFHRV9MSU1JVCwgb2Zmc2V0OiAwIH0pXG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgaWYgKHJlZmV0Y2hDaGF0cykge1xuICAgICAgZmV0Y2hDaGF0cyh7IGxpbWl0OiBTSURFQkFSX1NFU1NJT05TX1BBR0VfTElNSVQsIG9mZnNldDogMCB9KVxuICAgICAgaGFuZGxlU2V0UmVmZXRjaENoYXRzKGZhbHNlKVxuICAgIH1cbiAgfSwgW2lzT3BlbiwgcmVmZXRjaENoYXRzLCBoYW5kbGVTZXRSZWZldGNoQ2hhdHMsIGZldGNoQ2hhdHNdKVxuXG4gIC8qKiBFbCBzY3JvbGwgaW5maW5pdG8gZGUgc2VzaW9uZXMgdml2ZSBzb2xvIGVuIGVsIG1vZGFsIGRlIHNlY2Npw7NuIChgU2lkZWJhckNoYXRzU2VjdGlvbk1vZGFsYCkuICovXG5cbiAgY29uc3QgaGFuZGxlTmV3Q2hhdCA9IGFzeW5jICgpID0+IHtcbiAgICBpZiAoY2hhdE1lbnVTdGF0ZSkge1xuICAgICAgc2V0Q2hhdE1lbnVTdGF0ZShudWxsKVxuICAgIH1cbiAgICBzZXRTZWxlY3RlZENoYXQobnVsbClcbiAgICBhd2FpdCBmZXRjaENoYXRzKHtcbiAgICAgIGxpbWl0OiBleHBhbmRlZFNlY3Rpb25Nb2RhbEtleSA/IFNFQ1RJT05fTU9EQUxfU0VTU0lPTlNfUEFHRV9MSU1JVCA6IFNJREVCQVJfU0VTU0lPTlNfUEFHRV9MSU1JVCxcbiAgICAgIG9mZnNldDogMCxcbiAgICB9KVxuICAgIGlmIChvbk5ld0NoYXQpIHtcbiAgICAgIGF3YWl0IG9uTmV3Q2hhdCgpXG4gICAgfSBlbHNlIHtcbiAgICAgIGhhbmRsZUdvVG9Ib21lKClcbiAgICB9XG4gIH1cblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGhhbmRsZVJlZmV0Y2hTZXNzaW9uID0gKCkgPT4ge1xuICAgICAgZmV0Y2hDaGF0cyh7IGxpbWl0OiBTSURFQkFSX1NFU1NJT05TX1BBR0VfTElNSVQsIG9mZnNldDogMCB9KVxuICAgIH1cbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdyZWZldGNoLXNlc3Npb24nLCBoYW5kbGVSZWZldGNoU2Vzc2lvbilcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigncmVmZXRjaC1zZXNzaW9uJywgaGFuZGxlUmVmZXRjaFNlc3Npb24pXG4gICAgfVxuICB9LCBbZmV0Y2hDaGF0c10pXG5cbiAgY29uc3Qgc2hvd05ld0NoYXRCdXR0b24gPVxuICAgICFzaG93TmV3Q2hhdCAmJlxuICAgICFoYXNFcnJvciAmJlxuICAgICFsb2FkaW5nQ2hhdHMgJiZcbiAgICAoKHVzZXJQZXJtaXNzaW9ucz8udmlldyAmJlxuICAgICAgIXNlbGVjdGVkQWdlbnQ/LmlzX2RlbGV0ZWQgJiZcbiAgICAgICFzZWxlY3RlZEFnZW50Py5oYXNfbm90X3Blcm1pc3Npb25zICYmXG4gICAgICAhc2VsZWN0ZWRBZ2VudD8uaGFzX25vdF9hY2Nlc3MpIHx8XG4gICAgICAoIXVzZXJQZXJtaXNzaW9ucz8udmlldyAmJlxuICAgICAgICAhc2VsZWN0ZWRBZ2VudD8uaXNfZGVsZXRlZCAmJlxuICAgICAgICAhc2VsZWN0ZWRBZ2VudD8uaGFzX25vdF9wZXJtaXNzaW9ucyAmJlxuICAgICAgICAhc2VsZWN0ZWRBZ2VudD8uaGFzX25vdF9hY2Nlc3MpKVxuXG4gIHJldHVybiAoXG4gICAgPFNDU1NpZGViYXJSb290ICRpc09wZW49e2lzT3Blbn0+XG4gICAgICA8U0NTU2lkZWJhclRvb2xiYXIgJGlzT3Blbj17aXNPcGVufT5cbiAgICAgICAgPFRvb2x0aXAgdGl0bGU9e2lzT3BlbiA/IHQoJ2NvbnZlcnNhdGlvbnMuY29sbGFwc2UnKSA6IHQoJ2NvbnZlcnNhdGlvbnMuZXhwYW5kJyl9PlxuICAgICAgICAgIDxTQ1NXcmFwcGVyQ29sbGFwc2VkQnV0dG9uIG9uQ2xpY2s9e2hhbmRsZVRvZ2dsZVNpZGViYXJ9IGlzT3Blbj17aXNPcGVufT5cbiAgICAgICAgICAgIDxDaGV2cm9uRG91YmxlTGVmdCBjb2xvcj1cIiM0RDRENERcIiB3aWR0aD17MTR9IGhlaWdodD17MTR9IC8+XG4gICAgICAgICAgPC9TQ1NXcmFwcGVyQ29sbGFwc2VkQnV0dG9uPlxuICAgICAgICA8L1Rvb2x0aXA+XG4gICAgICAgIHtzaG93TmV3Q2hhdEJ1dHRvbiA/IChcbiAgICAgICAgICA8VG9vbHRpcCB0aXRsZT17dCgnY29udmVyc2F0aW9ucy5uZXdDaGF0Jyl9PlxuICAgICAgICAgICAgPFNDU1dyYXBwZXJOZXdDaGF0SWNvbiBvbkNsaWNrPXtoYW5kbGVOZXdDaGF0fT5cbiAgICAgICAgICAgICAgPE5ld0NoYXQgd2lkdGg9ezE0fSBoZWlnaHQ9ezE0fSBjb2xvcj1cIiM0RDRENERcIiAvPlxuICAgICAgICAgICAgPC9TQ1NXcmFwcGVyTmV3Q2hhdEljb24+XG4gICAgICAgICAgPC9Ub29sdGlwPlxuICAgICAgICApIDogbnVsbH1cbiAgICAgIDwvU0NTU2lkZWJhclRvb2xiYXI+XG4gICAgICA8U0NTU2lkZWJhckJvZHkgJGlzT3Blbj17aXNPcGVufT5cbiAgICAgICAge2lzT3BlbiA/IChcbiAgICAgICAgICA8U0NTU2lkZWJhck9wZW5QYW5lbCByZWY9e3NpZGViYXJTY3JvbGxSZWZ9PlxuICAgICAgICAgICAgPFNDU1NpZGViYXJBZ2VudHNCbG9jaz5cbiAgICAgICAgICAgICAge3Nob3dBZ2VudHNOYXZCbG9jayA/IChcbiAgICAgICAgICAgICAgICA8U0NTU2lkZWJhckFnZW50c0FjdGlvbnM+XG4gICAgICAgICAgICAgICAgICB7c2hvd01hcmtldHBsYWNlU2lkZWJhckJ1dHRvbiA/IChcbiAgICAgICAgICAgICAgICAgICAgPFNDU1NpZGViYXJNYWlha2VyTmF2QnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnRBbXBsaXR1ZGUoRVZFTlRTLmFpQ2hhdE1wT3BlbilcbiAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZU9wZW5DcmVhdGVBZ2VudCgpXG4gICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAkYWN0aXZlPXthZ2VudHNOYXZBY3RpdmUgPT09ICdtYWlha2VyJ31cbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIDxNYWlhU3RvcmVJY29uIHNpemU9ezE2fSAvPlxuICAgICAgICAgICAgICAgICAgICAgIDxTQ1NTaWRlYmFyTWFpYWtlck5hdkxhYmVsPnt0KCdjb252ZXJzYXRpb25zLm1haWFrZXJOYXYnKX08L1NDU1NpZGViYXJNYWlha2VyTmF2TGFiZWw+XG4gICAgICAgICAgICAgICAgICAgIDwvU0NTU2lkZWJhck1haWFrZXJOYXZCdXR0b24+XG4gICAgICAgICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICAgICAgICAgIHtjYW5WaWV3QWdlbnRzID8gKFxuICAgICAgICAgICAgICAgICAgICA8U0NTU2lkZWJhck1haWFrZXJOYXZCdXR0b25cbiAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXtoYW5kbGVPcGVuTWFya2V0cGxhY2V9XG4gICAgICAgICAgICAgICAgICAgICAgJGFjdGl2ZT17YWdlbnRzTmF2QWN0aXZlID09PSAnbXlBZ2VudHMnfVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgPE15QWdlbnRzTmF2SWNvbiBzaXplPXsxNn0gLz5cbiAgICAgICAgICAgICAgICAgICAgICA8U0NTU2lkZWJhck1haWFrZXJOYXZMYWJlbD57dCgnY29udmVyc2F0aW9ucy5teUFnZW50c05hdicpfTwvU0NTU2lkZWJhck1haWFrZXJOYXZMYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgPC9TQ1NTaWRlYmFyTWFpYWtlck5hdkJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgICAgICAgIDwvU0NTU2lkZWJhckFnZW50c0FjdGlvbnM+XG4gICAgICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgICAgPC9TQ1NTaWRlYmFyQWdlbnRzQmxvY2s+XG4gICAgICAgICAgICA8U0NTU2lkZWJhckNoYXRzU2Nyb2xsXG4gICAgICAgICAgICAgICRoYXNDaGF0cz17Y2hhdHMubGVuZ3RoID4gMCAmJiAhc2hvd0Z1bGxTaWRlYmFyRXJyb3JDb2x1bW59XG4gICAgICAgICAgICAgICRvZmZzZXRWYXJpYW50PXtoYXNFcnJvciA/ICdlcnJvcicgOiAnZGVmYXVsdCd9XG4gICAgICAgICAgICAgICRhZ2VudE5hdkJ1dHRvbkNvdW50PXthZ2VudE5hdkJ1dHRvbkNvdW50fVxuICAgICAgICAgICAgICAkZmlsbEhlaWdodD17c2hvd0Z1bGxTaWRlYmFyRXJyb3JDb2x1bW59XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHtzaG93RnVsbFNpZGViYXJFcnJvckNvbHVtbiA/IChcbiAgICAgICAgICAgICAgICA8U0NTU2lkZWJhckVycm9yU3RhdGVDb2x1bW4+XG4gICAgICAgICAgICAgICAgICA8U0NTU2lkZWJhckVycm9yU3RhdGVUb3A+XG4gICAgICAgICAgICAgICAgICAgIDxFcnJvclN0YXRlIC8+XG4gICAgICAgICAgICAgICAgICA8L1NDU1NpZGViYXJFcnJvclN0YXRlVG9wPlxuICAgICAgICAgICAgICAgICAgPFNDU1NpZGViYXJFcnJvckJhbm5lcj5cbiAgICAgICAgICAgICAgICAgICAgPFNDU1NpZGViYXJFcnJvckJhbm5lckljb25XcmFwPlxuICAgICAgICAgICAgICAgICAgICAgIDxFcnJvckljb24gLz5cbiAgICAgICAgICAgICAgICAgICAgPC9TQ1NTaWRlYmFyRXJyb3JCYW5uZXJJY29uV3JhcD5cbiAgICAgICAgICAgICAgICAgICAgPFNDU1NpZGViYXJFcnJvckJhbm5lck1lc3NhZ2U+e3QoJ2NvbnZlcnNhdGlvbnMuZXJyb3InKX08L1NDU1NpZGViYXJFcnJvckJhbm5lck1lc3NhZ2U+XG4gICAgICAgICAgICAgICAgICA8L1NDU1NpZGViYXJFcnJvckJhbm5lcj5cbiAgICAgICAgICAgICAgICA8L1NDU1NpZGViYXJFcnJvclN0YXRlQ29sdW1uPlxuICAgICAgICAgICAgICApIDogbG9hZGluZ0NoYXRzID8gKFxuICAgICAgICAgICAgICAgIDxTQ1NTaWRlYmFyTG9hZGluZ0FyZWE+XG4gICAgICAgICAgICAgICAgICA8TG9hZGVyIC8+XG4gICAgICAgICAgICAgICAgPC9TQ1NTaWRlYmFyTG9hZGluZ0FyZWE+XG4gICAgICAgICAgICAgICkgOiBjaGF0cy5sZW5ndGggPyAoXG4gICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgIHtzaWRlYmFyU2VjdGlvbnMubWFwKHNlY3Rpb24gPT4gKFxuICAgICAgICAgICAgICAgICAgICA8U2lkZWJhckNoYXRzU2VjdGlvblxuICAgICAgICAgICAgICAgICAgICAgIGtleT17YGNoYXQtc2VjdGlvbi0ke3NlY3Rpb24ua2V5fWB9XG4gICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbj17c2VjdGlvbn1cbiAgICAgICAgICAgICAgICAgICAgICBjb2xsYXBzZWQ9e2NvbGxhcHNlZFNlY3Rpb25zW3NlY3Rpb24ua2V5XX1cbiAgICAgICAgICAgICAgICAgICAgICBvblRvZ2dsZUNvbGxhcHNlPXsoKSA9PiBoYW5kbGVUb2dnbGVTZWN0aW9uQ29sbGFwc2Uoc2VjdGlvbi5rZXkpfVxuICAgICAgICAgICAgICAgICAgICAgIG9uT3Blbk1vcmU9eygpID0+IGhhbmRsZU9wZW5TZWN0aW9uTW9kYWwoc2VjdGlvbi5rZXkpfVxuICAgICAgICAgICAgICAgICAgICAgIGNoYXRNZW51U3RhdGU9e2NoYXRNZW51U3RhdGV9XG4gICAgICAgICAgICAgICAgICAgICAgb25PcGVuQ2hhdE1lbnU9e2hhbmRsZU9wZW5DaGF0TWVudX1cbiAgICAgICAgICAgICAgICAgICAgICBvbkNsb3NlQ2hhdE1lbnU9e2hhbmRsZUNsb3NlQ2hhdE1lbnV9XG4gICAgICAgICAgICAgICAgICAgICAgaGFuZGxlRGVsZXRlQ2hhdD17aGFuZGxlRGVsZXRlQ2hhdH1cbiAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVVcGRhdGVDaGF0PXtoYW5kbGVVcGRhdGVDaGF0fVxuICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkQ2hhdFNlc3Npb25FeHRlcm5hbElkPXtzZWxlY3RlZENoYXR9XG4gICAgICAgICAgICAgICAgICAgICAgb25Hb1RvQ2hhdD17aGFuZGxlU2VsZWN0Q29udmVyc2F0aW9ufVxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICAgICAgICB7aXNMb2FkaW5nTW9yZUNoYXRzICYmIChcbiAgICAgICAgICAgICAgICAgICAgPFNDU1NpZGViYXJMb2FkTW9yZVJvdz5cbiAgICAgICAgICAgICAgICAgICAgICA8TG9hZGVyIC8+XG4gICAgICAgICAgICAgICAgICAgIDwvU0NTU2lkZWJhckxvYWRNb3JlUm93PlxuICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICA8Lz5cbiAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICA8U0NTU2lkZWJhckVtcHR5Q2hhdHM+XG4gICAgICAgICAgICAgICAgICA8RW1wdHlIaXN0b3J5SWNvbiAvPlxuICAgICAgICAgICAgICAgICAgPFNDU1NpZGViYXJFbXB0eUNoYXRzVGV4dD57dCgnY29udmVyc2F0aW9ucy5lbXB0eScpfTwvU0NTU2lkZWJhckVtcHR5Q2hhdHNUZXh0PlxuICAgICAgICAgICAgICAgIDwvU0NTU2lkZWJhckVtcHR5Q2hhdHM+XG4gICAgICAgICAgICAgICl9XG4gICAgICAgICAgICA8L1NDU1NpZGViYXJDaGF0c1Njcm9sbD5cbiAgICAgICAgICAgIDxTQ1NTaWRlYmFyQ2hhdHNGb290ZXI+XG4gICAgICAgICAgICAgIHtzaG93U2lkZWJhckVycm9yRm9vdGVyQmFubmVyID8gKFxuICAgICAgICAgICAgICAgIDxTQ1NTaWRlYmFyRXJyb3JCYW5uZXI+XG4gICAgICAgICAgICAgICAgICA8U0NTU2lkZWJhckVycm9yQmFubmVySWNvbldyYXA+XG4gICAgICAgICAgICAgICAgICAgIDxFcnJvckljb24gLz5cbiAgICAgICAgICAgICAgICAgIDwvU0NTU2lkZWJhckVycm9yQmFubmVySWNvbldyYXA+XG4gICAgICAgICAgICAgICAgICA8U0NTU2lkZWJhckVycm9yQmFubmVyTWVzc2FnZT57dCgnY29udmVyc2F0aW9ucy5lcnJvcicpfTwvU0NTU2lkZWJhckVycm9yQmFubmVyTWVzc2FnZT5cbiAgICAgICAgICAgICAgICA8L1NDU1NpZGViYXJFcnJvckJhbm5lcj5cbiAgICAgICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgICA8L1NDU1NpZGViYXJDaGF0c0Zvb3Rlcj5cbiAgICAgICAgICA8L1NDU1NpZGViYXJPcGVuUGFuZWw+XG4gICAgICAgICkgOiBudWxsfVxuICAgICAgICA8U0NTU2lkZWJhckZvb3RlckFjdGlvbnMgJGlzT3Blbj17aXNPcGVufSAkanVzdGlmeUJldHdlZW49eyEhc2VsZWN0ZWRBZ2VudH0+XG4gICAgICAgICAge3NlbGVjdGVkQWdlbnQgPyA8RmVlZGJhY2tCdXR0b24gc2VsZWN0ZWRBZ2VudD17c2VsZWN0ZWRBZ2VudH0gaXNPcGVuPXtpc09wZW59IC8+IDogbnVsbH1cbiAgICAgICAgICA8T25ib2FyZGluZ01vZGFsQnV0dG9uIC8+XG4gICAgICAgIDwvU0NTU2lkZWJhckZvb3RlckFjdGlvbnM+XG4gICAgICA8L1NDU1NpZGViYXJCb2R5PlxuICAgICAgPEFuaW1hdGVQcmVzZW5jZT5cbiAgICAgICAge2V4cGFuZGVkU2VjdGlvbk1vZGFsS2V5ICYmIGV4cGFuZGVkU2VjdGlvbiA/IChcbiAgICAgICAgICA8PlxuICAgICAgICAgICAgPFNDU1NpZGViYXJTZWN0aW9uTW9kYWxCYWNrZHJvcE1vdGlvblxuICAgICAgICAgICAgICBrZXk9XCJzaWRlYmFyLXNlY3Rpb24tY2hhdC1iYWNrZHJvcFwiXG4gICAgICAgICAgICAgIGFyaWEtaGlkZGVuXG4gICAgICAgICAgICAgIGluaXRpYWw9e3sgb3BhY2l0eTogMCB9fVxuICAgICAgICAgICAgICBhbmltYXRlPXt7IG9wYWNpdHk6IDEgfX1cbiAgICAgICAgICAgICAgZXhpdD17eyBvcGFjaXR5OiAwIH19XG4gICAgICAgICAgICAgIHRyYW5zaXRpb249e3sgZHVyYXRpb246IDAuMiwgZWFzZTogJ2Vhc2VPdXQnIH19XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPFNpZGViYXJDaGF0c1NlY3Rpb25Nb2RhbFxuICAgICAgICAgICAgICBrZXk9e2V4cGFuZGVkU2VjdGlvbk1vZGFsS2V5fVxuICAgICAgICAgICAgICBzZWN0aW9uPXtleHBhbmRlZFNlY3Rpb259XG4gICAgICAgICAgICAgIG9uQ2xvc2U9e2hhbmRsZUNsb3NlU2VjdGlvbk1vZGFsfVxuICAgICAgICAgICAgICBjaGF0TWVudVN0YXRlPXtjaGF0TWVudVN0YXRlfVxuICAgICAgICAgICAgICBvbk9wZW5DaGF0TWVudT17aGFuZGxlT3BlbkNoYXRNZW51fVxuICAgICAgICAgICAgICBvbkNsb3NlQ2hhdE1lbnU9e2hhbmRsZUNsb3NlQ2hhdE1lbnV9XG4gICAgICAgICAgICAgIGhhbmRsZURlbGV0ZUNoYXQ9e2hhbmRsZURlbGV0ZUNoYXR9XG4gICAgICAgICAgICAgIGhhbmRsZVVwZGF0ZUNoYXQ9e2hhbmRsZVVwZGF0ZUNoYXR9XG4gICAgICAgICAgICAgIHNlbGVjdGVkQ2hhdFNlc3Npb25FeHRlcm5hbElkPXtzZWxlY3RlZENoYXR9XG4gICAgICAgICAgICAgIG9uR29Ub0NoYXQ9e2hhbmRsZVNlbGVjdENvbnZlcnNhdGlvbn1cbiAgICAgICAgICAgICAgaGFzTW9yZUNoYXRzPXtoYXNNb3JlQ2hhdHN9XG4gICAgICAgICAgICAgIGxvYWRNb3JlQ2hhdHM9e2xvYWRNb3JlQ2hhdHN9XG4gICAgICAgICAgICAgIGlzTG9hZGluZ01vcmVDaGF0cz17aXNMb2FkaW5nTW9yZUNoYXRzfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8Lz5cbiAgICAgICAgKSA6IG51bGx9XG4gICAgICA8L0FuaW1hdGVQcmVzZW5jZT5cbiAgICA8L1NDU1NpZGViYXJSb290PlxuICApXG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQTJCQSxTQUFTLEVBQUVDLE9BQU8sRUFBRUMsTUFBTSxFQUFFQyxRQUFRLFFBQVEsT0FBTztBQUM5RSxTQUFTQyxlQUFlLFFBQVEsZUFBZTtBQUMvQyxTQUFTQyxpQkFBaUIsUUFBUSxvREFBb0Q7QUFFdEYsU0FBU0MsT0FBTyxRQUFRLDhDQUE4QztBQUV0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
|
|
558
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VFZmZlY3QiLCJ1c2VSZWYiLCJ1c2VTdGF0ZSIsIkNoZXZyb25Eb3VibGVMZWZ0IiwiQ1VCdXR0b24iLCJNZW51RG90cyIsIlBlbmNpbCIsIlRyYXNoIiwiVG9vbHRpcCIsIkVtcHR5SGlzdG9yeUljb24iLCJ1c2VSZXNpemVMaXN0ZW5lciIsInVzZUNoYXRzIiwiTG9hZGVyIiwiRXJyb3JTdGF0ZSIsIk1BSUFJY29uIiwiTWFpYVN0b3JlSWNvbiIsIk15QWdlbnRzTmF2SWNvbiIsIk5ld0NoYXQiLCJFVkVOVFMiLCJ1c2VFdmVudCIsInVzZVQiLCJPcHRpb25JdGVtIiwiRWRpdFF1ZXN0aW9uTW9kYWwiLCJEZWxldGVRdWVzdGlvbk1vZGFsIiwiRXJyb3JJY29uIiwidXNlVXNlciIsIk9uYm9hcmRpbmdNb2RhbEJ1dHRvbiIsIkZlZWRiYWNrQnV0dG9uIiwidXNlR2xvYmFsQ29udGV4dCIsImZldGNoTWFpYSIsIm1hcENPUkxhbmciLCJTQ0xIQ1dyYXBwZXIiLCJTQ0xIQ1dyYXBwZXJBZ2VudCIsIlNDTEhDV3JhcHBlckFnZW50VGV4dCIsIlNDTEhDV3JhcHBlckJ1dHRvbkFjdGlvbnMiLCJTQ0xIQ1dyYXBwZXJDb250ZW50IiwiU0NMSENXcmFwcGVyVGl0bGUiLCJTQ1NXcmFwcGVyQ29sbGFwc2VkQnV0dG9uIiwiU0NTV3JhcHBlck5ld0NoYXRJY29uIiwiU0NTU2lkZWJhclJvb3QiLCJTQ1NTaWRlYmFyVG9vbGJhciIsIlNDU1NpZGViYXJCb2R5IiwiU0NTU2lkZWJhck9wZW5QYW5lbCIsIlNDU1NpZGViYXJBZ2VudHNCbG9jayIsIlNDU1NpZGViYXJBZ2VudHNIZWFkaW5nIiwiU0NTU2lkZWJhckFnZW50c0hlYWRpbmdUZXh0IiwiU0NTU2lkZWJhckFnZW50c0FjdGlvbnMiLCJTQ1NTaWRlYmFyTWFpYWtlck5hdkJ1dHRvbiIsIlNDU1NpZGViYXJNYWlha2VyTmF2TGFiZWwiLCJTQ1NTaWRlYmFyQ29udmVyc2F0aW9uc0hlYWRpbmciLCJTQ1NTaWRlYmFyQ2hhdHNTY3JvbGwiLCJTQ1NTaWRlYmFyRXJyb3JTdGF0ZUNvbHVtbiIsIlNDU1NpZGViYXJFcnJvclN0YXRlVG9wIiwiU0NTU2lkZWJhckVycm9yQmFubmVyIiwiU0NTU2lkZWJhckVycm9yQmFubmVySWNvbldyYXAiLCJTQ1NTaWRlYmFyRXJyb3JCYW5uZXJNZXNzYWdlIiwiU0NTU2lkZWJhckxvYWRpbmdBcmVhIiwiU0NTU2lkZWJhckxvYWRNb3JlUm93IiwiU0NTU2lkZWJhckVtcHR5Q2hhdHMiLCJTQ1NTaWRlYmFyRW1wdHlDaGF0c1RleHQiLCJTQ1NTaWRlYmFyQ2hhdHNGb290ZXIiLCJTQ1NTaWRlYmFyRm9vdGVyQWN0aW9ucyIsImpzeCIsIl9qc3giLCJqc3hzIiwiX2pzeHMiLCJGcmFnbWVudCIsIl9GcmFnbWVudCIsImFjdGlvbnMiLCJlZGl0IiwicHJvcHMiLCJfb2JqZWN0U3ByZWFkIiwiZGVsZXRlIiwiYWJicmV2aWF0ZVNwZWNpYWxpc3RJbkFnZW50TmFtZSIsImFnZW50TmFtZSIsInJlcGxhY2UiLCJMaXN0SGlzdG9yeUNoYXQiLCJfcmVmIiwiY2hhdCIsIm9uQ2xpY2siLCJpc01vZGFsT3BlbiIsIm9uT3Blbk1vZGFsIiwib25DbG9zZU1vZGFsIiwiaGFuZGxlcnMiLCJpc1NlbGVjdGVkIiwidGV4dFJlZiIsImFnZW50UmVmIiwiX3VzZVJlc2l6ZUxpc3RlbmVyIiwidGl0bGUiLCJzaG93VG9vbHRpcCIsIl91c2VSZXNpemVMaXN0ZW5lcjIiLCJhZ2VudCIsInNob3dUb29sdGlwQWdlbnQiLCJfdXNlVCIsInQiLCJfdXNlU3RhdGUiLCJfdXNlU3RhdGUyIiwiX3NsaWNlZFRvQXJyYXkiLCJhY3Rpb24iLCJzZXRBY3Rpb24iLCJtZW51SXRlbXMiLCJsYWJlbCIsIm9uQ2xpY2tJdGVtIiwiY2hhdElkIiwiSWNvbiIsImV2ZW50S2V5IiwicG1BaU1lbnVFZGl0IiwicG1BaU1lbnVEZWxldGUiLCJoYW5kbGVDb25maXJtQWN0aW9uIiwiY2hhdERhdGEiLCJoYW5kbGVVcGRhdGVDaGF0IiwiaGFuZGxlRGVsZXRlQ2hhdCIsImNoaWxkcmVuIiwiZSIsInN0b3BQcm9wYWdhdGlvbiIsInJlZiIsInByb2plY3ROYW1lIiwiY29uY2F0IiwiYWdlbnRUeXBlIiwid2lkdGgiLCJoZWlnaHQiLCJzdHlsZSIsImZvbnRTaXplIiwiZW1vamkiLCJpY29uT25seSIsInNpemUiLCJ2YXJpYW50IiwiZXZlbnQiLCJpZCIsInBvc2l0aW9uIiwidG9wIiwicmlnaHQiLCJiYWNrZ3JvdW5kQ29sb3IiLCJ6SW5kZXgiLCJkaXNwbGF5IiwiZmxleERpcmVjdGlvbiIsImJvcmRlclJhZGl1cyIsImJvcmRlciIsIm1pbldpZHRoIiwibWFwIiwiX3JlZjIiLCJzZXNzaW9uRXh0ZXJuYWxJZCIsIm9uQ2xvc2UiLCJoYW5kbGVTZXRJc09wZW5Nb2RhbCIsIlNpZGViYXIiLCJfcmVmMyIsIl91c2VyJHBlcm1pc3Npb25zIiwib25Hb1RvQ2hhdCIsIl9yZWYzJG9uRXJyb3IiLCJvbkVycm9yIiwiaGFuZGxlR29Ub0hvbWUiLCJoYW5kbGVPcGVuTWFya2V0cGxhY2UiLCJzaG93TmV3Q2hhdCIsInJlZmV0Y2hDaGF0cyIsImhhbmRsZVNldFJlZmV0Y2hDaGF0cyIsImhhc0Vycm9yIiwicmVzZXRTZWxlY3RlZENoYXRSZWYiLCJfcmVmMyRhZ2VudHNOYXZBY3RpdmUiLCJhZ2VudHNOYXZBY3RpdmUiLCJfdXNlVDIiLCJpMThuIiwiX3VzZVN0YXRlMyIsIl91c2VTdGF0ZTQiLCJpc09wZW4iLCJzZXRJc09wZW4iLCJfdXNlU3RhdGU1IiwiX3VzZVN0YXRlNiIsImlzT3Blbk1vZGFsIiwic2V0SXNPcGVuTW9kYWwiLCJfdXNlU3RhdGU3IiwiX3VzZVN0YXRlOCIsInNlbGVjdGVkQ2hhdCIsInNldFNlbGVjdGVkQ2hhdCIsImNoYXRzRmV0Y2hlZFJlZiIsImNoYXRzQ29udGFpbmVyUmVmIiwidXNlciIsImV2ZW50QW1wbGl0dWRlIiwiX3VzZUdsb2JhbENvbnRleHQiLCJzZWxlY3RlZEFnZW50Iiwic2VsZWN0QWdlbnQiLCJzZXRQcm9qZWN0Iiwic2V0Q2xpZW50IiwiX3VzZUNoYXRzIiwibG9hZGluZ0NoYXRzIiwiY2hhdHMiLCJkZWxldGVDaGF0IiwidXBkYXRlQ2hhdCIsImZldGNoQ2hhdHMiLCJsaW1pdCIsIm9mZnNldCIsImhhc01vcmVDaGF0cyIsImxvYWRNb3JlQ2hhdHMiLCJpc0xvYWRpbmdNb3JlQ2hhdHMiLCJ1c2VyUGVybWlzc2lvbnMiLCJwZXJtaXNzaW9ucyIsImFpX2FnZW50cyIsImNhbkNyZWF0ZUFnZW50cyIsImNyZWF0ZSIsImNhblZpZXdBZ2VudHMiLCJ2aWV3Iiwic2hvd01hcmtldHBsYWNlU2lkZWJhckJ1dHRvbiIsIndpbmRvdyIsIk1BSUFfTUFSS0VUUExBQ0VfTUFJQUtFUiIsImFnZW50TmF2QnV0dG9uQ291bnQiLCJzaG93QWdlbnRzTmF2QmxvY2siLCJjdXJyZW50IiwiX3JlZjQiLCJfYXN5bmNUb0dlbmVyYXRvciIsIl9yZWdlbmVyYXRvclJ1bnRpbWUiLCJtYXJrIiwiX2NhbGxlZSIsIndyYXAiLCJfY29udGV4dCIsInByZXYiLCJuZXh0Iiwic3RvcCIsIl94IiwiYXBwbHkiLCJhcmd1bWVudHMiLCJoYW5kbGVPcGVuTW9kYWwiLCJoYW5kbGVDbG9zZU1vZGFsIiwiaGFuZGxlQ2xpY2tPdXRzaWRlIiwidGFyZ2V0IiwiY2xvc2VzdCIsImRvY3VtZW50IiwiYWRkRXZlbnRMaXN0ZW5lciIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJoYW5kbGVUb2dnbGVTaWRlYmFyIiwiaGFuZGxlT3BlbkNyZWF0ZUFnZW50IiwiX3JlZjUiLCJfY2FsbGVlMiIsInJlc3BvbnNlIiwiZGF0YSIsIm1haWFrZXJBZ2VudCIsIl9jb250ZXh0MiIsInBhdGgiLCJsYW5ndWFnZSIsIm1ldGhvZCIsInNlbnQiLCJqc29uIiwiZmluZCIsInR5cGUiLCJlbnRpdHkiLCJhYnJ1cHQiLCJoYW5kbGVTY3JvbGwiLCJfY2hhdHNDb250YWluZXJSZWYkY3UiLCJzY3JvbGxUb3AiLCJzY3JvbGxIZWlnaHQiLCJjbGllbnRIZWlnaHQiLCJpc0F0Qm90dG9tIiwiY29udGFpbmVyIiwiaGFuZGxlTmV3Q2hhdCIsIl9yZWY2IiwiX2NhbGxlZTMiLCJfY29udGV4dDMiLCJoYW5kbGVSZWZldGNoU2Vzc2lvbiIsInNob3dOZXdDaGF0QnV0dG9uIiwiaXNfZGVsZXRlZCIsImhhc19ub3RfcGVybWlzc2lvbnMiLCJoYXNfbm90X2FjY2VzcyIsIiRpc09wZW4iLCJjb2xvciIsImFpQ2hhdE1wT3BlbiIsIiRhY3RpdmUiLCIkaGFzQ2hhdHMiLCJsZW5ndGgiLCIkb2Zmc2V0VmFyaWFudCIsIiRhZ2VudE5hdkJ1dHRvbkNvdW50IiwiJGp1c3RpZnlCZXR3ZWVuIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvbW9sZWN1bGVzL1NpZGViYXIvU2lkZWJhci50c3giXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbm8tcGFyYW0tcmVhc3NpZ24gKi9cbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1zaGFkb3cgKi9cbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cbi8qIGVzbGludC1kaXNhYmxlIG5vLW5lc3RlZC10ZXJuYXJ5ICovXG4vKiBlc2xpbnQtZGlzYWJsZSBqc3gtYTExeS9jbGljay1ldmVudHMtaGF2ZS1rZXktZXZlbnRzICovXG4vKiBlc2xpbnQtZGlzYWJsZSBqc3gtYTExeS9uby1zdGF0aWMtZWxlbWVudC1pbnRlcmFjdGlvbnMgKi9cbmltcG9ydCB7IE11dGFibGVSZWZPYmplY3QsIHVzZUVmZmVjdCwgdXNlUmVmLCB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgQ2hldnJvbkRvdWJsZUxlZnQgfSBmcm9tICdAcHJvamVjdGNvci9pY29ucy9saWIvY29tcG9uZW50cy9DaGV2cm9uRG91YmxlTGVmdCdcbmltcG9ydCB7IENVQnV0dG9uIH0gZnJvbSAnQHByb2plY3Rjb3IvYnV0dG9uL2xpYi9jb21wb25lbnRzL0NVQnV0dG9uJ1xuaW1wb3J0IHsgTWVudURvdHMgfSBmcm9tICdAcHJvamVjdGNvci9pY29ucy9saWIvY29tcG9uZW50cy9NZW51RG90cydcbmltcG9ydCB7IFBlbmNpbCB9IGZyb20gJ0Bwcm9qZWN0Y29yL2ljb25zL2xpYi9jb21wb25lbnRzL1BlbmNpbCdcbmltcG9ydCB7IFRyYXNoIH0gZnJvbSAnQHByb2plY3Rjb3IvaWNvbnMvbGliL2NvbXBvbmVudHMvVHJhc2gnXG5cbmltcG9ydCB7IFRvb2x0aXAgfSBmcm9tICdAcHJvamVjdGNvci90b29sdGlwdjIvbGliL2NvbXBvbmVudHMvVG9vbHRpcCdcblxuaW1wb3J0IHsgRW1wdHlIaXN0b3J5SWNvbiB9IGZyb20gJy4uLy4uL2F0b21zL2ljb25zL0VtcHR5SGlzdG9yeSdcbmltcG9ydCB7IHVzZVJlc2l6ZUxpc3RlbmVyIH0gZnJvbSAnLi4vLi4vLi4vaG9va3MvdXNlUmVzaXplJ1xuaW1wb3J0IHsgdXNlQ2hhdHMgfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VDaGF0cydcbmltcG9ydCB7IExvYWRlciB9IGZyb20gJy4uLy4uL2F0b21zL0xvYWRlcidcbmltcG9ydCB7IEVycm9yU3RhdGUsIE1BSUFJY29uLCBNYWlhU3RvcmVJY29uLCBNeUFnZW50c05hdkljb24sIE5ld0NoYXQgfSBmcm9tICcuLi8uLi9hdG9tcy9pY29ucydcbmltcG9ydCB7IEVWRU5UUywgdXNlRXZlbnQgfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VFdmVudCdcbmltcG9ydCB7IHVzZVQgfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VUJ1xuaW1wb3J0IHsgT3B0aW9uSXRlbSB9IGZyb20gJy4uLy4uL2F0b21zL0NhcmRNZW51L0NhcmRNZW51J1xuaW1wb3J0IHsgRWRpdFF1ZXN0aW9uTW9kYWwgfSBmcm9tICcuLi8uLi9vcmdhbmlzbXMvRWRpdFF1ZXN0aW9uTW9kYWwnXG5pbXBvcnQgeyBEZWxldGVRdWVzdGlvbk1vZGFsIH0gZnJvbSAnLi4vLi4vb3JnYW5pc21zL0RlbGV0ZVF1ZXN0aW9uTW9kYWwnXG5pbXBvcnQgeyBFcnJvckljb24gfSBmcm9tICcuLi8uLi9hdG9tcy9pY29ucy9FcnJvckljb24nXG5pbXBvcnQgeyB1c2VVc2VyIH0gZnJvbSAnLi4vLi4vLi4vY29udGV4dC9jb3ItdXNlcidcbmltcG9ydCB7IE9uYm9hcmRpbmdNb2RhbEJ1dHRvbiB9IGZyb20gJy4uLy4uL2F0b21zL09uYm9hcmRpbmdNb2RhbEJ1dHRvbidcbmltcG9ydCB7IEZlZWRiYWNrQnV0dG9uIH0gZnJvbSAnLi4vLi4vYXRvbXMvRmVlZGJhY2tCdXR0b24nXG5pbXBvcnQgeyB1c2VHbG9iYWxDb250ZXh0IH0gZnJvbSAnLi4vLi4vLi4vY29udGV4dC9nbG9iYWwtY29udGV4dCdcbmltcG9ydCB7IGZldGNoTWFpYSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL21haWEvY2xpZW50J1xuaW1wb3J0IHsgbWFwQ09STGFuZyB9IGZyb20gJy4uLy4uLy4uL2xhbmcvdXRpbHMnXG5pbXBvcnQge1xuICBTQ0xIQ1dyYXBwZXIsXG4gIFNDTEhDV3JhcHBlckFnZW50LFxuICBTQ0xIQ1dyYXBwZXJBZ2VudFRleHQsXG4gIFNDTEhDV3JhcHBlckJ1dHRvbkFjdGlvbnMsXG4gIFNDTEhDV3JhcHBlckNvbnRlbnQsXG4gIFNDTEhDV3JhcHBlclRpdGxlLFxuICBTQ1NXcmFwcGVyQ29sbGFwc2VkQnV0dG9uLFxuICBTQ1NXcmFwcGVyTmV3Q2hhdEljb24sXG59IGZyb20gJy4vU2lkZWJhci5zdHlsZXMnXG5pbXBvcnQge1xuICBTQ1NTaWRlYmFyUm9vdCxcbiAgU0NTU2lkZWJhclRvb2xiYXIsXG4gIFNDU1NpZGViYXJCb2R5LFxuICBTQ1NTaWRlYmFyT3BlblBhbmVsLFxuICBTQ1NTaWRlYmFyQWdlbnRzQmxvY2ssXG4gIFNDU1NpZGViYXJBZ2VudHNIZWFkaW5nLFxuICBTQ1NTaWRlYmFyQWdlbnRzSGVhZGluZ1RleHQsXG4gIFNDU1NpZGViYXJBZ2VudHNBY3Rpb25zLFxuICBTQ1NTaWRlYmFyTWFpYWtlck5hdkJ1dHRvbixcbiAgU0NTU2lkZWJhck1haWFrZXJOYXZMYWJlbCxcbiAgU0NTU2lkZWJhckNvbnZlcnNhdGlvbnNIZWFkaW5nLFxuICBTQ1NTaWRlYmFyQ2hhdHNTY3JvbGwsXG4gIFNDU1NpZGViYXJFcnJvclN0YXRlQ29sdW1uLFxuICBTQ1NTaWRlYmFyRXJyb3JTdGF0ZVRvcCxcbiAgU0NTU2lkZWJhckVycm9yQmFubmVyLFxuICBTQ1NTaWRlYmFyRXJyb3JCYW5uZXJJY29uV3JhcCxcbiAgU0NTU2lkZWJhckVycm9yQmFubmVyTWVzc2FnZSxcbiAgU0NTU2lkZWJhckxvYWRpbmdBcmVhLFxuICBTQ1NTaWRlYmFyTG9hZE1vcmVSb3csXG4gIFNDU1NpZGViYXJFbXB0eUNoYXRzLFxuICBTQ1NTaWRlYmFyRW1wdHlDaGF0c1RleHQsXG4gIFNDU1NpZGViYXJDaGF0c0Zvb3RlcixcbiAgU0NTU2lkZWJhckZvb3RlckFjdGlvbnMsXG59IGZyb20gJy4vU2lkZWJhci5sYXlvdXQuc3R5bGVzJ1xuXG5jb25zdCBhY3Rpb25zID0ge1xuICBlZGl0OiAocHJvcHM6IGFueSkgPT4gPEVkaXRRdWVzdGlvbk1vZGFsIHsuLi5wcm9wc30gLz4sXG4gIGRlbGV0ZTogKHByb3BzOiBhbnkpID0+IDxEZWxldGVRdWVzdGlvbk1vZGFsIHsuLi5wcm9wc30gLz4sXG59XG5cbi8qKiBBYnJldmlhIFwiZXNwZWNpYWxpc3RhXCIvXCJlc3BlY2lhbGlzdFwiIOKGkiBcIkVzcC5cIiAoRVMvUFQpIHkgXCJzcGVjaWFsaXN0XCIg4oaSIFwiU3BlYy5cIiAoRU4pIGVuIGVsIG5vbWJyZSBkZWwgYWdlbnRlLiAqL1xuZnVuY3Rpb24gYWJicmV2aWF0ZVNwZWNpYWxpc3RJbkFnZW50TmFtZShhZ2VudE5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gIGlmICghYWdlbnROYW1lIHx8IHR5cGVvZiBhZ2VudE5hbWUgIT09ICdzdHJpbmcnKSByZXR1cm4gYWdlbnROYW1lXG4gIHJldHVybiBhZ2VudE5hbWUucmVwbGFjZSgvXFxiKGVzcGVjaWFsaXN0YXxlc3BlY2lhbGlzdClcXGIvZ2ksICdFc3AuJykucmVwbGFjZSgvXFxic3BlY2lhbGlzdFxcYi9naSwgJ1NwZWMuJylcbn1cblxuY29uc3QgTGlzdEhpc3RvcnlDaGF0ID0gKHtcbiAgY2hhdCxcbiAgb25DbGljayxcbiAgaXNNb2RhbE9wZW4sXG4gIG9uT3Blbk1vZGFsLFxuICBvbkNsb3NlTW9kYWwsXG4gIGhhbmRsZXJzLFxuICBpc1NlbGVjdGVkLFxufToge1xuICBjaGF0OiBhbnlcbiAgb25DbGljazogKGNoYXQ6IGFueSkgPT4gdm9pZFxuICBpc01vZGFsT3BlbjogYm9vbGVhblxuICBvbk9wZW5Nb2RhbDogKGNoYXRJZDogc3RyaW5nKSA9PiB2b2lkXG4gIG9uQ2xvc2VNb2RhbDogKCkgPT4gdm9pZFxuICBoYW5kbGVyczoge1xuICAgIGhhbmRsZURlbGV0ZUNoYXQ6IChjaGF0OiBhbnkpID0+IHZvaWRcbiAgICBoYW5kbGVVcGRhdGVDaGF0OiAoY2hhdDogYW55KSA9PiB2b2lkXG4gIH1cbiAgaXNTZWxlY3RlZDogYm9vbGVhblxufSkgPT4ge1xuICBjb25zdCB0ZXh0UmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKVxuICBjb25zdCBhZ2VudFJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbClcbiAgY29uc3QgeyBzaG93VG9vbHRpcCB9ID0gdXNlUmVzaXplTGlzdGVuZXIodGV4dFJlZiwgW2NoYXQudGl0bGVdKVxuICBjb25zdCB7IHNob3dUb29sdGlwOiBzaG93VG9vbHRpcEFnZW50IH0gPSB1c2VSZXNpemVMaXN0ZW5lcihhZ2VudFJlZiwgW2NoYXQuYWdlbnRdKVxuICBjb25zdCB7IHQgfSA9IHVzZVQoKVxuICBjb25zdCBbYWN0aW9uLCBzZXRBY3Rpb25dID0gdXNlU3RhdGU8c3RyaW5nIHwgbnVsbD4obnVsbClcblxuICBjb25zdCBtZW51SXRlbXMgPSBbXG4gICAge1xuICAgICAgbGFiZWw6IHQoJ2hpc3RvcnkubWVudS5yZW5hbWUnKSxcbiAgICAgIG9uQ2xpY2tJdGVtOiAoY2hhdElkOiBzdHJpbmcpID0+IHtcbiAgICAgICAgc2V0QWN0aW9uKCdlZGl0JylcbiAgICAgICAgb25PcGVuTW9kYWwoY2hhdElkKVxuICAgICAgfSxcbiAgICAgIEljb246IFBlbmNpbCxcbiAgICAgIGV2ZW50S2V5OiBFVkVOVFMucG1BaU1lbnVFZGl0LFxuICAgIH0sXG4gICAge1xuICAgICAgbGFiZWw6IHQoJ2hpc3RvcnkubWVudS5kZWxldGUnKSxcbiAgICAgIG9uQ2xpY2tJdGVtOiAoY2hhdElkOiBzdHJpbmcpID0+IHtcbiAgICAgICAgc2V0QWN0aW9uKCdkZWxldGUnKVxuICAgICAgICBvbk9wZW5Nb2RhbChjaGF0SWQpXG4gICAgICB9LFxuICAgICAgSWNvbjogVHJhc2gsXG4gICAgICBldmVudEtleTogRVZFTlRTLnBtQWlNZW51RGVsZXRlLFxuICAgIH0sXG4gIF1cblxuICBjb25zdCBoYW5kbGVDb25maXJtQWN0aW9uID0gKGNoYXREYXRhOiBhbnkpID0+IHtcbiAgICBpZiAoYWN0aW9uID09PSAnZWRpdCcpIHtcbiAgICAgIGhhbmRsZXJzLmhhbmRsZVVwZGF0ZUNoYXQoY2hhdERhdGEpXG4gICAgfSBlbHNlIHtcbiAgICAgIGhhbmRsZXJzLmhhbmRsZURlbGV0ZUNoYXQoY2hhdERhdGEpXG4gICAgfVxuICAgIHNldEFjdGlvbihudWxsKVxuICAgIG9uQ2xvc2VNb2RhbCgpXG4gIH1cblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8U0NMSENXcmFwcGVyQ29udGVudFxuICAgICAgICBvbkNsaWNrPXtlID0+IHtcbiAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpXG4gICAgICAgICAgb25DbGljayhjaGF0KVxuICAgICAgICB9fVxuICAgICAgICBrZXk9e2Bjb252ZXJzYXRpb24tJHtjaGF0LnNlc3Npb25FeHRlcm5hbElkfWB9XG4gICAgICAgIGlzTW9kYWxPcGVuPXtpc01vZGFsT3Blbn1cbiAgICAgICAgaXNTZWxlY3RlZD17aXNTZWxlY3RlZH1cbiAgICAgID5cbiAgICAgICAgPFNDTEhDV3JhcHBlcj5cbiAgICAgICAgICA8VG9vbHRpcCB0aXRsZT17c2hvd1Rvb2x0aXAgPyBjaGF0LnRpdGxlIDogJyd9PlxuICAgICAgICAgICAgPFNDTEhDV3JhcHBlclRpdGxlIHJlZj17dGV4dFJlZn0+e2NoYXQudGl0bGUgfHwgdCgnY29udmVyc2F0aW9ucy5lbXB0eUxhYmVsJyl9PC9TQ0xIQ1dyYXBwZXJUaXRsZT5cbiAgICAgICAgICA8L1Rvb2x0aXA+XG4gICAgICAgICAgPFRvb2x0aXAgdGl0bGU9e3Nob3dUb29sdGlwQWdlbnQgPyBjaGF0LmFnZW50ICsgKGNoYXQucHJvamVjdE5hbWUgPyBgIC0gJHtjaGF0LnByb2plY3ROYW1lfWAgOiAnJykgOiAnJ30+XG4gICAgICAgICAgICA8U0NMSENXcmFwcGVyQWdlbnQ+XG4gICAgICAgICAgICAgIHtjaGF0LmFnZW50VHlwZSA9PT0gJ2Nsb25lJyA/IChcbiAgICAgICAgICAgICAgICA8TUFJQUljb24gd2lkdGg9ezE0fSBoZWlnaHQ9ezE0fSAvPlxuICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgIDxzcGFuIHN0eWxlPXt7IGZvbnRTaXplOiAnMTRweCcgfX0+e2NoYXQuZW1vaml9PC9zcGFuPlxuICAgICAgICAgICAgICApfVxuXG4gICAgICAgICAgICAgIDxTQ0xIQ1dyYXBwZXJBZ2VudFRleHQgcmVmPXthZ2VudFJlZn0+XG4gICAgICAgICAgICAgICAge2NoYXQuYWdlbnRUeXBlID09PSAnY2xvbmUnID8gYWJicmV2aWF0ZVNwZWNpYWxpc3RJbkFnZW50TmFtZShjaGF0LmFnZW50KSA6IGNoYXQuYWdlbnR9XG4gICAgICAgICAgICAgICAge2NoYXQucHJvamVjdE5hbWUgJiYgYCAtICR7Y2hhdC5wcm9qZWN0TmFtZX1gfVxuICAgICAgICAgICAgICA8L1NDTEhDV3JhcHBlckFnZW50VGV4dD5cbiAgICAgICAgICAgIDwvU0NMSENXcmFwcGVyQWdlbnQ+XG4gICAgICAgICAgPC9Ub29sdGlwPlxuICAgICAgICA8L1NDTEhDV3JhcHBlcj5cbiAgICAgICAgPFNDTEhDV3JhcHBlckJ1dHRvbkFjdGlvbnM+XG4gICAgICAgICAgPENVQnV0dG9uXG4gICAgICAgICAgICBpY29uT25seVxuICAgICAgICAgICAgc2l6ZT1cInNtYWxsXCJcbiAgICAgICAgICAgIHZhcmlhbnQ9XCJ0ZXh0XCJcbiAgICAgICAgICAgIG9uQ2xpY2s9e2V2ZW50ID0+IHtcbiAgICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcbiAgICAgICAgICAgICAgb25PcGVuTW9kYWwoY2hhdC5pZClcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgPlxuICAgICAgICAgICAgPE1lbnVEb3RzIHdpZHRoPXsyMH0gaGVpZ2h0PXsyMH0gLz5cbiAgICAgICAgICA8L0NVQnV0dG9uPlxuICAgICAgICAgIHtpc01vZGFsT3BlbiAmJiAhYWN0aW9uICYmIChcbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgZGF0YS1tb2RhbC1jb250YWluZXJcbiAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogJ2Fic29sdXRlJyxcbiAgICAgICAgICAgICAgICB0b3A6ICczMnB4JyxcbiAgICAgICAgICAgICAgICByaWdodDogJzE2cHgnLFxuICAgICAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogJ3doaXRlJyxcbiAgICAgICAgICAgICAgICB6SW5kZXg6IDEwMDAsXG4gICAgICAgICAgICAgICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgICAgICAgICAgICAgIGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLFxuICAgICAgICAgICAgICAgIGJvcmRlclJhZGl1czogJzRweCcsXG4gICAgICAgICAgICAgICAgYm9yZGVyOiAnMXB4IHNvbGlkIHJnYmEoMjI0LCAyMjQsIDIyNCwgMSknLFxuICAgICAgICAgICAgICAgIG1pbldpZHRoOiAnMTI0cHgnLFxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7bWVudUl0ZW1zLm1hcCgoeyBsYWJlbCwgb25DbGlja0l0ZW0sIEljb24sIGV2ZW50S2V5IH0pID0+IChcbiAgICAgICAgICAgICAgICA8T3B0aW9uSXRlbVxuICAgICAgICAgICAgICAgICAga2V5PXtsYWJlbH1cbiAgICAgICAgICAgICAgICAgIGxhYmVsPXtsYWJlbH1cbiAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IG9uQ2xpY2tJdGVtKGNoYXQuaWQpfVxuICAgICAgICAgICAgICAgICAgSWNvbj17SWNvbn1cbiAgICAgICAgICAgICAgICAgIGV2ZW50S2V5PXtldmVudEtleX1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICl9XG4gICAgICAgIDwvU0NMSENXcmFwcGVyQnV0dG9uQWN0aW9ucz5cbiAgICAgIDwvU0NMSENXcmFwcGVyQ29udGVudD5cbiAgICAgIHshIWFjdGlvbiAmJlxuICAgICAgICBhY3Rpb25zW2FjdGlvbl0oe1xuICAgICAgICAgIG9uQ2xvc2U6ICgpID0+IHtcbiAgICAgICAgICAgIG9uQ2xvc2VNb2RhbCgpXG4gICAgICAgICAgICBzZXRBY3Rpb24obnVsbClcbiAgICAgICAgICB9LFxuICAgICAgICAgIGNoYXQsXG4gICAgICAgICAgaGFuZGxlcnM6IHtcbiAgICAgICAgICAgIGhhbmRsZUNvbmZpcm1BY3Rpb24sXG4gICAgICAgICAgICBoYW5kbGVTZXRJc09wZW5Nb2RhbDogb25DbG9zZU1vZGFsLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pfVxuICAgIDwvPlxuICApXG59XG5cbmV4cG9ydCBjb25zdCBTaWRlYmFyID0gKHtcbiAgb25Hb1RvQ2hhdCxcbiAgb25FcnJvciA9ICgpID0+IG51bGwsXG4gIGhhbmRsZUdvVG9Ib21lLFxuICBoYW5kbGVPcGVuTWFya2V0cGxhY2UsXG4gIHNob3dOZXdDaGF0LFxuICByZWZldGNoQ2hhdHMsXG4gIGhhbmRsZVNldFJlZmV0Y2hDaGF0cyxcbiAgaGFzRXJyb3IsXG4gIHJlc2V0U2VsZWN0ZWRDaGF0UmVmLFxuICBhZ2VudHNOYXZBY3RpdmUgPSBudWxsLFxufToge1xuICBvbkdvVG9DaGF0OiAoY2hhdElkOiBzdHJpbmcpID0+IHZvaWRcbiAgb25FcnJvcjogKCkgPT4gdm9pZFxuICBoYW5kbGVHb1RvSG9tZTogKCkgPT4gdm9pZFxuICBoYW5kbGVPcGVuTWFya2V0cGxhY2U6ICgpID0+IHZvaWRcbiAgc2hvd05ld0NoYXQ6IGJvb2xlYW5cbiAgcmVmZXRjaENoYXRzOiBib29sZWFuXG4gIGhhbmRsZVNldFJlZmV0Y2hDaGF0czogKHJlZmV0Y2g6IGJvb2xlYW4pID0+IHZvaWRcbiAgaGFzRXJyb3I6IGJvb2xlYW5cbiAgcmVzZXRTZWxlY3RlZENoYXRSZWY/OiBNdXRhYmxlUmVmT2JqZWN0PCgoKSA9PiB2b2lkKSB8IG51bGw+XG4gIC8qKiBSZXNhbHRhIE1haWFrZXIgbyBNaXMgYWdlbnRlcyAqL1xuICBhZ2VudHNOYXZBY3RpdmU/OiAnbWFpYWtlcicgfCAnbXlBZ2VudHMnIHwgbnVsbFxufSkgPT4ge1xuICBjb25zdCB7IHQsIGkxOG4gfSA9IHVzZVQoKVxuICBjb25zdCBbaXNPcGVuLCBzZXRJc09wZW5dID0gdXNlU3RhdGUodHJ1ZSlcbiAgY29uc3QgW2lzT3Blbk1vZGFsLCBzZXRJc09wZW5Nb2RhbF0gPSB1c2VTdGF0ZTxzdHJpbmcgfCBudWxsPihudWxsKVxuICBjb25zdCBbc2VsZWN0ZWRDaGF0LCBzZXRTZWxlY3RlZENoYXRdID0gdXNlU3RhdGU8c3RyaW5nIHwgbnVsbD4obnVsbClcbiAgY29uc3QgY2hhdHNGZXRjaGVkUmVmID0gdXNlUmVmKGZhbHNlKVxuICBjb25zdCBjaGF0c0NvbnRhaW5lclJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbClcbiAgY29uc3QgdXNlciA9IHVzZVVzZXIoKVxuICBjb25zdCBldmVudEFtcGxpdHVkZSA9IHVzZUV2ZW50KClcbiAgY29uc3QgeyBhZ2VudDogc2VsZWN0ZWRBZ2VudCwgc2VsZWN0QWdlbnQsIHNldFByb2plY3QsIHNldENsaWVudCB9ID0gdXNlR2xvYmFsQ29udGV4dCgpXG4gIGNvbnN0IHtcbiAgICBsb2FkaW5nQ2hhdHMsXG4gICAgY2hhdHMsXG4gICAgZGVsZXRlQ2hhdCxcbiAgICB1cGRhdGVDaGF0LFxuICAgIGZldGNoQ2hhdHMsXG4gICAgbGltaXQsXG4gICAgb2Zmc2V0LFxuICAgIGhhc01vcmVDaGF0cyxcbiAgICBsb2FkTW9yZUNoYXRzLFxuICAgIGlzTG9hZGluZ01vcmVDaGF0cyxcbiAgfSA9IHVzZUNoYXRzKHtcbiAgICBvbkVycm9yLFxuICB9KVxuXG4gIGNvbnN0IHVzZXJQZXJtaXNzaW9ucyA9IHVzZXI/LnBlcm1pc3Npb25zPy5haV9hZ2VudHNcbiAgY29uc3QgY2FuQ3JlYXRlQWdlbnRzID0gISF1c2VyUGVybWlzc2lvbnM/LmNyZWF0ZVxuICBjb25zdCBjYW5WaWV3QWdlbnRzID0gISF1c2VyUGVybWlzc2lvbnM/LnZpZXdcbiAgY29uc3Qgc2hvd01hcmtldHBsYWNlU2lkZWJhckJ1dHRvbiA9ICEhY2FuQ3JlYXRlQWdlbnRzICYmICEhd2luZG93Lk1BSUFfTUFSS0VUUExBQ0VfTUFJQUtFUlxuICBjb25zdCBhZ2VudE5hdkJ1dHRvbkNvdW50ID0gKChzaG93TWFya2V0cGxhY2VTaWRlYmFyQnV0dG9uID8gMSA6IDApICsgKGNhblZpZXdBZ2VudHMgPyAxIDogMCkpIGFzIDAgfCAxIHwgMlxuICBjb25zdCBzaG93QWdlbnRzTmF2QmxvY2sgPSBzaG93TWFya2V0cGxhY2VTaWRlYmFyQnV0dG9uIHx8IGNhblZpZXdBZ2VudHNcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChyZXNldFNlbGVjdGVkQ2hhdFJlZikge1xuICAgICAgcmVzZXRTZWxlY3RlZENoYXRSZWYuY3VycmVudCA9ICgpID0+IHNldFNlbGVjdGVkQ2hhdChudWxsKVxuICAgIH1cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgaWYgKHJlc2V0U2VsZWN0ZWRDaGF0UmVmKSB7XG4gICAgICAgIHJlc2V0U2VsZWN0ZWRDaGF0UmVmLmN1cnJlbnQgPSBudWxsXG4gICAgICB9XG4gICAgfVxuICB9LCBbcmVzZXRTZWxlY3RlZENoYXRSZWZdKVxuXG4gIGNvbnN0IGhhbmRsZURlbGV0ZUNoYXQgPSBhc3luYyAoY2hhdDogYW55KSA9PiB7XG4gICAgZGVsZXRlQ2hhdChjaGF0LnNlc3Npb25FeHRlcm5hbElkKVxuICAgIHNldElzT3Blbk1vZGFsKG51bGwpXG4gICAgaGFuZGxlR29Ub0hvbWUoKVxuICB9XG5cbiAgY29uc3QgaGFuZGxlVXBkYXRlQ2hhdCA9IChjaGF0OiBhbnkpID0+IHtcbiAgICB1cGRhdGVDaGF0KGNoYXQpXG4gICAgc2V0SXNPcGVuTW9kYWwobnVsbClcbiAgfVxuXG4gIGNvbnN0IGhhbmRsZU9wZW5Nb2RhbCA9IChjaGF0SWQ6IHN0cmluZykgPT4ge1xuICAgIGlmIChpc09wZW5Nb2RhbCAmJiBpc09wZW5Nb2RhbCAhPT0gY2hhdElkKSB7XG4gICAgICBzZXRJc09wZW5Nb2RhbChudWxsKVxuICAgIH0gZWxzZSB7XG4gICAgICBzZXRJc09wZW5Nb2RhbChjaGF0SWQpXG4gICAgfVxuICB9XG5cbiAgY29uc3QgaGFuZGxlQ2xvc2VNb2RhbCA9ICgpID0+IHtcbiAgICBzZXRJc09wZW5Nb2RhbChudWxsKVxuICB9XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBoYW5kbGVDbGlja091dHNpZGUgPSAoZXZlbnQ6IE1vdXNlRXZlbnQpID0+IHtcbiAgICAgIGlmIChpc09wZW5Nb2RhbCAmJiAhKGV2ZW50LnRhcmdldCBhcyBFbGVtZW50KS5jbG9zZXN0KCdbZGF0YS1tb2RhbC1jb250YWluZXJdJykpIHtcbiAgICAgICAgc2V0SXNPcGVuTW9kYWwobnVsbClcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoaXNPcGVuTW9kYWwpIHtcbiAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlZG93bicsIGhhbmRsZUNsaWNrT3V0c2lkZSlcbiAgICB9XG5cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2Vkb3duJywgaGFuZGxlQ2xpY2tPdXRzaWRlKVxuICAgIH1cbiAgfSwgW2lzT3Blbk1vZGFsXSlcblxuICBjb25zdCBoYW5kbGVUb2dnbGVTaWRlYmFyID0gKCkgPT4ge1xuICAgIGlmIChpc09wZW5Nb2RhbCkge1xuICAgICAgc2V0SXNPcGVuTW9kYWwobnVsbClcbiAgICB9XG4gICAgc2V0SXNPcGVuKHByZXYgPT4gIXByZXYpXG4gIH1cblxuICBjb25zdCBoYW5kbGVPcGVuQ3JlYXRlQWdlbnQgPSBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaE1haWEoe1xuICAgICAgcGF0aDogYGFnZW50cz9hZ2VudF90eXBlPWNsb25lJmxhbmc9JHttYXBDT1JMYW5nKGkxOG4ubGFuZ3VhZ2UpfWAsXG4gICAgICBtZXRob2Q6ICdHRVQnLFxuICAgIH0pXG4gICAgY29uc3QgZGF0YSA9IGF3YWl0IHJlc3BvbnNlLmpzb24oKVxuICAgIGNvbnN0IG1haWFrZXJBZ2VudCA9IChkYXRhLmRhdGEgfHwgW10pLmZpbmQoKGFnZW50OiBhbnkpID0+IGFnZW50LnR5cGUgPT09ICdjbG9uZScgJiYgYWdlbnQuZW50aXR5ID09PSAnZ2xvYmFsJylcblxuICAgIGlmICghbWFpYWtlckFnZW50KSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBzZXRQcm9qZWN0KG51bGwpXG4gICAgc2V0Q2xpZW50Py4obnVsbClcbiAgICBzZWxlY3RBZ2VudChtYWlha2VyQWdlbnQpXG4gICAgaGFuZGxlR29Ub0hvbWUoKVxuICB9XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoaXNPcGVuICYmICFjaGF0c0ZldGNoZWRSZWYuY3VycmVudCkge1xuICAgICAgY2hhdHNGZXRjaGVkUmVmLmN1cnJlbnQgPSB0cnVlXG4gICAgICBmZXRjaENoYXRzKHsgbGltaXQsIG9mZnNldCB9KVxuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGlmIChyZWZldGNoQ2hhdHMpIHtcbiAgICAgIGZldGNoQ2hhdHMoeyBsaW1pdCwgb2Zmc2V0IH0pXG4gICAgICBoYW5kbGVTZXRSZWZldGNoQ2hhdHMoZmFsc2UpXG4gICAgfVxuICB9LCBbaXNPcGVuLCByZWZldGNoQ2hhdHMsIGhhbmRsZVNldFJlZmV0Y2hDaGF0c10pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBoYW5kbGVTY3JvbGwgPSAoKSA9PiB7XG4gICAgICBpZiAoIWNoYXRzQ29udGFpbmVyUmVmLmN1cnJlbnQgfHwgIWhhc01vcmVDaGF0cyB8fCBpc0xvYWRpbmdNb3JlQ2hhdHMgfHwgaGFzRXJyb3IpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHsgc2Nyb2xsVG9wLCBzY3JvbGxIZWlnaHQsIGNsaWVudEhlaWdodCB9ID0gY2hhdHNDb250YWluZXJSZWYuY3VycmVudFxuICAgICAgY29uc3QgaXNBdEJvdHRvbSA9IHNjcm9sbFRvcCArIGNsaWVudEhlaWdodCA+PSBzY3JvbGxIZWlnaHQgLSAxMFxuXG4gICAgICBpZiAoaXNBdEJvdHRvbSkge1xuICAgICAgICBsb2FkTW9yZUNoYXRzKClcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBjb250YWluZXIgPSBjaGF0c0NvbnRhaW5lclJlZi5jdXJyZW50XG4gICAgaWYgKGNvbnRhaW5lcikge1xuICAgICAgY29udGFpbmVyLmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIGhhbmRsZVNjcm9sbClcbiAgICB9XG5cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgaWYgKGNvbnRhaW5lcikge1xuICAgICAgICBjb250YWluZXIucmVtb3ZlRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgaGFuZGxlU2Nyb2xsKVxuICAgICAgfVxuICAgIH1cbiAgfSwgW2hhc01vcmVDaGF0cywgaXNMb2FkaW5nTW9yZUNoYXRzLCBsb2FkTW9yZUNoYXRzLCBoYXNFcnJvcl0pXG5cbiAgY29uc3QgaGFuZGxlTmV3Q2hhdCA9IGFzeW5jICgpID0+IHtcbiAgICBpZiAoaXNPcGVuTW9kYWwpIHtcbiAgICAgIHNldElzT3Blbk1vZGFsKG51bGwpXG4gICAgfVxuICAgIHNldFNlbGVjdGVkQ2hhdChudWxsKVxuICAgIGF3YWl0IGZldGNoQ2hhdHMoeyBsaW1pdCwgb2Zmc2V0OiAwIH0pXG4gICAgaGFuZGxlR29Ub0hvbWUoKVxuICB9XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBoYW5kbGVSZWZldGNoU2Vzc2lvbiA9ICgpID0+IHtcbiAgICAgIGZldGNoQ2hhdHMoeyBsaW1pdDogMjAsIG9mZnNldDogMCB9KVxuICAgIH1cbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdyZWZldGNoLXNlc3Npb24nLCBoYW5kbGVSZWZldGNoU2Vzc2lvbilcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigncmVmZXRjaC1zZXNzaW9uJywgaGFuZGxlUmVmZXRjaFNlc3Npb24pXG4gICAgfVxuICB9LCBbXSlcblxuICBjb25zdCBzaG93TmV3Q2hhdEJ1dHRvbiA9XG4gICAgIXNob3dOZXdDaGF0ICYmXG4gICAgIWhhc0Vycm9yICYmXG4gICAgIWxvYWRpbmdDaGF0cyAmJlxuICAgICgodXNlclBlcm1pc3Npb25zPy52aWV3ICYmXG4gICAgICAhc2VsZWN0ZWRBZ2VudD8uaXNfZGVsZXRlZCAmJlxuICAgICAgIXNlbGVjdGVkQWdlbnQ/Lmhhc19ub3RfcGVybWlzc2lvbnMgJiZcbiAgICAgICFzZWxlY3RlZEFnZW50Py5oYXNfbm90X2FjY2VzcykgfHxcbiAgICAgICghdXNlclBlcm1pc3Npb25zPy52aWV3ICYmXG4gICAgICAgICFzZWxlY3RlZEFnZW50Py5pc19kZWxldGVkICYmXG4gICAgICAgICFzZWxlY3RlZEFnZW50Py5oYXNfbm90X3Blcm1pc3Npb25zICYmXG4gICAgICAgICFzZWxlY3RlZEFnZW50Py5oYXNfbm90X2FjY2VzcykpXG5cbiAgcmV0dXJuIChcbiAgICA8U0NTU2lkZWJhclJvb3QgJGlzT3Blbj17aXNPcGVufT5cbiAgICAgIDxTQ1NTaWRlYmFyVG9vbGJhciAkaXNPcGVuPXtpc09wZW59PlxuICAgICAgICA8VG9vbHRpcCB0aXRsZT17aXNPcGVuID8gdCgnY29udmVyc2F0aW9ucy5jb2xsYXBzZScpIDogdCgnY29udmVyc2F0aW9ucy5leHBhbmQnKX0+XG4gICAgICAgICAgPFNDU1dyYXBwZXJDb2xsYXBzZWRCdXR0b24gb25DbGljaz17aGFuZGxlVG9nZ2xlU2lkZWJhcn0gaXNPcGVuPXtpc09wZW59PlxuICAgICAgICAgICAgPENoZXZyb25Eb3VibGVMZWZ0IGNvbG9yPVwicmdiYSgxMDIsIDEwMiwgMTAyLCAxKVwiIHdpZHRoPXsyMH0gaGVpZ2h0PXsyMH0gLz5cbiAgICAgICAgICA8L1NDU1dyYXBwZXJDb2xsYXBzZWRCdXR0b24+XG4gICAgICAgIDwvVG9vbHRpcD5cbiAgICAgICAge3Nob3dOZXdDaGF0QnV0dG9uID8gKFxuICAgICAgICAgIDxUb29sdGlwIHRpdGxlPXt0KCdjb252ZXJzYXRpb25zLm5ld0NoYXQnKX0+XG4gICAgICAgICAgICA8U0NTV3JhcHBlck5ld0NoYXRJY29uIG9uQ2xpY2s9e2hhbmRsZU5ld0NoYXR9PlxuICAgICAgICAgICAgICA8TmV3Q2hhdCB3aWR0aD17MjB9IGhlaWdodD17MjB9IC8+XG4gICAgICAgICAgICA8L1NDU1dyYXBwZXJOZXdDaGF0SWNvbj5cbiAgICAgICAgICA8L1Rvb2x0aXA+XG4gICAgICAgICkgOiBudWxsfVxuICAgICAgPC9TQ1NTaWRlYmFyVG9vbGJhcj5cbiAgICAgIDxTQ1NTaWRlYmFyQm9keSAkaXNPcGVuPXtpc09wZW59PlxuICAgICAgICB7aXNPcGVuID8gKFxuICAgICAgICAgIDxTQ1NTaWRlYmFyT3BlblBhbmVsPlxuICAgICAgICAgICAgPFNDU1NpZGViYXJBZ2VudHNCbG9jaz5cbiAgICAgICAgICAgICAge3Nob3dBZ2VudHNOYXZCbG9jayA/IChcbiAgICAgICAgICAgICAgICA8PlxuICAgICAgICAgICAgICAgICAgPFNDU1NpZGViYXJBZ2VudHNIZWFkaW5nPlxuICAgICAgICAgICAgICAgICAgICA8U0NTU2lkZWJhckFnZW50c0hlYWRpbmdUZXh0Pnt0KCdjb252ZXJzYXRpb25zLmFnZW50c1NlY3Rpb25UaXRsZScpfTwvU0NTU2lkZWJhckFnZW50c0hlYWRpbmdUZXh0PlxuICAgICAgICAgICAgICAgICAgPC9TQ1NTaWRlYmFyQWdlbnRzSGVhZGluZz5cbiAgICAgICAgICAgICAgICAgIDxTQ1NTaWRlYmFyQWdlbnRzQWN0aW9ucz5cbiAgICAgICAgICAgICAgICAgICAge3Nob3dNYXJrZXRwbGFjZVNpZGViYXJCdXR0b24gPyAoXG4gICAgICAgICAgICAgICAgICAgICAgPFNDU1NpZGViYXJNYWlha2VyTmF2QnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnRBbXBsaXR1ZGUoRVZFTlRTLmFpQ2hhdE1wT3BlbilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlT3BlbkNyZWF0ZUFnZW50KClcbiAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAkYWN0aXZlPXthZ2VudHNOYXZBY3RpdmUgPT09ICdtYWlha2VyJ31cbiAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8TWFpYVN0b3JlSWNvbiBzaXplPXsxNn0gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxTQ1NTaWRlYmFyTWFpYWtlck5hdkxhYmVsPnt0KCdjb252ZXJzYXRpb25zLm1haWFrZXJOYXYnKX08L1NDU1NpZGViYXJNYWlha2VyTmF2TGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgPC9TQ1NTaWRlYmFyTWFpYWtlck5hdkJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgICAgICAgICAgIHtjYW5WaWV3QWdlbnRzID8gKFxuICAgICAgICAgICAgICAgICAgICAgIDxTQ1NTaWRlYmFyTWFpYWtlck5hdkJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXtoYW5kbGVPcGVuTWFya2V0cGxhY2V9XG4gICAgICAgICAgICAgICAgICAgICAgICAkYWN0aXZlPXthZ2VudHNOYXZBY3RpdmUgPT09ICdteUFnZW50cyd9XG4gICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPE15QWdlbnRzTmF2SWNvbiBzaXplPXsxNn0gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxTQ1NTaWRlYmFyTWFpYWtlck5hdkxhYmVsPnt0KCdjb252ZXJzYXRpb25zLm15QWdlbnRzTmF2Jyl9PC9TQ1NTaWRlYmFyTWFpYWtlck5hdkxhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgIDwvU0NTU2lkZWJhck1haWFrZXJOYXZCdXR0b24+XG4gICAgICAgICAgICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgICAgICAgICAgPC9TQ1NTaWRlYmFyQWdlbnRzQWN0aW9ucz5cbiAgICAgICAgICAgICAgICA8Lz5cbiAgICAgICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgICAgIDxTQ1NTaWRlYmFyQ29udmVyc2F0aW9uc0hlYWRpbmc+e3QoJ2NvbnZlcnNhdGlvbnMudGl0bGUnKX08L1NDU1NpZGViYXJDb252ZXJzYXRpb25zSGVhZGluZz5cbiAgICAgICAgICAgIDwvU0NTU2lkZWJhckFnZW50c0Jsb2NrPlxuICAgICAgICAgICAgPFNDU1NpZGViYXJDaGF0c1Njcm9sbFxuICAgICAgICAgICAgICByZWY9e2NoYXRzQ29udGFpbmVyUmVmfVxuICAgICAgICAgICAgICAkaGFzQ2hhdHM9e2NoYXRzLmxlbmd0aCA+IDB9XG4gICAgICAgICAgICAgICRvZmZzZXRWYXJpYW50PXtoYXNFcnJvciA/ICdlcnJvcicgOiAnZGVmYXVsdCd9XG4gICAgICAgICAgICAgICRhZ2VudE5hdkJ1dHRvbkNvdW50PXthZ2VudE5hdkJ1dHRvbkNvdW50fVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7aGFzRXJyb3IgJiYgIWNoYXRzLmxlbmd0aCA/IChcbiAgICAgICAgICAgICAgICA8U0NTU2lkZWJhckVycm9yU3RhdGVDb2x1bW4+XG4gICAgICAgICAgICAgICAgICA8U0NTU2lkZWJhckVycm9yU3RhdGVUb3A+XG4gICAgICAgICAgICAgICAgICAgIDxFcnJvclN0YXRlIC8+XG4gICAgICAgICAgICAgICAgICA8L1NDU1NpZGViYXJFcnJvclN0YXRlVG9wPlxuICAgICAgICAgICAgICAgICAgPFNDU1NpZGViYXJFcnJvckJhbm5lcj5cbiAgICAgICAgICAgICAgICAgICAgPFNDU1NpZGViYXJFcnJvckJhbm5lckljb25XcmFwPlxuICAgICAgICAgICAgICAgICAgICAgIDxFcnJvckljb24gLz5cbiAgICAgICAgICAgICAgICAgICAgPC9TQ1NTaWRlYmFyRXJyb3JCYW5uZXJJY29uV3JhcD5cbiAgICAgICAgICAgICAgICAgICAgPFNDU1NpZGViYXJFcnJvckJhbm5lck1lc3NhZ2U+e3QoJ2NvbnZlcnNhdGlvbnMuZXJyb3InKX08L1NDU1NpZGViYXJFcnJvckJhbm5lck1lc3NhZ2U+XG4gICAgICAgICAgICAgICAgICA8L1NDU1NpZGViYXJFcnJvckJhbm5lcj5cbiAgICAgICAgICAgICAgICA8L1NDU1NpZGViYXJFcnJvclN0YXRlQ29sdW1uPlxuICAgICAgICAgICAgICApIDogbG9hZGluZ0NoYXRzID8gKFxuICAgICAgICAgICAgICAgIDxTQ1NTaWRlYmFyTG9hZGluZ0FyZWE+XG4gICAgICAgICAgICAgICAgICA8TG9hZGVyIC8+XG4gICAgICAgICAgICAgICAgPC9TQ1NTaWRlYmFyTG9hZGluZ0FyZWE+XG4gICAgICAgICAgICAgICkgOiBjaGF0cy5sZW5ndGggPyAoXG4gICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgIHtjaGF0cy5tYXAoY2hhdCA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgPExpc3RIaXN0b3J5Q2hhdFxuICAgICAgICAgICAgICAgICAgICAgICAga2V5PXtjaGF0LmlkfVxuICAgICAgICAgICAgICAgICAgICAgICAgY2hhdD17Y2hhdH1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e2NoYXREYXRhID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzT3Blbk1vZGFsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0SXNPcGVuTW9kYWwobnVsbClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRTZWxlY3RlZENoYXQoY2hhdERhdGEuc2Vzc2lvbkV4dGVybmFsSWQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9uR29Ub0NoYXQoY2hhdERhdGEpXG4gICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgaXNNb2RhbE9wZW49e2lzT3Blbk1vZGFsID09PSBjaGF0LmlkfVxuICAgICAgICAgICAgICAgICAgICAgICAgb25PcGVuTW9kYWw9e2hhbmRsZU9wZW5Nb2RhbH1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xvc2VNb2RhbD17aGFuZGxlQ2xvc2VNb2RhbH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZXJzPXt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZURlbGV0ZUNoYXQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZVVwZGF0ZUNoYXQsXG4gICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgaXNTZWxlY3RlZD17c2VsZWN0ZWRDaGF0ID09PSBjaGF0LnNlc3Npb25FeHRlcm5hbElkfVxuICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgIH0pfVxuICAgICAgICAgICAgICAgICAge2lzTG9hZGluZ01vcmVDaGF0cyAmJiAoXG4gICAgICAgICAgICAgICAgICAgIDxTQ1NTaWRlYmFyTG9hZE1vcmVSb3c+XG4gICAgICAgICAgICAgICAgICAgICAgPExvYWRlciAvPlxuICAgICAgICAgICAgICAgICAgICA8L1NDU1NpZGViYXJMb2FkTW9yZVJvdz5cbiAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgPFNDU1NpZGViYXJFbXB0eUNoYXRzPlxuICAgICAgICAgICAgICAgICAgPEVtcHR5SGlzdG9yeUljb24gLz5cbiAgICAgICAgICAgICAgICAgIDxTQ1NTaWRlYmFyRW1wdHlDaGF0c1RleHQ+e3QoJ2NvbnZlcnNhdGlvbnMuZW1wdHknKX08L1NDU1NpZGViYXJFbXB0eUNoYXRzVGV4dD5cbiAgICAgICAgICAgICAgICA8L1NDU1NpZGViYXJFbXB0eUNoYXRzPlxuICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgPC9TQ1NTaWRlYmFyQ2hhdHNTY3JvbGw+XG4gICAgICAgICAgICA8U0NTU2lkZWJhckNoYXRzRm9vdGVyPlxuICAgICAgICAgICAgICB7aGFzRXJyb3IgJiYgY2hhdHMubGVuZ3RoID8gKFxuICAgICAgICAgICAgICAgIDxTQ1NTaWRlYmFyRXJyb3JCYW5uZXI+XG4gICAgICAgICAgICAgICAgICA8U0NTU2lkZWJhckVycm9yQmFubmVySWNvbldyYXA+XG4gICAgICAgICAgICAgICAgICAgIDxFcnJvckljb24gLz5cbiAgICAgICAgICAgICAgICAgIDwvU0NTU2lkZWJhckVycm9yQmFubmVySWNvbldyYXA+XG4gICAgICAgICAgICAgICAgICA8U0NTU2lkZWJhckVycm9yQmFubmVyTWVzc2FnZT57dCgnY29udmVyc2F0aW9ucy5lcnJvcicpfTwvU0NTU2lkZWJhckVycm9yQmFubmVyTWVzc2FnZT5cbiAgICAgICAgICAgICAgICA8L1NDU1NpZGViYXJFcnJvckJhbm5lcj5cbiAgICAgICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgICA8L1NDU1NpZGViYXJDaGF0c0Zvb3Rlcj5cbiAgICAgICAgICA8L1NDU1NpZGViYXJPcGVuUGFuZWw+XG4gICAgICAgICkgOiBudWxsfVxuICAgICAgICA8U0NTU2lkZWJhckZvb3RlckFjdGlvbnMgJGlzT3Blbj17aXNPcGVufSAkanVzdGlmeUJldHdlZW49eyEhc2VsZWN0ZWRBZ2VudH0+XG4gICAgICAgICAge3NlbGVjdGVkQWdlbnQgPyA8RmVlZGJhY2tCdXR0b24gc2VsZWN0ZWRBZ2VudD17c2VsZWN0ZWRBZ2VudH0gaXNPcGVuPXtpc09wZW59IC8+IDogbnVsbH1cbiAgICAgICAgICA8T25ib2FyZGluZ01vZGFsQnV0dG9uIC8+XG4gICAgICAgIDwvU0NTU2lkZWJhckZvb3RlckFjdGlvbnM+XG4gICAgICA8L1NDU1NpZGViYXJCb2R5PlxuICAgIDwvU0NTU2lkZWJhclJvb3Q+XG4gIClcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBMkJBLFNBQVMsRUFBRUMsTUFBTSxFQUFFQyxRQUFRLFFBQVEsT0FBTztBQUNyRSxTQUFTQyxpQkFBaUIsUUFBUSxvREFBb0Q7QUFDdEYsU0FBU0MsUUFBUSxRQUFRLDRDQUE0QztBQUNyRSxTQUFT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
|