@projectcor/maia-components 2.11.40-9 → 2.11.40

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 (80) hide show
  1. package/lib/App.js +11 -22
  2. package/lib/components/atoms/MAIAInput/MAIAInput.js +321 -238
  3. package/lib/components/atoms/MAIAInput/styles.js +46 -75
  4. package/lib/components/atoms/icons/index.js +1 -2
  5. package/lib/components/index.js +1 -2
  6. package/lib/components/molecules/ChatAIHistory/ChatAIHistory.js +4 -8
  7. package/lib/components/molecules/ChatAIMessages/ChatAIMessages.js +3 -31
  8. package/lib/components/molecules/ChatAIMessages/newStyles.js +2 -5
  9. package/lib/components/molecules/ChatAIModal/ChatAIModal.js +6 -8
  10. package/lib/components/molecules/ChatFooter/ChatFooter.js +4 -5
  11. package/lib/components/molecules/ChatFooter/ChatFooterFaqs.js +3 -2
  12. package/lib/components/molecules/Sidebar/Sidebar.js +5 -9
  13. package/lib/components/molecules/Sidebar/Sidebar.layout.styles.js +2 -6
  14. package/lib/components/organisms/DeleteQuestionModal/DeleteQuestionModal.js +2 -5
  15. package/lib/components/organisms/EditQuestionModal/EditQuestionModal.js +3 -6
  16. package/lib/constants/config.js +1 -3
  17. package/lib/context/cor-user.js +1 -1
  18. package/lib/dev/Providers.js +6 -11
  19. package/lib/hooks/useChatManager/useChatManager.interface.js +1 -1
  20. package/lib/hooks/useChatManager/useChatManager.js +11 -21
  21. package/lib/hooks/useChatMessages/useChatMessages.interface.js +1 -1
  22. package/lib/hooks/useChatMessages/useChatMessages.js +14 -30
  23. package/lib/hooks/useClientSearch.js +2 -3
  24. package/lib/hooks/useEvent.js +1 -6
  25. package/lib/hooks/useOrchestratorStream/useOrchestratorStream.js +4 -6
  26. package/lib/hooks/useProjectSearch.js +2 -3
  27. package/lib/hooks/useRecentClientsSearch.js +2 -3
  28. package/lib/hooks/useTaskPanel.js +10 -3
  29. package/lib/lang/br/index.js +1 -24
  30. package/lib/lang/en/index.js +1 -24
  31. package/lib/lang/es/index.js +1 -24
  32. package/lib/lang/fr/index.js +1 -23
  33. package/lib/services/maia/Chats/getChatMessages.js +4 -29
  34. package/lib/services/maia/Orchestrator/orchestrator.js +5 -8
  35. package/lib/services/maia/RecentProjects/getRecentProjects.js +4 -12
  36. package/lib/services/utils/mapChatMessages.js +5 -12
  37. package/lib/types/Chat.js +1 -1
  38. package/lib/types/agent.js +1 -1
  39. package/package.json +1 -2
  40. package/lib/components/atoms/ContextMentionChip/ContextMentionChip.js +0 -38
  41. package/lib/components/atoms/ContextMentionChip/ContextMentionChip.styles.js +0 -184
  42. package/lib/components/atoms/ContextMentionChip/MentionOverflowLabel.js +0 -39
  43. package/lib/components/atoms/ContextMentionChip/buildChipElement.js +0 -384
  44. package/lib/components/atoms/ContextMentionChip/index.js +0 -4
  45. package/lib/components/atoms/ContextMentionEditor/ContextMentionEditor.js +0 -195
  46. package/lib/components/atoms/ContextMentionEditor/ContextMentionEditor.styles.js +0 -6
  47. package/lib/components/atoms/ContextMentionEditor/index.js +0 -2
  48. package/lib/components/atoms/ContextMentionItem/ContextMentionItem.js +0 -280
  49. package/lib/components/atoms/ContextMentionItem/ContextMentionItem.styles.js +0 -130
  50. package/lib/components/atoms/ContextMentionItem/index.js +0 -2
  51. package/lib/components/atoms/ContextMentionPopover/ContextMentionPopover.js +0 -168
  52. package/lib/components/atoms/ContextMentionPopover/ContextMentionPopover.styles.js +0 -79
  53. package/lib/components/atoms/ContextMentionPopover/index.js +0 -3
  54. package/lib/components/atoms/MAIAInput/MAIAInputEditor.js +0 -269
  55. package/lib/components/atoms/icons/NotionIcon.js +0 -36
  56. package/lib/components/atoms/icons/SubtaskIcon.js +0 -36
  57. package/lib/components/molecules/ContextMentionInput/ContextMentionInput.js +0 -68
  58. package/lib/components/molecules/ContextMentionInput/ContextMentionInput.styles.js +0 -6
  59. package/lib/components/molecules/ContextMentionInput/index.js +0 -2
  60. package/lib/constants/taskLinkIcon.js +0 -6
  61. package/lib/dev/DevContextMentionInput.js +0 -65
  62. package/lib/hooks/useCaretPosition.js +0 -35
  63. package/lib/hooks/useContextMentions.js +0 -270
  64. package/lib/hooks/useEntitySearch.js +0 -1006
  65. package/lib/hooks/useMentionAllowedTypes.js +0 -103
  66. package/lib/hooks/useMentionPopover.js +0 -333
  67. package/lib/hooks/useTextOverflowEllipsisTooltip.js +0 -34
  68. package/lib/services/maia/RecentTasks/getRecentTasks.js +0 -54
  69. package/lib/services/maia/RecentTasks/index.js +0 -6
  70. package/lib/services/maia/RecentUsers/getRecentUsers.js +0 -59
  71. package/lib/services/maia/RecentUsers/index.js +0 -6
  72. package/lib/services/query/entitySearchQuery.js +0 -18
  73. package/lib/services/query/usersDirectoryQuery.js +0 -19
  74. package/lib/types/contextMention.js +0 -37
  75. package/lib/utils/contextMentionIcons.js +0 -115
  76. package/lib/utils/contextMentionLabel.js +0 -4
  77. package/lib/utils/contextMentionTypeLabel.js +0 -17
  78. package/lib/utils/maiaStreamdownRehypePlugins.js +0 -27
  79. package/lib/utils/openTaskInCorPanel.js +0 -18
  80. package/lib/utils/renderContextMentions.js +0 -299
