footprintjs 10.0.1 → 10.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (368) hide show
  1. package/AGENTS.md +2 -1
  2. package/CLAUDE.md +61 -7
  3. package/README.md +136 -312
  4. package/dist/esm/index.d.ts +62 -2
  5. package/dist/esm/index.js +13 -6
  6. package/dist/esm/lib/attempt/anySignal.d.ts +19 -0
  7. package/dist/esm/lib/attempt/anySignal.js +39 -0
  8. package/dist/esm/lib/attempt/call.d.ts +88 -0
  9. package/dist/esm/lib/attempt/call.js +129 -0
  10. package/dist/esm/lib/attempt/category.d.ts +37 -0
  11. package/dist/esm/lib/attempt/category.js +131 -0
  12. package/dist/esm/lib/attempt/correlation.d.ts +95 -0
  13. package/dist/esm/lib/attempt/correlation.js +178 -0
  14. package/dist/esm/lib/attempt/deadline.d.ts +44 -0
  15. package/dist/esm/lib/attempt/deadline.js +101 -0
  16. package/dist/esm/lib/attempt/decision.d.ts +52 -0
  17. package/dist/esm/lib/attempt/decision.js +134 -0
  18. package/dist/esm/lib/attempt/effect.d.ts +76 -0
  19. package/dist/esm/lib/attempt/effect.js +160 -0
  20. package/dist/esm/lib/attempt/errors.d.ts +41 -0
  21. package/dist/esm/lib/attempt/errors.js +44 -0
  22. package/dist/esm/lib/attempt/index.d.ts +18 -0
  23. package/dist/esm/lib/attempt/index.js +15 -0
  24. package/dist/esm/lib/attempt/name.d.ts +21 -0
  25. package/dist/esm/lib/attempt/name.js +43 -0
  26. package/dist/esm/lib/attempt/observed.d.ts +66 -0
  27. package/dist/esm/lib/attempt/observed.js +171 -0
  28. package/dist/esm/lib/attempt/policy.d.ts +45 -0
  29. package/dist/esm/lib/attempt/policy.js +83 -0
  30. package/dist/esm/lib/attempt/record.d.ts +11 -0
  31. package/dist/esm/lib/attempt/record.js +24 -0
  32. package/dist/esm/lib/attempt/retryLoopContext.d.ts +18 -0
  33. package/dist/esm/lib/attempt/retryLoopContext.js +24 -0
  34. package/dist/esm/lib/attempt/retryLoopTypes.d.ts +18 -0
  35. package/dist/esm/lib/attempt/retryLoopTypes.js +2 -0
  36. package/dist/esm/lib/attempt/runner.d.ts +157 -0
  37. package/dist/esm/lib/attempt/runner.js +523 -0
  38. package/dist/esm/lib/attempt/standalone.d.ts +47 -0
  39. package/dist/esm/lib/attempt/standalone.js +126 -0
  40. package/dist/esm/lib/attempt/types.d.ts +453 -0
  41. package/dist/esm/lib/attempt/types.js +16 -0
  42. package/dist/esm/lib/budget/index.d.ts +9 -0
  43. package/dist/esm/lib/budget/index.js +9 -0
  44. package/dist/esm/lib/budget/timeBudget.d.ts +136 -0
  45. package/dist/esm/lib/budget/timeBudget.js +666 -0
  46. package/dist/esm/lib/builder/FlowChartBuilder.d.ts +88 -3
  47. package/dist/esm/lib/builder/FlowChartBuilder.js +199 -9
  48. package/dist/esm/lib/builder/retryLoop.d.ts +56 -0
  49. package/dist/esm/lib/builder/retryLoop.js +283 -0
  50. package/dist/esm/lib/builder/types.d.ts +35 -1
  51. package/dist/esm/lib/builder/types.js +1 -1
  52. package/dist/esm/lib/decide/decide.js +2 -2
  53. package/dist/esm/lib/decide/index.d.ts +1 -1
  54. package/dist/esm/lib/decide/index.js +2 -2
  55. package/dist/esm/lib/decide/types.d.ts +3 -0
  56. package/dist/esm/lib/decide/types.js +1 -8
  57. package/dist/esm/lib/engine/graph/StageNode.d.ts +11 -1
  58. package/dist/esm/lib/engine/graph/StageNode.js +1 -1
  59. package/dist/esm/lib/engine/graph/prefixNodeTree.js +5 -1
  60. package/dist/esm/lib/engine/handlers/ChildrenExecutor.js +36 -6
  61. package/dist/esm/lib/engine/handlers/DeciderHandler.js +9 -5
  62. package/dist/esm/lib/engine/handlers/ResumeEntry.js +3 -1
  63. package/dist/esm/lib/engine/handlers/SelectorHandler.js +6 -5
  64. package/dist/esm/lib/engine/handlers/StageRunner.d.ts +8 -1
  65. package/dist/esm/lib/engine/handlers/StageRunner.js +36 -9
  66. package/dist/esm/lib/engine/handlers/SubflowExecutor.js +24 -5
  67. package/dist/esm/lib/engine/handlers/commitStage.d.ts +7 -0
  68. package/dist/esm/lib/engine/handlers/commitStage.js +22 -4
  69. package/dist/esm/lib/engine/handlers/stageError.d.ts +9 -0
  70. package/dist/esm/lib/engine/handlers/stageError.js +23 -1
  71. package/dist/esm/lib/engine/index.d.ts +2 -2
  72. package/dist/esm/lib/engine/index.js +1 -1
  73. package/dist/esm/lib/engine/narrative/CombinedNarrativeRecorder.d.ts +27 -13
  74. package/dist/esm/lib/engine/narrative/CombinedNarrativeRecorder.js +68 -40
  75. package/dist/esm/lib/engine/narrative/FlowRecorderDispatcher.d.ts +4 -1
  76. package/dist/esm/lib/engine/narrative/FlowRecorderDispatcher.js +19 -2
  77. package/dist/esm/lib/engine/narrative/NarrativeFlowRecorder.d.ts +22 -3
  78. package/dist/esm/lib/engine/narrative/NarrativeFlowRecorder.js +61 -9
  79. package/dist/esm/lib/engine/narrative/NullControlFlowNarrativeGenerator.d.ts +1 -0
  80. package/dist/esm/lib/engine/narrative/NullControlFlowNarrativeGenerator.js +2 -1
  81. package/dist/esm/lib/engine/narrative/formatting/sentences.d.ts +23 -0
  82. package/dist/esm/lib/engine/narrative/formatting/sentences.js +127 -1
  83. package/dist/esm/lib/engine/narrative/index.d.ts +2 -2
  84. package/dist/esm/lib/engine/narrative/index.js +1 -1
  85. package/dist/esm/lib/engine/narrative/narrativeTypes.d.ts +27 -21
  86. package/dist/esm/lib/engine/narrative/narrativeTypes.js +1 -1
  87. package/dist/esm/lib/engine/narrative/recorders/ManifestFlowRecorder.d.ts +45 -2
  88. package/dist/esm/lib/engine/narrative/recorders/ManifestFlowRecorder.js +55 -2
  89. package/dist/esm/lib/engine/narrative/recorders/index.d.ts +1 -1
  90. package/dist/esm/lib/engine/narrative/recorders/index.js +1 -1
  91. package/dist/esm/lib/engine/narrative/types.d.ts +74 -5
  92. package/dist/esm/lib/engine/narrative/types.js +1 -1
  93. package/dist/esm/lib/engine/traversal/FlowchartTraverser.d.ts +59 -19
  94. package/dist/esm/lib/engine/traversal/FlowchartTraverser.js +194 -118
  95. package/dist/esm/lib/engine/traversalContext.d.ts +7 -2
  96. package/dist/esm/lib/engine/traversalContext.js +6 -3
  97. package/dist/esm/lib/engine/types.d.ts +52 -57
  98. package/dist/esm/lib/engine/types.js +1 -1
  99. package/dist/esm/lib/errors/terminalFailure.d.ts +29 -0
  100. package/dist/esm/lib/errors/terminalFailure.js +60 -0
  101. package/dist/esm/lib/{decide → filter}/evaluator.d.ts +7 -2
  102. package/dist/esm/lib/filter/evaluator.js +135 -0
  103. package/dist/esm/lib/ids/idempotencyKey.d.ts +14 -0
  104. package/dist/esm/lib/ids/idempotencyKey.js +24 -0
  105. package/dist/esm/lib/memory/StageContext.d.ts +123 -3
  106. package/dist/esm/lib/memory/StageContext.js +245 -4
  107. package/dist/esm/lib/memory/attention.d.ts +26 -0
  108. package/dist/esm/lib/memory/attention.js +171 -0
  109. package/dist/esm/lib/memory/borrowedMutation.d.ts +8 -0
  110. package/dist/esm/lib/memory/borrowedMutation.js +14 -1
  111. package/dist/esm/lib/memory/frameTypes.d.ts +38 -0
  112. package/dist/esm/lib/memory/frameTypes.js +3 -1
  113. package/dist/esm/lib/memory/redaction.d.ts +12 -0
  114. package/dist/esm/lib/memory/redaction.js +54 -5
  115. package/dist/esm/lib/pause/record.js +10 -1
  116. package/dist/esm/lib/pause/types.d.ts +19 -0
  117. package/dist/esm/lib/pause/types.js +17 -1
  118. package/dist/esm/lib/reactive/createTypedScope.js +3 -1
  119. package/dist/esm/lib/reactive/types.d.ts +36 -4
  120. package/dist/esm/lib/reactive/types.js +3 -1
  121. package/dist/esm/lib/recorder/AttemptRecorder.d.ts +141 -0
  122. package/dist/esm/lib/recorder/AttemptRecorder.js +412 -0
  123. package/dist/esm/lib/recorder/ControlDepRecorder.d.ts +36 -2
  124. package/dist/esm/lib/recorder/ControlDepRecorder.js +50 -2
  125. package/dist/esm/lib/recorder/EmitRecorder.d.ts +3 -0
  126. package/dist/esm/lib/recorder/EmitRecorder.js +1 -1
  127. package/dist/esm/lib/recorder/InOutRecorder.d.ts +37 -1
  128. package/dist/esm/lib/recorder/InOutRecorder.js +75 -6
  129. package/dist/esm/lib/recorder/QualityRecorder.d.ts +32 -5
  130. package/dist/esm/lib/recorder/QualityRecorder.js +87 -29
  131. package/dist/esm/lib/recorder/TopologyRecorder.d.ts +35 -5
  132. package/dist/esm/lib/recorder/TopologyRecorder.js +76 -2
  133. package/dist/esm/lib/recorder/attemptMetricRows.d.ts +11 -0
  134. package/dist/esm/lib/recorder/attemptMetricRows.js +202 -0
  135. package/dist/esm/lib/recorder/attemptMetrics.d.ts +7 -0
  136. package/dist/esm/lib/recorder/attemptMetrics.js +165 -0
  137. package/dist/esm/lib/recorder/attemptMetricsTypes.d.ts +114 -0
  138. package/dist/esm/lib/recorder/attemptMetricsTypes.js +2 -0
  139. package/dist/esm/lib/recorder/attemptOTel.d.ts +78 -0
  140. package/dist/esm/lib/recorder/attemptOTel.js +107 -0
  141. package/dist/esm/lib/recorder/attemptSeries.d.ts +81 -0
  142. package/dist/esm/lib/recorder/attemptSeries.js +103 -0
  143. package/dist/esm/lib/recorder/hooks.d.ts +9 -0
  144. package/dist/esm/lib/recorder/hooks.js +4 -1
  145. package/dist/esm/lib/runner/DeferredObserverTier.js +13 -1
  146. package/dist/esm/lib/runner/ExecutionRuntime.d.ts +54 -6
  147. package/dist/esm/lib/runner/ExecutionRuntime.js +57 -5
  148. package/dist/esm/lib/runner/FlowChartExecutor.d.ts +46 -2
  149. package/dist/esm/lib/runner/FlowChartExecutor.js +330 -101
  150. package/dist/esm/lib/runner/RunnableChart.d.ts +6 -0
  151. package/dist/esm/lib/runner/RunnableChart.js +5 -1
  152. package/dist/esm/lib/runner/attach.d.ts +2 -1
  153. package/dist/esm/lib/runner/attach.js +8 -2
  154. package/dist/esm/lib/runner/checkpoint.js +3 -1
  155. package/dist/esm/lib/runner/deadline.d.ts +42 -0
  156. package/dist/esm/lib/runner/deadline.js +90 -0
  157. package/dist/esm/lib/runner/index.d.ts +3 -1
  158. package/dist/esm/lib/runner/index.js +2 -1
  159. package/dist/esm/lib/runner/options.d.ts +17 -0
  160. package/dist/esm/lib/runner/options.js +3 -1
  161. package/dist/esm/lib/runner/recordSink.d.ts +128 -0
  162. package/dist/esm/lib/runner/recordSink.js +296 -0
  163. package/dist/esm/lib/runner/resume.d.ts +3 -0
  164. package/dist/esm/lib/runner/resume.js +22 -2
  165. package/dist/esm/lib/runner/snapshot.d.ts +2 -2
  166. package/dist/esm/lib/runner/snapshot.js +6 -2
  167. package/dist/esm/lib/scope/ScopeFacade.d.ts +118 -4
  168. package/dist/esm/lib/scope/ScopeFacade.js +304 -7
  169. package/dist/esm/lib/scope/recorders/DebugRecorder.d.ts +17 -3
  170. package/dist/esm/lib/scope/recorders/DebugRecorder.js +79 -13
  171. package/dist/esm/lib/scope/recorders/MetricRecorder.d.ts +10 -0
  172. package/dist/esm/lib/scope/recorders/MetricRecorder.js +15 -2
  173. package/dist/esm/lib/scope/runtime.d.ts +3 -0
  174. package/dist/esm/lib/scope/runtime.js +1 -1
  175. package/dist/esm/lib/scope/types.d.ts +6 -0
  176. package/dist/esm/lib/scope/types.js +1 -1
  177. package/dist/esm/lib/sinks/fileSink.d.ts +135 -0
  178. package/dist/esm/lib/sinks/fileSink.js +387 -0
  179. package/dist/esm/recorders.d.ts +8 -2
  180. package/dist/esm/recorders.js +7 -1
  181. package/dist/esm/sinks.d.ts +23 -0
  182. package/dist/esm/sinks.js +23 -0
  183. package/dist/esm/trace.d.ts +2 -2
  184. package/dist/esm/trace.js +1 -1
  185. package/dist/index.js +77 -60
  186. package/dist/lib/attempt/anySignal.js +43 -0
  187. package/dist/lib/attempt/call.js +134 -0
  188. package/dist/lib/attempt/category.js +136 -0
  189. package/dist/lib/attempt/correlation.js +186 -0
  190. package/dist/lib/attempt/deadline.js +112 -0
  191. package/dist/lib/attempt/decision.js +139 -0
  192. package/dist/lib/attempt/effect.js +174 -0
  193. package/dist/lib/attempt/errors.js +49 -0
  194. package/dist/lib/attempt/index.js +26 -0
  195. package/dist/lib/attempt/name.js +48 -0
  196. package/dist/lib/attempt/observed.js +177 -0
  197. package/dist/lib/attempt/policy.js +92 -0
  198. package/dist/lib/attempt/record.js +29 -0
  199. package/dist/lib/attempt/retryLoopContext.js +31 -0
  200. package/dist/lib/attempt/retryLoopTypes.js +3 -0
  201. package/dist/lib/attempt/runner.js +530 -0
  202. package/dist/lib/attempt/standalone.js +130 -0
  203. package/dist/lib/attempt/types.js +17 -0
  204. package/dist/lib/budget/index.js +17 -0
  205. package/dist/lib/budget/timeBudget.js +674 -0
  206. package/dist/lib/builder/FlowChartBuilder.js +199 -9
  207. package/dist/lib/builder/retryLoop.js +287 -0
  208. package/dist/lib/builder/types.js +1 -1
  209. package/dist/lib/decide/decide.js +2 -2
  210. package/dist/lib/decide/index.js +2 -2
  211. package/dist/lib/decide/types.js +1 -8
  212. package/dist/lib/engine/graph/StageNode.js +1 -1
  213. package/dist/lib/engine/graph/prefixNodeTree.js +5 -1
  214. package/dist/lib/engine/handlers/ChildrenExecutor.js +36 -6
  215. package/dist/lib/engine/handlers/DeciderHandler.js +7 -3
  216. package/dist/lib/engine/handlers/ResumeEntry.js +3 -1
  217. package/dist/lib/engine/handlers/SelectorHandler.js +4 -3
  218. package/dist/lib/engine/handlers/StageRunner.js +36 -9
  219. package/dist/lib/engine/handlers/SubflowExecutor.js +24 -5
  220. package/dist/lib/engine/handlers/commitStage.js +24 -5
  221. package/dist/lib/engine/handlers/stageError.js +26 -2
  222. package/dist/lib/engine/index.js +1 -1
  223. package/dist/lib/engine/narrative/CombinedNarrativeRecorder.js +67 -39
  224. package/dist/lib/engine/narrative/FlowRecorderDispatcher.js +19 -2
  225. package/dist/lib/engine/narrative/NarrativeFlowRecorder.js +60 -8
  226. package/dist/lib/engine/narrative/NullControlFlowNarrativeGenerator.js +2 -1
  227. package/dist/lib/engine/narrative/formatting/sentences.js +131 -2
  228. package/dist/lib/engine/narrative/index.js +1 -1
  229. package/dist/lib/engine/narrative/narrativeTypes.js +1 -1
  230. package/dist/lib/engine/narrative/recorders/ManifestFlowRecorder.js +55 -2
  231. package/dist/lib/engine/narrative/recorders/index.js +1 -1
  232. package/dist/lib/engine/narrative/types.js +1 -1
  233. package/dist/lib/engine/traversal/FlowchartTraverser.js +192 -116
  234. package/dist/lib/engine/traversalContext.js +6 -3
  235. package/dist/lib/engine/types.js +1 -1
  236. package/dist/lib/errors/terminalFailure.js +64 -0
  237. package/dist/lib/filter/evaluator.js +139 -0
  238. package/dist/lib/ids/idempotencyKey.js +28 -0
  239. package/dist/lib/memory/StageContext.js +246 -5
  240. package/dist/lib/memory/attention.js +175 -0
  241. package/dist/lib/memory/borrowedMutation.js +16 -2
  242. package/dist/lib/memory/frameTypes.js +3 -1
  243. package/dist/lib/memory/redaction.js +54 -5
  244. package/dist/lib/pause/record.js +10 -1
  245. package/dist/lib/pause/types.js +17 -1
  246. package/dist/lib/reactive/createTypedScope.js +3 -1
  247. package/dist/lib/reactive/types.js +3 -1
  248. package/dist/lib/recorder/AttemptRecorder.js +417 -0
  249. package/dist/lib/recorder/ControlDepRecorder.js +50 -2
  250. package/dist/lib/recorder/EmitRecorder.js +1 -1
  251. package/dist/lib/recorder/InOutRecorder.js +75 -6
  252. package/dist/lib/recorder/QualityRecorder.js +87 -29
  253. package/dist/lib/recorder/TopologyRecorder.js +76 -2
  254. package/dist/lib/recorder/attemptMetricRows.js +209 -0
  255. package/dist/lib/recorder/attemptMetrics.js +174 -0
  256. package/dist/lib/recorder/attemptMetricsTypes.js +3 -0
  257. package/dist/lib/recorder/attemptOTel.js +111 -0
  258. package/dist/lib/recorder/attemptSeries.js +113 -0
  259. package/dist/lib/recorder/hooks.js +4 -1
  260. package/dist/lib/runner/DeferredObserverTier.js +13 -1
  261. package/dist/lib/runner/ExecutionRuntime.js +57 -5
  262. package/dist/lib/runner/FlowChartExecutor.js +330 -101
  263. package/dist/lib/runner/RunnableChart.js +5 -1
  264. package/dist/lib/runner/attach.js +8 -2
  265. package/dist/lib/runner/checkpoint.js +3 -1
  266. package/dist/lib/runner/deadline.js +94 -0
  267. package/dist/lib/runner/index.js +4 -2
  268. package/dist/lib/runner/options.js +3 -1
  269. package/dist/lib/runner/recordSink.js +302 -0
  270. package/dist/lib/runner/resume.js +22 -2
  271. package/dist/lib/runner/snapshot.js +6 -2
  272. package/dist/lib/scope/ScopeFacade.js +303 -6
  273. package/dist/lib/scope/recorders/DebugRecorder.js +79 -13
  274. package/dist/lib/scope/recorders/MetricRecorder.js +15 -2
  275. package/dist/lib/scope/runtime.js +1 -1
  276. package/dist/lib/scope/types.js +1 -1
  277. package/dist/lib/sinks/fileSink.js +392 -0
  278. package/dist/recorders.js +10 -2
  279. package/dist/sinks.js +32 -0
  280. package/dist/trace.js +1 -1
  281. package/dist/types/index.d.ts +62 -2
  282. package/dist/types/lib/attempt/anySignal.d.ts +19 -0
  283. package/dist/types/lib/attempt/call.d.ts +88 -0
  284. package/dist/types/lib/attempt/category.d.ts +37 -0
  285. package/dist/types/lib/attempt/correlation.d.ts +95 -0
  286. package/dist/types/lib/attempt/deadline.d.ts +44 -0
  287. package/dist/types/lib/attempt/decision.d.ts +52 -0
  288. package/dist/types/lib/attempt/effect.d.ts +76 -0
  289. package/dist/types/lib/attempt/errors.d.ts +41 -0
  290. package/dist/types/lib/attempt/index.d.ts +18 -0
  291. package/dist/types/lib/attempt/name.d.ts +21 -0
  292. package/dist/types/lib/attempt/observed.d.ts +66 -0
  293. package/dist/types/lib/attempt/policy.d.ts +45 -0
  294. package/dist/types/lib/attempt/record.d.ts +11 -0
  295. package/dist/types/lib/attempt/retryLoopContext.d.ts +18 -0
  296. package/dist/types/lib/attempt/retryLoopTypes.d.ts +18 -0
  297. package/dist/types/lib/attempt/runner.d.ts +157 -0
  298. package/dist/types/lib/attempt/standalone.d.ts +47 -0
  299. package/dist/types/lib/attempt/types.d.ts +453 -0
  300. package/dist/types/lib/budget/index.d.ts +9 -0
  301. package/dist/types/lib/budget/timeBudget.d.ts +136 -0
  302. package/dist/types/lib/builder/FlowChartBuilder.d.ts +88 -3
  303. package/dist/types/lib/builder/retryLoop.d.ts +56 -0
  304. package/dist/types/lib/builder/types.d.ts +35 -1
  305. package/dist/types/lib/decide/index.d.ts +1 -1
  306. package/dist/types/lib/decide/types.d.ts +3 -0
  307. package/dist/types/lib/engine/graph/StageNode.d.ts +11 -1
  308. package/dist/types/lib/engine/handlers/StageRunner.d.ts +8 -1
  309. package/dist/types/lib/engine/handlers/commitStage.d.ts +7 -0
  310. package/dist/types/lib/engine/handlers/stageError.d.ts +9 -0
  311. package/dist/types/lib/engine/index.d.ts +2 -2
  312. package/dist/types/lib/engine/narrative/CombinedNarrativeRecorder.d.ts +27 -13
  313. package/dist/types/lib/engine/narrative/FlowRecorderDispatcher.d.ts +4 -1
  314. package/dist/types/lib/engine/narrative/NarrativeFlowRecorder.d.ts +22 -3
  315. package/dist/types/lib/engine/narrative/NullControlFlowNarrativeGenerator.d.ts +1 -0
  316. package/dist/types/lib/engine/narrative/formatting/sentences.d.ts +23 -0
  317. package/dist/types/lib/engine/narrative/index.d.ts +2 -2
  318. package/dist/types/lib/engine/narrative/narrativeTypes.d.ts +27 -21
  319. package/dist/types/lib/engine/narrative/recorders/ManifestFlowRecorder.d.ts +45 -2
  320. package/dist/types/lib/engine/narrative/recorders/index.d.ts +1 -1
  321. package/dist/types/lib/engine/narrative/types.d.ts +74 -5
  322. package/dist/types/lib/engine/traversal/FlowchartTraverser.d.ts +59 -19
  323. package/dist/types/lib/engine/traversalContext.d.ts +7 -2
  324. package/dist/types/lib/engine/types.d.ts +52 -57
  325. package/dist/types/lib/errors/terminalFailure.d.ts +29 -0
  326. package/dist/types/lib/{decide → filter}/evaluator.d.ts +7 -2
  327. package/dist/types/lib/ids/idempotencyKey.d.ts +14 -0
  328. package/dist/types/lib/memory/StageContext.d.ts +123 -3
  329. package/dist/types/lib/memory/attention.d.ts +26 -0
  330. package/dist/types/lib/memory/borrowedMutation.d.ts +8 -0
  331. package/dist/types/lib/memory/frameTypes.d.ts +38 -0
  332. package/dist/types/lib/memory/redaction.d.ts +12 -0
  333. package/dist/types/lib/pause/types.d.ts +19 -0
  334. package/dist/types/lib/reactive/types.d.ts +36 -4
  335. package/dist/types/lib/recorder/AttemptRecorder.d.ts +141 -0
  336. package/dist/types/lib/recorder/ControlDepRecorder.d.ts +36 -2
  337. package/dist/types/lib/recorder/EmitRecorder.d.ts +3 -0
  338. package/dist/types/lib/recorder/InOutRecorder.d.ts +37 -1
  339. package/dist/types/lib/recorder/QualityRecorder.d.ts +32 -5
  340. package/dist/types/lib/recorder/TopologyRecorder.d.ts +35 -5
  341. package/dist/types/lib/recorder/attemptMetricRows.d.ts +11 -0
  342. package/dist/types/lib/recorder/attemptMetrics.d.ts +7 -0
  343. package/dist/types/lib/recorder/attemptMetricsTypes.d.ts +114 -0
  344. package/dist/types/lib/recorder/attemptOTel.d.ts +78 -0
  345. package/dist/types/lib/recorder/attemptSeries.d.ts +81 -0
  346. package/dist/types/lib/recorder/hooks.d.ts +9 -0
  347. package/dist/types/lib/runner/ExecutionRuntime.d.ts +54 -6
  348. package/dist/types/lib/runner/FlowChartExecutor.d.ts +46 -2
  349. package/dist/types/lib/runner/RunnableChart.d.ts +6 -0
  350. package/dist/types/lib/runner/attach.d.ts +2 -1
  351. package/dist/types/lib/runner/deadline.d.ts +42 -0
  352. package/dist/types/lib/runner/index.d.ts +3 -1
  353. package/dist/types/lib/runner/options.d.ts +17 -0
  354. package/dist/types/lib/runner/recordSink.d.ts +128 -0
  355. package/dist/types/lib/runner/resume.d.ts +3 -0
  356. package/dist/types/lib/runner/snapshot.d.ts +2 -2
  357. package/dist/types/lib/scope/ScopeFacade.d.ts +118 -4
  358. package/dist/types/lib/scope/recorders/DebugRecorder.d.ts +17 -3
  359. package/dist/types/lib/scope/recorders/MetricRecorder.d.ts +10 -0
  360. package/dist/types/lib/scope/runtime.d.ts +3 -0
  361. package/dist/types/lib/scope/types.d.ts +6 -0
  362. package/dist/types/lib/sinks/fileSink.d.ts +135 -0
  363. package/dist/types/recorders.d.ts +8 -2
  364. package/dist/types/sinks.d.ts +23 -0
  365. package/dist/types/trace.d.ts +2 -2
  366. package/package.json +20 -6
  367. package/dist/esm/lib/decide/evaluator.js +0 -130
  368. package/dist/lib/decide/evaluator.js +0 -134
@@ -1,13 +1,6 @@
1
1
  "use strict";
2
- /**
3
- * decide/types -- Type definitions for the decide()/select() decision reasoning system.
4
- *
5
- * Two `when` formats in one API:
6
- * - Function: (s) => s.creditScore > 700 (auto-captures reads via temp recorder)
7
- * - Filter: { creditScore: { gt: 700 } } (captures reads + operators + thresholds)
8
- */
9
2
  Object.defineProperty(exports, "__esModule", { value: true });
10
3
  exports.DECISION_RESULT = void 0;
11
4
  // -- Symbol Brand (duck-type safety) -----------------------------------------
12
5
  exports.DECISION_RESULT = Symbol('footprint:decide:result');
