From 4d0886a4feed7de8512e6d1428bddea290f3bcb0 Mon Sep 17 00:00:00 2001 From: Vasanthdev2004 Date: Thu, 2 Apr 2026 18:42:56 +0530 Subject: [PATCH] fix: keep slash highlight in sync in fullscreen --- .../PromptInputFooterSuggestions.tsx | 68 +++++++------------ src/context/promptOverlayContext.tsx | 44 ++++++++++-- 2 files changed, 63 insertions(+), 49 deletions(-) diff --git a/src/components/PromptInput/PromptInputFooterSuggestions.tsx b/src/components/PromptInput/PromptInputFooterSuggestions.tsx index 75c9d75b..de1e7c95 100644 --- a/src/components/PromptInput/PromptInputFooterSuggestions.tsx +++ b/src/components/PromptInput/PromptInputFooterSuggestions.tsx @@ -58,15 +58,13 @@ const SuggestionItemRow = memo(function SuggestionItemRow({ }): ReactNode { const columns = useTerminalSize().columns const selectionPrefix = isSelected ? SELECTED_PREFIX : UNSELECTED_PREFIX + const rowBackgroundColor: keyof Theme | undefined = isSelected + ? 'suggestion' + : undefined + const textColor: keyof Theme | undefined = isSelected ? 'inverseText' : undefined if (isUnifiedSuggestion(item.id)) { const icon = getIcon(item.id) - const textColor: keyof Theme | undefined = isSelected - ? 'inverseText' - : undefined - const backgroundColor: keyof Theme | undefined = isSelected - ? 'suggestion' - : undefined const dimColor = !isSelected const isFile = item.id.startsWith('file-') const isMcpResource = item.id.startsWith('mcp-resource-') @@ -113,15 +111,11 @@ const SuggestionItemRow = memo(function SuggestionItemRow({ } return ( - - {lineContent} - + + + {lineContent} + + ) } @@ -130,10 +124,7 @@ const SuggestionItemRow = memo(function SuggestionItemRow({ maxColumnWidth ?? stringWidth(item.displayText) + 5, maxNameWidth, ) - const textColor = isSelected ? 'inverseText' : item.color - const backgroundColor: keyof Theme | undefined = isSelected - ? 'suggestion' - : undefined + const displayTextColor = isSelected ? 'inverseText' : item.color const shouldDim = !isSelected let displayText = item.displayText @@ -156,32 +147,21 @@ const SuggestionItemRow = memo(function SuggestionItemRow({ : '' return ( - - - {paddedDisplayText} - - {tagText ? ( - - {tagText} + + + + {paddedDisplayText} + + {tagText ? ( + + {tagText} + + ) : null} + + {truncatedDescription} - ) : null} - - {truncatedDescription} - + ) }) @@ -226,7 +206,7 @@ export function PromptInputFooterSuggestions({ > {visibleItems.map(item => ( { if (!set) { return; } set(data); - return () => set(null); }; t1 = [set, data]; $[0] = data; @@ -91,7 +92,23 @@ export function useSetPromptOverlay(data) { t0 = $[2]; t1 = $[3]; } + if ($[4] !== set) { + t2 = () => { + if (!set) { + return; + } + return () => set(null); + }; + t3 = [set]; + $[4] = set; + $[5] = t2; + $[6] = t3; + } else { + t2 = $[5]; + t3 = $[6]; + } useEffect(t0, t1); + useEffect(t2, t3); } /** @@ -99,17 +116,18 @@ export function useSetPromptOverlay(data) { * No-op outside the provider (non-fullscreen renders inline instead). */ export function useSetPromptOverlayDialog(node) { - const $ = _c(4); + const $ = _c(8); const set = useContext(SetDialogContext); let t0; let t1; + let t2; + let t3; if ($[0] !== node || $[1] !== set) { t0 = () => { if (!set) { return; } set(node); - return () => set(null); }; t1 = [set, node]; $[0] = node; @@ -120,6 +138,22 @@ export function useSetPromptOverlayDialog(node) { t0 = $[2]; t1 = $[3]; } + if ($[4] !== set) { + t2 = () => { + if (!set) { + return; + } + return () => set(null); + }; + t3 = [set]; + $[4] = set; + $[5] = t2; + $[6] = t3; + } else { + t2 = $[5]; + t3 = $[6]; + } useEffect(t0, t1); + useEffect(t2, t3); } -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsImNyZWF0ZUNvbnRleHQiLCJSZWFjdE5vZGUiLCJ1c2VDb250ZXh0IiwidXNlRWZmZWN0IiwidXNlU3RhdGUiLCJTdWdnZXN0aW9uSXRlbSIsIlByb21wdE92ZXJsYXlEYXRhIiwic3VnZ2VzdGlvbnMiLCJzZWxlY3RlZFN1Z2dlc3Rpb24iLCJtYXhDb2x1bW5XaWR0aCIsIlNldHRlciIsImQiLCJUIiwiRGF0YUNvbnRleHQiLCJTZXRDb250ZXh0IiwiRGlhbG9nQ29udGV4dCIsIlNldERpYWxvZ0NvbnRleHQiLCJQcm9tcHRPdmVybGF5UHJvdmlkZXIiLCJ0MCIsIiQiLCJfYyIsImNoaWxkcmVuIiwiZGF0YSIsInNldERhdGEiLCJkaWFsb2ciLCJzZXREaWFsb2ciLCJ0MSIsInQyIiwidXNlUHJvbXB0T3ZlcmxheSIsInVzZVByb21wdE92ZXJsYXlEaWFsb2ciLCJ1c2VTZXRQcm9tcHRPdmVybGF5Iiwic2V0IiwidXNlU2V0UHJvbXB0T3ZlcmxheURpYWxvZyIsIm5vZGUiXSwic291cmNlcyI6WyJwcm9tcHRPdmVybGF5Q29udGV4dC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBQb3J0YWwgZm9yIGNvbnRlbnQgdGhhdCBmbG9hdHMgYWJvdmUgdGhlIHByb21wdCBzbyBpdCBlc2NhcGVzXG4gKiBGdWxsc2NyZWVuTGF5b3V0J3MgYm90dG9tLXNsb3QgYG92ZXJmbG93WTpoaWRkZW5gIGNsaXAuXG4gKlxuICogVGhlIGNsaXAgaXMgbG9hZC1iZWFyaW5nIChDQy02Njg6IHRhbGwgcGFzdGVzIHNxdWFzaCB0aGUgU2Nyb2xsQm94XG4gKiB3aXRob3V0IGl0KSwgYnV0IGZsb2F0aW5nIG92ZXJsYXlzIHVzZSBgcG9zaXRpb246YWJzb2x1dGVcbiAqIGJvdHRvbT1cIjEwMCVcImAgdG8gZmxvYXQgYWJvdmUgdGhlIHByb21wdCDigJQgYW5kIEluaydzIGNsaXAgc3RhY2tcbiAqIGludGVyc2VjdHMgQUxMIGRlc2NlbmRhbnRzLCBzbyB0aGV5IHdlcmUgY2xpcHBlZCB0byB+MSByb3cuXG4gKlxuICogVHdvIGNoYW5uZWxzOlxuICogLSBgdXNlU2V0UHJvbXB0T3ZlcmxheWAg4oCUIHNsYXNoLWNvbW1hbmQgc3VnZ2VzdGlvbiBkYXRhIChzdHJ1Y3R1cmVkLFxuICogICB3cml0dGVuIGJ5IFByb21wdElucHV0Rm9vdGVyKVxuICogLSBgdXNlU2V0UHJvbXB0T3ZlcmxheURpYWxvZ2Ag4oCUIGFyYml0cmFyeSBkaWFsb2cgbm9kZSAoZS5nLlxuICogICBBdXRvTW9kZU9wdEluRGlhbG9nLCB3cml0dGVuIGJ5IFByb21wdElucHV0KVxuICpcbiAqIEZ1bGxzY3JlZW5MYXlvdXQgcmVhZHMgYm90aCBhbmQgcmVuZGVycyB0aGVtIG91dHNpZGUgdGhlIGNsaXBwZWQgc2xvdC5cbiAqXG4gKiBTcGxpdCBpbnRvIGRhdGEvc2V0dGVyIGNvbnRleHQgcGFpcnMgc28gd3JpdGVycyBuZXZlciByZS1yZW5kZXIgb25cbiAqIHRoZWlyIG93biB3cml0ZXMg4oCUIHRoZSBzZXR0ZXIgY29udGV4dHMgYXJlIHN0YWJsZS5cbiAqL1xuaW1wb3J0IFJlYWN0LCB7XG4gIGNyZWF0ZUNvbnRleHQsXG4gIHR5cGUgUmVhY3ROb2RlLFxuICB1c2VDb250ZXh0LFxuICB1c2VFZmZlY3QsXG4gIHVzZVN0YXRlLFxufSBmcm9tICdyZWFjdCdcbmltcG9ydCB0eXBlIHsgU3VnZ2VzdGlvbkl0ZW0gfSBmcm9tICcuLi9jb21wb25lbnRzL1Byb21wdElucHV0L1Byb21wdElucHV0Rm9vdGVyU3VnZ2VzdGlvbnMuanMnXG5cbmV4cG9ydCB0eXBlIFByb21wdE92ZXJsYXlEYXRhID0ge1xuICBzdWdnZXN0aW9uczogU3VnZ2VzdGlvbkl0ZW1bXVxuICBzZWxlY3RlZFN1Z2dlc3Rpb246IG51bWJlclxuICBtYXhDb2x1bW5XaWR0aD86IG51bWJlclxufVxuXG50eXBlIFNldHRlcjxUPiA9IChkOiBUIHwgbnVsbCkgPT4gdm9pZFxuXG5jb25zdCBEYXRhQ29udGV4dCA9IGNyZWF0ZUNvbnRleHQ8UHJvbXB0T3ZlcmxheURhdGEgfCBudWxsPihudWxsKVxuY29uc3QgU2V0Q29udGV4dCA9IGNyZWF0ZUNvbnRleHQ8U2V0dGVyPFByb21wdE92ZXJsYXlEYXRhPiB8IG51bGw+KG51bGwpXG5jb25zdCBEaWFsb2dDb250ZXh0ID0gY3JlYXRlQ29udGV4dDxSZWFjdE5vZGU+KG51bGwpXG5jb25zdCBTZXREaWFsb2dDb250ZXh0ID0gY3JlYXRlQ29udGV4dDxTZXR0ZXI8UmVhY3ROb2RlPiB8IG51bGw+KG51bGwpXG5cbmV4cG9ydCBmdW5jdGlvbiBQcm9tcHRPdmVybGF5UHJvdmlkZXIoe1xuICBjaGlsZHJlbixcbn06IHtcbiAgY2hpbGRyZW46IFJlYWN0Tm9kZVxufSk6IFJlYWN0Tm9kZSB7XG4gIGNvbnN0IFtkYXRhLCBzZXREYXRhXSA9IHVzZVN0YXRlPFByb21wdE92ZXJsYXlEYXRhIHwgbnVsbD4obnVsbClcbiAgY29uc3QgW2RpYWxvZywgc2V0RGlhbG9nXSA9IHVzZVN0YXRlPFJlYWN0Tm9kZT4obnVsbClcbiAgcmV0dXJuIChcbiAgICA8U2V0Q29udGV4dC5Qcm92aWRlciB2YWx1ZT17c2V0RGF0YX0+XG4gICAgICA8U2V0RGlhbG9nQ29udGV4dC5Qcm92aWRlciB2YWx1ZT17c2V0RGlhbG9nfT5cbiAgICAgICAgPERhdGFDb250ZXh0LlByb3ZpZGVyIHZhbHVlPXtkYXRhfT5cbiAgICAgICAgICA8RGlhbG9nQ29udGV4dC5Qcm92aWRlciB2YWx1ZT17ZGlhbG9nfT5cbiAgICAgICAgICAgIHtjaGlsZHJlbn1cbiAgICAgICAgICA8L0RpYWxvZ0NvbnRleHQuUHJvdmlkZXI+XG4gICAgICAgIDwvRGF0YUNvbnRleHQuUHJvdmlkZXI+XG4gICAgICA8L1NldERpYWxvZ0NvbnRleHQuUHJvdmlkZXI+XG4gICAgPC9TZXRDb250ZXh0LlByb3ZpZGVyPlxuICApXG59XG5cbmV4cG9ydCBmdW5jdGlvbiB1c2VQcm9tcHRPdmVybGF5KCk6IFByb21wdE92ZXJsYXlEYXRhIHwgbnVsbCB7XG4gIHJldHVybiB1c2VDb250ZXh0KERhdGFDb250ZXh0KVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdXNlUHJvbXB0T3ZlcmxheURpYWxvZygpOiBSZWFjdE5vZGUge1xuICByZXR1cm4gdXNlQ29udGV4dChEaWFsb2dDb250ZXh0KVxufVxuXG4vKipcbiAqIFJlZ2lzdGVyIHN1Z2dlc3Rpb24gZGF0YSBmb3IgdGhlIGZsb2F0aW5nIG92ZXJsYXkuIENsZWFycyBvbiB1bm1vdW50LlxuICogTm8tb3Agb3V0c2lkZSB0aGUgcHJvdmlkZXIgKG5vbi1mdWxsc2NyZWVuIHJlbmRlcnMgaW5saW5lIGluc3RlYWQpLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlU2V0UHJvbXB0T3ZlcmxheShkYXRhOiBQcm9tcHRPdmVybGF5RGF0YSB8IG51bGwpOiB2b2lkIHtcbiAgY29uc3Qgc2V0ID0gdXNlQ29udGV4dChTZXRDb250ZXh0KVxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghc2V0KSByZXR1cm5cbiAgICBzZXQoZGF0YSlcbiAgICByZXR1cm4gKCkgPT4gc2V0KG51bGwpXG4gIH0sIFtzZXQsIGRhdGFdKVxufVxuXG4vKipcbiAqIFJlZ2lzdGVyIGEgZGlhbG9nIG5vZGUgdG8gZmxvYXQgYWJvdmUgdGhlIHByb21wdC4gQ2xlYXJzIG9uIHVubW91bnQuXG4gKiBOby1vcCBvdXRzaWRlIHRoZSBwcm92aWRlciAobm9uLWZ1bGxzY3JlZW4gcmVuZGVycyBpbmxpbmUgaW5zdGVhZCkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1c2VTZXRQcm9tcHRPdmVybGF5RGlhbG9nKG5vZGU6IFJlYWN0Tm9kZSk6IHZvaWQge1xuICBjb25zdCBzZXQgPSB1c2VDb250ZXh0KFNldERpYWxvZ0NvbnRleHQpXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFzZXQpIHJldHVyblxuICAgIHNldChub2RlKVxuICAgIHJldHVybiAoKSA9PiBzZXQobnVsbClcbiAgfSwgW3NldCwgbm9kZV0pXG59XG4i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 \ No newline at end of file +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsImNyZWF0ZUNvbnRleHQiLCJSZWFjdE5vZGUiLCJ1c2VDb250ZXh0IiwidXNlRWZmZWN0IiwidXNlU3RhdGUiLCJTdWdnZXN0aW9uSXRlbSIsIlByb21wdE92ZXJsYXlEYXRhIiwic3VnZ2VzdGlvbnMiLCJzZWxlY3RlZFN1Z2dlc3Rpb24iLCJtYXhDb2x1bW5XaWR0aCIsIlNldHRlciIsImQiLCJUIiwiRGF0YUNvbnRleHQiLCJTZXRDb250ZXh0IiwiRGlhbG9nQ29udGV4dCIsIlNldERpYWxvZ0NvbnRleHQiLCJQcm9tcHRPdmVybGF5UHJvdmlkZXIiLCJ0MCIsIiQiLCJfYyIsImNoaWxkcmVuIiwiZGF0YSIsInNldERhdGEiLCJkaWFsb2ciLCJzZXREaWFsb2ciLCJ0MSIsInQyIiwidXNlUHJvbXB0T3ZlcmxheSIsInVzZVByb21wdE92ZXJsYXlEaWFsb2ciLCJ1c2VTZXRQcm9tcHRPdmVybGF5Iiwic2V0IiwidXNlU2V0UHJvbXB0T3ZlcmxheURpYWxvZyIsIm5vZGUiXSwic291cmNlcyI6WyJwcm9tcHRPdmVybGF5Q29udGV4dC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBQb3J0YWwgZm9yIGNvbnRlbnQgdGhhdCBmbG9hdHMgYWJvdmUgdGhlIHByb21wdCBzbyBpdCBlc2NhcGVzXG4gKiBGdWxsc2NyZWVuTGF5b3V0J3MgYm90dG9tLXNsb3QgYG92ZXJmbG93WTpoaWRkZW5gIGNsaXAuXG4gKlxuICogVGhlIGNsaXAgaXMgbG9hZC1iZWFyaW5nIChDQy02Njg6IHRhbGwgcGFzdGVzIHNxdWFzaCB0aGUgU2Nyb2xsQm94XG4gKiB3aXRob3V0IGl0KSwgYnV0IGZsb2F0aW5nIG92ZXJsYXlzIHVzZSBgcG9zaXRpb246YWJzb2x1dGVcbiAqIGJvdHRvbT1cIjEwMCVcImAgdG8gZmxvYXQgYWJvdmUgdGhlIHByb21wdCDigJQgYW5kIEluaydzIGNsaXAgc3RhY2tcbiAqIGludGVyc2VjdHMgQUxMIGRlc2NlbmRhbnRzLCBzbyB0aGV5IHdlcmUgY2xpcHBlZCB0byB+MSByb3cuXG4gKlxuICogVHdvIGNoYW5uZWxzOlxuICogLSBgdXNlU2V0UHJvbXB0T3ZlcmxheWAg4oCUIHNsYXNoLWNvbW1hbmQgc3VnZ2VzdGlvbiBkYXRhIChzdHJ1Y3R1cmVkLFxuICogICB3cml0dGVuIGJ5IFByb21wdElucHV0Rm9vdGVyKVxuICogLSBgdXNlU2V0UHJvbXB0T3ZlcmxheURpYWxvZ2Ag4oCUIGFyYml0cmFyeSBkaWFsb2cgbm9kZSAoZS5nLlxuICogICBBdXRvTW9kZU9wdEluRGlhbG9nLCB3cml0dGVuIGJ5IFByb21wdElucHV0KVxuICpcbiAqIEZ1bGxzY3JlZW5MYXlvdXQgcmVhZHMgYm90aCBhbmQgcmVuZGVycyB0aGVtIG91dHNpZGUgdGhlIGNsaXBwZWQgc2xvdC5cbiAqXG4gKiBTcGxpdCBpbnRvIGRhdGEvc2V0dGVyIGNvbnRleHQgcGFpcnMgc28gd3JpdGVycyBuZXZlciByZS1yZW5kZXIgb25cbiAqIHRoZWlyIG93biB3cml0ZXMg4oCUIHRoZSBzZXR0ZXIgY29udGV4dHMgYXJlIHN0YWJsZS5cbiAqL1xuaW1wb3J0IFJlYWN0LCB7XG4gIGNyZWF0ZUNvbnRleHQsXG4gIHR5cGUgUmVhY3ROb2RlLFxuICB1c2VDb250ZXh0LFxuICB1c2VFZmZlY3QsXG4gIHVzZVN0YXRlLFxufSBmcm9tICdyZWFjdCdcbmltcG9ydCB0eXBlIHsgU3VnZ2VzdGlvbkl0ZW0gfSBmcm9tICcuLi9jb21wb25lbnRzL1Byb21wdElucHV0L1Byb21wdElucHV0Rm9vdGVyU3VnZ2VzdGlvbnMuanMnXG5cbmV4cG9ydCB0eXBlIFByb21wdE92ZXJsYXlEYXRhID0ge1xuICBzdWdnZXN0aW9uczogU3VnZ2VzdGlvbkl0ZW1bXVxuICBzZWxlY3RlZFN1Z2dlc3Rpb246IG51bWJlclxuICBtYXhDb2x1bW5XaWR0aD86IG51bWJlclxufVxuXG50eXBlIFNldHRlcjxUPiA9IChkOiBUIHwgbnVsbCkgPT4gdm9pZFxuXG5jb25zdCBEYXRhQ29udGV4dCA9IGNyZWF0ZUNvbnRleHQ8UHJvbXB0T3ZlcmxheURhdGEgfCBudWxsPihudWxsKVxuY29uc3QgU2V0Q29udGV4dCA9IGNyZWF0ZUNvbnRleHQ8U2V0dGVyPFByb21wdE92ZXJsYXlEYXRhPiB8IG51bGw+KG51bGwpXG5jb25zdCBEaWFsb2dDb250ZXh0ID0gY3JlYXRlQ29udGV4dDxSZWFjdE5vZGU+KG51bGwpXG5jb25zdCBTZXREaWFsb2dDb250ZXh0ID0gY3JlYXRlQ29udGV4dDxTZXR0ZXI8UmVhY3ROb2RlPiB8IG51bGw+KG51bGwpXG5cbmV4cG9ydCBmdW5jdGlvbiBQcm9tcHRPdmVybGF5UHJvdmlkZXIoe1xuICBjaGlsZHJlbixcbn06IHtcbiAgY2hpbGRyZW46IFJlYWN0Tm9kZVxufSk6IFJlYWN0Tm9kZSB7XG4gIGNvbnN0IFtkYXRhLCBzZXREYXRhXSA9IHVzZVN0YXRlPFByb21wdE92ZXJsYXlEYXRhIHwgbnVsbD4obnVsbClcbiAgY29uc3QgW2RpYWxvZywgc2V0RGlhbG9nXSA9IHVzZVN0YXRlPFJlYWN0Tm9kZT4obnVsbClcbiAgcmV0dXJuIChcbiAgICA8U2V0Q29udGV4dC5Qcm92aWRlciB2YWx1ZT17c2V0RGF0YX0+XG4gICAgICA8U2V0RGlhbG9nQ29udGV4dC5Qcm92aWRlciB2YWx1ZT17c2V0RGlhbG9nfT5cbiAgICAgICAgPERhdGFDb250ZXh0LlByb3ZpZGVyIHZhbHVlPXtkYXRhfT5cbiAgICAgICAgICA8RGlhbG9nQ29udGV4dC5Qcm92aWRlciB2YWx1ZT17ZGlhbG9nfT5cbiAgICAgICAgICAgIHtjaGlsZHJlbn1cbiAgICAgICAgICA8L0RpYWxvZ0NvbnRleHQuUHJvdmlkZXI+XG4gICAgICAgIDwvRGF0YUNvbnRleHQuUHJvdmlkZXI+XG4gICAgICA8L1NldERpYWxvZ0NvbnRleHQuUHJvdmlkZXI+XG4gICAgPC9TZXRDb250ZXh0LlByb3ZpZGVyPlxuICApXG59XG5cbmV4cG9ydCBmdW5jdGlvbiB1c2VQcm9tcHRPdmVybGF5KCk6IFByb21wdE92ZXJsYXlEYXRhIHwgbnVsbCB7XG4gIHJldHVybiB1c2VDb250ZXh0KERhdGFDb250ZXh0KVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdXNlUHJvbXB0T3ZlcmxheURpYWxvZygpOiBSZWFjdE5vZGUge1xuICByZXR1cm4gdXNlQ29udGV4dChEaWFsb2dDb250ZXh0KVxufVxuXG4vKipcbiAqIFJlZ2lzdGVyIHN1Z2dlc3Rpb24gZGF0YSBmb3IgdGhlIGZsb2F0aW5nIG92ZXJsYXkuIENsZWFycyBvbiB1bm1vdW50LlxuICogTm8tb3Agb3V0c2lkZSB0aGUgcHJvdmlkZXIgKG5vbi1mdWxsc2NyZWVuIHJlbmRlcnMgaW5saW5lIGluc3RlYWQpLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlU2V0UHJvbXB0T3ZlcmxheShkYXRhOiBQcm9tcHRPdmVybGF5RGF0YSB8IG51bGwpOiB2b2lkIHtcbiAgY29uc3Qgc2V0ID0gdXNlQ29udGV4dChTZXRDb250ZXh0KVxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghc2V0KSByZXR1cm5cbiAgICBzZXQoZGF0YSlcbiAgICByZXR1cm4gKCkgPT4gc2V0KG51bGwpXG4gIH0sIFtzZXQsIGRhdGFdKVxufVxuXG4vKipcbiAqIFJlZ2lzdGVyIGEgZGlhbG9nIG5vZGUgdG8gZmxvYXQgYWJvdmUgdGhlIHByb21wdC4gQ2xlYXJzIG9uIHVubW91bnQuXG4gKiBOby1vcCBvdXRzaWRlIHRoZSBwcm92aWRlciAobm9uLWZ1bGxzY3JlZW4gcmVuZGVycyBpbmxpbmUgaW5zdGVhZCkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1c2VTZXRQcm9tcHRPdmVybGF5RGlhbG9nKG5vZGU6IFJlYWN0Tm9kZSk6IHZvaWQge1xuICBjb25zdCBzZXQgPSB1c2VDb250ZXh0KFNldERpYWxvZ0NvbnRleHQpXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFzZXQpIHJldHVyblxuICAgIHNldChub2RlKVxuICAgIHJldHVybiAoKSA9PiBzZXQobnVsbClcbiAgfSwgW3NldCwgbm9kZV0pXG59XG4i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