ConfirmStep.tsx
1 import { c as _c } from "react/compiler-runtime"; 2 import React, { type ReactNode } from 'react'; 3 import type { KeyboardEvent } from '../../../../ink/events/keyboard-event.js'; 4 import { Box, Text } from '../../../../ink.js'; 5 import { useKeybinding } from '../../../../keybindings/useKeybinding.js'; 6 import { isAutoMemoryEnabled } from '../../../../memdir/paths.js'; 7 import type { Tools } from '../../../../Tool.js'; 8 import { getMemoryScopeDisplay } from '../../../../tools/AgentTool/agentMemory.js'; 9 import type { AgentDefinition } from '../../../../tools/AgentTool/loadAgentsDir.js'; 10 import { truncateToWidth } from '../../../../utils/format.js'; 11 import { getAgentModelDisplay } from '../../../../utils/model/agent.js'; 12 import { ConfigurableShortcutHint } from '../../../ConfigurableShortcutHint.js'; 13 import { Byline } from '../../../design-system/Byline.js'; 14 import { KeyboardShortcutHint } from '../../../design-system/KeyboardShortcutHint.js'; 15 import { useWizard } from '../../../wizard/index.js'; 16 import { WizardDialogLayout } from '../../../wizard/WizardDialogLayout.js'; 17 import { getNewRelativeAgentFilePath } from '../../agentFileUtils.js'; 18 import { validateAgent } from '../../validateAgent.js'; 19 import type { AgentWizardData } from '../types.js'; 20 type Props = { 21 tools: Tools; 22 existingAgents: AgentDefinition[]; 23 onSave: () => void; 24 onSaveAndEdit: () => void; 25 error?: string | null; 26 }; 27 export function ConfirmStep(t0) { 28 const $ = _c(88); 29 const { 30 tools, 31 existingAgents, 32 onSave, 33 onSaveAndEdit, 34 error 35 } = t0; 36 const { 37 goBack, 38 wizardData 39 } = useWizard(); 40 let t1; 41 if ($[0] === Symbol.for("react.memo_cache_sentinel")) { 42 t1 = { 43 context: "Confirmation" 44 }; 45 $[0] = t1; 46 } else { 47 t1 = $[0]; 48 } 49 useKeybinding("confirm:no", goBack, t1); 50 let t2; 51 if ($[1] !== onSave || $[2] !== onSaveAndEdit) { 52 t2 = e => { 53 if (e.key === "s" || e.key === "return") { 54 e.preventDefault(); 55 onSave(); 56 } else { 57 if (e.key === "e") { 58 e.preventDefault(); 59 onSaveAndEdit(); 60 } 61 } 62 }; 63 $[1] = onSave; 64 $[2] = onSaveAndEdit; 65 $[3] = t2; 66 } else { 67 t2 = $[3]; 68 } 69 const handleKeyDown = t2; 70 const agent = wizardData.finalAgent; 71 let T0; 72 let T1; 73 let t10; 74 let t11; 75 let t12; 76 let t13; 77 let t14; 78 let t15; 79 let t16; 80 let t17; 81 let t18; 82 let t19; 83 let t3; 84 let t4; 85 let t5; 86 let t6; 87 let t7; 88 let t8; 89 let t9; 90 if ($[4] !== agent || $[5] !== existingAgents || $[6] !== handleKeyDown || $[7] !== tools || $[8] !== wizardData.location) { 91 const validation = validateAgent(agent, tools, existingAgents); 92 let t20; 93 if ($[28] !== agent) { 94 t20 = truncateToWidth(agent.getSystemPrompt(), 240); 95 $[28] = agent; 96 $[29] = t20; 97 } else { 98 t20 = $[29]; 99 } 100 const systemPromptPreview = t20; 101 let t21; 102 if ($[30] !== agent.whenToUse) { 103 t21 = truncateToWidth(agent.whenToUse, 240); 104 $[30] = agent.whenToUse; 105 $[31] = t21; 106 } else { 107 t21 = $[31]; 108 } 109 const whenToUsePreview = t21; 110 const getToolsDisplay = _temp; 111 let t22; 112 if ($[32] !== agent.memory) { 113 t22 = isAutoMemoryEnabled() ? <Text><Text bold={true}>Memory</Text>: {getMemoryScopeDisplay(agent.memory)}</Text> : null; 114 $[32] = agent.memory; 115 $[33] = t22; 116 } else { 117 t22 = $[33]; 118 } 119 const memoryDisplayElement = t22; 120 T1 = WizardDialogLayout; 121 t18 = "Confirm and save"; 122 if ($[34] === Symbol.for("react.memo_cache_sentinel")) { 123 t19 = <Byline><KeyboardShortcutHint shortcut="s/Enter" action="save" /><KeyboardShortcutHint shortcut="e" action="edit in your editor" /><ConfigurableShortcutHint action="confirm:no" context="Confirmation" fallback="Esc" description="cancel" /></Byline>; 124 $[34] = t19; 125 } else { 126 t19 = $[34]; 127 } 128 T0 = Box; 129 t3 = "column"; 130 t4 = 0; 131 t5 = true; 132 t6 = handleKeyDown; 133 let t23; 134 if ($[35] === Symbol.for("react.memo_cache_sentinel")) { 135 t23 = <Text bold={true}>Name</Text>; 136 $[35] = t23; 137 } else { 138 t23 = $[35]; 139 } 140 if ($[36] !== agent.agentType) { 141 t7 = <Text>{t23}: {agent.agentType}</Text>; 142 $[36] = agent.agentType; 143 $[37] = t7; 144 } else { 145 t7 = $[37]; 146 } 147 let t24; 148 if ($[38] === Symbol.for("react.memo_cache_sentinel")) { 149 t24 = <Text bold={true}>Location</Text>; 150 $[38] = t24; 151 } else { 152 t24 = $[38]; 153 } 154 let t25; 155 if ($[39] !== agent.agentType || $[40] !== wizardData.location) { 156 t25 = getNewRelativeAgentFilePath({ 157 source: wizardData.location, 158 agentType: agent.agentType 159 }); 160 $[39] = agent.agentType; 161 $[40] = wizardData.location; 162 $[41] = t25; 163 } else { 164 t25 = $[41]; 165 } 166 if ($[42] !== t25) { 167 t8 = <Text>{t24}:{" "}{t25}</Text>; 168 $[42] = t25; 169 $[43] = t8; 170 } else { 171 t8 = $[43]; 172 } 173 let t26; 174 if ($[44] === Symbol.for("react.memo_cache_sentinel")) { 175 t26 = <Text bold={true}>Tools</Text>; 176 $[44] = t26; 177 } else { 178 t26 = $[44]; 179 } 180 let t27; 181 if ($[45] !== agent.tools) { 182 t27 = getToolsDisplay(agent.tools); 183 $[45] = agent.tools; 184 $[46] = t27; 185 } else { 186 t27 = $[46]; 187 } 188 if ($[47] !== t27) { 189 t9 = <Text>{t26}: {t27}</Text>; 190 $[47] = t27; 191 $[48] = t9; 192 } else { 193 t9 = $[48]; 194 } 195 let t28; 196 if ($[49] === Symbol.for("react.memo_cache_sentinel")) { 197 t28 = <Text bold={true}>Model</Text>; 198 $[49] = t28; 199 } else { 200 t28 = $[49]; 201 } 202 let t29; 203 if ($[50] !== agent.model) { 204 t29 = getAgentModelDisplay(agent.model); 205 $[50] = agent.model; 206 $[51] = t29; 207 } else { 208 t29 = $[51]; 209 } 210 if ($[52] !== t29) { 211 t10 = <Text>{t28}: {t29}</Text>; 212 $[52] = t29; 213 $[53] = t10; 214 } else { 215 t10 = $[53]; 216 } 217 t11 = memoryDisplayElement; 218 if ($[54] === Symbol.for("react.memo_cache_sentinel")) { 219 t12 = <Box marginTop={1}><Text><Text bold={true}>Description</Text> (tells Claude when to use this agent):</Text></Box>; 220 $[54] = t12; 221 } else { 222 t12 = $[54]; 223 } 224 if ($[55] !== whenToUsePreview) { 225 t13 = <Box marginLeft={2} marginTop={1}><Text>{whenToUsePreview}</Text></Box>; 226 $[55] = whenToUsePreview; 227 $[56] = t13; 228 } else { 229 t13 = $[56]; 230 } 231 if ($[57] === Symbol.for("react.memo_cache_sentinel")) { 232 t14 = <Box marginTop={1}><Text><Text bold={true}>System prompt</Text>:</Text></Box>; 233 $[57] = t14; 234 } else { 235 t14 = $[57]; 236 } 237 if ($[58] !== systemPromptPreview) { 238 t15 = <Box marginLeft={2} marginTop={1}><Text>{systemPromptPreview}</Text></Box>; 239 $[58] = systemPromptPreview; 240 $[59] = t15; 241 } else { 242 t15 = $[59]; 243 } 244 t16 = validation.warnings.length > 0 && <Box marginTop={1} flexDirection="column"><Text color="warning">Warnings:</Text>{validation.warnings.map(_temp2)}</Box>; 245 t17 = validation.errors.length > 0 && <Box marginTop={1} flexDirection="column"><Text color="error">Errors:</Text>{validation.errors.map(_temp3)}</Box>; 246 $[4] = agent; 247 $[5] = existingAgents; 248 $[6] = handleKeyDown; 249 $[7] = tools; 250 $[8] = wizardData.location; 251 $[9] = T0; 252 $[10] = T1; 253 $[11] = t10; 254 $[12] = t11; 255 $[13] = t12; 256 $[14] = t13; 257 $[15] = t14; 258 $[16] = t15; 259 $[17] = t16; 260 $[18] = t17; 261 $[19] = t18; 262 $[20] = t19; 263 $[21] = t3; 264 $[22] = t4; 265 $[23] = t5; 266 $[24] = t6; 267 $[25] = t7; 268 $[26] = t8; 269 $[27] = t9; 270 } else { 271 T0 = $[9]; 272 T1 = $[10]; 273 t10 = $[11]; 274 t11 = $[12]; 275 t12 = $[13]; 276 t13 = $[14]; 277 t14 = $[15]; 278 t15 = $[16]; 279 t16 = $[17]; 280 t17 = $[18]; 281 t18 = $[19]; 282 t19 = $[20]; 283 t3 = $[21]; 284 t4 = $[22]; 285 t5 = $[23]; 286 t6 = $[24]; 287 t7 = $[25]; 288 t8 = $[26]; 289 t9 = $[27]; 290 } 291 let t20; 292 if ($[60] !== error) { 293 t20 = error && <Box marginTop={1}><Text color="error">{error}</Text></Box>; 294 $[60] = error; 295 $[61] = t20; 296 } else { 297 t20 = $[61]; 298 } 299 let t21; 300 if ($[62] === Symbol.for("react.memo_cache_sentinel")) { 301 t21 = <Text bold={true}>s</Text>; 302 $[62] = t21; 303 } else { 304 t21 = $[62]; 305 } 306 let t22; 307 if ($[63] === Symbol.for("react.memo_cache_sentinel")) { 308 t22 = <Text bold={true}>Enter</Text>; 309 $[63] = t22; 310 } else { 311 t22 = $[63]; 312 } 313 let t23; 314 if ($[64] === Symbol.for("react.memo_cache_sentinel")) { 315 t23 = <Box marginTop={2}><Text color="success">Press {t21} or {t22} to save,{" "}<Text bold={true}>e</Text> to save and edit</Text></Box>; 316 $[64] = t23; 317 } else { 318 t23 = $[64]; 319 } 320 let t24; 321 if ($[65] !== T0 || $[66] !== t10 || $[67] !== t11 || $[68] !== t12 || $[69] !== t13 || $[70] !== t14 || $[71] !== t15 || $[72] !== t16 || $[73] !== t17 || $[74] !== t20 || $[75] !== t3 || $[76] !== t4 || $[77] !== t5 || $[78] !== t6 || $[79] !== t7 || $[80] !== t8 || $[81] !== t9) { 322 t24 = <T0 flexDirection={t3} tabIndex={t4} autoFocus={t5} onKeyDown={t6}>{t7}{t8}{t9}{t10}{t11}{t12}{t13}{t14}{t15}{t16}{t17}{t20}{t23}</T0>; 323 $[65] = T0; 324 $[66] = t10; 325 $[67] = t11; 326 $[68] = t12; 327 $[69] = t13; 328 $[70] = t14; 329 $[71] = t15; 330 $[72] = t16; 331 $[73] = t17; 332 $[74] = t20; 333 $[75] = t3; 334 $[76] = t4; 335 $[77] = t5; 336 $[78] = t6; 337 $[79] = t7; 338 $[80] = t8; 339 $[81] = t9; 340 $[82] = t24; 341 } else { 342 t24 = $[82]; 343 } 344 let t25; 345 if ($[83] !== T1 || $[84] !== t18 || $[85] !== t19 || $[86] !== t24) { 346 t25 = <T1 subtitle={t18} footerText={t19}>{t24}</T1>; 347 $[83] = T1; 348 $[84] = t18; 349 $[85] = t19; 350 $[86] = t24; 351 $[87] = t25; 352 } else { 353 t25 = $[87]; 354 } 355 return t25; 356 } 357 function _temp3(err, i_0) { 358 return <Text key={i_0} color="error">{" "}• {err}</Text>; 359 } 360 function _temp2(warning, i) { 361 return <Text key={i} dimColor={true}>{" "}• {warning}</Text>; 362 } 363 function _temp(toolNames) { 364 if (toolNames === undefined) { 365 return "All tools"; 366 } 367 if (toolNames.length === 0) { 368 return "None"; 369 } 370 if (toolNames.length === 1) { 371 return toolNames[0] || "None"; 372 } 373 if (toolNames.length === 2) { 374 return toolNames.join(" and "); 375 } 376 return `${toolNames.slice(0, -1).join(", ")}, and ${toolNames[toolNames.length - 1]}`; 377 } 378 //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsIlJlYWN0Tm9kZSIsIktleWJvYXJkRXZlbnQiLCJCb3giLCJUZXh0IiwidXNlS2V5YmluZGluZyIsImlzQXV0b01lbW9yeUVuYWJsZWQiLCJUb29scyIsImdldE1lbW9yeVNjb3BlRGlzcGxheSIsIkFnZW50RGVmaW5pdGlvbiIsInRydW5jYXRlVG9XaWR0aCIsImdldEFnZW50TW9kZWxEaXNwbGF5IiwiQ29uZmlndXJhYmxlU2hvcnRjdXRIaW50IiwiQnlsaW5lIiwiS2V5Ym9hcmRTaG9ydGN1dEhpbnQiLCJ1c2VXaXphcmQiLCJXaXphcmREaWFsb2dMYXlvdXQiLCJnZXROZXdSZWxhdGl2ZUFnZW50RmlsZVBhdGgiLCJ2YWxpZGF0ZUFnZW50IiwiQWdlbnRXaXphcmREYXRhIiwiUHJvcHMiLCJ0b29scyIsImV4aXN0aW5nQWdlbnRzIiwib25TYXZlIiwib25TYXZlQW5kRWRpdCIsImVycm9yIiwiQ29uZmlybVN0ZXAiLCJ0MCIsIiQiLCJfYyIsImdvQmFjayIsIndpemFyZERhdGEiLCJ0MSIsIlN5bWJvbCIsImZvciIsImNvbnRleHQiLCJ0MiIsImUiLCJrZXkiLCJwcmV2ZW50RGVmYXVsdCIsImhhbmRsZUtleURvd24iLCJhZ2VudCIsImZpbmFsQWdlbnQiLCJUMCIsIlQxIiwidDEwIiwidDExIiwidDEyIiwidDEzIiwidDE0IiwidDE1IiwidDE2IiwidDE3IiwidDE4IiwidDE5IiwidDMiLCJ0NCIsInQ1IiwidDYiLCJ0NyIsInQ4IiwidDkiLCJsb2NhdGlvbiIsInZhbGlkYXRpb24iLCJ0MjAiLCJnZXRTeXN0ZW1Qcm9tcHQiLCJzeXN0ZW1Qcm9tcHRQcmV2aWV3IiwidDIxIiwid2hlblRvVXNlIiwid2hlblRvVXNlUHJldmlldyIsImdldFRvb2xzRGlzcGxheSIsIl90ZW1wIiwidDIyIiwibWVtb3J5IiwibWVtb3J5RGlzcGxheUVsZW1lbnQiLCJ0MjMiLCJhZ2VudFR5cGUiLCJ0MjQiLCJ0MjUiLCJzb3VyY2UiLCJ0MjYiLCJ0MjciLCJ0MjgiLCJ0MjkiLCJtb2RlbCIsIndhcm5pbmdzIiwibGVuZ3RoIiwibWFwIiwiX3RlbXAyIiwiZXJyb3JzIiwiX3RlbXAzIiwiZXJyIiwiaV8wIiwiaSIsIndhcm5pbmciLCJ0b29sTmFtZXMiLCJ1bmRlZmluZWQiLCJqb2luIiwic2xpY2UiXSwic291cmNlcyI6WyJDb25maXJtU3RlcC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0LCB7IHR5cGUgUmVhY3ROb2RlIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgdHlwZSB7IEtleWJvYXJkRXZlbnQgfSBmcm9tICcuLi8uLi8uLi8uLi9pbmsvZXZlbnRzL2tleWJvYXJkLWV2ZW50LmpzJ1xuaW1wb3J0IHsgQm94LCBUZXh0IH0gZnJvbSAnLi4vLi4vLi4vLi4vaW5rLmpzJ1xuaW1wb3J0IHsgdXNlS2V5YmluZGluZyB9IGZyb20gJy4uLy4uLy4uLy4uL2tleWJpbmRpbmdzL3VzZUtleWJpbmRpbmcuanMnXG5pbXBvcnQgeyBpc0F1dG9NZW1vcnlFbmFibGVkIH0gZnJvbSAnLi4vLi4vLi4vLi4vbWVtZGlyL3BhdGhzLmpzJ1xuaW1wb3J0IHR5cGUgeyBUb29scyB9IGZyb20gJy4uLy4uLy4uLy4uL1Rvb2wuanMnXG5pbXBvcnQgeyBnZXRNZW1vcnlTY29wZURpc3BsYXkgfSBmcm9tICcuLi8uLi8uLi8uLi90b29scy9BZ2VudFRvb2wvYWdlbnRNZW1vcnkuanMnXG5pbXBvcnQgdHlwZSB7IEFnZW50RGVmaW5pdGlvbiB9IGZyb20gJy4uLy4uLy4uLy4uL3Rvb2xzL0FnZW50VG9vbC9sb2FkQWdlbnRzRGlyLmpzJ1xuaW1wb3J0IHsgdHJ1bmNhdGVUb1dpZHRoIH0gZnJvbSAnLi4vLi4vLi4vLi4vdXRpbHMvZm9ybWF0LmpzJ1xuaW1wb3J0IHsgZ2V0QWdlbnRNb2RlbERpc3BsYXkgfSBmcm9tICcuLi8uLi8uLi8uLi91dGlscy9tb2RlbC9hZ2VudC5qcydcbmltcG9ydCB7IENvbmZpZ3VyYWJsZVNob3J0Y3V0SGludCB9IGZyb20gJy4uLy4uLy4uL0NvbmZpZ3VyYWJsZVNob3J0Y3V0SGludC5qcydcbmltcG9ydCB7IEJ5bGluZSB9IGZyb20gJy4uLy4uLy4uL2Rlc2lnbi1zeXN0ZW0vQnlsaW5lLmpzJ1xuaW1wb3J0IHsgS2V5Ym9hcmRTaG9ydGN1dEhpbnQgfSBmcm9tICcuLi8uLi8uLi9kZXNpZ24tc3lzdGVtL0tleWJvYXJkU2hvcnRjdXRIaW50LmpzJ1xuaW1wb3J0IHsgdXNlV2l6YXJkIH0gZnJvbSAnLi4vLi4vLi4vd2l6YXJkL2luZGV4LmpzJ1xuaW1wb3J0IHsgV2l6YXJkRGlhbG9nTGF5b3V0IH0gZnJvbSAnLi4vLi4vLi4vd2l6YXJkL1dpemFyZERpYWxvZ0xheW91dC5qcydcbmltcG9ydCB7IGdldE5ld1JlbGF0aXZlQWdlbnRGaWxlUGF0aCB9IGZyb20gJy4uLy4uL2FnZW50RmlsZVV0aWxzLmpzJ1xuaW1wb3J0IHsgdmFsaWRhdGVBZ2VudCB9IGZyb20gJy4uLy4uL3ZhbGlkYXRlQWdlbnQuanMnXG5pbXBvcnQgdHlwZSB7IEFnZW50V2l6YXJkRGF0YSB9IGZyb20gJy4uL3R5cGVzLmpzJ1xuXG50eXBlIFByb3BzID0ge1xuICB0b29sczogVG9vbHNcbiAgZXhpc3RpbmdBZ2VudHM6IEFnZW50RGVmaW5pdGlvbltdXG4gIG9uU2F2ZTogKCkgPT4gdm9pZFxuICBvblNhdmVBbmRFZGl0OiAoKSA9PiB2b2lkXG4gIGVycm9yPzogc3RyaW5nIHwgbnVsbFxufVxuXG5leHBvcnQgZnVuY3Rpb24gQ29uZmlybVN0ZXAoe1xuICB0b29scyxcbiAgZXhpc3RpbmdBZ2VudHMsXG4gIG9uU2F2ZSxcbiAgb25TYXZlQW5kRWRpdCxcbiAgZXJyb3IsXG59OiBQcm9wcyk6IFJlYWN0Tm9kZSB7XG4gIGNvbnN0IHsgZ29CYWNrLCB3aXphcmREYXRhIH0gPSB1c2VXaXphcmQ8QWdlbnRXaXphcmREYXRhPigpXG5cbiAgdXNlS2V5YmluZGluZygnY29uZmlybTpubycsIGdvQmFjaywgeyBjb250ZXh0OiAnQ29uZmlybWF0aW9uJyB9KVxuXG4gIGNvbnN0IGhhbmRsZUtleURvd24gPSAoZTogS2V5Ym9hcmRFdmVudCkgPT4ge1xuICAgIGlmIChlLmtleSA9PT0gJ3MnIHx8IGUua2V5ID09PSAncmV0dXJuJykge1xuICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICBvblNhdmUoKVxuICAgIH0gZWxzZSBpZiAoZS5rZXkgPT09ICdlJykge1xuICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICBvblNhdmVBbmRFZGl0KClcbiAgICB9XG4gIH1cblxuICBjb25zdCBhZ2VudCA9IHdpemFyZERhdGEuZmluYWxBZ2VudCFcbiAgY29uc3QgdmFsaWRhdGlvbiA9IHZhbGlkYXRlQWdlbnQoYWdlbnQsIHRvb2xzLCBleGlzdGluZ0FnZW50cylcblxuICBjb25zdCBzeXN0ZW1Qcm9tcHRQcmV2aWV3ID0gdHJ1bmNhdGVUb1dpZHRoKGFnZW50LmdldFN5c3RlbVByb21wdCgpLCAyNDApXG4gIGNvbnN0IHdoZW5Ub1VzZVByZXZpZXcgPSB0cnVuY2F0ZVRvV2lkdGgoYWdlbnQud2hlblRvVXNlLCAyNDApXG5cbiAgY29uc3QgZ2V0VG9vbHNEaXNwbGF5ID0gKHRvb2xOYW1lczogc3RyaW5nW10gfCB1bmRlZmluZWQpOiBzdHJpbmcgPT4ge1xuICAgIC8vIHVuZGVmaW5lZCBtZWFucyBcImFsbCB0b29sc1wiIHBlciBQUiBzZW1hbnRpY1xuICAgIGlmICh0b29sTmFtZXMgPT09IHVuZGVmaW5lZCkgcmV0dXJuICdBbGwgdG9vbHMnXG4gICAgaWYgKHRvb2xOYW1lcy5sZW5ndGggPT09IDApIHJldHVybiAnTm9uZSdcbiAgICBpZiAodG9vbE5hbWVzLmxlbmd0aCA9PT0gMSkgcmV0dXJuIHRvb2xOYW1lc1swXSB8fCAnTm9uZSdcbiAgICBpZiAodG9vbE5hbWVzLmxlbmd0aCA9PT0gMikgcmV0dXJuIHRvb2xOYW1lcy5qb2luKCcgYW5kICcpXG4gICAgcmV0dXJuIGAke3Rvb2xOYW1lcy5zbGljZSgwLCAtMSkuam9pbignLCAnKX0sIGFuZCAke3Rvb2xOYW1lc1t0b29sTmFtZXMubGVuZ3RoIC0gMV19YFxuICB9XG5cbiAgLy8gQ29tcHV0ZSBtZW1vcnkgZGlzcGxheSBvdXRzaWRlIEpTWFxuICBjb25zdCBtZW1vcnlEaXNwbGF5RWxlbWVudCA9IGlzQXV0b01lbW9yeUVuYWJsZWQoKSA/IChcbiAgICA8VGV4dD5cbiAgICAgIDxUZXh0IGJvbGQ+TWVtb3J5PC9UZXh0Pjoge2dldE1lbW9yeVNjb3BlRGlzcGxheShhZ2VudC5tZW1vcnkpfVxuICAgIDwvVGV4dD5cbiAgKSA6IG51bGxcblxuICByZXR1cm4gKFxuICAgIDxXaXphcmREaWFsb2dMYXlvdXRcbiAgICAgIHN1YnRpdGxlPVwiQ29uZmlybSBhbmQgc2F2ZVwiXG4gICAgICBmb290ZXJUZXh0PXtcbiAgICAgICAgPEJ5bGluZT5cbiAgICAgICAgICA8S2V5Ym9hcmRTaG9ydGN1dEhpbnQgc2hvcnRjdXQ9XCJzL0VudGVyXCIgYWN0aW9uPVwic2F2ZVwiIC8+XG4gICAgICAgICAgPEtleWJvYXJkU2hvcnRjdXRIaW50IHNob3J0Y3V0PVwiZVwiIGFjdGlvbj1cImVkaXQgaW4geW91ciBlZGl0b3JcIiAvPlxuICAgICAgICAgIDxDb25maWd1cmFibGVTaG9ydGN1dEhpbnRcbiAgICAgICAgICAgIGFjdGlvbj1cImNvbmZpcm06bm9cIlxuICAgICAgICAgICAgY29udGV4dD1cIkNvbmZpcm1hdGlvblwiXG4gICAgICAgICAgICBmYWxsYmFjaz1cIkVzY1wiXG4gICAgICAgICAgICBkZXNjcmlwdGlvbj1cImNhbmNlbFwiXG4gICAgICAgICAgLz5cbiAgICAgICAgPC9CeWxpbmU+XG4gICAgICB9XG4gICAgPlxuICAgICAgPEJveFxuICAgICAgICBmbGV4RGlyZWN0aW9uPVwiY29sdW1uXCJcbiAgICAgICAgdGFiSW5kZXg9ezB9XG4gICAgICAgIGF1dG9Gb2N1c1xuICAgICAgICBvbktleURvd249e2hhbmRsZUtleURvd259XG4gICAgICA+XG4gICAgICAgIDxUZXh0PlxuICAgICAgICAgIDxUZXh0IGJvbGQ+TmFtZTwvVGV4dD46IHthZ2VudC5hZ2VudFR5cGV9XG4gICAgICAgIDwvVGV4dD5cbiAgICAgICAgPFRleHQ+XG4gICAgICAgICAgPFRleHQgYm9sZD5Mb2NhdGlvbjwvVGV4dD46eycgJ31cbiAgICAgICAgICB7Z2V0TmV3UmVsYXRpdmVBZ2VudEZpbGVQYXRoKHtcbiAgICAgICAgICAgIHNvdXJjZTogd2l6YXJkRGF0YS5sb2NhdGlvbiEsXG4gICAgICAgICAgICBhZ2VudFR5cGU6IGFnZW50LmFnZW50VHlwZSxcbiAgICAgICAgICB9KX1cbiAgICAgICAgPC9UZXh0PlxuICAgICAgICA8VGV4dD5cbiAgICAgICAgICA8VGV4dCBib2xkPlRvb2xzPC9UZXh0Pjoge2dldFRvb2xzRGlzcGxheShhZ2VudC50b29scyl9XG4gICAgICAgIDwvVGV4dD5cbiAgICAgICAgPFRleHQ+XG4gICAgICAgICAgPFRleHQgYm9sZD5Nb2RlbDwvVGV4dD46IHtnZXRBZ2VudE1vZGVsRGlzcGxheShhZ2VudC5tb2RlbCl9XG4gICAgICAgIDwvVGV4dD5cbiAgICAgICAge21lbW9yeURpc3BsYXlFbGVtZW50fVxuXG4gICAgICAgIDxCb3ggbWFyZ2luVG9wPXsxfT5cbiAgICAgICAgICA8VGV4dD5cbiAgICAgICAgICAgIDxUZXh0IGJvbGQ+RGVzY3JpcHRpb248L1RleHQ+ICh0ZWxscyBDbGF1ZGUgd2hlbiB0byB1c2UgdGhpcyBhZ2VudCk6XG4gICAgICAgICAgPC9UZXh0PlxuICAgICAgICA8L0JveD5cbiAgICAgICAgPEJveCBtYXJnaW5MZWZ0PXsyfSBtYXJnaW5Ub3A9ezF9PlxuICAgICAgICAgIDxUZXh0Pnt3aGVuVG9Vc2VQcmV2aWV3fTwvVGV4dD5cbiAgICAgICAgPC9Cb3g+XG5cbiAgICAgICAgPEJveCBtYXJnaW5Ub3A9ezF9PlxuICAgICAgICAgIDxUZXh0PlxuICAgICAgICAgICAgPFRleHQgYm9sZD5TeXN0ZW0gcHJvbXB0PC9UZXh0PjpcbiAgICAgICAgICA8L1RleHQ+XG4gICAgICAgIDwvQm94PlxuICAgICAgICA8Qm94IG1hcmdpbkxlZnQ9ezJ9IG1hcmdpblRvcD17MX0+XG4gICAgICAgICAgPFRleHQ+e3N5c3RlbVByb21wdFByZXZpZXd9PC9UZXh0PlxuICAgICAgICA8L0JveD5cblxuICAgICAgICB7dmFsaWRhdGlvbi53YXJuaW5ncy5sZW5ndGggPiAwICYmIChcbiAgICAgICAgICA8Qm94IG1hcmdpblRvcD17MX0gZmxleERpcmVjdGlvbj1cImNvbHVtblwiPlxuICAgICAgICAgICAgPFRleHQgY29sb3I9XCJ3YXJuaW5nXCI+V2FybmluZ3M6PC9UZXh0PlxuICAgICAgICAgICAge3ZhbGlkYXRpb24ud2FybmluZ3MubWFwKCh3YXJuaW5nLCBpKSA9PiAoXG4gICAgICAgICAgICAgIDxUZXh0IGtleT17aX0gZGltQ29sb3I+XG4gICAgICAgICAgICAgICAgeycgJ31cbiAgICAgICAgICAgICAgICDigKIge3dhcm5pbmd9XG4gICAgICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgICAgICkpfVxuICAgICAgICAgIDwvQm94PlxuICAgICAgICApfVxuXG4gICAgICAgIHt2YWxpZGF0aW9uLmVycm9ycy5sZW5ndGggPiAwICYmIChcbiAgICAgICAgICA8Qm94IG1hcmdpblRvcD17MX0gZmxleERpcmVjdGlvbj1cImNvbHVtblwiPlxuICAgICAgICAgICAgPFRleHQgY29sb3I9XCJlcnJvclwiPkVycm9yczo8L1RleHQ+XG4gICAgICAgICAgICB7dmFsaWRhdGlvbi5lcnJvcnMubWFwKChlcnIsIGkpID0+IChcbiAgICAgICAgICAgICAgPFRleHQga2V5PXtpfSBjb2xvcj1cImVycm9yXCI+XG4gICAgICAgICAgICAgICAgeycgJ31cbiAgICAgICAgICAgICAgICDigKIge2Vycn1cbiAgICAgICAgICAgICAgPC9UZXh0PlxuICAgICAgICAgICAgKSl9XG4gICAgICAgICAgPC9Cb3g+XG4gICAgICAgICl9XG5cbiAgICAgICAge2Vycm9yICYmIChcbiAgICAgICAgICA8Qm94IG1hcmdpblRvcD17MX0+XG4gICAgICAgICAgICA8VGV4dCBjb2xvcj1cImVycm9yXCI+e2Vycm9yfTwvVGV4dD5cbiAgICAgICAgICA8L0JveD5cbiAgICAgICAgKX1cblxuICAgICAgICA8Qm94IG1hcmdpblRvcD17Mn0+XG4gICAgICAgICAgPFRleHQgY29sb3I9XCJzdWNjZXNzXCI+XG4gICAgICAgICAgICBQcmVzcyA8VGV4dCBib2xkPnM8L1RleHQ+IG9yIDxUZXh0IGJvbGQ+RW50ZXI8L1RleHQ+IHRvIHNhdmUseycgJ31cbiAgICAgICAgICAgIDxUZXh0IGJvbGQ+ZTwvVGV4dD4gdG8gc2F2ZSBhbmQgZWRpdFxuICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgPC9Cb3g+XG4gICAgICA8L0JveD5cbiAgICA8L1dpemFyZERpYWxvZ0xheW91dD5cbiAgKVxufVxuIl0sIm1hcHBpbmdzIjoiO0FBQUEsT0FBT0EsS0FBSyxJQUFJLEtBQUtDLFNBQVMsUUFBUSxPQUFPO0FBQzdDLGNBQWNDLGFBQWEsUUFBUSwwQ0FBMEM7QUFDN0UsU0FBU0MsR0FBRyxFQUFFQyxJQUFJLFFBQVEsb0JBQW9CO0FBQzlDLFNBQVNDLGFBQWEsUUFBUSwwQ0FBMEM7QUFDeEUsU0FBU0MsbUJBQW1CLFFBQVEsNkJBQTZCO0FBQ2pFLGNBQWNDLEtBQUssUUFBUSxxQkFBcUI7QUFDaEQsU0FBU0MscUJBQXFCLFFBQVEsNENBQTRDO0FBQ2xGLGNBQWNDLGVBQWUsUUFBUSw4Q0FBOEM7QUFDbkYsU0FBU0MsZUFBZSxRQUFRLDZCQUE2QjtBQUM3RCxTQUFTQyxvQkFBb0IsUUFBUSxrQ0FBa0M7QUFDdkUsU0FBU0Msd0JBQXdCLFFBQVEsc0NBQXNDO0FBQy9FLFNBQVNDLE1BQU0sUUFBUSxrQ0FBa0M7QUFDekQsU0FBU0Msb0JBQW9CLFFBQVEsZ0RBQWdEO0FBQ3JGLFNBQVNDLFNBQVMsUUFBUSwwQkFBMEI7QUFDcEQsU0FBU0Msa0JBQWtCLFFBQVEsdUNBQXVDO0FBQzFFLFNBQVNDLDJCQUEyQixRQUFRLHlCQUF5QjtB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