@projectcor/maia-components 2.11.63-3 → 2.11.64-0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (92) hide show
  1. package/lib/App.js +2 -6
  2. package/lib/components/atoms/Chip/Chip.js +15 -49
  3. package/lib/components/atoms/Chip/styles.js +3 -7
  4. package/lib/components/atoms/ContextMentionPopover/ContextMentionPopover.js +7 -44
  5. package/lib/components/atoms/ContextMentionPopover/ContextMentionPopover.styles.js +14 -22
  6. package/lib/components/atoms/MAIAInput/MAIAInput.js +5 -8
  7. package/lib/components/atoms/icons/index.js +1 -2
  8. package/lib/components/molecules/AbmSection/AbmAccessibilitySection/AbmAccessibilitySection.styles.js +2 -2
  9. package/lib/components/molecules/AbmSection/AbmGeneralSection.styles.js +3 -3
  10. package/lib/components/molecules/AbmSection/AbmKnowledgeSection.styles.js +2 -2
  11. package/lib/components/molecules/AbmSection/index.js +1 -2
  12. package/lib/components/molecules/ChatAIContent/ChatAIContent.js +3 -9
  13. package/lib/components/molecules/ChatAIHome/ChatAIHome.js +4 -6
  14. package/lib/components/molecules/ChatAIMessages/ChatAIMessages.js +5 -10
  15. package/lib/components/molecules/ChatAIModal/ChatAIModal.js +26 -46
  16. package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeader.js +13 -14
  17. package/lib/components/molecules/ChatAIModal/constants.js +2 -6
  18. package/lib/components/molecules/ChatAIMySkills/ChatAIMySkills.styles.js +2 -2
  19. package/lib/components/molecules/ChatFooter/ChatFooter.js +21 -105
  20. package/lib/components/molecules/ChatFooter/styles.js +2 -11
  21. package/lib/components/molecules/Sidebar/Sidebar.js +43 -68
  22. package/lib/components/molecules/Sidebar/Sidebar.layout.styles.js +11 -15
  23. package/lib/components/organisms/AbmAgentModal/AbmAgentModal.js +56 -269
  24. package/lib/components/organisms/AbmAgentModal/AbmAgentModal.styles.js +4 -4
  25. package/lib/components/organisms/DeleteQuestionModal/DeleteQuestionModal.js +2 -10
  26. package/lib/components/organisms/EditQuestionModal/EditQuestionModal.js +2 -2
  27. package/lib/constants/maiaTaskPanelAccess.js +2 -2
  28. package/lib/constants/permissions/index.js +2 -2
  29. package/lib/constants/permissions/utils.js +4 -1
  30. package/lib/context/global-context.js +1 -8
  31. package/lib/hooks/useAgentModel/useCreateAgent.js +10 -11
  32. package/lib/hooks/useAgentModel/useUpdateAgent.js +11 -12
  33. package/lib/hooks/useChatManager/useChatManager.js +19 -142
  34. package/lib/hooks/useChatMessages/useChatMessages.js +1 -1
  35. package/lib/hooks/useContextMentions.js +6 -16
  36. package/lib/hooks/useEntitySearch.js +128 -73
  37. package/lib/hooks/useMentionAllowedTypes.js +19 -48
  38. package/lib/hooks/useMentionPopover.js +17 -31
  39. package/lib/hooks/useOrchestratorStream/useOrchestratorStream.interface.js +1 -1
  40. package/lib/hooks/useOrchestratorStream/useOrchestratorStream.js +7 -16
  41. package/lib/hooks/useProjectSearch.js +28 -4
  42. package/lib/hooks/useProjectSummaryConfig.js +3 -47
  43. package/lib/hooks/useRecentClientsSearch.js +34 -4
  44. package/lib/lang/br/index.js +1 -525
  45. package/lib/lang/en/index.js +1 -525
  46. package/lib/lang/es/index.js +1 -525
  47. package/lib/lang/fr/index.js +2 -257
  48. package/lib/services/maia/Agents/createAgent.js +1 -1
  49. package/lib/services/maia/Agents/getAgentById.js +2 -3
  50. package/lib/services/maia/Agents/getAgents.js +91 -68
  51. package/lib/services/maia/Agents/updateAgent.js +1 -1
  52. package/lib/services/maia/Chats/getChatsByUserId.js +9 -13
  53. package/lib/services/maia/Orchestrator/orchestrator.js +6 -15
  54. package/lib/services/utils/validateIsMaia.js +2 -2
  55. package/lib/types/Chat.js +1 -1
  56. package/lib/types/agent.js +1 -1
  57. package/lib/types/agentModal.js +1 -1
  58. package/lib/types/global.d.js +1 -1
  59. package/lib/utils/hitlAnalytics.js +3 -3
  60. package/package.json +1 -1
  61. package/lib/components/atoms/icons/RocketIcon.js +0 -31
  62. package/lib/components/atoms/icons/WrenchIcon.js +0 -42
  63. package/lib/components/molecules/AbmSection/AbmActionsSectionV2/AbmActionsSectionV2.js +0 -522
  64. package/lib/components/molecules/AbmSection/AbmActionsSectionV2/AbmActionsSectionV2.styles.js +0 -234
  65. package/lib/components/molecules/AbmSection/AbmActionsSectionV2/catalog.js +0 -437
  66. package/lib/components/molecules/AbmSection/AbmActionsSectionV2/index.js +0 -3
  67. package/lib/components/molecules/AbmSection/AbmSkillsSection.styles.js +0 -80
  68. package/lib/components/molecules/AbmSection/AbmTriggersSection/AbmTriggersSection.interface.js +0 -2
  69. package/lib/components/molecules/AbmSection/AbmTriggersSection/AbmTriggersSection.js +0 -722
  70. package/lib/components/molecules/AbmSection/AbmTriggersSection/AbmTriggersSection.styles.js +0 -165
  71. package/lib/components/molecules/AbmSection/AbmTriggersSection/index.js +0 -2
  72. package/lib/components/molecules/ChatAIMyRoutines/ChatAIMyRoutines.js +0 -486
  73. package/lib/components/molecules/ChatAIMyRoutines/ChatAIMyRoutines.styles.js +0 -184
  74. package/lib/components/molecules/ChatAIMyRoutines/index.js +0 -2
  75. package/lib/components/molecules/SchedulesPage/SchedulesPage.js +0 -610
  76. package/lib/components/molecules/SchedulesPage/index.js +0 -2
  77. package/lib/components/molecules/SkillsPage/SkillsPage.js +0 -708
  78. package/lib/components/molecules/SkillsPage/index.js +0 -2
  79. package/lib/components/molecules/maiaSectionModalStyles.js +0 -91
  80. package/lib/components/molecules/maiaSectionUiTokens.js +0 -31
  81. package/lib/dev/DevAbmAgentModal.js +0 -114
  82. package/lib/dev/mocks/abmModalMocks.js +0 -193
  83. package/lib/hooks/useContextPinPopover.js +0 -228
  84. package/lib/services/maia/Agents/connectors.js +0 -110
  85. package/lib/services/maia/Agents/skills.js +0 -164
  86. package/lib/services/maia/Schedules/createSchedule.js +0 -39
  87. package/lib/services/maia/Schedules/deleteSchedule.js +0 -36
  88. package/lib/services/maia/Schedules/getMySchedules.js +0 -55
  89. package/lib/services/maia/Schedules/getSchedules.js +0 -58
  90. package/lib/services/maia/Schedules/index.js +0 -5
  91. package/lib/types/agentSkill.js +0 -2
  92. package/lib/types/attachment.js +0 -2
