@projectcor/maia-components 2.49.0-beta.1 → 2.49.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 (124) hide show
  1. package/lib/components/atoms/ApprovalBox/ApprovalBox.helpers.js +37 -0
  2. package/lib/components/atoms/ApprovalBox/ApprovalBox.js +3 -37
  3. package/lib/components/atoms/AttachmentCard/AttachmentCardAudio.helpers.js +117 -0
  4. package/lib/components/atoms/AttachmentCard/AttachmentCardAudio.js +31 -101
  5. package/lib/components/atoms/AttachmentPreviewModal/AttachmentPreviewModal.helpers.js +91 -0
  6. package/lib/components/atoms/AttachmentPreviewModal/AttachmentPreviewModal.js +49 -140
  7. package/lib/components/atoms/AttachmentPreviewModal/PptPreview.helpers.js +257 -0
  8. package/lib/components/atoms/AttachmentPreviewModal/PptPreview.js +53 -205
  9. package/lib/components/atoms/AttachmentPreviewModal/WordPreview.helpers.js +4 -0
  10. package/lib/components/atoms/AttachmentPreviewModal/WordPreview.js +2 -4
  11. package/lib/components/atoms/ClientSelector/ClientSelector.helpers.js +26 -0
  12. package/lib/components/atoms/ClientSelector/ClientSelector.js +12 -21
  13. package/lib/components/atoms/ContextMentionChip/buildChipElement.helpers.js +227 -0
  14. package/lib/components/atoms/ContextMentionChip/buildChipElement.js +15 -255
  15. package/lib/components/atoms/ContextMentionEditor/ContextMentionEditor.helpers.js +59 -0
  16. package/lib/components/atoms/ContextMentionEditor/ContextMentionEditor.js +12 -57
  17. package/lib/components/atoms/MAIAInput/MAIAInput.attachments.helpers.js +74 -0
  18. package/lib/components/atoms/MAIAInput/MAIAInput.helpers.js +184 -0
  19. package/lib/components/atoms/MAIAInput/MAIAInput.js +127 -176
  20. package/lib/components/atoms/MAIAInput/MAIAInputEditor.helpers.js +96 -0
  21. package/lib/components/atoms/MAIAInput/MAIAInputEditor.js +40 -113
  22. package/lib/components/atoms/OnboardingModalButton/OnboardingModalButton.helpers.js +17 -0
  23. package/lib/components/atoms/OnboardingModalButton/OnboardingModalButton.js +3 -15
  24. package/lib/components/atoms/ReasoningBlock/ReasoningSteps.js +3 -4
  25. package/lib/components/atoms/ReasoningBlock/ReasoningTimeline.js +3 -11
  26. package/lib/components/atoms/ReasoningBlock/reasoningLeading.js +6 -1
  27. package/lib/components/atoms/ReasoningBlock/reasoningLiveNarration.js +2 -3
  28. package/lib/components/atoms/ReasoningBlock/reasoningTimeline.helpers.js +10 -0
  29. package/lib/components/atoms/SlashCommandDropdown/SlashCommandDropdown.helpers.js +101 -0
  30. package/lib/components/atoms/SlashCommandDropdown/SlashCommandDropdown.js +21 -77
  31. package/lib/components/atoms/TextArea/TextArea.helpers.js +23 -0
  32. package/lib/components/atoms/TextArea/TextArea.js +11 -20
  33. package/lib/components/molecules/AbmSection/AbmAccessibilitySection/AbmAccessibilitySection.helpers.js +37 -0
  34. package/lib/components/molecules/AbmSection/AbmAccessibilitySection/AbmAccessibilitySection.js +6 -29
  35. package/lib/components/molecules/AbmSection/AbmGeneralSection.helpers.js +68 -0
  36. package/lib/components/molecules/AbmSection/AbmGeneralSection.js +17 -56
  37. package/lib/components/molecules/AbmSection/AbmKnowledgeSection.helpers.js +133 -0
  38. package/lib/components/molecules/AbmSection/AbmKnowledgeSection.js +31 -112
  39. package/lib/components/molecules/AbmSection/AbmLoaderFiles.helpers.js +17 -0
  40. package/lib/components/molecules/AbmSection/AbmLoaderFiles.js +5 -15
  41. package/lib/components/molecules/ChatAIHome/ChatAIHome.helpers.js +370 -0
  42. package/lib/components/molecules/ChatAIHome/ChatAIHome.js +197 -233
  43. package/lib/components/molecules/ChatAIMessages/ChatAIMessages.helpers.js +398 -0
  44. package/lib/components/molecules/ChatAIMessages/ChatAIMessages.js +209 -235
  45. package/lib/components/molecules/ChatAIModal/ChatAIModal.helpers.js +515 -4
  46. package/lib/components/molecules/ChatAIModal/ChatAIModal.js +228 -344
  47. package/lib/components/molecules/ChatAIModal/components/ChatAiAgentOptions/ChatAiAgentOptions.helpers.js +5 -0
  48. package/lib/components/molecules/ChatAIModal/components/ChatAiAgentOptions/ChatAiAgentOptions.js +3 -2
  49. package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeader.helpers.js +49 -0
  50. package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeader.js +36 -33
  51. package/lib/components/molecules/ChatAIMyAgents/ChatAIMyAgents.helpers.js +39 -0
  52. package/lib/components/molecules/ChatAIMyAgents/ChatAIMyAgents.js +30 -33
  53. package/lib/components/molecules/ChatAIMySkills/ChatAIMySkills.helpers.js +41 -0
  54. package/lib/components/molecules/ChatAIMySkills/ChatAIMySkills.js +9 -35
  55. package/lib/components/molecules/ChatFooter/ChatFooterFaqs.helpers.js +48 -0
  56. package/lib/components/molecules/ChatFooter/ChatFooterFaqs.js +9 -44
  57. package/lib/components/molecules/Sidebar/Sidebar.helpers.js +43 -0
  58. package/lib/components/molecules/Sidebar/Sidebar.js +25 -22
  59. package/lib/components/organisms/AbmAgentModal/AbmAgentModal.helpers.js +512 -0
  60. package/lib/components/organisms/AbmAgentModal/AbmAgentModal.js +309 -643
  61. package/lib/components/organisms/AbmSkillModal/AbmSkillModal.helpers.js +37 -0
  62. package/lib/components/organisms/AbmSkillModal/AbmSkillModal.js +13 -25
  63. package/lib/constants/formatExtensions.js +7 -8
  64. package/lib/dev/DevReasoningTimeline.js +8 -50
  65. package/lib/hooks/useAgentModel/useCreateAgent.helpers.js +144 -0
  66. package/lib/hooks/useAgentModel/useCreateAgent.js +38 -102
  67. package/lib/hooks/useChatManager/useChatManager.helpers.js +902 -0
  68. package/lib/hooks/useChatManager/useChatManager.js +267 -741
  69. package/lib/hooks/useChatMessages/useChatMessages.helpers.js +365 -0
  70. package/lib/hooks/useChatMessages/useChatMessages.js +59 -285
  71. package/lib/hooks/useClientSearch.helpers.js +36 -0
  72. package/lib/hooks/useClientSearch.js +4 -32
  73. package/lib/hooks/useContextMentions.helpers.js +212 -0
  74. package/lib/hooks/useContextMentions.js +5 -223
  75. package/lib/hooks/useContextMentions.types.js +2 -0
  76. package/lib/hooks/useContextPinPopover.helpers.js +95 -0
  77. package/lib/hooks/useContextPinPopover.js +16 -75
  78. package/lib/hooks/useEntitySearch.helpers.js +407 -0
  79. package/lib/hooks/useEntitySearch.js +52 -436
  80. package/lib/hooks/useMentionPopover.helpers.js +41 -0
  81. package/lib/hooks/useMentionPopover.js +9 -35
  82. package/lib/hooks/useMinimizedPillBottomOffset.helpers.js +47 -0
  83. package/lib/hooks/useMinimizedPillBottomOffset.js +15 -45
  84. package/lib/hooks/useOrchestratorStream/useOrchestratorStream.helpers.js +86 -0
  85. package/lib/hooks/useOrchestratorStream/useOrchestratorStream.js +8 -82
  86. package/lib/hooks/useProjectSearch.helpers.js +61 -0
  87. package/lib/hooks/useProjectSearch.js +4 -58
  88. package/lib/hooks/useProjectSummaryConfig.helpers.js +62 -0
  89. package/lib/hooks/useProjectSummaryConfig.js +14 -52
  90. package/lib/hooks/useReasoningTrace/reasoningStore.js +8 -39
  91. package/lib/hooks/useRecentClientsSearch.helpers.js +33 -0
  92. package/lib/hooks/useRecentClientsSearch.js +4 -32
  93. package/lib/lang/br/index.js +1 -7
  94. package/lib/lang/en/index.js +1 -7
  95. package/lib/lang/es/index.js +1 -7
  96. package/lib/lang/fr/index.js +1 -7
  97. package/lib/services/maia/Agents/getAgents.helpers.js +241 -0
  98. package/lib/services/maia/Agents/getAgents.js +90 -282
  99. package/lib/services/maia/Orchestrator/orchestrator.helpers.js +130 -0
  100. package/lib/services/maia/Orchestrator/orchestrator.js +38 -121
  101. package/lib/services/utils/mapChatMessages.helpers.js +223 -0
  102. package/lib/services/utils/mapChatMessages.js +25 -254
  103. package/lib/store/sessions/sessionNotifications.helpers.js +45 -0
  104. package/lib/store/sessions/sessionNotifications.js +35 -41
  105. package/lib/store/sessions/sessionStreamManager.helpers.js +134 -0
  106. package/lib/store/sessions/sessionStreamManager.js +172 -236
  107. package/lib/test/mockSseStream.js +121 -0
  108. package/lib/test/streamdownCodeMock.js +6 -0
  109. package/lib/test/streamdownMock.js +12 -0
  110. package/lib/types/Chat.js +1 -1
  111. package/lib/types/agentModal.js +1 -1
  112. package/lib/types/reasoning.js +1 -1
  113. package/lib/utils/imagePreprocessor.helpers.js +28 -0
  114. package/lib/utils/imagePreprocessor.js +12 -37
  115. package/lib/utils/renderContextMentions.helpers.js +110 -0
  116. package/lib/utils/renderContextMentions.js +4 -110
  117. package/lib/utils/streamActivityMessages.helpers.js +222 -0
  118. package/lib/utils/streamActivityMessages.js +4 -221
  119. package/package.json +2 -2
  120. package/lib/components/atoms/ContextCompactedNotice/ContextCompactedNotice.js +0 -53
  121. package/lib/components/atoms/ContextCompactedNotice/ContextCompactedNotice.styles.js +0 -8
  122. package/lib/components/atoms/ContextCompactedNotice/index.js +0 -2
  123. package/lib/types/contextCompaction.js +0 -48
  124. package/lib/types/jest-dom.d.js +0 -2
@@ -1,6 +1,5 @@
1
1
  import _defineProperty from "@babel/runtime/helpers/defineProperty";
2
2
  import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
3
- import _toConsumableArray from "@babel/runtime/helpers/toConsumableArray";
4
3
  import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
5
4
  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
5
  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; }
@@ -23,21 +22,8 @@ import { SkillCreatedByIcon } from '../../atoms/icons/SkillCreatedByIcon';
23
22
  import { SkillVisibilityEveryoneIcon } from '../../atoms/icons/SkillVisibilityEveryoneIcon';
24
23
  import { SkillVisibilityOnlyMeIcon } from '../../atoms/icons/SkillVisibilityOnlyMeIcon';
