@projectcor/maia-components 2.11.103-4 → 2.11.103-5

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 (72) hide show
  1. package/lib/App.js +44 -19
  2. package/lib/components/atoms/MAIAInput/MAIAInput.js +1 -6
  3. package/lib/components/atoms/icons/index.js +1 -2
  4. package/lib/components/index.js +2 -1
  5. package/lib/components/molecules/AbmSection/AbmAccessibilitySection/AbmAccessibilitySection.js +91 -4
  6. package/lib/components/molecules/ChatAIMessages/ChatAIMessages.js +7 -46
  7. package/lib/components/molecules/ChatAIModal/ChatAIModal.js +69 -308
  8. package/lib/components/molecules/ChatAIModal/ChatAIModal.styles.js +18 -28
  9. package/lib/components/molecules/ChatAIModal/components/ChatAiModalFooter/ChatAiModalFooter.js +2 -9
  10. package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeader.js +61 -69
  11. package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeader.styles.js +1 -5
  12. package/lib/components/molecules/ChatFooter/ChatFooter.js +2 -4
  13. package/lib/components/molecules/Sidebar/Sidebar.js +61 -104
  14. package/lib/components/molecules/Sidebar/Sidebar.layout.styles.js +1 -16
  15. package/lib/components/molecules/Sidebar/Sidebar.styles.js +29 -30
  16. package/lib/components/organisms/AbmAgentModal/AbmAgentModal.js +35 -6
  17. package/lib/components/organisms/ChatAI/ChatAI.js +40 -131
  18. package/lib/components/organisms/ChatAIPage/ChatAIPage.js +543 -0
  19. package/lib/components/organisms/ChatAIPage/ChatAIPage.styles.js +16 -0
  20. package/lib/components/organisms/ChatAIPage/index.js +3 -0
  21. package/lib/context/global-context.js +1 -3
  22. package/lib/dev/DevMaiaPage.js +30 -0
  23. package/lib/hooks/useAgentModel/useCreateAgent.js +61 -14
  24. package/lib/hooks/useAgentModel/useUpdateAgent.js +58 -11
  25. package/lib/hooks/useChatManager/useChatManager.js +438 -530
  26. package/lib/hooks/useChatMessages/useChatMessages.js +236 -427
  27. package/lib/hooks/useChats/useChats.js +4 -21
  28. package/lib/hooks/useEvent.js +2 -1
  29. package/lib/hooks/useOrchestratorStream/useOrchestratorStream.interface.js +1 -1
  30. package/lib/hooks/useOrchestratorStream/useOrchestratorStream.js +521 -139
  31. package/lib/hooks/useStreamingMessage/index.js +3 -2
  32. package/lib/hooks/useStreamingMessage/streamingStore.js +69 -0
  33. package/lib/hooks/useStreamingMessage/useStreamingMessage.js +17 -13
  34. package/lib/index.js +5 -2
  35. package/lib/lang/br/index.js +9 -11
  36. package/lib/lang/en/index.js +9 -11
  37. package/lib/lang/es/index.js +9 -11
  38. package/lib/lang/fr/index.js +10 -13
  39. package/lib/services/maia/Agents/connectors.js +250 -0
  40. package/lib/services/maia/Chats/getChatsByUserId.js +4 -6
  41. package/lib/services/maia/Chats/index.js +1 -3
  42. package/lib/store/chatsStore.types.js +1 -1
  43. package/lib/store/useChatsStore.js +12 -149
  44. package/lib/types/Chat.js +1 -1
  45. package/lib/types/agentModal.js +1 -1
  46. package/lib/utils/normalizeAgentConnectors.js +28 -3
  47. package/package.json +3 -3
  48. package/lib/components/atoms/SessionGeneratingDot/SessionGeneratingDot.js +0 -20
  49. package/lib/components/atoms/SessionGeneratingDot/SessionGeneratingDot.styles.js +0 -20
  50. package/lib/components/atoms/SessionGeneratingDot/index.js +0 -2
  51. package/lib/components/atoms/icons/MaiaSparkleIcon.js +0 -75
  52. package/lib/components/molecules/ChatAIModal/components/MaiaMinimizedPill/MaiaMinimizedPill.js +0 -66
  53. package/lib/components/molecules/ChatAIModal/components/MaiaMinimizedPill/MaiaMinimizedPill.styles.js +0 -55
  54. package/lib/components/molecules/ChatAIModal/components/MaiaMinimizedPill/index.js +0 -2
  55. package/lib/hooks/useMinimizedPillBottomOffset.js +0 -97
  56. package/lib/services/maia/Chats/markSessionAsRead.js +0 -32
  57. package/lib/store/chatsSidebarOptimistic.js +0 -92
  58. package/lib/store/maiaMinimizedPersistence.js +0 -49
  59. package/lib/store/sessions/activeView.js +0 -22
  60. package/lib/store/sessions/index.js +0 -9
  61. package/lib/store/sessions/sessionHitlContext.js +0 -15
  62. package/lib/store/sessions/sessionNotificationSound.js +0 -57
  63. package/lib/store/sessions/sessionNotifications.js +0 -110
  64. package/lib/store/sessions/sessionNotifications.types.js +0 -2
  65. package/lib/store/sessions/sessionStreamManager.js +0 -576
  66. package/lib/store/sessions/sessionStreamingText.js +0 -80
  67. package/lib/store/sessions/sessions.types.js +0 -35
  68. package/lib/store/sessions/useSessionMeta.js +0 -39
  69. package/lib/store/sessions/useSessionStreamingText.js +0 -18
  70. package/lib/store/sessions/useSessionsStore.js +0 -197
  71. package/lib/utils/formatUnreadCount.js +0 -6
  72. package/lib/utils/maiaHostOpen.js +0 -54