@@ -1,195 +0,0 @@
1
- import _defineProperty from "@babel/runtime/helpers/defineProperty";
2
- import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
3
- 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; }
4
- 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; }
5
- import { forwardRef, useCallback, useImperativeHandle, useLayoutEffect, useRef, useState } from 'react';
6
- import { Tooltip } from '@projectcor/tooltipv2/lib/components/Tooltip';
7
- import { useContextMentions } from '../../../hooks/useContextMentions';
8
- import { buildChipElement } from '../ContextMentionChip';
9
- import { ContextMentionChipGlobalStyles } from '../ContextMentionChip/ContextMentionChip.styles';
10
- import { SCMEEditable } from './ContextMentionEditor.styles';
11
- import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
12
- var isPlaceholderTruncatedInEditor = function isPlaceholderTruncatedInEditor(editor, placeholder) {
13
- var trimmed = placeholder.trim();
14
- if (!trimmed) {
15
- return false;
16
- }
17
- var clientWidth = editor.clientWidth;
18
- if (clientWidth <= 4) {
19
- return false;
20
- }
21
- var styles = window.getComputedStyle(editor);
22
- var ctx = document.createElement('canvas').getContext('2d');
23
- if (!ctx) {
24
- return false;
25
- }
26
- ctx.font = "".concat(styles.fontWeight, " ").concat(styles.fontSize, " ").concat(styles.fontFamily);
27
- var measured = ctx.measureText(trimmed).width;
28
- var paddingLeft = parseFloat(styles.paddingLeft) || 0;
29
- var paddingRight = parseFloat(styles.paddingRight) || 0;
30
- var borderLeft = parseFloat(styles.borderLeftWidth) || 0;
31
- var borderRight = parseFloat(styles.borderRightWidth) || 0;
32
- var available = Math.max(0, clientWidth - paddingLeft - paddingRight - borderLeft - borderRight);
33
- return measured > available + 1;
34
- };
35
- export var ContextMentionEditor = /*#__PURE__*/forwardRef(function (_ref, ref) {
36
- var _placeholder$trim2;
37
- var placeholder = _ref.placeholder,
38
- disabled = _ref.disabled,
39
- className = _ref.className,
40
- onInput = _ref.onInput,
41
- onKeyDown = _ref.onKeyDown,
42
- onFocus = _ref.onFocus,
43
- onBlur = _ref.onBlur;
44
- var _useContextMentions = useContextMentions(),
45
- editorRef = _useContextMentions.editorRef,
46
- updateTrigger = _useContextMentions.updateTrigger,
47
- replaceTriggerWithChip = _useContextMentions.replaceTriggerWithChip,
48
- syncTriggerAtRunLength = _useContextMentions.syncTriggerAtRunLength,
49
- serialize = _useContextMentions.serialize,
50
- clearEditorDom = _useContextMentions.clear,
51
- focus = _useContextMentions.focus;
52
- var skipNextInput = useRef(false);
53
- var _useState = useState(false),
54
- _useState2 = _slicedToArray(_useState, 2),
55
- placeholderTruncated = _useState2[0],
56
- setPlaceholderTruncated = _useState2[1];
57
- var _useState3 = useState(true),
58
- _useState4 = _slicedToArray(_useState3, 2),
59
- logicalEmpty = _useState4[0],
60
- setLogicalEmpty = _useState4[1];
61
- var recomputePlaceholderTruncation = useCallback(function () {
62
- var _placeholder$trim;
63
- var el = editorRef.current;
64
- var ph = (_placeholder$trim = placeholder === null || placeholder === void 0 ? void 0 : placeholder.trim()) !== null && _placeholder$trim !== void 0 ? _placeholder$trim : '';
65
- var isEditorLogicallyEmpty = serialize().text.trim() === '';
66
- if (!el || !ph || !isEditorLogicallyEmpty) {
67
- setPlaceholderTruncated(false);
68
- return;
69
- }
70
- setPlaceholderTruncated(isPlaceholderTruncatedInEditor(el, ph));
71
- }, [placeholder, serialize]);
72
- useLayoutEffect(function () {
73
- recomputePlaceholderTruncation();
74
- var el = editorRef.current;
75
- if (!el) {
76
- return undefined;
77
- }
78
- var ro = new ResizeObserver(function () {
79
- queueMicrotask(recomputePlaceholderTruncation);
80
- });
81
- ro.observe(el);
82
- return function () {
83
- return ro.disconnect();
84
- };
85
- }, [placeholder, disabled, recomputePlaceholderTruncation]);
86
- useImperativeHandle(ref, function () {
87
- return {
88
- focus: focus,
89
- clear: function clear() {
90
- clearEditorDom();
91
- setLogicalEmpty(true);
92
- queueMicrotask(recomputePlaceholderTruncation);
93
- },
94
- serialize: serialize,
95
- syncTriggerAtRunLength: syncTriggerAtRunLength,
96
- hasVisualMultiline: function hasVisualMultiline() {
97
- var _editor$textContent$t, _editor$textContent;
98
- var editor = editorRef.current;
99
- if (!editor) {
100
- return false;
101
- }
102
- var text = (_editor$textContent$t = (_editor$textContent = editor.textContent) === null || _editor$textContent === void 0 ? void 0 : _editor$textContent.trim()) !== null && _editor$textContent$t !== void 0 ? _editor$textContent$t : '';
103
- if (!text) {
104
- return false;
105
- }
106
- var styles = window.getComputedStyle(editor);
107
- var lineHeight = parseFloat(styles.lineHeight) || 20;
108
- var editorHeight = editor.getBoundingClientRect().height;
109
- var isMultiline = editorHeight > lineHeight * 1.5;
110
- return isMultiline;
111
- },
112
- getEditorClientRect: function getEditorClientRect() {
113
- var _editorRef$current$ge, _editorRef$current;
114
- return (_editorRef$current$ge = (_editorRef$current = editorRef.current) === null || _editorRef$current === void 0 ? void 0 : _editorRef$current.getBoundingClientRect()) !== null && _editorRef$current$ge !== void 0 ? _editorRef$current$ge : null;
115
- },
116
- insertMention: function insertMention(mention) {
117
- var chip = buildChipElement(mention);
118
- replaceTriggerWithChip(chip, mention);
119
- skipNextInput.current = true;
120
- var state = serialize();
121
- onInput === null || onInput === void 0 || onInput(_objectSpread(_objectSpread({}, state), {}, {
122
- trigger: {
123
- active: false,
124
- query: '',
125
- atRunLength: 0
126
- }
127
- }));
128
- setLogicalEmpty(state.text.trim() === '');
129
- queueMicrotask(function () {
130
- // Si el navegador no dispara `input` tras el chip, el flag quedaba en true y el próximo @ del usuario se ignoraba.
131
- skipNextInput.current = false;
132
- recomputePlaceholderTruncation();
133
- });
134
- }
135
- };
136
- }, [focus, clearEditorDom, serialize, syncTriggerAtRunLength, replaceTriggerWithChip, onInput, recomputePlaceholderTruncation]);
137
- var handleInput = function handleInput() {
138
- if (skipNextInput.current) {
139
- skipNextInput.current = false;
140
- return;
141
- }
142
- var trig = updateTrigger();
143
- var state = serialize();
144
- onInput === null || onInput === void 0 || onInput(_objectSpread(_objectSpread({}, state), {}, {
145
- trigger: {
146
- active: trig.active,
147
- query: trig.query,
148
- atRunLength: trig.atRunLength
149
- }
150
- }));
151
- setLogicalEmpty(state.text.trim() === '');
152
- queueMicrotask(recomputePlaceholderTruncation);
153
- };
154
- var handlePaste = function handlePaste(e) {
155
- e.preventDefault();
156
- var text = e.clipboardData.getData('text/plain');
157
- var selection = window.getSelection();
158
- if (!selection || selection.rangeCount === 0) return;
159
- selection.deleteFromDocument();
160
- selection.getRangeAt(0).insertNode(document.createTextNode(text));
161
- selection.collapseToEnd();
162
- handleInput();
163
- };
164
- var trimmedPlaceholder = (_placeholder$trim2 = placeholder === null || placeholder === void 0 ? void 0 : placeholder.trim()) !== null && _placeholder$trim2 !== void 0 ? _placeholder$trim2 : '';
165
- var placeholderTooltipTitle = logicalEmpty && placeholderTruncated && trimmedPlaceholder ? trimmedPlaceholder : '';
166
- return /*#__PURE__*/_jsxs(_Fragment, {
167
- children: [/*#__PURE__*/_jsx(ContextMentionChipGlobalStyles, {}), /*#__PURE__*/_jsx(Tooltip, {
168
- title: placeholderTooltipTitle,
169
- children: /*#__PURE__*/_jsx("span", {
170
- style: {
171
- display: 'block',
172
- width: '100%',
173
- minWidth: 0
174
- },
175
- children: /*#__PURE__*/_jsx(SCMEEditable, {
176
- ref: editorRef,
177
- className: className,
178
- "data-placeholder": placeholder,
179
- contentEditable: !disabled,
180
- "data-disabled": String(!!disabled),
181
- suppressContentEditableWarning: true,
182
- role: "textbox",
183
- "aria-multiline": "true",
184
- onInput: handleInput,
185
- onKeyDown: onKeyDown,
186
- onPaste: handlePaste,
187
- onFocus: onFocus,
188
- onBlur: onBlur
189
- })
190
- })
191
- })]
192
- });
193
- });
194
- ContextMentionEditor.displayName = 'ContextMentionEditor';
195
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJmb3J3YXJkUmVmIiwidXNlQ2FsbGJhY2siLCJ1c2VJbXBlcmF0aXZlSGFuZGxlIiwidXNlTGF5b3V0RWZmZWN0IiwidXNlUmVmIiwidXNlU3RhdGUiLCJUb29sdGlwIiwidXNlQ29udGV4dE1lbnRpb25zIiwiYnVpbGRDaGlwRWxlbWVudCIsIkNvbnRleHRNZW50aW9uQ2hpcEdsb2JhbFN0eWxlcyIsIlNDTUVFZGl0YWJsZSIsImpzeCIsIl9qc3giLCJGcmFnbWVudCIsIl9GcmFnbWVudCIsImpzeHMiLCJfanN4cyIsImlzUGxhY2Vob2xkZXJUcnVuY2F0ZWRJbkVkaXRvciIsImVkaXRvciIsInBsYWNlaG9sZGVyIiwidHJpbW1lZCIsInRyaW0iLCJjbGllbnRXaWR0aCIsInN0eWxlcyIsIndpbmRvdyIsImdldENvbXB1dGVkU3R5bGUiLCJjdHgiLCJkb2N1bWVudCIsImNyZWF0ZUVsZW1lbnQiLCJnZXRDb250ZXh0IiwiZm9udCIsImNvbmNhdCIsImZvbnRXZWlnaHQiLCJmb250U2l6ZSIsImZvbnRGYW1pbHkiLCJtZWFzdXJlZCIsIm1lYXN1cmVUZXh0Iiwid2lkdGgiLCJwYWRkaW5nTGVmdCIsInBhcnNlRmxvYXQiLCJwYWRkaW5nUmlnaHQiLCJib3JkZXJMZWZ0IiwiYm9yZGVyTGVmdFdpZHRoIiwiYm9yZGVyUmlnaHQiLCJib3JkZXJSaWdodFdpZHRoIiwiYXZhaWxhYmxlIiwiTWF0aCIsIm1heCIsIkNvbnRleHRNZW50aW9uRWRpdG9yIiwiX3JlZiIsInJlZiIsIl9wbGFjZWhvbGRlciR0cmltMiIsImRpc2FibGVkIiwiY2xhc3NOYW1lIiwib25JbnB1dCIsIm9uS2V5RG93biIsIm9uRm9jdXMiLCJvbkJsdXIiLCJfdXNlQ29udGV4dE1lbnRpb25zIiwiZWRpdG9yUmVmIiwidXBkYXRlVHJpZ2dlciIsInJlcGxhY2VUcmlnZ2VyV2l0aENoaXAiLCJzeW5jVHJpZ2dlckF0UnVuTGVuZ3RoIiwic2VyaWFsaXplIiwiY2xlYXJFZGl0b3JEb20iLCJjbGVhciIsImZvY3VzIiwic2tpcE5leHRJbnB1dCIsIl91c2VTdGF0ZSIsIl91c2VTdGF0ZTIiLCJfc2xpY2VkVG9BcnJheSIsInBsYWNlaG9sZGVyVHJ1bmNhdGVkIiwic2V0UGxhY2Vob2xkZXJUcnVuY2F0ZWQiLCJfdXNlU3RhdGUzIiwiX3VzZVN0YXRlNCIsImxvZ2ljYWxFbXB0eSIsInNldExvZ2ljYWxFbXB0eSIsInJlY29tcHV0ZVBsYWNlaG9sZGVyVHJ1bmNhdGlvbiIsIl9wbGFjZWhvbGRlciR0cmltIiwiZWwiLCJjdXJyZW50IiwicGgiLCJpc0VkaXRvckxvZ2ljYWxseUVtcHR5IiwidGV4dCIsInVuZGVmaW5lZCIsInJvIiwiUmVzaXplT2JzZXJ2ZXIiLCJxdWV1ZU1pY3JvdGFzayIsIm9ic2VydmUiLCJkaXNjb25uZWN0IiwiaGFzVmlzdWFsTXVsdGlsaW5lIiwiX2VkaXRvciR0ZXh0Q29udGVudCR0IiwiX2VkaXRvciR0ZXh0Q29udGVudCIsInRleHRDb250ZW50IiwibGluZUhlaWdodCIsImVkaXRvckhlaWdodCIsImdldEJvdW5kaW5nQ2xpZW50UmVjdCIsImhlaWdodCIsImlzTXVsdGlsaW5lIiwiZ2V0RWRpdG9yQ2xpZW50UmVjdCIsIl9lZGl0b3JSZWYkY3VycmVudCRnZSIsIl9lZGl0b3JSZWYkY3VycmVudCIsImluc2VydE1lbnRpb24iLCJtZW50aW9uIiwiY2hpcCIsInN0YXRlIiwiX29iamVjdFNwcmVhZCIsInRyaWdnZXIiLCJhY3RpdmUiLCJxdWVyeSIsImF0UnVuTGVuZ3RoIiwiaGFuZGxlSW5wdXQiLCJ0cmlnIiwiaGFuZGxlUGFzdGUiLCJlIiwicHJldmVudERlZmF1bHQiLCJjbGlwYm9hcmREYXRhIiwiZ2V0RGF0YSIsInNlbGVjdGlvbiIsImdldFNlbGVjdGlvbiIsInJhbmdlQ291bnQiLCJkZWxldGVGcm9tRG9jdW1lbnQiLCJnZXRSYW5nZUF0IiwiaW5zZXJ0Tm9kZSIsImNyZWF0ZVRleHROb2RlIiwiY29sbGFwc2VUb0VuZCIsInRyaW1tZWRQbGFjZWhvbGRlciIsInBsYWNlaG9sZGVyVG9vbHRpcFRpdGxlIiwiY2hpbGRyZW4iLCJ0aXRsZSIsInN0eWxlIiwiZGlzcGxheSIsIm1pbldpZHRoIiwiY29udGVudEVkaXRhYmxlIiwiU3RyaW5nIiwic3VwcHJlc3NDb250ZW50RWRpdGFibGVXYXJuaW5nIiwicm9sZSIsIm9uUGFzdGUiLCJkaXNwbGF5TmFtZSJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2F0b21zL0NvbnRleHRNZW50aW9uRWRpdG9yL0NvbnRleHRNZW50aW9uRWRpdG9yLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDbGlwYm9hcmRFdmVudCxcbiAgZm9yd2FyZFJlZixcbiAgS2V5Ym9hcmRFdmVudCxcbiAgdXNlQ2FsbGJhY2ssXG4gIHVzZUltcGVyYXRpdmVIYW5kbGUsXG4gIHVzZUxheW91dEVmZmVjdCxcbiAgdXNlUmVmLFxuICB1c2VTdGF0ZSxcbn0gZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBUb29sdGlwIH0gZnJvbSAnQHByb2plY3Rjb3IvdG9vbHRpcHYyL2xpYi9jb21wb25lbnRzL1Rvb2x0aXAnXG5pbXBvcnQgeyB1c2VDb250ZXh0TWVudGlvbnMgfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VDb250ZXh0TWVudGlvbnMnXG5pbXBvcnQgeyBDb250ZXh0TWVudGlvbiB9IGZyb20gJy4uLy4uLy4uL3R5cGVzL2NvbnRleHRNZW50aW9uJ1xuaW1wb3J0IHsgYnVpbGRDaGlwRWxlbWVudCB9IGZyb20gJy4uL0NvbnRleHRNZW50aW9uQ2hpcCdcbmltcG9ydCB7IENvbnRleHRNZW50aW9uQ2hpcEdsb2JhbFN0eWxlcyB9IGZyb20gJy4uL0NvbnRleHRNZW50aW9uQ2hpcC9Db250ZXh0TWVudGlvbkNoaXAuc3R5bGVzJ1xuaW1wb3J0IHsgU0NNRUVkaXRhYmxlIH0gZnJvbSAnLi9Db250ZXh0TWVudGlvbkVkaXRvci5zdHlsZXMnXG5cbmNvbnN0IGlzUGxhY2Vob2xkZXJUcnVuY2F0ZWRJbkVkaXRvciA9IChlZGl0b3I6IEhUTUxFbGVtZW50LCBwbGFjZWhvbGRlcjogc3RyaW5nKTogYm9vbGVhbiA9PiB7XG4gIGNvbnN0IHRyaW1tZWQgPSBwbGFjZWhvbGRlci50cmltKClcbiAgaWYgKCF0cmltbWVkKSB7XG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cbiAgY29uc3QgeyBjbGllbnRXaWR0aCB9ID0gZWRpdG9yXG4gIGlmIChjbGllbnRXaWR0aCA8PSA0KSB7XG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cblxuICBjb25zdCBzdHlsZXMgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShlZGl0b3IpXG4gIGNvbnN0IGN0eCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2NhbnZhcycpLmdldENvbnRleHQoJzJkJylcbiAgaWYgKCFjdHgpIHtcbiAgICByZXR1cm4gZmFsc2VcbiAgfVxuICBjdHguZm9udCA9IGAke3N0eWxlcy5mb250V2VpZ2h0fSAke3N0eWxlcy5mb250U2l6ZX0gJHtzdHlsZXMuZm9udEZhbWlseX1gXG4gIGNvbnN0IG1lYXN1cmVkID0gY3R4Lm1lYXN1cmVUZXh0KHRyaW1tZWQpLndpZHRoXG5cbiAgY29uc3QgcGFkZGluZ0xlZnQgPSBwYXJzZUZsb2F0KHN0eWxlcy5wYWRkaW5nTGVmdCkgfHwgMFxuICBjb25zdCBwYWRkaW5nUmlnaHQgPSBwYXJzZUZsb2F0KHN0eWxlcy5wYWRkaW5nUmlnaHQpIHx8IDBcbiAgY29uc3QgYm9yZGVyTGVmdCA9IHBhcnNlRmxvYXQoc3R5bGVzLmJvcmRlckxlZnRXaWR0aCkgfHwgMFxuICBjb25zdCBib3JkZXJSaWdodCA9IHBhcnNlRmxvYXQoc3R5bGVzLmJvcmRlclJpZ2h0V2lkdGgpIHx8IDBcbiAgY29uc3QgYXZhaWxhYmxlID0gTWF0aC5tYXgoMCwgY2xpZW50V2lkdGggLSBwYWRkaW5nTGVmdCAtIHBhZGRpbmdSaWdodCAtIGJvcmRlckxlZnQgLSBib3JkZXJSaWdodClcblxuICByZXR1cm4gbWVhc3VyZWQgPiBhdmFpbGFibGUgKyAxXG59XG5cbmV4cG9ydCB0eXBlIENvbnRleHRNZW50aW9uRWRpdG9ySGFuZGxlID0ge1xuICBmb2N1czogKCkgPT4gdm9pZFxuICBjbGVhcjogKCkgPT4gdm9pZFxuICBpbnNlcnRNZW50aW9uOiAobWVudGlvbjogQ29udGV4dE1lbnRpb24pID0+IHZvaWRcbiAgc3luY1RyaWdnZXJBdFJ1bkxlbmd0aDogKGF0UnVuTGVuZ3RoOiBudW1iZXIpID0+IHZvaWRcbiAgc2VyaWFsaXplOiAoKSA9PiB7IHRleHQ6IHN0cmluZzsgbWVudGlvbnM6IENvbnRleHRNZW50aW9uW10gfVxuICBoYXNWaXN1YWxNdWx0aWxpbmU6ICgpID0+IGJvb2xlYW5cbiAgLyoqIFJlY3QgZGVsIMOhcmVhIGVkaXRhYmxlICh2aWV3cG9ydCk7IGxvIHVzYSBlbCBwb3BvdmVyIGRlIEAgcGFyYSBhbGluZWFyIGFuY2hvL29yaWdlbi4gKi9cbiAgZ2V0RWRpdG9yQ2xpZW50UmVjdDogKCkgPT4gRE9NUmVjdCB8IG51bGxcbn1cblxuZXhwb3J0IHR5cGUgQ29udGV4dE1lbnRpb25FZGl0b3JQcm9wcyA9IHtcbiAgcGxhY2Vob2xkZXI/OiBzdHJpbmdcbiAgZGlzYWJsZWQ/OiBib29sZWFuXG4gIGNsYXNzTmFtZT86IHN0cmluZ1xuICBvbklucHV0PzogKHN0YXRlOiB7XG4gICAgdGV4dDogc3RyaW5nXG4gICAgbWVudGlvbnM6IENvbnRleHRNZW50aW9uW11cbiAgICB0cmlnZ2VyOiB7IGFjdGl2ZTogYm9vbGVhbjsgcXVlcnk6IHN0cmluZzsgYXRSdW5MZW5ndGg6IG51bWJlciB9XG4gIH0pID0+IHZvaWRcbiAgb25LZXlEb3duPzogKGU6IEtleWJvYXJkRXZlbnQ8SFRNTERpdkVsZW1lbnQ+KSA9PiB2b2lkXG4gIG9uRm9jdXM/OiAoKSA9PiB2b2lkXG4gIG9uQmx1cj86ICgpID0+IHZvaWRcbn1cblxuZXhwb3J0IGNvbnN0IENvbnRleHRNZW50aW9uRWRpdG9yID0gZm9yd2FyZFJlZjxDb250ZXh0TWVudGlvbkVkaXRvckhhbmRsZSwgQ29udGV4dE1lbnRpb25FZGl0b3JQcm9wcz4oXG4gICh7IHBsYWNlaG9sZGVyLCBkaXNhYmxlZCwgY2xhc3NOYW1lLCBvbklucHV0LCBvbktleURvd24sIG9uRm9jdXMsIG9uQmx1ciB9LCByZWYpID0+IHtcbiAgICBjb25zdCB7XG4gICAgICBlZGl0b3JSZWYsXG4gICAgICB1cGRhdGVUcmlnZ2VyLFxuICAgICAgcmVwbGFjZVRyaWdnZXJXaXRoQ2hpcCxcbiAgICAgIHN5bmNUcmlnZ2VyQXRSdW5MZW5ndGgsXG4gICAgICBzZXJpYWxpemUsXG4gICAgICBjbGVhcjogY2xlYXJFZGl0b3JEb20sXG4gICAgICBmb2N1cyxcbiAgICB9ID0gdXNlQ29udGV4dE1lbnRpb25zKClcbiAgICBjb25zdCBza2lwTmV4dElucHV0ID0gdXNlUmVmKGZhbHNlKVxuICAgIGNvbnN0IFtwbGFjZWhvbGRlclRydW5jYXRlZCwgc2V0UGxhY2Vob2xkZXJUcnVuY2F0ZWRdID0gdXNlU3RhdGUoZmFsc2UpXG4gICAgY29uc3QgW2xvZ2ljYWxFbXB0eSwgc2V0TG9naWNhbEVtcHR5XSA9IHVzZVN0YXRlKHRydWUpXG5cbiAgICBjb25zdCByZWNvbXB1dGVQbGFjZWhvbGRlclRydW5jYXRpb24gPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgICBjb25zdCBlbCA9IGVkaXRvclJlZi5jdXJyZW50XG4gICAgICBjb25zdCBwaCA9IHBsYWNlaG9sZGVyPy50cmltKCkgPz8gJydcbiAgICAgIGNvbnN0IGlzRWRpdG9yTG9naWNhbGx5RW1wdHkgPSBzZXJpYWxpemUoKS50ZXh0LnRyaW0oKSA9PT0gJydcblxuICAgICAgaWYgKCFlbCB8fCAhcGggfHwgIWlzRWRpdG9yTG9naWNhbGx5RW1wdHkpIHtcbiAgICAgICAgc2V0UGxhY2Vob2xkZXJUcnVuY2F0ZWQoZmFsc2UpXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBzZXRQbGFjZWhvbGRlclRydW5jYXRlZChpc1BsYWNlaG9sZGVyVHJ1bmNhdGVkSW5FZGl0b3IoZWwsIHBoKSlcbiAgICB9LCBbcGxhY2Vob2xkZXIsIHNlcmlhbGl6ZV0pXG5cbiAgICB1c2VMYXlvdXRFZmZlY3QoKCkgPT4ge1xuICAgICAgcmVjb21wdXRlUGxhY2Vob2xkZXJUcnVuY2F0aW9uKClcbiAgICAgIGNvbnN0IGVsID0gZWRpdG9yUmVmLmN1cnJlbnRcbiAgICAgIGlmICghZWwpIHtcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZFxuICAgICAgfVxuICAgICAgY29uc3Qgcm8gPSBuZXcgUmVzaXplT2JzZXJ2ZXIoKCkgPT4ge1xuICAgICAgICBxdWV1ZU1pY3JvdGFzayhyZWNvbXB1dGVQbGFjZWhvbGRlclRydW5jYXRpb24pXG4gICAgICB9KVxuICAgICAgcm8ub2JzZXJ2ZShlbClcbiAgICAgIHJldHVybiAoKSA9PiByby5kaXNjb25uZWN0KClcbiAgICB9LCBbcGxhY2Vob2xkZXIsIGRpc2FibGVkLCByZWNvbXB1dGVQbGFjZWhvbGRlclRydW5jYXRpb25dKVxuXG4gICAgdXNlSW1wZXJhdGl2ZUhhbmRsZShcbiAgICAgIHJlZixcbiAgICAgICgpID0+ICh7XG4gICAgICAgIGZvY3VzLFxuICAgICAgICBjbGVhcjogKCkgPT4ge1xuICAgICAgICAgIGNsZWFyRWRpdG9yRG9tKClcbiAgICAgICAgICBzZXRMb2dpY2FsRW1wdHkodHJ1ZSlcbiAgICAgICAgICBxdWV1ZU1pY3JvdGFzayhyZWNvbXB1dGVQbGFjZWhvbGRlclRydW5jYXRpb24pXG4gICAgICAgIH0sXG4gICAgICAgIHNlcmlhbGl6ZSxcbiAgICAgICAgc3luY1RyaWdnZXJBdFJ1bkxlbmd0aCxcbiAgICAgICAgaGFzVmlzdWFsTXVsdGlsaW5lOiAoKSA9PiB7XG4gICAgICAgICAgY29uc3QgZWRpdG9yID0gZWRpdG9yUmVmLmN1cnJlbnRcbiAgICAgICAgICBpZiAoIWVkaXRvcikge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29uc3QgdGV4dCA9IGVkaXRvci50ZXh0Q29udGVudD8udHJpbSgpID8/ICcnXG4gICAgICAgICAgaWYgKCF0ZXh0KSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb25zdCBzdHlsZXMgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShlZGl0b3IpXG4gICAgICAgICAgY29uc3QgbGluZUhlaWdodCA9IHBhcnNlRmxvYXQoc3R5bGVzLmxpbmVIZWlnaHQpIHx8IDIwXG4gICAgICAgICAgY29uc3QgZWRpdG9ySGVpZ2h0ID0gZWRpdG9yLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmhlaWdodFxuICAgICAgICAgIGNvbnN0IGlzTXVsdGlsaW5lID0gZWRpdG9ySGVpZ2h0ID4gbGluZUhlaWdodCAqIDEuNVxuXG4gICAgICAgICAgcmV0dXJuIGlzTXVsdGlsaW5lXG4gICAgICAgIH0sXG4gICAgICAgIGdldEVkaXRvckNsaWVudFJlY3Q6ICgpID0+IGVkaXRvclJlZi5jdXJyZW50Py5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSA/PyBudWxsLFxuICAgICAgICBpbnNlcnRNZW50aW9uOiAobWVudGlvbjogQ29udGV4dE1lbnRpb24pID0+IHtcbiAgICAgICAgICBjb25zdCBjaGlwID0gYnVpbGRDaGlwRWxlbWVudChtZW50aW9uKVxuICAgICAgICAgIHJlcGxhY2VUcmlnZ2VyV2l0aENoaXAoY2hpcCwgbWVudGlvbilcbiAgICAgICAgICBza2lwTmV4dElucHV0LmN1cnJlbnQgPSB0cnVlXG4gICAgICAgICAgY29uc3Qgc3RhdGUgPSBzZXJpYWxpemUoKVxuICAgICAgICAgIG9uSW5wdXQ/Lih7IC4uLnN0YXRlLCB0cmlnZ2VyOiB7IGFjdGl2ZTogZmFsc2UsIHF1ZXJ5OiAnJywgYXRSdW5MZW5ndGg6IDAgfSB9KVxuICAgICAgICAgIHNldExvZ2ljYWxFbXB0eShzdGF0ZS50ZXh0LnRyaW0oKSA9PT0gJycpXG4gICAgICAgICAgcXVldWVNaWNyb3Rhc2soKCkgPT4ge1xuICAgICAgICAgICAgLy8gU2kgZWwgbmF2ZWdhZG9yIG5vIGRpc3BhcmEgYGlucHV0YCB0cmFzIGVsIGNoaXAsIGVsIGZsYWcgcXVlZGFiYSBlbiB0cnVlIHkgZWwgcHLDs3hpbW8gQCBkZWwgdXN1YXJpbyBzZSBpZ25vcmFiYS5cbiAgICAgICAgICAgIHNraXBOZXh0SW5wdXQuY3VycmVudCA9IGZhbHNlXG4gICAgICAgICAgICByZWNvbXB1dGVQbGFjZWhvbGRlclRydW5jYXRpb24oKVxuICAgICAgICAgIH0pXG4gICAgICAgIH0sXG4gICAgICB9KSxcbiAgICAgIFtcbiAgICAgICAgZm9jdXMsXG4gICAgICAgIGNsZWFyRWRpdG9yRG9tLFxuICAgICAgICBzZXJpYWxpemUsXG4gICAgICAgIHN5bmNUcmlnZ2VyQXRSdW5MZW5ndGgsXG4gICAgICAgIHJlcGxhY2VUcmlnZ2VyV2l0aENoaXAsXG4gICAgICAgIG9uSW5wdXQsXG4gICAgICAgIHJlY29tcHV0ZVBsYWNlaG9sZGVyVHJ1bmNhdGlvbixcbiAgICAgIF1cbiAgICApXG5cbiAgICBjb25zdCBoYW5kbGVJbnB1dCA9ICgpID0+IHtcbiAgICAgIGlmIChza2lwTmV4dElucHV0LmN1cnJlbnQpIHtcbiAgICAgICAgc2tpcE5leHRJbnB1dC5jdXJyZW50ID0gZmFsc2VcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgICBjb25zdCB0cmlnID0gdXBkYXRlVHJpZ2dlcigpXG4gICAgICBjb25zdCBzdGF0ZSA9IHNlcmlhbGl6ZSgpXG4gICAgICBvbklucHV0Py4oeyAuLi5zdGF0ZSwgdHJpZ2dlcjogeyBhY3RpdmU6IHRyaWcuYWN0aXZlLCBxdWVyeTogdHJpZy5xdWVyeSwgYXRSdW5MZW5ndGg6IHRyaWcuYXRSdW5MZW5ndGggfSB9KVxuICAgICAgc2V0TG9naWNhbEVtcHR5KHN0YXRlLnRleHQudHJpbSgpID09PSAnJylcbiAgICAgIHF1ZXVlTWljcm90YXNrKHJlY29tcHV0ZVBsYWNlaG9sZGVyVHJ1bmNhdGlvbilcbiAgICB9XG5cbiAgICBjb25zdCBoYW5kbGVQYXN0ZSA9IChlOiBDbGlwYm9hcmRFdmVudDxIVE1MRGl2RWxlbWVudD4pID0+IHtcbiAgICAgIGUucHJldmVudERlZmF1bHQoKVxuICAgICAgY29uc3QgdGV4dCA9IGUuY2xpcGJvYXJkRGF0YS5nZXREYXRhKCd0ZXh0L3BsYWluJylcbiAgICAgIGNvbnN0IHNlbGVjdGlvbiA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKVxuICAgICAgaWYgKCFzZWxlY3Rpb24gfHwgc2VsZWN0aW9uLnJhbmdlQ291bnQgPT09IDApIHJldHVyblxuICAgICAgc2VsZWN0aW9uLmRlbGV0ZUZyb21Eb2N1bWVudCgpXG4gICAgICBzZWxlY3Rpb24uZ2V0UmFuZ2VBdCgwKS5pbnNlcnROb2RlKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHRleHQpKVxuICAgICAgc2VsZWN0aW9uLmNvbGxhcHNlVG9FbmQoKVxuICAgICAgaGFuZGxlSW5wdXQoKVxuICAgIH1cblxuICAgIGNvbnN0IHRyaW1tZWRQbGFjZWhvbGRlciA9IHBsYWNlaG9sZGVyPy50cmltKCkgPz8gJydcbiAgICBjb25zdCBwbGFjZWhvbGRlclRvb2x0aXBUaXRsZSA9IGxvZ2ljYWxFbXB0eSAmJiBwbGFjZWhvbGRlclRydW5jYXRlZCAmJiB0cmltbWVkUGxhY2Vob2xkZXIgPyB0cmltbWVkUGxhY2Vob2xkZXIgOiAnJ1xuXG4gICAgcmV0dXJuIChcbiAgICAgIDw+XG4gICAgICAgIDxDb250ZXh0TWVudGlvbkNoaXBHbG9iYWxTdHlsZXMgLz5cbiAgICAgICAgPFRvb2x0aXAgdGl0bGU9e3BsYWNlaG9sZGVyVG9vbHRpcFRpdGxlfT5cbiAgICAgICAgICA8c3BhbiBzdHlsZT17eyBkaXNwbGF5OiAnYmxvY2snLCB3aWR0aDogJzEwMCUnLCBtaW5XaWR0aDogMCB9fT5cbiAgICAgICAgICAgIDxTQ01FRWRpdGFibGVcbiAgICAgICAgICAgICAgcmVmPXtlZGl0b3JSZWZ9XG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xhc3NOYW1lfVxuICAgICAgICAgICAgICBkYXRhLXBsYWNlaG9sZGVyPXtwbGFjZWhvbGRlcn1cbiAgICAgICAgICAgICAgY29udGVudEVkaXRhYmxlPXshZGlzYWJsZWR9XG4gICAgICAgICAgICAgIGRhdGEtZGlzYWJsZWQ9e1N0cmluZyghIWRpc2FibGVkKX1cbiAgICAgICAgICAgICAgc3VwcHJlc3NDb250ZW50RWRpdGFibGVXYXJuaW5nXG4gICAgICAgICAgICAgIHJvbGU9XCJ0ZXh0Ym94XCJcbiAgICAgICAgICAgICAgYXJpYS1tdWx0aWxpbmU9XCJ0cnVlXCJcbiAgICAgICAgICAgICAgb25JbnB1dD17aGFuZGxlSW5wdXR9XG4gICAgICAgICAgICAgIG9uS2V5RG93bj17b25LZXlEb3dufVxuICAgICAgICAgICAgICBvblBhc3RlPXtoYW5kbGVQYXN0ZX1cbiAgICAgICAgICAgICAgb25Gb2N1cz17b25Gb2N1c31cbiAgICAgICAgICAgICAgb25CbHVyPXtvbkJsdXJ9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9Ub29sdGlwPlxuICAgICAgPC8+XG4gICAgKVxuICB9XG4pXG5cbkNvbnRleHRNZW50aW9uRWRpdG9yLmRpc3BsYXlOYW1lID0gJ0NvbnRleHRNZW50aW9uRWRpdG9yJ1xuIl0sIm1hcHBpbmdzIjoiOzs7O0FBQUEsU0FFRUEsVUFBVSxFQUVWQyxXQUFXLEVBQ1hDLG1CQUFtQixFQUNuQkMsZUFBZSxFQUNmQyxNQUFNLEVBQ05DLFFBQVEsUUFDSCxPQUFPO0FBQ2QsU0FBU0MsT0FBTyxRQUFRLDhDQUE4QztBQUN0RSxTQUFTQyxrQkFBa0IsUUFBUSxtQ0FBbUM7QUFFdEUsU0FBU0MsZ0JBQWdCLFFBQVEsdUJBQXVCO0FBQ3hELFNBQVNDLDhCQUE4QixRQUFRLGlEQUFpRDtBQUNoRyxTQUFTQyxZQUFZLFFBQVEsK0JBQStCO0FBQUEsU0FBQUMsR0FBQSxJQUFBQyxJQUFBLEVBQUFDLFFBQUEsSUFBQUMsU0FBQSxFQUFBQyxJQUFBLElBQUFDLEtBQUE7QUFFNUQsSUFBTUMsOEJBQThC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U0FBUyxDQUFDRyxrQkFBa0IsQ0FBQyxDQUFDO0lBQzlCSCxTQUFTLENBQUNJLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQ0MsVUFBVSxDQUFDaEcsUUFBUSxDQUFDaUcsY0FBYyxDQUFDekMsSUFBSSxDQUFDLENBQUM7SUFDakVtQyxTQUFTLENBQUNPLGFBQWEsQ0FBQyxDQUFDO0lBQ3pCZCxXQUFXLENBQUMsQ0FBQztFQUNmLENBQUM7RUFFRCxJQUFNZSxrQkFBa0IsSUFBQTNFLGtCQUFBLEdBQUdoQyxXQUFXLGFBQVhBLFdBQVcsdUJBQVhBLFdBQVcsQ0FBRUUsSUFBSSxDQUFDLENBQUMsY0FBQThCLGtCQUFBLGNBQUFBLGtCQUFBLEdBQUksRUFBRTtFQUNwRCxJQUFNNEUsdUJBQXVCLEdBQUdwRCxZQUFZLElBQUlKLG9CQUFvQixJQUFJdUQsa0JBQWtCLEdBQUdBLGtCQUFrQixHQUFHLEVBQUU7RUFFcEgsb0JBQ0U5RyxLQUFBLENBQUFGLFNBQUE7SUFBQWtILFFBQUEsZ0JBQ0VwSCxJQUFBLENBQUNILDhCQUE4QixJQUFFLENBQUMsZUFDbENHLElBQUEsQ0FBQ04sT0FBTztNQUFDMkgsS0FBSyxFQUFFRix1QkFBd0I7TUFBQUMsUUFBQSxlQUN0Q3BILElBQUE7UUFBTXNILEtBQUssRUFBRTtVQUFFQyxPQUFPLEVBQUUsT0FBTztVQUFFOUYsS0FBSyxFQUFFLE1BQU07VUFBRStGLFFBQVEsRUFBRTtRQUFFLENBQUU7UUFBQUosUUFBQSxlQUM1RHBILElBQUEsQ0FBQ0YsWUFBWTtVQUNYd0MsR0FBRyxFQUFFUyxTQUFVO1VBQ2ZOLFNBQVMsRUFBRUEsU0FBVTtVQUNyQixvQkFBa0JsQyxXQUFZO1VBQzlCa0gsZUFBZSxFQUFFLENBQUNqRixRQUFTO1VBQzNCLGlCQUFla0YsTUFBTSxDQUFDLENBQUMsQ0FBQ2xGLFFBQVEsQ0FBRTtVQUNsQ21GLDhCQUE4QjtVQUM5QkMsSUFBSSxFQUFDLFNBQVM7VUFDZCxrQkFBZSxNQUFNO1VBQ3JCbEYsT0FBTyxFQUFFeUQsV0FBWTtVQUNyQnhELFNBQVMsRUFBRUEsU0FBVTtVQUNyQmtGLE9BQU8sRUFBRXhCLFdBQVk7VUFDckJ6RCxPQUFPLEVBQUVBLE9BQVE7VUFDakJDLE1BQU0sRUFBRUE7UUFBTyxDQUNoQjtNQUFDLENBQ0U7SUFBQyxDQUNBLENBQUM7RUFBQSxDQUNWLENBQUM7QUFFUCxDQUNGLENBQUM7QUFFRFQsb0JBQW9CLENBQUMwRixXQUFXLEdBQUcsc0JBQXNCIiwiaWdub3JlTGlzdCI6W119
@@ -1,6 +0,0 @@
1
- import styled from 'styled-components';
2
- export var SCMEEditable = styled.div.withConfig({
3
- displayName: "ContextMentionEditorstyles__SCMEEditable",
4
- componentId: "sc-vz0osf-0"
5
- })(["box-sizing:border-box;min-width:0;width:100%;min-height:24px;max-height:200px;overflow-y:auto;color:var(--Text-Primary-Dark,#20201f);font-family:var(--cor-typography-font-family,'Work Sans');font-size:14px;font-style:normal;font-weight:400;line-height:20px;letter-spacing:0;outline:none;word-break:break-word;&:empty{overflow-x:hidden;}&:empty::before{content:attr(data-placeholder);display:block;max-width:100%;color:var(--Text-Secondary-Dark,#666);pointer-events:none;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}&[data-disabled='true']{opacity:0.5;pointer-events:none;}&::-webkit-scrollbar{width:6px;}&::-webkit-scrollbar-thumb{background:#d0d0d0;border-radius:3px;}"]);
6
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJzdHlsZWQiLCJTQ01FRWRpdGFibGUiLCJkaXYiLCJ3aXRoQ29uZmlnIiwiZGlzcGxheU5hbWUiLCJjb21wb25lbnRJZCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2F0b21zL0NvbnRleHRNZW50aW9uRWRpdG9yL0NvbnRleHRNZW50aW9uRWRpdG9yLnN0eWxlcy50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHN0eWxlZCBmcm9tICdzdHlsZWQtY29tcG9uZW50cydcblxuZXhwb3J0IGNvbnN0IFNDTUVFZGl0YWJsZSA9IHN0eWxlZC5kaXZgXG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIG1pbi13aWR0aDogMDtcbiAgd2lkdGg6IDEwMCU7XG4gIG1pbi1oZWlnaHQ6IDI0cHg7XG4gIG1heC1oZWlnaHQ6IDIwMHB4O1xuICBvdmVyZmxvdy15OiBhdXRvO1xuICBjb2xvcjogdmFyKC0tVGV4dC1QcmltYXJ5LURhcmssICMyMDIwMWYpO1xuICBmb250LWZhbWlseTogdmFyKC0tY29yLXR5cG9ncmFwaHktZm9udC1mYW1pbHksICdXb3JrIFNhbnMnKTtcbiAgZm9udC1zaXplOiAxNHB4O1xuICBmb250LXN0eWxlOiBub3JtYWw7XG4gIGZvbnQtd2VpZ2h0OiA0MDA7XG4gIGxpbmUtaGVpZ2h0OiAyMHB4O1xuICBsZXR0ZXItc3BhY2luZzogMDtcbiAgb3V0bGluZTogbm9uZTtcbiAgd29yZC1icmVhazogYnJlYWstd29yZDtcblxuICAmOmVtcHR5IHtcbiAgICBvdmVyZmxvdy14OiBoaWRkZW47XG4gIH1cblxuICAmOmVtcHR5OjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6IGF0dHIoZGF0YS1wbGFjZWhvbGRlcik7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgbWF4LXdpZHRoOiAxMDAlO1xuICAgIGNvbG9yOiB2YXIoLS1UZXh0LVNlY29uZGFyeS1EYXJrLCAjNjY2KTtcbiAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gIH1cblxuICAmW2RhdGEtZGlzYWJsZWQ9J3RydWUnXSB7XG4gICAgb3BhY2l0eTogMC41O1xuICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICB9XG5cbiAgJjo6LXdlYmtpdC1zY3JvbGxiYXIge1xuICAgIHdpZHRoOiA2cHg7XG4gIH1cbiAgJjo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWIge1xuICAgIGJhY2tncm91bmQ6ICNkMGQwZDA7XG4gICAgYm9yZGVyLXJhZGl1czogM3B4O1xuICB9XG5gXG4iXSwibWFwcGluZ3MiOiJBQUFBLE9BQU9BLE1BQU0sTUFBTSxtQkFBbUI7QUFFdEMsT0FBTyxJQUFNQyxZQUFZLEdBQUdELE1BQU0sQ0FBQ0UsR0FBRyxDQUFBQyxVQUFBO0VBQUFDLFdBQUE7RUFBQUMsV0FBQTtBQUFBLG1yQkE0Q3JDIiwiaWdub3JlTGlzdCI6W119
@@ -1,2 +0,0 @@
1
- export { ContextMentionEditor } from './ContextMentionEditor';
2
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJDb250ZXh0TWVudGlvbkVkaXRvciJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2F0b21zL0NvbnRleHRNZW50aW9uRWRpdG9yL2luZGV4LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7IENvbnRleHRNZW50aW9uRWRpdG9yIH0gZnJvbSAnLi9Db250ZXh0TWVudGlvbkVkaXRvcidcbmV4cG9ydCB0eXBlIHsgQ29udGV4dE1lbnRpb25FZGl0b3JIYW5kbGUsIENvbnRleHRNZW50aW9uRWRpdG9yUHJvcHMgfSBmcm9tICcuL0NvbnRleHRNZW50aW9uRWRpdG9yJ1xuIl0sIm1hcHBpbmdzIjoiQUFBQSxTQUFTQSxvQkFBb0IsUUFBUSx3QkFBd0IiLCJpZ25vcmVMaXN0IjpbXX0=
@@ -1,280 +0,0 @@
1
- import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
2
- import { useLayoutEffect, useRef, useState } from 'react';
3
- import { ChevronRight } from '@projectcor/icons/lib/components/ChevronRight';
4
- import { Tooltip } from '@projectcor/tooltipv2/lib/components/Tooltip';
5
- import { useT } from '../../../hooks/useT';
6
- import { TASK_LINK_ICON_DATA_URL } from '../../../constants/taskLinkIcon';
7
- import { NotionIcon } from '../icons/NotionIcon';
8
- import { SubtaskIcon } from '../icons/SubtaskIcon';
9
- import { getContextMentionIcon, isNotionMcpSlug } from '../../../utils/contextMentionIcons';
10
- import { SCMIRow, SCMIProjectRow, SCMIProjectContent, SCMIName, SCMITitle, SCMIProjectTitle, SCMITitleHighlight, SCMIBreadcrumb, SCMIBreadcrumbParent, SCMIRowUser, SCMUserAvatarWrap, SCMUserAvatarImg, SCMUserAvatarFallback, SCMUserInfo, SCMUserNamePositionRow, SCMUserNameCell, SCMUserNameText, SCMUserPositionText, SCMITaskRowInner, SCMITaskTitleRow, SCMITaskSubtaskIconWrap, SCMITaskProjectName, SCMITaskIconImg, SCMITaskTitle } from './ContextMentionItem.styles';
11
- import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
12
- var TASK_PROJECT_NAME_MAX_CHARS = 40;
13
- var truncateWithEllipsis = function truncateWithEllipsis(value, maxChars) {
14
- if (value.length <= maxChars) return value;
15
- return "".concat(value.slice(0, Math.max(0, maxChars - 1)).trimEnd(), "\u2026");
16
- };
17
- var renderTitle = function renderTitle(primary, highlight) {
18
- if (!highlight || highlight.length <= 0) return primary;
19
- var start = highlight.start,
20
- length = highlight.length;
21
- var end = start + length;
22
- if (start < 0 || start > primary.length || end > primary.length) return primary;
23
- return /*#__PURE__*/_jsxs(_Fragment, {
24
- children: [primary.slice(0, start), /*#__PURE__*/_jsx(SCMITitleHighlight, {
25
- children: primary.slice(start, end)
26
- }), primary.slice(end)]
27
- });
28
- };
29
- function useOverflowTooltip(ref, deps) {
30
- var _useState = useState(false),
31
- _useState2 = _slicedToArray(_useState, 2),
32
- showTooltip = _useState2[0],
33
- setShowTooltip = _useState2[1];
34
- useLayoutEffect(function () {
35
- var el = ref.current;
36
- if (!el) {
37
- setShowTooltip(false);
38
- return undefined;
39
- }
40
- var measure = function measure() {
41
- setShowTooltip(el.scrollWidth > el.clientWidth);
42
- };
43
- measure();
44
- var ro = new ResizeObserver(measure);
45
- ro.observe(el);
46
- window.addEventListener('resize', measure);
47
- return function () {
48
- ro.disconnect();
49
- window.removeEventListener('resize', measure);
50
- };
51
- }, deps);
52
- return showTooltip;
53
- }
54
-
55
- /** Iniciales para avatar (nombre legal), no el texto visible de la fila (ej. "Yo"). */
56
- var initialsFromDisplayName = function initialsFromDisplayName(name) {
57
- var _parts$2;
58
- var trimmed = name.trim();
59
- if (!trimmed) return '?';
60
- var parts = trimmed.split(/\s+/).filter(Boolean);
61
- if (parts.length >= 2) {
62
- var _parts$0$charAt, _parts$, _parts$charAt, _parts;
63
- var first = (_parts$0$charAt = (_parts$ = parts[0]) === null || _parts$ === void 0 ? void 0 : _parts$.charAt(0)) !== null && _parts$0$charAt !== void 0 ? _parts$0$charAt : '';
64
- var last = (_parts$charAt = (_parts = parts[parts.length - 1]) === null || _parts === void 0 ? void 0 : _parts.charAt(0)) !== null && _parts$charAt !== void 0 ? _parts$charAt : '';
65
- return "".concat(first).concat(last).toUpperCase();
66
- }
67
- var single = (_parts$2 = parts[0]) !== null && _parts$2 !== void 0 ? _parts$2 : '';
68
- if (single.length >= 2) return single.slice(0, 2).toUpperCase();
69
- return (single.charAt(0) || '?').toUpperCase();
70
- };
71
- var UserRowAvatar = function UserRowAvatar(_ref) {
72
- var picture = _ref.picture,
73
- nameForInitials = _ref.nameForInitials;
74
- var _useState3 = useState(false),
75
- _useState4 = _slicedToArray(_useState3, 2),
76
- broken = _useState4[0],
77
- setBroken = _useState4[1];
78
- var initials = initialsFromDisplayName(nameForInitials);
79
- return /*#__PURE__*/_jsx(SCMUserAvatarWrap, {
80
- children: picture && !broken ? /*#__PURE__*/_jsx(SCMUserAvatarImg, {
81
- src: picture,
82
- alt: "",
83
- onError: function onError() {
84
- return setBroken(true);
85
- },
86
- loading: "lazy",
87
- decoding: "async"
88
- }) : /*#__PURE__*/_jsx(SCMUserAvatarFallback, {
89
- "aria-hidden": true,
90
- children: initials
91
- })
92
- });
93
- };
94
- var ContextMentionTaskRow = function ContextMentionTaskRow(_ref2) {
95
- var _raw$projectName, _breadcrumb$parent, _primaryHighlight$sta, _primaryHighlight$len;
96
- var item = _ref2.item,
97
- active = _ref2.active,
98
- onMouseDown = _ref2.onMouseDown,
99
- onHover = _ref2.onHover;
100
- var primary = item.primary,
101
- primaryHighlight = item.primaryHighlight,
102
- breadcrumb = item.breadcrumb,
103
- raw = item.raw;
104
- var projectName = ((_raw$projectName = raw.projectName) === null || _raw$projectName === void 0 ? void 0 : _raw$projectName.trim()) || (breadcrumb === null || breadcrumb === void 0 || (_breadcrumb$parent = breadcrumb.parent) === null || _breadcrumb$parent === void 0 ? void 0 : _breadcrumb$parent.trim()) || '';
105
- var projectNameDisplay = truncateWithEllipsis(projectName, TASK_PROJECT_NAME_MAX_CHARS);
106
- var isProjectNameTruncatedByChars = projectNameDisplay !== projectName;
107
- var hasFather = raw.fatherId != null;
108
- var titleRef = useRef(null);
109
- var projectRef = useRef(null);
110
- var showTitleTooltip = useOverflowTooltip(titleRef, [primary, projectName, (_primaryHighlight$sta = primaryHighlight === null || primaryHighlight === void 0 ? void 0 : primaryHighlight.start) !== null && _primaryHighlight$sta !== void 0 ? _primaryHighlight$sta : -1, (_primaryHighlight$len = primaryHighlight === null || primaryHighlight === void 0 ? void 0 : primaryHighlight.length) !== null && _primaryHighlight$len !== void 0 ? _primaryHighlight$len : 0, hasFather]);
111
- var showProjectTooltip = useOverflowTooltip(projectRef, [projectNameDisplay, primary]);
112
- var shouldShowProjectTooltip = isProjectNameTruncatedByChars || showProjectTooltip;
113
- return /*#__PURE__*/_jsx(SCMIRow, {
114
- $active: active,
115
- onMouseDown: onMouseDown,
116
- onMouseEnter: onHover,
117
- children: /*#__PURE__*/_jsxs(SCMITaskRowInner, {
118
- children: [/*#__PURE__*/_jsx(SCMITaskIconImg, {
119
- src: TASK_LINK_ICON_DATA_URL,
120
- alt: "",
121
- draggable: false,
122
- "aria-hidden": true
123
- }), /*#__PURE__*/_jsxs(SCMITaskTitleRow, {
124
- children: [hasFather ? /*#__PURE__*/_jsx(SCMITaskSubtaskIconWrap, {
125
- children: /*#__PURE__*/_jsx(SubtaskIcon, {
126
- width: "16px",
127
- height: "16px",
128
- color: "#000",
129
- variant: "regular"
130
- })
131
- }) : null, /*#__PURE__*/_jsx(Tooltip, {
132
- title: showTitleTooltip ? primary : '',
133
- children: /*#__PURE__*/_jsx(SCMITaskTitle, {
134
- ref: titleRef,
135
- children: renderTitle(primary, primaryHighlight)
136
- })
137
- }), projectName ? /*#__PURE__*/_jsx(Tooltip, {
138
- title: shouldShowProjectTooltip ? projectName : '',
139
- children: /*#__PURE__*/_jsx(SCMITaskProjectName, {
140
- ref: projectRef,
141
- children: projectNameDisplay
142
- })
143
- }) : null]
144
- })]
145
- })
146
- });
147
- };
148
- export var ContextMentionItem = function ContextMentionItem(_ref3) {
149
- var item = _ref3.item,
150
- active = _ref3.active,
151
- onSelect = _ref3.onSelect,
152
- _onHover = _ref3.onHover;
153
- var _useT = useT(),
154
- t = _useT.t;
155
- var primary = item.primary,
156
- primaryHighlight = item.primaryHighlight,
157
- breadcrumb = item.breadcrumb,
158
- type = item.type,
159
- raw = item.raw;
160
- var handleClick = function handleClick(e) {
161
- e.preventDefault();
162
- e.stopPropagation();
163
- onSelect(item);
164
- };
165
- var hasCount = typeof (breadcrumb === null || breadcrumb === void 0 ? void 0 : breadcrumb.count) === 'number';
166
- var hasParent = !!(breadcrumb !== null && breadcrumb !== void 0 && breadcrumb.parent);
167
- var countLabel = (breadcrumb === null || breadcrumb === void 0 ? void 0 : breadcrumb.countLabel) && t("contextMention.counters.".concat(breadcrumb.countLabel), {
168
- defaultValue: breadcrumb.countLabel
169
- });
170
- if (type === 'user') {
171
- var _raw$positionName$tri, _raw$positionName;
172
- var positionNameTrimmed = (_raw$positionName$tri = (_raw$positionName = raw.positionName) === null || _raw$positionName === void 0 ? void 0 : _raw$positionName.trim()) !== null && _raw$positionName$tri !== void 0 ? _raw$positionName$tri : '';
173
- var positionLine = positionNameTrimmed || t('contextMention.userNoPosition', {
174
- defaultValue: 'Sin posición'
175
- });
176
- return /*#__PURE__*/_jsxs(SCMIRowUser, {
177
- $active: active,
178
- onMouseDown: handleClick,
179
- onMouseEnter: function onMouseEnter() {
180
- return _onHover === null || _onHover === void 0 ? void 0 : _onHover(item);
181
- },
182
- children: [/*#__PURE__*/_jsx(UserRowAvatar, {
183
- picture: raw.picture,
184
- nameForInitials: raw.name.trim() ? raw.name : primary
185
- }), /*#__PURE__*/_jsx(SCMUserInfo, {
186
- children: /*#__PURE__*/_jsxs(SCMUserNamePositionRow, {
187
- children: [/*#__PURE__*/_jsx(SCMUserNameCell, {
188
- $withDivider: true,
189
- children: /*#__PURE__*/_jsx(SCMUserNameText, {
190
- children: renderTitle(primary, primaryHighlight)
191
- })
192
- }), /*#__PURE__*/_jsx(SCMUserPositionText, {
193
- title: positionLine,
194
- children: positionLine
195
- })]
196
- })
197
- })]
198
- });
199
- }
200
- if (type === 'project') {
201
- return /*#__PURE__*/_jsx(SCMIProjectRow, {
202
- onMouseDown: handleClick,
203
- onMouseEnter: function onMouseEnter() {
204
- return _onHover === null || _onHover === void 0 ? void 0 : _onHover(item);
205
- },
206
- children: /*#__PURE__*/_jsx(SCMIProjectContent, {
207
- $active: active,
208
- children: /*#__PURE__*/_jsx(SCMIName, {
209
- children: /*#__PURE__*/_jsx(SCMIProjectTitle, {
210
- title: primary,
211
- children: renderTitle(primary, primaryHighlight)
212
- })
213
- })
214
- })
215
- });
216
- }
217
- if (type === 'task') {
218
- return /*#__PURE__*/_jsx(ContextMentionTaskRow, {
219
- item: item,
220
- active: active,
221
- onMouseDown: handleClick,
222
- onHover: function onHover() {
223
- return _onHover === null || _onHover === void 0 ? void 0 : _onHover(item);
224
- }
225
- });
226
- }
227
- if (type === 'mcp') {
228
- return /*#__PURE__*/_jsx(SCMIRow, {
229
- $active: active,
230
- onMouseDown: handleClick,
231
- onMouseEnter: function onMouseEnter() {
232
- return _onHover === null || _onHover === void 0 ? void 0 : _onHover(item);
233
- },
234
- children: /*#__PURE__*/_jsxs(SCMITaskRowInner, {
235
- children: [/*#__PURE__*/_jsx("span", {
236
- style: {
237
- display: 'inline-flex',
238
- alignItems: 'center',
239
- justifyContent: 'center',
240
- width: 16,
241
- height: 16,
242
- flex: '0 0 16px'
243
- },
244
- children: isNotionMcpSlug(raw.id) ? /*#__PURE__*/_jsx(NotionIcon, {
245
- width: 16,
246
- height: 16
247
- }) : getContextMentionIcon('mcp', '#2d77bd', raw.id, 16)
248
- }), /*#__PURE__*/_jsx(SCMITaskTitle, {
249
- title: primary,
250
- children: renderTitle(primary, primaryHighlight)
251
- })]
252
- })
253
- });
254
- }
255
- return /*#__PURE__*/_jsx(SCMIRow, {
256
- $active: active,
257
- onMouseDown: handleClick,
258
- onMouseEnter: function onMouseEnter() {
259
- return _onHover === null || _onHover === void 0 ? void 0 : _onHover(item);
260
- },
261
- children: /*#__PURE__*/_jsxs(SCMIName, {
262
- children: [/*#__PURE__*/_jsx(SCMITitle, {
263
- children: renderTitle(primary, primaryHighlight)
264
- }), (hasCount || hasParent) && /*#__PURE__*/_jsxs(SCMIBreadcrumb, {
265
- children: [hasCount && /*#__PURE__*/_jsxs("span", {
266
- children: [breadcrumb === null || breadcrumb === void 0 ? void 0 : breadcrumb.count, " ", countLabel]
267
- }), hasParent && /*#__PURE__*/_jsxs(SCMIBreadcrumbParent, {
268
- children: [/*#__PURE__*/_jsx(ChevronRight, {
269
- width: "12px",
270
- height: "12px",
271
- color: "#808080"
272
- }), /*#__PURE__*/_jsx("span", {
273
- children: breadcrumb === null || breadcrumb === void 0 ? void 0 : breadcrumb.parent
274
- })]
275
- })]
276
- })]
277
- })
278
- });
279
- };
280
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VMYXlvdXRFZmZlY3QiLCJ1c2VSZWYiLCJ1c2VTdGF0ZSIsIkNoZXZyb25SaWdodCIsIlRvb2x0aXAiLCJ1c2VUIiwiVEFTS19MSU5LX0lDT05fREFUQV9VUkwiLCJOb3Rpb25JY29uIiwiU3VidGFza0ljb24iLCJnZXRDb250ZXh0TWVudGlvbkljb24iLCJpc05vdGlvbk1jcFNsdWciLCJTQ01JUm93IiwiU0NNSVByb2plY3RSb3ciLCJTQ01JUHJvamVjdENvbnRlbnQiLCJTQ01JTmFtZSIsIlNDTUlUaXRsZSIsIlNDTUlQcm9qZWN0VGl0bGUiLCJTQ01JVGl0bGVIaWdobGlnaHQiLCJTQ01JQnJlYWRjcnVtYiIsIlNDTUlCcmVhZGNydW1iUGFyZW50IiwiU0NNSVJvd1VzZXIiLCJTQ01Vc2VyQXZhdGFyV3JhcCIsIlNDTVVzZXJBdmF0YXJJbWciLCJTQ01Vc2VyQXZhdGFyRmFsbGJhY2siLCJTQ01Vc2VySW5mbyIsIlNDTVVzZXJOYW1lUG9zaXRpb25Sb3ciLCJTQ01Vc2VyTmFtZUNlbGwiLCJTQ01Vc2VyTmFtZVRleHQiLCJTQ01Vc2VyUG9zaXRpb25UZXh0IiwiU0NNSVRhc2tSb3dJbm5lciIsIlNDTUlUYXNrVGl0bGVSb3ciLCJTQ01JVGFza1N1YnRhc2tJY29uV3JhcCIsIlNDTUlUYXNrUHJvamVjdE5hbWUiLCJTQ01JVGFza0ljb25JbWciLCJTQ01JVGFza1RpdGxlIiwianN4IiwiX2pzeCIsIkZyYWdtZW50IiwiX0ZyYWdtZW50IiwianN4cyIsIl9qc3hzIiwiVEFTS19QUk9KRUNUX05BTUVfTUFYX0NIQVJTIiwidHJ1bmNhdGVXaXRoRWxsaXBzaXMiLCJ2YWx1ZSIsIm1heENoYXJzIiwibGVuZ3RoIiwiY29uY2F0Iiwic2xpY2UiLCJNYXRoIiwibWF4IiwidHJpbUVuZCIsInJlbmRlclRpdGxlIiwicHJpbWFyeSIsImhpZ2hsaWdodCIsInN0YXJ0IiwiZW5kIiwiY2hpbGRyZW4iLCJ1c2VPdmVyZmxvd1Rvb2x0aXAiLCJyZWYiLCJkZXBzIiwiX3VzZVN0YXRlIiwiX3VzZVN0YXRlMiIsIl9zbGljZWRUb0FycmF5Iiwic2hvd1Rvb2x0aXAiLCJzZXRTaG93VG9vbHRpcCIsImVsIiwiY3VycmVudCIsInVuZGVmaW5lZCIsIm1lYXN1cmUiLCJzY3JvbGxXaWR0aCIsImNsaWVudFdpZHRoIiwicm8iLCJSZXNpemVPYnNlcnZlciIsIm9ic2VydmUiLCJ3aW5kb3ciLCJhZGRFdmVudExpc3RlbmVyIiwiZGlzY29ubmVjdCIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJpbml0aWFsc0Zyb21EaXNwbGF5TmFtZSIsIm5hbWUiLCJfcGFydHMkMiIsInRyaW1tZWQiLCJ0cmltIiwicGFydHMiLCJzcGxpdCIsImZpbHRlciIsIkJvb2xlYW4iLCJfcGFydHMkMCRjaGFyQXQiLCJfcGFydHMkIiwiX3BhcnRzJGNoYXJBdCIsIl9wYXJ0cyIsImZpcnN0IiwiY2hhckF0IiwibGFzdCIsInRvVXBwZXJDYXNlIiwic2luZ2xlIiwiVXNlclJvd0F2YXRhciIsIl9yZWYiLCJwaWN0dXJlIiwibmFtZUZvckluaXRpYWxzIiwiX3VzZVN0YXRlMyIsIl91c2VTdGF0ZTQiLCJicm9rZW4iLCJzZXRCcm9rZW4iLCJpbml0aWFscyIsInNyYyIsImFsdCIsIm9uRXJyb3IiLCJsb2FkaW5nIiwiZGVjb2RpbmciLCJDb250ZXh0TWVudGlvblRhc2tSb3ciLCJfcmVmMiIsIl9yYXckcHJvamVjdE5hbWUiLCJfYnJlYWRjcnVtYiRwYXJlbnQiLCJfcHJpbWFyeUhpZ2hsaWdodCRzdGEiLCJfcHJpbWFyeUhpZ2hsaWdodCRsZW4iLCJpdGVtIiwiYWN0aXZlIiwib25Nb3VzZURvd24iLCJvbkhvdmVyIiwicHJpbWFyeUhpZ2hsaWdodCIsImJyZWFkY3J1bWIiLCJyYXciLCJwcm9qZWN0TmFtZSIsInBhcmVudCIsInByb2plY3ROYW1lRGlzcGxheSIsImlzUHJvamVjdE5hbWVUcnVuY2F0ZWRCeUNoYXJzIiwiaGFzRmF0aGVyIiwiZmF0aGVySWQiLCJ0aXRsZVJlZiIsInByb2plY3RSZWYiLCJzaG93VGl0bGVUb29sdGlwIiwic2hvd1Byb2plY3RUb29sdGlwIiwic2hvdWxkU2hvd1Byb2plY3RUb29sdGlwIiwiJGFjdGl2ZSIsIm9uTW91c2VFbnRlciIsImRyYWdnYWJsZSIsIndpZHRoIiwiaGVpZ2h0IiwiY29sb3IiLCJ2YXJpYW50IiwidGl0bGUiLCJDb250ZXh0TWVudGlvbkl0ZW0iLCJfcmVmMyIsIm9uU2VsZWN0IiwiX3VzZVQiLCJ0IiwidHlwZSIsImhhbmRsZUNsaWNrIiwiZSIsInByZXZlbnREZWZhdWx0Iiwic3RvcFByb3BhZ2F0aW9uIiwiaGFzQ291bnQiLCJjb3VudCIsImhhc1BhcmVudCIsImNvdW50TGFiZWwiLCJkZWZhdWx0VmFsdWUiLCJfcmF3JHBvc2l0aW9uTmFtZSR0cmkiLCJfcmF3JHBvc2l0aW9uTmFtZSIsInBvc2l0aW9uTmFtZVRyaW1tZWQiLCJwb3NpdGlvbk5hbWUiLCJwb3NpdGlvbkxpbmUiLCIkd2l0aERpdmlkZXIiLCJzdHlsZSIsImRpc3BsYXkiLCJhbGlnbkl0ZW1zIiwianVzdGlmeUNvbnRlbnQiLCJmbGV4IiwiaWQiXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy9hdG9tcy9Db250ZXh0TWVudGlvbkl0ZW0vQ29udGV4dE1lbnRpb25JdGVtLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGQywgTW91c2VFdmVudCwgdXNlTGF5b3V0RWZmZWN0LCB1c2VSZWYsIHVzZVN0YXRlLCB0eXBlIFJlZk9iamVjdCB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgQ2hldnJvblJpZ2h0IH0gZnJvbSAnQHByb2plY3Rjb3IvaWNvbnMvbGliL2NvbXBvbmVudHMvQ2hldnJvblJpZ2h0J1xuaW1wb3J0IHsgVG9vbHRpcCB9IGZyb20gJ0Bwcm9qZWN0Y29yL3Rvb2x0aXB2Mi9saWIvY29tcG9uZW50cy9Ub29sdGlwJ1xuaW1wb3J0IHsgdXNlVCB9IGZyb20gJy4uLy4uLy4uL2hvb2tzL3VzZVQnXG5pbXBvcnQgeyBUQVNLX0xJTktfSUNPTl9EQVRBX1VSTCB9IGZyb20gJy4uLy4uLy4uL2NvbnN0YW50cy90YXNrTGlua0ljb24nXG5pbXBvcnQgeyBDb250ZXh0TWVudGlvbkl0ZW0gYXMgQ29udGV4dE1lbnRpb25JdGVtVHlwZSB9IGZyb20gJy4uLy4uLy4uL3R5cGVzL2NvbnRleHRNZW50aW9uJ1xuaW1wb3J0IHsgTm90aW9uSWNvbiB9IGZyb20gJy4uL2ljb25zL05vdGlvbkljb24nXG5pbXBvcnQgeyBTdWJ0YXNrSWNvbiB9IGZyb20gJy4uL2ljb25zL1N1YnRhc2tJY29uJ1xuaW1wb3J0IHsgZ2V0Q29udGV4dE1lbnRpb25JY29uLCBpc05vdGlvbk1jcFNsdWcgfSBmcm9tICcuLi8uLi8uLi91dGlscy9jb250ZXh0TWVudGlvbkljb25zJ1xuaW1wb3J0IHtcbiAgU0NNSVJvdyxcbiAgU0NNSVByb2plY3RSb3csXG4gIFNDTUlQcm9qZWN0Q29udGVudCxcbiAgU0NNSU5hbWUsXG4gIFNDTUlUaXRsZSxcbiAgU0NNSVByb2plY3RUaXRsZSxcbiAgU0NNSVRpdGxlSGlnaGxpZ2h0LFxuICBTQ01JQnJlYWRjcnVtYixcbiAgU0NNSUJyZWFkY3J1bWJQYXJlbnQsXG4gIFNDTUlSb3dVc2VyLFxuICBTQ01Vc2VyQXZhdGFyV3JhcCxcbiAgU0NNVXNlckF2YXRhckltZyxcbiAgU0NNVXNlckF2YXRhckZhbGxiYWNrLFxuICBTQ01Vc2VySW5mbyxcbiAgU0NNVXNlck5hbWVQb3NpdGlvblJvdyxcbiAgU0NNVXNlck5hbWVDZWxsLFxuICBTQ01Vc2VyTmFtZVRleHQsXG4gIFNDTVVzZXJQb3NpdGlvblRleHQsXG4gIFNDTUlUYXNrUm93SW5uZXIsXG4gIFNDTUlUYXNrVGl0bGVSb3csXG4gIFNDTUlUYXNrU3VidGFza0ljb25XcmFwLFxuICBTQ01JVGFza1Byb2plY3ROYW1lLFxuICBTQ01JVGFza0ljb25JbWcsXG4gIFNDTUlUYXNrVGl0bGUsXG59IGZyb20gJy4vQ29udGV4dE1lbnRpb25JdGVtLnN0eWxlcydcblxudHlwZSBDb250ZXh0TWVudGlvbkl0ZW1Qcm9wcyA9IHtcbiAgaXRlbTogQ29udGV4dE1lbnRpb25JdGVtVHlwZVxuICBhY3RpdmU/OiBib29sZWFuXG4gIG9uU2VsZWN0OiAoaXRlbTogQ29udGV4dE1lbnRpb25JdGVtVHlwZSkgPT4gdm9pZFxuICBvbkhvdmVyPzogKGl0ZW06IENvbnRleHRNZW50aW9uSXRlbVR5cGUpID0+IHZvaWRcbn1cblxuY29uc3QgVEFTS19QUk9KRUNUX05BTUVfTUFYX0NIQVJTID0gNDBcblxuY29uc3QgdHJ1bmNhdGVXaXRoRWxsaXBzaXMgPSAodmFsdWU6IHN0cmluZywgbWF4Q2hhcnM6IG51bWJlcik6IHN0cmluZyA9PiB7XG4gIGlmICh2YWx1ZS5sZW5ndGggPD0gbWF4Q2hhcnMpIHJldHVybiB2YWx1ZVxuICByZXR1cm4gYCR7dmFsdWUuc2xpY2UoMCwgTWF0aC5tYXgoMCwgbWF4Q2hhcnMgLSAxKSkudHJpbUVuZCgpfeKApmBcbn1cblxuY29uc3QgcmVuZGVyVGl0bGUgPSAocHJpbWFyeTogc3RyaW5nLCBoaWdobGlnaHQ/OiB7IHN0YXJ0OiBudW1iZXI7IGxlbmd0aDogbnVtYmVyIH0pID0+IHtcbiAgaWYgKCFoaWdobGlnaHQgfHwgaGlnaGxpZ2h0Lmxlbmd0aCA8PSAwKSByZXR1cm4gcHJpbWFyeVxuICBjb25zdCB7IHN0YXJ0LCBsZW5ndGggfSA9IGhpZ2hsaWdodFxuICBjb25zdCBlbmQgPSBzdGFydCArIGxlbmd0aFxuICBpZiAoc3RhcnQgPCAwIHx8IHN0YXJ0ID4gcHJpbWFyeS5sZW5ndGggfHwgZW5kID4gcHJpbWFyeS5sZW5ndGgpIHJldHVybiBwcmltYXJ5XG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIHtwcmltYXJ5LnNsaWNlKDAsIHN0YXJ0KX1cbiAgICAgIDxTQ01JVGl0bGVIaWdobGlnaHQ+e3ByaW1hcnkuc2xpY2Uoc3RhcnQsIGVuZCl9PC9TQ01JVGl0bGVIaWdobGlnaHQ+XG4gICAgICB7cHJpbWFyeS5zbGljZShlbmQpfVxuICAgIDwvPlxuICApXG59XG5cbmZ1bmN0aW9uIHVzZU92ZXJmbG93VG9vbHRpcDxUIGV4dGVuZHMgSFRNTEVsZW1lbnQ+KHJlZjogUmVmT2JqZWN0PFQgfCBudWxsPiwgZGVwczogcmVhZG9ubHkgdW5rbm93bltdKSB7XG4gIGNvbnN0IFtzaG93VG9vbHRpcCwgc2V0U2hvd1Rvb2x0aXBdID0gdXNlU3RhdGUoZmFsc2UpXG5cbiAgdXNlTGF5b3V0RWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBlbCA9IHJlZi5jdXJyZW50XG4gICAgaWYgKCFlbCkge1xuICAgICAgc2V0U2hvd1Rvb2x0aXAoZmFsc2UpXG4gICAgICByZXR1cm4gdW5kZWZpbmVkXG4gICAgfVxuXG4gICAgY29uc3QgbWVhc3VyZSA9ICgpID0+IHtcbiAgICAgIHNldFNob3dUb29sdGlwKGVsLnNjcm9sbFdpZHRoID4gZWwuY2xpZW50V2lkdGgpXG4gICAgfVxuXG4gICAgbWVhc3VyZSgpXG4gICAgY29uc3Qgcm8gPSBuZXcgUmVzaXplT2JzZXJ2ZXIobWVhc3VyZSlcbiAgICByby5vYnNlcnZlKGVsKVxuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCBtZWFzdXJlKVxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICByby5kaXNjb25uZWN0KClcbiAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdyZXNpemUnLCBtZWFzdXJlKVxuICAgIH1cbiAgfSwgZGVwcylcblxuICByZXR1cm4gc2hvd1Rvb2x0aXBcbn1cblxuLyoqIEluaWNpYWxlcyBwYXJhIGF2YXRhciAobm9tYnJlIGxlZ2FsKSwgbm8gZWwgdGV4dG8gdmlzaWJsZSBkZSBsYSBmaWxhIChlai4gXCJZb1wiKS4gKi9cbmNvbnN0IGluaXRpYWxzRnJvbURpc3BsYXlOYW1lID0gKG5hbWU6IHN0cmluZyk6IHN0cmluZyA9PiB7XG4gIGNvbnN0IHRyaW1tZWQgPSBuYW1lLnRyaW0oKVxuICBpZiAoIXRyaW1tZWQpIHJldHVybiAnPydcbiAgY29uc3QgcGFydHMgPSB0cmltbWVkLnNwbGl0KC9cXHMrLykuZmlsdGVyKEJvb2xlYW4pXG4gIGlmIChwYXJ0cy5sZW5ndGggPj0gMikge1xuICAgIGNvbnN0IGZpcnN0ID0gcGFydHNbMF0/LmNoYXJBdCgwKSA/PyAnJ1xuICAgIGNvbnN0IGxhc3QgPSBwYXJ0c1twYXJ0cy5sZW5ndGggLSAxXT8uY2hhckF0KDApID8/ICcnXG4gICAgcmV0dXJuIGAke2ZpcnN0fSR7bGFzdH1gLnRvVXBwZXJDYXNlKClcbiAgfVxuICBjb25zdCBzaW5nbGUgPSBwYXJ0c1swXSA/PyAnJ1xuICBpZiAoc2luZ2xlLmxlbmd0aCA+PSAyKSByZXR1cm4gc2luZ2xlLnNsaWNlKDAsIDIpLnRvVXBwZXJDYXNlKClcbiAgcmV0dXJuIChzaW5nbGUuY2hhckF0KDApIHx8ICc/JykudG9VcHBlckNhc2UoKVxufVxuXG5jb25zdCBVc2VyUm93QXZhdGFyOiBGQzx7IHBpY3R1cmU/OiBzdHJpbmcgfCBudWxsOyBuYW1lRm9ySW5pdGlhbHM6IHN0cmluZyB9PiA9ICh7IHBpY3R1cmUsIG5hbWVGb3JJbml0aWFscyB9KSA9PiB7XG4gIGNvbnN0IFticm9rZW4sIHNldEJyb2tlbl0gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgaW5pdGlhbHMgPSBpbml0aWFsc0Zyb21EaXNwbGF5TmFtZShuYW1lRm9ySW5pdGlhbHMpXG5cbiAgcmV0dXJuIChcbiAgICA8U0NNVXNlckF2YXRhcldyYXA+XG4gICAgICB7cGljdHVyZSAmJiAhYnJva2VuID8gKFxuICAgICAgICA8U0NNVXNlckF2YXRhckltZyBzcmM9e3BpY3R1cmV9IGFsdD1cIlwiIG9uRXJyb3I9eygpID0+IHNldEJyb2tlbih0cnVlKX0gbG9hZGluZz1cImxhenlcIiBkZWNvZGluZz1cImFzeW5jXCIgLz5cbiAgICAgICkgOiAoXG4gICAgICAgIDxTQ01Vc2VyQXZhdGFyRmFsbGJhY2sgYXJpYS1oaWRkZW4+e2luaXRpYWxzfTwvU0NNVXNlckF2YXRhckZhbGxiYWNrPlxuICAgICAgKX1cbiAgICA8L1NDTVVzZXJBdmF0YXJXcmFwPlxuICApXG59XG5cbmNvbnN0IENvbnRleHRNZW50aW9uVGFza1JvdzogRkM8e1xuICBpdGVtOiBDb250ZXh0TWVudGlvbkl0ZW1UeXBlXG4gIGFjdGl2ZT86IGJvb2xlYW5cbiAgb25Nb3VzZURvd246IChlOiBNb3VzZUV2ZW50KSA9PiB2b2lkXG4gIG9uSG92ZXI/OiAoKSA9PiB2b2lkXG59PiA9ICh7IGl0ZW0sIGFjdGl2ZSwgb25Nb3VzZURvd24sIG9uSG92ZXIgfSkgPT4ge1xuICBjb25zdCB7IHByaW1hcnksIHByaW1hcnlIaWdobGlnaHQsIGJyZWFkY3J1bWIsIHJhdyB9ID0gaXRlbVxuICBjb25zdCBwcm9qZWN0TmFtZSA9IHJhdy5wcm9qZWN0TmFtZT8udHJpbSgpIHx8IGJyZWFkY3J1bWI/LnBhcmVudD8udHJpbSgpIHx8ICcnXG4gIGNvbnN0IHByb2plY3ROYW1lRGlzcGxheSA9IHRydW5jYXRlV2l0aEVsbGlwc2lzKHByb2plY3ROYW1lLCBUQVNLX1BST0pFQ1RfTkFNRV9NQVhfQ0hBUlMpXG4gIGNvbnN0IGlzUHJvamVjdE5hbWVUcnVuY2F0ZWRCeUNoYXJzID0gcHJvamVjdE5hbWVEaXNwbGF5ICE9PSBwcm9qZWN0TmFtZVxuICBjb25zdCBoYXNGYXRoZXIgPSByYXcuZmF0aGVySWQgIT0gbnVsbFxuICBjb25zdCB0aXRsZVJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbClcbiAgY29uc3QgcHJvamVjdFJlZiA9IHVzZVJlZjxIVE1MU3BhbkVsZW1lbnQ+KG51bGwpXG4gIGNvbnN0IHNob3dUaXRsZVRvb2x0aXAgPSB1c2VPdmVyZmxvd1Rvb2x0aXAodGl0bGVSZWYsIFtcbiAgICBwcmltYXJ5LFxuICAgIHByb2plY3ROYW1lLFxuICAgIHByaW1hcnlIaWdobGlnaHQ/LnN0YXJ0ID8/IC0xLFxuICAgIHByaW1hcnlIaWdobGlnaHQ/Lmxlbmd0aCA/PyAwLFxuICAgIGhhc0ZhdGhlcixcbiAgXSlcbiAgY29uc3Qgc2hvd1Byb2plY3RUb29sdGlwID0gdXNlT3ZlcmZsb3dUb29sdGlwKHByb2plY3RSZWYsIFtwcm9qZWN0TmFtZURpc3BsYXksIHByaW1hcnldKVxuICBjb25zdCBzaG91bGRTaG93UHJvamVjdFRvb2x0aXAgPSBpc1Byb2plY3ROYW1lVHJ1bmNhdGVkQnlDaGFycyB8fCBzaG93UHJvamVjdFRvb2x0aXBcblxuICByZXR1cm4gKFxuICAgIDxTQ01JUm93ICRhY3RpdmU9e2FjdGl2ZX0gb25Nb3VzZURvd249e29uTW91c2VEb3dufSBvbk1vdXNlRW50ZXI9e29uSG92ZXJ9PlxuICAgICAgPFNDTUlUYXNrUm93SW5uZXI+XG4gICAgICAgIDxTQ01JVGFza0ljb25JbWcgc3JjPXtUQVNLX0xJTktfSUNPTl9EQVRBX1VSTH0gYWx0PVwiXCIgZHJhZ2dhYmxlPXtmYWxzZX0gYXJpYS1oaWRkZW4gLz5cbiAgICAgICAgPFNDTUlUYXNrVGl0bGVSb3c+XG4gICAgICAgICAge2hhc0ZhdGhlciA/IChcbiAgICAgICAgICAgIDxTQ01JVGFza1N1YnRhc2tJY29uV3JhcD5cbiAgICAgICAgICAgICAgPFN1YnRhc2tJY29uIHdpZHRoPVwiMTZweFwiIGhlaWdodD1cIjE2cHhcIiBjb2xvcj1cIiMwMDBcIiB2YXJpYW50PVwicmVndWxhclwiIC8+XG4gICAgICAgICAgICA8L1NDTUlUYXNrU3VidGFza0ljb25XcmFwPlxuICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgIDxUb29sdGlwIHRpdGxlPXtzaG93VGl0bGVUb29sdGlwID8gcHJpbWFyeSA6ICcnfT5cbiAgICAgICAgICAgIDxTQ01JVGFza1RpdGxlIHJlZj17dGl0bGVSZWZ9PntyZW5kZXJUaXRsZShwcmltYXJ5LCBwcmltYXJ5SGlnaGxpZ2h0KX08L1NDTUlUYXNrVGl0bGU+XG4gICAgICAgICAgPC9Ub29sdGlwPlxuICAgICAgICAgIHtwcm9qZWN0TmFtZSA/IChcbiAgICAgICAgICAgIDxUb29sdGlwIHRpdGxlPXtzaG91bGRTaG93UHJvamVjdFRvb2x0aXAgPyBwcm9qZWN0TmFtZSA6ICcnfT5cbiAgICAgICAgICAgICAgPFNDTUlUYXNrUHJvamVjdE5hbWUgcmVmPXtwcm9qZWN0UmVmfT57cHJvamVjdE5hbWVEaXNwbGF5fTwvU0NNSVRhc2tQcm9qZWN0TmFtZT5cbiAgICAgICAgICAgIDwvVG9vbHRpcD5cbiAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgPC9TQ01JVGFza1RpdGxlUm93PlxuICAgICAgPC9TQ01JVGFza1Jvd0lubmVyPlxuICAgIDwvU0NNSVJvdz5cbiAgKVxufVxuXG5leHBvcnQgY29uc3QgQ29udGV4dE1lbnRpb25JdGVtOiBGQzxDb250ZXh0TWVudGlvbkl0ZW1Qcm9wcz4gPSAoeyBpdGVtLCBhY3RpdmUsIG9uU2VsZWN0LCBvbkhvdmVyIH0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUKClcbiAgY29uc3QgeyBwcmltYXJ5LCBwcmltYXJ5SGlnaGxpZ2h0LCBicmVhZGNydW1iLCB0eXBlLCByYXcgfSA9IGl0ZW1cblxuICBjb25zdCBoYW5kbGVDbGljayA9IChlOiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpXG4gICAgZS5zdG9wUHJvcGFnYXRpb24oKVxuICAgIG9uU2VsZWN0KGl0ZW0pXG4gIH1cblxuICBjb25zdCBoYXNDb3VudCA9IHR5cGVvZiBicmVhZGNydW1iPy5jb3VudCA9PT0gJ251bWJlcidcbiAgY29uc3QgaGFzUGFyZW50ID0gISFicmVhZGNydW1iPy5wYXJlbnRcbiAgY29uc3QgY291bnRMYWJlbCA9XG4gICAgYnJlYWRjcnVtYj8uY291bnRMYWJlbCAmJlxuICAgIHQoYGNvbnRleHRNZW50aW9uLmNvdW50ZXJzLiR7YnJlYWRjcnVtYi5jb3VudExhYmVsfWAsIHsgZGVmYXVsdFZhbHVlOiBicmVhZGNydW1iLmNvdW50TGFiZWwgfSlcblxuICBpZiAodHlwZSA9PT0gJ3VzZXInKSB7XG4gICAgY29uc3QgcG9zaXRpb25OYW1lVHJpbW1lZCA9IHJhdy5wb3NpdGlvbk5hbWU/LnRyaW0oKSA/PyAnJ1xuICAgIGNvbnN0IHBvc2l0aW9uTGluZSA9IHBvc2l0aW9uTmFtZVRyaW1tZWQgfHwgdCgnY29udGV4dE1lbnRpb24udXNlck5vUG9zaXRpb24nLCB7IGRlZmF1bHRWYWx1ZTogJ1NpbiBwb3NpY2nDs24nIH0pXG5cbiAgICByZXR1cm4gKFxuICAgICAgPFNDTUlSb3dVc2VyICRhY3RpdmU9e2FjdGl2ZX0gb25Nb3VzZURvd249e2hhbmRsZUNsaWNrfSBvbk1vdXNlRW50ZXI9eygpID0+IG9uSG92ZXI/LihpdGVtKX0+XG4gICAgICAgIDxVc2VyUm93QXZhdGFyIHBpY3R1cmU9e3Jhdy5waWN0dXJlfSBuYW1lRm9ySW5pdGlhbHM9e3Jhdy5uYW1lLnRyaW0oKSA/IHJhdy5uYW1lIDogcHJpbWFyeX0gLz5cbiAgICAgICAgPFNDTVVzZXJJbmZvPlxuICAgICAgICAgIDxTQ01Vc2VyTmFtZVBvc2l0aW9uUm93PlxuICAgICAgICAgICAgPFNDTVVzZXJOYW1lQ2VsbCAkd2l0aERpdmlkZXI+XG4gICAgICAgICAgICAgIDxTQ01Vc2VyTmFtZVRleHQ+e3JlbmRlclRpdGxlKHByaW1hcnksIHByaW1hcnlIaWdobGlnaHQpfTwvU0NNVXNlck5hbWVUZXh0PlxuICAgICAgICAgICAgPC9TQ01Vc2VyTmFtZUNlbGw+XG4gICAgICAgICAgICA8U0NNVXNlclBvc2l0aW9uVGV4dCB0aXRsZT17cG9zaXRpb25MaW5lfT57cG9zaXRpb25MaW5lfTwvU0NNVXNlclBvc2l0aW9uVGV4dD5cbiAgICAgICAgICA8L1NDTVVzZXJOYW1lUG9zaXRpb25Sb3c+XG4gICAgICAgIDwvU0NNVXNlckluZm8+XG4gICAgICA8L1NDTUlSb3dVc2VyPlxuICAgIClcbiAgfVxuXG4gIGlmICh0eXBlID09PSAncHJvamVjdCcpIHtcbiAgICByZXR1cm4gKFxuICAgICAgPFNDTUlQcm9qZWN0Um93IG9uTW91c2VEb3duPXtoYW5kbGVDbGlja30gb25Nb3VzZUVudGVyPXsoKSA9PiBvbkhvdmVyPy4oaXRlbSl9PlxuICAgICAgICA8U0NNSVByb2plY3RDb250ZW50ICRhY3RpdmU9e2FjdGl2ZX0+XG4gICAgICAgICAgPFNDTUlOYW1lPlxuICAgICAgICAgICAgPFNDTUlQcm9qZWN0VGl0bGUgdGl0bGU9e3ByaW1hcnl9PntyZW5kZXJUaXRsZShwcmltYXJ5LCBwcmltYXJ5SGlnaGxpZ2h0KX08L1NDTUlQcm9qZWN0VGl0bGU+XG4gICAgICAgICAgPC9TQ01JTmFtZT5cbiAgICAgICAgPC9TQ01JUHJvamVjdENvbnRlbnQ+XG4gICAgICA8L1NDTUlQcm9qZWN0Um93PlxuICAgIClcbiAgfVxuXG4gIGlmICh0eXBlID09PSAndGFzaycpIHtcbiAgICByZXR1cm4gKFxuICAgICAgPENvbnRleHRNZW50aW9uVGFza1JvdyBpdGVtPXtpdGVtfSBhY3RpdmU9e2FjdGl2ZX0gb25Nb3VzZURvd249e2hhbmRsZUNsaWNrfSBvbkhvdmVyPXsoKSA9PiBvbkhvdmVyPy4oaXRlbSl9IC8+XG4gICAgKVxuICB9XG5cbiAgaWYgKHR5cGUgPT09ICdtY3AnKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIDxTQ01JUm93ICRhY3RpdmU9e2FjdGl2ZX0gb25Nb3VzZURvd249e2hhbmRsZUNsaWNrfSBvbk1vdXNlRW50ZXI9eygpID0+IG9uSG92ZXI/LihpdGVtKX0+XG4gICAgICAgIDxTQ01JVGFza1Jvd0lubmVyPlxuICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICBkaXNwbGF5OiAnaW5saW5lLWZsZXgnLFxuICAgICAgICAgICAgICBhbGlnbkl0ZW1zOiAnY2VudGVyJyxcbiAgICAgICAgICAgICAganVzdGlmeUNvbnRlbnQ6ICdjZW50ZXInLFxuICAgICAgICAgICAgICB3aWR0aDogMTYsXG4gICAgICAgICAgICAgIGhlaWdodDogMTYsXG4gICAgICAgICAgICAgIGZsZXg6ICcwIDAgMTZweCcsXG4gICAgICAgICAgICB9fVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHtpc05vdGlvbk1jcFNsdWcocmF3LmlkKSA/IChcbiAgICAgICAgICAgICAgPE5vdGlvbkljb24gd2lkdGg9ezE2fSBoZWlnaHQ9ezE2fSAvPlxuICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgZ2V0Q29udGV4dE1lbnRpb25JY29uKCdtY3AnLCAnIzJkNzdiZCcsIHJhdy5pZCwgMTYpXG4gICAgICAgICAgICApfVxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8U0NNSVRhc2tUaXRsZSB0aXRsZT17cHJpbWFyeX0+e3JlbmRlclRpdGxlKHByaW1hcnksIHByaW1hcnlIaWdobGlnaHQpfTwvU0NNSVRhc2tUaXRsZT5cbiAgICAgICAgPC9TQ01JVGFza1Jvd0lubmVyPlxuICAgICAgPC9TQ01JUm93PlxuICAgIClcbiAgfVxuXG4gIHJldHVybiAoXG4gICAgPFNDTUlSb3cgJGFjdGl2ZT17YWN0aXZlfSBvbk1vdXNlRG93bj17aGFuZGxlQ2xpY2t9IG9uTW91c2VFbnRlcj17KCkgPT4gb25Ib3Zlcj8uKGl0ZW0pfT5cbiAgICAgIDxTQ01JTmFtZT5cbiAgICAgICAgPFNDTUlUaXRsZT57cmVuZGVyVGl0bGUocHJpbWFyeSwgcHJpbWFyeUhpZ2hsaWdodCl9PC9TQ01JVGl0bGU+XG4gICAgICAgIHsoaGFzQ291bnQgfHwgaGFzUGFyZW50KSAmJiAoXG4gICAgICAgICAgPFNDTUlCcmVhZGNydW1iPlxuICAgICAgICAgICAge2hhc0NvdW50ICYmIChcbiAgICAgICAgICAgICAgPHNwYW4+XG4gICAgICAgICAgICAgICAge2JyZWFkY3J1bWI/LmNvdW50fSB7Y291bnRMYWJlbH1cbiAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIHtoYXNQYXJlbnQgJiYgKFxuICAgICAgICAgICAgICA8U0NNSUJyZWFkY3J1bWJQYXJlbnQ+XG4gICAgICAgICAgICAgICAgPENoZXZyb25SaWdodCB3aWR0aD1cIjEycHhcIiBoZWlnaHQ9XCIxMnB4XCIgY29sb3I9XCIjODA4MDgwXCIgLz5cbiAgICAgICAgICAgICAgICA8c3Bhbj57YnJlYWRjcnVtYj8ucGFyZW50fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9TQ01JQnJlYWRjcnVtYlBhcmVudD5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgPC9TQ01JQnJlYWRjcnVtYj5cbiAgICAgICAgKX1cbiAgICAgIDwvU0NNSU5hbWU+XG4gICAgPC9TQ01JUm93PlxuICApXG59XG4iXSwibWFwcGluZ3MiOiI7QUFBQSxTQUF5QkEsZUFBZSxFQUFFQyxNQUFNLEVBQUVDLFFBQVEsUUFBd0IsT0FBTztBQUN6RixTQUFTQyxZQUFZLFFBQVEsK0NBQStDO0FBQzVFLFNBQVNDLE9BQU8sUUFBUSw4Q0FBOEM7QUFDdEUsU0FBU0MsSUFBSSxRQUFRLHFCQUFxQjtBQUMxQyxTQUFTQyx1QkFBdUIsUUFBUSxpQ0FBaUM7QUFFekUsU0FBU0MsVUFBVSxRQUFRLHFCQUFxQjtBQUNoRCxTQUFTQyxXQUFXLFFBQVEsc0JBQXNCO0FBQ2xELFNBQVNDLHFCQUFxQixFQUFFQyxlQUFlLFFBQVEsb0NBQW9DO0FBQzNGLFNBQ0VDLE9BQU8sRUFDUEMsY0FBYyxFQUNkQyxrQkFBa0IsRUFDbEJDLFFBQVEsRUFDUkMsU0FBUyxFQUNUQyxnQkFBZ0IsRUFDaEJDLGtCQUFrQixFQUNsQkMsY0FBYyxFQUNkQyxvQkFBb0IsRUFDcEJDLFdBQVcsRUFDWEMsaUJBQWlCLEVBQ2pCQyxnQkFBZ0IsRUFDaEJDLHFCQUFxQixFQUNyQkMsV0FBVyxFQUNYQyxzQkFBc0IsRUFDdEJDLGVBQWUsRUFDZkMsZUFBZSxFQUNmQyxtQkFBbUIsRUFDbkJDLGdCQUFnQixFQUNoQkMsZ0JBQWdCLEVBQ2hCQyx1QkFBdUIsRUFDdkJDLG1CQUFtQixFQUNuQkMsZUFBZSxFQUNmQyxhQUFhLFFBQ1IsNkJBQTZCO0FBQUEsU0FBQUMsR0FBQSxJQUFBQyxJQUFBLEVBQUFDLFFBQUEsSUFBQUMsU0FBQSxFQUFBQyxJQUFBLElBQUFDLEtBQUE7QUFTcEMsSUFBTUMsMkJBQTJCLEdBQUcsRUFBRTtBQUV0QyxJQUFNQyxvQkFBb0Is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