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
@@ -2,11 +2,24 @@
2
2
  /**
3
3
  * DebugRecorder — Development-focused recorder for detailed debugging
4
4
  *
5
- * Captures errors (always), mutations and reads (in verbose mode),
6
- * and stage lifecycle events for troubleshooting.
5
+ * Captures errors (always — a scope recorder's own failure, the scope
6
+ * channel's `onError`; a stage's failure is not one), mutations and reads
7
+ * (in verbose mode), and stage lifecycle events for troubleshooting.
8
+ *
9
+ * Attempts (10.1): one `attempt` row per attempt of a series that retried,
10
+ * gave up or timed out (`recorder/attemptSeries.ts · isRetryEvidence`) — its
11
+ * outcome, category, duration, decision, the cap and time left it ran under
12
+ * (present with a cap or a deadline) and served error — and one `attemptStop`
13
+ * row when the series gave up (exhausted, declined, no time left). Both verbosities: like a
14
+ * pause, an attempt is significant — and for a retried stage these rows are
15
+ * the failure evidence (a stage's error is never an `error` row). They arrive on the FLOW channel
16
+ * (`onAttempt`), so attach with `attachCombinedRecorder` to see them; the
17
+ * flow channel's own `onError` / `onPause` / `onResume` are ignored, so a
18
+ * combined attach never doubles a scope row.
7
19
  */
8
20
  Object.defineProperty(exports, "__esModule", { value: true });
9
21
  exports.DebugRecorder = void 0;
