@workflow/core 5.0.0-beta.43 → 5.0.0-beta.46

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 (228) hide show
  1. package/dist/attribute-changes.d.ts +3 -5
  2. package/dist/attribute-changes.d.ts.map +1 -1
  3. package/dist/attribute-changes.js +2 -2
  4. package/dist/capabilities.d.ts +6 -6
  5. package/dist/capabilities.js +8 -8
  6. package/dist/capture-stack.d.ts +1 -1
  7. package/dist/capture-stack.js +2 -2
  8. package/dist/class-serialization.d.ts +8 -8
  9. package/dist/class-serialization.js +9 -9
  10. package/dist/classify-error.js +5 -5
  11. package/dist/context-violation-error.d.ts +5 -5
  12. package/dist/context-violation-error.d.ts.map +1 -1
  13. package/dist/context-violation-error.js +5 -5
  14. package/dist/create-hook.d.ts +2 -2
  15. package/dist/create-hook.js +1 -1
  16. package/dist/define-hook.js +2 -2
  17. package/dist/describe-error.d.ts +7 -7
  18. package/dist/describe-error.js +8 -8
  19. package/dist/encryption.d.ts +5 -5
  20. package/dist/encryption.js +7 -7
  21. package/dist/events-consumer.d.ts +20 -8
  22. package/dist/events-consumer.d.ts.map +1 -1
  23. package/dist/events-consumer.js +34 -12
  24. package/dist/flushable-stream.d.ts +4 -4
  25. package/dist/flushable-stream.js +13 -13
  26. package/dist/global.d.ts +4 -2
  27. package/dist/global.d.ts.map +1 -1
  28. package/dist/global.js +8 -5
  29. package/dist/index.d.ts +1 -1
  30. package/dist/index.js +2 -2
  31. package/dist/log-format.d.ts +2 -2
  32. package/dist/log-format.js +5 -5
  33. package/dist/logger.js +4 -4
  34. package/dist/private.d.ts +29 -71
  35. package/dist/private.d.ts.map +1 -1
  36. package/dist/private.js +170 -38
  37. package/dist/replay-payload-cache.d.ts +1 -1
  38. package/dist/replay-payload-cache.js +4 -4
  39. package/dist/runtime/compute-instance.d.ts +4 -3
  40. package/dist/runtime/compute-instance.d.ts.map +1 -1
  41. package/dist/runtime/compute-instance.js +5 -4
  42. package/dist/runtime/constants.d.ts +24 -24
  43. package/dist/runtime/constants.d.ts.map +1 -1
  44. package/dist/runtime/constants.js +49 -43
  45. package/dist/runtime/count-step-started-events.d.ts +7 -7
  46. package/dist/runtime/count-step-started-events.js +4 -4
  47. package/dist/runtime/deployment-guard.d.ts +7 -7
  48. package/dist/runtime/deployment-guard.js +8 -8
  49. package/dist/runtime/get-port-lazy.d.ts +2 -2
  50. package/dist/runtime/get-port-lazy.d.ts.map +1 -1
  51. package/dist/runtime/get-port-lazy.js +37 -30
  52. package/dist/runtime/get-world-lazy.d.ts +2 -2
  53. package/dist/runtime/get-world-lazy.js +3 -3
  54. package/dist/runtime/helpers.d.ts +21 -21
  55. package/dist/runtime/helpers.js +27 -27
  56. package/dist/runtime/quickjs-entrypoint.d.ts +21 -10
  57. package/dist/runtime/quickjs-entrypoint.d.ts.map +1 -1
  58. package/dist/runtime/quickjs-entrypoint.js +206 -81
  59. package/dist/runtime/quickjs-runtime.d.ts +31 -15
  60. package/dist/runtime/quickjs-runtime.d.ts.map +1 -1
  61. package/dist/runtime/quickjs-runtime.js +132 -77
  62. package/dist/runtime/quickjs-serde.d.ts +10 -10
  63. package/dist/runtime/quickjs-serde.js +20 -20
  64. package/dist/runtime/replay-budget.d.ts +4 -4
  65. package/dist/runtime/replay-budget.js +5 -5
  66. package/dist/runtime/replay-recovery-reporter.d.ts +1 -1
  67. package/dist/runtime/replay-recovery-reporter.js +2 -2
  68. package/dist/runtime/resume-hook.d.ts +27 -12
  69. package/dist/runtime/resume-hook.d.ts.map +1 -1
  70. package/dist/runtime/resume-hook.js +200 -200
  71. package/dist/runtime/resume-latency.d.ts +40 -30
  72. package/dist/runtime/resume-latency.d.ts.map +1 -1
  73. package/dist/runtime/resume-latency.js +7 -5
  74. package/dist/runtime/run-id-time.d.ts +2 -2
  75. package/dist/runtime/run-id-time.js +5 -5
  76. package/dist/runtime/run.d.ts +22 -5
  77. package/dist/runtime/run.d.ts.map +1 -1
  78. package/dist/runtime/run.js +106 -11
  79. package/dist/runtime/runs.d.ts +4 -4
  80. package/dist/runtime/runs.js +2 -2
  81. package/dist/runtime/start.d.ts +3 -3
  82. package/dist/runtime/start.d.ts.map +1 -1
  83. package/dist/runtime/start.js +29 -25
  84. package/dist/runtime/step-executor.d.ts +14 -14
  85. package/dist/runtime/step-executor.d.ts.map +1 -1
  86. package/dist/runtime/step-executor.js +54 -39
  87. package/dist/runtime/step-latency.d.ts +42 -25
  88. package/dist/runtime/step-latency.d.ts.map +1 -1
  89. package/dist/runtime/step-latency.js +29 -23
  90. package/dist/runtime/step-ownership.d.ts +6 -6
  91. package/dist/runtime/step-ownership.js +8 -8
  92. package/dist/runtime/step-single-flight.d.ts +1 -1
  93. package/dist/runtime/step-single-flight.d.ts.map +1 -1
  94. package/dist/runtime/step-single-flight.js +17 -11
  95. package/dist/runtime/suspension-handler.d.ts +38 -24
  96. package/dist/runtime/suspension-handler.d.ts.map +1 -1
  97. package/dist/runtime/suspension-handler.js +238 -103
  98. package/dist/runtime/unserializable-step.d.ts +34 -0
  99. package/dist/runtime/unserializable-step.d.ts.map +1 -0
  100. package/dist/runtime/unserializable-step.js +52 -0
  101. package/dist/runtime/vm-mode.d.ts +1 -1
  102. package/dist/runtime/vm-mode.js +2 -2
  103. package/dist/runtime/wait-continuation.d.ts +31 -9
  104. package/dist/runtime/wait-continuation.d.ts.map +1 -1
  105. package/dist/runtime/wait-continuation.js +44 -13
  106. package/dist/runtime/wait-until.d.ts +1 -1
  107. package/dist/runtime/wait-until.js +2 -2
  108. package/dist/runtime/world-compatibility.d.ts +20 -9
  109. package/dist/runtime/world-compatibility.d.ts.map +1 -1
  110. package/dist/runtime/world-compatibility.js +24 -13
  111. package/dist/runtime/world-init.d.ts +5 -5
  112. package/dist/runtime/world-init.js +6 -6
  113. package/dist/runtime/world.d.ts.map +1 -1
  114. package/dist/runtime/world.js +13 -3
  115. package/dist/runtime.d.ts.map +1 -1
  116. package/dist/runtime.js +427 -266
  117. package/dist/sealed-box.d.ts +7 -7
  118. package/dist/sealed-box.js +15 -15
  119. package/dist/serialization/client.js +2 -2
  120. package/dist/serialization/codec-devalue-vm.d.ts +1 -1
  121. package/dist/serialization/codec-devalue-vm.js +4 -4
  122. package/dist/serialization/codec-devalue.d.ts +1 -1
  123. package/dist/serialization/codec-devalue.js +2 -2
  124. package/dist/serialization/codec.d.ts +4 -4
  125. package/dist/serialization/codec.js +2 -2
  126. package/dist/serialization/compression.d.ts +12 -11
  127. package/dist/serialization/compression.d.ts.map +1 -1
  128. package/dist/serialization/compression.js +16 -15
  129. package/dist/serialization/encryption.d.ts +7 -7
  130. package/dist/serialization/encryption.d.ts.map +1 -1
  131. package/dist/serialization/encryption.js +8 -8
  132. package/dist/serialization/errors.js +2 -2
  133. package/dist/serialization/format.d.ts +6 -6
  134. package/dist/serialization/format.js +7 -7
  135. package/dist/serialization/hardened.d.ts +23 -22
  136. package/dist/serialization/hardened.d.ts.map +1 -1
  137. package/dist/serialization/hardened.js +47 -32
  138. package/dist/serialization/index.d.ts +1 -1
  139. package/dist/serialization/index.js +2 -2
  140. package/dist/serialization/reducers/class-vm.d.ts +1 -1
  141. package/dist/serialization/reducers/class-vm.js +2 -2
  142. package/dist/serialization/reducers/class.js +2 -2
  143. package/dist/serialization/reducers/common-vm.js +12 -12
  144. package/dist/serialization/reducers/common.js +12 -12
  145. package/dist/serialization/reducers/step-function-vm.d.ts +1 -1
  146. package/dist/serialization/reducers/step-function-vm.js +2 -2
  147. package/dist/serialization/reducers/step-function.js +2 -2
  148. package/dist/serialization/step.js +2 -2
  149. package/dist/serialization/types.d.ts +5 -5
  150. package/dist/serialization/types.js +2 -2
  151. package/dist/serialization/workflow-vm.d.ts +1 -1
  152. package/dist/serialization/workflow-vm.d.ts.map +1 -1
  153. package/dist/serialization/workflow-vm.js +13 -10
  154. package/dist/serialization-format.d.ts +11 -11
  155. package/dist/serialization-format.d.ts.map +1 -1
  156. package/dist/serialization-format.js +30 -24
  157. package/dist/serialization.d.ts +15 -16
  158. package/dist/serialization.d.ts.map +1 -1
  159. package/dist/serialization.js +116 -109
  160. package/dist/set-attributes.js +2 -2
  161. package/dist/source-map.d.ts +1 -1
  162. package/dist/source-map.d.ts.map +1 -1
  163. package/dist/source-map.js +18 -12
  164. package/dist/step/context-storage.d.ts +5 -5
  165. package/dist/step/context-storage.js +1 -1
  166. package/dist/step/writable-stream.d.ts +3 -3
  167. package/dist/step/writable-stream.js +7 -7
  168. package/dist/step.d.ts.map +1 -1
  169. package/dist/step.js +14 -22
  170. package/dist/symbols.d.ts +2 -2
  171. package/dist/symbols.js +3 -3
  172. package/dist/telemetry/semantic-conventions.d.ts +34 -17
  173. package/dist/telemetry/semantic-conventions.d.ts.map +1 -1
  174. package/dist/telemetry/semantic-conventions.js +32 -17
  175. package/dist/telemetry.d.ts +3 -3
  176. package/dist/telemetry.d.ts.map +1 -1
  177. package/dist/telemetry.js +19 -10
  178. package/dist/test-support/orchestrator-context.d.ts.map +1 -1
  179. package/dist/test-support/orchestrator-context.js +12 -2
  180. package/dist/version.d.ts +1 -1
  181. package/dist/version.js +2 -2
  182. package/dist/vm/index.js +4 -4
  183. package/dist/vm/script-cache.d.ts.map +1 -1
  184. package/dist/vm/script-cache.js +23 -17
  185. package/dist/vm/uint8array-base64.js +1 -1
  186. package/dist/workflow/abort-controller.d.ts +1 -1
  187. package/dist/workflow/abort-controller.js +12 -12
  188. package/dist/workflow/attribute-dispatcher.d.ts.map +1 -1
  189. package/dist/workflow/attribute-dispatcher.js +3 -6
  190. package/dist/workflow/create-hook.js +2 -2
  191. package/dist/workflow/get-workflow-metadata.js +2 -2
  192. package/dist/workflow/hook.d.ts.map +1 -1
  193. package/dist/workflow/hook.js +21 -30
  194. package/dist/workflow/set-attributes.d.ts +1 -1
  195. package/dist/workflow/set-attributes.js +2 -2
  196. package/dist/workflow/sleep.js +2 -2
  197. package/dist/workflow/world-init-stub.d.ts +1 -1
  198. package/dist/workflow/world-init-stub.js +2 -2
  199. package/dist/workflow.d.ts +2 -2
  200. package/dist/workflow.js +26 -13
  201. package/docs/api-reference/create-hook.mdx +15 -15
  202. package/docs/api-reference/create-webhook.mdx +15 -15
  203. package/docs/api-reference/define-hook.mdx +10 -10
  204. package/docs/api-reference/fatal-error.mdx +2 -2
  205. package/docs/api-reference/fetch.mdx +7 -7
  206. package/docs/api-reference/get-step-metadata.mdx +2 -2
  207. package/docs/api-reference/get-workflow-metadata.mdx +3 -3
  208. package/docs/api-reference/get-writable.mdx +7 -7
  209. package/docs/api-reference/index.mdx +1 -1
  210. package/docs/api-reference/retryable-error.mdx +1 -1
  211. package/docs/api-reference/set-attributes.mdx +2 -2
  212. package/docs/api-reference/sleep.mdx +3 -3
  213. package/docs/foundations/cancellation.mdx +31 -31
  214. package/docs/foundations/errors-and-retries.mdx +42 -11
  215. package/docs/foundations/hooks.mdx +35 -35
  216. package/docs/foundations/idempotency.mdx +9 -9
  217. package/docs/foundations/serialization.mdx +21 -22
  218. package/docs/foundations/starting-workflows.mdx +36 -37
  219. package/docs/foundations/streaming.mdx +46 -41
  220. package/docs/foundations/versioning.mdx +3 -3
  221. package/docs/foundations/workflows-and-steps.mdx +9 -9
  222. package/docs/how-it-works/cancellation.mdx +62 -62
  223. package/docs/how-it-works/code-transform.mdx +66 -54
  224. package/docs/how-it-works/encryption.mdx +25 -21
  225. package/docs/how-it-works/event-sourcing.mdx +53 -35
  226. package/docs/how-it-works/framework-integrations.mdx +12 -12
  227. package/docs/how-it-works/understanding-directives.mdx +21 -21
  228. package/package.json +7 -7
@@ -6,46 +6,56 @@ import type { HookResumeTiming } from '@workflow/world';
6
6
  *
7
7
  * ```text
8
8
  * T0 resumeHook() entered
9
- * producer_prep hook lookup, serialization, encryption
9
+ * producer_prep : hook lookup, serialization, encryption
10
10
  * T1 queue publish requested
11
- * queue_delivery network + VQS delivery (incl. any affinity re-route)
11
+ * queue_delivery : network + VQS delivery (incl. any affinity re-route)
12
12
  * T2 final consumer's queue handler entered
13
- * resume_setup affinity check, hook_received re-ensure, replay preload
13
+ * resume_setup : affinity check, hook_received re-ensure, replay preload
14
14
  * T3 replay begins
15
- * replay VM/session creation and workflow replay
15
+ * replay : VM/session creation and workflow replay
16
16
  * T4 next durable step encountered
17
- * step_dispatch suspension handling, inline batch or queue dispatch
17
+ * step_dispatch : suspension handling, inline batch or queue dispatch
18
18
  * T5 step_started request begins
19
- * step_claim the claim round trip
19
+ * step_claim : the claim round trip
20
20
  * T6 step_started response returned
21
- * step_prepare key resolution, argument hydration, context setup
21
+ * step_prepare : key resolution, argument hydration, context setup
22
22
  * T7 immediately before stepFn.apply()
23
23
  * ```
24
24
  *
25
- * The producer's direct `hook_received` POST races the queue publish on the
26
- * parallel fast path, so it deliberately has no phase of its own — the two
27
- * overlap, and representing both as additive phases would double-count. It
28
- * remains visible as a contextual span (`hook.resume`).
25
+ * On the lazy path the producer writes no `hook_received` at all (the
26
+ * consumer materializes it from `hookInput`), so the window has no producer
27
+ * write phase. On the sequential path that write is awaited inside
28
+ * `producer_prep`, and for messages from an older producer, which raced the
29
+ * write against the publish, it overlapped `producer_prep` rather than adding
30
+ * to it. Either way it has no phase of its own; it remains visible as a
31
+ * contextual span (`hook.resume`).
29
32
  *
30
33
  * T0/T1 are stamped on the producer's machine and T2..T7 on the consumer's, so
31
34
  * the measurement is subject to cross-machine clock skew. Rather than clamp
32
35
  * (which would break the sum-equals-total property this decomposition exists
33
- * for), a non-monotonic boundary set drops the whole sample see
36
+ * for), a non-monotonic boundary set drops the whole sample; see
34
37
  * {@link computeResumeTtrAttributes}.
35
38
  */
36
39
  /** What caused the resumption being measured. Only hooks are measured today. */
37
40
  export type ResumeTrigger = 'hook';