@@ -1,486 +0,0 @@
1
- import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
2
- import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
3
- import _regeneratorRuntime from "@babel/runtime/regenerator";
4
- /* eslint-disable @typescript-eslint/no-explicit-any */
5
- import ReactDOM from 'react-dom';
6
- import { useCallback, useEffect, useRef, useState } from 'react';
7
- import { useTranslation } from 'react-i18next';
8
- import { MenuDots } from '@projectcor/icons/lib/components/MenuDots';
9
- import { ChevronDown } from '@projectcor/icons/lib/components/ChevronDown';
10
- import { Cross } from '@projectcor/icons/lib/components/Cross';
11
- import { AbmTriggersSection } from '../AbmSection/AbmTriggersSection/AbmTriggersSection';
12
- import { Backdrop } from '../../atoms/Backdrop';
13
- import { fetchMaia } from '../../../services/maia/client';
14
- import { getMySchedules, deleteSchedule } from '../../../services/maia/Schedules';
15
- import { DeleteQuestionModal } from '../../organisms/DeleteQuestionModal/DeleteQuestionModal';
16
- import { MAIAIsologo } from '../../atoms/icons';
17
- import { Loader } from '../../atoms/Loader';
18
- import { maiaSectionUi as u } from '../maiaSectionUiTokens';
19
- import { SCAgentSelectorContainer, SCAgentSelectorList, SCAgentSelectorLoadingRow, SCAgentSelectorOption, SCAgentSelectorTrigger, MAIA_SECTION_MODAL_Z, SCFieldWithDropdownZ } from '../maiaSectionModalStyles';
20
- import { SCMRActionsRow, SCMRBody, SCMRCardBody, SCMRCardButton, SCMRCardContentText, SCMRCardFooter, SCMRCardFrequency, SCMRCardHeader, SCMRCardMenu, SCMRCardMenuItem, SCMRCardMenuItems, SCMRCardTitleName, SCMRCardTopRow, SCMRCardsOuter, SCMRCardsRow, SCMRContainer, SCMRCreateButton, SCMRCreateButtonText, SCMREmptyStateButton, SCMREmptyStateColumn, SCMREmptyStateRoot, SCMREmptyStateSubtitle, SCMREmptyStateTitleBlock, SCMREmptyStateTitle, SCMRKebabButton, SCMRLoadWrapper, SCMRModalBodyScroll, SCMRModalCancelButton, SCMRModalCloseButton, SCMRModalContent, SCMRModalFooter, SCMRModalHeader, SCMRModalSaveButton, SCMRModalTitle, SCMRModalWrapper, SCMRStatusBadge, SCMRSubtitle, SCMRTitle, SCMRTitleInner, SCMRTitleWrap } from './ChatAIMyRoutines.styles';
21
- import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
22
- var routineToFormState = function routineToFormState(routine) {
23
- var _routine$name, _routine$hour, _routine$minute, _routine$day_of_week;
24
- return {
25
- name: (_routine$name = routine.name) !== null && _routine$name !== void 0 ? _routine$name : '',
26
- input: routine.input,
27
- scheduleType: routine.schedule_type,
28
- hour: (_routine$hour = routine.hour) !== null && _routine$hour !== void 0 ? _routine$hour : 12,
29
- minute: (_routine$minute = routine.minute) !== null && _routine$minute !== void 0 ? _routine$minute : 0,
30
- dayOfWeek: (_routine$day_of_week = routine.day_of_week) !== null && _routine$day_of_week !== void 0 ? _routine$day_of_week : 0,
31
- timezone: routine.timezone
32
- };
33
- };
34
- export var ChatAIMyRoutines = function ChatAIMyRoutines() {
35
- var _document$getElementB, _selectedAgent$id;
36
- var _useTranslation = useTranslation('abm_agent_section'),
37
- t = _useTranslation.t;
38
- var _useState = useState([]),
39
- _useState2 = _slicedToArray(_useState, 2),
40
- routines = _useState2[0],
41
- setRoutines = _useState2[1];
42
- var _useState3 = useState(false),
43
- _useState4 = _slicedToArray(_useState3, 2),
44
- loading = _useState4[0],
45
- setLoading = _useState4[1];
46
- var _useState5 = useState(false),
47
- _useState6 = _slicedToArray(_useState5, 2),
48
- panelOpen = _useState6[0],
49
- setPanelOpen = _useState6[1];
50
- var _useState7 = useState(null),
51
- _useState8 = _slicedToArray(_useState7, 2),
52
- editingRoutine = _useState8[0],
53
- setEditingRoutine = _useState8[1];
54
- var _useState9 = useState(null),
55
- _useState0 = _slicedToArray(_useState9, 2),
56
- templateForm = _useState0[0],
57
- setTemplateForm = _useState0[1];
58
- var _useState1 = useState([]),
59
- _useState10 = _slicedToArray(_useState1, 2),
60
- agents = _useState10[0],
61
- setAgents = _useState10[1];
62
- var _useState11 = useState(false),
63
- _useState12 = _slicedToArray(_useState11, 2),
64
- loadingAgents = _useState12[0],
65
- setLoadingAgents = _useState12[1];
66
- var _useState13 = useState(null),
67
- _useState14 = _slicedToArray(_useState13, 2),
68
- selectedAgent = _useState14[0],
69
- setSelectedAgent = _useState14[1];
70
- var _useState15 = useState(false),
71
- _useState16 = _slicedToArray(_useState15, 2),
72
- dropdownOpen = _useState16[0],
73
- setDropdownOpen = _useState16[1];
74
- var _useState17 = useState(0),
75
- _useState18 = _slicedToArray(_useState17, 2),
76
- submitCount = _useState18[0],
77
- setSubmitCount = _useState18[1];
78
- var _useState19 = useState(false),
79
- _useState20 = _slicedToArray(_useState19, 2),
80
- isFormValid = _useState20[0],
81
- setIsFormValid = _useState20[1];
82
- var _useState21 = useState(null),
83
- _useState22 = _slicedToArray(_useState21, 2),
84
- menuOpenForId = _useState22[0],
85
- setMenuOpenForId = _useState22[1];
86
- var _useState23 = useState(null),
87
- _useState24 = _slicedToArray(_useState23, 2),
88
- routineToDelete = _useState24[0],
89
- setRoutineToDelete = _useState24[1];
90
- var dropdownRef = useRef(null);
91
- var fetchRoutines = useCallback(/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee() {
92
- var result, _t;
93
- return _regeneratorRuntime.wrap(function (_context) {
94
- while (1) switch (_context.prev = _context.next) {
95
- case 0:
96
- setLoading(true);
97
- _context.prev = 1;
98
- _context.next = 2;
99
- return getMySchedules({
100
- limit: 100,
101
- offset: 0
102
- });
103
- case 2:
104
- result = _context.sent;
105
- setRoutines(result.data);
106
- _context.next = 4;
107
- break;
108
- case 3:
109
- _context.prev = 3;
110
- _t = _context["catch"](1);
111
- case 4:
112
- _context.prev = 4;
113
- setLoading(false);
114
- return _context.finish(4);
115
- case 5:
116
- case "end":
117
- return _context.stop();
118
- }
119
- }, _callee, null, [[1, 3, 4, 5]]);
120
- })), []);
121
- var fetchAgents = useCallback(/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee2() {
122
- var response, data, agentList, _t2;
123
- return _regeneratorRuntime.wrap(function (_context2) {
124
- while (1) switch (_context2.prev = _context2.next) {
125
- case 0:
126
- setLoadingAgents(true);
127
- _context2.prev = 1;
128
- _context2.next = 2;
129
- return fetchMaia({
130
- path: 'agents?agent_type=custom&limit=100&offset=0',
131
- method: 'GET'
132
- });
133
- case 2:
134
- response = _context2.sent;
135
- _context2.next = 3;
136
- return response.json();
137
- case 3:
138
- data = _context2.sent;
139
- agentList = (data.data || []).map(function (a) {
140
- return {
141
- id: a.id,
142
- name: a.name,
143
- emoji: a.emoji || ''
144
- };
145
- });
146
- setAgents(agentList);
147
- if (agentList.length === 1) {
148
- setSelectedAgent(agentList[0]);
149
- setDropdownOpen(false);
150
- }
151
- _context2.next = 5;
152
- break;
153
- case 4:
154
- _context2.prev = 4;
155
- _t2 = _context2["catch"](1);
156
- case 5:
157
- _context2.prev = 5;
158
- setLoadingAgents(false);
159
- return _context2.finish(5);
160
- case 6:
161
- case "end":
162
- return _context2.stop();
163
- }
164
- }, _callee2, null, [[1, 4, 5, 6]]);
165
- })), []);
166
- useEffect(function () {
167
- fetchRoutines();
168
- }, [fetchRoutines]);
169
- useEffect(function () {
170
- if (!panelOpen) {
171
- return undefined;
172
- }
173
- setDropdownOpen(false);
174
- fetchAgents();
175
- return undefined;
176
- }, [panelOpen, fetchAgents]);
177
- var openCreatePanel = useCallback(function () {
178
- setEditingRoutine(null);
179
- setTemplateForm(null);
180
- setSelectedAgent(null);
181
- setIsFormValid(false);
182
- setSubmitCount(0);
183
- setPanelOpen(true);
184
- }, []);
185
- var openDetailPanel = useCallback(function (routine) {
186
- var _routine$agent_name, _routine$agent_emoji;
187
- setEditingRoutine(routine);
188
- setTemplateForm(routineToFormState(routine));
189
- setSelectedAgent(routine.agent_external_id ? {
190
- id: routine.agent_external_id,
191
- name: (_routine$agent_name = routine.agent_name) !== null && _routine$agent_name !== void 0 ? _routine$agent_name : '',
192
- emoji: (_routine$agent_emoji = routine.agent_emoji) !== null && _routine$agent_emoji !== void 0 ? _routine$agent_emoji : ''
193
- } : null);
194
- setIsFormValid(false);
195
- setSubmitCount(0);
196
- setPanelOpen(true);
197
- }, []);
198
- var closePanel = useCallback(function () {
199
- setPanelOpen(false);
200
- setEditingRoutine(null);
201
- setTemplateForm(null);
202
- }, []);
203
- useEffect(function () {
204
- if (!dropdownOpen) {
205
- return undefined;
206
- }
207
- var closeIfOutside = function closeIfOutside(e) {
208
- var _dropdownRef$current;
209
- if (!((_dropdownRef$current = dropdownRef.current) !== null && _dropdownRef$current !== void 0 && _dropdownRef$current.contains(e.target))) setDropdownOpen(false);
210
- };
211
- document.addEventListener('click', closeIfOutside);
212
- return function () {
213
- return document.removeEventListener('click', closeIfOutside);
214
- };
215
- }, [dropdownOpen]);
216
- useEffect(function () {
217
- var handleClickOutside = function handleClickOutside() {
218
- if (menuOpenForId) setMenuOpenForId(null);
219
- };
220
- document.addEventListener('click', handleClickOutside);
221
- return function () {
222
- return document.removeEventListener('click', handleClickOutside);
223
- };
224
- }, [menuOpenForId]);
225
- var handleCreateSuccess = useCallback(function () {
226
- closePanel();
227
- setSelectedAgent(null);
228
- fetchRoutines();
229
- }, [closePanel, fetchRoutines]);
230
- var handleConfirmDelete = useCallback(/*#__PURE__*/function () {
231
- var _ref3 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee3(chat) {
232
- var _t3;
233
- return _regeneratorRuntime.wrap(function (_context3) {
234
- while (1) switch (_context3.prev = _context3.next) {
235
- case 0:
236
- _context3.prev = 0;
237
- _context3.next = 1;
238
- return deleteSchedule(chat.id);
239
- case 1:
240
- setRoutineToDelete(null);
241
- fetchRoutines();
242
- _context3.next = 3;
243
- break;
244
- case 2:
245
- _context3.prev = 2;
246
- _t3 = _context3["catch"](0);
247
- case 3:
248
- case "end":
249
- return _context3.stop();
250
- }
251
- }, _callee3, null, [[0, 2]]);
252
- }));
253
- return function (_x) {
254
- return _ref3.apply(this, arguments);
255
- };
256
- }(), [fetchRoutines]);
257
- var frequencyLabel = function frequencyLabel(schedule) {
258
- var _map$schedule$schedul;
259
- var map = {
260
- minutely: t('triggersSection.frequencies.minutely'),
261
- hourly: t('triggersSection.frequencies.hourly'),
262
- daily: t('triggersSection.frequencies.daily'),
263
- weekly: t('triggersSection.frequencies.weekly')
264
- };
265
- return (_map$schedule$schedul = map[schedule.schedule_type]) !== null && _map$schedule$schedul !== void 0 ? _map$schedule$schedul : schedule.schedule_type;
266
- };
267
- var statusLabel = function statusLabel(status) {
268
- var _map$status;
269
- var map = {
270
- active: t('triggersSection.status.active'),
271
- paused: t('triggersSection.status.paused'),
272
- disabled: t('triggersSection.status.disabled')
273
- };
274
- return (_map$status = map[status]) !== null && _map$status !== void 0 ? _map$status : status;
275
- };
276
- var selectedLabel = selectedAgent ? "".concat(selectedAgent.emoji ? "".concat(selectedAgent.emoji, " ") : '').concat(selectedAgent.name) : t('triggersSection.selectAgent');
277
- var deleteModalChat = routineToDelete ? {
278
- title: routineToDelete.name || t('triggersSection.untitledRoutine'),
279
- id: routineToDelete.id
280
- } : null;
281
- var container = (_document$getElementB = document.getElementById('modal-root-actions')) !== null && _document$getElementB !== void 0 ? _document$getElementB : document.body;
282
- return /*#__PURE__*/_jsxs(SCMRContainer, {
283
- $hasItems: !!routines.length,
284
- children: [/*#__PURE__*/_jsx(MAIAIsologo, {}), /*#__PURE__*/_jsxs(SCMRBody, {
285
- $canCreate: true,
286
- children: [routines.length ? /*#__PURE__*/_jsxs(SCMRTitleWrap, {
287
- children: [/*#__PURE__*/_jsxs(SCMRTitleInner, {
288
- children: [/*#__PURE__*/_jsx(SCMRTitle, {
289
- children: t('triggersSection.myRoutinesTitle')
290
- }), /*#__PURE__*/_jsx(SCMRSubtitle, {
291
- children: t('triggersSection.myRoutinesSubtitle')
292
- })]
293
- }), /*#__PURE__*/_jsx(SCMRActionsRow, {
294
- children: /*#__PURE__*/_jsx(SCMRCreateButton, {
295
- type: "button",
296
- onClick: openCreatePanel,
297
- children: /*#__PURE__*/_jsx(SCMRCreateButtonText, {
298
- children: t('triggersSection.newRoutine')
299
- })
300
- })
301
- })]
302
- }) : null, loading ? /*#__PURE__*/_jsx(SCMRLoadWrapper, {
303
- children: /*#__PURE__*/_jsx(Loader, {
304
- size: "small"
305
- })
306
- }) : null, !loading && routines.length ? /*#__PURE__*/_jsx(SCMRCardsOuter, {
307
- children: /*#__PURE__*/_jsx(SCMRCardsRow, {
308
- children: routines.map(function (routine) {
309
- var _routine$agent_name2;
310
- return /*#__PURE__*/_jsxs(SCMRCardButton, {
311
- type: "button",
312
- onClick: function onClick() {
313
- return openDetailPanel(routine);
314
- },
315
- children: [/*#__PURE__*/_jsx(SCMRCardHeader, {
316
- children: /*#__PURE__*/_jsxs(SCMRCardTopRow, {
317
- children: [/*#__PURE__*/_jsx(SCMRCardTitleName, {
318
- children: routine.name || t('triggersSection.untitledRoutine')
319
- }), /*#__PURE__*/_jsx(SCMRKebabButton, {
320
- type: "button",
321
- "aria-label": t('triggersSection.deleteRoutine'),
322
- onClick: function onClick(event) {
323
- event.preventDefault();
324
- event.stopPropagation();
325
- setMenuOpenForId(function (prev) {
326
- return prev === routine.id ? null : routine.id;
327
- });
328
- },
329
- children: /*#__PURE__*/_jsx(MenuDots, {
330
- color: "#999",
331
- width: 15,
332
- height: 15
333
- })
334
- })]
335
- })
336
- }), /*#__PURE__*/_jsxs(SCMRCardBody, {
337
- children: [/*#__PURE__*/_jsx(SCMRCardContentText, {
338
- children: routine.agent_emoji || routine.agent_name ? "".concat(routine.agent_emoji ? "".concat(routine.agent_emoji, " ") : '').concat((_routine$agent_name2 = routine.agent_name) !== null && _routine$agent_name2 !== void 0 ? _routine$agent_name2 : '') : ''
339
- }), /*#__PURE__*/_jsxs(SCMRCardFooter, {
340
- children: [/*#__PURE__*/_jsx(SCMRCardFrequency, {
341
- children: frequencyLabel(routine)
342
- }), /*#__PURE__*/_jsx(SCMRStatusBadge, {
343
- $status: routine.status,
344
- children: statusLabel(routine.status)
345
- })]
346
- })]
347
- }), menuOpenForId === routine.id ? /*#__PURE__*/_jsx(SCMRCardMenu, {
348
- onClick: function onClick(event) {
349
- event.preventDefault();
350
- event.stopPropagation();
351
- },
352
- children: /*#__PURE__*/_jsx(SCMRCardMenuItems, {
353
- children: /*#__PURE__*/_jsx(SCMRCardMenuItem, {
354
- type: "button",
355
- onClick: function onClick() {
356
- setRoutineToDelete(routine);
357
- setMenuOpenForId(null);
358
- },
359
- children: t('triggersSection.deleteRoutine')
360
- })
361
- })
362
- }) : null]
363
- }, routine.id);
364
- })
365
- })
366
- }) : null, !loading && !routines.length ? /*#__PURE__*/_jsxs(SCMREmptyStateRoot, {
367
- children: [/*#__PURE__*/_jsx(SCMREmptyStateColumn, {
368
- children: /*#__PURE__*/_jsxs(SCMREmptyStateTitleBlock, {
369
- children: [/*#__PURE__*/_jsx(SCMREmptyStateTitle, {
370
- children: t('triggersSection.myRoutinesEmptyTitle')
371
- }), /*#__PURE__*/_jsx(SCMREmptyStateSubtitle, {
372
- children: t('triggersSection.myRoutinesEmptyDescription')
373
- })]
374
- })
375
- }), /*#__PURE__*/_jsx(SCMREmptyStateButton, {
376
- type: "button",
377
- onClick: openCreatePanel,
378
- children: t('triggersSection.newRoutine')
379
- })]
380
- }) : null]
381
- }), panelOpen && /*#__PURE__*/ReactDOM.createPortal(/*#__PURE__*/_jsx(Backdrop, {
382
- onClick: closePanel,
383
- zIndex: MAIA_SECTION_MODAL_Z,
384
- children: /*#__PURE__*/_jsxs(SCMRModalWrapper, {
385
- onClick: function onClick(e) {
386
- return e.stopPropagation();
387
- },
388
- children: [/*#__PURE__*/_jsxs(SCMRModalHeader, {
389
- children: [/*#__PURE__*/_jsx(SCMRModalTitle, {
390
- children: editingRoutine ? t('triggersSection.routineDetail') : t('triggersSection.newRoutine')
391
- }), /*#__PURE__*/_jsx(SCMRModalCloseButton, {
392
- type: "button",
393
- "aria-label": t('triggersSection.back'),
394
- onClick: closePanel,
395
- children: /*#__PURE__*/_jsx(Cross, {
396
- color: "#a6a6a6",
397
- width: 18,
398
- height: 18
399
- })
400
- })]
401
- }), /*#__PURE__*/_jsxs(SCMRModalContent, {
402
- children: [/*#__PURE__*/_jsxs(SCFieldWithDropdownZ, {
403
- children: [t('triggersSection.agent'), /*#__PURE__*/_jsx(SCAgentSelectorContainer, {
404
- ref: dropdownRef,
405
- children: editingRoutine ? /*#__PURE__*/_jsx(SCAgentSelectorTrigger, {
406
- open: false,
407
- type: "button",
408
- disabled: true,
409
- children: /*#__PURE__*/_jsx("span", {
410
- children: selectedLabel
411
- })
412
- }) : /*#__PURE__*/_jsxs(_Fragment, {
413
- children: [/*#__PURE__*/_jsxs(SCAgentSelectorTrigger, {
414
- open: dropdownOpen,
415
- onClick: function onClick() {
416
- return setDropdownOpen(function (prev) {
417
- return !prev;
418
- });
419
- },
420
- type: "button",
421
- children: [/*#__PURE__*/_jsx("span", {
422
- children: loadingAgents ? t('triggersSection.loadingAgents') : selectedLabel
423
- }), /*#__PURE__*/_jsx(ChevronDown, {
424
- width: "14px",
425
- height: "14px",
426
- color: dropdownOpen ? u.agentAccent : u.textMuted
427
- })]
428
- }), dropdownOpen && /*#__PURE__*/_jsx(SCAgentSelectorList, {
429
- children: loadingAgents ? /*#__PURE__*/_jsx(SCAgentSelectorLoadingRow, {
430
- children: t('triggersSection.loadingAgents')
431
- }) : agents.map(function (agent) {
432
- return /*#__PURE__*/_jsxs(SCAgentSelectorOption, {
433
- isSelected: (selectedAgent === null || selectedAgent === void 0 ? void 0 : selectedAgent.id) === agent.id,
434
- onMouseDown: function onMouseDown(e) {
435
- e.stopPropagation();
436
- },
437
- onClick: function onClick() {
438
- setSelectedAgent(agent);
439
- setDropdownOpen(false);
440
- },
441
- children: [agent.emoji ? "".concat(agent.emoji, " ") : '', agent.name]
442
- }, agent.id);
443
- })
444
- })]
445
- })
446
- })]
447
- }), /*#__PURE__*/_jsx(SCMRModalBodyScroll, {
448
- children: /*#__PURE__*/_jsx(AbmTriggersSection, {
449
- agentExternalId: (_selectedAgent$id = selectedAgent === null || selectedAgent === void 0 ? void 0 : selectedAgent.id) !== null && _selectedAgent$id !== void 0 ? _selectedAgent$id : null,
450
- initialForm: templateForm !== null && templateForm !== void 0 ? templateForm : undefined,
451
- submitCount: submitCount,
452
- onSuccess: handleCreateSuccess,
453
- onValidityChange: setIsFormValid,
454
- standaloneCreateOnly: true
455
- })
456
- })]
457
- }), /*#__PURE__*/_jsxs(SCMRModalFooter, {
458
- children: [/*#__PURE__*/_jsx(SCMRModalCancelButton, {
459
- type: "button",
460
- onClick: closePanel,
461
- children: t('triggersSection.back')
462
- }), !editingRoutine && /*#__PURE__*/_jsx(SCMRModalSaveButton, {
463
- type: "button",
464
- disabled: !isFormValid,
465
- onClick: function onClick() {
466
- return setSubmitCount(function (prev) {
467
- return prev + 1;
468
- });
469
- },
470
- children: t('triggersSection.save')
471
- })]
472
- })]
473
- })
474
- }), container), deleteModalChat ? /*#__PURE__*/_jsx(DeleteQuestionModal, {
475
- action: "routine",
476
- chat: deleteModalChat,
477
- onClose: function onClose() {
478
- return setRoutineToDelete(null);
479
- },
480
- handlers: {
481
- handleConfirmAction: handleConfirmDelete
482
- }
483
- }) : null]
484
- });
485
- };
486
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdERPTSIsInVzZUNhbGxiYWNrIiwidXNlRWZmZWN0IiwidXNlUmVmIiwidXNlU3RhdGUiLCJ1c2VUcmFuc2xhdGlvbiIsIk1lbnVEb3RzIiwiQ2hldnJvbkRvd24iLCJDcm9zcyIsIkFibVRyaWdnZXJzU2VjdGlvbiIsIkJhY2tkcm9wIiwiZmV0Y2hNYWlhIiwiZ2V0TXlTY2hlZHVsZXMiLCJkZWxldGVTY2hlZHVsZSIsIkRlbGV0ZVF1ZXN0aW9uTW9kYWwiLCJNQUlBSXNvbG9nbyIsIkxvYWRlciIsIm1haWFTZWN0aW9uVWkiLCJ1IiwiU0NBZ2VudFNlbGVjdG9yQ29udGFpbmVyIiwiU0NBZ2VudFNlbGVjdG9yTGlzdCIsIlNDQWdlbnRTZWxlY3RvckxvYWRpbmdSb3ciLCJTQ0FnZW50U2VsZWN0b3JPcHRpb24iLCJTQ0FnZW50U2VsZWN0b3JUcmlnZ2VyIiwiTUFJQV9TRUNUSU9OX01PREFMX1oiLCJTQ0ZpZWxkV2l0aERyb3Bkb3duWiIsIlNDTVJBY3Rpb25zUm93IiwiU0NNUkJvZHkiLCJTQ01SQ2FyZEJvZHkiLCJTQ01SQ2FyZEJ1dHRvbiIsIlNDTVJDYXJkQ29udGVudFRleHQiLCJTQ01SQ2FyZEZvb3RlciIsIlNDTVJDYXJkRnJlcXVlbmN5IiwiU0NNUkNhcmRIZWFkZXIiLCJTQ01SQ2FyZE1lbnUiLCJTQ01SQ2FyZE1lbnVJdGVtIiwiU0NNUkNhcmRNZW51SXRlbXMiLCJTQ01SQ2FyZFRpdGxlTmFtZSIsIlNDTVJDYXJkVG9wUm93IiwiU0NNUkNhcmRzT3V0ZXIiLCJTQ01SQ2FyZHNSb3ciLCJTQ01SQ29udGFpbmVyIiwiU0NNUkNyZWF0ZUJ1dHRvbiIsIlNDTVJDcmVhdGVCdXR0b25UZXh0IiwiU0NNUkVtcHR5U3RhdGVCdXR0b24iLCJTQ01SRW1wdHlTdGF0ZUNvbHVtbiIsIlNDTVJFbXB0eVN0YXRlUm9vdCIsIlNDTVJFbXB0eVN0YXRlU3VidGl0bGUiLCJTQ01SRW1wdHlTdGF0ZVRpdGxlQmxvY2siLCJTQ01SRW1wdHlTdGF0ZVRpdGxlIiwiU0NNUktlYmFiQnV0dG9uIiwiU0NNUkxvYWRXcmFwcGVyIiwiU0NNUk1vZGFsQm9keVNjcm9sbCIsIlNDTVJNb2RhbENhbmNlbEJ1dHRvbiIsIlNDTVJNb2RhbENsb3NlQnV0dG9uIiwiU0NNUk1vZGFsQ29udGVudCIsIlNDTVJNb2RhbEZvb3RlciIsIlNDTVJNb2RhbEhlYWRlciIsIlNDTVJNb2RhbFNhdmVCdXR0b24iLCJTQ01STW9kYWxUaXRsZSIsIlNDTVJNb2RhbFdyYXBwZXIiLCJTQ01SU3RhdHVzQmFkZ2UiLCJTQ01SU3VidGl0bGUiLCJTQ01SVGl0bGUiLCJTQ01SVGl0bGVJbm5lciIsIlNDTVJUaXRsZVdyYXAiLCJqc3giLCJfanN4IiwianN4cyIsIl9qc3hzIiwiRnJhZ21lbnQiLCJfRnJhZ21lbnQiLCJyb3V0aW5lVG9Gb3JtU3RhdGUiLCJyb3V0aW5lIiwiX3JvdXRpbmUkbmFtZSIsIl9yb3V0aW5lJGhvdXIiLCJfcm91dGluZSRtaW51dGUiLCJfcm91dGluZSRkYXlfb2Zfd2VlayIsIm5hbWUiLCJpbnB1dCIsInNjaGVkdWxlVHlwZSIsInNjaGVkdWxlX3R5cGUiLCJob3VyIiwibWludXRlIiwiZGF5T2ZXZWVrIiwiZGF5X29mX3dlZWsiLCJ0aW1lem9uZSIsIkNoYXRBSU15Um91dGluZXMiLCJfZG9jdW1lbnQkZ2V0RWxlbWVudEIiLCJfc2VsZWN0ZWRBZ2VudCRpZCIsIl91c2VUcmFuc2xhdGlvbiIsInQiLCJfdXNlU3RhdGUiLCJfdXNlU3RhdGUyIiwiX3NsaWNlZFRvQXJyYXkiLCJyb3V0aW5lcyIsInNldFJvdXRpbmVzIiwiX3VzZVN0YXRlMyIsIl91c2VTdGF0ZTQiLCJsb2FkaW5nIiwic2V0TG9hZGluZyIsIl91c2VTdGF0ZTUiLCJfdXNlU3RhdGU2IiwicGFuZWxPcGVuIiwic2V0UGFuZWxPcGVuIiwiX3VzZVN0YXRlNyIsIl91c2VTdGF0ZTgiLCJlZGl0aW5nUm91dGluZSIsInNldEVkaXRpbmdSb3V0aW5lIiwiX3VzZVN0YXRlOSIsIl91c2VTdGF0ZTAiLCJ0ZW1wbGF0ZUZvcm0iLCJzZXRUZW1wbGF0ZUZvcm0iLCJfdXNlU3RhdGUxIiwiX3VzZVN0YXRlMTAiLCJhZ2VudHMiLCJzZXRBZ2VudHMiLCJfdXNlU3RhdGUxMSIsIl91c2VTdGF0ZTEyIiwibG9hZGluZ0FnZW50cyIsInNldExvYWRpbmdBZ2VudHMiLCJfdXNlU3RhdGUxMyIsIl91c2VTdGF0ZTE0Iiwic2VsZWN0ZWRBZ2VudCIsInNldFNlbGVjdGVkQWdlbnQiLCJfdXNlU3RhdGUxNSIsIl91c2VTdGF0ZTE2IiwiZHJvcGRvd25PcGVuIiwic2V0RHJvcGRvd25PcGVuIiwiX3VzZVN0YXRlMTciLCJfdXNlU3RhdGUxOCIsInN1Ym1pdENvdW50Iiwic2V0U3VibWl0Q291bnQiLCJfdXNlU3RhdGUxOSIsIl91c2VTdGF0ZTIwIiwiaXNGb3JtVmFsaWQiLCJzZXRJc0Zvcm1WYWxpZCIsIl91c2VTdGF0ZTIxIiwiX3VzZVN0YXRlMjIiLCJtZW51T3BlbkZvcklkIiwic2V0TWVudU9wZW5Gb3JJZCIsIl91c2VTdGF0ZTIzIiwiX3VzZVN0YXRlMjQiLCJyb3V0aW5lVG9EZWxldGUiLCJzZXRSb3V0aW5lVG9EZWxldGUiLCJkcm9wZG93blJlZiIsImZldGNoUm91dGluZXMiLCJfYXN5bmNUb0dlbmVyYXRvciIsIl9yZWdlbmVyYXRvclJ1bnRpbWUiLCJtYXJrIiwiX2NhbGxlZSIsInJlc3VsdCIsIl90Iiwid3JhcCIsIl9jb250ZXh0IiwicHJldiIsIm5leHQiLCJsaW1pdCIsIm9mZnNldCIsInNlbnQiLCJkYXRhIiwiZmluaXNoIiwic3RvcCIsImZldGNoQWdlbnRzIiwiX2NhbGxlZTIiLCJyZXNwb25zZSIsImFnZW50TGlzdCIsIl90MiIsIl9jb250ZXh0MiIsInBhdGgiLCJtZXRob2QiLCJqc29uIiwibWFwIiwiYSIsImlkIiwiZW1vamkiLCJsZW5ndGgiLCJ1bmRlZmluZWQiLCJvcGVuQ3JlYXRlUGFuZWwiLCJvcGVuRGV0YWlsUGFuZWwiLCJfcm91dGluZSRhZ2VudF9uYW1lIiwiX3JvdXRpbmUkYWdlbnRfZW1vamkiLCJhZ2VudF9leHRlcm5hbF9pZCIsImFnZW50X25hbWUiLCJhZ2VudF9lbW9qaSIsImNsb3NlUGFuZWwiLCJjbG9zZUlmT3V0c2lkZSIsImUiLCJfZHJvcGRvd25SZWYkY3VycmVudCIsImN1cnJlbnQiLCJjb250YWlucyIsInRhcmdldCIsImRvY3VtZW50IiwiYWRkRXZlbnRMaXN0ZW5lciIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJoYW5kbGVDbGlja091dHNpZGUiLCJoYW5kbGVDcmVhdGVTdWNjZXNzIiwiaGFuZGxlQ29uZmlybURlbGV0ZSIsIl9yZWYzIiwiX2NhbGxlZTMiLCJjaGF0IiwiX3QzIiwiX2NvbnRleHQzIiwiX3giLCJhcHBseSIsImFyZ3VtZW50cyIsImZyZXF1ZW5jeUxhYmVsIiwic2NoZWR1bGUiLCJfbWFwJHNjaGVkdWxlJHNjaGVkdWwiLCJtaW51dGVseSIsImhvdXJseSIsImRhaWx5Iiwid2Vla2x5Iiwic3RhdHVzTGFiZWwiLCJzdGF0dXMiLCJfbWFwJHN0YXR1cyIsImFjdGl2ZSIsInBhdXNlZCIsImRpc2FibGVkIiwic2VsZWN0ZWRMYWJlbCIsImNvbmNhdCIsImRlbGV0ZU1vZGFsQ2hhdCIsInRpdGxlIiwiY29udGFpbmVyIiwiZ2V0RWxlbWVudEJ5SWQiLCJib2R5IiwiJGhhc0l0ZW1zIiwiY2hpbGRyZW4iLCIkY2FuQ3JlYXRlIiwidHlwZSIsIm9uQ2xpY2siLCJzaXplIiwiX3JvdXRpbmUkYWdlbnRfbmFtZTIiLCJldmVudCIsInByZXZlbnREZWZhdWx0Iiwic3RvcFByb3BhZ2F0aW9uIiwiY29sb3IiLCJ3aWR0aCIsImhlaWdodCIsIiRzdGF0dXMiLCJjcmVhdGVQb3J0YWwiLCJ6SW5kZXgiLCJyZWYiLCJvcGVuIiwiYWdlbnRBY2NlbnQiLCJ0ZXh0TXV0ZWQiLCJhZ2VudCIsImlzU2VsZWN0ZWQiLCJvbk1vdXNlRG93biIsImFnZW50RXh0ZXJuYWxJZCIsImluaXRpYWxGb3JtIiwib25TdWNjZXNzIiwib25WYWxpZGl0eUNoYW5nZSIsInN0YW5kYWxvbmVDcmVhdGVPbmx5IiwiYWN0aW9uIiwib25DbG9zZSIsImhhbmRsZXJzIiwiaGFuZGxlQ29uZmlybUFjdGlvbiJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL21vbGVjdWxlcy9DaGF0QUlNeVJvdXRpbmVzL0NoYXRBSU15Um91dGluZXMudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cbmltcG9ydCBSZWFjdERPTSBmcm9tICdyZWFjdC1kb20nXG5pbXBvcnQgeyB1c2VDYWxsYmFjaywgdXNlRWZmZWN0LCB1c2VSZWYsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gJ3JlYWN0LWkxOG5leHQnXG5pbXBvcnQgeyBNZW51RG90cyB9IGZyb20gJ0Bwcm9qZWN0Y29yL2ljb25zL2xpYi9jb21wb25lbnRzL01lbnVEb3RzJ1xuaW1wb3J0IHsgQ2hldnJvbkRvd24gfSBmcm9tICdAcHJvamVjdGNvci9pY29ucy9saWIvY29tcG9uZW50cy9DaGV2cm9uRG93bidcbmltcG9ydCB7IENyb3NzIH0gZnJvbSAnQHByb2plY3Rjb3IvaWNvbnMvbGliL2NvbXBvbmVudHMvQ3Jvc3MnXG5pbXBvcnQgeyBBYm1UcmlnZ2Vyc1NlY3Rpb24gfSBmcm9tICcuLi9BYm1TZWN0aW9uL0FibVRyaWdnZXJzU2VjdGlvbi9BYm1UcmlnZ2Vyc1NlY3Rpb24nXG5pbXBvcnQgdHlwZSB7IFRyaWdnZXJGb3JtU3RhdGUgfSBmcm9tICcuLi9BYm1TZWN0aW9uL0FibVRyaWdnZXJzU2VjdGlvbi9BYm1UcmlnZ2Vyc1NlY3Rpb24uaW50ZXJmYWNlJ1xuaW1wb3J0IHsgQmFja2Ryb3AgfSBmcm9tICcuLi8uLi9hdG9tcy9CYWNrZHJvcCdcbmltcG9ydCB7IGZldGNoTWFpYSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL21haWEvY2xpZW50J1xuaW1wb3J0IHsgZ2V0TXlTY2hlZHVsZXMsIGRlbGV0ZVNjaGVkdWxlLCB0eXBlIFNjaGVkdWxlV2l0aEFnZW50UmVzcG9uc2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9tYWlhL1NjaGVkdWxlcydcbmltcG9ydCB7IERlbGV0ZVF1ZXN0aW9uTW9kYWwgfSBmcm9tICcuLi8uLi9vcmdhbmlzbXMvRGVsZXRlUXVlc3Rpb25Nb2RhbC9EZWxldGVRdWVzdGlvbk1vZGFsJ1xuaW1wb3J0IHsgTUFJQUlzb2xvZ28gfSBmcm9tICcuLi8uLi9hdG9tcy9pY29ucydcbmltcG9ydCB7IExvYWRlciB9IGZyb20gJy4uLy4uL2F0b21zL0xvYWRlcidcbmltcG9ydCB7IG1haWFTZWN0aW9uVWkgYXMgdSB9IGZyb20gJy4uL21haWFTZWN0aW9uVWlUb2tlbnMnXG5pbXBvcnQge1xuICBTQ0FnZW50U2VsZWN0b3JDb250YWluZXIsXG4gIFNDQWdlbnRTZWxlY3Rvckxpc3QsXG4gIFNDQWdlbnRTZWxlY3RvckxvYWRpbmdSb3csXG4gIFNDQWdlbnRTZWxlY3Rvck9wdGlvbixcbiAgU0NBZ2VudFNlbGVjdG9yVHJpZ2dlcixcbiAgTUFJQV9TRUNUSU9OX01PREFMX1osXG4gIFNDRmllbGRXaXRoRHJvcGRvd25aLFxufSBmcm9tICcuLi9tYWlhU2VjdGlvbk1vZGFsU3R5bGVzJ1xuaW1wb3J0IHtcbiAgU0NNUkFjdGlvbnNSb3csXG4gIFNDTVJCb2R5LFxuICBTQ01SQ2FyZEJvZHksXG4gIFNDTVJDYXJkQnV0dG9uLFxuICBTQ01SQ2FyZENvbnRlbnRUZXh0LFxuICBTQ01SQ2FyZEZvb3RlcixcbiAgU0NNUkNhcmRGcmVxdWVuY3ksXG4gIFNDTVJDYXJkSGVhZGVyLFxuICBTQ01SQ2FyZE1lbnUsXG4gIFNDTVJDYXJkTWVudUl0ZW0sXG4gIFNDTVJDYXJkTWVudUl0ZW1zLFxuICBTQ01SQ2FyZFRpdGxlTmFtZSxcbiAgU0NNUkNhcmRUb3BSb3csXG4gIFNDTVJDYXJkc091dGVyLFxuICBTQ01SQ2FyZHNSb3csXG4gIFNDTVJDb250YWluZXIsXG4gIFNDTVJDcmVhdGVCdXR0b24sXG4gIFNDTVJDcmVhdGVCdXR0b25UZXh0LFxuICBTQ01SRW1wdHlTdGF0ZUJ1dHRvbixcbiAgU0NNUkVtcHR5U3RhdGVDb2x1bW4sXG4gIFNDTVJFbXB0eVN0YXRlUm9vdCxcbiAgU0NNUkVtcHR5U3RhdGVTdWJ0aXRsZSxcbiAgU0NNUkVtcHR5U3RhdGVUaXRsZUJsb2NrLFxuICBTQ01SRW1wdHlTdGF0ZVRpdGxlLFxuICBTQ01SS2ViYWJCdXR0b24sXG4gIFNDTVJMb2FkV3JhcHBlcixcbiAgU0NNUk1vZGFsQm9keVNjcm9sbCxcbiAgU0NNUk1vZGFsQ2FuY2VsQnV0dG9uLFxuICBTQ01STW9kYWxDbG9zZUJ1dHRvbixcbiAgU0NNUk1vZGFsQ29udGVudCxcbiAgU0NNUk1vZGFsRm9vdGVyLFxuICBTQ01STW9kYWxIZWFkZXIsXG4gIFNDTVJNb2RhbFNhdmVCdXR0b24sXG4gIFNDTVJNb2RhbFRpdGxlLFxuICBTQ01STW9kYWxXcmFwcGVyLFxuICBTQ01SU3RhdHVzQmFkZ2UsXG4gIFNDTVJTdWJ0aXRsZSxcbiAgU0NNUlRpdGxlLFxuICBTQ01SVGl0bGVJbm5lcixcbiAgU0NNUlRpdGxlV3JhcCxcbn0gZnJvbSAnLi9DaGF0QUlNeVJvdXRpbmVzLnN0eWxlcydcblxudHlwZSBBZ2VudE9wdGlvbiA9IHsgaWQ6IHN0cmluZzsgbmFtZTogc3RyaW5nOyBlbW9qaTogc3RyaW5nIH1cblxuY29uc3Qgcm91dGluZVRvRm9ybVN0YXRlID0gKHJvdXRpbmU6IFNjaGVkdWxlV2l0aEFnZW50UmVzcG9uc2UpOiBQYXJ0aWFsPFRyaWdnZXJGb3JtU3RhdGU+ID0+ICh7XG4gIG5hbWU6IHJvdXRpbmUubmFtZSA/PyAnJyxcbiAgaW5wdXQ6IHJvdXRpbmUuaW5wdXQsXG4gIHNjaGVkdWxlVHlwZTogcm91dGluZS5zY2hlZHVsZV90eXBlLFxuICBob3VyOiByb3V0aW5lLmhvdXIgPz8gMTIsXG4gIG1pbnV0ZTogcm91dGluZS5taW51dGUgPz8gMCxcbiAgZGF5T2ZXZWVrOiByb3V0aW5lLmRheV9vZl93ZWVrID8/IDAsXG4gIHRpbWV6b25lOiByb3V0aW5lLnRpbWV6b25lLFxufSlcblxuZXhwb3J0IGNvbnN0IENoYXRBSU15Um91dGluZXMgPSAoKSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oJ2FibV9hZ2VudF9zZWN0aW9uJylcbiAgY29uc3QgW3JvdXRpbmVzLCBzZXRSb3V0aW5lc10gPSB1c2VTdGF0ZTxTY2hlZHVsZVdpdGhBZ2VudFJlc3BvbnNlW10+KFtdKVxuICBjb25zdCBbbG9hZGluZywgc2V0TG9hZGluZ10gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgW3BhbmVsT3Blbiwgc2V0UGFuZWxPcGVuXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBbZWRpdGluZ1JvdXRpbmUsIHNldEVkaXRpbmdSb3V0aW5lXSA9IHVzZVN0YXRlPFNjaGVkdWxlV2l0aEFnZW50UmVzcG9uc2UgfCBudWxsPihudWxsKVxuICBjb25zdCBbdGVtcGxhdGVGb3JtLCBzZXRUZW1wbGF0ZUZvcm1dID0gdXNlU3RhdGU8UGFydGlhbDxUcmlnZ2VyRm9ybVN0YXRlPiB8IG51bGw+KG51bGwpXG4gIGNvbnN0IFthZ2VudHMsIHNldEFnZW50c10gPSB1c2VTdGF0ZTxBZ2VudE9wdGlvbltdPihbXSlcbiAgY29uc3QgW2xvYWRpbmdBZ2VudHMsIHNldExvYWRpbmdBZ2VudHNdID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IFtzZWxlY3RlZEFnZW50LCBzZXRTZWxlY3RlZEFnZW50XSA9IHVzZVN0YXRlPEFnZW50T3B0aW9uIHwgbnVsbD4obnVsbClcbiAgY29uc3QgW2Ryb3Bkb3duT3Blbiwgc2V0RHJvcGRvd25PcGVuXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBbc3VibWl0Q291bnQsIHNldFN1Ym1pdENvdW50XSA9IHVzZVN0YXRlKDApXG4gIGNvbnN0IFtpc0Zvcm1WYWxpZCwgc2V0SXNGb3JtVmFsaWRdID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IFttZW51T3BlbkZvcklkLCBzZXRNZW51T3BlbkZvcklkXSA9IHVzZVN0YXRlPHN0cmluZyB8IG51bGw+KG51bGwpXG4gIGNvbnN0IFtyb3V0aW5lVG9EZWxldGUsIHNldFJvdXRpbmVUb0RlbGV0ZV0gPSB1c2VTdGF0ZTxTY2hlZHVsZVdpdGhBZ2VudFJlc3BvbnNlIHwgbnVsbD4obnVsbClcbiAgY29uc3QgZHJvcGRvd25SZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpXG5cbiAgY29uc3QgZmV0Y2hSb3V0aW5lcyA9IHVzZUNhbGxiYWNrKGFzeW5jICgpID0+IHtcbiAgICBzZXRMb2FkaW5nKHRydWUpXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGdldE15U2NoZWR1bGVzKHsgbGltaXQ6IDEwMCwgb2Zmc2V0OiAwIH0pXG4gICAgICBzZXRSb3V0aW5lcyhyZXN1bHQuZGF0YSlcbiAgICB9IGNhdGNoIHtcbiAgICAgIC8vIHNpbGVudGx5IGZhaWxcbiAgICB9IGZpbmFsbHkge1xuICAgICAgc2V0TG9hZGluZyhmYWxzZSlcbiAgICB9XG4gIH0sIFtdKVxuXG4gIGNvbnN0IGZldGNoQWdlbnRzID0gdXNlQ2FsbGJhY2soYXN5bmMgKCkgPT4ge1xuICAgIHNldExvYWRpbmdBZ2VudHModHJ1ZSlcbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaE1haWEoe1xuICAgICAgICBwYXRoOiAnYWdlbnRzP2FnZW50X3R5cGU9Y3VzdG9tJmxpbWl0PTEwMCZvZmZzZXQ9MCcsXG4gICAgICAgIG1ldGhvZDogJ0dFVCcsXG4gICAgICB9KVxuICAgICAgY29uc3QgZGF0YSA9IGF3YWl0IHJlc3BvbnNlLmpzb24oKVxuICAgICAgY29uc3QgYWdlbnRMaXN0OiBBZ2VudE9wdGlvbltdID0gKGRhdGEuZGF0YSB8fCBbXSkubWFwKChhOiBhbnkpID0+ICh7XG4gICAgICAgIGlkOiBhLmlkLFxuICAgICAgICBuYW1lOiBhLm5hbWUsXG4gICAgICAgIGVtb2ppOiBhLmVtb2ppIHx8ICcnLFxuICAgICAgfSkpXG4gICAgICBzZXRBZ2VudHMoYWdlbnRMaXN0KVxuICAgICAgaWYgKGFnZW50TGlzdC5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgc2V0U2VsZWN0ZWRBZ2VudChhZ2VudExpc3RbMF0pXG4gICAgICAgIHNldERyb3Bkb3duT3BlbihmYWxzZSlcbiAgICAgIH1cbiAgICB9IGNhdGNoIHtcbiAgICAgIC8vIHNpbGVudGx5IGZhaWxcbiAgICB9IGZpbmFsbHkge1xuICAgICAgc2V0TG9hZGluZ0FnZW50cyhmYWxzZSlcbiAgICB9XG4gIH0sIFtdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgZmV0Y2hSb3V0aW5lcygpXG4gIH0sIFtmZXRjaFJvdXRpbmVzXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghcGFuZWxPcGVuKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkXG4gICAgfVxuICAgIHNldERyb3Bkb3duT3BlbihmYWxzZSlcbiAgICBmZXRjaEFnZW50cygpXG4gICAgcmV0dXJuIHVuZGVmaW5lZFxuICB9LCBbcGFuZWxPcGVuLCBmZXRjaEFnZW50c10pXG5cbiAgY29uc3Qgb3BlbkNyZWF0ZVBhbmVsID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIHNldEVkaXRpbmdSb3V0aW5lKG51bGwpXG4gICAgc2V0VGVtcGxhdGVGb3JtKG51bGwpXG4gICAgc2V0U2VsZWN0ZWRBZ2VudChudWxsKVxuICAgIHNldElzRm9ybVZhbGlkKGZhbHNlKVxuICAgIHNldFN1Ym1pdENvdW50KDApXG4gICAgc2V0UGFuZWxPcGVuKHRydWUpXG4gIH0sIFtdKVxuXG4gIGNvbnN0IG9wZW5EZXRhaWxQYW5lbCA9IHVzZUNhbGxiYWNrKChyb3V0aW5lOiBTY2hlZHVsZVdpdGhBZ2VudFJlc3BvbnNlKSA9PiB7XG4gICAgc2V0RWRpdGluZ1JvdXRpbmUocm91dGluZSlcbiAgICBzZXRUZW1wbGF0ZUZvcm0ocm91dGluZVRvRm9ybVN0YXRlKHJvdXRpbmUpKVxuICAgIHNldFNlbGVjdGVkQWdlbnQoXG4gICAgICByb3V0aW5lLmFnZW50X2V4dGVybmFsX2lkXG4gICAgICAgID8geyBpZDogcm91dGluZS5hZ2VudF9leHRlcm5hbF9pZCwgbmFtZTogcm91dGluZS5hZ2VudF9uYW1lID8/ICcnLCBlbW9qaTogcm91dGluZS5hZ2VudF9lbW9qaSA/PyAnJyB9XG4gICAgICAgIDogbnVsbFxuICAgIClcbiAgICBzZXRJc0Zvcm1WYWxpZChmYWxzZSlcbiAgICBzZXRTdWJtaXRDb3VudCgwKVxuICAgIHNldFBhbmVsT3Blbih0cnVlKVxuICB9LCBbXSlcblxuICBjb25zdCBjbG9zZVBhbmVsID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIHNldFBhbmVsT3BlbihmYWxzZSlcbiAgICBzZXRFZGl0aW5nUm91dGluZShudWxsKVxuICAgIHNldFRlbXBsYXRlRm9ybShudWxsKVxuICB9LCBbXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghZHJvcGRvd25PcGVuKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkXG4gICAgfVxuICAgIGNvbnN0IGNsb3NlSWZPdXRzaWRlID0gKGU6IE1vdXNlRXZlbnQpID0+IHtcbiAgICAgIGlmICghZHJvcGRvd25SZWYuY3VycmVudD8uY29udGFpbnMoZS50YXJnZXQgYXMgTm9kZSkpIHNldERyb3Bkb3duT3BlbihmYWxzZSlcbiAgICB9XG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBjbG9zZUlmT3V0c2lkZSlcbiAgICByZXR1cm4gKCkgPT4gZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignY2xpY2snLCBjbG9zZUlmT3V0c2lkZSlcbiAgfSwgW2Ryb3Bkb3duT3Blbl0pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBoYW5kbGVDbGlja091dHNpZGUgPSAoKSA9PiB7XG4gICAgICBpZiAobWVudU9wZW5Gb3JJZCkgc2V0TWVudU9wZW5Gb3JJZChudWxsKVxuICAgIH1cbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGhhbmRsZUNsaWNrT3V0c2lkZSlcbiAgICByZXR1cm4gKCkgPT4gZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignY2xpY2snLCBoYW5kbGVDbGlja091dHNpZGUpXG4gIH0sIFttZW51T3BlbkZvcklkXSlcblxuICBjb25zdCBoYW5kbGVDcmVhdGVTdWNjZXNzID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGNsb3NlUGFuZWwoKVxuICAgIHNldFNlbGVjdGVkQWdlbnQobnVsbClcbiAgICBmZXRjaFJvdXRpbmVzKClcbiAgfSwgW2Nsb3NlUGFuZWwsIGZldGNoUm91dGluZXNdKVxuXG4gIGNvbnN0IGhhbmRsZUNvbmZpcm1EZWxldGUgPSB1c2VDYWxsYmFjayhcbiAgICBhc3luYyAoY2hhdDogeyBpZDogc3RyaW5nIH0pID0+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IGRlbGV0ZVNjaGVkdWxlKGNoYXQuaWQpXG4gICAgICAgIHNldFJvdXRpbmVUb0RlbGV0ZShudWxsKVxuICAgICAgICBmZXRjaFJvdXRpbmVzKClcbiAgICAgIH0gY2F0Y2gge1xuICAgICAgICAvLyBzaWxlbnRseSBmYWlsXG4gICAgICB9XG4gICAgfSxcbiAgICBbZmV0Y2hSb3V0aW5lc11cbiAgKVxuXG4gIGNvbnN0IGZyZXF1ZW5jeUxhYmVsID0gKHNjaGVkdWxlOiBTY2hlZHVsZVdpdGhBZ2VudFJlc3BvbnNlKSA9PiB7XG4gICAgY29uc3QgbWFwOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAgICAgbWludXRlbHk6IHQoJ3RyaWdnZXJzU2VjdGlvbi5mcmVxdWVuY2llcy5taW51dGVseScpLFxuICAgICAgaG91cmx5OiB0KCd0cmlnZ2Vyc1NlY3Rpb24uZnJlcXVlbmNpZXMuaG91cmx5JyksXG4gICAgICBkYWlseTogdCgndHJpZ2dlcnNTZWN0aW9uLmZyZXF1ZW5jaWVzLmRhaWx5JyksXG4gICAgICB3ZWVrbHk6IHQoJ3RyaWdnZXJzU2VjdGlvbi5mcmVxdWVuY2llcy53ZWVrbHknKSxcbiAgICB9XG4gICAgcmV0dXJuIG1hcFtzY2hlZHVsZS5zY2hlZHVsZV90eXBlXSA/PyBzY2hlZHVsZS5zY2hlZHVsZV90eXBlXG4gIH1cblxuICBjb25zdCBzdGF0dXNMYWJlbCA9IChzdGF0dXM6IHN0cmluZykgPT4ge1xuICAgIGNvbnN0IG1hcDogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgICAgIGFjdGl2ZTogdCgndHJpZ2dlcnNTZWN0aW9uLnN0YXR1cy5hY3RpdmUnKSxcbiAgICAgIHBhdXNlZDogdCgndHJpZ2dlcnNTZWN0aW9uLnN0YXR1cy5wYXVzZWQnKSxcbiAgICAgIGRpc2FibGVkOiB0KCd0cmlnZ2Vyc1NlY3Rpb24uc3RhdHVzLmRpc2FibGVkJyksXG4gICAgfVxuICAgIHJldHVybiBtYXBbc3RhdHVzXSA/PyBzdGF0dXNcbiAgfVxuXG4gIGNvbnN0IHNlbGVjdGVkTGFiZWwgPSBzZWxlY3RlZEFnZW50XG4gICAgPyBgJHtzZWxlY3RlZEFnZW50LmVtb2ppID8gYCR7c2VsZWN0ZWRBZ2VudC5lbW9qaX0gYCA6ICcnfSR7c2VsZWN0ZWRBZ2VudC5uYW1lfWBcbiAgICA6IHQoJ3RyaWdnZXJzU2VjdGlvbi5zZWxlY3RBZ2VudCcpXG5cbiAgY29uc3QgZGVsZXRlTW9kYWxDaGF0ID0gcm91dGluZVRvRGVsZXRlXG4gICAgPyB7IHRpdGxlOiByb3V0aW5lVG9EZWxldGUubmFtZSB8fCB0KCd0cmlnZ2Vyc1NlY3Rpb24udW50aXRsZWRSb3V0aW5lJyksIGlkOiByb3V0aW5lVG9EZWxldGUuaWQgfVxuICAgIDogbnVsbFxuXG4gIGNvbnN0IGNvbnRhaW5lciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdtb2RhbC1yb290LWFjdGlvbnMnKSA/PyBkb2N1bWVudC5ib2R5XG5cbiAgcmV0dXJuIChcbiAgICA8U0NNUkNvbnRhaW5lciAkaGFzSXRlbXM9eyEhcm91dGluZXMubGVuZ3RofT5cbiAgICAgIDxNQUlBSXNvbG9nbyAvPlxuXG4gICAgICA8U0NNUkJvZHkgJGNhbkNyZWF0ZT5cbiAgICAgICAge3JvdXRpbmVzLmxlbmd0aCA/IChcbiAgICAgICAgICA8U0NNUlRpdGxlV3JhcD5cbiAgICAgICAgICAgIDxTQ01SVGl0bGVJbm5lcj5cbiAgICAgICAgICAgICAgPFNDTVJUaXRsZT57dCgndHJpZ2dlcnNTZWN0aW9uLm15Um91dGluZXNUaXRsZScpfTwvU0NNUlRpdGxlPlxuICAgICAgICAgICAgICA8U0NNUlN1YnRpdGxlPnt0KCd0cmlnZ2Vyc1NlY3Rpb24ubXlSb3V0aW5lc1N1YnRpdGxlJyl9PC9TQ01SU3VidGl0bGU+XG4gICAgICAgICAgICA8L1NDTVJUaXRsZUlubmVyPlxuICAgICAgICAgICAgPFNDTVJBY3Rpb25zUm93PlxuICAgICAgICAgICAgICA8U0NNUkNyZWF0ZUJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgb25DbGljaz17b3BlbkNyZWF0ZVBhbmVsfT5cbiAgICAgICAgICAgICAgICA8U0NNUkNyZWF0ZUJ1dHRvblRleHQ+e3QoJ3RyaWdnZXJzU2VjdGlvbi5uZXdSb3V0aW5lJyl9PC9TQ01SQ3JlYXRlQnV0dG9uVGV4dD5cbiAgICAgICAgICAgICAgPC9TQ01SQ3JlYXRlQnV0dG9uPlxuICAgICAgICAgICAgPC9TQ01SQWN0aW9uc1Jvdz5cbiAgICAgICAgICA8L1NDTVJUaXRsZVdyYXA+XG4gICAgICAgICkgOiBudWxsfVxuXG4gICAgICAgIHtsb2FkaW5nID8gKFxuICAgICAgICAgIDxTQ01STG9hZFdyYXBwZXI+XG4gICAgICAgICAgICA8TG9hZGVyIHNpemU9XCJzbWFsbFwiIC8+XG4gICAgICAgICAgPC9TQ01STG9hZFdyYXBwZXI+XG4gICAgICAgICkgOiBudWxsfVxuXG4gICAgICAgIHshbG9hZGluZyAmJiByb3V0aW5lcy5sZW5ndGggPyAoXG4gICAgICAgICAgPFNDTVJDYXJkc091dGVyPlxuICAgICAgICAgICAgPFNDTVJDYXJkc1Jvdz5cbiAgICAgICAgICAgICAge3JvdXRpbmVzLm1hcChyb3V0aW5lID0+IChcbiAgICAgICAgICAgICAgICA8U0NNUkNhcmRCdXR0b24ga2V5PXtyb3V0aW5lLmlkfSB0eXBlPVwiYnV0dG9uXCIgb25DbGljaz17KCkgPT4gb3BlbkRldGFpbFBhbmVsKHJvdXRpbmUpfT5cbiAgICAgICAgICAgICAgICAgIDxTQ01SQ2FyZEhlYWRlcj5cbiAgICAgICAgICAgICAgICAgICAgPFNDTVJDYXJkVG9wUm93PlxuICAgICAgICAgICAgICAgICAgICAgIDxTQ01SQ2FyZFRpdGxlTmFtZT57cm91dGluZS5uYW1lIHx8IHQoJ3RyaWdnZXJzU2VjdGlvbi51bnRpdGxlZFJvdXRpbmUnKX08L1NDTVJDYXJkVGl0bGVOYW1lPlxuICAgICAgICAgICAgICAgICAgICAgIDxTQ01SS2ViYWJCdXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1sYWJlbD17dCgndHJpZ2dlcnNTZWN0aW9uLmRlbGV0ZVJvdXRpbmUnKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e2V2ZW50ID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKVxuICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRNZW51T3BlbkZvcklkKHByZXYgPT4gKHByZXYgPT09IHJvdXRpbmUuaWQgPyBudWxsIDogcm91dGluZS5pZCkpXG4gICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxNZW51RG90cyBjb2xvcj1cIiM5OTlcIiB3aWR0aD17MTV9IGhlaWdodD17MTV9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgPC9TQ01SS2ViYWJCdXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDwvU0NNUkNhcmRUb3BSb3c+XG4gICAgICAgICAgICAgICAgICA8L1NDTVJDYXJkSGVhZGVyPlxuICAgICAgICAgICAgICAgICAgPFNDTVJDYXJkQm9keT5cbiAgICAgICAgICAgICAgICAgICAgPFNDTVJDYXJkQ29udGVudFRleHQ+XG4gICAgICAgICAgICAgICAgICAgICAge3JvdXRpbmUuYWdlbnRfZW1vamkgfHwgcm91dGluZS5hZ2VudF9uYW1lXG4gICAgICAgICAgICAgICAgICAgICAgICA/IGAke3JvdXRpbmUuYWdlbnRfZW1vamkgPyBgJHtyb3V0aW5lLmFnZW50X2Vtb2ppfSBgIDogJyd9JHtyb3V0aW5lLmFnZW50X25hbWUgPz8gJyd9YFxuICAgICAgICAgICAgICAgICAgICAgICAgOiAnJ31cbiAgICAgICAgICAgICAgICAgICAgPC9TQ01SQ2FyZENvbnRlbnRUZXh0PlxuICAgICAgICAgICAgICAgICAgICA8U0NNUkNhcmRGb290ZXI+XG4gICAgICAgICAgICAgICAgICAgICAgPFNDTVJDYXJkRnJlcXVlbmN5PntmcmVxdWVuY3lMYWJlbChyb3V0aW5lKX08L1NDTVJDYXJkRnJlcXVlbmN5PlxuICAgICAgICAgICAgICAgICAgICAgIDxTQ01SU3RhdHVzQmFkZ2UgJHN0YXR1cz17cm91dGluZS5zdGF0dXN9PntzdGF0dXNMYWJlbChyb3V0aW5lLnN0YXR1cyl9PC9TQ01SU3RhdHVzQmFkZ2U+XG4gICAgICAgICAgICAgICAgICAgIDwvU0NNUkNhcmRGb290ZXI+XG4gICAgICAgICAgICAgICAgICA8L1NDTVJDYXJkQm9keT5cbiAgICAgICAgICAgICAgICAgIHttZW51T3BlbkZvcklkID09PSByb3V0aW5lLmlkID8gKFxuICAgICAgICAgICAgICAgICAgICA8U0NNUkNhcmRNZW51XG4gICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17ZXZlbnQgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKVxuICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcbiAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgPFNDTVJDYXJkTWVudUl0ZW1zPlxuICAgICAgICAgICAgICAgICAgICAgICAgPFNDTVJDYXJkTWVudUl0ZW1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRSb3V0aW5lVG9EZWxldGUocm91dGluZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRNZW51T3BlbkZvcklkKG51bGwpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHt0KCd0cmlnZ2Vyc1NlY3Rpb24uZGVsZXRlUm91dGluZScpfVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9TQ01SQ2FyZE1lbnVJdGVtPlxuICAgICAgICAgICAgICAgICAgICAgIDwvU0NNUkNhcmRNZW51SXRlbXM+XG4gICAgICAgICAgICAgICAgICAgIDwvU0NNUkNhcmRNZW51PlxuICAgICAgICAgICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgICAgICAgPC9TQ01SQ2FyZEJ1dHRvbj5cbiAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICA8L1NDTVJDYXJkc1Jvdz5cbiAgICAgICAgICA8L1NDTVJDYXJkc091dGVyPlxuICAgICAgICApIDogbnVsbH1cblxuICAgICAgICB7IWxvYWRpbmcgJiYgIXJvdXRpbmVzLmxlbmd0aCA/IChcbiAgICAgICAgICA8U0NNUkVtcHR5U3RhdGVSb290PlxuICAgICAgICAgICAgPFNDTVJFbXB0eVN0YXRlQ29sdW1uPlxuICAgICAgICAgICAgICA8U0NNUkVtcHR5U3RhdGVUaXRsZUJsb2NrPlxuICAgICAgICAgICAgICAgIDxTQ01SRW1wdHlTdGF0ZVRpdGxlPnt0KCd0cmlnZ2Vyc1NlY3Rpb24ubXlSb3V0aW5lc0VtcHR5VGl0bGUnKX08L1NDTVJFbXB0eVN0YXRlVGl0bGU+XG4gICAgICAgICAgICAgICAgPFNDTVJFbXB0eVN0YXRlU3VidGl0bGU+e3QoJ3RyaWdnZXJzU2VjdGlvbi5teVJvdXRpbmVzRW1wdHlEZXNjcmlwdGlvbicpfTwvU0NNUkVtcHR5U3RhdGVTdWJ0aXRsZT5cbiAgICAgICAgICAgICAgPC9TQ01SRW1wdHlTdGF0ZVRpdGxlQmxvY2s+XG4gICAgICAgICAgICA8L1NDTVJFbXB0eVN0YXRlQ29sdW1uPlxuICAgICAgICAgICAgPFNDTVJFbXB0eVN0YXRlQnV0dG9uIHR5cGU9XCJidXR0b25cIiBvbkNsaWNrPXtvcGVuQ3JlYXRlUGFuZWx9PlxuICAgICAgICAgICAgICB7dCgndHJpZ2dlcnNTZWN0aW9uLm5ld1JvdXRpbmUnKX1cbiAgICAgICAgICAgIDwvU0NNUkVtcHR5U3RhdGVCdXR0b24+XG4gICAgICAgICAgPC9TQ01SRW1wdHlTdGF0ZVJvb3Q+XG4gICAgICAgICkgOiBudWxsfVxuICAgICAgPC9TQ01SQm9keT5cblxuICAgICAge3BhbmVsT3BlbiAmJlxuICAgICAgICBSZWFjdERPTS5jcmVhdGVQb3J0YWwoXG4gICAgICAgICAgPEJhY2tkcm9wIG9uQ2xpY2s9e2Nsb3NlUGFuZWx9IHpJbmRleD17TUFJQV9TRUNUSU9OX01PREFMX1p9PlxuICAgICAgICAgICAgPFNDTVJNb2RhbFdyYXBwZXIgb25DbGljaz17ZSA9PiBlLnN0b3BQcm9wYWdhdGlvbigpfT5cbiAgICAgICAgICAgICAgPFNDTVJNb2RhbEhlYWRlcj5cbiAgICAgICAgICAgICAgICA8U0NNUk1vZGFsVGl0bGU+XG4gICAgICAgICAgICAgICAgICB7ZWRpdGluZ1JvdXRpbmUgPyB0KCd0cmlnZ2Vyc1NlY3Rpb24ucm91dGluZURldGFpbCcpIDogdCgndHJpZ2dlcnNTZWN0aW9uLm5ld1JvdXRpbmUnKX1cbiAgICAgICAgICAgICAgICA8L1NDTVJNb2RhbFRpdGxlPlxuICAgICAgICAgICAgICAgIDxTQ01STW9kYWxDbG9zZUJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgYXJpYS1sYWJlbD17dCgndHJpZ2dlcnNTZWN0aW9uLmJhY2snKX0gb25DbGljaz17Y2xvc2VQYW5lbH0+XG4gICAgICAgICAgICAgICAgICA8Q3Jvc3MgY29sb3I9XCIjYTZhNmE2XCIgd2lkdGg9ezE4fSBoZWlnaHQ9ezE4fSAvPlxuICAgICAgICAgICAgICAgIDwvU0NNUk1vZGFsQ2xvc2VCdXR0b24+XG4gICAgICAgICAgICAgIDwvU0NNUk1vZGFsSGVhZGVyPlxuICAgICAgICAgICAgICA8U0NNUk1vZGFsQ29udGVudD5cbiAgICAgICAgICAgICAgICA8U0NGaWVsZFdpdGhEcm9wZG93blo+XG4gICAgICAgICAgICAgICAgICB7dCgndHJpZ2dlcnNTZWN0aW9uLmFnZW50Jyl9XG4gICAgICAgICAgICAgICAgICA8U0NBZ2VudFNlbGVjdG9yQ29udGFpbmVyIHJlZj17ZHJvcGRvd25SZWYgYXMgYW55fT5cbiAgICAgICAgICAgICAgICAgICAge2VkaXRpbmdSb3V0aW5lID8gKFxuICAgICAgICAgICAgICAgICAgICAgIDxTQ0FnZW50U2VsZWN0b3JUcmlnZ2VyIG9wZW49e2ZhbHNlfSB0eXBlPVwiYnV0dG9uXCIgZGlzYWJsZWQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57c2VsZWN0ZWRMYWJlbH08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgPC9TQ0FnZW50U2VsZWN0b3JUcmlnZ2VyPlxuICAgICAgICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICAgICAgICA8U0NBZ2VudFNlbGVjdG9yVHJpZ2dlclxuICAgICAgICAgICAgICAgICAgICAgICAgICBvcGVuPXtkcm9wZG93bk9wZW59XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHNldERyb3Bkb3duT3BlbihwcmV2ID0+ICFwcmV2KX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPntsb2FkaW5nQWdlbnRzID8gdCgndHJpZ2dlcnNTZWN0aW9uLmxvYWRpbmdBZ2VudHMnKSA6IHNlbGVjdGVkTGFiZWx9PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8Q2hldnJvbkRvd24gd2lkdGg9XCIxNHB4XCIgaGVpZ2h0PVwiMTRweFwiIGNvbG9yPXtkcm9wZG93bk9wZW4gPyB1LmFnZW50QWNjZW50IDogdS50ZXh0TXV0ZWR9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L1NDQWdlbnRTZWxlY3RvclRyaWdnZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7ZHJvcGRvd25PcGVuICYmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPFNDQWdlbnRTZWxlY3Rvckxpc3Q+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2xvYWRpbmdBZ2VudHMgPyAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U0NBZ2VudFNlbGVjdG9yTG9hZGluZ1Jvdz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3QoJ3RyaWdnZXJzU2VjdGlvbi5sb2FkaW5nQWdlbnRzJyl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1NDQWdlbnRTZWxlY3RvckxvYWRpbmdSb3c+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFnZW50cy5tYXAoYWdlbnQgPT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U0NBZ2VudFNlbGVjdG9yT3B0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5PXthZ2VudC5pZH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc1NlbGVjdGVkPXtzZWxlY3RlZEFnZW50Py5pZCA9PT0gYWdlbnQuaWR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25Nb3VzZURvd249e2UgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0U2VsZWN0ZWRBZ2VudChhZ2VudClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldERyb3Bkb3duT3BlbihmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2FnZW50LmVtb2ppID8gYCR7YWdlbnQuZW1vaml9IGAgOiAnJ31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7YWdlbnQubmFtZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9TQ0FnZW50U2VsZWN0b3JPcHRpb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICApKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvU0NBZ2VudFNlbGVjdG9yTGlzdD5cbiAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICA8L1NDQWdlbnRTZWxlY3RvckNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8L1NDRmllbGRXaXRoRHJvcGRvd25aPlxuICAgICAgICAgICAgICAgIDxTQ01STW9kYWxCb2R5U2Nyb2xsPlxuICAgICAgICAgICAgICAgICAgPEFibVRyaWdnZXJzU2VjdGlvblxuICAgICAgICAgICAgICAgICAgICBhZ2VudEV4dGVybmFsSWQ9e3NlbGVjdGVkQWdlbnQ/LmlkID8/IG51bGx9XG4gICAgICAgICAgICAgICAgICAgIGluaXRpYWxGb3JtPXt0ZW1wbGF0ZUZvcm0gPz8gdW5kZWZpbmVkfVxuICAgICAgICAgICAgICAgICAgICBzdWJtaXRDb3VudD17c3VibWl0Q291bnR9XG4gICAgICAgICAgICAgICAgICAgIG9uU3VjY2Vzcz17aGFuZGxlQ3JlYXRlU3VjY2Vzc31cbiAgICAgICAgICAgICAgICAgICAgb25WYWxpZGl0eUNoYW5nZT17c2V0SXNGb3JtVmFsaWR9XG4gICAgICAgICAgICAgICAgICAgIHN0YW5kYWxvbmVDcmVhdGVPbmx5XG4gICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDwvU0NNUk1vZGFsQm9keVNjcm9sbD5cbiAgICAgICAgICAgICAgPC9TQ01STW9kYWxDb250ZW50PlxuICAgICAgICAgICAgICA8U0NNUk1vZGFsRm9vdGVyPlxuICAgICAgICAgICAgICAgIDxTQ01STW9kYWxDYW5jZWxCdXR0b24gdHlwZT1cImJ1dHRvblwiIG9uQ2xpY2s9e2Nsb3NlUGFuZWx9PlxuICAgICAgICAgICAgICAgICAge3QoJ3RyaWdnZXJzU2VjdGlvbi5iYWNrJyl9XG4gICAgICAgICAgICAgICAgPC9TQ01STW9kYWxDYW5jZWxCdXR0b24+XG4gICAgICAgICAgICAgICAgeyFlZGl0aW5nUm91dGluZSAmJiAoXG4gICAgICAgICAgICAgICAgICA8U0NNUk1vZGFsU2F2ZUJ1dHRvblxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9eyFpc0Zvcm1WYWxpZH1cbiAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gc2V0U3VibWl0Q291bnQocHJldiA9PiBwcmV2ICsgMSl9XG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIHt0KCd0cmlnZ2Vyc1NlY3Rpb24uc2F2ZScpfVxuICAgICAgICAgICAgICAgICAgPC9TQ01STW9kYWxTYXZlQnV0dG9uPlxuICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgIDwvU0NNUk1vZGFsRm9vdGVyPlxuICAgICAgICAgICAgPC9TQ01STW9kYWxXcmFwcGVyPlxuICAgICAgICAgIDwvQmFja2Ryb3A+LFxuICAgICAgICAgIGNvbnRhaW5lclxuICAgICAgICApfVxuXG4gICAgICB7ZGVsZXRlTW9kYWxDaGF0ID8gKFxuICAgICAgICA8RGVsZXRlUXVlc3Rpb25Nb2RhbFxuICAgICAgICAgIGFjdGlvbj1cInJvdXRpbmVcIlxuICAgICAgICAgIGNoYXQ9e2RlbGV0ZU1vZGFsQ2hhdH1cbiAgICAgICAgICBvbkNsb3NlPXsoKSA9PiBzZXRSb3V0aW5lVG9EZWxldGUobnVsbCl9XG4gICAgICAgICAgaGFuZGxlcnM9e3sgaGFuZGxlQ29uZmlybUFjdGlvbjogaGFuZGxlQ29uZmlybURlbGV0ZSB9fVxuICAgICAgICAvPlxuICAgICAgKSA6IG51bGx9XG4gICAgPC9TQ01SQ29udGFpbmVyPlxuICApXG59XG4iXSwibWFwcGluZ3MiOiI7OztBQUFBO0FBQ0EsT0FBT0EsUUFBUSxNQUFNLFdBQVc7QUFDaEMsU0FBU0MsV0FBVyxFQUFFQyxTQUFTLEVBQUVDLE1BQU0sRUFBRUMsUUFBUSxRQUFRLE9BQU87QUFDaEUsU0FBU0MsY0FBYyxRQUFRLGVBQWU7QUFDOUMsU0FBU0MsUUFBUSxRQUFRLDJDQUEyQztBQUNwRSxTQUFTQyxXQUFXLFFBQVEsOENBQThDO0FBQzFFLFNBQVNDLEtBQUssUUFB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