@projectcor/maia-components 2.34.1-0 → 2.34.2-0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +7 -0
- package/lib/components/atoms/AgentActivityIndicator/AgentActivityIndicator.styles.js +1 -1
- package/lib/components/atoms/ApprovalBox/ApprovalBox.js +59 -4
- package/lib/components/atoms/ApprovalBox/ApprovalBox.styles.js +16 -4
- package/lib/components/atoms/ContextMentionChip/buildChipElement.js +1 -12
- package/lib/components/atoms/ContextMentionEditor/ContextMentionEditor.js +5 -127
- package/lib/components/atoms/ContextMentionItem/ContextMentionItem.js +29 -2
- package/lib/components/atoms/ContextMentionItem/ContextMentionItem.styles.js +33 -24
- package/lib/components/atoms/ContextMentionPopover/ContextMentionPopover.js +19 -2
- package/lib/components/atoms/MAIAInput/MAIAInput.js +17 -192
- package/lib/components/atoms/MAIAInput/styles.js +11 -15
- package/lib/components/atoms/icons/SkillsNavIcon.js +7 -4
- package/lib/components/atoms/icons/index.js +1 -5
- package/lib/components/molecules/AbmSection/AbmAccessibilitySection/AbmAccessibilitySection.js +34 -11
- package/lib/components/molecules/ChatAIContent/ChatAIContent.js +3 -5
- package/lib/components/molecules/ChatAIMessages/ChatAIMessages.js +3 -3
- package/lib/components/molecules/ChatAIMessages/newStyles.js +2 -2
- package/lib/components/molecules/ChatAIModal/ChatAIModal.js +18 -56
- package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeader.js +5 -10
- package/lib/components/molecules/ChatAIMySkills/ChatAIMySkills.js +238 -312
- package/lib/components/molecules/ChatAIMySkills/ChatAIMySkills.styles.js +104 -131
- package/lib/components/molecules/ContextMentionInput/ContextMentionInput.js +3 -1
- package/lib/components/molecules/Sidebar/Sidebar.js +4 -5
- package/lib/components/molecules/Sidebar/Sidebar.layout.styles.js +2 -2
- package/lib/components/organisms/AbmAgentModal/AbmAgentModal.js +10 -6
- package/lib/components/organisms/AbmSkillGenerateModal/AbmSkillGenerateModal.js +1 -8
- package/lib/components/organisms/AbmSkillModal/AbmSkillModal.js +183 -337
- package/lib/components/organisms/AbmSkillModal/AbmSkillModal.styles.js +66 -122
- package/lib/constants/config.js +4 -1
- package/lib/constants/permissions/utils.js +3 -3
- package/lib/hooks/useAgentModel/useCreateAgent.js +6 -6
- package/lib/hooks/useAgentModel/useUpdateAgent.js +6 -6
- package/lib/hooks/useChatManager/useChatManager.js +5 -4
- package/lib/hooks/useContextMentions.js +56 -93
- package/lib/hooks/useEntitySearch.js +278 -92
- package/lib/hooks/useMentionAllowedTypes.js +25 -9
- package/lib/hooks/useMentionPopover.js +33 -9
- package/lib/lang/br/index.js +13 -33
- package/lib/lang/en/index.js +13 -33
- package/lib/lang/es/index.js +14 -34
- package/lib/lang/fr/index.js +13 -33
- package/lib/services/maia/Agents/setAgentToolGroups.js +2 -2
- package/lib/services/maia/Orchestrator/orchestrator.js +6 -3
- package/lib/services/maia/Skills/createSkill.js +1 -1
- package/lib/services/maia/Skills/getSkills.js +40 -70
- package/lib/services/maia/Skills/updateSkill.js +1 -1
- package/lib/types/agentModal.js +1 -1
- package/lib/types/skill.js +1 -1
- package/lib/utils/contextMentionTriggers.js +5 -2
- package/lib/utils/normalizeAgentConnectors.js +44 -16
- package/lib/utils/renderContextMentions.js +18 -39
- package/package.json +1 -1
- package/lib/components/atoms/SkillsDropdown/SkillsDropdown.js +0 -208
- package/lib/components/atoms/SkillsDropdown/SkillsDropdown.styles.js +0 -77
- package/lib/components/atoms/SkillsDropdown/index.js +0 -2
- package/lib/components/atoms/icons/PlusIcon.js +0 -29
- package/lib/components/atoms/icons/SkillCreatedByIcon.js +0 -20
- package/lib/components/atoms/icons/SkillVisibilityEveryoneIcon.js +0 -23
- package/lib/components/atoms/icons/SkillVisibilityOnlyMeIcon.js +0 -23
- package/lib/hooks/useSkillsCatalog.js +0 -66
|
@@ -1,42 +1,19 @@
|
|
|
1
|
-
import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
|
2
1
|
import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
|
|
3
|
-
import _toConsumableArray from "@babel/runtime/helpers/toConsumableArray";
|
|
4
2
|
import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
|
|
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; }
|
|
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; }
|
|
7
3
|
import _regeneratorRuntime from "@babel/runtime/regenerator";
|
|
8
|
-
import React, { useCallback, useEffect, useMemo,
|
|
4
|
+
import React, { useCallback, useEffect, useMemo, useState } from 'react';
|
|
9
5
|
import { MenuDots } from '@projectcor/icons/lib/components/MenuDots';
|
|
10
|
-
import { Search } from '@projectcor/icons/lib/components/Search';
|
|
11
|
-
import { InformationCircle } from '@projectcor/icons/lib/components/InformationCircle';
|
|
12
|
-
import { Tooltip } from '@projectcor/tooltipv2/lib/components/Tooltip';
|
|
13
6
|
import { useTranslation } from 'react-i18next';
|
|
7
|
+
import { useUser } from '../../../context/cor-user';
|
|
14
8
|
import { deleteSkill } from '../../../services/maia/Skills/deleteSkill';
|
|
15
9
|
import { useSnackBarManager } from '../../../hooks/useSnackBarManager/useSnackBarManager';
|
|
16
|
-
import { useMaiaTaskPanelZIndex } from '../../../hooks/useMaiaTaskPanelZIndex';
|
|
17
10
|
import { DeleteQuestionModal } from '../../organisms/DeleteQuestionModal/DeleteQuestionModal';
|
|
18
|
-
import {
|
|
11
|
+
import { SKILL_GENERATE_OPEN_EVENT } from '../../organisms/AbmSkillGenerateModal/AbmSkillGenerateModal';
|
|
19
12
|
import { SECTIONS } from '../../../constants/config';
|
|
20
13
|
import { Loader } from '../../atoms/Loader';
|
|
21
|
-
import {
|
|
22
|
-
import {
|
|
23
|
-
import {
|
|
24
|
-
import { SCMSBody, SCMSCardButton, SCMSCardContentText, SCMSCardMenu, SCMSCardMenuItem, SCMSCardTitleName, SCMSCardTopRow, SCMSCardVisibilityRow, SCMSCardVisibilityText, SCMSCardsList, SCMSContainer, SCMSCreateButton, SCMSCreateButtonText, SCMSSharedEmptyStateRoot, SCMSSharedEmptyStateSubtitle, SCMSSharedEmptyStateTitle, SCMSSharedEmptyStateTitleBlock, SCMSKebabButton, SCMSLoadWrapper, SCMSMetaDescription, SCMSMetaRow, SCMSPanel, SCMSPanelHeader, SCMSListScrollArea, SCMSSearchInput, SCMSSearchWrapper, SCMSTabBar, SCMSTabButton, SCMSTabInfoIcon, SCMSTitle, SCMSTitleBlock } from './ChatAIMySkills.styles';
|
|
25
|
-
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
26
|
-
var DROPDOWN_GAP_PX = 6;
|
|
27
|
-
var CARD_MENU_ITEM_HEIGHT_PX = 40;
|
|
28
|
-
var resolveDropdownPlacement = function resolveDropdownPlacement(anchor, dropdownHeight) {
|
|
29
|
-
var rect = anchor.getBoundingClientRect();
|
|
30
|
-
var spaceBelow = window.innerHeight - rect.bottom - DROPDOWN_GAP_PX;
|
|
31
|
-
var spaceAbove = rect.top - DROPDOWN_GAP_PX;
|
|
32
|
-
if (spaceBelow >= dropdownHeight) return 'bottom';
|
|
33
|
-
if (spaceAbove >= dropdownHeight) return 'top';
|
|
34
|
-
return spaceBelow >= spaceAbove ? 'bottom' : 'top';
|
|
35
|
-
};
|
|
36
|
-
var formatSkillDisplayName = function formatSkillDisplayName(name) {
|
|
37
|
-
var normalized = name.replace(/^(@\/|#)/, '');
|
|
38
|
-
return "#".concat(normalized);
|
|
39
|
-
};
|
|
14
|
+
import { SCMSBody, SCMSCardBody, SCMSCardButton, SCMSCardContentText, SCMSCardFooter, SCMSCardFooterDate, SCMSCardHeader, SCMSCardMenu, SCMSCardMenuItem, SCMSCardMenuItems, SCMSCardTitleName, SCMSCardTopRow, SCMSCardsOuter, SCMSCardsRow, SCMSContainer, SCMSCreateButton, SCMSCreateButtonText, SCMSCreateMenu, SCMSCreateMenuItem, SCMSCreateMenuWrap, SCMSEmptyStateButton, SCMSEmptyStateColumn, SCMSEmptyStateRoot, SCMSEmptyStateSubtitle, SCMSEmptyStateTitle, SCMSEmptyStateTitleBlock, SCMSKebabButton, SCMSLoadWrapper, SCMSTitle, SCMSSubtitle, SCMSActionsRow, SCMSTitleInner, SCMSTitleWrap } from './ChatAIMySkills.styles';
|
|
15
|
+
import { MAIAIsologo } from '../../atoms/icons';
|
|
16
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
40
17
|
var openSkillModal = function openSkillModal(values) {
|
|
41
18
|
document.dispatchEvent(new CustomEvent('abm-skill-modal-set-values', {
|
|
42
19
|
detail: {
|
|
@@ -47,131 +24,144 @@ var openSkillModal = function openSkillModal(values) {
|
|
|
47
24
|
}
|
|
48
25
|
}));
|
|
49
26
|
};
|
|
50
|
-
var
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
children: [/*#__PURE__*/_jsx(
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
27
|
+
var IconChat = function IconChat() {
|
|
28
|
+
return /*#__PURE__*/_jsx("svg", {
|
|
29
|
+
width: "16",
|
|
30
|
+
height: "16",
|
|
31
|
+
viewBox: "0 0 16 16",
|
|
32
|
+
fill: "none",
|
|
33
|
+
"aria-hidden": "true",
|
|
34
|
+
children: /*#__PURE__*/_jsx("path", {
|
|
35
|
+
d: "M14 7.5a5.5 5.5 0 0 1-7.9 4.96L2.5 13.5l1.04-3.1A5.5 5.5 0 1 1 14 7.5Z",
|
|
36
|
+
stroke: "#666",
|
|
37
|
+
strokeWidth: "1.3",
|
|
38
|
+
strokeLinejoin: "round"
|
|
39
|
+
})
|
|
40
|
+
});
|
|
41
|
+
};
|
|
42
|
+
var IconClipboard = function IconClipboard() {
|
|
43
|
+
return /*#__PURE__*/_jsxs("svg", {
|
|
44
|
+
width: "16",
|
|
45
|
+
height: "16",
|
|
46
|
+
viewBox: "0 0 16 16",
|
|
47
|
+
fill: "none",
|
|
48
|
+
"aria-hidden": "true",
|
|
49
|
+
children: [/*#__PURE__*/_jsx("rect", {
|
|
50
|
+
x: "3.5",
|
|
51
|
+
y: "3",
|
|
52
|
+
width: "9",
|
|
53
|
+
height: "11",
|
|
54
|
+
rx: "1.5",
|
|
55
|
+
stroke: "#666",
|
|
56
|
+
strokeWidth: "1.3"
|
|
57
|
+
}), /*#__PURE__*/_jsx("rect", {
|
|
58
|
+
x: "5.75",
|
|
59
|
+
y: "1.75",
|
|
60
|
+
width: "4.5",
|
|
61
|
+
height: "2.5",
|
|
62
|
+
rx: "0.75",
|
|
63
|
+
stroke: "#666",
|
|
64
|
+
strokeWidth: "1.3"
|
|
65
|
+
}), /*#__PURE__*/_jsx("path", {
|
|
66
|
+
d: "M6 7.5h4M6 10h3",
|
|
67
|
+
stroke: "#666",
|
|
68
|
+
strokeWidth: "1.3",
|
|
69
|
+
strokeLinecap: "round"
|
|
81
70
|
})]
|
|
82
71
|
});
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
72
|
+
};
|
|
73
|
+
var IconUpload = function IconUpload() {
|
|
74
|
+
return /*#__PURE__*/_jsxs("svg", {
|
|
75
|
+
width: "16",
|
|
76
|
+
height: "16",
|
|
77
|
+
viewBox: "0 0 16 16",
|
|
78
|
+
fill: "none",
|
|
79
|
+
"aria-hidden": "true",
|
|
80
|
+
children: [/*#__PURE__*/_jsx("path", {
|
|
81
|
+
d: "M8 10.5V3M8 3 5.5 5.5M8 3l2.5 2.5",
|
|
82
|
+
stroke: "#666",
|
|
83
|
+
strokeWidth: "1.3",
|
|
84
|
+
strokeLinecap: "round",
|
|
85
|
+
strokeLinejoin: "round"
|
|
86
|
+
}), /*#__PURE__*/_jsx("path", {
|
|
87
|
+
d: "M3 10v2a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1v-2",
|
|
88
|
+
stroke: "#666",
|
|
89
|
+
strokeWidth: "1.3",
|
|
90
|
+
strokeLinecap: "round"
|
|
91
|
+
})]
|
|
92
|
+
});
|
|
93
|
+
};
|
|
94
|
+
export var ChatAIMySkills = function ChatAIMySkills(_ref) {
|
|
95
|
+
var _user$permissions;
|
|
96
|
+
var skills = _ref.skills,
|
|
97
|
+
_ref$loading = _ref.loading,
|
|
98
|
+
loading = _ref$loading === void 0 ? false : _ref$loading,
|
|
99
|
+
onDeleteSkill = _ref.onDeleteSkill;
|
|
90
100
|
var _useTranslation = useTranslation([SECTIONS.chatAI]),
|
|
91
101
|
t = _useTranslation.t;
|
|
102
|
+
var user = useUser();
|
|
92
103
|
var _useSnackBarManager = useSnackBarManager(),
|
|
93
104
|
handleSnackbarSuccess = _useSnackBarManager.handleSnackbarSuccess,
|
|
94
105
|
handleSnackbarError = _useSnackBarManager.handleSnackbarError;
|
|
95
|
-
var
|
|
96
|
-
|
|
97
|
-
|
|
106
|
+
var _useState = useState(null),
|
|
107
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
108
|
+
menuOpenForSkillId = _useState2[0],
|
|
109
|
+
setMenuOpenForSkillId = _useState2[1];
|
|
110
|
+
var _useState3 = useState(false),
|
|
98
111
|
_useState4 = _slicedToArray(_useState3, 2),
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
var _useState5 = useState(
|
|
112
|
+
createMenuOpen = _useState4[0],
|
|
113
|
+
setCreateMenuOpen = _useState4[1];
|
|
114
|
+
var _useState5 = useState(null),
|
|
102
115
|
_useState6 = _slicedToArray(_useState5, 2),
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
var
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
var
|
|
110
|
-
|
|
111
|
-
cardMenuPlacement = _useState0[0],
|
|
112
|
-
setCardMenuPlacement = _useState0[1];
|
|
113
|
-
var _useState1 = useState(null),
|
|
114
|
-
_useState10 = _slicedToArray(_useState1, 2),
|
|
115
|
-
skillToDelete = _useState10[0],
|
|
116
|
-
setSkillToDelete = _useState10[1];
|
|
117
|
-
var isMineTab = activeTab === 'mine';
|
|
118
|
-
var tabSkills = isMineTab ? mySkills : sharedSkills;
|
|
119
|
-
var filteredSkills = useMemo(function () {
|
|
120
|
-
var normalizedQuery = searchQuery.toLowerCase();
|
|
121
|
-
var matched = normalizedQuery ? tabSkills.filter(function (skill) {
|
|
122
|
-
return skill.name.toLowerCase().includes(normalizedQuery);
|
|
123
|
-
}) : tabSkills;
|
|
124
|
-
return _toConsumableArray(matched).sort(function (a, b) {
|
|
125
|
-
return a.name.localeCompare(b.name);
|
|
126
|
-
});
|
|
127
|
-
}, [searchQuery, tabSkills]);
|
|
128
|
-
var handleCreateSkill = useCallback(function () {
|
|
116
|
+
skillToDelete = _useState6[0],
|
|
117
|
+
setSkillToDelete = _useState6[1];
|
|
118
|
+
var userPermissions = user === null || user === void 0 || (_user$permissions = user.permissions) === null || _user$permissions === void 0 ? void 0 : _user$permissions.ai_agents;
|
|
119
|
+
var canCreate = !!(userPermissions !== null && userPermissions !== void 0 && userPermissions.create) && !!window.MAIA_CHAT_AI_FEATURE_ACCESS_MULTI_AGENTS;
|
|
120
|
+
var canEdit = !!(userPermissions !== null && userPermissions !== void 0 && userPermissions.edit) && !!window.MAIA_CHAT_AI_FEATURE_ACCESS_MULTI_AGENTS;
|
|
121
|
+
var canDelete = !!(userPermissions !== null && userPermissions !== void 0 && userPermissions["delete"]) && !!window.MAIA_CHAT_AI_FEATURE_ACCESS_MULTI_AGENTS;
|
|
122
|
+
var canShowMenu = canEdit || canDelete;
|
|
123
|
+
var openCreateSkillModal = useCallback(function () {
|
|
129
124
|
openSkillModal({
|
|
130
|
-
isEditing: false
|
|
131
|
-
intent: 'write'
|
|
125
|
+
isEditing: false
|
|
132
126
|
});
|
|
133
127
|
}, []);
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
var cardAnchor = event.currentTarget.closest('[data-skill-card-id]');
|
|
141
|
-
if (cardAnchor instanceof HTMLElement) {
|
|
142
|
-
setCardMenuPlacement(resolveDropdownPlacement(cardAnchor, cardMenuHeightPx));
|
|
128
|
+
var handleCreateOption = useCallback(function (intent) {
|
|
129
|
+
setCreateMenuOpen(false);
|
|
130
|
+
if (intent === 'generate') {
|
|
131
|
+
// "Crear con Maia" abre el modal simple de descripción (no el editor).
|
|
132
|
+
document.dispatchEvent(new CustomEvent(SKILL_GENERATE_OPEN_EVENT));
|
|
133
|
+
return;
|
|
143
134
|
}
|
|
144
|
-
|
|
145
|
-
|
|
135
|
+
openSkillModal({
|
|
136
|
+
isEditing: false,
|
|
137
|
+
intent: intent
|
|
146
138
|
});
|
|
147
|
-
}, [cardMenuHeightPx]);
|
|
148
|
-
|
|
149
|
-
/** Mismo flujo que el botón "Usar skill" del modal: chat nuevo con el primer agente y la mención puesta. */
|
|
150
|
-
var handleUseSkill = useCallback(function (skill) {
|
|
151
|
-
document.dispatchEvent(new CustomEvent(SKILL_USE_AFTER_SAVE_EVENT, {
|
|
152
|
-
detail: {
|
|
153
|
-
skill: skill,
|
|
154
|
-
useFirstAgent: true
|
|
155
|
-
}
|
|
156
|
-
}));
|
|
157
|
-
setMenuOpenForSkillId(null);
|
|
158
139
|
}, []);
|
|
159
|
-
var
|
|
140
|
+
var handleOpenEditSkill = useCallback(function (skill) {
|
|
160
141
|
openSkillModal({
|
|
161
142
|
isEditing: true,
|
|
162
|
-
isReadOnly: isReadOnly,
|
|
163
143
|
general: {
|
|
164
144
|
id: skill.id,
|
|
165
145
|
name: skill.name,
|
|
166
|
-
|
|
167
|
-
content: skill.content,
|
|
168
|
-
access_type: skill.access_type,
|
|
169
|
-
created_by_name: skill.created_by_name,
|
|
170
|
-
updated_at: skill.updated_at
|
|
146
|
+
content: skill.content
|
|
171
147
|
}
|
|
172
148
|
});
|
|
173
149
|
setMenuOpenForSkillId(null);
|
|
174
150
|
}, []);
|
|
151
|
+
var getCreatedAtLabel = function getCreatedAtLabel(skill) {
|
|
152
|
+
var createdAt = skill.created_at;
|
|
153
|
+
if (!createdAt) return '';
|
|
154
|
+
var createdAtDate = new Date(createdAt);
|
|
155
|
+
if (Number.isNaN(createdAtDate.getTime())) return '';
|
|
156
|
+
var diffMs = Date.now() - createdAtDate.getTime();
|
|
157
|
+
var dayMs = 1000 * 60 * 60 * 24;
|
|
158
|
+
var days = Math.max(0, Math.floor(diffMs / dayMs));
|
|
159
|
+
if (days === 0) return t('marketplace.myAgentsToday');
|
|
160
|
+
if (days === 1) return t('marketplace.myAgentsOneDayAgo');
|
|
161
|
+
return t('marketplace.myAgentsDaysAgo', {
|
|
162
|
+
days: days
|
|
163
|
+
});
|
|
164
|
+
};
|
|
175
165
|
var deleteModalChat = useMemo(function () {
|
|
176
166
|
return skillToDelete ? {
|
|
177
167
|
title: skillToDelete.name,
|
|
@@ -179,7 +169,7 @@ export var ChatAIMySkills = function ChatAIMySkills(_ref2) {
|
|
|
179
169
|
} : null;
|
|
180
170
|
}, [skillToDelete]);
|
|
181
171
|
var handleConfirmDelete = /*#__PURE__*/function () {
|
|
182
|
-
var
|
|
172
|
+
var _ref2 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee(chat) {
|
|
183
173
|
var _t;
|
|
184
174
|
return _regeneratorRuntime.wrap(function (_context) {
|
|
185
175
|
while (1) switch (_context.prev = _context.next) {
|
|
@@ -205,7 +195,7 @@ export var ChatAIMySkills = function ChatAIMySkills(_ref2) {
|
|
|
205
195
|
}, _callee, null, [[0, 2]]);
|
|
206
196
|
}));
|
|
207
197
|
return function handleConfirmDelete(_x) {
|
|
208
|
-
return
|
|
198
|
+
return _ref2.apply(this, arguments);
|
|
209
199
|
};
|
|
210
200
|
}();
|
|
211
201
|
useEffect(function () {
|
|
@@ -213,209 +203,145 @@ export var ChatAIMySkills = function ChatAIMySkills(_ref2) {
|
|
|
213
203
|
if (menuOpenForSkillId) {
|
|
214
204
|
setMenuOpenForSkillId(null);
|
|
215
205
|
}
|
|
206
|
+
if (createMenuOpen) {
|
|
207
|
+
setCreateMenuOpen(false);
|
|
208
|
+
}
|
|
216
209
|
};
|
|
217
210
|
document.addEventListener('click', handleClickOutside);
|
|
218
211
|
return function () {
|
|
219
212
|
document.removeEventListener('click', handleClickOutside);
|
|
220
213
|
};
|
|
221
|
-
}, [menuOpenForSkillId]);
|
|
222
|
-
useEffect(function () {
|
|
223
|
-
if (!menuOpenForSkillId) return undefined;
|
|
224
|
-
var handleReposition = function handleReposition() {
|
|
225
|
-
var _listScrollRef$curren;
|
|
226
|
-
var openCard = (_listScrollRef$curren = listScrollRef.current) === null || _listScrollRef$curren === void 0 ? void 0 : _listScrollRef$curren.querySelector("[data-skill-card-id=\"".concat(menuOpenForSkillId, "\"]"));
|
|
227
|
-
if (openCard) {
|
|
228
|
-
setCardMenuPlacement(resolveDropdownPlacement(openCard, cardMenuHeightPx));
|
|
229
|
-
}
|
|
230
|
-
};
|
|
231
|
-
var scrollContainer = listScrollRef.current;
|
|
232
|
-
scrollContainer === null || scrollContainer === void 0 || scrollContainer.addEventListener('scroll', handleReposition, {
|
|
233
|
-
passive: true
|
|
234
|
-
});
|
|
235
|
-
window.addEventListener('resize', handleReposition);
|
|
236
|
-
return function () {
|
|
237
|
-
scrollContainer === null || scrollContainer === void 0 || scrollContainer.removeEventListener('scroll', handleReposition);
|
|
238
|
-
window.removeEventListener('resize', handleReposition);
|
|
239
|
-
};
|
|
240
|
-
}, [menuOpenForSkillId, cardMenuHeightPx]);
|
|
241
|
-
var tabDescription = isMineTab ? t('mySkills.mySkillsDescription') : t('mySkills.sharedSkillsDescription');
|
|
242
|
-
var isMineEmpty = isMineTab && !loading && mySkills.length === 0 && !searchQuery;
|
|
243
|
-
var showSkillsToolbar = isMineTab ? !isMineEmpty : tabSkills.length > 0 || !!searchQuery;
|
|
244
|
-
var renderCreateSkillButton = function renderCreateSkillButton() {
|
|
245
|
-
return /*#__PURE__*/_jsx(SCMSCreateButton, {
|
|
246
|
-
type: "button",
|
|
247
|
-
onClick: handleCreateSkill,
|
|
248
|
-
children: /*#__PURE__*/_jsx(SCMSCreateButtonText, {
|
|
249
|
-
children: t('mySkills.createSkill')
|
|
250
|
-
})
|
|
251
|
-
});
|
|
252
|
-
};
|
|
253
|
-
var renderSearchEmptyState = function renderSearchEmptyState() {
|
|
254
|
-
return /*#__PURE__*/_jsx(SCMSSharedEmptyStateRoot, {
|
|
255
|
-
children: /*#__PURE__*/_jsxs(SCMSSharedEmptyStateTitleBlock, {
|
|
256
|
-
children: [/*#__PURE__*/_jsx(SCMSSharedEmptyStateTitle, {
|
|
257
|
-
children: t('mySkills.searchEmptyStateTitle')
|
|
258
|
-
}), /*#__PURE__*/_jsx(SCMSSharedEmptyStateSubtitle, {
|
|
259
|
-
children: t('mySkills.searchEmptyStateDescription')
|
|
260
|
-
})]
|
|
261
|
-
})
|
|
262
|
-
});
|
|
263
|
-
};
|
|
264
|
-
var renderEmptyState = function renderEmptyState() {
|
|
265
|
-
if (!isMineTab) {
|
|
266
|
-
if (searchQuery) {
|
|
267
|
-
return renderSearchEmptyState();
|
|
268
|
-
}
|
|
269
|
-
return /*#__PURE__*/_jsx(SCMSSharedEmptyStateRoot, {
|
|
270
|
-
children: /*#__PURE__*/_jsxs(SCMSSharedEmptyStateTitleBlock, {
|
|
271
|
-
children: [/*#__PURE__*/_jsx(SCMSSharedEmptyStateTitle, {
|
|
272
|
-
children: t('mySkills.sharedEmptyStateTitle')
|
|
273
|
-
}), /*#__PURE__*/_jsx(SCMSSharedEmptyStateSubtitle, {
|
|
274
|
-
children: t('mySkills.sharedEmptyStateDescription')
|
|
275
|
-
})]
|
|
276
|
-
})
|
|
277
|
-
});
|
|
278
|
-
}
|
|
279
|
-
if (searchQuery) {
|
|
280
|
-
return renderSearchEmptyState();
|
|
281
|
-
}
|
|
282
|
-
return /*#__PURE__*/_jsxs(SCMSSharedEmptyStateRoot, {
|
|
283
|
-
children: [/*#__PURE__*/_jsxs(SCMSSharedEmptyStateTitleBlock, {
|
|
284
|
-
children: [/*#__PURE__*/_jsx(SCMSSharedEmptyStateTitle, {
|
|
285
|
-
children: t('mySkills.emptyStateTitle')
|
|
286
|
-
}), /*#__PURE__*/_jsx(SCMSSharedEmptyStateSubtitle, {
|
|
287
|
-
children: t('mySkills.emptyStateDescription')
|
|
288
|
-
})]
|
|
289
|
-
}), renderCreateSkillButton()]
|
|
290
|
-
});
|
|
291
|
-
};
|
|
214
|
+
}, [menuOpenForSkillId, createMenuOpen]);
|
|
292
215
|
return /*#__PURE__*/_jsxs(SCMSContainer, {
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
children:
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
},
|
|
307
|
-
children: t('mySkills.tabMySkills')
|
|
308
|
-
}), /*#__PURE__*/_jsx(SCMSTabButton, {
|
|
216
|
+
$hasSkills: !!skills.length,
|
|
217
|
+
children: [/*#__PURE__*/_jsx(MAIAIsologo, {}), /*#__PURE__*/_jsxs(SCMSBody, {
|
|
218
|
+
$canCreate: canCreate,
|
|
219
|
+
children: [skills.length ? /*#__PURE__*/_jsxs(SCMSTitleWrap, {
|
|
220
|
+
children: [/*#__PURE__*/_jsxs(SCMSTitleInner, {
|
|
221
|
+
children: [/*#__PURE__*/_jsx(SCMSTitle, {
|
|
222
|
+
children: t('mySkills.title')
|
|
223
|
+
}), /*#__PURE__*/_jsx(SCMSSubtitle, {
|
|
224
|
+
children: t('mySkills.subtitle')
|
|
225
|
+
})]
|
|
226
|
+
}), canCreate ? /*#__PURE__*/_jsx(SCMSActionsRow, {
|
|
227
|
+
children: /*#__PURE__*/_jsxs(SCMSCreateMenuWrap, {
|
|
228
|
+
children: [/*#__PURE__*/_jsx(SCMSCreateButton, {
|
|
309
229
|
type: "button",
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
230
|
+
onClick: function onClick(event) {
|
|
231
|
+
event.stopPropagation();
|
|
232
|
+
setCreateMenuOpen(function (prev) {
|
|
233
|
+
return !prev;
|
|
234
|
+
});
|
|
313
235
|
},
|
|
314
|
-
children:
|
|
315
|
-
|
|
316
|
-
title: t('mySkills.infoTooltip')
|
|
317
|
-
}, tooltipZIndex != null ? {
|
|
318
|
-
zIndex: tooltipZIndex
|
|
319
|
-
} : {}), {}, {
|
|
320
|
-
children: /*#__PURE__*/_jsx(SCMSTabInfoIcon, {
|
|
321
|
-
"aria-label": t('mySkills.infoTooltip'),
|
|
322
|
-
children: /*#__PURE__*/_jsx(InformationCircle, {
|
|
323
|
-
color: "#808080",
|
|
324
|
-
width: 20,
|
|
325
|
-
height: 20
|
|
326
|
-
})
|
|
236
|
+
children: /*#__PURE__*/_jsx(SCMSCreateButtonText, {
|
|
237
|
+
children: t('mySkills.createSkill')
|
|
327
238
|
})
|
|
328
|
-
})
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
}), /*#__PURE__*/_jsxs(SCMSListScrollArea, {
|
|
340
|
-
ref: listScrollRef,
|
|
341
|
-
children: [loading ? /*#__PURE__*/_jsx(SCMSLoadWrapper, {
|
|
342
|
-
children: /*#__PURE__*/_jsx(Loader, {
|
|
343
|
-
size: "small"
|
|
344
|
-
})
|
|
345
|
-
}) : null, !loading && filteredSkills.length ? /*#__PURE__*/_jsx(SCMSCardsList, {
|
|
346
|
-
children: filteredSkills.map(function (skill, index) {
|
|
347
|
-
return /*#__PURE__*/_jsxs(SCMSCardButton, {
|
|
239
|
+
}), createMenuOpen ? /*#__PURE__*/_jsxs(SCMSCreateMenu, {
|
|
240
|
+
onClick: function onClick(event) {
|
|
241
|
+
return event.stopPropagation();
|
|
242
|
+
},
|
|
243
|
+
children: [/*#__PURE__*/_jsxs(SCMSCreateMenuItem, {
|
|
244
|
+
type: "button",
|
|
245
|
+
onClick: function onClick() {
|
|
246
|
+
return handleCreateOption('generate');
|
|
247
|
+
},
|
|
248
|
+
children: [/*#__PURE__*/_jsx(IconChat, {}), t('mySkills.createWithMaia')]
|
|
249
|
+
}), /*#__PURE__*/_jsxs(SCMSCreateMenuItem, {
|
|
348
250
|
type: "button",
|
|
349
|
-
"data-skill-card-id": skill.id,
|
|
350
|
-
$index: index,
|
|
351
|
-
$elevated: menuOpenForSkillId === skill.id,
|
|
352
251
|
onClick: function onClick() {
|
|
353
|
-
return
|
|
252
|
+
return handleCreateOption('write');
|
|
354
253
|
},
|
|
355
|
-
children: [/*#__PURE__*/
|
|
254
|
+
children: [/*#__PURE__*/_jsx(IconClipboard, {}), t('mySkills.writeInstructions')]
|
|
255
|
+
}), /*#__PURE__*/_jsxs(SCMSCreateMenuItem, {
|
|
256
|
+
type: "button",
|
|
257
|
+
onClick: function onClick() {
|
|
258
|
+
return handleCreateOption('upload');
|
|
259
|
+
},
|
|
260
|
+
children: [/*#__PURE__*/_jsx(IconUpload, {}), t('mySkills.uploadSkill')]
|
|
261
|
+
})]
|
|
262
|
+
}) : null]
|
|
263
|
+
})
|
|
264
|
+
}) : null]
|
|
265
|
+
}) : null, loading ? /*#__PURE__*/_jsx(SCMSLoadWrapper, {
|
|
266
|
+
children: /*#__PURE__*/_jsx(Loader, {
|
|
267
|
+
size: "small"
|
|
268
|
+
})
|
|
269
|
+
}) : null, !loading && skills.length ? /*#__PURE__*/_jsx(SCMSCardsOuter, {
|
|
270
|
+
children: /*#__PURE__*/_jsx(SCMSCardsRow, {
|
|
271
|
+
children: skills.map(function (skill) {
|
|
272
|
+
return /*#__PURE__*/_jsxs(SCMSCardButton, {
|
|
273
|
+
type: "button",
|
|
274
|
+
onClick: function onClick() {
|
|
275
|
+
return canEdit && handleOpenEditSkill(skill);
|
|
276
|
+
},
|
|
277
|
+
children: [/*#__PURE__*/_jsx(SCMSCardHeader, {
|
|
278
|
+
children: /*#__PURE__*/_jsxs(SCMSCardTopRow, {
|
|
356
279
|
children: [/*#__PURE__*/_jsx(SCMSCardTitleName, {
|
|
357
|
-
children:
|
|
358
|
-
}), /*#__PURE__*/_jsx(SCMSKebabButton, {
|
|
280
|
+
children: skill.name
|
|
281
|
+
}), canShowMenu ? /*#__PURE__*/_jsx(SCMSKebabButton, {
|
|
359
282
|
type: "button",
|
|
360
|
-
$visible: menuOpenForSkillId === skill.id,
|
|
361
283
|
"aria-label": t('mySkills.cardMenuAriaLabel'),
|
|
362
284
|
onClick: function onClick(event) {
|
|
363
|
-
|
|
285
|
+
event.preventDefault();
|
|
286
|
+
event.stopPropagation();
|
|
287
|
+
setMenuOpenForSkillId(function (prev) {
|
|
288
|
+
return prev === skill.id ? null : skill.id;
|
|
289
|
+
});
|
|
364
290
|
},
|
|
365
291
|
children: /*#__PURE__*/_jsx(MenuDots, {
|
|
366
|
-
color: "#
|
|
367
|
-
width:
|
|
368
|
-
height:
|
|
292
|
+
color: "#999",
|
|
293
|
+
width: 15,
|
|
294
|
+
height: 15
|
|
369
295
|
})
|
|
370
|
-
})]
|
|
371
|
-
})
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
children:
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
}) : /*#__PURE__*/_jsxs(_Fragment, {
|
|
379
|
-
children: [/*#__PURE__*/_jsx(SkillCreatedByIcon, {}), /*#__PURE__*/_jsx(SCMSCardVisibilityText, {
|
|
380
|
-
children: t('mySkills.sharedCreatedBy', {
|
|
381
|
-
name: skill.created_by_name || ''
|
|
382
|
-
})
|
|
383
|
-
})]
|
|
296
|
+
}) : null]
|
|
297
|
+
})
|
|
298
|
+
}), /*#__PURE__*/_jsxs(SCMSCardBody, {
|
|
299
|
+
children: [/*#__PURE__*/_jsx(SCMSCardContentText, {
|
|
300
|
+
children: skill.content
|
|
301
|
+
}), /*#__PURE__*/_jsx(SCMSCardFooter, {
|
|
302
|
+
children: /*#__PURE__*/_jsx(SCMSCardFooterDate, {
|
|
303
|
+
children: getCreatedAtLabel(skill) || t('marketplace.myAgentsFallbackDate')
|
|
384
304
|
})
|
|
385
|
-
})
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
305
|
+
})]
|
|
306
|
+
}), menuOpenForSkillId === skill.id && canShowMenu ? /*#__PURE__*/_jsx(SCMSCardMenu, {
|
|
307
|
+
onClick: function onClick(event) {
|
|
308
|
+
event.preventDefault();
|
|
309
|
+
event.stopPropagation();
|
|
310
|
+
},
|
|
311
|
+
children: /*#__PURE__*/_jsxs(SCMSCardMenuItems, {
|
|
312
|
+
children: [canEdit ? /*#__PURE__*/_jsx(SCMSCardMenuItem, {
|
|
313
|
+
type: "button",
|
|
314
|
+
onClick: function onClick() {
|
|
315
|
+
return handleOpenEditSkill(skill);
|
|
316
|
+
},
|
|
317
|
+
children: t('mySkills.edit')
|
|
318
|
+
}) : null, canDelete ? /*#__PURE__*/_jsx(SCMSCardMenuItem, {
|
|
392
319
|
type: "button",
|
|
393
320
|
onClick: function onClick() {
|
|
394
|
-
return
|
|
321
|
+
return setSkillToDelete(skill);
|
|
395
322
|
},
|
|
396
|
-
children: t('mySkills.
|
|
397
|
-
}), isMineTab ? /*#__PURE__*/_jsxs(_Fragment, {
|
|
398
|
-
children: [/*#__PURE__*/_jsx(SCMSCardMenuItem, {
|
|
399
|
-
type: "button",
|
|
400
|
-
onClick: function onClick() {
|
|
401
|
-
return handleOpenSkill(skill, false);
|
|
402
|
-
},
|
|
403
|
-
children: t('mySkills.edit')
|
|
404
|
-
}), /*#__PURE__*/_jsx(SCMSCardMenuItem, {
|
|
405
|
-
type: "button",
|
|
406
|
-
$destructive: true,
|
|
407
|
-
onClick: function onClick() {
|
|
408
|
-
return setSkillToDelete(skill);
|
|
409
|
-
},
|
|
410
|
-
children: t('mySkills.delete')
|
|
411
|
-
})]
|
|
323
|
+
children: t('mySkills.delete')
|
|
412
324
|
}) : null]
|
|
413
|
-
})
|
|
414
|
-
}
|
|
415
|
-
})
|
|
416
|
-
})
|
|
417
|
-
})
|
|
418
|
-
})
|
|
325
|
+
})
|
|
326
|
+
}) : null]
|
|
327
|
+
}, skill.id);
|
|
328
|
+
})
|
|
329
|
+
})
|
|
330
|
+
}) : null, !loading && !skills.length ? /*#__PURE__*/_jsxs(SCMSEmptyStateRoot, {
|
|
331
|
+
children: [/*#__PURE__*/_jsx(SCMSEmptyStateColumn, {
|
|
332
|
+
children: /*#__PURE__*/_jsxs(SCMSEmptyStateTitleBlock, {
|
|
333
|
+
children: [/*#__PURE__*/_jsx(SCMSEmptyStateTitle, {
|
|
334
|
+
children: t('mySkills.emptyStateTitle')
|
|
335
|
+
}), /*#__PURE__*/_jsx(SCMSEmptyStateSubtitle, {
|
|
336
|
+
children: canCreate ? t('mySkills.emptyStateDescription') : t('mySkills.emptyStateDescriptionNoPerm')
|
|
337
|
+
})]
|
|
338
|
+
})
|
|
339
|
+
}), canCreate ? /*#__PURE__*/_jsx(SCMSEmptyStateButton, {
|
|
340
|
+
type: "button",
|
|
341
|
+
onClick: openCreateSkillModal,
|
|
342
|
+
children: t('mySkills.emptyStateButton')
|
|
343
|
+
}) : null]
|
|
344
|
+
}) : null]
|
|
419
345
|
}), deleteModalChat ? /*#__PURE__*/_jsx(DeleteQuestionModal, {
|
|
420
346
|
onClose: function onClose() {
|
|
421
347
|
return setSkillToDelete(null);
|
|
@@ -428,4 +354,4 @@ export var ChatAIMySkills = function ChatAIMySkills(_ref2) {
|
|
|
428
354
|
}) : null]
|
|
429
355
|
});
|
|
430
356
|
};
|
|
431
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsInVzZUNhbGxiYWNrIiwidXNlRWZmZWN0IiwidXNlTWVtbyIsInVzZVJlZiIsInVzZVN0YXRlIiwiTWVudURvdHMiLCJTZWFyY2giLCJJbmZvcm1hdGlvbkNpcmNsZSIsIlRvb2x0aXAiLCJ1c2VUcmFuc2xhdGlvbiIsImRlbGV0ZVNraWxsIiwidXNlU25hY2tCYXJNYW5hZ2VyIiwidXNlTWFpYVRhc2tQYW5lbFpJbmRleCIsIkRlbGV0ZVF1ZXN0aW9uTW9kYWwiLCJTS0lMTF9VU0VfQUZURVJfU0FWRV9FVkVOVCIsIlNFQ1RJT05TIiwiTG9hZGVyIiwiU2tpbGxDcmVhdGVkQnlJY29uIiwiU2tpbGxWaXNpYmlsaXR5RXZlcnlvbmVJY29uIiwiU2tpbGxWaXNpYmlsaXR5T25seU1lSWNvbiIsIlNDTVNCb2R5IiwiU0NNU0NhcmRCdXR0b24iLCJTQ01TQ2FyZENvbnRlbnRUZXh0IiwiU0NNU0NhcmRNZW51IiwiU0NNU0NhcmRNZW51SXRlbSIsIlNDTVNDYXJkVGl0bGVOYW1lIiwiU0NNU0NhcmRUb3BSb3ciLCJTQ01TQ2FyZFZpc2liaWxpdHlSb3ciLCJTQ01TQ2FyZFZpc2liaWxpdHlUZXh0IiwiU0NNU0NhcmRzTGlzdCIsIlNDTVNDb250YWluZXIiLCJTQ01TQ3JlYXRlQnV0dG9uIiwiU0NNU0NyZWF0ZUJ1dHRvblRleHQiLCJTQ01TU2hhcmVkRW1wdHlTdGF0ZVJvb3QiLCJTQ01TU2hhcmVkRW1wdHlTdGF0ZVN1YnRpdGxlIiwiU0NNU1NoYXJlZEVtcHR5U3RhdGVUaXRsZSIsIlNDTVNTaGFyZWRFbXB0eVN0YXRlVGl0bGVCbG9jayIsIlNDTVNLZWJhYkJ1dHRvbiIsIlNDTVNMb2FkV3JhcHBlciIsIlNDTVNNZXRhRGVzY3JpcHRpb24iLCJTQ01TTWV0YVJvdyIsIlNDTVNQYW5lbCIsIlNDTVNQYW5lbEhlYWRlciIsIlNDTVNMaXN0U2Nyb2xsQXJlYSIsIlNDTVNTZWFyY2hJbnB1dCIsIlNDTVNTZWFyY2hXcmFwcGVyIiwiU0NNU1RhYkJhciIsIlNDTVNUYWJCdXR0b24iLCJTQ01TVGFiSW5mb0ljb24iLCJTQ01TVGl0bGUiLCJTQ01TVGl0bGVCbG9jayIsImpzeCIsIl9qc3giLCJqc3hzIiwiX2pzeHMiLCJGcmFnbWVudCIsIl9GcmFnbWVudCIsIkRST1BET1dOX0dBUF9QWCIsIkNBUkRfTUVOVV9JVEVNX0hFSUdIVF9QWCIsInJlc29sdmVEcm9wZG93blBsYWNlbWVudCIsImFuY2hvciIsImRyb3Bkb3duSGVpZ2h0IiwicmVjdCIsImdldEJvdW5kaW5nQ2xpZW50UmVjdCIsInNwYWNlQmVsb3ciLCJ3aW5kb3ciLCJpbm5lckhlaWdodCIsImJvdHRvbSIsInNwYWNlQWJvdmUiLCJ0b3AiLCJmb3JtYXRTa2lsbERpc3BsYXlOYW1lIiwibmFtZSIsIm5vcm1hbGl6ZWQiLCJyZXBsYWNlIiwiY29uY2F0Iiwib3BlblNraWxsTW9kYWwiLCJ2YWx1ZXMiLCJkb2N1bWVudCIsImRpc3BhdGNoRXZlbnQiLCJDdXN0b21FdmVudCIsImRldGFpbCIsInNraWxsVmFsdWVzIiwiaXNPcGVuIiwiU2tpbGxTZWFyY2hJbnB1dCIsIm1lbW8iLCJfcmVmIiwib25TZWFyY2giLCJwbGFjZWhvbGRlciIsIl91c2VTdGF0ZSIsIl91c2VTdGF0ZTIiLCJfc2xpY2VkVG9BcnJheSIsInZhbHVlIiwic2V0VmFsdWUiLCJkZWJvdW5jZVJlZiIsImhhbmRsZUNoYW5nZSIsImV2ZW50IiwibmV4dFZhbHVlIiwidGFyZ2V0IiwiY3VycmVudCIsImNsZWFyVGltZW91dCIsInNldFRpbWVvdXQiLCJ0cmltIiwiY2hpbGRyZW4iLCJ3aWR0aCIsImhlaWdodCIsImNvbG9yIiwidHlwZSIsIm9uQ2hhbmdlIiwiQ2hhdEFJTXlTa2lsbHMiLCJfcmVmMiIsIm15U2tpbGxzIiwic2hhcmVkU2tpbGxzIiwiX3JlZjIkbG9hZGluZyIsImxvYWRpbmciLCJvbkRlbGV0ZVNraWxsIiwiX3VzZVRyYW5zbGF0aW9uIiwiY2hhdEFJIiwidCIsIl91c2VTbmFja0Jhck1hbmFnZXIiLCJoYW5kbGVTbmFja2JhclN1Y2Nlc3MiLCJoYW5kbGVTbmFja2JhckVycm9yIiwidG9vbHRpcFpJbmRleCIsImxpc3RTY3JvbGxSZWYiLCJfdXNlU3RhdGUzIiwiX3VzZVN0YXRlNCIsImFjdGl2ZVRhYiIsInNldEFjdGl2ZVRhYiIsIl91c2VTdGF0ZTUiLCJfdXNlU3RhdGU2Iiwic2VhcmNoUXVlcnkiLCJzZXRTZWFyY2hRdWVyeSIsIl91c2VTdGF0ZTciLCJfdXNlU3RhdGU4IiwibWVudU9wZW5Gb3JTa2lsbElkIiwic2V0TWVudU9wZW5Gb3JTa2lsbElkIiwiX3VzZVN0YXRlOSIsIl91c2VTdGF0ZTAiLCJjYXJkTWVudVBsYWNlbWVudCIsInNldENhcmRNZW51UGxhY2VtZW50IiwiX3VzZVN0YXRlMSIsIl91c2VTdGF0ZTEwIiwic2tpbGxUb0RlbGV0ZSIsInNldFNraWxsVG9EZWxldGUiLCJpc01pbmVUYWIiLCJ0YWJTa2lsbHMiLCJmaWx0ZXJlZFNraWxscyIsIm5vcm1hbGl6ZWRRdWVyeSIsInRvTG93ZXJDYXNlIiwibWF0Y2hlZCIsImZpbHRlciIsInNraWxsIiwiaW5jbHVkZXMiLCJfdG9Db25zdW1hYmxlQXJyYXkiLCJzb3J0IiwiYSIsImIiLCJsb2NhbGVDb21wYXJlIiwiaGFuZGxlQ3JlYXRlU2tpbGwiLCJpc0VkaXRpbmciLCJpbnRlbnQiLCJjYXJkTWVudUhlaWdodFB4IiwiaGFuZGxlVG9nZ2xlQ2FyZE1lbnUiLCJza2lsbElkIiwicHJldmVudERlZmF1bHQiLCJzdG9wUHJvcGFnYXRpb24iLCJjYXJkQW5jaG9yIiwiY3VycmVudFRhcmdldCIsImNsb3Nlc3QiLCJIVE1MRWxlbWVudCIsInByZXYiLCJoYW5kbGVVc2VTa2lsbCIsInVzZUZpcnN0QWdlbnQiLCJoYW5kbGVPcGVuU2tpbGwiLCJpc1JlYWRPbmx5IiwiZ2VuZXJhbCIsImlkIiwiZGVzY3JpcHRpb24iLCJjb250ZW50IiwiYWNjZXNzX3R5cGUiLCJjcmVhdGVkX2J5X25hbWUiLCJ1cGRhdGVkX2F0IiwiZGVsZXRlTW9kYWxDaGF0IiwidGl0bGUiLCJoYW5kbGVDb25maXJtRGVsZXRlIiwiX3JlZjMiLCJfYXN5bmNUb0dlbmVyYXRvciIsIl9yZWdlbmVyYXRvclJ1bnRpbWUiLCJtYXJrIiwiX2NhbGxlZSIsImNoYXQiLCJfdCIsIndyYXAiLCJfY29udGV4dCIsIm5leHQiLCJzdG9wIiwiX3giLCJhcHBseSIsImFyZ3VtZW50cyIsImhhbmRsZUNsaWNrT3V0c2lkZSIsImFkZEV2ZW50TGlzdGVuZXIiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwidW5kZWZpbmVkIiwiaGFuZGxlUmVwb3NpdGlvbiIsIl9saXN0U2Nyb2xsUmVmJGN1cnJlbiIsIm9wZW5DYXJkIiwicXVlcnlTZWxlY3RvciIsInNjcm9sbENvbnRhaW5lciIsInBhc3NpdmUiLCJ0YWJEZXNjcmlwdGlvbiIsImlzTWluZUVtcHR5IiwibGVuZ3RoIiwic2hvd1NraWxsc1Rvb2xiYXIiLCJyZW5kZXJDcmVhdGVTa2lsbEJ1dHRvbiIsIm9uQ2xpY2siLCJyZW5kZXJTZWFyY2hFbXB0eVN0YXRlIiwicmVuZGVyRW1wdHlTdGF0ZSIsIiRhY3RpdmUiLCJfb2JqZWN0U3ByZWFkIiwiekluZGV4IiwicmVmIiwic2l6ZSIsIm1hcCIsImluZGV4IiwiJGluZGV4IiwiJGVsZXZhdGVkIiwiJHZpc2libGUiLCIkcGxhY2VtZW50IiwiJGRlc3RydWN0aXZlIiwib25DbG9zZSIsImhhbmRsZXJzIiwiaGFuZGxlQ29uZmlybUFjdGlvbiIsImFjdGlvbiJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL21vbGVjdWxlcy9DaGF0QUlNeVNraWxscy9DaGF0QUlNeVNraWxscy50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0LCB7IHVzZUNhbGxiYWNrLCB1c2VFZmZlY3QsIHVzZU1lbW8sIHVzZVJlZiwgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCdcbmltcG9ydCB7IE1lbnVEb3RzIH0gZnJvbSAnQHByb2plY3Rjb3IvaWNvbnMvbGliL2NvbXBvbmVudHMvTWVudURvdHMnXG5pbXBvcnQgeyBTZWFyY2ggfSBmcm9tICdAcHJvamVjdGNvci9pY29ucy9saWIvY29tcG9uZW50cy9TZWFyY2gnXG5pbXBvcnQgeyBJbmZvcm1hdGlvbkNpcmNsZSB9IGZyb20gJ0Bwcm9qZWN0Y29yL2ljb25zL2xpYi9jb21wb25lbnRzL0luZm9ybWF0aW9uQ2lyY2xlJ1xuaW1wb3J0IHsgVG9vbHRpcCB9IGZyb20gJ0Bwcm9qZWN0Y29yL3Rvb2x0aXB2Mi9saWIvY29tcG9uZW50cy9Ub29sdGlwJ1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tICdyZWFjdC1pMThuZXh0J1xuaW1wb3J0IHsgU2tpbGwgfSBmcm9tICcuLi8uLi8uLi90eXBlcy9za2lsbCdcbmltcG9ydCB7IGRlbGV0ZVNraWxsIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvbWFpYS9Ta2lsbHMvZGVsZXRlU2tpbGwnXG5pbXBvcnQgeyB1c2VTbmFja0Jhck1hbmFnZXIgfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VTbmFja0Jhck1hbmFnZXIvdXNlU25hY2tCYXJNYW5hZ2VyJ1xuaW1wb3J0IHsgdXNlTWFpYVRhc2tQYW5lbFpJbmRleCB9IGZyb20gJy4uLy4uLy4uL2hvb2tzL3VzZU1haWFUYXNrUGFuZWxaSW5kZXgnXG5pbXBvcnQgeyBEZWxldGVRdWVzdGlvbk1vZGFsIH0gZnJvbSAnLi4vLi4vb3JnYW5pc21zL0RlbGV0ZVF1ZXN0aW9uTW9kYWwvRGVsZXRlUXVlc3Rpb25Nb2RhbCdcbmltcG9ydCB7IFNLSUxMX1VTRV9BRlRFUl9TQVZFX0VWRU5UIH0gZnJvbSAnLi4vLi4vb3JnYW5pc21zL0FibVNraWxsTW9kYWwvQWJtU2tpbGxNb2RhbCdcbmltcG9ydCB7IFNFQ1RJT05TIH0gZnJvbSAnLi4vLi4vLi4vY29uc3RhbnRzL2NvbmZpZydcbmltcG9ydCB7IExvYWRlciB9IGZyb20gJy4uLy4uL2F0b21zL0xvYWRlcidcbmltcG9ydCB7IFNraWxsQ3JlYXRlZEJ5SWNvbiB9IGZyb20gJy4uLy4uL2F0b21zL2ljb25zL1NraWxsQ3JlYXRlZEJ5SWNvbidcbmltcG9ydCB7IFNraWxsVmlzaWJpbGl0eUV2ZXJ5b25lSWNvbiB9IGZyb20gJy4uLy4uL2F0b21zL2ljb25zL1NraWxsVmlzaWJpbGl0eUV2ZXJ5b25lSWNvbidcbmltcG9ydCB7IFNraWxsVmlzaWJpbGl0eU9ubHlNZUljb24gfSBmcm9tICcuLi8uLi9hdG9tcy9pY29ucy9Ta2lsbFZpc2liaWxpdHlPbmx5TWVJY29uJ1xuaW1wb3J0IHtcbiAgU0NNU0JvZHksXG4gIFNDTVNDYXJkQnV0dG9uLFxuICBTQ01TQ2FyZENvbnRlbnRUZXh0LFxuICBTQ01TQ2FyZE1lbnUsXG4gIFNDTVNDYXJkTWVudUl0ZW0sXG4gIFNDTVNDYXJkVGl0bGVOYW1lLFxuICBTQ01TQ2FyZFRvcFJvdyxcbiAgU0NNU0NhcmRWaXNpYmlsaXR5Um93LFxuICBTQ01TQ2FyZFZpc2liaWxpdHlUZXh0LFxuICBTQ01TQ2FyZHNMaXN0LFxuICBTQ01TQ29udGFpbmVyLFxuICBTQ01TQ3JlYXRlQnV0dG9uLFxuICBTQ01TQ3JlYXRlQnV0dG9uVGV4dCxcbiAgU0NNU1NoYXJlZEVtcHR5U3RhdGVSb290LFxuICBTQ01TU2hhcmVkRW1wdHlTdGF0ZVN1YnRpdGxlLFxuICBTQ01TU2hhcmVkRW1wdHlTdGF0ZVRpdGxlLFxuICBTQ01TU2hhcmVkRW1wdHlTdGF0ZVRpdGxlQmxvY2ssXG4gIFNDTVNLZWJhYkJ1dHRvbixcbiAgU0NNU0xvYWRXcmFwcGVyLFxuICBTQ01TTWV0YURlc2NyaXB0aW9uLFxuICBTQ01TTWV0YVJvdyxcbiAgU0NNU1BhbmVsLFxuICBTQ01TUGFuZWxIZWFkZXIsXG4gIFNDTVNMaXN0U2Nyb2xsQXJlYSxcbiAgU0NNU1NlYXJjaElucHV0LFxuICBTQ01TU2VhcmNoV3JhcHBlcixcbiAgU0NNU1RhYkJhcixcbiAgU0NNU1RhYkJ1dHRvbixcbiAgU0NNU1RhYkluZm9JY29uLFxuICBTQ01TVGl0bGUsXG4gIFNDTVNUaXRsZUJsb2NrLFxufSBmcm9tICcuL0NoYXRBSU15U2tpbGxzLnN0eWxlcydcblxudHlwZSBDaGF0QUlNeVNraWxsc1Byb3BzID0ge1xuICBteVNraWxsczogU2tpbGxbXVxuICBzaGFyZWRTa2lsbHM6IFNraWxsW11cbiAgbG9hZGluZz86IGJvb2xlYW5cbiAgb25EZWxldGVTa2lsbD86IChza2lsbElkOiBzdHJpbmcpID0+IHZvaWRcbn1cblxudHlwZSBTa2lsbHNUYWIgPSAnbWluZScgfCAnc2hhcmVkJ1xuXG50eXBlIFNraWxsTW9kYWxJbnRlbnQgPSAnZ2VuZXJhdGUnIHwgJ3dyaXRlJ1xuXG50eXBlIERyb3Bkb3duUGxhY2VtZW50ID0gJ3RvcCcgfCAnYm90dG9tJ1xuXG5jb25zdCBEUk9QRE9XTl9HQVBfUFggPSA2XG5jb25zdCBDQVJEX01FTlVfSVRFTV9IRUlHSFRfUFggPSA0MFxuXG5jb25zdCByZXNvbHZlRHJvcGRvd25QbGFjZW1lbnQgPSAoYW5jaG9yOiBIVE1MRWxlbWVudCwgZHJvcGRvd25IZWlnaHQ6IG51bWJlcik6IERyb3Bkb3duUGxhY2VtZW50ID0+IHtcbiAgY29uc3QgcmVjdCA9IGFuY2hvci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKVxuICBjb25zdCBzcGFjZUJlbG93ID0gd2luZG93LmlubmVySGVpZ2h0IC0gcmVjdC5ib3R0b20gLSBEUk9QRE9XTl9HQVBfUFhcbiAgY29uc3Qgc3BhY2VBYm92ZSA9IHJlY3QudG9wIC0gRFJPUERPV05fR0FQX1BYXG5cbiAgaWYgKHNwYWNlQmVsb3cgPj0gZHJvcGRvd25IZWlnaHQpIHJldHVybiAnYm90dG9tJ1xuICBpZiAoc3BhY2VBYm92ZSA+PSBkcm9wZG93bkhlaWdodCkgcmV0dXJuICd0b3AnXG4gIHJldHVybiBzcGFjZUJlbG93ID49IHNwYWNlQWJvdmUgPyAnYm90dG9tJyA6ICd0b3AnXG59XG5cbmNvbnN0IGZvcm1hdFNraWxsRGlzcGxheU5hbWUgPSAobmFtZTogc3RyaW5nKSA9PiB7XG4gIGNvbnN0IG5vcm1hbGl6ZWQgPSBuYW1lLnJlcGxhY2UoL14oQFxcL3wjKS8sICcnKVxuICByZXR1cm4gYCMke25vcm1hbGl6ZWR9YFxufVxuXG5jb25zdCBvcGVuU2tpbGxNb2RhbCA9ICh2YWx1ZXM6IHtcbiAgaXNFZGl0aW5nOiBib29sZWFuXG4gIGlzUmVhZE9ubHk/OiBib29sZWFuXG4gIGludGVudD86IFNraWxsTW9kYWxJbnRlbnRcbiAgZ2VuZXJhbD86IHtcbiAgICBpZD86IHN0cmluZ1xuICAgIG5hbWU/OiBzdHJpbmdcbiAgICBkZXNjcmlwdGlvbj86IHN0cmluZ1xuICAgIGNvbnRlbnQ/OiBzdHJpbmdcbiAgICBhY2Nlc3NfdHlwZT86IFNraWxsWydhY2Nlc3NfdHlwZSddXG4gICAgY3JlYXRlZF9ieV9uYW1lPzogc3RyaW5nXG4gICAgdXBkYXRlZF9hdD86IHN0cmluZ1xuICB9XG59KSA9PiB7XG4gIGRvY3VtZW50LmRpc3BhdGNoRXZlbnQoXG4gICAgbmV3IEN1c3RvbUV2ZW50KCdhYm0tc2tpbGwtbW9kYWwtc2V0LXZhbHVlcycsIHtcbiAgICAgIGRldGFpbDoge1xuICAgICAgICBza2lsbFZhbHVlczoge1xuICAgICAgICAgIHZhbHVlcyxcbiAgICAgICAgICBpc09wZW46IHRydWUsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0pXG4gIClcbn1cblxuY29uc3QgU2tpbGxTZWFyY2hJbnB1dCA9IFJlYWN0Lm1lbW8oXG4gICh7IG9uU2VhcmNoLCBwbGFjZWhvbGRlciB9OiB7IG9uU2VhcmNoOiAocXVlcnk6IHN0cmluZykgPT4gdm9pZDsgcGxhY2Vob2xkZXI6IHN0cmluZyB9KSA9PiB7XG4gICAgY29uc3QgW3ZhbHVlLCBzZXRWYWx1ZV0gPSB1c2VTdGF0ZSgnJylcbiAgICBjb25zdCBkZWJvdW5jZVJlZiA9IHVzZVJlZjxSZXR1cm5UeXBlPHR5cGVvZiBzZXRUaW1lb3V0PiB8IG51bGw+KG51bGwpXG5cbiAgICBjb25zdCBoYW5kbGVDaGFuZ2UgPSB1c2VDYWxsYmFjayhcbiAgICAgIChldmVudDogUmVhY3QuQ2hhbmdlRXZlbnQ8SFRNTElucHV0RWxlbWVudD4pID0+IHtcbiAgICAgICAgY29uc3QgbmV4dFZhbHVlID0gZXZlbnQudGFyZ2V0LnZhbHVlXG4gICAgICAgIHNldFZhbHVlKG5leHRWYWx1ZSlcbiAgICAgICAgaWYgKGRlYm91bmNlUmVmLmN1cnJlbnQpIGNsZWFyVGltZW91dChkZWJvdW5jZVJlZi5jdXJyZW50KVxuICAgICAgICBkZWJvdW5jZVJlZi5jdXJyZW50ID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgb25TZWFyY2gobmV4dFZhbHVlLnRyaW0oKSlcbiAgICAgICAgfSwgMjUwKVxuICAgICAgfSxcbiAgICAgIFtvblNlYXJjaF1cbiAgICApXG5cbiAgICB1c2VFZmZlY3QoXG4gICAgICAoKSA9PiAoKSA9PiB7XG4gICAgICAgIGlmIChkZWJvdW5jZVJlZi5jdXJyZW50KSBjbGVhclRpbWVvdXQoZGVib3VuY2VSZWYuY3VycmVudClcbiAgICAgIH0sXG4gICAgICBbXVxuICAgIClcblxuICAgIHJldHVybiAoXG4gICAgICA8U0NNU1NlYXJjaFdyYXBwZXI+XG4gICAgICAgIDxTZWFyY2ggd2lkdGg9ezE2fSBoZWlnaHQ9ezE2fSBjb2xvcj1cIiM5OTlcIiAvPlxuICAgICAgICA8U0NNU1NlYXJjaElucHV0IHR5cGU9XCJ0ZXh0XCIgdmFsdWU9e3ZhbHVlfSBvbkNoYW5nZT17aGFuZGxlQ2hhbmdlfSBwbGFjZWhvbGRlcj17cGxhY2Vob2xkZXJ9IC8+XG4gICAgICA8L1NDTVNTZWFyY2hXcmFwcGVyPlxuICAgIClcbiAgfVxuKVxuXG5leHBvcnQgY29uc3QgQ2hhdEFJTXlTa2lsbHMgPSAoeyBteVNraWxscywgc2hhcmVkU2tpbGxzLCBsb2FkaW5nID0gZmFsc2UsIG9uRGVsZXRlU2tpbGwgfTogQ2hhdEFJTXlTa2lsbHNQcm9wcykgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKFtTRUNUSU9OUy5jaGF0QUldKVxuICBjb25zdCB7IGhhbmRsZVNuYWNrYmFyU3VjY2VzcywgaGFuZGxlU25hY2tiYXJFcnJvciB9ID0gdXNlU25hY2tCYXJNYW5hZ2VyKClcbiAgY29uc3QgdG9vbHRpcFpJbmRleCA9IHVzZU1haWFUYXNrUGFuZWxaSW5kZXgoMTUwMCwgJ292ZXJsYXknKVxuICBjb25zdCBsaXN0U2Nyb2xsUmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKVxuICBjb25zdCBbYWN0aXZlVGFiLCBzZXRBY3RpdmVUYWJdID0gdXNlU3RhdGU8U2tpbGxzVGFiPignbWluZScpXG4gIGNvbnN0IFtzZWFyY2hRdWVyeSwgc2V0U2VhcmNoUXVlcnldID0gdXNlU3RhdGUoJycpXG4gIGNvbnN0IFttZW51T3BlbkZvclNraWxsSWQsIHNldE1lbnVPcGVuRm9yU2tpbGxJZF0gPSB1c2VTdGF0ZTxzdHJpbmcgfCBudWxsPihudWxsKVxuICBjb25zdCBbY2FyZE1lbnVQbGFjZW1lbnQsIHNldENhcmRNZW51UGxhY2VtZW50XSA9IHVzZVN0YXRlPERyb3Bkb3duUGxhY2VtZW50PignYm90dG9tJylcbiAgY29uc3QgW3NraWxsVG9EZWxldGUsIHNldFNraWxsVG9EZWxldGVdID0gdXNlU3RhdGU8U2tpbGwgfCBudWxsPihudWxsKVxuICBjb25zdCBpc01pbmVUYWIgPSBhY3RpdmVUYWIgPT09ICdtaW5lJ1xuXG4gIGNvbnN0IHRhYlNraWxscyA9IGlzTWluZVRhYiA/IG15U2tpbGxzIDogc2hhcmVkU2tpbGxzXG5cbiAgY29uc3QgZmlsdGVyZWRTa2lsbHMgPSB1c2VNZW1vKCgpID0+IHtcbiAgICBjb25zdCBub3JtYWxpemVkUXVlcnkgPSBzZWFyY2hRdWVyeS50b0xvd2VyQ2FzZSgpXG4gICAgY29uc3QgbWF0Y2hlZCA9IG5vcm1hbGl6ZWRRdWVyeVxuICAgICAgPyB0YWJTa2lsbHMuZmlsdGVyKHNraWxsID0+IHNraWxsLm5hbWUudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhub3JtYWxpemVkUXVlcnkpKVxuICAgICAgOiB0YWJTa2lsbHNcbiAgICByZXR1cm4gWy4uLm1hdGNoZWRdLnNvcnQoKGEsIGIpID0+IGEubmFtZS5sb2NhbGVDb21wYXJlKGIubmFtZSkpXG4gIH0sIFtzZWFyY2hRdWVyeSwgdGFiU2tpbGxzXSlcblxuICBjb25zdCBoYW5kbGVDcmVhdGVTa2lsbCA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBvcGVuU2tpbGxNb2RhbCh7IGlzRWRpdGluZzogZmFsc2UsIGludGVudDogJ3dyaXRlJyB9KVxuICB9LCBbXSlcblxuICAvLyBcIk1pcyBza2lsbHNcIiB0aWVuZSBVc2FyICsgRWRpdGFyICsgRWxpbWluYXI7IFwiQ29tcGFydGlkYXNcIiBzb2xvIFVzYXIuXG4gIGNvbnN0IGNhcmRNZW51SGVpZ2h0UHggPSBpc01pbmVUYWIgPyBDQVJEX01FTlVfSVRFTV9IRUlHSFRfUFggKiAzIDogQ0FSRF9NRU5VX0lURU1fSEVJR0hUX1BYXG5cbiAgY29uc3QgaGFuZGxlVG9nZ2xlQ2FyZE1lbnUgPSB1c2VDYWxsYmFjayhcbiAgICAoZXZlbnQ6IFJlYWN0Lk1vdXNlRXZlbnQ8SFRNTEJ1dHRvbkVsZW1lbnQ+LCBza2lsbElkOiBzdHJpbmcpID0+IHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXG4gICAgICBjb25zdCBjYXJkQW5jaG9yID0gZXZlbnQuY3VycmVudFRhcmdldC5jbG9zZXN0KCdbZGF0YS1za2lsbC1jYXJkLWlkXScpXG4gICAgICBpZiAoY2FyZEFuY2hvciBpbnN0YW5jZW9mIEhUTUxFbGVtZW50KSB7XG4gICAgICAgIHNldENhcmRNZW51UGxhY2VtZW50KHJlc29sdmVEcm9wZG93blBsYWNlbWVudChjYXJkQW5jaG9yLCBjYXJkTWVudUhlaWdodFB4KSlcbiAgICAgIH1cbiAgICAgIHNldE1lbnVPcGVuRm9yU2tpbGxJZChwcmV2ID0+IChwcmV2ID09PSBza2lsbElkID8gbnVsbCA6IHNraWxsSWQpKVxuICAgIH0sXG4gICAgW2NhcmRNZW51SGVpZ2h0UHhdXG4gIClcblxuICAvKiogTWlzbW8gZmx1am8gcXVlIGVsIGJvdMOzbiBcIlVzYXIgc2tpbGxcIiBkZWwgbW9kYWw6IGNoYXQgbnVldm8gY29uIGVsIHByaW1lciBhZ2VudGUgeSBsYSBtZW5jacOzbiBwdWVzdGEuICovXG4gIGNvbnN0IGhhbmRsZVVzZVNraWxsID0gdXNlQ2FsbGJhY2soKHNraWxsOiBTa2lsbCkgPT4ge1xuICAgIGRvY3VtZW50LmRpc3BhdGNoRXZlbnQoXG4gICAgICBuZXcgQ3VzdG9tRXZlbnQoU0tJTExfVVNFX0FGVEVSX1NBVkVfRVZFTlQsIHtcbiAgICAgICAgZGV0YWlsOiB7IHNraWxsLCB1c2VGaXJzdEFnZW50OiB0cnVlIH0sXG4gICAgICB9KVxuICAgIClcbiAgICBzZXRNZW51T3BlbkZvclNraWxsSWQobnVsbClcbiAgfSwgW10pXG5cbiAgY29uc3QgaGFuZGxlT3BlblNraWxsID0gdXNlQ2FsbGJhY2soKHNraWxsOiBTa2lsbCwgaXNSZWFkT25seTogYm9vbGVhbikgPT4ge1xuICAgIG9wZW5Ta2lsbE1vZGFsKHtcbiAgICAgIGlzRWRpdGluZzogdHJ1ZSxcbiAgICAgIGlzUmVhZE9ubHksXG4gICAgICBnZW5lcmFsOiB7XG4gICAgICAgIGlkOiBza2lsbC5pZCxcbiAgICAgICAgbmFtZTogc2tpbGwubmFtZSxcbiAgICAgICAgZGVzY3JpcHRpb246IHNraWxsLmRlc2NyaXB0aW9uLFxuICAgICAgICBjb250ZW50OiBza2lsbC5jb250ZW50LFxuICAgICAgICBhY2Nlc3NfdHlwZTogc2tpbGwuYWNjZXNzX3R5cGUsXG4gICAgICAgIGNyZWF0ZWRfYnlfbmFtZTogc2tpbGwuY3JlYXRlZF9ieV9uYW1lLFxuICAgICAgICB1cGRhdGVkX2F0OiBza2lsbC51cGRhdGVkX2F0LFxuICAgICAgfSxcbiAgICB9KVxuICAgIHNldE1lbnVPcGVuRm9yU2tpbGxJZChudWxsKVxuICB9LCBbXSlcblxuICBjb25zdCBkZWxldGVNb2RhbENoYXQgPSB1c2VNZW1vKFxuICAgICgpID0+IChza2lsbFRvRGVsZXRlID8geyB0aXRsZTogc2tpbGxUb0RlbGV0ZS5uYW1lLCBpZDogc2tpbGxUb0RlbGV0ZS5pZCB9IDogbnVsbCksXG4gICAgW3NraWxsVG9EZWxldGVdXG4gIClcblxuICBjb25zdCBoYW5kbGVDb25maXJtRGVsZXRlID0gYXN5bmMgKGNoYXQ6IHsgaWQ6IHN0cmluZyB9KSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IGRlbGV0ZVNraWxsKGNoYXQuaWQpXG4gICAgICBoYW5kbGVTbmFja2JhclN1Y2Nlc3ModCgnbXlTa2lsbHMuZGVsZXRlU3VjY2VzcycpKVxuICAgICAgb25EZWxldGVTa2lsbD8uKGNoYXQuaWQpXG4gICAgICBzZXRTa2lsbFRvRGVsZXRlKG51bGwpXG4gICAgICBzZXRNZW51T3BlbkZvclNraWxsSWQobnVsbClcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgaGFuZGxlU25hY2tiYXJFcnJvcih0KCdteVNraWxscy5kZWxldGVFcnJvcicpKVxuICAgIH1cbiAgfVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgaGFuZGxlQ2xpY2tPdXRzaWRlID0gKCkgPT4ge1xuICAgICAgaWYgKG1lbnVPcGVuRm9yU2tpbGxJZCkge1xuICAgICAgICBzZXRNZW51T3BlbkZvclNraWxsSWQobnVsbClcbiAgICAgIH1cbiAgICB9XG5cbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGhhbmRsZUNsaWNrT3V0c2lkZSlcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignY2xpY2snLCBoYW5kbGVDbGlja091dHNpZGUpXG4gICAgfVxuICB9LCBbbWVudU9wZW5Gb3JTa2lsbElkXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghbWVudU9wZW5Gb3JTa2lsbElkKSByZXR1cm4gdW5kZWZpbmVkXG5cbiAgICBjb25zdCBoYW5kbGVSZXBvc2l0aW9uID0gKCkgPT4ge1xuICAgICAgY29uc3Qgb3BlbkNhcmQgPSBsaXN0U2Nyb2xsUmVmLmN1cnJlbnQ/LnF1ZXJ5U2VsZWN0b3I8SFRNTEJ1dHRvbkVsZW1lbnQ+KFxuICAgICAgICBgW2RhdGEtc2tpbGwtY2FyZC1pZD1cIiR7bWVudU9wZW5Gb3JTa2lsbElkfVwiXWBcbiAgICAgIClcbiAgICAgIGlmIChvcGVuQ2FyZCkge1xuICAgICAgICBzZXRDYXJkTWVudVBsYWNlbWVudChyZXNvbHZlRHJvcGRvd25QbGFjZW1lbnQob3BlbkNhcmQsIGNhcmRNZW51SGVpZ2h0UHgpKVxuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IHNjcm9sbENvbnRhaW5lciA9IGxpc3RTY3JvbGxSZWYuY3VycmVudFxuICAgIHNjcm9sbENvbnRhaW5lcj8uYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgaGFuZGxlUmVwb3NpdGlvbiwgeyBwYXNzaXZlOiB0cnVlIH0pXG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIGhhbmRsZVJlcG9zaXRpb24pXG5cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgc2Nyb2xsQ29udGFpbmVyPy5yZW1vdmVFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBoYW5kbGVSZXBvc2l0aW9uKVxuICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIGhhbmRsZVJlcG9zaXRpb24pXG4gICAgfVxuICB9LCBbbWVudU9wZW5Gb3JTa2lsbElkLCBjYXJkTWVudUhlaWdodFB4XSlcblxuICBjb25zdCB0YWJEZXNjcmlwdGlvbiA9IGlzTWluZVRhYiA/IHQoJ215U2tpbGxzLm15U2tpbGxzRGVzY3JpcHRpb24nKSA6IHQoJ215U2tpbGxzLnNoYXJlZFNraWxsc0Rlc2NyaXB0aW9uJylcblxuICBjb25zdCBpc01pbmVFbXB0eSA9IGlzTWluZVRhYiAmJiAhbG9hZGluZyAmJiBteVNraWxscy5sZW5ndGggPT09IDAgJiYgIXNlYXJjaFF1ZXJ5XG4gIGNvbnN0IHNob3dTa2lsbHNUb29sYmFyID0gaXNNaW5lVGFiID8gIWlzTWluZUVtcHR5IDogdGFiU2tpbGxzLmxlbmd0aCA+IDAgfHwgISFzZWFyY2hRdWVyeVxuXG4gIGNvbnN0IHJlbmRlckNyZWF0ZVNraWxsQnV0dG9uID0gKCkgPT4gKFxuICAgIDxTQ01TQ3JlYXRlQnV0dG9uIHR5cGU9XCJidXR0b25cIiBvbkNsaWNrPXtoYW5kbGVDcmVhdGVTa2lsbH0+XG4gICAgICA8U0NNU0NyZWF0ZUJ1dHRvblRleHQ+e3QoJ215U2tpbGxzLmNyZWF0ZVNraWxsJyl9PC9TQ01TQ3JlYXRlQnV0dG9uVGV4dD5cbiAgICA8L1NDTVNDcmVhdGVCdXR0b24+XG4gIClcblxuICBjb25zdCByZW5kZXJTZWFyY2hFbXB0eVN0YXRlID0gKCkgPT4gKFxuICAgIDxTQ01TU2hhcmVkRW1wdHlTdGF0ZVJvb3Q+XG4gICAgICA8U0NNU1NoYXJlZEVtcHR5U3RhdGVUaXRsZUJsb2NrPlxuICAgICAgICA8U0NNU1NoYXJlZEVtcHR5U3RhdGVUaXRsZT57dCgnbXlTa2lsbHMuc2VhcmNoRW1wdHlTdGF0ZVRpdGxlJyl9PC9TQ01TU2hhcmVkRW1wdHlTdGF0ZVRpdGxlPlxuICAgICAgICA8U0NNU1NoYXJlZEVtcHR5U3RhdGVTdWJ0aXRsZT57dCgnbXlTa2lsbHMuc2VhcmNoRW1wdHlTdGF0ZURlc2NyaXB0aW9uJyl9PC9TQ01TU2hhcmVkRW1wdHlTdGF0ZVN1YnRpdGxlPlxuICAgICAgPC9TQ01TU2hhcmVkRW1wdHlTdGF0ZVRpdGxlQmxvY2s+XG4gICAgPC9TQ01TU2hhcmVkRW1wdHlTdGF0ZVJvb3Q+XG4gIClcblxuICBjb25zdCByZW5kZXJFbXB0eVN0YXRlID0gKCkgPT4ge1xuICAgIGlmICghaXNNaW5lVGFiKSB7XG4gICAgICBpZiAoc2VhcmNoUXVlcnkpIHtcbiAgICAgICAgcmV0dXJuIHJlbmRlclNlYXJjaEVtcHR5U3RhdGUoKVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gKFxuICAgICAgICA8U0NNU1NoYXJlZEVtcHR5U3RhdGVSb290PlxuICAgICAgICAgIDxTQ01TU2hhcmVkRW1wdHlTdGF0ZVRpdGxlQmxvY2s+XG4gICAgICAgICAgICA8U0NNU1NoYXJlZEVtcHR5U3RhdGVUaXRsZT57dCgnbXlTa2lsbHMuc2hhcmVkRW1wdHlTdGF0ZVRpdGxlJyl9PC9TQ01TU2hhcmVkRW1wdHlTdGF0ZVRpdGxlPlxuICAgICAgICAgICAgPFNDTVNTaGFyZWRFbXB0eVN0YXRlU3VidGl0bGU+e3QoJ215U2tpbGxzLnNoYXJlZEVtcHR5U3RhdGVEZXNjcmlwdGlvbicpfTwvU0NNU1NoYXJlZEVtcHR5U3RhdGVTdWJ0aXRsZT5cbiAgICAgICAgICA8L1NDTVNTaGFyZWRFbXB0eVN0YXRlVGl0bGVCbG9jaz5cbiAgICAgICAgPC9TQ01TU2hhcmVkRW1wdHlTdGF0ZVJvb3Q+XG4gICAgICApXG4gICAgfVxuXG4gICAgaWYgKHNlYXJjaFF1ZXJ5KSB7XG4gICAgICByZXR1cm4gcmVuZGVyU2VhcmNoRW1wdHlTdGF0ZSgpXG4gICAgfVxuXG4gICAgcmV0dXJuIChcbiAgICAgIDxTQ01TU2hhcmVkRW1wdHlTdGF0ZVJvb3Q+XG4gICAgICAgIDxTQ01TU2hhcmVkRW1wdHlTdGF0ZVRpdGxlQmxvY2s+XG4gICAgICAgICAgPFNDTVNTaGFyZWRFbXB0eVN0YXRlVGl0bGU+e3QoJ215U2tpbGxzLmVtcHR5U3RhdGVUaXRsZScpfTwvU0NNU1NoYXJlZEVtcHR5U3RhdGVUaXRsZT5cbiAgICAgICAgICA8U0NNU1NoYXJlZEVtcHR5U3RhdGVTdWJ0aXRsZT57dCgnbXlTa2lsbHMuZW1wdHlTdGF0ZURlc2NyaXB0aW9uJyl9PC9TQ01TU2hhcmVkRW1wdHlTdGF0ZVN1YnRpdGxlPlxuICAgICAgICA8L1NDTVNTaGFyZWRFbXB0eVN0YXRlVGl0bGVCbG9jaz5cbiAgICAgICAge3JlbmRlckNyZWF0ZVNraWxsQnV0dG9uKCl9XG4gICAgICA8L1NDTVNTaGFyZWRFbXB0eVN0YXRlUm9vdD5cbiAgICApXG4gIH1cblxuICByZXR1cm4gKFxuICAgIDxTQ01TQ29udGFpbmVyPlxuICAgICAgPFNDTVNCb2R5PlxuICAgICAgICA8U0NNU1RpdGxlQmxvY2s+XG4gICAgICAgICAgPFNDTVNUaXRsZT57dCgnbXlTa2lsbHMudGl0bGUnKX08L1NDTVNUaXRsZT5cbiAgICAgICAgPC9TQ01TVGl0bGVCbG9jaz5cblxuICAgICAgICA8U0NNU1BhbmVsPlxuICAgICAgICAgIDxTQ01TUGFuZWxIZWFkZXI+XG4gICAgICAgICAgICA8U0NNU1RhYkJhcj5cbiAgICAgICAgICAgICAgPFNDTVNUYWJCdXR0b24gdHlwZT1cImJ1dHRvblwiICRhY3RpdmU9e2lzTWluZVRhYn0gb25DbGljaz17KCkgPT4gc2V0QWN0aXZlVGFiKCdtaW5lJyl9PlxuICAgICAgICAgICAgICAgIHt0KCdteVNraWxscy50YWJNeVNraWxscycpfVxuICAgICAgICAgICAgICA8L1NDTVNUYWJCdXR0b24+XG4gICAgICAgICAgICAgIDxTQ01TVGFiQnV0dG9uIHR5cGU9XCJidXR0b25cIiAkYWN0aXZlPXshaXNNaW5lVGFifSBvbkNsaWNrPXsoKSA9PiBzZXRBY3RpdmVUYWIoJ3NoYXJlZCcpfT5cbiAgICAgICAgICAgICAgICB7dCgnbXlTa2lsbHMudGFiU2hhcmVkU2tpbGxzJyl9XG4gICAgICAgICAgICAgIDwvU0NNU1RhYkJ1dHRvbj5cbiAgICAgICAgICAgICAgPFRvb2x0aXAgdGl0bGU9e3QoJ215U2tpbGxzLmluZm9Ub29sdGlwJyl9IHsuLi4odG9vbHRpcFpJbmRleCAhPSBudWxsID8geyB6SW5kZXg6IHRvb2x0aXBaSW5kZXggfSA6IHt9KX0+XG4gICAgICAgICAgICAgICAgPFNDTVNUYWJJbmZvSWNvbiBhcmlhLWxhYmVsPXt0KCdteVNraWxscy5pbmZvVG9vbHRpcCcpfT5cbiAgICAgICAgICAgICAgICAgIDxJbmZvcm1hdGlvbkNpcmNsZSBjb2xvcj1cIiM4MDgwODBcIiB3aWR0aD17MjB9IGhlaWdodD17MjB9IC8+XG4gICAgICAgICAgICAgICAgPC9TQ01TVGFiSW5mb0ljb24+XG4gICAgICAgICAgICAgIDwvVG9vbHRpcD5cbiAgICAgICAgICAgIDwvU0NNU1RhYkJhcj5cblxuICAgICAgICAgICAge3Nob3dTa2lsbHNUb29sYmFyID8gKFxuICAgICAgICAgICAgICA8PlxuICAgICAgICAgICAgICAgIDxTQ01TTWV0YVJvdz5cbiAgICAgICAgICAgICAgICAgIDxTQ01TTWV0YURlc2NyaXB0aW9uPnt0YWJEZXNjcmlwdGlvbn08L1NDTVNNZXRhRGVzY3JpcHRpb24+XG4gICAgICAgICAgICAgICAgICB7aXNNaW5lVGFiID8gcmVuZGVyQ3JlYXRlU2tpbGxCdXR0b24oKSA6IG51bGx9XG4gICAgICAgICAgICAgICAgPC9TQ01TTWV0YVJvdz5cblxuICAgICAgICAgICAgICAgIDxTa2lsbFNlYXJjaElucHV0IG9uU2VhcmNoPXtzZXRTZWFyY2hRdWVyeX0gcGxhY2Vob2xkZXI9e3QoJ215U2tpbGxzLnNlYXJjaFBsYWNlaG9sZGVyJyl9IC8+XG4gICAgICAgICAgICAgIDwvPlxuICAgICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgPC9TQ01TUGFuZWxIZWFkZXI+XG5cbiAgICAgICAgICA8U0NNU0xpc3RTY3JvbGxBcmVhIHJlZj17bGlzdFNjcm9sbFJlZn0+XG4gICAgICAgICAgICB7bG9hZGluZyA/IChcbiAgICAgICAgICAgICAgPFNDTVNMb2FkV3JhcHBlcj5cbiAgICAgICAgICAgICAgICA8TG9hZGVyIHNpemU9XCJzbWFsbFwiIC8+XG4gICAgICAgICAgICAgIDwvU0NNU0xvYWRXcmFwcGVyPlxuICAgICAgICAgICAgKSA6IG51bGx9XG5cbiAgICAgICAgICAgIHshbG9hZGluZyAmJiBmaWx0ZXJlZFNraWxscy5sZW5ndGggPyAoXG4gICAgICAgICAgICAgIDxTQ01TQ2FyZHNMaXN0PlxuICAgICAgICAgICAgICAgIHtmaWx0ZXJlZFNraWxscy5tYXAoKHNraWxsLCBpbmRleCkgPT4gKFxuICAgICAgICAgICAgICAgICAgPFNDTVNDYXJkQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIGtleT17c2tpbGwuaWR9XG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICBkYXRhLXNraWxsLWNhcmQtaWQ9e3NraWxsLmlkfVxuICAgICAgICAgICAgICAgICAgICAkaW5kZXg9e2luZGV4fVxuICAgICAgICAgICAgICAgICAgICAkZWxldmF0ZWQ9e21lbnVPcGVuRm9yU2tpbGxJZCA9PT0gc2tpbGwuaWR9XG4gICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IGhhbmRsZU9wZW5Ta2lsbChza2lsbCwgIWlzTWluZVRhYil9XG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxTQ01TQ2FyZFRvcFJvdz5cbiAgICAgICAgICAgICAgICAgICAgICA8U0NNU0NhcmRUaXRsZU5hbWU+e2Zvcm1hdFNraWxsRGlzcGxheU5hbWUoc2tpbGwubmFtZSl9PC9TQ01TQ2FyZFRpdGxlTmFtZT5cbiAgICAgICAgICAgICAgICAgICAgICA8U0NNU0tlYmFiQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICR2aXNpYmxlPXttZW51T3BlbkZvclNraWxsSWQgPT09IHNraWxsLmlkfVxuICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1sYWJlbD17dCgnbXlTa2lsbHMuY2FyZE1lbnVBcmlhTGFiZWwnKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e2V2ZW50ID0+IGhhbmRsZVRvZ2dsZUNhcmRNZW51KGV2ZW50LCBza2lsbC5pZCl9XG4gICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPE1lbnVEb3RzIGNvbG9yPVwiIzgwODA4MFwiIHdpZHRoPXsyMH0gaGVpZ2h0PXsyMH0gLz5cbiAgICAgICAgICAgICAgICAgICAgICA8L1NDTVNLZWJhYkJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9TQ01TQ2FyZFRvcFJvdz5cbiAgICAgICAgICAgICAgICAgICAgPFNDTVNDYXJkQ29udGVudFRleHQ+e3NraWxsLmRlc2NyaXB0aW9uIHx8IHNraWxsLmNvbnRlbnR9PC9TQ01TQ2FyZENvbnRlbnRUZXh0PlxuICAgICAgICAgICAgICAgICAgICA8U0NNU0NhcmRWaXNpYmlsaXR5Um93PlxuICAgICAgICAgICAgICAgICAgICAgIHtpc01pbmVUYWIgPyAoXG4gICAgICAgICAgICAgICAgICAgICAgICA8PlxuICAgICAgICAgICAgICAgICAgICAgICAgICB7c2tpbGwuYWNjZXNzX3R5cGUgPT09ICdjb21wYW55JyA/IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U2tpbGxWaXNpYmlsaXR5RXZlcnlvbmVJY29uIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPFNraWxsVmlzaWJpbGl0eU9ubHlNZUljb24gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPFNDTVNDYXJkVmlzaWJpbGl0eVRleHQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3NraWxsLmFjY2Vzc190eXBlID09PSAnY29tcGFueSdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gdCgnbXlTa2lsbHMudmlzaWJpbGl0eUV2ZXJ5b25lJylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogdCgnbXlTa2lsbHMudmlzaWJpbGl0eU9ubHlNZScpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L1NDTVNDYXJkVmlzaWJpbGl0eVRleHQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8Lz5cbiAgICAgICAgICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPFNraWxsQ3JlYXRlZEJ5SWNvbiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8U0NNU0NhcmRWaXNpYmlsaXR5VGV4dD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7dCgnbXlTa2lsbHMuc2hhcmVkQ3JlYXRlZEJ5JywgeyBuYW1lOiBza2lsbC5jcmVhdGVkX2J5X25hbWUgfHwgJycgfSl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvU0NNU0NhcmRWaXNpYmlsaXR5VGV4dD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvPlxuICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgIDwvU0NNU0NhcmRWaXNpYmlsaXR5Um93PlxuICAgICAgICAgICAgICAgICAgICB7bWVudU9wZW5Gb3JTa2lsbElkID09PSBza2lsbC5pZCA/IChcbiAgICAgICAgICAgICAgICAgICAgICA8U0NNU0NhcmRNZW51XG4gICAgICAgICAgICAgICAgICAgICAgICAkcGxhY2VtZW50PXtjYXJkTWVudVBsYWNlbWVudH1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e2V2ZW50ID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKVxuICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8U0NNU0NhcmRNZW51SXRlbSB0eXBlPVwiYnV0dG9uXCIgb25DbGljaz17KCkgPT4gaGFuZGxlVXNlU2tpbGwoc2tpbGwpfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAge3QoJ215U2tpbGxzLnVzZVNraWxsJyl9XG4gICAgICAgICAgICAgICAgICAgICAgICA8L1NDTVNDYXJkTWVudUl0ZW0+XG4gICAgICAgICAgICAgICAgICAgICAgICB7aXNNaW5lVGFiID8gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICA8PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTQ01TQ2FyZE1lbnVJdGVtIHR5cGU9XCJidXR0b25cIiBvbkNsaWNrPXsoKSA9PiBoYW5kbGVPcGVuU2tpbGwoc2tpbGwsIGZhbHNlKX0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7dCgnbXlTa2lsbHMuZWRpdCcpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvU0NNU0NhcmRNZW51SXRlbT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U0NNU0NhcmRNZW51SXRlbSB0eXBlPVwiYnV0dG9uXCIgJGRlc3RydWN0aXZlIG9uQ2xpY2s9eygpID0+IHNldFNraWxsVG9EZWxldGUoc2tpbGwpfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt0KCdteVNraWxscy5kZWxldGUnKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1NDTVNDYXJkTWVudUl0ZW0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvPlxuICAgICAgICAgICAgICAgICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgICAgICAgICAgICAgPC9TQ01TQ2FyZE1lbnU+XG4gICAgICAgICAgICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgICAgICAgICAgPC9TQ01TQ2FyZEJ1dHRvbj5cbiAgICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgICAgPC9TQ01TQ2FyZHNMaXN0PlxuICAgICAgICAgICAgKSA6IG51bGx9XG5cbiAgICAgICAgICAgIHshbG9hZGluZyAmJiAhZmlsdGVyZWRTa2lsbHMubGVuZ3RoID8gcmVuZGVyRW1wdHlTdGF0ZSgpIDogbnVsbH1cbiAgICAgICAgICA8L1NDTVNMaXN0U2Nyb2xsQXJlYT5cbiAgICAgICAgPC9TQ01TUGFuZWw+XG4gICAgICA8L1NDTVNCb2R5PlxuXG4gICAgICB7ZGVsZXRlTW9kYWxDaGF0ID8gKFxuICAgICAgICA8RGVsZXRlUXVlc3Rpb25Nb2RhbFxuICAgICAgICAgIG9uQ2xvc2U9eygpID0+IHNldFNraWxsVG9EZWxldGUobnVsbCl9XG4gICAgICAgICAgaGFuZGxlcnM9e3tcbiAgICAgICAgICAgIGhhbmRsZUNvbmZpcm1BY3Rpb246IGhhbmRsZUNvbmZpcm1EZWxldGUsXG4gICAgICAgICAgfX1cbiAgICAgICAgICBjaGF0PXtkZWxldGVNb2RhbENoYXR9XG4gICAgICAgICAgYWN0aW9uPVwic2tpbGxcIlxuICAgICAgICAvPlxuICAgICAgKSA6IG51bGx9XG4gICAgPC9TQ01TQ29udGFpbmVyPlxuICApXG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQSxPQUFPQSxLQUFLLElBQUlDLFdBQVcsRUFBRUMsU0FBUyxFQUFFQyxPQUFPLEVBQUVDLE1BQU0sRUFBRUMsUUFBUSxRQUFRLE9BQU87QUFDaEYsU0FBU0MsUUFBUSxRQUFRLDJDQUEyQztBQUNwRSxTQUFTQyxNQUFNLFFBQVEseUNBQXlDO0FBQ2hFLFNBQVNDLGlCQUFpQixRQUFRLG9EQUFvRDtBQUN0RixTQUFTQyxPQUFPLFFBQVEsOENBQThDO0FBQ3RFLFNBQVNDLGNBQWMsUUFBUSxlQUFlO0FBRTlDLFNBQVNDLFdBQVcsUUFBUSwyQ0FBMkM7QUFDdkUsU0FBU0Msa0JBQWtCLFFBQVEsc0RBQXNEO0FBQ3pGLFNBQVNDLHNCQUFzQixRQUFRLHVDQUF1QztBQUM5RSxTQUFTQyxtQkFBbUIsUUFBUSx5REFBeUQ7QUFDN0YsU0FBU0MsMEJBQTBCLFFBQVEsNkNBQTZDO0FBQ3hGLFNBQVNDLFFBQVEsUUFBUSwyQkFBMkI7QUFDcEQsU0FBU0MsTUFBTSxRQUFRLG9CQUFvQjtBQUMzQyxTQUFTQyxrQkFBa0IsUUFBUSxzQ0FBc0M7QUFDekUsU0FBU0MsMkJBQTJCLFFBQVEsK0NBQStDO0FBQzNGLFNBQVNDLHlCQUF5QixRQUFRLDZDQUE2QztBQUN2RixTQUNFQyxRQUFRLEVBQ1JDLGNBQWMsRUFDZEMsbUJBQW1CLEVBQ25CQyxZQUFZLEVBQ1pDLGdCQUFnQixFQUNoQkMsaUJBQWlCLEVBQ2pCQyxjQUFj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LFFBQVE7b0JBQUMyRyxPQUFPLEVBQUUsU0FBVEEsT0FBT0EsQ0FBQTtzQkFBQSxPQUFRM0MsY0FBYyxDQUFDcEIsS0FBSyxDQUFDO29CQUFBLENBQUM7b0JBQUFoRCxRQUFBLEVBQ2xFZSxDQUFDLENBQUMsbUJBQW1CO2tCQUFDLENBQ1AsQ0FBQyxFQUNsQjBCLFNBQVMsZ0JBQ1J6RixLQUFBLENBQUFFLFNBQUE7b0JBQUE4QyxRQUFBLGdCQUNFbEQsSUFBQSxDQUFDNUIsZ0JBQWdCO3NCQUFDa0YsSUFBSSxFQUFDLFFBQVE7c0JBQUMyRyxPQUFPLEVBQUUsU0FBVEEsT0FBT0EsQ0FBQTt3QkFBQSxPQUFRekMsZUFBZSxDQUFDdEIsS0FBSyxFQUFFLEtBQUssQ0FBQztzQkFBQSxDQUFDO3NCQUFBaEQsUUFBQSxFQUMxRWUsQ0FBQyxDQUFDLGVBQWU7b0JBQUMsQ0FDSCxDQUFDLGVBQ25CakUsSUFBQSxDQUFDNUIsZ0JBQWdCO3NCQUFDa0YsSUFBSSxFQUFDLFFBQVE7c0JBQUN5SCxZQUFZO3NCQUFDZCxPQUFPLEVBQUUsU0FBVEEsT0FBT0EsQ0FBQTt3QkFBQSxPQUFRdkUsZ0JBQWdCLENBQUNRLEtBQUssQ0FBQztzQkFBQSxDQUFDO3NCQUFBaEQsUUFBQSxFQUNqRmUsQ0FBQyxDQUFDLGlCQUFpQjtvQkFBQyxDQUNMLENBQUM7a0JBQUEsQ0FDbkIsQ0FBQyxHQUNELElBQUk7Z0JBQUEsQ0FDSSxDQUFDLEdBQ2IsSUFBSTtjQUFBLEdBaEVIaUMsS0FBSyxDQUFDeUIsRUFpRUcsQ0FBQztZQUFBLENBQ2xCO1VBQUMsQ0FDVyxDQUFDLEdBQ2QsSUFBSSxFQUVQLENBQUM5RCxPQUFPLElBQUksQ0FBQ2dDLGNBQWMsQ0FBQ2lFLE1BQU0sR0FBR0ssZ0JBQWdCLENBQUMsQ0FBQyxHQUFHLElBQUk7UUFBQSxDQUM3QyxDQUFDO01BQUEsQ0FDWixDQUFDO0lBQUEsQ0FDSixDQUFDLEVBRVZsQyxlQUFlLGdCQUNkakksSUFBQSxDQUFDdkMsbUJBQW1CO01BQ2xCdU4sT0FBTyxFQUFFLFNBQVRBLE9BQU9BLENBQUE7UUFBQSxPQUFRdEYsZ0JBQWdCLENBQUMsSUFBSSxDQUFDO01BQUEsQ0FBQztNQUN0Q3VGLFFBQVEsRUFBRTtRQUNSQyxtQkFBbUIsRUFBRS9DO01BQ3ZCLENBQUU7TUFDRk0sSUFBSSxFQUFFUixlQUFnQjtNQUN0QmtELE1BQU0sRUFBQztJQUFPLENBQ2YsQ0FBQyxHQUNBLElBQUk7RUFBQSxDQUNLLENBQUM7QUFFcEIsQ0FBQyIsImlnbm9yZUxpc3QiOltdfQ==
|
|
357
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsInVzZUNhbGxiYWNrIiwidXNlRWZmZWN0IiwidXNlTWVtbyIsInVzZVN0YXRlIiwiTWVudURvdHMiLCJ1c2VUcmFuc2xhdGlvbiIsInVzZVVzZXIiLCJkZWxldGVTa2lsbCIsInVzZVNuYWNrQmFyTWFuYWdlciIsIkRlbGV0ZVF1ZXN0aW9uTW9kYWwiLCJTS0lMTF9HRU5FUkFURV9PUEVOX0VWRU5UIiwiU0VDVElPTlMiLCJMb2FkZXIiLCJTQ01TQm9keSIsIlNDTVNDYXJkQm9keSIsIlNDTVNDYXJkQnV0dG9uIiwiU0NNU0NhcmRDb250ZW50VGV4dCIsIlNDTVNDYXJkRm9vdGVyIiwiU0NNU0NhcmRGb290ZXJEYXRlIiwiU0NNU0NhcmRIZWFkZXIiLCJTQ01TQ2FyZE1lbnUiLCJTQ01TQ2FyZE1lbnVJdGVtIiwiU0NNU0NhcmRNZW51SXRlbXMiLCJTQ01TQ2FyZFRpdGxlTmFtZSIsIlNDTVNDYXJkVG9wUm93IiwiU0NNU0NhcmRzT3V0ZXIiLCJTQ01TQ2FyZHNSb3ciLCJTQ01TQ29udGFpbmVyIiwiU0NNU0NyZWF0ZUJ1dHRvbiIsIlNDTVNDcmVhdGVCdXR0b25UZXh0IiwiU0NNU0NyZWF0ZU1lbnUiLCJTQ01TQ3JlYXRlTWVudUl0ZW0iLCJTQ01TQ3JlYXRlTWVudVdyYXAiLCJTQ01TRW1wdHlTdGF0ZUJ1dHRvbiIsIlNDTVNFbXB0eVN0YXRlQ29sdW1uIiwiU0NNU0VtcHR5U3RhdGVSb290IiwiU0NNU0VtcHR5U3RhdGVTdWJ0aXRsZSIsIlNDTVNFbXB0eVN0YXRlVGl0bGUiLCJTQ01TRW1wdHlTdGF0ZVRpdGxlQmxvY2siLCJTQ01TS2ViYWJCdXR0b24iLCJTQ01TTG9hZFdyYXBwZXIiLCJTQ01TVGl0bGUiLCJTQ01TU3VidGl0bGUiLCJTQ01TQWN0aW9uc1JvdyIsIlNDTVNUaXRsZUlubmVyIiwiU0NNU1RpdGxlV3JhcCIsIk1BSUFJc29sb2dvIiwianN4IiwiX2pzeCIsImpzeHMiLCJfanN4cyIsIm9wZW5Ta2lsbE1vZGFsIiwidmFsdWVzIiwiZG9jdW1lbnQiLCJkaXNwYXRjaEV2ZW50IiwiQ3VzdG9tRXZlbnQiLCJkZXRhaWwiLCJza2lsbFZhbHVlcyIsImlzT3BlbiIsIkljb25DaGF0Iiwid2lkdGgiLCJoZWlnaHQiLCJ2aWV3Qm94IiwiZmlsbCIsImNoaWxkcmVuIiwiZCIsInN0cm9rZSIsInN0cm9rZVdpZHRoIiwic3Ryb2tlTGluZWpvaW4iLCJJY29uQ2xpcGJvYXJkIiwieCIsInkiLCJyeCIsInN0cm9rZUxpbmVjYXAiLCJJY29uVXBsb2FkIiwiQ2hhdEFJTXlTa2lsbHMiLCJfcmVmIiwiX3VzZXIkcGVybWlzc2lvbnMiLCJza2lsbHMiLCJfcmVmJGxvYWRpbmciLCJsb2FkaW5nIiwib25EZWxldGVTa2lsbCIsIl91c2VUcmFuc2xhdGlvbiIsImNoYXRBSSIsInQiLCJ1c2VyIiwiX3VzZVNuYWNrQmFyTWFuYWdlciIsImhhbmRsZVNuYWNrYmFyU3VjY2VzcyIsImhhbmRsZVNuYWNrYmFyRXJyb3IiLCJfdXNlU3RhdGUiLCJfdXNlU3RhdGUyIiwiX3NsaWNlZFRvQXJyYXkiLCJtZW51T3BlbkZvclNraWxsSWQiLCJzZXRNZW51T3BlbkZvclNraWxsSWQiLCJfdXNlU3RhdGUzIiwiX3VzZVN0YXRlNCIsImNyZWF0ZU1lbnVPcGVuIiwic2V0Q3JlYXRlTWVudU9wZW4iLCJfdXNlU3RhdGU1IiwiX3VzZVN0YXRlNiIsInNraWxsVG9EZWxldGUiLCJzZXRTa2lsbFRvRGVsZXRlIiwidXNlclBlcm1pc3Npb25zIiwicGVybWlzc2lvbnMiLCJhaV9hZ2VudHMiLCJjYW5DcmVhdGUiLCJjcmVhdGUiLCJ3aW5kb3ciLCJNQUlBX0NIQVRfQUlfRkVBVFVSRV9BQ0NFU1NfTVVMVElfQUdFTlRTIiwiY2FuRWRpdCIsImVkaXQiLCJjYW5EZWxldGUiLCJjYW5TaG93TWVudSIsIm9wZW5DcmVhdGVTa2lsbE1vZGFsIiwiaXNFZGl0aW5nIiwiaGFuZGxlQ3JlYXRlT3B0aW9uIiwiaW50ZW50IiwiaGFuZGxlT3BlbkVkaXRTa2lsbCIsInNraWxsIiwiZ2VuZXJhbCIsImlkIiwibmFtZSIsImNvbnRlbnQiLCJnZXRDcmVhdGVkQXRMYWJlbCIsImNyZWF0ZWRBdCIsImNyZWF0ZWRfYXQiLCJjcmVhdGVkQXREYXRlIiwiRGF0ZSIsIk51bWJlciIsImlzTmFOIiwiZ2V0VGltZSIsImRpZmZNcyIsIm5vdyIsImRheU1zIiwiZGF5cyIsIk1hdGgiLCJtYXgiLCJmbG9vciIsImRlbGV0ZU1vZGFsQ2hhdCIsInRpdGxlIiwiaGFuZGxlQ29uZmlybURlbGV0ZSIsIl9yZWYyIiwiX2FzeW5jVG9HZW5lcmF0b3IiLCJfcmVnZW5lcmF0b3JSdW50aW1lIiwibWFyayIsIl9jYWxsZWUiLCJjaGF0IiwiX3QiLCJ3cmFwIiwiX2NvbnRleHQiLCJwcmV2IiwibmV4dCIsInN0b3AiLCJfeCIsImFwcGx5IiwiYXJndW1lbnRzIiwiaGFuZGxlQ2xpY2tPdXRzaWRlIiwiYWRkRXZlbnRMaXN0ZW5lciIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCIkaGFzU2tpbGxzIiwibGVuZ3RoIiwiJGNhbkNyZWF0ZSIsInR5cGUiLCJvbkNsaWNrIiwiZXZlbnQiLCJzdG9wUHJvcGFnYXRpb24iLCJzaXplIiwibWFwIiwicHJldmVudERlZmF1bHQiLCJjb2xvciIsIm9uQ2xvc2UiLCJoYW5kbGVycyIsImhhbmRsZUNvbmZpcm1BY3Rpb24iLCJhY3Rpb24iXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy9tb2xlY3VsZXMvQ2hhdEFJTXlTa2lsbHMvQ2hhdEFJTXlTa2lsbHMudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwgeyB1c2VDYWxsYmFjaywgdXNlRWZmZWN0LCB1c2VNZW1vLCB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgTWVudURvdHMgfSBmcm9tICdAcHJvamVjdGNvci9pY29ucy9saWIvY29tcG9uZW50cy9NZW51RG90cydcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSAncmVhY3QtaTE4bmV4dCdcbmltcG9ydCB7IHVzZVVzZXIgfSBmcm9tICcuLi8uLi8uLi9jb250ZXh0L2Nvci11c2VyJ1xuaW1wb3J0IHsgU2tpbGwgfSBmcm9tICcuLi8uLi8uLi90eXBlcy9za2lsbCdcbmltcG9ydCB7IGRlbGV0ZVNraWxsIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvbWFpYS9Ta2lsbHMvZGVsZXRlU2tpbGwnXG5pbXBvcnQgeyB1c2VTbmFja0Jhck1hbmFnZXIgfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VTbmFja0Jhck1hbmFnZXIvdXNlU25hY2tCYXJNYW5hZ2VyJ1xuaW1wb3J0IHsgRGVsZXRlUXVlc3Rpb25Nb2RhbCB9IGZyb20gJy4uLy4uL29yZ2FuaXNtcy9EZWxldGVRdWVzdGlvbk1vZGFsL0RlbGV0ZVF1ZXN0aW9uTW9kYWwnXG5pbXBvcnQgeyBTS0lMTF9HRU5FUkFURV9PUEVOX0VWRU5UIH0gZnJvbSAnLi4vLi4vb3JnYW5pc21zL0FibVNraWxsR2VuZXJhdGVNb2RhbC9BYm1Ta2lsbEdlbmVyYXRlTW9kYWwnXG5pbXBvcnQgeyBTRUNUSU9OUyB9IGZyb20gJy4uLy4uLy4uL2NvbnN0YW50cy9jb25maWcnXG5pbXBvcnQgeyBMb2FkZXIgfSBmcm9tICcuLi8uLi9hdG9tcy9Mb2FkZXInXG5pbXBvcnQge1xuICBTQ01TQm9keSxcbiAgU0NNU0NhcmRCb2R5LFxuICBTQ01TQ2FyZEJ1dHRvbixcbiAgU0NNU0NhcmRDb250ZW50VGV4dCxcbiAgU0NNU0NhcmRGb290ZXIsXG4gIFNDTVNDYXJkRm9vdGVyRGF0ZSxcbiAgU0NNU0NhcmRIZWFkZXIsXG4gIFNDTVNDYXJkTWVudSxcbiAgU0NNU0NhcmRNZW51SXRlbSxcbiAgU0NNU0NhcmRNZW51SXRlbXMsXG4gIFNDTVNDYXJkVGl0bGVOYW1lLFxuICBTQ01TQ2FyZFRvcFJvdyxcbiAgU0NNU0NhcmRzT3V0ZXIsXG4gIFNDTVNDYXJkc1JvdyxcbiAgU0NNU0NvbnRhaW5lcixcbiAgU0NNU0NyZWF0ZUJ1dHRvbixcbiAgU0NNU0NyZWF0ZUJ1dHRvblRleHQsXG4gIFNDTVNDcmVhdGVNZW51LFxuICBTQ01TQ3JlYXRlTWVudUl0ZW0sXG4gIFNDTVNDcmVhdGVNZW51V3JhcCxcbiAgU0NNU0VtcHR5U3RhdGVCdXR0b24sXG4gIFNDTVNFbXB0eVN0YXRlQ29sdW1uLFxuICBTQ01TRW1wdHlTdGF0ZVJvb3QsXG4gIFNDTVNFbXB0eVN0YXRlU3VidGl0bGUsXG4gIFNDTVNFbXB0eVN0YXRlVGl0bGUsXG4gIFNDTVNFbXB0eVN0YXRlVGl0bGVCbG9jayxcbiAgU0NNU0tlYmFiQnV0dG9uLFxuICBTQ01TTG9hZFdyYXBwZXIsXG4gIFNDTVNUaXRsZSxcbiAgU0NNU1N1YnRpdGxlLFxuICBTQ01TQWN0aW9uc1JvdyxcbiAgU0NNU1RpdGxlSW5uZXIsXG4gIFNDTVNUaXRsZVdyYXAsXG59IGZyb20gJy4vQ2hhdEFJTXlTa2lsbHMuc3R5bGVzJ1xuaW1wb3J0IHsgTUFJQUlzb2xvZ28gfSBmcm9tICcuLi8uLi9hdG9tcy9pY29ucydcblxudHlwZSBDaGF0QUlNeVNraWxsc1Byb3BzID0ge1xuICBza2lsbHM6IFNraWxsW11cbiAgbG9hZGluZz86IGJvb2xlYW5cbiAgb25EZWxldGVTa2lsbD86IChza2lsbElkOiBzdHJpbmcpID0+IHZvaWRcbn1cblxudHlwZSBTa2lsbE1vZGFsSW50ZW50ID0gJ2dlbmVyYXRlJyB8ICd3cml0ZScgfCAndXBsb2FkJ1xuXG5jb25zdCBvcGVuU2tpbGxNb2RhbCA9ICh2YWx1ZXM6IHtcbiAgaXNFZGl0aW5nOiBib29sZWFuXG4gIGludGVudD86IFNraWxsTW9kYWxJbnRlbnRcbiAgZ2VuZXJhbD86IHsgaWQ/OiBzdHJpbmc7IG5hbWU/OiBzdHJpbmc7IGNvbnRlbnQ/OiBzdHJpbmcgfVxufSkgPT4ge1xuICBkb2N1bWVudC5kaXNwYXRjaEV2ZW50KFxuICAgIG5ldyBDdXN0b21FdmVudCgnYWJtLXNraWxsLW1vZGFsLXNldC12YWx1ZXMnLCB7XG4gICAgICBkZXRhaWw6IHtcbiAgICAgICAgc2tpbGxWYWx1ZXM6IHtcbiAgICAgICAgICB2YWx1ZXMsXG4gICAgICAgICAgaXNPcGVuOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9KVxuICApXG59XG5cbmNvbnN0IEljb25DaGF0ID0gKCkgPT4gKFxuICA8c3ZnIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiBmaWxsPVwibm9uZVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPlxuICAgIDxwYXRoXG4gICAgICBkPVwiTTE0IDcuNWE1LjUgNS41IDAgMCAxLTcuOSA0Ljk2TDIuNSAxMy41bDEuMDQtMy4xQTUuNSA1LjUgMCAxIDEgMTQgNy41WlwiXG4gICAgICBzdHJva2U9XCIjNjY2XCJcbiAgICAgIHN0cm9rZVdpZHRoPVwiMS4zXCJcbiAgICAgIHN0cm9rZUxpbmVqb2luPVwicm91bmRcIlxuICAgIC8+XG4gIDwvc3ZnPlxuKVxuXG5jb25zdCBJY29uQ2xpcGJvYXJkID0gKCkgPT4gKFxuICA8c3ZnIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiBmaWxsPVwibm9uZVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPlxuICAgIDxyZWN0IHg9XCIzLjVcIiB5PVwiM1wiIHdpZHRoPVwiOVwiIGhlaWdodD1cIjExXCIgcng9XCIxLjVcIiBzdHJva2U9XCIjNjY2XCIgc3Ryb2tlV2lkdGg9XCIxLjNcIiAvPlxuICAgIDxyZWN0IHg9XCI1Ljc1XCIgeT1cIjEuNzVcIiB3aWR0aD1cIjQuNVwiIGhlaWdodD1cIjIuNVwiIHJ4PVwiMC43NVwiIHN0cm9rZT1cIiM2NjZcIiBzdHJva2VXaWR0aD1cIjEuM1wiIC8+XG4gICAgPHBhdGggZD1cIk02IDcuNWg0TTYgMTBoM1wiIHN0cm9rZT1cIiM2NjZcIiBzdHJva2VXaWR0aD1cIjEuM1wiIHN0cm9rZUxpbmVjYXA9XCJyb3VuZFwiIC8+XG4gIDwvc3ZnPlxuKVxuXG5jb25zdCBJY29uVXBsb2FkID0gKCkgPT4gKFxuICA8c3ZnIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiBmaWxsPVwibm9uZVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPlxuICAgIDxwYXRoXG4gICAgICBkPVwiTTggMTAuNVYzTTggMyA1LjUgNS41TTggM2wyLjUgMi41XCJcbiAgICAgIHN0cm9rZT1cIiM2NjZcIlxuICAgICAgc3Ryb2tlV2lkdGg9XCIxLjNcIlxuICAgICAgc3Ryb2tlTGluZWNhcD1cInJvdW5kXCJcbiAgICAgIHN0cm9rZUxpbmVqb2luPVwicm91bmRcIlxuICAgIC8+XG4gICAgPHBhdGggZD1cIk0zIDEwdjJhMSAxIDAgMCAwIDEgMWg4YTEgMSAwIDAgMCAxLTF2LTJcIiBzdHJva2U9XCIjNjY2XCIgc3Ryb2tlV2lkdGg9XCIxLjNcIiBzdHJva2VMaW5lY2FwPVwicm91bmRcIiAvPlxuICA8L3N2Zz5cbilcblxuZXhwb3J0IGNvbnN0IENoYXRBSU15U2tpbGxzID0gKHsgc2tpbGxzLCBsb2FkaW5nID0gZmFsc2UsIG9uRGVsZXRlU2tpbGwgfTogQ2hhdEFJTXlTa2lsbHNQcm9wcykgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKFtTRUNUSU9OUy5jaGF0QUldKVxuICBjb25zdCB1c2VyID0gdXNlVXNlcigpXG4gIGNvbnN0IHsgaGFuZGxlU25hY2tiYXJTdWNjZXNzLCBoYW5kbGVTbmFja2JhckVycm9yIH0gPSB1c2VTbmFja0Jhck1hbmFnZXIoKVxuICBjb25zdCBbbWVudU9wZW5Gb3JTa2lsbElkLCBzZXRNZW51T3BlbkZvclNraWxsSWRdID0gdXNlU3RhdGU8c3RyaW5nIHwgbnVsbD4obnVsbClcbiAgY29uc3QgW2NyZWF0ZU1lbnVPcGVuLCBzZXRDcmVhdGVNZW51T3Blbl0gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgW3NraWxsVG9EZWxldGUsIHNldFNraWxsVG9EZWxldGVdID0gdXNlU3RhdGU8U2tpbGwgfCBudWxsPihudWxsKVxuICBjb25zdCB1c2VyUGVybWlzc2lvbnMgPSB1c2VyPy5wZXJtaXNzaW9ucz8uYWlfYWdlbnRzXG4gIGNvbnN0IGNhbkNyZWF0ZSA9ICEhdXNlclBlcm1pc3Npb25zPy5jcmVhdGUgJiYgISF3aW5kb3cuTUFJQV9DSEFUX0FJX0ZFQVRVUkVfQUNDRVNTX01VTFRJX0FHRU5UU1xuICBjb25zdCBjYW5FZGl0ID0gISF1c2VyUGVybWlzc2lvbnM/LmVkaXQgJiYgISF3aW5kb3cuTUFJQV9DSEFUX0FJX0ZFQVRVUkVfQUNDRVNTX01VTFRJX0FHRU5UU1xuICBjb25zdCBjYW5EZWxldGUgPSAhIXVzZXJQZXJtaXNzaW9ucz8uZGVsZXRlICYmICEhd2luZG93Lk1BSUFfQ0hBVF9BSV9GRUFUVVJFX0FDQ0VTU19NVUxUSV9BR0VOVFNcbiAgY29uc3QgY2FuU2hvd01lbnUgPSBjYW5FZGl0IHx8IGNhbkRlbGV0ZVxuXG4gIGNvbnN0IG9wZW5DcmVhdGVTa2lsbE1vZGFsID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIG9wZW5Ta2lsbE1vZGFsKHsgaXNFZGl0aW5nOiBmYWxzZSB9KVxuICB9LCBbXSlcblxuICBjb25zdCBoYW5kbGVDcmVhdGVPcHRpb24gPSB1c2VDYWxsYmFjaygoaW50ZW50OiBTa2lsbE1vZGFsSW50ZW50KSA9PiB7XG4gICAgc2V0Q3JlYXRlTWVudU9wZW4oZmFsc2UpXG4gICAgaWYgKGludGVudCA9PT0gJ2dlbmVyYXRlJykge1xuICAgICAgLy8gXCJDcmVhciBjb24gTWFpYVwiIGFicmUgZWwgbW9kYWwgc2ltcGxlIGRlIGRlc2NyaXBjacOzbiAobm8gZWwgZWRpdG9yKS5cbiAgICAgIGRvY3VtZW50LmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KFNLSUxMX0dFTkVSQVRFX09QRU5fRVZFTlQpKVxuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIG9wZW5Ta2lsbE1vZGFsKHsgaXNFZGl0aW5nOiBmYWxzZSwgaW50ZW50IH0pXG4gIH0sIFtdKVxuXG4gIGNvbnN0IGhhbmRsZU9wZW5FZGl0U2tpbGwgPSB1c2VDYWxsYmFjaygoc2tpbGw6IFNraWxsKSA9PiB7XG4gICAgb3BlblNraWxsTW9kYWwoe1xuICAgICAgaXNFZGl0aW5nOiB0cnVlLFxuICAgICAgZ2VuZXJhbDogeyBpZDogc2tpbGwuaWQsIG5hbWU6IHNraWxsLm5hbWUsIGNvbnRlbnQ6IHNraWxsLmNvbnRlbnQgfSxcbiAgICB9KVxuICAgIHNldE1lbnVPcGVuRm9yU2tpbGxJZChudWxsKVxuICB9LCBbXSlcblxuICBjb25zdCBnZXRDcmVhdGVkQXRMYWJlbCA9IChza2lsbDogU2tpbGwpID0+IHtcbiAgICBjb25zdCB7IGNyZWF0ZWRfYXQ6IGNyZWF0ZWRBdCB9ID0gc2tpbGxcbiAgICBpZiAoIWNyZWF0ZWRBdCkgcmV0dXJuICcnXG5cbiAgICBjb25zdCBjcmVhdGVkQXREYXRlID0gbmV3IERhdGUoY3JlYXRlZEF0KVxuICAgIGlmIChOdW1iZXIuaXNOYU4oY3JlYXRlZEF0RGF0ZS5nZXRUaW1lKCkpKSByZXR1cm4gJydcblxuICAgIGNvbnN0IGRpZmZNcyA9IERhdGUubm93KCkgLSBjcmVhdGVkQXREYXRlLmdldFRpbWUoKVxuICAgIGNvbnN0IGRheU1zID0gMTAwMCAqIDYwICogNjAgKiAyNFxuICAgIGNvbnN0IGRheXMgPSBNYXRoLm1heCgwLCBNYXRoLmZsb29yKGRpZmZNcyAvIGRheU1zKSlcblxuICAgIGlmIChkYXlzID09PSAwKSByZXR1cm4gdCgnbWFya2V0cGxhY2UubXlBZ2VudHNUb2RheScpXG4gICAgaWYgKGRheXMgPT09IDEpIHJldHVybiB0KCdtYXJrZXRwbGFjZS5teUFnZW50c09uZURheUFnbycpXG4gICAgcmV0dXJuIHQoJ21hcmtldHBsYWNlLm15QWdlbnRzRGF5c0FnbycsIHsgZGF5cyB9KVxuICB9XG5cbiAgY29uc3QgZGVsZXRlTW9kYWxDaGF0ID0gdXNlTWVtbyhcbiAgICAoKSA9PiAoc2tpbGxUb0RlbGV0ZSA/IHsgdGl0bGU6IHNraWxsVG9EZWxldGUubmFtZSwgaWQ6IHNraWxsVG9EZWxldGUuaWQgfSA6IG51bGwpLFxuICAgIFtza2lsbFRvRGVsZXRlXVxuICApXG5cbiAgY29uc3QgaGFuZGxlQ29uZmlybURlbGV0ZSA9IGFzeW5jIChjaGF0OiB7IGlkOiBzdHJpbmcgfSkgPT4ge1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCBkZWxldGVTa2lsbChjaGF0LmlkKVxuICAgICAgaGFuZGxlU25hY2tiYXJTdWNjZXNzKHQoJ215U2tpbGxzLmRlbGV0ZVN1Y2Nlc3MnKSlcbiAgICAgIG9uRGVsZXRlU2tpbGw/LihjaGF0LmlkKVxuICAgICAgc2V0U2tpbGxUb0RlbGV0ZShudWxsKVxuICAgICAgc2V0TWVudU9wZW5Gb3JTa2lsbElkKG51bGwpXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGhhbmRsZVNuYWNrYmFyRXJyb3IodCgnbXlTa2lsbHMuZGVsZXRlRXJyb3InKSlcbiAgICB9XG4gIH1cblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGhhbmRsZUNsaWNrT3V0c2lkZSA9ICgpID0+IHtcbiAgICAgIGlmIChtZW51T3BlbkZvclNraWxsSWQpIHtcbiAgICAgICAgc2V0TWVudU9wZW5Gb3JTa2lsbElkKG51bGwpXG4gICAgICB9XG4gICAgICBpZiAoY3JlYXRlTWVudU9wZW4pIHtcbiAgICAgICAgc2V0Q3JlYXRlTWVudU9wZW4oZmFsc2UpXG4gICAgICB9XG4gICAgfVxuXG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBoYW5kbGVDbGlja091dHNpZGUpXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgaGFuZGxlQ2xpY2tPdXRzaWRlKVxuICAgIH1cbiAgfSwgW21lbnVPcGVuRm9yU2tpbGxJZCwgY3JlYXRlTWVudU9wZW5dKVxuXG4gIHJldHVybiAoXG4gICAgPFNDTVNDb250YWluZXIgJGhhc1NraWxscz17ISFza2lsbHMubGVuZ3RofT5cbiAgICAgIDxNQUlBSXNvbG9nbyAvPlxuXG4gICAgICA8U0NNU0JvZHkgJGNhbkNyZWF0ZT17Y2FuQ3JlYXRlfT5cbiAgICAgICAge3NraWxscy5sZW5ndGggPyAoXG4gICAgICAgICAgPFNDTVNUaXRsZVdyYXA+XG4gICAgICAgICAgICA8U0NNU1RpdGxlSW5uZXI+XG4gICAgICAgICAgICAgIDxTQ01TVGl0bGU+e3QoJ215U2tpbGxzLnRpdGxlJyl9PC9TQ01TVGl0bGU+XG4gICAgICAgICAgICAgIDxTQ01TU3VidGl0bGU+e3QoJ215U2tpbGxzLnN1YnRpdGxlJyl9PC9TQ01TU3VidGl0bGU+XG4gICAgICAgICAgICA8L1NDTVNUaXRsZUlubmVyPlxuICAgICAgICAgICAge2NhbkNyZWF0ZSA/IChcbiAgICAgICAgICAgICAgPFNDTVNBY3Rpb25zUm93PlxuICAgICAgICAgICAgICAgIDxTQ01TQ3JlYXRlTWVudVdyYXA+XG4gICAgICAgICAgICAgICAgICA8U0NNU0NyZWF0ZUJ1dHRvblxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgb25DbGljaz17ZXZlbnQgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXG4gICAgICAgICAgICAgICAgICAgICAgc2V0Q3JlYXRlTWVudU9wZW4ocHJldiA9PiAhcHJldilcbiAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPFNDTVNDcmVhdGVCdXR0b25UZXh0Pnt0KCdteVNraWxscy5jcmVhdGVTa2lsbCcpfTwvU0NNU0NyZWF0ZUJ1dHRvblRleHQ+XG4gICAgICAgICAgICAgICAgICA8L1NDTVNDcmVhdGVCdXR0b24+XG4gICAgICAgICAgICAgICAgICB7Y3JlYXRlTWVudU9wZW4gPyAoXG4gICAgICAgICAgICAgICAgICAgIDxTQ01TQ3JlYXRlTWVudSBvbkNsaWNrPXtldmVudCA9PiBldmVudC5zdG9wUHJvcGFnYXRpb24oKX0+XG4gICAgICAgICAgICAgICAgICAgICAgPFNDTVNDcmVhdGVNZW51SXRlbSB0eXBlPVwiYnV0dG9uXCIgb25DbGljaz17KCkgPT4gaGFuZGxlQ3JlYXRlT3B0aW9uKCdnZW5lcmF0ZScpfT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxJY29uQ2hhdCAvPlxuICAgICAgICAgICAgICAgICAgICAgICAge3QoJ215U2tpbGxzLmNyZWF0ZVdpdGhNYWlhJyl9XG4gICAgICAgICAgICAgICAgICAgICAgPC9TQ01TQ3JlYXRlTWVudUl0ZW0+XG4gICAgICAgICAgICAgICAgICAgICAgPFNDTVNDcmVhdGVNZW51SXRlbSB0eXBlPVwiYnV0dG9uXCIgb25DbGljaz17KCkgPT4gaGFuZGxlQ3JlYXRlT3B0aW9uKCd3cml0ZScpfT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxJY29uQ2xpcGJvYXJkIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICB7dCgnbXlTa2lsbHMud3JpdGVJbnN0cnVjdGlvbnMnKX1cbiAgICAgICAgICAgICAgICAgICAgICA8L1NDTVNDcmVhdGVNZW51SXRlbT5cbiAgICAgICAgICAgICAgICAgICAgICA8U0NNU0NyZWF0ZU1lbnVJdGVtIHR5cGU9XCJidXR0b25cIiBvbkNsaWNrPXsoKSA9PiBoYW5kbGVDcmVhdGVPcHRpb24oJ3VwbG9hZCcpfT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxJY29uVXBsb2FkIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICB7dCgnbXlTa2lsbHMudXBsb2FkU2tpbGwnKX1cbiAgICAgICAgICAgICAgICAgICAgICA8L1NDTVNDcmVhdGVNZW51SXRlbT5cbiAgICAgICAgICAgICAgICAgICAgPC9TQ01TQ3JlYXRlTWVudT5cbiAgICAgICAgICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgICAgICAgIDwvU0NNU0NyZWF0ZU1lbnVXcmFwPlxuICAgICAgICAgICAgICA8L1NDTVNBY3Rpb25zUm93PlxuICAgICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgPC9TQ01TVGl0bGVXcmFwPlxuICAgICAgICApIDogbnVsbH1cblxuICAgICAgICB7bG9hZGluZyA/IChcbiAgICAgICAgICA8U0NNU0xvYWRXcmFwcGVyPlxuICAgICAgICAgICAgPExvYWRlciBzaXplPVwic21hbGxcIiAvPlxuICAgICAgICAgIDwvU0NNU0xvYWRXcmFwcGVyPlxuICAgICAgICApIDogbnVsbH1cblxuICAgICAgICB7IWxvYWRpbmcgJiYgc2tpbGxzLmxlbmd0aCA/IChcbiAgICAgICAgICA8U0NNU0NhcmRzT3V0ZXI+XG4gICAgICAgICAgICA8U0NNU0NhcmRzUm93PlxuICAgICAgICAgICAgICB7c2tpbGxzLm1hcChza2lsbCA9PiAoXG4gICAgICAgICAgICAgICAgPFNDTVNDYXJkQnV0dG9uIGtleT17c2tpbGwuaWR9IHR5cGU9XCJidXR0b25cIiBvbkNsaWNrPXsoKSA9PiBjYW5FZGl0ICYmIGhhbmRsZU9wZW5FZGl0U2tpbGwoc2tpbGwpfT5cbiAgICAgICAgICAgICAgICAgIDxTQ01TQ2FyZEhlYWRlcj5cbiAgICAgICAgICAgICAgICAgICAgPFNDTVNDYXJkVG9wUm93PlxuICAgICAgICAgICAgICAgICAgICAgIDxTQ01TQ2FyZFRpdGxlTmFtZT57c2tpbGwubmFtZX08L1NDTVNDYXJkVGl0bGVOYW1lPlxuICAgICAgICAgICAgICAgICAgICAgIHtjYW5TaG93TWVudSA/IChcbiAgICAgICAgICAgICAgICAgICAgICAgIDxTQ01TS2ViYWJCdXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9e3QoJ215U2tpbGxzLmNhcmRNZW51QXJpYUxhYmVsJyl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e2V2ZW50ID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRNZW51T3BlbkZvclNraWxsSWQocHJldiA9PiAocHJldiA9PT0gc2tpbGwuaWQgPyBudWxsIDogc2tpbGwuaWQpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8TWVudURvdHMgY29sb3I9XCIjOTk5XCIgd2lkdGg9ezE1fSBoZWlnaHQ9ezE1fSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9TQ01TS2ViYWJCdXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgICAgICAgICAgIDwvU0NNU0NhcmRUb3BSb3c+XG4gICAgICAgICAgICAgICAgICA8L1NDTVNDYXJkSGVhZGVyPlxuICAgICAgICAgICAgICAgICAgPFNDTVNDYXJkQm9keT5cbiAgICAgICAgICAgICAgICAgICAgPFNDTVNDYXJkQ29udGVudFRleHQ+e3NraWxsLmNvbnRlbnR9PC9TQ01TQ2FyZENvbnRlbnRUZXh0PlxuICAgICAgICAgICAgICAgICAgICA8U0NNU0NhcmRGb290ZXI+XG4gICAgICAgICAgICAgICAgICAgICAgPFNDTVNDYXJkRm9vdGVyRGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgIHtnZXRDcmVhdGVkQXRMYWJlbChza2lsbCkgfHwgdCgnbWFya2V0cGxhY2UubXlBZ2VudHNGYWxsYmFja0RhdGUnKX1cbiAgICAgICAgICAgICAgICAgICAgICA8L1NDTVNDYXJkRm9vdGVyRGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgPC9TQ01TQ2FyZEZvb3Rlcj5cbiAgICAgICAgICAgICAgICAgIDwvU0NNU0NhcmRCb2R5PlxuICAgICAgICAgICAgICAgICAge21lbnVPcGVuRm9yU2tpbGxJZCA9PT0gc2tpbGwuaWQgJiYgY2FuU2hvd01lbnUgPyAoXG4gICAgICAgICAgICAgICAgICAgIDxTQ01TQ2FyZE1lbnVcbiAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXtldmVudCA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICAgICAgICAgICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKVxuICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICA8U0NNU0NhcmRNZW51SXRlbXM+XG4gICAgICAgICAgICAgICAgICAgICAgICB7Y2FuRWRpdCA/IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPFNDTVNDYXJkTWVudUl0ZW0gdHlwZT1cImJ1dHRvblwiIG9uQ2xpY2s9eygpID0+IGhhbmRsZU9wZW5FZGl0U2tpbGwoc2tpbGwpfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7dCgnbXlTa2lsbHMuZWRpdCcpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L1NDTVNDYXJkTWVudUl0ZW0+XG4gICAgICAgICAgICAgICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHtjYW5EZWxldGUgPyAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxTQ01TQ2FyZE1lbnVJdGVtIHR5cGU9XCJidXR0b25cIiBvbkNsaWNrPXsoKSA9PiBzZXRTa2lsbFRvRGVsZXRlKHNraWxsKX0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3QoJ215U2tpbGxzLmRlbGV0ZScpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L1NDTVNDYXJkTWVudUl0ZW0+XG4gICAgICAgICAgICAgICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICAgICAgICAgICAgICA8L1NDTVNDYXJkTWVudUl0ZW1zPlxuICAgICAgICAgICAgICAgICAgICA8L1NDTVNDYXJkTWVudT5cbiAgICAgICAgICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgICAgICAgIDwvU0NNU0NhcmRCdXR0b24+XG4gICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgPC9TQ01TQ2FyZHNSb3c+XG4gICAgICAgICAgPC9TQ01TQ2FyZHNPdXRlcj5cbiAgICAgICAgKSA6IG51bGx9XG5cbiAgICAgICAgeyFsb2FkaW5nICYmICFza2lsbHMubGVuZ3RoID8gKFxuICAgICAgICAgIDxTQ01TRW1wdHlTdGF0ZVJvb3Q+XG4gICAgICAgICAgICA8U0NNU0VtcHR5U3RhdGVDb2x1bW4+XG4gICAgICAgICAgICAgIDxTQ01TRW1wdHlTdGF0ZVRpdGxlQmxvY2s+XG4gICAgICAgICAgICAgICAgPFNDTVNFbXB0eVN0YXRlVGl0bGU+e3QoJ215U2tpbGxzLmVtcHR5U3RhdGVUaXRsZScpfTwvU0NNU0VtcHR5U3RhdGVUaXRsZT5cbiAgICAgICAgICAgICAgICA8U0NNU0VtcHR5U3RhdGVTdWJ0aXRsZT5cbiAgICAgICAgICAgICAgICAgIHtjYW5DcmVhdGUgPyB0KCdteVNraWxscy5lbXB0eVN0YXRlRGVzY3JpcHRpb24nKSA6IHQoJ215U2tpbGxzLmVtcHR5U3RhdGVEZXNjcmlwdGlvbk5vUGVybScpfVxuICAgICAgICAgICAgICAgIDwvU0NNU0VtcHR5U3RhdGVTdWJ0aXRsZT5cbiAgICAgICAgICAgICAgPC9TQ01TRW1wdHlTdGF0ZVRpdGxlQmxvY2s+XG4gICAgICAgICAgICA8L1NDTVNFbXB0eVN0YXRlQ29sdW1uPlxuICAgICAgICAgICAge2NhbkNyZWF0ZSA/IChcbiAgICAgICAgICAgICAgPFNDTVNFbXB0eVN0YXRlQnV0dG9uIHR5cGU9XCJidXR0b25cIiBvbkNsaWNrPXtvcGVuQ3JlYXRlU2tpbGxNb2RhbH0+XG4gICAgICAgICAgICAgICAge3QoJ215U2tpbGxzLmVtcHR5U3RhdGVCdXR0b24nKX1cbiAgICAgICAgICAgICAgPC9TQ01TRW1wdHlTdGF0ZUJ1dHRvbj5cbiAgICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgIDwvU0NNU0VtcHR5U3RhdGVSb290PlxuICAgICAgICApIDogbnVsbH1cbiAgICAgIDwvU0NNU0JvZHk+XG4gICAgICB7ZGVsZXRlTW9kYWxDaGF0ID8gKFxuICAgICAgICA8RGVsZXRlUXVlc3Rpb25Nb2RhbFxuICAgICAgICAgIG9uQ2xvc2U9eygpID0+IHNldFNraWxsVG9EZWxldGUobnVsbCl9XG4gICAgICAgICAgaGFuZGxlcnM9e3tcbiAgICAgICAgICAgIGhhbmRsZUNvbmZpcm1BY3Rpb246IGhhbmRsZUNvbmZpcm1EZWxldGUsXG4gICAgICAgICAgfX1cbiAgICAgICAgICBjaGF0PXtkZWxldGVNb2RhbENoYXR9XG4gICAgICAgICAgYWN0aW9uPVwic2tpbGxcIlxuICAgICAgICAvPlxuICAgICAgKSA6IG51bGx9XG4gICAgPC9TQ01TQ29udGFpbmVyPlxuICApXG59XG4iXSwibWFwcGluZ3MiOiI7OztBQUFBLE9BQU9BLEtBQUssSUFBSUMsV0FBVyxFQUFFQyxTQUFTLEVBQUVDLE9BQU8sRUFBRUMsUUFBUSxRQUFRLE9BQU87QUFDeEUsU0FBU0MsUUFBUSxRQUFRLDJDQUEyQztBQUNwRSxTQUFTQyxjQUFjLFFBQVEsZUFBZTtBQUM5QyxTQUFTQyxPQUFPLFFBQVEsMkJBQTJCO0FBRW5ELFNBQVNDLFdBQVcsUUFBUSwyQ0FBMkM7QUFDdkUsU0FBU0Msa0JBQWtCLFFBQVEsc0RBQXNEO0FBQ3pGLFNBQVNDLG1CQUFtQixRQUFRLHlEQUF5RDtBQUM3RixTQUFTQyx5QkFBeUIsUUFBUSw2REFBNkQ7QUFDdkcsU0FBU0MsUUFBUSxRQUFRLDJCQUEyQjtBQUNwRCxTQUFTQyxNQUFNLFFBQVEsb0JBQW9CO0FBQzNDLFNBQ0VDLFFBQVEsRUFDUkMsWUFBWSxFQUNaQyxjQUFjLEVBQ2RDLG1CQUFtQixFQUNuQkMsY0FBYyxFQUNkQyxrQkFBa0IsRUFDbEJDLGNBQWMsRUFDZEMsWUFBWSxFQUNaQyxnQkFBZ0IsRUFDaEJDLGlCQUFpQixFQUNqQkMsaUJBQWlCLEVBQ2pCQyxjQUFjLEVBQ2RDLGNBQWMsRUFDZEMs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
|