38
- /** Which `resumeHook()` dispatch path produced this resume. */
39
- export type ResumeStrategy = 'parallel' | 'sequential';
41
+ /**
42
+ * Which `resumeHook()` dispatch path produced this resume.
43
+ *
44
+ * `parallel` is only ever received from an older producer, which raced its own
45
+ * `hook_received` write against the publish. Current producers send `lazy` (no
46
+ * producer write: the consumer materializes the event from `hookInput`) or
47
+ * `sequential`.
48
+ */
49
+ export type ResumeStrategy = 'lazy' | 'parallel' | 'sequential';
40
50
  /**
41
51
  * How the consuming invocation initialized its replay state:
42
52
  *
43
- * - `hook_preload` the hoisted `hook_received` write returned a usable
53
+ * - `hook_preload`: the hoisted `hook_received` write returned a usable
44
54
  * replay preload, so neither `run_started` nor the initial `events.list` ran.
45
- * - `run_started` the generic `run_started` setup ran (including the fast
55
+ * - `run_started`: the generic `run_started` setup ran (including the fast
46
56
  * path's fallback, where the hoisted write succeeded but returned no usable
47
57
  * preload).
48
- * - `event_load` neither setup ran because the run arrived already loaded,
58
+ * - `event_load`: neither setup ran because the run arrived already loaded,
49
59
  * so setup was a plain event load. No current path produces it (the one
50
60
  * preloaded-run path, the background-step fall-through, consumes the
51
61
  * tracking on its own step first); it is the honest default rather than a
@@ -62,7 +72,7 @@ export type ResumeStepExecution = 'inline' | 'dispatched';
62
72
  *
63
73
  * The runtime holds at most one of these per invocation and CONSUMES it when
64
74
  * it hands it to the execution that will attempt the next durable step, so a
65
- * later step in the same invocation or a retry of the same step never
75
+ * later step in the same invocation (or a retry of the same step) never
66
76
  * re-reports the same resumption. Within one inline batch the object is
67
77
  * shared by every step and the {@link ResumeTtrTracking.reported} latch picks
68
78
  * the single reporter.
@@ -71,19 +81,19 @@ export interface ResumeTtrTracking {
71
81
  trigger: ResumeTrigger;
72
82
  /** Absent only if an older producer omitted it from the queue message. */
73
83
  strategy?: ResumeStrategy;
74
- /** T0 entry into `resumeHook()`. */
84
+ /** T0: entry into `resumeHook()`. */
75
85
  resumeRequestedAtMs: number;
76
- /** T1 immediately before the queue publish was requested. */
86
+ /** T1: immediately before the queue publish was requested. */
77
87
  queuePublishRequestedAtMs: number;
78
88
  /**
79
- * T2 entry into the FINAL consumer's queue handler. A delivery that
89
+ * T2: entry into the FINAL consumer's queue handler. A delivery that
80
90
  * re-routes for deployment affinity never stamps this, so the re-routed hop
81
91
  * stays inside `queue_delivery` where it belongs.
82
92
  */
83
93
  consumerStartedAtMs: number;
84
- /** T3 this invocation's first replay pass. */
94
+ /** T3: this invocation's first replay pass. */
85
95
  replayStartedAtMs?: number;
86
- /** T4 replay first encountered a durable step after the resume. */
96
+ /** T4: replay first encountered a durable step after the resume. */
87
97
  nextStepEncounteredAtMs?: number;
88
98
  setupSource?: ResumeSetupSource;
89
99
  stepExecution: ResumeStepExecution;
@@ -91,7 +101,7 @@ export interface ResumeTtrTracking {
91
101
  * One-shot latch, set by the step executor once this resumption has been
92
102
  * reported. Every step of an inline batch is handed the SAME tracking
93
103
  * object, so the first one to reach user code takes the measurement and the
94
- * rest see this and skip one resumption, one sample, without pinning the
104
+ * rest see this and skip: one resumption, one sample, without pinning the
95
105
  * sample to a step that may lose its create-claim and never run.
96
106
  *
97
107
  * Deliberately not part of {@link HookResumeTiming}: it is invocation-local
@@ -101,8 +111,8 @@ export interface ResumeTtrTracking {
101
111
  }
102
112
  /**
103
113
  * Rebuild tracking from a queue message's timing object. Returns undefined for
104
- * a message that carries none (an older producer, or any non-hook delivery)
105
- * the caller then simply reports no TTR.
114
+ * a message that carries none (an older producer, or any non-hook delivery);
115
+ * the caller then reports no TTR.
106
116
  */
107
117
  export declare function resumeTrackingFromMessage(timing: HookResumeTiming | undefined, stepExecution: ResumeStepExecution): ResumeTtrTracking | undefined;
108
118
  /**
@@ -114,7 +124,7 @@ export declare function resumeTrackingFromMessage(timing: HookResumeTiming | und
114
124
  export declare function resumeTimingForMessage(tracking: ResumeTtrTracking | undefined): HookResumeTiming | undefined;
115
125
  /**
116
126
  * Compute the TTR span attributes for a step that is the first durable step
117
- * following a hook resume. Returns undefined emitting nothing at all when
127
+ * following a hook resume. Returns undefined (emitting nothing at all) when
118
128
  * any of these hold:
119
129
  *
120
130
  * - the invocation carries no resume tracking (not a hook resume, or an older
@@ -133,11 +143,11 @@ export declare function computeResumeTtrAttributes(params: {
133
143
  tracking: ResumeTtrTracking | undefined;
134
144
  /** The attempt number of the execution about to run. */
135
145
  attempt: number;
136
- /** T5 `Date.now()` immediately before the `step_started` request. */
146
+ /** T5: `Date.now()` immediately before the `step_started` request. */
137
147
  stepClaimStartedAtMs: number | undefined;
138
- /** T6 `Date.now()` once the `step_started` response returned. */
148
+ /** T6: `Date.now()` once the `step_started` response returned. */
139
149
  stepClaimCompletedAtMs: number | undefined;
140
- /** T7 `Date.now()` immediately before `stepFn.apply()`. */
150
+ /** T7: `Date.now()` immediately before `stepFn.apply()`. */
141
151
  stepCodeStartedAtMs: number;
142
152
  }): Record<string, string | number> | undefined;
143
153
  //# sourceMappingURL=resume-latency.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"resume-latency.d.ts","sourceRoot":"","sources":["../../src/runtime/resume-latency.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAGxD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AAEH,gFAAgF;AAChF,MAAM,MAAM,aAAa,GAAG,MAAM,CAAC;AAEnC,+DAA+D;AAC/D,MAAM,MAAM,cAAc,GAAG,UAAU,GAAG,YAAY,CAAC;AAEvD;;;;;;;;;;;;;GAaG;AACH,MAAM,MAAM,iBAAiB,GAAG,cAAc,GAAG,aAAa,GAAG,YAAY,CAAC;AAE9E,gFAAgF;AAChF,MAAM,MAAM,mBAAmB,GAAG,QAAQ,GAAG,YAAY,CAAC;AAE1D;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,aAAa,CAAC;IACvB,0EAA0E;IAC1E,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B,sCAAsC;IACtC,mBAAmB,EAAE,MAAM,CAAC;IAC5B,+DAA+D;IAC/D,yBAAyB,EAAE,MAAM,CAAC;IAClC;;;;OAIG;IACH,mBAAmB,EAAE,MAAM,CAAC;IAC5B,gDAAgD;IAChD,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,qEAAqE;IACrE,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,WAAW,CAAC,EAAE,iBAAiB,CAAC;IAChC,aAAa,EAAE,mBAAmB,CAAC;IACnC;;;;;;;;;OASG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;;;GAIG;AACH,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,gBAAgB,GAAG,SAAS,EACpC,aAAa,EAAE,mBAAmB,GACjC,iBAAiB,GAAG,SAAS,CAgC/B;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE,iBAAiB,GAAG,SAAS,GACtC,gBAAgB,GAAG,SAAS,CAkB9B;AA6CD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,0BAA0B,CAAC,MAAM,EAAE;IACjD,QAAQ,EAAE,iBAAiB,GAAG,SAAS,CAAC;IACxC,wDAAwD;IACxD,OAAO,EAAE,MAAM,CAAC;IAChB,uEAAuE;IACvE,oBAAoB,EAAE,MAAM,GAAG,SAAS,CAAC;IACzC,mEAAmE;IACnE,sBAAsB,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3C,6DAA6D;IAC7D,mBAAmB,EAAE,MAAM,CAAC;CAC7B,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,GAAG,SAAS,CAoD9C"}