13
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL2RlY2lkZS90eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7OztHQU1HOzs7QUF5RUgsK0VBQStFO0FBRWxFLFFBQUEsZUFBZSxHQUFHLE1BQU0sQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBkZWNpZGUvdHlwZXMgLS0gVHlwZSBkZWZpbml0aW9ucyBmb3IgdGhlIGRlY2lkZSgpL3NlbGVjdCgpIGRlY2lzaW9uIHJlYXNvbmluZyBzeXN0ZW0uXG4gKlxuICogVHdvIGB3aGVuYCBmb3JtYXRzIGluIG9uZSBBUEk6XG4gKiAtIEZ1bmN0aW9uOiAocykgPT4gcy5jcmVkaXRTY29yZSA+IDcwMCAgIChhdXRvLWNhcHR1cmVzIHJlYWRzIHZpYSB0ZW1wIHJlY29yZGVyKVxuICogLSBGaWx0ZXI6ICAgeyBjcmVkaXRTY29yZTogeyBndDogNzAwIH0gfSAoY2FwdHVyZXMgcmVhZHMgKyBvcGVyYXRvcnMgKyB0aHJlc2hvbGRzKVxuICovXG5cbi8vIC0tIEZpbHRlciBPcGVyYXRvcnMgKFByaXNtYSBuYW1pbmcsIDggb3BlcmF0b3JzKSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuLyoqIE11bHRpcGxlIG9wZXJhdG9ycyBvbiB0aGUgc2FtZSBrZXkgYXJlIEFORGVkIChlLmcuLCB7IGd0OiA1LCBsdDogMTAgfSBtZWFucyA1IDwgdmFsdWUgPCAxMCkuICovXG5leHBvcnQgdHlwZSBGaWx0ZXJPcHM8Vj4gPSB7XG4gIC8qKiBFcXVhbDogdmFsdWUgPT09IHRocmVzaG9sZCAqL1xuICBlcT86IFY7XG4gIC8qKiBOb3QgZXF1YWw6IHZhbHVlICE9PSB0aHJlc2hvbGQgKi9cbiAgbmU/OiBWO1xuICAvKiogR3JlYXRlciB0aGFuOiB2YWx1ZSA+IHRocmVzaG9sZCAqL1xuICBndD86IFY7XG4gIC8qKiBHcmVhdGVyIHRoYW4gb3IgZXF1YWw6IHZhbHVlID49IHRocmVzaG9sZCAqL1xuICBndGU/OiBWO1xuICAvKiogTGVzcyB0aGFuOiB2YWx1ZSA8IHRocmVzaG9sZCAqL1xuICBsdD86IFY7XG4gIC8qKiBMZXNzIHRoYW4gb3IgZXF1YWw6IHZhbHVlIDw9IHRocmVzaG9sZCAqL1xuICBsdGU/OiBWO1xuICAvKiogVmFsdWUgaXMgaW4gYXJyYXkgKi9cbiAgaW4/OiBWW107XG4gIC8qKiBWYWx1ZSBpcyBOT1QgaW4gYXJyYXkgKi9cbiAgbm90SW4/OiBWW107XG59O1xuXG4vLyAtLSBXaGVyZUZpbHRlciAoZmxhdCBrZXlzIG9ubHksIG5vIG5lc3RlZCB2MSkgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbmV4cG9ydCB0eXBlIFdoZXJlRmlsdGVyPFQgZXh0ZW5kcyBvYmplY3QgPSBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4gPSB7XG4gIFtLIGluIGtleW9mIFRdPzogRmlsdGVyT3BzPFRbS10+O1xufTtcblxuLy8gLS0gUnVsZSBEZWZpbml0aW9uIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5leHBvcnQgdHlwZSBXaGVuQ2xhdXNlPFQgZXh0ZW5kcyBvYmplY3QgPSBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4gPSAoKHM6IFQpID0+IGJvb2xlYW4pIHwgV2hlcmVGaWx0ZXI8VD47XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGVjaWRlUnVsZTxUIGV4dGVuZHMgb2JqZWN0ID0gUmVjb3JkPHN0cmluZywgdW5rbm93bj4+IHtcbiAgd2hlbjogV2hlbkNsYXVzZTxUPjtcbiAgdGhlbjogc3RyaW5nO1xuICAvKiogSHVtYW4tcmVhZGFibGUgcnVsZSBuYW1lIGZvciBuYXJyYXRpdmU6IFwiR29vZCBjcmVkaXRcIiAqL1xuICBsYWJlbD86IHN0cmluZztcbn1cblxuLy8gLS0gRGVmYXVsdCBCcmFuY2ggLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4vKipcbiAqIFRoZSBmYWxsYmFjayBicmFuY2ggb2YgYSBgZGVjaWRlKClgIOKAlCB0YWtlbiB3aGVuIE5PIHJ1bGUgbWF0Y2hlZC5cbiAqXG4gKiBUd28gZm9ybXMsIGFuZCB0aGUgYmFyZSBzdHJpbmcgaXMgdGhlIG9yaWdpbmFsIG9uZTpcbiAqIC0gYCdwcm90ZWN0ZWQnYCDigJQganVzdCB0aGUgYnJhbmNoIGlkLiBCZWhhdmVzIGV4YWN0bHkgYXMgaXQgYWx3YXlzIGhhcy5cbiAqIC0gYHsgYnJhbmNoOiAncHJvdGVjdGVkJywgbGFiZWw6ICdObyBydWxlIGZpcmVkIOKAlCBhc3NldCBzdGF5cyBwcm90ZWN0ZWQnIH1gXG4gKiAgIOKAlCB0aGUgYnJhbmNoIGlkIFBMVVMgd2hhdCB0aGF0IGJyYW5jaCBtZWFucy5cbiAqXG4gKiAqKldoeSB0aGUgb2JqZWN0IGZvcm0gZXhpc3RzLioqIEV2ZXJ5IG90aGVyIGJyYW5jaCBvZiBhIGRlY2lkZXIgaXMgbmFtZWQgYnlcbiAqIHRoZSBydWxlIHRoYXQgY2hvc2UgaXQ6IHRoZSBydWxlIGNhcnJpZXMgYSBgbGFiZWxgLCBhbmQgdGhhdCBsYWJlbCB0cmF2ZWxzXG4gKiBvdXQgdGhyb3VnaCBgRGVjaXNpb25FdmlkZW5jZS5ydWxlc1tdLmxhYmVsYCBmb3IgbmFycmF0aXZlcywgYXVkaXRzIGFuZFxuICogZG93bnN0cmVhbSBoYXJ2ZXN0ZXJzLiBUaGUgZGVmYXVsdCBicmFuY2ggaXMgY2hvc2VuIGJ5IG5vIHJ1bGUsIHNvIHRoZXJlIGlzXG4gKiBubyBydWxlIHRvIGNhcnJ5IGl0cyBsYWJlbCDigJQgaXQgaXMgdGhlIG9uZSBicmFuY2ggZXZpZGVuY2UgY291bGQgbm90IG5hbWUuXG4gKiBEZWNsYXJpbmcgdGhlIGxhYmVsIGhlcmUgcHV0cyB0aGUgZGVmYXVsdCdzIG1lYW5pbmcgYmVzaWRlIHRoZSBydWxlcyB0aGF0IGl0XG4gKiBjb21wZXRlcyB3aXRoLCBhbmQgc2VuZHMgaXQgb3V0IHRocm91Z2ggdGhlIHNhbWUgZXZpZGVuY2UgY2hhbm5lbC5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHNcbiAqIGRlY2lkZShzY29wZSwgcnVsZXMsIHsgYnJhbmNoOiAncHJvdGVjdGVkJywgbGFiZWw6ICdOb3RoaW5nIG1hdGNoZWQg4oCUIGxlYXZlIGl0IHByb3RlY3RlZCcgfSk7XG4gKiBgYGBcbiAqL1xuZXhwb3J0IHR5cGUgRGVmYXVsdEJyYW5jaCA9XG4gIHwgc3RyaW5nXG4gIHwge1xuICAgICAgLyoqIFRoZSBicmFuY2ggaWQgdG8gZmFsbCBiYWNrIHRvLiAqL1xuICAgICAgcmVhZG9ubHkgYnJhbmNoOiBzdHJpbmc7XG4gICAgICAvKiogV2hhdCBmYWxsaW5nIGJhY2sgdG8gdGhpcyBicmFuY2ggTUVBTlMuIExhbmRzIG9uIGBEZWNpc2lvbkV2aWRlbmNlLmRlZmF1bHRMYWJlbGAuICovXG4gICAgICByZWFkb25seSBsYWJlbD86IHN0cmluZztcbiAgICB9O1xuXG4vLyAtLSBTeW1ib2wgQnJhbmQgKGR1Y2stdHlwZSBzYWZldHkpIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbmV4cG9ydCBjb25zdCBERUNJU0lPTl9SRVNVTFQgPSBTeW1ib2woJ2Zvb3RwcmludDpkZWNpZGU6cmVzdWx0Jyk7XG5cbi8vIC0tIERlY2lzaW9uIFJlc3VsdCAoZnJvbSBkZWNpZGUoKSkgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5leHBvcnQgaW50ZXJmYWNlIERlY2lzaW9uUmVzdWx0IHtcbiAgYnJhbmNoOiBzdHJpbmc7XG4gIFtERUNJU0lPTl9SRVNVTFRdOiB0cnVlO1xuICBldmlkZW5jZTogRGVjaXNpb25FdmlkZW5jZTtcbn1cblxuLy8gLS0gU2VsZWN0aW9uIFJlc3VsdCAoZnJvbSBzZWxlY3QoKSkgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5leHBvcnQgaW50ZXJmYWNlIFNlbGVjdGlvblJlc3VsdCB7XG4gIGJyYW5jaGVzOiBzdHJpbmdbXTtcbiAgW0RFQ0lTSU9OX1JFU1VMVF06IHRydWU7XG4gIGV2aWRlbmNlOiBTZWxlY3Rpb25FdmlkZW5jZTtcbn1cblxuLy8gLS0gRXZpZGVuY2UgVHlwZXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5leHBvcnQgaW50ZXJmYWNlIEZ1bmN0aW9uUnVsZUV2aWRlbmNlIHtcbiAgdHlwZTogJ2Z1bmN0aW9uJztcbiAgcnVsZUluZGV4OiBudW1iZXI7XG4gIC8qKiBUaGUgYnJhbmNoIElEIHRoaXMgcnVsZSBtYXBzIHRvLiBTZWxmLWRlc2NyaWJpbmcg4oCUIG5vIGluZGV4IGNvcnJlbGF0aW9uIG5lZWRlZC4gKi9cbiAgYnJhbmNoOiBzdHJpbmc7XG4gIG1hdGNoZWQ6IGJvb2xlYW47XG4gIGxhYmVsPzogc3RyaW5nO1xuICBpbnB1dHM6IFJlYWRJbnB1dFtdO1xuICAvKipcbiAgICogRXJyb3IgbWVzc2FnZSBpZiB0aGUgYHdoZW5gIGZ1bmN0aW9uIHRocmV3IGR1cmluZyBldmFsdWF0aW9uLlxuICAgKiBQcmVzZW50IG9ubHkgd2hlbiBhbiBleGNlcHRpb24gb2NjdXJyZWQ7IGBtYXRjaGVkYCBpcyBgZmFsc2VgIGluIHRoYXQgY2FzZS5cbiAgICogU3VyZmFjZXMgdGhlIGVycm9yIGZvciBkZWJ1Z2dpbmcgcmF0aGVyIHRoYW4gc3dhbGxvd2luZyBpdCBzaWxlbnRseS5cbiAgICpcbiAgICogKipTZWN1cml0eSBub3RlOioqIEVycm9yIG1lc3NhZ2VzIGZyb20gdXNlci1wcm92aWRlZCBgd2hlbmAgZnVuY3Rpb25zIGFyZSBjYXB0dXJlZFxuICAgKiBhcy1pcyBhbmQgYXJlIE5PVCBmaWx0ZXJlZCB0aHJvdWdoIHRoZSByZWRhY3Rpb24gcG9saWN5LiBBdm9pZCBpbmNsdWRpbmcgc2Vuc2l0aXZlXG4gICAqIHNjb3BlIHZhbHVlcyBpbiB0aHJvd24gZXJyb3IgbWVzc2FnZXMuXG4gICAqL1xuICBtYXRjaEVycm9yPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEZpbHRlclJ1bGVFdmlkZW5jZSB7XG4gIHR5cGU6ICdmaWx0ZXInO1xuICBydWxlSW5kZXg6IG51bWJlcjtcbiAgLyoqIFRoZSBicmFuY2ggSUQgdGhpcyBydWxlIG1hcHMgdG8uIFNlbGYtZGVzY3JpYmluZyDigJQgbm8gaW5kZXggY29ycmVsYXRpb24gbmVlZGVkLiAqL1xuICBicmFuY2g6IHN0cmluZztcbiAgbWF0Y2hlZDogYm9vbGVhbjtcbiAgbGFiZWw/OiBzdHJpbmc7XG4gIGNvbmRpdGlvbnM6IEZpbHRlckNvbmRpdGlvbltdO1xuICAvKipcbiAgICogRXJyb3IgbWVzc2FnZSBpZiB0aGUgZmlsdGVyIGV2YWx1YXRvciB0aHJldyBkdXJpbmcgZXZhbHVhdGlvbi5cbiAgICogUHJlc2VudCBvbmx5IHdoZW4gYW4gZXhjZXB0aW9uIG9jY3VycmVkOyBgbWF0Y2hlZGAgaXMgYGZhbHNlYCBpbiB0aGF0IGNhc2UuXG4gICAqIFN1cmZhY2VzIHRoZSBlcnJvciBmb3IgZGVidWdnaW5nIHJhdGhlciB0aGFuIHN3YWxsb3dpbmcgaXQgc2lsZW50bHkuXG4gICAqXG4gICAqICoqU2VjdXJpdHkgbm90ZToqKiBFcnJvciBtZXNzYWdlcyBmcm9tIHVzZXItcHJvdmlkZWQgYHdoZW5gIGZ1bmN0aW9ucyBhcmUgY2FwdHVyZWRcbiAgICogYXMtaXMgYW5kIGFyZSBOT1QgZmlsdGVyZWQgdGhyb3VnaCB0aGUgcmVkYWN0aW9uIHBvbGljeS4gQXZvaWQgaW5jbHVkaW5nIHNlbnNpdGl2ZVxuICAgKiBzY29wZSB2YWx1ZXMgaW4gdGhyb3duIGVycm9yIG1lc3NhZ2VzLlxuICAgKi9cbiAgbWF0Y2hFcnJvcj86IHN0cmluZztcbn1cblxuZXhwb3J0IHR5cGUgUnVsZUV2aWRlbmNlID0gRnVuY3Rpb25SdWxlRXZpZGVuY2UgfCBGaWx0ZXJSdWxlRXZpZGVuY2U7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVhZElucHV0IHtcbiAga2V5OiBzdHJpbmc7XG4gIHZhbHVlU3VtbWFyeTogc3RyaW5nO1xuICByZWRhY3RlZDogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGaWx0ZXJDb25kaXRpb24ge1xuICBrZXk6IHN0cmluZztcbiAgb3A6IHN0cmluZztcbiAgLyoqIEtlcHQgcmF3IGZvciBhdWRpdCBhY2N1cmFjeTsgZW5naW5lL3NlcmlhbGl6ZXIgbXVzdCBoYW5kbGUgc2FmZWx5LiAqL1xuICB0aHJlc2hvbGQ6IHVua25vd247XG4gIGFjdHVhbFN1bW1hcnk6IHN0cmluZztcbiAgcmVzdWx0OiBib29sZWFuO1xuICByZWRhY3RlZDogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEZWNpc2lvbkV2aWRlbmNlIHtcbiAgcnVsZXM6IFJ1bGVFdmlkZW5jZVtdO1xuICAvKiogVGhlIGJyYW5jaCBzZWxlY3RlZC4gRXF1YWxzIGBkZWZhdWx0YCB3aGVuIG5vIHJ1bGUgbWF0Y2hlZC4gKi9cbiAgY2hvc2VuOiBzdHJpbmc7XG4gIC8qKiBUaGUgZmFsbGJhY2sgYnJhbmNoIHBhc3NlZCBhcyBkZWZhdWx0QnJhbmNoLiBBbHdheXMgc2V0LiAqL1xuICBkZWZhdWx0OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBXaGF0IHRoZSBERUZBVUxUIGJyYW5jaCBtZWFucyDigJQgcHJlc2VudCBvbmx5IHdoZW4gdGhlIGNhbGxlciBkZWNsYXJlZCBpdFxuICAgKiB2aWEgdGhlIG9iamVjdCBmb3JtIG9mIHtAbGluayBEZWZhdWx0QnJhbmNofS5cbiAgICpcbiAgICogVGhlIGRlZmF1bHQgYnJhbmNoIGlzIGNob3NlbiBieSBubyBydWxlLCBzbyBubyBgcnVsZXNbXS5sYWJlbGAgZGVzY3JpYmVzXG4gICAqIGl0OiBpdCBpcyB0aGUgb25lIGJyYW5jaCBldmlkZW5jZSBjYW5ub3Qgb3RoZXJ3aXNlIG5hbWUuIFRoaXMgZmllbGQgaXMgdGhhdFxuICAgKiBuYW1lLCBhbmQgaXQgaXMgcmVjb3JkZWQgb24gRVZFUlkgZGVjaXNpb24g4oCUIHRoZSBydW4gd2hlcmUgYSBydWxlIHdvbiBhc1xuICAgKiB3ZWxsIGFzIHRoZSBydW4gdGhhdCBmZWxsIHRocm91Z2gg4oCUIHNvIGEgY29uc3VtZXIgaGFydmVzdGluZyBtZWFuaW5ncyBzZWVzXG4gICAqIHRoZSBzYW1lIHNldCBvZiBicmFuY2ggbWVhbmluZ3MgcmVnYXJkbGVzcyBvZiB3aGljaCB3YXkgdGhlIGRhdGEgd2VudC5cbiAgICovXG4gIGRlZmF1bHRMYWJlbD86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTZWxlY3Rpb25FdmlkZW5jZSB7XG4gIHJ1bGVzOiBSdWxlRXZpZGVuY2VbXTtcbiAgc2VsZWN0ZWQ6IHN0cmluZ1tdO1xufVxuIl19
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL2RlY2lkZS90eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFpRkEsK0VBQStFO0FBRWxFLFFBQUEsZUFBZSxHQUFHLE1BQU0sQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBSZXRyeUxvb3BEZWNpc2lvbiB9IGZyb20gJy4uL2F0dGVtcHQvcmV0cnlMb29wVHlwZXMuanMnO1xuXG4vKipcbiAqIGRlY2lkZS90eXBlcyAtLSBUeXBlIGRlZmluaXRpb25zIGZvciB0aGUgZGVjaWRlKCkvc2VsZWN0KCkgZGVjaXNpb24gcmVhc29uaW5nIHN5c3RlbS5cbiAqXG4gKiBUd28gYHdoZW5gIGZvcm1hdHMgaW4gb25lIEFQSTpcbiAqIC0gRnVuY3Rpb246IChzKSA9PiBzLmNyZWRpdFNjb3JlID4gNzAwICAgKGF1dG8tY2FwdHVyZXMgcmVhZHMgdmlhIHRlbXAgcmVjb3JkZXIpXG4gKiAtIEZpbHRlcjogICB7IGNyZWRpdFNjb3JlOiB7IGd0OiA3MDAgfSB9IChjYXB0dXJlcyByZWFkcyArIG9wZXJhdG9ycyArIHRocmVzaG9sZHMpXG4gKi9cblxuLy8gLS0gRmlsdGVyIE9wZXJhdG9ycyAoUHJpc21hIG5hbWluZywgOCBvcGVyYXRvcnMpIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4vKiogTXVsdGlwbGUgb3BlcmF0b3JzIG9uIHRoZSBzYW1lIGtleSBhcmUgQU5EZWQgKGUuZy4sIHsgZ3Q6IDUsIGx0OiAxMCB9IG1lYW5zIDUgPCB2YWx1ZSA8IDEwKS4gKi9cbmV4cG9ydCB0eXBlIEZpbHRlck9wczxWPiA9IHtcbiAgLyoqIEVxdWFsOiB2YWx1ZSA9PT0gdGhyZXNob2xkICovXG4gIGVxPzogVjtcbiAgLyoqIE5vdCBlcXVhbDogdmFsdWUgIT09IHRocmVzaG9sZCAqL1xuICBuZT86IFY7XG4gIC8qKiBHcmVhdGVyIHRoYW46IHZhbHVlID4gdGhyZXNob2xkICovXG4gIGd0PzogVjtcbiAgLyoqIEdyZWF0ZXIgdGhhbiBvciBlcXVhbDogdmFsdWUgPj0gdGhyZXNob2xkICovXG4gIGd0ZT86IFY7XG4gIC8qKiBMZXNzIHRoYW46IHZhbHVlIDwgdGhyZXNob2xkICovXG4gIGx0PzogVjtcbiAgLyoqIExlc3MgdGhhbiBvciBlcXVhbDogdmFsdWUgPD0gdGhyZXNob2xkICovXG4gIGx0ZT86IFY7XG4gIC8qKiBWYWx1ZSBpcyBpbiBhcnJheSAqL1xuICBpbj86IFZbXTtcbiAgLyoqIFZhbHVlIGlzIE5PVCBpbiBhcnJheSAqL1xuICBub3RJbj86IFZbXTtcbn07XG5cbi8vIC0tIFdoZXJlRmlsdGVyIChmbGF0IGtleXMgb25seSwgbm8gbmVzdGVkIHYxKSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuZXhwb3J0IHR5cGUgV2hlcmVGaWx0ZXI8VCBleHRlbmRzIG9iamVjdCA9IFJlY29yZDxzdHJpbmcsIHVua25vd24+PiA9IHtcbiAgW0sgaW4ga2V5b2YgVF0/OiBGaWx0ZXJPcHM8VFtLXT47XG59O1xuXG4vLyAtLSBSdWxlIERlZmluaXRpb24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbmV4cG9ydCB0eXBlIFdoZW5DbGF1c2U8VCBleHRlbmRzIG9iamVjdCA9IFJlY29yZDxzdHJpbmcsIHVua25vd24+PiA9ICgoczogVCkgPT4gYm9vbGVhbikgfCBXaGVyZUZpbHRlcjxUPjtcblxuZXhwb3J0IGludGVyZmFjZSBEZWNpZGVSdWxlPFQgZXh0ZW5kcyBvYmplY3QgPSBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4ge1xuICB3aGVuOiBXaGVuQ2xhdXNlPFQ+O1xuICB0aGVuOiBzdHJpbmc7XG4gIC8qKiBIdW1hbi1yZWFkYWJsZSBydWxlIG5hbWUgZm9yIG5hcnJhdGl2ZTogXCJHb29kIGNyZWRpdFwiICovXG4gIGxhYmVsPzogc3RyaW5nO1xufVxuXG4vLyAtLSBEZWZhdWx0IEJyYW5jaCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbi8qKlxuICogVGhlIGZhbGxiYWNrIGJyYW5jaCBvZiBhIGBkZWNpZGUoKWAg4oCUIHRha2VuIHdoZW4gTk8gcnVsZSBtYXRjaGVkLlxuICpcbiAqIFR3byBmb3JtcywgYW5kIHRoZSBiYXJlIHN0cmluZyBpcyB0aGUgb3JpZ2luYWwgb25lOlxuICogLSBgJ3Byb3RlY3RlZCdgIOKAlCBqdXN0IHRoZSBicmFuY2ggaWQuIEJlaGF2ZXMgZXhhY3RseSBhcyBpdCBhbHdheXMgaGFzLlxuICogLSBgeyBicmFuY2g6ICdwcm90ZWN0ZWQnLCBsYWJlbDogJ05vIHJ1bGUgZmlyZWQg4oCUIGFzc2V0IHN0YXlzIHByb3RlY3RlZCcgfWBcbiAqICAg4oCUIHRoZSBicmFuY2ggaWQgUExVUyB3aGF0IHRoYXQgYnJhbmNoIG1lYW5zLlxuICpcbiAqICoqV2h5IHRoZSBvYmplY3QgZm9ybSBleGlzdHMuKiogRXZlcnkgb3RoZXIgYnJhbmNoIG9mIGEgZGVjaWRlciBpcyBuYW1lZCBieVxuICogdGhlIHJ1bGUgdGhhdCBjaG9zZSBpdDogdGhlIHJ1bGUgY2FycmllcyBhIGBsYWJlbGAsIGFuZCB0aGF0IGxhYmVsIHRyYXZlbHNcbiAqIG91dCB0aHJvdWdoIGBEZWNpc2lvbkV2aWRlbmNlLnJ1bGVzW10ubGFiZWxgIGZvciBuYXJyYXRpdmVzLCBhdWRpdHMgYW5kXG4gKiBkb3duc3RyZWFtIGhhcnZlc3RlcnMuIFRoZSBkZWZhdWx0IGJyYW5jaCBpcyBjaG9zZW4gYnkgbm8gcnVsZSwgc28gdGhlcmUgaXNcbiAqIG5vIHJ1bGUgdG8gY2FycnkgaXRzIGxhYmVsIOKAlCBpdCBpcyB0aGUgb25lIGJyYW5jaCBldmlkZW5jZSBjb3VsZCBub3QgbmFtZS5cbiAqIERlY2xhcmluZyB0aGUgbGFiZWwgaGVyZSBwdXRzIHRoZSBkZWZhdWx0J3MgbWVhbmluZyBiZXNpZGUgdGhlIHJ1bGVzIHRoYXQgaXRcbiAqIGNvbXBldGVzIHdpdGgsIGFuZCBzZW5kcyBpdCBvdXQgdGhyb3VnaCB0aGUgc2FtZSBldmlkZW5jZSBjaGFubmVsLlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0c1xuICogZGVjaWRlKHNjb3BlLCBydWxlcywgeyBicmFuY2g6ICdwcm90ZWN0ZWQnLCBsYWJlbDogJ05vdGhpbmcgbWF0Y2hlZCDigJQgbGVhdmUgaXQgcHJvdGVjdGVkJyB9KTtcbiAqIGBgYFxuICovXG5leHBvcnQgdHlwZSBEZWZhdWx0QnJhbmNoID1cbiAgfCBzdHJpbmdcbiAgfCB7XG4gICAgICAvKiogVGhlIGJyYW5jaCBpZCB0byBmYWxsIGJhY2sgdG8uICovXG4gICAgICByZWFkb25seSBicmFuY2g6IHN0cmluZztcbiAgICAgIC8qKiBXaGF0IGZhbGxpbmcgYmFjayB0byB0aGlzIGJyYW5jaCBNRUFOUy4gTGFuZHMgb24gYERlY2lzaW9uRXZpZGVuY2UuZGVmYXVsdExhYmVsYC4gKi9cbiAgICAgIHJlYWRvbmx5IGxhYmVsPzogc3RyaW5nO1xuICAgIH07XG5cbi8vIC0tIFN5bWJvbCBCcmFuZCAoZHVjay10eXBlIHNhZmV0eSkgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuZXhwb3J0IGNvbnN0IERFQ0lTSU9OX1JFU1VMVCA9IFN5bWJvbCgnZm9vdHByaW50OmRlY2lkZTpyZXN1bHQnKTtcblxuLy8gLS0gRGVjaXNpb24gUmVzdWx0IChmcm9tIGRlY2lkZSgpKSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbmV4cG9ydCBpbnRlcmZhY2UgRGVjaXNpb25SZXN1bHQge1xuICBicmFuY2g6IHN0cmluZztcbiAgW0RFQ0lTSU9OX1JFU1VMVF06IHRydWU7XG4gIGV2aWRlbmNlOiBEZWNpc2lvbkV2aWRlbmNlO1xufVxuXG4vLyAtLSBTZWxlY3Rpb24gUmVzdWx0IChmcm9tIHNlbGVjdCgpKSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbmV4cG9ydCBpbnRlcmZhY2UgU2VsZWN0aW9uUmVzdWx0IHtcbiAgYnJhbmNoZXM6IHN0cmluZ1tdO1xuICBbREVDSVNJT05fUkVTVUxUXTogdHJ1ZTtcbiAgZXZpZGVuY2U6IFNlbGVjdGlvbkV2aWRlbmNlO1xufVxuXG4vLyAtLSBFdmlkZW5jZSBUeXBlcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbmV4cG9ydCBpbnRlcmZhY2UgRnVuY3Rpb25SdWxlRXZpZGVuY2Uge1xuICB0eXBlOiAnZnVuY3Rpb24nO1xuICBydWxlSW5kZXg6IG51bWJlcjtcbiAgLyoqIFRoZSBicmFuY2ggSUQgdGhpcyBydWxlIG1hcHMgdG8uIFNlbGYtZGVzY3JpYmluZyDigJQgbm8gaW5kZXggY29ycmVsYXRpb24gbmVlZGVkLiAqL1xuICBicmFuY2g6IHN0cmluZztcbiAgbWF0Y2hlZDogYm9vbGVhbjtcbiAgbGFiZWw/OiBzdHJpbmc7XG4gIGlucHV0czogUmVhZElucHV0W107XG4gIC8qKlxuICAgKiBFcnJvciBtZXNzYWdlIGlmIHRoZSBgd2hlbmAgZnVuY3Rpb24gdGhyZXcgZHVyaW5nIGV2YWx1YXRpb24uXG4gICAqIFByZXNlbnQgb25seSB3aGVuIGFuIGV4Y2VwdGlvbiBvY2N1cnJlZDsgYG1hdGNoZWRgIGlzIGBmYWxzZWAgaW4gdGhhdCBjYXNlLlxuICAgKiBTdXJmYWNlcyB0aGUgZXJyb3IgZm9yIGRlYnVnZ2luZyByYXRoZXIgdGhhbiBzd2FsbG93aW5nIGl0IHNpbGVudGx5LlxuICAgKlxuICAgKiAqKlNlY3VyaXR5IG5vdGU6KiogRXJyb3IgbWVzc2FnZXMgZnJvbSB1c2VyLXByb3ZpZGVkIGB3aGVuYCBmdW5jdGlvbnMgYXJlIGNhcHR1cmVkXG4gICAqIGFzLWlzIGFuZCBhcmUgTk9UIGZpbHRlcmVkIHRocm91Z2ggdGhlIHJlZGFjdGlvbiBwb2xpY3kuIEF2b2lkIGluY2x1ZGluZyBzZW5zaXRpdmVcbiAgICogc2NvcGUgdmFsdWVzIGluIHRocm93biBlcnJvciBtZXNzYWdlcy5cbiAgICovXG4gIG1hdGNoRXJyb3I/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRmlsdGVyUnVsZUV2aWRlbmNlIHtcbiAgdHlwZTogJ2ZpbHRlcic7XG4gIHJ1bGVJbmRleDogbnVtYmVyO1xuICAvKiogVGhlIGJyYW5jaCBJRCB0aGlzIHJ1bGUgbWFwcyB0by4gU2VsZi1kZXNjcmliaW5nIOKAlCBubyBpbmRleCBjb3JyZWxhdGlvbiBuZWVkZWQuICovXG4gIGJyYW5jaDogc3RyaW5nO1xuICBtYXRjaGVkOiBib29sZWFuO1xuICBsYWJlbD86IHN0cmluZztcbiAgY29uZGl0aW9uczogRmlsdGVyQ29uZGl0aW9uW107XG4gIC8qKlxuICAgKiBFcnJvciBtZXNzYWdlIGlmIHRoZSBmaWx0ZXIgZXZhbHVhdG9yIHRocmV3IGR1cmluZyBldmFsdWF0aW9uLlxuICAgKiBQcmVzZW50IG9ubHkgd2hlbiBhbiBleGNlcHRpb24gb2NjdXJyZWQ7IGBtYXRjaGVkYCBpcyBgZmFsc2VgIGluIHRoYXQgY2FzZS5cbiAgICogU3VyZmFjZXMgdGhlIGVycm9yIGZvciBkZWJ1Z2dpbmcgcmF0aGVyIHRoYW4gc3dhbGxvd2luZyBpdCBzaWxlbnRseS5cbiAgICpcbiAgICogKipTZWN1cml0eSBub3RlOioqIEVycm9yIG1lc3NhZ2VzIGZyb20gdXNlci1wcm92aWRlZCBgd2hlbmAgZnVuY3Rpb25zIGFyZSBjYXB0dXJlZFxuICAgKiBhcy1pcyBhbmQgYXJlIE5PVCBmaWx0ZXJlZCB0aHJvdWdoIHRoZSByZWRhY3Rpb24gcG9saWN5LiBBdm9pZCBpbmNsdWRpbmcgc2Vuc2l0aXZlXG4gICAqIHNjb3BlIHZhbHVlcyBpbiB0aHJvd24gZXJyb3IgbWVzc2FnZXMuXG4gICAqL1xuICBtYXRjaEVycm9yPzogc3RyaW5nO1xufVxuXG5leHBvcnQgdHlwZSBSdWxlRXZpZGVuY2UgPSBGdW5jdGlvblJ1bGVFdmlkZW5jZSB8IEZpbHRlclJ1bGVFdmlkZW5jZTtcblxuZXhwb3J0IGludGVyZmFjZSBSZWFkSW5wdXQge1xuICBrZXk6IHN0cmluZztcbiAgdmFsdWVTdW1tYXJ5OiBzdHJpbmc7XG4gIHJlZGFjdGVkOiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEZpbHRlckNvbmRpdGlvbiB7XG4gIGtleTogc3RyaW5nO1xuICBvcDogc3RyaW5nO1xuICAvKiogS2VwdCByYXcgZm9yIGF1ZGl0IGFjY3VyYWN5OyBlbmdpbmUvc2VyaWFsaXplciBtdXN0IGhhbmRsZSBzYWZlbHkuICovXG4gIHRocmVzaG9sZDogdW5rbm93bjtcbiAgYWN0dWFsU3VtbWFyeTogc3RyaW5nO1xuICByZXN1bHQ6IGJvb2xlYW47XG4gIHJlZGFjdGVkOiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERlY2lzaW9uRXZpZGVuY2Uge1xuICAvKiogRXhwbGljaXQgbG9naWNhbC1sb29wIGxpbmsgcmVjb3JkZWQgYnkgYWRkUmV0cnlMb29wOyBubyBrZXksIHJhdyBlcnJvciBvciBwcm92aWRlciBwYXlsb2FkLiAqL1xuICByZXRyeUxvb3A/OiBSZXRyeUxvb3BEZWNpc2lvbjtcbiAgcnVsZXM6IFJ1bGVFdmlkZW5jZVtdO1xuICAvKiogVGhlIGJyYW5jaCBzZWxlY3RlZC4gRXF1YWxzIGBkZWZhdWx0YCB3aGVuIG5vIHJ1bGUgbWF0Y2hlZC4gKi9cbiAgY2hvc2VuOiBzdHJpbmc7XG4gIC8qKiBUaGUgZmFsbGJhY2sgYnJhbmNoIHBhc3NlZCBhcyBkZWZhdWx0QnJhbmNoLiBBbHdheXMgc2V0LiAqL1xuICBkZWZhdWx0OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBXaGF0IHRoZSBERUZBVUxUIGJyYW5jaCBtZWFucyDigJQgcHJlc2VudCBvbmx5IHdoZW4gdGhlIGNhbGxlciBkZWNsYXJlZCBpdFxuICAgKiB2aWEgdGhlIG9iamVjdCBmb3JtIG9mIHtAbGluayBEZWZhdWx0QnJhbmNofS5cbiAgICpcbiAgICogVGhlIGRlZmF1bHQgYnJhbmNoIGlzIGNob3NlbiBieSBubyBydWxlLCBzbyBubyBgcnVsZXNbXS5sYWJlbGAgZGVzY3JpYmVzXG4gICAqIGl0OiBpdCBpcyB0aGUgb25lIGJyYW5jaCBldmlkZW5jZSBjYW5ub3Qgb3RoZXJ3aXNlIG5hbWUuIFRoaXMgZmllbGQgaXMgdGhhdFxuICAgKiBuYW1lLCBhbmQgaXQgaXMgcmVjb3JkZWQgb24gRVZFUlkgZGVjaXNpb24g4oCUIHRoZSBydW4gd2hlcmUgYSBydWxlIHdvbiBhc1xuICAgKiB3ZWxsIGFzIHRoZSBydW4gdGhhdCBmZWxsIHRocm91Z2gg4oCUIHNvIGEgY29uc3VtZXIgaGFydmVzdGluZyBtZWFuaW5ncyBzZWVzXG4gICAqIHRoZSBzYW1lIHNldCBvZiBicmFuY2ggbWVhbmluZ3MgcmVnYXJkbGVzcyBvZiB3aGljaCB3YXkgdGhlIGRhdGEgd2VudC5cbiAgICovXG4gIGRlZmF1bHRMYWJlbD86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTZWxlY3Rpb25FdmlkZW5jZSB7XG4gIHJ1bGVzOiBSdWxlRXZpZGVuY2VbXTtcbiAgc2VsZWN0ZWQ6IHN0cmluZ1tdO1xufVxuIl19
@@ -42,4 +42,4 @@ function isStageNodeReturn(output) {
42
42
  }
43
43
  }
44
44
  exports.isStageNodeReturn = isStageNodeReturn;