22
+ const attemptSeries_js_1 = require("../../recorder/attemptSeries.js");
10
23
  /**
11
24
  * Each instance gets a unique auto-increment ID (`debug-1`, `debug-2`, ...),
12
25
  * so multiple recorders with different verbosity coexist.
@@ -54,16 +67,9 @@ class DebugRecorder {
54
67
  });
55
68
  }
56
69
  onError(event) {
57
- // The structured fields only — never `raw` (the thrown value itself, which
58
- // may be a function, a Proxy or a cycle), so a snapshot row always
59
- // survives `structuredClone` (9.39.0).
60
- const { message, name, code, issues } = event.error;
61
- const error = {
62
- message,
63
- ...(name !== undefined && { name }),
64
- ...(code !== undefined && { code }),
65
- ...(issues !== undefined && { issues }),
66
- };
70
+ if (fromFlowChannel(event))
71
+ return;
72
+ const error = debugError(event.error);
67
73
  this.entries.push({
68
74
  type: 'error',
69
75
  stageName: event.stageName,
@@ -92,6 +98,8 @@ class DebugRecorder {
92
98
  });
93
99
  }
94
100
  onPause(event) {
101
+ if (fromFlowChannel(event))
102
+ return;
95
103
  // Always log pauses (even in minimal mode — pauses are significant events)
96
104
  this.entries.push({
97
105
  type: 'pause',
@@ -101,6 +109,8 @@ class DebugRecorder {
101
109
  });
102
110
  }
103
111
  onResume(event) {
112
+ if (fromFlowChannel(event))
113
+ return;
104
114
  // Always log resumes (even in minimal mode)
105
115
  this.entries.push({
106
116
  type: 'resume',
@@ -109,6 +119,44 @@ class DebugRecorder {
109
119
  data: { stageId: event.stageId, hasInput: event.hasInput, pipelineId: event.pipelineId },
110
120
  });
111
121
  }
122
+ onAttempt(event) {
123
+ const { record } = event;
124
+ if (!(0, attemptSeries_js_1.isRetryEvidence)(record))
125
+ return;
126
+ const timestamp = record.startedAt + record.durationMs;
127
+ const name = { stageId: event.stageId, series: record.series, attempt: record.attempt, of: record.of };
128
+ this.entries.push({
129
+ type: 'attempt',
130
+ stageName: event.stageName,
131
+ timestamp,
132
+ data: {
133
+ ...name,
134
+ outcome: record.outcome,
135
+ ...(record.category !== undefined && { category: record.category }),
136
+ durationMs: record.durationMs,
137
+ next: record.next,
138
+ reason: record.reason,
139
+ ...(record.retryOnThrew && { retryOnThrew: true }),
140
+ ...(record.delayMs !== undefined && { delayMs: record.delayMs }),
141
+ ...(record.timeoutMs !== undefined && { timeoutMs: record.timeoutMs }),
142
+ ...(record.timeLeftMs !== undefined && { timeLeftMs: record.timeLeftMs }),
143
+ ...(record.error !== undefined && { error: debugError(record.error) }),
144
+ },
145
+ });
146
+ if (!(0, attemptSeries_js_1.gaveUp)(record))
147
+ return;
148
+ this.entries.push({
149
+ type: 'attemptStop',
150
+ stageName: event.stageName,
151
+ timestamp,
152
+ data: {
153
+ ...name,
154
+ reason: record.reason,
155
+ ...(record.category !== undefined && { category: record.category }),
156
+ ...(record.retryOnThrew && { retryOnThrew: true }),
157
+ },
158
+ });
159
+ }
112
160
  getEntries() {
113
161
  return [...this.entries];
114
162
  }
@@ -137,4 +185,22 @@ class DebugRecorder {
137
185
  }
138
186
  }
139
187
  exports.DebugRecorder = DebugRecorder;
140
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGVidWdSZWNvcmRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvc2NvcGUvcmVjb3JkZXJzL0RlYnVnUmVjb3JkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7OztHQUtHOzs7QUE2Qkg7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFDSCxNQUFhLGFBQWE7SUFDaEIsTUFBTSxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUM7SUFFbkIsRUFBRSxDQUFTO0lBQ1gsa0JBQWtCLENBQW9CO0lBQ3ZDLE9BQU8sR0FBaUIsRUFBRSxDQUFDO0lBQzNCLFNBQVMsQ0FBaUI7SUFFbEMsWUFBWSxPQUE4QjtRQUN4QyxJQUFJLENBQUMsRUFBRSxHQUFHLE9BQU8sRUFBRSxFQUFFLElBQUksU0FBUyxFQUFFLGFBQWEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUM3RCxJQUFJLENBQUMsU0FBUyxHQUFHLE9BQU8sRUFBRSxTQUFTLElBQUksU0FBUyxDQUFDO1FBQ2pELElBQUksQ0FBQyxrQkFBa0IsR0FBRyxPQUFPLEVBQUUsa0JBQWtCLElBQUksV0FBVyxDQUFDO0lBQ3ZFLENBQUM7SUFFRCxNQUFNLENBQUMsS0FBZ0I7UUFDckIsSUFBSSxJQUFJLENBQUMsU0FBUyxLQUFLLFNBQVM7WUFBRSxPQUFPO1FBQ3pDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDO1lBQ2hCLElBQUksRUFBRSxNQUFNO1lBQ1osU0FBUyxFQUFFLEtBQUssQ0FBQyxTQUFTO1lBQzFCLFNBQVMsRUFBRSxLQUFLLENBQUMsU0FBUztZQUMxQixJQUFJLEVBQUUsRUFBRSxHQUFHLEVBQUUsS0FBSyxDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLEtBQUssRUFBRSxVQUFVLEVBQUUsS0FBSyxDQUFDLFVBQVUsRUFBRTtTQUMzRSxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsT0FBTyxDQUFDLEtBQWlCO1FBQ3ZCLElBQUksSUFBSSxD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Q0osQ0FBQzs7QUE1SEgsc0NBNkhDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBEZWJ1Z1JlY29yZGVyIOKAlCBEZXZlbG9wbWVudC1mb2N1c2VkIHJlY29yZGVyIGZvciBkZXRhaWxlZCBkZWJ1Z2dpbmdcbiAqXG4gKiBDYXB0dXJlcyBlcnJvcnMgKGFsd2F5cyksIG11dGF0aW9ucyBhbmQgcmVhZHMgKGluIHZlcmJvc2UgbW9kZSksXG4gKiBhbmQgc3RhZ2UgbGlmZWN5Y2xlIGV2ZW50cyBmb3IgdHJvdWJsZXNob290aW5nLlxuICovXG5cbmltcG9ydCB0eXBlIHsgUmVjb3JkZXJPcGVyYXRpb24gfSBmcm9tICcuLi8uLi9yZWNvcmRlci9SZWNvcmRlck9wZXJhdGlvbi5qcyc7XG5pbXBvcnQgdHlwZSB7XG4gIEVycm9yRXZlbnQsXG4gIFBhdXNlRXZlbnQsXG4gIFJlYWRFdmVudCxcbiAgUmVzdW1lRXZlbnQsXG4gIFNjb3BlUmVjb3JkZXIsXG4gIFN0YWdlRXZlbnQsXG4gIFdyaXRlRXZlbnQsXG59IGZyb20gJy4uL3R5cGVzLmpzJztcblxuZXhwb3J0IHR5cGUgRGVidWdWZXJib3NpdHkgPSAnbWluaW1hbCcgfCAndmVyYm9zZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGVidWdFbnRyeSB7XG4gIHR5cGU6ICdyZWFkJyB8ICd3cml0ZScgfCAnZXJyb3InIHwgJ3N0YWdlU3RhcnQnIHwgJ3N0YWdlRW5kJyB8ICdwYXVzZScgfCAncmVzdW1lJztcbiAgc3RhZ2VOYW1lOiBzdHJpbmc7XG4gIHRpbWVzdGFtcDogbnVtYmVyO1xuICBkYXRhOiB1bmtub3duO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERlYnVnUmVjb3JkZXJPcHRpb25zIHtcbiAgaWQ/OiBzdHJpbmc7XG4gIHZlcmJvc2l0eT86IERlYnVnVmVyYm9zaXR5O1xuICAvKiogUHJlZmVycmVkIFVJIG9wZXJhdGlvbi4gRGVmYXVsdHMgdG8gJ3RyYW5zbGF0ZScgKHBlci1zdGVwIGRpYWdub3N0aWMgZGV0YWlsKS4gKi9cbiAgcHJlZmVycmVkT3BlcmF0aW9uPzogUmVjb3JkZXJPcGVyYXRpb247XG59XG5cbi8qKlxuICogRWFjaCBpbnN0YW5jZSBnZXRzIGEgdW5pcXVlIGF1dG8taW5jcmVtZW50IElEIChgZGVidWctMWAsIGBkZWJ1Zy0yYCwgLi4uKSxcbiAqIHNvIG11bHRpcGxlIHJlY29yZGVycyB3aXRoIGRpZmZlcmVudCB2ZXJib3NpdHkgY29leGlzdC5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogLy8gVmVyYm9zZSBkZWJ1ZyBmb3IgZGV2ZWxvcG1lbnRcbiAqIGV4ZWN1dG9yLmF0dGFjaFNjb3BlUmVjb3JkZXIobmV3IERlYnVnUmVjb3JkZXIoeyB2ZXJib3NpdHk6ICd2ZXJib3NlJyB9KSk7XG4gKlxuICogLy8gTWluaW1hbCBkZWJ1ZyBmb3IgcHJvZHVjdGlvbiAoZXJyb3JzIG9ubHkpXG4gKiBleGVjdXRvci5hdHRhY2hTY29wZVJlY29yZGVyKG5ldyBEZWJ1Z1JlY29yZGVyKHsgdmVyYm9zaXR5OiAnbWluaW1hbCcgfSkpO1xuICpcbiAqIC8vIEJvdGggY29leGlzdCDigJQgZGlmZmVyZW50IGF1dG8gSURzXG4gKiBgYGBcbiAqL1xuZXhwb3J0IGNsYXNzIERlYnVnUmVjb3JkZXIgaW1wbGVtZW50cyBTY29wZVJlY29yZGVyIHtcbiAgcHJpdmF0ZSBzdGF0aWMgX2NvdW50ZXIgPSAwO1xuXG4gIHJlYWRvbmx5IGlkOiBzdHJpbmc7XG4gIHJlYWRvbmx5IHByZWZlcnJlZE9wZXJhdGlvbjogUmVjb3JkZXJPcGVyYXRpb247XG4gIHByaXZhdGUgZW50cmllczogRGVidWdFbnRyeVtdID0gW107XG4gIHByaXZhdGUgdmVyYm9zaXR5OiBEZWJ1Z1ZlcmJvc2l0eTtcblxuICBjb25zdHJ1Y3RvcihvcHRpb25zPzogRGVidWdSZWNvcmRlck9wdGlvbnMpIHtcbiAgICB0aGlzLmlkID0gb3B0aW9ucz8uaWQgPz8gYGRlYnVnLSR7KytEZWJ1Z1JlY29yZGVyLl9jb3VudGVyfWA7XG4gICAgdGhpcy52ZXJib3NpdHkgPSBvcHRpb25zPy52ZXJib3NpdHkgPz8gJ3ZlcmJvc2UnO1xuICAgIHRoaXMucHJlZmVycmVkT3BlcmF0aW9uID0gb3B0aW9ucz8ucHJlZmVycmVkT3BlcmF0aW9uID8/ICd0cmFuc2xhdGUnO1xuICB9XG5cbiAgb25SZWFkKGV2ZW50OiBSZWFkRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAodGhpcy52ZXJib3NpdHkgIT09ICd2ZXJib3NlJykgcmV0dXJuO1xuICAgIHRoaXMuZW50cmllcy5wdXNoKHtcbiAgICAgIHR5cGU6ICdyZWFkJyxcbiAgICAgIHN0YWdlTmFtZTogZXZlbnQuc3RhZ2VOYW1lLFxuICAgICAgdGltZXN0YW1wOiBldmVudC50aW1lc3RhbXAsXG4gICAgICBkYXRhOiB7IGtleTogZXZlbnQua2V5LCB2YWx1ZTogZXZlbnQudmFsdWUsIHBpcGVsaW5lSWQ6IGV2ZW50LnBpcGVsaW5lSWQgfSxcbiAgICB9KTtcbiAgfVxuXG4gIG9uV3JpdGUoZXZlbnQ6IFdyaXRlRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAodGhpcy52ZXJib3NpdHkgIT09ICd2ZXJib3NlJykgcmV0dXJuO1xuICAgIHRoaXMuZW50cmllcy5wdXNoKHtcbiAgICAgIHR5cGU6ICd3cml0ZScsXG4gICAgICBzdGFnZU5hbWU6IGV2ZW50LnN0YWdlTmFtZSxcbiAgICAgIHRpbWVzdGFtcDogZXZlbnQudGltZXN0YW1wLFxuICAgICAgZGF0YTogeyBrZXk6IGV2ZW50LmtleSwgdmFsdWU6IGV2ZW50LnZhbHVlLCBvcGVyYXRpb246IGV2ZW50Lm9wZXJhdGlvbiwgcGlwZWxpbmVJZDogZXZlbnQucGlwZWxpbmVJZCB9LFxuICAgIH0pO1xuICB9XG5cbiAgb25FcnJvcihldmVudDogRXJyb3JFdmVudCk6IHZvaWQge1xuICAgIC8vIFRoZSBzdHJ1Y3R1cmVkIGZpZWxkcyBvbmx5IOKAlCBuZXZlciBgcmF3YCAodGhlIHRocm93biB2YWx1ZSBpdHNlbGYsIHdoaWNoXG4gICAgLy8gbWF5IGJlIGEgZnVuY3Rpb24sIGEgUHJveHkgb3IgYSBjeWNsZSksIHNvIGEgc25hcHNob3Qgcm93IGFsd2F5c1xuICAgIC8vIHN1cnZpdmVzIGBzdHJ1Y3R1cmVkQ2xvbmVgICg5LjM5LjApLlxuICAgIGNvbnN0IHsgbWVzc2FnZSwgbmFtZSwgY29kZSwgaXNzdWVzIH0gPSBldmVudC5lcnJvcjtcbiAgICBjb25zdCBlcnJvciA9IHtcbiAgICAgIG1lc3NhZ2UsXG4gICAgICAuLi4obmFtZSAhPT0gdW5kZWZpbmVkICYmIHsgbmFtZSB9KSxcbiAgICAgIC4uLihjb2RlICE9PSB1bmRlZmluZWQgJiYgeyBjb2RlIH0pLFxuICAgICAgLi4uKGlzc3VlcyAhPT0gdW5kZWZpbmVkICYmIHsgaXNzdWVzIH0pLFxuICAgIH07XG4gICAgdGhpcy5lbnRyaWVzLnB1c2goe1xuICAgICAgdHlwZTogJ2Vycm9yJyxcbiAgICAgIHN0YWdlTmFtZTogZXZlbnQuc3RhZ2VOYW1lLFxuICAgICAgdGltZXN0YW1wOiBldmVudC50aW1lc3RhbXAsXG4gICAgICBkYXRhOiB7IGVycm9yLCBvcGVyYXRpb246IGV2ZW50Lm9wZXJhdGlvbiwga2V5OiBldmVudC5rZXksIHBpcGVsaW5lSWQ6IGV2ZW50LnBpcGVsaW5lSWQgfSxcbiAgICB9KTtcbiAgfVxuXG4gIG9uU3RhZ2VTdGFydChldmVudDogU3RhZ2VFdmVudCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnZlcmJvc2l0eSAhPT0gJ3ZlcmJvc2UnKSByZXR1cm47XG4gICAgdGhpcy5lbnRyaWVzLnB1c2goe1xuICAgICAgdHlwZTogJ3N0YWdlU3RhcnQnLFxuICAgICAgc3RhZ2VOYW1lOiBldmVudC5zdGFnZU5hbWUsXG4gICAgICB0aW1lc3RhbXA6IGV2ZW50LnRpbWVzdGFtcCxcbiAgICAgIGRhdGE6IHsgcGlwZWxpbmVJZDogZXZlbnQucGlwZWxpbmVJZCB9LFxuICAgIH0pO1xuICB9XG5cbiAgb25TdGFnZUVuZChldmVudDogU3RhZ2VFdmVudCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnZlcmJvc2l0eSAhPT0gJ3ZlcmJvc2UnKSByZXR1cm47XG4gICAgdGhpcy5lbnRyaWVzLnB1c2goe1xuICAgICAgdHlwZTogJ3N0YWdlRW5kJyxcbiAgICAgIHN0YWdlTmFtZTogZXZlbnQuc3RhZ2VOYW1lLFxuICAgICAgdGltZXN0YW1wOiBldmVudC50aW1lc3RhbXAsXG4gICAgICBkYXRhOiB7IHBpcGVsaW5lSWQ6IGV2ZW50LnBpcGVsaW5lSWQsIGR1cmF0aW9uOiBldmVudC5kdXJhdGlvbiB9LFxuICAgIH0pO1xuICB9XG5cbiAgb25QYXVzZShldmVudDogUGF1c2VFdmVudCk6IHZvaWQge1xuICAgIC8vIEFsd2F5cyBsb2cgcGF1c2VzIChldmVuIGluIG1pbmltYWwgbW9kZSDigJQgcGF1c2VzIGFyZSBzaWduaWZpY2FudCBldmVudHMpXG4gICAgdGhpcy5lbnRyaWVzLnB1c2goe1xuICAgICAgdHlwZTogJ3BhdXNlJyxcbiAgICAgIHN0YWdlTmFtZTogZXZlbnQuc3RhZ2VOYW1lLFxuICAgICAgdGltZXN0YW1wOiBldmVudC50aW1lc3RhbXAsXG4gICAgICBkYXRhOiB7IHN0YWdlSWQ6IGV2ZW50LnN0YWdlSWQsIHBhdXNlRGF0YTogZXZlbnQucGF1c2VEYXRhLCBwaXBlbGluZUlkOiBldmVudC5waXBlbGluZUlkIH0sXG4gICAgfSk7XG4gIH1cblxuICBvblJlc3VtZShldmVudDogUmVzdW1lRXZlbnQpOiB2b2lkIHtcbiAgICAvLyBBbHdheXMgbG9nIHJlc3VtZXMgKGV2ZW4gaW4gbWluaW1hbCBtb2RlKVxuICAgIHRoaXMuZW50cmllcy5wdXNoKHtcbiAgICAgIHR5cGU6ICdyZXN1bWUnLFxuICAgICAgc3RhZ2VOYW1lOiBldmVudC5zdGFnZU5hbWUsXG4gICAgICB0aW1lc3RhbXA6IGV2ZW50LnRpbWVzdGFtcCxcbiAgICAgIGRhdGE6IHsgc3RhZ2VJZDogZXZlbnQuc3RhZ2VJZCwgaGFzSW5wdXQ6IGV2ZW50Lmhhc0lucHV0LCBwaXBlbGluZUlkOiBldmVudC5waXBlbGluZUlkIH0sXG4gICAgfSk7XG4gIH1cblxuICBnZXRFbnRyaWVzKCk6IERlYnVnRW50cnlbXSB7XG4gICAgcmV0dXJuIFsuLi50aGlzLmVudHJpZXNdO1xuICB9XG5cbiAgZ2V0RXJyb3JzKCk6IERlYnVnRW50cnlbXSB7XG4gICAgcmV0dXJuIHRoaXMuZW50cmllcy5maWx0ZXIoKGUpID0+IGUudHlwZSA9PT0gJ2Vycm9yJyk7XG4gIH1cblxuICBnZXRFbnRyaWVzRm9yU3RhZ2Uoc3RhZ2VOYW1lOiBzdHJpbmcpOiBEZWJ1Z0VudHJ5W10ge1xuICAgIHJldHVybiB0aGlzLmVudHJpZXMuZmlsdGVyKChlKSA9PiBlLnN0YWdlTmFtZSA9PT0gc3RhZ2VOYW1lKTtcbiAgfVxuXG4gIHNldFZlcmJvc2l0eShsZXZlbDogRGVidWdWZXJib3NpdHkpOiB2b2lkIHtcbiAgICB0aGlzLnZlcmJvc2l0eSA9IGxldmVsO1xuICB9XG5cbiAgZ2V0VmVyYm9zaXR5KCk6IERlYnVnVmVyYm9zaXR5IHtcbiAgICByZXR1cm4gdGhpcy52ZXJib3NpdHk7XG4gIH1cblxuICBjbGVhcigpOiB2b2lkIHtcbiAgICB0aGlzLmVudHJpZXMgPSBbXTtcbiAgfVxuXG4gIHRvU25hcHNob3QoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG5hbWU6ICdEZWJ1ZycsXG4gICAgICBkZXNjcmlwdGlvbjogJ1RyYW5zbGF0b3IgKFNjb3BlIFNjb3BlUmVjb3JkZXIpIOKAlCBwZXItc3RhZ2UgZGlhZ25vc3RpYyBlbnRyaWVzJyxcbiAgICAgIHByZWZlcnJlZE9wZXJhdGlvbjogdGhpcy5wcmVmZXJyZWRPcGVyYXRpb24sXG4gICAgICBkYXRhOiB0aGlzLmVudHJpZXMsXG4gICAgfTtcbiAgfVxufVxuIl19
188
+ /**
189
+ * The structured fields only — never `raw` (the thrown value itself, which may be a function, a Proxy or a cycle),
190
+ * so a snapshot row always survives `structuredClone` (9.39.0). An attempt's error is already the served form
191
+ * (`AttemptRecord.error`, the run's redaction rule applied), so a redacted stage error reads redacted here too.
192
+ */
193
+ function debugError(info) {
194
+ const { message, name, code, issues } = info;
195
+ return {
196
+ message,
197
+ ...(name !== undefined && { name }),
198
+ ...(code !== undefined && { code }),
199
+ ...(issues !== undefined && { issues }),
200
+ };
201
+ }
202
+ /** A shared-name hook (`onError` / `onPause` / `onResume`) delivered on the flow channel of a combined attach. */
203
+ function fromFlowChannel(event) {
204
+ return event.channel === 'flow';
205
+ }
206
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGVidWdSZWNvcmRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvc2NvcGUvcmVjb3JkZXJzL0RlYnVnUmVjb3JkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7Ozs7Ozs7Ozs7OztHQWlCRzs7O0FBSUgsc0VBQTBFO0FBNEIxRTs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUNILE1BQWEsYUFBYTtJQUNoQixNQUFNLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQztJQUVuQixFQUFFLENBQVM7SUFDWCxrQkFBa0IsQ0FBb0I7SUFDdkMsT0FBTyxHQUFpQixFQUFFLENBQUM7SUFDM0IsU0FBUyxDQUFpQjtJQUVsQyxZQUFZLE9BQThCO1FBQ3hDLElBQUksQ0FBQyxFQUFFLEdBQUcsT0FBTyxFQUFFLEVBQUUsSUFBSSxTQUFTLEVBQUUsYUFBYSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQzdELElBQUksQ0FBQyxTQUFTLEdBQUcsT0FBTyxFQUFFLFNBQVMsSUFBSSxTQUFTLENBQUM7UUFDakQsSUFBSSxDQUFDLGtCQUFrQixHQUFHLE9BQU8sRUFBRSxrQkFBa0IsSUFBSSxXQUFXLENBQUM7SUFDdkUsQ0FBQztJQUVELE1BQU0sQ0FBQyxLQUFnQjtRQUNyQixJQUFJLElBQUksQ0FBQyxTQUFTLEtBQUssU0FBUztZQUFFLE9BQU87UUFDekMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUM7WUFDaEIsSUFBSSxFQUFFLE1BQU07WUFDWixTQUFTLEVBQUUsS0FBSyxDQUFDLFNBQVM7WUFDMUIsU0FBUyxFQUFFLEtBQUssQ0FBQyxTQUFTO1lBQzFCLElBQUksRUFBRSxFQUFFLEdBQUcsRUFBRSxLQUFLLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsS0FBSyxFQUFFLFVBQVUsRUFBRSxLQUFLLENBQUMsVUFBVSxFQUFFO1NBQzNFLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxPQUFPLENB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S0FBSyxNQUFNLENBQUM7QUFDbEMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogRGVidWdSZWNvcmRlciDigJQgRGV2ZWxvcG1lbnQtZm9jdXNlZCByZWNvcmRlciBmb3IgZGV0YWlsZWQgZGVidWdnaW5nXG4gKlxuICogQ2FwdHVyZXMgZXJyb3JzIChhbHdheXMg4oCUIGEgc2NvcGUgcmVjb3JkZXIncyBvd24gZmFpbHVyZSwgdGhlIHNjb3BlXG4gKiBjaGFubmVsJ3MgYG9uRXJyb3JgOyBhIHN0YWdlJ3MgZmFpbHVyZSBpcyBub3Qgb25lKSwgbXV0YXRpb25zIGFuZCByZWFkc1xuICogKGluIHZlcmJvc2UgbW9kZSksIGFuZCBzdGFnZSBsaWZlY3ljbGUgZXZlbnRzIGZvciB0cm91Ymxlc2hvb3RpbmcuXG4gKlxuICogQXR0ZW1wdHMgKDEwLjEpOiBvbmUgYGF0dGVtcHRgIHJvdyBwZXIgYXR0ZW1wdCBvZiBhIHNlcmllcyB0aGF0IHJldHJpZWQsXG4gKiBnYXZlIHVwIG9yIHRpbWVkIG91dCAoYHJlY29yZGVyL2F0dGVtcHRTZXJpZXMudHMgwrcgaXNSZXRyeUV2aWRlbmNlYCkg4oCUIGl0c1xuICogb3V0Y29tZSwgY2F0ZWdvcnksIGR1cmF0aW9uLCBkZWNpc2lvbiwgdGhlIGNhcCBhbmQgdGltZSBsZWZ0IGl0IHJhbiB1bmRlclxuICogKHByZXNlbnQgd2l0aCBhIGNhcCBvciBhIGRlYWRsaW5lKSBhbmQgc2VydmVkIGVycm9yIOKAlCBhbmQgb25lIGBhdHRlbXB0U3RvcGBcbiAqIHJvdyB3aGVuIHRoZSBzZXJpZXMgZ2F2ZSB1cCAoZXhoYXVzdGVkLCBkZWNsaW5lZCwgbm8gdGltZSBsZWZ0KS4gQm90aCB2ZXJib3NpdGllczogbGlrZSBhXG4gKiBwYXVzZSwgYW4gYXR0ZW1wdCBpcyBzaWduaWZpY2FudCDigJQgYW5kIGZvciBhIHJldHJpZWQgc3RhZ2UgdGhlc2Ugcm93cyBhcmVcbiAqIHRoZSBmYWlsdXJlIGV2aWRlbmNlIChhIHN0YWdlJ3MgZXJyb3IgaXMgbmV2ZXIgYW4gYGVycm9yYCByb3cpLiBUaGV5IGFycml2ZSBvbiB0aGUgRkxPVyBjaGFubmVsXG4gKiAoYG9uQXR0ZW1wdGApLCBzbyBhdHRhY2ggd2l0aCBgYXR0YWNoQ29tYmluZWRSZWNvcmRlcmAgdG8gc2VlIHRoZW07IHRoZVxuICogZmxvdyBjaGFubmVsJ3Mgb3duIGBvbkVycm9yYCAvIGBvblBhdXNlYCAvIGBvblJlc3VtZWAgYXJlIGlnbm9yZWQsIHNvIGFcbiAqIGNvbWJpbmVkIGF0dGFjaCBuZXZlciBkb3VibGVzIGEgc2NvcGUgcm93LlxuICovXG5cbmltcG9ydCB0eXBlIHsgQXR0ZW1wdFJlY29yZCB9IGZyb20gJy4uLy4uL2F0dGVtcHQvdHlwZXMuanMnO1xuaW1wb3J0IHR5cGUgeyBGbG93QXR0ZW1wdEV2ZW50IH0gZnJvbSAnLi4vLi4vZW5naW5lL25hcnJhdGl2ZS90eXBlcy5qcyc7XG5pbXBvcnQgeyBnYXZlVXAsIGlzUmV0cnlFdmlkZW5jZSB9IGZyb20gJy4uLy4uL3JlY29yZGVyL2F0dGVtcHRTZXJpZXMuanMnO1xuaW1wb3J0IHR5cGUgeyBSZWNvcmRlck9wZXJhdGlvbiB9IGZyb20gJy4uLy4uL3JlY29yZGVyL1JlY29yZGVyT3BlcmF0aW9uLmpzJztcbmltcG9ydCB0eXBlIHtcbiAgRXJyb3JFdmVudCxcbiAgUGF1c2VFdmVudCxcbiAgUmVhZEV2ZW50LFxuICBSZXN1bWVFdmVudCxcbiAgU2NvcGVSZWNvcmRlcixcbiAgU3RhZ2VFdmVudCxcbiAgV3JpdGVFdmVudCxcbn0gZnJvbSAnLi4vdHlwZXMuanMnO1xuXG5leHBvcnQgdHlwZSBEZWJ1Z1ZlcmJvc2l0eSA9ICdtaW5pbWFsJyB8ICd2ZXJib3NlJztcblxuZXhwb3J0IGludGVyZmFjZSBEZWJ1Z0VudHJ5IHtcbiAgdHlwZTogJ3JlYWQnIHwgJ3dyaXRlJyB8ICdlcnJvcicgfCAnc3RhZ2VTdGFydCcgfCAnc3RhZ2VFbmQnIHwgJ3BhdXNlJyB8ICdyZXN1bWUnIHwgJ2F0dGVtcHQnIHwgJ2F0dGVtcHRTdG9wJztcbiAgc3RhZ2VOYW1lOiBzdHJpbmc7XG4gIHRpbWVzdGFtcDogbnVtYmVyO1xuICBkYXRhOiB1bmtub3duO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERlYnVnUmVjb3JkZXJPcHRpb25zIHtcbiAgaWQ/OiBzdHJpbmc7XG4gIHZlcmJvc2l0eT86IERlYnVnVmVyYm9zaXR5O1xuICAvKiogUHJlZmVycmVkIFVJIG9wZXJhdGlvbi4gRGVmYXVsdHMgdG8gJ3RyYW5zbGF0ZScgKHBlci1zdGVwIGRpYWdub3N0aWMgZGV0YWlsKS4gKi9cbiAgcHJlZmVycmVkT3BlcmF0aW9uPzogUmVjb3JkZXJPcGVyYXRpb247XG59XG5cbi8qKlxuICogRWFjaCBpbnN0YW5jZSBnZXRzIGEgdW5pcXVlIGF1dG8taW5jcmVtZW50IElEIChgZGVidWctMWAsIGBkZWJ1Zy0yYCwgLi4uKSxcbiAqIHNvIG11bHRpcGxlIHJlY29yZGVycyB3aXRoIGRpZmZlcmVudCB2ZXJib3NpdHkgY29leGlzdC5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogLy8gVmVyYm9zZSBkZWJ1ZyBmb3IgZGV2ZWxvcG1lbnRcbiAqIGV4ZWN1dG9yLmF0dGFjaFNjb3BlUmVjb3JkZXIobmV3IERlYnVnUmVjb3JkZXIoeyB2ZXJib3NpdHk6ICd2ZXJib3NlJyB9KSk7XG4gKlxuICogLy8gTWluaW1hbCBkZWJ1ZyBmb3IgcHJvZHVjdGlvbiAoZXJyb3JzIG9ubHkpXG4gKiBleGVjdXRvci5hdHRhY2hTY29wZVJlY29yZGVyKG5ldyBEZWJ1Z1JlY29yZGVyKHsgdmVyYm9zaXR5OiAnbWluaW1hbCcgfSkpO1xuICpcbiAqIC8vIEJvdGggY29leGlzdCDigJQgZGlmZmVyZW50IGF1dG8gSURzXG4gKiBgYGBcbiAqL1xuZXhwb3J0IGNsYXNzIERlYnVnUmVjb3JkZXIgaW1wbGVtZW50cyBTY29wZVJlY29yZGVyIHtcbiAgcHJpdmF0ZSBzdGF0aWMgX2NvdW50ZXIgPSAwO1xuXG4gIHJlYWRvbmx5IGlkOiBzdHJpbmc7XG4gIHJlYWRvbmx5IHByZWZlcnJlZE9wZXJhdGlvbjogUmVjb3JkZXJPcGVyYXRpb247XG4gIHByaXZhdGUgZW50cmllczogRGVidWdFbnRyeVtdID0gW107XG4gIHByaXZhdGUgdmVyYm9zaXR5OiBEZWJ1Z1ZlcmJvc2l0eTtcblxuICBjb25zdHJ1Y3RvcihvcHRpb25zPzogRGVidWdSZWNvcmRlck9wdGlvbnMpIHtcbiAgICB0aGlzLmlkID0gb3B0aW9ucz8uaWQgPz8gYGRlYnVnLSR7KytEZWJ1Z1JlY29yZGVyLl9jb3VudGVyfWA7XG4gICAgdGhpcy52ZXJib3NpdHkgPSBvcHRpb25zPy52ZXJib3NpdHkgPz8gJ3ZlcmJvc2UnO1xuICAgIHRoaXMucHJlZmVycmVkT3BlcmF0aW9uID0gb3B0aW9ucz8ucHJlZmVycmVkT3BlcmF0aW9uID8/ICd0cmFuc2xhdGUnO1xuICB9XG5cbiAgb25SZWFkKGV2ZW50OiBSZWFkRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAodGhpcy52ZXJib3NpdHkgIT09ICd2ZXJib3NlJykgcmV0dXJuO1xuICAgIHRoaXMuZW50cmllcy5wdXNoKHtcbiAgICAgIHR5cGU6ICdyZWFkJyxcbiAgICAgIHN0YWdlTmFtZTogZXZlbnQuc3RhZ2VOYW1lLFxuICAgICAgdGltZXN0YW1wOiBldmVudC50aW1lc3RhbXAsXG4gICAgICBkYXRhOiB7IGtleTogZXZlbnQua2V5LCB2YWx1ZTogZXZlbnQudmFsdWUsIHBpcGVsaW5lSWQ6IGV2ZW50LnBpcGVsaW5lSWQgfSxcbiAgICB9KTtcbiAgfVxuXG4gIG9uV3JpdGUoZXZlbnQ6IFdyaXRlRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAodGhpcy52ZXJib3NpdHkgIT09ICd2ZXJib3NlJykgcmV0dXJuO1xuICAgIHRoaXMuZW50cmllcy5wdXNoKHtcbiAgICAgIHR5cGU6ICd3cml0ZScsXG4gICAgICBzdGFnZU5hbWU6IGV2ZW50LnN0YWdlTmFtZSxcbiAgICAgIHRpbWVzdGFtcDogZXZlbnQudGltZXN0YW1wLFxuICAgICAgZGF0YTogeyBrZXk6IGV2ZW50LmtleSwgdmFsdWU6IGV2ZW50LnZhbHVlLCBvcGVyYXRpb246IGV2ZW50Lm9wZXJhdGlvbiwgcGlwZWxpbmVJZDogZXZlbnQucGlwZWxpbmVJZCB9LFxuICAgIH0pO1xuICB9XG5cbiAgb25FcnJvcihldmVudDogRXJyb3JFdmVudCk6IHZvaWQge1xuICAgIGlmIChmcm9tRmxvd0NoYW5uZWwoZXZlbnQpKSByZXR1cm47XG4gICAgY29uc3QgZXJyb3IgPSBkZWJ1Z0Vycm9yKGV2ZW50LmVycm9yKTtcbiAgICB0aGlzLmVudHJpZXMucHVzaCh7XG4gICAgICB0eXBlOiAnZXJyb3InLFxuICAgICAgc3RhZ2VOYW1lOiBldmVudC5zdGFnZU5hbWUsXG4gICAgICB0aW1lc3RhbXA6IGV2ZW50LnRpbWVzdGFtcCxcbiAgICAgIGRhdGE6IHsgZXJyb3IsIG9wZXJhdGlvbjogZXZlbnQub3BlcmF0aW9uLCBrZXk6IGV2ZW50LmtleSwgcGlwZWxpbmVJZDogZXZlbnQucGlwZWxpbmVJZCB9LFxuICAgIH0pO1xuICB9XG5cbiAgb25TdGFnZVN0YXJ0KGV2ZW50OiBTdGFnZUV2ZW50KTogdm9pZCB7XG4gICAgaWYgKHRoaXMudmVyYm9zaXR5ICE9PSAndmVyYm9zZScpIHJldHVybjtcbiAgICB0aGlzLmVudHJpZXMucHVzaCh7XG4gICAgICB0eXBlOiAnc3RhZ2VTdGFydCcsXG4gICAgICBzdGFnZU5hbWU6IGV2ZW50LnN0YWdlTmFtZSxcbiAgICAgIHRpbWVzdGFtcDogZXZlbnQudGltZXN0YW1wLFxuICAgICAgZGF0YTogeyBwaXBlbGluZUlkOiBldmVudC5waXBlbGluZUlkIH0sXG4gICAgfSk7XG4gIH1cblxuICBvblN0YWdlRW5kKGV2ZW50OiBTdGFnZUV2ZW50KTogdm9pZCB7XG4gICAgaWYgKHRoaXMudmVyYm9zaXR5ICE9PSAndmVyYm9zZScpIHJldHVybjtcbiAgICB0aGlzLmVudHJpZXMucHVzaCh7XG4gICAgICB0eXBlOiAnc3RhZ2VFbmQnLFxuICAgICAgc3RhZ2VOYW1lOiBldmVudC5zdGFnZU5hbWUsXG4gICAgICB0aW1lc3RhbXA6IGV2ZW50LnRpbWVzdGFtcCxcbiAgICAgIGRhdGE6IHsgcGlwZWxpbmVJZDogZXZlbnQucGlwZWxpbmVJZCwgZHVyYXRpb246IGV2ZW50LmR1cmF0aW9uIH0sXG4gICAgfSk7XG4gIH1cblxuICBvblBhdXNlKGV2ZW50OiBQYXVzZUV2ZW50KTogdm9pZCB7XG4gICAgaWYgKGZyb21GbG93Q2hhbm5lbChldmVudCkpIHJldHVybjtcbiAgICAvLyBBbHdheXMgbG9nIHBhdXNlcyAoZXZlbiBpbiBtaW5pbWFsIG1vZGUg4oCUIHBhdXNlcyBhcmUgc2lnbmlmaWNhbnQgZXZlbnRzKVxuICAgIHRoaXMuZW50cmllcy5wdXNoKHtcbiAgICAgIHR5cGU6ICdwYXVzZScsXG4gICAgICBzdGFnZU5hbWU6IGV2ZW50LnN0YWdlTmFtZSxcbiAgICAgIHRpbWVzdGFtcDogZXZlbnQudGltZXN0YW1wLFxuICAgICAgZGF0YTogeyBzdGFnZUlkOiBldmVudC5zdGFnZUlkLCBwYXVzZURhdGE6IGV2ZW50LnBhdXNlRGF0YSwgcGlwZWxpbmVJZDogZXZlbnQucGlwZWxpbmVJZCB9LFxuICAgIH0pO1xuICB9XG5cbiAgb25SZXN1bWUoZXZlbnQ6IFJlc3VtZUV2ZW50KTogdm9pZCB7XG4gICAgaWYgKGZyb21GbG93Q2hhbm5lbChldmVudCkpIHJldHVybjtcbiAgICAvLyBBbHdheXMgbG9nIHJlc3VtZXMgKGV2ZW4gaW4gbWluaW1hbCBtb2RlKVxuICAgIHRoaXMuZW50cmllcy5wdXNoKHtcbiAgICAgIHR5cGU6ICdyZXN1bWUnLFxuICAgICAgc3RhZ2VOYW1lOiBldmVudC5zdGFnZU5hbWUsXG4gICAgICB0aW1lc3RhbXA6IGV2ZW50LnRpbWVzdGFtcCxcbiAgICAgIGRhdGE6IHsgc3RhZ2VJZDogZXZlbnQuc3RhZ2VJZCwgaGFzSW5wdXQ6IGV2ZW50Lmhhc0lucHV0LCBwaXBlbGluZUlkOiBldmVudC5waXBlbGluZUlkIH0sXG4gICAgfSk7XG4gIH1cblxuICBvbkF0dGVtcHQoZXZlbnQ6IEZsb3dBdHRlbXB0RXZlbnQpOiB2b2lkIHtcbiAgICBjb25zdCB7IHJlY29yZCB9ID0gZXZlbnQ7XG4gICAgaWYgKCFpc1JldHJ5RXZpZGVuY2UocmVjb3JkKSkgcmV0dXJuO1xuICAgIGNvbnN0IHRpbWVzdGFtcCA9IHJlY29yZC5zdGFydGVkQXQgKyByZWNvcmQuZHVyYXRpb25NcztcbiAgICBjb25zdCBuYW1lID0geyBzdGFnZUlkOiBldmVudC5zdGFnZUlkLCBzZXJpZXM6IHJlY29yZC5zZXJpZXMsIGF0dGVtcHQ6IHJlY29yZC5hdHRlbXB0LCBvZjogcmVjb3JkLm9mIH07XG4gICAgdGhpcy5lbnRyaWVzLnB1c2goe1xuICAgICAgdHlwZTogJ2F0dGVtcHQnLFxuICAgICAgc3RhZ2VOYW1lOiBldmVudC5zdGFnZU5hbWUsXG4gICAgICB0aW1lc3RhbXAsXG4gICAgICBkYXRhOiB7XG4gICAgICAgIC4uLm5hbWUsXG4gICAgICAgIG91dGNvbWU6IHJlY29yZC5vdXRjb21lLFxuICAgICAgICAuLi4ocmVjb3JkLmNhdGVnb3J5ICE9PSB1bmRlZmluZWQgJiYgeyBjYXRlZ29yeTogcmVjb3JkLmNhdGVnb3J5IH0pLFxuICAgICAgICBkdXJhdGlvbk1zOiByZWNvcmQuZHVyYXRpb25NcyxcbiAgICAgICAgbmV4dDogcmVjb3JkLm5leHQsXG4gICAgICAgIHJlYXNvbjogcmVjb3JkLnJlYXNvbixcbiAgICAgICAgLi4uKHJlY29yZC5yZXRyeU9uVGhyZXcgJiYgeyByZXRyeU9uVGhyZXc6IHRydWUgfSksXG4gICAgICAgIC4uLihyZWNvcmQuZGVsYXlNcyAhPT0gdW5kZWZpbmVkICYmIHsgZGVsYXlNczogcmVjb3JkLmRlbGF5TXMgfSksXG4gICAgICAgIC4uLihyZWNvcmQudGltZW91dE1zICE9PSB1bmRlZmluZWQgJiYgeyB0aW1lb3V0TXM6IHJlY29yZC50aW1lb3V0TXMgfSksXG4gICAgICAgIC4uLihyZWNvcmQudGltZUxlZnRNcyAhPT0gdW5kZWZpbmVkICYmIHsgdGltZUxlZnRNczogcmVjb3JkLnRpbWVMZWZ0TXMgfSksXG4gICAgICAgIC4uLihyZWNvcmQuZXJyb3IgIT09IHVuZGVmaW5lZCAmJiB7IGVycm9yOiBkZWJ1Z0Vycm9yKHJlY29yZC5lcnJvcikgfSksXG4gICAgICB9LFxuICAgIH0pO1xuICAgIGlmICghZ2F2ZVVwKHJlY29yZCkpIHJldHVybjtcbiAgICB0aGlzLmVudHJpZXMucHVzaCh7XG4gICAgICB0eXBlOiAnYXR0ZW1wdFN0b3AnLFxuICAgICAgc3RhZ2VOYW1lOiBldmVudC5zdGFnZU5hbWUsXG4gICAgICB0aW1lc3RhbXAsXG4gICAgICBkYXRhOiB7XG4gICAgICAgIC4uLm5hbWUsXG4gICAgICAgIHJlYXNvbjogcmVjb3JkLnJlYXNvbixcbiAgICAgICAgLi4uKHJlY29yZC5jYXRlZ29yeSAhPT0gdW5kZWZpbmVkICYmIHsgY2F0ZWdvcnk6IHJlY29yZC5jYXRlZ29yeSB9KSxcbiAgICAgICAgLi4uKHJlY29yZC5yZXRyeU9uVGhyZXcgJiYgeyByZXRyeU9uVGhyZXc6IHRydWUgfSksXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgZ2V0RW50cmllcygpOiBEZWJ1Z0VudHJ5W10ge1xuICAgIHJldHVybiBbLi4udGhpcy5lbnRyaWVzXTtcbiAgfVxuXG4gIGdldEVycm9ycygpOiBEZWJ1Z0VudHJ5W10ge1xuICAgIHJldHVybiB0aGlzLmVudHJpZXMuZmlsdGVyKChlKSA9PiBlLnR5cGUgPT09ICdlcnJvcicpO1xuICB9XG5cbiAgZ2V0RW50cmllc0ZvclN0YWdlKHN0YWdlTmFtZTogc3RyaW5nKTogRGVidWdFbnRyeVtdIHtcbiAgICByZXR1cm4gdGhpcy5lbnRyaWVzLmZpbHRlcigoZSkgPT4gZS5zdGFnZU5hbWUgPT09IHN0YWdlTmFtZSk7XG4gIH1cblxuICBzZXRWZXJib3NpdHkobGV2ZWw6IERlYnVnVmVyYm9zaXR5KTogdm9pZCB7XG4gICAgdGhpcy52ZXJib3NpdHkgPSBsZXZlbDtcbiAgfVxuXG4gIGdldFZlcmJvc2l0eSgpOiBEZWJ1Z1ZlcmJvc2l0eSB7XG4gICAgcmV0dXJuIHRoaXMudmVyYm9zaXR5O1xuICB9XG5cbiAgY2xlYXIoKTogdm9pZCB7XG4gICAgdGhpcy5lbnRyaWVzID0gW107XG4gIH1cblxuICB0b1NuYXBzaG90KCkge1xuICAgIHJldHVybiB7XG4gICAgICBuYW1lOiAnRGVidWcnLFxuICAgICAgZGVzY3JpcHRpb246ICdUcmFuc2xhdG9yIChTY29wZSBTY29wZVJlY29yZGVyKSDigJQgcGVyLXN0YWdlIGRpYWdub3N0aWMgZW50cmllcycsXG4gICAgICBwcmVmZXJyZWRPcGVyYXRpb246IHRoaXMucHJlZmVycmVkT3BlcmF0aW9uLFxuICAgICAgZGF0YTogdGhpcy5lbnRyaWVzLFxuICAgIH07XG4gIH1cbn1cblxuLyoqXG4gKiBUaGUgc3RydWN0dXJlZCBmaWVsZHMgb25seSDigJQgbmV2ZXIgYHJhd2AgKHRoZSB0aHJvd24gdmFsdWUgaXRzZWxmLCB3aGljaCBtYXkgYmUgYSBmdW5jdGlvbiwgYSBQcm94eSBvciBhIGN5Y2xlKSxcbiAqIHNvIGEgc25hcHNob3Qgcm93IGFsd2F5cyBzdXJ2aXZlcyBgc3RydWN0dXJlZENsb25lYCAoOS4zOS4wKS4gQW4gYXR0ZW1wdCdzIGVycm9yIGlzIGFscmVhZHkgdGhlIHNlcnZlZCBmb3JtXG4gKiAoYEF0dGVtcHRSZWNvcmQuZXJyb3JgLCB0aGUgcnVuJ3MgcmVkYWN0aW9uIHJ1bGUgYXBwbGllZCksIHNvIGEgcmVkYWN0ZWQgc3RhZ2UgZXJyb3IgcmVhZHMgcmVkYWN0ZWQgaGVyZSB0b28uXG4gKi9cbmZ1bmN0aW9uIGRlYnVnRXJyb3IoaW5mbzogTm9uTnVsbGFibGU8QXR0ZW1wdFJlY29yZFsnZXJyb3InXT4pOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB7XG4gIGNvbnN0IHsgbWVzc2FnZSwgbmFtZSwgY29kZSwgaXNzdWVzIH0gPSBpbmZvO1xuICByZXR1cm4ge1xuICAgIG1lc3NhZ2UsXG4gICAgLi4uKG5hbWUgIT09IHVuZGVmaW5lZCAmJiB7IG5hbWUgfSksXG4gICAgLi4uKGNvZGUgIT09IHVuZGVmaW5lZCAmJiB7IGNvZGUgfSksXG4gICAgLi4uKGlzc3VlcyAhPT0gdW5kZWZpbmVkICYmIHsgaXNzdWVzIH0pLFxuICB9O1xufVxuXG4vKiogQSBzaGFyZWQtbmFtZSBob29rIChgb25FcnJvcmAgLyBgb25QYXVzZWAgLyBgb25SZXN1bWVgKSBkZWxpdmVyZWQgb24gdGhlIGZsb3cgY2hhbm5lbCBvZiBhIGNvbWJpbmVkIGF0dGFjaC4gKi9cbmZ1bmN0aW9uIGZyb21GbG93Q2hhbm5lbChldmVudDogeyBjaGFubmVsPzogc3RyaW5nIH0pOiBib29sZWFuIHtcbiAgcmV0dXJuIGV2ZW50LmNoYW5uZWwgPT09ICdmbG93Jztcbn1cbiJdfQ==
@@ -7,6 +7,14 @@
7
7
  * (Convention 1 — one purpose per recorder: this is the ScopeRecorder; the store
8
8
  * is the storage).