package/lib/App.js CHANGED
@@ -1,17 +1,34 @@
1
1
  import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
2
2
  /* eslint-disable react/button-has-type */
3
3
  import { useState } from 'react';
4
+ import { Routes, Route, Link } from 'react-router-dom';
4
5
  import { DevChatAI } from './dev/DevChatAI';
5
6
  import { DevProjectSummary } from './dev/ProjectSummary';
7
+ import { DevMaiaPage } from './dev/DevMaiaPage';
6
8
  import { DevContextMentionInput } from './dev/DevContextMentionInput';
7
9
  import { Providers } from './dev/Providers';
8
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
10
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
9
11
  var PAGES = {
10
12
  'Resumen de proyectos': DevProjectSummary,
11
13
  'Chat Agente PM': DevChatAI,
12
14
  'Context Mention Input': DevContextMentionInput
13
15
  };
14
- function App() {
16
+ var DEV_PORTALS = /*#__PURE__*/_jsxs(_Fragment, {
17
+ children: [/*#__PURE__*/_jsx("div", {
18
+ id: "modals-portal-maia-chat-agent"
19
+ }), /*#__PURE__*/_jsx("div", {
20
+ id: "abm-agent-modal"
21
+ }), /*#__PURE__*/_jsx("div", {
22
+ id: "snackbar-portal-maia-chat-agent"
23
+ }), /*#__PURE__*/_jsx("div", {
24
+ id: "emoji-picker-container"
25
+ }), /*#__PURE__*/_jsx("div", {
26
+ id: "emoji-picker-container-maia-chat-agent"
27
+ }), /*#__PURE__*/_jsx("div", {
28
+ id: "modal-portal-video-onboarding"
29
+ })]
30
+ });
31
+ function DevShell() {
15
32
  var _useState = useState('Context Mention Input'),
16
33
  _useState2 = _slicedToArray(_useState, 2),
17
34
  page = _useState2[0],
@@ -19,13 +36,14 @@ function App() {
19
36
  var Component = PAGES[page];
20
37
  var pages = Object.keys(PAGES);
21
38
  return /*#__PURE__*/_jsxs(Providers, {
22
- children: [/*#__PURE__*/_jsx("div", {
39
+ children: [/*#__PURE__*/_jsxs("div", {
23
40
  style: {
24
41
  display: 'flex',
25
42
  gap: 8,
26
- padding: 8
43
+ padding: 8,
44
+ alignItems: 'center'
27
45
  },
28
- children: pages.map(function (p) {
46
+ children: [pages.map(function (p) {
29
47
  return /*#__PURE__*/_jsx("button", {
30
48
  onClick: function onClick() {
31
49
  return setPage(p);
@@ -35,21 +53,28 @@ function App() {
35
53
  },
36
54
  children: p
37
55
  }, p);
56
+ }), /*#__PURE__*/_jsx(Link, {
57
+ to: "/maia",
58
+ style: {
59
+ marginLeft: 'auto'
60
+ },
61
+ children: "Maia Full Page \u2192"
62
+ })]
63
+ }), DEV_PORTALS, /*#__PURE__*/_jsx(Component, {})]
64
+ });
65
+ }
66
+ function App() {
67
+ return /*#__PURE__*/_jsxs(Routes, {
68
+ children: [/*#__PURE__*/_jsx(Route, {
69
+ path: "/maia",
70
+ element: /*#__PURE__*/_jsx(Providers, {
71
+ children: /*#__PURE__*/_jsx(DevMaiaPage, {})
38
72
  })
39
- }), /*#__PURE__*/_jsx("div", {
40
- id: "modals-portal-maia-chat-agent"
41
- }), /*#__PURE__*/_jsx("div", {
42
- id: "abm-agent-modal"
43
- }), /*#__PURE__*/_jsx("div", {
44
- id: "snackbar-portal-maia-chat-agent"
45
- }), /*#__PURE__*/_jsx("div", {
46
- id: "emoji-picker-container"
47
- }), /*#__PURE__*/_jsx("div", {
48
- id: "emoji-picker-container-maia-chat-agent"
49
- }), /*#__PURE__*/_jsx("div", {
50
- id: "modal-portal-video-onboarding"
51
- }), /*#__PURE__*/_jsx(Component, {})]
73
+ }), /*#__PURE__*/_jsx(Route, {
74
+ path: "*",
75
+ element: /*#__PURE__*/_jsx(DevShell, {})
76
+ })]
52
77
  });
53
78
  }
54
79
  export default App;
55
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VTdGF0ZSIsIkRldkNoYXRBSSIsIkRldlByb2plY3RTdW1tYXJ5IiwiRGV2Q29udGV4dE1lbnRpb25JbnB1dCIsIlByb3ZpZGVycyIsImpzeCIsIl9qc3giLCJqc3hzIiwiX2pzeHMiLCJQQUdFUyIsIkFwcCIsIl91c2VTdGF0ZSIsIl91c2VTdGF0ZTIiLCJfc2xpY2VkVG9BcnJheSIsInBhZ2UiLCJzZXRQYWdlIiwiQ29tcG9uZW50IiwicGFnZXMiLCJPYmplY3QiLCJrZXlzIiwiY2hpbGRyZW4iLCJzdHlsZSIsImRpc3BsYXkiLCJnYXAiLCJwYWRkaW5nIiwibWFwIiwicCIsIm9uQ2xpY2siLCJmb250V2VpZ2h0IiwiaWQiXSwic291cmNlcyI6WyIuLi9zcmMvQXBwLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSByZWFjdC9idXR0b24taGFzLXR5cGUgKi9cbmltcG9ydCB7IHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnXG5cbmltcG9ydCB7IERldkNoYXRBSSB9IGZyb20gJy4vZGV2L0RldkNoYXRBSSdcbmltcG9ydCB7IERldlByb2plY3RTdW1tYXJ5IH0gZnJvbSAnLi9kZXYvUHJvamVjdFN1bW1hcnknXG5pbXBvcnQgeyBEZXZDb250ZXh0TWVudGlvbklucHV0IH0gZnJvbSAnLi9kZXYvRGV2Q29udGV4dE1lbnRpb25JbnB1dCdcbmltcG9ydCB7IFByb3ZpZGVycyB9IGZyb20gJy4vZGV2L1Byb3ZpZGVycydcblxuY29uc3QgUEFHRVMgPSB7XG4gICdSZXN1bWVuIGRlIHByb3llY3Rvcyc6IERldlByb2plY3RTdW1tYXJ5LFxuICAnQ2hhdCBBZ2VudGUgUE0nOiBEZXZDaGF0QUksXG4gICdDb250ZXh0IE1lbnRpb24gSW5wdXQnOiBEZXZDb250ZXh0TWVudGlvbklucHV0LFxufVxuXG50eXBlIFBhZ2UgPSBrZXlvZiB0eXBlb2YgUEFHRVNcblxuZnVuY3Rpb24gQXBwKCkge1xuICBjb25zdCBbcGFnZSwgc2V0UGFnZV0gPSB1c2VTdGF0ZTxQYWdlPignQ29udGV4dCBNZW50aW9uIElucHV0JylcbiAgY29uc3QgQ29tcG9uZW50ID0gUEFHRVNbcGFnZV1cbiAgY29uc3QgcGFnZXMgPSBPYmplY3Qua2V5cyhQQUdFUykgYXMgUGFnZVtdXG5cbiAgcmV0dXJuIChcbiAgICA8UHJvdmlkZXJzPlxuICAgICAgPGRpdiBzdHlsZT17eyBkaXNwbGF5OiAnZmxleCcsIGdhcDogOCwgcGFkZGluZzogOCB9fT5cbiAgICAgICAge3BhZ2VzLm1hcChwID0+IChcbiAgICAgICAgICA8YnV0dG9uIGtleT17cH0gb25DbGljaz17KCkgPT4gc2V0UGFnZShwKX0gc3R5bGU9e3sgZm9udFdlaWdodDogcGFnZSA9PT0gcCA/IDcwMCA6IDQwMCB9fT5cbiAgICAgICAgICAgIHtwfVxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICApKX1cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBpZD1cIm1vZGFscy1wb3J0YWwtbWFpYS1jaGF0LWFnZW50XCIgLz5cbiAgICAgIDxkaXYgaWQ9XCJhYm0tYWdlbnQtbW9kYWxcIiAvPlxuICAgICAgPGRpdiBpZD1cInNuYWNrYmFyLXBvcnRhbC1tYWlhLWNoYXQtYWdlbnRcIiAvPlxuICAgICAgPGRpdiBpZD1cImVtb2ppLXBpY2tlci1jb250YWluZXJcIiAvPlxuICAgICAgPGRpdiBpZD1cImVtb2ppLXBpY2tlci1jb250YWluZXItbWFpYS1jaGF0LWFnZW50XCIgLz5cbiAgICAgIDxkaXYgaWQ9XCJtb2RhbC1wb3J0YWwtdmlkZW8tb25ib2FyZGluZ1wiIC8+XG4gICAgICA8Q29tcG9uZW50IC8+XG4gICAgPC9Qcm92aWRlcnM+XG4gIClcbn1cblxuZXhwb3J0IGRlZmF1bHQgQXBwXG4iXSwibWFwcGluZ3MiOiI7QUFBQTtBQUNBLFNBQVNBLFFBQVEsUUFBUSxPQUFPO0FBRWhDLFNBQVNDLFNBQVMsUUFBUSxpQkFBaUI7QUFDM0MsU0FBU0MsaUJBQWlCLFFBQVEsc0JBQXNCO0FBQ3hELFNBQVNDLHNCQUFzQixRQUFRLDhCQUE4QjtBQUNyRSxTQUFTQyxTQUFTLFFBQVEsaUJBQWlCO0FBQUEsU0FBQUMsR0FBQSxJQUFBQyxJQUFBLEVBQUFDLElBQUEsSUFBQUMsS0FBQTtBQUUzQyxJQUFNQyxLQUFLLEdBQUc7RUFDWixzQkFBc0IsRUFBRVAsaUJBQWlCO0VBQ3pDLGdCQUFnQixFQUFFRCxTQUFTO0VBQzNCLHVCQUF1QixFQUFFRTtBQUMzQixDQUFDO0FBSUQsU0FBU08sR0FBR0EsQ0FBQSxFQUFHO0VBQ2IsSUFBQUMsU0FBQSxHQUF3QlgsUUFBUSxDQUFPLHVCQUF1QixDQUFDO0lBQUFZLFVBQUEsR0FBQUMsY0FBQSxDQUFBRixTQUFBO0lBQXhERyxJQUFJLEdBQUFGLFVBQUE7SUFBRUcsT0FBTyxHQUFBSCxVQUFBO0VBQ3BCLElBQU1JLFNBQVMsR0FBR1AsS0FBSyxDQUFDSyxJQUFJLENBQUM7RUFDN0IsSUFBTUcsS0FBSyxHQUFHQyxNQUFNLENBQUNDLElBQUksQ0FBQ1YsS0FBSyxDQUFXO0VBRTFDLG9CQUNFRCxLQUFBLENBQUNKLFNBQVM7SUFBQWdCLFFBQUEsZ0JBQ1JkLElBQUE7TUFBS2UsS0FBSyxFQUFFO1FBQUVDLE9BQU8sRUFBRSxNQUFNO1FBQUVDLEdBQUcsRUFBRSxDQUFDO1FBQUVDLE9BQU8sRUFBRTtNQUFFLENBQUU7TUFBQUosUUFBQSxFQUNqREgsS0FBSyxDQUFDUSxHQUFHLENBQUMsVUFBQUMsQ0FBQztRQUFBLG9CQUNWcEIsSUFBQTtVQUFnQnFCLE9BQU8sRUFBRSxTQUFUQSxPQUFPQSxDQUFBO1lBQUEsT0FBUVosT0FBTyxDQUFDVyxDQUFDLENBQUM7VUFBQSxDQUFDO1VBQUNMLEtBQUssRUFBRTtZQUFFTyxVQUFVLEVBQUVkLElBQUksS0FBS1ksQ0FBQyxHQUFHLEdBQUcsR0FBRztVQUFJLENBQUU7VUFBQU4sUUFBQSxFQUN0Rk07UUFBQyxHQURTQSxDQUVMLENBQUM7TUFBQSxDQUNWO0lBQUMsQ0FDQyxDQUFDLGVBQ05wQixJQUFBO01BQUt1QixFQUFFLEVBQUM7SUFBK0IsQ0FBRSxDQUFDLGVBQzFDdkIsSUFBQTtNQUFLdUIsRUFBRSxFQUFDO0lBQWlCLENBQUUsQ0FBQyxlQUM1QnZCLElBQUE7TUFBS3VCLEVBQUUsRUFBQztJQUFpQyxDQUFFLENBQUMsZUFDNUN2QixJQUFBO01BQUt1QixFQUFFLEVBQUM7SUFBd0IsQ0FBRSxDQUFDLGVBQ25DdkIsSUFBQTtNQUFLdUIsRUFBRSxFQUFDO0lBQXdDLENBQUUsQ0FBQyxlQUNuRHZCLElBQUE7TUFBS3VCLEVBQUUsRUFBQztJQUErQixDQUFFLENBQUMsZUFDMUN2QixJQUFBLENBQUNVLFNBQVMsSUFBRSxDQUFDO0VBQUEsQ0FDSixDQUFDO0FBRWhCO0FBRUEsZUFBZU4sR0FBRyIsImlnbm9yZUxpc3QiOltdfQ==
80
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VTdGF0ZSIsIlJvdXRlcyIsIlJvdXRlIiwiTGluayIsIkRldkNoYXRBSSIsIkRldlByb2plY3RTdW1tYXJ5IiwiRGV2TWFpYVBhZ2UiLCJEZXZDb250ZXh0TWVudGlvbklucHV0IiwiUHJvdmlkZXJzIiwianN4IiwiX2pzeCIsIkZyYWdtZW50IiwiX0ZyYWdtZW50IiwianN4cyIsIl9qc3hzIiwiUEFHRVMiLCJERVZfUE9SVEFMUyIsImNoaWxkcmVuIiwiaWQiLCJEZXZTaGVsbCIsIl91c2VTdGF0ZSIsIl91c2VTdGF0ZTIiLCJfc2xpY2VkVG9BcnJheSIsInBhZ2UiLCJzZXRQYWdlIiwiQ29tcG9uZW50IiwicGFnZXMiLCJPYmplY3QiLCJrZXlzIiwic3R5bGUiLCJkaXNwbGF5IiwiZ2FwIiwicGFkZGluZyIsImFsaWduSXRlbXMiLCJtYXAiLCJwIiwib25DbGljayIsImZvbnRXZWlnaHQiLCJ0byIsIm1hcmdpbkxlZnQiLCJBcHAiLCJwYXRoIiwiZWxlbWVudCJdLCJzb3VyY2VzIjpbIi4uL3NyYy9BcHAudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIHJlYWN0L2J1dHRvbi1oYXMtdHlwZSAqL1xuaW1wb3J0IHsgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCdcbmltcG9ydCB7IFJvdXRlcywgUm91dGUsIExpbmsgfSBmcm9tICdyZWFjdC1yb3V0ZXItZG9tJ1xuXG5pbXBvcnQgeyBEZXZDaGF0QUkgfSBmcm9tICcuL2Rldi9EZXZDaGF0QUknXG5pbXBvcnQgeyBEZXZQcm9qZWN0U3VtbWFyeSB9IGZyb20gJy4vZGV2L1Byb2plY3RTdW1tYXJ5J1xuaW1wb3J0IHsgRGV2TWFpYVBhZ2UgfSBmcm9tICcuL2Rldi9EZXZNYWlhUGFnZSdcbmltcG9ydCB7IERldkNvbnRleHRNZW50aW9uSW5wdXQgfSBmcm9tICcuL2Rldi9EZXZDb250ZXh0TWVudGlvbklucHV0J1xuaW1wb3J0IHsgUHJvdmlkZXJzIH0gZnJvbSAnLi9kZXYvUHJvdmlkZXJzJ1xuXG5jb25zdCBQQUdFUyA9IHtcbiAgJ1Jlc3VtZW4gZGUgcHJveWVjdG9zJzogRGV2UHJvamVjdFN1bW1hcnksXG4gICdDaGF0IEFnZW50ZSBQTSc6IERldkNoYXRBSSxcbiAgJ0NvbnRleHQgTWVudGlvbiBJbnB1dCc6IERldkNvbnRleHRNZW50aW9uSW5wdXQsXG59XG5cbnR5cGUgUGFnZSA9IGtleW9mIHR5cGVvZiBQQUdFU1xuXG5jb25zdCBERVZfUE9SVEFMUyA9IChcbiAgPD5cbiAgICA8ZGl2IGlkPVwibW9kYWxzLXBvcnRhbC1tYWlhLWNoYXQtYWdlbnRcIiAvPlxuICAgIDxkaXYgaWQ9XCJhYm0tYWdlbnQtbW9kYWxcIiAvPlxuICAgIDxkaXYgaWQ9XCJzbmFja2Jhci1wb3J0YWwtbWFpYS1jaGF0LWFnZW50XCIgLz5cbiAgICA8ZGl2IGlkPVwiZW1vamktcGlja2VyLWNvbnRhaW5lclwiIC8+XG4gICAgPGRpdiBpZD1cImVtb2ppLXBpY2tlci1jb250YWluZXItbWFpYS1jaGF0LWFnZW50XCIgLz5cbiAgICA8ZGl2IGlkPVwibW9kYWwtcG9ydGFsLXZpZGVvLW9uYm9hcmRpbmdcIiAvPlxuICA8Lz5cbilcblxuZnVuY3Rpb24gRGV2U2hlbGwoKSB7XG4gIGNvbnN0IFtwYWdlLCBzZXRQYWdlXSA9IHVzZVN0YXRlPFBhZ2U+KCdDb250ZXh0IE1lbnRpb24gSW5wdXQnKVxuICBjb25zdCBDb21wb25lbnQgPSBQQUdFU1twYWdlXVxuICBjb25zdCBwYWdlcyA9IE9iamVjdC5rZXlzKFBBR0VTKSBhcyBQYWdlW11cblxuICByZXR1cm4gKFxuICAgIDxQcm92aWRlcnM+XG4gICAgICA8ZGl2IHN0eWxlPXt7IGRpc3BsYXk6ICdmbGV4JywgZ2FwOiA4LCBwYWRkaW5nOiA4LCBhbGlnbkl0ZW1zOiAnY2VudGVyJyB9fT5cbiAgICAgICAge3BhZ2VzLm1hcChwID0+IChcbiAgICAgICAgICA8YnV0dG9uIGtleT17cH0gb25DbGljaz17KCkgPT4gc2V0UGFnZShwKX0gc3R5bGU9e3sgZm9udFdlaWdodDogcGFnZSA9PT0gcCA/IDcwMCA6IDQwMCB9fT5cbiAgICAgICAgICAgIHtwfVxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICApKX1cbiAgICAgICAgPExpbmsgdG89XCIvbWFpYVwiIHN0eWxlPXt7IG1hcmdpbkxlZnQ6ICdhdXRvJyB9fT5cbiAgICAgICAgICBNYWlhIEZ1bGwgUGFnZSDihpJcbiAgICAgICAgPC9MaW5rPlxuICAgICAgPC9kaXY+XG4gICAgICB7REVWX1BPUlRBTFN9XG4gICAgICA8Q29tcG9uZW50IC8+XG4gICAgPC9Qcm92aWRlcnM+XG4gIClcbn1cblxuZnVuY3Rpb24gQXBwKCkge1xuICByZXR1cm4gKFxuICAgIDxSb3V0ZXM+XG4gICAgICA8Um91dGVcbiAgICAgICAgcGF0aD1cIi9tYWlhXCJcbiAgICAgICAgZWxlbWVudD17XG4gICAgICAgICAgPFByb3ZpZGVycz5cbiAgICAgICAgICAgIDxEZXZNYWlhUGFnZSAvPlxuICAgICAgICAgIDwvUHJvdmlkZXJzPlxuICAgICAgICB9XG4gICAgICAvPlxuICAgICAgPFJvdXRlIHBhdGg9XCIqXCIgZWxlbWVudD17PERldlNoZWxsIC8+fSAvPlxuICAgIDwvUm91dGVzPlxuICApXG59XG5cbmV4cG9ydCBkZWZhdWx0IEFwcFxuIl0sIm1hcHBpbmdzIjoiO0FBQUE7QUFDQSxTQUFTQSxRQUFRLFFBQVEsT0FBTztBQUNoQyxTQUFTQyxNQUFNLEVBQUVDLEtBQUssRUFBRUMsSUFBSSxRQUFRLGtCQUFrQjtBQUV0RCxTQUFTQyxTQUFTLFFBQVEsaUJBQWlCO0FBQzNDLFNBQVNDLGlCQUFpQixRQUFRLHNCQUFzQjtBQUN4RCxTQUFTQyxXQUFXLFFBQVEsbUJBQW1CO0FBQy9DLFNBQVNDLHNCQUFzQixRQUFRLDhCQUE4QjtBQUNyRSxTQUFTQyxTQUFTLFFBQVEsaUJBQWlCO0FBQUEsU0FBQUMsR0FBQSxJQUFBQyxJQUFBLEVBQUFDLFFBQUEsSUFBQUMsU0FBQSxFQUFBQyxJQUFBLElBQUFDLEtBQUE7QUFFM0Ms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