45
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU3RhZ2VOb2RlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9lbmdpbmUvZ3JhcGgvU3RhZ2VOb2RlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7Ozs7O0dBU0c7OztBQWtLSCw4RUFBOEU7QUFDOUUscUVBQXFFO0FBQ3JFLDhFQUE4RTtBQUU5RTs7Ozs7Ozs7O0dBU0c7QUFDSCxTQUFnQixpQkFBaUIsQ0FBQyxNQUFlO0lBQy9DLElBQUksQ0FBQyxNQUFNLElBQUksT0FBTyxNQUFNLEtBQUssUUFBUTtRQUFFLE9BQU8sS0FBSyxDQUFDO0lBRXhELElBQUksQ0FBQztRQUNILE1BQU0sR0FBRyxHQUFHLE1BQWlDLENBQUM7UUFDOUMsSUFBSSxPQUFPLEdBQUcsQ0FBQyxJQUFJLEtBQUssUUFBUTtZQUFFLE9BQU8sS0FBSyxDQUFDO1FBRS9DLE1BQU0sZUFBZSxHQUNuQixDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztZQUN4RCxHQUFHLENBQUMsSUFBSSxLQUFLLFNBQVM7WUFDdEIsT0FBTyxHQUFHLENBQUMsZ0JBQWdCLEtBQUssVUFBVTtZQUMxQyxHQUFHLENBQUMsYUFBYSxLQUFLLElBQUksQ0FBQztRQUU3QixPQUFPLGVBQWUsQ0FBQztJQUN6QixDQUFDO0lBQUMsTUFBTSxDQUFDO1FBQ1AsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0FBQ0gsQ0FBQztBQWpCRCw4Q0FpQkMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFN0YWdlTm9kZSDigJQgVGhlIGdyYXBoIG5vZGUgdHlwZSBmb3IgZmxvd2NoYXJ0IHRyYXZlcnNhbC5cbiAqXG4gKiBEZWZpbmVzIHRoZSBzaGFwZSBvZiBlYWNoIG5vZGUgaW4gdGhlIGZsb3djaGFydCBEQUc6XG4gKiAtIExpbmVhciBjb250aW51YXRpb24gdmlhIGBuZXh0YCAobGlua2VkIGxpc3QgdHJhdmVyc2FsKVxuICogLSBQYXJhbGxlbCBmYW4tb3V0IHZpYSBgY2hpbGRyZW5gIChmb3JrKVxuICogLSBDb25kaXRpb25hbCBicmFuY2hpbmcgdmlhIGBkZWNpZGVyRm5gIChzaW5nbGUtY2hvaWNlKSBvciBgc2VsZWN0b3JGbmAgKG11bHRpLWNob2ljZSlcbiAqIC0gQmFjay1lZGdlcyB2aWEgZHluYW1pYyBuZXh0IChsb29wKVxuICogLSBJc29sYXRlZCBzdWItdHJhdmVyc2FscyB2aWEgYGlzU3ViZmxvd1Jvb3RgIChzdWJmbG93KVxuICovXG5cbmltcG9ydCB0eXBlIHsgUGFyYWxsZWxGb3JFYWNoQ29uZmlnLCBSZXRyeVBvbGljeSwgU3RhZ2VGdW5jdGlvbiwgU3ViZmxvd01vdW50T3B0aW9ucyB9IGZyb20gJy4uL3R5cGVzLmpzJztcblxuLyoqXG4gKiBSZXN1bWUgZnVuY3Rpb24gZm9yIHBhdXNhYmxlIHN0YWdlcy5cbiAqIFVubGlrZSBTdGFnZUZ1bmN0aW9uLCB0aGUgMm5kIGFyZ3VtZW50IGlzIHRoZSByZXN1bWUgaW5wdXQgKG5vdCBicmVha0ZuKS5cbiAqL1xuZXhwb3J0IHR5cGUgUmVzdW1lRm48VFNjb3BlID0gYW55LCBUSW5wdXQgPSB1bmtub3duPiA9IChzY29wZTogVFNjb3BlLCBpbnB1dDogVElucHV0KSA9PiBQcm9taXNlPHZvaWQ+IHwgdm9pZDtcblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBEZWNpZGVyICsgU2VsZWN0b3Jcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4vKiogUGlja3MgZXhhY3RseSBPTkUgY2hpbGQgYnkgSUQuIENvbmRpdGlvbmFsIGJyYW5jaCAoaWYvc3dpdGNoKS4gKi9cbmV4cG9ydCB0eXBlIERlY2lkZXIgPSAobm9kZUFyZ3M6IGFueSkgPT4gc3RyaW5nIHwgUHJvbWlzZTxzdHJpbmc+O1xuXG4vKipcbiAqIFBpY2tzIE9ORSBPUiBNT1JFIGNoaWxkcmVuIGJ5IElELiBGaWx0ZXJlZCBmYW4tb3V0LlxuICogLSBTaW5nbGUgc3RyaW5nOiBiZWhhdmVzIGxpa2UgRGVjaWRlclxuICogLSBBcnJheTogc2VsZWN0ZWQgY2hpbGRyZW4gZXhlY3V0ZSBpbiBwYXJhbGxlbFxuICogLSBFbXB0eSBhcnJheTogc2tpcCBhbGwgY2hpbGRyZW5cbiAqL1xuZXhwb3J0IHR5cGUgU2VsZWN0b3IgPSAobm9kZUFyZ3M6IGFueSkgPT4gc3RyaW5nIHwgc3RyaW5nW10gfCBQcm9taXNlPHN0cmluZyB8IHN0cmluZ1tdPjtcblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBTdGFnZU5vZGVcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5leHBvcnQgdHlwZSBTdGFnZU5vZGU8VE91dCA9IGFueSwgVFNjb3BlID0gYW55PiA9IHtcbiAgLyoqIEh1bWFuLXJlYWRhYmxlIHN0YWdlIG5hbWU7IGFsc28gdXNlZCBhcyB0aGUgc3RhZ2VNYXAga2V5ICovXG4gIG5hbWU6IHN0cmluZztcbiAgLyoqIFN0YWJsZSBpZGVudGlmaWVyIGZvciB2aXN1YWxpemF0aW9uIG1hdGNoaW5nIGFuZCBicmFuY2ggYWdncmVnYXRpb24uICovXG4gIGlkOiBzdHJpbmc7XG4gIC8qKiBPcmlnaW5hbCBicmFuY2ggaWRlbnRpZmllciBhcyBzdXBwbGllZCB0byBhZGRGdW5jdGlvbkJyYW5jaCgpIC8gYWRkU3ViRmxvd0NoYXJ0QnJhbmNoKCkuXG4gICAqICBXaGVuIGEgc3ViZmxvdyBwcmVmaXggaXMgYXBwbGllZCB0byB0aGUgbm9kZSB0cmVlLCB0aGlzIGZpZWxkIHByZXNlcnZlcyB0aGVcbiAgICogIHVucHJlZml4ZWQgSUQgc28gaGFuZGxlcnMgY2FuIG1hdGNoIGFnYWluc3QgdGhlIHZhbHVlIHJldHVybmVkIGJ5IHVzZXIgZGVjaWRlci9zZWxlY3RvciBmdW5jdGlvbnMuICovXG4gIGJyYW5jaElkPzogc3RyaW5nO1xuICAvKiogRGVzY3JpcHRpb24gb2Ygd2hhdCB0aGlzIHN0YWdlIGRvZXMuIFVzZWQgZm9yIG5hcnJhdGl2ZSBhbmQgdG9vbCBkZXNjcmlwdGlvbnMuICovXG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuXG4gIC8vIOKUgOKUgCBDb250aW51YXRpb24gcG9pbnRlcnMg4pSA4pSAXG5cbiAgLyoqIExpbmVhciBjb250aW51YXRpb24gKGxpbmtlZCBsaXN0IG5leHQgcG9pbnRlcikgKi9cbiAgbmV4dD86IFN0YWdlTm9kZTxUT3V0LCBUU2NvcGU+O1xuICAvKiogUGFyYWxsZWwgY2hpbGRyZW4gKGZvcmsgZmFuLW91dCkgKi9cbiAgY2hpbGRyZW4/OiBTdGFnZU5vZGU8VE91dCwgVFNjb3BlPltdO1xuXG4gIC8vIOKUgOKUgCBCcmFuY2hpbmcg4pSA4pSAXG5cbiAgLyoqIE91dHB1dC1iYXNlZCBzZWxlY3RvcjogcGlja3Mgc3Vic2V0IG9mIGNoaWxkcmVuICovXG4gIG5leHROb2RlU2VsZWN0b3I/OiBTZWxlY3RvcjtcbiAgLyoqIFdoZW4gdHJ1ZSwgZm4gSVMgYSBzY29wZS1iYXNlZCBkZWNpZGVyIHRoYXQgcmV0dXJucyBhIGJyYW5jaCBJRCBzdHJpbmcgKi9cbiAgZGVjaWRlckZuPzogYm9vbGVhbjtcbiAgLyoqIFdoZW4gdHJ1ZSwgZm4gSVMgYSBzY29wZS1iYXNlZCBzZWxlY3RvciB0aGF0IHJldHVybnMgYnJhbmNoIElEKHMpICovXG4gIHNlbGVjdG9yRm4/OiBib29sZWFuO1xuXG4gIC8vIOKUgOKUgCBTdGFnZSBmdW5jdGlvbiDilIDilIBcblxuICAvKiogRW1iZWRkZWQgZnVuY3Rpb247IG90aGVyd2lzZSByZXNvbHZlZCBmcm9tIHN0YWdlTWFwIGJ5IGBuYW1lYCAqL1xuICBmbj86IFN0YWdlRnVuY3Rpb248VE91dCwgVFNjb3BlPjtcblxuICAvLyDilIDilIAgU3RyZWFtaW5nIOKUgOKUgFxuXG4gIC8qKiBXaGVuIHRydWUsIFBpcGVsaW5lIGluamVjdHMgYSBzdHJlYW1DYWxsYmFjayBhcyAzcmQgcGFyYW1ldGVyICovXG4gIGlzU3RyZWFtaW5nPzogYm9vbGVhbjtcbiAgLyoqIFVuaXF1ZSBzdHJlYW0gaWRlbnRpZmllciBmb3Igcm91dGluZyB0b2tlbnMgKi9cbiAgc3RyZWFtSWQ/OiBzdHJpbmc7XG5cbiAgLy8g4pSA4pSAIFN1YmZsb3cg4pSA4pSAXG5cbiAgLyoqIFRydWUgaWYgdGhpcyBpcyB0aGUgcm9vdCBub2RlIG9mIGEgbW91bnRlZCBzdWJmbG93ICovXG4gIGlzU3ViZmxvd1Jvb3Q/OiBib29sZWFuO1xuICAvKiogTW91bnQgaWQgb2YgdGhlIHN1YmZsb3cgKGUuZy4sIFwibGxtLWNvcmVcIikgKi9cbiAgc3ViZmxvd0lkPzogc3RyaW5nO1xuICAvKiogRGlzcGxheSBuYW1lIG9mIHRoZSBzdWJmbG93ICovXG4gIHN1YmZsb3dOYW1lPzogc3RyaW5nO1xuICAvKiogUmVmZXJlbmNlIGtleSBpbnRvIHRoZSBzdWJmbG93cyBkaWN0aW9uYXJ5ICovXG4gICRyZWY/OiBzdHJpbmc7XG4gIC8qKiBVbmlxdWUgaWRlbnRpZmllciBmb3IgdGhpcyBtb3VudCBpbnN0YW5jZSAqL1xuICBtb3VudElkPzogc3RyaW5nO1xuICAvKiogSW5wdXQvb3V0cHV0IG1hcHBpbmcgb3B0aW9ucyBmb3Igc3ViZmxvd3MgKi9cbiAgc3ViZmxvd01vdW50T3B0aW9ucz86IFN1YmZsb3dNb3VudE9wdGlvbnM7XG4gIC8qKiBXaGVuIHRydWUsIHBhcmFsbGVsIGNoaWxkcmVuIHVzZSBmYWlsLWZhc3Qgc2VtYW50aWNzIChyZWplY3Qgb24gZmlyc3QgZXJyb3IpICovXG4gIGZhaWxGYXN0PzogYm9vbGVhbjtcblxuICAvLyDilIDilIAgUGFyYWxsZWwtZm9yLWVhY2ggKGR5bmFtaWMgZmFuLW91dCkg4pSA4pSAXG5cbiAgLyoqXG4gICAqIFRydWUgd2hlbiB0aGlzIG5vZGUgZmFucyBvdXQgb25lIGJyYW5jaCBQRVIgSVRFTSwgd2l0aCB0aGUgYnJhbmNoIGNvdW50XG4gICAqIGRlY2lkZWQgYXQgcnVudGltZSBmcm9tIHRoZSBwYXlsb2FkIChgYWRkUGFyYWxsZWxGb3JFYWNoYCkuIEEgZmxhZywgbm90IGFcbiAgICogbm9kZSB0eXBlIOKAlCBraW5kcyBhcmUgZmxhZ3MgaGVyZSwgYW5kIHRoZSBzZXJpYWxpemVkIGB0eXBlYCBzdGF5cyBgJ2ZvcmsnYFxuICAgKiBiZWNhdXNlIGEgZmFuLW91dCBpcyB3aGF0IGl0IGlzLiBEZXNpZ246IGRvY3MvZGVzaWduL2V4ZWN1dGlvbi1jb250cm9sLm1kLlxuICAgKi9cbiAgaXNEeW5hbWljUGFyYWxsZWw/OiBib29sZWFuO1xuICAvKiogVGhlIHJ1bnRpbWUgZmFuLW91dCBjb25maWcuIFByZXNlbnQgZXhhY3RseSB3aGVuIGBpc0R5bmFtaWNQYXJhbGxlbGAgaXMgdHJ1ZS4gKi9cbiAgcGFyYWxsZWxGb3JFYWNoPzogUGFyYWxsZWxGb3JFYWNoQ29uZmlnPGFueSwgVFNjb3BlPjtcblxuICAvLyDilIDilIAgUmV0cnkg4pSA4pSAXG5cbiAgLyoqXG4gICAqIERlY2xhcmF0aXZlIHJldHJ5IHBvbGljeSBmb3IgVEhJUyBzdGFnZSdzIGZ1bmN0aW9uLiBBIFBPTElDWSwgbm90IGEgc3RhZ2VcbiAgICoga2luZCDigJQgdGhlIG5vZGUncyBzZXJpYWxpemVkIGB0eXBlYCBpcyB1bmNoYW5nZWQgKHRoZSBzYW1lIGNhbGwgdGhlIGVuZ2luZVxuICAgKiBtYWtlcyBmb3IgYGlzUGF1c2FibGVgL2Bpc1N0cmVhbWluZ2ApLlxuICAgKlxuICAgKiBIb25vdXJlZCBieSBgRmxvd2NoYXJ0VHJhdmVyc2VyLmV4ZWN1dGVTdGFnZWAsIHRoZSBvbmUgZnVubmVsIGV2ZXJ5IHN0YWdlXG4gICAqIGZ1bmN0aW9uIHBhc3NlcyB0aHJvdWdoLCBzbyBpdCBhcHBsaWVzIHVuaWZvcm1seSB0byBsaW5lYXIsIHN0cmVhbWluZyxcbiAgICogcGF1c2FibGUsIGRlY2lkZXIsIHNlbGVjdG9yLCBmb3JrLWNoaWxkIGFuZCBzdWJmbG93LWludGVybmFsIHN0YWdlcy5cbiAgICogU2VlIHtAbGluayBSZXRyeVBvbGljeX0uXG4gICAqL1xuICByZXRyeT86IFJldHJ5UG9saWN5O1xuXG4gIC8vIOKUgOKUgCBEZWNsYXJlZCB0YWdzIOKUgOKUgFxuXG4gIC8qKlxuICAgKiBEZWNsYXJlZCB0YWdzICg5LjIxLjApIOKAlCB0aGUgTkFNRVMgdGhlIGF1dGhvciBwdXQgb24gdGhpcyBzdGFnZSBhdCBidWlsZFxuICAgKiB0aW1lLiBBIFBPTElDWS1saWtlIGZpZWxkLCBub3QgYSBraW5kOiBubyBgY29tcHV0ZU5vZGVUeXBlYCBlZGl0LCBub1xuICAgKiB0eXBlLXVuaW9uIHNpdGUsIGFuZCBib3RoIHByZWZpeGVyIHR3aW5zIHNwcmVhZCBgeyAuLi5ub2RlIH1gIHNvIHRoZSBmaWVsZFxuICAgKiByaWRlcyBzdWJmbG93IHByZWZpeGluZyB1bnRvdWNoZWQuXG4gICAqXG4gICAqIGBGbG93Y2hhcnRUcmF2ZXJzZXIuZXhlY3V0ZU5vZGVTdGVwYCBzdGFtcHMgaXQgb24gdGhlIHN0YWdlJ3NcbiAgICogYFN0YWdlQ29udGV4dGAgYmVzaWRlIGBydW50aW1lU3RhZ2VJZGA7IGBTdGFnZUNvbnRleHQuY29tbWl0YCByZWNvcmRzIGl0XG4gICAqIG9uIHRoZSBidW5kbGUgKGBDb21taXRCdW5kbGUudGFnc2ApIGV4YWN0bHkgb25jZSBwZXIgZXhlY3V0aW9uLiBOZXZlciBhXG4gICAqIHZhbHVlIOKAlCBhIHJ1bnRpbWUgc3RyaW5nIGNvdWxkIGNhcnJ5IGRhdGEgcGFzdCBldmVyeSByZWRhY3Rpb24gcG9pbnQg4oCUXG4gICAqIGFuZCByZWZ1c2VkIGF0IGJ1aWxkIHdoZW4gZW1wdHksIG5vbi1zdHJpbmcsIG9yIGNhcnJ5aW5nIHRoZSByZXNlcnZlZFxuICAgKiBicmFuY2gtc2VnbWVudCBtYXJrZXIuIFNlZSBgRmxvd0NoYXJ0QnVpbGRlci50YWdgLlxuICAgKi9cbiAgdGFncz86IHJlYWRvbmx5IHN0cmluZ1tdO1xuXG4gIC8vIOKUgOKUgCBQYXVzZS9SZXN1bWUg4pSA4pSAXG5cbiAgLyoqIFdoZW4gdHJ1ZSwgdGhpcyBzdGFnZSBjYW4gcGF1c2UgZXhlY3V0aW9uIChQYXVzYWJsZUhhbmRsZXIgcGF0dGVybikuICovXG4gIGlzUGF1c2FibGU/OiBib29sZWFuO1xuICAvKiogUmVzdW1lIGZ1bmN0aW9uIOKAlCBjYWxsZWQgaW5zdGVhZCBvZiBmbiB3aGVuIHJlc3VtaW5nIGEgcGF1c2VkIHN0YWdlLiAqL1xuICByZXN1bWVGbj86IFJlc3VtZUZuPFRTY29wZT47XG5cbiAgLyoqXG4gICAqIFRydWUgaWYgdGhpcyBub2RlIGlzIGEgYmFjay1lZGdlIHJlZmVyZW5jZSBjcmVhdGVkIGJ5IGxvb3BUbygpIOKAlCBub3QgYW4gZXhlY3V0YWJsZSBzdGFnZS5cbiAgICogU2VyaWFsaXphdGlvbiBlcXVpdmFsZW50OiBgU2VyaWFsaXplZFBpcGVsaW5lU3RydWN0dXJlLmlzTG9vcFJlZmVyZW5jZWAgKGRpZmZlcmVudCBuYW1lXG4gICAqIHRvIGRpc3Rpbmd1aXNoIHJ1bnRpbWUgZ3JhcGggZmllbGQgZnJvbSB0aGUgSlNPTi1zYWZlIHNwZWMgZmllbGQpLlxuICAgKi9cbiAgaXNMb29wUmVmPzogYm9vbGVhbjtcblxuICAvKiogSW5saW5lIHN1YmZsb3cgZGVmaW5pdGlvbiBmb3IgZHluYW1pYyBzdWJmbG93IGF0dGFjaG1lbnQuICovXG4gIHN1YmZsb3dEZWY/OiB7XG4gICAgcm9vdDogU3RhZ2VOb2RlO1xuICAgIHN0YWdlTWFwPzogTWFwPHN0cmluZywgU3RhZ2VGdW5jdGlvbjxUT3V0LCBUU2NvcGU+PjtcbiAgICBidWlsZFRpbWVTdHJ1Y3R1cmU/OiB1bmtub3duO1xuICAgIHN1YmZsb3dzPzogUmVjb3JkPHN0cmluZywgeyByb290OiBTdGFnZU5vZGUgfT47XG4gIH07XG5cbiAgLyoqIExhenkgc3ViZmxvdyByZXNvbHZlciDigJQgY2FsbGVkIG9uIGZpcnN0IGV4ZWN1dGlvbiB0byBvYnRhaW4gdGhlIEZsb3dDaGFydC5cbiAgICogIFVzZWQgYnkgYGFkZExhenlTdWJGbG93Q2hhcnRCcmFuY2goKWAgdG8gZGVmZXIgdHJlZSBjbG9uaW5nIHVudGlsIG5lZWRlZC5cbiAgICogIFRoZSByZXNvbHZlciBpcyBjYWxsZWQgYXQgbW9zdCBvbmNlIHBlciBleGVjdXRpb247IHRoZSByZXN1bHQgcmVwbGFjZXMgdGhpcyBmaWVsZC4gKi9cbiAgc3ViZmxvd1Jlc29sdmVyPzogKCkgPT4ge1xuICAgIHJvb3Q6IFN0YWdlTm9kZTtcbiAgICBzdGFnZU1hcDogTWFwPHN0cmluZywgU3RhZ2VGdW5jdGlvbj47XG4gICAgYnVpbGRUaW1lU3RydWN0dXJlPzogdW5rbm93bjtcbiAgICBzdWJmbG93cz86IFJlY29yZDxzdHJpbmcsIHsgcm9vdDogU3RhZ2VOb2RlIH0+O1xuICB9O1xufTtcblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBpc1N0YWdlTm9kZVJldHVybiDigJQgZHVjay10eXBpbmcgZGV0ZWN0aW9uIGZvciBkeW5hbWljIGNvbnRpbnVhdGlvblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbi8qKlxuICogRGV0ZWN0cyBpZiBhIHN0YWdlIG91dHB1dCBpcyBhIFN0YWdlTm9kZSBmb3IgZHluYW1pYyBjb250aW51YXRpb24uXG4gKlxuICogVXNlcyBkdWNrLXR5cGluZzogbXVzdCBoYXZlIGBuYW1lYCAoc3RyaW5nKSBBTkQgYXQgbGVhc3Qgb25lIGNvbnRpbnVhdGlvblxuICogcHJvcGVydHkgKG5vbi1lbXB0eSBjaGlsZHJlbiwgbmV4dCwgbmV4dE5vZGVTZWxlY3Rvciwgb3IgaXNTdWJmbG93Um9vdCkuXG4gKlxuICogYGlzU3ViZmxvd1Jvb3RgIGNvdW50cyBhcyBjb250aW51YXRpb24gYmVjYXVzZSBzdWJmbG93IGV4ZWN1dGlvbiBpcyBhIGZvcm0gb2YgY29udGludWF0aW9uLlxuICpcbiAqIFNhZmVseSBoYW5kbGVzIHByb3h5IG9iamVjdHMgKGUuZy4sIFpvZCBzY29wZSkgdGhhdCBtYXkgdGhyb3cgb24gcHJvcGVydHkgYWNjZXNzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNTdGFnZU5vZGVSZXR1cm4ob3V0cHV0OiB1bmtub3duKTogb3V0cHV0IGlzIFN0YWdlTm9kZSB7XG4gIGlmICghb3V0cHV0IHx8IHR5cGVvZiBvdXRwdXQgIT09ICdvYmplY3QnKSByZXR1cm4gZmFsc2U7XG5cbiAgdHJ5IHtcbiAgICBjb25zdCBvYmogPSBvdXRwdXQgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gICAgaWYgKHR5cGVvZiBvYmoubmFtZSAhPT0gJ3N0cmluZycpIHJldHVybiBmYWxzZTtcblxuICAgIGNvbnN0IGhhc0NvbnRpbnVhdGlvbiA9XG4gICAgICAoQXJyYXkuaXNBcnJheShvYmouY2hpbGRyZW4pICYmIG9iai5jaGlsZHJlbi5sZW5ndGggPiAwKSB8fFxuICAgICAgb2JqLm5leHQgIT09IHVuZGVmaW5lZCB8fFxuICAgICAgdHlwZW9mIG9iai5uZXh0Tm9kZVNlbGVjdG9yID09PSAnZnVuY3Rpb24nIHx8XG4gICAgICBvYmouaXNTdWJmbG93Um9vdCA9PT0gdHJ1ZTtcblxuICAgIHJldHVybiBoYXNDb250aW51YXRpb247XG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuIl19
45
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU3RhZ2VOb2RlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9lbmdpbmUvZ3JhcGgvU3RhZ2VOb2RlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7Ozs7O0dBU0c7OztBQStLSCw4RUFBOEU7QUFDOUUscUVBQXFFO0FBQ3JFLDhFQUE4RTtBQUU5RTs7Ozs7Ozs7O0dBU0c7QUFDSCxTQUFnQixpQkFBaUIsQ0FBQyxNQUFlO0lBQy9DLElBQUksQ0FBQyxNQUFNLElBQUksT0FBTyxNQUFNLEtBQUssUUFBUTtRQUFFLE9BQU8sS0FBSyxDQUFDO0lBRXhELElBQUksQ0FBQztRQUNILE1BQU0sR0FBRyxHQUFHLE1BQWlDLENBQUM7UUFDOUMsSUFBSSxPQUFPLEdBQUcsQ0FBQyxJQUFJLEtBQUssUUFBUTtZQUFFLE9BQU8sS0FBSyxDQUFDO1FBRS9DLE1BQU0sZUFBZSxHQUNuQixDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztZQUN4RCxHQUFHLENBQUMsSUFBSSxLQUFLLFNBQVM7WUFDdEIsT0FBTyxHQUFHLENBQUMsZ0JBQWdCLEtBQUssVUFBVTtZQUMxQyxHQUFHLENBQUMsYUFBYSxLQUFLLElBQUksQ0FBQztRQUU3QixPQUFPLGVBQWUsQ0FBQztJQUN6QixDQUFDO0lBQUMsTUFBTSxDQUFDO1FBQ1AsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0FBQ0gsQ0FBQztBQWpCRCw4Q0FpQkMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFN0YWdlTm9kZSDigJQgVGhlIGdyYXBoIG5vZGUgdHlwZSBmb3IgZmxvd2NoYXJ0IHRyYXZlcnNhbC5cbiAqXG4gKiBEZWZpbmVzIHRoZSBzaGFwZSBvZiBlYWNoIG5vZGUgaW4gdGhlIGZsb3djaGFydCBEQUc6XG4gKiAtIExpbmVhciBjb250aW51YXRpb24gdmlhIGBuZXh0YCAobGlua2VkIGxpc3QgdHJhdmVyc2FsKVxuICogLSBQYXJhbGxlbCBmYW4tb3V0IHZpYSBgY2hpbGRyZW5gIChmb3JrKVxuICogLSBDb25kaXRpb25hbCBicmFuY2hpbmcgdmlhIGBkZWNpZGVyRm5gIChzaW5nbGUtY2hvaWNlKSBvciBgc2VsZWN0b3JGbmAgKG11bHRpLWNob2ljZSlcbiAqIC0gQmFjay1lZGdlcyB2aWEgZHluYW1pYyBuZXh0IChsb29wKVxuICogLSBJc29sYXRlZCBzdWItdHJhdmVyc2FscyB2aWEgYGlzU3ViZmxvd1Jvb3RgIChzdWJmbG93KVxuICovXG5cbmltcG9ydCB0eXBlIHsgUGFyYWxsZWxGb3JFYWNoQ29uZmlnLCBSZXRyeVBvbGljeSwgU3RhZ2VGdW5jdGlvbiwgU3RhZ2VUb3VjaGVzLCBTdWJmbG93TW91bnRPcHRpb25zIH0gZnJvbSAnLi4vdHlwZXMuanMnO1xuXG4vKipcbiAqIFJlc3VtZSBmdW5jdGlvbiBmb3IgcGF1c2FibGUgc3RhZ2VzLlxuICogVW5saWtlIFN0YWdlRnVuY3Rpb24sIHRoZSAybmQgYXJndW1lbnQgaXMgdGhlIHJlc3VtZSBpbnB1dCAobm90IGJyZWFrRm4pLlxuICovXG5leHBvcnQgdHlwZSBSZXN1bWVGbjxUU2NvcGUgPSBhbnksIFRJbnB1dCA9IHVua25vd24+ID0gKHNjb3BlOiBUU2NvcGUsIGlucHV0OiBUSW5wdXQpID0+IFByb21pc2U8dm9pZD4gfCB2b2lkO1xuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIERlY2lkZXIgKyBTZWxlY3RvclxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbi8qKiBQaWNrcyBleGFjdGx5IE9ORSBjaGlsZCBieSBJRC4gQ29uZGl0aW9uYWwgYnJhbmNoIChpZi9zd2l0Y2gpLiAqL1xuZXhwb3J0IHR5cGUgRGVjaWRlciA9IChub2RlQXJnczogYW55KSA9PiBzdHJpbmcgfCBQcm9taXNlPHN0cmluZz47XG5cbi8qKlxuICogUGlja3MgT05FIE9SIE1PUkUgY2hpbGRyZW4gYnkgSUQuIEZpbHRlcmVkIGZhbi1vdXQuXG4gKiAtIFNpbmdsZSBzdHJpbmc6IGJlaGF2ZXMgbGlrZSBEZWNpZGVyXG4gKiAtIEFycmF5OiBzZWxlY3RlZCBjaGlsZHJlbiBleGVjdXRlIGluIHBhcmFsbGVsXG4gKiAtIEVtcHR5IGFycmF5OiBza2lwIGFsbCBjaGlsZHJlblxuICovXG5leHBvcnQgdHlwZSBTZWxlY3RvciA9IChub2RlQXJnczogYW55KSA9PiBzdHJpbmcgfCBzdHJpbmdbXSB8IFByb21pc2U8c3RyaW5nIHwgc3RyaW5nW10+O1xuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFN0YWdlTm9kZVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbmV4cG9ydCB0eXBlIFN0YWdlTm9kZTxUT3V0ID0gYW55LCBUU2NvcGUgPSBhbnk+ID0ge1xuICAvKiogSHVtYW4tcmVhZGFibGUgc3RhZ2UgbmFtZTsgYWxzbyB1c2VkIGFzIHRoZSBzdGFnZU1hcCBrZXkgKi9cbiAgbmFtZTogc3RyaW5nO1xuICAvKiogU3RhYmxlIGlkZW50aWZpZXIgZm9yIHZpc3VhbGl6YXRpb24gbWF0Y2hpbmcgYW5kIGJyYW5jaCBhZ2dyZWdhdGlvbi4gKi9cbiAgaWQ6IHN0cmluZztcbiAgLyoqIE9yaWdpbmFsIGJyYW5jaCBpZGVudGlmaWVyIGFzIHN1cHBsaWVkIHRvIGFkZEZ1bmN0aW9uQnJhbmNoKCkgLyBhZGRTdWJGbG93Q2hhcnRCcmFuY2goKS5cbiAgICogIFdoZW4gYSBzdWJmbG93IHByZWZpeCBpcyBhcHBsaWVkIHRvIHRoZSBub2RlIHRyZWUsIHRoaXMgZmllbGQgcHJlc2VydmVzIHRoZVxuICAgKiAgdW5wcmVmaXhlZCBJRCBzbyBoYW5kbGVycyBjYW4gbWF0Y2ggYWdhaW5zdCB0aGUgdmFsdWUgcmV0dXJuZWQgYnkgdXNlciBkZWNpZGVyL3NlbGVjdG9yIGZ1bmN0aW9ucy4gKi9cbiAgYnJhbmNoSWQ/OiBzdHJpbmc7XG4gIC8qKiBEZXNjcmlwdGlvbiBvZiB3aGF0IHRoaXMgc3RhZ2UgZG9lcy4gVXNlZCBmb3IgbmFycmF0aXZlIGFuZCB0b29sIGRlc2NyaXB0aW9ucy4gKi9cbiAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG5cbiAgLy8g4pSA4pSAIENvbnRpbnVhdGlvbiBwb2ludGVycyDilIDilIBcblxuICAvKiogTGluZWFyIGNvbnRpbnVhdGlvbiAobGlua2VkIGxpc3QgbmV4dCBwb2ludGVyKSAqL1xuICBuZXh0PzogU3RhZ2VOb2RlPFRPdXQsIFRTY29wZT47XG4gIC8qKiBQYXJhbGxlbCBjaGlsZHJlbiAoZm9yayBmYW4tb3V0KSAqL1xuICBjaGlsZHJlbj86IFN0YWdlTm9kZTxUT3V0LCBUU2NvcGU+W107XG5cbiAgLy8g4pSA4pSAIEJyYW5jaGluZyDilIDilIBcblxuICAvKiogT3V0cHV0LWJhc2VkIHNlbGVjdG9yOiBwaWNrcyBzdWJzZXQgb2YgY2hpbGRyZW4gKi9cbiAgbmV4dE5vZGVTZWxlY3Rvcj86IFNlbGVjdG9yO1xuICAvKiogV2hlbiB0cnVlLCBmbiBJUyBhIHNjb3BlLWJhc2VkIGRlY2lkZXIgdGhhdCByZXR1cm5zIGEgYnJhbmNoIElEIHN0cmluZyAqL1xuICBkZWNpZGVyRm4/OiBib29sZWFuO1xuICAvKiogV2hlbiB0cnVlLCBmbiBJUyBhIHNjb3BlLWJhc2VkIHNlbGVjdG9yIHRoYXQgcmV0dXJucyBicmFuY2ggSUQocykgKi9cbiAgc2VsZWN0b3JGbj86IGJvb2xlYW47XG5cbiAgLy8g4pSA4pSAIFN0YWdlIGZ1bmN0aW9uIOKUgOKUgFxuXG4gIC8qKiBFbWJlZGRlZCBmdW5jdGlvbjsgb3RoZXJ3aXNlIHJlc29sdmVkIGZyb20gc3RhZ2VNYXAgYnkgYG5hbWVgICovXG4gIGZuPzogU3RhZ2VGdW5jdGlvbjxUT3V0LCBUU2NvcGU+O1xuXG4gIC8vIOKUgOKUgCBTdHJlYW1pbmcg4pSA4pSAXG5cbiAgLyoqIFdoZW4gdHJ1ZSwgUGlwZWxpbmUgaW5qZWN0cyBhIHN0cmVhbUNhbGxiYWNrIGFzIDNyZCBwYXJhbWV0ZXIgKi9cbiAgaXNTdHJlYW1pbmc/OiBib29sZWFuO1xuICAvKiogVW5pcXVlIHN0cmVhbSBpZGVudGlmaWVyIGZvciByb3V0aW5nIHRva2VucyAqL1xuICBzdHJlYW1JZD86IHN0cmluZztcblxuICAvLyDilIDilIAgU3ViZmxvdyDilIDilIBcblxuICAvKiogVHJ1ZSBpZiB0aGlzIGlzIHRoZSByb290IG5vZGUgb2YgYSBtb3VudGVkIHN1YmZsb3cgKi9cbiAgaXNTdWJmbG93Um9vdD86IGJvb2xlYW47XG4gIC8qKiBNb3VudCBpZCBvZiB0aGUgc3ViZmxvdyAoZS5nLiwgXCJsbG0tY29yZVwiKSAqL1xuICBzdWJmbG93SWQ/OiBzdHJpbmc7XG4gIC8qKiBEaXNwbGF5IG5hbWUgb2YgdGhlIHN1YmZsb3cgKi9cbiAgc3ViZmxvd05hbWU/OiBzdHJpbmc7XG4gIC8qKiBSZWZlcmVuY2Uga2V5IGludG8gdGhlIHN1YmZsb3dzIGRpY3Rpb25hcnkgKi9cbiAgJHJlZj86IHN0cmluZztcbiAgLyoqIFVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGlzIG1vdW50IGluc3RhbmNlICovXG4gIG1vdW50SWQ/OiBzdHJpbmc7XG4gIC8qKiBJbnB1dC9vdXRwdXQgbWFwcGluZyBvcHRpb25zIGZvciBzdWJmbG93cyAqL1xuICBzdWJmbG93TW91bnRPcHRpb25zPzogU3ViZmxvd01vdW50T3B0aW9ucztcbiAgLyoqIFdoZW4gdHJ1ZSwgcGFyYWxsZWwgY2hpbGRyZW4gdXNlIGZhaWwtZmFzdCBzZW1hbnRpY3MgKHJlamVjdCBvbiBmaXJzdCBlcnJvcikgKi9cbiAgZmFpbEZhc3Q/OiBib29sZWFuO1xuXG4gIC8vIOKUgOKUgCBQYXJhbGxlbC1mb3ItZWFjaCAoZHluYW1pYyBmYW4tb3V0KSDilIDilIBcblxuICAvKipcbiAgICogVHJ1ZSB3aGVuIHRoaXMgbm9kZSBmYW5zIG91dCBvbmUgYnJhbmNoIFBFUiBJVEVNLCB3aXRoIHRoZSBicmFuY2ggY291bnRcbiAgICogZGVjaWRlZCBhdCBydW50aW1lIGZyb20gdGhlIHBheWxvYWQgKGBhZGRQYXJhbGxlbEZvckVhY2hgKS4gQSBmbGFnLCBub3QgYVxuICAgKiBub2RlIHR5cGUg4oCUIGtpbmRzIGFyZSBmbGFncyBoZXJlLCBhbmQgdGhlIHNlcmlhbGl6ZWQgYHR5cGVgIHN0YXlzIGAnZm9yaydgXG4gICAqIGJlY2F1c2UgYSBmYW4tb3V0IGlzIHdoYXQgaXQgaXMuIERlc2lnbjogZG9jcy9kZXNpZ24vZXhlY3V0aW9uLWNvbnRyb2wubWQuXG4gICAqL1xuICBpc0R5bmFtaWNQYXJhbGxlbD86IGJvb2xlYW47XG4gIC8qKiBUaGUgcnVudGltZSBmYW4tb3V0IGNvbmZpZy4gUHJlc2VudCBleGFjdGx5IHdoZW4gYGlzRHluYW1pY1BhcmFsbGVsYCBpcyB0cnVlLiAqL1xuICBwYXJhbGxlbEZvckVhY2g/OiBQYXJhbGxlbEZvckVhY2hDb25maWc8YW55LCBUU2NvcGU+O1xuXG4gIC8vIOKUgOKUgCBSZXRyeSDilIDilIBcblxuICAvKipcbiAgICogRGVjbGFyYXRpdmUgcmV0cnkgcG9saWN5IGZvciBUSElTIHN0YWdlJ3MgZnVuY3Rpb24uIEEgUE9MSUNZLCBub3QgYSBzdGFnZVxuICAgKiBraW5kIOKAlCB0aGUgbm9kZSdzIHNlcmlhbGl6ZWQgYHR5cGVgIGlzIHVuY2hhbmdlZCAodGhlIHNhbWUgY2FsbCB0aGUgZW5naW5lXG4gICAqIG1ha2VzIGZvciBgaXNQYXVzYWJsZWAvYGlzU3RyZWFtaW5nYCkuXG4gICAqXG4gICAqIEhvbm91cmVkIGJ5IGBGbG93Y2hhcnRUcmF2ZXJzZXIuZXhlY3V0ZVN0YWdlYCwgdGhlIG9uZSBmdW5uZWwgZXZlcnkgc3RhZ2VcbiAgICogZnVuY3Rpb24gcGFzc2VzIHRocm91Z2gsIHNvIGl0IGFwcGxpZXMgdW5pZm9ybWx5IHRvIGxpbmVhciwgc3RyZWFtaW5nLFxuICAgKiBwYXVzYWJsZSwgZGVjaWRlciwgc2VsZWN0b3IsIGZvcmstY2hpbGQgYW5kIHN1YmZsb3ctaW50ZXJuYWwgc3RhZ2VzLlxuICAgKiBTZWUge0BsaW5rIFJldHJ5UG9saWN5fS5cbiAgICovXG4gIHJldHJ5PzogUmV0cnlQb2xpY3k7XG5cbiAgLy8g4pSA4pSAIFNpZGUgZWZmZWN0cyDilIDilIBcblxuICAvKipcbiAgICogVGhlIG91dHNpZGUgc3lzdGVtIHRoaXMgc3RhZ2UgY2hhbmdlcywgYW5kIHRoZSBydWxlIGZvciBpdHMgaWRlbXBvdGVuY3kga2V5ICgxMC4xLCBkZXNpZ24gwqczLjMpLiBBIFBPTElDWS1saWtlXG4gICAqIGZpZWxkLCB0aGUgYHJldHJ5YCAvIGB0YWdzYCBwcmVjZWRlbnQ6IG5vIG5vZGUga2luZCwgbm8gYGNvbXB1dGVOb2RlVHlwZWAgZWRpdCwgYW5kIHRoZSBwcmVmaXhlcidzXG4gICAqIGB7IC4uLm5vZGUgfWAgc3ByZWFkIGNhcnJpZXMgaXQgdGhyb3VnaCBzdWJmbG93IHByZWZpeGluZy4gTGFuZHMgb25seSB0aHJvdWdoXG4gICAqIGBGbG93Q2hhcnRCdWlsZGVyIMK3IGFwcGx5VG91Y2hlc2A7IGEgdG91Y2hpbmcgc3RhZ2UgdGhhdCBtYXkgcmV0cnkgd2l0aG91dCBhIGtleSBydWxlIGlzIHJlZnVzZWQgdGhlcmUsIGF0IHRoZVxuICAgKiBydW4tdGltZSBkb29yIGZvciBhIHJldHVybmVkIG5vZGUsIGFuZCBhdCB0aGUgc3RhZ2UuIEhvbm91cmVkIGJ5IGBGbG93Y2hhcnRUcmF2ZXJzZXIgwrcgZXhlY3V0ZVN0YWdlYDogdGhlIGtleVxuICAgKiBpcyBjb21wdXRlZCBvbmNlIHBlciBleGVjdXRpb24sIGV2ZXJ5IGF0dGVtcHQgcmVjb3JkcyBpdHMgYGVmZmVjdGAsIGFuZCBhIHNlcmllcyB0aGF0IGVuZHMgd2l0aG91dCBhbiBhbnN3ZXIgYWZ0ZXIgYW55IGF0dGVtcHQgb2YgdW5rbm93biBlZmZlY3QgZmFpbHNcbiAgICogdGhlIHN0YWdlIHdpdGggYFVua25vd25FZmZlY3RFcnJvcmAuIFNlZSB7QGxpbmsgU3RhZ2VUb3VjaGVzfS5cbiAgICovXG4gIHRvdWNoZXM/OiBTdGFnZVRvdWNoZXM7XG5cbiAgLy8g4pSA4pSAIERlY2xhcmVkIHRhZ3Mg4pSA4pSAXG5cbiAgLyoqXG4gICAqIERlY2xhcmVkIHRhZ3MgKDkuMjEuMCkg4oCUIHRoZSBOQU1FUyB0aGUgYXV0aG9yIHB1dCBvbiB0aGlzIHN0YWdlIGF0IGJ1aWxkXG4gICAqIHRpbWUuIEEgUE9MSUNZLWxpa2UgZmllbGQsIG5vdCBhIGtpbmQ6IG5vIGBjb21wdXRlTm9kZVR5cGVgIGVkaXQsIG5vXG4gICAqIHR5cGUtdW5pb24gc2l0ZSwgYW5kIGJvdGggcHJlZml4ZXIgdHdpbnMgc3ByZWFkIGB7IC4uLm5vZGUgfWAgc28gdGhlIGZpZWxkXG4gICAqIHJpZGVzIHN1YmZsb3cgcHJlZml4aW5nIHVudG91Y2hlZC5cbiAgICpcbiAgICogYEZsb3djaGFydFRyYXZlcnNlci5leGVjdXRlTm9kZVN0ZXBgIHN0YW1wcyBpdCBvbiB0aGUgc3RhZ2Unc1xuICAgKiBgU3RhZ2VDb250ZXh0YCBiZXNpZGUgYHJ1bnRpbWVTdGFnZUlkYDsgYFN0YWdlQ29udGV4dC5jb21taXRgIHJlY29yZHMgaXRcbiAgICogb24gdGhlIGJ1bmRsZSAoYENvbW1pdEJ1bmRsZS50YWdzYCkgZXhhY3RseSBvbmNlIHBlciBleGVjdXRpb24uIE5ldmVyIGFcbiAgICogdmFsdWUg4oCUIGEgcnVudGltZSBzdHJpbmcgY291bGQgY2FycnkgZGF0YSBwYXN0IGV2ZXJ5IHJlZGFjdGlvbiBwb2ludCDigJRcbiAgICogYW5kIHJlZnVzZWQgYXQgYnVpbGQgd2hlbiBlbXB0eSwgbm9uLXN0cmluZywgb3IgY2FycnlpbmcgdGhlIHJlc2VydmVkXG4gICAqIGJyYW5jaC1zZWdtZW50IG1hcmtlci4gU2VlIGBGbG93Q2hhcnRCdWlsZGVyLnRhZ2AuXG4gICAqL1xuICB0YWdzPzogcmVhZG9ubHkgc3RyaW5nW107XG5cbiAgLy8g4pSA4pSAIFBhdXNlL1Jlc3VtZSDilIDilIBcblxuICAvKiogV2hlbiB0cnVlLCB0aGlzIHN0YWdlIGNhbiBwYXVzZSBleGVjdXRpb24gKFBhdXNhYmxlSGFuZGxlciBwYXR0ZXJuKS4gKi9cbiAgaXNQYXVzYWJsZT86IGJvb2xlYW47XG4gIC8qKiBSZXN1bWUgZnVuY3Rpb24g4oCUIGNhbGxlZCBpbnN0ZWFkIG9mIGZuIHdoZW4gcmVzdW1pbmcgYSBwYXVzZWQgc3RhZ2UuICovXG4gIHJlc3VtZUZuPzogUmVzdW1lRm48VFNjb3BlPjtcblxuICAvKipcbiAgICogVHJ1ZSBpZiB0aGlzIG5vZGUgaXMgYSBiYWNrLWVkZ2UgcmVmZXJlbmNlIGNyZWF0ZWQgYnkgbG9vcFRvKCkg4oCUIG5vdCBhbiBleGVjdXRhYmxlIHN0YWdlLlxuICAgKiBTZXJpYWxpemF0aW9uIGVxdWl2YWxlbnQ6IGBTZXJpYWxpemVkUGlwZWxpbmVTdHJ1Y3R1cmUuaXNMb29wUmVmZXJlbmNlYCAoZGlmZmVyZW50IG5hbWVcbiAgICogdG8gZGlzdGluZ3Vpc2ggcnVudGltZSBncmFwaCBmaWVsZCBmcm9tIHRoZSBKU09OLXNhZmUgc3BlYyBmaWVsZCkuXG4gICAqL1xuICBpc0xvb3BSZWY/OiBib29sZWFuO1xuXG4gIC8qKiBJbmxpbmUgc3ViZmxvdyBkZWZpbml0aW9uIGZvciBkeW5hbWljIHN1YmZsb3cgYXR0YWNobWVudC4gKi9cbiAgc3ViZmxvd0RlZj86IHtcbiAgICByb290OiBTdGFnZU5vZGU7XG4gICAgc3RhZ2VNYXA/OiBNYXA8c3RyaW5nLCBTdGFnZUZ1bmN0aW9uPFRPdXQsIFRTY29wZT4+O1xuICAgIGJ1aWxkVGltZVN0cnVjdHVyZT86IHVua25vd247XG4gICAgc3ViZmxvd3M/OiBSZWNvcmQ8c3RyaW5nLCB7IHJvb3Q6IFN0YWdlTm9kZSB9PjtcbiAgfTtcblxuICAvKiogTGF6eSBzdWJmbG93IHJlc29sdmVyIOKAlCBjYWxsZWQgb24gZmlyc3QgZXhlY3V0aW9uIHRvIG9idGFpbiB0aGUgRmxvd0NoYXJ0LlxuICAgKiAgVXNlZCBieSBgYWRkTGF6eVN1YkZsb3dDaGFydEJyYW5jaCgpYCB0byBkZWZlciB0cmVlIGNsb25pbmcgdW50aWwgbmVlZGVkLlxuICAgKiAgVGhlIHJlc29sdmVyIGlzIGNhbGxlZCBhdCBtb3N0IG9uY2UgcGVyIGV4ZWN1dGlvbjsgdGhlIHJlc3VsdCByZXBsYWNlcyB0aGlzIGZpZWxkLiAqL1xuICBzdWJmbG93UmVzb2x2ZXI/OiAoKSA9PiB7XG4gICAgcm9vdDogU3RhZ2VOb2RlO1xuICAgIHN0YWdlTWFwOiBNYXA8c3RyaW5nLCBTdGFnZUZ1bmN0aW9uPjtcbiAgICBidWlsZFRpbWVTdHJ1Y3R1cmU/OiB1bmtub3duO1xuICAgIHN1YmZsb3dzPzogUmVjb3JkPHN0cmluZywgeyByb290OiBTdGFnZU5vZGUgfT47XG4gIH07XG59O1xuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIGlzU3RhZ2VOb2RlUmV0dXJuIOKAlCBkdWNrLXR5cGluZyBkZXRlY3Rpb24gZm9yIGR5bmFtaWMgY29udGludWF0aW9uXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuLyoqXG4gKiBEZXRlY3RzIGlmIGEgc3RhZ2Ugb3V0cHV0IGlzIGEgU3RhZ2VOb2RlIGZvciBkeW5hbWljIGNvbnRpbnVhdGlvbi5cbiAqXG4gKiBVc2VzIGR1Y2stdHlwaW5nOiBtdXN0IGhhdmUgYG5hbWVgIChzdHJpbmcpIEFORCBhdCBsZWFzdCBvbmUgY29udGludWF0aW9uXG4gKiBwcm9wZXJ0eSAobm9uLWVtcHR5IGNoaWxkcmVuLCBuZXh0LCBuZXh0Tm9kZVNlbGVjdG9yLCBvciBpc1N1YmZsb3dSb290KS5cbiAqXG4gKiBgaXNTdWJmbG93Um9vdGAgY291bnRzIGFzIGNvbnRpbnVhdGlvbiBiZWNhdXNlIHN1YmZsb3cgZXhlY3V0aW9uIGlzIGEgZm9ybSBvZiBjb250aW51YXRpb24uXG4gKlxuICogU2FmZWx5IGhhbmRsZXMgcHJveHkgb2JqZWN0cyAoZS5nLiwgWm9kIHNjb3BlKSB0aGF0IG1heSB0aHJvdyBvbiBwcm9wZXJ0eSBhY2Nlc3MuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1N0YWdlTm9kZVJldHVybihvdXRwdXQ6IHVua25vd24pOiBvdXRwdXQgaXMgU3RhZ2VOb2RlIHtcbiAgaWYgKCFvdXRwdXQgfHwgdHlwZW9mIG91dHB1dCAhPT0gJ29iamVjdCcpIHJldHVybiBmYWxzZTtcblxuICB0cnkge1xuICAgIGNvbnN0IG9iaiA9IG91dHB1dCBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgICBpZiAodHlwZW9mIG9iai5uYW1lICE9PSAnc3RyaW5nJykgcmV0dXJuIGZhbHNlO1xuXG4gICAgY29uc3QgaGFzQ29udGludWF0aW9uID1cbiAgICAgIChBcnJheS5pc0FycmF5KG9iai5jaGlsZHJlbikgJiYgb2JqLmNoaWxkcmVuLmxlbmd0aCA+IDApIHx8XG4gICAgICBvYmoubmV4dCAhPT0gdW5kZWZpbmVkIHx8XG4gICAgICB0eXBlb2Ygb2JqLm5leHROb2RlU2VsZWN0b3IgPT09ICdmdW5jdGlvbicgfHxcbiAgICAgIG9iai5pc1N1YmZsb3dSb290ID09PSB0cnVlO1xuXG4gICAgcmV0dXJuIGhhc0NvbnRpbnVhdGlvbjtcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59XG4iXX0=
@@ -26,10 +26,14 @@
26
26
  Object.defineProperty(exports, "__esModule", { value: true });