9
9
  *
10
+ * Attempts (10.1): a stage with a retry policy runs each attempt in a fresh
11
+ * scope, so this recorder sees one `onStageStart` per attempt. `attempts` is
12
+ * that count, present when it is 2 or more; `duration` spans the whole
13
+ * execution — from the FIRST attempt's start, waits included — never just the
14
+ * attempt that succeeded. An execution that never returned (it gave up) has
15
+ * no `onStageEnd`, so its duration stays `0`, as for any failed stage. A stage
16
+ * that ran once reads exactly as before.
17
+ *
10
18
  * @example
11
19
  * ```typescript
12
20
  * const metric = new MetricRecorder();
@@ -86,9 +94,14 @@ class MetricRecorder {
86
94
  onStageStart(event) {
87
95
  if (!this.shouldRecord(event.stageName))
88
96
  return;
89
- this.stageStartTimes.set(event.runtimeStageId, event.timestamp);
90
97
  const m = this.forEvent(event);
91
98
  m.stageName = event.stageName;
99
+ if (this.stageStartTimes.has(event.runtimeStageId)) {
100
+ // Another attempt of the same execution: count it, keep the first start (the duration spans them all).
101
+ m.attempts = (m.attempts ?? 1) + 1;
102
+ return;
103
+ }
104
+ this.stageStartTimes.set(event.runtimeStageId, event.timestamp);
92
105
  }
93
106
  onRead(event) {
94
107
  if (!this.shouldRecord(event.stageName))
@@ -196,4 +209,4 @@ class MetricRecorder {
196
209
  }
197
210
  }
198
211
  exports.MetricRecorder = MetricRecorder;
199
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWV0cmljUmVjb3JkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL3Njb3BlL3JlY29yZGVycy9NZXRyaWNSZWNvcmRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBdUJHOzs7QUFFSCxnRUFBMEQ7QUE0RDFELE1BQWEsY0FBYztJQUNqQixNQUFNLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQztJQUVuQixFQUFFLENBQVM7SUFDWCxrQkFBa0IsQ0FBb0I7SUFDL0MscUVBQXFFO0lBQ3BELEtBQUssR0FBRyxJQUFJLDBCQUFVLEVBQWUsQ0FBQztJQUMvQyxlQUFlLEdBQUcsSUFBSSxHQUFHLEVBQWtCLENBQUM7SUFDNUMsV0FBVyxDQUFrQztJQUVyRCxZQUFZLFdBQTRDO1FBQ3RELElBQUksT0FBTyxXQUFXLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDcEMsSUFBSSxDQUFDLEVBQUUsR0FBRyxXQUFXLENBQUM7WUFDdEIsSUFBSSxDQUFDLGtCQUFrQixHQUFHLFdBQVcsQ0FBQztRQUN4QyxDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxFQUFFLEdBQUcsV0FBVyxFQUFFLEVBQUUsSUFBSSxXQUFXLEVBQUUsY0FBYyxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ3BFLElBQUksQ0FBQyxXQUFXLEdBQUcsV0FBVyxFQUFFLFdBQVcsQ0FBQztZQUM1QyxJQUFJLENBQUMsa0JBQWtCLEdBQUcsV0FBVyxFQUFFLGtCQUFrQixJQUFJLFdBQVcsQ0FBQztRQUMzRSxDQUFDO0lBQ0gsQ0FBQztJQUVPLFlBQVksQ0FBQyxTQUFpQjtRQUNwQyxPQUFPLENBQUMsSUFBSSxDQUFDLFdBQVcsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQzFELENBQUM7SUFFRCxpRkFBaUY7SUFDekUsUUFBUSxDQUFDLEtBQXNCO1FBQ3JDLE1BQU0sR0FBRyxH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Z0JBQ3BDLFVBQVUsRUFBRSxPQUFPLENBQUMsVUFBVTtnQkFDOUIsV0FBVyxFQUFFLE9BQU8sQ0FBQyxXQUFXO2dCQUNoQyxZQUFZLEVBQUUsT0FBTyxDQUFDLFlBQVk7Z0JBQ2xDLFdBQVcsRUFBRSxPQUFPLENBQUMsV0FBVztnQkFDaEMsS0FBSzthQUNOO1NBQ0YsQ0FBQztJQUNKLENBQUM7SUFFRCw4REFBOEQ7SUFDOUQsS0FBSztRQUNILElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDbkIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUMvQixDQUFDO0lBRUQsMkNBQTJDO0lBQzNDLEtBQUs7UUFDSCxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDZixDQUFDOztBQXZMSCx3Q0F3TEMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIE1ldHJpY1JlY29yZGVyIOKAlCBwZXItc3RlcCB0aW1pbmcgYW5kIGV4ZWN1dGlvbiBjb3VudHMsIGtleWVkIGJ5IHJ1bnRpbWVTdGFnZUlkLlxuICpcbiAqIFN0b3JlcyBwZXItaW52b2NhdGlvbiBkYXRhIGR1cmluZyB0cmF2ZXJzYWwuIEFnZ3JlZ2F0ZWQgdmlld3MgY29tcHV0ZWQgb24gcmVhZC5cbiAqIENvbXBvc2VzIGEgYEtleWVkU3RvcmU8U3RlcE1ldHJpY3M+YCBmb3IgTygxKSBsb29rdXAgYW5kIHN0YW5kYXJkIG9wZXJhdGlvbnNcbiAqIChDb252ZW50aW9uIDEg4oCUIG9uZSBwdXJwb3NlIHBlciByZWNvcmRlcjogdGhpcyBpcyB0aGUgU2NvcGVSZWNvcmRlcjsgdGhlIHN0b3JlXG4gKiBpcyB0aGUgc3RvcmFnZSkuXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IG1ldHJpYyA9IG5ldyBNZXRyaWNSZWNvcmRlcigpO1xuICogZXhlY3V0b3IuYXR0YWNoU2NvcGVSZWNvcmRlcihtZXRyaWMpO1xuICogYXdhaXQgZXhlY3V0b3IucnVuKCk7XG4gKlxuICogLy8gUGVyLXN0ZXAgKHRpbWUtdHJhdmVsKTpcbiAqIG1ldHJpYy5nZXRCeUtleSgnY2FsbC1sbG0jNScpOyAgLy8geyBzdGFnZU5hbWUsIHJlYWRDb3VudCwgd3JpdGVDb3VudCwgZHVyYXRpb24gfVxuICpcbiAqIC8vIEFnZ3JlZ2F0ZWQgKGJhY2t3YXJkIGNvbXBhdCk6XG4gKiBtZXRyaWMuZ2V0TWV0cmljcygpOyAgLy8geyB0b3RhbER1cmF0aW9uLCB0b3RhbFJlYWRzLCBzdGFnZU1ldHJpY3M6IE1hcDxzdGFnZU5hbWUsIGFnZ3JlZ2F0ZWQ+IH1cbiAqXG4gKiAvLyBQcm9ncmVzc2l2ZSAoc2xpZGVyKTpcbiAqIG1ldHJpYy5hY2N1bXVsYXRlKChzdW0sIG0pID0+IHN1bSArIG0uZHVyYXRpb24sIDAsIHZpc2libGVLZXlzKTtcbiAqIGBgYFxuICovXG5cbmltcG9ydCB7IEtleWVkU3RvcmUgfSBmcm9tICcuLi8uLi9yZWNvcmRlci9LZXllZFN0b3JlLmpzJztcbmltcG9ydCB0eXBlIHsgUmVjb3JkZXJPcGVyYXRpb24gfSBmcm9tICcuLi8uLi9yZWNvcmRlci9SZWNvcmRlck9wZXJhdGlvbi5qcyc7XG5pbXBvcnQgdHlwZSB7XG4gIENvbW1pdEV2ZW50LFxuICBQYXVzZUV2ZW50LFxuICBSZWFkRXZlbnQsXG4gIFJlY29yZGVyQ29udGV4dCxcbiAgU2NvcGVSZWNvcmRlcixcbiAgU3RhZ2VFdmVudCxcbiAgV3JpdGVFdmVudCxcbn0gZnJvbSAnLi4vdHlwZXMuanMnO1xuXG4vKiogUGVyLWludm9jYXRpb24gbWV0cmljcyBmb3IgYSBzaW5nbGUgZXhlY3V0aW9uIHN0ZXAuICovXG5leHBvcnQgaW50ZXJmYWNlIFN0ZXBNZXRyaWNzIHtcbiAgLyoqIEh1bWFuLXJlYWRhYmxlIHN0YWdlIG5hbWUuICovXG4gIHN0YWdlTmFtZTogc3RyaW5nO1xuICAvKiogTnVtYmVyIG9mIHNjb3BlIHJlYWRzIGR1cmluZyB0aGlzIGludm9jYXRpb24uICovXG4gIHJlYWRDb3VudDogbnVtYmVyO1xuICAvKiogTnVtYmVyIG9mIHNjb3BlIHdyaXRlcyBkdXJpbmcgdGhpcyBpbnZvY2F0aW9uLiAqL1xuICB3cml0ZUNvdW50OiBudW1iZXI7XG4gIC8qKiBOdW1iZXIgb2YgY29tbWl0cyBkdXJpbmcgdGhpcyBpbnZvY2F0aW9uLiAqL1xuICBjb21taXRDb3VudDogbnVtYmVyO1xuICAvKiogTnVtYmVyIG9mIHBhdXNlcyBkdXJpbmcgdGhpcyBpbnZvY2F0aW9uLiAqL1xuICBwYXVzZUNvdW50OiBudW1iZXI7XG4gIC8qKiBEdXJhdGlvbiBpbiBtcyBmb3IgdGhpcyBpbnZvY2F0aW9uLiAqL1xuICBkdXJhdGlvbjogbnVtYmVyO1xufVxuXG4vKiogQWdncmVnYXRlZCBtZXRyaWNzIGFjcm9zcyBhbGwgaW52b2NhdGlvbnMgKGJhY2t3YXJkIGNvbXBhdGlibGUpLiAqL1xuZXhwb3J0IGludGVyZmFjZSBBZ2dyZWdhdGVkTWV0cmljcyB7XG4gIHRvdGFsRHVyYXRpb246IG51bWJlcjtcbiAgdG90YWxSZWFkczogbnVtYmVyO1xuICB0b3RhbFdyaXRlczogbnVtYmVyO1xuICB0b3RhbENvbW1pdHM6IG51bWJlcjtcbiAgdG90YWxQYXVzZXM6IG51bWJlcjtcbiAgLyoqIEFnZ3JlZ2F0ZWQgYnkgc3RhZ2VOYW1lIOKAlCBzdW1zIGFjcm9zcyBsb29wIGludm9jYXRpb25zLiAqL1xuICBzdGFnZU1ldHJpY3M6IE1hcDxzdHJpbmcsIFN0YWdlTWV0cmljcz47XG59XG5cbi8qKiBBZ2dyZWdhdGVkIHBlci1zdGFnZU5hbWUgKGJhY2t3YXJkIGNvbXBhdGlibGUgd2l0aCBwcmUtcnVudGltZVN0YWdlSWQgQVBJKS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU3RhZ2VNZXRyaWNzIHtcbiAgc3RhZ2VOYW1lOiBzdHJpbmc7XG4gIHJlYWRDb3VudDogbnVtYmVyO1xuICB3cml0ZUNvdW50OiBudW1iZXI7XG4gIGNvbW1pdENvdW50OiBudW1iZXI7XG4gIHBhdXNlQ291bnQ6IG51bWJlcjtcbiAgdG90YWxEdXJhdGlvbjogbnVtYmVyO1xuICBpbnZvY2F0aW9uQ291bnQ6IG51bWJlcjtcbn1cblxuLyoqIE9wdGlvbnMgZm9yIE1ldHJpY1JlY29yZGVyLiAqL1xuZXhwb3J0IGludGVyZmFjZSBNZXRyaWNSZWNvcmRlck9wdGlvbnMge1xuICAvKiogU2NvcGVSZWNvcmRlciBJRC4gRGVmYXVsdHMgdG8gYXV0by1pbmNyZW1lbnQgKGBtZXRyaWNzLTFgLCBgbWV0cmljcy0yYCwgLi4uKS4gKi9cbiAgaWQ/OiBzdHJpbmc7XG4gIC8qKiBGaWx0ZXIgd2hpY2ggc3RhZ2VzIGFyZSByZWNvcmRlZC4gUmV0dXJuIGB0cnVlYCB0byByZWNvcmQsIGBmYWxzZWAgdG8gc2tpcC4gKi9cbiAgc3RhZ2VGaWx0ZXI/OiAoc3RhZ2VOYW1lOiBzdHJpbmcpID0+IGJvb2xlYW47XG4gIC8qKiBQcmVmZXJyZWQgVUkgb3BlcmF0aW9uLiBEZWZhdWx0cyB0byAnYWdncmVnYXRlJyAoZGFzaGJvYXJkIHRvdGFscykuICovXG4gIHByZWZlcnJlZE9wZXJhdGlvbj86IFJlY29yZGVyT3BlcmF0aW9uO1xufVxuXG5leHBvcnQgY2xhc3MgTWV0cmljUmVjb3JkZXIgaW1wbGVtZW50cyBTY29wZVJlY29yZGVyIHtcbiAgcHJpdmF0ZSBzdGF0aWMgX2NvdW50ZXIgPSAwO1xuXG4gIHJlYWRvbmx5IGlkOiBzdHJpbmc7XG4gIHJlYWRvbmx5IHByZWZlcnJlZE9wZXJhdGlvbjogUmVjb3JkZXJPcGVyYXRpb247XG4gIC8qKiAxOjEgcGVyLXN0ZXAgc3RvcmFnZSAoQ29udmVudGlvbiAxIOKAlCBjb21wb3NlZCwgbm90IGluaGVyaXRlZCkuICovXG4gIHByaXZhdGUgcmVhZG9ubHkgc3RvcmUgPSBuZXcgS2V5ZWRTdG9yZTxTdGVwTWV0cmljcz4oKTtcbiAgcHJpdmF0ZSBzdGFnZVN0YXJ0VGltZXMgPSBuZXcgTWFwPHN0cmluZywgbnVtYmVyPigpO1xuICBwcml2YXRlIHN0YWdlRmlsdGVyPzogKHN0YWdlTmFtZTogc3RyaW5nKSA9PiBib29sZWFuO1xuXG4gIGNvbnN0cnVjdG9yKGlkT3JPcHRpb25zPzogc3RyaW5nIHwgTWV0cmljUmVjb3JkZXJPcHRpb25zKSB7XG4gICAgaWYgKHR5cGVvZiBpZE9yT3B0aW9ucyA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHRoaXMuaWQgPSBpZE9yT3B0aW9ucztcbiAgICAgIHRoaXMucHJlZmVycmVkT3BlcmF0aW9uID0gJ2FnZ3JlZ2F0ZSc7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaWQgPSBpZE9yT3B0aW9ucz8uaWQgPz8gYG1ldHJpY3MtJHsrK01ldHJpY1JlY29yZGVyLl9jb3VudGVyfWA7XG4gICAgICB0aGlzLnN0YWdlRmlsdGVyID0gaWRPck9wdGlvbnM/LnN0YWdlRmlsdGVyO1xuICAgICAgdGhpcy5wcmVmZXJyZWRPcGVyYXRpb24gPSBpZE9yT3B0aW9ucz8ucHJlZmVycmVkT3BlcmF0aW9uID8/ICdhZ2dyZWdhdGUnO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc2hvdWxkUmVjb3JkKHN0YWdlTmFtZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICF0aGlzLnN0YWdlRmlsdGVyIHx8IHRoaXMuc3RhZ2VGaWx0ZXIoc3RhZ2VOYW1lKTtcbiAgfVxuXG4gIC8qKiBFYWNoIGV2ZW50IG93bnMgaXRzIGF0dHJpYnV0aW9uOyBhbm90aGVyIHN0YWdlIG1heSBoYXZlIHN0YXJ0ZWQgbWVhbndoaWxlLiAqL1xuICBwcml2YXRlIGZvckV2ZW50KGV2ZW50OiBSZWNvcmRlckNvbnRleHQpOiBTdGVwTWV0cmljcyB7XG4gICAgY29uc3Qga2V5ID0gZXZlbnQucnVudGltZVN0YWdlSWQ7XG4gICAgbGV0IG0gPSB0aGlzLnN0b3JlLmdldChrZXkpO1xuICAgIGlmICghbSkge1xuICAgICAgbSA9IHsgc3RhZ2VOYW1lOiBldmVudC5zdGFnZU5hbWUsIHJlYWRDb3VudDogMCwgd3JpdGVDb3VudDogMCwgY29tbWl0Q291bnQ6IDAsIHBhdXNlQ291bnQ6IDAsIGR1cmF0aW9uOiAwIH07XG4gICAgICB0aGlzLnN0b3JlLnNldChrZXksIG0pO1xuICAgIH1cbiAgICByZXR1cm4gbTtcbiAgfVxuXG4gIC8vIOKUgOKUgCBQZXItc3RlcCBxdWVyeSBBUEkgKGRlbGVnYXRlcyB0byB0aGUgY29tcG9zZWQgc3RvcmUpIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuXG4gIC8qKiBUcmFuc2xhdGU6IHBlci1zdGVwIG1ldHJpY3MgYnkgcnVudGltZVN0YWdlSWQuICovXG4gIGdldEJ5S2V5KHJ1bnRpbWVTdGFnZUlkOiBzdHJpbmcpOiBTdGVwTWV0cmljcyB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuc3RvcmUuZ2V0KHJ1bnRpbWVTdGFnZUlkKTtcbiAgfVxuXG4gIC8qKiBBbGwgcGVyLXN0ZXAgbWV0cmljcyBhcyBhIHJlYWQtb25seSBNYXAgKGluc2VydGlvbi1vcmRlcmVkKS4gKi9cbiAgZ2V0TWFwKCk6IFJlYWRvbmx5TWFwPHN0cmluZywgU3RlcE1ldHJpY3M+IHtcbiAgICByZXR1cm4gdGhpcy5zdG9yZS5nZXRNYXAoKTtcbiAgfVxuXG4gIC8qKiBBbGwgcGVyLXN0ZXAgbWV0cmljcyAoaW5zZXJ0aW9uLW9yZGVyZWQpLiAqL1xuICB2YWx1ZXMoKTogU3RlcE1ldHJpY3NbXSB7XG4gICAgcmV0dXJuIHRoaXMuc3RvcmUudmFsdWVzKCk7XG4gIH1cblxuICAvKiogTnVtYmVyIG9mIHJlY29yZGVkIHN0ZXBzLiAqL1xuICBnZXQgc2l6ZSgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLnN0b3JlLnNpemU7XG4gIH1cblxuICAvKiogQWdncmVnYXRlOiByZWR1Y2UgQUxMIHN0ZXBzIHRvIGEgc2luZ2xlIHZhbHVlIChkYXNoYm9hcmRzLCB0b3RhbHMpLiAqL1xuICBhZ2dyZWdhdGU8Uj4oZm46IChhY2M6IFIsIGVudHJ5OiBTdGVwTWV0cmljcywga2V5OiBzdHJpbmcpID0+IFIsIGluaXRpYWw6IFIpOiBSIHtcbiAgICByZXR1cm4gdGhpcy5zdG9yZS5hZ2dyZWdhdGUoZm4sIGluaXRpYWwpO1xuICB9XG5cbiAgLyoqIEFjY3VtdWxhdGU6IHJlZHVjZSBzdGVwcyB1cCB0byBhIHNsaWRlciBwb3NpdGlvbiAocHJvZ3Jlc3NpdmUgdmlldykuICovXG4gIGFjY3VtdWxhdGU8Uj4oZm46IChhY2M6IFIsIGVudHJ5OiBTdGVwTWV0cmljcywga2V5OiBzdHJpbmcpID0+IFIsIGluaXRpYWw6IFIsIGtleXM/OiBSZWFkb25seVNldDxzdHJpbmc+KTogUiB7XG4gICAgcmV0dXJuIHRoaXMuc3RvcmUuYWNjdW11bGF0ZShmbiwgaW5pdGlhbCwga2V5cyk7XG4gIH1cblxuICBvblN0YWdlU3RhcnQoZXZlbnQ6IFN0YWdlRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuc2hvdWxkUmVjb3JkKGV2ZW50LnN0YWdlTmFtZSkpIHJldHVybjtcbiAgICB0aGlzLnN0YWdlU3RhcnRUaW1lcy5zZXQoZXZlbnQucnVudGltZVN0YWdlSWQsIGV2ZW50LnRpbWVzdGFtcCk7XG4gICAgY29uc3QgbSA9IHRoaXMuZm9yRXZlbnQoZXZlbnQpO1xuICAgIG0uc3RhZ2VOYW1lID0gZXZlbnQuc3RhZ2VOYW1lO1xuICB9XG5cbiAgb25SZWFkKGV2ZW50OiBSZWFkRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuc2hvdWxkUmVjb3JkKGV2ZW50LnN0YWdlTmFtZSkpIHJldHVybjtcbiAgICB0aGlzLmZvckV2ZW50KGV2ZW50KS5yZWFkQ291bnQrKztcbiAgfVxuXG4gIG9uV3JpdGUoZXZlbnQ6IFdyaXRlRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuc2hvdWxkUmVjb3JkKGV2ZW50LnN0YWdlTmFtZSkpIHJldHVybjtcbiAgICB0aGlzLmZvckV2ZW50KGV2ZW50KS53cml0ZUNvdW50Kys7XG4gIH1cblxuICBvbkNvbW1pdChldmVudDogQ29tbWl0RXZlbnQpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuc2hvdWxkUmVjb3JkKGV2ZW50LnN0YWdlTmFtZSkpIHJldHVybjtcbiAgICB0aGlzLmZvckV2ZW50KGV2ZW50KS5jb21taXRDb3VudCsrO1xuICB9XG5cbiAgb25QYXVzZShldmVudDogUGF1c2VFdmVudCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5zaG91bGRSZWNvcmQoZXZlbnQuc3RhZ2VOYW1lKSkgcmV0dXJuO1xuICAgIHRoaXMuZm9yRXZlbnQoZXZlbnQpLnBhdXNlQ291bnQrKztcbiAgfVxuXG4gIG9uU3RhZ2VFbmQoZXZlbnQ6IFN0YWdlRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuc2hvdWxkUmVjb3JkKGV2ZW50LnN0YWdlTmFtZSkpIHJldHVybjtcbiAgICBjb25zdCBtID0gdGhpcy5mb3JFdmVudChldmVudCk7XG4gICAgaWYgKGV2ZW50LmR1cmF0aW9uICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIG0uZHVyYXRpb24gPSBldmVudC5kdXJhdGlvbjtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3Qgc3RhcnRUaW1lID0gdGhpcy5zdGFnZVN0YXJ0VGltZXMuZ2V0KGV2ZW50LnJ1bnRpbWVTdGFnZUlkKTtcbiAgICAgIG0uZHVyYXRpb24gPSBzdGFydFRpbWUgIT09IHVuZGVmaW5lZCA/IGV2ZW50LnRpbWVzdGFtcCAtIHN0YXJ0VGltZSA6IDA7XG4gICAgfVxuICAgIHRoaXMuc3RhZ2VTdGFydFRpbWVzLmRlbGV0ZShldmVudC5ydW50aW1lU3RhZ2VJZCk7XG4gIH1cblxuICAvKiogQWdncmVnYXRlZCBtZXRyaWNzIOKAlCBjb21wdXRlcyB0b3RhbHMgb24gdGhlIGZseSBmcm9tIHBlci1zdGVwIGRhdGEgKGJhY2t3YXJkIGNvbXBhdGlibGUpLiAqL1xuICBnZXRNZXRyaWNzKCk6IEFnZ3JlZ2F0ZWRNZXRyaWNzIHtcbiAgICBjb25zdCBieU5hbWUgPSBuZXcgTWFwPHN0cmluZywgU3RhZ2VNZXRyaWNzPigpO1xuXG4gICAgY29uc3QgdG90YWxEdXJhdGlvbiA9IHRoaXMuYWdncmVnYXRlKChzdW0sIG0pID0+IHN1bSArIG0uZHVyYXRpb24sIDApO1xuICAgIGNvbnN0IHRvdGFsUmVhZHMgPSB0aGlzLmFnZ3JlZ2F0ZSgoc3VtLCBtKSA9PiBzdW0gKyBtLnJlYWRDb3VudCwgMCk7XG4gICAgY29uc3QgdG90YWxXcml0ZXMgPSB0aGlzLmFnZ3JlZ2F0ZSgoc3VtLCBtKSA9PiBzdW0gKyBtLndyaXRlQ291bnQsIDApO1xuICAgIGNvbnN0IHRvdGFsQ29tbWl0cyA9IHRoaXMuYWdncmVnYXRlKChzdW0sIG0pID0+IHN1bSArIG0uY29tbWl0Q291bnQsIDApO1xuICAgIGNvbnN0IHRvdGFsUGF1c2VzID0gdGhpcy5hZ2dyZWdhdGUoKHN1bSwgbSkgPT4gc3VtICsgbS5wYXVzZUNvdW50LCAwKTtcblxuICAgIC8vIEdyb3VwIGJ5IHN0YWdlTmFtZSBmb3IgYmFja3dhcmQgY29tcGF0XG4gICAgZm9yIChjb25zdCBtIG9mIHRoaXMudmFsdWVzKCkpIHtcbiAgICAgIGNvbnN0IGV4aXN0aW5nID0gYnlOYW1lLmdldChtLnN0YWdlTmFtZSk7XG4gICAgICBpZiAoZXhpc3RpbmcpIHtcbiAgICAgICAgZXhpc3RpbmcucmVhZENvdW50ICs9IG0ucmVhZENvdW50O1xuICAgICAgICBleGlzdGluZy53cml0ZUNvdW50ICs9IG0ud3JpdGVDb3VudDtcbiAgICAgICAgZXhpc3RpbmcuY29tbWl0Q291bnQgKz0gbS5jb21taXRDb3VudDtcbiAgICAgICAgZXhpc3RpbmcucGF1c2VDb3VudCArPSBtLnBhdXNlQ291bnQ7XG4gICAgICAgIGV4aXN0aW5nLnRvdGFsRHVyYXRpb24gKz0gbS5kdXJhdGlvbjtcbiAgICAgICAgZXhpc3RpbmcuaW52b2NhdGlvbkNvdW50Kys7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBieU5hbWUuc2V0KG0uc3RhZ2VOYW1lLCB7XG4gICAgICAgICAgc3RhZ2VOYW1lOiBtLnN0YWdlTmFtZSxcbiAgICAgICAgICByZWFkQ291bnQ6IG0ucmVhZENvdW50LFxuICAgICAgICAgIHdyaXRlQ291bnQ6IG0ud3JpdGVDb3VudCxcbiAgICAgICAgICBjb21taXRDb3VudDogbS5jb21taXRDb3VudCxcbiAgICAgICAgICBwYXVzZUNvdW50OiBtLnBhdXNlQ291bnQsXG4gICAgICAgICAgdG90YWxEdXJhdGlvbjogbS5kdXJhdGlvbixcbiAgICAgICAgICBpbnZvY2F0aW9uQ291bnQ6IDEsXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB7IHRvdGFsRHVyYXRpb24sIHRvdGFsUmVhZHMsIHRvdGFsV3JpdGVzLCB0b3RhbENvbW1pdHMsIHRvdGFsUGF1c2VzLCBzdGFnZU1ldHJpY3M6IGJ5TmFtZSB9O1xuICB9XG5cbiAgLyoqIEdldCBhZ2dyZWdhdGVkIG1ldHJpY3MgZm9yIGEgc3BlY2lmaWMgc3RhZ2UgbmFtZSAoYmFja3dhcmQgY29tcGF0aWJsZSkuICovXG4gIGdldFN0YWdlTWV0cmljcyhzdGFnZU5hbWU6IHN0cmluZyk6IFN0YWdlTWV0cmljcyB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3QgbWV0cmljcyA9IHRoaXMuZ2V0TWV0cmljcygpO1xuICAgIHJldHVybiBtZXRyaWNzLnN0YWdlTWV0cmljcy5nZXQoc3RhZ2VOYW1lKTtcbiAgfVxuXG4gIHRvU25hcHNob3QoKSB7XG4gICAgY29uc3QgbWV0cmljcyA9IHRoaXMuZ2V0TWV0cmljcygpO1xuICAgIC8vIEV4cG9zZSBwZXItc3RlcCBkYXRhIGtleWVkIGJ5IHJ1bnRpbWVTdGFnZUlkIChmb3IgdGltZS10cmF2ZWwgVUkpXG4gICAgLy8gYWxvbmdzaWRlIHRoZSBhZ2dyZWdhdGVkIHRvdGFsc1xuICAgIGNvbnN0IHN0ZXBzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHt9O1xuICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIHRoaXMuZ2V0TWFwKCkpIHtcbiAgICAgIHN0ZXBzW2tleV0gPSB2YWx1ZTtcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgIG5hbWU6ICdNZXRyaWNzJyxcbiAgICAgIGRlc2NyaXB0aW9uOiAnQWdncmVnYXRvciAoS2V5ZWRTdG9yZSkg4oCUIHBlci1zdGVwIHRpbWluZyBhbmQgSS9PIGNvdW50cycsXG4gICAgICBwcmVmZXJyZWRPcGVyYXRpb246IHRoaXMucHJlZmVycmVkT3BlcmF0aW9uLFxuICAgICAgZGF0YToge1xuICAgICAgICBudW1lcmljRmllbGQ6ICdyZWFkQ291bnQnLFxuICAgICAgICBncmFuZFRvdGFsOiBtZXRyaWNzLnRvdGFsUmVhZHMsXG4gICAgICAgIHRvdGFsRHVyYXRpb246IG1ldHJpY3MudG90YWxEdXJhdGlvbixcbiAgICAgICAgdG90YWxSZWFkczogbWV0cmljcy50b3RhbFJlYWRzLFxuICAgICAgICB0b3RhbFdyaXRlczogbWV0cmljcy50b3RhbFdyaXRlcyxcbiAgICAgICAgdG90YWxDb21taXRzOiBtZXRyaWNzLnRvdGFsQ29tbWl0cyxcbiAgICAgICAgdG90YWxQYXVzZXM6IG1ldHJpY3MudG90YWxQYXVzZXMsXG4gICAgICAgIHN0ZXBzLFxuICAgICAgfSxcbiAgICB9O1xuICB9XG5cbiAgLyoqIENsZWFyIGFsbCBzdGF0ZSDigJQgY2FsbGVkIGJ5IGV4ZWN1dG9yIGJlZm9yZSBlYWNoIHJ1bigpLiAqL1xuICBjbGVhcigpOiB2b2lkIHtcbiAgICB0aGlzLnN0b3JlLmNsZWFyKCk7XG4gICAgdGhpcy5zdGFnZVN0YXJ0VGltZXMuY2xlYXIoKTtcbiAgfVxuXG4gIC8qKiBBbGlhcyBmb3IgY2xlYXIoKSAoYmFja3dhcmQgY29tcGF0KS4gKi9cbiAgcmVzZXQoKTogdm9pZCB7XG4gICAgdGhpcy5jbGVhcigpO1xuICB9XG59XG4iXX0=
212
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWV0cmljUmVjb3JkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL3Njb3BlL3JlY29yZGVycy9NZXRyaWNSZWNvcmRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0ErQkc7OztBQUVILGdFQUEwRDtBQThEMUQsTUFBYSxjQUFjO0lBQ2pCLE1BQU0sQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDO0lBRW5CLEVBQUUsQ0FBUztJQUNYLGtCQUFrQixDQUFvQjtJQUMvQyxxRUFBcUU7SUFDcEQsS0FBSyxHQUFHLElBQUksMEJBQVUsRUFBZSxDQUFDO0lBQy9DLGVBQWUsR0FBRyxJQUFJLEdBQUcsRUFBa0IsQ0FBQztJQUM1QyxXQUFXLENBQWtDO0lBRXJELFlBQVksV0FBNEM7UUFDdEQsSUFBSSxPQUFPLFdBQVcsS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUNwQyxJQUFJLENBQUMsRUFBRSxHQUFHLFdBQVcsQ0FBQztZQUN0QixJQUFJLENBQUMsa0JBQWtCLEdBQUcsV0FBVyxDQUFDO1FBQ3hDLENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLEVBQUUsR0FBRyxXQUFXLEVBQUUsRUFBRSxJQUFJLFdBQVcsRUFBRSxjQUFjLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDcEUsSUFBSSxDQUFDLFdBQVcsR0FBRyxXQUFXLEVBQUUsV0FBVyxDQUFDO1lBQzVDLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxXQUFXLEVBQUUsa0JBQWtCLElBQUksV0FBVyxDQUFDO1FBQzNFLENBQUM7SUFDSCxDQUFDO0lBRU8sWUFBWSxDQUFDLFNBQWlCO1FBQ3BDLE9BQU8sQ0FBQyxJQUFJLENBQUMsV0FBVyxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDMUQsQ0FBQztJQUVELGlGQUFpRjtJQUN6RSxRQUFRLENBQUMsS0FBc0I7UUFDckMsTUFB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LENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDdEUsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3BFLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUN0RSxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDeEUsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBRXRFLHlDQUF5QztRQUN6QyxLQUFLLE1BQU0sQ0FBQyxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDO1lBQzlCLE1BQU0sUUFBUSxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQ3pDLElBQUksUUFBUSxFQUFFLENBQUM7Z0JBQ2IsUUFBUSxDQUFDLFNBQVMsSUFBSSxDQUFDLENBQUMsU0FBUyxDQUFDO2dCQUNsQyxRQUFRLENBQUMsVUFBVSxJQUFJLENBQUMsQ0FBQyxVQUFVLENBQUM7Z0JBQ3BDLFFBQVEsQ0FBQyxXQUFXLElBQUksQ0FBQyxDQUFDLFdBQVcsQ0FBQztnQkFDdEMsUUFBUSxDQUFDLFVBQVUsSUFBSSxDQUFDLENBQUMsVUFBVSxDQUFDO2dCQUNwQyxRQUFRLENBQUMsYUFBYSxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUM7Z0JBQ3JDLFFBQVEsQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUM3QixDQUFDO2lCQUFNLENBQUM7Z0JBQ04sTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsU0FBUyxFQUFFO29CQUN0QixTQUFTLEVBQUUsQ0FBQyxDQUFDLFNBQVM7b0JBQ3RCLFNBQVMsRUFBRSxDQUFDLENBQUMsU0FBUztvQkFDdEIsVUFBVSxFQUFFLENBQUMsQ0FBQyxVQUFVO29CQUN4QixXQUFXLEVBQUUsQ0FBQyxDQUFDLFdBQVc7b0JBQzFCLFVBQVUsRUFBRSxDQUFDLENBQUMsVUFBVTtvQkFDeEIsYUFBYSxFQUFFLENBQUMsQ0FBQyxRQUFRO29CQUN6QixlQUFlLEVBQUUsQ0FBQztpQkFDbkIsQ0FBQyxDQUFDO1lBQ0wsQ0FBQztRQUNILENBQUM7UUFFRCxPQUFPLEVBQUUsYUFBYSxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLENBQUM7SUFDckcsQ0FBQztJQUVELDhFQUE4RTtJQUM5RSxlQUFlLENBQUMsU0FBaUI7UUFDL0IsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ2xDLE9BQU8sT0FBTyxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVELFVBQVU7UUFDUixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDbEMsb0VBQW9FO1FBQ3BFLGtDQUFrQztRQUNsQyxNQUFNLEtBQUssR0FBNEIsRUFBRSxDQUFDO1FBQzFDLEtBQUssTUFBTSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQztZQUN6QyxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFDO1FBQ3JCLENBQUM7UUFDRCxPQUFPO1lBQ0wsSUFBSSxFQUFFLFNBQVM7WUFDZixXQUFXLEVBQUUsMERBQTBEO1lBQ3ZFLGtCQUFrQixFQUFFLElBQUksQ0FBQyxrQkFBa0I7WUFDM0MsSUFBSSxFQUFFO2dCQUNKLFlBQVksRUFBRSxXQUFXO2dCQUN6QixVQUFVLEVBQUUsT0FBTyxDQUFDLFVBQVU7Z0JBQzlCLGFBQWEsRUFBRSxPQUFPLENBQUMsYUFBYTtnQkFDcEMsVUFBVSxFQUFFLE9BQU8sQ0FBQyxVQUFVO2dCQUM5QixXQUFXLEVBQUUsT0FBTyxDQUFDLFdBQVc7Z0JBQ2hDLFlBQVksRUFBRSxPQUFPLENBQUMsWUFBWTtnQkFDbEMsV0FBVyxFQUFFLE9BQU8sQ0FBQyxXQUFXO2dCQUNoQyxLQUFLO2FBQ047U0FDRixDQUFDO0lBQ0osQ0FBQztJQUVELDhEQUE4RDtJQUM5RCxLQUFLO1FBQ0gsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNuQixJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQy9CLENBQUM7SUFFRCwyQ0FBMkM7SUFDM0MsS0FBSztRQUNILElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUNmLENBQUM7O0FBNUxILHdDQTZMQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogTWV0cmljUmVjb3JkZXIg4oCUIHBlci1zdGVwIHRpbWluZyBhbmQgZXhlY3V0aW9uIGNvdW50cywga2V5ZWQgYnkgcnVudGltZVN0YWdlSWQuXG4gKlxuICogU3RvcmVzIHBlci1pbnZvY2F0aW9uIGRhdGEgZHVyaW5nIHRyYXZlcnNhbC4gQWdncmVnYXRlZCB2aWV3cyBjb21wdXRlZCBvbiByZWFkLlxuICogQ29tcG9zZXMgYSBgS2V5ZWRTdG9yZTxTdGVwTWV0cmljcz5gIGZvciBPKDEpIGxvb2t1cCBhbmQgc3RhbmRhcmQgb3BlcmF0aW9uc1xuICogKENvbnZlbnRpb24gMSDigJQgb25lIHB1cnBvc2UgcGVyIHJlY29yZGVyOiB0aGlzIGlzIHRoZSBTY29wZVJlY29yZGVyOyB0aGUgc3RvcmVcbiAqIGlzIHRoZSBzdG9yYWdlKS5cbiAqXG4gKiBBdHRlbXB0cyAoMTAuMSk6IGEgc3RhZ2Ugd2l0aCBhIHJldHJ5IHBvbGljeSBydW5zIGVhY2ggYXR0ZW1wdCBpbiBhIGZyZXNoXG4gKiBzY29wZSwgc28gdGhpcyByZWNvcmRlciBzZWVzIG9uZSBgb25TdGFnZVN0YXJ0YCBwZXIgYXR0ZW1wdC4gYGF0dGVtcHRzYCBpc1xuICogdGhhdCBjb3VudCwgcHJlc2VudCB3aGVuIGl0IGlzIDIgb3IgbW9yZTsgYGR1cmF0aW9uYCBzcGFucyB0aGUgd2hvbGVcbiAqIGV4ZWN1dGlvbiDigJQgZnJvbSB0aGUgRklSU1QgYXR0ZW1wdCdzIHN0YXJ0LCB3YWl0cyBpbmNsdWRlZCDigJQgbmV2ZXIganVzdCB0aGVcbiAqIGF0dGVtcHQgdGhhdCBzdWNjZWVkZWQuIEFuIGV4ZWN1dGlvbiB0aGF0IG5ldmVyIHJldHVybmVkIChpdCBnYXZlIHVwKSBoYXNcbiAqIG5vIGBvblN0YWdlRW5kYCwgc28gaXRzIGR1cmF0aW9uIHN0YXlzIGAwYCwgYXMgZm9yIGFueSBmYWlsZWQgc3RhZ2UuIEEgc3RhZ2VcbiAqIHRoYXQgcmFuIG9uY2UgcmVhZHMgZXhhY3RseSBhcyBiZWZvcmUuXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IG1ldHJpYyA9IG5ldyBNZXRyaWNSZWNvcmRlcigpO1xuICogZXhlY3V0b3IuYXR0YWNoU2NvcGVSZWNvcmRlcihtZXRyaWMpO1xuICogYXdhaXQgZXhlY3V0b3IucnVuKCk7XG4gKlxuICogLy8gUGVyLXN0ZXAgKHRpbWUtdHJhdmVsKTpcbiAqIG1ldHJpYy5nZXRCeUtleSgnY2FsbC1sbG0jNScpOyAgLy8geyBzdGFnZU5hbWUsIHJlYWRDb3VudCwgd3JpdGVDb3VudCwgZHVyYXRpb24gfVxuICpcbiAqIC8vIEFnZ3JlZ2F0ZWQgKGJhY2t3YXJkIGNvbXBhdCk6XG4gKiBtZXRyaWMuZ2V0TWV0cmljcygpOyAgLy8geyB0b3RhbER1cmF0aW9uLCB0b3RhbFJlYWRzLCBzdGFnZU1ldHJpY3M6IE1hcDxzdGFnZU5hbWUsIGFnZ3JlZ2F0ZWQ+IH1cbiAqXG4gKiAvLyBQcm9ncmVzc2l2ZSAoc2xpZGVyKTpcbiAqIG1ldHJpYy5hY2N1bXVsYXRlKChzdW0sIG0pID0+IHN1bSArIG0uZHVyYXRpb24sIDAsIHZpc2libGVLZXlzKTtcbiAqIGBgYFxuICovXG5cbmltcG9ydCB7IEtleWVkU3RvcmUgfSBmcm9tICcuLi8uLi9yZWNvcmRlci9LZXllZFN0b3JlLmpzJztcbmltcG9ydCB0eXBlIHsgUmVjb3JkZXJPcGVyYXRpb24gfSBmcm9tICcuLi8uLi9yZWNvcmRlci9SZWNvcmRlck9wZXJhdGlvbi5qcyc7XG5pbXBvcnQgdHlwZSB7XG4gIENvbW1pdEV2ZW50LFxuICBQYXVzZUV2ZW50LFxuICBSZWFkRXZlbnQsXG4gIFJlY29yZGVyQ29udGV4dCxcbiAgU2NvcGVSZWNvcmRlcixcbiAgU3RhZ2VFdmVudCxcbiAgV3JpdGVFdmVudCxcbn0gZnJvbSAnLi4vdHlwZXMuanMnO1xuXG4vKiogUGVyLWludm9jYXRpb24gbWV0cmljcyBmb3IgYSBzaW5nbGUgZXhlY3V0aW9uIHN0ZXAuICovXG5leHBvcnQgaW50ZXJmYWNlIFN0ZXBNZXRyaWNzIHtcbiAgLyoqIEh1bWFuLXJlYWRhYmxlIHN0YWdlIG5hbWUuICovXG4gIHN0YWdlTmFtZTogc3RyaW5nO1xuICAvKiogTnVtYmVyIG9mIHNjb3BlIHJlYWRzIGR1cmluZyB0aGlzIGludm9jYXRpb24uICovXG4gIHJlYWRDb3VudDogbnVtYmVyO1xuICAvKiogTnVtYmVyIG9mIHNjb3BlIHdyaXRlcyBkdXJpbmcgdGhpcyBpbnZvY2F0aW9uLiAqL1xuICB3cml0ZUNvdW50OiBudW1iZXI7XG4gIC8qKiBOdW1iZXIgb2YgY29tbWl0cyBkdXJpbmcgdGhpcyBpbnZvY2F0aW9uLiAqL1xuICBjb21taXRDb3VudDogbnVtYmVyO1xuICAvKiogTnVtYmVyIG9mIHBhdXNlcyBkdXJpbmcgdGhpcyBpbnZvY2F0aW9uLiAqL1xuICBwYXVzZUNvdW50OiBudW1iZXI7XG4gIC8qKiBEdXJhdGlvbiBpbiBtcyBmb3IgdGhpcyBpbnZvY2F0aW9uLiAqL1xuICBkdXJhdGlvbjogbnVtYmVyO1xuICAvKiogSG93IG1hbnkgYXR0ZW1wdHMgdGhlIGV4ZWN1dGlvbiBtYWRlIChpdHMgYG9uU3RhZ2VTdGFydGAgY291bnQpIOKAlCBwcmVzZW50IG9ubHkgd2hlbiBpdCByZXRyaWVkICjiiaUgMikuICovXG4gIGF0dGVtcHRzPzogbnVtYmVyO1xufVxuXG4vKiogQWdncmVnYXRlZCBtZXRyaWNzIGFjcm9zcyBhbGwgaW52b2NhdGlvbnMgKGJhY2t3YXJkIGNvbXBhdGlibGUpLiAqL1xuZXhwb3J0IGludGVyZmFjZSBBZ2dyZWdhdGVkTWV0cmljcyB7XG4gIHRvdGFsRHVyYXRpb246IG51bWJlcjtcbiAgdG90YWxSZWFkczogbnVtYmVyO1xuICB0b3RhbFdyaXRlczogbnVtYmVyO1xuICB0b3RhbENvbW1pdHM6IG51bWJlcjtcbiAgdG90YWxQYXVzZXM6IG51bWJlcjtcbiAgLyoqIEFnZ3JlZ2F0ZWQgYnkgc3RhZ2VOYW1lIOKAlCBzdW1zIGFjcm9zcyBsb29wIGludm9jYXRpb25zLiAqL1xuICBzdGFnZU1ldHJpY3M6IE1hcDxzdHJpbmcsIFN0YWdlTWV0cmljcz47XG59XG5cbi8qKiBBZ2dyZWdhdGVkIHBlci1zdGFnZU5hbWUgKGJhY2t3YXJkIGNvbXBhdGlibGUgd2l0aCBwcmUtcnVudGltZVN0YWdlSWQgQVBJKS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU3RhZ2VNZXRyaWNzIHtcbiAgc3RhZ2VOYW1lOiBzdHJpbmc7XG4gIHJlYWRDb3VudDogbnVtYmVyO1xuICB3cml0ZUNvdW50OiBudW1iZXI7XG4gIGNvbW1pdENvdW50OiBudW1iZXI7XG4gIHBhdXNlQ291bnQ6IG51bWJlcjtcbiAgdG90YWxEdXJhdGlvbjogbnVtYmVyO1xuICBpbnZvY2F0aW9uQ291bnQ6IG51bWJlcjtcbn1cblxuLyoqIE9wdGlvbnMgZm9yIE1ldHJpY1JlY29yZGVyLiAqL1xuZXhwb3J0IGludGVyZmFjZSBNZXRyaWNSZWNvcmRlck9wdGlvbnMge1xuICAvKiogU2NvcGVSZWNvcmRlciBJRC4gRGVmYXVsdHMgdG8gYXV0by1pbmNyZW1lbnQgKGBtZXRyaWNzLTFgLCBgbWV0cmljcy0yYCwgLi4uKS4gKi9cbiAgaWQ/OiBzdHJpbmc7XG4gIC8qKiBGaWx0ZXIgd2hpY2ggc3RhZ2VzIGFyZSByZWNvcmRlZC4gUmV0dXJuIGB0cnVlYCB0byByZWNvcmQsIGBmYWxzZWAgdG8gc2tpcC4gKi9cbiAgc3RhZ2VGaWx0ZXI/OiAoc3RhZ2VOYW1lOiBzdHJpbmcpID0+IGJvb2xlYW47XG4gIC8qKiBQcmVmZXJyZWQgVUkgb3BlcmF0aW9uLiBEZWZhdWx0cyB0byAnYWdncmVnYXRlJyAoZGFzaGJvYXJkIHRvdGFscykuICovXG4gIHByZWZlcnJlZE9wZXJhdGlvbj86IFJlY29yZGVyT3BlcmF0aW9uO1xufVxuXG5leHBvcnQgY2xhc3MgTWV0cmljUmVjb3JkZXIgaW1wbGVtZW50cyBTY29wZVJlY29yZGVyIHtcbiAgcHJpdmF0ZSBzdGF0aWMgX2NvdW50ZXIgPSAwO1xuXG4gIHJlYWRvbmx5IGlkOiBzdHJpbmc7XG4gIHJlYWRvbmx5IHByZWZlcnJlZE9wZXJhdGlvbjogUmVjb3JkZXJPcGVyYXRpb247XG4gIC8qKiAxOjEgcGVyLXN0ZXAgc3RvcmFnZSAoQ29udmVudGlvbiAxIOKAlCBjb21wb3NlZCwgbm90IGluaGVyaXRlZCkuICovXG4gIHByaXZhdGUgcmVhZG9ubHkgc3RvcmUgPSBuZXcgS2V5ZWRTdG9yZTxTdGVwTWV0cmljcz4oKTtcbiAgcHJpdmF0ZSBzdGFnZVN0YXJ0VGltZXMgPSBuZXcgTWFwPHN0cmluZywgbnVtYmVyPigpO1xuICBwcml2YXRlIHN0YWdlRmlsdGVyPzogKHN0YWdlTmFtZTogc3RyaW5nKSA9PiBib29sZWFuO1xuXG4gIGNvbnN0cnVjdG9yKGlkT3JPcHRpb25zPzogc3RyaW5nIHwgTWV0cmljUmVjb3JkZXJPcHRpb25zKSB7XG4gICAgaWYgKHR5cGVvZiBpZE9yT3B0aW9ucyA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHRoaXMuaWQgPSBpZE9yT3B0aW9ucztcbiAgICAgIHRoaXMucHJlZmVycmVkT3BlcmF0aW9uID0gJ2FnZ3JlZ2F0ZSc7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaWQgPSBpZE9yT3B0aW9ucz8uaWQgPz8gYG1ldHJpY3MtJHsrK01ldHJpY1JlY29yZGVyLl9jb3VudGVyfWA7XG4gICAgICB0aGlzLnN0YWdlRmlsdGVyID0gaWRPck9wdGlvbnM/LnN0YWdlRmlsdGVyO1xuICAgICAgdGhpcy5wcmVmZXJyZWRPcGVyYXRpb24gPSBpZE9yT3B0aW9ucz8ucHJlZmVycmVkT3BlcmF0aW9uID8/ICdhZ2dyZWdhdGUnO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc2hvdWxkUmVjb3JkKHN0YWdlTmFtZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICF0aGlzLnN0YWdlRmlsdGVyIHx8IHRoaXMuc3RhZ2VGaWx0ZXIoc3RhZ2VOYW1lKTtcbiAgfVxuXG4gIC8qKiBFYWNoIGV2ZW50IG93bnMgaXRzIGF0dHJpYnV0aW9uOyBhbm90aGVyIHN0YWdlIG1heSBoYXZlIHN0YXJ0ZWQgbWVhbndoaWxlLiAqL1xuICBwcml2YXRlIGZvckV2ZW50KGV2ZW50OiBSZWNvcmRlckNvbnRleHQpOiBTdGVwTWV0cmljcyB7XG4gICAgY29uc3Qga2V5ID0gZXZlbnQucnVudGltZVN0YWdlSWQ7XG4gICAgbGV0IG0gPSB0aGlzLnN0b3JlLmdldChrZXkpO1xuICAgIGlmICghbSkge1xuICAgICAgbSA9IHsgc3RhZ2VOYW1lOiBldmVudC5zdGFnZU5hbWUsIHJlYWRDb3VudDogMCwgd3JpdGVDb3VudDogMCwgY29tbWl0Q291bnQ6IDAsIHBhdXNlQ291bnQ6IDAsIGR1cmF0aW9uOiAwIH07XG4gICAgICB0aGlzLnN0b3JlLnNldChrZXksIG0pO1xuICAgIH1cbiAgICByZXR1cm4gbTtcbiAgfVxuXG4gIC8vIOKUgOKUgCBQZXItc3RlcCBxdWVyeSBBUEkgKGRlbGVnYXRlcyB0byB0aGUgY29tcG9zZWQgc3RvcmUpIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuXG4gIC8qKiBUcmFuc2xhdGU6IHBlci1zdGVwIG1ldHJpY3MgYnkgcnVudGltZVN0YWdlSWQuICovXG4gIGdldEJ5S2V5KHJ1bnRpbWVTdGFnZUlkOiBzdHJpbmcpOiBTdGVwTWV0cmljcyB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuc3RvcmUuZ2V0KHJ1bnRpbWVTdGFnZUlkKTtcbiAgfVxuXG4gIC8qKiBBbGwgcGVyLXN0ZXAgbWV0cmljcyBhcyBhIHJlYWQtb25seSBNYXAgKGluc2VydGlvbi1vcmRlcmVkKS4gKi9cbiAgZ2V0TWFwKCk6IFJlYWRvbmx5TWFwPHN0cmluZywgU3RlcE1ldHJpY3M+IHtcbiAgICByZXR1cm4gdGhpcy5zdG9yZS5nZXRNYXAoKTtcbiAgfVxuXG4gIC8qKiBBbGwgcGVyLXN0ZXAgbWV0cmljcyAoaW5zZXJ0aW9uLW9yZGVyZWQpLiAqL1xuICB2YWx1ZXMoKTogU3RlcE1ldHJpY3NbXSB7XG4gICAgcmV0dXJuIHRoaXMuc3RvcmUudmFsdWVzKCk7XG4gIH1cblxuICAvKiogTnVtYmVyIG9mIHJlY29yZGVkIHN0ZXBzLiAqL1xuICBnZXQgc2l6ZSgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLnN0b3JlLnNpemU7XG4gIH1cblxuICAvKiogQWdncmVnYXRlOiByZWR1Y2UgQUxMIHN0ZXBzIHRvIGEgc2luZ2xlIHZhbHVlIChkYXNoYm9hcmRzLCB0b3RhbHMpLiAqL1xuICBhZ2dyZWdhdGU8Uj4oZm46IChhY2M6IFIsIGVudHJ5OiBTdGVwTWV0cmljcywga2V5OiBzdHJpbmcpID0+IFIsIGluaXRpYWw6IFIpOiBSIHtcbiAgICByZXR1cm4gdGhpcy5zdG9yZS5hZ2dyZWdhdGUoZm4sIGluaXRpYWwpO1xuICB9XG5cbiAgLyoqIEFjY3VtdWxhdGU6IHJlZHVjZSBzdGVwcyB1cCB0byBhIHNsaWRlciBwb3NpdGlvbiAocHJvZ3Jlc3NpdmUgdmlldykuICovXG4gIGFjY3VtdWxhdGU8Uj4oZm46IChhY2M6IFIsIGVudHJ5OiBTdGVwTWV0cmljcywga2V5OiBzdHJpbmcpID0+IFIsIGluaXRpYWw6IFIsIGtleXM/OiBSZWFkb25seVNldDxzdHJpbmc+KTogUiB7XG4gICAgcmV0dXJuIHRoaXMuc3RvcmUuYWNjdW11bGF0ZShmbiwgaW5pdGlhbCwga2V5cyk7XG4gIH1cblxuICBvblN0YWdlU3RhcnQoZXZlbnQ6IFN0YWdlRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuc2hvdWxkUmVjb3JkKGV2ZW50LnN0YWdlTmFtZSkpIHJldHVybjtcbiAgICBjb25zdCBtID0gdGhpcy5mb3JFdmVudChldmVudCk7XG4gICAgbS5zdGFnZU5hbWUgPSBldmVudC5zdGFnZU5hbWU7XG4gICAgaWYgKHRoaXMuc3RhZ2VTdGFydFRpbWVzLmhhcyhldmVudC5ydW50aW1lU3RhZ2VJZCkpIHtcbiAgICAgIC8vIEFub3RoZXIgYXR0ZW1wdCBvZiB0aGUgc2FtZSBleGVjdXRpb246IGNvdW50IGl0LCBrZWVwIHRoZSBmaXJzdCBzdGFydCAodGhlIGR1cmF0aW9uIHNwYW5zIHRoZW0gYWxsKS5cbiAgICAgIG0uYXR0ZW1wdHMgPSAobS5hdHRlbXB0cyA/PyAxKSArIDE7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuc3RhZ2VTdGFydFRpbWVzLnNldChldmVudC5ydW50aW1lU3RhZ2VJZCwgZXZlbnQudGltZXN0YW1wKTtcbiAgfVxuXG4gIG9uUmVhZChldmVudDogUmVhZEV2ZW50KTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnNob3VsZFJlY29yZChldmVudC5zdGFnZU5hbWUpKSByZXR1cm47XG4gICAgdGhpcy5mb3JFdmVudChldmVudCkucmVhZENvdW50Kys7XG4gIH1cblxuICBvbldyaXRlKGV2ZW50OiBXcml0ZUV2ZW50KTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnNob3VsZFJlY29yZChldmVudC5zdGFnZU5hbWUpKSByZXR1cm47XG4gICAgdGhpcy5mb3JFdmVudChldmVudCkud3JpdGVDb3VudCsrO1xuICB9XG5cbiAgb25Db21taXQoZXZlbnQ6IENvbW1pdEV2ZW50KTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnNob3VsZFJlY29yZChldmVudC5zdGFnZU5hbWUpKSByZXR1cm47XG4gICAgdGhpcy5mb3JFdmVudChldmVudCkuY29tbWl0Q291bnQrKztcbiAgfVxuXG4gIG9uUGF1c2UoZXZlbnQ6IFBhdXNlRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuc2hvdWxkUmVjb3JkKGV2ZW50LnN0YWdlTmFtZSkpIHJldHVybjtcbiAgICB0aGlzLmZvckV2ZW50KGV2ZW50KS5wYXVzZUNvdW50Kys7XG4gIH1cblxuICBvblN0YWdlRW5kKGV2ZW50OiBTdGFnZUV2ZW50KTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnNob3VsZFJlY29yZChldmVudC5zdGFnZU5hbWUpKSByZXR1cm47XG4gICAgY29uc3QgbSA9IHRoaXMuZm9yRXZlbnQoZXZlbnQpO1xuICAgIGlmIChldmVudC5kdXJhdGlvbiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBtLmR1cmF0aW9uID0gZXZlbnQuZHVyYXRpb247XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHN0YXJ0VGltZSA9IHRoaXMuc3RhZ2VTdGFydFRpbWVzLmdldChldmVudC5ydW50aW1lU3RhZ2VJZCk7XG4gICAgICBtLmR1cmF0aW9uID0gc3RhcnRUaW1lICE9PSB1bmRlZmluZWQgPyBldmVudC50aW1lc3RhbXAgLSBzdGFydFRpbWUgOiAwO1xuICAgIH1cbiAgICB0aGlzLnN0YWdlU3RhcnRUaW1lcy5kZWxldGUoZXZlbnQucnVudGltZVN0YWdlSWQpO1xuICB9XG5cbiAgLyoqIEFnZ3JlZ2F0ZWQgbWV0cmljcyDigJQgY29tcHV0ZXMgdG90YWxzIG9uIHRoZSBmbHkgZnJvbSBwZXItc3RlcCBkYXRhIChiYWNrd2FyZCBjb21wYXRpYmxlKS4gKi9cbiAgZ2V0TWV0cmljcygpOiBBZ2dyZWdhdGVkTWV0cmljcyB7XG4gICAgY29uc3QgYnlOYW1lID0gbmV3IE1hcDxzdHJpbmcsIFN0YWdlTWV0cmljcz4oKTtcblxuICAgIGNvbnN0IHRvdGFsRHVyYXRpb24gPSB0aGlzLmFnZ3JlZ2F0ZSgoc3VtLCBtKSA9PiBzdW0gKyBtLmR1cmF0aW9uLCAwKTtcbiAgICBjb25zdCB0b3RhbFJlYWRzID0gdGhpcy5hZ2dyZWdhdGUoKHN1bSwgbSkgPT4gc3VtICsgbS5yZWFkQ291bnQsIDApO1xuICAgIGNvbnN0IHRvdGFsV3JpdGVzID0gdGhpcy5hZ2dyZWdhdGUoKHN1bSwgbSkgPT4gc3VtICsgbS53cml0ZUNvdW50LCAwKTtcbiAgICBjb25zdCB0b3RhbENvbW1pdHMgPSB0aGlzLmFnZ3JlZ2F0ZSgoc3VtLCBtKSA9PiBzdW0gKyBtLmNvbW1pdENvdW50LCAwKTtcbiAgICBjb25zdCB0b3RhbFBhdXNlcyA9IHRoaXMuYWdncmVnYXRlKChzdW0sIG0pID0+IHN1bSArIG0ucGF1c2VDb3VudCwgMCk7XG5cbiAgICAvLyBHcm91cCBieSBzdGFnZU5hbWUgZm9yIGJhY2t3YXJkIGNvbXBhdFxuICAgIGZvciAoY29uc3QgbSBvZiB0aGlzLnZhbHVlcygpKSB7XG4gICAgICBjb25zdCBleGlzdGluZyA9IGJ5TmFtZS5nZXQobS5zdGFnZU5hbWUpO1xuICAgICAgaWYgKGV4aXN0aW5nKSB7XG4gICAgICAgIGV4aXN0aW5nLnJlYWRDb3VudCArPSBtLnJlYWRDb3VudDtcbiAgICAgICAgZXhpc3Rpbmcud3JpdGVDb3VudCArPSBtLndyaXRlQ291bnQ7XG4gICAgICAgIGV4aXN0aW5nLmNvbW1pdENvdW50ICs9IG0uY29tbWl0Q291bnQ7XG4gICAgICAgIGV4aXN0aW5nLnBhdXNlQ291bnQgKz0gbS5wYXVzZUNvdW50O1xuICAgICAgICBleGlzdGluZy50b3RhbER1cmF0aW9uICs9IG0uZHVyYXRpb247XG4gICAgICAgIGV4aXN0aW5nLmludm9jYXRpb25Db3VudCsrO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYnlOYW1lLnNldChtLnN0YWdlTmFtZSwge1xuICAgICAgICAgIHN0YWdlTmFtZTogbS5zdGFnZU5hbWUsXG4gICAgICAgICAgcmVhZENvdW50OiBtLnJlYWRDb3VudCxcbiAgICAgICAgICB3cml0ZUNvdW50OiBtLndyaXRlQ291bnQsXG4gICAgICAgICAgY29tbWl0Q291bnQ6IG0uY29tbWl0Q291bnQsXG4gICAgICAgICAgcGF1c2VDb3VudDogbS5wYXVzZUNvdW50LFxuICAgICAgICAgIHRvdGFsRHVyYXRpb246IG0uZHVyYXRpb24sXG4gICAgICAgICAgaW52b2NhdGlvbkNvdW50OiAxLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4geyB0b3RhbER1cmF0aW9uLCB0b3RhbFJlYWRzLCB0b3RhbFdyaXRlcywgdG90YWxDb21taXRzLCB0b3RhbFBhdXNlcywgc3RhZ2VNZXRyaWNzOiBieU5hbWUgfTtcbiAgfVxuXG4gIC8qKiBHZXQgYWdncmVnYXRlZCBtZXRyaWNzIGZvciBhIHNwZWNpZmljIHN0YWdlIG5hbWUgKGJhY2t3YXJkIGNvbXBhdGlibGUpLiAqL1xuICBnZXRTdGFnZU1ldHJpY3Moc3RhZ2VOYW1lOiBzdHJpbmcpOiBTdGFnZU1ldHJpY3MgfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IG1ldHJpY3MgPSB0aGlzLmdldE1ldHJpY3MoKTtcbiAgICByZXR1cm4gbWV0cmljcy5zdGFnZU1ldHJpY3MuZ2V0KHN0YWdlTmFtZSk7XG4gIH1cblxuICB0b1NuYXBzaG90KCkge1xuICAgIGNvbnN0IG1ldHJpY3MgPSB0aGlzLmdldE1ldHJpY3MoKTtcbiAgICAvLyBFeHBvc2UgcGVyLXN0ZXAgZGF0YSBrZXllZCBieSBydW50aW1lU3RhZ2VJZCAoZm9yIHRpbWUtdHJhdmVsIFVJKVxuICAgIC8vIGFsb25nc2lkZSB0aGUgYWdncmVnYXRlZCB0b3RhbHNcbiAgICBjb25zdCBzdGVwczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7fTtcbiAgICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiB0aGlzLmdldE1hcCgpKSB7XG4gICAgICBzdGVwc1trZXldID0gdmFsdWU7XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICBuYW1lOiAnTWV0cmljcycsXG4gICAgICBkZXNjcmlwdGlvbjogJ0FnZ3JlZ2F0b3IgKEtleWVkU3RvcmUpIOKAlCBwZXItc3RlcCB0aW1pbmcgYW5kIEkvTyBjb3VudHMnLFxuICAgICAgcHJlZmVycmVkT3BlcmF0aW9uOiB0aGlzLnByZWZlcnJlZE9wZXJhdGlvbixcbiAgICAgIGRhdGE6IHtcbiAgICAgICAgbnVtZXJpY0ZpZWxkOiAncmVhZENvdW50JyxcbiAgICAgICAgZ3JhbmRUb3RhbDogbWV0cmljcy50b3RhbFJlYWRzLFxuICAgICAgICB0b3RhbER1cmF0aW9uOiBtZXRyaWNzLnRvdGFsRHVyYXRpb24sXG4gICAgICAgIHRvdGFsUmVhZHM6IG1ldHJpY3MudG90YWxSZWFkcyxcbiAgICAgICAgdG90YWxXcml0ZXM6IG1ldHJpY3MudG90YWxXcml0ZXMsXG4gICAgICAgIHRvdGFsQ29tbWl0czogbWV0cmljcy50b3RhbENvbW1pdHMsXG4gICAgICAgIHRvdGFsUGF1c2VzOiBtZXRyaWNzLnRvdGFsUGF1c2VzLFxuICAgICAgICBzdGVwcyxcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxuXG4gIC8qKiBDbGVhciBhbGwgc3RhdGUg4oCUIGNhbGxlZCBieSBleGVjdXRvciBiZWZvcmUgZWFjaCBydW4oKS4gKi9cbiAgY2xlYXIoKTogdm9pZCB7XG4gICAgdGhpcy5zdG9yZS5jbGVhcigpO1xuICAgIHRoaXMuc3RhZ2VTdGFydFRpbWVzLmNsZWFyKCk7XG4gIH1cblxuICAvKiogQWxpYXMgZm9yIGNsZWFyKCkgKGJhY2t3YXJkIGNvbXBhdCkuICovXG4gIHJlc2V0KCk6IHZvaWQge1xuICAgIHRoaXMuY2xlYXIoKTtcbiAgfVxufVxuIl19
@@ -64,4 +64,4 @@ function requireDecisionScopeRuntime(scope) {
64
64
  return requireScopeRuntime(scope, UNREGISTERED_DECISION);
65
65
  }
66
66
  exports.requireDecisionScopeRuntime = requireDecisionScopeRuntime;
67
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVudGltZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvc2NvcGUvcnVudGltZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7Ozs7O0dBUUc7OztBQTJCSCxNQUFNLFFBQVEsR0FBRyxJQUFJLE9BQU8sRUFBa0MsQ0FBQztBQUUvRCxTQUFTLFFBQVEsQ0FBQyxLQUFjO0lBQzlCLE9BQU8sQ0FBQyxPQUFPLEtBQUssS0FBSyxRQUFRLElBQUksS0FBSyxLQUFLLElBQUksQ0FBQyxJQUFJLE9BQU8sS0FBSyxLQUFLLFVBQVUsQ0FBQztBQUN0RixDQUFDO0FBRUQ7Ozs7Ozs7OztHQVNHO0FBQ0gsU0FBZ0Isb0JBQW9CLENBQW1CLEtBQVEsRUFBRSxPQUFxQjtJQUNwRixJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQztRQUFFLE1BQU0sSUFBSSxTQUFTLENBQUMsK0NBQStDLENBQUMsQ0FBQztJQUMzRixJQUFJLENBQUMsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxPQUFPLE9BQU8sQ0FBQyxrQkFBa0IsS0FBSyxTQUFTLEVBQUUsQ0FBQztRQUM3RixNQUFNLElBQUksU0FBUyxDQUFDLDRFQUE0RSxDQUFDLENBQUM7SUFDcEcsQ0FBQztJQUNELElBQUksT0FBTyxDQUFDLFFBQVEsS0FBSyxTQUFTLElBQUksT0FBTyxPQUFPLENBQUMsUUFBUSxLQUFLLFVBQVUsRUFBRSxDQUFDO1FBQzdFLE1BQU0sSUFBSSxTQUFTLENBQUMsaUVBQWlFLENBQUMsQ0FBQztJQUN6RixDQUFDO0lBQ0QsUUFBUSxDQUFDLEdBQUcsQ0FDVixLQUFLLEVBQ0wsTUFBTSxDQUFDLE1BQU0sQ0FBQztRQUNaLE1BQU0sRUFBRSxPQUFPLENBQUMsTUFBTTtRQUN0QixrQkFBa0IsRUFBRSxPQUFPLENBQUMsa0JBQWtCO1FBQzlDLFFBQVEsRUFBRSxPQUFPLENBQUMsUUFBUTtLQUMzQixDQUFDLENBQ0gsQ0FBQztJQUNGLE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQztBQWpCRCxvREFpQkM7QUFFRCw4RUFBOEU7QUFDOUUsU0FBZ0IsZUFBZSxDQUFDLEtBQWM7SUFDNUMsT0FBTyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztBQUMzRCxDQUFDO0FBRkQsMENBRUM7QUFFRCxNQUFNLFlBQVksR0FDaEIsK0ZBQStGO0lBQy9GLDZIQUE2SCxDQUFDO0FBRWhJLE1BQU0scUJBQXFCLEdBQ3pCLG1HQUFtRztJQUNuRyw2RkFBNkY7SUFDN0YsNERBQTRELENBQUM7QUFFL0QsZ0dBQWdHO0FBQ2hHLFNBQWdCLG1CQUFtQixDQUFDLEtBQWMsRUFBRSxVQUFrQixZQUFZO0lBQ2hGLE1BQU0sT0FBTyxHQUFHLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN2QyxJQUFJLE9BQU87UUFBRSxPQUFPLE9BQU8sQ0FBQztJQUM1QixNQUFNLElBQUksU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQy9CLENBQUM7QUFKRCxrREFJQztBQUVELHNHQUFzRztBQUN0RyxTQUFnQiwyQkFBMkIsQ0FBQyxLQUFjO0lBQ3hELE9BQU8sbUJBQW1CLENBQUMsS0FBSyxFQUFFLHFCQUFxQixDQUFDLENBQUM7QUFDM0QsQ0FBQztBQUZELGtFQUVDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBUaGUgc2NvcGUg4oaUIGVuZ2luZSBwcm90b2NvbC4gQSB1c2VyLWZhY2luZyBzY29wZSBtYXkgYmUgYSBzdHJpY3Qgc2NoZW1hXG4gKiBwcm94eTogYXNraW5nIGl0IGZvciBhbiBpbmZyYXN0cnVjdHVyZSBtZW1iZXIgaXMgYSBzdGF0ZSBhY2Nlc3MsIG5vdCBhXG4gKiBjYXBhYmlsaXR5IGNoZWNrLiBSZWdpc3RyYXRpb24ga2VlcHMgdGhhdCBib3VuZGFyeSBlbnRpcmVseSBvdXQgb2YgYmFuZC5cbiAqXG4gKiBUaGlzIG1vZHVsZSBvd25zIGlkZW50aXR5IGFuZCBjYXBhYmlsaXRpZXMsIG5vdCB0aGVpciBpbXBsZW1lbnRhdGlvbi5cbiAqIFNjb3BlRmFjYWRlIG93bnMgcmVjb3JkaW5nLCByZWRhY3Rpb24gYW5kIHN0YXRlIGFjY2VzczsgY3VzdG9tIHNjb3BlcyBtYXlcbiAqIGV4cGxpY2l0bHkgc3VwcGx5IGEgc21hbGxlciBwb3J0IChpbmNsdWRpbmcgYHt9YCBmb3IgZGF0YS1vbmx5IHNjb3BlcykuXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBSZWRhY3Rpb25Qb2xpY3ksIFNjb3BlUmVjb3JkZXIgfSBmcm9tICcuL3R5cGVzLmpzJztcblxuLyoqIEVuZ2luZS1mYWNpbmcgY2FwYWJpbGl0aWVzLiBOZXZlciB1c2UgYSBzdHJpY3QgdXNlci1maWVsZCBwcm94eSBhcyB0aGlzIHBvcnQuICovXG5leHBvcnQgaW50ZXJmYWNlIFNjb3BlUnVudGltZVRhcmdldCB7XG4gIGF0dGFjaFNjb3BlUmVjb3JkZXI/KHJlY29yZGVyOiBTY29wZVJlY29yZGVyKTogdm9pZDtcbiAgZGV0YWNoU2NvcGVSZWNvcmRlcj8ocmVjb3JkZXJJZDogc3RyaW5nKTogdm9pZDtcbiAgZ2V0U2NvcGVSZWNvcmRlcnM/KCk6IFNjb3BlUmVjb3JkZXJbXTtcbiAgdXNlU2hhcmVkUmVkYWN0ZWRLZXlzPyhrZXlzOiBTZXQ8c3RyaW5nPik6IHZvaWQ7XG4gIHVzZVJlZGFjdGlvblBvbGljeT8ocG9saWN5OiBSZWRhY3Rpb25Qb2xpY3kpOiB2b2lkO1xuICBnZXRSZWRhY3RlZEtleXM/KCk6IFNldDxzdHJpbmc+O1xuICBub3RpZnlTdGFnZVN0YXJ0PygpOiB2b2lkO1xuICBub3RpZnlTdGFnZUVuZD8oZHVyYXRpb24/OiBudW1iZXIpOiB2b2lkO1xuICBub3RpZnlQYXVzZT8oZGF0YT86IHVua25vd24pOiB2b2lkO1xuICBnZXRWYWx1ZT8oa2V5Pzogc3RyaW5nKTogdW5rbm93bjtcbiAgc2V0VmFsdWU/KGtleTogc3RyaW5nLCB2YWx1ZTogdW5rbm93biwgc2hvdWxkUmVkYWN0PzogYm9vbGVhbiwgZGVzY3JpcHRpb24/OiBzdHJpbmcpOiB2b2lkO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNjb3BlUnVudGltZSB7XG4gIHJlYWRvbmx5IHRhcmdldDogU2NvcGVSdW50aW1lVGFyZ2V0O1xuICAvKiogVGhlIHNjb3BlIGFscmVhZHkgcm91dGVzIHByb3BlcnR5IGFzc2lnbm1lbnRzIGludG8gbWFuYWdlZCBzdGF0ZS4gKi9cbiAgcmVhZG9ubHkgaGFuZGxlc0Fzc2lnbm1lbnRzOiBib29sZWFuO1xuICAvKiogSW5zdGFsbCB0aGlzIGV4ZWN1dGlvbidzIGJyZWFrIGNhbGxiYWNrLCBpZiB0aGUgc2NvcGUgZXhwb3NlcyBvbmUuICovXG4gIHJlYWRvbmx5IHNldEJyZWFrPzogKGJyZWFrUGlwZWxpbmU6IChyZWFzb24/OiBzdHJpbmcpID0+IHZvaWQpID0+IHZvaWQ7XG59XG5cbmNvbnN0IHJ1bnRpbWVzID0gbmV3IFdlYWtNYXA8b2JqZWN0LCBSZWFkb25seTxTY29wZVJ1bnRpbWU+PigpO1xuXG5mdW5jdGlvbiBpc09iamVjdCh2YWx1ZTogdW5rbm93bik6IHZhbHVlIGlzIG9iamVjdCB7XG4gIHJldHVybiAodHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiB2YWx1ZSAhPT0gbnVsbCkgfHwgdHlwZW9mIHZhbHVlID09PSAnZnVuY3Rpb24nO1xufVxuXG4vKipcbiAqIFJlZ2lzdGVyIGEgY3VzdG9tIHNjb3BlJ3MgZW5naW5lLWZhY2luZyBwb3J0IGFuZCByZXR1cm4gdGhlIFNBTUUgc2NvcGUuXG4gKiBSZWdpc3RyYXRpb24gbmV2ZXIgcmVhZHMsIHdyaXRlcyBvciBlbnVtZXJhdGVzIHByb3BlcnRpZXMgb24gYHNjb3BlYC5cbiAqIFJlLXJlZ2lzdGVyaW5nIGV4cGxpY2l0bHkgcmVwbGFjZXMgaXRzIGJpbmRpbmcuIFRoZSBkZXNjcmlwdG9yIGlzIGNvcGllZFxuICogYW5kIGZyb3plbjsgdGhlIHRhcmdldCBpdHNlbGYgcmVtYWlucyBsaXZlIGFuZCBiZWxvbmdzIHRvIGl0cyBwcm92aWRlci5cbiAqXG4gKiBAZXhhbXBsZVxuICogY29uc3QgZmFjYWRlID0gbmV3IFNjb3BlRmFjYWRlKGNvbnRleHQsIHN0YWdlTmFtZSwgaW5wdXQsIGVudik7XG4gKiByZXR1cm4gcmVnaXN0ZXJTY29wZVJ1bnRpbWUobXlQcm94eSwgeyB0YXJnZXQ6IGZhY2FkZSwgaGFuZGxlc0Fzc2lnbm1lbnRzOiB0cnVlIH0pO1xuICovXG5leHBvcnQgZnVuY3Rpb24gcmVnaXN0ZXJTY29wZVJ1bnRpbWU8VCBleHRlbmRzIG9iamVjdD4oc2NvcGU6IFQsIHJ1bnRpbWU6IFNjb3BlUnVudGltZSk6IFQge1xuICBpZiAoIWlzT2JqZWN0KHNjb3BlKSkgdGhyb3cgbmV3IFR5cGVFcnJvcigncmVnaXN0ZXJTY29wZVJ1bnRpbWU6IHNjb3BlIG11c3QgYmUgYW4gb2JqZWN0Jyk7XG4gIGlmICghcnVudGltZSB8fCAhaXNPYmplY3QocnVudGltZS50YXJnZXQpIHx8IHR5cGVvZiBydW50aW1lLmhhbmRsZXNBc3NpZ25tZW50cyAhPT0gJ2Jvb2xlYW4nKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcigncmVnaXN0ZXJTY29wZVJ1bnRpbWU6IHByb3ZpZGUgYSB0YXJnZXQgcG9ydCBhbmQgYm9vbGVhbiBoYW5kbGVzQXNzaWdubWVudHMnKTtcbiAgfVxuICBpZiAocnVudGltZS5zZXRCcmVhayAhPT0gdW5kZWZpbmVkICYmIHR5cGVvZiBydW50aW1lLnNldEJyZWFrICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcigncmVnaXN0ZXJTY29wZVJ1bnRpbWU6IHNldEJyZWFrIG11c3QgYmUgYSBmdW5jdGlvbiB3aGVuIHN1cHBsaWVkJyk7XG4gIH1cbiAgcnVudGltZXMuc2V0KFxuICAgIHNjb3BlLFxuICAgIE9iamVjdC5mcmVlemUoe1xuICAgICAgdGFyZ2V0OiBydW50aW1lLnRhcmdldCxcbiAgICAgIGhhbmRsZXNBc3NpZ25tZW50czogcnVudGltZS5oYW5kbGVzQXNzaWdubWVudHMsXG4gICAgICBzZXRCcmVhazogcnVudGltZS5zZXRCcmVhayxcbiAgICB9KSxcbiAgKTtcbiAgcmV0dXJuIHNjb3BlO1xufVxuXG4vKiogQGludGVybmFsIE9wdGlvbmFsIG9ubHkgZm9yIHdyYXBwZXJzIHRoYXQgYWxzbyB3b3JrIG91dHNpZGUgdGhlIGVuZ2luZS4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzY29wZVJ1bnRpbWVGb3Ioc2NvcGU6IHVua25vd24pOiBSZWFkb25seTxTY29wZVJ1bnRpbWU+IHwgdW5kZWZpbmVkIHtcbiAgcmV0dXJuIGlzT2JqZWN0KHNjb3BlKSA/IHJ1bnRpbWVzLmdldChzY29wZSkgOiB1bmRlZmluZWQ7XG59XG5cbmNvbnN0IFVOUkVHSVNURVJFRCA9XG4gICdbZm9vdHByaW50XSBVbnJlZ2lzdGVyZWQgc2NvcGUuIEN1c3RvbSBzY29wZSBmYWN0b3JpZXMgbXVzdCBjYWxsIHJlZ2lzdGVyU2NvcGVSdW50aW1lKHNjb3BlLCAnICtcbiAgJ3sgdGFyZ2V0LCBoYW5kbGVzQXNzaWdubWVudHMgfSkgZnJvbSBmb290cHJpbnRqcy9hZHZhbmNlZC4gU2NvcGVGYWNhZGUgYW5kIGJ1aWx0LWluIHNjb3BlIGZhY3RvcmllcyByZWdpc3RlciBhdXRvbWF0aWNhbGx5Lic7XG5cbmNvbnN0IFVOUkVHSVNURVJFRF9ERUNJU0lPTiA9XG4gIFwiW2Zvb3RwcmludF0gZGVjaWRlKCkvc2VsZWN0KCkgbmVlZHMgdGhlIHN0YWdlJ3Mgc2NvcGUgKHRoZSBvYmplY3QgeW91ciBzdGFnZSBmdW5jdGlvbiByZWNlaXZlcyksIFwiICtcbiAgJ25vdCBhIHBsYWluIG9iamVjdC4gQSBoYW5kLWJ1aWx0IHNjb3BlIG11c3QgYmUgcmVnaXN0ZXJlZCB3aXRoIHJlZ2lzdGVyU2NvcGVSdW50aW1lKHNjb3BlLCAnICtcbiAgJ3sgdGFyZ2V0LCBoYW5kbGVzQXNzaWdubWVudHMgfSkgZnJvbSBmb290cHJpbnRqcy9hZHZhbmNlZC4nO1xuXG4vKiogQGludGVybmFsIE5vIG1ldGhvZC1uYW1lIGd1ZXNzaW5nOiBhIG1pc3NpbmcgcmVnaXN0cmF0aW9uIGlzIGFuIGV4cGxpY2l0IG1pZ3JhdGlvbiBlcnJvci4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZXF1aXJlU2NvcGVSdW50aW1lKHNjb3BlOiB1bmtub3duLCBtZXNzYWdlOiBzdHJpbmcgPSBVTlJFR0lTVEVSRUQpOiBSZWFkb25seTxTY29wZVJ1bnRpbWU+IHtcbiAgY29uc3QgcnVudGltZSA9IHNjb3BlUnVudGltZUZvcihzY29wZSk7XG4gIGlmIChydW50aW1lKSByZXR1cm4gcnVudGltZTtcbiAgdGhyb3cgbmV3IFR5cGVFcnJvcihtZXNzYWdlKTtcbn1cblxuLyoqIEBpbnRlcm5hbCBkZWNpZGUoKS9zZWxlY3QoKSBhc2tlZCBvdXRzaWRlIGEgc3RhZ2U6IG5hbWUgVEhFTSwgbm90IHRoZSBjdXN0b20tZmFjdG9yeSBtaWdyYXRpb24uICovXG5leHBvcnQgZnVuY3Rpb24gcmVxdWlyZURlY2lzaW9uU2NvcGVSdW50aW1lKHNjb3BlOiB1bmtub3duKTogUmVhZG9ubHk8U2NvcGVSdW50aW1lPiB7XG4gIHJldHVybiByZXF1aXJlU2NvcGVSdW50aW1lKHNjb3BlLCBVTlJFR0lTVEVSRURfREVDSVNJT04pO1xufVxuIl19
67
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVudGltZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvc2NvcGUvcnVudGltZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7Ozs7O0dBUUc7OztBQThCSCxNQUFNLFFBQVEsR0FBRyxJQUFJLE9BQU8sRUFBa0MsQ0FBQztBQUUvRCxTQUFTLFFBQVEsQ0FBQyxLQUFjO0lBQzlCLE9BQU8sQ0FBQyxPQUFPLEtBQUssS0FBSyxRQUFRLElBQUksS0FBSyxLQUFLLElBQUksQ0FBQyxJQUFJLE9BQU8sS0FBSyxLQUFLLFVBQVUsQ0FBQztBQUN0RixDQUFDO0FBRUQ7Ozs7Ozs7OztHQVNHO0FBQ0gsU0FBZ0Isb0JBQW9CLENBQW1CLEtBQVEsRUFBRSxPQUFxQjtJQUNwRixJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQztRQUFFLE1BQU0sSUFBSSxTQUFTLENBQUMsK0NBQStDLENBQUMsQ0FBQztJQUMzRixJQUFJLENBQUMsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxPQUFPLE9BQU8sQ0FBQyxrQkFBa0IsS0FBSyxTQUFTLEVBQUUsQ0FBQztRQUM3RixNQUFNLElBQUksU0FBUyxDQUFDLDRFQUE0RSxDQUFDLENBQUM7SUFDcEcsQ0FBQztJQUNELElBQUksT0FBTyxDQUFDLFFBQVEsS0FBSyxTQUFTLElBQUksT0FBTyxPQUFPLENBQUMsUUFBUSxLQUFLLFVBQVUsRUFBRSxDQUFDO1FBQzdFLE1BQU0sSUFBSSxTQUFTLENBQUMsaUVBQWlFLENBQUMsQ0FBQztJQUN6RixDQUFDO0lBQ0QsUUFBUSxDQUFDLEdBQUcsQ0FDVixLQUFLLEVBQ0wsTUFBTSxDQUFDLE1BQU0sQ0FBQztRQUNaLE1BQU0sRUFBRSxPQUFPLENBQUMsTUFBTTtRQUN0QixrQkFBa0IsRUFBRSxPQUFPLENBQUMsa0JBQWtCO1FBQzlDLFFBQVEsRUFBRSxPQUFPLENBQUMsUUFBUTtLQUMzQixDQUFDLENBQ0gsQ0FBQztJQUNGLE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQztBQWpCRCxvREFpQkM7QUFFRCw4RUFBOEU7QUFDOUUsU0FBZ0IsZUFBZSxDQUFDLEtBQWM7SUFDNUMsT0FBTyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztBQUMzRCxDQUFDO0FBRkQsMENBRUM7QUFFRCxNQUFNLFlBQVksR0FDaEIsK0ZBQStGO0lBQy9GLDZIQUE2SCxDQUFDO0FBRWhJLE1BQU0scUJBQXFCLEdBQ3pCLG1HQUFtRztJQUNuRyw2RkFBNkY7SUFDN0YsNERBQTRELENBQUM7QUFFL0QsZ0dBQWdHO0FBQ2hHLFNBQWdCLG1CQUFtQixDQUFDLEtBQWMsRUFBRSxVQUFrQixZQUFZO0lBQ2hGLE1BQU0sT0FBTyxHQUFHLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN2QyxJQUFJLE9BQU87UUFBRSxPQUFPLE9BQU8sQ0FBQztJQUM1QixNQUFNLElBQUksU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQy9CLENBQUM7QUFKRCxrREFJQztBQUVELHNHQUFzRztBQUN0RyxTQUFnQiwyQkFBMkIsQ0FBQyxLQUFjO0lBQ3hELE9BQU8sbUJBQW1CLENBQUMsS0FBSyxFQUFFLHFCQUFxQixDQUFDLENBQUM7QUFDM0QsQ0FBQztBQUZELGtFQUVDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBUaGUgc2NvcGUg4oaUIGVuZ2luZSBwcm90b2NvbC4gQSB1c2VyLWZhY2luZyBzY29wZSBtYXkgYmUgYSBzdHJpY3Qgc2NoZW1hXG4gKiBwcm94eTogYXNraW5nIGl0IGZvciBhbiBpbmZyYXN0cnVjdHVyZSBtZW1iZXIgaXMgYSBzdGF0ZSBhY2Nlc3MsIG5vdCBhXG4gKiBjYXBhYmlsaXR5IGNoZWNrLiBSZWdpc3RyYXRpb24ga2VlcHMgdGhhdCBib3VuZGFyeSBlbnRpcmVseSBvdXQgb2YgYmFuZC5cbiAqXG4gKiBUaGlzIG1vZHVsZSBvd25zIGlkZW50aXR5IGFuZCBjYXBhYmlsaXRpZXMsIG5vdCB0aGVpciBpbXBsZW1lbnRhdGlvbi5cbiAqIFNjb3BlRmFjYWRlIG93bnMgcmVjb3JkaW5nLCByZWRhY3Rpb24gYW5kIHN0YXRlIGFjY2VzczsgY3VzdG9tIHNjb3BlcyBtYXlcbiAqIGV4cGxpY2l0bHkgc3VwcGx5IGEgc21hbGxlciBwb3J0IChpbmNsdWRpbmcgYHt9YCBmb3IgZGF0YS1vbmx5IHNjb3BlcykuXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBSdW5Db3JyZWxhdGlvbiB9IGZyb20gJy4uL2F0dGVtcHQvdHlwZXMuanMnO1xuaW1wb3J0IHR5cGUgeyBSZWRhY3Rpb25Qb2xpY3ksIFNjb3BlUmVjb3JkZXIgfSBmcm9tICcuL3R5cGVzLmpzJztcblxuLyoqIEVuZ2luZS1mYWNpbmcgY2FwYWJpbGl0aWVzLiBOZXZlciB1c2UgYSBzdHJpY3QgdXNlci1maWVsZCBwcm94eSBhcyB0aGlzIHBvcnQuICovXG5leHBvcnQgaW50ZXJmYWNlIFNjb3BlUnVudGltZVRhcmdldCB7XG4gIGF0dGFjaFNjb3BlUmVjb3JkZXI/KHJlY29yZGVyOiBTY29wZVJlY29yZGVyKTogdm9pZDtcbiAgZGV0YWNoU2NvcGVSZWNvcmRlcj8ocmVjb3JkZXJJZDogc3RyaW5nKTogdm9pZDtcbiAgZ2V0U2NvcGVSZWNvcmRlcnM/KCk6IFNjb3BlUmVjb3JkZXJbXTtcbiAgdXNlU2hhcmVkUmVkYWN0ZWRLZXlzPyhrZXlzOiBTZXQ8c3RyaW5nPik6IHZvaWQ7XG4gIHVzZVJlZGFjdGlvblBvbGljeT8ocG9saWN5OiBSZWRhY3Rpb25Qb2xpY3kpOiB2b2lkO1xuICAvKiogVGhlIHJ1bidzIGNvcnJlbGF0aW9uLCBzdGFtcGVkIG9uIGV2ZXJ5IHNjb3BlIGFuZCBlbWl0IGV2ZW50IHRoaXMgc2NvcGUgZmlyZXMgKDEwLjEpLiAqL1xuICB1c2VDb3JyZWxhdGlvbj8oY29ycmVsYXRpb246IFJ1bkNvcnJlbGF0aW9uIHwgdW5kZWZpbmVkKTogdm9pZDtcbiAgZ2V0UmVkYWN0ZWRLZXlzPygpOiBTZXQ8c3RyaW5nPjtcbiAgbm90aWZ5U3RhZ2VTdGFydD8oKTogdm9pZDtcbiAgbm90aWZ5U3RhZ2VFbmQ/KGR1cmF0aW9uPzogbnVtYmVyKTogdm9pZDtcbiAgbm90aWZ5UGF1c2U/KGRhdGE/OiB1bmtub3duKTogdm9pZDtcbiAgZ2V0VmFsdWU/KGtleT86IHN0cmluZyk6IHVua25vd247XG4gIHNldFZhbHVlPyhrZXk6IHN0cmluZywgdmFsdWU6IHVua25vd24sIHNob3VsZFJlZGFjdD86IGJvb2xlYW4sIGRlc2NyaXB0aW9uPzogc3RyaW5nKTogdm9pZDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTY29wZVJ1bnRpbWUge1xuICByZWFkb25seSB0YXJnZXQ6IFNjb3BlUnVudGltZVRhcmdldDtcbiAgLyoqIFRoZSBzY29wZSBhbHJlYWR5IHJvdXRlcyBwcm9wZXJ0eSBhc3NpZ25tZW50cyBpbnRvIG1hbmFnZWQgc3RhdGUuICovXG4gIHJlYWRvbmx5IGhhbmRsZXNBc3NpZ25tZW50czogYm9vbGVhbjtcbiAgLyoqIEluc3RhbGwgdGhpcyBleGVjdXRpb24ncyBicmVhayBjYWxsYmFjaywgaWYgdGhlIHNjb3BlIGV4cG9zZXMgb25lLiAqL1xuICByZWFkb25seSBzZXRCcmVhaz86IChicmVha1BpcGVsaW5lOiAocmVhc29uPzogc3RyaW5nKSA9PiB2b2lkKSA9PiB2b2lkO1xufVxuXG5jb25zdCBydW50aW1lcyA9IG5ldyBXZWFrTWFwPG9iamVjdCwgUmVhZG9ubHk8U2NvcGVSdW50aW1lPj4oKTtcblxuZnVuY3Rpb24gaXNPYmplY3QodmFsdWU6IHVua25vd24pOiB2YWx1ZSBpcyBvYmplY3Qge1xuICByZXR1cm4gKHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdmFsdWUgIT09IG51bGwpIHx8IHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJztcbn1cblxuLyoqXG4gKiBSZWdpc3RlciBhIGN1c3RvbSBzY29wZSdzIGVuZ2luZS1mYWNpbmcgcG9ydCBhbmQgcmV0dXJuIHRoZSBTQU1FIHNjb3BlLlxuICogUmVnaXN0cmF0aW9uIG5ldmVyIHJlYWRzLCB3cml0ZXMgb3IgZW51bWVyYXRlcyBwcm9wZXJ0aWVzIG9uIGBzY29wZWAuXG4gKiBSZS1yZWdpc3RlcmluZyBleHBsaWNpdGx5IHJlcGxhY2VzIGl0cyBiaW5kaW5nLiBUaGUgZGVzY3JpcHRvciBpcyBjb3BpZWRcbiAqIGFuZCBmcm96ZW47IHRoZSB0YXJnZXQgaXRzZWxmIHJlbWFpbnMgbGl2ZSBhbmQgYmVsb25ncyB0byBpdHMgcHJvdmlkZXIuXG4gKlxuICogQGV4YW1wbGVcbiAqIGNvbnN0IGZhY2FkZSA9IG5ldyBTY29wZUZhY2FkZShjb250ZXh0LCBzdGFnZU5hbWUsIGlucHV0LCBlbnYpO1xuICogcmV0dXJuIHJlZ2lzdGVyU2NvcGVSdW50aW1lKG15UHJveHksIHsgdGFyZ2V0OiBmYWNhZGUsIGhhbmRsZXNBc3NpZ25tZW50czogdHJ1ZSB9KTtcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlZ2lzdGVyU2NvcGVSdW50aW1lPFQgZXh0ZW5kcyBvYmplY3Q+KHNjb3BlOiBULCBydW50aW1lOiBTY29wZVJ1bnRpbWUpOiBUIHtcbiAgaWYgKCFpc09iamVjdChzY29wZSkpIHRocm93IG5ldyBUeXBlRXJyb3IoJ3JlZ2lzdGVyU2NvcGVSdW50aW1lOiBzY29wZSBtdXN0IGJlIGFuIG9iamVjdCcpO1xuICBpZiAoIXJ1bnRpbWUgfHwgIWlzT2JqZWN0KHJ1bnRpbWUudGFyZ2V0KSB8fCB0eXBlb2YgcnVudGltZS5oYW5kbGVzQXNzaWdubWVudHMgIT09ICdib29sZWFuJykge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ3JlZ2lzdGVyU2NvcGVSdW50aW1lOiBwcm92aWRlIGEgdGFyZ2V0IHBvcnQgYW5kIGJvb2xlYW4gaGFuZGxlc0Fzc2lnbm1lbnRzJyk7XG4gIH1cbiAgaWYgKHJ1bnRpbWUuc2V0QnJlYWsgIT09IHVuZGVmaW5lZCAmJiB0eXBlb2YgcnVudGltZS5zZXRCcmVhayAhPT0gJ2Z1bmN0aW9uJykge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ3JlZ2lzdGVyU2NvcGVSdW50aW1lOiBzZXRCcmVhayBtdXN0IGJlIGEgZnVuY3Rpb24gd2hlbiBzdXBwbGllZCcpO1xuICB9XG4gIHJ1bnRpbWVzLnNldChcbiAgICBzY29wZSxcbiAgICBPYmplY3QuZnJlZXplKHtcbiAgICAgIHRhcmdldDogcnVudGltZS50YXJnZXQsXG4gICAgICBoYW5kbGVzQXNzaWdubWVudHM6IHJ1bnRpbWUuaGFuZGxlc0Fzc2lnbm1lbnRzLFxuICAgICAgc2V0QnJlYWs6IHJ1bnRpbWUuc2V0QnJlYWssXG4gICAgfSksXG4gICk7XG4gIHJldHVybiBzY29wZTtcbn1cblxuLyoqIEBpbnRlcm5hbCBPcHRpb25hbCBvbmx5IGZvciB3cmFwcGVycyB0aGF0IGFsc28gd29yayBvdXRzaWRlIHRoZSBlbmdpbmUuICovXG5leHBvcnQgZnVuY3Rpb24gc2NvcGVSdW50aW1lRm9yKHNjb3BlOiB1bmtub3duKTogUmVhZG9ubHk8U2NvcGVSdW50aW1lPiB8IHVuZGVmaW5lZCB7XG4gIHJldHVybiBpc09iamVjdChzY29wZSkgPyBydW50aW1lcy5nZXQoc2NvcGUpIDogdW5kZWZpbmVkO1xufVxuXG5jb25zdCBVTlJFR0lTVEVSRUQgPVxuICAnW2Zvb3RwcmludF0gVW5yZWdpc3RlcmVkIHNjb3BlLiBDdXN0b20gc2NvcGUgZmFjdG9yaWVzIG11c3QgY2FsbCByZWdpc3RlclNjb3BlUnVudGltZShzY29wZSwgJyArXG4gICd7IHRhcmdldCwgaGFuZGxlc0Fzc2lnbm1lbnRzIH0pIGZyb20gZm9vdHByaW50anMvYWR2YW5jZWQuIFNjb3BlRmFjYWRlIGFuZCBidWlsdC1pbiBzY29wZSBmYWN0b3JpZXMgcmVnaXN0ZXIgYXV0b21hdGljYWxseS4nO1xuXG5jb25zdCBVTlJFR0lTVEVSRURfREVDSVNJT04gPVxuICBcIltmb290cHJpbnRdIGRlY2lkZSgpL3NlbGVjdCgpIG5lZWRzIHRoZSBzdGFnZSdzIHNjb3BlICh0aGUgb2JqZWN0IHlvdXIgc3RhZ2UgZnVuY3Rpb24gcmVjZWl2ZXMpLCBcIiArXG4gICdub3QgYSBwbGFpbiBvYmplY3QuIEEgaGFuZC1idWlsdCBzY29wZSBtdXN0IGJlIHJlZ2lzdGVyZWQgd2l0aCByZWdpc3RlclNjb3BlUnVudGltZShzY29wZSwgJyArXG4gICd7IHRhcmdldCwgaGFuZGxlc0Fzc2lnbm1lbnRzIH0pIGZyb20gZm9vdHByaW50anMvYWR2YW5jZWQuJztcblxuLyoqIEBpbnRlcm5hbCBObyBtZXRob2QtbmFtZSBndWVzc2luZzogYSBtaXNzaW5nIHJlZ2lzdHJhdGlvbiBpcyBhbiBleHBsaWNpdCBtaWdyYXRpb24gZXJyb3IuICovXG5leHBvcnQgZnVuY3Rpb24gcmVxdWlyZVNjb3BlUnVudGltZShzY29wZTogdW5rbm93biwgbWVzc2FnZTogc3RyaW5nID0gVU5SRUdJU1RFUkVEKTogUmVhZG9ubHk8U2NvcGVSdW50aW1lPiB7XG4gIGNvbnN0IHJ1bnRpbWUgPSBzY29wZVJ1bnRpbWVGb3Ioc2NvcGUpO1xuICBpZiAocnVudGltZSkgcmV0dXJuIHJ1bnRpbWU7XG4gIHRocm93IG5ldyBUeXBlRXJyb3IobWVzc2FnZSk7XG59XG5cbi8qKiBAaW50ZXJuYWwgZGVjaWRlKCkvc2VsZWN0KCkgYXNrZWQgb3V0c2lkZSBhIHN0YWdlOiBuYW1lIFRIRU0sIG5vdCB0aGUgY3VzdG9tLWZhY3RvcnkgbWlncmF0aW9uLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlcXVpcmVEZWNpc2lvblNjb3BlUnVudGltZShzY29wZTogdW5rbm93bik6IFJlYWRvbmx5PFNjb3BlUnVudGltZT4ge1xuICByZXR1cm4gcmVxdWlyZVNjb3BlUnVudGltZShzY29wZSwgVU5SRUdJU1RFUkVEX0RFQ0lTSU9OKTtcbn1cbiJdfQ==
@@ -7,4 +7,4 @@
7
7
  * attached to Scope instances to observe read/write/commit operations.
8
8
  */
9
9
  Object.defineProperty(exports, "__esModule", { value: true });
10
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3Njb3BlL3R5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7O0dBTUciLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFNjb3BlIFR5cGUgRGVmaW5pdGlvbnNcbiAqXG4gKiBDb3JlIHR5cGVzIGZvciB0aGUgY29tcG9zYWJsZSBTY29wZSBzeXN0ZW0gd2l0aCBwbHVnZ2FibGUgUmVjb3JkZXJzLlxuICogQXJjaGl0ZWN0dXJlIGZvbGxvd3MgY29tcG9zaXRpb24tb3Zlci1pbmhlcml0YW5jZTogUmVjb3JkZXJzIGFyZVxuICogYXR0YWNoZWQgdG8gU2NvcGUgaW5zdGFuY2VzIHRvIG9ic2VydmUgcmVhZC93cml0ZS9jb21taXQgb3BlcmF0aW9ucy5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7IFN0cnVjdHVyZWRFcnJvckluZm8gfSBmcm9tICcuLi9lcnJvcnMvZXJyb3JJbmZvLmpzJztcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gRXZlbnQgVHlwZXNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuZXhwb3J0IGludGVyZmFjZSBSZWNvcmRlckNvbnRleHQge1xuICBzdGFnZU5hbWU6IHN0cmluZztcbiAgLyoqIFN0YWJsZSBzdGFnZSBpZGVudGlmaWVyIChtYXRjaGVzIHNwZWMgbm9kZSBpZCkuICovXG4gIHN0YWdlSWQ6IHN0cmluZztcbiAgLyoqIFVuaXF1ZSBwZXItZXhlY3V0aW9uLXN0ZXAgaWRlbnRpZmllci4gRm9ybWF0OiBbc3ViZmxvd1BhdGgvXXN0YWdlSWQjZXhlY3V0aW9uSW5kZXggKi9cbiAgcnVudGltZVN0YWdlSWQ6IHN0cmluZztcbiAgcGlwZWxpbmVJZDogc3RyaW5nO1xuICB0aW1lc3RhbXA6IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZWFkRXZlbnQgZXh0ZW5kcyBSZWNvcmRlckNvbnRleHQge1xuICBrZXk/OiBzdHJpbmc7XG4gIHZhbHVlOiB1bmtub3duO1xuICAvKiogVHJ1ZSB3aGVuIHRoZSB2YWx1ZSBoYXMgYmVlbiByZWRhY3RlZCBmb3IgUElJIHByb3RlY3Rpb24uICovXG4gIHJlZGFjdGVkPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBXcml0ZUV2ZW50IGV4dGVuZHMgUmVjb3JkZXJDb250ZXh0IHtcbiAga2V5OiBzdHJpbmc7XG4gIHZhbHVlOiB1bmtub3duO1xuICBvcGVyYXRpb246ICdzZXQnIHwgJ3VwZGF0ZScgfCAnZGVsZXRlJztcbiAgLyoqIFRydWUgd2hlbiB0aGUgdmFsdWUgaGFzIGJlZW4gcmVkYWN0ZWQgZm9yIFBJSSBwcm90ZWN0aW9uLiAqL1xuICByZWRhY3RlZD86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29tbWl0RXZlbnQgZXh0ZW5kcyBSZWNvcmRlckNvbnRleHQge1xuICBtdXRhdGlvbnM6IEFycmF5PHtcbiAgICBrZXk6IHN0cmluZztcbiAgICB2YWx1ZTogdW5rbm93bjtcbiAgICBvcGVyYXRpb246ICdzZXQnIHwgJ3VwZGF0ZScgfCAnZGVsZXRlJztcbiAgfT47XG59XG5cbi8qKlxuICogQSByZWNvcmRlciB0aHJldyBpbiBhIHNjb3BlLWNoYW5uZWwgaG9vayAoYG9wZXJhdGlvbmAgc2F5cyB3aGljaCBraW5kOlxuICogYSByZWFkLCBhIHdyaXRlLCBvciBhIGNvbW1pdCBob29rKS4gRGVsaXZlcmVkIHRvIGV2ZXJ5IHJlY29yZGVyIG9uIHRoZVxuICogc2NvcGUgY2hhbm5lbCwgaW5saW5lIGFuZCBkZWZlcnJlZCBhbGlrZSAoYHJlY29yZGVyL2hvb2tzLnRzIMK3XG4gKiByZWNvcmRlckZhaWx1cmVFdmVudGApLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEVycm9yRXZlbnQgZXh0ZW5kcyBSZWNvcmRlckNvbnRleHQge1xuICAvKipcbiAgICogV2hhdCB0aGUgcmVjb3JkZXIgdGhyZXcsIGluIHRoZSBzdHJ1Y3R1cmVkIGZvcm0gKDkuMzkuMCk6IGBtZXNzYWdlYCBhbmRcbiAgICogYG5hbWVgIHJlYWQgYXMgYmVmb3JlOyBgcmF3YCBpcyB0aGUgdGhyb3duIHZhbHVlIGl0c2VsZiAoYW4gYEVycm9yYCwgYVxuICAgKiBzdHJpbmcsIGFueXRoaW5nKS4gT25lIHNoYXBlIG9uIGV2ZXJ5IHBhdGgg4oCUIHVudGlsIDkuMzguMCB0aGUgaW5saW5lXG4gICAqIHBhdGhzIHBhc3NlZCB0aGUgcmF3IHRocm93biB2YWx1ZSBhbmQgdGhlIGRlZmVycmVkIHRpZXIgYSBgbmV3IEVycm9yKC4uLilgLlxuICAgKi9cbiAgZXJyb3I6IFN0cnVjdHVyZWRFcnJvckluZm87XG4gIG9wZXJhdGlvbjogJ3JlYWQnIHwgJ3dyaXRlJyB8ICdjb21taXQnO1xuICBrZXk/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBFeHBsaWNpdCBjaGFubmVsIGRpc2NyaW1pbmFudCDigJQgYCdzY29wZSdgIG9uIGV2ZXJ5IGVuZ2luZS1kaXNwYXRjaGVkXG4gICAqIGV2ZW50LiBgaXNGbG93RXZlbnQoKWAgY2hlY2tzIGl0IGZpcnN0IChiYWNrbG9nIEIzKTsgb3B0aW9uYWwgc29cbiAgICogY29uc3VtZXItZmFicmljYXRlZCBldmVudHMgKHRlc3RzLCByZXBsYXlzKSByZW1haW4gdHlwZS12YWxpZCBhbmQgZmFsbFxuICAgKiBiYWNrIHRvIHRoZSBsZWdhY3kgcGlwZWxpbmVJZC1wcmVzZW5jZSBoZXVyaXN0aWMuXG4gICAqL1xuICBjaGFubmVsPzogJ3Njb3BlJztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTdGFnZUV2ZW50IGV4dGVuZHMgUmVjb3JkZXJDb250ZXh0IHtcbiAgZHVyYXRpb24/OiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGF1c2VFdmVudCBleHRlbmRzIFJlY29yZGVyQ29udGV4dCB7XG4gIHBhdXNlRGF0YT86IHVua25vd247XG4gIC8qKiBFeHBsaWNpdCBjaGFubmVsIGRpc2NyaW1pbmFudCDigJQgc2VlIHtAbGluayBFcnJvckV2ZW50LmNoYW5uZWx9LiAqL1xuICBjaGFubmVsPzogJ3Njb3BlJztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZXN1bWVFdmVudCBleHRlbmRzIFJlY29yZGVyQ29udGV4dCB7XG4gIGhhc0lucHV0OiBib29sZWFuO1xuICAvKiogVGhlIHBhdXNlZCBleGVjdXRpb24gdGhpcyByZXN1bWUgY29udGludWVzICg5LjM3LjApIOKAlCBzZWUgYFRyYXZlcnNhbENvbnRleHQucmVzdW1lZEZyb21gLiAqL1xuICByZXN1bWVkRnJvbT86IGltcG9ydCgnLi4vZW5naW5lL25hcnJhdGl2ZS90eXBlcy5qcycpLlJlc3VtZUxpbms7XG4gIC8qKiBFeHBsaWNpdCBjaGFubmVsIGRpc2NyaW1pbmFudCDigJQgc2VlIHtAbGluayBFcnJvckV2ZW50LmNoYW5uZWx9LiAqL1xuICBjaGFubmVsPzogJ3Njb3BlJztcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gUmVkYWN0aW9uIFBvbGljeVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKipcbiAqIGBSZWRhY3Rpb25Qb2xpY3lgIGFuZCBgUmVkYWN0aW9uUmVwb3J0YCBhcmUgT1dORUQgYnkgYG1lbW9yeS9yZWRhY3Rpb24udHNgXG4gKiAodGhlIE9ORSBvd25lciBvZiB0aGUgdmVyZGljdCDigJQgc2VlIHRoZSBsYXcgdGhlcmUpOyB0aGV5IGFyZSByZS1leHBvcnRlZFxuICogaGVyZSBzbyB0aGUgcHVibGljIHBhdGggYGZvb3RwcmludGpzYCDihpIgYFJlZGFjdGlvblBvbGljeWAgaXMgdW5jaGFuZ2VkLlxuICovXG5leHBvcnQgdHlwZSB7IFJlZGFjdGlvblBvbGljeSwgUmVkYWN0aW9uUmVwb3J0IH0gZnJvbSAnLi4vbWVtb3J5L3JlZGFjdGlvbi5qcyc7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFNjb3BlUmVjb3JkZXIgSW50ZXJmYWNlXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKlxuICogUGx1Z2dhYmxlIG9ic2VydmVyIGZvciBzY29wZSBvcGVyYXRpb25zLlxuICpcbiAqIEFsbCBtZXRob2RzIGFyZSBvcHRpb25hbCDigJQgaW1wbGVtZW50IG9ubHkgdGhlIGhvb2tzIHlvdSBuZWVkLlxuICogUmVjb3JkZXJzIGFyZSBpbnZva2VkIHN5bmNocm9ub3VzbHkgaW4gYXR0YWNobWVudCBvcmRlci5cbiAqIElmIGEgcmVjb3JkZXIgdGhyb3dzLCB0aGUgZXJyb3IgaXMgY2F1Z2h0IGFuZCBwYXNzZWQgdG8gb25FcnJvclxuICogaG9va3Mgb2Ygb3RoZXIgcmVjb3JkZXJzOyB0aGUgc2NvcGUgb3BlcmF0aW9uIGNvbnRpbnVlcyBub3JtYWxseS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTY29wZVJlY29yZGVyIHtcbiAgcmVhZG9ubHkgaWQ6IHN0cmluZztcbiAgb25SZWFkPyhldmVudDogUmVhZEV2ZW50KTogdm9pZDtcbiAgb25Xcml0ZT8oZXZlbnQ6IFdyaXRlRXZlbnQpOiB2b2lkO1xuICBvbkNvbW1pdD8oZXZlbnQ6IENvbW1pdEV2ZW50KTogdm9pZDtcbiAgb25FcnJvcj8oZXZlbnQ6IEVycm9yRXZlbnQpOiB2b2lkO1xuICBvblN0YWdlU3RhcnQ/KGV2ZW50OiBTdGFnZUV2ZW50KTogdm9pZDtcbiAgb25TdGFnZUVuZD8oZXZlbnQ6IFN0YWdlRXZlbnQpOiB2b2lkO1xuICBvblBhdXNlPyhldmVudDogUGF1c2VFdmVudCk6IHZvaWQ7XG4gIG9uUmVzdW1lPyhldmVudDogUmVzdW1lRXZlbnQpOiB2b2lkO1xuICAvKipcbiAgICogRmlyZXMgZm9yIGV2ZXJ5IGBzY29wZS4kZW1pdChuYW1lLCBwYXlsb2FkKWAgY2FsbCBkdXJpbmcgYSBzdGFnZS5cbiAgICogT3B0aW9uYWwg4oCUIGltcGxlbWVudCBvbmx5IGlmIHlvdSB3YW50IHRvIG9ic2VydmUgY29uc3VtZXItZW1pdHRlZFxuICAgKiBzdHJ1Y3R1cmVkIGV2ZW50cy4gU2VlIGBFbWl0UmVjb3JkZXJgIGZvciB0aGUgZm9jdXNlZCBpbnRlcmZhY2VcbiAgICogKHN0cnVjdHVyYWxseSBjb21wYXRpYmxlOyB0aGlzIGZpZWxkIGlzIHRoZSBzYW1lIHNoYXBlKS5cbiAgICpcbiAgICogQHNlZSBFbWl0UmVjb3JkZXIgaW4gYHNyYy9saWIvcmVjb3JkZXIvRW1pdFJlY29yZGVyLnRzYFxuICAgKi9cbiAgb25FbWl0PyhldmVudDogaW1wb3J0KCcuLi9yZWNvcmRlci9FbWl0UmVjb3JkZXIuanMnKS5FbWl0RXZlbnQpOiB2b2lkO1xuICAvKiogUmVzZXQgc3RhdGUgYmVmb3JlIGVhY2ggZXhlY3V0b3IucnVuKCkg4oCUIHByZXZlbnRzIGNyb3NzLXJ1biBhY2N1bXVsYXRpb24uICovXG4gIGNsZWFyPygpOiB2b2lkO1xuICAvKiogRXhwb3NlIGNvbGxlY3RlZCBkYXRhIGZvciBpbmNsdXNpb24gaW4gZXhlY3V0b3IuZ2V0U25hcHNob3QoKS5yZWNvcmRlcnMuICovXG4gIHRvU25hcHNob3Q/KCk6IGltcG9ydCgnLi4vcmVjb3JkZXIvc25hcHNob3QuanMnKS5SZWNvcmRlckJ1bmRsZTtcbn1cbiJdfQ==
10
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3Njb3BlL3R5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7O0dBTUciLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFNjb3BlIFR5cGUgRGVmaW5pdGlvbnNcbiAqXG4gKiBDb3JlIHR5cGVzIGZvciB0aGUgY29tcG9zYWJsZSBTY29wZSBzeXN0ZW0gd2l0aCBwbHVnZ2FibGUgUmVjb3JkZXJzLlxuICogQXJjaGl0ZWN0dXJlIGZvbGxvd3MgY29tcG9zaXRpb24tb3Zlci1pbmhlcml0YW5jZTogUmVjb3JkZXJzIGFyZVxuICogYXR0YWNoZWQgdG8gU2NvcGUgaW5zdGFuY2VzIHRvIG9ic2VydmUgcmVhZC93cml0ZS9jb21taXQgb3BlcmF0aW9ucy5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7IFJ1bkNvcnJlbGF0aW9uIH0gZnJvbSAnLi4vYXR0ZW1wdC90eXBlcy5qcyc7XG5pbXBvcnQgdHlwZSB7IFN0cnVjdHVyZWRFcnJvckluZm8gfSBmcm9tICcuLi9lcnJvcnMvZXJyb3JJbmZvLmpzJztcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gRXZlbnQgVHlwZXNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuZXhwb3J0IGludGVyZmFjZSBSZWNvcmRlckNvbnRleHQge1xuICBzdGFnZU5hbWU6IHN0cmluZztcbiAgLyoqIFN0YWJsZSBzdGFnZSBpZGVudGlmaWVyIChtYXRjaGVzIHNwZWMgbm9kZSBpZCkuICovXG4gIHN0YWdlSWQ6IHN0cmluZztcbiAgLyoqIFVuaXF1ZSBwZXItZXhlY3V0aW9uLXN0ZXAgaWRlbnRpZmllci4gRm9ybWF0OiBbc3ViZmxvd1BhdGgvXXN0YWdlSWQjZXhlY3V0aW9uSW5kZXggKi9cbiAgcnVudGltZVN0YWdlSWQ6IHN0cmluZztcbiAgcGlwZWxpbmVJZDogc3RyaW5nO1xuICB0aW1lc3RhbXA6IG51bWJlcjtcbiAgLyoqXG4gICAqIFRoZSBydW4ncyBjb3JyZWxhdGlvbiAoMTAuMSkg4oCUIHRoZSBzYW1lIGZyb3plbiBvYmplY3QgYXMgYFRyYXZlcnNhbENvbnRleHQuY29ycmVsYXRpb25gIG9uIHRoZSBmbG93IGV2ZW50c1xuICAgKiBhbmQgYGdldFNuYXBzaG90KCkuY29ycmVsYXRpb25gLiBBYnNlbnQg4oCUIG5vIGtleSDigJQgd2hlbiB0aGUgcnVuJ3MgZW52IGdhdmUgbm9uZS5cbiAgICovXG4gIHJlYWRvbmx5IGNvcnJlbGF0aW9uPzogUnVuQ29ycmVsYXRpb247XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVhZEV2ZW50IGV4dGVuZHMgUmVjb3JkZXJDb250ZXh0IHtcbiAga2V5Pzogc3RyaW5nO1xuICB2YWx1ZTogdW5rbm93bjtcbiAgLyoqIFRydWUgd2hlbiB0aGUgdmFsdWUgaGFzIGJlZW4gcmVkYWN0ZWQgZm9yIFBJSSBwcm90ZWN0aW9uLiAqL1xuICByZWRhY3RlZD86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgV3JpdGVFdmVudCBleHRlbmRzIFJlY29yZGVyQ29udGV4dCB7XG4gIGtleTogc3RyaW5nO1xuICB2YWx1ZTogdW5rbm93bjtcbiAgb3BlcmF0aW9uOiAnc2V0JyB8ICd1cGRhdGUnIHwgJ2RlbGV0ZSc7XG4gIC8qKiBUcnVlIHdoZW4gdGhlIHZhbHVlIGhhcyBiZWVuIHJlZGFjdGVkIGZvciBQSUkgcHJvdGVjdGlvbi4gKi9cbiAgcmVkYWN0ZWQ/OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvbW1pdEV2ZW50IGV4dGVuZHMgUmVjb3JkZXJDb250ZXh0IHtcbiAgbXV0YXRpb25zOiBBcnJheTx7XG4gICAga2V5OiBzdHJpbmc7XG4gICAgdmFsdWU6IHVua25vd247XG4gICAgb3BlcmF0aW9uOiAnc2V0JyB8ICd1cGRhdGUnIHwgJ2RlbGV0ZSc7XG4gIH0+O1xufVxuXG4vKipcbiAqIEEgcmVjb3JkZXIgdGhyZXcgaW4gYSBzY29wZS1jaGFubmVsIGhvb2sgKGBvcGVyYXRpb25gIHNheXMgd2hpY2gga2luZDpcbiAqIGEgcmVhZCwgYSB3cml0ZSwgb3IgYSBjb21taXQgaG9vaykuIERlbGl2ZXJlZCB0byBldmVyeSByZWNvcmRlciBvbiB0aGVcbiAqIHNjb3BlIGNoYW5uZWwsIGlubGluZSBhbmQgZGVmZXJyZWQgYWxpa2UgKGByZWNvcmRlci9ob29rcy50cyDCt1xuICogcmVjb3JkZXJGYWlsdXJlRXZlbnRgKS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFcnJvckV2ZW50IGV4dGVuZHMgUmVjb3JkZXJDb250ZXh0IHtcbiAgLyoqXG4gICAqIFdoYXQgdGhlIHJlY29yZGVyIHRocmV3LCBpbiB0aGUgc3RydWN0dXJlZCBmb3JtICg5LjM5LjApOiBgbWVzc2FnZWAgYW5kXG4gICAqIGBuYW1lYCByZWFkIGFzIGJlZm9yZTsgYHJhd2AgaXMgdGhlIHRocm93biB2YWx1ZSBpdHNlbGYgKGFuIGBFcnJvcmAsIGFcbiAgICogc3RyaW5nLCBhbnl0aGluZykuIE9uZSBzaGFwZSBvbiBldmVyeSBwYXRoIOKAlCB1bnRpbCA5LjM4LjAgdGhlIGlubGluZVxuICAgKiBwYXRocyBwYXNzZWQgdGhlIHJhdyB0aHJvd24gdmFsdWUgYW5kIHRoZSBkZWZlcnJlZCB0aWVyIGEgYG5ldyBFcnJvciguLi4pYC5cbiAgICovXG4gIGVycm9yOiBTdHJ1Y3R1cmVkRXJyb3JJbmZvO1xuICBvcGVyYXRpb246ICdyZWFkJyB8ICd3cml0ZScgfCAnY29tbWl0JztcbiAga2V5Pzogc3RyaW5nO1xuICAvKipcbiAgICogRXhwbGljaXQgY2hhbm5lbCBkaXNjcmltaW5hbnQg4oCUIGAnc2NvcGUnYCBvbiBldmVyeSBlbmdpbmUtZGlzcGF0Y2hlZFxuICAgKiBldmVudC4gYGlzRmxvd0V2ZW50KClgIGNoZWNrcyBpdCBmaXJzdCAoYmFja2xvZyBCMyk7IG9wdGlvbmFsIHNvXG4gICAqIGNvbnN1bWVyLWZhYnJpY2F0ZWQgZXZlbnRzICh0ZXN0cywgcmVwbGF5cykgcmVtYWluIHR5cGUtdmFsaWQgYW5kIGZhbGxcbiAgICogYmFjayB0byB0aGUgbGVnYWN5IHBpcGVsaW5lSWQtcHJlc2VuY2UgaGV1cmlzdGljLlxuICAgKi9cbiAgY2hhbm5lbD86ICdzY29wZSc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3RhZ2VFdmVudCBleHRlbmRzIFJlY29yZGVyQ29udGV4dCB7XG4gIGR1cmF0aW9uPzogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFBhdXNlRXZlbnQgZXh0ZW5kcyBSZWNvcmRlckNvbnRleHQge1xuICBwYXVzZURhdGE/OiB1bmtub3duO1xuICAvKiogRXhwbGljaXQgY2hhbm5lbCBkaXNjcmltaW5hbnQg4oCUIHNlZSB7QGxpbmsgRXJyb3JFdmVudC5jaGFubmVsfS4gKi9cbiAgY2hhbm5lbD86ICdzY29wZSc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVzdW1lRXZlbnQgZXh0ZW5kcyBSZWNvcmRlckNvbnRleHQge1xuICBoYXNJbnB1dDogYm9vbGVhbjtcbiAgLyoqIFRoZSBwYXVzZWQgZXhlY3V0aW9uIHRoaXMgcmVzdW1lIGNvbnRpbnVlcyAoOS4zNy4wKSDigJQgc2VlIGBUcmF2ZXJzYWxDb250ZXh0LnJlc3VtZWRGcm9tYC4gKi9cbiAgcmVzdW1lZEZyb20/OiBpbXBvcnQoJy4uL2VuZ2luZS9uYXJyYXRpdmUvdHlwZXMuanMnKS5SZXN1bWVMaW5rO1xuICAvKiogRXhwbGljaXQgY2hhbm5lbCBkaXNjcmltaW5hbnQg4oCUIHNlZSB7QGxpbmsgRXJyb3JFdmVudC5jaGFubmVsfS4gKi9cbiAgY2hhbm5lbD86ICdzY29wZSc7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFJlZGFjdGlvbiBQb2xpY3lcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqXG4gKiBgUmVkYWN0aW9uUG9saWN5YCBhbmQgYFJlZGFjdGlvblJlcG9ydGAgYXJlIE9XTkVEIGJ5IGBtZW1vcnkvcmVkYWN0aW9uLnRzYFxuICogKHRoZSBPTkUgb3duZXIgb2YgdGhlIHZlcmRpY3Qg4oCUIHNlZSB0aGUgbGF3IHRoZXJlKTsgdGhleSBhcmUgcmUtZXhwb3J0ZWRcbiAqIGhlcmUgc28gdGhlIHB1YmxpYyBwYXRoIGBmb290cHJpbnRqc2Ag4oaSIGBSZWRhY3Rpb25Qb2xpY3lgIGlzIHVuY2hhbmdlZC5cbiAqL1xuZXhwb3J0IHR5cGUgeyBSZWRhY3Rpb25Qb2xpY3ksIFJlZGFjdGlvblJlcG9ydCB9IGZyb20gJy4uL21lbW9yeS9yZWRhY3Rpb24uanMnO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBTY29wZVJlY29yZGVyIEludGVyZmFjZVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKipcbiAqIFBsdWdnYWJsZSBvYnNlcnZlciBmb3Igc2NvcGUgb3BlcmF0aW9ucy5cbiAqXG4gKiBBbGwgbWV0aG9kcyBhcmUgb3B0aW9uYWwg4oCUIGltcGxlbWVudCBvbmx5IHRoZSBob29rcyB5b3UgbmVlZC5cbiAqIFJlY29yZGVycyBhcmUgaW52b2tlZCBzeW5jaHJvbm91c2x5IGluIGF0dGFjaG1lbnQgb3JkZXIuXG4gKiBJZiBhIHJlY29yZGVyIHRocm93cywgdGhlIGVycm9yIGlzIGNhdWdodCBhbmQgcGFzc2VkIHRvIG9uRXJyb3JcbiAqIGhvb2tzIG9mIG90aGVyIHJlY29yZGVyczsgdGhlIHNjb3BlIG9wZXJhdGlvbiBjb250aW51ZXMgbm9ybWFsbHkuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2NvcGVSZWNvcmRlciB7XG4gIHJlYWRvbmx5IGlkOiBzdHJpbmc7XG4gIG9uUmVhZD8oZXZlbnQ6IFJlYWRFdmVudCk6IHZvaWQ7XG4gIG9uV3JpdGU/KGV2ZW50OiBXcml0ZUV2ZW50KTogdm9pZDtcbiAgb25Db21taXQ/KGV2ZW50OiBDb21taXRFdmVudCk6IHZvaWQ7XG4gIG9uRXJyb3I/KGV2ZW50OiBFcnJvckV2ZW50KTogdm9pZDtcbiAgb25TdGFnZVN0YXJ0PyhldmVudDogU3RhZ2VFdmVudCk6IHZvaWQ7XG4gIG9uU3RhZ2VFbmQ/KGV2ZW50OiBTdGFnZUV2ZW50KTogdm9pZDtcbiAgb25QYXVzZT8oZXZlbnQ6IFBhdXNlRXZlbnQpOiB2b2lkO1xuICBvblJlc3VtZT8oZXZlbnQ6IFJlc3VtZUV2ZW50KTogdm9pZDtcbiAgLyoqXG4gICAqIEZpcmVzIGZvciBldmVyeSBgc2NvcGUuJGVtaXQobmFtZSwgcGF5bG9hZClgIGNhbGwgZHVyaW5nIGEgc3RhZ2UuXG4gICAqIE9wdGlvbmFsIOKAlCBpbXBsZW1lbnQgb25seSBpZiB5b3Ugd2FudCB0byBvYnNlcnZlIGNvbnN1bWVyLWVtaXR0ZWRcbiAgICogc3RydWN0dXJlZCBldmVudHMuIFNlZSBgRW1pdFJlY29yZGVyYCBmb3IgdGhlIGZvY3VzZWQgaW50ZXJmYWNlXG4gICAqIChzdHJ1Y3R1cmFsbHkgY29tcGF0aWJsZTsgdGhpcyBmaWVsZCBpcyB0aGUgc2FtZSBzaGFwZSkuXG4gICAqXG4gICAqIEBzZWUgRW1pdFJlY29yZGVyIGluIGBzcmMvbGliL3JlY29yZGVyL0VtaXRSZWNvcmRlci50c2BcbiAgICovXG4gIG9uRW1pdD8oZXZlbnQ6IGltcG9ydCgnLi4vcmVjb3JkZXIvRW1pdFJlY29yZGVyLmpzJykuRW1pdEV2ZW50KTogdm9pZDtcbiAgLyoqIFJlc2V0IHN0YXRlIGJlZm9yZSBlYWNoIGV4ZWN1dG9yLnJ1bigpIOKAlCBwcmV2ZW50cyBjcm9zcy1ydW4gYWNjdW11bGF0aW9uLiAqL1xuICBjbGVhcj8oKTogdm9pZDtcbiAgLyoqIEV4cG9zZSBjb2xsZWN0ZWQgZGF0YSBmb3IgaW5jbHVzaW9uIGluIGV4ZWN1dG9yLmdldFNuYXBzaG90KCkucmVjb3JkZXJzLiAqL1xuICB0b1NuYXBzaG90PygpOiBpbXBvcnQoJy4uL3JlY29yZGVyL3NuYXBzaG90LmpzJykuUmVjb3JkZXJCdW5kbGU7XG59XG4iXX0=