25
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 { buildSkillDeleteModalChat, filterAndSortSkills, formatSkillDisplayName, resolveDropdownPlacement, resolveSkillCreateAnalyticsSource, resolveSkillsCardMenuHeightPx, shouldShowSkillsToolbar } from './ChatAIMySkills.helpers';
26
26
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
27
- var DROPDOWN_GAP_PX = 6;
28
- var CARD_MENU_ITEM_HEIGHT_PX = 40;
29
- var resolveDropdownPlacement = function resolveDropdownPlacement(anchor, dropdownHeight) {
30
- var rect = anchor.getBoundingClientRect();
31
- var spaceBelow = window.innerHeight - rect.bottom - DROPDOWN_GAP_PX;
32
- var spaceAbove = rect.top - DROPDOWN_GAP_PX;
33
- if (spaceBelow >= dropdownHeight) return 'bottom';
34
- if (spaceAbove >= dropdownHeight) return 'top';
35
- return spaceBelow >= spaceAbove ? 'bottom' : 'top';
36
- };
37
- var formatSkillDisplayName = function formatSkillDisplayName(name) {
38
- var normalized = name.replace(/^(@\/|#)/, '');
39
- return "#".concat(normalized);
40
- };
41
27
  var openSkillModal = function openSkillModal(values) {
42
28
  var analyticsSource = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'catalog';
43
29
  document.dispatchEvent(new CustomEvent('abm-skill-modal-set-values', {
@@ -121,30 +107,21 @@ export var ChatAIMySkills = function ChatAIMySkills(_ref2) {
121
107
  var isMineTab = activeTab === 'mine';
122
108
  var tabSkills = isMineTab ? mySkills : sharedSkills;
123
109
  var filteredSkills = useMemo(function () {
124
- var normalizedQuery = searchQuery.toLowerCase();
125
- var matched = normalizedQuery ? tabSkills.filter(function (skill) {
126
- return skill.name.toLowerCase().includes(normalizedQuery);
127
- }) : tabSkills;
128
- return _toConsumableArray(matched).sort(function (a, b) {
129
- return a.name.localeCompare(b.name);
130
- });
110
+ return filterAndSortSkills(tabSkills, searchQuery);
131
111
  }, [searchQuery, tabSkills]);
132
112
  var handleCreateSkill = useCallback(function () {
133
- var fromEmpty = activeTab === 'mine' && !loading && mySkills.length === 0 && !searchQuery;
134
113
  openSkillModal({
135
114
  isEditing: false,
136
115
  intent: 'write'
137
- }, fromEmpty ? 'empty' : 'catalog');
116
+ }, resolveSkillCreateAnalyticsSource(activeTab, loading, mySkills.length, searchQuery));
138
117
  }, [activeTab, loading, mySkills.length, searchQuery]);
139
-
140
- // "Mis skills" tiene Usar + Editar + Eliminar; "Compartidas" solo Usar.
141
- var cardMenuHeightPx = isMineTab ? CARD_MENU_ITEM_HEIGHT_PX * 3 : CARD_MENU_ITEM_HEIGHT_PX;
118
+ var cardMenuHeightPx = resolveSkillsCardMenuHeightPx(isMineTab);
142
119
  var handleToggleCardMenu = useCallback(function (event, skillId) {
143
120
  event.preventDefault();
144
121
  event.stopPropagation();
145
122
  var cardAnchor = event.currentTarget.closest('[data-skill-card-id]');
146
123
  if (cardAnchor instanceof HTMLElement) {
147
- setCardMenuPlacement(resolveDropdownPlacement(cardAnchor, cardMenuHeightPx));
124
+ setCardMenuPlacement(resolveDropdownPlacement(cardAnchor.getBoundingClientRect(), cardMenuHeightPx));
148
125
  }
149
126
  setMenuOpenForSkillId(function (prev) {
150
127
  return prev === skillId ? null : skillId;
@@ -186,10 +163,7 @@ export var ChatAIMySkills = function ChatAIMySkills(_ref2) {
186
163
  setMenuOpenForSkillId(null);
187
164
  }, [isMineTab]);
188
165
  var deleteModalChat = useMemo(function () {
189
- return skillToDelete ? {
190
- title: skillToDelete.name,
191
- id: skillToDelete.id
192
- } : null;
166
+ return buildSkillDeleteModalChat(skillToDelete);
193
167
  }, [skillToDelete]);
194
168
  var handleConfirmDelete = /*#__PURE__*/function () {
195
169
  var _ref3 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee(chat) {
@@ -242,7 +216,7 @@ export var ChatAIMySkills = function ChatAIMySkills(_ref2) {
242
216
  var _listScrollRef$curren;
243
217
  var openCard = (_listScrollRef$curren = listScrollRef.current) === null || _listScrollRef$curren === void 0 ? void 0 : _listScrollRef$curren.querySelector("[data-skill-card-id=\"".concat(menuOpenForSkillId, "\"]"));
244
218
  if (openCard) {
245
- setCardMenuPlacement(resolveDropdownPlacement(openCard, cardMenuHeightPx));
219
+ setCardMenuPlacement(resolveDropdownPlacement(openCard.getBoundingClientRect(), cardMenuHeightPx));
246
220
  }
247
221
  };
248
222
  var scrollContainer = listScrollRef.current;
@@ -257,7 +231,7 @@ export var ChatAIMySkills = function ChatAIMySkills(_ref2) {
257
231
  }, [menuOpenForSkillId, cardMenuHeightPx]);
258
232
  var tabDescription = isMineTab ? t('mySkills.mySkillsDescription') : t('mySkills.sharedSkillsDescription');
259
233
  var isMineEmpty = isMineTab && !loading && mySkills.length === 0 && !searchQuery;
260
- var showSkillsToolbar = isMineTab ? !isMineEmpty : tabSkills.length > 0 || !!searchQuery;
234
+ var showSkillsToolbar = shouldShowSkillsToolbar(isMineTab, isMineEmpty, tabSkills.length, searchQuery);
261
235
  var renderCreateSkillButton = function renderCreateSkillButton() {
262
236
  return /*#__PURE__*/_jsx(SCMSCreateButton, {
263
237
  type: "button",
@@ -445,4 +419,4 @@ export var ChatAIMySkills = function ChatAIMySkills(_ref2) {
445
419
  }) : null]
446
420
  });
447
421
  };
448
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsInVzZUNhbGxiYWNrIiwidXNlRWZmZWN0IiwidXNlTWVtbyIsInVzZVJlZiIsInVzZVN0YXRlIiwiTWVudURvdHMiLCJTZWFyY2giLCJJbmZvcm1hdGlvbkNpcmNsZSIsIlRvb2x0aXAiLCJ1c2VUcmFuc2xhdGlvbiIsImRlbGV0ZVNraWxsIiwidXNlU25hY2tCYXJNYW5hZ2VyIiwiRVZFTlRTIiwidXNlRXZlbnQiLCJ1c2VNYWlhVGFza1BhbmVsWkluZGV4IiwiRGVsZXRlUXVlc3Rpb25Nb2RhbCIsIlNLSUxMX1VTRV9BRlRFUl9TQVZFX0VWRU5UIiwiU0VDVElPTlMiLCJMb2FkZXIiLCJTa2lsbENyZWF0ZWRCeUljb24iLCJTa2lsbFZpc2liaWxpdHlFdmVyeW9uZUljb24iLCJTa2lsbFZpc2liaWxpdHlPbmx5TWVJY29uIiwiU0NNU0JvZHkiLCJTQ01TQ2FyZEJ1dHRvbiIsIlNDTVNDYXJkQ29udGVudFRleHQiLCJTQ01TQ2FyZE1lbnUiLCJTQ01TQ2FyZE1lbnVJdGVtIiwiU0NNU0NhcmRUaXRsZU5hbWUiLCJTQ01TQ2FyZFRvcFJvdyIsIlNDTVNDYXJkVmlzaWJpbGl0eVJvdyIsIlNDTVNDYXJkVmlzaWJpbGl0eVRleHQiLCJTQ01TQ2FyZHNMaXN0IiwiU0NNU0NvbnRhaW5lciIsIlNDTVNDcmVhdGVCdXR0b24iLCJTQ01TQ3JlYXRlQnV0dG9uVGV4dCIsIlNDTVNTaGFyZWRFbXB0eVN0YXRlUm9vdCIsIlNDTVNTaGFyZWRFbXB0eVN0YXRlU3VidGl0bGUiLCJTQ01TU2hhcmVkRW1wdHlTdGF0ZVRpdGxlIiwiU0NNU1NoYXJlZEVtcHR5U3RhdGVUaXRsZUJsb2NrIiwiU0NNU0tlYmFiQnV0dG9uIiwiU0NNU0xvYWRXcmFwcGVyIiwiU0NNU01ldGFEZXNjcmlwdGlvbiIsIlNDTVNNZXRhUm93IiwiU0NNU1BhbmVsIiwiU0NNU1BhbmVsSGVhZGVyIiwiU0NNU0xpc3RTY3JvbGxBcmVhIiwiU0NNU1NlYXJjaElucHV0IiwiU0NNU1NlYXJjaFdyYXBwZXIiLCJTQ01TVGFiQmFyIiwiU0NNU1RhYkJ1dHRvbiIsIlNDTVNUYWJJbmZvSWNvbiIsIlNDTVNUaXRsZSIsIlNDTVNUaXRsZUJsb2NrIiwianN4IiwiX2pzeCIsImpzeHMiLCJfanN4cyIsIkZyYWdtZW50IiwiX0ZyYWdtZW50IiwiRFJPUERPV05fR0FQX1BYIiwiQ0FSRF9NRU5VX0lURU1fSEVJR0hUX1BYIiwicmVzb2x2ZURyb3Bkb3duUGxhY2VtZW50IiwiYW5jaG9yIiwiZHJvcGRvd25IZWlnaHQiLCJyZWN0IiwiZ2V0Qm91bmRpbmdDbGllbnRSZWN0Iiwic3BhY2VCZWxvdyIsIndpbmRvdyIsImlubmVySGVpZ2h0IiwiYm90dG9tIiwic3BhY2VBYm92ZSIsInRvcCIsImZvcm1hdFNraWxsRGlzcGxheU5hbWUiLCJuYW1lIiwibm9ybWFsaXplZCIsInJlcGxhY2UiLCJjb25jYXQiLCJvcGVuU2tpbGxNb2RhbCIsInZhbHVlcyIsImFuYWx5dGljc1NvdXJjZSIsImFyZ3VtZW50cyIsImxlbmd0aCIsInVuZGVmaW5lZCIsImRvY3VtZW50IiwiZGlzcGF0Y2hFdmVudCIsIkN1c3RvbUV2ZW50IiwiZGV0YWlsIiwic2tpbGxWYWx1ZXMiLCJpc09wZW4iLCJTa2lsbFNlYXJjaElucHV0IiwibWVtbyIsIl9yZWYiLCJvblNlYXJjaCIsInBsYWNlaG9sZGVyIiwiX3VzZVN0YXRlIiwiX3VzZVN0YXRlMiIsIl9zbGljZWRUb0FycmF5IiwidmFsdWUiLCJzZXRWYWx1ZSIsImRlYm91bmNlUmVmIiwiaGFuZGxlQ2hhbmdlIiwiZXZlbnQiLCJuZXh0VmFsdWUiLCJ0YXJnZXQiLCJjdXJyZW50IiwiY2xlYXJUaW1lb3V0Iiwic2V0VGltZW91dCIsInRyaW0iLCJjaGlsZHJlbiIsIndpZHRoIiwiaGVpZ2h0IiwiY29sb3IiLCJ0eXBlIiwib25DaGFuZ2UiLCJDaGF0QUlNeVNraWxscyIsIl9yZWYyIiwibXlTa2lsbHMiLCJzaGFyZWRTa2lsbHMiLCJfcmVmMiRsb2FkaW5nIiwibG9hZGluZyIsIm9uRGVsZXRlU2tpbGwiLCJfdXNlVHJhbnNsYXRpb24iLCJjaGF0QUkiLCJ0IiwiZXZlbnRBbXBsaXR1ZGUiLCJfdXNlU25hY2tCYXJNYW5hZ2VyIiwiaGFuZGxlU25hY2tiYXJTdWNjZXNzIiwiaGFuZGxlU25hY2tiYXJFcnJvciIsInRvb2x0aXBaSW5kZXgiLCJsaXN0U2Nyb2xsUmVmIiwiX3VzZVN0YXRlMyIsIl91c2VTdGF0ZTQiLCJhY3RpdmVUYWIiLCJzZXRBY3RpdmVUYWIiLCJfdXNlU3RhdGU1IiwiX3VzZVN0YXRlNiIsInNlYXJjaFF1ZXJ5Iiwic2V0U2VhcmNoUXVlcnkiLCJfdXNlU3RhdGU3IiwiX3VzZVN0YXRlOCIsIm1lbnVPcGVuRm9yU2tpbGxJZCIsInNldE1lbnVPcGVuRm9yU2tpbGxJZCIsIl91c2VTdGF0ZTkiLCJfdXNlU3RhdGUwIiwiY2FyZE1lbnVQbGFjZW1lbnQiLCJzZXRDYXJkTWVudVBsYWNlbWVudCIsIl91c2VTdGF0ZTEiLCJfdXNlU3RhdGUxMCIsInNraWxsVG9EZWxldGUiLCJzZXRTa2lsbFRvRGVsZXRlIiwiaXNNaW5lVGFiIiwidGFiU2tpbGxzIiwiZmlsdGVyZWRTa2lsbHMiLCJub3JtYWxpemVkUXVlcnkiLCJ0b0xvd2VyQ2FzZSIsIm1hdGNoZWQiLCJmaWx0ZXIiLCJza2lsbCIsImluY2x1ZGVzIiwiX3RvQ29uc3VtYWJsZUFycmF5Iiwic29ydCIsImEiLCJiIiwibG9jYWxlQ29tcGFyZSIsImhhbmRsZUNyZWF0ZVNraWxsIiwiZnJvbUVtcHR5IiwiaXNFZGl0aW5nIiwiaW50ZW50IiwiY2FyZE1lbnVIZWlnaHRQeCIsImhhbmRsZVRvZ2dsZUNhcmRNZW51Iiwic2tpbGxJZCIsInByZXZlbnREZWZhdWx0Iiwic3RvcFByb3BhZ2F0aW9uIiwiY2FyZEFuY2hvciIsImN1cnJlbnRUYXJnZXQiLCJjbG9zZXN0IiwiSFRNTEVsZW1lbnQiLCJwcmV2IiwiaGFuZGxlVXNlU2tpbGwiLCJhaUNoYXRTa2lsbFVzZSIsInNraWxsX2lkIiwiaWQiLCJhY2Nlc3NfdHlwZSIsInNvdXJjZSIsImlzX3NoYXJlZCIsInVzZUZpcnN0QWdlbnQiLCJoYW5kbGVPcGVuU2tpbGwiLCJpc1JlYWRPbmx5IiwiaXNTaGFyZWQiLCJnZW5lcmFsIiwiZGVzY3JpcHRpb24iLCJjb250ZW50IiwiY3JlYXRlZF9ieV9uYW1lIiwiY3JlYXRlZF9hdCIsInVwZGF0ZWRfYXQiLCJkZWxldGVNb2RhbENoYXQiLCJ0aXRsZSIsImhhbmRsZUNvbmZpcm1EZWxldGUiLCJfcmVmMyIsIl9hc3luY1RvR2VuZXJhdG9yIiwiX3JlZ2VuZXJhdG9yUnVudGltZSIsIm1hcmsiLCJfY2FsbGVlIiwiY2hhdCIsIl90Iiwid3JhcCIsIl9jb250ZXh0IiwibmV4dCIsImFpQ2hhdFNraWxsQWJtRGVsZXRlIiwic3RvcCIsIl94IiwiYXBwbHkiLCJoYW5kbGVDbGlja091dHNpZGUiLCJhZGRFdmVudExpc3RlbmVyIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsImhhbmRsZVJlcG9zaXRpb24iLCJfbGlzdFNjcm9sbFJlZiRjdXJyZW4iLCJvcGVuQ2FyZCIsInF1ZXJ5U2VsZWN0b3IiLCJzY3JvbGxDb250YWluZXIiLCJwYXNzaXZlIiwidGFiRGVzY3JpcHRpb24iLCJpc01pbmVFbXB0eSIsInNob3dTa2lsbHNUb29sYmFyIiwicmVuZGVyQ3JlYXRlU2tpbGxCdXR0b24iLCJvbkNsaWNrIiwicmVuZGVyU2VhcmNoRW1wdHlTdGF0ZSIsInJlbmRlckVtcHR5U3RhdGUiLCIkYWN0aXZlIiwiX29iamVjdFNwcmVhZCIsInpJbmRleCIsInJlZiIsInNpemUiLCJtYXAiLCJpbmRleCIsIiRpbmRleCIsIiRlbGV2YXRlZCIsIiR2aXNpYmxlIiwiJHBsYWNlbWVudCIsIiRkZXN0cnVjdGl2ZSIsIm9uQ2xvc2UiLCJoYW5kbGVycyIsImhhbmRsZUNvbmZpcm1BY3Rpb24iLCJhY3Rpb24iXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy9tb2xlY3VsZXMvQ2hhdEFJTXlTa2lsbHMvQ2hhdEFJTXlTa2lsbHMudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwgeyB1c2VDYWxsYmFjaywgdXNlRWZmZWN0LCB1c2VNZW1vLCB1c2VSZWYsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBNZW51RG90cyB9IGZyb20gJ0Bwcm9qZWN0Y29yL2ljb25zL2xpYi9jb21wb25lbnRzL01lbnVEb3RzJ1xuaW1wb3J0IHsgU2VhcmNoIH0gZnJvbSAnQHByb2plY3Rjb3IvaWNvbnMvbGliL2NvbXBvbmVudHMvU2VhcmNoJ1xuaW1wb3J0IHsgSW5mb3JtYXRpb25DaXJjbGUgfSBmcm9tICdAcHJvamVjdGNvci9pY29ucy9saWIvY29tcG9uZW50cy9JbmZvcm1hdGlvbkNpcmNsZSdcbmltcG9ydCB7IFRvb2x0aXAgfSBmcm9tICdAcHJvamVjdGNvci90b29sdGlwdjIvbGliL2NvbXBvbmVudHMvVG9vbHRpcCdcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSAncmVhY3QtaTE4bmV4dCdcbmltcG9ydCB7IFNraWxsIH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMvc2tpbGwnXG5pbXBvcnQgeyBkZWxldGVTa2lsbCB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL21haWEvU2tpbGxzL2RlbGV0ZVNraWxsJ1xuaW1wb3J0IHsgdXNlU25hY2tCYXJNYW5hZ2VyIH0gZnJvbSAnLi4vLi4vLi4vaG9va3MvdXNlU25hY2tCYXJNYW5hZ2VyL3VzZVNuYWNrQmFyTWFuYWdlcidcbmltcG9ydCB7IEVWRU5UUywgdXNlRXZlbnQgfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VFdmVudCdcbmltcG9ydCB7IHVzZU1haWFUYXNrUGFuZWxaSW5kZXggfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VNYWlhVGFza1BhbmVsWkluZGV4J1xuaW1wb3J0IHsgRGVsZXRlUXVlc3Rpb25Nb2RhbCB9IGZyb20gJy4uLy4uL29yZ2FuaXNtcy9EZWxldGVRdWVzdGlvbk1vZGFsL0RlbGV0ZVF1ZXN0aW9uTW9kYWwnXG5pbXBvcnQgeyBTS0lMTF9VU0VfQUZURVJfU0FWRV9FVkVOVCB9IGZyb20gJy4uLy4uL29yZ2FuaXNtcy9BYm1Ta2lsbE1vZGFsL0FibVNraWxsTW9kYWwnXG5pbXBvcnQgeyBTRUNUSU9OUyB9IGZyb20gJy4uLy4uLy4uL2NvbnN0YW50cy9jb25maWcnXG5pbXBvcnQgeyBMb2FkZXIgfSBmcm9tICcuLi8uLi9hdG9tcy9Mb2FkZXInXG5pbXBvcnQgeyBTa2lsbENyZWF0ZWRCeUljb24gfSBmcm9tICcuLi8uLi9hdG9tcy9pY29ucy9Ta2lsbENyZWF0ZWRCeUljb24nXG5pbXBvcnQgeyBTa2lsbFZpc2liaWxpdHlFdmVyeW9uZUljb24gfSBmcm9tICcuLi8uLi9hdG9tcy9pY29ucy9Ta2lsbFZpc2liaWxpdHlFdmVyeW9uZUljb24nXG5pbXBvcnQgeyBTa2lsbFZpc2liaWxpdHlPbmx5TWVJY29uIH0gZnJvbSAnLi4vLi4vYXRvbXMvaWNvbnMvU2tpbGxWaXNpYmlsaXR5T25seU1lSWNvbidcbmltcG9ydCB7XG4gIFNDTVNCb2R5LFxuICBTQ01TQ2FyZEJ1dHRvbixcbiAgU0NNU0NhcmRDb250ZW50VGV4dCxcbiAgU0NNU0NhcmRNZW51LFxuICBTQ01TQ2FyZE1lbnVJdGVtLFxuICBTQ01TQ2FyZFRpdGxlTmFtZSxcbiAgU0NNU0NhcmRUb3BSb3csXG4gIFNDTVNDYXJkVmlzaWJpbGl0eVJvdyxcbiAgU0NNU0NhcmRWaXNpYmlsaXR5VGV4dCxcbiAgU0NNU0NhcmRzTGlzdCxcbiAgU0NNU0NvbnRhaW5lcixcbiAgU0NNU0NyZWF0ZUJ1dHRvbixcbiAgU0NNU0NyZWF0ZUJ1dHRvblRleHQsXG4gIFNDTVNTaGFyZWRFbXB0eVN0YXRlUm9vdCxcbiAgU0NNU1NoYXJlZEVtcHR5U3RhdGVTdWJ0aXRsZSxcbiAgU0NNU1NoYXJlZEVtcHR5U3RhdGVUaXRsZSxcbiAgU0NNU1NoYXJlZEVtcHR5U3RhdGVUaXRsZUJsb2NrLFxuICBTQ01TS2ViYWJCdXR0b24sXG4gIFNDTVNMb2FkV3JhcHBlcixcbiAgU0NNU01ldGFEZXNjcmlwdGlvbixcbiAgU0NNU01ldGFSb3csXG4gIFNDTVNQYW5lbCxcbiAgU0NNU1BhbmVsSGVhZGVyLFxuICBTQ01TTGlzdFNjcm9sbEFyZWEsXG4gIFNDTVNTZWFyY2hJbnB1dCxcbiAgU0NNU1NlYXJjaFdyYXBwZXIsXG4gIFNDTVNUYWJCYXIsXG4gIFNDTVNUYWJCdXR0b24sXG4gIFNDTVNUYWJJbmZvSWNvbixcbiAgU0NNU1RpdGxlLFxuICBTQ01TVGl0bGVCbG9jayxcbn0gZnJvbSAnLi9DaGF0QUlNeVNraWxscy5zdHlsZXMnXG5cbnR5cGUgQ2hhdEFJTXlTa2lsbHNQcm9wcyA9IHtcbiAgbXlTa2lsbHM6IFNraWxsW11cbiAgc2hhcmVkU2tpbGxzOiBTa2lsbFtdXG4gIGxvYWRpbmc/OiBib29sZWFuXG4gIG9uRGVsZXRlU2tpbGw/OiAoc2tpbGxJZDogc3RyaW5nKSA9PiB2b2lkXG59XG5cbnR5cGUgU2tpbGxzVGFiID0gJ21pbmUnIHwgJ3NoYXJlZCdcblxudHlwZSBTa2lsbE1vZGFsSW50ZW50ID0gJ2dlbmVyYXRlJyB8ICd3cml0ZSdcblxudHlwZSBEcm9wZG93blBsYWNlbWVudCA9ICd0b3AnIHwgJ2JvdHRvbSdcblxuY29uc3QgRFJPUERPV05fR0FQX1BYID0gNlxuY29uc3QgQ0FSRF9NRU5VX0lURU1fSEVJR0hUX1BYID0gNDBcblxuY29uc3QgcmVzb2x2ZURyb3Bkb3duUGxhY2VtZW50ID0gKGFuY2hvcjogSFRNTEVsZW1lbnQsIGRyb3Bkb3duSGVpZ2h0OiBudW1iZXIpOiBEcm9wZG93blBsYWNlbWVudCA9PiB7XG4gIGNvbnN0IHJlY3QgPSBhbmNob3IuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KClcbiAgY29uc3Qgc3BhY2VCZWxvdyA9IHdpbmRvdy5pbm5lckhlaWdodCAtIHJlY3QuYm90dG9tIC0gRFJPUERPV05fR0FQX1BYXG4gIGNvbnN0IHNwYWNlQWJvdmUgPSByZWN0LnRvcCAtIERST1BET1dOX0dBUF9QWFxuXG4gIGlmIChzcGFjZUJlbG93ID49IGRyb3Bkb3duSGVpZ2h0KSByZXR1cm4gJ2JvdHRvbSdcbiAgaWYgKHNwYWNlQWJvdmUgPj0gZHJvcGRvd25IZWlnaHQpIHJldHVybiAndG9wJ1xuICByZXR1cm4gc3BhY2VCZWxvdyA+PSBzcGFjZUFib3ZlID8gJ2JvdHRvbScgOiAndG9wJ1xufVxuXG5jb25zdCBmb3JtYXRTa2lsbERpc3BsYXlOYW1lID0gKG5hbWU6IHN0cmluZykgPT4ge1xuICBjb25zdCBub3JtYWxpemVkID0gbmFtZS5yZXBsYWNlKC9eKEBcXC98IykvLCAnJylcbiAgcmV0dXJuIGAjJHtub3JtYWxpemVkfWBcbn1cblxuY29uc3Qgb3BlblNraWxsTW9kYWwgPSAoXG4gIHZhbHVlczoge1xuICAgIGlzRWRpdGluZzogYm9vbGVhblxuICAgIGlzUmVhZE9ubHk/OiBib29sZWFuXG4gICAgaXNTaGFyZWQ/OiBib29sZWFuXG4gICAgaW50ZW50PzogU2tpbGxNb2RhbEludGVudFxuICAgIGdlbmVyYWw/OiB7XG4gICAgICBpZD86IHN0cmluZ1xuICAgICAgbmFtZT86IHN0cmluZ1xuICAgICAgZGVzY3JpcHRpb24/OiBzdHJpbmdcbiAgICAgIGNvbnRlbnQ/OiBzdHJpbmdcbiAgICAgIGFjY2Vzc190eXBlPzogU2tpbGxbJ2FjY2Vzc190eXBlJ11cbiAgICAgIGNyZWF0ZWRfYnlfbmFtZT86IHN0cmluZ1xuICAgICAgY3JlYXRlZF9hdD86IHN0cmluZ1xuICAgICAgdXBkYXRlZF9hdD86IHN0cmluZ1xuICAgIH1cbiAgfSxcbiAgYW5hbHl0aWNzU291cmNlOiAnY2F0YWxvZycgfCAnZW1wdHknID0gJ2NhdGFsb2cnXG4pID0+IHtcbiAgZG9jdW1lbnQuZGlzcGF0Y2hFdmVudChcbiAgICBuZXcgQ3VzdG9tRXZlbnQoJ2FibS1za2lsbC1tb2RhbC1zZXQtdmFsdWVzJywge1xuICAgICAgZGV0YWlsOiB7XG4gICAgICAgIHNraWxsVmFsdWVzOiB7XG4gICAgICAgICAgdmFsdWVzLFxuICAgICAgICAgIGlzT3BlbjogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgYW5hbHl0aWNzU291cmNlLFxuICAgICAgfSxcbiAgICB9KVxuICApXG59XG5cbmNvbnN0IFNraWxsU2VhcmNoSW5wdXQgPSBSZWFjdC5tZW1vKFxuICAoeyBvblNlYXJjaCwgcGxhY2Vob2xkZXIgfTogeyBvblNlYXJjaDogKHF1ZXJ5OiBzdHJpbmcpID0+IHZvaWQ7IHBsYWNlaG9sZGVyOiBzdHJpbmcgfSkgPT4ge1xuICAgIGNvbnN0IFt2YWx1ZSwgc2V0VmFsdWVdID0gdXNlU3RhdGUoJycpXG4gICAgY29uc3QgZGVib3VuY2VSZWYgPSB1c2VSZWY8UmV0dXJuVHlwZTx0eXBlb2Ygc2V0VGltZW91dD4gfCBudWxsPihudWxsKVxuXG4gICAgY29uc3QgaGFuZGxlQ2hhbmdlID0gdXNlQ2FsbGJhY2soXG4gICAgICAoZXZlbnQ6IFJlYWN0LkNoYW5nZUV2ZW50PEhUTUxJbnB1dEVsZW1lbnQ+KSA9PiB7XG4gICAgICAgIGNvbnN0IG5leHRWYWx1ZSA9IGV2ZW50LnRhcmdldC52YWx1ZVxuICAgICAgICBzZXRWYWx1ZShuZXh0VmFsdWUpXG4gICAgICAgIGlmIChkZWJvdW5jZVJlZi5jdXJyZW50KSBjbGVhclRpbWVvdXQoZGVib3VuY2VSZWYuY3VycmVudClcbiAgICAgICAgZGVib3VuY2VSZWYuY3VycmVudCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIG9uU2VhcmNoKG5leHRWYWx1ZS50cmltKCkpXG4gICAgICAgIH0sIDI1MClcbiAgICAgIH0sXG4gICAgICBbb25TZWFyY2hdXG4gICAgKVxuXG4gICAgdXNlRWZmZWN0KFxuICAgICAgKCkgPT4gKCkgPT4ge1xuICAgICAgICBpZiAoZGVib3VuY2VSZWYuY3VycmVudCkgY2xlYXJUaW1lb3V0KGRlYm91bmNlUmVmLmN1cnJlbnQpXG4gICAgICB9LFxuICAgICAgW11cbiAgICApXG5cbiAgICByZXR1cm4gKFxuICAgICAgPFNDTVNTZWFyY2hXcmFwcGVyPlxuICAgICAgICA8U2VhcmNoIHdpZHRoPXsxNn0gaGVpZ2h0PXsxNn0gY29sb3I9XCIjOTk5XCIgLz5cbiAgICAgICAgPFNDTVNTZWFyY2hJbnB1dCB0eXBlPVwidGV4dFwiIHZhbHVlPXt2YWx1ZX0gb25DaGFuZ2U9e2hhbmRsZUNoYW5nZX0gcGxhY2Vob2xkZXI9e3BsYWNlaG9sZGVyfSAvPlxuICAgICAgPC9TQ01TU2VhcmNoV3JhcHBlcj5cbiAgICApXG4gIH1cbilcblxuZXhwb3J0IGNvbnN0IENoYXRBSU15U2tpbGxzID0gKHsgbXlTa2lsbHMsIHNoYXJlZFNraWxscywgbG9hZGluZyA9IGZhbHNlLCBvbkRlbGV0ZVNraWxsIH06IENoYXRBSU15U2tpbGxzUHJvcHMpID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbihbU0VDVElPTlMuY2hhdEFJXSlcbiAgY29uc3QgZXZlbnRBbXBsaXR1ZGUgPSB1c2VFdmVudCgpXG4gIGNvbnN0IHsgaGFuZGxlU25hY2tiYXJTdWNjZXNzLCBoYW5kbGVTbmFja2JhckVycm9yIH0gPSB1c2VTbmFja0Jhck1hbmFnZXIoKVxuICBjb25zdCB0b29sdGlwWkluZGV4ID0gdXNlTWFpYVRhc2tQYW5lbFpJbmRleCgxNTAwLCAnb3ZlcmxheScpXG4gIGNvbnN0IGxpc3RTY3JvbGxSZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpXG4gIGNvbnN0IFthY3RpdmVUYWIsIHNldEFjdGl2ZVRhYl0gPSB1c2VTdGF0ZTxTa2lsbHNUYWI+KCdtaW5lJylcbiAgY29uc3QgW3NlYXJjaFF1ZXJ5LCBzZXRTZWFyY2hRdWVyeV0gPSB1c2VTdGF0ZSgnJylcbiAgY29uc3QgW21lbnVPcGVuRm9yU2tpbGxJZCwgc2V0TWVudU9wZW5Gb3JTa2lsbElkXSA9IHVzZVN0YXRlPHN0cmluZyB8IG51bGw+KG51bGwpXG4gIGNvbnN0IFtjYXJkTWVudVBsYWNlbWVudCwgc2V0Q2FyZE1lbnVQbGFjZW1lbnRdID0gdXNlU3RhdGU8RHJvcGRvd25QbGFjZW1lbnQ+KCdib3R0b20nKVxuICBjb25zdCBbc2tpbGxUb0RlbGV0ZSwgc2V0U2tpbGxUb0RlbGV0ZV0gPSB1c2VTdGF0ZTxTa2lsbCB8IG51bGw+KG51bGwpXG4gIGNvbnN0IGlzTWluZVRhYiA9IGFjdGl2ZVRhYiA9PT0gJ21pbmUnXG5cbiAgY29uc3QgdGFiU2tpbGxzID0gaXNNaW5lVGFiID8gbXlTa2lsbHMgOiBzaGFyZWRTa2lsbHNcblxuICBjb25zdCBmaWx0ZXJlZFNraWxscyA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGNvbnN0IG5vcm1hbGl6ZWRRdWVyeSA9IHNlYXJjaFF1ZXJ5LnRvTG93ZXJDYXNlKClcbiAgICBjb25zdCBtYXRjaGVkID0gbm9ybWFsaXplZFF1ZXJ5XG4gICAgICA/IHRhYlNraWxscy5maWx0ZXIoc2tpbGwgPT4gc2tpbGwubmFtZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKG5vcm1hbGl6ZWRRdWVyeSkpXG4gICAgICA6IHRhYlNraWxsc1xuICAgIHJldHVybiBbLi4ubWF0Y2hlZF0uc29ydCgoYSwgYikgPT4gYS5uYW1lLmxvY2FsZUNvbXBhcmUoYi5uYW1lKSlcbiAgfSwgW3NlYXJjaFF1ZXJ5LCB0YWJTa2lsbHNdKVxuXG4gIGNvbnN0IGhhbmRsZUNyZWF0ZVNraWxsID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGNvbnN0IGZyb21FbXB0eSA9IGFjdGl2ZVRhYiA9PT0gJ21pbmUnICYmICFsb2FkaW5nICYmIG15U2tpbGxzLmxlbmd0aCA9PT0gMCAmJiAhc2VhcmNoUXVlcnlcbiAgICBvcGVuU2tpbGxNb2RhbCh7IGlzRWRpdGluZzogZmFsc2UsIGludGVudDogJ3dyaXRlJyB9LCBmcm9tRW1wdHkgPyAnZW1wdHknIDogJ2NhdGFsb2cnKVxuICB9LCBbYWN0aXZlVGFiLCBsb2FkaW5nLCBteVNraWxscy5sZW5ndGgsIHNlYXJjaFF1ZXJ5XSlcblxuICAvLyBcIk1pcyBza2lsbHNcIiB0aWVuZSBVc2FyICsgRWRpdGFyICsgRWxpbWluYXI7IFwiQ29tcGFydGlkYXNcIiBzb2xvIFVzYXIuXG4gIGNvbnN0IGNhcmRNZW51SGVpZ2h0UHggPSBpc01pbmVUYWIgPyBDQVJEX01FTlVfSVRFTV9IRUlHSFRfUFggKiAzIDogQ0FSRF9NRU5VX0lURU1fSEVJR0hUX1BYXG5cbiAgY29uc3QgaGFuZGxlVG9nZ2xlQ2FyZE1lbnUgPSB1c2VDYWxsYmFjayhcbiAgICAoZXZlbnQ6IFJlYWN0Lk1vdXNlRXZlbnQ8SFRNTEJ1dHRvbkVsZW1lbnQ+LCBza2lsbElkOiBzdHJpbmcpID0+IHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXG4gICAgICBjb25zdCBjYXJkQW5jaG9yID0gZXZlbnQuY3VycmVudFRhcmdldC5jbG9zZXN0KCdbZGF0YS1za2lsbC1jYXJkLWlkXScpXG4gICAgICBpZiAoY2FyZEFuY2hvciBpbnN0YW5jZW9mIEhUTUxFbGVtZW50KSB7XG4gICAgICAgIHNldENhcmRNZW51UGxhY2VtZW50KHJlc29sdmVEcm9wZG93blBsYWNlbWVudChjYXJkQW5jaG9yLCBjYXJkTWVudUhlaWdodFB4KSlcbiAgICAgIH1cbiAgICAgIHNldE1lbnVPcGVuRm9yU2tpbGxJZChwcmV2ID0+IChwcmV2ID09PSBza2lsbElkID8gbnVsbCA6IHNraWxsSWQpKVxuICAgIH0sXG4gICAgW2NhcmRNZW51SGVpZ2h0UHhdXG4gIClcblxuICAvKiogTWlzbW8gZmx1am8gcXVlIGVsIGJvdMOzbiBcIlVzYXIgc2tpbGxcIiBkZWwgbW9kYWw6IGNoYXQgbnVldm8gY29uIGVsIHByaW1lciBhZ2VudGUgeSBsYSBtZW5jacOzbiBwdWVzdGEuICovXG4gIGNvbnN0IGhhbmRsZVVzZVNraWxsID0gdXNlQ2FsbGJhY2soXG4gICAgKHNraWxsOiBTa2lsbCkgPT4ge1xuICAgICAgZXZlbnRBbXBsaXR1ZGUoRVZFTlRTLmFpQ2hhdFNraWxsVXNlLCB7XG4gICAgICAgIHNraWxsX2lkOiBza2lsbC5pZCxcbiAgICAgICAgYWNjZXNzX3R5cGU6IHNraWxsLmFjY2Vzc190eXBlIHx8ICdvbmx5X21lJyxcbiAgICAgICAgc291cmNlOiAnY2FyZCcsXG4gICAgICAgIGlzX3NoYXJlZDogIWlzTWluZVRhYixcbiAgICAgIH0pXG4gICAgICBkb2N1bWVudC5kaXNwYXRjaEV2ZW50KFxuICAgICAgICBuZXcgQ3VzdG9tRXZlbnQoU0tJTExfVVNFX0FGVEVSX1NBVkVfRVZFTlQsIHtcbiAgICAgICAgICBkZXRhaWw6IHsgc2tpbGwsIHVzZUZpcnN0QWdlbnQ6IHRydWUgfSxcbiAgICAgICAgfSlcbiAgICAgIClcbiAgICAgIHNldE1lbnVPcGVuRm9yU2tpbGxJZChudWxsKVxuICAgIH0sXG4gICAgW2V2ZW50QW1wbGl0dWRlLCBpc01pbmVUYWJdXG4gIClcblxuICBjb25zdCBoYW5kbGVPcGVuU2tpbGwgPSB1c2VDYWxsYmFjayhcbiAgICAoc2tpbGw6IFNraWxsLCBpc1JlYWRPbmx5OiBib29sZWFuKSA9PiB7XG4gICAgICBvcGVuU2tpbGxNb2RhbCh7XG4gICAgICAgIGlzRWRpdGluZzogdHJ1ZSxcbiAgICAgICAgaXNSZWFkT25seSxcbiAgICAgICAgaXNTaGFyZWQ6ICFpc01pbmVUYWIsXG4gICAgICAgIGdlbmVyYWw6IHtcbiAgICAgICAgICBpZDogc2tpbGwuaWQsXG4gICAgICAgICAgbmFtZTogc2tpbGwubmFtZSxcbiAgICAgICAgICBkZXNjcmlwdGlvbjogc2tpbGwuZGVzY3JpcHRpb24sXG4gICAgICAgICAgY29udGVudDogc2tpbGwuY29udGVudCxcbiAgICAgICAgICBhY2Nlc3NfdHlwZTogc2tpbGwuYWNjZXNzX3R5cGUsXG4gICAgICAgICAgY3JlYXRlZF9ieV9uYW1lOiBza2lsbC5jcmVhdGVkX2J5X25hbWUsXG4gICAgICAgICAgY3JlYXRlZF9hdDogc2tpbGwuY3JlYXRlZF9hdCxcbiAgICAgICAgICB1cGRhdGVkX2F0OiBza2lsbC51cGRhdGVkX2F0LFxuICAgICAgICB9LFxuICAgICAgfSlcbiAgICAgIHNldE1lbnVPcGVuRm9yU2tpbGxJZChudWxsKVxuICAgIH0sXG4gICAgW2lzTWluZVRhYl1cbiAgKVxuXG4gIGNvbnN0IGRlbGV0ZU1vZGFsQ2hhdCA9IHVzZU1lbW8oXG4gICAgKCkgPT4gKHNraWxsVG9EZWxldGUgPyB7IHRpdGxlOiBza2lsbFRvRGVsZXRlLm5hbWUsIGlkOiBza2lsbFRvRGVsZXRlLmlkIH0gOiBudWxsKSxcbiAgICBbc2tpbGxUb0RlbGV0ZV1cbiAgKVxuXG4gIGNvbnN0IGhhbmRsZUNvbmZpcm1EZWxldGUgPSBhc3luYyAoY2hhdDogeyBpZDogc3RyaW5nIH0pID0+IHtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgZGVsZXRlU2tpbGwoY2hhdC5pZClcbiAgICAgIGV2ZW50QW1wbGl0dWRlKEVWRU5UUy5haUNoYXRTa2lsbEFibURlbGV0ZSwgeyBza2lsbF9pZDogY2hhdC5pZCwgc291cmNlOiAnY2F0YWxvZycgfSlcbiAgICAgIGhhbmRsZVNuYWNrYmFyU3VjY2Vzcyh0KCdteVNraWxscy5kZWxldGVTdWNjZXNzJykpXG4gICAgICBvbkRlbGV0ZVNraWxsPy4oY2hhdC5pZClcbiAgICAgIHNldFNraWxsVG9EZWxldGUobnVsbClcbiAgICAgIHNldE1lbnVPcGVuRm9yU2tpbGxJZChudWxsKVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBoYW5kbGVTbmFja2JhckVycm9yKHQoJ215U2tpbGxzLmRlbGV0ZUVycm9yJykpXG4gICAgfVxuICB9XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBoYW5kbGVDbGlja091dHNpZGUgPSAoKSA9PiB7XG4gICAgICBpZiAobWVudU9wZW5Gb3JTa2lsbElkKSB7XG4gICAgICAgIHNldE1lbnVPcGVuRm9yU2tpbGxJZChudWxsKVxuICAgICAgfVxuICAgIH1cblxuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgaGFuZGxlQ2xpY2tPdXRzaWRlKVxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdjbGljaycsIGhhbmRsZUNsaWNrT3V0c2lkZSlcbiAgICB9XG4gIH0sIFttZW51T3BlbkZvclNraWxsSWRdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFtZW51T3BlbkZvclNraWxsSWQpIHJldHVybiB1bmRlZmluZWRcblxuICAgIGNvbnN0IGhhbmRsZVJlcG9zaXRpb24gPSAoKSA9PiB7XG4gICAgICBjb25zdCBvcGVuQ2FyZCA9IGxpc3RTY3JvbGxSZWYuY3VycmVudD8ucXVlcnlTZWxlY3RvcjxIVE1MQnV0dG9uRWxlbWVudD4oXG4gICAgICAgIGBbZGF0YS1za2lsbC1jYXJkLWlkPVwiJHttZW51T3BlbkZvclNraWxsSWR9XCJdYFxuICAgICAgKVxuICAgICAgaWYgKG9wZW5DYXJkKSB7XG4gICAgICAgIHNldENhcmRNZW51UGxhY2VtZW50KHJlc29sdmVEcm9wZG93blBsYWNlbWVudChvcGVuQ2FyZCwgY2FyZE1lbnVIZWlnaHRQeCkpXG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3Qgc2Nyb2xsQ29udGFpbmVyID0gbGlzdFNjcm9sbFJlZi5jdXJyZW50XG4gICAgc2Nyb2xsQ29udGFpbmVyPy5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBoYW5kbGVSZXBvc2l0aW9uLCB7IHBhc3NpdmU6IHRydWUgfSlcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgaGFuZGxlUmVwb3NpdGlvbilcblxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBzY3JvbGxDb250YWluZXI/LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIGhhbmRsZVJlcG9zaXRpb24pXG4gICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigncmVzaXplJywgaGFuZGxlUmVwb3NpdGlvbilcbiAgICB9XG4gIH0sIFttZW51T3BlbkZvclNraWxsSWQsIGNhcmRNZW51SGVpZ2h0UHhdKVxuXG4gIGNvbnN0IHRhYkRlc2NyaXB0aW9uID0gaXNNaW5lVGFiID8gdCgnbXlTa2lsbHMubXlTa2lsbHNEZXNjcmlwdGlvbicpIDogdCgnbXlTa2lsbHMuc2hhcmVkU2tpbGxzRGVzY3JpcHRpb24nKVxuXG4gIGNvbnN0IGlzTWluZUVtcHR5ID0gaXNNaW5lVGFiICYmICFsb2FkaW5nICYmIG15U2tpbGxzLmxlbmd0aCA9PT0gMCAmJiAhc2VhcmNoUXVlcnlcbiAgY29uc3Qgc2hvd1NraWxsc1Rvb2xiYXIgPSBpc01pbmVUYWIgPyAhaXNNaW5lRW1wdHkgOiB0YWJTa2lsbHMubGVuZ3RoID4gMCB8fCAhIXNlYXJjaFF1ZXJ5XG5cbiAgY29uc3QgcmVuZGVyQ3JlYXRlU2tpbGxCdXR0b24gPSAoKSA9PiAoXG4gICAgPFNDTVNDcmVhdGVCdXR0b24gdHlwZT1cImJ1dHRvblwiIG9uQ2xpY2s9e2hhbmRsZUNyZWF0ZVNraWxsfT5cbiAgICAgIDxTQ01TQ3JlYXRlQnV0dG9uVGV4dD57dCgnbXlTa2lsbHMuY3JlYXRlU2tpbGwnKX08L1NDTVNDcmVhdGVCdXR0b25UZXh0PlxuICAgIDwvU0NNU0NyZWF0ZUJ1dHRvbj5cbiAgKVxuXG4gIGNvbnN0IHJlbmRlclNlYXJjaEVtcHR5U3RhdGUgPSAoKSA9PiAoXG4gICAgPFNDTVNTaGFyZWRFbXB0eVN0YXRlUm9vdD5cbiAgICAgIDxTQ01TU2hhcmVkRW1wdHlTdGF0ZVRpdGxlQmxvY2s+XG4gICAgICAgIDxTQ01TU2hhcmVkRW1wdHlTdGF0ZVRpdGxlPnt0KCdteVNraWxscy5zZWFyY2hFbXB0eVN0YXRlVGl0bGUnKX08L1NDTVNTaGFyZWRFbXB0eVN0YXRlVGl0bGU+XG4gICAgICAgIDxTQ01TU2hhcmVkRW1wdHlTdGF0ZVN1YnRpdGxlPnt0KCdteVNraWxscy5zZWFyY2hFbXB0eVN0YXRlRGVzY3JpcHRpb24nKX08L1NDTVNTaGFyZWRFbXB0eVN0YXRlU3VidGl0bGU+XG4gICAgICA8L1NDTVNTaGFyZWRFbXB0eVN0YXRlVGl0bGVCbG9jaz5cbiAgICA8L1NDTVNTaGFyZWRFbXB0eVN0YXRlUm9vdD5cbiAgKVxuXG4gIGNvbnN0IHJlbmRlckVtcHR5U3RhdGUgPSAoKSA9PiB7XG4gICAgaWYgKCFpc01pbmVUYWIpIHtcbiAgICAgIGlmIChzZWFyY2hRdWVyeSkge1xuICAgICAgICByZXR1cm4gcmVuZGVyU2VhcmNoRW1wdHlTdGF0ZSgpXG4gICAgICB9XG5cbiAgICAgIHJldHVybiAoXG4gICAgICAgIDxTQ01TU2hhcmVkRW1wdHlTdGF0ZVJvb3Q+XG4gICAgICAgICAgPFNDTVNTaGFyZWRFbXB0eVN0YXRlVGl0bGVCbG9jaz5cbiAgICAgICAgICAgIDxTQ01TU2hhcmVkRW1wdHlTdGF0ZVRpdGxlPnt0KCdteVNraWxscy5zaGFyZWRFbXB0eVN0YXRlVGl0bGUnKX08L1NDTVNTaGFyZWRFbXB0eVN0YXRlVGl0bGU+XG4gICAgICAgICAgICA8U0NNU1NoYXJlZEVtcHR5U3RhdGVTdWJ0aXRsZT57dCgnbXlTa2lsbHMuc2hhcmVkRW1wdHlTdGF0ZURlc2NyaXB0aW9uJyl9PC9TQ01TU2hhcmVkRW1wdHlTdGF0ZVN1YnRpdGxlPlxuICAgICAgICAgIDwvU0NNU1NoYXJlZEVtcHR5U3RhdGVUaXRsZUJsb2NrPlxuICAgICAgICA8L1NDTVNTaGFyZWRFbXB0eVN0YXRlUm9vdD5cbiAgICAgIClcbiAgICB9XG5cbiAgICBpZiAoc2VhcmNoUXVlcnkpIHtcbiAgICAgIHJldHVybiByZW5kZXJTZWFyY2hFbXB0eVN0YXRlKClcbiAgICB9XG5cbiAgICByZXR1cm4gKFxuICAgICAgPFNDTVNTaGFyZWRFbXB0eVN0YXRlUm9vdD5cbiAgICAgICAgPFNDTVNTaGFyZWRFbXB0eVN0YXRlVGl0bGVCbG9jaz5cbiAgICAgICAgICA8U0NNU1NoYXJlZEVtcHR5U3RhdGVUaXRsZT57dCgnbXlTa2lsbHMuZW1wdHlTdGF0ZVRpdGxlJyl9PC9TQ01TU2hhcmVkRW1wdHlTdGF0ZVRpdGxlPlxuICAgICAgICAgIDxTQ01TU2hhcmVkRW1wdHlTdGF0ZVN1YnRpdGxlPnt0KCdteVNraWxscy5lbXB0eVN0YXRlRGVzY3JpcHRpb24nKX08L1NDTVNTaGFyZWRFbXB0eVN0YXRlU3VidGl0bGU+XG4gICAgICAgIDwvU0NNU1NoYXJlZEVtcHR5U3RhdGVUaXRsZUJsb2NrPlxuICAgICAgICB7cmVuZGVyQ3JlYXRlU2tpbGxCdXR0b24oKX1cbiAgICAgIDwvU0NNU1NoYXJlZEVtcHR5U3RhdGVSb290PlxuICAgIClcbiAgfVxuXG4gIHJldHVybiAoXG4gICAgPFNDTVNDb250YWluZXI+XG4gICAgICA8U0NNU0JvZHk+XG4gICAgICAgIDxTQ01TVGl0bGVCbG9jaz5cbiAgICAgICAgICA8U0NNU1RpdGxlPnt0KCdteVNraWxscy50aXRsZScpfTwvU0NNU1RpdGxlPlxuICAgICAgICA8L1NDTVNUaXRsZUJsb2NrPlxuXG4gICAgICAgIDxTQ01TUGFuZWw+XG4gICAgICAgICAgPFNDTVNQYW5lbEhlYWRlcj5cbiAgICAgICAgICAgIDxTQ01TVGFiQmFyPlxuICAgICAgICAgICAgICA8U0NNU1RhYkJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgJGFjdGl2ZT17aXNNaW5lVGFifSBvbkNsaWNrPXsoKSA9PiBzZXRBY3RpdmVUYWIoJ21pbmUnKX0+XG4gICAgICAgICAgICAgICAge3QoJ215U2tpbGxzLnRhYk15U2tpbGxzJyl9XG4gICAgICAgICAgICAgIDwvU0NNU1RhYkJ1dHRvbj5cbiAgICAgICAgICAgICAgPFNDTVNUYWJCdXR0b24gdHlwZT1cImJ1dHRvblwiICRhY3RpdmU9eyFpc01pbmVUYWJ9IG9uQ2xpY2s9eygpID0+IHNldEFjdGl2ZVRhYignc2hhcmVkJyl9PlxuICAgICAgICAgICAgICAgIHt0KCdteVNraWxscy50YWJTaGFyZWRTa2lsbHMnKX1cbiAgICAgICAgICAgICAgPC9TQ01TVGFiQnV0dG9uPlxuICAgICAgICAgICAgICA8VG9vbHRpcCB0aXRsZT17dCgnbXlTa2lsbHMuaW5mb1Rvb2x0aXAnKX0gey4uLih0b29sdGlwWkluZGV4ICE9IG51bGwgPyB7IHpJbmRleDogdG9vbHRpcFpJbmRleCB9IDoge30pfT5cbiAgICAgICAgICAgICAgICA8U0NNU1RhYkluZm9JY29uIGFyaWEtbGFiZWw9e3QoJ215U2tpbGxzLmluZm9Ub29sdGlwJyl9PlxuICAgICAgICAgICAgICAgICAgPEluZm9ybWF0aW9uQ2lyY2xlIGNvbG9yPVwiIzgwODA4MFwiIHdpZHRoPXsyMH0gaGVpZ2h0PXsyMH0gLz5cbiAgICAgICAgICAgICAgICA8L1NDTVNUYWJJbmZvSWNvbj5cbiAgICAgICAgICAgICAgPC9Ub29sdGlwPlxuICAgICAgICAgICAgPC9TQ01TVGFiQmFyPlxuXG4gICAgICAgICAgICB7c2hvd1NraWxsc1Rvb2xiYXIgPyAoXG4gICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgPFNDTVNNZXRhUm93PlxuICAgICAgICAgICAgICAgICAgPFNDTVNNZXRhRGVzY3JpcHRpb24+e3RhYkRlc2NyaXB0aW9ufTwvU0NNU01ldGFEZXNjcmlwdGlvbj5cbiAgICAgICAgICAgICAgICAgIHtpc01pbmVUYWIgPyByZW5kZXJDcmVhdGVTa2lsbEJ1dHRvbigpIDogbnVsbH1cbiAgICAgICAgICAgICAgICA8L1NDTVNNZXRhUm93PlxuXG4gICAgICAgICAgICAgICAgPFNraWxsU2VhcmNoSW5wdXQgb25TZWFyY2g9e3NldFNlYXJjaFF1ZXJ5fSBwbGFjZWhvbGRlcj17dCgnbXlTa2lsbHMuc2VhcmNoUGxhY2Vob2xkZXInKX0gLz5cbiAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICA8L1NDTVNQYW5lbEhlYWRlcj5cblxuICAgICAgICAgIDxTQ01TTGlzdFNjcm9sbEFyZWEgcmVmPXtsaXN0U2Nyb2xsUmVmfT5cbiAgICAgICAgICAgIHtsb2FkaW5nID8gKFxuICAgICAgICAgICAgICA8U0NNU0xvYWRXcmFwcGVyPlxuICAgICAgICAgICAgICAgIDxMb2FkZXIgc2l6ZT1cInNtYWxsXCIgLz5cbiAgICAgICAgICAgICAgPC9TQ01TTG9hZFdyYXBwZXI+XG4gICAgICAgICAgICApIDogbnVsbH1cblxuICAgICAgICAgICAgeyFsb2FkaW5nICYmIGZpbHRlcmVkU2tpbGxzLmxlbmd0aCA/IChcbiAgICAgICAgICAgICAgPFNDTVNDYXJkc0xpc3Q+XG4gICAgICAgICAgICAgICAge2ZpbHRlcmVkU2tpbGxzLm1hcCgoc2tpbGwsIGluZGV4KSA9PiAoXG4gICAgICAgICAgICAgICAgICA8U0NNU0NhcmRCdXR0b25cbiAgICAgICAgICAgICAgICAgICAga2V5PXtza2lsbC5pZH1cbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgIGRhdGEtc2tpbGwtY2FyZC1pZD17c2tpbGwuaWR9XG4gICAgICAgICAgICAgICAgICAgICRpbmRleD17aW5kZXh9XG4gICAgICAgICAgICAgICAgICAgICRlbGV2YXRlZD17bWVudU9wZW5Gb3JTa2lsbElkID09PSBza2lsbC5pZH1cbiAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gaGFuZGxlT3BlblNraWxsKHNraWxsLCB0cnVlKX1cbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPFNDTVNDYXJkVG9wUm93PlxuICAgICAgICAgICAgICAgICAgICAgIDxTQ01TQ2FyZFRpdGxlTmFtZT57Zm9ybWF0U2tpbGxEaXNwbGF5TmFtZShza2lsbC5uYW1lKX08L1NDTVNDYXJkVGl0bGVOYW1lPlxuICAgICAgICAgICAgICAgICAgICAgIDxTQ01TS2ViYWJCdXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgJHZpc2libGU9e21lbnVPcGVuRm9yU2tpbGxJZCA9PT0gc2tpbGwuaWR9XG4gICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPXt0KCdteVNraWxscy5jYXJkTWVudUFyaWFMYWJlbCcpfVxuICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17ZXZlbnQgPT4gaGFuZGxlVG9nZ2xlQ2FyZE1lbnUoZXZlbnQsIHNraWxsLmlkKX1cbiAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8TWVudURvdHMgY29sb3I9XCIjODA4MDgwXCIgd2lkdGg9ezIwfSBoZWlnaHQ9ezIwfSAvPlxuICAgICAgICAgICAgICAgICAgICAgIDwvU0NNU0tlYmFiQnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8L1NDTVNDYXJkVG9wUm93PlxuICAgICAgICAgICAgICAgICAgICA8U0NNU0NhcmRDb250ZW50VGV4dD57c2tpbGwuZGVzY3JpcHRpb24gfHwgc2tpbGwuY29udGVudH08L1NDTVNDYXJkQ29udGVudFRleHQ+XG4gICAgICAgICAgICAgICAgICAgIDxTQ01TQ2FyZFZpc2liaWxpdHlSb3c+XG4gICAgICAgICAgICAgICAgICAgICAge2lzTWluZVRhYiA/IChcbiAgICAgICAgICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHtza2lsbC5hY2Nlc3NfdHlwZSA9PT0gJ2NvbXBhbnknID8gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTa2lsbFZpc2liaWxpdHlFdmVyeW9uZUljb24gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U2tpbGxWaXNpYmlsaXR5T25seU1lSWNvbiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgICA8U0NNU0NhcmRWaXNpYmlsaXR5VGV4dD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7c2tpbGwuYWNjZXNzX3R5cGUgPT09ICdjb21wYW55J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyB0KCdteVNraWxscy52aXNpYmlsaXR5RXZlcnlvbmUnKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB0KCdteVNraWxscy52aXNpYmlsaXR5T25seU1lJyl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvU0NNU0NhcmRWaXNpYmlsaXR5VGV4dD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvPlxuICAgICAgICAgICAgICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgICAgICAgICAgICAgIHshaXNNaW5lVGFiICYmIHNraWxsLmNyZWF0ZWRfYnlfbmFtZSA/IChcbiAgICAgICAgICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxTa2lsbENyZWF0ZWRCeUljb24gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPFNDTVNDYXJkVmlzaWJpbGl0eVRleHQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3QoJ215U2tpbGxzLnNoYXJlZENyZWF0ZWRCeScsIHsgbmFtZTogc2tpbGwuY3JlYXRlZF9ieV9uYW1lIH0pfVxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L1NDTVNDYXJkVmlzaWJpbGl0eVRleHQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8Lz5cbiAgICAgICAgICAgICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICAgICAgICAgICAgPC9TQ01TQ2FyZFZpc2liaWxpdHlSb3c+XG4gICAgICAgICAgICAgICAgICAgIHttZW51T3BlbkZvclNraWxsSWQgPT09IHNraWxsLmlkID8gKFxuICAgICAgICAgICAgICAgICAgICAgIDxTQ01TQ2FyZE1lbnVcbiAgICAgICAgICAgICAgICAgICAgICAgICRwbGFjZW1lbnQ9e2NhcmRNZW51UGxhY2VtZW50fVxuICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17ZXZlbnQgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXG4gICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxTQ01TQ2FyZE1lbnVJdGVtIHR5cGU9XCJidXR0b25cIiBvbkNsaWNrPXsoKSA9PiBoYW5kbGVVc2VTa2lsbChza2lsbCl9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICB7dCgnbXlTa2lsbHMudXNlU2tpbGwnKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvU0NNU0NhcmRNZW51SXRlbT5cbiAgICAgICAgICAgICAgICAgICAgICAgIHtpc01pbmVUYWIgPyAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPFNDTVNDYXJkTWVudUl0ZW0gdHlwZT1cImJ1dHRvblwiIG9uQ2xpY2s9eygpID0+IGhhbmRsZU9wZW5Ta2lsbChza2lsbCwgZmFsc2UpfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt0KCdteVNraWxscy5lZGl0Jyl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9TQ01TQ2FyZE1lbnVJdGVtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTQ01TQ2FyZE1lbnVJdGVtIHR5cGU9XCJidXR0b25cIiAkZGVzdHJ1Y3RpdmUgb25DbGljaz17KCkgPT4gc2V0U2tpbGxUb0RlbGV0ZShza2lsbCl9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3QoJ215U2tpbGxzLmRlbGV0ZScpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvU0NNU0NhcmRNZW51SXRlbT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICAgICAgICAgICAgICA8L1NDTVNDYXJkTWVudT5cbiAgICAgICAgICAgICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgICAgICAgICA8L1NDTVNDYXJkQnV0dG9uPlxuICAgICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgICA8L1NDTVNDYXJkc0xpc3Q+XG4gICAgICAgICAgICApIDogbnVsbH1cblxuICAgICAgICAgICAgeyFsb2FkaW5nICYmICFmaWx0ZXJlZFNraWxscy5sZW5ndGggPyByZW5kZXJFbXB0eVN0YXRlKCkgOiBudWxsfVxuICAgICAgICAgIDwvU0NNU0xpc3RTY3JvbGxBcmVhPlxuICAgICAgICA8L1NDTVNQYW5lbD5cbiAgICAgIDwvU0NNU0JvZHk+XG5cbiAgICAgIHtkZWxldGVNb2RhbENoYXQgPyAoXG4gICAgICAgIDxEZWxldGVRdWVzdGlvbk1vZGFsXG4gICAgICAgICAgb25DbG9zZT17KCkgPT4gc2V0U2tpbGxUb0RlbGV0ZShudWxsKX1cbiAgICAgICAgICBoYW5kbGVycz17e1xuICAgICAgICAgICAgaGFuZGxlQ29uZmlybUFjdGlvbjogaGFuZGxlQ29uZmlybURlbGV0ZSxcbiAgICAgICAgICB9fVxuICAgICAgICAgIGNoYXQ9e2RlbGV0ZU1vZGFsQ2hhdH1cbiAgICAgICAgICBhY3Rpb249XCJza2lsbFwiXG4gICAgICAgIC8+XG4gICAgICApIDogbnVsbH1cbiAgICA8L1NDTVNDb250YWluZXI+XG4gIClcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBLE9BQU9BLEtBQUssSUFBSUMsV0FBVyxFQUFFQyxTQUFTLEVBQUVDLE9BQU8sRUFBRUMsTUFBTSxFQUFFQyxRQUFRLFFBQVEsT0FBTztBQUNoRixTQUFTQyxRQUFRLFFBQVEsMkNBQTJDO0FBQ3BFLFNBQVNDLE1BQU0sUUFBUSx5Q0FBeUM7QUFDaEUsU0FBU0MsaUJBQWlCLFFBQVEsb0RBQW9EO0FBQ3RGLFNBQVNDLE9BQU8sUUFBUSw4Q0FBOEM7QUFDdEUsU0FBU0MsY0FBYyxRQUFRLGVBQWU7QUFFOUMsU0FBU0MsV0FBVyxRQUFRLDJDQUEyQztBQUN2RSxTQUFTQyxrQkFBa0IsUUFBUSxzREFBc0Q7QUFDekYsU0FBU0MsTUFBTSxFQUFFQyxRQUFRLFFBQVEseUJBQXlCO0FBQzFELFNBQVNDLHNCQUFzQixRQUFRLHVDQUF1QztBQUM5RSxTQUFTQyxtQkFBbUIsUUFBUSx5REFBeUQ7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
422
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsInVzZUNhbGxiYWNrIiwidXNlRWZmZWN0IiwidXNlTWVtbyIsInVzZVJlZiIsInVzZVN0YXRlIiwiTWVudURvdHMiLCJTZWFyY2giLCJJbmZvcm1hdGlvbkNpcmNsZSIsIlRvb2x0aXAiLCJ1c2VUcmFuc2xhdGlvbiIsImRlbGV0ZVNraWxsIiwidXNlU25hY2tCYXJNYW5hZ2VyIiwiRVZFTlRTIiwidXNlRXZlbnQiLCJ1c2VNYWlhVGFza1BhbmVsWkluZGV4IiwiRGVsZXRlUXVlc3Rpb25Nb2RhbCIsIlNLSUxMX1VTRV9BRlRFUl9TQVZFX0VWRU5UIiwiU0VDVElPTlMiLCJMb2FkZXIiLCJTa2lsbENyZWF0ZWRCeUljb24iLCJTa2lsbFZpc2liaWxpdHlFdmVyeW9uZUljb24iLCJTa2lsbFZpc2liaWxpdHlPbmx5TWVJY29uIiwiU0NNU0JvZHkiLCJTQ01TQ2FyZEJ1dHRvbiIsIlNDTVNDYXJkQ29udGVudFRleHQiLCJTQ01TQ2FyZE1lbnUiLCJTQ01TQ2FyZE1lbnVJdGVtIiwiU0NNU0NhcmRUaXRsZU5hbWUiLCJTQ01TQ2FyZFRvcFJvdyIsIlNDTVNDYXJkVmlzaWJpbGl0eVJvdyIsIlNDTVNDYXJkVmlzaWJpbGl0eVRleHQiLCJTQ01TQ2FyZHNMaXN0IiwiU0NNU0NvbnRhaW5lciIsIlNDTVNDcmVhdGVCdXR0b24iLCJTQ01TQ3JlYXRlQnV0dG9uVGV4dCIsIlNDTVNTaGFyZWRFbXB0eVN0YXRlUm9vdCIsIlNDTVNTaGFyZWRFbXB0eVN0YXRlU3VidGl0bGUiLCJTQ01TU2hhcmVkRW1wdHlTdGF0ZVRpdGxlIiwiU0NNU1NoYXJlZEVtcHR5U3RhdGVUaXRsZUJsb2NrIiwiU0NNU0tlYmFiQnV0dG9uIiwiU0NNU0xvYWRXcmFwcGVyIiwiU0NNU01ldGFEZXNjcmlwdGlvbiIsIlNDTVNNZXRhUm93IiwiU0NNU1BhbmVsIiwiU0NNU1BhbmVsSGVhZGVyIiwiU0NNU0xpc3RTY3JvbGxBcmVhIiwiU0NNU1NlYXJjaElucHV0IiwiU0NNU1NlYXJjaFdyYXBwZXIiLCJTQ01TVGFiQmFyIiwiU0NNU1RhYkJ1dHRvbiIsIlNDTVNUYWJJbmZvSWNvbiIsIlNDTVNUaXRsZSIsIlNDTVNUaXRsZUJsb2NrIiwiYnVpbGRTa2lsbERlbGV0ZU1vZGFsQ2hhdCIsImZpbHRlckFuZFNvcnRTa2lsbHMiLCJmb3JtYXRTa2lsbERpc3BsYXlOYW1lIiwicmVzb2x2ZURyb3Bkb3duUGxhY2VtZW50IiwicmVzb2x2ZVNraWxsQ3JlYXRlQW5hbHl0aWNzU291cmNlIiwicmVzb2x2ZVNraWxsc0NhcmRNZW51SGVpZ2h0UHgiLCJzaG91bGRTaG93U2tpbGxzVG9vbGJhciIsImpzeCIsIl9qc3giLCJqc3hzIiwiX2pzeHMiLCJGcmFnbWVudCIsIl9GcmFnbWVudCIsIm9wZW5Ta2lsbE1vZGFsIiwidmFsdWVzIiwiYW5hbHl0aWNzU291cmNlIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwidW5kZWZpbmVkIiwiZG9jdW1lbnQiLCJkaXNwYXRjaEV2ZW50IiwiQ3VzdG9tRXZlbnQiLCJkZXRhaWwiLCJza2lsbFZhbHVlcyIsImlzT3BlbiIsIlNraWxsU2VhcmNoSW5wdXQiLCJtZW1vIiwiX3JlZiIsIm9uU2VhcmNoIiwicGxhY2Vob2xkZXIiLCJfdXNlU3RhdGUiLCJfdXNlU3RhdGUyIiwiX3NsaWNlZFRvQXJyYXkiLCJ2YWx1ZSIsInNldFZhbHVlIiwiZGVib3VuY2VSZWYiLCJoYW5kbGVDaGFuZ2UiLCJldmVudCIsIm5leHRWYWx1ZSIsInRhcmdldCIsImN1cnJlbnQiLCJjbGVhclRpbWVvdXQiLCJzZXRUaW1lb3V0IiwidHJpbSIsImNoaWxkcmVuIiwid2lkdGgiLCJoZWlnaHQiLCJjb2xvciIsInR5cGUiLCJvbkNoYW5nZSIsIkNoYXRBSU15U2tpbGxzIiwiX3JlZjIiLCJteVNraWxscyIsInNoYXJlZFNraWxscyIsIl9yZWYyJGxvYWRpbmciLCJsb2FkaW5nIiwib25EZWxldGVTa2lsbCIsIl91c2VUcmFuc2xhdGlvbiIsImNoYXRBSSIsInQiLCJldmVudEFtcGxpdHVkZSIsIl91c2VTbmFja0Jhck1hbmFnZXIiLCJoYW5kbGVTbmFja2JhclN1Y2Nlc3MiLCJoYW5kbGVTbmFja2JhckVycm9yIiwidG9vbHRpcFpJbmRleCIsImxpc3RTY3JvbGxSZWYiLCJfdXNlU3RhdGUzIiwiX3VzZVN0YXRlNCIsImFjdGl2ZVRhYiIsInNldEFjdGl2ZVRhYiIsIl91c2VTdGF0ZTUiLCJfdXNlU3RhdGU2Iiwic2VhcmNoUXVlcnkiLCJzZXRTZWFyY2hRdWVyeSIsIl91c2VTdGF0ZTciLCJfdXNlU3RhdGU4IiwibWVudU9wZW5Gb3JTa2lsbElkIiwic2V0TWVudU9wZW5Gb3JTa2lsbElkIiwiX3VzZVN0YXRlOSIsIl91c2VTdGF0ZTAiLCJjYXJkTWVudVBsYWNlbWVudCIsInNldENhcmRNZW51UGxhY2VtZW50IiwiX3VzZVN0YXRlMSIsIl91c2VTdGF0ZTEwIiwic2tpbGxUb0RlbGV0ZSIsInNldFNraWxsVG9EZWxldGUiLCJpc01pbmVUYWIiLCJ0YWJTa2lsbHMiLCJmaWx0ZXJlZFNraWxscyIsImhhbmRsZUNyZWF0ZVNraWxsIiwiaXNFZGl0aW5nIiwiaW50ZW50IiwiY2FyZE1lbnVIZWlnaHRQeCIsImhhbmRsZVRvZ2dsZUNhcmRNZW51Iiwic2tpbGxJZCIsInByZXZlbnREZWZhdWx0Iiwic3RvcFByb3BhZ2F0aW9uIiwiY2FyZEFuY2hvciIsImN1cnJlbnRUYXJnZXQiLCJjbG9zZXN0IiwiSFRNTEVsZW1lbnQiLCJnZXRCb3VuZGluZ0NsaWVudFJlY3QiLCJwcmV2IiwiaGFuZGxlVXNlU2tpbGwiLCJza2lsbCIsImFpQ2hhdFNraWxsVXNlIiwic2tpbGxfaWQiLCJpZCIsImFjY2Vzc190eXBlIiwic291cmNlIiwiaXNfc2hhcmVkIiwidXNlRmlyc3RBZ2VudCIsImhhbmRsZU9wZW5Ta2lsbCIsImlzUmVhZE9ubHkiLCJpc1NoYXJlZCIsImdlbmVyYWwiLCJuYW1lIiwiZGVzY3JpcHRpb24iLCJjb250ZW50IiwiY3JlYXRlZF9ieV9uYW1lIiwiY3JlYXRlZF9hdCIsInVwZGF0ZWRfYXQiLCJkZWxldGVNb2RhbENoYXQiLCJoYW5kbGVDb25maXJtRGVsZXRlIiwiX3JlZjMiLCJfYXN5bmNUb0dlbmVyYXRvciIsIl9yZWdlbmVyYXRvclJ1bnRpbWUiLCJtYXJrIiwiX2NhbGxlZSIsImNoYXQiLCJfdCIsIndyYXAiLCJfY29udGV4dCIsIm5leHQiLCJhaUNoYXRTa2lsbEFibURlbGV0ZSIsInN0b3AiLCJfeCIsImFwcGx5IiwiaGFuZGxlQ2xpY2tPdXRzaWRlIiwiYWRkRXZlbnRMaXN0ZW5lciIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJoYW5kbGVSZXBvc2l0aW9uIiwiX2xpc3RTY3JvbGxSZWYkY3VycmVuIiwib3BlbkNhcmQiLCJxdWVyeVNlbGVjdG9yIiwiY29uY2F0Iiwic2Nyb2xsQ29udGFpbmVyIiwicGFzc2l2ZSIsIndpbmRvdyIsInRhYkRlc2NyaXB0aW9uIiwiaXNNaW5lRW1wdHkiLCJzaG93U2tpbGxzVG9vbGJhciIsInJlbmRlckNyZWF0ZVNraWxsQnV0dG9uIiwib25DbGljayIsInJlbmRlclNlYXJjaEVtcHR5U3RhdGUiLCJyZW5kZXJFbXB0eVN0YXRlIiwiJGFjdGl2ZSIsIl9vYmplY3RTcHJlYWQiLCJ0aXRsZSIsInpJbmRleCIsInJlZiIsInNpemUiLCJtYXAiLCJpbmRleCIsIiRpbmRleCIsIiRlbGV2YXRlZCIsIiR2aXNpYmxlIiwiJHBsYWNlbWVudCIsIiRkZXN0cnVjdGl2ZSIsIm9uQ2xvc2UiLCJoYW5kbGVycyIsImhhbmRsZUNvbmZpcm1BY3Rpb24iLCJhY3Rpb24iXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy9tb2xlY3VsZXMvQ2hhdEFJTXlTa2lsbHMvQ2hhdEFJTXlTa2lsbHMudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwgeyB1c2VDYWxsYmFjaywgdXNlRWZmZWN0LCB1c2VNZW1vLCB1c2VSZWYsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBNZW51RG90cyB9IGZyb20gJ0Bwcm9qZWN0Y29yL2ljb25zL2xpYi9jb21wb25lbnRzL01lbnVEb3RzJ1xuaW1wb3J0IHsgU2VhcmNoIH0gZnJvbSAnQHByb2plY3Rjb3IvaWNvbnMvbGliL2NvbXBvbmVudHMvU2VhcmNoJ1xuaW1wb3J0IHsgSW5mb3JtYXRpb25DaXJjbGUgfSBmcm9tICdAcHJvamVjdGNvci9pY29ucy9saWIvY29tcG9uZW50cy9JbmZvcm1hdGlvbkNpcmNsZSdcbmltcG9ydCB7IFRvb2x0aXAgfSBmcm9tICdAcHJvamVjdGNvci90b29sdGlwdjIvbGliL2NvbXBvbmVudHMvVG9vbHRpcCdcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSAncmVhY3QtaTE4bmV4dCdcbmltcG9ydCB7IFNraWxsIH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMvc2tpbGwnXG5pbXBvcnQgeyBkZWxldGVTa2lsbCB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL21haWEvU2tpbGxzL2RlbGV0ZVNraWxsJ1xuaW1wb3J0IHsgdXNlU25hY2tCYXJNYW5hZ2VyIH0gZnJvbSAnLi4vLi4vLi4vaG9va3MvdXNlU25hY2tCYXJNYW5hZ2VyL3VzZVNuYWNrQmFyTWFuYWdlcidcbmltcG9ydCB7IEVWRU5UUywgdXNlRXZlbnQgfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VFdmVudCdcbmltcG9ydCB7IHVzZU1haWFUYXNrUGFuZWxaSW5kZXggfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VNYWlhVGFza1BhbmVsWkluZGV4J1xuaW1wb3J0IHsgRGVsZXRlUXVlc3Rpb25Nb2RhbCB9IGZyb20gJy4uLy4uL29yZ2FuaXNtcy9EZWxldGVRdWVzdGlvbk1vZGFsL0RlbGV0ZVF1ZXN0aW9uTW9kYWwnXG5pbXBvcnQgeyBTS0lMTF9VU0VfQUZURVJfU0FWRV9FVkVOVCB9IGZyb20gJy4uLy4uL29yZ2FuaXNtcy9BYm1Ta2lsbE1vZGFsL0FibVNraWxsTW9kYWwnXG5pbXBvcnQgeyBTRUNUSU9OUyB9IGZyb20gJy4uLy4uLy4uL2NvbnN0YW50cy9jb25maWcnXG5pbXBvcnQgeyBMb2FkZXIgfSBmcm9tICcuLi8uLi9hdG9tcy9Mb2FkZXInXG5pbXBvcnQgeyBTa2lsbENyZWF0ZWRCeUljb24gfSBmcm9tICcuLi8uLi9hdG9tcy9pY29ucy9Ta2lsbENyZWF0ZWRCeUljb24nXG5pbXBvcnQgeyBTa2lsbFZpc2liaWxpdHlFdmVyeW9uZUljb24gfSBmcm9tICcuLi8uLi9hdG9tcy9pY29ucy9Ta2lsbFZpc2liaWxpdHlFdmVyeW9uZUljb24nXG5pbXBvcnQgeyBTa2lsbFZpc2liaWxpdHlPbmx5TWVJY29uIH0gZnJvbSAnLi4vLi4vYXRvbXMvaWNvbnMvU2tpbGxWaXNpYmlsaXR5T25seU1lSWNvbidcbmltcG9ydCB7XG4gIFNDTVNCb2R5LFxuICBTQ01TQ2FyZEJ1dHRvbixcbiAgU0NNU0NhcmRDb250ZW50VGV4dCxcbiAgU0NNU0NhcmRNZW51LFxuICBTQ01TQ2FyZE1lbnVJdGVtLFxuICBTQ01TQ2FyZFRpdGxlTmFtZSxcbiAgU0NNU0NhcmRUb3BSb3csXG4gIFNDTVNDYXJkVmlzaWJpbGl0eVJvdyxcbiAgU0NNU0NhcmRWaXNpYmlsaXR5VGV4dCxcbiAgU0NNU0NhcmRzTGlzdCxcbiAgU0NNU0NvbnRhaW5lcixcbiAgU0NNU0NyZWF0ZUJ1dHRvbixcbiAgU0NNU0NyZWF0ZUJ1dHRvblRleHQsXG4gIFNDTVNTaGFyZWRFbXB0eVN0YXRlUm9vdCxcbiAgU0NNU1NoYXJlZEVtcHR5U3RhdGVTdWJ0aXRsZSxcbiAgU0NNU1NoYXJlZEVtcHR5U3RhdGVUaXRsZSxcbiAgU0NNU1NoYXJlZEVtcHR5U3RhdGVUaXRsZUJsb2NrLFxuICBTQ01TS2ViYWJCdXR0b24sXG4gIFNDTVNMb2FkV3JhcHBlcixcbiAgU0NNU01ldGFEZXNjcmlwdGlvbixcbiAgU0NNU01ldGFSb3csXG4gIFNDTVNQYW5lbCxcbiAgU0NNU1BhbmVsSGVhZGVyLFxuICBTQ01TTGlzdFNjcm9sbEFyZWEsXG4gIFNDTVNTZWFyY2hJbnB1dCxcbiAgU0NNU1NlYXJjaFdyYXBwZXIsXG4gIFNDTVNUYWJCYXIsXG4gIFNDTVNUYWJCdXR0b24sXG4gIFNDTVNUYWJJbmZvSWNvbixcbiAgU0NNU1RpdGxlLFxuICBTQ01TVGl0bGVCbG9jayxcbn0gZnJvbSAnLi9DaGF0QUlNeVNraWxscy5zdHlsZXMnXG5pbXBvcnQge1xuICBidWlsZFNraWxsRGVsZXRlTW9kYWxDaGF0LFxuICBmaWx0ZXJBbmRTb3J0U2tpbGxzLFxuICBmb3JtYXRTa2lsbERpc3BsYXlOYW1lLFxuICByZXNvbHZlRHJvcGRvd25QbGFjZW1lbnQsXG4gIHJlc29sdmVTa2lsbENyZWF0ZUFuYWx5dGljc1NvdXJjZSxcbiAgcmVzb2x2ZVNraWxsc0NhcmRNZW51SGVpZ2h0UHgsXG4gIHNob3VsZFNob3dTa2lsbHNUb29sYmFyLFxufSBmcm9tICcuL0NoYXRBSU15U2tpbGxzLmhlbHBlcnMnXG5cbnR5cGUgQ2hhdEFJTXlTa2lsbHNQcm9wcyA9IHtcbiAgbXlTa2lsbHM6IFNraWxsW11cbiAgc2hhcmVkU2tpbGxzOiBTa2lsbFtdXG4gIGxvYWRpbmc/OiBib29sZWFuXG4gIG9uRGVsZXRlU2tpbGw/OiAoc2tpbGxJZDogc3RyaW5nKSA9PiB2b2lkXG59XG5cbnR5cGUgU2tpbGxzVGFiID0gJ21pbmUnIHwgJ3NoYXJlZCdcblxudHlwZSBTa2lsbE1vZGFsSW50ZW50ID0gJ2dlbmVyYXRlJyB8ICd3cml0ZSdcblxuY29uc3Qgb3BlblNraWxsTW9kYWwgPSAoXG4gIHZhbHVlczoge1xuICAgIGlzRWRpdGluZzogYm9vbGVhblxuICAgIGlzUmVhZE9ubHk/OiBib29sZWFuXG4gICAgaXNTaGFyZWQ/OiBib29sZWFuXG4gICAgaW50ZW50PzogU2tpbGxNb2RhbEludGVudFxuICAgIGdlbmVyYWw/OiB7XG4gICAgICBpZD86IHN0cmluZ1xuICAgICAgbmFtZT86IHN0cmluZ1xuICAgICAgZGVzY3JpcHRpb24/OiBzdHJpbmdcbiAgICAgIGNvbnRlbnQ/OiBzdHJpbmdcbiAgICAgIGFjY2Vzc190eXBlPzogU2tpbGxbJ2FjY2Vzc190eXBlJ11cbiAgICAgIGNyZWF0ZWRfYnlfbmFtZT86IHN0cmluZ1xuICAgICAgY3JlYXRlZF9hdD86IHN0cmluZ1xuICAgICAgdXBkYXRlZF9hdD86IHN0cmluZ1xuICAgIH1cbiAgfSxcbiAgYW5hbHl0aWNzU291cmNlOiAnY2F0YWxvZycgfCAnZW1wdHknID0gJ2NhdGFsb2cnXG4pID0+IHtcbiAgZG9jdW1lbnQuZGlzcGF0Y2hFdmVudChcbiAgICBuZXcgQ3VzdG9tRXZlbnQoJ2FibS1za2lsbC1tb2RhbC1zZXQtdmFsdWVzJywge1xuICAgICAgZGV0YWlsOiB7XG4gICAgICAgIHNraWxsVmFsdWVzOiB7XG4gICAgICAgICAgdmFsdWVzLFxuICAgICAgICAgIGlzT3BlbjogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgYW5hbHl0aWNzU291cmNlLFxuICAgICAgfSxcbiAgICB9KVxuICApXG59XG5cbmNvbnN0IFNraWxsU2VhcmNoSW5wdXQgPSBSZWFjdC5tZW1vKFxuICAoeyBvblNlYXJjaCwgcGxhY2Vob2xkZXIgfTogeyBvblNlYXJjaDogKHF1ZXJ5OiBzdHJpbmcpID0+IHZvaWQ7IHBsYWNlaG9sZGVyOiBzdHJpbmcgfSkgPT4ge1xuICAgIGNvbnN0IFt2YWx1ZSwgc2V0VmFsdWVdID0gdXNlU3RhdGUoJycpXG4gICAgY29uc3QgZGVib3VuY2VSZWYgPSB1c2VSZWY8UmV0dXJuVHlwZTx0eXBlb2Ygc2V0VGltZW91dD4gfCBudWxsPihudWxsKVxuXG4gICAgY29uc3QgaGFuZGxlQ2hhbmdlID0gdXNlQ2FsbGJhY2soXG4gICAgICAoZXZlbnQ6IFJlYWN0LkNoYW5nZUV2ZW50PEhUTUxJbnB1dEVsZW1lbnQ+KSA9PiB7XG4gICAgICAgIGNvbnN0IG5leHRWYWx1ZSA9IGV2ZW50LnRhcmdldC52YWx1ZVxuICAgICAgICBzZXRWYWx1ZShuZXh0VmFsdWUpXG4gICAgICAgIGlmIChkZWJvdW5jZVJlZi5jdXJyZW50KSBjbGVhclRpbWVvdXQoZGVib3VuY2VSZWYuY3VycmVudClcbiAgICAgICAgZGVib3VuY2VSZWYuY3VycmVudCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIG9uU2VhcmNoKG5leHRWYWx1ZS50cmltKCkpXG4gICAgICAgIH0sIDI1MClcbiAgICAgIH0sXG4gICAgICBbb25TZWFyY2hdXG4gICAgKVxuXG4gICAgdXNlRWZmZWN0KFxuICAgICAgKCkgPT4gKCkgPT4ge1xuICAgICAgICBpZiAoZGVib3VuY2VSZWYuY3VycmVudCkgY2xlYXJUaW1lb3V0KGRlYm91bmNlUmVmLmN1cnJlbnQpXG4gICAgICB9LFxuICAgICAgW11cbiAgICApXG5cbiAgICByZXR1cm4gKFxuICAgICAgPFNDTVNTZWFyY2hXcmFwcGVyPlxuICAgICAgICA8U2VhcmNoIHdpZHRoPXsxNn0gaGVpZ2h0PXsxNn0gY29sb3I9XCIjOTk5XCIgLz5cbiAgICAgICAgPFNDTVNTZWFyY2hJbnB1dCB0eXBlPVwidGV4dFwiIHZhbHVlPXt2YWx1ZX0gb25DaGFuZ2U9e2hhbmRsZUNoYW5nZX0gcGxhY2Vob2xkZXI9e3BsYWNlaG9sZGVyfSAvPlxuICAgICAgPC9TQ01TU2VhcmNoV3JhcHBlcj5cbiAgICApXG4gIH1cbilcblxuZXhwb3J0IGNvbnN0IENoYXRBSU15U2tpbGxzID0gKHsgbXlTa2lsbHMsIHNoYXJlZFNraWxscywgbG9hZGluZyA9IGZhbHNlLCBvbkRlbGV0ZVNraWxsIH06IENoYXRBSU15U2tpbGxzUHJvcHMpID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbihbU0VDVElPTlMuY2hhdEFJXSlcbiAgY29uc3QgZXZlbnRBbXBsaXR1ZGUgPSB1c2VFdmVudCgpXG4gIGNvbnN0IHsgaGFuZGxlU25hY2tiYXJTdWNjZXNzLCBoYW5kbGVTbmFja2JhckVycm9yIH0gPSB1c2VTbmFja0Jhck1hbmFnZXIoKVxuICBjb25zdCB0b29sdGlwWkluZGV4ID0gdXNlTWFpYVRhc2tQYW5lbFpJbmRleCgxNTAwLCAnb3ZlcmxheScpXG4gIGNvbnN0IGxpc3RTY3JvbGxSZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpXG4gIGNvbnN0IFthY3RpdmVUYWIsIHNldEFjdGl2ZVRhYl0gPSB1c2VTdGF0ZTxTa2lsbHNUYWI+KCdtaW5lJylcbiAgY29uc3QgW3NlYXJjaFF1ZXJ5LCBzZXRTZWFyY2hRdWVyeV0gPSB1c2VTdGF0ZSgnJylcbiAgY29uc3QgW21lbnVPcGVuRm9yU2tpbGxJZCwgc2V0TWVudU9wZW5Gb3JTa2lsbElkXSA9IHVzZVN0YXRlPHN0cmluZyB8IG51bGw+KG51bGwpXG4gIGNvbnN0IFtjYXJkTWVudVBsYWNlbWVudCwgc2V0Q2FyZE1lbnVQbGFjZW1lbnRdID0gdXNlU3RhdGU8J3RvcCcgfCAnYm90dG9tJz4oJ2JvdHRvbScpXG4gIGNvbnN0IFtza2lsbFRvRGVsZXRlLCBzZXRTa2lsbFRvRGVsZXRlXSA9IHVzZVN0YXRlPFNraWxsIHwgbnVsbD4obnVsbClcbiAgY29uc3QgaXNNaW5lVGFiID0gYWN0aXZlVGFiID09PSAnbWluZSdcblxuICBjb25zdCB0YWJTa2lsbHMgPSBpc01pbmVUYWIgPyBteVNraWxscyA6IHNoYXJlZFNraWxsc1xuXG4gIGNvbnN0IGZpbHRlcmVkU2tpbGxzID0gdXNlTWVtbygoKSA9PiBmaWx0ZXJBbmRTb3J0U2tpbGxzKHRhYlNraWxscywgc2VhcmNoUXVlcnkpLCBbc2VhcmNoUXVlcnksIHRhYlNraWxsc10pXG5cbiAgY29uc3QgaGFuZGxlQ3JlYXRlU2tpbGwgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgb3BlblNraWxsTW9kYWwoXG4gICAgICB7IGlzRWRpdGluZzogZmFsc2UsIGludGVudDogJ3dyaXRlJyB9LFxuICAgICAgcmVzb2x2ZVNraWxsQ3JlYXRlQW5hbHl0aWNzU291cmNlKGFjdGl2ZVRhYiwgbG9hZGluZywgbXlTa2lsbHMubGVuZ3RoLCBzZWFyY2hRdWVyeSlcbiAgICApXG4gIH0sIFthY3RpdmVUYWIsIGxvYWRpbmcsIG15U2tpbGxzLmxlbmd0aCwgc2VhcmNoUXVlcnldKVxuXG4gIGNvbnN0IGNhcmRNZW51SGVpZ2h0UHggPSByZXNvbHZlU2tpbGxzQ2FyZE1lbnVIZWlnaHRQeChpc01pbmVUYWIpXG5cbiAgY29uc3QgaGFuZGxlVG9nZ2xlQ2FyZE1lbnUgPSB1c2VDYWxsYmFjayhcbiAgICAoZXZlbnQ6IFJlYWN0Lk1vdXNlRXZlbnQ8SFRNTEJ1dHRvbkVsZW1lbnQ+LCBza2lsbElkOiBzdHJpbmcpID0+IHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXG4gICAgICBjb25zdCBjYXJkQW5jaG9yID0gZXZlbnQuY3VycmVudFRhcmdldC5jbG9zZXN0KCdbZGF0YS1za2lsbC1jYXJkLWlkXScpXG4gICAgICBpZiAoY2FyZEFuY2hvciBpbnN0YW5jZW9mIEhUTUxFbGVtZW50KSB7XG4gICAgICAgIHNldENhcmRNZW51UGxhY2VtZW50KHJlc29sdmVEcm9wZG93blBsYWNlbWVudChjYXJkQW5jaG9yLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLCBjYXJkTWVudUhlaWdodFB4KSlcbiAgICAgIH1cbiAgICAgIHNldE1lbnVPcGVuRm9yU2tpbGxJZChwcmV2ID0+IChwcmV2ID09PSBza2lsbElkID8gbnVsbCA6IHNraWxsSWQpKVxuICAgIH0sXG4gICAgW2NhcmRNZW51SGVpZ2h0UHhdXG4gIClcblxuICAvKiogTWlzbW8gZmx1am8gcXVlIGVsIGJvdMOzbiBcIlVzYXIgc2tpbGxcIiBkZWwgbW9kYWw6IGNoYXQgbnVldm8gY29uIGVsIHByaW1lciBhZ2VudGUgeSBsYSBtZW5jacOzbiBwdWVzdGEuICovXG4gIGNvbnN0IGhhbmRsZVVzZVNraWxsID0gdXNlQ2FsbGJhY2soXG4gICAgKHNraWxsOiBTa2lsbCkgPT4ge1xuICAgICAgZXZlbnRBbXBsaXR1ZGUoRVZFTlRTLmFpQ2hhdFNraWxsVXNlLCB7XG4gICAgICAgIHNraWxsX2lkOiBza2lsbC5pZCxcbiAgICAgICAgYWNjZXNzX3R5cGU6IHNraWxsLmFjY2Vzc190eXBlIHx8ICdvbmx5X21lJyxcbiAgICAgICAgc291cmNlOiAnY2FyZCcsXG4gICAgICAgIGlzX3NoYXJlZDogIWlzTWluZVRhYixcbiAgICAgIH0pXG4gICAgICBkb2N1bWVudC5kaXNwYXRjaEV2ZW50KFxuICAgICAgICBuZXcgQ3VzdG9tRXZlbnQoU0tJTExfVVNFX0FGVEVSX1NBVkVfRVZFTlQsIHtcbiAgICAgICAgICBkZXRhaWw6IHsgc2tpbGwsIHVzZUZpcnN0QWdlbnQ6IHRydWUgfSxcbiAgICAgICAgfSlcbiAgICAgIClcbiAgICAgIHNldE1lbnVPcGVuRm9yU2tpbGxJZChudWxsKVxuICAgIH0sXG4gICAgW2V2ZW50QW1wbGl0dWRlLCBpc01pbmVUYWJdXG4gIClcblxuICBjb25zdCBoYW5kbGVPcGVuU2tpbGwgPSB1c2VDYWxsYmFjayhcbiAgICAoc2tpbGw6IFNraWxsLCBpc1JlYWRPbmx5OiBib29sZWFuKSA9PiB7XG4gICAgICBvcGVuU2tpbGxNb2RhbCh7XG4gICAgICAgIGlzRWRpdGluZzogdHJ1ZSxcbiAgICAgICAgaXNSZWFkT25seSxcbiAgICAgICAgaXNTaGFyZWQ6ICFpc01pbmVUYWIsXG4gICAgICAgIGdlbmVyYWw6IHtcbiAgICAgICAgICBpZDogc2tpbGwuaWQsXG4gICAgICAgICAgbmFtZTogc2tpbGwubmFtZSxcbiAgICAgICAgICBkZXNjcmlwdGlvbjogc2tpbGwuZGVzY3JpcHRpb24sXG4gICAgICAgICAgY29udGVudDogc2tpbGwuY29udGVudCxcbiAgICAgICAgICBhY2Nlc3NfdHlwZTogc2tpbGwuYWNjZXNzX3R5cGUsXG4gICAgICAgICAgY3JlYXRlZF9ieV9uYW1lOiBza2lsbC5jcmVhdGVkX2J5X25hbWUsXG4gICAgICAgICAgY3JlYXRlZF9hdDogc2tpbGwuY3JlYXRlZF9hdCxcbiAgICAgICAgICB1cGRhdGVkX2F0OiBza2lsbC51cGRhdGVkX2F0LFxuICAgICAgICB9LFxuICAgICAgfSlcbiAgICAgIHNldE1lbnVPcGVuRm9yU2tpbGxJZChudWxsKVxuICAgIH0sXG4gICAgW2lzTWluZVRhYl1cbiAgKVxuXG4gIGNvbnN0IGRlbGV0ZU1vZGFsQ2hhdCA9IHVzZU1lbW8oKCkgPT4gYnVpbGRTa2lsbERlbGV0ZU1vZGFsQ2hhdChza2lsbFRvRGVsZXRlKSwgW3NraWxsVG9EZWxldGVdKVxuXG4gIGNvbnN0IGhhbmRsZUNvbmZpcm1EZWxldGUgPSBhc3luYyAoY2hhdDogeyBpZDogc3RyaW5nIH0pID0+IHtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgZGVsZXRlU2tpbGwoY2hhdC5pZClcbiAgICAgIGV2ZW50QW1wbGl0dWRlKEVWRU5UUy5haUNoYXRTa2lsbEFibURlbGV0ZSwgeyBza2lsbF9pZDogY2hhdC5pZCwgc291cmNlOiAnY2F0YWxvZycgfSlcbiAgICAgIGhhbmRsZVNuYWNrYmFyU3VjY2Vzcyh0KCdteVNraWxscy5kZWxldGVTdWNjZXNzJykpXG4gICAgICBvbkRlbGV0ZVNraWxsPy4oY2hhdC5pZClcbiAgICAgIHNldFNraWxsVG9EZWxldGUobnVsbClcbiAgICAgIHNldE1lbnVPcGVuRm9yU2tpbGxJZChudWxsKVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBoYW5kbGVTbmFja2JhckVycm9yKHQoJ215U2tpbGxzLmRlbGV0ZUVycm9yJykpXG4gICAgfVxuICB9XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBoYW5kbGVDbGlja091dHNpZGUgPSAoKSA9PiB7XG4gICAgICBpZiAobWVudU9wZW5Gb3JTa2lsbElkKSB7XG4gICAgICAgIHNldE1lbnVPcGVuRm9yU2tpbGxJZChudWxsKVxuICAgICAgfVxuICAgIH1cblxuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgaGFuZGxlQ2xpY2tPdXRzaWRlKVxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdjbGljaycsIGhhbmRsZUNsaWNrT3V0c2lkZSlcbiAgICB9XG4gIH0sIFttZW51T3BlbkZvclNraWxsSWRdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFtZW51T3BlbkZvclNraWxsSWQpIHJldHVybiB1bmRlZmluZWRcblxuICAgIGNvbnN0IGhhbmRsZVJlcG9zaXRpb24gPSAoKSA9PiB7XG4gICAgICBjb25zdCBvcGVuQ2FyZCA9IGxpc3RTY3JvbGxSZWYuY3VycmVudD8ucXVlcnlTZWxlY3RvcjxIVE1MQnV0dG9uRWxlbWVudD4oXG4gICAgICAgIGBbZGF0YS1za2lsbC1jYXJkLWlkPVwiJHttZW51T3BlbkZvclNraWxsSWR9XCJdYFxuICAgICAgKVxuICAgICAgaWYgKG9wZW5DYXJkKSB7XG4gICAgICAgIHNldENhcmRNZW51UGxhY2VtZW50KHJlc29sdmVEcm9wZG93blBsYWNlbWVudChvcGVuQ2FyZC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSwgY2FyZE1lbnVIZWlnaHRQeCkpXG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3Qgc2Nyb2xsQ29udGFpbmVyID0gbGlzdFNjcm9sbFJlZi5jdXJyZW50XG4gICAgc2Nyb2xsQ29udGFpbmVyPy5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBoYW5kbGVSZXBvc2l0aW9uLCB7IHBhc3NpdmU6IHRydWUgfSlcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgaGFuZGxlUmVwb3NpdGlvbilcblxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBzY3JvbGxDb250YWluZXI/LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIGhhbmRsZVJlcG9zaXRpb24pXG4gICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigncmVzaXplJywgaGFuZGxlUmVwb3NpdGlvbilcbiAgICB9XG4gIH0sIFttZW51T3BlbkZvclNraWxsSWQsIGNhcmRNZW51SGVpZ2h0UHhdKVxuXG4gIGNvbnN0IHRhYkRlc2NyaXB0aW9uID0gaXNNaW5lVGFiID8gdCgnbXlTa2lsbHMubXlTa2lsbHNEZXNjcmlwdGlvbicpIDogdCgnbXlTa2lsbHMuc2hhcmVkU2tpbGxzRGVzY3JpcHRpb24nKVxuXG4gIGNvbnN0IGlzTWluZUVtcHR5ID0gaXNNaW5lVGFiICYmICFsb2FkaW5nICYmIG15U2tpbGxzLmxlbmd0aCA9PT0gMCAmJiAhc2VhcmNoUXVlcnlcbiAgY29uc3Qgc2hvd1NraWxsc1Rvb2xiYXIgPSBzaG91bGRTaG93U2tpbGxzVG9vbGJhcihpc01pbmVUYWIsIGlzTWluZUVtcHR5LCB0YWJTa2lsbHMubGVuZ3RoLCBzZWFyY2hRdWVyeSlcblxuICBjb25zdCByZW5kZXJDcmVhdGVTa2lsbEJ1dHRvbiA9ICgpID0+IChcbiAgICA8U0NNU0NyZWF0ZUJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgb25DbGljaz17aGFuZGxlQ3JlYXRlU2tpbGx9PlxuICAgICAgPFNDTVNDcmVhdGVCdXR0b25UZXh0Pnt0KCdteVNraWxscy5jcmVhdGVTa2lsbCcpfTwvU0NNU0NyZWF0ZUJ1dHRvblRleHQ+XG4gICAgPC9TQ01TQ3JlYXRlQnV0dG9uPlxuICApXG5cbiAgY29uc3QgcmVuZGVyU2VhcmNoRW1wdHlTdGF0ZSA9ICgpID0+IChcbiAgICA8U0NNU1NoYXJlZEVtcHR5U3RhdGVSb290PlxuICAgICAgPFNDTVNTaGFyZWRFbXB0eVN0YXRlVGl0bGVCbG9jaz5cbiAgICAgICAgPFNDTVNTaGFyZWRFbXB0eVN0YXRlVGl0bGU+e3QoJ215U2tpbGxzLnNlYXJjaEVtcHR5U3RhdGVUaXRsZScpfTwvU0NNU1NoYXJlZEVtcHR5U3RhdGVUaXRsZT5cbiAgICAgICAgPFNDTVNTaGFyZWRFbXB0eVN0YXRlU3VidGl0bGU+e3QoJ215U2tpbGxzLnNlYXJjaEVtcHR5U3RhdGVEZXNjcmlwdGlvbicpfTwvU0NNU1NoYXJlZEVtcHR5U3RhdGVTdWJ0aXRsZT5cbiAgICAgIDwvU0NNU1NoYXJlZEVtcHR5U3RhdGVUaXRsZUJsb2NrPlxuICAgIDwvU0NNU1NoYXJlZEVtcHR5U3RhdGVSb290PlxuICApXG5cbiAgY29uc3QgcmVuZGVyRW1wdHlTdGF0ZSA9ICgpID0+IHtcbiAgICBpZiAoIWlzTWluZVRhYikge1xuICAgICAgaWYgKHNlYXJjaFF1ZXJ5KSB7XG4gICAgICAgIHJldHVybiByZW5kZXJTZWFyY2hFbXB0eVN0YXRlKClcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIChcbiAgICAgICAgPFNDTVNTaGFyZWRFbXB0eVN0YXRlUm9vdD5cbiAgICAgICAgICA8U0NNU1NoYXJlZEVtcHR5U3RhdGVUaXRsZUJsb2NrPlxuICAgICAgICAgICAgPFNDTVNTaGFyZWRFbXB0eVN0YXRlVGl0bGU+e3QoJ215U2tpbGxzLnNoYXJlZEVtcHR5U3RhdGVUaXRsZScpfTwvU0NNU1NoYXJlZEVtcHR5U3RhdGVUaXRsZT5cbiAgICAgICAgICAgIDxTQ01TU2hhcmVkRW1wdHlTdGF0ZVN1YnRpdGxlPnt0KCdteVNraWxscy5zaGFyZWRFbXB0eVN0YXRlRGVzY3JpcHRpb24nKX08L1NDTVNTaGFyZWRFbXB0eVN0YXRlU3VidGl0bGU+XG4gICAgICAgICAgPC9TQ01TU2hhcmVkRW1wdHlTdGF0ZVRpdGxlQmxvY2s+XG4gICAgICAgIDwvU0NNU1NoYXJlZEVtcHR5U3RhdGVSb290PlxuICAgICAgKVxuICAgIH1cblxuICAgIGlmIChzZWFyY2hRdWVyeSkge1xuICAgICAgcmV0dXJuIHJlbmRlclNlYXJjaEVtcHR5U3RhdGUoKVxuICAgIH1cblxuICAgIHJldHVybiAoXG4gICAgICA8U0NNU1NoYXJlZEVtcHR5U3RhdGVSb290PlxuICAgICAgICA8U0NNU1NoYXJlZEVtcHR5U3RhdGVUaXRsZUJsb2NrPlxuICAgICAgICAgIDxTQ01TU2hhcmVkRW1wdHlTdGF0ZVRpdGxlPnt0KCdteVNraWxscy5lbXB0eVN0YXRlVGl0bGUnKX08L1NDTVNTaGFyZWRFbXB0eVN0YXRlVGl0bGU+XG4gICAgICAgICAgPFNDTVNTaGFyZWRFbXB0eVN0YXRlU3VidGl0bGU+e3QoJ215U2tpbGxzLmVtcHR5U3RhdGVEZXNjcmlwdGlvbicpfTwvU0NNU1NoYXJlZEVtcHR5U3RhdGVTdWJ0aXRsZT5cbiAgICAgICAgPC9TQ01TU2hhcmVkRW1wdHlTdGF0ZVRpdGxlQmxvY2s+XG4gICAgICAgIHtyZW5kZXJDcmVhdGVTa2lsbEJ1dHRvbigpfVxuICAgICAgPC9TQ01TU2hhcmVkRW1wdHlTdGF0ZVJvb3Q+XG4gICAgKVxuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8U0NNU0NvbnRhaW5lcj5cbiAgICAgIDxTQ01TQm9keT5cbiAgICAgICAgPFNDTVNUaXRsZUJsb2NrPlxuICAgICAgICAgIDxTQ01TVGl0bGU+e3QoJ215U2tpbGxzLnRpdGxlJyl9PC9TQ01TVGl0bGU+XG4gICAgICAgIDwvU0NNU1RpdGxlQmxvY2s+XG5cbiAgICAgICAgPFNDTVNQYW5lbD5cbiAgICAgICAgICA8U0NNU1BhbmVsSGVhZGVyPlxuICAgICAgICAgICAgPFNDTVNUYWJCYXI+XG4gICAgICAgICAgICAgIDxTQ01TVGFiQnV0dG9uIHR5cGU9XCJidXR0b25cIiAkYWN0aXZlPXtpc01pbmVUYWJ9IG9uQ2xpY2s9eygpID0+IHNldEFjdGl2ZVRhYignbWluZScpfT5cbiAgICAgICAgICAgICAgICB7dCgnbXlTa2lsbHMudGFiTXlTa2lsbHMnKX1cbiAgICAgICAgICAgICAgPC9TQ01TVGFiQnV0dG9uPlxuICAgICAgICAgICAgICA8U0NNU1RhYkJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgJGFjdGl2ZT17IWlzTWluZVRhYn0gb25DbGljaz17KCkgPT4gc2V0QWN0aXZlVGFiKCdzaGFyZWQnKX0+XG4gICAgICAgICAgICAgICAge3QoJ215U2tpbGxzLnRhYlNoYXJlZFNraWxscycpfVxuICAgICAgICAgICAgICA8L1NDTVNUYWJCdXR0b24+XG4gICAgICAgICAgICAgIDxUb29sdGlwIHRpdGxlPXt0KCdteVNraWxscy5pbmZvVG9vbHRpcCcpfSB7Li4uKHRvb2x0aXBaSW5kZXggIT0gbnVsbCA/IHsgekluZGV4OiB0b29sdGlwWkluZGV4IH0gOiB7fSl9PlxuICAgICAgICAgICAgICAgIDxTQ01TVGFiSW5mb0ljb24gYXJpYS1sYWJlbD17dCgnbXlTa2lsbHMuaW5mb1Rvb2x0aXAnKX0+XG4gICAgICAgICAgICAgICAgICA8SW5mb3JtYXRpb25DaXJjbGUgY29sb3I9XCIjODA4MDgwXCIgd2lkdGg9ezIwfSBoZWlnaHQ9ezIwfSAvPlxuICAgICAgICAgICAgICAgIDwvU0NNU1RhYkluZm9JY29uPlxuICAgICAgICAgICAgICA8L1Rvb2x0aXA+XG4gICAgICAgICAgICA8L1NDTVNUYWJCYXI+XG5cbiAgICAgICAgICAgIHtzaG93U2tpbGxzVG9vbGJhciA/IChcbiAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICA8U0NNU01ldGFSb3c+XG4gICAgICAgICAgICAgICAgICA8U0NNU01ldGFEZXNjcmlwdGlvbj57dGFiRGVzY3JpcHRpb259PC9TQ01TTWV0YURlc2NyaXB0aW9uPlxuICAgICAgICAgICAgICAgICAge2lzTWluZVRhYiA/IHJlbmRlckNyZWF0ZVNraWxsQnV0dG9uKCkgOiBudWxsfVxuICAgICAgICAgICAgICAgIDwvU0NNU01ldGFSb3c+XG5cbiAgICAgICAgICAgICAgICA8U2tpbGxTZWFyY2hJbnB1dCBvblNlYXJjaD17c2V0U2VhcmNoUXVlcnl9IHBsYWNlaG9sZGVyPXt0KCdteVNraWxscy5zZWFyY2hQbGFjZWhvbGRlcicpfSAvPlxuICAgICAgICAgICAgICA8Lz5cbiAgICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgIDwvU0NNU1BhbmVsSGVhZGVyPlxuXG4gICAgICAgICAgPFNDTVNMaXN0U2Nyb2xsQXJlYSByZWY9e2xpc3RTY3JvbGxSZWZ9PlxuICAgICAgICAgICAge2xvYWRpbmcgPyAoXG4gICAgICAgICAgICAgIDxTQ01TTG9hZFdyYXBwZXI+XG4gICAgICAgICAgICAgICAgPExvYWRlciBzaXplPVwic21hbGxcIiAvPlxuICAgICAgICAgICAgICA8L1NDTVNMb2FkV3JhcHBlcj5cbiAgICAgICAgICAgICkgOiBudWxsfVxuXG4gICAgICAgICAgICB7IWxvYWRpbmcgJiYgZmlsdGVyZWRTa2lsbHMubGVuZ3RoID8gKFxuICAgICAgICAgICAgICA8U0NNU0NhcmRzTGlzdD5cbiAgICAgICAgICAgICAgICB7ZmlsdGVyZWRTa2lsbHMubWFwKChza2lsbCwgaW5kZXgpID0+IChcbiAgICAgICAgICAgICAgICAgIDxTQ01TQ2FyZEJ1dHRvblxuICAgICAgICAgICAgICAgICAgICBrZXk9e3NraWxsLmlkfVxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgZGF0YS1za2lsbC1jYXJkLWlkPXtza2lsbC5pZH1cbiAgICAgICAgICAgICAgICAgICAgJGluZGV4PXtpbmRleH1cbiAgICAgICAgICAgICAgICAgICAgJGVsZXZhdGVkPXttZW51T3BlbkZvclNraWxsSWQgPT09IHNraWxsLmlkfVxuICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBoYW5kbGVPcGVuU2tpbGwoc2tpbGwsIHRydWUpfVxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8U0NNU0NhcmRUb3BSb3c+XG4gICAgICAgICAgICAgICAgICAgICAgPFNDTVNDYXJkVGl0bGVOYW1lPntmb3JtYXRTa2lsbERpc3BsYXlOYW1lKHNraWxsLm5hbWUpfTwvU0NNU0NhcmRUaXRsZU5hbWU+XG4gICAgICAgICAgICAgICAgICAgICAgPFNDTVNLZWJhYkJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAkdmlzaWJsZT17bWVudU9wZW5Gb3JTa2lsbElkID09PSBza2lsbC5pZH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9e3QoJ215U2tpbGxzLmNhcmRNZW51QXJpYUxhYmVsJyl9XG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXtldmVudCA9PiBoYW5kbGVUb2dnbGVDYXJkTWVudShldmVudCwgc2tpbGwuaWQpfVxuICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxNZW51RG90cyBjb2xvcj1cIiM4MDgwODBcIiB3aWR0aD17MjB9IGhlaWdodD17MjB9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgPC9TQ01TS2ViYWJCdXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDwvU0NNU0NhcmRUb3BSb3c+XG4gICAgICAgICAgICAgICAgICAgIDxTQ01TQ2FyZENvbnRlbnRUZXh0Pntza2lsbC5kZXNjcmlwdGlvbiB8fCBza2lsbC5jb250ZW50fTwvU0NNU0NhcmRDb250ZW50VGV4dD5cbiAgICAgICAgICAgICAgICAgICAgPFNDTVNDYXJkVmlzaWJpbGl0eVJvdz5cbiAgICAgICAgICAgICAgICAgICAgICB7aXNNaW5lVGFiID8gKFxuICAgICAgICAgICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAge3NraWxsLmFjY2Vzc190eXBlID09PSAnY29tcGFueScgPyAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPFNraWxsVmlzaWJpbGl0eUV2ZXJ5b25lSWNvbiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTa2lsbFZpc2liaWxpdHlPbmx5TWVJY29uIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxTQ01TQ2FyZFZpc2liaWxpdHlUZXh0PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtza2lsbC5hY2Nlc3NfdHlwZSA9PT0gJ2NvbXBhbnknXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IHQoJ215U2tpbGxzLnZpc2liaWxpdHlFdmVyeW9uZScpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHQoJ215U2tpbGxzLnZpc2liaWxpdHlPbmx5TWUnKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9TQ01TQ2FyZFZpc2liaWxpdHlUZXh0PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgICAgICAgICAgICAgeyFpc01pbmVUYWIgJiYgc2tpbGwuY3JlYXRlZF9ieV9uYW1lID8gKFxuICAgICAgICAgICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPFNraWxsQ3JlYXRlZEJ5SWNvbiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8U0NNU0NhcmRWaXNpYmlsaXR5VGV4dD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7dCgnbXlTa2lsbHMuc2hhcmVkQ3JlYXRlZEJ5JywgeyBuYW1lOiBza2lsbC5jcmVhdGVkX2J5X25hbWUgfSl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvU0NNU0NhcmRWaXNpYmlsaXR5VGV4dD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvPlxuICAgICAgICAgICAgICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgICAgICAgICAgICA8L1NDTVNDYXJkVmlzaWJpbGl0eVJvdz5cbiAgICAgICAgICAgICAgICAgICAge21lbnVPcGVuRm9yU2tpbGxJZCA9PT0gc2tpbGwuaWQgPyAoXG4gICAgICAgICAgICAgICAgICAgICAgPFNDTVNDYXJkTWVudVxuICAgICAgICAgICAgICAgICAgICAgICAgJHBsYWNlbWVudD17Y2FyZE1lbnVQbGFjZW1lbnR9XG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXtldmVudCA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcbiAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPFNDTVNDYXJkTWVudUl0ZW0gdHlwZT1cImJ1dHRvblwiIG9uQ2xpY2s9eygpID0+IGhhbmRsZVVzZVNraWxsKHNraWxsKX0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHt0KCdteVNraWxscy51c2VTa2lsbCcpfVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9TQ01TQ2FyZE1lbnVJdGVtPlxuICAgICAgICAgICAgICAgICAgICAgICAge2lzTWluZVRhYiA/IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U0NNU0NhcmRNZW51SXRlbSB0eXBlPVwiYnV0dG9uXCIgb25DbGljaz17KCkgPT4gaGFuZGxlT3BlblNraWxsKHNraWxsLCBmYWxzZSl9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3QoJ215U2tpbGxzLmVkaXQnKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1NDTVNDYXJkTWVudUl0ZW0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPFNDTVNDYXJkTWVudUl0ZW0gdHlwZT1cImJ1dHRvblwiICRkZXN0cnVjdGl2ZSBvbkNsaWNrPXsoKSA9PiBzZXRTa2lsbFRvRGVsZXRlKHNraWxsKX0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7dCgnbXlTa2lsbHMuZGVsZXRlJyl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9TQ01TQ2FyZE1lbnVJdGVtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8Lz5cbiAgICAgICAgICAgICAgICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgICAgICAgICAgICAgIDwvU0NNU0NhcmRNZW51PlxuICAgICAgICAgICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICAgICAgICAgIDwvU0NNU0NhcmRCdXR0b24+XG4gICAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICAgIDwvU0NNU0NhcmRzTGlzdD5cbiAgICAgICAgICAgICkgOiBudWxsfVxuXG4gICAgICAgICAgICB7IWxvYWRpbmcgJiYgIWZpbHRlcmVkU2tpbGxzLmxlbmd0aCA/IHJlbmRlckVtcHR5U3RhdGUoKSA6IG51bGx9XG4gICAgICAgICAgPC9TQ01TTGlzdFNjcm9sbEFyZWE+XG4gICAgICAgIDwvU0NNU1BhbmVsPlxuICAgICAgPC9TQ01TQm9keT5cblxuICAgICAge2RlbGV0ZU1vZGFsQ2hhdCA/IChcbiAgICAgICAgPERlbGV0ZVF1ZXN0aW9uTW9kYWxcbiAgICAgICAgICBvbkNsb3NlPXsoKSA9PiBzZXRTa2lsbFRvRGVsZXRlKG51bGwpfVxuICAgICAgICAgIGhhbmRsZXJzPXt7XG4gICAgICAgICAgICBoYW5kbGVDb25maXJtQWN0aW9uOiBoYW5kbGVDb25maXJtRGVsZXRlLFxuICAgICAgICAgIH19XG4gICAgICAgICAgY2hhdD17ZGVsZXRlTW9kYWxDaGF0fVxuICAgICAgICAgIGFjdGlvbj1cInNraWxsXCJcbiAgICAgICAgLz5cbiAgICAgICkgOiBudWxsfVxuICAgIDwvU0NNU0NvbnRhaW5lcj5cbiAgKVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxPQUFPQSxLQUFLLElBQUlDLFdBQVcsRUFBRUMsU0FBUyxFQUFFQyxPQUFPLEVBQUVDLE1BQU0sRUFBRUMsUUFBUSxRQUFRLE9BQU87QUFDaEYsU0FBU0MsUUFBUSxRQUFRLDJDQUEyQztBQUNwRSxTQUFTQyxNQUFNLFFBQVEseUNBQXlDO0FBQ2hFLFNBQVNDLGlCQUFpQixRQUFRLG9EQUFvRDtBQUN0RixTQUFTQyxPQUFPLFFBQVEsOENBQThDO0FBQ3RFLFNBQVNDLGNBQWMsUUFBUSxlQUFlO0FBRTlDLFNBQVNDLFdBQVcsUUFBUSwyQ0FBMkM7QUFDdkUsU0FBU0Msa0JBQWtCLFFBQVEsc0RBQXNEO0FBQ3pGLFNBQVNDLE1BQU0sRUFBRUMsUUFBUSxRQUFRLHlCQUF5QjtBQUMxRCxTQUFTQyxzQkFBc0IsUUFBUSx1Q0FBdUM7QUFDOUUsU0FBU0MsbUJBQW1CLFFBQVEseURBQXlEO0FBQzdGLFNBQVNDLDBCQUEwQixR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
@@ -0,0 +1,48 @@
1
+ import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
2
+ import _toConsumableArray from "@babel/runtime/helpers/toConsumableArray";
3
+ export var resolveFaqEntityType = function resolveFaqEntityType(ctx) {
4
+ var _ctx$task, _ctx$chipsProject, _ctx$project, _ctx$client;
5
+ if ((_ctx$task = ctx.task) !== null && _ctx$task !== void 0 && _ctx$task.id) return 'task';
6
+ if ((_ctx$chipsProject = ctx.chipsProject) !== null && _ctx$chipsProject !== void 0 && _ctx$chipsProject.projectId || (_ctx$project = ctx.project) !== null && _ctx$project !== void 0 && _ctx$project.id) return 'project';
7
+ if ((_ctx$client = ctx.client) !== null && _ctx$client !== void 0 && _ctx$client.id) return 'client';
8
+ return undefined;
9
+ };
10
+ export var groupFaqsByCategory = function groupFaqsByCategory(faqs) {
11
+ var grouped = {};
12
+ var sortedFaqs = _toConsumableArray(faqs).sort(function (a, b) {
13
+ var _a$order, _b$order;
14
+ var orderA = (_a$order = a.order) !== null && _a$order !== void 0 ? _a$order : Number.MAX_SAFE_INTEGER;
15
+ var orderB = (_b$order = b.order) !== null && _b$order !== void 0 ? _b$order : Number.MAX_SAFE_INTEGER;
16
+ return orderA - orderB;
17
+ });
18
+ sortedFaqs.forEach(function (faq) {
19
+ var category = faq.category || 'undefined';
20
+ if (!grouped[category]) grouped[category] = [];
21
+ grouped[category].push(faq);
22
+ });
23
+ Object.keys(grouped).forEach(function (category) {
24
+ grouped[category].sort(function (a, b) {
25
+ var _a$order2, _b$order2;
26
+ return ((_a$order2 = a.order) !== null && _a$order2 !== void 0 ? _a$order2 : 0) - ((_b$order2 = b.order) !== null && _b$order2 !== void 0 ? _b$order2 : 0);
27
+ });
28
+ });
29
+ var order = Object.entries(grouped).sort(function (_ref, _ref2) {
30
+ var _categoryFaqsA$0$orde, _categoryFaqsA$, _categoryFaqsB$0$orde, _categoryFaqsB$;
31
+ var _ref3 = _slicedToArray(_ref, 2),
32
+ categoryFaqsA = _ref3[1];
33
+ var _ref4 = _slicedToArray(_ref2, 2),
34
+ categoryFaqsB = _ref4[1];
35
+ var firstOrderA = (_categoryFaqsA$0$orde = (_categoryFaqsA$ = categoryFaqsA[0]) === null || _categoryFaqsA$ === void 0 ? void 0 : _categoryFaqsA$.order) !== null && _categoryFaqsA$0$orde !== void 0 ? _categoryFaqsA$0$orde : Number.MAX_SAFE_INTEGER;
36
+ var firstOrderB = (_categoryFaqsB$0$orde = (_categoryFaqsB$ = categoryFaqsB[0]) === null || _categoryFaqsB$ === void 0 ? void 0 : _categoryFaqsB$.order) !== null && _categoryFaqsB$0$orde !== void 0 ? _categoryFaqsB$0$orde : Number.MAX_SAFE_INTEGER;
37
+ return firstOrderA - firstOrderB;
38
+ }).map(function (_ref5) {
39
+ var _ref6 = _slicedToArray(_ref5, 1),
40
+ category = _ref6[0];
41
+ return category;
42
+ });
43
+ return {
44
+ grouped: grouped,
45
+ order: order
46
+ };
47
+ };
48
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJyZXNvbHZlRmFxRW50aXR5VHlwZSIsImN0eCIsIl9jdHgkdGFzayIsIl9jdHgkY2hpcHNQcm9qZWN0IiwiX2N0eCRwcm9qZWN0IiwiX2N0eCRjbGllbnQiLCJ0YXNrIiwiaWQiLCJjaGlwc1Byb2plY3QiLCJwcm9qZWN0SWQiLCJwcm9qZWN0IiwiY2xpZW50IiwidW5kZWZpbmVkIiwiZ3JvdXBGYXFzQnlDYXRlZ29yeSIsImZhcXMiLCJncm91cGVkIiwic29ydGVkRmFxcyIsIl90b0NvbnN1bWFibGVBcnJheSIsInNvcnQiLCJhIiwiYiIsIl9hJG9yZGVyIiwiX2Ikb3JkZXIiLCJvcmRlckEiLCJvcmRlciIsIk51bWJlciIsIk1BWF9TQUZFX0lOVEVHRVIiLCJvcmRlckIiLCJmb3JFYWNoIiwiZmFxIiwiY2F0ZWdvcnkiLCJwdXNoIiwiT2JqZWN0Iiwia2V5cyIsIl9hJG9yZGVyMiIsIl9iJG9yZGVyMiIsImVudHJpZXMiLCJfcmVmIiwiX3JlZjIiLCJfY2F0ZWdvcnlGYXFzQSQwJG9yZGUiLCJfY2F0ZWdvcnlGYXFzQSQiLCJfY2F0ZWdvcnlGYXFzQiQwJG9yZGUiLCJfY2F0ZWdvcnlGYXFzQiQiLCJfcmVmMyIsIl9zbGljZWRUb0FycmF5IiwiY2F0ZWdvcnlGYXFzQSIsIl9yZWY0IiwiY2F0ZWdvcnlGYXFzQiIsImZpcnN0T3JkZXJBIiwiZmlyc3RPcmRlckIiLCJtYXAiLCJfcmVmNSIsIl9yZWY2Il0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvbW9sZWN1bGVzL0NoYXRGb290ZXIvQ2hhdEZvb3RlckZhcXMuaGVscGVycy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IEZyZXF1ZW50bHlBc2tlZFF1ZXN0aW9uIH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMvRnJlcXVlbnRseUFza2VkUXVlc3Rpb24nXG5cbnR5cGUgRmFxRW50aXR5Q29udGV4dCA9IHtcbiAgdGFzaz86IHsgaWQ/OiBzdHJpbmcgfCBudW1iZXIgfSB8IG51bGxcbiAgY2hpcHNQcm9qZWN0PzogeyBwcm9qZWN0SWQ/OiBzdHJpbmcgfSB8IG51bGxcbiAgcHJvamVjdD86IHsgaWQ/OiBzdHJpbmcgfCBudW1iZXIgfSB8IG51bGxcbiAgY2xpZW50PzogeyBpZD86IHN0cmluZyB8IG51bWJlciB9IHwgbnVsbFxufVxuXG5leHBvcnQgY29uc3QgcmVzb2x2ZUZhcUVudGl0eVR5cGUgPSAoY3R4OiBGYXFFbnRpdHlDb250ZXh0KTogJ3Rhc2snIHwgJ3Byb2plY3QnIHwgJ2NsaWVudCcgfCB1bmRlZmluZWQgPT4ge1xuICBpZiAoY3R4LnRhc2s/LmlkKSByZXR1cm4gJ3Rhc2snXG4gIGlmIChjdHguY2hpcHNQcm9qZWN0Py5wcm9qZWN0SWQgfHwgY3R4LnByb2plY3Q/LmlkKSByZXR1cm4gJ3Byb2plY3QnXG4gIGlmIChjdHguY2xpZW50Py5pZCkgcmV0dXJuICdjbGllbnQnXG4gIHJldHVybiB1bmRlZmluZWRcbn1cblxuZXhwb3J0IHR5cGUgRmFxc0J5Q2F0ZWdvcnkgPSB7XG4gIGdyb3VwZWQ6IFJlY29yZDxzdHJpbmcsIEZyZXF1ZW50bHlBc2tlZFF1ZXN0aW9uW10+XG4gIG9yZGVyOiBzdHJpbmdbXVxufVxuXG5leHBvcnQgY29uc3QgZ3JvdXBGYXFzQnlDYXRlZ29yeSA9IChmYXFzOiBGcmVxdWVudGx5QXNrZWRRdWVzdGlvbltdKTogRmFxc0J5Q2F0ZWdvcnkgPT4ge1xuICBjb25zdCBncm91cGVkOiBSZWNvcmQ8c3RyaW5nLCBGcmVxdWVudGx5QXNrZWRRdWVzdGlvbltdPiA9IHt9XG4gIGNvbnN0IHNvcnRlZEZhcXMgPSBbLi4uZmFxc10uc29ydCgoYSwgYikgPT4ge1xuICAgIGNvbnN0IG9yZGVyQSA9IGEub3JkZXIgPz8gTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVJcbiAgICBjb25zdCBvcmRlckIgPSBiLm9yZGVyID8/IE51bWJlci5NQVhfU0FGRV9JTlRFR0VSXG4gICAgcmV0dXJuIG9yZGVyQSAtIG9yZGVyQlxuICB9KVxuXG4gIHNvcnRlZEZhcXMuZm9yRWFjaChmYXEgPT4ge1xuICAgIGNvbnN0IGNhdGVnb3J5ID0gZmFxLmNhdGVnb3J5IHx8ICd1bmRlZmluZWQnXG4gICAgaWYgKCFncm91cGVkW2NhdGVnb3J5XSkgZ3JvdXBlZFtjYXRlZ29yeV0gPSBbXVxuICAgIGdyb3VwZWRbY2F0ZWdvcnldLnB1c2goZmFxKVxuICB9KVxuXG4gIE9iamVjdC5rZXlzKGdyb3VwZWQpLmZvckVhY2goY2F0ZWdvcnkgPT4ge1xuICAgIGdyb3VwZWRbY2F0ZWdvcnldLnNvcnQoKGEsIGIpID0+IChhLm9yZGVyID8/IDApIC0gKGIub3JkZXIgPz8gMCkpXG4gIH0pXG5cbiAgY29uc3Qgb3JkZXIgPSBPYmplY3QuZW50cmllcyhncm91cGVkKVxuICAgIC5zb3J0KChbLCBjYXRlZ29yeUZhcXNBXSwgWywgY2F0ZWdvcnlGYXFzQl0pID0+IHtcbiAgICAgIGNvbnN0IGZpcnN0T3JkZXJBID0gY2F0ZWdvcnlGYXFzQVswXT8ub3JkZXIgPz8gTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVJcbiAgICAgIGNvbnN0IGZpcnN0T3JkZXJCID0gY2F0ZWdvcnlGYXFzQlswXT8ub3JkZXIgPz8gTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVJcbiAgICAgIHJldHVybiBmaXJzdE9yZGVyQSAtIGZpcnN0T3JkZXJCXG4gICAgfSlcbiAgICAubWFwKChbY2F0ZWdvcnldKSA9PiBjYXRlZ29yeSlcblxuICByZXR1cm4geyBncm91cGVkLCBvcmRlciB9XG59XG4iXSwibWFwcGluZ3MiOiI7O0FBU0EsT0FBTyxJQUFNQSxvQkFBb0IsR0FBRyxTQUF2QkEsb0JBQW9CQSxDQUFJQyxHQUFxQixFQUFnRDtFQUFBLElBQUFDLFNBQUEsRUFBQUMsaUJBQUEsRUFBQUMsWUFBQSxFQUFBQyxXQUFBO0VBQ3hHLEtBQUFILFNBQUEsR0FBSUQsR0FBRyxDQUFDSyxJQUFJLGNBQUFKLFNBQUEsZUFBUkEsU0FBQSxDQUFVSyxFQUFFLEVBQUUsT0FBTyxNQUFNO0VBQy9CLElBQUksQ0FBQUosaUJBQUEs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
@@ -1,5 +1,4 @@
1
1
  import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
2
- import _toConsumableArray from "@babel/runtime/helpers/toConsumableArray";
3
2
  import React, { useState, useEffect, useRef, useCallback, useMemo } from 'react';
4
3
  import { Tooltip } from '@projectcor/tooltipv2/lib/components/Tooltip';
5
4
  import { useT } from '../../../hooks/useT';
@@ -9,6 +8,7 @@ import { useFrequentlyAskedQuestions } from '../../../hooks/useFrequentlyAskedQu
9
8
  import { EVENTS, useEvent } from '../../../hooks/useEvent';
10
9
  import { SCFaqsChip, SCFaqsTriggerWrapper, SCFaqsModalFrame, SCFaqsModalContent, SCFaqsCategoryHeader, SCFaqsModalItem, SCFaqsModalItemText } from './ChatFooterFaqs.styles';
11
10
  import { mapCORLang } from '../../../lang/utils';
11
+ import { groupFaqsByCategory, resolveFaqEntityType } from './ChatFooterFaqs.helpers';
12
12
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
13
13
  function FaqModalItem(_ref) {
14
14
  var faq = _ref.faq,
@@ -53,12 +53,12 @@ export function ChatFooterFaqs(_ref2) {
53
53
 
54
54
  // Las FAQs se filtran por el `entity_type` del contexto pineado (project/client/task), tanto
55
55
  // al abrir MAIA desde una sección como al cambiar de conversación (la metadata setea el contexto).
56
- var entityType = function () {
57
- if (task !== null && task !== void 0 && task.id) return 'task';
58
- if (chipsProject !== null && chipsProject !== void 0 && chipsProject.projectId || project !== null && project !== void 0 && project.id) return 'project';
59
- if (client !== null && client !== void 0 && client.id) return 'client';
60
- return undefined;
61
- }();
56
+ var entityType = resolveFaqEntityType({
57
+ task: task,
58
+ chipsProject: chipsProject,
59
+ project: project,
60
+ client: client
61
+ });
62
62
  var _useFrequentlyAskedQu = useFrequentlyAskedQuestions(agentId, lang, entityType),
63
63
  faqs = _useFrequentlyAskedQu.faqs,
64
64
  loading = _useFrequentlyAskedQu.loading,
@@ -74,42 +74,7 @@ export function ChatFooterFaqs(_ref2) {
74
74
  }
75
75
  }, [isCloneAgent, isOrchestrator, agentId, lang, entityType, handleGetFrequentlyAskedQuestions]);
76
76
  var faqsByCategory = useMemo(function () {
77
- var grouped = {};
78
- var sortedFaqs = _toConsumableArray(faqs).sort(function (a, b) {
79
- var _a$order, _b$order;
80
- var orderA = (_a$order = a.order) !== null && _a$order !== void 0 ? _a$order : Number.MAX_SAFE_INTEGER;
81
- var orderB = (_b$order = b.order) !== null && _b$order !== void 0 ? _b$order : Number.MAX_SAFE_INTEGER;
82
- return orderA - orderB;
83
- });
84
- sortedFaqs.forEach(function (faq) {
85
- var category = faq.category || 'undefined';
86
- if (!grouped[category]) grouped[category] = [];
87
- grouped[category].push(faq);
88
- });
89
- Object.keys(grouped).forEach(function (cat) {
90
- grouped[cat].sort(function (a, b) {
91
- var _a$order2, _b$order2;
92
- return ((_a$order2 = a.order) !== null && _a$order2 !== void 0 ? _a$order2 : 0) - ((_b$order2 = b.order) !== null && _b$order2 !== void 0 ? _b$order2 : 0);
93
- });
94
- });
95
- var order = Object.entries(grouped).sort(function (_ref3, _ref4) {
96
- var _categoryFaqsA$0$orde, _categoryFaqsA$, _categoryFaqsB$0$orde, _categoryFaqsB$;
97
- var _ref5 = _slicedToArray(_ref3, 2),
98
- categoryFaqsA = _ref5[1];
99
- var _ref6 = _slicedToArray(_ref4, 2),
100
- categoryFaqsB = _ref6[1];
101
- var firstOrderA = (_categoryFaqsA$0$orde = (_categoryFaqsA$ = categoryFaqsA[0]) === null || _categoryFaqsA$ === void 0 ? void 0 : _categoryFaqsA$.order) !== null && _categoryFaqsA$0$orde !== void 0 ? _categoryFaqsA$0$orde : Number.MAX_SAFE_INTEGER;
102
- var firstOrderB = (_categoryFaqsB$0$orde = (_categoryFaqsB$ = categoryFaqsB[0]) === null || _categoryFaqsB$ === void 0 ? void 0 : _categoryFaqsB$.order) !== null && _categoryFaqsB$0$orde !== void 0 ? _categoryFaqsB$0$orde : Number.MAX_SAFE_INTEGER;
103
- return firstOrderA - firstOrderB;
104
- }).map(function (_ref7) {
105
- var _ref8 = _slicedToArray(_ref7, 1),
106
- category = _ref8[0];
107
- return category;
108
- });
109
- return {
110
- grouped: grouped,
111
- order: order
112
- };
77
+ return groupFaqsByCategory(faqs);
113
78
  }, [faqs]);
114
79
  var _useState = useState(false),
115
80
  _useState2 = _slicedToArray(_useState, 2),
@@ -198,4 +163,4 @@ export function ChatFooterFaqs(_ref2) {
198
163
  })]
199
164
  });
200
165
  }
201
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsInVzZVN0YXRlIiwidXNlRWZmZWN0IiwidXNlUmVmIiwidXNlQ2FsbGJhY2siLCJ1c2VNZW1vIiwiVG9vbHRpcCIsInVzZVQiLCJ1c2VSZXNpemVMaXN0ZW5lciIsInVzZUdsb2JhbENvbnRleHQiLCJ1c2VGcmVxdWVudGx5QXNrZWRRdWVzdGlvbnMiLCJFVkVOVFMiLCJ1c2VFdmVudCIsIlNDRmFxc0NoaXAiLCJTQ0ZhcXNUcmlnZ2VyV3JhcHBlciIsIlNDRmFxc01vZGFsRnJhbWUiLCJTQ0ZhcXNNb2RhbENvbnRlbnQiLCJTQ0ZhcXNDYXRlZ29yeUhlYWRlciIsIlNDRmFxc01vZGFsSXRlbSIsIlNDRmFxc01vZGFsSXRlbVRleHQiLCJtYXBDT1JMYW5nIiwianN4IiwiX2pzeCIsImpzeHMiLCJfanN4cyIsIkZhcU1vZGFsSXRlbSIsIl9yZWYiLCJmYXEiLCJvbkNsaWNrIiwiX3JlZiRkaXNhYmxlZCIsImRpc2FibGVkIiwidGV4dFJlZiIsIl91c2VSZXNpemVMaXN0ZW5lciIsInRpdGxlIiwic2hvd1Rvb2x0aXAiLCJjb250ZW50IiwidHlwZSIsImNoaWxkcmVuIiwicmVmIiwiQ2hhdEZvb3RlckZhcXMiLCJfcmVmMiIsIm9uU2VsZWN0RmFxIiwiX3JlZjIkZGlzYWJsZWQiLCJfdXNlVCIsInQiLCJpMThuIiwiZXZlbnQiLCJfdXNlR2xvYmFsQ29udGV4dCIsImFnZW50IiwidGFzayIsImNoaXBzUHJvamVjdCIsInByb2plY3QiLCJjbGllbnQiLCJsYW5nIiwibGFuZ3VhZ2UiLCJhZ2VudElkIiwiaWQiLCJpc0Nsb25lQWdlbnQiLCJpc09yY2hlc3RyYXRvciIsImVudGl0eVR5cGUiLCJwcm9qZWN0SWQiLCJ1bmRlZmluZWQiLCJfdXNlRnJlcXVlbnRseUFza2VkUXUiLCJmYXFzIiwibG9hZGluZyIsImVycm9yIiwiaGFuZGxlR2V0RnJlcXVlbnRseUFza2VkUXVlc3Rpb25zIiwiZmFxc0J5Q2F0ZWdvcnkiLCJncm91cGVkIiwic29ydGVkRmFxcyIsIl90b0NvbnN1bWFibGVBcnJheSIsInNvcnQiLCJhIiwiYiIsIl9hJG9yZGVyIiwiX2Ikb3JkZXIiLCJvcmRlckEiLCJvcmRlciIsIk51bWJlciIsIk1BWF9TQUZFX0lOVEVHRVIiLCJvcmRlckIiLCJmb3JFYWNoIiwiY2F0ZWdvcnkiLCJwdXNoIiwiT2JqZWN0Iiwia2V5cyIsImNhdCIsIl9hJG9yZGVyMiIsIl9iJG9yZGVyMiIsImVudHJpZXMiLCJfcmVmMyIsIl9yZWY0IiwiX2NhdGVnb3J5RmFxc0EkMCRvcmRlIiwiX2NhdGVnb3J5RmFxc0EkIiwiX2NhdGVnb3J5RmFxc0IkMCRvcmRlIiwiX2NhdGVnb3J5RmFxc0IkIiwiX3JlZjUiLCJfc2xpY2VkVG9BcnJheSIsImNhdGVnb3J5RmFxc0EiLCJfcmVmNiIsImNhdGVnb3J5RmFxc0IiLCJmaXJzdE9yZGVyQSIsImZpcnN0T3JkZXJCIiwibWFwIiwiX3JlZjciLCJfcmVmOCIsIl91c2VTdGF0ZSIsIl91c2VTdGF0ZTIiLCJpc09wZW4iLCJzZXRJc09wZW4iLCJ3cmFwcGVyUmVmIiwiaGFuZGxlVG9nZ2xlIiwicHJldiIsImhhbmRsZUZhcUNsaWNrIiwiYWlDaGF0U2VsZWN0RkFRIiwib3B0aW9uIiwiaWRfZmFxIiwiY2F0ZWdvcnlfZmFxIiwib3JpZ2luX2ZhcSIsImFnZW50X2VudGl0eSIsImVudGl0eSIsImhhbmRsZUVzY2FwZSIsImUiLCJrZXkiLCJoYW5kbGVDbGlja091dHNpZGUiLCJ0YXJnZXQiLCJjdXJyZW50IiwiY29udGFpbnMiLCJkb2N1bWVudCIsImFkZEV2ZW50TGlzdGVuZXIiLCJ0aW1lb3V0SWQiLCJzZXRUaW1lb3V0IiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsImNsZWFyVGltZW91dCIsImxlbmd0aCIsInJvbGUiLCJfZmFxc0J5Q2F0ZWdvcnkkZ3JvdXAiLCJpdGVtcyIsIkZyYWdtZW50IiwiY29uY2F0IiwidG9Mb3dlckNhc2UiXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy9tb2xlY3VsZXMvQ2hhdEZvb3Rlci9DaGF0Rm9vdGVyRmFxcy50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlLCB1c2VFZmZlY3QsIHVzZVJlZiwgdXNlQ2FsbGJhY2ssIHVzZU1lbW8gfSBmcm9tICdyZWFjdCdcbmltcG9ydCB7IFRvb2x0aXAgfSBmcm9tICdAcHJvamVjdGNvci90b29sdGlwdjIvbGliL2NvbXBvbmVudHMvVG9vbHRpcCdcbmltcG9ydCB7IHVzZVQgfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VUJ1xuaW1wb3J0IHsgdXNlUmVzaXplTGlzdGVuZXIgfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VSZXNpemUnXG5pbXBvcnQgeyB1c2VHbG9iYWxDb250ZXh0IH0gZnJvbSAnLi4vLi4vLi4vY29udGV4dC9nbG9iYWwtY29udGV4dCdcbmltcG9ydCB7IHVzZUZyZXF1ZW50bHlBc2tlZFF1ZXN0aW9ucyB9IGZyb20gJy4uLy4uLy4uL2hvb2tzL3VzZUZyZXF1ZW50bHlBc2tlZFF1ZXN0aW9ucydcbmltcG9ydCB7IEVWRU5UUywgdXNlRXZlbnQgfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VFdmVudCdcbmltcG9ydCB7XG4gIFNDRmFxc0NoaXAsXG4gIFNDRmFxc1RyaWdnZXJXcmFwcGVyLFxuICBTQ0ZhcXNNb2RhbEZyYW1lLFxuICBTQ0ZhcXNNb2RhbENvbnRlbnQsXG4gIFNDRmFxc0NhdGVnb3J5SGVhZGVyLFxuICBTQ0ZhcXNNb2RhbEl0ZW0sXG4gIFNDRmFxc01vZGFsSXRlbVRleHQsXG59IGZyb20gJy4vQ2hhdEZvb3RlckZhcXMuc3R5bGVzJ1xuaW1wb3J0IHsgbWFwQ09STGFuZyB9IGZyb20gJy4uLy4uLy4uL2xhbmcvdXRpbHMnXG5pbXBvcnQgdHlwZSB7IEZyZXF1ZW50bHlBc2tlZFF1ZXN0aW9uIH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMvRnJlcXVlbnRseUFza2VkUXVlc3Rpb24nXG5cbmV4cG9ydCB0eXBlIEZhcUl0ZW0gPSB7XG4gIGlkOiBzdHJpbmdcbiAgdGl0bGU6IHN0cmluZ1xuICBjYXRlZ29yeTogc3RyaW5nXG59XG5cbmZ1bmN0aW9uIEZhcU1vZGFsSXRlbSh7IGZhcSwgb25DbGljaywgZGlzYWJsZWQgPSBmYWxzZSB9OiB7IGZhcTogRmFxSXRlbTsgb25DbGljazogKCkgPT4gdm9pZDsgZGlzYWJsZWQ/OiBib29sZWFuIH0pIHtcbiAgY29uc3QgdGV4dFJlZiA9IHVzZVJlZjxIVE1MU3BhbkVsZW1lbnQ+KG51bGwpXG4gIGNvbnN0IHsgc2hvd1Rvb2x0aXAgfSA9IHVzZVJlc2l6ZUxpc3RlbmVyKHRleHRSZWYsIFtmYXEudGl0bGVdKVxuXG4gIGNvbnN0IGNvbnRlbnQgPSAoXG4gICAgPFNDRmFxc01vZGFsSXRlbSB0eXBlPVwiYnV0dG9uXCIgb25DbGljaz17b25DbGlja30gZGlzYWJsZWQ9e2Rpc2FibGVkfT5cbiAgICAgIDxTQ0ZhcXNNb2RhbEl0ZW1UZXh0IHJlZj17dGV4dFJlZn0+e2ZhcS50aXRsZX08L1NDRmFxc01vZGFsSXRlbVRleHQ+XG4gICAgPC9TQ0ZhcXNNb2RhbEl0ZW0+XG4gIClcblxuICByZXR1cm4gPFRvb2x0aXAgdGl0bGU9e3Nob3dUb29sdGlwID8gZmFxLnRpdGxlIDogJyd9Pntjb250ZW50fTwvVG9vbHRpcD5cbn1cblxudHlwZSBDaGF0Rm9vdGVyRmFxc1Byb3BzID0ge1xuICBvblNlbGVjdEZhcTogKG1lc3NhZ2U6IHN0cmluZywgZmFxSWQ6IHN0cmluZykgPT4gdm9pZFxuICBkaXNhYmxlZD86IGJvb2xlYW5cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIENoYXRGb290ZXJGYXFzKHsgb25TZWxlY3RGYXEsIGRpc2FibGVkID0gZmFsc2UgfTogQ2hhdEZvb3RlckZhcXNQcm9wcykge1xuICBjb25zdCB7IHQsIGkxOG4gfSA9IHVzZVQoKVxuICBjb25zdCBldmVudCA9IHVzZUV2ZW50KClcbiAgY29uc3QgeyBhZ2VudCwgdGFzaywgY2hpcHNQcm9qZWN0LCBwcm9qZWN0LCBjbGllbnQgfSA9IHVzZUdsb2JhbENvbnRleHQoKVxuICBjb25zdCBsYW5nID0gbWFwQ09STGFuZyhpMThuLmxhbmd1YWdlKVxuICBjb25zdCBhZ2VudElkID0gYWdlbnQ/LmlkXG5cbiAgY29uc3QgaXNDbG9uZUFnZW50ID0gYWdlbnQ/LnR5cGUgPT09ICdjbG9uZSdcbiAgY29uc3QgaXNPcmNoZXN0cmF0b3IgPSBhZ2VudD8udHlwZSA9PT0gJ29yY2hlc3RyYXRvcidcblxuICAvLyBMYXMgRkFRcyBzZSBmaWx0cmFuIHBvciBlbCBgZW50aXR5X3R5cGVgIGRlbCBjb250ZXh0byBwaW5lYWRvIChwcm9qZWN0L2NsaWVudC90YXNrKSwgdGFudG9cbiAgLy8gYWwgYWJyaXIgTUFJQSBkZXNkZSB1bmEgc2VjY2nDs24gY29tbyBhbCBjYW1iaWFyIGRlIGNvbnZlcnNhY2nDs24gKGxhIG1ldGFkYXRhIHNldGVhIGVsIGNvbnRleHRvKS5cbiAgY29uc3QgZW50aXR5VHlwZSA9ICgoKSA9PiB7XG4gICAgaWYgKHRhc2s/LmlkKSByZXR1cm4gJ3Rhc2snXG4gICAgaWYgKGNoaXBzUHJvamVjdD8ucHJvamVjdElkIHx8IHByb2plY3Q/LmlkKSByZXR1cm4gJ3Byb2plY3QnXG4gICAgaWYgKGNsaWVudD8uaWQpIHJldHVybiAnY2xpZW50J1xuICAgIHJldHVybiB1bmRlZmluZWRcbiAgfSkoKVxuXG4gIGNvbnN0IHsgZmFxcywgbG9hZGluZywgZXJyb3IsIGhhbmRsZUdldEZyZXF1ZW50bHlBc2tlZFF1ZXN0aW9ucyB9ID0gdXNlRnJlcXVlbnRseUFza2VkUXVlc3Rpb25zKFxuICAgIGFnZW50SWQsXG4gICAgbGFuZyxcbiAgICBlbnRpdHlUeXBlXG4gIClcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICgoaXNDbG9uZUFnZW50IHx8IGlzT3JjaGVzdHJhdG9yKSAmJiBhZ2VudElkICYmIGxhbmcpIHtcbiAgICAgIGhhbmRsZUdldEZyZXF1ZW50bHlBc2tlZFF1ZXN0aW9ucyh7IGFnZW50SWQsIGxhbmcsIGVudGl0eVR5cGUgfSlcbiAgICB9XG4gIH0sIFtpc0Nsb25lQWdlbnQsIGlzT3JjaGVzdHJhdG9yLCBhZ2VudElkLCBsYW5nLCBlbnRpdHlUeXBlLCBoYW5kbGVHZXRGcmVxdWVudGx5QXNrZWRRdWVzdGlvbnNdKVxuXG4gIGNvbnN0IGZhcXNCeUNhdGVnb3J5ID0gdXNlTWVtbygoKSA9PiB7XG4gICAgY29uc3QgZ3JvdXBlZDogUmVjb3JkPHN0cmluZywgRnJlcXVlbnRseUFza2VkUXVlc3Rpb25bXT4gPSB7fVxuICAgIGNvbnN0IHNvcnRlZEZhcXMgPSBbLi4uZmFxc10uc29ydCgoYSwgYikgPT4ge1xuICAgICAgY29uc3Qgb3JkZXJBID0gYS5vcmRlciA/PyBOdW1iZXIuTUFYX1NBRkVfSU5URUdFUlxuICAgICAgY29uc3Qgb3JkZXJCID0gYi5vcmRlciA/PyBOdW1iZXIuTUFYX1NBRkVfSU5URUdFUlxuXG4gICAgICByZXR1cm4gb3JkZXJBIC0gb3JkZXJCXG4gICAgfSlcblxuICAgIHNvcnRlZEZhcXMuZm9yRWFjaChmYXEgPT4ge1xuICAgICAgY29uc3QgY2F0ZWdvcnkgPSBmYXEuY2F0ZWdvcnkgfHwgJ3VuZGVmaW5lZCdcbiAgICAgIGlmICghZ3JvdXBlZFtjYXRlZ29yeV0pIGdyb3VwZWRbY2F0ZWdvcnldID0gW11cbiAgICAgIGdyb3VwZWRbY2F0ZWdvcnldLnB1c2goZmFxKVxuICAgIH0pXG5cbiAgICBPYmplY3Qua2V5cyhncm91cGVkKS5mb3JFYWNoKGNhdCA9PiB7XG4gICAgICBncm91cGVkW2NhdF0uc29ydCgoYSwgYikgPT4gKGEub3JkZXIgPz8gMCkgLSAoYi5vcmRlciA/PyAwKSlcbiAgICB9KVxuXG4gICAgY29uc3Qgb3JkZXIgPSBPYmplY3QuZW50cmllcyhncm91cGVkKVxuICAgICAgLnNvcnQoKFssIGNhdGVnb3J5RmFxc0FdLCBbLCBjYXRlZ29yeUZhcXNCXSkgPT4ge1xuICAgICAgICBjb25zdCBmaXJzdE9yZGVyQSA9IGNhdGVnb3J5RmFxc0FbMF0/Lm9yZGVyID8/IE51bWJlci5NQVhfU0FGRV9JTlRFR0VSXG4gICAgICAgIGNvbnN0IGZpcnN0T3JkZXJCID0gY2F0ZWdvcnlGYXFzQlswXT8ub3JkZXIgPz8gTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVJcblxuICAgICAgICByZXR1cm4gZmlyc3RPcmRlckEgLSBmaXJzdE9yZGVyQlxuICAgICAgfSlcbiAgICAgIC5tYXAoKFtjYXRlZ29yeV0pID0+IGNhdGVnb3J5KVxuXG4gICAgcmV0dXJuIHsgZ3JvdXBlZCwgb3JkZXIgfVxuICB9LCBbZmFxc10pXG5cbiAgY29uc3QgW2lzT3Blbiwgc2V0SXNPcGVuXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCB3cmFwcGVyUmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKVxuXG4gIGNvbnN0IGhhbmRsZVRvZ2dsZSA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBzZXRJc09wZW4ocHJldiA9PiAhcHJldilcbiAgfSwgW10pXG5cbiAgY29uc3QgaGFuZGxlRmFxQ2xpY2sgPSB1c2VDYWxsYmFjayhcbiAgICAoZmFxOiBGcmVxdWVudGx5QXNrZWRRdWVzdGlvbikgPT4ge1xuICAgICAgaWYgKGRpc2FibGVkKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuICAgICAgb25TZWxlY3RGYXEoZmFxLnRpdGxlLCBmYXEuaWQpXG4gICAgICBldmVudChFVkVOVFMuYWlDaGF0U2VsZWN0RkFRLCB7XG4gICAgICAgIG9wdGlvbjoge1xuICAgICAgICAgIGlkX2ZhcTogZmFxLnRpdGxlLFxuICAgICAgICAgIGNhdGVnb3J5X2ZhcTogZmFxLmNhdGVnb3J5LFxuICAgICAgICAgIG9yaWdpbl9mYXE6ICdidXR0b25fY2hhdCcsXG4gICAgICAgICAgYWdlbnRfZW50aXR5OiBhZ2VudD8uZW50aXR5LFxuICAgICAgICB9LFxuICAgICAgfSlcbiAgICAgIHNldElzT3BlbihmYWxzZSlcbiAgICB9LFxuICAgIFtvblNlbGVjdEZhcSwgZXZlbnQsIGRpc2FibGVkLCBhZ2VudD8uZW50aXR5XVxuICApXG5cbiAgY29uc3QgaGFuZGxlRXNjYXBlID0gdXNlQ2FsbGJhY2soKGU6IEtleWJvYXJkRXZlbnQpID0+IHtcbiAgICBpZiAoZS5rZXkgPT09ICdFc2NhcGUnKSBzZXRJc09wZW4oZmFsc2UpXG4gIH0sIFtdKVxuXG4gIGNvbnN0IGhhbmRsZUNsaWNrT3V0c2lkZSA9IHVzZUNhbGxiYWNrKChlOiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgY29uc3QgdGFyZ2V0ID0gZS50YXJnZXQgYXMgTm9kZVxuICAgIGlmICh3cmFwcGVyUmVmLmN1cnJlbnQgJiYgIXdyYXBwZXJSZWYuY3VycmVudC5jb250YWlucyh0YXJnZXQpKSB7XG4gICAgICBzZXRJc09wZW4oZmFsc2UpXG4gICAgfVxuICB9LCBbXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghaXNPcGVuKSByZXR1cm4gdW5kZWZpbmVkXG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIGhhbmRsZUVzY2FwZSwgdHJ1ZSlcbiAgICBjb25zdCB0aW1lb3V0SWQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlZG93bicsIGhhbmRsZUNsaWNrT3V0c2lkZSlcbiAgICB9LCAwKVxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdrZXlkb3duJywgaGFuZGxlRXNjYXBlLCB0cnVlKVxuICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2Vkb3duJywgaGFuZGxlQ2xpY2tPdXRzaWRlKVxuICAgICAgY2xlYXJUaW1lb3V0KHRpbWVvdXRJZClcbiAgICB9XG4gIH0sIFtpc09wZW4sIGhhbmRsZUVzY2FwZSwgaGFuZGxlQ2xpY2tPdXRzaWRlXSlcblxuICBpZiAoZmFxcy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gbnVsbFxuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8U0NGYXFzVHJpZ2dlcldyYXBwZXIgcmVmPXt3cmFwcGVyUmVmfT5cbiAgICAgIDxTQ0ZhcXNDaGlwIHR5cGU9XCJidXR0b25cIiBvbkNsaWNrPXtoYW5kbGVUb2dnbGV9IGFyaWEtZXhwYW5kZWQ9e2lzT3Blbn0gYXJpYS1oYXNwb3B1cD1cInRydWVcIj5cbiAgICAgICAge3QoJ2hvbWVNZW51LmZhcS50aXRsZScpfVxuICAgICAgPC9TQ0ZhcXNDaGlwPlxuICAgICAge2lzT3BlbiAmJiAoXG4gICAgICAgIDxTQ0ZhcXNNb2RhbEZyYW1lIHJvbGU9XCJkaWFsb2dcIiBhcmlhLWxhYmVsPXt0KCdob21lTWVudS5mYXEudGl0bGUnKX0+XG4gICAgICAgICAgPFNDRmFxc01vZGFsQ29udGVudD5cbiAgICAgICAgICAgIHshbG9hZGluZyAmJlxuICAgICAgICAgICAgICAhZXJyb3IgJiZcbiAgICAgICAgICAgICAgZmFxc0J5Q2F0ZWdvcnkub3JkZXIubWFwKGNhdGVnb3J5ID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBpdGVtcyA9IGZhcXNCeUNhdGVnb3J5Lmdyb3VwZWRbY2F0ZWdvcnldID8/IFtdXG4gICAgICAgICAgICAgICAgaWYgKGl0ZW1zLmxlbmd0aCA9PT0gMCkgcmV0dXJuIG51bGxcbiAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgPFJlYWN0LkZyYWdtZW50IGtleT17Y2F0ZWdvcnl9PlxuICAgICAgICAgICAgICAgICAgICB7Y2F0ZWdvcnkgIT09ICd1bmRlZmluZWQnICYmIChcbiAgICAgICAgICAgICAgICAgICAgICA8U0NGYXFzQ2F0ZWdvcnlIZWFkZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7dChgaG9tZU1lbnUuZmFxLmNhdGVnb3JpZXMuJHtjYXRlZ29yeS50b0xvd2VyQ2FzZSgpfWApfVxuICAgICAgICAgICAgICAgICAgICAgIDwvU0NGYXFzQ2F0ZWdvcnlIZWFkZXI+XG4gICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgIHtpdGVtcy5tYXAoZmFxID0+IChcbiAgICAgICAgICAgICAgICAgICAgICA8RmFxTW9kYWxJdGVtXG4gICAgICAgICAgICAgICAgICAgICAgICBrZXk9e2ZhcS5pZH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGZhcT17eyBpZDogZmFxLmlkLCB0aXRsZTogZmFxLnRpdGxlLCBjYXRlZ29yeTogZmFxLmNhdGVnb3J5IHx8ICd1bmRlZmluZWQnIH19XG4gICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZD17ZGlzYWJsZWR9XG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBoYW5kbGVGYXFDbGljayhmYXEpfVxuICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgICAgICAgPC9SZWFjdC5GcmFnbWVudD5cbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIH0pfVxuICAgICAgICAgIDwvU0NGYXFzTW9kYWxDb250ZW50PlxuICAgICAgICA8L1NDRmFxc01vZGFsRnJhbWU+XG4gICAgICApfVxuICAgIDwvU0NGYXFzVHJpZ2dlcldyYXBwZXI+XG4gIClcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7QUFBQSxPQUFPQSxLQUFLLElBQUlDLFFBQVEsRUFBRUMsU0FBUyxFQUFFQyxNQUFNLEVBQUVDLFdBQVcsRUFBRUMsT0FBTyxRQUFRLE9BQU87QUFDaEYsU0FBU0MsT0FBTyxRQUFRLDhDQUE4QztBQUN0RSxTQUFTQyxJQUFJLFFBQVEscUJBQXFCO0FBQzFDLFNBQVNDLGlCQUFpQixRQUFRLDBCQUEwQjtBQUM1RCxTQUFTQyxnQkFBZ0IsUUFBUSxpQ0FBaUM7QUFDbEUsU0FBU0MsMkJBQTJCLFFBQVEsNENBQTRDO0FBQ3hGLFNBQVNDLE1BQU0sRUFBRUMsUUFBUSxRQUFRLHlCQUF5QjtBQUMxRCxTQUNFQyxVQUFVLEVBQ1ZDLG9CQUFvQixFQUNwQkMsZ0JBQWdCLEVBQ2hCQyxrQkFBa0IsRUFDbEJDLG9CQUFvQixFQUNwQkMsZUFB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
166
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsInVzZVN0YXRlIiwidXNlRWZmZWN0IiwidXNlUmVmIiwidXNlQ2FsbGJhY2siLCJ1c2VNZW1vIiwiVG9vbHRpcCIsInVzZVQiLCJ1c2VSZXNpemVMaXN0ZW5lciIsInVzZUdsb2JhbENvbnRleHQiLCJ1c2VGcmVxdWVudGx5QXNrZWRRdWVzdGlvbnMiLCJFVkVOVFMiLCJ1c2VFdmVudCIsIlNDRmFxc0NoaXAiLCJTQ0ZhcXNUcmlnZ2VyV3JhcHBlciIsIlNDRmFxc01vZGFsRnJhbWUiLCJTQ0ZhcXNNb2RhbENvbnRlbnQiLCJTQ0ZhcXNDYXRlZ29yeUhlYWRlciIsIlNDRmFxc01vZGFsSXRlbSIsIlNDRmFxc01vZGFsSXRlbVRleHQiLCJtYXBDT1JMYW5nIiwiZ3JvdXBGYXFzQnlDYXRlZ29yeSIsInJlc29sdmVGYXFFbnRpdHlUeXBlIiwianN4IiwiX2pzeCIsImpzeHMiLCJfanN4cyIsIkZhcU1vZGFsSXRlbSIsIl9yZWYiLCJmYXEiLCJvbkNsaWNrIiwiX3JlZiRkaXNhYmxlZCIsImRpc2FibGVkIiwidGV4dFJlZiIsIl91c2VSZXNpemVMaXN0ZW5lciIsInRpdGxlIiwic2hvd1Rvb2x0aXAiLCJjb250ZW50IiwidHlwZSIsImNoaWxkcmVuIiwicmVmIiwiQ2hhdEZvb3RlckZhcXMiLCJfcmVmMiIsIm9uU2VsZWN0RmFxIiwiX3JlZjIkZGlzYWJsZWQiLCJfdXNlVCIsInQiLCJpMThuIiwiZXZlbnQiLCJfdXNlR2xvYmFsQ29udGV4dCIsImFnZW50IiwidGFzayIsImNoaXBzUHJvamVjdCIsInByb2plY3QiLCJjbGllbnQiLCJsYW5nIiwibGFuZ3VhZ2UiLCJhZ2VudElkIiwiaWQiLCJpc0Nsb25lQWdlbnQiLCJpc09yY2hlc3RyYXRvciIsImVudGl0eVR5cGUiLCJfdXNlRnJlcXVlbnRseUFza2VkUXUiLCJmYXFzIiwibG9hZGluZyIsImVycm9yIiwiaGFuZGxlR2V0RnJlcXVlbnRseUFza2VkUXVlc3Rpb25zIiwiZmFxc0J5Q2F0ZWdvcnkiLCJfdXNlU3RhdGUiLCJfdXNlU3RhdGUyIiwiX3NsaWNlZFRvQXJyYXkiLCJpc09wZW4iLCJzZXRJc09wZW4iLCJ3cmFwcGVyUmVmIiwiaGFuZGxlVG9nZ2xlIiwicHJldiIsImhhbmRsZUZhcUNsaWNrIiwiYWlDaGF0U2VsZWN0RkFRIiwib3B0aW9uIiwiaWRfZmFxIiwiY2F0ZWdvcnlfZmFxIiwiY2F0ZWdvcnkiLCJvcmlnaW5fZmFxIiwiYWdlbnRfZW50aXR5IiwiZW50aXR5IiwiaGFuZGxlRXNjYXBlIiwiZSIsImtleSIsImhhbmRsZUNsaWNrT3V0c2lkZSIsInRhcmdldCIsImN1cnJlbnQiLCJjb250YWlucyIsInVuZGVmaW5lZCIsImRvY3VtZW50IiwiYWRkRXZlbnRMaXN0ZW5lciIsInRpbWVvdXRJZCIsInNldFRpbWVvdXQiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwiY2xlYXJUaW1lb3V0IiwibGVuZ3RoIiwicm9sZSIsIm9yZGVyIiwibWFwIiwiX2ZhcXNCeUNhdGVnb3J5JGdyb3VwIiwiaXRlbXMiLCJncm91cGVkIiwiRnJhZ21lbnQiLCJjb25jYXQiLCJ0b0xvd2VyQ2FzZSJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL21vbGVjdWxlcy9DaGF0Rm9vdGVyL0NoYXRGb290ZXJGYXFzLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUsIHVzZUVmZmVjdCwgdXNlUmVmLCB1c2VDYWxsYmFjaywgdXNlTWVtbyB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgVG9vbHRpcCB9IGZyb20gJ0Bwcm9qZWN0Y29yL3Rvb2x0aXB2Mi9saWIvY29tcG9uZW50cy9Ub29sdGlwJ1xuaW1wb3J0IHsgdXNlVCB9IGZyb20gJy4uLy4uLy4uL2hvb2tzL3VzZVQnXG5pbXBvcnQgeyB1c2VSZXNpemVMaXN0ZW5lciB9IGZyb20gJy4uLy4uLy4uL2hvb2tzL3VzZVJlc2l6ZSdcbmltcG9ydCB7IHVzZUdsb2JhbENvbnRleHQgfSBmcm9tICcuLi8uLi8uLi9jb250ZXh0L2dsb2JhbC1jb250ZXh0J1xuaW1wb3J0IHsgdXNlRnJlcXVlbnRseUFza2VkUXVlc3Rpb25zIH0gZnJvbSAnLi4vLi4vLi4vaG9va3MvdXNlRnJlcXVlbnRseUFza2VkUXVlc3Rpb25zJ1xuaW1wb3J0IHsgRVZFTlRTLCB1c2VFdmVudCB9IGZyb20gJy4uLy4uLy4uL2hvb2tzL3VzZUV2ZW50J1xuaW1wb3J0IHtcbiAgU0NGYXFzQ2hpcCxcbiAgU0NGYXFzVHJpZ2dlcldyYXBwZXIsXG4gIFNDRmFxc01vZGFsRnJhbWUsXG4gIFNDRmFxc01vZGFsQ29udGVudCxcbiAgU0NGYXFzQ2F0ZWdvcnlIZWFkZXIsXG4gIFNDRmFxc01vZGFsSXRlbSxcbiAgU0NGYXFzTW9kYWxJdGVtVGV4dCxcbn0gZnJvbSAnLi9DaGF0Rm9vdGVyRmFxcy5zdHlsZXMnXG5pbXBvcnQgeyBtYXBDT1JMYW5nIH0gZnJvbSAnLi4vLi4vLi4vbGFuZy91dGlscydcbmltcG9ydCB0eXBlIHsgRnJlcXVlbnRseUFza2VkUXVlc3Rpb24gfSBmcm9tICcuLi8uLi8uLi90eXBlcy9GcmVxdWVudGx5QXNrZWRRdWVzdGlvbidcbmltcG9ydCB7IGdyb3VwRmFxc0J5Q2F0ZWdvcnksIHJlc29sdmVGYXFFbnRpdHlUeXBlIH0gZnJvbSAnLi9DaGF0Rm9vdGVyRmFxcy5oZWxwZXJzJ1xuXG5leHBvcnQgdHlwZSBGYXFJdGVtID0ge1xuICBpZDogc3RyaW5nXG4gIHRpdGxlOiBzdHJpbmdcbiAgY2F0ZWdvcnk6IHN0cmluZ1xufVxuXG5mdW5jdGlvbiBGYXFNb2RhbEl0ZW0oeyBmYXEsIG9uQ2xpY2ssIGRpc2FibGVkID0gZmFsc2UgfTogeyBmYXE6IEZhcUl0ZW07IG9uQ2xpY2s6ICgpID0+IHZvaWQ7IGRpc2FibGVkPzogYm9vbGVhbiB9KSB7XG4gIGNvbnN0IHRleHRSZWYgPSB1c2VSZWY8SFRNTFNwYW5FbGVtZW50PihudWxsKVxuICBjb25zdCB7IHNob3dUb29sdGlwIH0gPSB1c2VSZXNpemVMaXN0ZW5lcih0ZXh0UmVmLCBbZmFxLnRpdGxlXSlcblxuICBjb25zdCBjb250ZW50ID0gKFxuICAgIDxTQ0ZhcXNNb2RhbEl0ZW0gdHlwZT1cImJ1dHRvblwiIG9uQ2xpY2s9e29uQ2xpY2t9IGRpc2FibGVkPXtkaXNhYmxlZH0+XG4gICAgICA8U0NGYXFzTW9kYWxJdGVtVGV4dCByZWY9e3RleHRSZWZ9PntmYXEudGl0bGV9PC9TQ0ZhcXNNb2RhbEl0ZW1UZXh0PlxuICAgIDwvU0NGYXFzTW9kYWxJdGVtPlxuICApXG5cbiAgcmV0dXJuIDxUb29sdGlwIHRpdGxlPXtzaG93VG9vbHRpcCA/IGZhcS50aXRsZSA6ICcnfT57Y29udGVudH08L1Rvb2x0aXA+XG59XG5cbnR5cGUgQ2hhdEZvb3RlckZhcXNQcm9wcyA9IHtcbiAgb25TZWxlY3RGYXE6IChtZXNzYWdlOiBzdHJpbmcsIGZhcUlkOiBzdHJpbmcpID0+IHZvaWRcbiAgZGlzYWJsZWQ/OiBib29sZWFuXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBDaGF0Rm9vdGVyRmFxcyh7IG9uU2VsZWN0RmFxLCBkaXNhYmxlZCA9IGZhbHNlIH06IENoYXRGb290ZXJGYXFzUHJvcHMpIHtcbiAgY29uc3QgeyB0LCBpMThuIH0gPSB1c2VUKClcbiAgY29uc3QgZXZlbnQgPSB1c2VFdmVudCgpXG4gIGNvbnN0IHsgYWdlbnQsIHRhc2ssIGNoaXBzUHJvamVjdCwgcHJvamVjdCwgY2xpZW50IH0gPSB1c2VHbG9iYWxDb250ZXh0KClcbiAgY29uc3QgbGFuZyA9IG1hcENPUkxhbmcoaTE4bi5sYW5ndWFnZSlcbiAgY29uc3QgYWdlbnRJZCA9IGFnZW50Py5pZFxuXG4gIGNvbnN0IGlzQ2xvbmVBZ2VudCA9IGFnZW50Py50eXBlID09PSAnY2xvbmUnXG4gIGNvbnN0IGlzT3JjaGVzdHJhdG9yID0gYWdlbnQ/LnR5cGUgPT09ICdvcmNoZXN0cmF0b3InXG5cbiAgLy8gTGFzIEZBUXMgc2UgZmlsdHJhbiBwb3IgZWwgYGVudGl0eV90eXBlYCBkZWwgY29udGV4dG8gcGluZWFkbyAocHJvamVjdC9jbGllbnQvdGFzayksIHRhbnRvXG4gIC8vIGFsIGFicmlyIE1BSUEgZGVzZGUgdW5hIHNlY2Npw7NuIGNvbW8gYWwgY2FtYmlhciBkZSBjb252ZXJzYWNpw7NuIChsYSBtZXRhZGF0YSBzZXRlYSBlbCBjb250ZXh0bykuXG4gIGNvbnN0IGVudGl0eVR5cGUgPSByZXNvbHZlRmFxRW50aXR5VHlwZSh7IHRhc2ssIGNoaXBzUHJvamVjdCwgcHJvamVjdCwgY2xpZW50IH0pXG5cbiAgY29uc3QgeyBmYXFzLCBsb2FkaW5nLCBlcnJvciwgaGFuZGxlR2V0RnJlcXVlbnRseUFza2VkUXVlc3Rpb25zIH0gPSB1c2VGcmVxdWVudGx5QXNrZWRRdWVzdGlvbnMoXG4gICAgYWdlbnRJZCxcbiAgICBsYW5nLFxuICAgIGVudGl0eVR5cGVcbiAgKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKChpc0Nsb25lQWdlbnQgfHwgaXNPcmNoZXN0cmF0b3IpICYmIGFnZW50SWQgJiYgbGFuZykge1xuICAgICAgaGFuZGxlR2V0RnJlcXVlbnRseUFza2VkUXVlc3Rpb25zKHsgYWdlbnRJZCwgbGFuZywgZW50aXR5VHlwZSB9KVxuICAgIH1cbiAgfSwgW2lzQ2xvbmVBZ2VudCwgaXNPcmNoZXN0cmF0b3IsIGFnZW50SWQsIGxhbmcsIGVudGl0eVR5cGUsIGhhbmRsZUdldEZyZXF1ZW50bHlBc2tlZFF1ZXN0aW9uc10pXG5cbiAgY29uc3QgZmFxc0J5Q2F0ZWdvcnkgPSB1c2VNZW1vKCgpID0+IGdyb3VwRmFxc0J5Q2F0ZWdvcnkoZmFxcyksIFtmYXFzXSlcblxuICBjb25zdCBbaXNPcGVuLCBzZXRJc09wZW5dID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IHdyYXBwZXJSZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpXG5cbiAgY29uc3QgaGFuZGxlVG9nZ2xlID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIHNldElzT3BlbihwcmV2ID0+ICFwcmV2KVxuICB9LCBbXSlcblxuICBjb25zdCBoYW5kbGVGYXFDbGljayA9IHVzZUNhbGxiYWNrKFxuICAgIChmYXE6IEZyZXF1ZW50bHlBc2tlZFF1ZXN0aW9uKSA9PiB7XG4gICAgICBpZiAoZGlzYWJsZWQpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgICBvblNlbGVjdEZhcShmYXEudGl0bGUsIGZhcS5pZClcbiAgICAgIGV2ZW50KEVWRU5UUy5haUNoYXRTZWxlY3RGQVEsIHtcbiAgICAgICAgb3B0aW9uOiB7XG4gICAgICAgICAgaWRfZmFxOiBmYXEudGl0bGUsXG4gICAgICAgICAgY2F0ZWdvcnlfZmFxOiBmYXEuY2F0ZWdvcnksXG4gICAgICAgICAgb3JpZ2luX2ZhcTogJ2J1dHRvbl9jaGF0JyxcbiAgICAgICAgICBhZ2VudF9lbnRpdHk6IGFnZW50Py5lbnRpdHksXG4gICAgICAgIH0sXG4gICAgICB9KVxuICAgICAgc2V0SXNPcGVuKGZhbHNlKVxuICAgIH0sXG4gICAgW29uU2VsZWN0RmFxLCBldmVudCwgZGlzYWJsZWQsIGFnZW50Py5lbnRpdHldXG4gIClcblxuICBjb25zdCBoYW5kbGVFc2NhcGUgPSB1c2VDYWxsYmFjaygoZTogS2V5Ym9hcmRFdmVudCkgPT4ge1xuICAgIGlmIChlLmtleSA9PT0gJ0VzY2FwZScpIHNldElzT3BlbihmYWxzZSlcbiAgfSwgW10pXG5cbiAgY29uc3QgaGFuZGxlQ2xpY2tPdXRzaWRlID0gdXNlQ2FsbGJhY2soKGU6IE1vdXNlRXZlbnQpID0+IHtcbiAgICBjb25zdCB0YXJnZXQgPSBlLnRhcmdldCBhcyBOb2RlXG4gICAgaWYgKHdyYXBwZXJSZWYuY3VycmVudCAmJiAhd3JhcHBlclJlZi5jdXJyZW50LmNvbnRhaW5zKHRhcmdldCkpIHtcbiAgICAgIHNldElzT3BlbihmYWxzZSlcbiAgICB9XG4gIH0sIFtdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFpc09wZW4pIHJldHVybiB1bmRlZmluZWRcbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdrZXlkb3duJywgaGFuZGxlRXNjYXBlLCB0cnVlKVxuICAgIGNvbnN0IHRpbWVvdXRJZCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vkb3duJywgaGFuZGxlQ2xpY2tPdXRzaWRlKVxuICAgIH0sIDApXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCBoYW5kbGVFc2NhcGUsIHRydWUpXG4gICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZWRvd24nLCBoYW5kbGVDbGlja091dHNpZGUpXG4gICAgICBjbGVhclRpbWVvdXQodGltZW91dElkKVxuICAgIH1cbiAgfSwgW2lzT3BlbiwgaGFuZGxlRXNjYXBlLCBoYW5kbGVDbGlja091dHNpZGVdKVxuXG4gIGlmIChmYXFzLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiBudWxsXG4gIH1cblxuICByZXR1cm4gKFxuICAgIDxTQ0ZhcXNUcmlnZ2VyV3JhcHBlciByZWY9e3dyYXBwZXJSZWZ9PlxuICAgICAgPFNDRmFxc0NoaXAgdHlwZT1cImJ1dHRvblwiIG9uQ2xpY2s9e2hhbmRsZVRvZ2dsZX0gYXJpYS1leHBhbmRlZD17aXNPcGVufSBhcmlhLWhhc3BvcHVwPVwidHJ1ZVwiPlxuICAgICAgICB7dCgnaG9tZU1lbnUuZmFxLnRpdGxlJyl9XG4gICAgICA8L1NDRmFxc0NoaXA+XG4gICAgICB7aXNPcGVuICYmIChcbiAgICAgICAgPFNDRmFxc01vZGFsRnJhbWUgcm9sZT1cImRpYWxvZ1wiIGFyaWEtbGFiZWw9e3QoJ2hvbWVNZW51LmZhcS50aXRsZScpfT5cbiAgICAgICAgICA8U0NGYXFzTW9kYWxDb250ZW50PlxuICAgICAgICAgICAgeyFsb2FkaW5nICYmXG4gICAgICAgICAgICAgICFlcnJvciAmJlxuICAgICAgICAgICAgICBmYXFzQnlDYXRlZ29yeS5vcmRlci5tYXAoY2F0ZWdvcnkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGl0ZW1zID0gZmFxc0J5Q2F0ZWdvcnkuZ3JvdXBlZFtjYXRlZ29yeV0gPz8gW11cbiAgICAgICAgICAgICAgICBpZiAoaXRlbXMubGVuZ3RoID09PSAwKSByZXR1cm4gbnVsbFxuICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICA8UmVhY3QuRnJhZ21lbnQga2V5PXtjYXRlZ29yeX0+XG4gICAgICAgICAgICAgICAgICAgIHtjYXRlZ29yeSAhPT0gJ3VuZGVmaW5lZCcgJiYgKFxuICAgICAgICAgICAgICAgICAgICAgIDxTQ0ZhcXNDYXRlZ29yeUhlYWRlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt0KGBob21lTWVudS5mYXEuY2F0ZWdvcmllcy4ke2NhdGVnb3J5LnRvTG93ZXJDYXNlKCl9YCl9XG4gICAgICAgICAgICAgICAgICAgICAgPC9TQ0ZhcXNDYXRlZ29yeUhlYWRlcj5cbiAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAge2l0ZW1zLm1hcChmYXEgPT4gKFxuICAgICAgICAgICAgICAgICAgICAgIDxGYXFNb2RhbEl0ZW1cbiAgICAgICAgICAgICAgICAgICAgICAgIGtleT17ZmFxLmlkfVxuICAgICAgICAgICAgICAgICAgICAgICAgZmFxPXt7IGlkOiBmYXEuaWQsIHRpdGxlOiBmYXEudGl0bGUsIGNhdGVnb3J5OiBmYXEuY2F0ZWdvcnkgfHwgJ3VuZGVmaW5lZCcgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXtkaXNhYmxlZH1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IGhhbmRsZUZhcUNsaWNrKGZhcSl9XG4gICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICAgICAgICA8L1JlYWN0LkZyYWdtZW50PlxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgfSl9XG4gICAgICAgICAgPC9TQ0ZhcXNNb2RhbENvbnRlbnQ+XG4gICAgICAgIDwvU0NGYXFzTW9kYWxGcmFtZT5cbiAgICAgICl9XG4gICAgPC9TQ0ZhcXNUcmlnZ2VyV3JhcHBlcj5cbiAgKVxufVxuIl0sIm1hcHBpbmdzIjoiO0FBQUEsT0FBT0EsS0FBSyxJQUFJQyxRQUFRLEVBQUVDLFNBQVMsRUFBRUMsTUFBTSxFQUFFQyxXQUFXLEVBQUVDLE9BQU8sUUFBUSxPQUFPO0FBQ2hGLFNBQVNDLE9BQU8sUUFBUSw4Q0FBOEM7QUFDdEUsU0FBU0MsSUFBSSxRQUFRLHFCQUFxQjtBQUMxQyxTQUFTQyxpQkFBaUIsUUFBUSwwQkFBMEI7QUFDNUQsU0FBU0MsZ0JBQWdCLFFBQVEsaUNBQWlDO0FBQ2xFLFNBQVNDLDJCQUEyQixRQUFRLDRDQUE0QztBQUN4RixTQUFTQyxNQUFNLEVBQUVDLFFBQVEsUUFBUSx5QkFBeUI7QUFDMUQsU0FDRUMsVUFBVSxFQUNWQyxvQkFBb0IsRUFDcEJDLGdCQUFnQixFQUNoQkMsa0JBQWtCLEVBQ2xCQyxvQkFBb0IsRUFDcEJDLGVBQWUsRUFDZkMsbUJBQW1CLFFBQ2QseUJBQXlCO0FBQ2hDLFNBQVNDLFVBQVUsUUFBUSxxQkFBcUI7QUFFaEQsU0FBU0MsbUJBQW1CLEVBQUVDLG9CQUFvQixRQUFRLDBCQUEwQjtBQUFBLFNBQUFDLEdBQUEsSUFBQUMsSUFBQSxFQUFBQyxJQUFBLElBQUFDLEtBQUE7QUFRcEYsU0FBU0MsWUFBWUEsQ0FBQUMsSUFBQSxFQUFnRztFQUFBLElBQTdGQyxHQUFHLEdBQUFELElBQUEsQ0FBSEMsR0FBRztJQUFFQyxPQUFPLEdBQUFGLElBQUEsQ0FBUEUsT0FBTztJQUFBQyxhQUFBLEdBQUFILElBQUEsQ0FBRUksUUFBUTtJQUFSQSxRQUFRLEdBQUFELGFBQUEsY0FBRyxLQUFLLEdBQUFBLGFBQUE7RUFDcEQsSUFBTUUsT0FBTyxHQUFHOUIsTUFBTSxDQUFrQixJQUFJLENBQUM7RUFDN0MsSUFBQStCLGtCQUFBLEdBQXdCMUIsaUJBQWlCLENBQUN5QixPQUFP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
@@ -0,0 +1,43 @@
1
+ export var abbreviateSpecialistInAgentName = function abbreviateSpecialistInAgentName(agentName) {
2
+ if (!agentName || typeof agentName !== 'string') return agentName;
3
+ return agentName.replace(/\b(especialista|especialist)\b/gi, 'Esp.').replace(/\bspecialist\b/gi, 'Spec.');
4
+ };
5
+ export var resolveToggleChatModalId = function resolveToggleChatModalId(currentModalChatId, clickedChatId) {
6
+ if (currentModalChatId && currentModalChatId !== clickedChatId) return null;
7
+ return currentModalChatId === clickedChatId ? null : clickedChatId;
8
+ };
9
+ export var isChatListScrolledToBottom = function isChatListScrolledToBottom(scrollTop, scrollHeight, clientHeight) {
10
+ var thresholdPx = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 10;
11
+ return scrollTop + clientHeight >= scrollHeight - thresholdPx;
12
+ };
13
+ export var countSidebarAgentNavButtons = function countSidebarAgentNavButtons(showMarketplaceSidebarButton, canViewAgents, canViewSkills) {
14
+ return (showMarketplaceSidebarButton ? 1 : 0) + (canViewAgents ? 1 : 0) + (canViewSkills ? 1 : 0);
15
+ };
16
+ export var resolveAgentsHubSection = function resolveAgentsHubSection(showNewChat, agentsNavActive) {
17
+ return showNewChat && (agentsNavActive === 'myAgents' || agentsNavActive === 'maiaker' || agentsNavActive === 'mySkills');
18
+ };
19
+ export var resolveShowNewChatButton = function resolveShowNewChatButton(params) {
20
+ var _params$selectedAgent, _params$selectedAgent2, _params$selectedAgent3;
21
+ var agentUsable = !((_params$selectedAgent = params.selectedAgent) !== null && _params$selectedAgent !== void 0 && _params$selectedAgent.is_deleted) && !((_params$selectedAgent2 = params.selectedAgent) !== null && _params$selectedAgent2 !== void 0 && _params$selectedAgent2.has_not_permissions) && !((_params$selectedAgent3 = params.selectedAgent) !== null && _params$selectedAgent3 !== void 0 && _params$selectedAgent3.has_not_access);
22
+ if (params.isAgentsHubSection) return true;
23
+ if (params.showNewChat || params.hasError || params.loadingChats || params.isLegacyContextSession) {
24
+ return false;
25
+ }
26
+ if (params.userCanViewAgents) return agentUsable;
27
+ return agentUsable;
28
+ };
29
+ export var shouldUseMaiaIconForChatAgent = function shouldUseMaiaIconForChatAgent(agentType) {
30
+ return agentType === 'clone' || agentType === 'orchestrator';
31
+ };
32
+ export var resolveSidebarChatAgentLabel = function resolveSidebarChatAgentLabel(params) {
33
+ var base = params.agentType === 'clone' || params.agentType === 'orchestrator' ? abbreviateSpecialistInAgentName(params.agentName || '') : params.agentName || '';
34
+ if (params.projectName) return "".concat(base, " - ").concat(params.projectName);
35
+ return base;
36
+ };
37
+ export var isChatUnreadIndicator = function isChatUnreadIndicator(isRead, isGenerating) {
38
+ return isRead === false && !isGenerating;
39
+ };
40
+ export var shouldCloseModalOnOutsideClick = function shouldCloseModalOnOutsideClick(isOpenModal, target) {
41
+ return Boolean(isOpenModal && !target.closest('[data-modal-container]'));
42
+ };
43
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJhYmJyZXZpYXRlU3BlY2lhbGlzdEluQWdlbnROYW1lIiwiYWdlbnROYW1lIiwicmVwbGFjZSIsInJlc29sdmVUb2dnbGVDaGF0TW9kYWxJZCIsImN1cnJlbnRNb2RhbENoYXRJZCIsImNsaWNrZWRDaGF0SWQiLCJpc0NoYXRMaXN0U2Nyb2xsZWRUb0JvdHRvbSIsInNjcm9sbFRvcCIsInNjcm9sbEhlaWdodCIsImNsaWVudEhlaWdodCIsInRocmVzaG9sZFB4IiwiYXJndW1lbnRzIiwibGVuZ3RoIiwidW5kZWZpbmVkIiwiY291bnRTaWRlYmFyQWdlbnROYXZCdXR0b25zIiwic2hvd01hcmtldHBsYWNlU2lkZWJhckJ1dHRvbiIsImNhblZpZXdBZ2VudHMiLCJjYW5WaWV3U2tpbGxzIiwicmVzb2x2ZUFnZW50c0h1YlNlY3Rpb24iLCJzaG93TmV3Q2hhdCIsImFnZW50c05hdkFjdGl2ZSIsInJlc29sdmVTaG93TmV3Q2hhdEJ1dHRvbiIsInBhcmFtcyIsIl9wYXJhbXMkc2VsZWN0ZWRBZ2VudCIsIl9wYXJhbXMkc2VsZWN0ZWRBZ2VudDIiLCJfcGFyYW1zJHNlbGVjdGVkQWdlbnQzIiwiYWdlbnRVc2FibGUiLCJzZWxlY3RlZEFnZW50IiwiaXNfZGVsZXRlZCIsImhhc19ub3RfcGVybWlzc2lvbnMiLCJoYXNfbm90X2FjY2VzcyIsImlzQWdlbnRzSHViU2VjdGlvbiIsImhhc0Vycm9yIiwibG9hZGluZ0NoYXRzIiwiaXNMZWdhY3lDb250ZXh0U2Vzc2lvbiIsInVzZXJDYW5WaWV3QWdlbnRzIiwic2hvdWxkVXNlTWFpYUljb25Gb3JDaGF0QWdlbnQiLCJhZ2VudFR5cGUiLCJyZXNvbHZlU2lkZWJhckNoYXRBZ2VudExhYmVsIiwiYmFzZSIsInByb2plY3ROYW1lIiwiY29uY2F0IiwiaXNDaGF0VW5yZWFkSW5kaWNhdG9yIiwiaXNSZWFkIiwiaXNHZW5lcmF0aW5nIiwic2hvdWxkQ2xvc2VNb2RhbE9uT3V0c2lkZUNsaWNrIiwiaXNPcGVuTW9kYWwiLCJ0YXJnZXQiLCJCb29sZWFuIiwiY2xvc2VzdCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL21vbGVjdWxlcy9TaWRlYmFyL1NpZGViYXIuaGVscGVycy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgYWJicmV2aWF0ZVNwZWNpYWxpc3RJbkFnZW50TmFtZSA9IChhZ2VudE5hbWU6IHN0cmluZyk6IHN0cmluZyA9PiB7XG4gIGlmICghYWdlbnROYW1lIHx8IHR5cGVvZiBhZ2VudE5hbWUgIT09ICdzdHJpbmcnKSByZXR1cm4gYWdlbnROYW1lXG4gIHJldHVybiBhZ2VudE5hbWUucmVwbGFjZSgvXFxiKGVzcGVjaWFsaXN0YXxlc3BlY2lhbGlzdClcXGIvZ2ksICdFc3AuJykucmVwbGFjZSgvXFxic3BlY2lhbGlzdFxcYi9naSwgJ1NwZWMuJylcbn1cblxuZXhwb3J0IGNvbnN0IHJlc29sdmVUb2dnbGVDaGF0TW9kYWxJZCA9IChjdXJyZW50TW9kYWxDaGF0SWQ6IHN0cmluZyB8IG51bGwsIGNsaWNrZWRDaGF0SWQ6IHN0cmluZyk6IHN0cmluZyB8IG51bGwgPT4ge1xuICBpZiAoY3VycmVudE1vZGFsQ2hhdElkICYmIGN1cnJlbnRNb2RhbENoYXRJZCAhPT0gY2xpY2tlZENoYXRJZCkgcmV0dXJuIG51bGxcbiAgcmV0dXJuIGN1cnJlbnRNb2RhbENoYXRJZCA9PT0gY2xpY2tlZENoYXRJZCA/IG51bGwgOiBjbGlja2VkQ2hhdElkXG59XG5cbmV4cG9ydCBjb25zdCBpc0NoYXRMaXN0U2Nyb2xsZWRUb0JvdHRvbSA9IChcbiAgc2Nyb2xsVG9wOiBudW1iZXIsXG4gIHNjcm9sbEhlaWdodDogbnVtYmVyLFxuICBjbGllbnRIZWlnaHQ6IG51bWJlcixcbiAgdGhyZXNob2xkUHggPSAxMFxuKTogYm9vbGVhbiA9PiBzY3JvbGxUb3AgKyBjbGllbnRIZWlnaHQgPj0gc2Nyb2xsSGVpZ2h0IC0gdGhyZXNob2xkUHhcblxuZXhwb3J0IHR5cGUgU2lkZWJhckFnZW50TmF2QnV0dG9uQ291bnQgPSAwIHwgMSB8IDIgfCAzXG5cbmV4cG9ydCBjb25zdCBjb3VudFNpZGViYXJBZ2VudE5hdkJ1dHRvbnMgPSAoXG4gIHNob3dNYXJrZXRwbGFjZVNpZGViYXJCdXR0b246IGJvb2xlYW4sXG4gIGNhblZpZXdBZ2VudHM6IGJvb2xlYW4sXG4gIGNhblZpZXdTa2lsbHM6IGJvb2xlYW5cbik6IFNpZGViYXJBZ2VudE5hdkJ1dHRvbkNvdW50ID0+XG4gICgoc2hvd01hcmtldHBsYWNlU2lkZWJhckJ1dHRvbiA/IDEgOiAwKSArXG4gICAgKGNhblZpZXdBZ2VudHMgPyAxIDogMCkgK1xuICAgIChjYW5WaWV3U2tpbGxzID8gMSA6IDApKSBhcyBTaWRlYmFyQWdlbnROYXZCdXR0b25Db3VudFxuXG5leHBvcnQgY29uc3QgcmVzb2x2ZUFnZW50c0h1YlNlY3Rpb24gPSAoXG4gIHNob3dOZXdDaGF0OiBib29sZWFuLFxuICBhZ2VudHNOYXZBY3RpdmU6ICdtYWlha2VyJyB8ICdteUFnZW50cycgfCAnbXlTa2lsbHMnIHwgbnVsbFxuKTogYm9vbGVhbiA9PlxuICBzaG93TmV3Q2hhdCAmJiAoYWdlbnRzTmF2QWN0aXZlID09PSAnbXlBZ2VudHMnIHx8IGFnZW50c05hdkFjdGl2ZSA9PT0gJ21haWFrZXInIHx8IGFnZW50c05hdkFjdGl2ZSA9PT0gJ215U2tpbGxzJylcblxuZXhwb3J0IHR5cGUgU2VsZWN0ZWRBZ2VudEdhdGUgPSB7XG4gIGlzX2RlbGV0ZWQ/OiBib29sZWFuXG4gIGhhc19ub3RfcGVybWlzc2lvbnM/OiBib29sZWFuXG4gIGhhc19ub3RfYWNjZXNzPzogYm9vbGVhblxufVxuXG5leHBvcnQgY29uc3QgcmVzb2x2ZVNob3dOZXdDaGF0QnV0dG9uID0gKHBhcmFtczoge1xuICBpc0FnZW50c0h1YlNlY3Rpb246IGJvb2xlYW5cbiAgc2hvd05ld0NoYXQ6IGJvb2xlYW5cbiAgaGFzRXJyb3I6IGJvb2xlYW5cbiAgbG9hZGluZ0NoYXRzOiBib29sZWFuXG4gIGlzTGVnYWN5Q29udGV4dFNlc3Npb246IGJvb2xlYW5cbiAgdXNlckNhblZpZXdBZ2VudHM6IGJvb2xlYW5cbiAgc2VsZWN0ZWRBZ2VudD86IFNlbGVjdGVkQWdlbnRHYXRlIHwgbnVsbFxufSk6IGJvb2xlYW4gPT4ge1xuICBjb25zdCBhZ2VudFVzYWJsZSA9XG4gICAgIXBhcmFtcy5zZWxlY3RlZEFnZW50Py5pc19kZWxldGVkICYmXG4gICAgIXBhcmFtcy5zZWxlY3RlZEFnZW50Py5oYXNfbm90X3Blcm1pc3Npb25zICYmXG4gICAgIXBhcmFtcy5zZWxlY3RlZEFnZW50Py5oYXNfbm90X2FjY2Vzc1xuXG4gIGlmIChwYXJhbXMuaXNBZ2VudHNIdWJTZWN0aW9uKSByZXR1cm4gdHJ1ZVxuXG4gIGlmIChwYXJhbXMuc2hvd05ld0NoYXQgfHwgcGFyYW1zLmhhc0Vycm9yIHx8IHBhcmFtcy5sb2FkaW5nQ2hhdHMgfHwgcGFyYW1zLmlzTGVnYWN5Q29udGV4dFNlc3Npb24pIHtcbiAgICByZXR1cm4gZmFsc2VcbiAgfVxuXG4gIGlmIChwYXJhbXMudXNlckNhblZpZXdBZ2VudHMpIHJldHVybiBhZ2VudFVzYWJsZVxuICByZXR1cm4gYWdlbnRVc2FibGVcbn1cblxuZXhwb3J0IGNvbnN0IHNob3VsZFVzZU1haWFJY29uRm9yQ2hhdEFnZW50ID0gKGFnZW50VHlwZT86IHN0cmluZyk6IGJvb2xlYW4gPT5cbiAgYWdlbnRUeXBlID09PSAnY2xvbmUnIHx8IGFnZW50VHlwZSA9PT0gJ29yY2hlc3RyYXRvcidcblxuZXhwb3J0IGNvbnN0IHJlc29sdmVTaWRlYmFyQ2hhdEFnZW50TGFiZWwgPSAocGFyYW1zOiB7XG4gIGFnZW50VHlwZT86IHN0cmluZ1xuICBhZ2VudE5hbWU/OiBzdHJpbmdcbiAgcHJvamVjdE5hbWU/OiBzdHJpbmcgfCBudWxsXG59KTogc3RyaW5nID0+IHtcbiAgY29uc3QgYmFzZSA9XG4gICAgcGFyYW1zLmFnZW50VHlwZSA9PT0gJ2Nsb25lJyB8fCBwYXJhbXMuYWdlbnRUeXBlID09PSAnb3JjaGVzdHJhdG9yJ1xuICAgICAgPyBhYmJyZXZpYXRlU3BlY2lhbGlzdEluQWdlbnROYW1lKHBhcmFtcy5hZ2VudE5hbWUgfHwgJycpXG4gICAgICA6IHBhcmFtcy5hZ2VudE5hbWUgfHwgJydcbiAgaWYgKHBhcmFtcy5wcm9qZWN0TmFtZSkgcmV0dXJuIGAke2Jhc2V9IC0gJHtwYXJhbXMucHJvamVjdE5hbWV9YFxuICByZXR1cm4gYmFzZVxufVxuXG5leHBvcnQgY29uc3QgaXNDaGF0VW5yZWFkSW5kaWNhdG9yID0gKGlzUmVhZDogYm9vbGVhbiB8IHVuZGVmaW5lZCwgaXNHZW5lcmF0aW5nOiBib29sZWFuKTogYm9vbGVhbiA9PlxuICBpc1JlYWQgPT09IGZhbHNlICYmICFpc0dlbmVyYXRpbmdcblxuZXhwb3J0IGNvbnN0IHNob3VsZENsb3NlTW9kYWxPbk91dHNpZGVDbGljayA9IChpc09wZW5Nb2RhbDogc3RyaW5nIHwgbnVsbCwgdGFyZ2V0OiBFbGVtZW50KTogYm9vbGVhbiA9PlxuICBCb29sZWFuKGlzT3Blbk1vZGFsICYmICF0YXJnZXQuY2xvc2VzdCgnW2RhdGEtbW9kYWwtY29udGFpbmVyXScpKVxuIl0sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLElBQU1BLCtCQUErQixHQUFHLFNBQWxDQSwrQkFBK0JBLENBQUlDLFNBQWlCLEVBQWE7RUFDNUUsSUFBSSxDQUFDQSxTQUFTLElBQUksT0FBT0EsU0FBUyxLQUFLLFFBQVEsRUFBRSxPQUFPQSxTQUFTO0VBQ2pFLE9BQU9BLFNBQVMsQ0FBQ0MsT0FBTyxDQUFDLGtDQUFrQyxFQUFFLE1BQU0sQ0FBQyxDQUFDQSxPQUFPLENBQUMsa0JBQWtCLEVBQUUsT0FBTyxDQUFDO0FBQzNHLENBQUM7QUFFRCxPQUFPLElBQU1DLHdCQUF3QixHQUFHLFNBQTNCQSx3QkFBd0JBLENBQUlDLGtCQUFpQyxFQUFFQyxhQUFxQixFQUFvQjtFQUNuSCxJQUFJRCxrQkFBa0IsSUFBSUEsa0JBQWtCLEtBQUtDLGFBQWEsRUFBRSxPQUFPLElBQUk7RUFDM0UsT0FBT0Qsa0JBQWtCLEtBQUtDLGFBQWEsR0FBRyxJQUFJLEdBQUdBLGFBQWE7QUFDcEUsQ0FBQztBQUVELE9BQU8sSUFBTUMsMEJBQTBCLEdBQUcsU0FBN0JBLDBCQUEwQkEsQ0FDckNDLFNBQWlCLEVBQ2pCQyxZQUFvQixFQUNwQkMsWUFBb0I7RUFBQSxJQUNwQkMsV0FBVyxHQUFBQyxTQUFBLENBQUFDLE1BQUEsUUFBQUQsU0FBQSxRQUFBRSxTQUFBLEdBQUFGLFNBQUEsTUFBRyxFQUFFO0VBQUEsT0FDSkosU0FBUyxHQUFHRSxZQUFZLElBQUlELFlBQVksR0FBR0UsV0FBVztBQUFBO0FBSXBFLE9BQU8sSUFBTUksMkJBQTJCLEdBQUcsU0FBOUJBLDJCQUEyQkEsQ0FDdENDLDRCQUFxQyxFQUNyQ0MsYUFBc0IsRUFDdEJDLGFBQXNCO0VBQUEsT0FFckIsQ0FBQ0YsNEJBQTRCLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FDbkNDLGFBQWEsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQ3RCQyxhQUFhLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUFBLENBQStCO0FBRTFELE9BQU8sSUFBTUMsdUJBQXVCLEdBQUcsU0FBMUJBLHVCQUF1QkEsQ0FDbENDLFdBQW9CLEVBQ3BCQyxlQUEyRDtFQUFBLE9BRTNERCxXQUFXLEtBQUtDLGVBQWUsS0FBSyxVQUFVLElBQUlBLGVBQWUsS0FBSyxTQUFTLElBQUlBLGVBQWUsS0FBSyxVQUFVLENBQUM7QUFBQTtBQVFwSCxPQUFPLElBQU1DLHdCQUF3QixHQUFHLFNBQTNCQSx3QkFBd0JBLENBQUlDLE1BUXhDLEVBQWM7RUFBQSxJQUFBQyxxQkFBQSxFQUFBQyxzQkFBQSxFQUFBQyxzQkFBQTtFQUNiLElBQU1DLFdBQVcsR0FDZixHQUFBSCxxQkFBQSxHQUFDRCxNQUFNLENBQUNLLGFBQWEsY0FBQUoscUJBQUEsZUFBcEJBLHFCQUFBLENBQXNCSyxVQUFVLEtBQ2pDLEdBQUFKLHNCQUFBLEdBQUNGLE1BQU0sQ0FBQ0ssYUFBYSxjQUFBSCxzQkFBQSxlQUFwQkEsc0JBQUEsQ0FBc0JLLG1CQUFtQixLQUMxQyxHQUFBSixzQkFBQSxHQUFDSCxNQUFNLENBQUNLLGFBQWEsY0FBQUYsc0JBQUEsZUFBcEJBLHNCQUFBLENBQXNCSyxjQUFjO0VBRXZDLElBQUlSLE1BQU0sQ0FBQ1Msa0JBQWtCLEVBQUUsT0FBTyxJQUFJO0VBRTFDLElBQUlULE1BQU0sQ0FBQ0gsV0FBVyxJQUFJRyxNQUFNLENBQUNVLFFBQVEsSUFBSVYsTUFBTSxDQUFDVyxZQUFZLElBQUlYLE1BQU0sQ0FBQ1ksc0JBQXNCLEVBQUU7SUFDakcsT0FBTyxLQUFLO0VBQ2Q7RUFFQSxJQUFJWixNQUFNLENBQUNhLGlCQUFpQixFQUFFLE9BQU9ULFdBQVc7RUFDaEQsT0FBT0EsV0FBVztBQUNwQixDQUFDO0FBRUQsT0FBTyxJQUFNVSw2QkFBNkIsR0FBRyxTQUFoQ0EsNkJBQTZCQSxDQUFJQyxTQUFrQjtFQUFBLE9BQzlEQSxTQUFTLEtBQUssT0FBTyxJQUFJQSxTQUFTLEtBQUssY0FBYztBQUFBO0FBRXZELE9BQU8sSUFBTUMsNEJBQTRCLEdBQUcsU0FBL0JBLDRCQUE0QkEsQ0FBSWhCLE1BSTVDLEVBQWE7RUFDWixJQUFNaUIsSUFBSSxHQUNSakIsTUFBTSxDQUFDZSxTQUFTLEtBQUssT0FBTyxJQUFJZixNQUFNLENBQUNlLFNBQVMsS0FBSyxjQUFjLEdBQy9EckMsK0JBQStCLENBQUNzQixNQUFNLENBQUNyQixTQUFTLElBQUksRUFBRSxDQUFDLEdBQ3ZEcUIsTUFBTSxDQUFDckIsU0FBUyxJQUFJLEVBQUU7RUFDNUIsSUFBSXFCLE1BQU0sQ0FBQ2tCLFdBQVcsRUFBRSxVQUFBQyxNQUFBLENBQVVGLElBQUksU0FBQUUsTUFBQSxDQUFNbkIsTUFBTSxDQUFDa0IsV0FBVztFQUM5RCxPQUFPRCxJQUFJO0FBQ2IsQ0FBQztBQUVELE9BQU8sSUFBTUcscUJBQXFCLEdBQUcsU0FBeEJBLHFCQUFxQkEsQ0FBSUMsTUFBMkIsRUFBRUMsWUFBcUI7RUFBQSxPQUN0RkQsTUFBTSxLQUFLLEtBQUssSUFBSSxDQUFDQyxZQUFZO0FBQUE7QUFFbkMsT0FBTyxJQUFNQyw4QkFBOEIsR0FBRyxTQUFqQ0EsOEJBQThCQSxDQUFJQyxXQUEwQixFQUFFQyxNQUFlO0VBQUEsT0FDeEZDLE9BQU8sQ0FBQ0YsV0FBVyxJQUFJLENBQUNDLE1BQU0sQ0FBQ0UsT0FBTyxDQUFDLHdCQUF3QixDQUFDLENBQUM7QUFBQSIsImlnbm9yZUxpc3QiOltdfQ==