27
27
  exports.prefixNodeTree = void 0;
28
28
  const foottrace_1 = require("foottrace");
29
+ const retryLoopContext_js_1 = require("../../attempt/retryLoopContext.js");
29
30
  function prefixNodeTree(node, prefix) {
30
31
  if (!node)
31
32
  return node;
32
33
  const clone = { ...node };
34
+ const budget = (0, retryLoopContext_js_1.retryLoopBudget)(node);
35
+ if (budget)
36
+ (0, retryLoopContext_js_1.declareRetryLoopBudget)(clone, budget);
33
37
  clone.name = (0, foottrace_1.joinPath)(prefix, node.name);
34
38
  clone.id = (0, foottrace_1.joinPath)(prefix, node.id);
35
39
  if (clone.subflowId)
@@ -41,4 +45,4 @@ function prefixNodeTree(node, prefix) {
41
45
  return clone;
42
46
  }
43
47
  exports.prefixNodeTree = prefixNodeTree;
44
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJlZml4Tm9kZVRyZWUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL2VuZ2luZS9ncmFwaC9wcmVmaXhOb2RlVHJlZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBdUJHOzs7QUFFSCx5Q0FBcUM7QUFJckMsU0FBZ0IsY0FBYyxDQUFnQyxJQUFPLEVBQUUsTUFBYztJQUNuRixJQUFJLENBQUMsSUFBSTtRQUFFLE9BQU8sSUFBSSxDQUFDO0lBQ3ZCLE1BQU0sS0FBSyxHQUFNLEVBQUUsR0FBRyxJQUFJLEVBQUUsQ0FBQztJQUM3QixLQUFLLENBQUMsSUFBSSxHQUFHLElBQUEsb0JBQVEsRUFBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3pDLEtBQUssQ0FBQyxFQUFFLEdBQUcsSUFBQSxvQkFBUSxFQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDckMsSUFBSSxLQUFLLENBQUMsU0FBUztRQUFFLEtBQUssQ0FBQyxTQUFTLEdBQUcsSUFBQSxvQkFBUSxFQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDekUsSUFBSSxLQUFLLENBQUMsSUFBSTtRQUFFLEtBQUssQ0FBQyxJQUFJLEdBQUcsY0FBYyxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDaEUsSUFBSSxLQUFLLENBQUMsUUFBUTtRQUFFLEtBQUssQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLGNBQWMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUMxRixPQUFPLEtBQUssQ0FBQztBQUNmLENBQUM7QUFURCx3Q0FTQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogcHJlZml4Tm9kZVRyZWUg4oCUIHRoZSBPTkUgc3ViZmxvdy1pZCBwcmVmaXhlciAoRjcsIDkuMzcuMCkuXG4gKlxuICogQSBtb3VudGVkIHN1YmZsb3cncyBub2RlIHRyZWUgaXMgcmUtYWRkcmVzc2VkIHVuZGVyIGl0cyBtb3VudDogZXZlcnkgYG5hbWVgLFxuICogYGlkYCBhbmQgbmVzdGVkIGBzdWJmbG93SWRgIGdhaW5zIGA8cHJlZml4Pi9gLiBUaGUgYnVpbGRlciBkb2VzIGl0IGF0IE1PVU5UXG4gKiB0aW1lIChgRmxvd0NoYXJ0QnVpbGRlciDCtyBfcHJlZml4Tm9kZVRyZWVgKTsgdGhlIHRyYXZlcnNlciBhdCBSVU4gdGltZSAobGF6eVxuICogc3ViZmxvd3MsIGFuZCB0aGUgZ2VuZXJhdGVkIGJyYW5jaGVzIG9mIGBhZGRQYXJhbGxlbEZvckVhY2hgKS4gQm90aCBjYWxsXG4gKiB0aGlzIGZ1bmN0aW9uLCBzbyBhIGNoYXJ0IGNvbWVzIG91dCBpZGVudGljYWwgZWl0aGVyIHdheSDigJQgdW50aWwgOS4zNi4wIHRoZXlcbiAqIHdlcmUgdHdvIGJ5dGUtdHdpbiBjb3BpZXMsIHBpbm5lZCBhZ2FpbnN0IGRyaWZ0IGJ5XG4gKiBgdGVzdC9saWIvZW5naW5lL2JyYW5jaC1zZWdtZW50LXByZWZpeGVyLWVxdWl2YWxlbmNlLnRlc3QudHNgLCB3aGljaCBub3dcbiAqIGd1YXJkcyB0aGUgb25lIGltcGxlbWVudGF0aW9uLlxuICpcbiAqIEdlbmVyYXRlZCBicmFuY2ggc2VnbWVudHMgKGA8c3RhZ2VJZD5+PGluZGV4PmAsIHNlZSBgaWRzL2JyYW5jaFNlZ21lbnQudHNgKVxuICogcmlkZSB0aGlzIGV4YWN0IHBhdGggd2l0aCBubyBzcGVjaWFsIGNhc2U6IGEgc2VnbWVudCBpcyBqdXN0IGEgcHJlZml4LCBzbyBhXG4gKiBicmFuY2gncyBpbm5lciBpZHMgYmVjb21lIGA8c2VnbWVudD4vPGlkPmAgYW5kIGl0cyBzdGFnZXMgYWRkcmVzcyBhc1xuICogYDxzZWdtZW50Pi88aWQ+IzxuPmAuXG4gKlxuICogTmV2ZXIgcmVmdXNlczogdGhlIGlkcyBpdCB3cml0ZXMgY2FycnkgYC9gIG9uIHB1cnBvc2UuIFRoZSByZWZ1c2FsIG9mXG4gKiByZXNlcnZlZCBjaGFyYWN0ZXJzIGlzIHRoZSBidWlsZGVyJ3MsIGF0IGl0cyBpZCBkb29ycyAoYHJlZnVzZVJlc2VydmVkSWRgKS5cbiAqXG4gKiBgYnJhbmNoSWRgIGlzIGxlZnQgVU5QUkVGSVhFRCDigJQgZGVjaWRlci9zZWxlY3RvciBtYXRjaGluZyByZWFkc1xuICogYGNoaWxkLmJyYW5jaElkID8/IGNoaWxkLmlkYC4gVGhlIGlucHV0IGlzIG5ldmVyIG11dGF0ZWQgKGVhY2ggbm9kZSBpcyBhXG4gKiBzaGFsbG93IGNsb25lKS5cbiAqL1xuXG5pbXBvcnQgeyBqb2luUGF0aCB9IGZyb20gJ2Zvb3R0cmFjZSc7XG5cbmltcG9ydCB0eXBlIHsgU3RhZ2VOb2RlIH0gZnJvbSAnLi9TdGFnZU5vZGUuanMnO1xuXG5leHBvcnQgZnVuY3Rpb24gcHJlZml4Tm9kZVRyZWU8TiBleHRlbmRzIFN0YWdlTm9kZTxhbnksIGFueT4+KG5vZGU6IE4sIHByZWZpeDogc3RyaW5nKTogTiB7XG4gIGlmICghbm9kZSkgcmV0dXJuIG5vZGU7XG4gIGNvbnN0IGNsb25lOiBOID0geyAuLi5ub2RlIH07XG4gIGNsb25lLm5hbWUgPSBqb2luUGF0aChwcmVmaXgsIG5vZGUubmFtZSk7XG4gIGNsb25lLmlkID0gam9pblBhdGgocHJlZml4LCBub2RlLmlkKTtcbiAgaWYgKGNsb25lLnN1YmZsb3dJZCkgY2xvbmUuc3ViZmxvd0lkID0gam9pblBhdGgocHJlZml4LCBjbG9uZS5zdWJmbG93SWQpO1xuICBpZiAoY2xvbmUubmV4dCkgY2xvbmUubmV4dCA9IHByZWZpeE5vZGVUcmVlKGNsb25lLm5leHQsIHByZWZpeCk7XG4gIGlmIChjbG9uZS5jaGlsZHJlbikgY2xvbmUuY2hpbGRyZW4gPSBjbG9uZS5jaGlsZHJlbi5tYXAoKGMpID0+IHByZWZpeE5vZGVUcmVlKGMsIHByZWZpeCkpO1xuICByZXR1cm4gY2xvbmU7XG59XG4iXX0=
48
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJlZml4Tm9kZVRyZWUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL2VuZ2luZS9ncmFwaC9wcmVmaXhOb2RlVHJlZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBdUJHOzs7QUFFSCx5Q0FBcUM7QUFFckMsMkVBQTRGO0FBRzVGLFNBQWdCLGNBQWMsQ0FBZ0MsSUFBTyxFQUFFLE1BQWM7SUFDbkYsSUFBSSxDQUFDLElBQUk7UUFBRSxPQUFPLElBQUksQ0FBQztJQUN2QixNQUFNLEtBQUssR0FBTSxFQUFFLEdBQUcsSUFBSSxFQUFFLENBQUM7SUFDN0IsTUFBTSxNQUFNLEdBQUcsSUFBQSxxQ0FBZSxFQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3JDLElBQUksTUFBTTtRQUFFLElBQUEsNENBQXNCLEVBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ2xELEtBQUssQ0FBQyxJQUFJLEdBQUcsSUFBQSxvQkFBUSxFQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDekMsS0FBSyxDQUFDLEVBQUUsR0FBRyxJQUFBLG9CQUFRLEVBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNyQyxJQUFJLEtBQUssQ0FBQyxTQUFTO1FBQUUsS0FBSyxDQUFDLFNBQVMsR0FBRyxJQUFBLG9CQUFRLEVBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUN6RSxJQUFJLEtBQUssQ0FBQyxJQUFJO1FBQUUsS0FBSyxDQUFDLElBQUksR0FBRyxjQUFjLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztJQUNoRSxJQUFJLEtBQUssQ0FBQyxRQUFRO1FBQUUsS0FBSyxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsY0FBYyxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQzFGLE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQztBQVhELHdDQVdDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBwcmVmaXhOb2RlVHJlZSDigJQgdGhlIE9ORSBzdWJmbG93LWlkIHByZWZpeGVyIChGNywgOS4zNy4wKS5cbiAqXG4gKiBBIG1vdW50ZWQgc3ViZmxvdydzIG5vZGUgdHJlZSBpcyByZS1hZGRyZXNzZWQgdW5kZXIgaXRzIG1vdW50OiBldmVyeSBgbmFtZWAsXG4gKiBgaWRgIGFuZCBuZXN0ZWQgYHN1YmZsb3dJZGAgZ2FpbnMgYDxwcmVmaXg+L2AuIFRoZSBidWlsZGVyIGRvZXMgaXQgYXQgTU9VTlRcbiAqIHRpbWUgKGBGbG93Q2hhcnRCdWlsZGVyIMK3IF9wcmVmaXhOb2RlVHJlZWApOyB0aGUgdHJhdmVyc2VyIGF0IFJVTiB0aW1lIChsYXp5XG4gKiBzdWJmbG93cywgYW5kIHRoZSBnZW5lcmF0ZWQgYnJhbmNoZXMgb2YgYGFkZFBhcmFsbGVsRm9yRWFjaGApLiBCb3RoIGNhbGxcbiAqIHRoaXMgZnVuY3Rpb24sIHNvIGEgY2hhcnQgY29tZXMgb3V0IGlkZW50aWNhbCBlaXRoZXIgd2F5IOKAlCB1bnRpbCA5LjM2LjAgdGhleVxuICogd2VyZSB0d28gYnl0ZS10d2luIGNvcGllcywgcGlubmVkIGFnYWluc3QgZHJpZnQgYnlcbiAqIGB0ZXN0L2xpYi9lbmdpbmUvYnJhbmNoLXNlZ21lbnQtcHJlZml4ZXItZXF1aXZhbGVuY2UudGVzdC50c2AsIHdoaWNoIG5vd1xuICogZ3VhcmRzIHRoZSBvbmUgaW1wbGVtZW50YXRpb24uXG4gKlxuICogR2VuZXJhdGVkIGJyYW5jaCBzZWdtZW50cyAoYDxzdGFnZUlkPn48aW5kZXg+YCwgc2VlIGBpZHMvYnJhbmNoU2VnbWVudC50c2ApXG4gKiByaWRlIHRoaXMgZXhhY3QgcGF0aCB3aXRoIG5vIHNwZWNpYWwgY2FzZTogYSBzZWdtZW50IGlzIGp1c3QgYSBwcmVmaXgsIHNvIGFcbiAqIGJyYW5jaCdzIGlubmVyIGlkcyBiZWNvbWUgYDxzZWdtZW50Pi88aWQ+YCBhbmQgaXRzIHN0YWdlcyBhZGRyZXNzIGFzXG4gKiBgPHNlZ21lbnQ+LzxpZD4jPG4+YC5cbiAqXG4gKiBOZXZlciByZWZ1c2VzOiB0aGUgaWRzIGl0IHdyaXRlcyBjYXJyeSBgL2Agb24gcHVycG9zZS4gVGhlIHJlZnVzYWwgb2ZcbiAqIHJlc2VydmVkIGNoYXJhY3RlcnMgaXMgdGhlIGJ1aWxkZXIncywgYXQgaXRzIGlkIGRvb3JzIChgcmVmdXNlUmVzZXJ2ZWRJZGApLlxuICpcbiAqIGBicmFuY2hJZGAgaXMgbGVmdCBVTlBSRUZJWEVEIOKAlCBkZWNpZGVyL3NlbGVjdG9yIG1hdGNoaW5nIHJlYWRzXG4gKiBgY2hpbGQuYnJhbmNoSWQgPz8gY2hpbGQuaWRgLiBUaGUgaW5wdXQgaXMgbmV2ZXIgbXV0YXRlZCAoZWFjaCBub2RlIGlzIGFcbiAqIHNoYWxsb3cgY2xvbmUpLlxuICovXG5cbmltcG9ydCB7IGpvaW5QYXRoIH0gZnJvbSAnZm9vdHRyYWNlJztcblxuaW1wb3J0IHsgZGVjbGFyZVJldHJ5TG9vcEJ1ZGdldCwgcmV0cnlMb29wQnVkZ2V0IH0gZnJvbSAnLi4vLi4vYXR0ZW1wdC9yZXRyeUxvb3BDb250ZXh0LmpzJztcbmltcG9ydCB0eXBlIHsgU3RhZ2VOb2RlIH0gZnJvbSAnLi9TdGFnZU5vZGUuanMnO1xuXG5leHBvcnQgZnVuY3Rpb24gcHJlZml4Tm9kZVRyZWU8TiBleHRlbmRzIFN0YWdlTm9kZTxhbnksIGFueT4+KG5vZGU6IE4sIHByZWZpeDogc3RyaW5nKTogTiB7XG4gIGlmICghbm9kZSkgcmV0dXJuIG5vZGU7XG4gIGNvbnN0IGNsb25lOiBOID0geyAuLi5ub2RlIH07XG4gIGNvbnN0IGJ1ZGdldCA9IHJldHJ5TG9vcEJ1ZGdldChub2RlKTtcbiAgaWYgKGJ1ZGdldCkgZGVjbGFyZVJldHJ5TG9vcEJ1ZGdldChjbG9uZSwgYnVkZ2V0KTtcbiAgY2xvbmUubmFtZSA9IGpvaW5QYXRoKHByZWZpeCwgbm9kZS5uYW1lKTtcbiAgY2xvbmUuaWQgPSBqb2luUGF0aChwcmVmaXgsIG5vZGUuaWQpO1xuICBpZiAoY2xvbmUuc3ViZmxvd0lkKSBjbG9uZS5zdWJmbG93SWQgPSBqb2luUGF0aChwcmVmaXgsIGNsb25lLnN1YmZsb3dJZCk7XG4gIGlmIChjbG9uZS5uZXh0KSBjbG9uZS5uZXh0ID0gcHJlZml4Tm9kZVRyZWUoY2xvbmUubmV4dCwgcHJlZml4KTtcbiAgaWYgKGNsb25lLmNoaWxkcmVuKSBjbG9uZS5jaGlsZHJlbiA9IGNsb25lLmNoaWxkcmVuLm1hcCgoYykgPT4gcHJlZml4Tm9kZVRyZWUoYywgcHJlZml4KSk7XG4gIHJldHVybiBjbG9uZTtcbn1cbiJdfQ==
@@ -11,6 +11,7 @@
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
12
  exports.ChildrenExecutor = void 0;
13
13
  const types_js_1 = require("../../pause/types.js");
14
+ const commitStage_js_1 = require("./commitStage.js");
14
15
  const stageError_js_1 = require("./stageError.js");
15
16
  const TraversalDepthError_js_1 = require("./TraversalDepthError.js");
16
17
  /**
@@ -59,10 +60,17 @@ class ChildrenExecutor {
59
60
  // "decision made" semantic (the fork's main work is the decision
60
61
  // to fan out; children are separate stages with their own lifecycles).
61
62
  this.deps.narrativeGenerator.onStageExecuted(node.name, node.description, traversalContext, 'fork');
63
+ const childContexts = [];
62
64
  const childPromises = allChildren.map((child) => {
63
65
  const childBranchPath = branchPath || child.id;
64
66
  const childContext = context.createChild(childBranchPath, child.id, child.name, child.id);
67
+ childContexts.push(childContext);
65
68
  const childBreakFlag = { shouldBreak: false };
69
+ const commitChild = () => {
70
+ // The settled FRAME owns its repeat commit, even when it replaces a
71
+ // previous error. The parent's run is shared, its stage identity is not.
72
+ (0, commitStage_js_1.commitStageWrites)(childContext, 'repeat');
73
+ };
66
74
  const updateParentBreakFlag = () => {
67
75
  if (childBreakFlag.shouldBreak)
68
76
  breakCount += 1;
@@ -73,7 +81,7 @@ class ChildrenExecutor {
73
81
  .then((result) => {
74
82
  // The fan-out's settle commit is a CONTINUATION of the child's
75
83
  // execution — named on the record (9.39.0), never inferred.
76
- childContext.commit('repeat');
84
+ commitChild();
77
85
  updateParentBreakFlag();
78
86
  return { id: child.id, result, isError: false };
79
87
  })
@@ -83,7 +91,7 @@ class ChildrenExecutor {
83
91
  // result: the child never ran, so there is nothing to record.
84
92
  if ((0, types_js_1.isPauseSignal)(error) || (0, TraversalDepthError_js_1.isTraversalDepthError)(error))
85
93
  throw error;
86
- childContext.commit('repeat');
94
+ commitChild();
87
95
  updateParentBreakFlag();
88
96
  this.deps.logger.info(`TREE PIPELINE: executeNodeChildren - Error for id: ${child?.id}`, {
89
97
  error: (0, stageError_js_1.loggableStageError)(childContext, error),
@@ -105,17 +113,34 @@ class ChildrenExecutor {
105
113
  // after every child settles, ahead of any pause.
106
114
  let failure;
107
115
  if (node.failFast) {
116
+ // Promise.all selects the first escaping rejection. A late sibling must
117
+ // neither replace its identity nor keep a raw failure in the saved tree.
118
+ let escaped = false;
119
+ const escape = (index, error) => {
120
+ if (!escaped) {
121
+ escaped = true;
122
+ context.failureState.adopt(childContexts[index].failureState, error);
123
+ }
124
+ else
125
+ childContexts[index].failureState.complete();
126
+ };
108
127
  // Fail-fast: first child ERROR rejects immediately (unwrapped). A pause
109
128
  // is not an error: it settles like a result, so the fork waits for its
110
129
  // siblings before it pauses — their writes land before the checkpoint
111
130
  // is taken, and a second pausing sibling is seen, not raced past.
112
131
  const results = await Promise.all(allChildren.map((child, i) => childPromises[i].then((r) => {
113
- if (r.isError)
132
+ if (r.isError) {
133
+ escape(i, r.result);
114
134
  throw r.result;
135
+ }
136
+ childContexts[i].failureState.complete();
115
137
  return r;
116
138
  }, (error) => {
117
- if (!(0, types_js_1.isPauseSignal)(error))
139
+ if (!(0, types_js_1.isPauseSignal)(error)) {
140
+ escape(i, error);
118
141
  throw error;
142
+ }
143
+ childContexts[i].failureState.complete();
119
144
  pausedAt[i] = error;
120
145
  return undefined;
121
146
  })));
@@ -138,9 +163,14 @@ class ChildrenExecutor {
138
163
  pausedAt[i] = s.reason;
139
164
  }
140
165
  else {
141
- failure ??= { error: s.reason };
166
+ failure ??= { error: s.reason, index: i };
142
167
  }
143
168
  });
169
+ // Contained errors are results, never the run's terminal cause.
170
+ if (failure)
171
+ context.failureState.adopt(childContexts[failure.index].failureState, failure.error);
172
+ for (const child of childContexts)
173
+ child.failureState.complete();
144
174
  }
145
175
  if (failure)
146
176
  throw failure.error;
@@ -196,4 +226,4 @@ class ChildrenExecutor {
196
226
  }
197
227
  }
198
228
  exports.ChildrenExecutor = ChildrenExecutor;
199
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2hpbGRyZW5FeGVjdXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvZW5naW5lL2hhbmRsZXJzL0NoaWxkcmVuRXhlY3V0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7OztHQVFHOzs7QUFJSCxtREFBcUQ7QUFJckQsbURBQXVFO0FBQ3ZFLHFFQUFpRTtBQUtqRTs7Ozs7Ozs7Ozs7O0dBWUc7QUFDSCxTQUFTLFdBQVcsQ0FBQyxNQUE4QjtJQUNqRCxNQUFNLENBQUMsS0FBSyxFQUFFLEdBQUcsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDO0lBQ2xDLEtBQUssTUFBTSxLQUFLLElBQUksTUFBTSxFQUFFLENBQUM7UUFDM0IsS0FBSyxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQztRQUM5QyxLQUFLLE1BQU0sT0FBTyxJQUFJLEtBQUssQ0FBQyxhQUFhO1lBQUUsS0FBSyxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUM1RSxDQUFDO0lBQ0QsT0FBTyxLQUFLLENBQUM7QUFDZixDQUFDO0FBRUQsTUFBYSxnQkFBZ0I7SUFDUDtJQUF5QztJQUE3RCxZQUFvQixJQUErQixFQUFVLFdBQXdDO1FBQWpGLFNBQUksR0FBSixJQUFJLENBQTJCO1FBQVUsZ0JBQVcsR0FBWCxXQUFXLENBQTZCO0lBQUcsQ0FBQztJQUV6Rzs7O09BR0c7SUFDSCxLQUFLLENBQUMsbUJBQW1CLENBQ3ZCLElBQTZCLEVBQzdCLE9BQXFCLEVBQ3JCLGVBQTBDLEVBQzFDLFVBQW1CLEVBQ25CLGdCQUFtQztRQUVuQyxJQUFJLFVBQVUsR0FBRyxDQUFDLENBQUM7UUFDbkIsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxNQUFNLElBQUksQ0FBQyxDQUFDO1FBQ2pELE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxRQUFRLElBQUksRUFBRSxDQUFDO1FBRXhDLGlD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VixXQUFXLGFBQWEsS0FBSyxnQkFBZ0IsQ0FBQyxNQUFNLE9BQU8sUUFBUSxDQUFDLE1BQU0sV0FBVyxFQUNyRixFQUFFLEtBQUssRUFBRSxnQkFBZ0IsQ0FBQyxNQUFNLEVBQUUsV0FBVyxFQUFFLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQ3JGLENBQUM7UUFFRixtQ0FBbUM7UUFDbkMsTUFBTSxvQkFBb0IsR0FBRyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNqRSxNQUFNLFlBQVksR0FBRyxPQUFPLENBQUMsU0FBUyxJQUFJLFVBQVUsQ0FBQztRQUNyRCxJQUFJLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFVBQVUsQ0FBQyxZQUFZLEVBQUUsb0JBQW9CLEVBQUUsUUFBUSxDQUFDLE1BQU0sRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO1FBQy9HLG1FQUFtRTtRQUNuRSxJQUFJLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLGVBQWUsQ0FBQyxZQUFZLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBRXBHLE1BQU0sUUFBUSxHQUE0QjtZQUN4QyxJQUFJLEVBQUUsZUFBZTtZQUNyQixFQUFFLEVBQUUsZUFBZTtZQUNuQixRQUFRLEVBQUUsZ0JBQWdCO1lBQzFCLDRFQUE0RTtZQUM1RSxRQUFRO1NBQ1QsQ0FBQztRQUNGLE9BQU8sTUFBTSxJQUFJLENBQUMsbUJBQW1CLENBQUMsUUFBUSxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLGdCQUFnQixDQUFDLENBQUM7SUFDcEcsQ0FBQztDQUNGO0FBNUxELDRDQTRMQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ2hpbGRyZW5FeGVjdXRvciDigJQgUGFyYWxsZWwgZmFuLW91dCB2aWEgUHJvbWlzZS5hbGxTZXR0bGVkLlxuICpcbiAqIFJlc3BvbnNpYmlsaXRpZXM6XG4gKiAtIEV4ZWN1dGUgYWxsIGNoaWxkcmVuIGluIHBhcmFsbGVsIChmb3JrIHBhdHRlcm4pXG4gKiAtIEV4ZWN1dGUgc2VsZWN0ZWQgY2hpbGRyZW4gYmFzZWQgb24gc2VsZWN0b3Igb3V0cHV0IChtdWx0aS1jaG9pY2UpXG4gKiAtIE5hbWUgYSBjaGlsZCdzIHRocm90dGxpbmcgZXJyb3IgYXMgYW4gYG9uVGhyb3R0bGVkYCBmbG93IGV2ZW50ICg5LjM5LjApXG4gKiAtIEFnZ3JlZ2F0ZSByZXN1bHRzIGludG8geyBjaGlsZElkOiB7IHJlc3VsdCwgaXNFcnJvciB9IH1cbiAqL1xuXG5pbXBvcnQgdHlwZSB7IFN0YWdlQ29udGV4dCB9IGZyb20gJy4uLy4uL21lbW9yeS9TdGFnZUNvbnRleHQuanMnO1xuaW1wb3J0IHR5cGUgeyBQYXVzZVNpZ25hbCB9IGZyb20gJy4uLy4uL3BhdXNlL3R5cGVzLmpzJztcbmltcG9ydCB7IGlzUGF1c2VTaWduYWwgfSBmcm9tICcuLi8uLi9wYXVzZS90eXBlcy5qcyc7XG5pbXBvcnQgdHlwZSB7IFNlbGVjdG9yLCBTdGFnZU5vZGUgfSBmcm9tICcuLi9ncmFwaC9TdGFnZU5vZGUuanMnO1xuaW1wb3J0IHR5cGUgeyBUcmF2ZXJzYWxDb250ZXh0IH0gZnJvbSAnLi4vbmFycmF0aXZlL3R5cGVzLmpzJztcbmltcG9ydCB0eXBlIHsgSGFuZGxlckRlcHMsIE5vZGVSZXN1bHRUeXBlIH0gZnJvbSAnLi4vdHlwZXMuanMnO1xuaW1wb3J0IHsgbG9nZ2FibGVTdGFnZUVycm9yLCBzZXJ2ZWRTdGFnZUVycm9yIH0gZnJvbSAnLi9zdGFnZUVycm9yLmpzJztcbmltcG9ydCB7IGlzVHJhdmVyc2FsRGVwdGhFcnJvciB9IGZyb20gJy4vVHJhdmVyc2FsRGVwdGhFcnJvci5qcyc7XG5pbXBvcnQgdHlwZSB7IEV4ZWN1dGVOb2RlRm4gfSBmcm9tICcuL3R5cGVzLmpzJztcblxuZXhwb3J0IHR5cGUgeyBFeGVjdXRlTm9kZUZuIH07XG5cbi8qKlxuICogVGhlIE9ORSBwYXVzZSBhIGZhbi1vdXQgcmFpc2VzIHdoZW4gc2V2ZXJhbCBvZiBpdHMgY2hpbGRyZW4gcGF1c2VkICg5LjI4LjApLlxuICpcbiAqIE9ubHkgb25lIHF1ZXN0aW9uIGlzIGFza2VkIGF0IGEgdGltZSwgc28gdGhlIEZJUlNUIGNoaWxkJ3MgcGF1c2UgKGNoaWxkXG4gKiBvcmRlcikgaXMgdGhlIG9uZSByYWlzZWQ7IGV2ZXJ5IG90aGVyIGNoaWxkJ3MgcGF1c2Ug4oCUIGFuZCBhbnkgcGF1c2UgYWxyZWFkeVxuICogd2FpdGluZyBiZWhpbmQgaXQg4oCUIGlzIHF1ZXVlZCBvbiBpdCAoYFBhdXNlU2lnbmFsLnBlbmRpbmdQYXVzZXNgKSBhbmQgcmlkZXNcbiAqIHRoZSBjaGVja3BvaW50IGFzIGBwZW5kaW5nUGF1c2VzYC4gQmVmb3JlIDkuMjguMCB0aGUgb3RoZXJzIHdlcmUgZHJvcHBlZFxuICogc2lsZW50bHk6IHRoZSBjaGVja3BvaW50IGFza2VkIG9uZSBjaGlsZCwgYW5kIHRoZSByZXN1bWUgbmV2ZXIgYXNrZWQgdGhlXG4gKiByZXN0IChvciwgb24gOS4yNy4wLCByZS1yYW4gdGhlIHdob2xlIGZhbi1vdXQgZm9yZXZlcikuXG4gKlxuICogRXZlcnkgcXVldWVkIGVudHJ5IGlzIHJlbGF0aXZlIHRvIHRoZSBmYW4tb3V0J3MgbGV2ZWwg4oCUIHRoZSBzYW1lIGxldmVsIHRoZVxuICogZmlyc3Qgc2lnbmFsIGlzIGF0IOKAlCBzbyB0aGUgYnViYmxlLXVwIGdyb3dzIHRoZW0gdG9nZXRoZXIuXG4gKi9cbmZ1bmN0aW9uIHJhaXNlUGF1c2VzKHBhdXNlczogcmVhZG9ubHkgUGF1c2VTaWduYWxbXSk6IFBhdXNlU2lnbmFsIHtcbiAgY29uc3QgW2ZpcnN0LCAuLi5vdGhlcnNdID0gcGF1c2VzO1xuICBmb3IgKGNvbnN0IG90aGVyIG9mIG90aGVycykge1xuICAgIGZpcnN0LmFkZFBlbmRpbmdQYXVzZShvdGhlci50b1BlbmRpbmdQYXVzZSgpKTtcbiAgICBmb3IgKGNvbnN0IHdhaXRpbmcgb2Ygb3RoZXIucGVuZGluZ1BhdXNlcykgZmlyc3QuYWRkUGVuZGluZ1BhdXNlKHdhaXRpbmcpO1xuICB9XG4gIHJldHVybiBmaXJzdDtcbn1cblxuZXhwb3J0IGNsYXNzIENoaWxkcmVuRXhlY3V0b3I8VE91dCA9IGFueSwgVFNjb3BlID0gYW55PiB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZGVwczogSGFuZGxlckRlcHM8VE91dCwgVFNjb3BlPiwgcHJpdmF0ZSBleGVjdXRlTm9kZTogRXhlY3V0ZU5vZGVGbjxUT3V0LCBUU2NvcGU+KSB7fVxuXG4gIC8qKlxuICAgKiBFeGVjdXRlIGFsbCBjaGlsZHJlbiBpbiBwYXJhbGxlbC4gRWFjaCBjaGlsZCBjb21taXRzIG9uIHNldHRsZS5cbiAgICogVXNlcyBQcm9taXNlLmFsbFNldHRsZWQgdG8gZW5zdXJlIGFsbCBjaGlsZHJlbiBjb21wbGV0ZSBldmVuIGlmIHNvbWUgZmFpbC5cbiAgICovXG4gIGFzeW5jIGV4ZWN1dGVOb2RlQ2hpbGRyZW4oXG4gICAgbm9kZTogU3RhZ2VOb2RlPFRPdXQsIFRTY29wZT4sXG4gICAgY29udGV4dDogU3RhZ2VDb250ZXh0LFxuICAgIHBhcmVudEJyZWFrRmxhZz86IHsgc2hvdWxkQnJlYWs6IGJvb2xlYW4gfSxcbiAgICBicmFuY2hQYXRoPzogc3RyaW5nLFxuICAgIHRyYXZlcnNhbENvbnRleHQ/OiBUcmF2ZXJzYWxDb250ZXh0LFxuICApOiBQcm9taXNlPFJlY29yZDxzdHJpbmcsIE5vZGVSZXN1bHRUeXBlPj4ge1xuICAgIGxldCBicmVha0NvdW50ID0gMDtcbiAgICBjb25zdCB0b3RhbENoaWxkcmVuID0gbm9kZS5jaGlsZHJlbj8ubGVuZ3RoID8/IDA7XG4gICAgY29uc3QgYWxsQ2hpbGRyZW4gPSBub2RlLmNoaWxkcmVuID8/IFtdO1xuXG4gICAgLy8gTmFycmF0aXZlOiBjYXB0dXJlIHRoZSBmYW4tb3V0XG4gICAgY29uc3QgY2hpbGREaXNwbGF5TmFtZXMgPSBhbGxDaGlsZHJlbi5tYXAoKGMpID0+IGMubmFtZSk7XG4gICAgdGhpcy5kZXBzLm5hcnJhdGl2ZUdlbmVyYXRvci5vbkZvcmsobm9kZS5uYW1lLCBjaGlsZERpc3BsYXlOYW1lcywgdHJhdmVyc2FsQ29udGV4dCk7XG4gICAgLy8gUHJvcG9zYWwgIzAwMzogZmlyZSBvblN0YWdlRXhlY3V0ZWQgZm9yIHRoZSBmb3JrIHBhcmVudCBBRlRFUlxuICAgIC8vIHRoZSBzcGVjaWFsaXplZCBldmVudCBzbyBjb25zdW1lcnMgdHJhY2tpbmcgXCJkaWQgdGhpcyBzdGFnZSBydW5cIlxuICAgIC8vIHdvcmsgdW5pZm9ybWx5LiBGaXJlcyBCRUZPUkUgY2hpbGRyZW4gZXhlY3V0ZSDigJQgbWF0Y2hpbmcgdGhlXG4gICAgLy8gXCJkZWNpc2lvbiBtYWRlXCIgc2VtYW50aWMgKHRoZSBmb3JrJ3MgbWFpbiB3b3JrIGlzIHRoZSBkZWNpc2lvblxuICAgIC8vIHRvIGZhbiBvdXQ7IGNoaWxkcmVuIGFyZSBzZXBhcmF0ZSBzdGFnZXMgd2l0aCB0aGVpciBvd24gbGlmZWN5Y2xlcykuXG4gICAgdGhpcy5kZXBzLm5hcnJhdGl2ZUdlbmVyYXRvci5vblN0YWdlRXhlY3V0ZWQobm9kZS5uYW1lLCBub2RlLmRlc2NyaXB0aW9uLCB0cmF2ZXJzYWxDb250ZXh0LCAnZm9yaycpO1xuXG4gICAgY29uc3QgY2hpbGRQcm9taXNlczogUHJvbWlzZTxOb2RlUmVzdWx0VHlwZT5bXSA9IGFsbENoaWxkcmVuLm1hcCgoY2hpbGQpID0+IHtcbiAgICAgIGNvbnN0IGNoaWxkQnJhbmNoUGF0aCA9IGJyYW5jaFBhdGggfHwgY2hpbGQuaWQ7XG4gICAgICBjb25zdCBjaGlsZENvbnRleHQgPSBjb250ZXh0LmNyZWF0ZUNoaWxkKGNoaWxkQnJhbmNoUGF0aCBhcyBzdHJpbmcsIGNoaWxkLmlkIGFzIHN0cmluZywgY2hpbGQubmFtZSwgY2hpbGQuaWQpO1xuICAgICAgY29uc3QgY2hpbGRCcmVha0ZsYWcgPSB7IHNob3VsZEJyZWFrOiBmYWxzZSB9O1xuXG4gICAgICBjb25zdCB1cGRhdGVQYXJlbnRCcmVha0ZsYWcgPSAoKSA9PiB7XG4gICAgICAgIGlmIChjaGlsZEJyZWFrRmxhZy5zaG91bGRCcmVhaykgYnJlYWtDb3VudCArPSAxO1xuICAgICAgICBpZiAocGFyZW50QnJlYWtGbGFnICYmIGJyZWFrQ291bnQgPT09IHRvdGFsQ2hpbGRyZW4pIHBhcmVudEJyZWFrRmxhZy5zaG91bGRCcmVhayA9IHRydWU7XG4gICAgICB9O1xuXG4gICAgICByZXR1cm4gdGhpcy5leGVjdXRlTm9kZShjaGlsZCwgY2hpbGRDb250ZXh0LCBjaGlsZEJyZWFrRmxhZywgY2hpbGRCcmFuY2hQYXRoKVxuICAgICAgICAudGhlbigocmVzdWx0KSA9PiB7XG4gICAgICAgICAgLy8gVGhlIGZhbi1vdXQncyBzZXR0bGUgY29tbWl0IGlzIGEgQ09OVElOVUFUSU9OIG9mIHRoZSBjaGlsZCdzXG4gICAgICAgICAgLy8gZXhlY3V0aW9uIOKAlCBuYW1lZCBvbiB0aGUgcmVjb3JkICg5LjM5LjApLCBuZXZlciBpbmZlcnJlZC5cbiAgICAgICAgICBjaGlsZENvbnRleHQuY29tbWl0KCdyZXBlYXQnKTtcbiAgICAgICAgICB1cGRhdGVQYXJlbnRCcmVha0ZsYWcoKTtcbiAgICAgICAgICByZXR1cm4geyBpZDogY2hpbGQuaWQhLCByZXN1bHQsIGlzRXJyb3I6IGZhbHNlIH07XG4gICAgICAgIH0pXG4gICAgICAgIC5jYXRjaCgoZXJyb3IpID0+IHtcbiAgICAgICAgICAvLyBQYXVzZVNpZ25hbCBpcyBleHBlY3RlZCBjb250cm9sIGZsb3cg4oCUIHJlLXRocm93IGltbWVkaWF0ZWx5LlxuICAgICAgICAgIC8vIEEgcmVhY2hlZCBkZXB0aCBjYXAgaXMgYSBSVU4gZmFpbHVyZSwgbmV2ZXIgYSBjb250YWluZWQgY2hpbGRcbiAgICAgICAgICAvLyByZXN1bHQ6IHRoZSBjaGlsZCBuZXZlciByYW4sIHNvIHRoZXJlIGlzIG5vdGhpbmcgdG8gcmVjb3JkLlxuICAgICAgICAgIGlmIChpc1BhdXNlU2lnbmFsKGVycm9yKSB8fCBpc1RyYXZlcnNhbERlcHRoRXJyb3IoZXJyb3IpKSB0aHJvdyBlcnJvcjtcbiAgICAgICAgICBjaGlsZENvbnRleHQuY29tbWl0KCdyZXBlYXQnKTtcbiAgICAgICAgICB1cGRhdGVQYXJlbnRCcmVha0ZsYWcoKTtcbiAgICAgICAgICB0aGlzLmRlcHMubG9nZ2VyLmluZm8oYFRSRUUgUElQRUxJTkU6IGV4ZWN1dGVOb2RlQ2hpbGRyZW4gLSBFcnJvciBmb3IgaWQ6ICR7Y2hpbGQ/LmlkfWAsIHtcbiAgICAgICAgICAgIGVycm9yOiBsb2dnYWJsZVN0YWdlRXJyb3IoY2hpbGRDb250ZXh0LCBlcnJvciksXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgLy8gVGhyb3R0bGluZyBpcyB0ZWxlbWV0cnkgKFI5KTogYW4gZXZlbnQsIG5vdCBhIHN0YXRlIGtleS4gQmVmb3JlXG4gICAgICAgICAgLy8gOS4zOS4wIHRoaXMgd3JvdGUgYG1vbml0b3IuaXNUaHJvdHRsZWRgIEFGVEVSIHRoZSBjaGlsZCdzIGxhc3RcbiAgICAgICAgICAvLyBjb21taXQsIHNvIGl0IGxhbmRlZCBub3doZXJlLlxuICAgICAgICAgIGlmICh0aGlzLmRlcHMudGhyb3R0bGluZ0Vycm9yQ2hlY2tlciAmJiB0aGlzLmRlcHMudGhyb3R0bGluZ0Vycm9yQ2hlY2tlcihlcnJvcikpIHtcbiAgICAgICAgICAgIGNvbnN0IHNlcnZlZCA9IHNlcnZlZFN0YWdlRXJyb3IoY2hpbGRDb250ZXh0LCBlcnJvcik7XG4gICAgICAgICAgICB0aGlzLmRlcHMubmFycmF0aXZlR2VuZXJhdG9yLm9uVGhyb3R0bGVkPy4oY2hpbGQubmFtZSwgY2hpbGQuaWQgYXMgc3RyaW5nLCBzZXJ2ZWQsIHRyYXZlcnNhbENvbnRleHQpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4geyBpZDogY2hpbGQuaWQhLCByZXN1bHQ6IGVycm9yLCBpc0Vycm9yOiB0cnVlIH07XG4gICAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgY29uc3QgY2hpbGRyZW5SZXN1bHRzOiBSZWNvcmQ8c3RyaW5nLCBOb2RlUmVzdWx0VHlwZT4gPSB7fTtcbiAgICAvLyBFdmVyeSBjaGlsZCB0aGF0IHBhdXNlZCwgYnkgQ0hJTEQgaW5kZXggKG5vdCBzZXR0bGUgb3JkZXIpIOKAlCBzZWUgcmFpc2VQYXVzZXMuXG4gICAgY29uc3QgcGF1c2VkQXQ6IChQYXVzZVNpZ25hbCB8IHVuZGVmaW5lZClbXSA9IFtdO1xuICAgIC8vIFRoZSBmaXJzdCBydW4gZmFpbHVyZSBieSBDSElMRCBpbmRleCAoYSByZWFjaGVkIGRlcHRoIGNhcCkg4oCUIHJldGhyb3duXG4gICAgLy8gYWZ0ZXIgZXZlcnkgY2hpbGQgc2V0dGxlcywgYWhlYWQgb2YgYW55IHBhdXNlLlxuICAgIGxldCBmYWlsdXJlOiB7IGVycm9yOiB1bmtub3duIH0gfCB1bmRlZmluZWQ7XG5cbiAgICBpZiAobm9kZS5mYWlsRmFzdCkge1xuICAgICAgLy8gRmFpbC1mYXN0OiBmaXJzdCBjaGlsZCBFUlJPUiByZWplY3RzIGltbWVkaWF0ZWx5ICh1bndyYXBwZWQpLiBBIHBhdXNlXG4gICAgICAvLyBpcyBub3QgYW4gZXJyb3I6IGl0IHNldHRsZXMgbGlrZSBhIHJlc3VsdCwgc28gdGhlIGZvcmsgd2FpdHMgZm9yIGl0c1xuICAgICAgLy8gc2libGluZ3MgYmVmb3JlIGl0IHBhdXNlcyDigJQgdGhlaXIgd3JpdGVzIGxhbmQgYmVmb3JlIHRoZSBjaGVja3BvaW50XG4gICAgICAvLyBpcyB0YWtlbiwgYW5kIGEgc2Vjb25kIHBhdXNpbmcgc2libGluZyBpcyBzZWVuLCBub3QgcmFjZWQgcGFzdC5cbiAgICAgIGNvbnN0IHJlc3VsdHMgPSBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgICAgYWxsQ2hpbGRyZW4ubWFwKChjaGlsZCwgaSkgPT5cbiAgICAgICAgICBjaGlsZFByb21pc2VzW2ldLnRoZW4oXG4gICAgICAgICAgICAocikgPT4ge1xuICAgICAgICAgICAgICBpZiAoci5pc0Vycm9yKSB0aHJvdyByLnJlc3VsdDtcbiAgICAgICAgICAgICAgcmV0dXJuIHI7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgKGVycm9yOiB1bmtub3duKSA9PiB7XG4gICAgICAgICAgICAgIGlmICghaXNQYXVzZVNpZ25hbChlcnJvcikpIHRocm93IGVycm9yO1xuICAgICAgICAgICAgICBwYXVzZWRBdFtpXSA9IGVycm9yO1xuICAgICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICApLFxuICAgICAgICApLFxuICAgICAgKTtcbiAgICAgIGZvciAoY29uc3QgciBvZiByZXN1bHRzKSB7XG4gICAgICAgIGlmIChyID09PSB1bmRlZmluZWQpIGNvbnRpbnVlOyAvLyBhIHBhdXNlZCBjaGlsZFxuICAgICAgICBjaGlsZHJlblJlc3VsdHNbci5pZF0gPSB7IGlkOiByLmlkLCByZXN1bHQ6IHIucmVzdWx0LCBpc0Vycm9yOiByLmlzRXJyb3IgPz8gZmFsc2UgfTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgLy8gRGVmYXVsdDogcnVuIGFsbCBjaGlsZHJlbiB0byBjb21wbGV0aW9uIGV2ZW4gaWYgc29tZSBmYWlsXG4gICAgICBjb25zdCBzZXR0bGVkID0gYXdhaXQgUHJvbWlzZS5hbGxTZXR0bGVkKGNoaWxkUHJvbWlzZXMpO1xuICAgICAgc2V0dGxlZC5mb3JFYWNoKChzLCBpKSA9PiB7XG4gICAgICAgIGlmIChzLnN0YXR1cyA9PT0gJ2Z1bGZpbGxlZCcpIHtcbiAgICAgICAgICBjb25zdCB7IGlkLCByZXN1bHQsIGlzRXJyb3IgfSA9IHMudmFsdWU7XG4gICAgICAgICAgY2hpbGRyZW5SZXN1bHRzW2lkXSA9IHsgaWQsIHJlc3VsdCwgaXNFcnJvcjogaXNFcnJvciA/PyBmYWxzZSB9O1xuICAgICAgICB9IGVsc2UgaWYgKGlzUGF1c2VTaWduYWwocy5yZWFzb24pKSB7XG4gICAgICAgICAgLy8gUGF1c2VTaWduYWwgZnJvbSBhIGNoaWxkIOKAlCByZS10aHJvd24gYWZ0ZXIgYWxsIGNoaWxkcmVuIHNldHRsZS5cbiAgICAgICAgICBwYXVzZWRBdFtpXSA9IHMucmVhc29uO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGZhaWx1cmUgPz89IHsgZXJyb3I6IHMucmVhc29uIH07XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgICBpZiAoZmFpbHVyZSkgdGhyb3cgZmFpbHVyZS5lcnJvcjtcblxuICAgIC8vIFJlLXRocm93IGFmdGVyIGV2ZXJ5IGNoaWxkIGhhcyBzZXR0bGVkLlxuICAgIGNvbnN0IHBhdXNlcyA9IHBhdXNlZEF0LmZpbHRlcigocCk6IHAgaXMgUGF1c2VTaWduYWwgPT4gcCAhPT0gdW5kZWZpbmVkKTtcbiAgICBpZiAocGF1c2VzLmxlbmd0aCA+IDApIHRocm93IHJhaXNlUGF1c2VzKHBhdXNlcyk7XG5cbiAgICByZXR1cm4gY2hpbGRyZW5SZXN1bHRzO1xuICB9XG5cbiAgLyoqXG4gICAqIEV4ZWN1dGUgc2VsZWN0ZWQgY2hpbGRyZW4gYmFzZWQgb24gc2VsZWN0b3IgcmVzdWx0LlxuICAgKiBWYWxpZGF0ZXMgSURzLCByZWNvcmRzIHNlbGVjdGlvbiBpbmZvLCB0aGVuIGRlbGVnYXRlcyB0byBleGVjdXRlTm9kZUNoaWxkcmVuLlxuICAgKi9cbiAgYXN5bmMgZXhlY3V0ZVNlbGVjdGVkQ2hpbGRyZW4oXG4gICAgc2VsZWN0b3I6IFNlbGVjdG9yLFxuICAgIGNoaWxkcmVuOiBTdGFnZU5vZGU8VE91dCwgVFNjb3BlPltdLFxuICAgIGlucHV0OiBhbnksXG4gICAgY29udGV4dDogU3RhZ2VDb250ZXh0LFxuICAgIGJyYW5jaFBhdGg6IHN0cmluZyxcbiAgICB0cmF2ZXJzYWxDb250ZXh0PzogVHJhdmVyc2FsQ29udGV4dCxcbiAgICBmYWlsRmFzdD86IGJvb2xlYW4sXG4gICk6IFByb21pc2U8UmVjb3JkPHN0cmluZywgTm9kZVJlc3VsdFR5cGU+PiB7XG4gICAgY29uc3Qgc2VsZWN0b3JSZXN1bHQgPSBhd2FpdCBzZWxlY3RvcihpbnB1dCk7XG4gICAgY29uc3Qgc2VsZWN0ZWRJZHMgPSBBcnJheS5pc0FycmF5KHNlbGVjdG9yUmVzdWx0KSA/IHNlbGVjdG9yUmVzdWx0IDogW3NlbGVjdG9yUmVzdWx0XTtcblxuICAgIGNvbnRleHQuYWRkTG9nKCdzZWxlY3RlZENoaWxkSWRzJywgc2VsZWN0ZWRJZHMpO1xuICAgIGNvbnRleHQuYWRkTG9nKCdzZWxlY3RvclBhdHRlcm4nLCAnbXVsdGktY2hvaWNlJyk7XG5cbiAgICBpZiAoc2VsZWN0ZWRJZHMubGVuZ3RoID09PSAwKSB7XG4gICAgICBjb250ZXh0LmFkZExvZygnc2tpcHBlZEFsbENoaWxkcmVuJywgdHJ1ZSk7XG4gICAgICByZXR1cm4ge307XG4gICAgfVxuXG4gICAgY29uc3Qgc2VsZWN0ZWRDaGlsZHJlbiA9IGNoaWxkcmVuLmZpbHRlcigoYykgPT4gc2VsZWN0ZWRJZHMuaW5jbHVkZXMoYy5pZCEpKTtcblxuICAgIC8vIFZhbGlkYXRlIGFsbCBJRHMgZXhpc3QgKGZhaWwgZmFzdClcbiAgICBpZiAoc2VsZWN0ZWRDaGlsZHJlbi5sZW5ndGggIT09IHNlbGVjdGVkSWRzLmxlbmd0aCkge1xuICAgICAgY29uc3QgY2hpbGRJZHMgPSBjaGlsZHJlbi5tYXAoKGMpID0+IGMuaWQpO1xuICAgICAgY29uc3QgbWlzc2luZyA9IHNlbGVjdGVkSWRzLmZpbHRlcigoaWQpID0+ICFjaGlsZElkcy5pbmNsdWRlcyhpZCkpO1xuICAgICAgY29uc3QgZXJyb3JNZXNzYWdlID0gYFNlbGVjdG9yIHJldHVybmVkIHVua25vd24gY2hpbGQgSURzOiAke21pc3Npbmcuam9pbignLCAnKX0uIEF2YWlsYWJsZTogJHtjaGlsZElkcy5qb2luKFxuICAgICAgICAnLCAnLFxuICAgICAgKX1gO1xuICAgICAgdGhpcy5kZXBzLmxvZ2dlci5lcnJvcihgRXJyb3IgaW4gcGlwZWxpbmUgKCR7YnJhbmNoUGF0aH0pOmAsIHsgZXJyb3I6IGVycm9yTWVzc2FnZSB9KTtcbiAgICAgIGNvbnRleHQuYWRkRXJyb3IoJ3NlbGVjdG9yRXJyb3InLCBlcnJvck1lc3NhZ2UpO1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGVycm9yTWVzc2FnZSk7XG4gICAgfVxuXG4gICAgY29uc3Qgc2tpcHBlZElkcyA9IGNoaWxkcmVuLmZpbHRlcigoYykgPT4gIXNlbGVjdGVkSWRzLmluY2x1ZGVzKGMuaWQhKSkubWFwKChjKSA9PiBjLmlkKTtcbiAgICBpZiAoc2tpcHBlZElkcy5sZW5ndGggPiAwKSB7XG4gICAgICBjb250ZXh0LmFkZExvZygnc2tpcHBlZENoaWxkSWRzJywgc2tpcHBlZElkcyk7XG4gICAgfVxuXG4gICAgY29uc3Qgc2VsZWN0ZWROYW1lcyA9IHNlbGVjdGVkQ2hpbGRyZW4ubWFwKChjKSA9PiBjLm5hbWUpLmpvaW4oJywgJyk7XG4gICAgY29udGV4dC5hZGRGbG93RGVidWdNZXNzYWdlKFxuICAgICAgJ3NlbGVjdGVkJyxcbiAgICAgIGBSdW5uaW5nICR7c2VsZWN0ZWROYW1lc30gKCR7c2VsZWN0ZWRDaGlsZHJlbi5sZW5ndGh9IG9mICR7Y2hpbGRyZW4ubGVuZ3RofSBtYXRjaGVkKWAsXG4gICAgICB7IGNvdW50OiBzZWxlY3RlZENoaWxkcmVuLmxlbmd0aCwgdGFyZ2V0U3RhZ2U6IHNlbGVjdGVkQ2hpbGRyZW4ubWFwKChjKSA9PiBjLm5hbWUpIH0sXG4gICAgKTtcblxuICAgIC8vIE5hcnJhdGl2ZTogY2FwdHVyZSB0aGUgc2VsZWN0aW9uXG4gICAgY29uc3Qgc2VsZWN0ZWREaXNwbGF5TmFtZXMgPSBzZWxlY3RlZENoaWxkcmVuLm1hcCgoYykgPT4gYy5uYW1lKTtcbiAgICBjb25zdCBzZWxlY3Rvck5hbWUgPSBjb250ZXh0LnN0YWdlTmFtZSB8fCAnc2VsZWN0b3InO1xuICAgIHRoaXMuZGVwcy5uYXJyYXRpdmVHZW5lcmF0b3Iub25TZWxlY3RlZChzZWxlY3Rvck5hbWUsIHNlbGVjdGVkRGlzcGxheU5hbWVzLCBjaGlsZHJlbi5sZW5ndGgsIHRyYXZlcnNhbENvbnRleHQpO1xuICAgIC8vIFByb3Bvc2FsICMwMDM6IGZpcmUgb25TdGFnZUV4ZWN1dGVkIEFGVEVSIHRoZSBzcGVjaWFsaXplZCBldmVudC5cbiAgICB0aGlzLmRlcHMubmFycmF0aXZlR2VuZXJhdG9yLm9uU3RhZ2VFeGVjdXRlZChzZWxlY3Rvck5hbWUsIHVuZGVmaW5lZCwgdHJhdmVyc2FsQ29udGV4dCwgJ3NlbGVjdG9yJyk7XG5cbiAgICBjb25zdCB0ZW1wTm9kZTogU3RhZ2VOb2RlPFRPdXQsIFRTY29wZT4gPSB7XG4gICAgICBuYW1lOiAnc2VsZWN0b3ItdGVtcCcsXG4gICAgICBpZDogJ3NlbGVjdG9yLXRlbXAnLFxuICAgICAgY2hpbGRyZW46IHNlbGVjdGVkQ2hpbGRyZW4sXG4gICAgICAvLyBIb25vciB0aGUgc2VsZWN0b3Igbm9kZSdzIGZhbi1vdXQgZXJyb3IgbW9kZSAoUHJvbWlzZS5hbGwgdnMgYWxsU2V0dGxlZCkuXG4gICAgICBmYWlsRmFzdCxcbiAgICB9O1xuICAgIHJldHVybiBhd2FpdCB0aGlzLmV4ZWN1dGVOb2RlQ2hpbGRyZW4odGVtcE5vZGUsIGNvbnRleHQsIHVuZGVmaW5lZCwgYnJhbmNoUGF0aCwgdHJhdmVyc2FsQ29udGV4dCk7XG4gIH1cbn1cbiJdfQ==
229
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2hpbGRyZW5FeGVjdXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvZW5naW5lL2hhbmRsZXJzL0NoaWxkcmVuRXhlY3V0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7OztHQVFHOzs7QUFJSCxtREFBcUQ7QUFJckQscURBQXFEO0FBQ3JELG1EQUF1RTtBQUN2RSxxRUFBaUU7QUFLakU7Ozs7Ozs7Ozs7OztHQVlHO0FBQ0gsU0FBUyxXQUFXLENBQUMsTUFBOEI7SUFDakQsTUFBTSxDQUFDLEtBQUssRUFBRSxHQUFHLE1BQU0sQ0FBQyxHQUFHLE1BQU0sQ0FBQztJQUNsQyxLQUFLLE1BQU0sS0FBSyxJQUFJLE1BQU0sRUFBRSxDQUFDO1FBQzNCLEtBQUssQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDLENBQUM7UUFDOUMsS0FBSyxNQUFNLE9BQU8sSUFBSSxLQUFLLENBQUMsYUFBYTtZQUFFLEtBQUssQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDNUUsQ0FBQztJQUNELE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQztBQUVELE1BQWEsZ0JBQWdCO0lBQ1A7SUFBeUM7SUFBN0QsWUFBb0IsSUFBK0IsRUFBVSxXQUF3QztRQUFqRixTQUFJLEdBQUosSUFBSSxDQUEyQjtRQUFVLGdCQUFXLEdBQVgsV0FBVyxDQUE2QjtJQUFHLENBQUM7SUFFekc7OztPQUdHO0lBQ0gsS0FBSyxDQUFDLG1CQUFtQixDQUN2QixJQUE2QixFQUM3QixPQUFxQixFQUNyQixlQUEwQyxFQUMxQyxVQUFtQixFQUNuQixnQkFBbUM7UUFFbkMsSUFBSSxVQUFVLEdBQUcsQ0FBQyxDQUFDO1FBQ25CLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsTUFBTSxJQUFJLENBQUMsQ0FBQztRQUNqRCxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsUUFBUSxJQUFJLEVBQUUs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c0NvbnRlbnQiOlsiLyoqXG4gKiBDaGlsZHJlbkV4ZWN1dG9yIOKAlCBQYXJhbGxlbCBmYW4tb3V0IHZpYSBQcm9taXNlLmFsbFNldHRsZWQuXG4gKlxuICogUmVzcG9uc2liaWxpdGllczpcbiAqIC0gRXhlY3V0ZSBhbGwgY2hpbGRyZW4gaW4gcGFyYWxsZWwgKGZvcmsgcGF0dGVybilcbiAqIC0gRXhlY3V0ZSBzZWxlY3RlZCBjaGlsZHJlbiBiYXNlZCBvbiBzZWxlY3RvciBvdXRwdXQgKG11bHRpLWNob2ljZSlcbiAqIC0gTmFtZSBhIGNoaWxkJ3MgdGhyb3R0bGluZyBlcnJvciBhcyBhbiBgb25UaHJvdHRsZWRgIGZsb3cgZXZlbnQgKDkuMzkuMClcbiAqIC0gQWdncmVnYXRlIHJlc3VsdHMgaW50byB7IGNoaWxkSWQ6IHsgcmVzdWx0LCBpc0Vycm9yIH0gfVxuICovXG5cbmltcG9ydCB0eXBlIHsgU3RhZ2VDb250ZXh0IH0gZnJvbSAnLi4vLi4vbWVtb3J5L1N0YWdlQ29udGV4dC5qcyc7XG5pbXBvcnQgdHlwZSB7IFBhdXNlU2lnbmFsIH0gZnJvbSAnLi4vLi4vcGF1c2UvdHlwZXMuanMnO1xuaW1wb3J0IHsgaXNQYXVzZVNpZ25hbCB9IGZyb20gJy4uLy4uL3BhdXNlL3R5cGVzLmpzJztcbmltcG9ydCB0eXBlIHsgU2VsZWN0b3IsIFN0YWdlTm9kZSB9IGZyb20gJy4uL2dyYXBoL1N0YWdlTm9kZS5qcyc7XG5pbXBvcnQgdHlwZSB7IFRyYXZlcnNhbENvbnRleHQgfSBmcm9tICcuLi9uYXJyYXRpdmUvdHlwZXMuanMnO1xuaW1wb3J0IHR5cGUgeyBIYW5kbGVyRGVwcywgTm9kZVJlc3VsdFR5cGUgfSBmcm9tICcuLi90eXBlcy5qcyc7XG5pbXBvcnQgeyBjb21taXRTdGFnZVdyaXRlcyB9IGZyb20gJy4vY29tbWl0U3RhZ2UuanMnO1xuaW1wb3J0IHsgbG9nZ2FibGVTdGFnZUVycm9yLCBzZXJ2ZWRTdGFnZUVycm9yIH0gZnJvbSAnLi9zdGFnZUVycm9yLmpzJztcbmltcG9ydCB7IGlzVHJhdmVyc2FsRGVwdGhFcnJvciB9IGZyb20gJy4vVHJhdmVyc2FsRGVwdGhFcnJvci5qcyc7XG5pbXBvcnQgdHlwZSB7IEV4ZWN1dGVOb2RlRm4gfSBmcm9tICcuL3R5cGVzLmpzJztcblxuZXhwb3J0IHR5cGUgeyBFeGVjdXRlTm9kZUZuIH07XG5cbi8qKlxuICogVGhlIE9ORSBwYXVzZSBhIGZhbi1vdXQgcmFpc2VzIHdoZW4gc2V2ZXJhbCBvZiBpdHMgY2hpbGRyZW4gcGF1c2VkICg5LjI4LjApLlxuICpcbiAqIE9ubHkgb25lIHF1ZXN0aW9uIGlzIGFza2VkIGF0IGEgdGltZSwgc28gdGhlIEZJUlNUIGNoaWxkJ3MgcGF1c2UgKGNoaWxkXG4gKiBvcmRlcikgaXMgdGhlIG9uZSByYWlzZWQ7IGV2ZXJ5IG90aGVyIGNoaWxkJ3MgcGF1c2Ug4oCUIGFuZCBhbnkgcGF1c2UgYWxyZWFkeVxuICogd2FpdGluZyBiZWhpbmQgaXQg4oCUIGlzIHF1ZXVlZCBvbiBpdCAoYFBhdXNlU2lnbmFsLnBlbmRpbmdQYXVzZXNgKSBhbmQgcmlkZXNcbiAqIHRoZSBjaGVja3BvaW50IGFzIGBwZW5kaW5nUGF1c2VzYC4gQmVmb3JlIDkuMjguMCB0aGUgb3RoZXJzIHdlcmUgZHJvcHBlZFxuICogc2lsZW50bHk6IHRoZSBjaGVja3BvaW50IGFza2VkIG9uZSBjaGlsZCwgYW5kIHRoZSByZXN1bWUgbmV2ZXIgYXNrZWQgdGhlXG4gKiByZXN0IChvciwgb24gOS4yNy4wLCByZS1yYW4gdGhlIHdob2xlIGZhbi1vdXQgZm9yZXZlcikuXG4gKlxuICogRXZlcnkgcXVldWVkIGVudHJ5IGlzIHJlbGF0aXZlIHRvIHRoZSBmYW4tb3V0J3MgbGV2ZWwg4oCUIHRoZSBzYW1lIGxldmVsIHRoZVxuICogZmlyc3Qgc2lnbmFsIGlzIGF0IOKAlCBzbyB0aGUgYnViYmxlLXVwIGdyb3dzIHRoZW0gdG9nZXRoZXIuXG4gKi9cbmZ1bmN0aW9uIHJhaXNlUGF1c2VzKHBhdXNlczogcmVhZG9ubHkgUGF1c2VTaWduYWxbXSk6IFBhdXNlU2lnbmFsIHtcbiAgY29uc3QgW2ZpcnN0LCAuLi5vdGhlcnNdID0gcGF1c2VzO1xuICBmb3IgKGNvbnN0IG90aGVyIG9mIG90aGVycykge1xuICAgIGZpcnN0LmFkZFBlbmRpbmdQYXVzZShvdGhlci50b1BlbmRpbmdQYXVzZSgpKTtcbiAgICBmb3IgKGNvbnN0IHdhaXRpbmcgb2Ygb3RoZXIucGVuZGluZ1BhdXNlcykgZmlyc3QuYWRkUGVuZGluZ1BhdXNlKHdhaXRpbmcpO1xuICB9XG4gIHJldHVybiBmaXJzdDtcbn1cblxuZXhwb3J0IGNsYXNzIENoaWxkcmVuRXhlY3V0b3I8VE91dCA9IGFueSwgVFNjb3BlID0gYW55PiB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZGVwczogSGFuZGxlckRlcHM8VE91dCwgVFNjb3BlPiwgcHJpdmF0ZSBleGVjdXRlTm9kZTogRXhlY3V0ZU5vZGVGbjxUT3V0LCBUU2NvcGU+KSB7fVxuXG4gIC8qKlxuICAgKiBFeGVjdXRlIGFsbCBjaGlsZHJlbiBpbiBwYXJhbGxlbC4gRWFjaCBjaGlsZCBjb21taXRzIG9uIHNldHRsZS5cbiAgICogVXNlcyBQcm9taXNlLmFsbFNldHRsZWQgdG8gZW5zdXJlIGFsbCBjaGlsZHJlbiBjb21wbGV0ZSBldmVuIGlmIHNvbWUgZmFpbC5cbiAgICovXG4gIGFzeW5jIGV4ZWN1dGVOb2RlQ2hpbGRyZW4oXG4gICAgbm9kZTogU3RhZ2VOb2RlPFRPdXQsIFRTY29wZT4sXG4gICAgY29udGV4dDogU3RhZ2VDb250ZXh0LFxuICAgIHBhcmVudEJyZWFrRmxhZz86IHsgc2hvdWxkQnJlYWs6IGJvb2xlYW4gfSxcbiAgICBicmFuY2hQYXRoPzogc3RyaW5nLFxuICAgIHRyYXZlcnNhbENvbnRleHQ/OiBUcmF2ZXJzYWxDb250ZXh0LFxuICApOiBQcm9taXNlPFJlY29yZDxzdHJpbmcsIE5vZGVSZXN1bHRUeXBlPj4ge1xuICAgIGxldCBicmVha0NvdW50ID0gMDtcbiAgICBjb25zdCB0b3RhbENoaWxkcmVuID0gbm9kZS5jaGlsZHJlbj8ubGVuZ3RoID8/IDA7XG4gICAgY29uc3QgYWxsQ2hpbGRyZW4gPSBub2RlLmNoaWxkcmVuID8/IFtdO1xuXG4gICAgLy8gTmFycmF0aXZlOiBjYXB0dXJlIHRoZSBmYW4tb3V0XG4gICAgY29uc3QgY2hpbGREaXNwbGF5TmFtZXMgPSBhbGxDaGlsZHJlbi5tYXAoKGMpID0+IGMubmFtZSk7XG4gICAgdGhpcy5kZXBzLm5hcnJhdGl2ZUdlbmVyYXRvci5vbkZvcmsobm9kZS5uYW1lLCBjaGlsZERpc3BsYXlOYW1lcywgdHJhdmVyc2FsQ29udGV4dCk7XG4gICAgLy8gUHJvcG9zYWwgIzAwMzogZmlyZSBvblN0YWdlRXhlY3V0ZWQgZm9yIHRoZSBmb3JrIHBhcmVudCBBRlRFUlxuICAgIC8vIHRoZSBzcGVjaWFsaXplZCBldmVudCBzbyBjb25zdW1lcnMgdHJhY2tpbmcgXCJkaWQgdGhpcyBzdGFnZSBydW5cIlxuICAgIC8vIHdvcmsgdW5pZm9ybWx5LiBGaXJlcyBCRUZPUkUgY2hpbGRyZW4gZXhlY3V0ZSDigJQgbWF0Y2hpbmcgdGhlXG4gICAgLy8gXCJkZWNpc2lvbiBtYWRlXCIgc2VtYW50aWMgKHRoZSBmb3JrJ3MgbWFpbiB3b3JrIGlzIHRoZSBkZWNpc2lvblxuICAgIC8vIHRvIGZhbiBvdXQ7IGNoaWxkcmVuIGFyZSBzZXBhcmF0ZSBzdGFnZXMgd2l0aCB0aGVpciBvd24gbGlmZWN5Y2xlcykuXG4gICAgdGhpcy5kZXBzLm5hcnJhdGl2ZUdlbmVyYXRvci5vblN0YWdlRXhlY3V0ZWQobm9kZS5uYW1lLCBub2RlLmRlc2NyaXB0aW9uLCB0cmF2ZXJzYWxDb250ZXh0LCAnZm9yaycpO1xuXG4gICAgY29uc3QgY2hpbGRDb250ZXh0czogU3RhZ2VDb250ZXh0W10gPSBbXTtcbiAgICBjb25zdCBjaGlsZFByb21pc2VzOiBQcm9taXNlPE5vZGVSZXN1bHRUeXBlPltdID0gYWxsQ2hpbGRyZW4ubWFwKChjaGlsZCkgPT4ge1xuICAgICAgY29uc3QgY2hpbGRCcmFuY2hQYXRoID0gYnJhbmNoUGF0aCB8fCBjaGlsZC5pZDtcbiAgICAgIGNvbnN0IGNoaWxkQ29udGV4dCA9IGNvbnRleHQuY3JlYXRlQ2hpbGQoY2hpbGRCcmFuY2hQYXRoIGFzIHN0cmluZywgY2hpbGQuaWQgYXMgc3RyaW5nLCBjaGlsZC5uYW1lLCBjaGlsZC5pZCk7XG4gICAgICBjaGlsZENvbnRleHRzLnB1c2goY2hpbGRDb250ZXh0KTtcbiAgICAgIGNvbnN0IGNoaWxkQnJlYWtGbGFnID0geyBzaG91bGRCcmVhazogZmFsc2UgfTtcbiAgICAgIGNvbnN0IGNvbW1pdENoaWxkID0gKCk6IHZvaWQgPT4ge1xuICAgICAgICAvLyBUaGUgc2V0dGxlZCBGUkFNRSBvd25zIGl0cyByZXBlYXQgY29tbWl0LCBldmVuIHdoZW4gaXQgcmVwbGFjZXMgYVxuICAgICAgICAvLyBwcmV2aW91cyBlcnJvci4gVGhlIHBhcmVudCdzIHJ1biBpcyBzaGFyZWQsIGl0cyBzdGFnZSBpZGVudGl0eSBpcyBub3QuXG4gICAgICAgIGNvbW1pdFN0YWdlV3JpdGVzKGNoaWxkQ29udGV4dCwgJ3JlcGVhdCcpO1xuICAgICAgfTtcblxuICAgICAgY29uc3QgdXBkYXRlUGFyZW50QnJlYWtGbGFnID0gKCkgPT4ge1xuICAgICAgICBpZiAoY2hpbGRCcmVha0ZsYWcuc2hvdWxkQnJlYWspIGJyZWFrQ291bnQgKz0gMTtcbiAgICAgICAgaWYgKHBhcmVudEJyZWFrRmxhZyAmJiBicmVha0NvdW50ID09PSB0b3RhbENoaWxkcmVuKSBwYXJlbnRCcmVha0ZsYWcuc2hvdWxkQnJlYWsgPSB0cnVlO1xuICAgICAgfTtcblxuICAgICAgcmV0dXJuIHRoaXMuZXhlY3V0ZU5vZGUoY2hpbGQsIGNoaWxkQ29udGV4dCwgY2hpbGRCcmVha0ZsYWcsIGNoaWxkQnJhbmNoUGF0aClcbiAgICAgICAgLnRoZW4oKHJlc3VsdCkgPT4ge1xuICAgICAgICAgIC8vIFRoZSBmYW4tb3V0J3Mgc2V0dGxlIGNvbW1pdCBpcyBhIENPTlRJTlVBVElPTiBvZiB0aGUgY2hpbGQnc1xuICAgICAgICAgIC8vIGV4ZWN1dGlvbiDigJQgbmFtZWQgb24gdGhlIHJlY29yZCAoOS4zOS4wKSwgbmV2ZXIgaW5mZXJyZWQuXG4gICAgICAgICAgY29tbWl0Q2hpbGQoKTtcbiAgICAgICAgICB1cGRhdGVQYXJlbnRCcmVha0ZsYWcoKTtcbiAgICAgICAgICByZXR1cm4geyBpZDogY2hpbGQuaWQhLCByZXN1bHQsIGlzRXJyb3I6IGZhbHNlIH07XG4gICAgICAgIH0pXG4gICAgICAgIC5jYXRjaCgoZXJyb3IpID0+IHtcbiAgICAgICAgICAvLyBQYXVzZVNpZ25hbCBpcyBleHBlY3RlZCBjb250cm9sIGZsb3cg4oCUIHJlLXRocm93IGltbWVkaWF0ZWx5LlxuICAgICAgICAgIC8vIEEgcmVhY2hlZCBkZXB0aCBjYXAgaXMgYSBSVU4gZmFpbHVyZSwgbmV2ZXIgYSBjb250YWluZWQgY2hpbGRcbiAgICAgICAgICAvLyByZXN1bHQ6IHRoZSBjaGlsZCBuZXZlciByYW4sIHNvIHRoZXJlIGlzIG5vdGhpbmcgdG8gcmVjb3JkLlxuICAgICAgICAgIGlmIChpc1BhdXNlU2lnbmFsKGVycm9yKSB8fCBpc1RyYXZlcnNhbERlcHRoRXJyb3IoZXJyb3IpKSB0aHJvdyBlcnJvcjtcbiAgICAgICAgICBjb21taXRDaGlsZCgpO1xuICAgICAgICAgIHVwZGF0ZVBhcmVudEJyZWFrRmxhZygpO1xuICAgICAgICAgIHRoaXMuZGVwcy5sb2dnZXIuaW5mbyhgVFJFRSBQSVBFTElORTogZXhlY3V0ZU5vZGVDaGlsZHJlbiAtIEVycm9yIGZvciBpZDogJHtjaGlsZD8uaWR9YCwge1xuICAgICAgICAgICAgZXJyb3I6IGxvZ2dhYmxlU3RhZ2VFcnJvcihjaGlsZENvbnRleHQsIGVycm9yKSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgICAvLyBUaHJvdHRsaW5nIGlzIHRlbGVtZXRyeSAoUjkpOiBhbiBldmVudCwgbm90IGEgc3RhdGUga2V5LiBCZWZvcmVcbiAgICAgICAgICAvLyA5LjM5LjAgdGhpcyB3cm90ZSBgbW9uaXRvci5pc1Rocm90dGxlZGAgQUZURVIgdGhlIGNoaWxkJ3MgbGFzdFxuICAgICAgICAgIC8vIGNvbW1pdCwgc28gaXQgbGFuZGVkIG5vd2hlcmUuXG4gICAgICAgICAgaWYgKHRoaXMuZGVwcy50aHJvdHRsaW5nRXJyb3JDaGVja2VyICYmIHRoaXMuZGVwcy50aHJvdHRsaW5nRXJyb3JDaGVja2VyKGVycm9yKSkge1xuICAgICAgICAgICAgY29uc3Qgc2VydmVkID0gc2VydmVkU3RhZ2VFcnJvcihjaGlsZENvbnRleHQsIGVycm9yKTtcbiAgICAgICAgICAgIHRoaXMuZGVwcy5uYXJyYXRpdmVHZW5lcmF0b3Iub25UaHJvdHRsZWQ/LihjaGlsZC5uYW1lLCBjaGlsZC5pZCBhcyBzdHJpbmcsIHNlcnZlZCwgdHJhdmVyc2FsQ29udGV4dCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiB7IGlkOiBjaGlsZC5pZCEsIHJlc3VsdDogZXJyb3IsIGlzRXJyb3I6IHRydWUgfTtcbiAgICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBjb25zdCBjaGlsZHJlblJlc3VsdHM6IFJlY29yZDxzdHJpbmcsIE5vZGVSZXN1bHRUeXBlPiA9IHt9O1xuICAgIC8vIEV2ZXJ5IGNoaWxkIHRoYXQgcGF1c2VkLCBieSBDSElMRCBpbmRleCAobm90IHNldHRsZSBvcmRlcikg4oCUIHNlZSByYWlzZVBhdXNlcy5cbiAgICBjb25zdCBwYXVzZWRBdDogKFBhdXNlU2lnbmFsIHwgdW5kZWZpbmVkKVtdID0gW107XG4gICAgLy8gVGhlIGZpcnN0IHJ1biBmYWlsdXJlIGJ5IENISUxEIGluZGV4IChhIHJlYWNoZWQgZGVwdGggY2FwKSDigJQgcmV0aHJvd25cbiAgICAvLyBhZnRlciBldmVyeSBjaGlsZCBzZXR0bGVzLCBhaGVhZCBvZiBhbnkgcGF1c2UuXG4gICAgbGV0IGZhaWx1cmU6IHsgZXJyb3I6IHVua25vd247IGluZGV4OiBudW1iZXIgfSB8IHVuZGVmaW5lZDtcblxuICAgIGlmIChub2RlLmZhaWxGYXN0KSB7XG4gICAgICAvLyBQcm9taXNlLmFsbCBzZWxlY3RzIHRoZSBmaXJzdCBlc2NhcGluZyByZWplY3Rpb24uIEEgbGF0ZSBzaWJsaW5nIG11c3RcbiAgICAgIC8vIG5laXRoZXIgcmVwbGFjZSBpdHMgaWRlbnRpdHkgbm9yIGtlZXAgYSByYXcgZmFpbHVyZSBpbiB0aGUgc2F2ZWQgdHJlZS5cbiAgICAgIGxldCBlc2NhcGVkID0gZmFsc2U7XG4gICAgICBjb25zdCBlc2NhcGUgPSAoaW5kZXg6IG51bWJlciwgZXJyb3I6IHVua25vd24pOiB2b2lkID0+IHtcbiAgICAgICAgaWYgKCFlc2NhcGVkKSB7XG4gICAgICAgICAgZXNjYXBlZCA9IHRydWU7XG4gICAgICAgICAgY29udGV4dC5mYWlsdXJlU3RhdGUuYWRvcHQoY2hpbGRDb250ZXh0c1tpbmRleF0uZmFpbHVyZVN0YXRlLCBlcnJvcik7XG4gICAgICAgIH0gZWxzZSBjaGlsZENvbnRleHRzW2luZGV4XS5mYWlsdXJlU3RhdGUuY29tcGxldGUoKTtcbiAgICAgIH07XG4gICAgICAvLyBGYWlsLWZhc3Q6IGZpcnN0IGNoaWxkIEVSUk9SIHJlamVjdHMgaW1tZWRpYXRlbHkgKHVud3JhcHBlZCkuIEEgcGF1c2VcbiAgICAgIC8vIGlzIG5vdCBhbiBlcnJvcjogaXQgc2V0dGxlcyBsaWtlIGEgcmVzdWx0LCBzbyB0aGUgZm9yayB3YWl0cyBmb3IgaXRzXG4gICAgICAvLyBzaWJsaW5ncyBiZWZvcmUgaXQgcGF1c2VzIOKAlCB0aGVpciB3cml0ZXMgbGFuZCBiZWZvcmUgdGhlIGNoZWNrcG9pbnRcbiAgICAgIC8vIGlzIHRha2VuLCBhbmQgYSBzZWNvbmQgcGF1c2luZyBzaWJsaW5nIGlzIHNlZW4sIG5vdCByYWNlZCBwYXN0LlxuICAgICAgY29uc3QgcmVzdWx0cyA9IGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgICBhbGxDaGlsZHJlbi5tYXAoKGNoaWxkLCBpKSA9PlxuICAgICAgICAgIGNoaWxkUHJvbWlzZXNbaV0udGhlbihcbiAgICAgICAgICAgIChyKSA9PiB7XG4gICAgICAgICAgICAgIGlmIChyLmlzRXJyb3IpIHtcbiAgICAgICAgICAgICAgICBlc2NhcGUoaSwgci5yZXN1bHQpO1xuICAgICAgICAgICAgICAgIHRocm93IHIucmVzdWx0O1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGNoaWxkQ29udGV4dHNbaV0uZmFpbHVyZVN0YXRlLmNvbXBsZXRlKCk7XG4gICAgICAgICAgICAgIHJldHVybiByO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIChlcnJvcjogdW5rbm93bikgPT4ge1xuICAgICAgICAgICAgICBpZiAoIWlzUGF1c2VTaWduYWwoZXJyb3IpKSB7XG4gICAgICAgICAgICAgICAgZXNjYXBlKGksIGVycm9yKTtcbiAgICAgICAgICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBjaGlsZENvbnRleHRzW2ldLmZhaWx1cmVTdGF0ZS5jb21wbGV0ZSgpO1xuICAgICAgICAgICAgICBwYXVzZWRBdFtpXSA9IGVycm9yO1xuICAgICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICApLFxuICAgICAgICApLFxuICAgICAgKTtcbiAgICAgIGZvciAoY29uc3QgciBvZiByZXN1bHRzKSB7XG4gICAgICAgIGlmIChyID09PSB1bmRlZmluZWQpIGNvbnRpbnVlOyAvLyBhIHBhdXNlZCBjaGlsZFxuICAgICAgICBjaGlsZHJlblJlc3VsdHNbci5pZF0gPSB7IGlkOiByLmlkLCByZXN1bHQ6IHIucmVzdWx0LCBpc0Vycm9yOiByLmlzRXJyb3IgPz8gZmFsc2UgfTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgLy8gRGVmYXVsdDogcnVuIGFsbCBjaGlsZHJlbiB0byBjb21wbGV0aW9uIGV2ZW4gaWYgc29tZSBmYWlsXG4gICAgICBjb25zdCBzZXR0bGVkID0gYXdhaXQgUHJvbWlzZS5hbGxTZXR0bGVkKGNoaWxkUHJvbWlzZXMpO1xuICAgICAgc2V0dGxlZC5mb3JFYWNoKChzLCBpKSA9PiB7XG4gICAgICAgIGlmIChzLnN0YXR1cyA9PT0gJ2Z1bGZpbGxlZCcpIHtcbiAgICAgICAgICBjb25zdCB7IGlkLCByZXN1bHQsIGlzRXJyb3IgfSA9IHMudmFsdWU7XG4gICAgICAgICAgY2hpbGRyZW5SZXN1bHRzW2lkXSA9IHsgaWQsIHJlc3VsdCwgaXNFcnJvcjogaXNFcnJvciA/PyBmYWxzZSB9O1xuICAgICAgICB9IGVsc2UgaWYgKGlzUGF1c2VTaWduYWwocy5yZWFzb24pKSB7XG4gICAgICAgICAgLy8gUGF1c2VTaWduYWwgZnJvbSBhIGNoaWxkIOKAlCByZS10aHJvd24gYWZ0ZXIgYWxsIGNoaWxkcmVuIHNldHRsZS5cbiAgICAgICAgICBwYXVzZWRBdFtpXSA9IHMucmVhc29uO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGZhaWx1cmUgPz89IHsgZXJyb3I6IHMucmVhc29uLCBpbmRleDogaSB9O1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIC8vIENvbnRhaW5lZCBlcnJvcnMgYXJlIHJlc3VsdHMsIG5ldmVyIHRoZSBydW4ncyB0ZXJtaW5hbCBjYXVzZS5cbiAgICAgIGlmIChmYWlsdXJlKSBjb250ZXh0LmZhaWx1cmVTdGF0ZS5hZG9wdChjaGlsZENvbnRleHRzW2ZhaWx1cmUuaW5kZXhdLmZhaWx1cmVTdGF0ZSwgZmFpbHVyZS5lcnJvcik7XG4gICAgICBmb3IgKGNvbnN0IGNoaWxkIG9mIGNoaWxkQ29udGV4dHMpIGNoaWxkLmZhaWx1cmVTdGF0ZS5jb21wbGV0ZSgpO1xuICAgIH1cbiAgICBpZiAoZmFpbHVyZSkgdGhyb3cgZmFpbHVyZS5lcnJvcjtcblxuICAgIC8vIFJlLXRocm93IGFmdGVyIGV2ZXJ5IGNoaWxkIGhhcyBzZXR0bGVkLlxuICAgIGNvbnN0IHBhdXNlcyA9IHBhdXNlZEF0LmZpbHRlcigocCk6IHAgaXMgUGF1c2VTaWduYWwgPT4gcCAhPT0gdW5kZWZpbmVkKTtcbiAgICBpZiAocGF1c2VzLmxlbmd0aCA+IDApIHRocm93IHJhaXNlUGF1c2VzKHBhdXNlcyk7XG5cbiAgICByZXR1cm4gY2hpbGRyZW5SZXN1bHRzO1xuICB9XG5cbiAgLyoqXG4gICAqIEV4ZWN1dGUgc2VsZWN0ZWQgY2hpbGRyZW4gYmFzZWQgb24gc2VsZWN0b3IgcmVzdWx0LlxuICAgKiBWYWxpZGF0ZXMgSURzLCByZWNvcmRzIHNlbGVjdGlvbiBpbmZvLCB0aGVuIGRlbGVnYXRlcyB0byBleGVjdXRlTm9kZUNoaWxkcmVuLlxuICAgKi9cbiAgYXN5bmMgZXhlY3V0ZVNlbGVjdGVkQ2hpbGRyZW4oXG4gICAgc2VsZWN0b3I6IFNlbGVjdG9yLFxuICAgIGNoaWxkcmVuOiBTdGFnZU5vZGU8VE91dCwgVFNjb3BlPltdLFxuICAgIGlucHV0OiBhbnksXG4gICAgY29udGV4dDogU3RhZ2VDb250ZXh0LFxuICAgIGJyYW5jaFBhdGg6IHN0cmluZyxcbiAgICB0cmF2ZXJzYWxDb250ZXh0PzogVHJhdmVyc2FsQ29udGV4dCxcbiAgICBmYWlsRmFzdD86IGJvb2xlYW4sXG4gICk6IFByb21pc2U8UmVjb3JkPHN0cmluZywgTm9kZVJlc3VsdFR5cGU+PiB7XG4gICAgY29uc3Qgc2VsZWN0b3JSZXN1bHQgPSBhd2FpdCBzZWxlY3RvcihpbnB1dCk7XG4gICAgY29uc3Qgc2VsZWN0ZWRJZHMgPSBBcnJheS5pc0FycmF5KHNlbGVjdG9yUmVzdWx0KSA/IHNlbGVjdG9yUmVzdWx0IDogW3NlbGVjdG9yUmVzdWx0XTtcblxuICAgIGNvbnRleHQuYWRkTG9nKCdzZWxlY3RlZENoaWxkSWRzJywgc2VsZWN0ZWRJZHMpO1xuICAgIGNvbnRleHQuYWRkTG9nKCdzZWxlY3RvclBhdHRlcm4nLCAnbXVsdGktY2hvaWNlJyk7XG5cbiAgICBpZiAoc2VsZWN0ZWRJZHMubGVuZ3RoID09PSAwKSB7XG4gICAgICBjb250ZXh0LmFkZExvZygnc2tpcHBlZEFsbENoaWxkcmVuJywgdHJ1ZSk7XG4gICAgICByZXR1cm4ge307XG4gICAgfVxuXG4gICAgY29uc3Qgc2VsZWN0ZWRDaGlsZHJlbiA9IGNoaWxkcmVuLmZpbHRlcigoYykgPT4gc2VsZWN0ZWRJZHMuaW5jbHVkZXMoYy5pZCEpKTtcblxuICAgIC8vIFZhbGlkYXRlIGFsbCBJRHMgZXhpc3QgKGZhaWwgZmFzdClcbiAgICBpZiAoc2VsZWN0ZWRDaGlsZHJlbi5sZW5ndGggIT09IHNlbGVjdGVkSWRzLmxlbmd0aCkge1xuICAgICAgY29uc3QgY2hpbGRJZHMgPSBjaGlsZHJlbi5tYXAoKGMpID0+IGMuaWQpO1xuICAgICAgY29uc3QgbWlzc2luZyA9IHNlbGVjdGVkSWRzLmZpbHRlcigoaWQpID0+ICFjaGlsZElkcy5pbmNsdWRlcyhpZCkpO1xuICAgICAgY29uc3QgZXJyb3JNZXNzYWdlID0gYFNlbGVjdG9yIHJldHVybmVkIHVua25vd24gY2hpbGQgSURzOiAke21pc3Npbmcuam9pbignLCAnKX0uIEF2YWlsYWJsZTogJHtjaGlsZElkcy5qb2luKFxuICAgICAgICAnLCAnLFxuICAgICAgKX1gO1xuICAgICAgdGhpcy5kZXBzLmxvZ2dlci5lcnJvcihgRXJyb3IgaW4gcGlwZWxpbmUgKCR7YnJhbmNoUGF0aH0pOmAsIHsgZXJyb3I6IGVycm9yTWVzc2FnZSB9KTtcbiAgICAgIGNvbnRleHQuYWRkRXJyb3IoJ3NlbGVjdG9yRXJyb3InLCBlcnJvck1lc3NhZ2UpO1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGVycm9yTWVzc2FnZSk7XG4gICAgfVxuXG4gICAgY29uc3Qgc2tpcHBlZElkcyA9IGNoaWxkcmVuLmZpbHRlcigoYykgPT4gIXNlbGVjdGVkSWRzLmluY2x1ZGVzKGMuaWQhKSkubWFwKChjKSA9PiBjLmlkKTtcbiAgICBpZiAoc2tpcHBlZElkcy5sZW5ndGggPiAwKSB7XG4gICAgICBjb250ZXh0LmFkZExvZygnc2tpcHBlZENoaWxkSWRzJywgc2tpcHBlZElkcyk7XG4gICAgfVxuXG4gICAgY29uc3Qgc2VsZWN0ZWROYW1lcyA9IHNlbGVjdGVkQ2hpbGRyZW4ubWFwKChjKSA9PiBjLm5hbWUpLmpvaW4oJywgJyk7XG4gICAgY29udGV4dC5hZGRGbG93RGVidWdNZXNzYWdlKFxuICAgICAgJ3NlbGVjdGVkJyxcbiAgICAgIGBSdW5uaW5nICR7c2VsZWN0ZWROYW1lc30gKCR7c2VsZWN0ZWRDaGlsZHJlbi5sZW5ndGh9IG9mICR7Y2hpbGRyZW4ubGVuZ3RofSBtYXRjaGVkKWAsXG4gICAgICB7IGNvdW50OiBzZWxlY3RlZENoaWxkcmVuLmxlbmd0aCwgdGFyZ2V0U3RhZ2U6IHNlbGVjdGVkQ2hpbGRyZW4ubWFwKChjKSA9PiBjLm5hbWUpIH0sXG4gICAgKTtcblxuICAgIC8vIE5hcnJhdGl2ZTogY2FwdHVyZSB0aGUgc2VsZWN0aW9uXG4gICAgY29uc3Qgc2VsZWN0ZWREaXNwbGF5TmFtZXMgPSBzZWxlY3RlZENoaWxkcmVuLm1hcCgoYykgPT4gYy5uYW1lKTtcbiAgICBjb25zdCBzZWxlY3Rvck5hbWUgPSBjb250ZXh0LnN0YWdlTmFtZSB8fCAnc2VsZWN0b3InO1xuICAgIHRoaXMuZGVwcy5uYXJyYXRpdmVHZW5lcmF0b3Iub25TZWxlY3RlZChzZWxlY3Rvck5hbWUsIHNlbGVjdGVkRGlzcGxheU5hbWVzLCBjaGlsZHJlbi5sZW5ndGgsIHRyYXZlcnNhbENvbnRleHQpO1xuICAgIC8vIFByb3Bvc2FsICMwMDM6IGZpcmUgb25TdGFnZUV4ZWN1dGVkIEFGVEVSIHRoZSBzcGVjaWFsaXplZCBldmVudC5cbiAgICB0aGlzLmRlcHMubmFycmF0aXZlR2VuZXJhdG9yLm9uU3RhZ2VFeGVjdXRlZChzZWxlY3Rvck5hbWUsIHVuZGVmaW5lZCwgdHJhdmVyc2FsQ29udGV4dCwgJ3NlbGVjdG9yJyk7XG5cbiAgICBjb25zdCB0ZW1wTm9kZTogU3RhZ2VOb2RlPFRPdXQsIFRTY29wZT4gPSB7XG4gICAgICBuYW1lOiAnc2VsZWN0b3ItdGVtcCcsXG4gICAgICBpZDogJ3NlbGVjdG9yLXRlbXAnLFxuICAgICAgY2hpbGRyZW46IHNlbGVjdGVkQ2hpbGRyZW4sXG4gICAgICAvLyBIb25vciB0aGUgc2VsZWN0b3Igbm9kZSdzIGZhbi1vdXQgZXJyb3IgbW9kZSAoUHJvbWlzZS5hbGwgdnMgYWxsU2V0dGxlZCkuXG4gICAgICBmYWlsRmFzdCxcbiAgICB9O1xuICAgIHJldHVybiBhd2FpdCB0aGlzLmV4ZWN1dGVOb2RlQ2hpbGRyZW4odGVtcE5vZGUsIGNvbnRleHQsIHVuZGVmaW5lZCwgYnJhbmNoUGF0aCwgdHJhdmVyc2FsQ29udGV4dCk7XG4gIH1cbn1cbiJdfQ==
@@ -73,10 +73,11 @@ class DeciderHandler {
73
73
  catch (error) {
74
74
  // PauseSignal is expected control flow — commit and re-throw without error logging.
75
75
  if ((0, types_js_2.isPauseSignal)(error)) {
76
- context.commit();
76
+ (0, commitStage_js_1.commitStageWrites)(context);
77
77
  throw error;
78
78
  }
79
- context.commit();
79
+ (0, stageError_js_1.captureStageFailure)(context, error);
80
+ (0, commitStage_js_1.commitStageWrites)(context);
80
81
  const served = (0, stageError_js_1.recordStageError)(context, error);
81
82
  this.deps.logger.error(`Error in pipeline (${branchPath}) stage [${node.name}]:`, {
82
83
  error: (0, stageError_js_1.loggableStageError)(context, error),
@@ -126,8 +127,11 @@ class DeciderHandler {
126
127
  // so consumers tracking "did this stage run" work uniformly.
127
128
  this.deps.narrativeGenerator.onStageExecuted(node.name, node.description, traversalContext, 'decider');
128
129
  const branchContext = context.createChild(branchPath, chosen.id, chosen.name, chosen.id);
130
+ // An exclusive branch is the same escaping chain, including trampoline hops.
131
+ // Parallel fan-out children keep their own slots instead.
132
+ branchContext.failureState = context.failureState;
129
133
  return { kind: 'dispatch', chosen, branchContext };
130
134
  }
131
135
  }
132
136
  exports.DeciderHandler = DeciderHandler;
133
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGVjaWRlckhhbmRsZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL2VuZ2luZS9oYW5kbGVycy9EZWNpZGVySGFuZGxlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7Ozs7Ozs7Ozs7OztHQWVHOzs7QUFHSCxvREFBd0Q7QUFFeEQsbURBQXFEO0FBSXJELHFEQUErQztBQUMvQyxtREFBdUU7QUFjdkUsTUFBYSxjQUFjO0lBQ0k7SUFBN0IsWUFBNkIsSUFBK0I7UUFBL0IsU0FBSSxHQUFKLElBQUksQ0FBMkI7SUFBRyxDQUFDO0lBRWhFOzs7O09BSUc7SUFDSCxLQUFLLENBQUMsZ0JBQWdCLENBQ3BCLElBQTZCLEVBQzdCLFNBQXNDLEVBQ3RDLE9BQXFCLEVBQ3JCLFNBQW1DLEVBQ25DLFVBQThCLEVBQzlCLFFBQWtDLEVBQ2xDLFdBQXdDLEVBQ3hDLGdCQUFtQztRQUVuQyxNQUFNLFFBQVEsR0FBRyxNQUFNLElBQUksQ0FBQyxlQUFlLENBQ3pDLElBQUksRUFDSixTQUFTLEVBQ1QsT0FBTyxFQUNQLFNBQVMsRUFDVCxVQUFVLEVBQ1YsUUFBUSxFQUNSLGdCQUFnQixDQUNqQixDQUFDO1FBRUYsSUFBSSxRQUFRLENBQUMsSUFBSSxLQUFLLE9BQU8sRUFBRSxDQUFDO1lBQzlCLE9BQU8sUUFBUSxDQUFDLFFBQVEsQ0FBQztRQUMzQixDQUFDO1FBRUQsSUFBSSxDQUFDO1lBQ0gsT0FBTyxNQUFNLFdBQVcsQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQyxhQUFhLEVBQUUsU0FBUyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQzNGLENBQUM7UUFBQyxPQUFPLEtBQWMsRUFBRSxDQUFDO1lBQ3hCLHlEQUF5RDtZQUN6RCwyRUFBMkU7WUFDM0UsSUFBSSxJQUFBLHdCQUFhLEVBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztnQkFDekIsS0FBSyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsRUFB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LFVBQVUsQ0FDckMsSUFBSSxDQUFDLElBQUksRUFDVCxNQUFNLENBQUMsSUFBSSxFQUNYLFNBQVMsRUFDVCxJQUFJLENBQUMsV0FBVyxFQUNoQixnQkFBZ0IsRUFDaEIsZ0JBQWdCLENBQ2pCLENBQUM7UUFDRixrRUFBa0U7UUFDbEUsNkRBQTZEO1FBQzdELElBQUksQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLFdBQVcsRUFBRSxnQkFBZ0IsRUFBRSxTQUFTLENBQUMsQ0FBQztRQUV2RyxNQUFNLGFBQWEsR0FBRyxPQUFPLENBQUMsV0FBVyxDQUFDLFVBQW9CLEVBQUUsTUFBTSxDQUFDLEVBQUUsRUFBRSxNQUFNLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUVuRyxPQUFPLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsYUFBYSxFQUFFLENBQUM7SUFDckQsQ0FBQztDQUNGO0FBL0lELHdDQStJQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogRGVjaWRlckhhbmRsZXIg4oCUIFNpbmdsZS1jaG9pY2UgY29uZGl0aW9uYWwgYnJhbmNoaW5nLlxuICpcbiAqIEhhbmRsZXMgc2NvcGUtYmFzZWQgZGVjaWRlcnMgKHN0YWdlIElTIHRoZSBkZWNpZGVyLCByZXR1cm5zIGJyYW5jaCBJRCkuXG4gKiBMb2dzIGZsb3cgY29udHJvbCBkZWNpc2lvbnMgYW5kIG5hcnJhdGl2ZSBzZW50ZW5jZXMuXG4gKlxuICogVHdvIGVudHJ5IHBvaW50czpcbiAqIC0gYHByZXBhcmVEaXNwYXRjaGAg4oCUIHJ1bnMgdGhlIGRlY2lkZXIgc3RhZ2UsIGNvbW1pdHMsIHJlc29sdmVzIHRoZSBjaG9zZW5cbiAqICAgYnJhbmNoLCBmaXJlcyBuYXJyYXRpdmUsIGFuZCByZXR1cm5zIHRoZSBjaG9zZW4gbm9kZSArIGJyYW5jaCBjb250ZXh0XG4gKiAgIFdJVEhPVVQgZXhlY3V0aW5nIGl0LiBUaGUgdHJhdmVyc2VyJ3MgdHJhbXBvbGluZSBkcml2ZXIgdXNlcyB0aGlzIHNvIGFcbiAqICAgZGVjaWRlciB3aXRoIG5vIGNvbnRpbnVhdGlvbiBvZiBpdHMgb3duIGNhbiBoYW5kIHRoZSBicmFuY2ggdG8gdGhlXG4gKiAgIGRyaXZlciBhcyBhIGZsYXQgaG9wIChsb29wLWhlYXZ5IGRlY2lkZXIgY2hhcnRzIHN0YXkgZmxhdC1zdGFja2VkKS5cbiAqIC0gYGhhbmRsZVNjb3BlQmFzZWRgIOKAlCBwcmVwYXJlRGlzcGF0Y2ggKyBpbW1lZGlhdGUgYnJhbmNoIGV4ZWN1dGlvbiB2aWFcbiAqICAgdGhlIHByb3ZpZGVkIGBleGVjdXRlTm9kZWAgY2FsbGJhY2suIEtlcHQgZm9yIGRpcmVjdC9hZHZhbmNlZCBjYWxsZXJzXG4gKiAgIGFuZCBmb3IgZGVjaWRlcnMgd2hvc2Ugb3duIGAubmV4dGAgbXVzdCBydW4gYWZ0ZXIgdGhlIGJyYW5jaCBjb21wbGV0ZXMuXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBEZWNpc2lvbkV2aWRlbmNlIH0gZnJvbSAnLi4vLi4vZGVjaWRlL3R5cGVzLmpzJztcbmltcG9ydCB7IERFQ0lTSU9OX1JFU1VMVCB9IGZyb20gJy4uLy4uL2RlY2lkZS90eXBlcy5qcyc7XG5pbXBvcnQgdHlwZSB7IFN0YWdlQ29udGV4dCB9IGZyb20gJy4uLy4uL21lbW9yeS9TdGFnZUNvbnRleHQuanMnO1xuaW1wb3J0IHsgaXNQYXVzZVNpZ25hbCB9IGZyb20gJy4uLy4uL3BhdXNlL3R5cGVzLmpzJztcbmltcG9ydCB0eXBlIHsgU3RhZ2VOb2RlIH0gZnJvbSAnLi4vZ3JhcGgvU3RhZ2VOb2RlLmpzJztcbmltcG9ydCB0eXBlIHsgVHJhdmVyc2FsQ29udGV4dCB9IGZyb20gJy4uL25hcnJhdGl2ZS90eXBlcy5qcyc7XG5pbXBvcnQgdHlwZSB7IEhhbmRsZXJEZXBzLCBTdGFnZUZ1bmN0aW9uIH0gZnJvbSAnLi4vdHlwZXMuanMnO1xuaW1wb3J0IHsgY29tbWl0U3RhZ2UgfSBmcm9tICcuL2NvbW1pdFN0YWdlLmpzJztcbmltcG9ydCB7IGxvZ2dhYmxlU3RhZ2VFcnJvciwgcmVjb3JkU3RhZ2VFcnJvciB9IGZyb20gJy4vc3RhZ2VFcnJvci5qcyc7XG5pbXBvcnQgdHlwZSB7IEV4ZWN1dGVOb2RlRm4sIFJ1blN0YWdlRm4gfSBmcm9tICcuL3R5cGVzLmpzJztcblxuZXhwb3J0IHR5cGUgeyBFeGVjdXRlTm9kZUZuLCBSdW5TdGFnZUZuIH07XG5cbi8qKlxuICogUmVzdWx0IG9mIGBwcmVwYXJlRGlzcGF0Y2hgIOKAlCBlaXRoZXIgdGhlIGRlY2lkZXIgc3RhZ2UgYnJva2UgKG5vIGJyYW5jaFxuICogcnVuczsgYGJyYW5jaElkYCBpcyB0aGUgZGVjaWRlcidzIHJldHVybiB2YWx1ZSksIG9yIGEgYnJhbmNoIHdhcyBjaG9zZW5cbiAqIGFuZCBpcyByZWFkeSB0byBleGVjdXRlIGluIGBicmFuY2hDb250ZXh0YC5cbiAqL1xuZXhwb3J0IHR5cGUgRGVjaWRlckRpc3BhdGNoPFRPdXQgPSBhbnksIFRTY29wZSA9IGFueT4gPVxuICB8IHsga2luZDogJ2JyZWFrJzsgYnJhbmNoSWQ6IHN0cmluZyB9XG4gIHwgeyBraW5kOiAnZGlzcGF0Y2gnOyBjaG9zZW46IFN0YWdlTm9kZTxUT3V0LCBUU2NvcGU+OyBicmFuY2hDb250ZXh0OiBTdGFnZUNvbnRleHQgfTtcblxuZXhwb3J0IGNsYXNzIERlY2lkZXJIYW5kbGVyPFRPdXQgPSBhbnksIFRTY29wZSA9IGFueT4ge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IGRlcHM6IEhhbmRsZXJEZXBzPFRPdXQsIFRTY29wZT4pIHt9XG5cbiAgLyoqXG4gICAqIEhhbmRsZSBhIHNjb3BlLWJhc2VkIGRlY2lkZXIgKGNyZWF0ZWQgdmlhIGFkZERlY2lkZXJGdW5jdGlvbikuXG4gICAqIFRoZSBzdGFnZSBmdW5jdGlvbiBJUyB0aGUgZGVjaWRlciDigJQgaXRzIHJldHVybiB2YWx1ZSBpcyB0aGUgYnJhbmNoIElELlxuICAgKiBFeGVjdXRpb24gb3JkZXI6IHJ1blN0YWdlKGZuKSDihpIgY29tbWl0IOKGkiByZXNvbHZlIGNoaWxkIOKGkiBsb2cg4oaSIGV4ZWN1dGVOb2RlKGNoaWxkKS5cbiAgICovXG4gIGFzeW5jIGhhbmRsZVNjb3BlQmFzZWQoXG4gICAgbm9kZTogU3RhZ2VOb2RlPFRPdXQsIFRTY29wZT4sXG4gICAgc3RhZ2VGdW5jOiBTdGFnZUZ1bmN0aW9uPFRPdXQsIFRTY29wZT4sXG4gICAgY29udGV4dDogU3RhZ2VDb250ZXh0LFxuICAgIGJyZWFrRmxhZzogeyBzaG91bGRCcmVhazogYm9vbGVhbiB9LFxuICAgIGJyYW5jaFBhdGg6IHN0cmluZyB8IHVuZGVmaW5lZCxcbiAgICBydW5TdGFnZTogUnVuU3RhZ2VGbjxUT3V0LCBUU2NvcGU+LFxuICAgIGV4ZWN1dGVOb2RlOiBFeGVjdXRlTm9kZUZuPFRPdXQsIFRTY29wZT4sXG4gICAgdHJhdmVyc2FsQ29udGV4dD86IFRyYXZlcnNhbENvbnRleHQsXG4gICk6IFByb21pc2U8YW55PiB7XG4gICAgY29uc3QgZGlzcGF0Y2ggPSBhd2FpdCB0aGlzLnByZXBhcmVEaXNwYXRjaChcbiAgICAgIG5vZGUsXG4gICAgICBzdGFnZUZ1bmMsXG4gICAgICBjb250ZXh0LFxuICAgICAgYnJlYWtGbGFnLFxuICAgICAgYnJhbmNoUGF0aCxcbiAgICAgIHJ1blN0YWdlLFxuICAgICAgdHJhdmVyc2FsQ29udGV4dCxcbiAgICApO1xuXG4gICAgaWYgKGRpc3BhdGNoLmtpbmQgPT09ICdicmVhaycpIHtcbiAgICAgIHJldHVybiBkaXNwYXRjaC5icmFuY2hJZDtcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgcmV0dXJuIGF3YWl0IGV4ZWN1dGVOb2RlKGRpc3BhdGNoLmNob3NlbiwgZGlzcGF0Y2guYnJhbmNoQ29udGV4dCwgYnJlYWtGbGFnLCBicmFuY2hQYXRoKTtcbiAgICB9IGNhdGNoIChlcnJvcjogdW5rbm93bikge1xuICAgICAgLy8gU3RhbXAgaW52b2tlciBjb250ZXh0IG9uIFBhdXNlU2lnbmFsIGR1cmluZyBidWJibGUtdXAuXG4gICAgICAvLyBUaGUgZGVjaWRlciAobm9kZSkgaXMgdGhlIGludm9rZXI7IGl0cyAubmV4dCBpcyB0aGUgY29udGludWF0aW9uIHRhcmdldC5cbiAgICAgIGlmIChpc1BhdXNlU2lnbmFsKGVycm9yKSkge1xuICAgICAgICBlcnJvci5zZXRJbnZva2VyKG5vZGUuaWQhKTtcbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICB9XG4gICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUnVuIHRoZSBkZWNpZGVyIHN0YWdlIGFuZCByZXNvbHZlIHRoZSBjaG9zZW4gYnJhbmNoIFdJVEhPVVQgZXhlY3V0aW5nIGl0LlxuICAgKiBFdmVyeXRoaW5nIHVwIHRvIChhbmQgaW5jbHVkaW5nKSB0aGUgYG9uRGVjaXNpb25gL2BvblN0YWdlRXhlY3V0ZWRgXG4gICAqIG5hcnJhdGl2ZSBhbmQgdGhlIGJyYW5jaCBjb250ZXh0IGNyZWF0aW9uIGhhcHBlbnMgaGVyZSDigJQgb25seSB0aGVcbiAgICogYnJhbmNoIGV4ZWN1dGlvbiBpdHNlbGYgaXMgbGVmdCB0byB0aGUgY2FsbGVyLlxuICAgKi9cbiAgYXN5bmMgcHJlcGFyZURpc3BhdGNoKFxuICAgIG5vZGU6IFN0YWdlTm9kZTxUT3V0LCBUU2NvcGU+LFxuICAgIHN0YWdlRnVuYzogU3RhZ2VGdW5jdGlvbjxUT3V0LCBUU2NvcGU+LFxuICAgIGNvbnRleHQ6IFN0YWdlQ29udGV4dCxcbiAgICBicmVha0ZsYWc6IHsgc2hvdWxkQnJlYWs6IGJvb2xlYW4gfSxcbiAgICBicmFuY2hQYXRoOiBzdHJpbmcgfCB1bmRlZmluZWQsXG4gICAgcnVuU3RhZ2U6IFJ1blN0YWdlRm48VE91dCwgVFNjb3BlPixcbiAgICB0cmF2ZXJzYWxDb250ZXh0PzogVHJhdmVyc2FsQ29udGV4dCxcbiAgKTogUHJvbWlzZTxEZWNpZGVyRGlzcGF0Y2g8VE91dCwgVFNjb3BlPj4ge1xuICAgIGNvbnN0IGJyZWFrRm4gPSAoKSA9PiAoYnJlYWtGbGFnLnNob3VsZEJyZWFrID0gdHJ1ZSk7XG5cbiAgICBsZXQgYnJhbmNoSWQ6IHN0cmluZztcbiAgICBsZXQgZGVjaXNpb25FdmlkZW5jZTogRGVjaXNpb25FdmlkZW5jZSB8IHVuZGVmaW5lZDtcbiAgICB0cnkge1xuICAgICAgY29uc3Qgc3RhZ2VPdXRwdXQgPSBhd2FpdCBydW5TdGFnZShub2RlLCBzdGFnZUZ1bmMsIGNvbnRleHQsIGJyZWFrRm4sIHRyYXZlcnNhbENvbnRleHQpO1xuICAgICAgLy8gRGV0ZWN0IERlY2lzaW9uUmVzdWx0IGZyb20gZGVjaWRlKCkgaGVscGVyIHZpYSBTeW1ib2wgYnJhbmRcbiAgICAgIGlmIChzdGFnZU91dHB1dCAmJiB0eXBlb2Ygc3RhZ2VPdXRwdXQgPT09ICdvYmplY3QnICYmIFJlZmxlY3QuaGFzKHN0YWdlT3V0cHV0IGFzIG9iamVjdCwgREVDSVNJT05fUkVTVUxUKSkge1xuICAgICAgICBicmFuY2hJZCA9IChzdGFnZU91dHB1dCBhcyBhbnkpLmJyYW5jaDtcbiAgICAgICAgZGVjaXNpb25FdmlkZW5jZSA9IChzdGFnZU91dHB1dCBhcyBhbnkpLmV2aWRlbmNlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYnJhbmNoSWQgPSBTdHJpbmcoc3RhZ2VPdXRwdXQpO1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycm9yOiBhbnkpIHtcbiAgICAgIC8vIFBhdXNlU2lnbmFsIGlzIGV4cGVjdGVkIGNvbnRyb2wgZmxvdyDigJQgY29tbWl0IGFuZCByZS10aHJvdyB3aXRob3V0IGVycm9yIGxvZ2dpbmcuXG4gICAgICBpZiAoaXNQYXVzZVNpZ25hbChlcnJvcikpIHtcbiAgICAgICAgY29udGV4dC5jb21taXQoKTtcbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICB9XG4gICAgICBjb250ZXh0LmNvbW1pdCgpO1xuICAgICAgY29uc3Qgc2VydmVkID0gcmVjb3JkU3RhZ2VFcnJvcihjb250ZXh0LCBlcnJvcik7XG4gICAgICB0aGlzLmRlcHMubG9nZ2VyLmVycm9yKGBFcnJvciBpbiBwaXBlbGluZSAoJHticmFuY2hQYXRofSkgc3RhZ2UgWyR7bm9kZS5uYW1lfV06YCwge1xuICAgICAgICBlcnJvcjogbG9nZ2FibGVTdGFnZUVycm9yKGNvbnRleHQsIGVycm9yKSxcbiAgICAgIH0pO1xuICAgICAgdGhpcy5kZXBzLm5hcnJhdGl2ZUdlbmVyYXRvci5vbkVycm9yKG5vZGUubmFtZSwgc2VydmVkLm1lc3NhZ2UsIHNlcnZlZC5zdHJ1Y3R1cmVkRXJyb3IsIHRyYXZlcnNhbENvbnRleHQpO1xuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxuXG4gICAgY29tbWl0U3RhZ2UoY29udGV4dCwgdGhpcy5kZXBzLm5hcnJhdGl2ZUdlbmVyYXRvciwgbm9kZS5uYW1lLCB0cmF2ZXJzYWxDb250ZXh0KTtcblxuICAgIGlmIChicmVha0ZsYWcuc2hvdWxkQnJlYWspIHtcbiAgICAgIHJldHVybiB7IGtpbmQ6ICdicmVhaycsIGJyYW5jaElkIH07XG4gICAgfVxuXG4gICAgLy8gUmVzb2x2ZSBjaGlsZCBieSBtYXRjaGluZyBicmFuY2ggSUQgYWdhaW5zdCBub2RlLmNoaWxkcmVuLlxuICAgIC8vIE1hdGNoIGJyYW5jaElkIGZpcnN0IChvcmlnaW5hbCB1bnByZWZpeGVkIElEKSwgZmFsbCBiYWNrIHRvIGlkIGZvciBiYWNrd2FyZCBjb21wYXQuXG4gICAgY29uc3QgY2hpbGRyZW4gPSBub2RlLmNoaWxkcmVuIGFzIFN0YWdlTm9kZTxUT3V0LCBUU2NvcGU+W107XG4gICAgbGV0IGNob3NlbiA9IGNoaWxkcmVuLmZpbmQoKGNoaWxkKSA9PiAoY2hpbGQuYnJhbmNoSWQgPz8gY2hpbGQuaWQpID09PSBicmFuY2hJZCk7XG5cbiAgICAvLyBGYWxsIGJhY2sgdG8gZGVmYXVsdCBicmFuY2hcbiAgICBpZiAoIWNob3Nlbikge1xuICAgICAgY29uc3QgZGVmYXVsdENoaWxkID0gY2hpbGRyZW4uZmluZCgoY2hpbGQpID0+IChjaGlsZC5icmFuY2hJZCA/PyBjaGlsZC5pZCkgPT09ICdkZWZhdWx0Jyk7XG4gICAgICBpZiAoZGVmYXVsdENoaWxkKSB7XG4gICAgICAgIGNob3NlbiA9IGRlZmF1bHRDaGlsZDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IGVycm9yTWVzc2FnZSA9IGBTY29wZS1iYXNlZCBkZWNpZGVyICcke25vZGUubmFtZX0nIHJldHVybmVkIGJyYW5jaCBJRCAnJHticmFuY2hJZH0nIHdoaWNoIGRvZXNuJ3QgbWF0Y2ggYW55IGNoaWxkIGFuZCBubyBkZWZhdWx0IGJyYW5jaCBpcyBzZXRgO1xuICAgICAgICBjb250ZXh0LmFkZEVycm9yKCdkZWNpZGVyRXJyb3InLCBlcnJvck1lc3NhZ2UpO1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXJyb3JNZXNzYWdlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBjaG9zZW5OYW1lID0gY2hvc2VuLm5hbWU7XG4gICAgY29uc3Qgd2FzRGVmYXVsdCA9IChjaG9zZW4uYnJhbmNoSWQgPz8gY2hvc2VuLmlkKSAhPT0gYnJhbmNoSWQ7XG4gICAgY29uc3QgcmF0aW9uYWxlID0gY29udGV4dC5kZWJ1Zz8ubG9nQ29udGV4dD8uZGVjaWRlclJhdGlvbmFsZSBhcyBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgbGV0IGJyYW5jaFJlYXNvbjogc3RyaW5nO1xuICAgIGlmICh3YXNEZWZhdWx0KSB7XG4gICAgICBicmFuY2hSZWFzb24gPSBgUmV0dXJuZWQgJyR7YnJhbmNoSWR9JyAobm8gbWF0Y2gpLCBmZWxsIGJhY2sgdG8gZGVmYXVsdCDihpIgJHtjaG9zZW5OYW1lfSBwYXRoLmA7XG4gICAgfSBlbHNlIGlmIChyYXRpb25hbGUpIHtcbiAgICAgIGJyYW5jaFJlYXNvbiA9IGBCYXNlZCBvbjogJHtyYXRpb25hbGV9IOKGkiBjaG9zZSAke2Nob3Nlbk5hbWV9IHBhdGguYDtcbiAgICB9IGVsc2Uge1xuICAgICAgYnJhbmNoUmVhc29uID0gYEV2YWx1YXRlZCBzY29wZSBhbmQgcmV0dXJuZWQgJyR7YnJhbmNoSWR9JyDihpIgY2hvc2UgJHtjaG9zZW5OYW1lfSBwYXRoLmA7XG4gICAgfVxuICAgIGNvbnRleHQuYWRkRmxvd0RlYnVnTWVzc2FnZSgnYnJhbmNoJywgYnJhbmNoUmVhc29uLCB7XG4gICAgICB0YXJnZXRTdGFnZTogY2hvc2VuLm5hbWUsXG4gICAgICByYXRpb25hbGU6IHJhdGlvbmFsZSB8fCBgcmV0dXJuZWQgYnJhbmNoSWQ6ICR7YnJhbmNoSWR9YCxcbiAgICB9KTtcblxuICAgIHRoaXMuZGVwcy5uYXJyYXRpdmVHZW5lcmF0b3Iub25EZWNpc2lvbihcbiAgICAgIG5vZGUubmFtZSxcbiAgICAgIGNob3Nlbi5uYW1lLFxuICAgICAgcmF0aW9uYWxlLFxuICAgICAgbm9kZS5kZXNjcmlwdGlvbixcbiAgICAgIHRyYXZlcnNhbENvbnRleHQsXG4gICAgICBkZWNpc2lvbkV2aWRlbmNlLFxuICAgICk7XG4gICAgLy8gUHJvcG9zYWwgIzAwMzogZmlyZSBvblN0YWdlRXhlY3V0ZWQgQUZURVIgdGhlIHNwZWNpYWxpemVkIGV2ZW50XG4gICAgLy8gc28gY29uc3VtZXJzIHRyYWNraW5nIFwiZGlkIHRoaXMgc3RhZ2UgcnVuXCIgd29yayB1bmlmb3JtbHkuXG4gICAgdGhpcy5kZXBzLm5hcnJhdGl2ZUdlbmVyYXRvci5vblN0YWdlRXhlY3V0ZWQobm9kZS5uYW1lLCBub2RlLmRlc2NyaXB0aW9uLCB0cmF2ZXJzYWxDb250ZXh0LCAnZGVjaWRlcicpO1xuXG4gICAgY29uc3QgYnJhbmNoQ29udGV4dCA9IGNvbnRleHQuY3JlYXRlQ2hpbGQoYnJhbmNoUGF0aCBhcyBzdHJpbmcsIGNob3Nlbi5pZCwgY2hvc2VuLm5hbWUsIGNob3Nlbi5pZCk7XG5cbiAgICByZXR1cm4geyBraW5kOiAnZGlzcGF0Y2gnLCBjaG9zZW4sIGJyYW5jaENvbnRleHQgfTtcbiAgfVxufVxuIl19
137
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGVjaWRlckhhbmRsZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL2VuZ2luZS9oYW5kbGVycy9EZWNpZGVySGFuZGxlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7Ozs7Ozs7Ozs7OztHQWVHOzs7QUFHSCxvREFBd0Q7QUFFeEQsbURBQXFEO0FBSXJELHFEQUFrRTtBQUNsRSxtREFBNEY7QUFjNUYsTUFBYSxjQUFjO0lBQ0k7SUFBN0IsWUFBNkIsSUFBK0I7UUFBL0IsU0FBSSxHQUFKLElBQUksQ0FBMkI7SUFBRyxDQUFDO0lBRWhFOzs7O09BSUc7SUFDSCxLQUFLLENBQUMsZ0JBQWdCLENBQ3BCLElBQTZCLEVBQzdCLFNBQXNDLEVBQ3RDLE9BQXFCLEVBQ3JCLFNBQW1DLEVBQ25DLFVBQThCLEVBQzlCLFFBQWtDLEVBQ2xDLFdBQXdDLEVBQ3hDLGdCQUFtQztRQUVuQyxNQUFNLFFBQVEsR0FBRyxNQUFNLElBQUksQ0FBQyxlQUFlLENBQ3pDLElBQUksRUFDSixTQUFTLEVBQ1QsT0FBTyxFQUNQLFNBQVMsRUFDVCxVQUFVLEVBQ1YsUUFBUSxFQUNSLGdCQUFnQixDQUNqQixDQUFDO1FBRUYsSUFBSSxRQUFRLENBQUMsSUFBSSxLQUFLLE9BQU8sRUFBRSxDQUFDO1lBQzlCLE9BQU8sUUFBUSxDQUFDLFFBQVEsQ0FBQztRQUMzQixDQUFDO1FBRUQsSUFBSSxDQUFDO1lBQ0gsT0FBTyxNQUFNLFdBQVcsQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQyxhQUFhLEVBQUUsU0FBUyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQzNGLENBQUM7UUFBQyxPQUFPLEtBQWMsRUFBRSxDQUFDO1lBQ3hCLHlEQUF5RDtZQUN6RCwyRUFBMkU7WUFDM0UsSUFBSSxJQUFBLHdCQUFhLEVBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztnQkFDekIsS0FBSyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsRUFB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UUFBUSxFQUFFO1NBQ3pELENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsVUFBVSxDQUNyQyxJQUFJLENBQUMsSUFBSSxFQUNULE1BQU0sQ0FBQyxJQUFJLEVBQ1gsU0FBUyxFQUNULElBQUksQ0FBQyxXQUFXLEVBQ2hCLGdCQUFnQixFQUNoQixnQkFBZ0IsQ0FDakIsQ0FBQztRQUNGLGtFQUFrRTtRQUNsRSw2REFBNkQ7UUFDN0QsSUFBSSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsV0FBVyxFQUFFLGdCQUFnQixFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBRXZHLE1BQU0sYUFBYSxHQUFHLE9BQU8sQ0FBQyxXQUFXLENBQUMsVUFBb0IsRUFBRSxNQUFNLENBQUMsRUFBRSxFQUFFLE1BQU0sQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ25HLDZFQUE2RTtRQUM3RSwwREFBMEQ7UUFDMUQsYUFBYSxDQUFDLFlBQVksR0FBRyxPQUFPLENBQUMsWUFBWSxDQUFDO1FBRWxELE9BQU8sRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxhQUFhLEVBQUUsQ0FBQztJQUNyRCxDQUFDO0NBQ0Y7QUFuSkQsd0NBbUpDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBEZWNpZGVySGFuZGxlciDigJQgU2luZ2xlLWNob2ljZSBjb25kaXRpb25hbCBicmFuY2hpbmcuXG4gKlxuICogSGFuZGxlcyBzY29wZS1iYXNlZCBkZWNpZGVycyAoc3RhZ2UgSVMgdGhlIGRlY2lkZXIsIHJldHVybnMgYnJhbmNoIElEKS5cbiAqIExvZ3MgZmxvdyBjb250cm9sIGRlY2lzaW9ucyBhbmQgbmFycmF0aXZlIHNlbnRlbmNlcy5cbiAqXG4gKiBUd28gZW50cnkgcG9pbnRzOlxuICogLSBgcHJlcGFyZURpc3BhdGNoYCDigJQgcnVucyB0aGUgZGVjaWRlciBzdGFnZSwgY29tbWl0cywgcmVzb2x2ZXMgdGhlIGNob3NlblxuICogICBicmFuY2gsIGZpcmVzIG5hcnJhdGl2ZSwgYW5kIHJldHVybnMgdGhlIGNob3NlbiBub2RlICsgYnJhbmNoIGNvbnRleHRcbiAqICAgV0lUSE9VVCBleGVjdXRpbmcgaXQuIFRoZSB0cmF2ZXJzZXIncyB0cmFtcG9saW5lIGRyaXZlciB1c2VzIHRoaXMgc28gYVxuICogICBkZWNpZGVyIHdpdGggbm8gY29udGludWF0aW9uIG9mIGl0cyBvd24gY2FuIGhhbmQgdGhlIGJyYW5jaCB0byB0aGVcbiAqICAgZHJpdmVyIGFzIGEgZmxhdCBob3AgKGxvb3AtaGVhdnkgZGVjaWRlciBjaGFydHMgc3RheSBmbGF0LXN0YWNrZWQpLlxuICogLSBgaGFuZGxlU2NvcGVCYXNlZGAg4oCUIHByZXBhcmVEaXNwYXRjaCArIGltbWVkaWF0ZSBicmFuY2ggZXhlY3V0aW9uIHZpYVxuICogICB0aGUgcHJvdmlkZWQgYGV4ZWN1dGVOb2RlYCBjYWxsYmFjay4gS2VwdCBmb3IgZGlyZWN0L2FkdmFuY2VkIGNhbGxlcnNcbiAqICAgYW5kIGZvciBkZWNpZGVycyB3aG9zZSBvd24gYC5uZXh0YCBtdXN0IHJ1biBhZnRlciB0aGUgYnJhbmNoIGNvbXBsZXRlcy5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7IERlY2lzaW9uRXZpZGVuY2UgfSBmcm9tICcuLi8uLi9kZWNpZGUvdHlwZXMuanMnO1xuaW1wb3J0IHsgREVDSVNJT05fUkVTVUxUIH0gZnJvbSAnLi4vLi4vZGVjaWRlL3R5cGVzLmpzJztcbmltcG9ydCB0eXBlIHsgU3RhZ2VDb250ZXh0IH0gZnJvbSAnLi4vLi4vbWVtb3J5L1N0YWdlQ29udGV4dC5qcyc7XG5pbXBvcnQgeyBpc1BhdXNlU2lnbmFsIH0gZnJvbSAnLi4vLi4vcGF1c2UvdHlwZXMuanMnO1xuaW1wb3J0IHR5cGUgeyBTdGFnZU5vZGUgfSBmcm9tICcuLi9ncmFwaC9TdGFnZU5vZGUuanMnO1xuaW1wb3J0IHR5cGUgeyBUcmF2ZXJzYWxDb250ZXh0IH0gZnJvbSAnLi4vbmFycmF0aXZlL3R5cGVzLmpzJztcbmltcG9ydCB0eXBlIHsgSGFuZGxlckRlcHMsIFN0YWdlRnVuY3Rpb24gfSBmcm9tICcuLi90eXBlcy5qcyc7XG5pbXBvcnQgeyBjb21taXRTdGFnZSwgY29tbWl0U3RhZ2VXcml0ZXMgfSBmcm9tICcuL2NvbW1pdFN0YWdlLmpzJztcbmltcG9ydCB7IGNhcHR1cmVTdGFnZUZhaWx1cmUsIGxvZ2dhYmxlU3RhZ2VFcnJvciwgcmVjb3JkU3RhZ2VFcnJvciB9IGZyb20gJy4vc3RhZ2VFcnJvci5qcyc7XG5pbXBvcnQgdHlwZSB7IEV4ZWN1dGVOb2RlRm4sIFJ1blN0YWdlRm4gfSBmcm9tICcuL3R5cGVzLmpzJztcblxuZXhwb3J0IHR5cGUgeyBFeGVjdXRlTm9kZUZuLCBSdW5TdGFnZUZuIH07XG5cbi8qKlxuICogUmVzdWx0IG9mIGBwcmVwYXJlRGlzcGF0Y2hgIOKAlCBlaXRoZXIgdGhlIGRlY2lkZXIgc3RhZ2UgYnJva2UgKG5vIGJyYW5jaFxuICogcnVuczsgYGJyYW5jaElkYCBpcyB0aGUgZGVjaWRlcidzIHJldHVybiB2YWx1ZSksIG9yIGEgYnJhbmNoIHdhcyBjaG9zZW5cbiAqIGFuZCBpcyByZWFkeSB0byBleGVjdXRlIGluIGBicmFuY2hDb250ZXh0YC5cbiAqL1xuZXhwb3J0IHR5cGUgRGVjaWRlckRpc3BhdGNoPFRPdXQgPSBhbnksIFRTY29wZSA9IGFueT4gPVxuICB8IHsga2luZDogJ2JyZWFrJzsgYnJhbmNoSWQ6IHN0cmluZyB9XG4gIHwgeyBraW5kOiAnZGlzcGF0Y2gnOyBjaG9zZW46IFN0YWdlTm9kZTxUT3V0LCBUU2NvcGU+OyBicmFuY2hDb250ZXh0OiBTdGFnZUNvbnRleHQgfTtcblxuZXhwb3J0IGNsYXNzIERlY2lkZXJIYW5kbGVyPFRPdXQgPSBhbnksIFRTY29wZSA9IGFueT4ge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IGRlcHM6IEhhbmRsZXJEZXBzPFRPdXQsIFRTY29wZT4pIHt9XG5cbiAgLyoqXG4gICAqIEhhbmRsZSBhIHNjb3BlLWJhc2VkIGRlY2lkZXIgKGNyZWF0ZWQgdmlhIGFkZERlY2lkZXJGdW5jdGlvbikuXG4gICAqIFRoZSBzdGFnZSBmdW5jdGlvbiBJUyB0aGUgZGVjaWRlciDigJQgaXRzIHJldHVybiB2YWx1ZSBpcyB0aGUgYnJhbmNoIElELlxuICAgKiBFeGVjdXRpb24gb3JkZXI6IHJ1blN0YWdlKGZuKSDihpIgY29tbWl0IOKGkiByZXNvbHZlIGNoaWxkIOKGkiBsb2cg4oaSIGV4ZWN1dGVOb2RlKGNoaWxkKS5cbiAgICovXG4gIGFzeW5jIGhhbmRsZVNjb3BlQmFzZWQoXG4gICAgbm9kZTogU3RhZ2VOb2RlPFRPdXQsIFRTY29wZT4sXG4gICAgc3RhZ2VGdW5jOiBTdGFnZUZ1bmN0aW9uPFRPdXQsIFRTY29wZT4sXG4gICAgY29udGV4dDogU3RhZ2VDb250ZXh0LFxuICAgIGJyZWFrRmxhZzogeyBzaG91bGRCcmVhazogYm9vbGVhbiB9LFxuICAgIGJyYW5jaFBhdGg6IHN0cmluZyB8IHVuZGVmaW5lZCxcbiAgICBydW5TdGFnZTogUnVuU3RhZ2VGbjxUT3V0LCBUU2NvcGU+LFxuICAgIGV4ZWN1dGVOb2RlOiBFeGVjdXRlTm9kZUZuPFRPdXQsIFRTY29wZT4sXG4gICAgdHJhdmVyc2FsQ29udGV4dD86IFRyYXZlcnNhbENvbnRleHQsXG4gICk6IFByb21pc2U8YW55PiB7XG4gICAgY29uc3QgZGlzcGF0Y2ggPSBhd2FpdCB0aGlzLnByZXBhcmVEaXNwYXRjaChcbiAgICAgIG5vZGUsXG4gICAgICBzdGFnZUZ1bmMsXG4gICAgICBjb250ZXh0LFxuICAgICAgYnJlYWtGbGFnLFxuICAgICAgYnJhbmNoUGF0aCxcbiAgICAgIHJ1blN0YWdlLFxuICAgICAgdHJhdmVyc2FsQ29udGV4dCxcbiAgICApO1xuXG4gICAgaWYgKGRpc3BhdGNoLmtpbmQgPT09ICdicmVhaycpIHtcbiAgICAgIHJldHVybiBkaXNwYXRjaC5icmFuY2hJZDtcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgcmV0dXJuIGF3YWl0IGV4ZWN1dGVOb2RlKGRpc3BhdGNoLmNob3NlbiwgZGlzcGF0Y2guYnJhbmNoQ29udGV4dCwgYnJlYWtGbGFnLCBicmFuY2hQYXRoKTtcbiAgICB9IGNhdGNoIChlcnJvcjogdW5rbm93bikge1xuICAgICAgLy8gU3RhbXAgaW52b2tlciBjb250ZXh0IG9uIFBhdXNlU2lnbmFsIGR1cmluZyBidWJibGUtdXAuXG4gICAgICAvLyBUaGUgZGVjaWRlciAobm9kZSkgaXMgdGhlIGludm9rZXI7IGl0cyAubmV4dCBpcyB0aGUgY29udGludWF0aW9uIHRhcmdldC5cbiAgICAgIGlmIChpc1BhdXNlU2lnbmFsKGVycm9yKSkge1xuICAgICAgICBlcnJvci5zZXRJbnZva2VyKG5vZGUuaWQhKTtcbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICB9XG4gICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUnVuIHRoZSBkZWNpZGVyIHN0YWdlIGFuZCByZXNvbHZlIHRoZSBjaG9zZW4gYnJhbmNoIFdJVEhPVVQgZXhlY3V0aW5nIGl0LlxuICAgKiBFdmVyeXRoaW5nIHVwIHRvIChhbmQgaW5jbHVkaW5nKSB0aGUgYG9uRGVjaXNpb25gL2BvblN0YWdlRXhlY3V0ZWRgXG4gICAqIG5hcnJhdGl2ZSBhbmQgdGhlIGJyYW5jaCBjb250ZXh0IGNyZWF0aW9uIGhhcHBlbnMgaGVyZSDigJQgb25seSB0aGVcbiAgICogYnJhbmNoIGV4ZWN1dGlvbiBpdHNlbGYgaXMgbGVmdCB0byB0aGUgY2FsbGVyLlxuICAgKi9cbiAgYXN5bmMgcHJlcGFyZURpc3BhdGNoKFxuICAgIG5vZGU6IFN0YWdlTm9kZTxUT3V0LCBUU2NvcGU+LFxuICAgIHN0YWdlRnVuYzogU3RhZ2VGdW5jdGlvbjxUT3V0LCBUU2NvcGU+LFxuICAgIGNvbnRleHQ6IFN0YWdlQ29udGV4dCxcbiAgICBicmVha0ZsYWc6IHsgc2hvdWxkQnJlYWs6IGJvb2xlYW4gfSxcbiAgICBicmFuY2hQYXRoOiBzdHJpbmcgfCB1bmRlZmluZWQsXG4gICAgcnVuU3RhZ2U6IFJ1blN0YWdlRm48VE91dCwgVFNjb3BlPixcbiAgICB0cmF2ZXJzYWxDb250ZXh0PzogVHJhdmVyc2FsQ29udGV4dCxcbiAgKTogUHJvbWlzZTxEZWNpZGVyRGlzcGF0Y2g8VE91dCwgVFNjb3BlPj4ge1xuICAgIGNvbnN0IGJyZWFrRm4gPSAoKSA9PiAoYnJlYWtGbGFnLnNob3VsZEJyZWFrID0gdHJ1ZSk7XG5cbiAgICBsZXQgYnJhbmNoSWQ6IHN0cmluZztcbiAgICBsZXQgZGVjaXNpb25FdmlkZW5jZTogRGVjaXNpb25FdmlkZW5jZSB8IHVuZGVmaW5lZDtcbiAgICB0cnkge1xuICAgICAgY29uc3Qgc3RhZ2VPdXRwdXQgPSBhd2FpdCBydW5TdGFnZShub2RlLCBzdGFnZUZ1bmMsIGNvbnRleHQsIGJyZWFrRm4sIHRyYXZlcnNhbENvbnRleHQpO1xuICAgICAgLy8gRGV0ZWN0IERlY2lzaW9uUmVzdWx0IGZyb20gZGVjaWRlKCkgaGVscGVyIHZpYSBTeW1ib2wgYnJhbmRcbiAgICAgIGlmIChzdGFnZU91dHB1dCAmJiB0eXBlb2Ygc3RhZ2VPdXRwdXQgPT09ICdvYmplY3QnICYmIFJlZmxlY3QuaGFzKHN0YWdlT3V0cHV0IGFzIG9iamVjdCwgREVDSVNJT05fUkVTVUxUKSkge1xuICAgICAgICBicmFuY2hJZCA9IChzdGFnZU91dHB1dCBhcyBhbnkpLmJyYW5jaDtcbiAgICAgICAgZGVjaXNpb25FdmlkZW5jZSA9IChzdGFnZU91dHB1dCBhcyBhbnkpLmV2aWRlbmNlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYnJhbmNoSWQgPSBTdHJpbmcoc3RhZ2VPdXRwdXQpO1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycm9yOiBhbnkpIHtcbiAgICAgIC8vIFBhdXNlU2lnbmFsIGlzIGV4cGVjdGVkIGNvbnRyb2wgZmxvdyDigJQgY29tbWl0IGFuZCByZS10aHJvdyB3aXRob3V0IGVycm9yIGxvZ2dpbmcuXG4gICAgICBpZiAoaXNQYXVzZVNpZ25hbChlcnJvcikpIHtcbiAgICAgICAgY29tbWl0U3RhZ2VXcml0ZXMoY29udGV4dCk7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgICAgfVxuICAgICAgY2FwdHVyZVN0YWdlRmFpbHVyZShjb250ZXh0LCBlcnJvcik7XG4gICAgICBjb21taXRTdGFnZVdyaXRlcyhjb250ZXh0KTtcbiAgICAgIGNvbnN0IHNlcnZlZCA9IHJlY29yZFN0YWdlRXJyb3IoY29udGV4dCwgZXJyb3IpO1xuICAgICAgdGhpcy5kZXBzLmxvZ2dlci5lcnJvcihgRXJyb3IgaW4gcGlwZWxpbmUgKCR7YnJhbmNoUGF0aH0pIHN0YWdlIFske25vZGUubmFtZX1dOmAsIHtcbiAgICAgICAgZXJyb3I6IGxvZ2dhYmxlU3RhZ2VFcnJvcihjb250ZXh0LCBlcnJvciksXG4gICAgICB9KTtcbiAgICAgIHRoaXMuZGVwcy5uYXJyYXRpdmVHZW5lcmF0b3Iub25FcnJvcihub2RlLm5hbWUsIHNlcnZlZC5tZXNzYWdlLCBzZXJ2ZWQuc3RydWN0dXJlZEVycm9yLCB0cmF2ZXJzYWxDb250ZXh0KTtcbiAgICAgIHRocm93IGVycm9yO1xuICAgIH1cblxuICAgIGNvbW1pdFN0YWdlKGNvbnRleHQsIHRoaXMuZGVwcy5uYXJyYXRpdmVHZW5lcmF0b3IsIG5vZGUubmFtZSwgdHJhdmVyc2FsQ29udGV4dCk7XG5cbiAgICBpZiAoYnJlYWtGbGFnLnNob3VsZEJyZWFrKSB7XG4gICAgICByZXR1cm4geyBraW5kOiAnYnJlYWsnLCBicmFuY2hJZCB9O1xuICAgIH1cblxuICAgIC8vIFJlc29sdmUgY2hpbGQgYnkgbWF0Y2hpbmcgYnJhbmNoIElEIGFnYWluc3Qgbm9kZS5jaGlsZHJlbi5cbiAgICAvLyBNYXRjaCBicmFuY2hJZCBmaXJzdCAob3JpZ2luYWwgdW5wcmVmaXhlZCBJRCksIGZhbGwgYmFjayB0byBpZCBmb3IgYmFja3dhcmQgY29tcGF0LlxuICAgIGNvbnN0IGNoaWxkcmVuID0gbm9kZS5jaGlsZHJlbiBhcyBTdGFnZU5vZGU8VE91dCwgVFNjb3BlPltdO1xuICAgIGxldCBjaG9zZW4gPSBjaGlsZHJlbi5maW5kKChjaGlsZCkgPT4gKGNoaWxkLmJyYW5jaElkID8/IGNoaWxkLmlkKSA9PT0gYnJhbmNoSWQpO1xuXG4gICAgLy8gRmFsbCBiYWNrIHRvIGRlZmF1bHQgYnJhbmNoXG4gICAgaWYgKCFjaG9zZW4pIHtcbiAgICAgIGNvbnN0IGRlZmF1bHRDaGlsZCA9IGNoaWxkcmVuLmZpbmQoKGNoaWxkKSA9PiAoY2hpbGQuYnJhbmNoSWQgPz8gY2hpbGQuaWQpID09PSAnZGVmYXVsdCcpO1xuICAgICAgaWYgKGRlZmF1bHRDaGlsZCkge1xuICAgICAgICBjaG9zZW4gPSBkZWZhdWx0Q2hpbGQ7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBlcnJvck1lc3NhZ2UgPSBgU2NvcGUtYmFzZWQgZGVjaWRlciAnJHtub2RlLm5hbWV9JyByZXR1cm5lZCBicmFuY2ggSUQgJyR7YnJhbmNoSWR9JyB3aGljaCBkb2Vzbid0IG1hdGNoIGFueSBjaGlsZCBhbmQgbm8gZGVmYXVsdCBicmFuY2ggaXMgc2V0YDtcbiAgICAgICAgY29udGV4dC5hZGRFcnJvcignZGVjaWRlckVycm9yJywgZXJyb3JNZXNzYWdlKTtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGVycm9yTWVzc2FnZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgY2hvc2VuTmFtZSA9IGNob3Nlbi5uYW1lO1xuICAgIGNvbnN0IHdhc0RlZmF1bHQgPSAoY2hvc2VuLmJyYW5jaElkID8/IGNob3Nlbi5pZCkgIT09IGJyYW5jaElkO1xuICAgIGNvbnN0IHJhdGlvbmFsZSA9IGNvbnRleHQuZGVidWc/LmxvZ0NvbnRleHQ/LmRlY2lkZXJSYXRpb25hbGUgYXMgc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIGxldCBicmFuY2hSZWFzb246IHN0cmluZztcbiAgICBpZiAod2FzRGVmYXVsdCkge1xuICAgICAgYnJhbmNoUmVhc29uID0gYFJldHVybmVkICcke2JyYW5jaElkfScgKG5vIG1hdGNoKSwgZmVsbCBiYWNrIHRvIGRlZmF1bHQg4oaSICR7Y2hvc2VuTmFtZX0gcGF0aC5gO1xuICAgIH0gZWxzZSBpZiAocmF0aW9uYWxlKSB7XG4gICAgICBicmFuY2hSZWFzb24gPSBgQmFzZWQgb246ICR7cmF0aW9uYWxlfSDihpIgY2hvc2UgJHtjaG9zZW5OYW1lfSBwYXRoLmA7XG4gICAgfSBlbHNlIHtcbiAgICAgIGJyYW5jaFJlYXNvbiA9IGBFdmFsdWF0ZWQgc2NvcGUgYW5kIHJldHVybmVkICcke2JyYW5jaElkfScg4oaSIGNob3NlICR7Y2hvc2VuTmFtZX0gcGF0aC5gO1xuICAgIH1cbiAgICBjb250ZXh0LmFkZEZsb3dEZWJ1Z01lc3NhZ2UoJ2JyYW5jaCcsIGJyYW5jaFJlYXNvbiwge1xuICAgICAgdGFyZ2V0U3RhZ2U6IGNob3Nlbi5uYW1lLFxuICAgICAgcmF0aW9uYWxlOiByYXRpb25hbGUgfHwgYHJldHVybmVkIGJyYW5jaElkOiAke2JyYW5jaElkfWAsXG4gICAgfSk7XG5cbiAgICB0aGlzLmRlcHMubmFycmF0aXZlR2VuZXJhdG9yLm9uRGVjaXNpb24oXG4gICAgICBub2RlLm5hbWUsXG4gICAgICBjaG9zZW4ubmFtZSxcbiAgICAgIHJhdGlvbmFsZSxcbiAgICAgIG5vZGUuZGVzY3JpcHRpb24sXG4gICAgICB0cmF2ZXJzYWxDb250ZXh0LFxuICAgICAgZGVjaXNpb25FdmlkZW5jZSxcbiAgICApO1xuICAgIC8vIFByb3Bvc2FsICMwMDM6IGZpcmUgb25TdGFnZUV4ZWN1dGVkIEFGVEVSIHRoZSBzcGVjaWFsaXplZCBldmVudFxuICAgIC8vIHNvIGNvbnN1bWVycyB0cmFja2luZyBcImRpZCB0aGlzIHN0YWdlIHJ1blwiIHdvcmsgdW5pZm9ybWx5LlxuICAgIHRoaXMuZGVwcy5uYXJyYXRpdmVHZW5lcmF0b3Iub25TdGFnZUV4ZWN1dGVkKG5vZGUubmFtZSwgbm9kZS5kZXNjcmlwdGlvbiwgdHJhdmVyc2FsQ29udGV4dCwgJ2RlY2lkZXInKTtcblxuICAgIGNvbnN0IGJyYW5jaENvbnRleHQgPSBjb250ZXh0LmNyZWF0ZUNoaWxkKGJyYW5jaFBhdGggYXMgc3RyaW5nLCBjaG9zZW4uaWQsIGNob3Nlbi5uYW1lLCBjaG9zZW4uaWQpO1xuICAgIC8vIEFuIGV4Y2x1c2l2ZSBicmFuY2ggaXMgdGhlIHNhbWUgZXNjYXBpbmcgY2hhaW4sIGluY2x1ZGluZyB0cmFtcG9saW5lIGhvcHMuXG4gICAgLy8gUGFyYWxsZWwgZmFuLW91dCBjaGlsZHJlbiBrZWVwIHRoZWlyIG93biBzbG90cyBpbnN0ZWFkLlxuICAgIGJyYW5jaENvbnRleHQuZmFpbHVyZVN0YXRlID0gY29udGV4dC5mYWlsdXJlU3RhdGU7XG5cbiAgICByZXR1cm4geyBraW5kOiAnZGlzcGF0Y2gnLCBjaG9zZW4sIGJyYW5jaENvbnRleHQgfTtcbiAgfVxufVxuIl19