1
+ {"version":3,"file":"resume-latency.d.ts","sourceRoot":"","sources":["../../src/runtime/resume-latency.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAGxD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AAEH,gFAAgF;AAChF,MAAM,MAAM,aAAa,GAAG,MAAM,CAAC;AAEnC;;;;;;;GAOG;AACH,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,UAAU,GAAG,YAAY,CAAC;AAEhE;;;;;;;;;;;;;GAaG;AACH,MAAM,MAAM,iBAAiB,GAAG,cAAc,GAAG,aAAa,GAAG,YAAY,CAAC;AAE9E,gFAAgF;AAChF,MAAM,MAAM,mBAAmB,GAAG,QAAQ,GAAG,YAAY,CAAC;AAE1D;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,aAAa,CAAC;IACvB,0EAA0E;IAC1E,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B,qCAAqC;IACrC,mBAAmB,EAAE,MAAM,CAAC;IAC5B,8DAA8D;IAC9D,yBAAyB,EAAE,MAAM,CAAC;IAClC;;;;OAIG;IACH,mBAAmB,EAAE,MAAM,CAAC;IAC5B,+CAA+C;IAC/C,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,oEAAoE;IACpE,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,WAAW,CAAC,EAAE,iBAAiB,CAAC;IAChC,aAAa,EAAE,mBAAmB,CAAC;IACnC;;;;;;;;;OASG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;;;GAIG;AACH,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,gBAAgB,GAAG,SAAS,EACpC,aAAa,EAAE,mBAAmB,GACjC,iBAAiB,GAAG,SAAS,CAkC/B;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE,iBAAiB,GAAG,SAAS,GACtC,gBAAgB,GAAG,SAAS,CAkB9B;AA6CD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,0BAA0B,CAAC,MAAM,EAAE;IACjD,QAAQ,EAAE,iBAAiB,GAAG,SAAS,CAAC;IACxC,wDAAwD;IACxD,OAAO,EAAE,MAAM,CAAC;IAChB,sEAAsE;IACtE,oBAAoB,EAAE,MAAM,GAAG,SAAS,CAAC;IACzC,kEAAkE;IAClE,sBAAsB,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3C,4DAA4D;IAC5D,mBAAmB,EAAE,MAAM,CAAC;CAC7B,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,GAAG,SAAS,CAoD9C"}
@@ -1,8 +1,8 @@
1
1
  import * as Attribute from '../telemetry/semantic-conventions.js';
2
2
  /**
3
3
  * Rebuild tracking from a queue message's timing object. Returns undefined for
4
- * a message that carries none (an older producer, or any non-hook delivery)
5
- * the caller then simply reports no TTR.
4
+ * a message that carries none (an older producer, or any non-hook delivery);
5
+ * the caller then reports no TTR.
6
6
  */
7
7
  export function resumeTrackingFromMessage(timing, stepExecution) {
8
8
  if (!timing)
@@ -13,7 +13,9 @@ export function resumeTrackingFromMessage(timing, stepExecution) {
13
13
  }
14
14
  return {
15
15
  trigger: 'hook',
16
- ...(timing.strategy === 'parallel' || timing.strategy === 'sequential'
16
+ ...(timing.strategy === 'lazy' ||
17
+ timing.strategy === 'parallel' ||
18
+ timing.strategy === 'sequential'
17
19
  ? { strategy: timing.strategy }
18
20
  : {}),
19
21
  resumeRequestedAtMs: timing.resumeRequestedAtMs,
@@ -94,7 +96,7 @@ function validateBoundaries(b) {
94
96
  }
95
97
  /**
96
98
  * Compute the TTR span attributes for a step that is the first durable step
97
- * following a hook resume. Returns undefined emitting nothing at all when
99
+ * following a hook resume. Returns undefined (emitting nothing at all) when
98
100
  * any of these hold:
99
101
  *
100
102
  * - the invocation carries no resume tracking (not a hook resume, or an older
@@ -150,4 +152,4 @@ export function computeResumeTtrAttributes(params) {
150
152
  ...Attribute.ResumeStepExecution(tracking.stepExecution),
151
153
  };
152
154
  }
153
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzdW1lLWxhdGVuY3kuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcnVudGltZS9yZXN1bWUtbGF0ZW5jeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEtBQUssU0FBUyxNQUFNLHNDQUFzQyxDQUFDO0FBNEdsRTs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLHlCQUF5QixDQUN2QyxNQUFvQyxFQUNwQyxhQUFrQztJQUVsQyxJQUFJLENBQUMsTUFBTTtRQUFFLE9BQU8sU0FBUyxDQUFDO0lBQzlCLElBQ0UsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQztRQUM1QyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLHlCQUF5QixDQUFDLEVBQ2xELENBQUM7UUFDRCxPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO0lBQ0QsT0FBTztRQUNMLE9BQU8sRUFBRSxNQUFNO1FBQ2YsR0FBRyxDQUFDLE1BQU0sQ0FBQyxRQUFRLEtBQUssVUFBVSxJQUFJLE1BQU0sQ0FBQyxRQUFRLEtBQUssWUFBWTtZQUNwRSxDQUFDLENBQUMsRUFBRSxRQUFRLEVBQUUsTUFBTSxDQUFDLFFBQVEsRUFBRTtZQUMvQixDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ1AsbUJBQW1CLEVBQUUsTUFBTSxDQUFDLG1CQUFtQjtRQUMvQyx5QkFBeUIsRUFBRSxNQUFNLENBQUMseUJBQXlCO1FBQzNELHVFQUF1RTtRQUN2RSx1RUFBdUU7UUFDdkUsOERBQThEO1FBQzlELG1CQUFtQixFQUFFLE1BQU0sQ0FBQyxtQkFBbUIsSUFBSSxNQUFNLENBQUMsR0FBRztRQUM3RCxHQUFHLENBQUMsTUFBTSxDQUFDLGlCQUFpQixLQUFLLFNBQVM7WUFDeEMsQ0FBQyxDQUFDLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxDQUFDLGlCQUFpQixFQUFFO1lBQ2pELENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDUCxHQUFHLENBQUMs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cG9ydCB0eXBlIHsgSG9va1Jlc3VtZVRpbWluZyB9IGZyb20gJ0B3b3JrZmxvdy93b3JsZCc7XG5pbXBvcnQgKiBhcyBBdHRyaWJ1dGUgZnJvbSAnLi4vdGVsZW1ldHJ5L3NlbWFudGljLWNvbnZlbnRpb25zLmpzJztcblxuLyoqXG4gKiBIb29rLXRyaWdnZXJlZCB0aW1lLXRvLXJlc3VtZSAoVFRSKTogd2FsbC1jbG9jayBmcm9tIGVudHJ5IGludG9cbiAqIGByZXN1bWVIb29rKClgIChUMCkgdG8gdGhlIGZpcnN0IGxpbmUgb2YgdGhlIG5leHQgZHVyYWJsZSBzdGVwIChUNyksIHBsdXMgYVxuICogZGVjb21wb3NpdGlvbiBpbnRvIG5vbi1vdmVybGFwcGluZyBwaGFzZXMgdGhhdCBzdW0gZXhhY3RseSB0byBpdC5cbiAqXG4gKiBgYGB0ZXh0XG4gKiBUMCByZXN1bWVIb29rKCkgZW50ZXJlZFxuICogICAgICBwcm9kdWNlcl9wcmVwICAg4oCUIGhvb2sgbG9va3VwLCBzZXJpYWxpemF0aW9uLCBlbmNyeXB0aW9uXG4gKiBUMSBxdWV1ZSBwdWJsaXNoIHJlcXVlc3RlZFxuICogICAgICBxdWV1ZV9kZWxpdmVyeSAg4oCUIG5ldHdvcmsgKyBWUVMgZGVsaXZlcnkgKGluY2wuIGFueSBhZmZpbml0eSByZS1yb3V0ZSlcbiAqIFQyIGZpbmFsIGNvbnN1bWVyJ3MgcXVldWUgaGFuZGxlciBlbnRlcmVkXG4gKiAgICAgIHJlc3VtZV9zZXR1cCAgICDigJQgYWZmaW5pdHkgY2hlY2ssIGhvb2tfcmVjZWl2ZWQgcmUtZW5zdXJlLCByZXBsYXkgcHJlbG9hZFxuICogVDMgcmVwbGF5IGJlZ2luc1xuICogICAgICByZXBsYXkgICAgICAgICAg4oCUIFZNL3Nlc3Npb24gY3JlYXRpb24gYW5kIHdvcmtmbG93IHJlcGxheVxuICogVDQgbmV4dCBkdXJhYmxlIHN0ZXAgZW5jb3VudGVyZWRcbiAqICAgICAgc3RlcF9kaXNwYXRjaCAgIOKAlCBzdXNwZW5zaW9uIGhhbmRsaW5nLCBpbmxpbmUgYmF0Y2ggb3IgcXVldWUgZGlzcGF0Y2hcbiAqIFQ1IHN0ZXBfc3RhcnRlZCByZXF1ZXN0IGJlZ2luc1xuICogICAgICBzdGVwX2NsYWltICAgICAg4oCUIHRoZSBjbGFpbSByb3VuZCB0cmlwXG4gKiBUNiBzdGVwX3N0YXJ0ZWQgcmVzcG9uc2UgcmV0dXJuZWRcbiAqICAgICAgc3RlcF9wcmVwYXJlICAgIOKAlCBrZXkgcmVzb2x1dGlvbiwgYXJndW1lbnQgaHlkcmF0aW9uLCBjb250ZXh0IHNldHVwXG4gKiBUNyBpbW1lZGlhdGVseSBiZWZvcmUgc3RlcEZuLmFwcGx5KClcbiAqIGBgYFxuICpcbiAqIFRoZSBwcm9kdWNlcidzIGRpcmVjdCBgaG9va19yZWNlaXZlZGAgUE9TVCByYWNlcyB0aGUgcXVldWUgcHVibGlzaCBvbiB0aGVcbiAqIHBhcmFsbGVsIGZhc3QgcGF0aCwgc28gaXQgZGVsaWJlcmF0ZWx5IGhhcyBubyBwaGFzZSBvZiBpdHMgb3duIOKAlCB0aGUgdHdvXG4gKiBvdmVybGFwLCBhbmQgcmVwcmVzZW50aW5nIGJvdGggYXMgYWRkaXRpdmUgcGhhc2VzIHdvdWxkIGRvdWJsZS1jb3VudC4gSXRcbiAqIHJlbWFpbnMgdmlzaWJsZSBhcyBhIGNvbnRleHR1YWwgc3BhbiAoYGhvb2sucmVzdW1lYCkuXG4gKlxuICogVDAvVDEgYXJlIHN0YW1wZWQgb24gdGhlIHByb2R1Y2VyJ3MgbWFjaGluZSBhbmQgVDIuLlQ3IG9uIHRoZSBjb25zdW1lcidzLCBzb1xuICogdGhlIG1lYXN1cmVtZW50IGlzIHN1YmplY3QgdG8gY3Jvc3MtbWFjaGluZSBjbG9jayBza2V3LiBSYXRoZXIgdGhhbiBjbGFtcFxuICogKHdoaWNoIHdvdWxkIGJyZWFrIHRoZSBzdW0tZXF1YWxzLXRvdGFsIHByb3BlcnR5IHRoaXMgZGVjb21wb3NpdGlvbiBleGlzdHNcbiAqIGZvciksIGEgbm9uLW1vbm90b25pYyBib3VuZGFyeSBzZXQgZHJvcHMgdGhlIHdob2xlIHNhbXBsZSDigJQgc2VlXG4gKiB7QGxpbmsgY29tcHV0ZVJlc3VtZVR0ckF0dHJpYnV0ZXN9LlxuICovXG5cbi8qKiBXaGF0IGNhdXNlZCB0aGUgcmVzdW1wdGlvbiBiZWluZyBtZWFzdXJlZC4gT25seSBob29rcyBhcmUgbWVhc3VyZWQgdG9kYXkuICovXG5leHBvcnQgdHlwZSBSZXN1bWVUcmlnZ2VyID0gJ2hvb2snO1xuXG4vKiogV2hpY2ggYHJlc3VtZUhvb2soKWAgZGlzcGF0Y2ggcGF0aCBwcm9kdWNlZCB0aGlzIHJlc3VtZS4gKi9cbmV4cG9ydCB0eXBlIFJlc3VtZVN0cmF0ZWd5ID0gJ3BhcmFsbGVsJyB8ICdzZXF1ZW50aWFsJztcblxuLyoqXG4gKiBIb3cgdGhlIGNvbnN1bWluZyBpbnZvY2F0aW9uIGluaXRpYWxpemVkIGl0cyByZXBsYXkgc3RhdGU6XG4gKlxuICogLSBgaG9va19wcmVsb2FkYCDigJQgdGhlIGhvaXN0ZWQgYGhvb2tfcmVjZWl2ZWRgIHdyaXRlIHJldHVybmVkIGEgdXNhYmxlXG4gKiAgIHJlcGxheSBwcmVsb2FkLCBzbyBuZWl0aGVyIGBydW5fc3RhcnRlZGAgbm9yIHRoZSBpbml0aWFsIGBldmVudHMubGlzdGAgcmFuLlxuICogLSBgcnVuX3N0YXJ0ZWRgIOKAlCB0aGUgZ2VuZXJpYyBgcnVuX3N0YXJ0ZWRgIHNldHVwIHJhbiAoaW5jbHVkaW5nIHRoZSBmYXN0XG4gKiAgIHBhdGgncyBmYWxsYmFjaywgd2hlcmUgdGhlIGhvaXN0ZWQgd3JpdGUgc3VjY2VlZGVkIGJ1dCByZXR1cm5lZCBubyB1c2FibGVcbiAqICAgcHJlbG9hZCkuXG4gKiAtIGBldmVudF9sb2FkYCDigJQgbmVpdGhlciBzZXR1cCByYW4gYmVjYXVzZSB0aGUgcnVuIGFycml2ZWQgYWxyZWFkeSBsb2FkZWQsXG4gKiAgIHNvIHNldHVwIHdhcyBhIHBsYWluIGV2ZW50IGxvYWQuIE5vIGN1cnJlbnQgcGF0aCBwcm9kdWNlcyBpdCAodGhlIG9uZVxuICogICBwcmVsb2FkZWQtcnVuIHBhdGgsIHRoZSBiYWNrZ3JvdW5kLXN0ZXAgZmFsbC10aHJvdWdoLCBjb25zdW1lcyB0aGVcbiAqICAgdHJhY2tpbmcgb24gaXRzIG93biBzdGVwIGZpcnN0KTsgaXQgaXMgdGhlIGhvbmVzdCBkZWZhdWx0IHJhdGhlciB0aGFuIGFcbiAqICAgbGl2ZSB2YWx1ZSwgYW5kIGtlZXBzIHRoZSBkaW1lbnNpb24gdG90YWwgaWYgc3VjaCBhIHBhdGggaXMgYWRkZWQuXG4gKi9cbmV4cG9ydCB0eXBlIFJlc3VtZVNldHVwU291cmNlID0gJ2hvb2tfcHJlbG9hZCcgfCAncnVuX3N0YXJ0ZWQnIHwgJ2V2ZW50X2xvYWQnO1xuXG4vKiogV2hldGhlciB0aGUgbWVhc3VyZWQgc3RlcCByYW4gaW4gdGhlIHJlc3VtaW5nIGludm9jYXRpb24gb3IgYSBxdWV1ZWQgb25lLiAqL1xuZXhwb3J0IHR5cGUgUmVzdW1lU3RlcEV4ZWN1dGlvbiA9ICdpbmxpbmUnIHwgJ2Rpc3BhdGNoZWQnO1xuXG4vKipcbiAqIFRoZSByZXN1bWUgYm91bmRhcmllcyBvYnNlcnZlZCBzbyBmYXIsIHRocmVhZGVkIGZyb20gdGhlIHF1ZXVlIGhhbmRsZXIgaW50b1xuICogYGV4ZWN1dGVTdGVwYC4gUHJvZHVjZXIgZmllbGRzIGFycml2ZSBvbiB0aGUgcXVldWUgbWVzc2FnZVxuICogKHtAbGluayBIb29rUmVzdW1lVGltaW5nfSk7IGNvbnN1bWVyIGZpZWxkcyBhcmUgc3RhbXBlZCBieSB0aGUgaW52b2NhdGlvblxuICogdGhhdCByZXBsYXlzIHRoZSByZXN1bWUuXG4gKlxuICogVGhlIHJ1bnRpbWUgaG9sZHMgYXQgbW9zdCBvbmUgb2YgdGhlc2UgcGVyIGludm9jYXRpb24gYW5kIENPTlNVTUVTIGl0IHdoZW5cbiAqIGl0IGhhbmRzIGl0IHRvIHRoZSBleGVjdXRpb24gdGhhdCB3aWxsIGF0dGVtcHQgdGhlIG5leHQgZHVyYWJsZSBzdGVwLCBzbyBhXG4gKiBsYXRlciBzdGVwIGluIHRoZSBzYW1lIGludm9jYXRpb24g4oCUIG9yIGEgcmV0cnkgb2YgdGhlIHNhbWUgc3RlcCDigJQgbmV2ZXJcbiAqIHJlLXJlcG9ydHMgdGhlIHNhbWUgcmVzdW1wdGlvbi4gV2l0aGluIG9uZSBpbmxpbmUgYmF0Y2ggdGhlIG9iamVjdCBpc1xuICogc2hhcmVkIGJ5IGV2ZXJ5IHN0ZXAgYW5kIHRoZSB7QGxpbmsgUmVzdW1lVHRyVHJhY2tpbmcucmVwb3J0ZWR9IGxhdGNoIHBpY2tzXG4gKiB0aGUgc2luZ2xlIHJlcG9ydGVyLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlc3VtZVR0clRyYWNraW5nIHtcbiAgdHJpZ2dlcjogUmVzdW1lVHJpZ2dlcjtcbiAgLyoqIEFic2VudCBvbmx5IGlmIGFuIG9sZGVyIHByb2R1Y2VyIG9taXR0ZWQgaXQgZnJvbSB0aGUgcXVldWUgbWVzc2FnZS4gKi9cbiAgc3RyYXRlZ3k/OiBSZXN1bWVTdHJhdGVneTtcbiAgLyoqIFQwIOKAlCBlbnRyeSBpbnRvIGByZXN1bWVIb29rKClgLiAqL1xuICByZXN1bWVSZXF1ZXN0ZWRBdE1zOiBudW1iZXI7XG4gIC8qKiBUMSDigJQgaW1tZWRpYXRlbHkgYmVmb3JlIHRoZSBxdWV1ZSBwdWJsaXNoIHdhcyByZXF1ZXN0ZWQuICovXG4gIHF1ZXVlUHVibGlzaFJlcXVlc3RlZEF0TXM6IG51bWJlcjtcbiAgLyoqXG4gICAqIFQyIOKAlCBlbnRyeSBpbnRvIHRoZSBGSU5BTCBjb25zdW1lcidzIHF1ZXVlIGhhbmRsZXIuIEEgZGVsaXZlcnkgdGhhdFxuICAgKiByZS1yb3V0ZXMgZm9yIGRlcGxveW1lbnQgYWZmaW5pdHkgbmV2ZXIgc3RhbXBzIHRoaXMsIHNvIHRoZSByZS1yb3V0ZWQgaG9wXG4gICAqIHN0YXlzIGluc2lkZSBgcXVldWVfZGVsaXZlcnlgIHdoZXJlIGl0IGJlbG9uZ3MuXG4gICAqL1xuICBjb25zdW1lclN0YXJ0ZWRBdE1zOiBudW1iZXI7XG4gIC8qKiBUMyDigJQgdGhpcyBpbnZvY2F0aW9uJ3MgZmlyc3QgcmVwbGF5IHBhc3MuICovXG4gIHJlcGxheVN0YXJ0ZWRBdE1zPzogbnVtYmVyO1xuICAvKiogVDQg4oCUIHJlcGxheSBmaXJzdCBlbmNvdW50ZXJlZCBhIGR1cmFibGUgc3RlcCBhZnRlciB0aGUgcmVzdW1lLiAqL1xuICBuZXh0U3RlcEVuY291bnRlcmVkQXRNcz86IG51bWJlcjtcbiAgc2V0dXBTb3VyY2U/OiBSZXN1bWVTZXR1cFNvdXJjZTtcbiAgc3RlcEV4ZWN1dGlvbjogUmVzdW1lU3RlcEV4ZWN1dGlvbjtcbiAgLyoqXG4gICAqIE9uZS1zaG90IGxhdGNoLCBzZXQgYnkgdGhlIHN0ZXAgZXhlY3V0b3Igb25jZSB0aGlzIHJlc3VtcHRpb24gaGFzIGJlZW5cbiAgICogcmVwb3J0ZWQuIEV2ZXJ5IHN0ZXAgb2YgYW4gaW5saW5lIGJhdGNoIGlzIGhhbmRlZCB0aGUgU0FNRSB0cmFja2luZ1xuICAgKiBvYmplY3QsIHNvIHRoZSBmaXJzdCBvbmUgdG8gcmVhY2ggdXNlciBjb2RlIHRha2VzIHRoZSBtZWFzdXJlbWVudCBhbmQgdGhlXG4gICAqIHJlc3Qgc2VlIHRoaXMgYW5kIHNraXAg4oCUIG9uZSByZXN1bXB0aW9uLCBvbmUgc2FtcGxlLCB3aXRob3V0IHBpbm5pbmcgdGhlXG4gICAqIHNhbXBsZSB0byBhIHN0ZXAgdGhhdCBtYXkgbG9zZSBpdHMgY3JlYXRlLWNsYWltIGFuZCBuZXZlciBydW4uXG4gICAqXG4gICAqIERlbGliZXJhdGVseSBub3QgcGFydCBvZiB7QGxpbmsgSG9va1Jlc3VtZVRpbWluZ306IGl0IGlzIGludm9jYXRpb24tbG9jYWxcbiAgICogc3RhdGUsIGFuZCBhIHF1ZXVlIG1lc3NhZ2UgY2FycmllcyB0aGUgYm91bmRhcmllcywgbm90IHRoZSBjbGFpbS5cbiAgICovXG4gIHJlcG9ydGVkPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBSZWJ1aWxkIHRyYWNraW5nIGZyb20gYSBxdWV1ZSBtZXNzYWdlJ3MgdGltaW5nIG9iamVjdC4gUmV0dXJucyB1bmRlZmluZWQgZm9yXG4gKiBhIG1lc3NhZ2UgdGhhdCBjYXJyaWVzIG5vbmUgKGFuIG9sZGVyIHByb2R1Y2VyLCBvciBhbnkgbm9uLWhvb2sgZGVsaXZlcnkpIOKAlFxuICogdGhlIGNhbGxlciB0aGVuIHNpbXBseSByZXBvcnRzIG5vIFRUUi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlc3VtZVRyYWNraW5nRnJvbU1lc3NhZ2UoXG4gIHRpbWluZzogSG9va1Jlc3VtZVRpbWluZyB8IHVuZGVmaW5lZCxcbiAgc3RlcEV4ZWN1dGlvbjogUmVzdW1lU3RlcEV4ZWN1dGlvblxuKTogUmVzdW1lVHRyVHJhY2tpbmcgfCB1bmRlZmluZWQge1xuICBpZiAoIXRpbWluZykgcmV0dXJuIHVuZGVmaW5lZDtcbiAgaWYgKFxuICAgICFOdW1iZXIuaXNGaW5pdGUodGltaW5nLnJlc3VtZVJlcXVlc3RlZEF0TXMpIHx8XG4gICAgIU51bWJlci5pc0Zpbml0ZSh0aW1pbmcucXVldWVQdWJsaXNoUmVxdWVzdGVkQXRNcylcbiAgKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuICByZXR1cm4ge1xuICAgIHRyaWdnZXI6ICdob29rJyxcbiAgICAuLi4odGltaW5nLnN0cmF0ZWd5ID09PSAncGFyYWxsZWwnIHx8IHRpbWluZy5zdHJhdGVneSA9PT0gJ3NlcXVlbnRpYWwnXG4gICAgICA/IHsgc3RyYXRlZ3k6IHRpbWluZy5zdHJhdGVneSB9XG4gICAgICA6IHt9KSxcbiAgICByZXN1bWVSZXF1ZXN0ZWRBdE1zOiB0aW1pbmcucmVzdW1lUmVxdWVzdGVkQXRNcyxcbiAgICBxdWV1ZVB1Ymxpc2hSZXF1ZXN0ZWRBdE1zOiB0aW1pbmcucXVldWVQdWJsaXNoUmVxdWVzdGVkQXRNcyxcbiAgICAvLyBBIGRpc3BhdGNoZWQgc3RlcCByZWFkcyB0aGUgcmVzdW1pbmcgaW52b2NhdGlvbidzIGJvdW5kYXJpZXMgb2ZmIHRoZVxuICAgIC8vIG1lc3NhZ2U7IGFuIGlubGluZSBvbmUgaGFzIHRoZW0gc3RhbXBlZCBsb2NhbGx5IGJ5IHRoZSBjYWxsZXIsIHdoaWNoXG4gICAgLy8gb3ZlcndyaXRlcyB0aGlzIHBsYWNlaG9sZGVyIGltbWVkaWF0ZWx5IGFmdGVyIGNvbnN0cnVjdGlvbi5cbiAgICBjb25zdW1lclN0YXJ0ZWRBdE1zOiB0aW1pbmcuY29uc3VtZXJTdGFydGVkQXRNcyA/PyBOdW1iZXIuTmFOLFxuICAgIC4uLih0aW1pbmcucmVwbGF5U3RhcnRlZEF0TXMgIT09IHVuZGVmaW5lZFxuICAgICAgPyB7IHJlcGxheVN0YXJ0ZWRBdE1zOiB0aW1pbmcucmVwbGF5U3RhcnRlZEF0TXMgfVxuICAgICAgOiB7fSksXG4gICAgLi4uKHRpbWluZy5uZXh0U3RlcEVuY291bnRlcmVkQXRNcyAhPT0gdW5kZWZpbmVkXG4gICAgICA/IHsgbmV4dFN0ZXBFbmNvdW50ZXJlZEF0TXM6IHRpbWluZy5uZXh0U3RlcEVuY291bnRlcmVkQXRNcyB9XG4gICAgICA6IHt9KSxcbiAgICAuLi4odGltaW5nLnNldHVwU291cmNlID09PSAnaG9va19wcmVsb2FkJyB8fFxuICAgIHRpbWluZy5zZXR1cFNvdXJjZSA9PT0gJ3J1bl9zdGFydGVkJyB8fFxuICAgIHRpbWluZy5zZXR1cFNvdXJjZSA9PT0gJ2V2ZW50X2xvYWQnXG4gICAgICA/IHsgc2V0dXBTb3VyY2U6IHRpbWluZy5zZXR1cFNvdXJjZSB9XG4gICAgICA6IHt9KSxcbiAgICBzdGVwRXhlY3V0aW9uLFxuICB9O1xufVxuXG4vKipcbiAqIFNlcmlhbGl6ZSB0cmFja2luZyBiYWNrIG9udG8gYSBxdWV1ZSBtZXNzYWdlLCBmb3IgdGhlIGNhc2Ugd2hlcmUgdGhlXG4gKiByZXN1bWluZyBpbnZvY2F0aW9uIGRpc3BhdGNoZXMgdGhlIG5leHQgZHVyYWJsZSBzdGVwIHRvIGFub3RoZXIgaW52b2NhdGlvblxuICogaW5zdGVhZCBvZiBydW5uaW5nIGl0IGlubGluZS4gUmV0dXJucyB1bmRlZmluZWQgd2hlbiB0aGUgdHJhY2tpbmcgaXMgbm90XG4gKiBjb21wbGV0ZSBlbm91Z2ggdG8gYmUgd29ydGggZm9yd2FyZGluZy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlc3VtZVRpbWluZ0Zvck1lc3NhZ2UoXG4gIHRyYWNraW5nOiBSZXN1bWVUdHJUcmFja2luZyB8IHVuZGVmaW5lZFxuKTogSG9va1Jlc3VtZVRpbWluZyB8IHVuZGVmaW5lZCB7XG4gIGlmICghdHJhY2tpbmcpIHJldHVybiB1bmRlZmluZWQ7XG4gIGlmICghTnVtYmVyLmlzRmluaXRlKHRyYWNraW5nLmNvbnN1bWVyU3RhcnRlZEF0TXMpKSByZXR1cm4gdW5kZWZpbmVkO1xuICByZXR1cm4ge1xuICAgIHJlc3VtZVJlcXVlc3RlZEF0TXM6IHRyYWNraW5nLnJlc3VtZVJlcXVlc3RlZEF0TXMsXG4gICAgcXVldWVQdWJsaXNoUmVxdWVzdGVkQXRNczogdHJhY2tpbmcucXVldWVQdWJsaXNoUmVxdWVzdGVkQXRNcyxcbiAgICAuLi4odHJhY2tpbmcuc3RyYXRlZ3kgIT09IHVuZGVmaW5lZCA/IHsgc3RyYXRlZ3k6IHRyYWNraW5nLnN0cmF0ZWd5IH0gOiB7fSksXG4gICAgY29uc3VtZXJTdGFydGVkQXRNczogdHJhY2tpbmcuY29uc3VtZXJTdGFydGVkQXRNcyxcbiAgICAuLi4odHJhY2tpbmcucmVwbGF5U3RhcnRlZEF0TXMgIT09IHVuZGVmaW5lZFxuICAgICAgPyB7IHJlcGxheVN0YXJ0ZWRBdE1zOiB0cmFja2luZy5yZXBsYXlTdGFydGVkQXRNcyB9XG4gICAgICA6IHt9KSxcbiAgICAuLi4odHJhY2tpbmcubmV4dFN0ZXBFbmNvdW50ZXJlZEF0TXMgIT09IHVuZGVmaW5lZFxuICAgICAgPyB7IG5leHRTdGVwRW5jb3VudGVyZWRBdE1zOiB0cmFja2luZy5uZXh0U3RlcEVuY291bnRlcmVkQXRNcyB9XG4gICAgICA6IHt9KSxcbiAgICAuLi4odHJhY2tpbmcuc2V0dXBTb3VyY2UgIT09IHVuZGVmaW5lZFxuICAgICAgPyB7IHNldHVwU291cmNlOiB0cmFja2luZy5zZXR1cFNvdXJjZSB9XG4gICAgICA6IHt9KSxcbiAgfTtcbn1cblxuLyoqIEV2ZXJ5IGJvdW5kYXJ5IHRoZSBlbWlzc2lvbiBnYXRlIHJlcXVpcmVzLCBwbHVzIHRoZSBvcHRpb25hbCBjbGFpbSBlbmQuICovXG5pbnRlcmZhY2UgUmVzdW1lQm91bmRhcmllcyB7XG4gIC8qKiBUMCAqLyByZXN1bWVSZXF1ZXN0ZWRBdE1zOiBudW1iZXI7XG4gIC8qKiBUMSAqLyBxdWV1ZVB1Ymxpc2hSZXF1ZXN0ZWRBdE1zOiBudW1iZXI7XG4gIC8qKiBUMiAqLyBjb25zdW1lclN0YXJ0ZWRBdE1zOiBudW1iZXI7XG4gIC8qKiBUMyAqLyByZXBsYXlTdGFydGVkQXRNczogbnVtYmVyO1xuICAvKiogVDQgKi8gbmV4dFN0ZXBFbmNvdW50ZXJlZEF0TXM6IG51bWJlcjtcbiAgLyoqIFQ1ICovIHN0ZXBDbGFpbVN0YXJ0ZWRBdE1zOiBudW1iZXI7XG4gIC8qKiBUNiDigJQgYWJzZW50IG9uIHRoZSBvcHRpbWlzdGljLXN0YXJ0IHBhdGg7IHNlZSBiZWxvdy4gKi9cbiAgc3RlcENsYWltQ29tcGxldGVkQXRNczogbnVtYmVyIHwgdW5kZWZpbmVkO1xuICAvKiogVDcgKi8gc3RlcENvZGVTdGFydGVkQXRNczogbnVtYmVyO1xufVxuXG4vKipcbiAqIFZhbGlkYXRlIHRoYXQgZXZlcnkgcmVxdWlyZWQgYm91bmRhcnkgaXMgYSBmaW5pdGUgZXBvY2gtbXMgdmFsdWUgYW5kIHRoYXRcbiAqIHRoZSB3aG9sZSBzZXF1ZW5jZSBpcyBub24tZGVjcmVhc2luZy4gUmV0dXJucyB1bmRlZmluZWQgb3RoZXJ3aXNlLCB3aGljaFxuICogc3VwcHJlc3NlcyB0aGUgbWV0cmljIGVudGlyZWx5IHJhdGhlciB0aGFuIHJlcG9ydGluZyBhIHBoYXNlIHRoYXQgbmV2ZXJcbiAqIGhhcHBlbmVkIG9yIGEgbmVnYXRpdmUgZHVyYXRpb24uXG4gKi9cbmZ1bmN0aW9uIHZhbGlkYXRlQm91bmRhcmllcyhcbiAgYjogUmVzdW1lQm91bmRhcmllc1xuKTogcmVhZG9ubHkgbnVtYmVyW10gfCB1bmRlZmluZWQge1xuICBjb25zdCBvcmRlcmVkID0gW1xuICAgIGIucmVzdW1lUmVxdWVzdGVkQXRNcyxcbiAgICBiLnF1ZXVlUHVibGlzaFJlcXVlc3RlZEF0TXMsXG4gICAgYi5jb25zdW1lclN0YXJ0ZWRBdE1zLFxuICAgIGIucmVwbGF5U3RhcnRlZEF0TXMsXG4gICAgYi5uZXh0U3RlcEVuY291bnRlcmVkQXRNcyxcbiAgICBiLnN0ZXBDbGFpbVN0YXJ0ZWRBdE1zLFxuICAgIC4uLihiLnN0ZXBDbGFpbUNvbXBsZXRlZEF0TXMgIT09IHVuZGVmaW5lZFxuICAgICAgPyBbYi5zdGVwQ2xhaW1Db21wbGV0ZWRBdE1zXVxuICAgICAgOiBbXSksXG4gICAgYi5zdGVwQ29kZVN0YXJ0ZWRBdE1zLFxuICBdO1xuICBmb3IgKGNvbnN0IHZhbHVlIG9mIG9yZGVyZWQpIHtcbiAgICBpZiAodHlwZW9mIHZhbHVlICE9PSAnbnVtYmVyJyB8fCAhTnVtYmVyLmlzRmluaXRlKHZhbHVlKSkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuICBmb3IgKGxldCBpID0gMTsgaSA8IG9yZGVyZWQubGVuZ3RoOyBpKyspIHtcbiAgICBpZiAob3JkZXJlZFtpXSA8IG9yZGVyZWRbaSAtIDFdKSByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG4gIHJldHVybiBvcmRlcmVkO1xufVxuXG4vKipcbiAqIENvbXB1dGUgdGhlIFRUUiBzcGFuIGF0dHJpYnV0ZXMgZm9yIGEgc3RlcCB0aGF0IGlzIHRoZSBmaXJzdCBkdXJhYmxlIHN0ZXBcbiAqIGZvbGxvd2luZyBhIGhvb2sgcmVzdW1lLiBSZXR1cm5zIHVuZGVmaW5lZCDigJQgZW1pdHRpbmcgbm90aGluZyBhdCBhbGwg4oCUIHdoZW5cbiAqIGFueSBvZiB0aGVzZSBob2xkOlxuICpcbiAqIC0gdGhlIGludm9jYXRpb24gY2FycmllcyBubyByZXN1bWUgdHJhY2tpbmcgKG5vdCBhIGhvb2sgcmVzdW1lLCBvciBhbiBvbGRlclxuICogICBxdWV1ZSBtZXNzYWdlIHdpdGggbm8gdGltaW5nKTtcbiAqIC0gdGhpcyBpcyBhIHJldHJ5IChgYXR0ZW1wdCAhPT0gMWApLCB3aGljaCBtZWFzdXJlcyBhIHJlLWV4ZWN1dGlvbiByYXRoZXJcbiAqICAgdGhhbiB0aGUgcmVzdW1wdGlvbjtcbiAqIC0gYSByZXF1aXJlZCBib3VuZGFyeSBpcyBtaXNzaW5nLCBub24tZmluaXRlLCBvciBvdXQgb2Ygb3JkZXIuXG4gKlxuICogYHN0ZXBfY2xhaW1fbXNgIGlzIHRoZSBvbmUgcGhhc2UgdGhhdCBtYXkgYmUgaW5kaXZpZHVhbGx5IG9taXR0ZWQuIFVuZGVyXG4gKiBvcHRpbWlzdGljIGlubGluZSBzdGFydCB0aGUgYHN0ZXBfc3RhcnRlZGAgY2xhaW0gaXMgZGVsaWJlcmF0ZWx5IE5PVCBhd2FpdGVkXG4gKiBiZWZvcmUgdGhlIGJvZHkgcnVucywgc28gaXRzIGNvbXBsZXRpb24gaW5zdGFudCBkb2VzIG5vdCBleGlzdCB5ZXQgYXQgVDc7XG4gKiByYXRoZXIgdGhhbiBpbnZlbnQgb25lLCB0aGUgY2xhaW0gcGhhc2UgaXMgZHJvcHBlZCBhbmQgYHN0ZXBfcHJlcGFyZV9tc2BcbiAqIHNwYW5zIFQ14oaSVDcuIFRoZSBzdW0tZXF1YWxzLXRvdGFsIHByb3BlcnR5IGhvbGRzIGVpdGhlciB3YXkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb21wdXRlUmVzdW1lVHRyQXR0cmlidXRlcyhwYXJhbXM6IHtcbiAgdHJhY2tpbmc6IFJlc3VtZVR0clRyYWNraW5nIHwgdW5kZWZpbmVkO1xuICAvKiogVGhlIGF0dGVtcHQgbnVtYmVyIG9mIHRoZSBleGVjdXRpb24gYWJvdXQgdG8gcnVuLiAqL1xuICBhdHRlbXB0OiBudW1iZXI7XG4gIC8qKiBUNSDigJQgYERhdGUubm93KClgIGltbWVkaWF0ZWx5IGJlZm9yZSB0aGUgYHN0ZXBfc3RhcnRlZGAgcmVxdWVzdC4gKi9cbiAgc3RlcENsYWltU3RhcnRlZEF0TXM6IG51bWJlciB8IHVuZGVmaW5lZDtcbiAgLyoqIFQ2IOKAlCBgRGF0ZS5ub3coKWAgb25jZSB0aGUgYHN0ZXBfc3RhcnRlZGAgcmVzcG9uc2UgcmV0dXJuZWQuICovXG4gIHN0ZXBDbGFpbUNvbXBsZXRlZEF0TXM6IG51bWJlciB8IHVuZGVmaW5lZDtcbiAgLyoqIFQ3IOKAlCBgRGF0ZS5ub3coKWAgaW1tZWRpYXRlbHkgYmVmb3JlIGBzdGVwRm4uYXBwbHkoKWAuICovXG4gIHN0ZXBDb2RlU3RhcnRlZEF0TXM6IG51bWJlcjtcbn0pOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmcgfCBudW1iZXI+IHwgdW5kZWZpbmVkIHtcbiAgY29uc3QgeyB0cmFja2luZyB9ID0gcGFyYW1zO1xuICBpZiAoIXRyYWNraW5nIHx8IHBhcmFtcy5hdHRlbXB0ICE9PSAxKSByZXR1cm4gdW5kZWZpbmVkO1xuICBpZiAoXG4gICAgdHJhY2tpbmcucmVwbGF5U3RhcnRlZEF0TXMgPT09IHVuZGVmaW5lZCB8fFxuICAgIHRyYWNraW5nLm5leHRTdGVwRW5jb3VudGVyZWRBdE1zID09PSB1bmRlZmluZWQgfHxcbiAgICBwYXJhbXMuc3RlcENsYWltU3RhcnRlZEF0TXMgPT09IHVuZGVmaW5lZFxuICApIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgY29uc3QgYm91bmRhcmllczogUmVzdW1lQm91bmRhcmllcyA9IHtcbiAgICByZXN1bWVSZXF1ZXN0ZWRBdE1zOiB0cmFja2luZy5yZXN1bWVSZXF1ZXN0ZWRBdE1zLFxuICAgIHF1ZXVlUHVibGlzaFJlcXVlc3RlZEF0TXM6IHRyYWNraW5nLnF1ZXVlUHVibGlzaFJlcXVlc3RlZEF0TXMsXG4gICAgY29uc3VtZXJTdGFydGVkQXRNczogdHJhY2tpbmcuY29uc3VtZXJTdGFydGVkQXRNcyxcbiAgICByZXBsYXlTdGFydGVkQXRNczogdHJhY2tpbmcucmVwbGF5U3RhcnRlZEF0TXMsXG4gICAgbmV4dFN0ZXBFbmNvdW50ZXJlZEF0TXM6IHRyYWNraW5nLm5leHRTdGVwRW5jb3VudGVyZWRBdE1zLFxuICAgIHN0ZXBDbGFpbVN0YXJ0ZWRBdE1zOiBwYXJhbXMuc3RlcENsYWltU3RhcnRlZEF0TXMsXG4gICAgc3RlcENsYWltQ29tcGxldGVkQXRNczogcGFyYW1zLnN0ZXBDbGFpbUNvbXBsZXRlZEF0TXMsXG4gICAgc3RlcENvZGVTdGFydGVkQXRNczogcGFyYW1zLnN0ZXBDb2RlU3RhcnRlZEF0TXMsXG4gIH07XG4gIGlmICghdmFsaWRhdGVCb3VuZGFyaWVzKGJvdW5kYXJpZXMpKSByZXR1cm4gdW5kZWZpbmVkO1xuXG4gIGNvbnN0IHtcbiAgICByZXN1bWVSZXF1ZXN0ZWRBdE1zOiB0MCxcbiAgICBxdWV1ZVB1Ymxpc2hSZXF1ZXN0ZWRBdE1zOiB0MSxcbiAgICBjb25zdW1lclN0YXJ0ZWRBdE1zOiB0MixcbiAgICByZXBsYXlTdGFydGVkQXRNczogdDMsXG4gICAgbmV4dFN0ZXBFbmNvdW50ZXJlZEF0TXM6IHQ0LFxuICAgIHN0ZXBDbGFpbVN0YXJ0ZWRBdE1zOiB0NSxcbiAgICBzdGVwQ2xhaW1Db21wbGV0ZWRBdE1zOiB0NixcbiAgICBzdGVwQ29kZVN0YXJ0ZWRBdE1zOiB0NyxcbiAgfSA9IGJvdW5kYXJpZXM7XG5cbiAgcmV0dXJuIHtcbiAgICAuLi5BdHRyaWJ1dGUuUmVzdW1lVG90YWxNcyh0NyAtIHQwKSxcbiAgICAuLi5BdHRyaWJ1dGUuUmVzdW1lUHJvZHVjZXJQcmVwTXModDEgLSB0MCksXG4gICAgLi4uQXR0cmlidXRlLlJlc3VtZVF1ZXVlRGVsaXZlcnlNcyh0MiAtIHQxKSxcbiAgICAuLi5BdHRyaWJ1dGUuUmVzdW1lU2V0dXBNcyh0MyAtIHQyKSxcbiAgICAuLi5BdHRyaWJ1dGUuUmVzdW1lUmVwbGF5TXModDQgLSB0MyksXG4gICAgLi4uQXR0cmlidXRlLlJlc3VtZVN0ZXBEaXNwYXRjaE1zKHQ1IC0gdDQpLFxuICAgIC4uLih0NiAhPT0gdW5kZWZpbmVkID8gQXR0cmlidXRlLlJlc3VtZVN0ZXBDbGFpbU1zKHQ2IC0gdDUpIDoge30pLFxuICAgIC4uLkF0dHJpYnV0ZS5SZXN1bWVTdGVwUHJlcGFyZU1zKHQ3IC0gKHQ2ID8/IHQ1KSksXG4gICAgLi4uQXR0cmlidXRlLlJlc3VtZVRyaWdnZXIodHJhY2tpbmcudHJpZ2dlciksXG4gICAgLi4uKHRyYWNraW5nLnN0cmF0ZWd5ICE9PSB1bmRlZmluZWRcbiAgICAgID8gQXR0cmlidXRlLlJlc3VtZVN0cmF0ZWd5KHRyYWNraW5nLnN0cmF0ZWd5KVxuICAgICAgOiB7fSksXG4gICAgLi4uKHRyYWNraW5nLnNldHVwU291cmNlICE9PSB1bmRlZmluZWRcbiAgICAgID8gQXR0cmlidXRlLlJlc3VtZVNldHVwU291cmNlKHRyYWNraW5nLnNldHVwU291cmNlKVxuICAgICAgOiB7fSksXG4gICAgLi4uQXR0cmlidXRlLlJlc3VtZVN0ZXBFeGVjdXRpb24odHJhY2tpbmcuc3RlcEV4ZWN1dGlvbiksXG4gIH07XG59XG4iXX0=
155
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzdW1lLWxhdGVuY3kuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcnVudGltZS9yZXN1bWUtbGF0ZW5jeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEtBQUssU0FBUyxNQUFNLHNDQUFzQyxDQUFDO0FBc0hsRTs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLHlCQUF5QixDQUN2QyxNQUFvQyxFQUNwQyxhQUFrQztJQUVsQyxJQUFJLENBQUMsTUFBTTtRQUFFLE9BQU8sU0FBUyxDQUFDO0lBQzlCLElBQ0UsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQztRQUM1QyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLHlCQUF5QixDQUFDLEVBQ2xELENBQUM7UUFDRCxPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO0lBQ0QsT0FBTztRQUNMLE9BQU8sRUFBRSxNQUFNO1FBQ2YsR0FBRyxDQUFDLE1BQU0sQ0FBQyxRQUFRLEtBQUssTUFBTTtZQUM5QixNQUFNLENBQUMsUUFBUSxLQUFLLFVBQVU7WUFDOUIsTUFBTSxDQUFDLFFBQVEsS0FBSyxZQUFZO1lBQzlCLENBQUMsQ0FBQyxFQUFFLFFBQVEsRUFBRSxNQUFNLENBQUMsUUFBUSxFQUFFO1lBQy9CLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDUCxtQkFBbUIsRUFBRSxNQUFNLENBQUMsbUJBQW1CO1FBQy9DLHlCQUF5QixFQUFFLE1BQU0sQ0FBQyx5QkFBeUI7UUFDM0QsdUVBQXVFO1FBQ3ZFLHVFQUF1RTtRQUN2RSw4REFBOEQ7UUFDOUQsbUJBQW1CLEVBQUUsTUFBTSxDQUFDLG1CQUFtQixJQUFJLE1BQU0sQ0FBQyxHQUFHO1FBQzdELEdBQUcsQ0FBQyxNQUFNLENBQUMsaUJBQWlCLEtBQUssU0FBUztZQUN4QyxDQUFDLENBQUMsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLENBQUMsaUJBQWlCLEVBQUU7WUFDakQsQ0FB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QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBIb29rUmVzdW1lVGltaW5nIH0gZnJvbSAnQHdvcmtmbG93L3dvcmxkJztcbmltcG9ydCAqIGFzIEF0dHJpYnV0ZSBmcm9tICcuLi90ZWxlbWV0cnkvc2VtYW50aWMtY29udmVudGlvbnMuanMnO1xuXG4vKipcbiAqIEhvb2stdHJpZ2dlcmVkIHRpbWUtdG8tcmVzdW1lIChUVFIpOiB3YWxsLWNsb2NrIGZyb20gZW50cnkgaW50b1xuICogYHJlc3VtZUhvb2soKWAgKFQwKSB0byB0aGUgZmlyc3QgbGluZSBvZiB0aGUgbmV4dCBkdXJhYmxlIHN0ZXAgKFQ3KSwgcGx1cyBhXG4gKiBkZWNvbXBvc2l0aW9uIGludG8gbm9uLW92ZXJsYXBwaW5nIHBoYXNlcyB0aGF0IHN1bSBleGFjdGx5IHRvIGl0LlxuICpcbiAqIGBgYHRleHRcbiAqIFQwIHJlc3VtZUhvb2soKSBlbnRlcmVkXG4gKiAgICAgIHByb2R1Y2VyX3ByZXAgICA6IGhvb2sgbG9va3VwLCBzZXJpYWxpemF0aW9uLCBlbmNyeXB0aW9uXG4gKiBUMSBxdWV1ZSBwdWJsaXNoIHJlcXVlc3RlZFxuICogICAgICBxdWV1ZV9kZWxpdmVyeSAgOiBuZXR3b3JrICsgVlFTIGRlbGl2ZXJ5IChpbmNsLiBhbnkgYWZmaW5pdHkgcmUtcm91dGUpXG4gKiBUMiBmaW5hbCBjb25zdW1lcidzIHF1ZXVlIGhhbmRsZXIgZW50ZXJlZFxuICogICAgICByZXN1bWVfc2V0dXAgICAgOiBhZmZpbml0eSBjaGVjaywgaG9va19yZWNlaXZlZCByZS1lbnN1cmUsIHJlcGxheSBwcmVsb2FkXG4gKiBUMyByZXBsYXkgYmVnaW5zXG4gKiAgICAgIHJlcGxheSAgICAgICAgICA6IFZNL3Nlc3Npb24gY3JlYXRpb24gYW5kIHdvcmtmbG93IHJlcGxheVxuICogVDQgbmV4dCBkdXJhYmxlIHN0ZXAgZW5jb3VudGVyZWRcbiAqICAgICAgc3RlcF9kaXNwYXRjaCAgIDogc3VzcGVuc2lvbiBoYW5kbGluZywgaW5saW5lIGJhdGNoIG9yIHF1ZXVlIGRpc3BhdGNoXG4gKiBUNSBzdGVwX3N0YXJ0ZWQgcmVxdWVzdCBiZWdpbnNcbiAqICAgICAgc3RlcF9jbGFpbSAgICAgIDogdGhlIGNsYWltIHJvdW5kIHRyaXBcbiAqIFQ2IHN0ZXBfc3RhcnRlZCByZXNwb25zZSByZXR1cm5lZFxuICogICAgICBzdGVwX3ByZXBhcmUgICAgOiBrZXkgcmVzb2x1dGlvbiwgYXJndW1lbnQgaHlkcmF0aW9uLCBjb250ZXh0IHNldHVwXG4gKiBUNyBpbW1lZGlhdGVseSBiZWZvcmUgc3RlcEZuLmFwcGx5KClcbiAqIGBgYFxuICpcbiAqIE9uIHRoZSBsYXp5IHBhdGggdGhlIHByb2R1Y2VyIHdyaXRlcyBubyBgaG9va19yZWNlaXZlZGAgYXQgYWxsICh0aGVcbiAqIGNvbnN1bWVyIG1hdGVyaWFsaXplcyBpdCBmcm9tIGBob29rSW5wdXRgKSwgc28gdGhlIHdpbmRvdyBoYXMgbm8gcHJvZHVjZXJcbiAqIHdyaXRlIHBoYXNlLiBPbiB0aGUgc2VxdWVudGlhbCBwYXRoIHRoYXQgd3JpdGUgaXMgYXdhaXRlZCBpbnNpZGVcbiAqIGBwcm9kdWNlcl9wcmVwYCwgYW5kIGZvciBtZXNzYWdlcyBmcm9tIGFuIG9sZGVyIHByb2R1Y2VyLCB3aGljaCByYWNlZCB0aGVcbiAqIHdyaXRlIGFnYWluc3QgdGhlIHB1Ymxpc2gsIGl0IG92ZXJsYXBwZWQgYHByb2R1Y2VyX3ByZXBgIHJhdGhlciB0aGFuIGFkZGluZ1xuICogdG8gaXQuIEVpdGhlciB3YXkgaXQgaGFzIG5vIHBoYXNlIG9mIGl0cyBvd247IGl0IHJlbWFpbnMgdmlzaWJsZSBhcyBhXG4gKiBjb250ZXh0dWFsIHNwYW4gKGBob29rLnJlc3VtZWApLlxuICpcbiAqIFQwL1QxIGFyZSBzdGFtcGVkIG9uIHRoZSBwcm9kdWNlcidzIG1hY2hpbmUgYW5kIFQyLi5UNyBvbiB0aGUgY29uc3VtZXIncywgc29cbiAqIHRoZSBtZWFzdXJlbWVudCBpcyBzdWJqZWN0IHRvIGNyb3NzLW1hY2hpbmUgY2xvY2sgc2tldy4gUmF0aGVyIHRoYW4gY2xhbXBcbiAqICh3aGljaCB3b3VsZCBicmVhayB0aGUgc3VtLWVxdWFscy10b3RhbCBwcm9wZXJ0eSB0aGlzIGRlY29tcG9zaXRpb24gZXhpc3RzXG4gKiBmb3IpLCBhIG5vbi1tb25vdG9uaWMgYm91bmRhcnkgc2V0IGRyb3BzIHRoZSB3aG9sZSBzYW1wbGU7IHNlZVxuICoge0BsaW5rIGNvbXB1dGVSZXN1bWVUdHJBdHRyaWJ1dGVzfS5cbiAqL1xuXG4vKiogV2hhdCBjYXVzZWQgdGhlIHJlc3VtcHRpb24gYmVpbmcgbWVhc3VyZWQuIE9ubHkgaG9va3MgYXJlIG1lYXN1cmVkIHRvZGF5LiAqL1xuZXhwb3J0IHR5cGUgUmVzdW1lVHJpZ2dlciA9ICdob29rJztcblxuLyoqXG4gKiBXaGljaCBgcmVzdW1lSG9vaygpYCBkaXNwYXRjaCBwYXRoIHByb2R1Y2VkIHRoaXMgcmVzdW1lLlxuICpcbiAqIGBwYXJhbGxlbGAgaXMgb25seSBldmVyIHJlY2VpdmVkIGZyb20gYW4gb2xkZXIgcHJvZHVjZXIsIHdoaWNoIHJhY2VkIGl0cyBvd25cbiAqIGBob29rX3JlY2VpdmVkYCB3cml0ZSBhZ2FpbnN0IHRoZSBwdWJsaXNoLiBDdXJyZW50IHByb2R1Y2VycyBzZW5kIGBsYXp5YCAobm9cbiAqIHByb2R1Y2VyIHdyaXRlOiB0aGUgY29uc3VtZXIgbWF0ZXJpYWxpemVzIHRoZSBldmVudCBmcm9tIGBob29rSW5wdXRgKSBvclxuICogYHNlcXVlbnRpYWxgLlxuICovXG5leHBvcnQgdHlwZSBSZXN1bWVTdHJhdGVneSA9ICdsYXp5JyB8ICdwYXJhbGxlbCcgfCAnc2VxdWVudGlhbCc7XG5cbi8qKlxuICogSG93IHRoZSBjb25zdW1pbmcgaW52b2NhdGlvbiBpbml0aWFsaXplZCBpdHMgcmVwbGF5IHN0YXRlOlxuICpcbiAqIC0gYGhvb2tfcHJlbG9hZGA6IHRoZSBob2lzdGVkIGBob29rX3JlY2VpdmVkYCB3cml0ZSByZXR1cm5lZCBhIHVzYWJsZVxuICogICByZXBsYXkgcHJlbG9hZCwgc28gbmVpdGhlciBgcnVuX3N0YXJ0ZWRgIG5vciB0aGUgaW5pdGlhbCBgZXZlbnRzLmxpc3RgIHJhbi5cbiAqIC0gYHJ1bl9zdGFydGVkYDogdGhlIGdlbmVyaWMgYHJ1bl9zdGFydGVkYCBzZXR1cCByYW4gKGluY2x1ZGluZyB0aGUgZmFzdFxuICogICBwYXRoJ3MgZmFsbGJhY2ssIHdoZXJlIHRoZSBob2lzdGVkIHdyaXRlIHN1Y2NlZWRlZCBidXQgcmV0dXJuZWQgbm8gdXNhYmxlXG4gKiAgIHByZWxvYWQpLlxuICogLSBgZXZlbnRfbG9hZGA6IG5laXRoZXIgc2V0dXAgcmFuIGJlY2F1c2UgdGhlIHJ1biBhcnJpdmVkIGFscmVhZHkgbG9hZGVkLFxuICogICBzbyBzZXR1cCB3YXMgYSBwbGFpbiBldmVudCBsb2FkLiBObyBjdXJyZW50IHBhdGggcHJvZHVjZXMgaXQgKHRoZSBvbmVcbiAqICAgcHJlbG9hZGVkLXJ1biBwYXRoLCB0aGUgYmFja2dyb3VuZC1zdGVwIGZhbGwtdGhyb3VnaCwgY29uc3VtZXMgdGhlXG4gKiAgIHRyYWNraW5nIG9uIGl0cyBvd24gc3RlcCBmaXJzdCk7IGl0IGlzIHRoZSBob25lc3QgZGVmYXVsdCByYXRoZXIgdGhhbiBhXG4gKiAgIGxpdmUgdmFsdWUsIGFuZCBrZWVwcyB0aGUgZGltZW5zaW9uIHRvdGFsIGlmIHN1Y2ggYSBwYXRoIGlzIGFkZGVkLlxuICovXG5leHBvcnQgdHlwZSBSZXN1bWVTZXR1cFNvdXJjZSA9ICdob29rX3ByZWxvYWQnIHwgJ3J1bl9zdGFydGVkJyB8ICdldmVudF9sb2FkJztcblxuLyoqIFdoZXRoZXIgdGhlIG1lYXN1cmVkIHN0ZXAgcmFuIGluIHRoZSByZXN1bWluZyBpbnZvY2F0aW9uIG9yIGEgcXVldWVkIG9uZS4gKi9cbmV4cG9ydCB0eXBlIFJlc3VtZVN0ZXBFeGVjdXRpb24gPSAnaW5saW5lJyB8ICdkaXNwYXRjaGVkJztcblxuLyoqXG4gKiBUaGUgcmVzdW1lIGJvdW5kYXJpZXMgb2JzZXJ2ZWQgc28gZmFyLCB0aHJlYWRlZCBmcm9tIHRoZSBxdWV1ZSBoYW5kbGVyIGludG9cbiAqIGBleGVjdXRlU3RlcGAuIFByb2R1Y2VyIGZpZWxkcyBhcnJpdmUgb24gdGhlIHF1ZXVlIG1lc3NhZ2VcbiAqICh7QGxpbmsgSG9va1Jlc3VtZVRpbWluZ30pOyBjb25zdW1lciBmaWVsZHMgYXJlIHN0YW1wZWQgYnkgdGhlIGludm9jYXRpb25cbiAqIHRoYXQgcmVwbGF5cyB0aGUgcmVzdW1lLlxuICpcbiAqIFRoZSBydW50aW1lIGhvbGRzIGF0IG1vc3Qgb25lIG9mIHRoZXNlIHBlciBpbnZvY2F0aW9uIGFuZCBDT05TVU1FUyBpdCB3aGVuXG4gKiBpdCBoYW5kcyBpdCB0byB0aGUgZXhlY3V0aW9uIHRoYXQgd2lsbCBhdHRlbXB0IHRoZSBuZXh0IGR1cmFibGUgc3RlcCwgc28gYVxuICogbGF0ZXIgc3RlcCBpbiB0aGUgc2FtZSBpbnZvY2F0aW9uIChvciBhIHJldHJ5IG9mIHRoZSBzYW1lIHN0ZXApIG5ldmVyXG4gKiByZS1yZXBvcnRzIHRoZSBzYW1lIHJlc3VtcHRpb24uIFdpdGhpbiBvbmUgaW5saW5lIGJhdGNoIHRoZSBvYmplY3QgaXNcbiAqIHNoYXJlZCBieSBldmVyeSBzdGVwIGFuZCB0aGUge0BsaW5rIFJlc3VtZVR0clRyYWNraW5nLnJlcG9ydGVkfSBsYXRjaCBwaWNrc1xuICogdGhlIHNpbmdsZSByZXBvcnRlci5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZXN1bWVUdHJUcmFja2luZyB7XG4gIHRyaWdnZXI6IFJlc3VtZVRyaWdnZXI7XG4gIC8qKiBBYnNlbnQgb25seSBpZiBhbiBvbGRlciBwcm9kdWNlciBvbWl0dGVkIGl0IGZyb20gdGhlIHF1ZXVlIG1lc3NhZ2UuICovXG4gIHN0cmF0ZWd5PzogUmVzdW1lU3RyYXRlZ3k7XG4gIC8qKiBUMDogZW50cnkgaW50byBgcmVzdW1lSG9vaygpYC4gKi9cbiAgcmVzdW1lUmVxdWVzdGVkQXRNczogbnVtYmVyO1xuICAvKiogVDE6IGltbWVkaWF0ZWx5IGJlZm9yZSB0aGUgcXVldWUgcHVibGlzaCB3YXMgcmVxdWVzdGVkLiAqL1xuICBxdWV1ZVB1Ymxpc2hSZXF1ZXN0ZWRBdE1zOiBudW1iZXI7XG4gIC8qKlxuICAgKiBUMjogZW50cnkgaW50byB0aGUgRklOQUwgY29uc3VtZXIncyBxdWV1ZSBoYW5kbGVyLiBBIGRlbGl2ZXJ5IHRoYXRcbiAgICogcmUtcm91dGVzIGZvciBkZXBsb3ltZW50IGFmZmluaXR5IG5ldmVyIHN0YW1wcyB0aGlzLCBzbyB0aGUgcmUtcm91dGVkIGhvcFxuICAgKiBzdGF5cyBpbnNpZGUgYHF1ZXVlX2RlbGl2ZXJ5YCB3aGVyZSBpdCBiZWxvbmdzLlxuICAgKi9cbiAgY29uc3VtZXJTdGFydGVkQXRNczogbnVtYmVyO1xuICAvKiogVDM6IHRoaXMgaW52b2NhdGlvbidzIGZpcnN0IHJlcGxheSBwYXNzLiAqL1xuICByZXBsYXlTdGFydGVkQXRNcz86IG51bWJlcjtcbiAgLyoqIFQ0OiByZXBsYXkgZmlyc3QgZW5jb3VudGVyZWQgYSBkdXJhYmxlIHN0ZXAgYWZ0ZXIgdGhlIHJlc3VtZS4gKi9cbiAgbmV4dFN0ZXBFbmNvdW50ZXJlZEF0TXM/OiBudW1iZXI7XG4gIHNldHVwU291cmNlPzogUmVzdW1lU2V0dXBTb3VyY2U7XG4gIHN0ZXBFeGVjdXRpb246IFJlc3VtZVN0ZXBFeGVjdXRpb247XG4gIC8qKlxuICAgKiBPbmUtc2hvdCBsYXRjaCwgc2V0IGJ5IHRoZSBzdGVwIGV4ZWN1dG9yIG9uY2UgdGhpcyByZXN1bXB0aW9uIGhhcyBiZWVuXG4gICAqIHJlcG9ydGVkLiBFdmVyeSBzdGVwIG9mIGFuIGlubGluZSBiYXRjaCBpcyBoYW5kZWQgdGhlIFNBTUUgdHJhY2tpbmdcbiAgICogb2JqZWN0LCBzbyB0aGUgZmlyc3Qgb25lIHRvIHJlYWNoIHVzZXIgY29kZSB0YWtlcyB0aGUgbWVhc3VyZW1lbnQgYW5kIHRoZVxuICAgKiByZXN0IHNlZSB0aGlzIGFuZCBza2lwOiBvbmUgcmVzdW1wdGlvbiwgb25lIHNhbXBsZSwgd2l0aG91dCBwaW5uaW5nIHRoZVxuICAgKiBzYW1wbGUgdG8gYSBzdGVwIHRoYXQgbWF5IGxvc2UgaXRzIGNyZWF0ZS1jbGFpbSBhbmQgbmV2ZXIgcnVuLlxuICAgKlxuICAgKiBEZWxpYmVyYXRlbHkgbm90IHBhcnQgb2Yge0BsaW5rIEhvb2tSZXN1bWVUaW1pbmd9OiBpdCBpcyBpbnZvY2F0aW9uLWxvY2FsXG4gICAqIHN0YXRlLCBhbmQgYSBxdWV1ZSBtZXNzYWdlIGNhcnJpZXMgdGhlIGJvdW5kYXJpZXMsIG5vdCB0aGUgY2xhaW0uXG4gICAqL1xuICByZXBvcnRlZD86IGJvb2xlYW47XG59XG5cbi8qKlxuICogUmVidWlsZCB0cmFja2luZyBmcm9tIGEgcXVldWUgbWVzc2FnZSdzIHRpbWluZyBvYmplY3QuIFJldHVybnMgdW5kZWZpbmVkIGZvclxuICogYSBtZXNzYWdlIHRoYXQgY2FycmllcyBub25lIChhbiBvbGRlciBwcm9kdWNlciwgb3IgYW55IG5vbi1ob29rIGRlbGl2ZXJ5KTtcbiAqIHRoZSBjYWxsZXIgdGhlbiByZXBvcnRzIG5vIFRUUi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlc3VtZVRyYWNraW5nRnJvbU1lc3NhZ2UoXG4gIHRpbWluZzogSG9va1Jlc3VtZVRpbWluZyB8IHVuZGVmaW5lZCxcbiAgc3RlcEV4ZWN1dGlvbjogUmVzdW1lU3RlcEV4ZWN1dGlvblxuKTogUmVzdW1lVHRyVHJhY2tpbmcgfCB1bmRlZmluZWQge1xuICBpZiAoIXRpbWluZykgcmV0dXJuIHVuZGVmaW5lZDtcbiAgaWYgKFxuICAgICFOdW1iZXIuaXNGaW5pdGUodGltaW5nLnJlc3VtZVJlcXVlc3RlZEF0TXMpIHx8XG4gICAgIU51bWJlci5pc0Zpbml0ZSh0aW1pbmcucXVldWVQdWJsaXNoUmVxdWVzdGVkQXRNcylcbiAgKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuICByZXR1cm4ge1xuICAgIHRyaWdnZXI6ICdob29rJyxcbiAgICAuLi4odGltaW5nLnN0cmF0ZWd5ID09PSAnbGF6eScgfHxcbiAgICB0aW1pbmcuc3RyYXRlZ3kgPT09ICdwYXJhbGxlbCcgfHxcbiAgICB0aW1pbmcuc3RyYXRlZ3kgPT09ICdzZXF1ZW50aWFsJ1xuICAgICAgPyB7IHN0cmF0ZWd5OiB0aW1pbmcuc3RyYXRlZ3kgfVxuICAgICAgOiB7fSksXG4gICAgcmVzdW1lUmVxdWVzdGVkQXRNczogdGltaW5nLnJlc3VtZVJlcXVlc3RlZEF0TXMsXG4gICAgcXVldWVQdWJsaXNoUmVxdWVzdGVkQXRNczogdGltaW5nLnF1ZXVlUHVibGlzaFJlcXVlc3RlZEF0TXMsXG4gICAgLy8gQSBkaXNwYXRjaGVkIHN0ZXAgcmVhZHMgdGhlIHJlc3VtaW5nIGludm9jYXRpb24ncyBib3VuZGFyaWVzIG9mZiB0aGVcbiAgICAvLyBtZXNzYWdlOyBhbiBpbmxpbmUgb25lIGhhcyB0aGVtIHN0YW1wZWQgbG9jYWxseSBieSB0aGUgY2FsbGVyLCB3aGljaFxuICAgIC8vIG92ZXJ3cml0ZXMgdGhpcyBwbGFjZWhvbGRlciBpbW1lZGlhdGVseSBhZnRlciBjb25zdHJ1Y3Rpb24uXG4gICAgY29uc3VtZXJTdGFydGVkQXRNczogdGltaW5nLmNvbnN1bWVyU3RhcnRlZEF0TXMgPz8gTnVtYmVyLk5hTixcbiAgICAuLi4odGltaW5nLnJlcGxheVN0YXJ0ZWRBdE1zICE9PSB1bmRlZmluZWRcbiAgICAgID8geyByZXBsYXlTdGFydGVkQXRNczogdGltaW5nLnJlcGxheVN0YXJ0ZWRBdE1zIH1cbiAgICAgIDoge30pLFxuICAgIC4uLih0aW1pbmcubmV4dFN0ZXBFbmNvdW50ZXJlZEF0TXMgIT09IHVuZGVmaW5lZFxuICAgICAgPyB7IG5leHRTdGVwRW5jb3VudGVyZWRBdE1zOiB0aW1pbmcubmV4dFN0ZXBFbmNvdW50ZXJlZEF0TXMgfVxuICAgICAgOiB7fSksXG4gICAgLi4uKHRpbWluZy5zZXR1cFNvdXJjZSA9PT0gJ2hvb2tfcHJlbG9hZCcgfHxcbiAgICB0aW1pbmcuc2V0dXBTb3VyY2UgPT09ICdydW5fc3RhcnRlZCcgfHxcbiAgICB0aW1pbmcuc2V0dXBTb3VyY2UgPT09ICdldmVudF9sb2FkJ1xuICAgICAgPyB7IHNldHVwU291cmNlOiB0aW1pbmcuc2V0dXBTb3VyY2UgfVxuICAgICAgOiB7fSksXG4gICAgc3RlcEV4ZWN1dGlvbixcbiAgfTtcbn1cblxuLyoqXG4gKiBTZXJpYWxpemUgdHJhY2tpbmcgYmFjayBvbnRvIGEgcXVldWUgbWVzc2FnZSwgZm9yIHRoZSBjYXNlIHdoZXJlIHRoZVxuICogcmVzdW1pbmcgaW52b2NhdGlvbiBkaXNwYXRjaGVzIHRoZSBuZXh0IGR1cmFibGUgc3RlcCB0byBhbm90aGVyIGludm9jYXRpb25cbiAqIGluc3RlYWQgb2YgcnVubmluZyBpdCBpbmxpbmUuIFJldHVybnMgdW5kZWZpbmVkIHdoZW4gdGhlIHRyYWNraW5nIGlzIG5vdFxuICogY29tcGxldGUgZW5vdWdoIHRvIGJlIHdvcnRoIGZvcndhcmRpbmcuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZXN1bWVUaW1pbmdGb3JNZXNzYWdlKFxuICB0cmFja2luZzogUmVzdW1lVHRyVHJhY2tpbmcgfCB1bmRlZmluZWRcbik6IEhvb2tSZXN1bWVUaW1pbmcgfCB1bmRlZmluZWQge1xuICBpZiAoIXRyYWNraW5nKSByZXR1cm4gdW5kZWZpbmVkO1xuICBpZiAoIU51bWJlci5pc0Zpbml0ZSh0cmFja2luZy5jb25zdW1lclN0YXJ0ZWRBdE1zKSkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgcmV0dXJuIHtcbiAgICByZXN1bWVSZXF1ZXN0ZWRBdE1zOiB0cmFja2luZy5yZXN1bWVSZXF1ZXN0ZWRBdE1zLFxuICAgIHF1ZXVlUHVibGlzaFJlcXVlc3RlZEF0TXM6IHRyYWNraW5nLnF1ZXVlUHVibGlzaFJlcXVlc3RlZEF0TXMsXG4gICAgLi4uKHRyYWNraW5nLnN0cmF0ZWd5ICE9PSB1bmRlZmluZWQgPyB7IHN0cmF0ZWd5OiB0cmFja2luZy5zdHJhdGVneSB9IDoge30pLFxuICAgIGNvbnN1bWVyU3RhcnRlZEF0TXM6IHRyYWNraW5nLmNvbnN1bWVyU3RhcnRlZEF0TXMsXG4gICAgLi4uKHRyYWNraW5nLnJlcGxheVN0YXJ0ZWRBdE1zICE9PSB1bmRlZmluZWRcbiAgICAgID8geyByZXBsYXlTdGFydGVkQXRNczogdHJhY2tpbmcucmVwbGF5U3RhcnRlZEF0TXMgfVxuICAgICAgOiB7fSksXG4gICAgLi4uKHRyYWNraW5nLm5leHRTdGVwRW5jb3VudGVyZWRBdE1zICE9PSB1bmRlZmluZWRcbiAgICAgID8geyBuZXh0U3RlcEVuY291bnRlcmVkQXRNczogdHJhY2tpbmcubmV4dFN0ZXBFbmNvdW50ZXJlZEF0TXMgfVxuICAgICAgOiB7fSksXG4gICAgLi4uKHRyYWNraW5nLnNldHVwU291cmNlICE9PSB1bmRlZmluZWRcbiAgICAgID8geyBzZXR1cFNvdXJjZTogdHJhY2tpbmcuc2V0dXBTb3VyY2UgfVxuICAgICAgOiB7fSksXG4gIH07XG59XG5cbi8qKiBFdmVyeSBib3VuZGFyeSB0aGUgZW1pc3Npb24gZ2F0ZSByZXF1aXJlcywgcGx1cyB0aGUgb3B0aW9uYWwgY2xhaW0gZW5kLiAqL1xuaW50ZXJmYWNlIFJlc3VtZUJvdW5kYXJpZXMge1xuICAvKiogVDAgKi8gcmVzdW1lUmVxdWVzdGVkQXRNczogbnVtYmVyO1xuICAvKiogVDEgKi8gcXVldWVQdWJsaXNoUmVxdWVzdGVkQXRNczogbnVtYmVyO1xuICAvKiogVDIgKi8gY29uc3VtZXJTdGFydGVkQXRNczogbnVtYmVyO1xuICAvKiogVDMgKi8gcmVwbGF5U3RhcnRlZEF0TXM6IG51bWJlcjtcbiAgLyoqIFQ0ICovIG5leHRTdGVwRW5jb3VudGVyZWRBdE1zOiBudW1iZXI7XG4gIC8qKiBUNSAqLyBzdGVwQ2xhaW1TdGFydGVkQXRNczogbnVtYmVyO1xuICAvKiogVDY6IGFic2VudCBvbiB0aGUgb3B0aW1pc3RpYy1zdGFydCBwYXRoOyBzZWUgYmVsb3cuICovXG4gIHN0ZXBDbGFpbUNvbXBsZXRlZEF0TXM6IG51bWJlciB8IHVuZGVmaW5lZDtcbiAgLyoqIFQ3ICovIHN0ZXBDb2RlU3RhcnRlZEF0TXM6IG51bWJlcjtcbn1cblxuLyoqXG4gKiBWYWxpZGF0ZSB0aGF0IGV2ZXJ5IHJlcXVpcmVkIGJvdW5kYXJ5IGlzIGEgZmluaXRlIGVwb2NoLW1zIHZhbHVlIGFuZCB0aGF0XG4gKiB0aGUgd2hvbGUgc2VxdWVuY2UgaXMgbm9uLWRlY3JlYXNpbmcuIFJldHVybnMgdW5kZWZpbmVkIG90aGVyd2lzZSwgd2hpY2hcbiAqIHN1cHByZXNzZXMgdGhlIG1ldHJpYyBlbnRpcmVseSByYXRoZXIgdGhhbiByZXBvcnRpbmcgYSBwaGFzZSB0aGF0IG5ldmVyXG4gKiBoYXBwZW5lZCBvciBhIG5lZ2F0aXZlIGR1cmF0aW9uLlxuICovXG5mdW5jdGlvbiB2YWxpZGF0ZUJvdW5kYXJpZXMoXG4gIGI6IFJlc3VtZUJvdW5kYXJpZXNcbik6IHJlYWRvbmx5IG51bWJlcltdIHwgdW5kZWZpbmVkIHtcbiAgY29uc3Qgb3JkZXJlZCA9IFtcbiAgICBiLnJlc3VtZVJlcXVlc3RlZEF0TXMsXG4gICAgYi5xdWV1ZVB1Ymxpc2hSZXF1ZXN0ZWRBdE1zLFxuICAgIGIuY29uc3VtZXJTdGFydGVkQXRNcyxcbiAgICBiLnJlcGxheVN0YXJ0ZWRBdE1zLFxuICAgIGIubmV4dFN0ZXBFbmNvdW50ZXJlZEF0TXMsXG4gICAgYi5zdGVwQ2xhaW1TdGFydGVkQXRNcyxcbiAgICAuLi4oYi5zdGVwQ2xhaW1Db21wbGV0ZWRBdE1zICE9PSB1bmRlZmluZWRcbiAgICAgID8gW2Iuc3RlcENsYWltQ29tcGxldGVkQXRNc11cbiAgICAgIDogW10pLFxuICAgIGIuc3RlcENvZGVTdGFydGVkQXRNcyxcbiAgXTtcbiAgZm9yIChjb25zdCB2YWx1ZSBvZiBvcmRlcmVkKSB7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gJ251bWJlcicgfHwgIU51bWJlci5pc0Zpbml0ZSh2YWx1ZSkpIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cbiAgZm9yIChsZXQgaSA9IDE7IGkgPCBvcmRlcmVkLmxlbmd0aDsgaSsrKSB7XG4gICAgaWYgKG9yZGVyZWRbaV0gPCBvcmRlcmVkW2kgLSAxXSkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuICByZXR1cm4gb3JkZXJlZDtcbn1cblxuLyoqXG4gKiBDb21wdXRlIHRoZSBUVFIgc3BhbiBhdHRyaWJ1dGVzIGZvciBhIHN0ZXAgdGhhdCBpcyB0aGUgZmlyc3QgZHVyYWJsZSBzdGVwXG4gKiBmb2xsb3dpbmcgYSBob29rIHJlc3VtZS4gUmV0dXJucyB1bmRlZmluZWQgKGVtaXR0aW5nIG5vdGhpbmcgYXQgYWxsKSB3aGVuXG4gKiBhbnkgb2YgdGhlc2UgaG9sZDpcbiAqXG4gKiAtIHRoZSBpbnZvY2F0aW9uIGNhcnJpZXMgbm8gcmVzdW1lIHRyYWNraW5nIChub3QgYSBob29rIHJlc3VtZSwgb3IgYW4gb2xkZXJcbiAqICAgcXVldWUgbWVzc2FnZSB3aXRoIG5vIHRpbWluZyk7XG4gKiAtIHRoaXMgaXMgYSByZXRyeSAoYGF0dGVtcHQgIT09IDFgKSwgd2hpY2ggbWVhc3VyZXMgYSByZS1leGVjdXRpb24gcmF0aGVyXG4gKiAgIHRoYW4gdGhlIHJlc3VtcHRpb247XG4gKiAtIGEgcmVxdWlyZWQgYm91bmRhcnkgaXMgbWlzc2luZywgbm9uLWZpbml0ZSwgb3Igb3V0IG9mIG9yZGVyLlxuICpcbiAqIGBzdGVwX2NsYWltX21zYCBpcyB0aGUgb25lIHBoYXNlIHRoYXQgbWF5IGJlIGluZGl2aWR1YWxseSBvbWl0dGVkLiBVbmRlclxuICogb3B0aW1pc3RpYyBpbmxpbmUgc3RhcnQgdGhlIGBzdGVwX3N0YXJ0ZWRgIGNsYWltIGlzIGRlbGliZXJhdGVseSBOT1QgYXdhaXRlZFxuICogYmVmb3JlIHRoZSBib2R5IHJ1bnMsIHNvIGl0cyBjb21wbGV0aW9uIGluc3RhbnQgZG9lcyBub3QgZXhpc3QgeWV0IGF0IFQ3O1xuICogcmF0aGVyIHRoYW4gaW52ZW50IG9uZSwgdGhlIGNsYWltIHBoYXNlIGlzIGRyb3BwZWQgYW5kIGBzdGVwX3ByZXBhcmVfbXNgXG4gKiBzcGFucyBUNeKGklQ3LiBUaGUgc3VtLWVxdWFscy10b3RhbCBwcm9wZXJ0eSBob2xkcyBlaXRoZXIgd2F5LlxuICovXG5leHBvcnQgZnVuY3Rpb24gY29tcHV0ZVJlc3VtZVR0ckF0dHJpYnV0ZXMocGFyYW1zOiB7XG4gIHRyYWNraW5nOiBSZXN1bWVUdHJUcmFja2luZyB8IHVuZGVmaW5lZDtcbiAgLyoqIFRoZSBhdHRlbXB0IG51bWJlciBvZiB0aGUgZXhlY3V0aW9uIGFib3V0IHRvIHJ1bi4gKi9cbiAgYXR0ZW1wdDogbnVtYmVyO1xuICAvKiogVDU6IGBEYXRlLm5vdygpYCBpbW1lZGlhdGVseSBiZWZvcmUgdGhlIGBzdGVwX3N0YXJ0ZWRgIHJlcXVlc3QuICovXG4gIHN0ZXBDbGFpbVN0YXJ0ZWRBdE1zOiBudW1iZXIgfCB1bmRlZmluZWQ7XG4gIC8qKiBUNjogYERhdGUubm93KClgIG9uY2UgdGhlIGBzdGVwX3N0YXJ0ZWRgIHJlc3BvbnNlIHJldHVybmVkLiAqL1xuICBzdGVwQ2xhaW1Db21wbGV0ZWRBdE1zOiBudW1iZXIgfCB1bmRlZmluZWQ7XG4gIC8qKiBUNzogYERhdGUubm93KClgIGltbWVkaWF0ZWx5IGJlZm9yZSBgc3RlcEZuLmFwcGx5KClgLiAqL1xuICBzdGVwQ29kZVN0YXJ0ZWRBdE1zOiBudW1iZXI7XG59KTogUmVjb3JkPHN0cmluZywgc3RyaW5nIHwgbnVtYmVyPiB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IHsgdHJhY2tpbmcgfSA9IHBhcmFtcztcbiAgaWYgKCF0cmFja2luZyB8fCBwYXJhbXMuYXR0ZW1wdCAhPT0gMSkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgaWYgKFxuICAgIHRyYWNraW5nLnJlcGxheVN0YXJ0ZWRBdE1zID09PSB1bmRlZmluZWQgfHxcbiAgICB0cmFja2luZy5uZXh0U3RlcEVuY291bnRlcmVkQXRNcyA9PT0gdW5kZWZpbmVkIHx8XG4gICAgcGFyYW1zLnN0ZXBDbGFpbVN0YXJ0ZWRBdE1zID09PSB1bmRlZmluZWRcbiAgKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIGNvbnN0IGJvdW5kYXJpZXM6IFJlc3VtZUJvdW5kYXJpZXMgPSB7XG4gICAgcmVzdW1lUmVxdWVzdGVkQXRNczogdHJhY2tpbmcucmVzdW1lUmVxdWVzdGVkQXRNcyxcbiAgICBxdWV1ZVB1Ymxpc2hSZXF1ZXN0ZWRBdE1zOiB0cmFja2luZy5xdWV1ZVB1Ymxpc2hSZXF1ZXN0ZWRBdE1zLFxuICAgIGNvbnN1bWVyU3RhcnRlZEF0TXM6IHRyYWNraW5nLmNvbnN1bWVyU3RhcnRlZEF0TXMsXG4gICAgcmVwbGF5U3RhcnRlZEF0TXM6IHRyYWNraW5nLnJlcGxheVN0YXJ0ZWRBdE1zLFxuICAgIG5leHRTdGVwRW5jb3VudGVyZWRBdE1zOiB0cmFja2luZy5uZXh0U3RlcEVuY291bnRlcmVkQXRNcyxcbiAgICBzdGVwQ2xhaW1TdGFydGVkQXRNczogcGFyYW1zLnN0ZXBDbGFpbVN0YXJ0ZWRBdE1zLFxuICAgIHN0ZXBDbGFpbUNvbXBsZXRlZEF0TXM6IHBhcmFtcy5zdGVwQ2xhaW1Db21wbGV0ZWRBdE1zLFxuICAgIHN0ZXBDb2RlU3RhcnRlZEF0TXM6IHBhcmFtcy5zdGVwQ29kZVN0YXJ0ZWRBdE1zLFxuICB9O1xuICBpZiAoIXZhbGlkYXRlQm91bmRhcmllcyhib3VuZGFyaWVzKSkgcmV0dXJuIHVuZGVmaW5lZDtcblxuICBjb25zdCB7XG4gICAgcmVzdW1lUmVxdWVzdGVkQXRNczogdDAsXG4gICAgcXVldWVQdWJsaXNoUmVxdWVzdGVkQXRNczogdDEsXG4gICAgY29uc3VtZXJTdGFydGVkQXRNczogdDIsXG4gICAgcmVwbGF5U3RhcnRlZEF0TXM6IHQzLFxuICAgIG5leHRTdGVwRW5jb3VudGVyZWRBdE1zOiB0NCxcbiAgICBzdGVwQ2xhaW1TdGFydGVkQXRNczogdDUsXG4gICAgc3RlcENsYWltQ29tcGxldGVkQXRNczogdDYsXG4gICAgc3RlcENvZGVTdGFydGVkQXRNczogdDcsXG4gIH0gPSBib3VuZGFyaWVzO1xuXG4gIHJldHVybiB7XG4gICAgLi4uQXR0cmlidXRlLlJlc3VtZVRvdGFsTXModDcgLSB0MCksXG4gICAgLi4uQXR0cmlidXRlLlJlc3VtZVByb2R1Y2VyUHJlcE1zKHQxIC0gdDApLFxuICAgIC4uLkF0dHJpYnV0ZS5SZXN1bWVRdWV1ZURlbGl2ZXJ5TXModDIgLSB0MSksXG4gICAgLi4uQXR0cmlidXRlLlJlc3VtZVNldHVwTXModDMgLSB0MiksXG4gICAgLi4uQXR0cmlidXRlLlJlc3VtZVJlcGxheU1zKHQ0IC0gdDMpLFxuICAgIC4uLkF0dHJpYnV0ZS5SZXN1bWVTdGVwRGlzcGF0Y2hNcyh0NSAtIHQ0KSxcbiAgICAuLi4odDYgIT09IHVuZGVmaW5lZCA/IEF0dHJpYnV0ZS5SZXN1bWVTdGVwQ2xhaW1Ncyh0NiAtIHQ1KSA6IHt9KSxcbiAgICAuLi5BdHRyaWJ1dGUuUmVzdW1lU3RlcFByZXBhcmVNcyh0NyAtICh0NiA/PyB0NSkpLFxuICAgIC4uLkF0dHJpYnV0ZS5SZXN1bWVUcmlnZ2VyKHRyYWNraW5nLnRyaWdnZXIpLFxuICAgIC4uLih0cmFja2luZy5zdHJhdGVneSAhPT0gdW5kZWZpbmVkXG4gICAgICA/IEF0dHJpYnV0ZS5SZXN1bWVTdHJhdGVneSh0cmFja2luZy5zdHJhdGVneSlcbiAgICAgIDoge30pLFxuICAgIC4uLih0cmFja2luZy5zZXR1cFNvdXJjZSAhPT0gdW5kZWZpbmVkXG4gICAgICA/IEF0dHJpYnV0ZS5SZXN1bWVTZXR1cFNvdXJjZSh0cmFja2luZy5zZXR1cFNvdXJjZSlcbiAgICAgIDoge30pLFxuICAgIC4uLkF0dHJpYnV0ZS5SZXN1bWVTdGVwRXhlY3V0aW9uKHRyYWNraW5nLnN0ZXBFeGVjdXRpb24pLFxuICB9O1xufVxuIl19
@@ -5,8 +5,8 @@
5
5
  * `@workflow/world-vercel`'s region-tagged run IDs mark an ID as carrying
6
6
  * metadata by setting the most-significant bit of the ULID's 48-bit
7
7
  * timestamp, which would otherwise skew the decoded time past the year 6400.
8
- * The tag-bit handling is delegated to the scheme's own codec
9
- * `decode()` returns the ULID with the tag bit cleared so if the tagged
8
+ * The tag-bit handling is delegated to the scheme's own codec
9
+ * (`decode()` returns the ULID with the tag bit cleared), so if the tagged
10
10
  * layout ever evolves (the scheme carries a 5-bit version field for exactly
11
11
  * that), this anchor keeps tracking the codec instead of silently diverging.
12
12
  * For untagged input `decode()` is a passthrough.
@@ -2,9 +2,9 @@ import { decode } from '@workflow/world-vercel/run-id';
2
2
  import { decodeTime } from 'ulid';
3
3
  /**
4
4
  * Run IDs are minted client-side in `start()` as `wrun_<ulid>` (via
5
- * `World.createRunId()` when the world provides one, else a plain ULID see
5
+ * `World.createRunId()` when the world provides one, else a plain ULID; see
6
6
  * `runtime/helpers.ts`). A ULID encodes its creation time in its first 48 bits,
7
- * so the run's creation timestamp is recoverable from the run ID alone
7
+ * so the run's creation timestamp is recoverable from the run ID alone,
8
8
  * without any server round-trip or run-snapshot load. This is the earliest
9
9
  * replay-stable timestamp a delivery has (the run ID arrives in the queue
10
10
  * payload), which lets the workflow VM be seeded and clock-initialized before
@@ -18,8 +18,8 @@ const RUN_ID_PREFIX = 'wrun_';
18
18
  * `@workflow/world-vercel`'s region-tagged run IDs mark an ID as carrying
19
19
  * metadata by setting the most-significant bit of the ULID's 48-bit
20
20
  * timestamp, which would otherwise skew the decoded time past the year 6400.
21
- * The tag-bit handling is delegated to the scheme's own codec
22
- * `decode()` returns the ULID with the tag bit cleared so if the tagged
21
+ * The tag-bit handling is delegated to the scheme's own codec
22
+ * (`decode()` returns the ULID with the tag bit cleared), so if the tagged
23
23
  * layout ever evolves (the scheme carries a 5-bit version field for exactly
24
24
  * that), this anchor keeps tracking the codec instead of silently diverging.
25
25
  * For untagged input `decode()` is a passthrough.
@@ -39,4 +39,4 @@ export function runIdCreatedAt(runId) {
39
39
  return undefined;
40
40
  }
41
41
  }
42
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVuLWlkLXRpbWUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcnVudGltZS9ydW4taWQtdGltZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDdkQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUVsQzs7Ozs7Ozs7O0dBU0c7QUFDSCxNQUFNLGFBQWEsR0FBRyxPQUFPLENBQUM7QUFFOUI7Ozs7Ozs7Ozs7Ozs7Ozs7R0FnQkc7QUFDSCxNQUFNLFVBQVUsY0FBYyxDQUFDLEtBQWE7SUFDMUMsTUFBTSxRQUFRLEdBQUcsS0FBSyxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUM7UUFDOUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQztRQUNuQyxDQUFDLENBQUMsS0FBSyxDQUFDO0lBQ1YsSUFBSSxDQUFDO1FBQ0gsT0FBTyxVQUFVLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzNDLENBQUM7SUFBQyxNQUFNLENBQUM7UUFDUCxPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGRlY29kZSB9IGZyb20gJ0B3b3JrZmxvdy93b3JsZC12ZXJjZWwvcnVuLWlkJztcbmltcG9ydCB7IGRlY29kZVRpbWUgfSBmcm9tICd1bGlkJztcblxuLyoqXG4gKiBSdW4gSURzIGFyZSBtaW50ZWQgY2xpZW50LXNpZGUgaW4gYHN0YXJ0KClgIGFzIGB3cnVuXzx1bGlkPmAgKHZpYVxuICogYFdvcmxkLmNyZWF0ZVJ1bklkKClgIHdoZW4gdGhlIHdvcmxkIHByb3ZpZGVzIG9uZSwgZWxzZSBhIHBsYWluIFVMSUQg4oCUIHNlZVxuICogYHJ1bnRpbWUvaGVscGVycy50c2ApLiBBIFVMSUQgZW5jb2RlcyBpdHMgY3JlYXRpb24gdGltZSBpbiBpdHMgZmlyc3QgNDggYml0cyxcbiAqIHNvIHRoZSBydW4ncyBjcmVhdGlvbiB0aW1lc3RhbXAgaXMgcmVjb3ZlcmFibGUgZnJvbSB0aGUgcnVuIElEIGFsb25lIOKAlFxuICogd2l0aG91dCBhbnkgc2VydmVyIHJvdW5kLXRyaXAgb3IgcnVuLXNuYXBzaG90IGxvYWQuIFRoaXMgaXMgdGhlIGVhcmxpZXN0XG4gKiByZXBsYXktc3RhYmxlIHRpbWVzdGFtcCBhIGRlbGl2ZXJ5IGhhcyAodGhlIHJ1biBJRCBhcnJpdmVzIGluIHRoZSBxdWV1ZVxuICogcGF5bG9hZCksIHdoaWNoIGxldHMgdGhlIHdvcmtmbG93IFZNIGJlIHNlZWRlZCBhbmQgY2xvY2staW5pdGlhbGl6ZWQgYmVmb3JlXG4gKiBgcnVuX3N0YXJ0ZWRgLlxuICovXG5jb25zdCBSVU5fSURfUFJFRklYID0gJ3dydW5fJztcblxuLyoqXG4gKiBFeHRyYWN0cyB0aGUgcnVuJ3MgY3JlYXRpb24gdGltZXN0YW1wIChlcG9jaCBtaWxsaXNlY29uZHMpIGZyb20gYSBgd3J1bl9gXG4gKiBydW4gSUQgYnkgZGVjb2RpbmcgdGhlIGVtYmVkZGVkIFVMSUQgdGltZSBjb21wb25lbnQuXG4gKlxuICogYEB3b3JrZmxvdy93b3JsZC12ZXJjZWxgJ3MgcmVnaW9uLXRhZ2dlZCBydW4gSURzIG1hcmsgYW4gSUQgYXMgY2FycnlpbmdcbiAqIG1ldGFkYXRhIGJ5IHNldHRpbmcgdGhlIG1vc3Qtc2lnbmlmaWNhbnQgYml0IG9mIHRoZSBVTElEJ3MgNDgtYml0XG4gKiB0aW1lc3RhbXAsIHdoaWNoIHdvdWxkIG90aGVyd2lzZSBza2V3IHRoZSBkZWNvZGVkIHRpbWUgcGFzdCB0aGUgeWVhciA2NDAwLlxuICogVGhlIHRhZy1iaXQgaGFuZGxpbmcgaXMgZGVsZWdhdGVkIHRvIHRoZSBzY2hlbWUncyBvd24gY29kZWMg4oCUXG4gKiBgZGVjb2RlKClgIHJldHVybnMgdGhlIFVMSUQgd2l0aCB0aGUgdGFnIGJpdCBjbGVhcmVkIOKAlCBzbyBpZiB0aGUgdGFnZ2VkXG4gKiBsYXlvdXQgZXZlciBldm9sdmVzICh0aGUgc2NoZW1lIGNhcnJpZXMgYSA1LWJpdCB2ZXJzaW9uIGZpZWxkIGZvciBleGFjdGx5XG4gKiB0aGF0KSwgdGhpcyBhbmNob3Iga2VlcHMgdHJhY2tpbmcgdGhlIGNvZGVjIGluc3RlYWQgb2Ygc2lsZW50bHkgZGl2ZXJnaW5nLlxuICogRm9yIHVudGFnZ2VkIGlucHV0IGBkZWNvZGUoKWAgaXMgYSBwYXNzdGhyb3VnaC5cbiAqXG4gKiBSZXR1cm5zIGB1bmRlZmluZWRgIHdoZW4gYHJ1bklkYCBpcyBub3QgYSBkZWNvZGFibGUgYHdydW5fPHVsaWQ+YCAoZS5nLiBhXG4gKiBsZWdhY3kvbm9uLVVMSUQgaWQsIG9yIGEgdGVzdCBmaXh0dXJlIGxpa2UgYHdydW5fdGVzdGApOyBjYWxsZXJzIGZhbGwgYmFjayB0b1xuICogYW4gYXV0aG9yaXRhdGl2ZSB0aW1lc3RhbXAgZnJvbSB0aGUgcnVuIHNuYXBzaG90IChgY3JlYXRlZEF0YCkgaW4gdGhhdCBjYXNlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcnVuSWRDcmVhdGVkQXQocnVuSWQ6IHN0cmluZyk6IG51bWJlciB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IHVsaWRQYXJ0ID0gcnVuSWQuc3RhcnRzV2l0aChSVU5fSURfUFJFRklYKVxuICAgID8gcnVuSWQuc2xpY2UoUlVOX0lEX1BSRUZJWC5sZW5ndGgpXG4gICAgOiBydW5JZDtcbiAgdHJ5IHtcbiAgICByZXR1cm4gZGVjb2RlVGltZShkZWNvZGUodWxpZFBhcnQpLnVsaWQpO1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG59XG4iXX0=
42
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVuLWlkLXRpbWUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcnVudGltZS9ydW4taWQtdGltZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDdkQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUVsQzs7Ozs7Ozs7O0dBU0c7QUFDSCxNQUFNLGFBQWEsR0FBRyxPQUFPLENBQUM7QUFFOUI7Ozs7Ozs7Ozs7Ozs7Ozs7R0FnQkc7QUFDSCxNQUFNLFVBQVUsY0FBYyxDQUFDLEtBQWE7SUFDMUMsTUFBTSxRQUFRLEdBQUcsS0FBSyxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUM7UUFDOUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQztRQUNuQyxDQUFDLENBQUMsS0FBSyxDQUFDO0lBQ1YsSUFBSSxDQUFDO1FBQ0gsT0FBTyxVQUFVLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzNDLENBQUM7SUFBQyxNQUFNLENBQUM7UUFDUCxPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGRlY29kZSB9IGZyb20gJ0B3b3JrZmxvdy93b3JsZC12ZXJjZWwvcnVuLWlkJztcbmltcG9ydCB7IGRlY29kZVRpbWUgfSBmcm9tICd1bGlkJztcblxuLyoqXG4gKiBSdW4gSURzIGFyZSBtaW50ZWQgY2xpZW50LXNpZGUgaW4gYHN0YXJ0KClgIGFzIGB3cnVuXzx1bGlkPmAgKHZpYVxuICogYFdvcmxkLmNyZWF0ZVJ1bklkKClgIHdoZW4gdGhlIHdvcmxkIHByb3ZpZGVzIG9uZSwgZWxzZSBhIHBsYWluIFVMSUQ7IHNlZVxuICogYHJ1bnRpbWUvaGVscGVycy50c2ApLiBBIFVMSUQgZW5jb2RlcyBpdHMgY3JlYXRpb24gdGltZSBpbiBpdHMgZmlyc3QgNDggYml0cyxcbiAqIHNvIHRoZSBydW4ncyBjcmVhdGlvbiB0aW1lc3RhbXAgaXMgcmVjb3ZlcmFibGUgZnJvbSB0aGUgcnVuIElEIGFsb25lLFxuICogd2l0aG91dCBhbnkgc2VydmVyIHJvdW5kLXRyaXAgb3IgcnVuLXNuYXBzaG90IGxvYWQuIFRoaXMgaXMgdGhlIGVhcmxpZXN0XG4gKiByZXBsYXktc3RhYmxlIHRpbWVzdGFtcCBhIGRlbGl2ZXJ5IGhhcyAodGhlIHJ1biBJRCBhcnJpdmVzIGluIHRoZSBxdWV1ZVxuICogcGF5bG9hZCksIHdoaWNoIGxldHMgdGhlIHdvcmtmbG93IFZNIGJlIHNlZWRlZCBhbmQgY2xvY2staW5pdGlhbGl6ZWQgYmVmb3JlXG4gKiBgcnVuX3N0YXJ0ZWRgLlxuICovXG5jb25zdCBSVU5fSURfUFJFRklYID0gJ3dydW5fJztcblxuLyoqXG4gKiBFeHRyYWN0cyB0aGUgcnVuJ3MgY3JlYXRpb24gdGltZXN0YW1wIChlcG9jaCBtaWxsaXNlY29uZHMpIGZyb20gYSBgd3J1bl9gXG4gKiBydW4gSUQgYnkgZGVjb2RpbmcgdGhlIGVtYmVkZGVkIFVMSUQgdGltZSBjb21wb25lbnQuXG4gKlxuICogYEB3b3JrZmxvdy93b3JsZC12ZXJjZWxgJ3MgcmVnaW9uLXRhZ2dlZCBydW4gSURzIG1hcmsgYW4gSUQgYXMgY2FycnlpbmdcbiAqIG1ldGFkYXRhIGJ5IHNldHRpbmcgdGhlIG1vc3Qtc2lnbmlmaWNhbnQgYml0IG9mIHRoZSBVTElEJ3MgNDgtYml0XG4gKiB0aW1lc3RhbXAsIHdoaWNoIHdvdWxkIG90aGVyd2lzZSBza2V3IHRoZSBkZWNvZGVkIHRpbWUgcGFzdCB0aGUgeWVhciA2NDAwLlxuICogVGhlIHRhZy1iaXQgaGFuZGxpbmcgaXMgZGVsZWdhdGVkIHRvIHRoZSBzY2hlbWUncyBvd24gY29kZWNcbiAqIChgZGVjb2RlKClgIHJldHVybnMgdGhlIFVMSUQgd2l0aCB0aGUgdGFnIGJpdCBjbGVhcmVkKSwgc28gaWYgdGhlIHRhZ2dlZFxuICogbGF5b3V0IGV2ZXIgZXZvbHZlcyAodGhlIHNjaGVtZSBjYXJyaWVzIGEgNS1iaXQgdmVyc2lvbiBmaWVsZCBmb3IgZXhhY3RseVxuICogdGhhdCksIHRoaXMgYW5jaG9yIGtlZXBzIHRyYWNraW5nIHRoZSBjb2RlYyBpbnN0ZWFkIG9mIHNpbGVudGx5IGRpdmVyZ2luZy5cbiAqIEZvciB1bnRhZ2dlZCBpbnB1dCBgZGVjb2RlKClgIGlzIGEgcGFzc3Rocm91Z2guXG4gKlxuICogUmV0dXJucyBgdW5kZWZpbmVkYCB3aGVuIGBydW5JZGAgaXMgbm90IGEgZGVjb2RhYmxlIGB3cnVuXzx1bGlkPmAgKGUuZy4gYVxuICogbGVnYWN5L25vbi1VTElEIGlkLCBvciBhIHRlc3QgZml4dHVyZSBsaWtlIGB3cnVuX3Rlc3RgKTsgY2FsbGVycyBmYWxsIGJhY2sgdG9cbiAqIGFuIGF1dGhvcml0YXRpdmUgdGltZXN0YW1wIGZyb20gdGhlIHJ1biBzbmFwc2hvdCAoYGNyZWF0ZWRBdGApIGluIHRoYXQgY2FzZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJ1bklkQ3JlYXRlZEF0KHJ1bklkOiBzdHJpbmcpOiBudW1iZXIgfCB1bmRlZmluZWQge1xuICBjb25zdCB1bGlkUGFydCA9IHJ1bklkLnN0YXJ0c1dpdGgoUlVOX0lEX1BSRUZJWClcbiAgICA/IHJ1bklkLnNsaWNlKFJVTl9JRF9QUkVGSVgubGVuZ3RoKVxuICAgIDogcnVuSWQ7XG4gIHRyeSB7XG4gICAgcmV0dXJuIGRlY29kZVRpbWUoZGVjb2RlKHVsaWRQYXJ0KS51bGlkKTtcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxufVxuIl19
@@ -1,8 +1,25 @@
1
1
  import { WORKFLOW_DESERIALIZE, WORKFLOW_SERIALIZE } from '@workflow/serde';
2
- import { type WorkflowRunStatus } from '@workflow/world';
2
+ import type { WorkflowRunStatus } from '@workflow/world';
3
3
  import { type CancelRunOptions, type StopSleepOptions, type StopSleepResult } from './runs.js';
4
4
  /** @internal */
5
5
  export declare function getReturnValuePollIntervalMs(): number;
6
+ /** @internal */
7
+ export declare function getReturnValueWaitTimeoutMs(): number;
8
+ /** @internal */
9
+ export declare function getReturnValueMaxLongPolls(): number;
10
+ /**
11
+ * Whether `await run.returnValue` may use the World's long poll
12
+ * (`runs.waitForTerminalStatus`) instead of interval-polling `runs.get`.
13
+ *
14
+ * Default **ON** wherever the World implements the method; a World that does
15
+ * not is already on the interval path with nothing to switch off. Reads
16
+ * `process.env.WORKFLOW_RETURN_VALUE_LONG_POLL` lazily; an explicit `'0'` /
17
+ * `'false'` is the kill switch, restoring the fixed-interval poll exactly as
18
+ * it behaved before the fast path existed.
19
+ *
20
+ * @internal
21
+ */
22
+ export declare function isReturnValueLongPollEnabled(): boolean;
6
23
  /**
7
24
  * A `ReadableStream` extended with workflow-specific helpers.
8
25
  */
@@ -10,7 +27,7 @@ export type WorkflowReadableStream<R = any> = ReadableStream<R> & {
10
27
  /**
11
28
  * Returns the tail index (index of the last known chunk, 0-based) of the
12
29
  * underlying workflow stream. Useful for resolving a negative `startIndex`
13
- * into an absolute position for example, when building reconnection
30
+ * into an absolute position, for example, when building reconnection
14
31
  * endpoints that need to inform the client where the stream starts.
15
32
  *
16
33
  * Returns `-1` when no chunks have been written yet.
@@ -32,8 +49,8 @@ export interface WorkflowReadableStreamOptions {
32
49
  */
33
50
  startIndex?: number;
34
51
  /**
35
- * Any asynchronous operations that need to be performed before the execution
36
- * environment is paused / terminated
52
+ * Any asynchronous operations to complete before pausing or terminating the
53
+ * execution environment
37
54
  * (i.e. using [`waitUntil()`](https://developer.mozilla.org/docs/Web/API/ExtendableEvent/waitUntil) or similar).
38
55
  */
39
56
  ops?: Promise<any>[];
@@ -90,7 +107,7 @@ export declare class Run<TResult> {
90
107
  get status(): Promise<WorkflowRunStatus>;
91
108
  /**
92
109
  * The return value of the workflow run.
93
- * Polls the workflow return value until it is completed.
110
+ * Polls the workflow return value until the workflow run completes.
94
111
  */
95
112
  get returnValue(): Promise<TResult>;
96
113
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../src/runtime/run.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAC3E,OAAO,EAIL,KAAK,iBAAiB,EAEvB,MAAM,iBAAiB,CAAC;AAYzB,OAAO,EACL,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,EACrB,KAAK,eAAe,EAErB,MAAM,WAAW,CAAC;AAQnB,gBAAgB;AAChB,wBAAgB,4BAA4B,IAAI,MAAM,CAMrD;AAED;;GAEG;AACH,MAAM,MAAM,sBAAsB,CAAC,CAAC,GAAG,GAAG,IAAI,cAAc,CAAC,CAAC,CAAC,GAAG;IAChE;;;;;;;OAOG;IACH,YAAY,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;CACjC,CAAC;AAEF;;GAEG;AACH,MAAM,WAAW,6BAA6B;IAC5C;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;OAIG;IACH,GAAG,CAAC,EAAE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;IACrB;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAC9B;AAED;;GAEG;AACH,qBAAa,GAAG,CAAC,OAAO;;IACtB,MAAM,CAAC,CAAC,kBAAkB,CAAC,CAAC,QAAQ,EAAE,GAAG,CAAC,OAAO,CAAC;;;;IAIlD,MAAM,CAAC,CAAC,oBAAoB,CAAC,CAAC,IAAI,EAAE;QAClC,KAAK,EAAE,MAAM,CAAC;QACd,cAAc,CAAC,EAAE,OAAO,CAAC;KAC1B;IAID;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;gBA4BF,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE;QAAE,cAAc,CAAC,EAAE,OAAO,CAAA;KAAE;IAiC9D;;;;;;OAMG;IACG,MAAM,CAAC,OAAO,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,eAAe,CAAC;IAKlE;;;;;;OAMG;IACG,MAAM,CAAC,OAAO,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IAYvD;;OAEG;IACH,IAAI,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,CAa7B;IAED;;OAEG;IACH,IAAI,MAAM,IAAI,OAAO,CAAC,iBAAiB,CAAC,CAOvC;IAED;;;OAGG;IACH,IAAI,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC,CAGlC;IAED;;OAEG;IACH,IAAI,YAAY,IAAI,OAAO,CAAC,MAAM,CAAC,CAKlC;IAED;;OAEG;IACH,IAAI,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC,CAK7B;IAED;;;OAGG;IACH,IAAI,SAAS,IAAI,OAAO,CAAC,IAAI,GAAG,SAAS,CAAC,CAKzC;IAED;;;OAGG;IACH,IAAI,WAAW,IAAI,OAAO,CAAC,IAAI,GAAG,SAAS,CAAC,CAK3C;IAED;;OAEG;IACH,IAAI,QAAQ,IAAI,sBAAsB,CAErC;IAED;;;;;;;;;;;OAWG;IACH,WAAW,CAAC,CAAC,GAAG,GAAG,EACjB,OAAO,GAAE,6BAAkC,GAC1C,sBAAsB,CAAC,CAAC,CAAC;CAqI7B;AAED;;;;;;GAMG;AACH,wBAAgB,MAAM,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,CAE3D"}
1
+ {"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../src/runtime/run.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAC3E,OAAO,KAAK,EAAe,iBAAiB,EAAS,MAAM,iBAAiB,CAAC;AAc7E,OAAO,EACL,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,EACrB,KAAK,eAAe,EAErB,MAAM,WAAW,CAAC;AAQnB,gBAAgB;AAChB,wBAAgB,4BAA4B,IAAI,MAAM,CAMrD;AAiBD,gBAAgB;AAChB,wBAAgB,2BAA2B,IAAI,MAAM,CAMpD;AAqBD,gBAAgB;AAChB,wBAAgB,0BAA0B,IAAI,MAAM,CAMnD;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,4BAA4B,IAAI,OAAO,CAItD;AAED;;GAEG;AACH,MAAM,MAAM,sBAAsB,CAAC,CAAC,GAAG,GAAG,IAAI,cAAc,CAAC,CAAC,CAAC,GAAG;IAChE;;;;;;;OAOG;IACH,YAAY,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;CACjC,CAAC;AAEF;;GAEG;AACH,MAAM,WAAW,6BAA6B;IAC5C;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;OAIG;IACH,GAAG,CAAC,EAAE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;IACrB;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAC9B;AAED;;GAEG;AACH,qBAAa,GAAG,CAAC,OAAO;;IACtB,MAAM,CAAC,CAAC,kBAAkB,CAAC,CAAC,QAAQ,EAAE,GAAG,CAAC,OAAO,CAAC;;;;IAIlD,MAAM,CAAC,CAAC,oBAAoB,CAAC,CAAC,IAAI,EAAE;QAClC,KAAK,EAAE,MAAM,CAAC;QACd,cAAc,CAAC,EAAE,OAAO,CAAC;KAC1B;IAID;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;gBA4BF,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE;QAAE,cAAc,CAAC,EAAE,OAAO,CAAA;KAAE;IAiC9D;;;;;;OAMG;IACG,MAAM,CAAC,OAAO,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,eAAe,CAAC;IAKlE;;;;;;OAMG;IACG,MAAM,CAAC,OAAO,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IAYvD;;OAEG;IACH,IAAI,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,CAa7B;IAED;;OAEG;IACH,IAAI,MAAM,IAAI,OAAO,CAAC,iBAAiB,CAAC,CAOvC;IAED;;;OAGG;IACH,IAAI,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC,CAGlC;IAED;;OAEG;IACH,IAAI,YAAY,IAAI,OAAO,CAAC,MAAM,CAAC,CAKlC;IAED;;OAEG;IACH,IAAI,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC,CAK7B;IAED;;;OAGG;IACH,IAAI,SAAS,IAAI,OAAO,CAAC,IAAI,GAAG,SAAS,CAAC,CAKzC;IAED;;;OAGG;IACH,IAAI,WAAW,IAAI,OAAO,CAAC,IAAI,GAAG,SAAS,CAAC,CAK3C;IAED;;OAEG;IACH,IAAI,QAAQ,IAAI,sBAAsB,CAErC;IAED;;;;;;;;;;;OAWG;IACH,WAAW,CAAC,CAAC,GAAG,GAAG,EACjB,OAAO,GAAE,6BAAkC,GAC1C,sBAAsB,CAAC,CAAC,CAAC;CA2K7B;AAED;;;;;;GAMG;AACH,wBAAgB,MAAM,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,CAE3D"}