footprintjs 9.48.2 → 10.0.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.
- package/AGENTS.md +12 -10
- package/CLAUDE.md +21 -23
- package/README.md +1 -1
- package/dist/advanced.js +71 -128
- package/dist/esm/advanced.d.ts +24 -58
- package/dist/esm/advanced.js +13 -51
- package/dist/esm/index.d.ts +5 -8
- package/dist/esm/index.js +3 -3
- package/dist/esm/lib/builder/FlowChartBuilder.d.ts +1 -1
- package/dist/esm/lib/builder/FlowChartBuilder.js +3 -3
- package/dist/esm/lib/builder/structure/StructureRecorder.d.ts +1 -1
- package/dist/esm/lib/builder/structure/StructureRecorder.js +1 -1
- package/dist/esm/lib/capture/index.d.ts +0 -1
- package/dist/esm/lib/capture/index.js +1 -2
- package/dist/esm/lib/engine/graph/prefixNodeTree.js +2 -2
- package/dist/esm/lib/engine/handlers/ResumeEntry.d.ts +3 -3
- package/dist/esm/lib/engine/handlers/ResumeEntry.js +4 -4
- package/dist/esm/lib/engine/handlers/SubflowExecutor.d.ts +1 -2
- package/dist/esm/lib/engine/handlers/SubflowExecutor.js +4 -8
- package/dist/esm/lib/engine/index.d.ts +1 -1
- package/dist/esm/lib/engine/index.js +1 -1
- package/dist/esm/lib/engine/narrative/CombinedNarrativeRecorder.d.ts +4 -4
- package/dist/esm/lib/engine/narrative/CombinedNarrativeRecorder.js +1 -1
- package/dist/esm/lib/engine/narrative/index.d.ts +1 -1
- package/dist/esm/lib/engine/narrative/index.js +1 -1
- package/dist/esm/lib/engine/narrative/narrativeTypes.d.ts +1 -11
- package/dist/esm/lib/engine/narrative/narrativeTypes.js +1 -1
- package/dist/esm/lib/engine/traversal/FlowchartTraverser.d.ts +2 -10
- package/dist/esm/lib/engine/traversal/FlowchartTraverser.js +4 -6
- package/dist/esm/lib/engine/traversalContext.d.ts +1 -1
- package/dist/esm/lib/engine/traversalContext.js +2 -2
- package/dist/esm/lib/engine/types.d.ts +2 -10
- package/dist/esm/lib/engine/types.js +1 -1
- package/dist/esm/lib/engine/walkSubflowSpec.js +2 -2
- package/dist/esm/lib/ids/reservedIds.js +2 -2
- package/dist/esm/lib/memory/DiagnosticCollector.js +2 -2
- package/dist/esm/lib/memory/StageContext.d.ts +2 -4
- package/dist/esm/lib/memory/StageContext.js +2 -2
- package/dist/esm/lib/memory/borrowedMutation.js +2 -2
- package/dist/esm/lib/memory/index.d.ts +6 -21
- package/dist/esm/lib/memory/index.js +4 -22
- package/dist/esm/lib/memory/redaction.d.ts +1 -1
- package/dist/esm/lib/memory/redaction.js +2 -2
- package/dist/esm/lib/memory/runPolicy.d.ts +3 -2
- package/dist/esm/lib/memory/runPolicy.js +1 -1
- package/dist/esm/lib/reactive/createTypedScope.js +2 -2
- package/dist/esm/lib/reactive/writeTraps.js +2 -2
- package/dist/esm/lib/recorder/ControlDepRecorder.d.ts +3 -2
- package/dist/esm/lib/recorder/ControlDepRecorder.js +3 -2
- package/dist/esm/lib/recorder/EmitRecorder.d.ts +1 -1
- package/dist/esm/lib/recorder/EmitRecorder.js +1 -1
- package/dist/esm/lib/recorder/InOutRecorder.js +2 -2
- package/dist/esm/lib/recorder/qualityTrace.d.ts +1 -1
- package/dist/esm/lib/recorder/qualityTrace.js +2 -2
- package/dist/esm/lib/runner/DeferredObserverTier.js +2 -2
- package/dist/esm/lib/runner/ExecutionRuntime.d.ts +4 -5
- package/dist/esm/lib/runner/ExecutionRuntime.js +2 -5
- package/dist/esm/lib/runner/FlowChartExecutor.d.ts +1 -1
- package/dist/esm/lib/runner/FlowChartExecutor.js +1 -1
- package/dist/esm/lib/runner/getSubtreeSnapshot.d.ts +1 -1
- package/dist/esm/lib/runner/getSubtreeSnapshot.js +4 -4
- package/dist/esm/lib/runner/resume.js +2 -2
- package/dist/esm/lib/runner/snapshot.js +3 -2
- package/dist/esm/lib/scope/ScopeFacade.js +2 -2
- package/dist/esm/lib/scope/state/zod/scopeFactory.js +2 -2
- package/dist/esm/recorders.d.ts +2 -3
- package/dist/esm/recorders.js +1 -1
- package/dist/esm/trace.d.ts +11 -57
- package/dist/esm/trace.js +10 -68
- package/dist/index.js +3 -3
- package/dist/lib/builder/FlowChartBuilder.js +5 -5
- package/dist/lib/builder/structure/StructureRecorder.js +1 -1
- package/dist/lib/capture/index.js +2 -4
- package/dist/lib/engine/graph/prefixNodeTree.js +5 -5
- package/dist/lib/engine/handlers/ResumeEntry.js +4 -4
- package/dist/lib/engine/handlers/SubflowExecutor.js +5 -9
- package/dist/lib/engine/index.js +1 -1
- package/dist/lib/engine/narrative/CombinedNarrativeRecorder.js +1 -1
- package/dist/lib/engine/narrative/index.js +1 -1
- package/dist/lib/engine/narrative/narrativeTypes.js +1 -1
- package/dist/lib/engine/traversal/FlowchartTraverser.js +8 -10
- package/dist/lib/engine/traversalContext.js +4 -4
- package/dist/lib/engine/types.js +1 -1
- package/dist/lib/engine/walkSubflowSpec.js +3 -3
- package/dist/lib/ids/reservedIds.js +5 -5
- package/dist/lib/memory/DiagnosticCollector.js +3 -3
- package/dist/lib/memory/StageContext.js +3 -3
- package/dist/lib/memory/borrowedMutation.js +3 -3
- package/dist/lib/memory/index.js +7 -42
- package/dist/lib/memory/redaction.js +3 -3
- package/dist/lib/memory/runPolicy.js +1 -1
- package/dist/lib/reactive/createTypedScope.js +3 -3
- package/dist/lib/reactive/writeTraps.js +4 -4
- package/dist/lib/recorder/ControlDepRecorder.js +3 -2
- package/dist/lib/recorder/EmitRecorder.js +1 -1
- package/dist/lib/recorder/InOutRecorder.js +3 -3
- package/dist/lib/recorder/qualityTrace.js +4 -4
- package/dist/lib/runner/DeferredObserverTier.js +3 -3
- package/dist/lib/runner/ExecutionRuntime.js +6 -9
- package/dist/lib/runner/FlowChartExecutor.js +1 -1
- package/dist/lib/runner/getSubtreeSnapshot.js +6 -6
- package/dist/lib/runner/resume.js +3 -3
- package/dist/lib/runner/snapshot.js +6 -5
- package/dist/lib/scope/ScopeFacade.js +3 -3
- package/dist/lib/scope/state/zod/scopeFactory.js +4 -4
- package/dist/recorders.js +1 -1
- package/dist/trace.js +18 -120
- package/dist/types/advanced.d.ts +24 -58
- package/dist/types/index.d.ts +5 -8
- package/dist/types/lib/builder/FlowChartBuilder.d.ts +1 -1
- package/dist/types/lib/builder/structure/StructureRecorder.d.ts +1 -1
- package/dist/types/lib/capture/index.d.ts +0 -1
- package/dist/types/lib/engine/handlers/ResumeEntry.d.ts +3 -3
- package/dist/types/lib/engine/handlers/SubflowExecutor.d.ts +1 -2
- package/dist/types/lib/engine/index.d.ts +1 -1
- package/dist/types/lib/engine/narrative/CombinedNarrativeRecorder.d.ts +4 -4
- package/dist/types/lib/engine/narrative/index.d.ts +1 -1
- package/dist/types/lib/engine/narrative/narrativeTypes.d.ts +1 -11
- package/dist/types/lib/engine/traversal/FlowchartTraverser.d.ts +2 -10
- package/dist/types/lib/engine/traversalContext.d.ts +1 -1
- package/dist/types/lib/engine/types.d.ts +2 -10
- package/dist/types/lib/memory/StageContext.d.ts +2 -4
- package/dist/types/lib/memory/index.d.ts +6 -21
- package/dist/types/lib/memory/redaction.d.ts +1 -1
- package/dist/types/lib/memory/runPolicy.d.ts +3 -2
- package/dist/types/lib/recorder/ControlDepRecorder.d.ts +3 -2
- package/dist/types/lib/recorder/EmitRecorder.d.ts +1 -1
- package/dist/types/lib/recorder/qualityTrace.d.ts +1 -1
- package/dist/types/lib/runner/ExecutionRuntime.d.ts +4 -5
- package/dist/types/lib/runner/FlowChartExecutor.d.ts +1 -1
- package/dist/types/lib/runner/getSubtreeSnapshot.d.ts +1 -1
- package/dist/types/recorders.d.ts +2 -3
- package/dist/types/trace.d.ts +11 -57
- package/package.json +6 -15
- package/dist/esm/lib/capture/freeze.d.ts +0 -91
- package/dist/esm/lib/capture/freeze.js +0 -314
- package/dist/esm/lib/capture/ownData.d.ts +0 -7
- package/dist/esm/lib/capture/ownData.js +0 -15
- package/dist/esm/lib/capture/valueKinds.d.ts +0 -57
- package/dist/esm/lib/capture/valueKinds.js +0 -142
- package/dist/esm/lib/ids/runtimeStageId.d.ts +0 -173
- package/dist/esm/lib/ids/runtimeStageId.js +0 -194
- package/dist/esm/lib/memory/EventLog.d.ts +0 -105
- package/dist/esm/lib/memory/EventLog.js +0 -148
- package/dist/esm/lib/memory/RecordFrame.d.ts +0 -232
- package/dist/esm/lib/memory/RecordFrame.js +0 -296
- package/dist/esm/lib/memory/SharedMemory.d.ts +0 -46
- package/dist/esm/lib/memory/SharedMemory.js +0 -88
- package/dist/esm/lib/memory/TransactionBuffer.d.ts +0 -521
- package/dist/esm/lib/memory/TransactionBuffer.js +0 -946
- package/dist/esm/lib/memory/admission.d.ts +0 -81
- package/dist/esm/lib/memory/admission.js +0 -153
- package/dist/esm/lib/memory/backtrack.d.ts +0 -286
- package/dist/esm/lib/memory/backtrack.js +0 -457
- package/dist/esm/lib/memory/commitLogUtils.d.ts +0 -217
- package/dist/esm/lib/memory/commitLogUtils.js +0 -384
- package/dist/esm/lib/memory/deltaEncoding.d.ts +0 -66
- package/dist/esm/lib/memory/deltaEncoding.js +0 -122
- package/dist/esm/lib/memory/equality.d.ts +0 -93
- package/dist/esm/lib/memory/equality.js +0 -262
- package/dist/esm/lib/memory/eventPosition.d.ts +0 -18
- package/dist/esm/lib/memory/eventPosition.js +0 -2
- package/dist/esm/lib/memory/honesty.d.ts +0 -93
- package/dist/esm/lib/memory/honesty.js +0 -92
- package/dist/esm/lib/memory/keyPaths.d.ts +0 -125
- package/dist/esm/lib/memory/keyPaths.js +0 -227
- package/dist/esm/lib/memory/logModel.d.ts +0 -76
- package/dist/esm/lib/memory/logModel.js +0 -364
- package/dist/esm/lib/memory/merge.d.ts +0 -26
- package/dist/esm/lib/memory/merge.js +0 -60
- package/dist/esm/lib/memory/pathOps.d.ts +0 -115
- package/dist/esm/lib/memory/pathOps.js +0 -290
- package/dist/esm/lib/memory/paths.d.ts +0 -52
- package/dist/esm/lib/memory/paths.js +0 -57
- package/dist/esm/lib/memory/placeholders.d.ts +0 -39
- package/dist/esm/lib/memory/placeholders.js +0 -40
- package/dist/esm/lib/memory/recordCommit.d.ts +0 -45
- package/dist/esm/lib/memory/recordCommit.js +0 -61
- package/dist/esm/lib/memory/scrub.d.ts +0 -53
- package/dist/esm/lib/memory/scrub.js +0 -74
- package/dist/esm/lib/memory/types.d.ts +0 -209
- package/dist/esm/lib/memory/types.js +0 -10
- package/dist/esm/lib/memory/utils.d.ts +0 -73
- package/dist/esm/lib/memory/utils.js +0 -159
- package/dist/esm/lib/memory/verbs.d.ts +0 -333
- package/dist/esm/lib/memory/verbs.js +0 -427
- package/dist/esm/lib/recorder/CommitRangeIndex.d.ts +0 -147
- package/dist/esm/lib/recorder/CommitRangeIndex.js +0 -207
- package/dist/esm/lib/scope/detectCircular.d.ts +0 -13
- package/dist/esm/lib/scope/detectCircular.js +0 -14
- package/dist/esm/lib/scope/recorders/summarizeValue.d.ts +0 -5
- package/dist/esm/lib/scope/recorders/summarizeValue.js +0 -6
- package/dist/esm/lib/slice/elementProvenance.d.ts +0 -81
- package/dist/esm/lib/slice/elementProvenance.js +0 -190
- package/dist/esm/lib/slice/forwardSliceForKey.d.ts +0 -88
- package/dist/esm/lib/slice/forwardSliceForKey.js +0 -243
- package/dist/esm/lib/slice/index.d.ts +0 -25
- package/dist/esm/lib/slice/index.js +0 -25
- package/dist/esm/lib/slice/keyIndex.d.ts +0 -137
- package/dist/esm/lib/slice/keyIndex.js +0 -293
- package/dist/esm/lib/slice/keyTimeline.d.ts +0 -49
- package/dist/esm/lib/slice/keyTimeline.js +0 -113
- package/dist/esm/lib/slice/keysReadSources.d.ts +0 -51
- package/dist/esm/lib/slice/keysReadSources.js +0 -95
- package/dist/esm/lib/slice/serialize.d.ts +0 -78
- package/dist/esm/lib/slice/serialize.js +0 -278
- package/dist/esm/lib/slice/sliceForKey.d.ts +0 -47
- package/dist/esm/lib/slice/sliceForKey.js +0 -88
- package/dist/esm/lib/slice/types.d.ts +0 -567
- package/dist/esm/lib/slice/types.js +0 -25
- package/dist/esm/lib/time-travel/axis.d.ts +0 -119
- package/dist/esm/lib/time-travel/axis.js +0 -179
- package/dist/esm/lib/time-travel/bundles.d.ts +0 -77
- package/dist/esm/lib/time-travel/bundles.js +0 -136
- package/dist/esm/lib/time-travel/chain.d.ts +0 -93
- package/dist/esm/lib/time-travel/chain.js +0 -188
- package/dist/esm/lib/time-travel/commitStops.d.ts +0 -55
- package/dist/esm/lib/time-travel/commitStops.js +0 -202
- package/dist/esm/lib/time-travel/index.d.ts +0 -22
- package/dist/esm/lib/time-travel/index.js +0 -21
- package/dist/esm/lib/time-travel/stateAt.d.ts +0 -102
- package/dist/esm/lib/time-travel/stateAt.js +0 -153
- package/dist/esm/lib/time-travel/tagStops.d.ts +0 -72
- package/dist/esm/lib/time-travel/tagStops.js +0 -102
- package/dist/esm/lib/time-travel/timeTravel.d.ts +0 -70
- package/dist/esm/lib/time-travel/timeTravel.js +0 -360
- package/dist/esm/lib/time-travel/types.d.ts +0 -470
- package/dist/esm/lib/time-travel/types.js +0 -23
- package/dist/esm/write.d.ts +0 -47
- package/dist/esm/write.js +0 -46
- package/dist/lib/capture/freeze.js +0 -320
- package/dist/lib/capture/ownData.js +0 -19
- package/dist/lib/capture/valueKinds.js +0 -146
- package/dist/lib/ids/runtimeStageId.js +0 -210
- package/dist/lib/memory/EventLog.js +0 -152
- package/dist/lib/memory/RecordFrame.js +0 -300
- package/dist/lib/memory/SharedMemory.js +0 -92
- package/dist/lib/memory/TransactionBuffer.js +0 -950
- package/dist/lib/memory/admission.js +0 -159
- package/dist/lib/memory/backtrack.js +0 -463
- package/dist/lib/memory/commitLogUtils.js +0 -399
- package/dist/lib/memory/deltaEncoding.js +0 -128
- package/dist/lib/memory/equality.js +0 -266
- package/dist/lib/memory/eventPosition.js +0 -3
- package/dist/lib/memory/honesty.js +0 -95
- package/dist/lib/memory/keyPaths.js +0 -243
- package/dist/lib/memory/logModel.js +0 -372
- package/dist/lib/memory/merge.js +0 -64
- package/dist/lib/memory/pathOps.js +0 -306
- package/dist/lib/memory/paths.js +0 -62
- package/dist/lib/memory/placeholders.js +0 -43
- package/dist/lib/memory/recordCommit.js +0 -65
- package/dist/lib/memory/scrub.js +0 -79
- package/dist/lib/memory/types.js +0 -11
- package/dist/lib/memory/utils.js +0 -178
- package/dist/lib/memory/verbs.js +0 -444
- package/dist/lib/recorder/CommitRangeIndex.js +0 -211
- package/dist/lib/scope/detectCircular.js +0 -21
- package/dist/lib/scope/recorders/summarizeValue.js +0 -10
- package/dist/lib/slice/elementProvenance.js +0 -195
- package/dist/lib/slice/forwardSliceForKey.js +0 -247
- package/dist/lib/slice/index.js +0 -42
- package/dist/lib/slice/keyIndex.js +0 -313
- package/dist/lib/slice/keyTimeline.js +0 -117
- package/dist/lib/slice/keysReadSources.js +0 -101
- package/dist/lib/slice/serialize.js +0 -286
- package/dist/lib/slice/sliceForKey.js +0 -93
- package/dist/lib/slice/types.js +0 -26
- package/dist/lib/time-travel/axis.js +0 -184
- package/dist/lib/time-travel/bundles.js +0 -144
- package/dist/lib/time-travel/chain.js +0 -193
- package/dist/lib/time-travel/commitStops.js +0 -206
- package/dist/lib/time-travel/index.js +0 -32
- package/dist/lib/time-travel/stateAt.js +0 -160
- package/dist/lib/time-travel/tagStops.js +0 -106
- package/dist/lib/time-travel/timeTravel.js +0 -364
- package/dist/lib/time-travel/types.js +0 -24
- package/dist/types/lib/capture/freeze.d.ts +0 -91
- package/dist/types/lib/capture/ownData.d.ts +0 -7
- package/dist/types/lib/capture/valueKinds.d.ts +0 -57
- package/dist/types/lib/ids/runtimeStageId.d.ts +0 -173
- package/dist/types/lib/memory/EventLog.d.ts +0 -105
- package/dist/types/lib/memory/RecordFrame.d.ts +0 -232
- package/dist/types/lib/memory/SharedMemory.d.ts +0 -46
- package/dist/types/lib/memory/TransactionBuffer.d.ts +0 -521
- package/dist/types/lib/memory/admission.d.ts +0 -81
- package/dist/types/lib/memory/backtrack.d.ts +0 -286
- package/dist/types/lib/memory/commitLogUtils.d.ts +0 -217
- package/dist/types/lib/memory/deltaEncoding.d.ts +0 -66
- package/dist/types/lib/memory/equality.d.ts +0 -93
- package/dist/types/lib/memory/eventPosition.d.ts +0 -18
- package/dist/types/lib/memory/honesty.d.ts +0 -93
- package/dist/types/lib/memory/keyPaths.d.ts +0 -125
- package/dist/types/lib/memory/logModel.d.ts +0 -76
- package/dist/types/lib/memory/merge.d.ts +0 -26
- package/dist/types/lib/memory/pathOps.d.ts +0 -115
- package/dist/types/lib/memory/paths.d.ts +0 -52
- package/dist/types/lib/memory/placeholders.d.ts +0 -39
- package/dist/types/lib/memory/recordCommit.d.ts +0 -45
- package/dist/types/lib/memory/scrub.d.ts +0 -53
- package/dist/types/lib/memory/types.d.ts +0 -209
- package/dist/types/lib/memory/utils.d.ts +0 -73
- package/dist/types/lib/memory/verbs.d.ts +0 -333
- package/dist/types/lib/recorder/CommitRangeIndex.d.ts +0 -147
- package/dist/types/lib/scope/detectCircular.d.ts +0 -13
- package/dist/types/lib/scope/recorders/summarizeValue.d.ts +0 -5
- package/dist/types/lib/slice/elementProvenance.d.ts +0 -81
- package/dist/types/lib/slice/forwardSliceForKey.d.ts +0 -88
- package/dist/types/lib/slice/index.d.ts +0 -25
- package/dist/types/lib/slice/keyIndex.d.ts +0 -137
- package/dist/types/lib/slice/keyTimeline.d.ts +0 -49
- package/dist/types/lib/slice/keysReadSources.d.ts +0 -51
- package/dist/types/lib/slice/serialize.d.ts +0 -78
- package/dist/types/lib/slice/sliceForKey.d.ts +0 -47
- package/dist/types/lib/slice/types.d.ts +0 -567
- package/dist/types/lib/time-travel/axis.d.ts +0 -119
- package/dist/types/lib/time-travel/bundles.d.ts +0 -77
- package/dist/types/lib/time-travel/chain.d.ts +0 -93
- package/dist/types/lib/time-travel/commitStops.d.ts +0 -55
- package/dist/types/lib/time-travel/index.d.ts +0 -22
- package/dist/types/lib/time-travel/stateAt.d.ts +0 -102
- package/dist/types/lib/time-travel/tagStops.d.ts +0 -72
- package/dist/types/lib/time-travel/timeTravel.d.ts +0 -70
- package/dist/types/lib/time-travel/types.d.ts +0 -470
- package/dist/types/write.d.ts +0 -47
- package/dist/write.js +0 -52
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
* even when `undefined` if the caller names them, which is what a stage stamp
|
|
19
19
|
* has always done.
|
|
20
20
|
*/
|
|
21
|
-
import { type RuntimeStageId } from '
|
|
21
|
+
import { type RuntimeStageId } from 'foottrace';
|
|
22
22
|
import type { ResumeLink, TraversalContext } from './narrative/types.js';
|
|
23
23
|
/** Everything a stamp can carry; optional keys are written only when PRESENT on this object. */
|
|
24
24
|
export interface TraversalStamp {
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
* even when `undefined` if the caller names them, which is what a stage stamp
|
|
19
19
|
* has always done.
|
|
20
20
|
*/
|
|
21
|
-
import { buildRuntimeStageId, subflowSegmentsOf } from '
|
|
21
|
+
import { buildRuntimeStageId, subflowSegmentsOf } from 'foottrace';
|
|
22
22
|
/**
|
|
23
23
|
* Build the stamp. `parentStageId` / `subflowId` / `subflowPath` are copied
|
|
24
24
|
* when the key is present (even as `undefined`); `parentRuntimeStageId`,
|
|
@@ -80,4 +80,4 @@ export function resumeTraversalContext(resume) {
|
|
|
80
80
|
...(resume.resumedFrom && { resumedFrom: resume.resumedFrom }),
|
|
81
81
|
});
|
|
82
82
|
}
|
|
83
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
83
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhdmVyc2FsQ29udGV4dC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvZW5naW5lL3RyYXZlcnNhbENvbnRleHQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FtQkc7QUFFSCxPQUFPLEVBQXVCLG1CQUFtQixFQUFFLGlCQUFpQixFQUFFLE1BQU0sV0FBVyxDQUFDO0FBa0J4Rjs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLG1CQUFtQixDQUFDLEtBQXFCO0lBQ3ZELE9BQU87UUFDTCxLQUFLLEVBQUUsS0FBSyxDQUFDLEtBQUs7UUFDbEIsT0FBTyxFQUFFLEtBQUssQ0FBQyxPQUFPO1FBQ3RCLGNBQWMsRUFBRSxLQUFLLENBQUMsY0FBYztRQUNwQyxTQUFTLEVBQUUsS0FBSyxDQUFDLFNBQVM7UUFDMUIsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsZUFBZSxDQUFDLElBQUksRUFBRSxhQUFhLEVBQUUsS0FBSyxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQzFFLEdBQUcsQ0FBQyxLQUFLLENBQUMsb0JBQW9CLElBQUksRUFBRSxvQkFBb0IsRUFBRSxLQUFLLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztRQUN2RixHQUFHLENBQUMsS0FBSyxDQUFDLGFBQWEsS0FBSyxTQUFTLElBQUksRUFBRSxhQUFhLEVBQUUsS0FBSyxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ2hGLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLFdBQVcsQ0FBQyxJQUFJLEVBQUUsU0FBUyxFQUFFLEtBQUssQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUM5RCxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxhQUFhLENBQUMsSUFBSSxFQUFFLFdBQVcsRUFBRSxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDcEUseUVBQXlFO1FBQ3pFLHVFQUF1RTtRQUN2RSxLQUFLLEVBQUUsaUJBQWlCLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxDQUFDLE1BQU07UUFDckQsR0FBRyxDQUFDLEtBQUssQ0FBQyxXQUFXLElBQUksRUFBRSxXQUFXLEVBQUUsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDO0tBQzdELENBQUM7QUFDSixDQUFDO0FBRUQsZ0dBQWdHO0FBQ2hHLFNBQVMsR0FBRyxDQUFDLEtBQXFCLEVBQUUsR0FBa0Q7SUFDcEYsT0FBTyxNQUFNLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBQzFELENBQUM7QUFFRCxvR0FBb0c7QUFDcEcsTUFBTSxhQUFhLEdBQUcsVUFBVSxDQUFDO0FBRWpDOzs7O0dBSUc7QUFDSCxNQUFNLFVBQVUsb0JBQW9CLENBQUMsS0FBYTtJQUNoRCxPQUFPLG1CQUFtQixDQUFDO1FBQ3pCLEtBQUs7UUFDTCxPQUFPLEVBQUUsYUFBYTtRQUN0QixjQUFjLEVBQUUsbUJBQW1CLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQztRQUNyRCxTQUFTLEVBQUUsYUFBYTtLQUN6QixDQUFDLENBQUM7QUFDTCxDQUFDO0FBRUQ7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFNLFVBQVUsc0JBQXNCLENBQUMsTUFRdEM7SUFDQyxNQUFNLFNBQVMsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ3BFLE9BQU8sbUJBQW1CLENBQUM7UUFDekIsS0FBSyxFQUFFLE1BQU0sQ0FBQyxLQUFLO1FBQ25CLE9BQU8sRUFBRSxNQUFNLENBQUMsT0FBTztRQUN2QixjQUFjLEVBQUUsTUFBTSxDQUFDLGNBQWM7UUFDckMsU0FBUyxFQUFFLE1BQU0sQ0FBQyxTQUFTO1FBQzNCLEdBQUcsQ0FBQyxTQUFTLEtBQUssU0FBUyxJQUFJLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxDQUFDO1FBQ3hELEdBQUcsQ0FBQyxNQUFNLENBQUMsV0FBVyxJQUFJLEVBQUUsV0FBVyxFQUFFLE1BQU0sQ0FBQyxXQUFXLEVBQUUsQ0FBQztLQUMvRCxDQUFDLENBQUM7QUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiB0cmF2ZXJzYWxDb250ZXh0IOKAlCB0aGUgT05FIGNvbnN0cnVjdG9yIG9mIGBUcmF2ZXJzYWxDb250ZXh0YCAoRjcsIDkuMzcuMCkuXG4gKlxuICogYFRyYXZlcnNhbENvbnRleHRgIGlzIHRoZSBjb3JyZWxhdGlvbiBzdGFtcCBldmVyeSBGbG93UmVjb3JkZXIgZXZlbnQgY2Fycmllc1xuICogKFwidGhlIGVudGlyZSBldmVudC1jb3JyZWxhdGlvbiBtb2RlbCByZXN0cyBvblwiIHNjb3BlIGFuZCBmbG93IGV2ZW50cyBzaGFyaW5nXG4gKiBpdCkuIFVudGlsIDkuMzYuMCB0aHJlZSBzaXRlcyBidWlsdCBpdCBieSBoYW5kIOKAlCB0aGUgdHJhdmVyc2VyIHBlciBzdGFnZSwgdGhlXG4gKiB0cmF2ZXJzZXIncyBzeW50aGV0aWMgcnVuLWJvdW5kYXJ5IHJvb3QsIGFuZCB0aGUgZXhlY3V0b3IncyBgb25SZXN1bWVgIOKAlCBhbmRcbiAqIHRoZSB0aGlyZCBmb3JlY2FzdCB3aGF0IGl0IGNvdWxkIG5vdCBrbm93IChkZXB0aCAwLCBubyBzdWJmbG93KS4gTm93IGFsbFxuICogdGhyZWUgY2FsbCBgdHJhdmVyc2FsQ29udGV4dEZvcmAsIHRocm91Z2ggdGhlIHR3byBuYW1lZCBzaGFwZXMgYmVsb3cuXG4gKlxuICogYGRlcHRoYCBoYXMgT05FIG1lYW5pbmcgb24gZXZlcnkgc3RhbXA6IHRoZSBzdWJmbG93IG5lc3Rpbmcgb2YgdGhlIHN0YWdlJ3NcbiAqIGFkZHJlc3MsIHJlYWQgb2ZmIGl0cyBydW50aW1lU3RhZ2VJZCAoOS4zNy4wIOKAlCBzdGFnZSBldmVudHMgdXNlZCB0byBzdGFtcFxuICogdGhlIHBhcmVudC1jaGFpbiBsZW5ndGggb2YgdGhlIHN0YWdlJ3MgY29udGV4dCkuXG4gKlxuICogS2V5IE9SREVSIGFuZCBrZXkgUFJFU0VOQ0UgYXJlIHBhcnQgb2YgdGhlIGJ5dGVzIChhIHJlY29yZGVyIHRoYXQgc2VyaWFsaXplc1xuICogdGhlIHN0YW1wIHNlZXMgdGhlbSksIHNvIGB0cmF2ZXJzYWxDb250ZXh0Rm9yYCB3cml0ZXMgYSBrZXkgb25seSB3aGVuIHRoZVxuICogY2FsbGVyIHBhc3NlZCBpdCDigJQgYHBhcmVudFN0YWdlSWRgLCBgc3ViZmxvd0lkYCBhbmQgYHN1YmZsb3dQYXRoYCBhcmUgd3JpdHRlblxuICogZXZlbiB3aGVuIGB1bmRlZmluZWRgIGlmIHRoZSBjYWxsZXIgbmFtZXMgdGhlbSwgd2hpY2ggaXMgd2hhdCBhIHN0YWdlIHN0YW1wXG4gKiBoYXMgYWx3YXlzIGRvbmUuXG4gKi9cblxuaW1wb3J0IHsgdHlwZSBSdW50aW1lU3RhZ2VJZCwgYnVpbGRSdW50aW1lU3RhZ2VJZCwgc3ViZmxvd1NlZ21lbnRzT2YgfSBmcm9tICdmb290dHJhY2UnO1xuXG5pbXBvcnQgdHlwZSB7IFJlc3VtZUxpbmssIFRyYXZlcnNhbENvbnRleHQgfSBmcm9tICcuL25hcnJhdGl2ZS90eXBlcy5qcyc7XG5cbi8qKiBFdmVyeXRoaW5nIGEgc3RhbXAgY2FuIGNhcnJ5OyBvcHRpb25hbCBrZXlzIGFyZSB3cml0dGVuIG9ubHkgd2hlbiBQUkVTRU5UIG9uIHRoaXMgb2JqZWN0LiAqL1xuZXhwb3J0IGludGVyZmFjZSBUcmF2ZXJzYWxTdGFtcCB7XG4gIHJlYWRvbmx5IHJ1bklkOiBzdHJpbmc7XG4gIHJlYWRvbmx5IHN0YWdlSWQ6IHN0cmluZztcbiAgcmVhZG9ubHkgcnVudGltZVN0YWdlSWQ6IHN0cmluZztcbiAgcmVhZG9ubHkgc3RhZ2VOYW1lOiBzdHJpbmc7XG4gIHJlYWRvbmx5IHBhcmVudFN0YWdlSWQ/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHBhcmVudFJ1bnRpbWVTdGFnZUlkPzogc3RyaW5nO1xuICByZWFkb25seSBsb29wSXRlcmF0aW9uPzogbnVtYmVyO1xuICByZWFkb25seSBzdWJmbG93SWQ/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHN1YmZsb3dQYXRoPzogc3RyaW5nO1xuICByZWFkb25seSByZXN1bWVkRnJvbT86IFJlc3VtZUxpbms7XG59XG5cbi8qKlxuICogQnVpbGQgdGhlIHN0YW1wLiBgcGFyZW50U3RhZ2VJZGAgLyBgc3ViZmxvd0lkYCAvIGBzdWJmbG93UGF0aGAgYXJlIGNvcGllZFxuICogd2hlbiB0aGUga2V5IGlzIHByZXNlbnQgKGV2ZW4gYXMgYHVuZGVmaW5lZGApOyBgcGFyZW50UnVudGltZVN0YWdlSWRgLFxuICogYGxvb3BJdGVyYXRpb25gIGFuZCBgcmVzdW1lZEZyb21gIG9ubHkgd2hlbiB0aGV5IGhvbGQgYSB2YWx1ZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRyYXZlcnNhbENvbnRleHRGb3Ioc3RhbXA6IFRyYXZlcnNhbFN0YW1wKTogVHJhdmVyc2FsQ29udGV4dCB7XG4gIHJldHVybiB7XG4gICAgcnVuSWQ6IHN0YW1wLnJ1bklkLFxuICAgIHN0YWdlSWQ6IHN0YW1wLnN0YWdlSWQsXG4gICAgcnVudGltZVN0YWdlSWQ6IHN0YW1wLnJ1bnRpbWVTdGFnZUlkLFxuICAgIHN0YWdlTmFtZTogc3RhbXAuc3RhZ2VOYW1lLFxuICAgIC4uLihoYXMoc3RhbXAsICdwYXJlbnRTdGFnZUlkJykgJiYgeyBwYXJlbnRTdGFnZUlkOiBzdGFtcC5wYXJlbnRTdGFnZUlkIH0pLFxuICAgIC4uLihzdGFtcC5wYXJlbnRSdW50aW1lU3RhZ2VJZCAmJiB7IHBhcmVudFJ1bnRpbWVTdGFnZUlkOiBzdGFtcC5wYXJlbnRSdW50aW1lU3RhZ2VJZCB9KSxcbiAgICAuLi4oc3RhbXAubG9vcEl0ZXJhdGlvbiAhPT0gdW5kZWZpbmVkICYmIHsgbG9vcEl0ZXJhdGlvbjogc3RhbXAubG9vcEl0ZXJhdGlvbiB9KSxcbiAgICAuLi4oaGFzKHN0YW1wLCAnc3ViZmxvd0lkJykgJiYgeyBzdWJmbG93SWQ6IHN0YW1wLnN1YmZsb3dJZCB9KSxcbiAgICAuLi4oaGFzKHN0YW1wLCAnc3ViZmxvd1BhdGgnKSAmJiB7IHN1YmZsb3dQYXRoOiBzdGFtcC5zdWJmbG93UGF0aCB9KSxcbiAgICAvLyBPTkUgbWVhbmluZyAoRjcpOiBob3cgbWFueSBzdWJmbG93cyBkZWVwIHRoZSBzdGFnZSdzIEFERFJFU1MgaXMg4oCUIHJlYWRcbiAgICAvLyBvZmYgdGhlIHJ1bnRpbWVTdGFnZUlkLCBzbyBldmVyeSBzdGFtcCAoc3RhZ2UsIHJvb3QsIHJlc3VtZSkgYWdyZWVzLlxuICAgIGRlcHRoOiBzdWJmbG93U2VnbWVudHNPZihzdGFtcC5ydW50aW1lU3RhZ2VJZCkubGVuZ3RoLFxuICAgIC4uLihzdGFtcC5yZXN1bWVkRnJvbSAmJiB7IHJlc3VtZWRGcm9tOiBzdGFtcC5yZXN1bWVkRnJvbSB9KSxcbiAgfTtcbn1cblxuLyoqIE93bi1rZXkgcHJlc2VuY2Ug4oCUIGB1bmRlZmluZWRgIGNvdW50cyBhcyBwcmVzZW50IChhIHN0YWdlIHN0YW1wIGFsd2F5cyBuYW1lcyB0aGVzZSBrZXlzKS4gKi9cbmZ1bmN0aW9uIGhhcyhzdGFtcDogVHJhdmVyc2FsU3RhbXAsIGtleTogJ3BhcmVudFN0YWdlSWQnIHwgJ3N1YmZsb3dJZCcgfCAnc3ViZmxvd1BhdGgnKTogYm9vbGVhbiB7XG4gIHJldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoc3RhbXAsIGtleSk7XG59XG5cbi8qKiBUaGUgc3ludGhldGljIHN0YWdlIGlkIG9mIHRoZSBydW4tYm91bmRhcnkgc3RhbXAgKGBvblJ1blN0YXJ0YCAvIGBvblJ1bkVuZGAgLyBgb25SdW5GYWlsZWRgKS4gKi9cbmNvbnN0IFJPT1RfU1RBR0VfSUQgPSAnX19yb290X18nO1xuXG4vKipcbiAqIFRoZSBydW4tYm91bmRhcnkgc3RhbXA6IHJvb3Qtc3RhZ2UgZGVmYXVsdHMgKGAnX19yb290X18nYCwgYCdfX3Jvb3RfXyMwJ2AsXG4gKiBkZXB0aCAwKSBzbyB0aGUgYHJ1bklkYCBpcyByZWxpYWJseSBhdmFpbGFibGUgb24gcnVuIGV2ZW50cyB3aXRob3V0IGZvcmNpbmdcbiAqIHJlY29yZGVycyB0byBoYW5kbGUgYHRyYXZlcnNhbENvbnRleHQgPT09IHVuZGVmaW5lZGAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByb290VHJhdmVyc2FsQ29udGV4dChydW5JZDogc3RyaW5nKTogVHJhdmVyc2FsQ29udGV4dCB7XG4gIHJldHVybiB0cmF2ZXJzYWxDb250ZXh0Rm9yKHtcbiAgICBydW5JZCxcbiAgICBzdGFnZUlkOiBST09UX1NUQUdFX0lELFxuICAgIHJ1bnRpbWVTdGFnZUlkOiBidWlsZFJ1bnRpbWVTdGFnZUlkKFJPT1RfU1RBR0VfSUQsIDApLFxuICAgIHN0YWdlTmFtZTogUk9PVF9TVEFHRV9JRCxcbiAgfSk7XG59XG5cbi8qKlxuICogVGhlIGBvblJlc3VtZWAgc3RhbXAuIE5hbWVzIHRoZSBzdGFuZC1pbidzIG93biBleGVjdXRpb24gKGBydW50aW1lU3RhZ2VJZGAsXG4gKiB0aGUgaWQgaXRzIGNvbW1pdCBjYXJyaWVzKSwgdGhlIFJFQUwgc3ViZmxvdyBpdCBydW5zIGluIOKAlCBgc3ViZmxvd0lkYCBpcyB0aGVcbiAqIHBhdXNlZCBzdGFnZSdzIGlubmVybW9zdCBzdWJmbG93IChgY2hlY2twb2ludC5zdWJmbG93UGF0aGAncyBsYXN0IGVudHJ5LCB0aGVcbiAqIHByZWZpeGVkIGlkIGV2ZXJ5IGluLXN1YmZsb3cgc3RhbXAgY2FycmllcyksIGFic2VudCBhdCB0aGUgdG9wIGxldmVsIOKAlCBhbmRcbiAqIHRoZSBzYW1lIGBkZXB0aGAgaXRzIG93biBzdGFnZSBldmVudHMgY2FycnkgKGJvdGggcmVhZCB0aGUgYWRkcmVzcykuXG4gKiBgcmVzdW1lZEZyb21gIExJTktTIHRvIHRoZSBwYXVzZWQgZXhlY3V0aW9uIChPVGVsIHNwYW4tbGluayBzdHlsZSwgcmVhZCBvZmZcbiAqIGBjaGVja3BvaW50LnBhdXNlZEV4ZWN1dGlvbmApIGluc3RlYWQgb2YgZm9yZWNhc3RpbmcgYSBwYXJlbnQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZXN1bWVUcmF2ZXJzYWxDb250ZXh0KHJlc3VtZToge1xuICByZWFkb25seSBydW5JZDogc3RyaW5nO1xuICByZWFkb25seSBzdGFnZUlkOiBzdHJpbmc7XG4gIHJlYWRvbmx5IHN0YWdlTmFtZTogc3RyaW5nO1xuICByZWFkb25seSBydW50aW1lU3RhZ2VJZDogUnVudGltZVN0YWdlSWQ7XG4gIC8qKiBgY2hlY2twb2ludC5zdWJmbG93UGF0aGA6IHRoZSBwcmVmaXhlZCBpZCBvZiBldmVyeSBzdWJmbG93IG9uIHRoZSB3YXkgZG93biwgb3V0ZXJtb3N0IGZpcnN0LiAqL1xuICByZWFkb25seSBzdWJmbG93UGF0aDogcmVhZG9ubHkgc3RyaW5nW107XG4gIHJlYWRvbmx5IHJlc3VtZWRGcm9tPzogUmVzdW1lTGluaztcbn0pOiBUcmF2ZXJzYWxDb250ZXh0IHtcbiAgY29uc3QgaW5uZXJtb3N0ID0gcmVzdW1lLnN1YmZsb3dQYXRoW3Jlc3VtZS5zdWJmbG93UGF0aC5sZW5ndGggLSAxXTtcbiAgcmV0dXJuIHRyYXZlcnNhbENvbnRleHRGb3Ioe1xuICAgIHJ1bklkOiByZXN1bWUucnVuSWQsXG4gICAgc3RhZ2VJZDogcmVzdW1lLnN0YWdlSWQsXG4gICAgcnVudGltZVN0YWdlSWQ6IHJlc3VtZS5ydW50aW1lU3RhZ2VJZCxcbiAgICBzdGFnZU5hbWU6IHJlc3VtZS5zdGFnZU5hbWUsXG4gICAgLi4uKGlubmVybW9zdCAhPT0gdW5kZWZpbmVkICYmIHsgc3ViZmxvd0lkOiBpbm5lcm1vc3QgfSksXG4gICAgLi4uKHJlc3VtZS5yZXN1bWVkRnJvbSAmJiB7IHJlc3VtZWRGcm9tOiByZXN1bWUucmVzdW1lZEZyb20gfSksXG4gIH0pO1xufVxuIl19
|
|
@@ -4,9 +4,9 @@
|
|
|
4
4
|
* Centralizes type definitions to avoid circular dependencies.
|
|
5
5
|
* Every handler receives HandlerDeps (the DI bag) instead of importing the traverser.
|
|
6
6
|
*/
|
|
7
|
-
import type { LogAddress } from '
|
|
7
|
+
import type { LogAddress } from 'foottrace';
|
|
8
|
+
import type { SharedMemory } from 'foottrace/write';
|
|
8
9
|
import type { FlowControlType, FlowMessage } from '../memory/frameTypes.js';
|
|
9
|
-
import type { SharedMemory } from '../memory/SharedMemory.js';
|
|
10
10
|
import type { StageContext } from '../memory/StageContext.js';
|
|
11
11
|
import type { ScopeProtectionMode } from '../scope/protection/types.js';
|
|
12
12
|
import type { StageNode } from './graph/StageNode.js';
|
|
@@ -493,14 +493,6 @@ export interface HandlerDeps<TOut = any, TScope = any> {
|
|
|
493
493
|
* paths.
|
|
494
494
|
*/
|
|
495
495
|
resume?: ResumeEntry<TOut, TScope>;
|
|
496
|
-
/**
|
|
497
|
-
* @deprecated since 9.28.0 — the engine plans a resume with {@link resume}.
|
|
498
|
-
* Still honoured, under the same one-shot law: each capture (keyed by
|
|
499
|
-
* path-prefixed `subflowId`) seeds only the FIRST entry into its subflow,
|
|
500
|
-
* in place of the inputMapper's values; later entries are ordinary.
|
|
501
|
-
* Ignored when `resume` is set.
|
|
502
|
-
*/
|
|
503
|
-
subflowStatesForResume?: Record<string, Record<string, unknown>>;
|
|
504
496
|
}
|
|
505
497
|
/** Options for FlowChartExecutor.run(). */
|
|
506
498
|
export interface RunOptions {
|
|
@@ -27,4 +27,4 @@ export var ArrayMergeMode;
|
|
|
27
27
|
/** Overwrite parent array with subflow output. Use for Dynamic loops. */
|
|
28
28
|
ArrayMergeMode["Replace"] = "replace";
|
|
29
29
|
})(ArrayMergeMode || (ArrayMergeMode = {}));
|
|
30
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL2VuZ2luZS90eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7R0FLRztBQWdCSCxPQUFPLEVBQUUsYUFBYSxFQUFFLGFBQWEsRUFBRSxXQUFXLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQWU5RSxvQ0FBb0M7QUFDcEMsd0RBQXdEO0FBQ3hELE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBWTtJQUNwQyxJQUFJLEVBQUUsQ0FBQyxPQUFhLEVBQUUsR0FBRyxJQUFXLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLEdBQUcsSUFBSSxDQUFDO0lBQ3ZFLEdBQUcsRUFBRSxDQUFDLE9BQWEsRUFBRSxHQUFHLElBQVcsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsR0FBRyxJQUFJLENBQUM7SUFDckUsS0FBSyxFQUFFLENBQUMsT0FBYSxFQUFFLEdBQUcsSUFBVyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxHQUFHLElBQUksQ0FBQztJQUN6RSxLQUFLLEVBQUUsQ0FBQyxPQUFhLEVBQUUsR0FBRyxJQUFXLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLEdBQUcsSUFBSSxDQUFDO0lBQ3pFLElBQUksRUFBRSxDQUFDLE9BQWEsRUFBRSxHQUFHLElBQVcsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsR0FBRyxJQUFJLENBQUM7Q0FDeEUsQ0FBQztBQXVLRiw4RUFBOEU7QUFDOUUsVUFBVTtBQUNWLDhFQUE4RTtBQUU5RTs7R0FFRztBQUNILE1BQU0sQ0FBTixJQUFZLGNBS1g7QUFMRCxXQUFZLGNBQWM7SUFDeEIsd0ZBQXdGO0lBQ3hGLG1DQUFpQixDQUFBO0lBQ2pCLHlFQUF5RTtJQUN6RSxxQ0FBbUIsQ0FBQTtBQUNyQixDQUFDLEVBTFcsY0FBYyxLQUFkLGNBQWMsUUFLekIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIHR5cGVzLnRzIOKAlCBBbGwgdHlwZSBkZWZpbml0aW9ucyBmb3IgdGhlIGVuZ2luZSBsaWJyYXJ5LlxuICpcbiAqIENlbnRyYWxpemVzIHR5cGUgZGVmaW5pdGlvbnMgdG8gYXZvaWQgY2lyY3VsYXIgZGVwZW5kZW5jaWVzLlxuICogRXZlcnkgaGFuZGxlciByZWNlaXZlcyBIYW5kbGVyRGVwcyAodGhlIERJIGJhZykgaW5zdGVhZCBvZiBpbXBvcnRpbmcgdGhlIHRyYXZlcnNlci5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7IExvZ0FkZHJlc3MgfSBmcm9tICcuLi9tZW1vcnkvZXZlbnRQb3NpdGlvbi5qcyc7XG5pbXBvcnQgdHlwZSB7IEZsb3dDb250cm9sVHlwZSwgRmxvd01lc3NhZ2UgfSBmcm9tICcuLi9tZW1vcnkvZnJhbWVUeXBlcy5qcyc7XG5pbXBvcnQgdHlwZSB7IFNoYXJlZE1lbW9yeSB9IGZyb20gJy4uL21lbW9yeS9TaGFyZWRNZW1vcnkuanMnO1xuaW1wb3J0IHR5cGUgeyBTdGFnZUNvbnRleHQgfSBmcm9tICcuLi9tZW1vcnkvU3RhZ2VDb250ZXh0LmpzJztcbmltcG9ydCB0eXBlIHsgU2NvcGVQcm90ZWN0aW9uTW9kZSB9IGZyb20gJy4uL3Njb3BlL3Byb3RlY3Rpb24vdHlwZXMuanMnO1xuaW1wb3J0IHR5cGUgeyBEZWNpZGVyLCBTZWxlY3RvciwgU3RhZ2VOb2RlIH0gZnJvbSAnLi9ncmFwaC9TdGFnZU5vZGUuanMnO1xuaW1wb3J0IHR5cGUgeyBRdWV1ZWRQYXVzZSwgUmVzdW1lRW50cnkgfSBmcm9tICcuL2hhbmRsZXJzL1Jlc3VtZUVudHJ5LmpzJztcbmltcG9ydCB0eXBlIHsgSUNvbnRyb2xGbG93TmFycmF0aXZlIH0gZnJvbSAnLi9uYXJyYXRpdmUvdHlwZXMuanMnO1xuXG4vLyBSZS1leHBvcnQgU3RhZ2VOb2RlIHR5cGVzIGZvciBjb252ZW5pZW5jZVxuZXhwb3J0IHR5cGUgeyBEZWNpZGVyLCBTZWxlY3RvciwgU3RhZ2VOb2RlIH0gZnJvbSAnLi9ncmFwaC9TdGFnZU5vZGUuanMnO1xuXG4vLyBSZS1leHBvcnQgcGF1c2UgdHlwZXMgZnJvbSBwYXVzZS8gbGlicmFyeVxuZXhwb3J0IHR5cGUgeyBGbG93Y2hhcnRDaGVja3BvaW50LCBQYXVzYWJsZUhhbmRsZXIsIFBhdXNlUmVzdWx0IH0gZnJvbSAnLi4vcGF1c2UvaW5kZXguanMnO1xuZXhwb3J0IHsgaXNQYXVzZVJlc3VsdCwgaXNQYXVzZVNpZ25hbCwgUGF1c2VTaWduYWwgfSBmcm9tICcuLi9wYXVzZS9pbmRleC5qcyc7XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gTG9nZ2VyXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuLyoqIE1pbmltYWwgbG9nZ2luZyBjb250cmFjdC4gTWlycm9ycyBDb25zb2xlIEFQSSBzdWJzZXQuICovXG5leHBvcnQgaW50ZXJmYWNlIElMb2dnZXIge1xuICBpbmZvKG1lc3NhZ2U/OiBhbnksIC4uLm9wdGlvbmFsUGFyYW1zOiBhbnlbXSk6IHZvaWQ7XG4gIGxvZyhtZXNzYWdlPzogYW55LCAuLi5vcHRpb25hbFBhcmFtczogYW55W10pOiB2b2lkO1xuICBkZWJ1ZyhtZXNzYWdlPzogYW55LCAuLi5vcHRpb25hbFBhcmFtczogYW55W10pOiB2b2lkO1xuICBlcnJvcihtZXNzYWdlPzogYW55LCAuLi5vcHRpb25hbFBhcmFtczogYW55W10pOiB2b2lkO1xuICB3YXJuKG1lc3NhZ2U/OiBhbnksIC4uLm9wdGlvbmFsUGFyYW1zOiBhbnlbXSk6IHZvaWQ7XG59XG5cbi8qKiBEZWZhdWx0IGNvbnNvbGUtYmFzZWQgbG9nZ2VyLiAqL1xuLyogaXN0YW5idWwgaWdub3JlIG5leHQgLS0gdHJpdmlhbCBjb25zb2xlIGRlbGVnYXRpb24gKi9cbmV4cG9ydCBjb25zdCBkZWZhdWx0TG9nZ2VyOiBJTG9nZ2VyID0ge1xuICBpbmZvOiAobWVzc2FnZT86IGFueSwgLi4uYXJnczogYW55W10pID0+IGNvbnNvbGUuaW5mbyhtZXNzYWdlLCAuLi5hcmdzKSxcbiAgbG9nOiAobWVzc2FnZT86IGFueSwgLi4uYXJnczogYW55W10pID0+IGNvbnNvbGUubG9nKG1lc3NhZ2UsIC4uLmFyZ3MpLFxuICBkZWJ1ZzogKG1lc3NhZ2U/OiBhbnksIC4uLmFyZ3M6IGFueVtdKSA9PiBjb25zb2xlLmRlYnVnKG1lc3NhZ2UsIC4uLmFyZ3MpLFxuICBlcnJvcjogKG1lc3NhZ2U/OiBhbnksIC4uLmFyZ3M6IGFueVtdKSA9PiBjb25zb2xlLmVycm9yKG1lc3NhZ2UsIC4uLmFyZ3MpLFxuICB3YXJuOiAobWVzc2FnZT86IGFueSwgLi4uYXJnczogYW55W10pID0+IGNvbnNvbGUud2FybihtZXNzYWdlLCAuLi5hcmdzKSxcbn07XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gU3RhZ2UgRnVuY3Rpb25cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4vKiogQ2FsbGJhY2sgdGhhdCByZWNlaXZlcyB0b2tlbnMgZHVyaW5nIHN0cmVhbWluZy4gKi9cbmV4cG9ydCB0eXBlIFN0cmVhbUNhbGxiYWNrID0gKHRva2VuOiBzdHJpbmcpID0+IHZvaWQ7XG5cbi8qKlxuICogVGhlIGZ1bmN0aW9uIHNpZ25hdHVyZSBmb3Igc3RhZ2UgaGFuZGxlcnMuXG4gKiAtIFRPdXQ6IHJldHVybiB0eXBlIHByb2R1Y2VkIGJ5IHRoZSBzdGFnZVxuICogLSBUU2NvcGU6IHRoZSBzY29wZSBvYmplY3QgcGFzc2VkIHRvIHRoZSBzdGFnZVxuICogLSBPcHRpb25hbCAzcmQgcGFyYW1ldGVyIGBzdHJlYW1DYWxsYmFja2AgaW5qZWN0ZWQgZm9yIHN0cmVhbWluZyBzdGFnZXMuXG4gKi9cbmV4cG9ydCB0eXBlIFN0YWdlRnVuY3Rpb248VE91dCA9IGFueSwgVFNjb3BlID0gYW55PiA9IChcbiAgc2NvcGU6IFRTY29wZSxcbiAgYnJlYWtQaXBlbGluZTogKCkgPT4gdm9pZCxcbiAgc3RyZWFtQ2FsbGJhY2s/OiBTdHJlYW1DYWxsYmFjayxcbikgPT4gUHJvbWlzZTxUT3V0IHwgdm9pZD4gfCBUT3V0IHwgdm9pZDtcblxuLyoqXG4gKiBTdGFnZSBmdW5jdGlvbiBmb3IgcGF1c2FibGUgc3RhZ2VzIOKAlCByZXR1cm4gdmFsdWUgaXMgdGhlIHBhdXNlIGRhdGEgKGFueSB0eXBlKS5cbiAqIFJldHVybiBub24tdm9pZCB0byBwYXVzZSwgcmV0dXJuIHZvaWQgdG8gY29udGludWUgbm9ybWFsbHkuXG4gKi9cbmV4cG9ydCB0eXBlIFBhdXNhYmxlU3RhZ2VGdW5jdGlvbjxUU2NvcGUgPSBhbnk+ID0gKFxuICBzY29wZTogVFNjb3BlLFxuICBicmVha1BpcGVsaW5lOiAoKSA9PiB2b2lkLFxuKSA9PiBQcm9taXNlPHVua25vd24+IHwgdW5rbm93bjtcblxuLyoqIEZhY3RvcnkgdGhhdCBjcmVhdGVzIGEgc2NvcGUgaW5zdGFuY2UgZm9yIGVhY2ggc3RhZ2UuICovXG5leHBvcnQgdHlwZSBTY29wZUZhY3Rvcnk8VFNjb3BlID0gYW55PiA9IChcbiAgY29udGV4dDogU3RhZ2VDb250ZXh0LFxuICBzdGFnZU5hbWU6IHN0cmluZyxcbiAgcmVhZE9ubHlDb250ZXh0PzogdW5rbm93bixcbiAgZXhlY3V0aW9uRW52PzogRXhlY3V0aW9uRW52LFxuKSA9PiBUU2NvcGU7XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gU3RyZWFtaW5nXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuZXhwb3J0IHR5cGUgU3RyZWFtVG9rZW5IYW5kbGVyID0gKHN0cmVhbUlkOiBzdHJpbmcsIHRva2VuOiBzdHJpbmcpID0+IHZvaWQ7XG5leHBvcnQgdHlwZSBTdHJlYW1MaWZlY3ljbGVIYW5kbGVyID0gKHN0cmVhbUlkOiBzdHJpbmcsIGZ1bGxUZXh0Pzogc3RyaW5nKSA9PiB2b2lkO1xuXG5leHBvcnQgaW50ZXJmYWNlIFN0cmVhbUhhbmRsZXJzIHtcbiAgb25Ub2tlbj86IFN0cmVhbVRva2VuSGFuZGxlcjtcbiAgb25TdGFydD86IFN0cmVhbUxpZmVjeWNsZUhhbmRsZXI7XG4gIG9uRW5kPzogU3RyZWFtTGlmZWN5Y2xlSGFuZGxlcjtcbn1cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBQYXJhbGxlbC1mb3ItZWFjaCAoZHluYW1pYyBmYW4tb3V0KVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbi8qKlxuICogQSBidWlsdCBjaGFydCwgYXMgYGFkZFBhcmFsbGVsRm9yRWFjaGAncyBgYnJhbmNoYCBmYWN0b3J5IHJldHVybnMgaXQuXG4gKlxuICogU3RydWN0dXJhbGx5IHRoZSBzdWJzZXQgb2YgYEZsb3dDaGFydGAgdGhlIGVuZ2luZSBuZWVkcyB0byBtb3VudCBhIGJyYW5jaCDigJRcbiAqIGRlY2xhcmVkIGhlcmUgcmF0aGVyIHRoYW4gaW1wb3J0ZWQgc28gYGVuZ2luZS9gIGtlZXBzIGl0cyBvbmUtd2F5IGRlcGVuZGVuY3lcbiAqIG9uIGBidWlsZGVyL2AuIEFueSBgZmxvd0NoYXJ0KC4uLikuYnVpbGQoKWAgcmVzdWx0IHNhdGlzZmllcyBpdC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBCcmFuY2hDaGFydDxUT3V0ID0gYW55LCBUU2NvcGUgPSBhbnk+IHtcbiAgcm9vdDogU3RhZ2VOb2RlPFRPdXQsIFRTY29wZT47XG4gIHN0YWdlTWFwOiBNYXA8c3RyaW5nLCBTdGFnZUZ1bmN0aW9uPFRPdXQsIFRTY29wZT4+O1xuICBzdWJmbG93cz86IFJlY29yZDxzdHJpbmcsIHsgcm9vdDogU3RhZ2VOb2RlPFRPdXQsIFRTY29wZT4gfT47XG4gIGJ1aWxkVGltZVN0cnVjdHVyZT86IHVua25vd247XG59XG5cbi8qKlxuICogUnVudGltZSBmYW4tb3V0IGNvbmZpZyDigJQgb25lIGJyYW5jaCBwZXIgaXRlbSwgYnJhbmNoIENPVU5UIGRlY2lkZWQgYXRcbiAqIHJ1bnRpbWUgZnJvbSB0aGUgcGF5bG9hZC4gRGVzaWduOiBkb2NzL2Rlc2lnbi9leGVjdXRpb24tY29udHJvbC5tZCAoRDIpLlxuICpcbiAqIEVhY2ggYnJhbmNoIHJ1bnMgYXMgYSBnZW5lcmF0ZWQgU1VCRkxPVyAoaXNvbGF0ZWQgcnVudGltZSwgb3duIGNvbW1pdCBsb2csXG4gKiBhZGRyZXNzYWJsZSBhdCBgPHN0YWdlSWQ+fjxpbmRleD5gIGluIGV2ZXJ5IHRyYWNlIHF1ZXJ5KSwgd2hpY2ggaXMgd2hhdFxuICogbWFrZXMgYnJhbmNoZXMgdW5hYmxlIHRvIGNvcnJ1cHQgZWFjaCBvdGhlcidzIGluLWZsaWdodCBzdGF0ZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQYXJhbGxlbEZvckVhY2hDb25maWc8VEl0ZW0gPSBhbnksIFRTY29wZSA9IGFueT4ge1xuICAvKipcbiAgICogUGlja3MgdGhlIGl0ZW1zIHRvIGZhbiBvdXQgb3ZlciwgZnJvbSB0aGUgbGl2ZSBzY29wZS4gUmVhZHMgaGVyZSBhcmVcbiAgICogdHJhY2tlZCBsaWtlIGFueSBvdGhlciBzdGFnZSByZWFkLCBzbyB0aGUgZmFuLW91dCdzIG93biBpbnB1dHMgc2hvdyB1cCBpblxuICAgKiB0aGUgdHJhY2UgYW5kIGluIGEgYmFja3dhcmQgc2xpY2UuXG4gICAqL1xuICBpdGVtczogKHNjb3BlOiBUU2NvcGUpID0+IHJlYWRvbmx5IFRJdGVtW107XG4gIC8qKlxuICAgKiBCdWlsZHMgdGhlIGNoYXJ0IGZvciBPTkUgaXRlbS4gQ2FsbGVkIG9uY2UgcGVyIGV4ZWN1dGVkIGJyYW5jaCwgd2l0aCB0aGVcbiAgICogaXRlbSBhbmQgaXRzIGluZGV4IOKAlCBjbG9zZSBvdmVyIHRoZW0sIG9yIHJlYWQgdGhlIGBpdGVtYCAvIGBpbmRleGAgdmFsdWVzXG4gICAqIHNlZWRlZCBpbnRvIHRoZSBicmFuY2gncyBvd24gc2NvcGUuXG4gICAqL1xuICBicmFuY2g6IChpdGVtOiBUSXRlbSwgaW5kZXg6IG51bWJlcikgPT4gQnJhbmNoQ2hhcnQ7XG4gIC8qKlxuICAgKiBIYXJkIGNlaWxpbmcgb24gYnJhbmNoZXMgcGVyIGV4ZWN1dGlvbi4gUkVRVUlSRUQ6IGFuIHVuYm91bmRlZCBmYW4tb3V0XG4gICAqIGRyaXZlbiBieSBtb2RlbCBvdXRwdXQgaXMgYSByZXNvdXJjZSBhdHRhY2ssIHNvIHRoZXJlIGlzIG5vIGRlZmF1bHQgdG9cbiAgICogZm9yZ2V0LiBFeHRyYSBpdGVtcyBkbyBub3QgcnVuIOKAlCB0aGUgdHJ1bmNhdGlvbiBpcyByZWNvcmRlZCwgbmV2ZXIgc2lsZW50LlxuICAgKi9cbiAgbWF4QnJhbmNoZXM6IG51bWJlcjtcbiAgLyoqXG4gICAqIFN0YXRlIGtleSB0aGUgb3JkZXJlZCByZXN1bHRzIGFycmF5IGlzIHdyaXR0ZW4gdG8gb24gdGhlIHBhcmVudCBzY29wZS5cbiAgICogUkVRVUlSRUQg4oCUIGEga2V5IGRlcml2ZWQgZnJvbSB0aGUgc3RhZ2UgaWQgY291bGQgc2lsZW50bHkgb3ZlcndyaXRlIHN0YXRlXG4gICAqIHRoZSBjaGFydCBhbHJlYWR5IG93bnMuXG4gICAqL1xuICBpbnRvOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBGYW4tb3V0IGVycm9yIHBvbGljeSDigJQgdGhlIFNBTUUgcG9saWN5IHRoZSBleGlzdGluZyBwYXJhbGxlbCBmYW4tb3V0IHVzZXMuXG4gICAqIGB0cnVlYCA9IGBQcm9taXNlLmFsbGAgKHRoZSBmaXJzdCBmYWlsaW5nIGJyYW5jaCByZWplY3RzIHRoZSBzdGFnZSk7XG4gICAqIG9taXR0ZWQvZmFsc2UgPSBiZXN0LWVmZm9ydCBgUHJvbWlzZS5hbGxTZXR0bGVkYCAoZXZlcnkgYnJhbmNoIHJ1bnM7IGFcbiAgICogZmFpbGVkIGJyYW5jaCdzIHNsb3QgaW4gdGhlIHJlc3VsdHMgYXJyYXkgaXMgYHVuZGVmaW5lZGApLlxuICAgKi9cbiAgZmFpbEZhc3Q/OiBib29sZWFuO1xufVxuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFJldHJ5IChwZXItc3RhZ2UgZGVjbGFyYXRpdmUgcG9saWN5KVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbi8qKlxuICogRGVjbGFyYXRpdmUgcGVyLXN0YWdlIHJldHJ5IHBvbGljeS5cbiAqXG4gKiBXSFkgdGhpcyBleGlzdHM6IGEgcmV0cnkgaGFuZC1yb2xsZWQgaW5zaWRlIGEgc3RhZ2UgZnVuY3Rpb24gaXMgaW52aXNpYmxlIHRvXG4gKiB0aGUgdHJhY2UuIFRoZSBzdGFnZSBzaG93cyBvbmUgZXhlY3V0aW9uLCB0aGUgY29tbWl0IGxvZyBzaG93cyBvbmUgYnVuZGxlLFxuICogYW5kIHRoZSB0d28gZmFpbGVkIGNhbGxzIHRoYXQgcHJlY2VkZWQgdGhlIHN1Y2Nlc3NmdWwgb25lIGxlZnQgbm8gbWFya1xuICogYW55d2hlcmUg4oCUIGFuIHVuZXhwbGFpbmVkIGJlaGF2aW91ciBpbiBhIGxpYnJhcnkgd2hvc2Ugd2hvbGUgdGhlc2lzIGlzIHRoYXRcbiAqIG5vdGhpbmcgaW52aXNpYmxlIGhhcHBlbnMuIERlY2xhcmVkIGhlcmUgaW5zdGVhZCwgZXZlcnkgYXR0ZW1wdCBpcyBwYXJ0IG9mXG4gKiB0aGUgcmVjb3JkOiBlYWNoIGZhaWxlZCBhdHRlbXB0IGZpcmVzIGBGbG93UmVjb3JkZXIub25TdGFnZVJldHJ5YCB3aXRoIHRoZVxuICogYXR0ZW1wdCBudW1iZXIsIHRoZSB3YWl0LCBhbmQgdGhlIHN0cnVjdHVyZWQgZXJyb3IuXG4gKlxuICogQSBQT0xJQ1ksIG5vdCBhIHN0YWdlIGtpbmQg4oCUIGByZXRyeWAgc2l0cyBvbiBhIG5vcm1hbCBzdGFnZSB0aGUgd2F5XG4gKiBgaXNQYXVzYWJsZWAgLyBgaXNTdHJlYW1pbmdgIGRvLiBUaGUgc2VyaWFsaXplZCBub2RlIGB0eXBlYCBpcyB1bmNoYW5nZWQgYW5kXG4gKiBldmVyeSBleGlzdGluZyBjb25zdW1lciBrZWVwcyByZW5kZXJpbmcgdGhlIHN0YWdlIGV4YWN0bHkgYXMgYmVmb3JlLlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0c1xuICogZmxvd0NoYXJ0PFN0YXRlPignRmV0Y2ggdXNlcicsIGZldGNoRm4sICdmZXRjaC11c2VyJylcbiAqICAgLnJldHJ5KHsgYXR0ZW1wdHM6IDMsIGJhY2tvZmZNczogKG4pID0+IDEwMCAqIDIgKiogKG4gLSAxKSB9KVxuICogYGBgXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmV0cnlQb2xpY3kge1xuICAvKipcbiAgICogSG93IG1hbnkgdGltZXMgdGhlIHN0YWdlIGZ1bmN0aW9uIG1heSBydW4gaW4gdG90YWwsIElOQ0xVRElORyB0aGUgZmlyc3RcbiAgICogcnVuLiBNdXN0IGJlIGFuIGludGVnZXIgPj0gMTsgYDFgIG1lYW5zIFwibm8gcmV0cnlcIiAoYSBkZWNsYXJlZCBuby1vcCxcbiAgICogYWNjZXB0ZWQgc28gYSBwb2xpY3kgY2FuIGJlIHN3aXRjaGVkIG9mZiB3aXRob3V0IGRlbGV0aW5nIGl0KS5cbiAgICovXG4gIGF0dGVtcHRzOiBudW1iZXI7XG4gIC8qKlxuICAgKiBIb3cgbG9uZyB0byB3YWl0IGJlZm9yZSB0aGUgTkVYVCBhdHRlbXB0LiBFaXRoZXIgYSBmaXhlZCBudW1iZXIgb2ZcbiAgICogbWlsbGlzZWNvbmRzLCBvciBhIGZ1bmN0aW9uIG9mIHRoZSBhdHRlbXB0IHRoYXQganVzdCBGQUlMRUQgKDEtYmFzZWQpXG4gICAqIHJldHVybmluZyBtaWxsaXNlY29uZHMg4oCUIGAobikgPT4gMTAwICogMiAqKiAobiAtIDEpYCBpcyBleHBvbmVudGlhbFxuICAgKiBiYWNrb2ZmLiBPbWl0dGVkIChvciBhIG5vbi1maW5pdGUgLyBuZWdhdGl2ZSByZXN1bHQpIG1lYW5zIG5vIHdhaXQuXG4gICAqXG4gICAqIFRoZSB3YWl0IGlzIGEgcGxhaW4gYXdhaXRlZCB0aW1lciB0aGF0IGlzIENBTkNFTExFRCBieSB0aGUgcnVuJ3NcbiAgICogYEFib3J0U2lnbmFsYC4gSXQgaXMgbm90IGEgcGF1c2U6IGEgY2hhcnQgY2Fubm90IGJlIGNoZWNrcG9pbnRlZCBpbiB0aGVcbiAgICogbWlkZGxlIG9mIGEgYmFja29mZi5cbiAgICovXG4gIGJhY2tvZmZNcz86IG51bWJlciB8ICgoYXR0ZW1wdDogbnVtYmVyKSA9PiBudW1iZXIpO1xuICAvKipcbiAgICogSXMgVEhJUyBlcnJvciB3b3J0aCBhbm90aGVyIGF0dGVtcHQ/IERlZmF1bHRzIHRvIHJldHJ5aW5nIGV2ZXJ5IGVycm9yLlxuICAgKiBSZXR1cm5pbmcgYGZhbHNlYCBlbmRzIHRoZSBzdGFnZSBpbW1lZGlhdGVseSBvbiB0aGUgbm9ybWFsIGVycm9yIHBhdGgg4oCUXG4gICAqIGV4YWN0bHkgYXMgaWYgbm8gcG9saWN5IGhhZCBiZWVuIGRlY2xhcmVkLCBhbmQgd2l0aCBubyByZXRyeSBldmVudCAodGhlXG4gICAqIHBvbGljeSBjaG9zZSBub3QgdG8gYWN0OyB0aGVyZSBpcyBub3RoaW5nIHRvIHJlcG9ydCB0aGF0IHRoZSBlcnJvciBldmVudFxuICAgKiBkb2VzIG5vdCBhbHJlYWR5IHNheSkuXG4gICAqXG4gICAqIEEgdGhyb3cgZnJvbSB0aGlzIHByZWRpY2F0ZSBpcyB0cmVhdGVkIGFzIGBmYWxzZWAg4oCUIGEgYnJva2VuIHByZWRpY2F0ZVxuICAgKiBtdXN0IG5vdCB0dXJuIGEgZmFpbGluZyBzdGFnZSBpbnRvIGFuIGluZmluaXRlIHJldHJ5IGxvb3AuXG4gICAqL1xuICByZXRyeU9uPzogKGVycm9yOiB1bmtub3duKSA9PiBib29sZWFuO1xufVxuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFN1YmZsb3dcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4vKipcbiAqIENvbnRyb2xzIGhvdyBhcnJheSB2YWx1ZXMgZnJvbSBvdXRwdXRNYXBwZXIgYXJlIG1lcmdlZCBpbnRvIHBhcmVudCBzY29wZS5cbiAqL1xuZXhwb3J0IGVudW0gQXJyYXlNZXJnZU1vZGUge1xuICAvKiogQXBwZW5kIHN1YmZsb3cgb3V0cHV0IHRvIGV4aXN0aW5nIHBhcmVudCBhcnJheTogWy4uLmV4aXN0aW5nLCAuLi52YWx1ZV0uIERlZmF1bHQuICovXG4gIENvbmNhdCA9ICdjb25jYXQnLFxuICAvKiogT3ZlcndyaXRlIHBhcmVudCBhcnJheSB3aXRoIHN1YmZsb3cgb3V0cHV0LiBVc2UgZm9yIER5bmFtaWMgbG9vcHMuICovXG4gIFJlcGxhY2UgPSAncmVwbGFjZScsXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3ViZmxvd01vdW50T3B0aW9uczxUUGFyZW50U2NvcGUgPSBhbnksIFRTdWJmbG93SW5wdXQgPSBhbnksIFRTdWJmbG93T3V0cHV0ID0gYW55PiB7XG4gIGlucHV0TWFwcGVyPzogKHBhcmVudFNjb3BlOiBUUGFyZW50U2NvcGUpID0+IFRTdWJmbG93SW5wdXQ7XG4gIC8qKlxuICAgKiBNYXBzIHN1YmZsb3cgb3V0cHV0IGJhY2sgaW50byBwYXJlbnQgc2NvcGUuXG4gICAqXG4gICAqICoqQXJyYXkgbWVyZ2UgYmVoYXZpb3IqKiBpcyBjb250cm9sbGVkIGJ5IGBhcnJheU1lcmdlYDpcbiAgICogLSBgJ2NvbmNhdCdgIChkZWZhdWx0KTogYFsuLi5leGlzdGluZywgLi4udmFsdWVdYCDigJQgcmV0dXJuIG9ubHkgKipkZWx0YSoqIGl0ZW1zXG4gICAqIC0gYCdyZXBsYWNlJ2A6IG92ZXJ3cml0ZXMgdGhlIHBhcmVudCB2YWx1ZSDigJQgcmV0dXJuIHRoZSBmdWxsIGFycmF5XG4gICAqXG4gICAqIFNjYWxhciB2YWx1ZXMgYXJlIGFsd2F5cyByZXBsYWNlZCByZWdhcmRsZXNzIG9mIGBhcnJheU1lcmdlYC5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogYGBgdHlwZXNjcmlwdFxuICAgKiAvLyBEZWx0YSBtb2RlIChkZWZhdWx0KSDigJQgcmV0dXJuIG9ubHkgbmV3IGl0ZW1zLCBjb25jYXQgYXBwZW5kc1xuICAgKiBvdXRwdXRNYXBwZXI6IChzZikgPT4gKHsgbWVzc2FnZXM6IHNmLm5ld01lc3NhZ2VzIH0pXG4gICAqXG4gICAqIC8vIFJlcGxhY2UgbW9kZSDigJQgcmV0dXJuIGZ1bGwgYXJyYXksIHBhcmVudCB2YWx1ZSBpcyBvdmVyd3JpdHRlblxuICAgKiAvLyBVc2VmdWwgaW4gRHluYW1pYyBsb29wcyB3aGVyZSB0aGUgc3ViZmxvdyByZWNvbXB1dGVzIHRoZSBmdWxsIHZhbHVlIGVhY2ggaXRlcmF0aW9uXG4gICAqIG91dHB1dE1hcHBlcjogKHNmKSA9PiAoeyB0b29sRGVzY3JpcHRpb25zOiBzZi50b29sRGVzY3JpcHRpb25zIH0pLFxuICAgKiBhcnJheU1lcmdlOiBBcnJheU1lcmdlTW9kZS5SZXBsYWNlLFxuICAgKlxuICAgKiAvLyBTY2FsYXJzIGFyZSBmaW5lIGluIGJvdGggbW9kZXMg4oCUIGFsd2F5cyByZXBsYWNlZFxuICAgKiBvdXRwdXRNYXBwZXI6IChzZikgPT4gKHsgc3RhdHVzOiBzZi5yZXN1bHQsIGNvdW50OiBzZi50b3RhbCB9KVxuICAgKiBgYGBcbiAgICovXG4gIG91dHB1dE1hcHBlcj86IChzdWJmbG93T3V0cHV0OiBUU3ViZmxvd091dHB1dCwgcGFyZW50U2NvcGU6IFRQYXJlbnRTY29wZSkgPT4gUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gIC8qKlxuICAgKiBDb250cm9scyBob3cgYXJyYXkgdmFsdWVzIGZyb20gb3V0cHV0TWFwcGVyIGFyZSBtZXJnZWQgaW50byBwYXJlbnQgc2NvcGUuXG4gICAqIEFwcGxpZXMgb25seSB0byB0b3AtbGV2ZWwgYXJyYXkga2V5cy4gTmVzdGVkIGFycmF5cyBpbnNpZGUgb2JqZWN0c1xuICAgKiBhbHdheXMgdXNlIGFwcGVuZCAoYXBwZW5kVG9BcnJheSkgcmVnYXJkbGVzcyBvZiB0aGlzIHNldHRpbmcuXG4gICAqXG4gICAqIEBkZWZhdWx0IEFycmF5TWVyZ2VNb2RlLkNvbmNhdFxuICAgKi9cbiAgYXJyYXlNZXJnZT86IEFycmF5TWVyZ2VNb2RlO1xuXG4gIC8qKlxuICAgKiBTVFJVQ1RVUkUtT05MWTogdGhlIGRvd25zdHJlYW0gc3RhZ2UgaWQgdGhpcyBicmFuY2gncyBjb252ZXJnZW5jZSBlZGdlXG4gICAqIHBvaW50cyB0bywgb3ZlcnJpZGluZyB0aGUgZGVmYXVsdCBcImNvbnZlcmdlIGF0IHRoZSBuZXh0IGxpbmVhciBzdGFnZS5cIlxuICAgKlxuICAgKiBXaGVuIGEgZm9yay9zZWxlY3Rvci9kZWNpZGVyIGJyYW5jaCBjYXJyaWVzIGBjb252ZXJnZUF0YCwgaXRzIHZpc3VhbGl6ZWRcbiAgICogYG5leHRgIGVkZ2UgaXMgZmlyZWQgdG8gdGhlIG5hbWVkIHN0YWdlIGluc3RlYWQgb2YgdG8gdGhlIHNoYXJlZFxuICAgKiBjb252ZXJnZW5jZSBub2RlIGl0cyBzaWJsaW5ncyB1c2UuIFRoaXMgZXhwcmVzc2VzIGFuIHVuZXF1YWwtZGVwdGggbWVyZ2VcbiAgICog4oCUIGUuZy4gYSBgdG9vbHNgIHNsb3QgdGhhdCBieXBhc3NlcyB0aGUgYG1lc3NhZ2VBUElgIGFzc2VtYmx5IG5vZGUgYW5kXG4gICAqIHBhaXJzIHdpdGggaXRzIG91dHB1dCBhdCBgY2FsbC1sbG1gIChzbyBgY2FsbC1sbG1gIHJlYWRzIGFzIGEgMi1wYXJlbnRcbiAgICogbWVyZ2UpLCBmYWl0aGZ1bCB0byB0aGUgQW50aHJvcGljIHdpcmUgcHJvdG9jb2wgKHN5c3RlbSttZXNzYWdlcyA9IHRoZVxuICAgKiBtZXNzYWdlIHBheWxvYWQ7IHRvb2xzID0gYSBzZXBhcmF0ZSB0b3AtbGV2ZWwgZmllbGQpLlxuICAgKlxuICAgKiAqKlRoaXMgYWZmZWN0cyB0aGUgU1RSVUNUVVJFL3RvcG9sb2d5IGdyYXBoIG9ubHkqKiDigJQgdGhlIHJ1bnRpbWUgaXNcbiAgICogdW5jaGFuZ2VkICh0aGUgYnJhbmNoJ3Mgb3V0cHV0cyByaWRlIHNoYXJlZCBzY29wZTsgdGhlIG5hbWVkIHRhcmdldCByZWFkc1xuICAgKiB0aGVtIHdoZW4gaXQgcnVucykuIEl0IGRvZXMgTk9UIGludHJvZHVjZSBhIGpvaW4gYmFycmllci4gVGhlIHRhcmdldCBpcyBhXG4gICAqIEZPUldBUkQgc3RhZ2UgKGFkZGVkIGxhdGVyIGluIHRoZSBjaGFpbiksIHNvIGl0IGlzIG5vdCB2YWxpZGF0ZWQgYXRcbiAgICogYnJhbmNoLWRlY2xhcmF0aW9uIHRpbWUuXG4gICAqL1xuICBjb252ZXJnZUF0Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBXaGVuIGB0cnVlYCwgYW4gaW5uZXIgYHNjb3BlLiRicmVhayhyZWFzb24pYCBjYWxsIGluc2lkZSB0aGlzIHN1YmZsb3dcbiAgICogcHJvcGFnYXRlcyB1cCB0byB0aGUgcGFyZW50IOKAlCBpLmUuLCB0aGUgcGFyZW50J3MgYGJyZWFrRmxhZ2AgaXMgc2V0XG4gICAqIGFmdGVyIHRoZSBzdWJmbG93IGV4aXRzLCB0ZXJtaW5hdGluZyB0aGUgcGFyZW50J3Mgb3V0ZXIgbG9vcCB0b28uXG4gICAqXG4gICAqICoqRGVmYXVsdDogYGZhbHNlYCoqIChjdXJyZW50IGJlaGF2aW91ciDigJQgaW5uZXIgYnJlYWsgc3RvcHMgb25seSB0aGVcbiAgICogc3ViZmxvdzsgcGFyZW50IGNvbnRpbnVlcykuXG4gICAqXG4gICAqICMjIFdoZW4gdG8gdXNlXG4gICAqXG4gICAqIFNldCBgcHJvcGFnYXRlQnJlYWs6IHRydWVgIG9uIHN1YmZsb3cgbW91bnRzIHRoYXQgcmVwcmVzZW50XG4gICAqICoqdGVybWluYWwqKiBicmFuY2hlcyDigJQgXCJpZiB0aGlzIHN1YmZsb3cgZmlyZXMsIHRoZSBvdXRlciBsb29wIGlzXG4gICAqIGRvbmVcIi4gRXhhbXBsZXM6XG4gICAqXG4gICAqIC0gQSBodW1hbi1yZXZpZXcgcnVubmVyIHRoYXQgdGFrZXMgb3ZlciBmcm9tIGFuIGFnZW50J3MgdG9vbC1jYWxsaW5nXG4gICAqICAgbG9vcCBhbmQgcHJvZHVjZXMgdGhlIGZpbmFsIHJlc3BvbnNlLlxuICAgKiAtIEEgc2FmZXR5LWdhdGUgc3ViZmxvdyB0aGF0IGhhbHRzIHRoZSBvdXRlciB3b3JrZmxvdyB3aGVuIGEgcG9saWN5XG4gICAqICAgdmlvbGF0aW9uIGlzIGRldGVjdGVkLlxuICAgKiAtIEFuIGVycm9yLXJlY292ZXJ5IHN1YmZsb3cgdGhhdCByZXN0b3JlcyBzdGF0ZSBhbmQgdGhlbiB0ZXJtaW5hdGVzLlxuICAgKlxuICAgKiAjIyBTZW1hbnRpY3NcbiAgICpcbiAgICogMS4gSW5zaWRlIHRoZSBzdWJmbG93LCBhIHN0YWdlIGNhbGxzIGBzY29wZS4kYnJlYWsocmVhc29uKWAuXG4gICAqIDIuIFRoZSBzdWJmbG93J3Mgb3duIGV4ZWN1dGlvbiBzdG9wcyAobm9ybWFsIGAkYnJlYWtgIGJlaGF2aW91cikuXG4gICAqIDMuIGBTdWJmbG93RXhlY3V0b3JgIGluc3BlY3RzIHRoZSBzdWJmbG93J3MgZXhpdCBzdGF0ZS4gSWZcbiAgICogICAgYHByb3BhZ2F0ZUJyZWFrID09PSB0cnVlYCBBTkQgdGhlIGlubmVyIGJyZWFrIGZpcmVkLCBpdCBmb3J3YXJkc1xuICAgKiAgICB0aGUgYnJlYWsgKGFuZCBpdHMgcmVhc29uKSB0byB0aGUgcGFyZW50J3MgYGJyZWFrRmxhZ2AuXG4gICAqIDQuIFRoZSBwYXJlbnQgdHJhdmVyc2VyIHNlZXMgYHNob3VsZEJyZWFrYCBvbiBpdHMgbmV4dCBzdGVwIGFuZCBleGl0cy5cbiAgICogNS4gQSBgRmxvd1JlY29yZGVyLm9uQnJlYWtgIGV2ZW50IGZpcmVzIGF0IHRoZSBwYXJlbnQtbW91bnQgbGV2ZWwgd2l0aFxuICAgKiAgICBgcHJvcGFnYXRlZEZyb21TdWJmbG93YCA9IHRoZSBzdWJmbG93J3MgaWQgYW5kIHRoZSBpbm5lciByZWFzb24uXG4gICAqXG4gICAqICMjIFBhcmFsbGVsL2Zhbi1vdXRcbiAgICpcbiAgICogRm9sbG93cyB0aGUgZXhpc3RpbmcgbGlicmFyeSBydWxlIGluIGBDaGlsZHJlbkV4ZWN1dG9yYDogdGhlIHBhcmVudFxuICAgKiBicmVha3Mgb25seSB3aGVuICoqZXZlcnkqKiBjaGlsZCBvZiBhIGZvcmsgYnJva2UuIEEgc2luZ2xlXG4gICAqIGBwcm9wYWdhdGVCcmVhazogdHJ1ZWAgc3ViZmxvdyBjb250cmlidXRpbmcgaXRzIGJyZWFrIHRvIHRoZSBjb3VudFxuICAgKiBkb2VzIG5vdCBvbiBpdHMgb3duIHRlcm1pbmF0ZSB0aGUgcGFyZW50IGZhbi1vdXQuXG4gICAqXG4gICAqICMjIG91dHB1dE1hcHBlciBzdGlsbCBydW5zXG4gICAqXG4gICAqIFRoZSBzdWJmbG93J3MgYG91dHB1dE1hcHBlcmAgKGlmIHN1cHBsaWVkKSBBTFdBWVMgcnVucyBiZWZvcmUgdGhlXG4gICAqIGJyZWFrIHByb3BhZ2F0ZXMsIHNvIHRoZSBzdWJmbG93J3MgcGFydGlhbCBzdGF0ZSBpcyBzdGlsbCB3cml0dGVuIHRvXG4gICAqIHRoZSBwYXJlbnQgc2NvcGUuIFRoaXMgaXMgaW50ZW50aW9uYWwg4oCUIHRoZSB0eXBpY2FsIHVzZSBjYXNlIGlzIGFuXG4gICAqIFwiZXNjYWxhdGlvblwiIHN1YmZsb3cgd2hvc2Ugb3V0cHV0IElTIHRoZSBmaW5hbCBhbnN3ZXIgdGhhdCBuZWVkcyB0b1xuICAgKiBsYW5kIGluIHRoZSBwYXJlbnQgc2NvcGUgYmVmb3JlIHRoZSBvdXRlciBsb29wIHRlcm1pbmF0ZXMuIElmIHlvdVxuICAgKiB3YW50IHRvIHN1cHByZXNzIG91dHB1dCBtYXBwaW5nIG9uIGJyZWFrLCBjaGVjayB0aGUgYnJlYWsgc3RhdGVcbiAgICogaW5zaWRlIHlvdXIgYG91dHB1dE1hcHBlcmAgYW5kIHJldHVybiBge31gIGVhcmx5LlxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcHJvcGFnYXRlQnJlYWs/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBEZWNsYXJlZCB0YWdzICg5LjIxLjEpIGZvciB0aGUgTU9VTlQgaXRzZWxmIOKAlCB0aGUgTkFNRVMgdGhlIGF1dGhvciBwdXRzXG4gICAqIG9uIHRoaXMgbW91bnQgYXQgYnVpbGQgdGltZSwgbGFuZGVkIGJ5IHRoZSBzYW1lIGBhcHBseVRhZ3NgIGV2ZXJ5IG90aGVyXG4gICAqIGBvcHRpb25zLnRhZ3NgIHNpdGUgdXNlcywgd2l0aCB0aGUgc2FtZSByZWZ1c2FscyAoZW1wdHksIG5vbi1zdHJpbmcsIHRoZVxuICAgKiByZXNlcnZlZCBgfmAgbWFya2VyLCBhIGR1cGxpY2F0ZSwgYSBzZWNvbmQgZGVjbGFyYXRpb24pLlxuICAgKlxuICAgKiBBIG1vdW50IGlzIGEgc3RhZ2UgdGhhdCBjb21taXRzOiBpdHMgZmlyc3QgYnVuZGxlIGluIHRoZSBQQVJFTlQgbG9nIGlzIGFcbiAgICogc3RvcCBpbiBgY29tbWl0U3RvcHNgLCBzbyBgdGFnU3RvcHNgIGtlZXBzIGl0IGxpa2UgYW55IHRhZ2dlZCBzdGFnZSBhbmRcbiAgICogY2FycmllcyB0aGVzZSBuYW1lcyBhcyBgU3RvcC5tZXRhYC4gU3RhbXBlZCBvbiB0aGF0IGZpcnN0IGJ1bmRsZSBvbmx5XG4gICAqICh0aGUgbW91bnQncyBleGl0IGJ1bmRsZSBjYXJyaWVzIG5vbmUg4oCUIHRoZSBvbmNlLXBlci1leGVjdXRpb24gbGF3KS5cbiAgICogVGhlIHN1YmZsb3cncyBPV04gbG9nIGlzIHVudG91Y2hlZDogaXRzIGlubmVyIHN0YWdlcyBkZWNsYXJlIHRoZWlyIG93blxuICAgKiB0YWdzLCBhbmQgYGRyaWxsKG1vdW50KWAgcmVhZHMgdGhvc2Ugb2ZmIHRoZSBpbm5lciBsb2cuXG4gICAqXG4gICAqIFRoaXMgaXMgdGhlIE9OTFkgdGFnIHNpdGUgZm9yIGEgZm9yay1jaGlsZCBtb3VudCAoYGFkZFN1YkZsb3dDaGFydGApIG9yXG4gICAqIGEgYnJhbmNoIG1vdW50IChgYWRkU3ViRmxvd0NoYXJ0QnJhbmNoYCkg4oCUIGFmdGVyIHRob3NlIHRoZSBjdXJzb3Igc3RpbGxcbiAgICogcG9pbnRzIGF0IHRoZSBwYXJlbnQsIHNvIGAudGFnKClgIHJlZnVzZXMgcmF0aGVyIHRoYW4gbWlzLWF0dHJpYnV0ZS4gQVxuICAgKiBsaW5lYXIgbW91bnQgKGBhZGRTdWJGbG93Q2hhcnROZXh0YCkgbW92ZXMgdGhlIGN1cnNvciwgc28gYC50YWcoKWAgd29ya3NcbiAgICogdGhlcmUgdG9vOyBkZWNsYXJlIGluIG9uZSBwbGFjZSwgbm90IGJvdGguXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYHR5cGVzY3JpcHRcbiAgICogLmFkZFNlbGVjdG9yRnVuY3Rpb24oJ1Nsb3RzJywgcGlja1Nsb3RzLCAnc2xvdHMnKVxuICAgKiAgIC5hZGRTdWJGbG93Q2hhcnRCcmFuY2goJ21lbW9yeScsIG1lbW9yeUNoYXJ0LCAnTWVtb3J5JywgeyB0YWdzOiBbJ3Nsb3Q6bWVtb3J5J10gfSlcbiAgICogICAuYWRkU3ViRmxvd0NoYXJ0QnJhbmNoKCd0b29scycsIHRvb2xzQ2hhcnQsICdUb29scycsIHsgdGFnczogWydzbG90OnRvb2xzJ10gfSlcbiAgICogLmVuZCgpXG4gICAqIGBgYFxuICAgKi9cbiAgdGFncz86IHJlYWRvbmx5IHN0cmluZ1tdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFN1YmZsb3dSZXN1bHQge1xuICBzdWJmbG93SWQ6IHN0cmluZztcbiAgc3ViZmxvd05hbWU6IHN0cmluZztcbiAgdHJlZUNvbnRleHQ6IHtcbiAgICAvKipcbiAgICAgKiBUaGUgc3ViZmxvdydzIGZpbmFsIHN0YXRlLiBUaGUgdHJhdmVyc2VyJ3MgcmVjb3JkIGhvbGRzIHRoZSBMSVZFIGhlYXBcbiAgICAgKiDigJQgd2hhdCBhIHBsYWluIGBnZXRTbmFwc2hvdCgpYCBhbmQgdGhlIGNoZWNrcG9pbnQgc2VlLiBVbmRlclxuICAgICAqIGBnZXRTbmFwc2hvdCh7IHJlZGFjdDogdHJ1ZSB9KWAgdGhlIGV4ZWN1dG9yIHNlcnZlcyB0aGUgc3ViZmxvdydzIG93blxuICAgICAqIHJlZGFjdGVkIG1pcnJvciBoZXJlIGluc3RlYWQgKDkuMjAuMDsgYGhhbmRsZXJzL3NlcnZlZFN1YmZsb3dSZXN1bHRzYCksXG4gICAgICogd2hpY2ggaXMgZXhhY3RseSB3aGF0IGBzdGF0ZUF0YCBmb2xkcyBgaGlzdG9yeWAgdG8uXG4gICAgICovXG4gICAgZ2xvYmFsQ29udGV4dDogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gICAgc3RhZ2VDb250ZXh0czogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gICAgaGlzdG9yeTogdW5rbm93bltdO1xuICAgIC8qKiBJZGVudGl0eSBvZiB0aGUgbG9jYWwgaGlzdG9yeSwgbm90IGl0cyBwYXJlbnQncyBsb2cuICovXG4gICAgcmVhZG9ubHkgbG9nQWRkcmVzcz86IExvZ0FkZHJlc3M7XG4gICAgLyoqXG4gICAgICogVGhlIHN1YmZsb3cncyBPV04gZm9sZCBiYXNlIOKAlCB0aGUgc3RhdGUgaXRzIGlzb2xhdGVkIHJ1bnRpbWUgc3RhcnRlZFxuICAgICAqIGZyb20sIGJlZm9yZSBpdHMgZmlyc3QgY29tbWl0LiBUaGUgc2libGluZyBvZlxuICAgICAqIGBSdW50aW1lU25hcHNob3QuaW5pdGlhbFN0YXRlYCwgY2FycmllZCBoZXJlIHNvIGEgc3ViZmxvdydzIGBoaXN0b3J5YFxuICAgICAqIGNhbiBiZSBmb2xkZWQgb2ZmbGluZSBleGFjdGx5IGxpa2UgdGhlIHJ1bidzIGxvZyAoYHN0YXRlQXRgLFxuICAgICAqIGB0aW1lVHJhdmVsKC4uLikuZHJpbGwobW91bnQpYCkuIEZyb3plbiBhbmQgZGV0YWNoZWQuXG4gICAgICpcbiAgICAgKiBOb3JtYWxseSBge31gOiBhIHN1YmZsb3cncyBgaW5wdXRNYXBwZXJgIHNlZWQgaXMgaXRzZWxmIHRoZSBmaXJzdFxuICAgICAqIENPTU1JVCBpbiBgaGlzdG9yeWAgKHRoZSByb290IGNvbnRleHQgY29tbWl0cyBpdCksIG5vdCBhIHByZS1ydW4gYmFzZS5cbiAgICAgKi9cbiAgICBpbml0aWFsU3RhdGU/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgfTtcbiAgcGFyZW50U3RhZ2VJZDogc3RyaW5nO1xuICBwaXBlbGluZVN0cnVjdHVyZT86IHVua25vd247XG59XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gU3ViZmxvdyBUcmF2ZXJzZXIgRmFjdG9yeVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbi8qKlxuICogU3ViZmxvd1RyYXZlcnNlckZhY3Rvcnkg4oCUIENyZWF0ZXMgYSBGbG93Y2hhcnRUcmF2ZXJzZXIgZm9yIHN1YmZsb3cgZXhlY3V0aW9uLlxuICpcbiAqIEluamVjdGVkIGludG8gU3ViZmxvd0V4ZWN1dG9yIHRvIGJyZWFrIHRoZSBjaXJjdWxhciBkZXBlbmRlbmN5OlxuICogRmxvd2NoYXJ0VHJhdmVyc2VyIOKGkiBTdWJmbG93RXhlY3V0b3Ig4oaSIEZsb3djaGFydFRyYXZlcnNlci5cbiAqXG4gKiBUaGUgZmFjdG9yeSBjYXB0dXJlcyBwYXJlbnQgdHJhdmVyc2VyIGNvbmZpZyAoc3RhZ2VNYXAsIHNjb3BlRmFjdG9yeSwgbmFycmF0aXZlLCBldGMuKVxuICogaW4gYSBjbG9zdXJlLiBTdWJmbG93RXhlY3V0b3IgY2FsbHMgaXQgd2l0aCBzdWJmbG93LXNwZWNpZmljIG92ZXJyaWRlcyAocm9vdCwgcnVudGltZSwgaW5wdXQpLlxuICogVGhlIHJldHVybmVkIHRyYXZlcnNlciB1c2VzIHRoZSBTQU1FIDctcGhhc2UgYWxnb3JpdGhtIGFzIHRoZSB0b3AtbGV2ZWwgdHJhdmVyc2VyLFxuICogc28gZGVjaWRlcnMsIHNlbGVjdG9ycywgbG9vcHMsIGxhenkgc3ViZmxvd3MsIGFuZCBhYm9ydCBzaWduYWxzIGFsbCB3b3JrIGluc2lkZSBzdWJmbG93cy5cbiAqL1xuZXhwb3J0IHR5cGUgU3ViZmxvd1RyYXZlcnNlckZhY3Rvcnk8VE91dCA9IGFueSwgVFNjb3BlID0gYW55PiA9IChvcHRpb25zOiB7XG4gIC8qKiBSb290IG5vZGUgb2YgdGhlIHN1YmZsb3cgKHdpdGggaXNTdWJmbG93Um9vdCBzdHJpcHBlZCkg4oCUIHRoZSBncmFwaCBldmVyeSBpZCBpbnNpZGUgdGhlIHN1YmZsb3cgcmVzb2x2ZXMgYWdhaW5zdC4gKi9cbiAgcm9vdDogU3RhZ2VOb2RlPFRPdXQsIFRTY29wZT47XG4gIC8qKlxuICAgKiBXaGVyZSB0aGUgc3ViZmxvdydzIHRyYXZlcnNhbCBzdGFydHMgd2hlbiBub3QgYXQgYHJvb3RgIOKAlCBhIHJlc3VtZSdzXG4gICAqIG9uZS1zaG90IHJlLWVudHJ5IChgUmVzdW1lSG9wLmVudHJ5YCk6IHRoZSBuZXh0IG1vdW50IG9uIHRoZSBwYXVzZSBwYXRoLFxuICAgKiBvciB0aGUgcGF1c2VkIHN0YWdlJ3Mgc3RhbmQtaW4sIGVhY2ggd2l0aCBpdHMgZGlzcGF0Y2hlcidzIGNvbnRpbnVhdGlvblxuICAgKiBhdHRhY2hlZC4gVmlzaXRlZCBvbmNlLCBmaXJzdDsgbmV2ZXIgcmVzb2x2YWJsZSBieSBpZC5cbiAgICovXG4gIGVudHJ5PzogU3RhZ2VOb2RlPFRPdXQsIFRTY29wZT47XG4gIC8qKlxuICAgKiBQYXJhbGxlbCBzaWJsaW5ncycgcGF1c2VzIHdhaXRpbmcgaW4gdGhpcyBzdWJmbG93IChgUmVzdW1lSG9wLnBlbmRpbmdQYXVzZXNgLFxuICAgKiA5LjI4LjApIOKAlCByYWlzZWQgaW4gb3JkZXIgb25jZSBgZW50cnlgJ3MgY2hhaW4gZW5kcy5cbiAgICovXG4gIHBlbmRpbmdQYXVzZXM/OiByZWFkb25seSBRdWV1ZWRQYXVzZVtdO1xuICAvKiogSXNvbGF0ZWQgZXhlY3V0aW9uIHJ1bnRpbWUgZm9yIHRoZSBzdWJmbG93LiAqL1xuICBleGVjdXRpb25SdW50aW1lOiBJRXhlY3V0aW9uUnVudGltZTtcbiAgLyoqIE1hcHBlZCBpbnB1dCBmcm9tIHBhcmVudCBzY29wZSAoYmVjb21lcyByZWFkT25seUNvbnRleHQgZm9yIHN0YWdlcykuICovXG4gIHJlYWRPbmx5Q29udGV4dD86IHVua25vd247XG4gIC8qKiBTdWJmbG93IGlkZW50aWZpZXIg4oCUIHVzZWQgYXMgYnJhbmNoUGF0aCBmb3IgbmFycmF0aXZlIGNvbnRleHQuICovXG4gIHN1YmZsb3dJZD86IHN0cmluZztcbiAgLyoqXG4gICAqIFJGQy0wMDMgRDE6IHJ1bnRpbWVTdGFnZUlkIG9mIHRoZSBzdWJmbG93IE1PVU5UIHN0YWdlIGluIHRoZSBwYXJlbnRcbiAgICogdHJhdmVyc2VyLiBCZWNvbWVzIHRoZSBgcGFyZW50UnVudGltZVN0YWdlSWRgIGZhbGxiYWNrIGZvciB0aGUgc3ViZmxvdydzXG4gICAqIHJvb3Qgc3RhZ2Ugc28gcnVudGltZSBhbmNlc3RvciBjaGFpbnMgY3Jvc3Mgc3ViZmxvdyBib3VuZGFyaWVzLlxuICAgKi9cbiAgcGFyZW50TW91bnRSdW50aW1lU3RhZ2VJZD86IHN0cmluZztcbn0pID0+IFN1YmZsb3dUcmF2ZXJzZXJIYW5kbGU8VE91dCwgVFNjb3BlPjtcblxuLyoqXG4gKiBIYW5kbGUgcmV0dXJuZWQgYnkgU3ViZmxvd1RyYXZlcnNlckZhY3RvcnkuXG4gKiBQcm92aWRlcyBleGVjdXRlKCkgKyBhY2Nlc3MgdG8gbmVzdGVkIHN1YmZsb3cgcmVzdWx0cy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTdWJmbG93VHJhdmVyc2VySGFuZGxlPFRPdXQgPSBhbnksIFRTY29wZSA9IGFueT4ge1xuICAvKiogRXhlY3V0ZSB0aGUgc3ViZmxvdydzIGdyYXBoIHVzaW5nIHRoZSBmdWxsIDctcGhhc2UgdHJhdmVyc2FsIGFsZ29yaXRobS4gKi9cbiAgZXhlY3V0ZSgpOiBQcm9taXNlPFRyYXZlcnNhbFJlc3VsdD47XG4gIC8qKiBDb2xsZWN0IG5lc3RlZCBzdWJmbG93IHJlc3VsdHMgKGZyb20gc3ViZmxvd3MgbW91bnRlZCBpbnNpZGUgdGhpcyBzdWJmbG93KS4gKi9cbiAgZ2V0U3ViZmxvd1Jlc3VsdHMoKTogTWFwPHN0cmluZywgU3ViZmxvd1Jlc3VsdD47XG4gIC8qKlxuICAgKiBGaW5hbCBicmVhayBzdGF0ZSBvZiB0aGUgc3ViZmxvdyBhZnRlciBgZXhlY3V0ZSgpYCByZXR1cm5zLlxuICAgKlxuICAgKiAgIC0gYHNob3VsZEJyZWFrOiB0cnVlYCAg4oaSIGEgc3RhZ2UgaW5zaWRlIHRoZSBzdWJmbG93IGNhbGxlZFxuICAgKiAgICAgYHNjb3BlLiRicmVhayhyZWFzb24pYCwgc3RvcHBpbmcgdGhlIHN1YmZsb3cncyBvd24gdHJhdmVyc2FsLlxuICAgKiAgIC0gYHJlYXNvbmAgICAgICAgICAgICAg4oaSIHRoZSBvcHRpb25hbCBzdHJpbmcgcGFzc2VkIHRvIGAkYnJlYWtgLlxuICAgKlxuICAgKiBVc2VkIGJ5IGBTdWJmbG93RXhlY3V0b3JgIHRvIGltcGxlbWVudCBgU3ViZmxvd01vdW50T3B0aW9ucy5wcm9wYWdhdGVCcmVha2A6XG4gICAqIGlmIHRoZSBtb3VudCBvcHRzIGluIEFORCB0aGUgc3ViZmxvdyBicm9rZSwgdGhlIHBhcmVudCdzIGJyZWFrIGZsYWcgaXNcbiAgICogZm9yd2FyZGVkLlxuICAgKi9cbiAgZ2V0QnJlYWtTdGF0ZSgpOiB7IHNob3VsZEJyZWFrOiBib29sZWFuOyByZWFzb24/OiBzdHJpbmcgfTtcbn1cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBFeGVjdXRpb24gUnVudGltZSBJbnRlcmZhY2Vcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4vKipcbiAqIElFeGVjdXRpb25SdW50aW1lIOKAlCBJbnRlcmZhY2UgZm9yIHRoZSBydW50aW1lIGVudmlyb25tZW50LlxuICpcbiAqIERlZmluZXMgdGhlIGNvbnRyYWN0IHRoYXQgZW5naW5lIGhhbmRsZXJzIG5lZWQgZnJvbSB0aGUgcnVubmVyIGxheWVyLFxuICogYXZvaWRpbmcgY2lyY3VsYXIgaW1wb3J0cyBiZXR3ZWVuIGVuZ2luZS8gYW5kIHJ1bm5lci8uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSUV4ZWN1dGlvblJ1bnRpbWUge1xuICBnbG9iYWxTdG9yZTogeyBnZXRTdGF0ZSgpOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB9O1xuICAvKipcbiAgICogVGhlIHJlZGFjdGVkIG1pcnJvciBvZiBgZ2xvYmFsU3RvcmVgIOKAlCBwcmVzZW50IHdoZW4gdGhlIHJ1bidzIHBvbGljeVxuICAgKiBrZWVwcyBvbmUgKGBSdW5Qb2xpY3kubWlycm9yYDogYSBydW4gd2l0aCBhIHJlZGFjdGlvbiBwb2xpY3kpLCBlbHNlIGFic2VudC5cbiAgICogYFN1YmZsb3dFeGVjdXRvcmAgcmVhZHMgaXQgdG8gc2VydmUgYSBzdWJmbG93J3Mgc3RhdGUgKDkuMjAuMCkuXG4gICAqL1xuICByZWRhY3RlZFN0b3JlPzogU2hhcmVkTWVtb3J5O1xuICByb290U3RhZ2VDb250ZXh0OiBTdGFnZUNvbnRleHQ7XG4gIGV4ZWN1dGlvbkhpc3Rvcnk6IHsgbGlzdCgpOiB1bmtub3duW10gfTtcbiAgLyoqXG4gICAqIEEgZnJlc2ggcm9vdCBmcmFtZSBvbiB0aGlzIHJ1bnRpbWUg4oCUIGl0cyBzdG9yZSwgaXRzIGxvZywgdGhlIHJ1bidzIHBvbGljeVxuICAgKiBhbmQgbWlycm9yIChgRXhlY3V0aW9uUnVudGltZS5uZXdSb290YCkuIGBTdWJmbG93RXhlY3V0b3JgIHN3YXBzIGFcbiAgICogc3ViZmxvdydzIHNlZWQgZnJhbWUgZm9yIHRoZSBmcmFtZSBpdHMgZmlyc3Qgc3RhZ2UgcnVucyBvbiB3aXRoIGl0LlxuICAgKi9cbiAgbmV3Um9vdChuYW1lOiBzdHJpbmcsIGlkOiBzdHJpbmcpOiBTdGFnZUNvbnRleHQ7XG4gIGdldFNuYXBzaG90KG9wdGlvbnM/OiB7IHJlZGFjdD86IGJvb2xlYW4gfSk6IHtcbiAgICBzaGFyZWRTdGF0ZTogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gICAgZXhlY3V0aW9uVHJlZTogdW5rbm93bjtcbiAgICAvKiogVGhlIGNvbW1pdCBsb2cncyBmb2xkIGJhc2Ug4oCUIHNlZSBgUnVudGltZVNuYXBzaG90LmluaXRpYWxTdGF0ZWAuICovXG4gICAgaW5pdGlhbFN0YXRlPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gICAgY29tbWl0TG9nOiB1bmtub3duW107XG4gICAgcmVhZG9ubHkgbG9nQWRkcmVzcz86IExvZ0FkZHJlc3M7XG4gICAgLyoqIER1YWwta2V5ZWQgYnkgc3ViZmxvdyBwYXRoIChsYXN0IGl0ZXJhdGlvbikgQU5EIHBlci1leGVjdXRpb24gbW91bnQgcnVudGltZVN0YWdlSWRcbiAgICAgKiAgKGVhY2ggaXRlcmF0aW9uKSDigJQgc2VlIFJ1bnRpbWVTbmFwc2hvdC5zdWJmbG93UmVzdWx0cyAvIHN1YmZsb3ctY29tbWl0LXZpc2liaWxpdHkuICovXG4gICAgc3ViZmxvd1Jlc3VsdHM/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgICByZWNvcmRlcnM/OiBBcnJheTx7IGlkOiBzdHJpbmc7IG5hbWU6IHN0cmluZzsgZGF0YTogdW5rbm93biB9PjtcbiAgfTtcbiAgc2V0Um9vdE9iamVjdChwYXRoOiBzdHJpbmdbXSwga2V5OiBzdHJpbmcsIHZhbHVlOiB1bmtub3duKTogdm9pZDtcbiAgZ2V0UGlwZWxpbmVzKCk6IHN0cmluZ1tdO1xufVxuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIEV4ZWN1dGlvbiBFbnZpcm9ubWVudCDigJQgcmVhZC1vbmx5LCBwcm9wYWdhdGVzIHRocm91Z2ggbmVzdGVkIGV4ZWN1dG9yc1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbi8qKlxuICogRXhlY3V0aW9uRW52IOKAlCBpbmZyYXN0cnVjdHVyZSB2YWx1ZXMgdGhhdCBwcm9wYWdhdGUgdGhyb3VnaCBuZXN0ZWQgZXhlY3V0b3JzLlxuICpcbiAqIExpa2UgYHByb2Nlc3MuZW52YCBmb3IgZmxvd2NoYXJ0czogcmVhZC1vbmx5LCBpbmhlcml0ZWQgYnkgY2hpbGQgZXhlY3V0b3JzLFxuICogaW5mcmFzdHJ1Y3R1cmUtb25seSAobm90IGJ1c2luZXNzIGxvZ2ljKS5cbiAqXG4gKiBMaXRtdXMgdGVzdDogQ3JlYXRlZCBleHRlcm5hbCB0byB0aGUgZmxvd2NoYXJ0ICsgcGFzc2VkIGluIGZvciBleGVjdXRpb24gPSBlbnYuXG4gKiBCdXNpbmVzcyBjb25maWcgZm9yIGEgc3BlY2lmaWMgZmxvd2NoYXJ0ID0gYXJncyAoZ2V0QXJncygpKS5cbiAqXG4gKiBJbnRlbnRpb25hbGx5IGEgY2xvc2VkIHR5cGUg4oCUIG5vdCBleHRlbnNpYmxlIHRvIHByZXZlbnQgY291cGxpbmcgYmV0d2VlblxuICogcGFyZW50IGFuZCBjaGlsZCBmbG93Y2hhcnRzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEV4ZWN1dGlvbkVudiB7XG4gIC8qKiBBYm9ydFNpZ25hbCBmb3IgY29vcGVyYXRpdmUgY2FuY2VsbGF0aW9uIGFjcm9zcyBuZXN0ZWQgZXhlY3V0b3JzLiAqL1xuICByZWFkb25seSBzaWduYWw/OiBBYm9ydFNpZ25hbDtcbiAgLyoqIFRpbWVvdXQgYnVkZ2V0IGluIG1pbGxpc2Vjb25kcy4gKi9cbiAgcmVhZG9ubHkgdGltZW91dE1zPzogbnVtYmVyO1xuICAvKiogVHJhY2UgaWRlbnRpZmllciBmb3IgZGlzdHJpYnV0ZWQgdHJhY2luZyAvIG9ic2VydmFiaWxpdHkuICovXG4gIHJlYWRvbmx5IHRyYWNlSWQ/OiBzdHJpbmc7XG59XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gSGFuZGxlciBEZXBlbmRlbmNpZXMgKERJIGJhZykg4oCUIHdhcyBQaXBlbGluZUNvbnRleHRcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4vKipcbiAqIEhhbmRsZXJEZXBzIOKAlCBEZXBlbmRlbmN5IGluamVjdGlvbiBiYWcgcGFzc2VkIHRvIGFsbCBoYW5kbGVyIG1vZHVsZXMuXG4gKlxuICogUHJvdmlkZXMgc2hhcmVkIHN0YXRlIChzdGFnZU1hcCwgcnVudGltZSwgc2NvcGVGYWN0b3J5LCBldGMuKSB3aXRob3V0XG4gKiBoYW5kbGVycyBuZWVkaW5nIHRvIGltcG9ydCB0aGUgdHJhdmVyc2VyIGRpcmVjdGx5LiBBdm9pZHMgY2lyY3VsYXIgZGVwcy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBIYW5kbGVyRGVwczxUT3V0ID0gYW55LCBUU2NvcGUgPSBhbnk+IHtcbiAgc3RhZ2VNYXA6IE1hcDxzdHJpbmcsIFN0YWdlRnVuY3Rpb248VE91dCwgVFNjb3BlPj47XG4gIHJvb3Q6IFN0YWdlTm9kZTxUT3V0LCBUU2NvcGU+O1xuICBleGVjdXRpb25SdW50aW1lOiBJRXhlY3V0aW9uUnVudGltZTtcbiAgc2NvcGVGYWN0b3J5OiBTY29wZUZhY3Rvcnk8VFNjb3BlPjtcbiAgc3ViZmxvd3M/OiBSZWNvcmQ8c3RyaW5nLCB7IHJvb3Q6IFN0YWdlTm9kZTxUT3V0LCBUU2NvcGU+IH0+O1xuICB0aHJvdHRsaW5nRXJyb3JDaGVja2VyPzogKGVycm9yOiB1bmtub3duKSA9PiBib29sZWFuO1xuICBzdHJlYW1IYW5kbGVycz86IFN0cmVhbUhhbmRsZXJzO1xuICBzY29wZVByb3RlY3Rpb25Nb2RlOiBTY29wZVByb3RlY3Rpb25Nb2RlO1xuICByZWFkT25seUNvbnRleHQ/OiB1bmtub3duO1xuICAvKiogRXhlY3V0aW9uIGVudmlyb25tZW50IOKAlCBwcm9wYWdhdGVzIHRvIHN1YmZsb3dzIGF1dG9tYXRpY2FsbHkuICovXG4gIGV4ZWN1dGlvbkVudj86IEV4ZWN1dGlvbkVudjtcbiAgbmFycmF0aXZlR2VuZXJhdG9yOiBJQ29udHJvbEZsb3dOYXJyYXRpdmU7XG4gIGxvZ2dlcjogSUxvZ2dlcjtcbiAgc2lnbmFsPzogQWJvcnRTaWduYWw7XG4gIC8qKlxuICAgKiBUaGUgcmVzdW1lJ3Mgb25lLXNob3QgcmUtZW50cnkgKE0yKSDigJQgc2hhcmVkIGJ5IHJlZmVyZW5jZSB3aXRoIGV2ZXJ5XG4gICAqIG5lc3RlZCB0cmF2ZXJzZXIsIGxpa2UgdGhlIGV4ZWN1dGlvbiBjb3VudGVyLiBgU3ViZmxvd0V4ZWN1dG9yYCBhc2tzIGl0XG4gICAqIGF0IGVhY2ggc3ViZmxvdyBlbnRyeTogdGhlIEZJUlNUIGVudHJ5IGludG8gYSBzdWJmbG93IG9uIHRoZSBwYXVzZSBwYXRoXG4gICAqIHRha2VzIHRoYXQgc3ViZmxvdydzIGNhcHR1cmVkIHN0YXRlIChzZWVkaW5nIHRoZSBuZXN0ZWQgcnVudGltZSBpbiBwbGFjZVxuICAgKiBvZiB0aGUgaW5wdXRNYXBwZXIncyB2YWx1ZXMg4oCUIHRoZSBtYXBwZXIgc3RpbGwgcnVucyBmb3IgdGhlIHJlYWQtb25seVxuICAgKiBhcmdzKSwgaXRzIGVudHJ5IHBvaW50IGFuZCBhbnkgc2libGluZyBwYXVzZXMgd2FpdGluZyB0aGVyZTsgZXZlcnkgbGF0ZXJcbiAgICogZW50cnkgaXMgYW4gb3JkaW5hcnkgb25lLiBTZWUgYFJlc3VtZUVudHJ5YC4gVW5kZWZpbmVkIG9uIG5vcm1hbCBgcnVuKClgXG4gICAqIHBhdGhzLlxuICAgKi9cbiAgcmVzdW1lPzogUmVzdW1lRW50cnk8VE91dCwgVFNjb3BlPjtcbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIHNpbmNlIDkuMjguMCDigJQgdGhlIGVuZ2luZSBwbGFucyBhIHJlc3VtZSB3aXRoIHtAbGluayByZXN1bWV9LlxuICAgKiBTdGlsbCBob25vdXJlZCwgdW5kZXIgdGhlIHNhbWUgb25lLXNob3QgbGF3OiBlYWNoIGNhcHR1cmUgKGtleWVkIGJ5XG4gICAqIHBhdGgtcHJlZml4ZWQgYHN1YmZsb3dJZGApIHNlZWRzIG9ubHkgdGhlIEZJUlNUIGVudHJ5IGludG8gaXRzIHN1YmZsb3csXG4gICAqIGluIHBsYWNlIG9mIHRoZSBpbnB1dE1hcHBlcidzIHZhbHVlczsgbGF0ZXIgZW50cmllcyBhcmUgb3JkaW5hcnkuXG4gICAqIElnbm9yZWQgd2hlbiBgcmVzdW1lYCBpcyBzZXQuXG4gICAqL1xuICBzdWJmbG93U3RhdGVzRm9yUmVzdW1lPzogUmVjb3JkPHN0cmluZywgUmVjb3JkPHN0cmluZywgdW5rbm93bj4+O1xufVxuXG4vKiogT3B0aW9ucyBmb3IgRmxvd0NoYXJ0RXhlY3V0b3IucnVuKCkuICovXG5leHBvcnQgaW50ZXJmYWNlIFJ1bk9wdGlvbnMge1xuICAvKiogQWJvcnRTaWduYWwgZm9yIGNvb3BlcmF0aXZlIGNhbmNlbGxhdGlvbi4gKi9cbiAgc2lnbmFsPzogQWJvcnRTaWduYWw7XG4gIC8qKiBUaW1lb3V0IGluIG1pbGxpc2Vjb25kcy4gQ3JlYXRlcyBhbiBpbnRlcm5hbCBBYm9ydENvbnRyb2xsZXIuICovXG4gIHRpbWVvdXRNcz86IG51bWJlcjtcbiAgLyoqXG4gICAqIFJ1bnRpbWUgaW5wdXQgZGF0YSBmb3IgdGhlIHBpcGVsaW5lLlxuICAgKiBCZWNvbWVzIHRoZSByZWFkT25seUNvbnRleHQgYWNjZXNzaWJsZSB2aWEgYHNjb3BlLmdldEFyZ3MoKWAuXG4gICAqIFN0YWdlcyBjYW5ub3Qgb3ZlcndyaXRlIHRoZXNlIGtleXMgd2l0aCBgc2V0VmFsdWUoKWAuXG4gICAqL1xuICBpbnB1dD86IHVua25vd247XG4gIC8qKlxuICAgKiBFeGVjdXRpb24gZW52aXJvbm1lbnQg4oCUIHJlYWQtb25seSBpbmZyYXN0cnVjdHVyZSB2YWx1ZXMgdGhhdCBwcm9wYWdhdGVcbiAgICogdGhyb3VnaCBuZXN0ZWQgZXhlY3V0b3JzIChsaWtlIGBwcm9jZXNzLmVudmAgZm9yIGZsb3djaGFydHMpLlxuICAgKiBBY2Nlc3NpYmxlIHZpYSBgc2NvcGUuZ2V0RW52KClgLiBJbmhlcml0ZWQgYnkgc3ViZmxvd3MgYXV0b21hdGljYWxseS5cbiAgICovXG4gIGVudj86IEV4ZWN1dGlvbkVudjtcbiAgLyoqXG4gICAqIE92ZXJyaWRlIHRoZSBtYXhpbXVtIG5lc3RlZCBgZXhlY3V0ZU5vZGVgIGRlcHRoIGZvciB0aGlzIHJ1bi5cbiAgICogRGVmYXVsdHMgdG8gYEZsb3djaGFydFRyYXZlcnNlci5NQVhfRVhFQ1VURV9ERVBUSGAgKDUwMCkuXG4gICAqXG4gICAqIERlcHRoIGNvdW50cyBUUkVFIG5lc3Rpbmcgb25seSDigJQgZm9yayBjaGlsZHJlbiwgZGVjaWRlci9zZWxlY3RvciBicmFuY2hcbiAgICogZGlzcGF0Y2gsIHJlY3Vyc2l2ZSBjb21wb3NpdGlvbi4gTGluZWFyIGNoYWlucyBhbmQgbG9vcCBpdGVyYXRpb25zIHJ1blxuICAgKiBvbiBhIGZsYXQgdHJhbXBvbGluZSBhbmQgbmV2ZXIgY29uc3VtZSBkZXB0aCwgc28gdGhpcyByYXJlbHkgbmVlZHNcbiAgICogcmFpc2luZy4gTXVzdCBiZSA+PSAxLlxuICAgKi9cbiAgbWF4RGVwdGg/OiBudW1iZXI7XG4gIC8qKlxuICAgKiBPdmVycmlkZSB0aGUgbWF4aW11bSBsb29wIGl0ZXJhdGlvbnMgcGVyIG5vZGUgZm9yIHRoaXMgcnVuICh0aGVcbiAgICogYENvbnRpbnVhdGlvblJlc29sdmVyYCBpbmZpbml0ZS1sb29wIGd1YXJkKS4gRGVmYXVsdHMgdG8gMTAwMC5cbiAgICogVGhpcyBpcyB0aGUgYmluZGluZyBjb25zdHJhaW50IGZvciBsb29wLWhlYXZ5IHBpcGVsaW5lcyDigJQgcmFpc2UgaXQgZm9yXG4gICAqIGxlZ2l0aW1hdGVseSBsb25nIGxvb3BzIChgbG9vcFRvYCBjaGFpbnMgcnVuIHdpdGggYSBmbGF0IHN0YWNrLCBzbyBoaWdoXG4gICAqIHZhbHVlcyBhcmUgc2FmZTsgbWVtb3J5IGZvciBzdGF0ZS9uYXJyYXRpdmUgc3RpbGwgZ3Jvd3MgcGVyIGl0ZXJhdGlvbikuXG4gICAqIEFsc28gYm91bmRzIHRoZSBydW4tdG90YWwgY2hhaW4gb2YgZnVuY3Rpb24tYmVhcmluZyBkeW5hbWljIGBuZXh0YFxuICAgKiBjb250aW51YXRpb25zIChmcmVzaCBub2RlcyByZXR1cm5lZCBmcm9tIHN0YWdlcykg4oCUIGEgcnVuYXdheSBkeW5hbWljXG4gICAqIGNoYWluIGVycm9ycyBpbnN0ZWFkIG9mIHJ1bm5pbmcgZm9yZXZlci5cbiAgICogUHJvcGFnYXRlcyB0byBzdWJmbG93cy4gTXVzdCBiZSA+PSAxLlxuICAgKi9cbiAgbWF4SXRlcmF0aW9ucz86IG51bWJlcjtcbn1cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBGbG93IENvbnRyb2wgTmFycmF0aXZlIOKAlCBjYW5vbmljYWwgZGVmaW5pdGlvbnMgbGl2ZSBpbiBtZW1vcnkvdHlwZXMudHNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5leHBvcnQgdHlwZSB7IEZsb3dDb250cm9sVHlwZSwgRmxvd01lc3NhZ2UgfTtcblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBSdW50aW1lIFN0cnVjdHVyZSBNZXRhZGF0YSAodXNlZCBieSBSdW50aW1lU3RydWN0dXJlTWFuYWdlcilcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5leHBvcnQgaW50ZXJmYWNlIFJ1bnRpbWVTdHJ1Y3R1cmVNZXRhZGF0YSB7XG4gIHR5cGU6ICdzdGFnZScgfCAnZGVjaWRlcicgfCAnc2VsZWN0b3InIHwgJ2ZvcmsnIHwgJ3N0cmVhbWluZycgfCAnc3ViZmxvdycgfCAnbG9vcCc7XG4gIHN1YmZsb3dJZD86IHN0cmluZztcbiAgaXNTdWJmbG93Um9vdD86IGJvb2xlYW47XG4gIHN1YmZsb3dOYW1lPzogc3RyaW5nO1xuICAvKiogVHJ1ZSBmb3IgYW4gYGFkZFBhcmFsbGVsRm9yRWFjaGAgZmFuLW91dCAodHlwZSBzdGF5cyBgJ2ZvcmsnYCkuICovXG4gIGlzRHluYW1pY1BhcmFsbGVsPzogYm9vbGVhbjtcbiAgaXNQYXJhbGxlbENoaWxkPzogYm9vbGVhbjtcbiAgcGFyYWxsZWxHcm91cElkPzogc3RyaW5nO1xuICBsb29wVGFyZ2V0Pzogc3RyaW5nO1xuICBpc0R5bmFtaWM/OiBib29sZWFuO1xuICBpc0xvb3BSZWZlcmVuY2U/OiBib29sZWFuO1xuICBzdHJlYW1JZD86IHN0cmluZztcbn1cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBOb2RlIFJlc3VsdFxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbmV4cG9ydCB0eXBlIE5vZGVSZXN1bHRUeXBlID0ge1xuICBpZDogc3RyaW5nO1xuICByZXN1bHQ6IHVua25vd247XG4gIGlzRXJyb3I/OiBib29sZWFuO1xufTtcblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBFeGVjdXRpb24gUmVzcG9uc2Vcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5leHBvcnQgdHlwZSBCcmFuY2hSZXN1bHQgPSB7XG4gIHJlc3VsdDogc3RyaW5nIHwgRXJyb3I7XG4gIGlzRXJyb3I6IGJvb2xlYW47XG59O1xuXG5leHBvcnQgdHlwZSBCcmFuY2hSZXN1bHRzID0geyBbYnJhbmNoSWQ6IHN0cmluZ106IEJyYW5jaFJlc3VsdCB9O1xuZXhwb3J0IHR5cGUgVHJhdmVyc2FsUmVzdWx0ID0gQnJhbmNoUmVzdWx0cyB8IHN0cmluZyB8IEVycm9yO1xuXG4vKiogUmV0dXJuZWQgYnkgcnVuKCkvcmVzdW1lKCkgd2hlbiBleGVjdXRpb24gcGF1c2VzLiAqL1xuZXhwb3J0IHR5cGUgUGF1c2VkUmVzdWx0ID0ge1xuICByZWFkb25seSBwYXVzZWQ6IHRydWU7XG4gIHJlYWRvbmx5IGNoZWNrcG9pbnQ6IGltcG9ydCgnLi4vcGF1c2UvdHlwZXMuanMnKS5GbG93Y2hhcnRDaGVja3BvaW50O1xufTtcblxuLyoqIEZ1bGwgcmV0dXJuIHR5cGUgb2YgRmxvd0NoYXJ0RXhlY3V0b3IucnVuKCkgYW5kIHJlc3VtZSgpLiAqL1xuZXhwb3J0IHR5cGUgRXhlY3V0b3JSZXN1bHQgPSBUcmF2ZXJzYWxSZXN1bHQgfCBQYXVzZWRSZXN1bHQ7XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gU2VyaWFsaXplZCBQaXBlbGluZSBTdHJ1Y3R1cmUgKGZvciB2aXN1YWxpemF0aW9uKVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbmV4cG9ydCBpbnRlcmZhY2UgU2VyaWFsaXplZFBpcGVsaW5lTm9kZSB7XG4gIG5hbWU6IHN0cmluZztcbiAgaWQ6IHN0cmluZztcbiAgdHlwZT86XG4gICAgfCAnc3RhZ2UnXG4gICAgfCAnZGVjaWRlcidcbiAgICB8ICdzZWxlY3RvcidcbiAgICB8ICdmb3JrJ1xuICAgIHwgJ3N0cmVhbWluZydcbiAgICB8ICdzdWJmbG93J1xuICAgIHwgJ2xvb3AnXG4gICAgfCAndXNlcidcbiAgICB8ICd0b29sJ1xuICAgIHwgJ2Z1bmN0aW9uJ1xuICAgIHwgJ3NlcXVlbmNlJztcbiAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gIGNoaWxkcmVuPzogU2VyaWFsaXplZFBpcGVsaW5lTm9kZVtdO1xuICBuZXh0PzogU2VyaWFsaXplZFBpcGVsaW5lTm9kZTtcbiAgYnJhbmNoZXM/OiBSZWNvcmQ8c3RyaW5nLCBTZXJpYWxpemVkUGlwZWxpbmVOb2RlPjtcbiAgaGFzRGVjaWRlcj86IGJvb2xlYW47XG4gIGhhc1NlbGVjdG9yPzogYm9vbGVhbjtcbiAgaGFzU3VidHJlZT86IGJvb2xlYW47XG4gIGlzU3RyZWFtaW5nPzogYm9vbGVhbjtcbiAgc3RyZWFtSWQ/OiBzdHJpbmc7XG4gIGlzU3ViZmxvd1Jvb3Q/OiBib29sZWFuO1xuICBzdWJmbG93SWQ/OiBzdHJpbmc7XG4gIHN1YmZsb3dOYW1lPzogc3RyaW5nO1xuICBsb29wVGFyZ2V0Pzogc3RyaW5nO1xuICBpc0xvb3BSZWZlcmVuY2U/OiBib29sZWFuO1xuICBpc1BhcmFsbGVsQ2hpbGQ/OiBib29sZWFuO1xuICBwYXJhbGxlbEdyb3VwSWQ/OiBzdHJpbmc7XG4gIGlzRHluYW1pYz86IGJvb2xlYW47XG4gIC8qKiBXaGVuIHRydWUsIHRoaXMgc3RhZ2UgY2FuIHBhdXNlIGV4ZWN1dGlvbiAoUGF1c2FibGVIYW5kbGVyIHBhdHRlcm4pLiAqL1xuICBpc1BhdXNhYmxlPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFRydWUgZm9yIGFuIGBhZGRQYXJhbGxlbEZvckVhY2hgIGZhbi1vdXQg4oCUIGJyYW5jaCBDT1VOVCBkZWNpZGVkIGF0IHJ1bnRpbWVcbiAgICogZnJvbSB0aGUgcGF5bG9hZC4gQSBmbGFnLCBub3QgYSB0eXBlOiBgdHlwZWAgc3RheXMgYCdmb3JrJ2Agc28gZXZlcnlcbiAgICogZXhpc3RpbmcgY29uc3VtZXIgcmVuZGVycyBpdCBjb3JyZWN0bHkgKGl0IElTIGEgZmFuLW91dCksIGFuZCBhIGNvbnN1bWVyXG4gICAqIHRoYXQgd2FudHMgdG8gc2F5IFwib25lIGJyYW5jaCBwZXIgaXRlbVwiIGNhbiByZWFkIHRoaXMuXG4gICAqL1xuICBpc0R5bmFtaWNQYXJhbGxlbD86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBUb3RhbCBhdHRlbXB0cyB0aGlzIHN0YWdlJ3MgZnVuY3Rpb24gbWF5IHJ1biwgZnJvbSBpdHMgZGVjbGFyZWRcbiAgICoge0BsaW5rIFJldHJ5UG9saWN5fS4gUHJlc2VudCBvbmx5IHdoZW4gYSBwb2xpY3kgd2FzIGRlY2xhcmVkLiBUaGUgQ09VTlRcbiAgICogb25seSDigJQgYGJhY2tvZmZNc2AgYW5kIGByZXRyeU9uYCBjYW4gYmUgZnVuY3Rpb25zLCB3aGljaCBhIEpTT04tc2FmZSBzcGVjXG4gICAqIGNhbm5vdCBjYXJyeS5cbiAgICovXG4gIHJldHJ5QXR0ZW1wdHM/OiBudW1iZXI7XG4gIC8qKlxuICAgKiBEZWNsYXJlZCB0YWdzICg5LjIxLjApIOKAlCB0aGUgbmFtZXMgdGhlIGF1dGhvciBwdXQgb24gdGhpcyBzdGFnZSBhdCBidWlsZFxuICAgKiB0aW1lLCBjb3BpZWQgYXMtaXMuIEZyZWUgc3RyaW5nczsgZm9vdHByaW50anMgYXNzaWducyB0aGVtIG5vIG1lYW5pbmcuXG4gICAqIEFic2VudCB3aGVuIHRoZSBzdGFnZSBkZWNsYXJlcyBub25lLlxuICAgKi9cbiAgdGFncz86IHJlYWRvbmx5IHN0cmluZ1tdO1xufVxuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIEZsb3dDaGFydCBpcyBkZWZpbmVkIGluIGAuLi9idWlsZGVyL3R5cGVzLnRzYC4gVGhlIGVuZ2luZSBsYXllciBjb25zdW1lcyBpdFxuLy8gdmlhIGltcG9ydCBmcm9tIHRoZXJlLiBBIGR1cGxpY2F0ZSBtaW5pbWFsIGRlZmluaXRpb24gcHJldmlvdXNseSBsaXZlZCBoZXJlXG4vLyBhbmQgY2F1c2VkIFRTIGNvbmZ1c2lvbiBhdCBjb21wb3NpdGlvbiBib3VuZGFyaWVzIChDb21wb3NhYmxlUnVubmVyIHZzXG4vLyBhZGRTdWJGbG93Q2hhcnQgcGFyYW1ldGVyKS4gU2luZ2xlIHNvdXJjZSBvZiB0cnV0aCBub3cgbGl2ZXMgaW4gYnVpbGRlci8uXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuLyoqIEFsaWFzIGZvciBTZXJpYWxpemVkUGlwZWxpbmVOb2RlIHVzZWQgYXMgZnVsbCBzdHJ1Y3R1cmUgKi9cbmV4cG9ydCB0eXBlIFNlcmlhbGl6ZWRQaXBlbGluZVN0cnVjdHVyZSA9IFNlcmlhbGl6ZWRQaXBlbGluZU5vZGUgJiB7XG4gIGJyYW5jaElkcz86IHN0cmluZ1tdO1xuICBzdWJmbG93U3RydWN0dXJlPzogU2VyaWFsaXplZFBpcGVsaW5lU3RydWN0dXJlO1xuICBpdGVyYXRpb25Db3VudD86IG51bWJlcjtcbn07XG4iXX0=
|
|
30
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL2VuZ2luZS90eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7R0FLRztBQWlCSCxPQUFPLEVBQUUsYUFBYSxFQUFFLGFBQWEsRUFBRSxXQUFXLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQWU5RSxvQ0FBb0M7QUFDcEMsd0RBQXdEO0FBQ3hELE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBWTtJQUNwQyxJQUFJLEVBQUUsQ0FBQyxPQUFhLEVBQUUsR0FBRyxJQUFXLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLEdBQUcsSUFBSSxDQUFDO0lBQ3ZFLEdBQUcsRUFBRSxDQUFDLE9BQWEsRUFBRSxHQUFHLElBQVcsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsR0FBRyxJQUFJLENBQUM7SUFDckUsS0FBSyxFQUFFLENBQUMsT0FBYSxFQUFFLEdBQUcsSUFBVyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxHQUFHLElBQUksQ0FBQztJQUN6RSxLQUFLLEVBQUUsQ0FBQyxPQUFhLEVBQUUsR0FBRyxJQUFXLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLEdBQUcsSUFBSSxDQUFDO0lBQ3pFLElBQUksRUFBRSxDQUFDLE9BQWEsRUFBRSxHQUFHLElBQVcsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsR0FBRyxJQUFJLENBQUM7Q0FDeEUsQ0FBQztBQXVLRiw4RUFBOEU7QUFDOUUsVUFBVTtBQUNWLDhFQUE4RTtBQUU5RTs7R0FFRztBQUNILE1BQU0sQ0FBTixJQUFZLGNBS1g7QUFMRCxXQUFZLGNBQWM7SUFDeEIsd0ZBQXdGO0lBQ3hGLG1DQUFpQixDQUFBO0lBQ2pCLHlFQUF5RTtJQUN6RSxxQ0FBbUIsQ0FBQTtBQUNyQixDQUFDLEVBTFcsY0FBYyxLQUFkLGNBQWMsUUFLekIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIHR5cGVzLnRzIOKAlCBBbGwgdHlwZSBkZWZpbml0aW9ucyBmb3IgdGhlIGVuZ2luZSBsaWJyYXJ5LlxuICpcbiAqIENlbnRyYWxpemVzIHR5cGUgZGVmaW5pdGlvbnMgdG8gYXZvaWQgY2lyY3VsYXIgZGVwZW5kZW5jaWVzLlxuICogRXZlcnkgaGFuZGxlciByZWNlaXZlcyBIYW5kbGVyRGVwcyAodGhlIERJIGJhZykgaW5zdGVhZCBvZiBpbXBvcnRpbmcgdGhlIHRyYXZlcnNlci5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7IExvZ0FkZHJlc3MgfSBmcm9tICdmb290dHJhY2UnO1xuaW1wb3J0IHR5cGUgeyBTaGFyZWRNZW1vcnkgfSBmcm9tICdmb290dHJhY2Uvd3JpdGUnO1xuXG5pbXBvcnQgdHlwZSB7IEZsb3dDb250cm9sVHlwZSwgRmxvd01lc3NhZ2UgfSBmcm9tICcuLi9tZW1vcnkvZnJhbWVUeXBlcy5qcyc7XG5pbXBvcnQgdHlwZSB7IFN0YWdlQ29udGV4dCB9IGZyb20gJy4uL21lbW9yeS9TdGFnZUNvbnRleHQuanMnO1xuaW1wb3J0IHR5cGUgeyBTY29wZVByb3RlY3Rpb25Nb2RlIH0gZnJvbSAnLi4vc2NvcGUvcHJvdGVjdGlvbi90eXBlcy5qcyc7XG5pbXBvcnQgdHlwZSB7IERlY2lkZXIsIFNlbGVjdG9yLCBTdGFnZU5vZGUgfSBmcm9tICcuL2dyYXBoL1N0YWdlTm9kZS5qcyc7XG5pbXBvcnQgdHlwZSB7IFF1ZXVlZFBhdXNlLCBSZXN1bWVFbnRyeSB9IGZyb20gJy4vaGFuZGxlcnMvUmVzdW1lRW50cnkuanMnO1xuaW1wb3J0IHR5cGUgeyBJQ29udHJvbEZsb3dOYXJyYXRpdmUgfSBmcm9tICcuL25hcnJhdGl2ZS90eXBlcy5qcyc7XG5cbi8vIFJlLWV4cG9ydCBTdGFnZU5vZGUgdHlwZXMgZm9yIGNvbnZlbmllbmNlXG5leHBvcnQgdHlwZSB7IERlY2lkZXIsIFNlbGVjdG9yLCBTdGFnZU5vZGUgfSBmcm9tICcuL2dyYXBoL1N0YWdlTm9kZS5qcyc7XG5cbi8vIFJlLWV4cG9ydCBwYXVzZSB0eXBlcyBmcm9tIHBhdXNlLyBsaWJyYXJ5XG5leHBvcnQgdHlwZSB7IEZsb3djaGFydENoZWNrcG9pbnQsIFBhdXNhYmxlSGFuZGxlciwgUGF1c2VSZXN1bHQgfSBmcm9tICcuLi9wYXVzZS9pbmRleC5qcyc7XG5leHBvcnQgeyBpc1BhdXNlUmVzdWx0LCBpc1BhdXNlU2lnbmFsLCBQYXVzZVNpZ25hbCB9IGZyb20gJy4uL3BhdXNlL2luZGV4LmpzJztcblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBMb2dnZXJcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4vKiogTWluaW1hbCBsb2dnaW5nIGNvbnRyYWN0LiBNaXJyb3JzIENvbnNvbGUgQVBJIHN1YnNldC4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSUxvZ2dlciB7XG4gIGluZm8obWVzc2FnZT86IGFueSwgLi4ub3B0aW9uYWxQYXJhbXM6IGFueVtdKTogdm9pZDtcbiAgbG9nKG1lc3NhZ2U/OiBhbnksIC4uLm9wdGlvbmFsUGFyYW1zOiBhbnlbXSk6IHZvaWQ7XG4gIGRlYnVnKG1lc3NhZ2U/OiBhbnksIC4uLm9wdGlvbmFsUGFyYW1zOiBhbnlbXSk6IHZvaWQ7XG4gIGVycm9yKG1lc3NhZ2U/OiBhbnksIC4uLm9wdGlvbmFsUGFyYW1zOiBhbnlbXSk6IHZvaWQ7XG4gIHdhcm4obWVzc2FnZT86IGFueSwgLi4ub3B0aW9uYWxQYXJhbXM6IGFueVtdKTogdm9pZDtcbn1cblxuLyoqIERlZmF1bHQgY29uc29sZS1iYXNlZCBsb2dnZXIuICovXG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAtLSB0cml2aWFsIGNvbnNvbGUgZGVsZWdhdGlvbiAqL1xuZXhwb3J0IGNvbnN0IGRlZmF1bHRMb2dnZXI6IElMb2dnZXIgPSB7XG4gIGluZm86IChtZXNzYWdlPzogYW55LCAuLi5hcmdzOiBhbnlbXSkgPT4gY29uc29sZS5pbmZvKG1lc3NhZ2UsIC4uLmFyZ3MpLFxuICBsb2c6IChtZXNzYWdlPzogYW55LCAuLi5hcmdzOiBhbnlbXSkgPT4gY29uc29sZS5sb2cobWVzc2FnZSwgLi4uYXJncyksXG4gIGRlYnVnOiAobWVzc2FnZT86IGFueSwgLi4uYXJnczogYW55W10pID0+IGNvbnNvbGUuZGVidWcobWVzc2FnZSwgLi4uYXJncyksXG4gIGVycm9yOiAobWVzc2FnZT86IGFueSwgLi4uYXJnczogYW55W10pID0+IGNvbnNvbGUuZXJyb3IobWVzc2FnZSwgLi4uYXJncyksXG4gIHdhcm46IChtZXNzYWdlPzogYW55LCAuLi5hcmdzOiBhbnlbXSkgPT4gY29uc29sZS53YXJuKG1lc3NhZ2UsIC4uLmFyZ3MpLFxufTtcblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBTdGFnZSBGdW5jdGlvblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbi8qKiBDYWxsYmFjayB0aGF0IHJlY2VpdmVzIHRva2VucyBkdXJpbmcgc3RyZWFtaW5nLiAqL1xuZXhwb3J0IHR5cGUgU3RyZWFtQ2FsbGJhY2sgPSAodG9rZW46IHN0cmluZykgPT4gdm9pZDtcblxuLyoqXG4gKiBUaGUgZnVuY3Rpb24gc2lnbmF0dXJlIGZvciBzdGFnZSBoYW5kbGVycy5cbiAqIC0gVE91dDogcmV0dXJuIHR5cGUgcHJvZHVjZWQgYnkgdGhlIHN0YWdlXG4gKiAtIFRTY29wZTogdGhlIHNjb3BlIG9iamVjdCBwYXNzZWQgdG8gdGhlIHN0YWdlXG4gKiAtIE9wdGlvbmFsIDNyZCBwYXJhbWV0ZXIgYHN0cmVhbUNhbGxiYWNrYCBpbmplY3RlZCBmb3Igc3RyZWFtaW5nIHN0YWdlcy5cbiAqL1xuZXhwb3J0IHR5cGUgU3RhZ2VGdW5jdGlvbjxUT3V0ID0gYW55LCBUU2NvcGUgPSBhbnk+ID0gKFxuICBzY29wZTogVFNjb3BlLFxuICBicmVha1BpcGVsaW5lOiAoKSA9PiB2b2lkLFxuICBzdHJlYW1DYWxsYmFjaz86IFN0cmVhbUNhbGxiYWNrLFxuKSA9PiBQcm9taXNlPFRPdXQgfCB2b2lkPiB8IFRPdXQgfCB2b2lkO1xuXG4vKipcbiAqIFN0YWdlIGZ1bmN0aW9uIGZvciBwYXVzYWJsZSBzdGFnZXMg4oCUIHJldHVybiB2YWx1ZSBpcyB0aGUgcGF1c2UgZGF0YSAoYW55IHR5cGUpLlxuICogUmV0dXJuIG5vbi12b2lkIHRvIHBhdXNlLCByZXR1cm4gdm9pZCB0byBjb250aW51ZSBub3JtYWxseS5cbiAqL1xuZXhwb3J0IHR5cGUgUGF1c2FibGVTdGFnZUZ1bmN0aW9uPFRTY29wZSA9IGFueT4gPSAoXG4gIHNjb3BlOiBUU2NvcGUsXG4gIGJyZWFrUGlwZWxpbmU6ICgpID0+IHZvaWQsXG4pID0+IFByb21pc2U8dW5rbm93bj4gfCB1bmtub3duO1xuXG4vKiogRmFjdG9yeSB0aGF0IGNyZWF0ZXMgYSBzY29wZSBpbnN0YW5jZSBmb3IgZWFjaCBzdGFnZS4gKi9cbmV4cG9ydCB0eXBlIFNjb3BlRmFjdG9yeTxUU2NvcGUgPSBhbnk+ID0gKFxuICBjb250ZXh0OiBTdGFnZUNvbnRleHQsXG4gIHN0YWdlTmFtZTogc3RyaW5nLFxuICByZWFkT25seUNvbnRleHQ/OiB1bmtub3duLFxuICBleGVjdXRpb25FbnY/OiBFeGVjdXRpb25FbnYsXG4pID0+IFRTY29wZTtcblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBTdHJlYW1pbmdcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5leHBvcnQgdHlwZSBTdHJlYW1Ub2tlbkhhbmRsZXIgPSAoc3RyZWFtSWQ6IHN0cmluZywgdG9rZW46IHN0cmluZykgPT4gdm9pZDtcbmV4cG9ydCB0eXBlIFN0cmVhbUxpZmVjeWNsZUhhbmRsZXIgPSAoc3RyZWFtSWQ6IHN0cmluZywgZnVsbFRleHQ/OiBzdHJpbmcpID0+IHZvaWQ7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3RyZWFtSGFuZGxlcnMge1xuICBvblRva2VuPzogU3RyZWFtVG9rZW5IYW5kbGVyO1xuICBvblN0YXJ0PzogU3RyZWFtTGlmZWN5Y2xlSGFuZGxlcjtcbiAgb25FbmQ/OiBTdHJlYW1MaWZlY3ljbGVIYW5kbGVyO1xufVxuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFBhcmFsbGVsLWZvci1lYWNoIChkeW5hbWljIGZhbi1vdXQpXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuLyoqXG4gKiBBIGJ1aWx0IGNoYXJ0LCBhcyBgYWRkUGFyYWxsZWxGb3JFYWNoYCdzIGBicmFuY2hgIGZhY3RvcnkgcmV0dXJucyBpdC5cbiAqXG4gKiBTdHJ1Y3R1cmFsbHkgdGhlIHN1YnNldCBvZiBgRmxvd0NoYXJ0YCB0aGUgZW5naW5lIG5lZWRzIHRvIG1vdW50IGEgYnJhbmNoIOKAlFxuICogZGVjbGFyZWQgaGVyZSByYXRoZXIgdGhhbiBpbXBvcnRlZCBzbyBgZW5naW5lL2Aga2VlcHMgaXRzIG9uZS13YXkgZGVwZW5kZW5jeVxuICogb24gYGJ1aWxkZXIvYC4gQW55IGBmbG93Q2hhcnQoLi4uKS5idWlsZCgpYCByZXN1bHQgc2F0aXNmaWVzIGl0LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEJyYW5jaENoYXJ0PFRPdXQgPSBhbnksIFRTY29wZSA9IGFueT4ge1xuICByb290OiBTdGFnZU5vZGU8VE91dCwgVFNjb3BlPjtcbiAgc3RhZ2VNYXA6IE1hcDxzdHJpbmcsIFN0YWdlRnVuY3Rpb248VE91dCwgVFNjb3BlPj47XG4gIHN1YmZsb3dzPzogUmVjb3JkPHN0cmluZywgeyByb290OiBTdGFnZU5vZGU8VE91dCwgVFNjb3BlPiB9PjtcbiAgYnVpbGRUaW1lU3RydWN0dXJlPzogdW5rbm93bjtcbn1cblxuLyoqXG4gKiBSdW50aW1lIGZhbi1vdXQgY29uZmlnIOKAlCBvbmUgYnJhbmNoIHBlciBpdGVtLCBicmFuY2ggQ09VTlQgZGVjaWRlZCBhdFxuICogcnVudGltZSBmcm9tIHRoZSBwYXlsb2FkLiBEZXNpZ246IGRvY3MvZGVzaWduL2V4ZWN1dGlvbi1jb250cm9sLm1kIChEMikuXG4gKlxuICogRWFjaCBicmFuY2ggcnVucyBhcyBhIGdlbmVyYXRlZCBTVUJGTE9XIChpc29sYXRlZCBydW50aW1lLCBvd24gY29tbWl0IGxvZyxcbiAqIGFkZHJlc3NhYmxlIGF0IGA8c3RhZ2VJZD5+PGluZGV4PmAgaW4gZXZlcnkgdHJhY2UgcXVlcnkpLCB3aGljaCBpcyB3aGF0XG4gKiBtYWtlcyBicmFuY2hlcyB1bmFibGUgdG8gY29ycnVwdCBlYWNoIG90aGVyJ3MgaW4tZmxpZ2h0IHN0YXRlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFBhcmFsbGVsRm9yRWFjaENvbmZpZzxUSXRlbSA9IGFueSwgVFNjb3BlID0gYW55PiB7XG4gIC8qKlxuICAgKiBQaWNrcyB0aGUgaXRlbXMgdG8gZmFuIG91dCBvdmVyLCBmcm9tIHRoZSBsaXZlIHNjb3BlLiBSZWFkcyBoZXJlIGFyZVxuICAgKiB0cmFja2VkIGxpa2UgYW55IG90aGVyIHN0YWdlIHJlYWQsIHNvIHRoZSBmYW4tb3V0J3Mgb3duIGlucHV0cyBzaG93IHVwIGluXG4gICAqIHRoZSB0cmFjZSBhbmQgaW4gYSBiYWNrd2FyZCBzbGljZS5cbiAgICovXG4gIGl0ZW1zOiAoc2NvcGU6IFRTY29wZSkgPT4gcmVhZG9ubHkgVEl0ZW1bXTtcbiAgLyoqXG4gICAqIEJ1aWxkcyB0aGUgY2hhcnQgZm9yIE9ORSBpdGVtLiBDYWxsZWQgb25jZSBwZXIgZXhlY3V0ZWQgYnJhbmNoLCB3aXRoIHRoZVxuICAgKiBpdGVtIGFuZCBpdHMgaW5kZXgg4oCUIGNsb3NlIG92ZXIgdGhlbSwgb3IgcmVhZCB0aGUgYGl0ZW1gIC8gYGluZGV4YCB2YWx1ZXNcbiAgICogc2VlZGVkIGludG8gdGhlIGJyYW5jaCdzIG93biBzY29wZS5cbiAgICovXG4gIGJyYW5jaDogKGl0ZW06IFRJdGVtLCBpbmRleDogbnVtYmVyKSA9PiBCcmFuY2hDaGFydDtcbiAgLyoqXG4gICAqIEhhcmQgY2VpbGluZyBvbiBicmFuY2hlcyBwZXIgZXhlY3V0aW9uLiBSRVFVSVJFRDogYW4gdW5ib3VuZGVkIGZhbi1vdXRcbiAgICogZHJpdmVuIGJ5IG1vZGVsIG91dHB1dCBpcyBhIHJlc291cmNlIGF0dGFjaywgc28gdGhlcmUgaXMgbm8gZGVmYXVsdCB0b1xuICAgKiBmb3JnZXQuIEV4dHJhIGl0ZW1zIGRvIG5vdCBydW4g4oCUIHRoZSB0cnVuY2F0aW9uIGlzIHJlY29yZGVkLCBuZXZlciBzaWxlbnQuXG4gICAqL1xuICBtYXhCcmFuY2hlczogbnVtYmVyO1xuICAvKipcbiAgICogU3RhdGUga2V5IHRoZSBvcmRlcmVkIHJlc3VsdHMgYXJyYXkgaXMgd3JpdHRlbiB0byBvbiB0aGUgcGFyZW50IHNjb3BlLlxuICAgKiBSRVFVSVJFRCDigJQgYSBrZXkgZGVyaXZlZCBmcm9tIHRoZSBzdGFnZSBpZCBjb3VsZCBzaWxlbnRseSBvdmVyd3JpdGUgc3RhdGVcbiAgICogdGhlIGNoYXJ0IGFscmVhZHkgb3ducy5cbiAgICovXG4gIGludG86IHN0cmluZztcbiAgLyoqXG4gICAqIEZhbi1vdXQgZXJyb3IgcG9saWN5IOKAlCB0aGUgU0FNRSBwb2xpY3kgdGhlIGV4aXN0aW5nIHBhcmFsbGVsIGZhbi1vdXQgdXNlcy5cbiAgICogYHRydWVgID0gYFByb21pc2UuYWxsYCAodGhlIGZpcnN0IGZhaWxpbmcgYnJhbmNoIHJlamVjdHMgdGhlIHN0YWdlKTtcbiAgICogb21pdHRlZC9mYWxzZSA9IGJlc3QtZWZmb3J0IGBQcm9taXNlLmFsbFNldHRsZWRgIChldmVyeSBicmFuY2ggcnVuczsgYVxuICAgKiBmYWlsZWQgYnJhbmNoJ3Mgc2xvdCBpbiB0aGUgcmVzdWx0cyBhcnJheSBpcyBgdW5kZWZpbmVkYCkuXG4gICAqL1xuICBmYWlsRmFzdD86IGJvb2xlYW47XG59XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gUmV0cnkgKHBlci1zdGFnZSBkZWNsYXJhdGl2ZSBwb2xpY3kpXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuLyoqXG4gKiBEZWNsYXJhdGl2ZSBwZXItc3RhZ2UgcmV0cnkgcG9saWN5LlxuICpcbiAqIFdIWSB0aGlzIGV4aXN0czogYSByZXRyeSBoYW5kLXJvbGxlZCBpbnNpZGUgYSBzdGFnZSBmdW5jdGlvbiBpcyBpbnZpc2libGUgdG9cbiAqIHRoZSB0cmFjZS4gVGhlIHN0YWdlIHNob3dzIG9uZSBleGVjdXRpb24sIHRoZSBjb21taXQgbG9nIHNob3dzIG9uZSBidW5kbGUsXG4gKiBhbmQgdGhlIHR3byBmYWlsZWQgY2FsbHMgdGhhdCBwcmVjZWRlZCB0aGUgc3VjY2Vzc2Z1bCBvbmUgbGVmdCBubyBtYXJrXG4gKiBhbnl3aGVyZSDigJQgYW4gdW5leHBsYWluZWQgYmVoYXZpb3VyIGluIGEgbGlicmFyeSB3aG9zZSB3aG9sZSB0aGVzaXMgaXMgdGhhdFxuICogbm90aGluZyBpbnZpc2libGUgaGFwcGVucy4gRGVjbGFyZWQgaGVyZSBpbnN0ZWFkLCBldmVyeSBhdHRlbXB0IGlzIHBhcnQgb2ZcbiAqIHRoZSByZWNvcmQ6IGVhY2ggZmFpbGVkIGF0dGVtcHQgZmlyZXMgYEZsb3dSZWNvcmRlci5vblN0YWdlUmV0cnlgIHdpdGggdGhlXG4gKiBhdHRlbXB0IG51bWJlciwgdGhlIHdhaXQsIGFuZCB0aGUgc3RydWN0dXJlZCBlcnJvci5cbiAqXG4gKiBBIFBPTElDWSwgbm90IGEgc3RhZ2Uga2luZCDigJQgYHJldHJ5YCBzaXRzIG9uIGEgbm9ybWFsIHN0YWdlIHRoZSB3YXlcbiAqIGBpc1BhdXNhYmxlYCAvIGBpc1N0cmVhbWluZ2AgZG8uIFRoZSBzZXJpYWxpemVkIG5vZGUgYHR5cGVgIGlzIHVuY2hhbmdlZCBhbmRcbiAqIGV2ZXJ5IGV4aXN0aW5nIGNvbnN1bWVyIGtlZXBzIHJlbmRlcmluZyB0aGUgc3RhZ2UgZXhhY3RseSBhcyBiZWZvcmUuXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHRzXG4gKiBmbG93Q2hhcnQ8U3RhdGU+KCdGZXRjaCB1c2VyJywgZmV0Y2hGbiwgJ2ZldGNoLXVzZXInKVxuICogICAucmV0cnkoeyBhdHRlbXB0czogMywgYmFja29mZk1zOiAobikgPT4gMTAwICogMiAqKiAobiAtIDEpIH0pXG4gKiBgYGBcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZXRyeVBvbGljeSB7XG4gIC8qKlxuICAgKiBIb3cgbWFueSB0aW1lcyB0aGUgc3RhZ2UgZnVuY3Rpb24gbWF5IHJ1biBpbiB0b3RhbCwgSU5DTFVESU5HIHRoZSBmaXJzdFxuICAgKiBydW4uIE11c3QgYmUgYW4gaW50ZWdlciA+PSAxOyBgMWAgbWVhbnMgXCJubyByZXRyeVwiIChhIGRlY2xhcmVkIG5vLW9wLFxuICAgKiBhY2NlcHRlZCBzbyBhIHBvbGljeSBjYW4gYmUgc3dpdGNoZWQgb2ZmIHdpdGhvdXQgZGVsZXRpbmcgaXQpLlxuICAgKi9cbiAgYXR0ZW1wdHM6IG51bWJlcjtcbiAgLyoqXG4gICAqIEhvdyBsb25nIHRvIHdhaXQgYmVmb3JlIHRoZSBORVhUIGF0dGVtcHQuIEVpdGhlciBhIGZpeGVkIG51bWJlciBvZlxuICAgKiBtaWxsaXNlY29uZHMsIG9yIGEgZnVuY3Rpb24gb2YgdGhlIGF0dGVtcHQgdGhhdCBqdXN0IEZBSUxFRCAoMS1iYXNlZClcbiAgICogcmV0dXJuaW5nIG1pbGxpc2Vjb25kcyDigJQgYChuKSA9PiAxMDAgKiAyICoqIChuIC0gMSlgIGlzIGV4cG9uZW50aWFsXG4gICAqIGJhY2tvZmYuIE9taXR0ZWQgKG9yIGEgbm9uLWZpbml0ZSAvIG5lZ2F0aXZlIHJlc3VsdCkgbWVhbnMgbm8gd2FpdC5cbiAgICpcbiAgICogVGhlIHdhaXQgaXMgYSBwbGFpbiBhd2FpdGVkIHRpbWVyIHRoYXQgaXMgQ0FOQ0VMTEVEIGJ5IHRoZSBydW4nc1xuICAgKiBgQWJvcnRTaWduYWxgLiBJdCBpcyBub3QgYSBwYXVzZTogYSBjaGFydCBjYW5ub3QgYmUgY2hlY2twb2ludGVkIGluIHRoZVxuICAgKiBtaWRkbGUgb2YgYSBiYWNrb2ZmLlxuICAgKi9cbiAgYmFja29mZk1zPzogbnVtYmVyIHwgKChhdHRlbXB0OiBudW1iZXIpID0+IG51bWJlcik7XG4gIC8qKlxuICAgKiBJcyBUSElTIGVycm9yIHdvcnRoIGFub3RoZXIgYXR0ZW1wdD8gRGVmYXVsdHMgdG8gcmV0cnlpbmcgZXZlcnkgZXJyb3IuXG4gICAqIFJldHVybmluZyBgZmFsc2VgIGVuZHMgdGhlIHN0YWdlIGltbWVkaWF0ZWx5IG9uIHRoZSBub3JtYWwgZXJyb3IgcGF0aCDigJRcbiAgICogZXhhY3RseSBhcyBpZiBubyBwb2xpY3kgaGFkIGJlZW4gZGVjbGFyZWQsIGFuZCB3aXRoIG5vIHJldHJ5IGV2ZW50ICh0aGVcbiAgICogcG9saWN5IGNob3NlIG5vdCB0byBhY3Q7IHRoZXJlIGlzIG5vdGhpbmcgdG8gcmVwb3J0IHRoYXQgdGhlIGVycm9yIGV2ZW50XG4gICAqIGRvZXMgbm90IGFscmVhZHkgc2F5KS5cbiAgICpcbiAgICogQSB0aHJvdyBmcm9tIHRoaXMgcHJlZGljYXRlIGlzIHRyZWF0ZWQgYXMgYGZhbHNlYCDigJQgYSBicm9rZW4gcHJlZGljYXRlXG4gICAqIG11c3Qgbm90IHR1cm4gYSBmYWlsaW5nIHN0YWdlIGludG8gYW4gaW5maW5pdGUgcmV0cnkgbG9vcC5cbiAgICovXG4gIHJldHJ5T24/OiAoZXJyb3I6IHVua25vd24pID0+IGJvb2xlYW47XG59XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gU3ViZmxvd1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbi8qKlxuICogQ29udHJvbHMgaG93IGFycmF5IHZhbHVlcyBmcm9tIG91dHB1dE1hcHBlciBhcmUgbWVyZ2VkIGludG8gcGFyZW50IHNjb3BlLlxuICovXG5leHBvcnQgZW51bSBBcnJheU1lcmdlTW9kZSB7XG4gIC8qKiBBcHBlbmQgc3ViZmxvdyBvdXRwdXQgdG8gZXhpc3RpbmcgcGFyZW50IGFycmF5OiBbLi4uZXhpc3RpbmcsIC4uLnZhbHVlXS4gRGVmYXVsdC4gKi9cbiAgQ29uY2F0ID0gJ2NvbmNhdCcsXG4gIC8qKiBPdmVyd3JpdGUgcGFyZW50IGFycmF5IHdpdGggc3ViZmxvdyBvdXRwdXQuIFVzZSBmb3IgRHluYW1pYyBsb29wcy4gKi9cbiAgUmVwbGFjZSA9ICdyZXBsYWNlJyxcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTdWJmbG93TW91bnRPcHRpb25zPFRQYXJlbnRTY29wZSA9IGFueSwgVFN1YmZsb3dJbnB1dCA9IGFueSwgVFN1YmZsb3dPdXRwdXQgPSBhbnk+IHtcbiAgaW5wdXRNYXBwZXI/OiAocGFyZW50U2NvcGU6IFRQYXJlbnRTY29wZSkgPT4gVFN1YmZsb3dJbnB1dDtcbiAgLyoqXG4gICAqIE1hcHMgc3ViZmxvdyBvdXRwdXQgYmFjayBpbnRvIHBhcmVudCBzY29wZS5cbiAgICpcbiAgICogKipBcnJheSBtZXJnZSBiZWhhdmlvcioqIGlzIGNvbnRyb2xsZWQgYnkgYGFycmF5TWVyZ2VgOlxuICAgKiAtIGAnY29uY2F0J2AgKGRlZmF1bHQpOiBgWy4uLmV4aXN0aW5nLCAuLi52YWx1ZV1gIOKAlCByZXR1cm4gb25seSAqKmRlbHRhKiogaXRlbXNcbiAgICogLSBgJ3JlcGxhY2UnYDogb3ZlcndyaXRlcyB0aGUgcGFyZW50IHZhbHVlIOKAlCByZXR1cm4gdGhlIGZ1bGwgYXJyYXlcbiAgICpcbiAgICogU2NhbGFyIHZhbHVlcyBhcmUgYWx3YXlzIHJlcGxhY2VkIHJlZ2FyZGxlc3Mgb2YgYGFycmF5TWVyZ2VgLlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGB0eXBlc2NyaXB0XG4gICAqIC8vIERlbHRhIG1vZGUgKGRlZmF1bHQpIOKAlCByZXR1cm4gb25seSBuZXcgaXRlbXMsIGNvbmNhdCBhcHBlbmRzXG4gICAqIG91dHB1dE1hcHBlcjogKHNmKSA9PiAoeyBtZXNzYWdlczogc2YubmV3TWVzc2FnZXMgfSlcbiAgICpcbiAgICogLy8gUmVwbGFjZSBtb2RlIOKAlCByZXR1cm4gZnVsbCBhcnJheSwgcGFyZW50IHZhbHVlIGlzIG92ZXJ3cml0dGVuXG4gICAqIC8vIFVzZWZ1bCBpbiBEeW5hbWljIGxvb3BzIHdoZXJlIHRoZSBzdWJmbG93IHJlY29tcHV0ZXMgdGhlIGZ1bGwgdmFsdWUgZWFjaCBpdGVyYXRpb25cbiAgICogb3V0cHV0TWFwcGVyOiAoc2YpID0+ICh7IHRvb2xEZXNjcmlwdGlvbnM6IHNmLnRvb2xEZXNjcmlwdGlvbnMgfSksXG4gICAqIGFycmF5TWVyZ2U6IEFycmF5TWVyZ2VNb2RlLlJlcGxhY2UsXG4gICAqXG4gICAqIC8vIFNjYWxhcnMgYXJlIGZpbmUgaW4gYm90aCBtb2RlcyDigJQgYWx3YXlzIHJlcGxhY2VkXG4gICAqIG91dHB1dE1hcHBlcjogKHNmKSA9PiAoeyBzdGF0dXM6IHNmLnJlc3VsdCwgY291bnQ6IHNmLnRvdGFsIH0pXG4gICAqIGBgYFxuICAgKi9cbiAgb3V0cHV0TWFwcGVyPzogKHN1YmZsb3dPdXRwdXQ6IFRTdWJmbG93T3V0cHV0LCBwYXJlbnRTY29wZTogVFBhcmVudFNjb3BlKSA9PiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgLyoqXG4gICAqIENvbnRyb2xzIGhvdyBhcnJheSB2YWx1ZXMgZnJvbSBvdXRwdXRNYXBwZXIgYXJlIG1lcmdlZCBpbnRvIHBhcmVudCBzY29wZS5cbiAgICogQXBwbGllcyBvbmx5IHRvIHRvcC1sZXZlbCBhcnJheSBrZXlzLiBOZXN0ZWQgYXJyYXlzIGluc2lkZSBvYmplY3RzXG4gICAqIGFsd2F5cyB1c2UgYXBwZW5kIChhcHBlbmRUb0FycmF5KSByZWdhcmRsZXNzIG9mIHRoaXMgc2V0dGluZy5cbiAgICpcbiAgICogQGRlZmF1bHQgQXJyYXlNZXJnZU1vZGUuQ29uY2F0XG4gICAqL1xuICBhcnJheU1lcmdlPzogQXJyYXlNZXJnZU1vZGU7XG5cbiAgLyoqXG4gICAqIFNUUlVDVFVSRS1PTkxZOiB0aGUgZG93bnN0cmVhbSBzdGFnZSBpZCB0aGlzIGJyYW5jaCdzIGNvbnZlcmdlbmNlIGVkZ2VcbiAgICogcG9pbnRzIHRvLCBvdmVycmlkaW5nIHRoZSBkZWZhdWx0IFwiY29udmVyZ2UgYXQgdGhlIG5leHQgbGluZWFyIHN0YWdlLlwiXG4gICAqXG4gICAqIFdoZW4gYSBmb3JrL3NlbGVjdG9yL2RlY2lkZXIgYnJhbmNoIGNhcnJpZXMgYGNvbnZlcmdlQXRgLCBpdHMgdmlzdWFsaXplZFxuICAgKiBgbmV4dGAgZWRnZSBpcyBmaXJlZCB0byB0aGUgbmFtZWQgc3RhZ2UgaW5zdGVhZCBvZiB0byB0aGUgc2hhcmVkXG4gICAqIGNvbnZlcmdlbmNlIG5vZGUgaXRzIHNpYmxpbmdzIHVzZS4gVGhpcyBleHByZXNzZXMgYW4gdW5lcXVhbC1kZXB0aCBtZXJnZVxuICAgKiDigJQgZS5nLiBhIGB0b29sc2Agc2xvdCB0aGF0IGJ5cGFzc2VzIHRoZSBgbWVzc2FnZUFQSWAgYXNzZW1ibHkgbm9kZSBhbmRcbiAgICogcGFpcnMgd2l0aCBpdHMgb3V0cHV0IGF0IGBjYWxsLWxsbWAgKHNvIGBjYWxsLWxsbWAgcmVhZHMgYXMgYSAyLXBhcmVudFxuICAgKiBtZXJnZSksIGZhaXRoZnVsIHRvIHRoZSBBbnRocm9waWMgd2lyZSBwcm90b2NvbCAoc3lzdGVtK21lc3NhZ2VzID0gdGhlXG4gICAqIG1lc3NhZ2UgcGF5bG9hZDsgdG9vbHMgPSBhIHNlcGFyYXRlIHRvcC1sZXZlbCBmaWVsZCkuXG4gICAqXG4gICAqICoqVGhpcyBhZmZlY3RzIHRoZSBTVFJVQ1RVUkUvdG9wb2xvZ3kgZ3JhcGggb25seSoqIOKAlCB0aGUgcnVudGltZSBpc1xuICAgKiB1bmNoYW5nZWQgKHRoZSBicmFuY2gncyBvdXRwdXRzIHJpZGUgc2hhcmVkIHNjb3BlOyB0aGUgbmFtZWQgdGFyZ2V0IHJlYWRzXG4gICAqIHRoZW0gd2hlbiBpdCBydW5zKS4gSXQgZG9lcyBOT1QgaW50cm9kdWNlIGEgam9pbiBiYXJyaWVyLiBUaGUgdGFyZ2V0IGlzIGFcbiAgICogRk9SV0FSRCBzdGFnZSAoYWRkZWQgbGF0ZXIgaW4gdGhlIGNoYWluKSwgc28gaXQgaXMgbm90IHZhbGlkYXRlZCBhdFxuICAgKiBicmFuY2gtZGVjbGFyYXRpb24gdGltZS5cbiAgICovXG4gIGNvbnZlcmdlQXQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFdoZW4gYHRydWVgLCBhbiBpbm5lciBgc2NvcGUuJGJyZWFrKHJlYXNvbilgIGNhbGwgaW5zaWRlIHRoaXMgc3ViZmxvd1xuICAgKiBwcm9wYWdhdGVzIHVwIHRvIHRoZSBwYXJlbnQg4oCUIGkuZS4sIHRoZSBwYXJlbnQncyBgYnJlYWtGbGFnYCBpcyBzZXRcbiAgICogYWZ0ZXIgdGhlIHN1YmZsb3cgZXhpdHMsIHRlcm1pbmF0aW5nIHRoZSBwYXJlbnQncyBvdXRlciBsb29wIHRvby5cbiAgICpcbiAgICogKipEZWZhdWx0OiBgZmFsc2VgKiogKGN1cnJlbnQgYmVoYXZpb3VyIOKAlCBpbm5lciBicmVhayBzdG9wcyBvbmx5IHRoZVxuICAgKiBzdWJmbG93OyBwYXJlbnQgY29udGludWVzKS5cbiAgICpcbiAgICogIyMgV2hlbiB0byB1c2VcbiAgICpcbiAgICogU2V0IGBwcm9wYWdhdGVCcmVhazogdHJ1ZWAgb24gc3ViZmxvdyBtb3VudHMgdGhhdCByZXByZXNlbnRcbiAgICogKip0ZXJtaW5hbCoqIGJyYW5jaGVzIOKAlCBcImlmIHRoaXMgc3ViZmxvdyBmaXJlcywgdGhlIG91dGVyIGxvb3AgaXNcbiAgICogZG9uZVwiLiBFeGFtcGxlczpcbiAgICpcbiAgICogLSBBIGh1bWFuLXJldmlldyBydW5uZXIgdGhhdCB0YWtlcyBvdmVyIGZyb20gYW4gYWdlbnQncyB0b29sLWNhbGxpbmdcbiAgICogICBsb29wIGFuZCBwcm9kdWNlcyB0aGUgZmluYWwgcmVzcG9uc2UuXG4gICAqIC0gQSBzYWZldHktZ2F0ZSBzdWJmbG93IHRoYXQgaGFsdHMgdGhlIG91dGVyIHdvcmtmbG93IHdoZW4gYSBwb2xpY3lcbiAgICogICB2aW9sYXRpb24gaXMgZGV0ZWN0ZWQuXG4gICAqIC0gQW4gZXJyb3ItcmVjb3Zlcnkgc3ViZmxvdyB0aGF0IHJlc3RvcmVzIHN0YXRlIGFuZCB0aGVuIHRlcm1pbmF0ZXMuXG4gICAqXG4gICAqICMjIFNlbWFudGljc1xuICAgKlxuICAgKiAxLiBJbnNpZGUgdGhlIHN1YmZsb3csIGEgc3RhZ2UgY2FsbHMgYHNjb3BlLiRicmVhayhyZWFzb24pYC5cbiAgICogMi4gVGhlIHN1YmZsb3cncyBvd24gZXhlY3V0aW9uIHN0b3BzIChub3JtYWwgYCRicmVha2AgYmVoYXZpb3VyKS5cbiAgICogMy4gYFN1YmZsb3dFeGVjdXRvcmAgaW5zcGVjdHMgdGhlIHN1YmZsb3cncyBleGl0IHN0YXRlLiBJZlxuICAgKiAgICBgcHJvcGFnYXRlQnJlYWsgPT09IHRydWVgIEFORCB0aGUgaW5uZXIgYnJlYWsgZmlyZWQsIGl0IGZvcndhcmRzXG4gICAqICAgIHRoZSBicmVhayAoYW5kIGl0cyByZWFzb24pIHRvIHRoZSBwYXJlbnQncyBgYnJlYWtGbGFnYC5cbiAgICogNC4gVGhlIHBhcmVudCB0cmF2ZXJzZXIgc2VlcyBgc2hvdWxkQnJlYWtgIG9uIGl0cyBuZXh0IHN0ZXAgYW5kIGV4aXRzLlxuICAgKiA1LiBBIGBGbG93UmVjb3JkZXIub25CcmVha2AgZXZlbnQgZmlyZXMgYXQgdGhlIHBhcmVudC1tb3VudCBsZXZlbCB3aXRoXG4gICAqICAgIGBwcm9wYWdhdGVkRnJvbVN1YmZsb3dgID0gdGhlIHN1YmZsb3cncyBpZCBhbmQgdGhlIGlubmVyIHJlYXNvbi5cbiAgICpcbiAgICogIyMgUGFyYWxsZWwvZmFuLW91dFxuICAgKlxuICAgKiBGb2xsb3dzIHRoZSBleGlzdGluZyBsaWJyYXJ5IHJ1bGUgaW4gYENoaWxkcmVuRXhlY3V0b3JgOiB0aGUgcGFyZW50XG4gICAqIGJyZWFrcyBvbmx5IHdoZW4gKipldmVyeSoqIGNoaWxkIG9mIGEgZm9yayBicm9rZS4gQSBzaW5nbGVcbiAgICogYHByb3BhZ2F0ZUJyZWFrOiB0cnVlYCBzdWJmbG93IGNvbnRyaWJ1dGluZyBpdHMgYnJlYWsgdG8gdGhlIGNvdW50XG4gICAqIGRvZXMgbm90IG9uIGl0cyBvd24gdGVybWluYXRlIHRoZSBwYXJlbnQgZmFuLW91dC5cbiAgICpcbiAgICogIyMgb3V0cHV0TWFwcGVyIHN0aWxsIHJ1bnNcbiAgICpcbiAgICogVGhlIHN1YmZsb3cncyBgb3V0cHV0TWFwcGVyYCAoaWYgc3VwcGxpZWQpIEFMV0FZUyBydW5zIGJlZm9yZSB0aGVcbiAgICogYnJlYWsgcHJvcGFnYXRlcywgc28gdGhlIHN1YmZsb3cncyBwYXJ0aWFsIHN0YXRlIGlzIHN0aWxsIHdyaXR0ZW4gdG9cbiAgICogdGhlIHBhcmVudCBzY29wZS4gVGhpcyBpcyBpbnRlbnRpb25hbCDigJQgdGhlIHR5cGljYWwgdXNlIGNhc2UgaXMgYW5cbiAgICogXCJlc2NhbGF0aW9uXCIgc3ViZmxvdyB3aG9zZSBvdXRwdXQgSVMgdGhlIGZpbmFsIGFuc3dlciB0aGF0IG5lZWRzIHRvXG4gICAqIGxhbmQgaW4gdGhlIHBhcmVudCBzY29wZSBiZWZvcmUgdGhlIG91dGVyIGxvb3AgdGVybWluYXRlcy4gSWYgeW91XG4gICAqIHdhbnQgdG8gc3VwcHJlc3Mgb3V0cHV0IG1hcHBpbmcgb24gYnJlYWssIGNoZWNrIHRoZSBicmVhayBzdGF0ZVxuICAgKiBpbnNpZGUgeW91ciBgb3V0cHV0TWFwcGVyYCBhbmQgcmV0dXJuIGB7fWAgZWFybHkuXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBwcm9wYWdhdGVCcmVhaz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIERlY2xhcmVkIHRhZ3MgKDkuMjEuMSkgZm9yIHRoZSBNT1VOVCBpdHNlbGYg4oCUIHRoZSBOQU1FUyB0aGUgYXV0aG9yIHB1dHNcbiAgICogb24gdGhpcyBtb3VudCBhdCBidWlsZCB0aW1lLCBsYW5kZWQgYnkgdGhlIHNhbWUgYGFwcGx5VGFnc2AgZXZlcnkgb3RoZXJcbiAgICogYG9wdGlvbnMudGFnc2Agc2l0ZSB1c2VzLCB3aXRoIHRoZSBzYW1lIHJlZnVzYWxzIChlbXB0eSwgbm9uLXN0cmluZywgdGhlXG4gICAqIHJlc2VydmVkIGB+YCBtYXJrZXIsIGEgZHVwbGljYXRlLCBhIHNlY29uZCBkZWNsYXJhdGlvbikuXG4gICAqXG4gICAqIEEgbW91bnQgaXMgYSBzdGFnZSB0aGF0IGNvbW1pdHM6IGl0cyBmaXJzdCBidW5kbGUgaW4gdGhlIFBBUkVOVCBsb2cgaXMgYVxuICAgKiBzdG9wIGluIGBjb21taXRTdG9wc2AsIHNvIGB0YWdTdG9wc2Aga2VlcHMgaXQgbGlrZSBhbnkgdGFnZ2VkIHN0YWdlIGFuZFxuICAgKiBjYXJyaWVzIHRoZXNlIG5hbWVzIGFzIGBTdG9wLm1ldGFgLiBTdGFtcGVkIG9uIHRoYXQgZmlyc3QgYnVuZGxlIG9ubHlcbiAgICogKHRoZSBtb3VudCdzIGV4aXQgYnVuZGxlIGNhcnJpZXMgbm9uZSDigJQgdGhlIG9uY2UtcGVyLWV4ZWN1dGlvbiBsYXcpLlxuICAgKiBUaGUgc3ViZmxvdydzIE9XTiBsb2cgaXMgdW50b3VjaGVkOiBpdHMgaW5uZXIgc3RhZ2VzIGRlY2xhcmUgdGhlaXIgb3duXG4gICAqIHRhZ3MsIGFuZCBgZHJpbGwobW91bnQpYCByZWFkcyB0aG9zZSBvZmYgdGhlIGlubmVyIGxvZy5cbiAgICpcbiAgICogVGhpcyBpcyB0aGUgT05MWSB0YWcgc2l0ZSBmb3IgYSBmb3JrLWNoaWxkIG1vdW50IChgYWRkU3ViRmxvd0NoYXJ0YCkgb3JcbiAgICogYSBicmFuY2ggbW91bnQgKGBhZGRTdWJGbG93Q2hhcnRCcmFuY2hgKSDigJQgYWZ0ZXIgdGhvc2UgdGhlIGN1cnNvciBzdGlsbFxuICAgKiBwb2ludHMgYXQgdGhlIHBhcmVudCwgc28gYC50YWcoKWAgcmVmdXNlcyByYXRoZXIgdGhhbiBtaXMtYXR0cmlidXRlLiBBXG4gICAqIGxpbmVhciBtb3VudCAoYGFkZFN1YkZsb3dDaGFydE5leHRgKSBtb3ZlcyB0aGUgY3Vyc29yLCBzbyBgLnRhZygpYCB3b3Jrc1xuICAgKiB0aGVyZSB0b287IGRlY2xhcmUgaW4gb25lIHBsYWNlLCBub3QgYm90aC5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogYGBgdHlwZXNjcmlwdFxuICAgKiAuYWRkU2VsZWN0b3JGdW5jdGlvbignU2xvdHMnLCBwaWNrU2xvdHMsICdzbG90cycpXG4gICAqICAgLmFkZFN1YkZsb3dDaGFydEJyYW5jaCgnbWVtb3J5JywgbWVtb3J5Q2hhcnQsICdNZW1vcnknLCB7IHRhZ3M6IFsnc2xvdDptZW1vcnknXSB9KVxuICAgKiAgIC5hZGRTdWJGbG93Q2hhcnRCcmFuY2goJ3Rvb2xzJywgdG9vbHNDaGFydCwgJ1Rvb2xzJywgeyB0YWdzOiBbJ3Nsb3Q6dG9vbHMnXSB9KVxuICAgKiAuZW5kKClcbiAgICogYGBgXG4gICAqL1xuICB0YWdzPzogcmVhZG9ubHkgc3RyaW5nW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3ViZmxvd1Jlc3VsdCB7XG4gIHN1YmZsb3dJZDogc3RyaW5nO1xuICBzdWJmbG93TmFtZTogc3RyaW5nO1xuICB0cmVlQ29udGV4dDoge1xuICAgIC8qKlxuICAgICAqIFRoZSBzdWJmbG93J3MgZmluYWwgc3RhdGUuIFRoZSB0cmF2ZXJzZXIncyByZWNvcmQgaG9sZHMgdGhlIExJVkUgaGVhcFxuICAgICAqIOKAlCB3aGF0IGEgcGxhaW4gYGdldFNuYXBzaG90KClgIGFuZCB0aGUgY2hlY2twb2ludCBzZWUuIFVuZGVyXG4gICAgICogYGdldFNuYXBzaG90KHsgcmVkYWN0OiB0cnVlIH0pYCB0aGUgZXhlY3V0b3Igc2VydmVzIHRoZSBzdWJmbG93J3Mgb3duXG4gICAgICogcmVkYWN0ZWQgbWlycm9yIGhlcmUgaW5zdGVhZCAoOS4yMC4wOyBgaGFuZGxlcnMvc2VydmVkU3ViZmxvd1Jlc3VsdHNgKSxcbiAgICAgKiB3aGljaCBpcyBleGFjdGx5IHdoYXQgYHN0YXRlQXRgIGZvbGRzIGBoaXN0b3J5YCB0by5cbiAgICAgKi9cbiAgICBnbG9iYWxDb250ZXh0OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgICBzdGFnZUNvbnRleHRzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgICBoaXN0b3J5OiB1bmtub3duW107XG4gICAgLyoqIElkZW50aXR5IG9mIHRoZSBsb2NhbCBoaXN0b3J5LCBub3QgaXRzIHBhcmVudCdzIGxvZy4gKi9cbiAgICByZWFkb25seSBsb2dBZGRyZXNzPzogTG9nQWRkcmVzcztcbiAgICAvKipcbiAgICAgKiBUaGUgc3ViZmxvdydzIE9XTiBmb2xkIGJhc2Ug4oCUIHRoZSBzdGF0ZSBpdHMgaXNvbGF0ZWQgcnVudGltZSBzdGFydGVkXG4gICAgICogZnJvbSwgYmVmb3JlIGl0cyBmaXJzdCBjb21taXQuIFRoZSBzaWJsaW5nIG9mXG4gICAgICogYFJ1bnRpbWVTbmFwc2hvdC5pbml0aWFsU3RhdGVgLCBjYXJyaWVkIGhlcmUgc28gYSBzdWJmbG93J3MgYGhpc3RvcnlgXG4gICAgICogY2FuIGJlIGZvbGRlZCBvZmZsaW5lIGV4YWN0bHkgbGlrZSB0aGUgcnVuJ3MgbG9nIChgc3RhdGVBdGAsXG4gICAgICogYHRpbWVUcmF2ZWwoLi4uKS5kcmlsbChtb3VudClgKS4gRnJvemVuIGFuZCBkZXRhY2hlZC5cbiAgICAgKlxuICAgICAqIE5vcm1hbGx5IGB7fWA6IGEgc3ViZmxvdydzIGBpbnB1dE1hcHBlcmAgc2VlZCBpcyBpdHNlbGYgdGhlIGZpcnN0XG4gICAgICogQ09NTUlUIGluIGBoaXN0b3J5YCAodGhlIHJvb3QgY29udGV4dCBjb21taXRzIGl0KSwgbm90IGEgcHJlLXJ1biBiYXNlLlxuICAgICAqL1xuICAgIGluaXRpYWxTdGF0ZT86IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICB9O1xuICBwYXJlbnRTdGFnZUlkOiBzdHJpbmc7XG4gIHBpcGVsaW5lU3RydWN0dXJlPzogdW5rbm93bjtcbn1cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBTdWJmbG93IFRyYXZlcnNlciBGYWN0b3J5XG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuLyoqXG4gKiBTdWJmbG93VHJhdmVyc2VyRmFjdG9yeSDigJQgQ3JlYXRlcyBhIEZsb3djaGFydFRyYXZlcnNlciBmb3Igc3ViZmxvdyBleGVjdXRpb24uXG4gKlxuICogSW5qZWN0ZWQgaW50byBTdWJmbG93RXhlY3V0b3IgdG8gYnJlYWsgdGhlIGNpcmN1bGFyIGRlcGVuZGVuY3k6XG4gKiBGbG93Y2hhcnRUcmF2ZXJzZXIg4oaSIFN1YmZsb3dFeGVjdXRvciDihpIgRmxvd2NoYXJ0VHJhdmVyc2VyLlxuICpcbiAqIFRoZSBmYWN0b3J5IGNhcHR1cmVzIHBhcmVudCB0cmF2ZXJzZXIgY29uZmlnIChzdGFnZU1hcCwgc2NvcGVGYWN0b3J5LCBuYXJyYXRpdmUsIGV0Yy4pXG4gKiBpbiBhIGNsb3N1cmUuIFN1YmZsb3dFeGVjdXRvciBjYWxscyBpdCB3aXRoIHN1YmZsb3ctc3BlY2lmaWMgb3ZlcnJpZGVzIChyb290LCBydW50aW1lLCBpbnB1dCkuXG4gKiBUaGUgcmV0dXJuZWQgdHJhdmVyc2VyIHVzZXMgdGhlIFNBTUUgNy1waGFzZSBhbGdvcml0aG0gYXMgdGhlIHRvcC1sZXZlbCB0cmF2ZXJzZXIsXG4gKiBzbyBkZWNpZGVycywgc2VsZWN0b3JzLCBsb29wcywgbGF6eSBzdWJmbG93cywgYW5kIGFib3J0IHNpZ25hbHMgYWxsIHdvcmsgaW5zaWRlIHN1YmZsb3dzLlxuICovXG5leHBvcnQgdHlwZSBTdWJmbG93VHJhdmVyc2VyRmFjdG9yeTxUT3V0ID0gYW55LCBUU2NvcGUgPSBhbnk+ID0gKG9wdGlvbnM6IHtcbiAgLyoqIFJvb3Qgbm9kZSBvZiB0aGUgc3ViZmxvdyAod2l0aCBpc1N1YmZsb3dSb290IHN0cmlwcGVkKSDigJQgdGhlIGdyYXBoIGV2ZXJ5IGlkIGluc2lkZSB0aGUgc3ViZmxvdyByZXNvbHZlcyBhZ2FpbnN0LiAqL1xuICByb290OiBTdGFnZU5vZGU8VE91dCwgVFNjb3BlPjtcbiAgLyoqXG4gICAqIFdoZXJlIHRoZSBzdWJmbG93J3MgdHJhdmVyc2FsIHN0YXJ0cyB3aGVuIG5vdCBhdCBgcm9vdGAg4oCUIGEgcmVzdW1lJ3NcbiAgICogb25lLXNob3QgcmUtZW50cnkgKGBSZXN1bWVIb3AuZW50cnlgKTogdGhlIG5leHQgbW91bnQgb24gdGhlIHBhdXNlIHBhdGgsXG4gICAqIG9yIHRoZSBwYXVzZWQgc3RhZ2UncyBzdGFuZC1pbiwgZWFjaCB3aXRoIGl0cyBkaXNwYXRjaGVyJ3MgY29udGludWF0aW9uXG4gICAqIGF0dGFjaGVkLiBWaXNpdGVkIG9uY2UsIGZpcnN0OyBuZXZlciByZXNvbHZhYmxlIGJ5IGlkLlxuICAgKi9cbiAgZW50cnk/OiBTdGFnZU5vZGU8VE91dCwgVFNjb3BlPjtcbiAgLyoqXG4gICAqIFBhcmFsbGVsIHNpYmxpbmdzJyBwYXVzZXMgd2FpdGluZyBpbiB0aGlzIHN1YmZsb3cgKGBSZXN1bWVIb3AucGVuZGluZ1BhdXNlc2AsXG4gICAqIDkuMjguMCkg4oCUIHJhaXNlZCBpbiBvcmRlciBvbmNlIGBlbnRyeWAncyBjaGFpbiBlbmRzLlxuICAgKi9cbiAgcGVuZGluZ1BhdXNlcz86IHJlYWRvbmx5IFF1ZXVlZFBhdXNlW107XG4gIC8qKiBJc29sYXRlZCBleGVjdXRpb24gcnVudGltZSBmb3IgdGhlIHN1YmZsb3cuICovXG4gIGV4ZWN1dGlvblJ1bnRpbWU6IElFeGVjdXRpb25SdW50aW1lO1xuICAvKiogTWFwcGVkIGlucHV0IGZyb20gcGFyZW50IHNjb3BlIChiZWNvbWVzIHJlYWRPbmx5Q29udGV4dCBmb3Igc3RhZ2VzKS4gKi9cbiAgcmVhZE9ubHlDb250ZXh0PzogdW5rbm93bjtcbiAgLyoqIFN1YmZsb3cgaWRlbnRpZmllciDigJQgdXNlZCBhcyBicmFuY2hQYXRoIGZvciBuYXJyYXRpdmUgY29udGV4dC4gKi9cbiAgc3ViZmxvd0lkPzogc3RyaW5nO1xuICAvKipcbiAgICogUkZDLTAwMyBEMTogcnVudGltZVN0YWdlSWQgb2YgdGhlIHN1YmZsb3cgTU9VTlQgc3RhZ2UgaW4gdGhlIHBhcmVudFxuICAgKiB0cmF2ZXJzZXIuIEJlY29tZXMgdGhlIGBwYXJlbnRSdW50aW1lU3RhZ2VJZGAgZmFsbGJhY2sgZm9yIHRoZSBzdWJmbG93J3NcbiAgICogcm9vdCBzdGFnZSBzbyBydW50aW1lIGFuY2VzdG9yIGNoYWlucyBjcm9zcyBzdWJmbG93IGJvdW5kYXJpZXMuXG4gICAqL1xuICBwYXJlbnRNb3VudFJ1bnRpbWVTdGFnZUlkPzogc3RyaW5nO1xufSkgPT4gU3ViZmxvd1RyYXZlcnNlckhhbmRsZTxUT3V0LCBUU2NvcGU+O1xuXG4vKipcbiAqIEhhbmRsZSByZXR1cm5lZCBieSBTdWJmbG93VHJhdmVyc2VyRmFjdG9yeS5cbiAqIFByb3ZpZGVzIGV4ZWN1dGUoKSArIGFjY2VzcyB0byBuZXN0ZWQgc3ViZmxvdyByZXN1bHRzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFN1YmZsb3dUcmF2ZXJzZXJIYW5kbGU8VE91dCA9IGFueSwgVFNjb3BlID0gYW55PiB7XG4gIC8qKiBFeGVjdXRlIHRoZSBzdWJmbG93J3MgZ3JhcGggdXNpbmcgdGhlIGZ1bGwgNy1waGFzZSB0cmF2ZXJzYWwgYWxnb3JpdGhtLiAqL1xuICBleGVjdXRlKCk6IFByb21pc2U8VHJhdmVyc2FsUmVzdWx0PjtcbiAgLyoqIENvbGxlY3QgbmVzdGVkIHN1YmZsb3cgcmVzdWx0cyAoZnJvbSBzdWJmbG93cyBtb3VudGVkIGluc2lkZSB0aGlzIHN1YmZsb3cpLiAqL1xuICBnZXRTdWJmbG93UmVzdWx0cygpOiBNYXA8c3RyaW5nLCBTdWJmbG93UmVzdWx0PjtcbiAgLyoqXG4gICAqIEZpbmFsIGJyZWFrIHN0YXRlIG9mIHRoZSBzdWJmbG93IGFmdGVyIGBleGVjdXRlKClgIHJldHVybnMuXG4gICAqXG4gICAqICAgLSBgc2hvdWxkQnJlYWs6IHRydWVgICDihpIgYSBzdGFnZSBpbnNpZGUgdGhlIHN1YmZsb3cgY2FsbGVkXG4gICAqICAgICBgc2NvcGUuJGJyZWFrKHJlYXNvbilgLCBzdG9wcGluZyB0aGUgc3ViZmxvdydzIG93biB0cmF2ZXJzYWwuXG4gICAqICAgLSBgcmVhc29uYCAgICAgICAgICAgICDihpIgdGhlIG9wdGlvbmFsIHN0cmluZyBwYXNzZWQgdG8gYCRicmVha2AuXG4gICAqXG4gICAqIFVzZWQgYnkgYFN1YmZsb3dFeGVjdXRvcmAgdG8gaW1wbGVtZW50IGBTdWJmbG93TW91bnRPcHRpb25zLnByb3BhZ2F0ZUJyZWFrYDpcbiAgICogaWYgdGhlIG1vdW50IG9wdHMgaW4gQU5EIHRoZSBzdWJmbG93IGJyb2tlLCB0aGUgcGFyZW50J3MgYnJlYWsgZmxhZyBpc1xuICAgKiBmb3J3YXJkZWQuXG4gICAqL1xuICBnZXRCcmVha1N0YXRlKCk6IHsgc2hvdWxkQnJlYWs6IGJvb2xlYW47IHJlYXNvbj86IHN0cmluZyB9O1xufVxuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIEV4ZWN1dGlvbiBSdW50aW1lIEludGVyZmFjZVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbi8qKlxuICogSUV4ZWN1dGlvblJ1bnRpbWUg4oCUIEludGVyZmFjZSBmb3IgdGhlIHJ1bnRpbWUgZW52aXJvbm1lbnQuXG4gKlxuICogRGVmaW5lcyB0aGUgY29udHJhY3QgdGhhdCBlbmdpbmUgaGFuZGxlcnMgbmVlZCBmcm9tIHRoZSBydW5uZXIgbGF5ZXIsXG4gKiBhdm9pZGluZyBjaXJjdWxhciBpbXBvcnRzIGJldHdlZW4gZW5naW5lLyBhbmQgcnVubmVyLy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJRXhlY3V0aW9uUnVudGltZSB7XG4gIGdsb2JhbFN0b3JlOiB7IGdldFN0YXRlKCk6IFJlY29yZDxzdHJpbmcsIHVua25vd24+IH07XG4gIC8qKlxuICAgKiBUaGUgcmVkYWN0ZWQgbWlycm9yIG9mIGBnbG9iYWxTdG9yZWAg4oCUIHByZXNlbnQgd2hlbiB0aGUgcnVuJ3MgcG9saWN5XG4gICAqIGtlZXBzIG9uZSAoYFJ1blBvbGljeS5taXJyb3JgOiBhIHJ1biB3aXRoIGEgcmVkYWN0aW9uIHBvbGljeSksIGVsc2UgYWJzZW50LlxuICAgKiBgU3ViZmxvd0V4ZWN1dG9yYCByZWFkcyBpdCB0byBzZXJ2ZSBhIHN1YmZsb3cncyBzdGF0ZSAoOS4yMC4wKS5cbiAgICovXG4gIHJlZGFjdGVkU3RvcmU/OiBTaGFyZWRNZW1vcnk7XG4gIHJvb3RTdGFnZUNvbnRleHQ6IFN0YWdlQ29udGV4dDtcbiAgZXhlY3V0aW9uSGlzdG9yeTogeyBsaXN0KCk6IHVua25vd25bXSB9O1xuICAvKipcbiAgICogQSBmcmVzaCByb290IGZyYW1lIG9uIHRoaXMgcnVudGltZSDigJQgaXRzIHN0b3JlLCBpdHMgbG9nLCB0aGUgcnVuJ3MgcG9saWN5XG4gICAqIGFuZCBtaXJyb3IgKGBFeGVjdXRpb25SdW50aW1lLm5ld1Jvb3RgKS4gYFN1YmZsb3dFeGVjdXRvcmAgc3dhcHMgYVxuICAgKiBzdWJmbG93J3Mgc2VlZCBmcmFtZSBmb3IgdGhlIGZyYW1lIGl0cyBmaXJzdCBzdGFnZSBydW5zIG9uIHdpdGggaXQuXG4gICAqL1xuICBuZXdSb290KG5hbWU6IHN0cmluZywgaWQ6IHN0cmluZyk6IFN0YWdlQ29udGV4dDtcbiAgZ2V0U25hcHNob3Qob3B0aW9ucz86IHsgcmVkYWN0PzogYm9vbGVhbiB9KToge1xuICAgIHNoYXJlZFN0YXRlOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgICBleGVjdXRpb25UcmVlOiB1bmtub3duO1xuICAgIC8qKiBUaGUgY29tbWl0IGxvZydzIGZvbGQgYmFzZSDigJQgc2VlIGBSdW50aW1lU25hcHNob3QuaW5pdGlhbFN0YXRlYC4gKi9cbiAgICBpbml0aWFsU3RhdGU/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgICBjb21taXRMb2c6IHVua25vd25bXTtcbiAgICByZWFkb25seSBsb2dBZGRyZXNzPzogTG9nQWRkcmVzcztcbiAgICAvKiogRHVhbC1rZXllZCBieSBzdWJmbG93IHBhdGggKGxhc3QgaXRlcmF0aW9uKSBBTkQgcGVyLWV4ZWN1dGlvbiBtb3VudCBydW50aW1lU3RhZ2VJZFxuICAgICAqICAoZWFjaCBpdGVyYXRpb24pIOKAlCBzZWUgUnVudGltZVNuYXBzaG90LnN1YmZsb3dSZXN1bHRzIC8gc3ViZmxvdy1jb21taXQtdmlzaWJpbGl0eS4gKi9cbiAgICBzdWJmbG93UmVzdWx0cz86IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICAgIHJlY29yZGVycz86IEFycmF5PHsgaWQ6IHN0cmluZzsgbmFtZTogc3RyaW5nOyBkYXRhOiB1bmtub3duIH0+O1xuICB9O1xuICBzZXRSb290T2JqZWN0KHBhdGg6IHN0cmluZ1tdLCBrZXk6IHN0cmluZywgdmFsdWU6IHVua25vd24pOiB2b2lkO1xuICBnZXRQaXBlbGluZXMoKTogc3RyaW5nW107XG59XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gRXhlY3V0aW9uIEVudmlyb25tZW50IOKAlCByZWFkLW9ubHksIHByb3BhZ2F0ZXMgdGhyb3VnaCBuZXN0ZWQgZXhlY3V0b3JzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuLyoqXG4gKiBFeGVjdXRpb25FbnYg4oCUIGluZnJhc3RydWN0dXJlIHZhbHVlcyB0aGF0IHByb3BhZ2F0ZSB0aHJvdWdoIG5lc3RlZCBleGVjdXRvcnMuXG4gKlxuICogTGlrZSBgcHJvY2Vzcy5lbnZgIGZvciBmbG93Y2hhcnRzOiByZWFkLW9ubHksIGluaGVyaXRlZCBieSBjaGlsZCBleGVjdXRvcnMsXG4gKiBpbmZyYXN0cnVjdHVyZS1vbmx5IChub3QgYnVzaW5lc3MgbG9naWMpLlxuICpcbiAqIExpdG11cyB0ZXN0OiBDcmVhdGVkIGV4dGVybmFsIHRvIHRoZSBmbG93Y2hhcnQgKyBwYXNzZWQgaW4gZm9yIGV4ZWN1dGlvbiA9IGVudi5cbiAqIEJ1c2luZXNzIGNvbmZpZyBmb3IgYSBzcGVjaWZpYyBmbG93Y2hhcnQgPSBhcmdzIChnZXRBcmdzKCkpLlxuICpcbiAqIEludGVudGlvbmFsbHkgYSBjbG9zZWQgdHlwZSDigJQgbm90IGV4dGVuc2libGUgdG8gcHJldmVudCBjb3VwbGluZyBiZXR3ZWVuXG4gKiBwYXJlbnQgYW5kIGNoaWxkIGZsb3djaGFydHMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRXhlY3V0aW9uRW52IHtcbiAgLyoqIEFib3J0U2lnbmFsIGZvciBjb29wZXJhdGl2ZSBjYW5jZWxsYXRpb24gYWNyb3NzIG5lc3RlZCBleGVjdXRvcnMuICovXG4gIHJlYWRvbmx5IHNpZ25hbD86IEFib3J0U2lnbmFsO1xuICAvKiogVGltZW91dCBidWRnZXQgaW4gbWlsbGlzZWNvbmRzLiAqL1xuICByZWFkb25seSB0aW1lb3V0TXM/OiBudW1iZXI7XG4gIC8qKiBUcmFjZSBpZGVudGlmaWVyIGZvciBkaXN0cmlidXRlZCB0cmFjaW5nIC8gb2JzZXJ2YWJpbGl0eS4gKi9cbiAgcmVhZG9ubHkgdHJhY2VJZD86IHN0cmluZztcbn1cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBIYW5kbGVyIERlcGVuZGVuY2llcyAoREkgYmFnKSDigJQgd2FzIFBpcGVsaW5lQ29udGV4dFxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbi8qKlxuICogSGFuZGxlckRlcHMg4oCUIERlcGVuZGVuY3kgaW5qZWN0aW9uIGJhZyBwYXNzZWQgdG8gYWxsIGhhbmRsZXIgbW9kdWxlcy5cbiAqXG4gKiBQcm92aWRlcyBzaGFyZWQgc3RhdGUgKHN0YWdlTWFwLCBydW50aW1lLCBzY29wZUZhY3RvcnksIGV0Yy4pIHdpdGhvdXRcbiAqIGhhbmRsZXJzIG5lZWRpbmcgdG8gaW1wb3J0IHRoZSB0cmF2ZXJzZXIgZGlyZWN0bHkuIEF2b2lkcyBjaXJjdWxhciBkZXBzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEhhbmRsZXJEZXBzPFRPdXQgPSBhbnksIFRTY29wZSA9IGFueT4ge1xuICBzdGFnZU1hcDogTWFwPHN0cmluZywgU3RhZ2VGdW5jdGlvbjxUT3V0LCBUU2NvcGU+PjtcbiAgcm9vdDogU3RhZ2VOb2RlPFRPdXQsIFRTY29wZT47XG4gIGV4ZWN1dGlvblJ1bnRpbWU6IElFeGVjdXRpb25SdW50aW1lO1xuICBzY29wZUZhY3Rvcnk6IFNjb3BlRmFjdG9yeTxUU2NvcGU+O1xuICBzdWJmbG93cz86IFJlY29yZDxzdHJpbmcsIHsgcm9vdDogU3RhZ2VOb2RlPFRPdXQsIFRTY29wZT4gfT47XG4gIHRocm90dGxpbmdFcnJvckNoZWNrZXI/OiAoZXJyb3I6IHVua25vd24pID0+IGJvb2xlYW47XG4gIHN0cmVhbUhhbmRsZXJzPzogU3RyZWFtSGFuZGxlcnM7XG4gIHNjb3BlUHJvdGVjdGlvbk1vZGU6IFNjb3BlUHJvdGVjdGlvbk1vZGU7XG4gIHJlYWRPbmx5Q29udGV4dD86IHVua25vd247XG4gIC8qKiBFeGVjdXRpb24gZW52aXJvbm1lbnQg4oCUIHByb3BhZ2F0ZXMgdG8gc3ViZmxvd3MgYXV0b21hdGljYWxseS4gKi9cbiAgZXhlY3V0aW9uRW52PzogRXhlY3V0aW9uRW52O1xuICBuYXJyYXRpdmVHZW5lcmF0b3I6IElDb250cm9sRmxvd05hcnJhdGl2ZTtcbiAgbG9nZ2VyOiBJTG9nZ2VyO1xuICBzaWduYWw/OiBBYm9ydFNpZ25hbDtcbiAgLyoqXG4gICAqIFRoZSByZXN1bWUncyBvbmUtc2hvdCByZS1lbnRyeSAoTTIpIOKAlCBzaGFyZWQgYnkgcmVmZXJlbmNlIHdpdGggZXZlcnlcbiAgICogbmVzdGVkIHRyYXZlcnNlciwgbGlrZSB0aGUgZXhlY3V0aW9uIGNvdW50ZXIuIGBTdWJmbG93RXhlY3V0b3JgIGFza3MgaXRcbiAgICogYXQgZWFjaCBzdWJmbG93IGVudHJ5OiB0aGUgRklSU1QgZW50cnkgaW50byBhIHN1YmZsb3cgb24gdGhlIHBhdXNlIHBhdGhcbiAgICogdGFrZXMgdGhhdCBzdWJmbG93J3MgY2FwdHVyZWQgc3RhdGUgKHNlZWRpbmcgdGhlIG5lc3RlZCBydW50aW1lIGluIHBsYWNlXG4gICAqIG9mIHRoZSBpbnB1dE1hcHBlcidzIHZhbHVlcyDigJQgdGhlIG1hcHBlciBzdGlsbCBydW5zIGZvciB0aGUgcmVhZC1vbmx5XG4gICAqIGFyZ3MpLCBpdHMgZW50cnkgcG9pbnQgYW5kIGFueSBzaWJsaW5nIHBhdXNlcyB3YWl0aW5nIHRoZXJlOyBldmVyeSBsYXRlclxuICAgKiBlbnRyeSBpcyBhbiBvcmRpbmFyeSBvbmUuIFNlZSBgUmVzdW1lRW50cnlgLiBVbmRlZmluZWQgb24gbm9ybWFsIGBydW4oKWBcbiAgICogcGF0aHMuXG4gICAqL1xuICByZXN1bWU/OiBSZXN1bWVFbnRyeTxUT3V0LCBUU2NvcGU+O1xufVxuXG4vKiogT3B0aW9ucyBmb3IgRmxvd0NoYXJ0RXhlY3V0b3IucnVuKCkuICovXG5leHBvcnQgaW50ZXJmYWNlIFJ1bk9wdGlvbnMge1xuICAvKiogQWJvcnRTaWduYWwgZm9yIGNvb3BlcmF0aXZlIGNhbmNlbGxhdGlvbi4gKi9cbiAgc2lnbmFsPzogQWJvcnRTaWduYWw7XG4gIC8qKiBUaW1lb3V0IGluIG1pbGxpc2Vjb25kcy4gQ3JlYXRlcyBhbiBpbnRlcm5hbCBBYm9ydENvbnRyb2xsZXIuICovXG4gIHRpbWVvdXRNcz86IG51bWJlcjtcbiAgLyoqXG4gICAqIFJ1bnRpbWUgaW5wdXQgZGF0YSBmb3IgdGhlIHBpcGVsaW5lLlxuICAgKiBCZWNvbWVzIHRoZSByZWFkT25seUNvbnRleHQgYWNjZXNzaWJsZSB2aWEgYHNjb3BlLmdldEFyZ3MoKWAuXG4gICAqIFN0YWdlcyBjYW5ub3Qgb3ZlcndyaXRlIHRoZXNlIGtleXMgd2l0aCBgc2V0VmFsdWUoKWAuXG4gICAqL1xuICBpbnB1dD86IHVua25vd247XG4gIC8qKlxuICAgKiBFeGVjdXRpb24gZW52aXJvbm1lbnQg4oCUIHJlYWQtb25seSBpbmZyYXN0cnVjdHVyZSB2YWx1ZXMgdGhhdCBwcm9wYWdhdGVcbiAgICogdGhyb3VnaCBuZXN0ZWQgZXhlY3V0b3JzIChsaWtlIGBwcm9jZXNzLmVudmAgZm9yIGZsb3djaGFydHMpLlxuICAgKiBBY2Nlc3NpYmxlIHZpYSBgc2NvcGUuZ2V0RW52KClgLiBJbmhlcml0ZWQgYnkgc3ViZmxvd3MgYXV0b21hdGljYWxseS5cbiAgICovXG4gIGVudj86IEV4ZWN1dGlvbkVudjtcbiAgLyoqXG4gICAqIE92ZXJyaWRlIHRoZSBtYXhpbXVtIG5lc3RlZCBgZXhlY3V0ZU5vZGVgIGRlcHRoIGZvciB0aGlzIHJ1bi5cbiAgICogRGVmYXVsdHMgdG8gYEZsb3djaGFydFRyYXZlcnNlci5NQVhfRVhFQ1VURV9ERVBUSGAgKDUwMCkuXG4gICAqXG4gICAqIERlcHRoIGNvdW50cyBUUkVFIG5lc3Rpbmcgb25seSDigJQgZm9yayBjaGlsZHJlbiwgZGVjaWRlci9zZWxlY3RvciBicmFuY2hcbiAgICogZGlzcGF0Y2gsIHJlY3Vyc2l2ZSBjb21wb3NpdGlvbi4gTGluZWFyIGNoYWlucyBhbmQgbG9vcCBpdGVyYXRpb25zIHJ1blxuICAgKiBvbiBhIGZsYXQgdHJhbXBvbGluZSBhbmQgbmV2ZXIgY29uc3VtZSBkZXB0aCwgc28gdGhpcyByYXJlbHkgbmVlZHNcbiAgICogcmFpc2luZy4gTXVzdCBiZSA+PSAxLlxuICAgKi9cbiAgbWF4RGVwdGg/OiBudW1iZXI7XG4gIC8qKlxuICAgKiBPdmVycmlkZSB0aGUgbWF4aW11bSBsb29wIGl0ZXJhdGlvbnMgcGVyIG5vZGUgZm9yIHRoaXMgcnVuICh0aGVcbiAgICogYENvbnRpbnVhdGlvblJlc29sdmVyYCBpbmZpbml0ZS1sb29wIGd1YXJkKS4gRGVmYXVsdHMgdG8gMTAwMC5cbiAgICogVGhpcyBpcyB0aGUgYmluZGluZyBjb25zdHJhaW50IGZvciBsb29wLWhlYXZ5IHBpcGVsaW5lcyDigJQgcmFpc2UgaXQgZm9yXG4gICAqIGxlZ2l0aW1hdGVseSBsb25nIGxvb3BzIChgbG9vcFRvYCBjaGFpbnMgcnVuIHdpdGggYSBmbGF0IHN0YWNrLCBzbyBoaWdoXG4gICAqIHZhbHVlcyBhcmUgc2FmZTsgbWVtb3J5IGZvciBzdGF0ZS9uYXJyYXRpdmUgc3RpbGwgZ3Jvd3MgcGVyIGl0ZXJhdGlvbikuXG4gICAqIEFsc28gYm91bmRzIHRoZSBydW4tdG90YWwgY2hhaW4gb2YgZnVuY3Rpb24tYmVhcmluZyBkeW5hbWljIGBuZXh0YFxuICAgKiBjb250aW51YXRpb25zIChmcmVzaCBub2RlcyByZXR1cm5lZCBmcm9tIHN0YWdlcykg4oCUIGEgcnVuYXdheSBkeW5hbWljXG4gICAqIGNoYWluIGVycm9ycyBpbnN0ZWFkIG9mIHJ1bm5pbmcgZm9yZXZlci5cbiAgICogUHJvcGFnYXRlcyB0byBzdWJmbG93cy4gTXVzdCBiZSA+PSAxLlxuICAgKi9cbiAgbWF4SXRlcmF0aW9ucz86IG51bWJlcjtcbn1cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBGbG93IENvbnRyb2wgTmFycmF0aXZlIOKAlCBjYW5vbmljYWwgZGVmaW5pdGlvbnMgbGl2ZSBpbiBtZW1vcnkvdHlwZXMudHNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5leHBvcnQgdHlwZSB7IEZsb3dDb250cm9sVHlwZSwgRmxvd01lc3NhZ2UgfTtcblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBSdW50aW1lIFN0cnVjdHVyZSBNZXRhZGF0YSAodXNlZCBieSBSdW50aW1lU3RydWN0dXJlTWFuYWdlcilcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5leHBvcnQgaW50ZXJmYWNlIFJ1bnRpbWVTdHJ1Y3R1cmVNZXRhZGF0YSB7XG4gIHR5cGU6ICdzdGFnZScgfCAnZGVjaWRlcicgfCAnc2VsZWN0b3InIHwgJ2ZvcmsnIHwgJ3N0cmVhbWluZycgfCAnc3ViZmxvdycgfCAnbG9vcCc7XG4gIHN1YmZsb3dJZD86IHN0cmluZztcbiAgaXNTdWJmbG93Um9vdD86IGJvb2xlYW47XG4gIHN1YmZsb3dOYW1lPzogc3RyaW5nO1xuICAvKiogVHJ1ZSBmb3IgYW4gYGFkZFBhcmFsbGVsRm9yRWFjaGAgZmFuLW91dCAodHlwZSBzdGF5cyBgJ2ZvcmsnYCkuICovXG4gIGlzRHluYW1pY1BhcmFsbGVsPzogYm9vbGVhbjtcbiAgaXNQYXJhbGxlbENoaWxkPzogYm9vbGVhbjtcbiAgcGFyYWxsZWxHcm91cElkPzogc3RyaW5nO1xuICBsb29wVGFyZ2V0Pzogc3RyaW5nO1xuICBpc0R5bmFtaWM/OiBib29sZWFuO1xuICBpc0xvb3BSZWZlcmVuY2U/OiBib29sZWFuO1xuICBzdHJlYW1JZD86IHN0cmluZztcbn1cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBOb2RlIFJlc3VsdFxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbmV4cG9ydCB0eXBlIE5vZGVSZXN1bHRUeXBlID0ge1xuICBpZDogc3RyaW5nO1xuICByZXN1bHQ6IHVua25vd247XG4gIGlzRXJyb3I/OiBib29sZWFuO1xufTtcblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBFeGVjdXRpb24gUmVzcG9uc2Vcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5leHBvcnQgdHlwZSBCcmFuY2hSZXN1bHQgPSB7XG4gIHJlc3VsdDogc3RyaW5nIHwgRXJyb3I7XG4gIGlzRXJyb3I6IGJvb2xlYW47XG59O1xuXG5leHBvcnQgdHlwZSBCcmFuY2hSZXN1bHRzID0geyBbYnJhbmNoSWQ6IHN0cmluZ106IEJyYW5jaFJlc3VsdCB9O1xuZXhwb3J0IHR5cGUgVHJhdmVyc2FsUmVzdWx0ID0gQnJhbmNoUmVzdWx0cyB8IHN0cmluZyB8IEVycm9yO1xuXG4vKiogUmV0dXJuZWQgYnkgcnVuKCkvcmVzdW1lKCkgd2hlbiBleGVjdXRpb24gcGF1c2VzLiAqL1xuZXhwb3J0IHR5cGUgUGF1c2VkUmVzdWx0ID0ge1xuICByZWFkb25seSBwYXVzZWQ6IHRydWU7XG4gIHJlYWRvbmx5IGNoZWNrcG9pbnQ6IGltcG9ydCgnLi4vcGF1c2UvdHlwZXMuanMnKS5GbG93Y2hhcnRDaGVja3BvaW50O1xufTtcblxuLyoqIEZ1bGwgcmV0dXJuIHR5cGUgb2YgRmxvd0NoYXJ0RXhlY3V0b3IucnVuKCkgYW5kIHJlc3VtZSgpLiAqL1xuZXhwb3J0IHR5cGUgRXhlY3V0b3JSZXN1bHQgPSBUcmF2ZXJzYWxSZXN1bHQgfCBQYXVzZWRSZXN1bHQ7XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gU2VyaWFsaXplZCBQaXBlbGluZSBTdHJ1Y3R1cmUgKGZvciB2aXN1YWxpemF0aW9uKVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbmV4cG9ydCBpbnRlcmZhY2UgU2VyaWFsaXplZFBpcGVsaW5lTm9kZSB7XG4gIG5hbWU6IHN0cmluZztcbiAgaWQ6IHN0cmluZztcbiAgdHlwZT86XG4gICAgfCAnc3RhZ2UnXG4gICAgfCAnZGVjaWRlcidcbiAgICB8ICdzZWxlY3RvcidcbiAgICB8ICdmb3JrJ1xuICAgIHwgJ3N0cmVhbWluZydcbiAgICB8ICdzdWJmbG93J1xuICAgIHwgJ2xvb3AnXG4gICAgfCAndXNlcidcbiAgICB8ICd0b29sJ1xuICAgIHwgJ2Z1bmN0aW9uJ1xuICAgIHwgJ3NlcXVlbmNlJztcbiAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gIGNoaWxkcmVuPzogU2VyaWFsaXplZFBpcGVsaW5lTm9kZVtdO1xuICBuZXh0PzogU2VyaWFsaXplZFBpcGVsaW5lTm9kZTtcbiAgYnJhbmNoZXM/OiBSZWNvcmQ8c3RyaW5nLCBTZXJpYWxpemVkUGlwZWxpbmVOb2RlPjtcbiAgaGFzRGVjaWRlcj86IGJvb2xlYW47XG4gIGhhc1NlbGVjdG9yPzogYm9vbGVhbjtcbiAgaGFzU3VidHJlZT86IGJvb2xlYW47XG4gIGlzU3RyZWFtaW5nPzogYm9vbGVhbjtcbiAgc3RyZWFtSWQ/OiBzdHJpbmc7XG4gIGlzU3ViZmxvd1Jvb3Q/OiBib29sZWFuO1xuICBzdWJmbG93SWQ/OiBzdHJpbmc7XG4gIHN1YmZsb3dOYW1lPzogc3RyaW5nO1xuICBsb29wVGFyZ2V0Pzogc3RyaW5nO1xuICBpc0xvb3BSZWZlcmVuY2U/OiBib29sZWFuO1xuICBpc1BhcmFsbGVsQ2hpbGQ/OiBib29sZWFuO1xuICBwYXJhbGxlbEdyb3VwSWQ/OiBzdHJpbmc7XG4gIGlzRHluYW1pYz86IGJvb2xlYW47XG4gIC8qKiBXaGVuIHRydWUsIHRoaXMgc3RhZ2UgY2FuIHBhdXNlIGV4ZWN1dGlvbiAoUGF1c2FibGVIYW5kbGVyIHBhdHRlcm4pLiAqL1xuICBpc1BhdXNhYmxlPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFRydWUgZm9yIGFuIGBhZGRQYXJhbGxlbEZvckVhY2hgIGZhbi1vdXQg4oCUIGJyYW5jaCBDT1VOVCBkZWNpZGVkIGF0IHJ1bnRpbWVcbiAgICogZnJvbSB0aGUgcGF5bG9hZC4gQSBmbGFnLCBub3QgYSB0eXBlOiBgdHlwZWAgc3RheXMgYCdmb3JrJ2Agc28gZXZlcnlcbiAgICogZXhpc3RpbmcgY29uc3VtZXIgcmVuZGVycyBpdCBjb3JyZWN0bHkgKGl0IElTIGEgZmFuLW91dCksIGFuZCBhIGNvbnN1bWVyXG4gICAqIHRoYXQgd2FudHMgdG8gc2F5IFwib25lIGJyYW5jaCBwZXIgaXRlbVwiIGNhbiByZWFkIHRoaXMuXG4gICAqL1xuICBpc0R5bmFtaWNQYXJhbGxlbD86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBUb3RhbCBhdHRlbXB0cyB0aGlzIHN0YWdlJ3MgZnVuY3Rpb24gbWF5IHJ1biwgZnJvbSBpdHMgZGVjbGFyZWRcbiAgICoge0BsaW5rIFJldHJ5UG9saWN5fS4gUHJlc2VudCBvbmx5IHdoZW4gYSBwb2xpY3kgd2FzIGRlY2xhcmVkLiBUaGUgQ09VTlRcbiAgICogb25seSDigJQgYGJhY2tvZmZNc2AgYW5kIGByZXRyeU9uYCBjYW4gYmUgZnVuY3Rpb25zLCB3aGljaCBhIEpTT04tc2FmZSBzcGVjXG4gICAqIGNhbm5vdCBjYXJyeS5cbiAgICovXG4gIHJldHJ5QXR0ZW1wdHM/OiBudW1iZXI7XG4gIC8qKlxuICAgKiBEZWNsYXJlZCB0YWdzICg5LjIxLjApIOKAlCB0aGUgbmFtZXMgdGhlIGF1dGhvciBwdXQgb24gdGhpcyBzdGFnZSBhdCBidWlsZFxuICAgKiB0aW1lLCBjb3BpZWQgYXMtaXMuIEZyZWUgc3RyaW5nczsgZm9vdHByaW50anMgYXNzaWducyB0aGVtIG5vIG1lYW5pbmcuXG4gICAqIEFic2VudCB3aGVuIHRoZSBzdGFnZSBkZWNsYXJlcyBub25lLlxuICAgKi9cbiAgdGFncz86IHJlYWRvbmx5IHN0cmluZ1tdO1xufVxuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIEZsb3dDaGFydCBpcyBkZWZpbmVkIGluIGAuLi9idWlsZGVyL3R5cGVzLnRzYC4gVGhlIGVuZ2luZSBsYXllciBjb25zdW1lcyBpdFxuLy8gdmlhIGltcG9ydCBmcm9tIHRoZXJlLiBBIGR1cGxpY2F0ZSBtaW5pbWFsIGRlZmluaXRpb24gcHJldmlvdXNseSBsaXZlZCBoZXJlXG4vLyBhbmQgY2F1c2VkIFRTIGNvbmZ1c2lvbiBhdCBjb21wb3NpdGlvbiBib3VuZGFyaWVzIChDb21wb3NhYmxlUnVubmVyIHZzXG4vLyBhZGRTdWJGbG93Q2hhcnQgcGFyYW1ldGVyKS4gU2luZ2xlIHNvdXJjZSBvZiB0cnV0aCBub3cgbGl2ZXMgaW4gYnVpbGRlci8uXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuLyoqIEFsaWFzIGZvciBTZXJpYWxpemVkUGlwZWxpbmVOb2RlIHVzZWQgYXMgZnVsbCBzdHJ1Y3R1cmUgKi9cbmV4cG9ydCB0eXBlIFNlcmlhbGl6ZWRQaXBlbGluZVN0cnVjdHVyZSA9IFNlcmlhbGl6ZWRQaXBlbGluZU5vZGUgJiB7XG4gIGJyYW5jaElkcz86IHN0cmluZ1tdO1xuICBzdWJmbG93U3RydWN0dXJlPzogU2VyaWFsaXplZFBpcGVsaW5lU3RydWN0dXJlO1xuICBpdGVyYXRpb25Db3VudD86IG51bWJlcjtcbn07XG4iXX0=
|
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
* prefixed by the spec (e.g. `'auth/verify/check'`). Walker
|
|
28
28
|
* preserves this; `subflowPath` field is redundant-but-explicit.
|
|
29
29
|
*/
|
|
30
|
-
import { joinPath } from '
|
|
30
|
+
import { joinPath } from 'foottrace';
|
|
31
31
|
/**
|
|
32
32
|
* Walk a subflow spec, yielding its structure as flat ordered items.
|
|
33
33
|
*
|
|
@@ -166,4 +166,4 @@ function* walkNode(node, subflowPath, recurse, visited) {
|
|
|
166
166
|
}
|
|
167
167
|
}
|
|
168
168
|
}
|
|
169
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2Fsa1N1YmZsb3dTcGVjLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9lbmdpbmUvd2Fsa1N1YmZsb3dTcGVjLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBNEJHO0FBR0gsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBb0RwRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FvQkc7QUFDSCxNQUFNLFNBQVMsQ0FBQyxDQUFDLGVBQWUsQ0FDOUIsSUFBaUMsRUFDakMsV0FBbUIsRUFDbkIsVUFBeUIsRUFBRTtJQUUzQixNQUFNLE9BQU8sR0FBRyxPQUFPLENBQUMsT0FBTyxLQUFLLEtBQUssQ0FBQztJQUUxQyxtRUFBbUU7SUFDbkUsTUFBTTtRQUNKLElBQUksRUFBRSxlQUFlO1FBQ3JCLE9BQU8sRUFBRSxJQUFJLENBQUMsRUFBRTtRQUNoQixXQUFXO1FBQ1gsTUFBTSxFQUFFLFFBQVE7S0FDakIsQ0FBQztJQUVGLEtBQUssQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsV0FBVyxFQUFFLE9BQU8sRUFBRSxJQUFJLEdBQUcsRUFBVSxDQUFDLENBQUM7QUFDakUsQ0FBQztBQUVELFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FDaEIsSUFBaUMsRUFDakMsV0FBbUIsRUFDbkIsT0FBZ0IsRUFDaEIsT0FBb0I7SUFFcEIsSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7UUFBRSxPQUFPO0lBQ2pDLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBRXJCLG9FQUFvRTtJQUNwRSxnRUFBZ0U7SUFDaEUsa0VBQWtFO0lBQ2xFLGtEQUFrRDtJQUNsRCxJQUFJLElBQUksQ0FBQyxlQUFlO1FBQUUsT0FBTztJQUVqQywrREFBK0Q7SUFDL0QsSUFBSSxJQUFJLENBQUMsYUFBYSxJ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LFdBQVc7b0JBQ1gsTUFBTSxFQUFFLFFBQVE7aUJBQ2pCLENBQUM7WUFDSixDQUFDO1lBQ0QsS0FBSyxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxXQUFXLEVBQUUsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ3hELENBQUM7SUFDSCxDQUFDO0lBRUQsZUFBZTtJQUNmLElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ2QsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDakQsTUFBTTtnQkFDSixJQUFJLEVBQUUsTUFBTTtnQkFDWixJQUFJLEVBQUUsSUFBSSxDQUFDLEVBQUU7Z0JBQ2IsRUFBRSxFQUFFLElBQUksQ0FBQyxVQUFVO2dCQUNuQixXQUFXO2dCQUNYLE1BQU0sRUFBRSxRQUFRO2FBQ2pCLENBQUM7UUFDSixDQUFDO2FBQU0sQ0FBQztZQUNOLHVFQUF1RTtZQUN2RSx5RUFBeUU7WUFDekUsSUFBSSxZQUFZLEtBQUssU0FBUyxFQUFFLENBQUM7Z0JBQy9CLE1BQU07b0JBQ0osSUFBSSxFQUFFLE1BQU07b0JBQ1osSUFBSSxFQUFFLElBQUksQ0FBQyxFQUFFO29CQUNiLEVBQUUsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUU7b0JBQ2hCLFFBQVEsRUFBRSxNQUFNO29CQUNoQixXQUFXO29CQUNYLE1BQU0sRUFBRSxRQUFRO2lCQUNqQixDQUFDO1lBQ0osQ0FBQztZQUNELEtBQUssQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLFdBQVcsRUFBRSxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDNUQsQ0FBQztJQUNILENBQUM7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiB3YWxrU3ViZmxvd1NwZWMg4oCUIHlpZWxkIHRoZSBzdHJ1Y3R1cmFsIHNoYXBlIG9mIGEgc3ViZmxvdyBzcGVjIGFzIGFcbiAqIGZsYXQgb3JkZXJlZCBzdHJlYW0gb2YgaXRlbXMsIHdpdGggYHN1YmZsb3dQYXRoYCBhbHJlYWR5IGNvbXBvc2VkXG4gKiBmb3IgbmVzdGVkIHN1YmZsb3dzLlxuICpcbiAqIFRoaXMgaXMgdGhlIHB1YmxpYyBjb250cmFjdCBmb3IgdHJhdmVyc2luZyB0aGUgc3RydWN0dXJlIGRlbGl2ZXJlZFxuICogdmlhIGBTdHJ1Y3R1cmVTdWJmbG93TW91bnRlZEV2ZW50LnN1YmZsb3dTcGVjYC4gSXRlbSBzaGFwZXMgbWlycm9yXG4gKiB0aGUgY29ycmVzcG9uZGluZyBTdHJ1Y3R1cmUgZXZlbnQgcGF5bG9hZHMgc28gY29uc3VtZXJzIGNhbiByb3V0ZVxuICogd2Fsa2VyIGl0ZW1zIHRocm91Z2ggdGhlIHNhbWUgaGFuZGxlcnMgdGhleSB1c2UgZm9yIGxpdmUgZXZlbnRzLlxuICpcbiAqIFdhbGtlciBjb250cmFjdCAoTE9DS0VEKTpcbiAqICAgMS4gQVVUTy1SRUNVUlNFIGJ5IGRlZmF1bHQgaW50byBuZXN0ZWQgc3ViZmxvd3MsIHdpdGggY29tcG9zZWRcbiAqICAgICAgcGF0aHMgKGBwYXJlbnQvY2hpbGQvLi4uYCkuIFBhc3MgYHsgcmVjdXJzZTogZmFsc2UgfWAgdG8gd2Fsa1xuICogICAgICBvbmx5IG9uZSBsZXZlbC5cbiAqICAgMi4gRU5UUlktU1RBR0UgTUFSS0VSIEZJUlNUOiBmb3IgZWFjaCBzdWJmbG93ICh0b3AtbGV2ZWwgYW5kXG4gKiAgICAgIG5lc3RlZCksIHlpZWxkcyBhIGB7IGtpbmQ6ICdzdWJmbG93LXN0YXJ0JywgLi4uIH1gIGl0ZW0gQkVGT1JFXG4gKiAgICAgIGFueSBzdGFnZS9lZGdlIGl0ZW1zIGZyb20gdGhhdCBzdWJmbG93LiBMZXRzIGNvbnN1bWVycyBkcmF3IHRoZVxuICogICAgICBib3VuZGFyeSBlZGdlIGZyb20gdGhlIG1vdW50IG5vZGUgdG8gdGhlIGVudHJ5IHN0YWdlLlxuICogICAzLiBDT01QT1NFRCBQQVRIUzogbmVzdGVkIHN1YmZsb3dzIGdldCBgcGFyZW50UGF0aCArICcvJyArIGxvY2FsSWRgLlxuICogICAgICBUb3AtbGV2ZWwgbW91bnQgcGF0aHMgYXJlIGxvY2FsLW9ubHkgKGAnYXV0aCdgLCBOT1QgYCdfX3Jvb3RfXy9hdXRoJ2ApLlxuICogICA0LiBTSEFQRSBNSVJST1JJTkc6IHN0YWdlL2VkZ2UvbG9vcCBpdGVtcyBoYXZlIHRoZSBzYW1lIHBheWxvYWRcbiAqICAgICAgc2hhcGUgYXMgU3RydWN0dXJlIGV2ZW50cywgd2l0aCBgc3ViZmxvd1BhdGhgIGFkZGVkLlxuICogICA1LiBTT1VSQ0UgRElTQ1JJTUlOQVRPUjogZXZlcnkgd2Fsa2VyIGl0ZW0gY2FycmllcyBgc291cmNlOiAnd2Fsa2VyJ2BcbiAqICAgICAgKFN0cnVjdHVyZSBldmVudHMgZG8gTk9UKS4gTGV0cyBjb25zdW1lcnMgZGlzdGluZ3Vpc2ggZXZlbnQgdnNcbiAqICAgICAgd2Fsa2VyIGluIGxvZ3MvZGVidWdnZXJzIHdoaWxlIHN0aWxsIHNoYXJpbmcgaGFuZGxlciBjb2RlIHBhdGhzLlxuICogICA2LiBTVEFHRS1JRCBQUkVGSVhJTkc6IHN0YWdlIElEcyBpbiBuZXN0ZWQgc3ViZmxvd3MgYXJlIGFscmVhZHlcbiAqICAgICAgcHJlZml4ZWQgYnkgdGhlIHNwZWMgKGUuZy4gYCdhdXRoL3ZlcmlmeS9jaGVjaydgKS4gV2Fsa2VyXG4gKiAgICAgIHByZXNlcnZlcyB0aGlzOyBgc3ViZmxvd1BhdGhgIGZpZWxkIGlzIHJlZHVuZGFudC1idXQtZXhwbGljaXQuXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBTZXJpYWxpemVkUGlwZWxpbmVTdHJ1Y3R1cmUgfSBmcm9tICcuLi9idWlsZGVyL3R5cGVzLmpzJztcbmltcG9ydCB7IGpvaW5QYXRoIH0gZnJvbSAnLi4vaWRzL3J1bnRpbWVTdGFnZUlkLmpzJztcblxuZXhwb3J0IGludGVyZmFjZSBXYWxrZXJPcHRpb25zIHtcbiAgLyoqIEF1dG8tcmVjdXJzZSBpbnRvIG5lc3RlZCBzdWJmbG93cyAoZGVmYXVsdDogdHJ1ZSkuIFdoZW4gZmFsc2UsXG4gICAqICBuZXN0ZWQgc3ViZmxvdyBpdGVtcyBhcmUgeWllbGRlZCBidXQgdGhlaXIgaW50ZXJuYWxzIGFyZSBub3RcbiAgICogIHRyYXZlcnNlZC4gKi9cbiAgcmVjdXJzZT86IGJvb2xlYW47XG59XG5cbmV4cG9ydCB0eXBlIFdhbGtlckl0ZW0gPVxuICB8IHtcbiAgICAgIGtpbmQ6ICdzdWJmbG93LXN0YXJ0JztcbiAgICAgIHN0YWdlSWQ6IHN0cmluZztcbiAgICAgIHN1YmZsb3dQYXRoOiBzdHJpbmc7XG4gICAgICBzb3VyY2U6ICd3YWxrZXInO1xuICAgIH1cbiAgfCB7XG4gICAgICBraW5kOiAnc3RhZ2UnO1xuICAgICAgc3RhZ2VJZDogc3RyaW5nO1xuICAgICAgbmFtZTogc3RyaW5nO1xuICAgICAgdHlwZTogTm9uTnVsbGFibGU8U2VyaWFsaXplZFBpcGVsaW5lU3RydWN0dXJlWyd0eXBlJ10+O1xuICAgICAgaXNQYXVzYWJsZT86IGJvb2xlYW47XG4gICAgICBzcGVjOiBTZXJpYWxpemVkUGlwZWxpbmVTdHJ1Y3R1cmU7XG4gICAgICBzdWJmbG93UGF0aDogc3RyaW5nO1xuICAgICAgc291cmNlOiAnd2Fsa2VyJztcbiAgICB9XG4gIHwge1xuICAgICAga2luZDogJ2VkZ2UnO1xuICAgICAgZnJvbTogc3RyaW5nO1xuICAgICAgdG86IHN0cmluZztcbiAgICAgIGVkZ2VLaW5kOiAnbmV4dCcgfCAnZm9yay1icmFuY2gnIHwgJ2RlY2lzaW9uLWJyYW5jaCc7XG4gICAgICBsYWJlbD86IHN0cmluZztcbiAgICAgIHN1YmZsb3dQYXRoOiBzdHJpbmc7XG4gICAgICBzb3VyY2U6ICd3YWxrZXInO1xuICAgIH1cbiAgfCB7XG4gICAgICBraW5kOiAnbG9vcCc7XG4gICAgICBmcm9tOiBzdHJpbmc7XG4gICAgICB0bzogc3RyaW5nO1xuICAgICAgc3ViZmxvd1BhdGg6IHN0cmluZztcbiAgICAgIHNvdXJjZTogJ3dhbGtlcic7XG4gICAgfVxuICB8IHtcbiAgICAgIGtpbmQ6ICdzdWJmbG93JztcbiAgICAgIG1vdW50U3RhZ2VJZDogc3RyaW5nO1xuICAgICAgc3ViZmxvd0lkOiBzdHJpbmc7XG4gICAgICBzdWJmbG93TmFtZTogc3RyaW5nO1xuICAgICAgc3ViZmxvd1NwZWM6IFNlcmlhbGl6ZWRQaXBlbGluZVN0cnVjdHVyZTtcbiAgICAgIHN1YmZsb3dQYXRoOiBzdHJpbmc7XG4gICAgICBzb3VyY2U6ICd3YWxrZXInO1xuICAgIH07XG5cbi8qKlxuICogV2FsayBhIHN1YmZsb3cgc3BlYywgeWllbGRpbmcgaXRzIHN0cnVjdHVyZSBhcyBmbGF0IG9yZGVyZWQgaXRlbXMuXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHRzXG4gKiBpbXBvcnQgeyB3YWxrU3ViZmxvd1NwZWMgfSBmcm9tICdmb290cHJpbnRqcy90cmFjZSc7XG4gKlxuICogb25TdWJmbG93TW91bnRlZChldmVudCkge1xuICogICBpZiAoIWV2ZW50LnN1YmZsb3dTcGVjKSByZXR1cm47IC8vIGxhenkgbW91bnQg4oCUIG5vIHNwZWMgeWV0XG4gKiAgIGZvciAoY29uc3QgaXRlbSBvZiB3YWxrU3ViZmxvd1NwZWMoZXZlbnQuc3ViZmxvd1NwZWMsIGV2ZW50LnN1YmZsb3dQYXRoKSkge1xuICogICAgIHN3aXRjaCAoaXRlbS5raW5kKSB7XG4gKiAgICAgICBjYXNlICdzdWJmbG93LXN0YXJ0JzogYnJlYWs7ICAgICAgICAvLyBlbnRyeSBib3VuZGFyeVxuICogICAgICAgY2FzZSAnc3RhZ2UnOiAgICAgICAgIGJyZWFrOyAgICAgICAgLy8gaW5uZXIgc3RhZ2VcbiAqICAgICAgIGNhc2UgJ2VkZ2UnOiAgICAgICAgICBicmVhazsgICAgICAgIC8vIGlubmVyIGVkZ2VcbiAqICAgICAgIGNhc2UgJ2xvb3AnOiAgICAgICAgICBicmVhazsgICAgICAgIC8vIGlubmVyIGxvb3AgYmFjay1lZGdlXG4gKiAgICAgICBjYXNlICdzdWJmbG93JzogICAgICAgYnJlYWs7ICAgICAgICAvLyBuZXN0ZWQgbW91bnQgbWFya2VyXG4gKiAgICAgfVxuICogICB9XG4gKiB9XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uKiB3YWxrU3ViZmxvd1NwZWMoXG4gIHNwZWM6IFNlcmlhbGl6ZWRQaXBlbGluZVN0cnVjdHVyZSxcbiAgc3ViZmxvd1BhdGg6IHN0cmluZyxcbiAgb3B0aW9uczogV2Fsa2VyT3B0aW9ucyA9IHt9LFxuKTogR2VuZXJhdG9yPFdhbGtlckl0ZW0sIHZvaWQsIHZvaWQ+IHtcbiAgY29uc3QgcmVjdXJzZSA9IG9wdGlvbnMucmVjdXJzZSAhPT0gZmFsc2U7XG5cbiAgLy8gRW50cnkgbWFya2VyIGZpcnN0IOKAlCBjb25zdW1lciBkcmF3cyB0aGUgYm91bmRhcnkgZWRnZSBmcm9tIHRoaXMuXG4gIHlpZWxkIHtcbiAgICBraW5kOiAnc3ViZmxvdy1zdGFydCcsXG4gICAgc3RhZ2VJZDogc3BlYy5pZCxcbiAgICBzdWJmbG93UGF0aCxcbiAgICBzb3VyY2U6ICd3YWxrZXInLFxuICB9O1xuXG4gIHlpZWxkKiB3YWxrTm9kZShzcGVjLCBzdWJmbG93UGF0aCwgcmVjdXJzZSwgbmV3IFNldDxzdHJpbmc+KCkpO1xufVxuXG5mdW5jdGlvbiogd2Fsa05vZGUoXG4gIG5vZGU6IFNlcmlhbGl6ZWRQaXBlbGluZVN0cnVjdHVyZSxcbiAgc3ViZmxvd1BhdGg6IHN0cmluZyxcbiAgcmVjdXJzZTogYm9vbGVhbixcbiAgdmlzaXRlZDogU2V0PHN0cmluZz4sXG4pOiBHZW5lcmF0b3I8V2Fsa2VySXRlbSwgdm9pZCwgdm9pZD4ge1xuICBpZiAodmlzaXRlZC5oYXMobm9kZS5pZCkpIHJldHVybjtcbiAgdmlzaXRlZC5hZGQobm9kZS5pZCk7XG5cbiAgLy8gTG9vcCByZWZlcmVuY2Ug4oCUIHlpZWxkIGFzIGEgbG9vcCBlZGdlIGZyb20gcHJldmlvdXMtaW4tY29udGV4dCB0b1xuICAvLyB0aGUgdGFyZ2V0OyB0aGUgY2FsbGVyIChjYWxsZXIgb2Ygd2Fsa05vZGUgZm9yIHRoZSBwYXJlbnQpIGlzXG4gIC8vIHJlc3BvbnNpYmxlIGZvciBlbWl0dGluZyB0aGUgbG9vcCBlZGdlIHdpdGggdGhlIGNvcnJlY3QgYGZyb21gLlxuICAvLyBXZSBuZXZlciByZS15aWVsZCBhIHN0YWdlIGZvciBhIGxvb3AgcmVmZXJlbmNlLlxuICBpZiAobm9kZS5pc0xvb3BSZWZlcmVuY2UpIHJldHVybjtcblxuICAvLyBOZXN0ZWQgc3ViZmxvdyBtb3VudCDigJQgeWllbGQgdGhlIG1hcmtlciwgb3B0aW9uYWxseSByZWN1cnNlLlxuICBpZiAobm9kZS5pc1N1YmZsb3dSb290ICYmIG5vZGUuc3ViZmxvd0lkICE9PSB1bmRlZmluZWQpIHtcbiAgICBjb25zdCBuZXN0ZWRQYXRoID0gam9pblBhdGgoc3ViZmxvd1BhdGgsIG5vZGUuc3ViZmxvd0lkKTtcbiAgICBjb25zdCBuZXN0ZWRTcGVjID0gbm9kZS5zdWJmbG93U3RydWN0dXJlO1xuICAgIGlmIChuZXN0ZWRTcGVjKSB7XG4gICAgICB5aWVsZCB7XG4gICAgICAgIGtpbmQ6ICdzdWJmbG93JyxcbiAgICAgICAgbW91bnRTdGFnZUlkOiBub2RlLmlkLFxuICAgICAgICBzdWJmbG93SWQ6IG5vZGUuc3ViZmxvd0lkLFxuICAgICAgICBzdWJmbG93TmFtZTogbm9kZS5zdWJmbG93TmFtZSA/PyBub2RlLnN1YmZsb3dJZCxcbiAgICAgICAgc3ViZmxvd1NwZWM6IG5lc3RlZFNwZWMsXG4gICAgICAgIHN1YmZsb3dQYXRoOiBuZXN0ZWRQYXRoLFxuICAgICAgICBzb3VyY2U6ICd3YWxrZXInLFxuICAgICAgfTtcbiAgICAgIGlmIChyZWN1cnNlKSB7XG4gICAgICAgIHlpZWxkKiB3YWxrU3ViZmxvd1NwZWMobmVzdGVkU3BlYywgbmVzdGVkUGF0aCwgeyByZWN1cnNlIH0pO1xuICAgICAgfVxuICAgICAgLy8gRmFsbCB0aHJvdWdoIHRvIG5leHQvY2hpbGRyZW4g4oCUIHRoZSBtb3VudCBub2RlIHN0aWxsIGhhcyBhXG4gICAgICAvLyBtb3VudC1zaWRlIHN0YWdlIHJlcHJlc2VudGF0aW9uIHRoYXQgbWF5IGhhdmUgb3V0Z29pbmcgZWRnZXMuXG4gICAgfVxuICB9XG5cbiAgLy8gWWllbGQgdGhlIHN0YWdlIGl0c2VsZi5cbiAgeWllbGQge1xuICAgIGtpbmQ6ICdzdGFnZScsXG4gICAgc3RhZ2VJZDogbm9kZS5pZCxcbiAgICBuYW1lOiBub2RlLm5hbWUsXG4gICAgdHlwZTogbm9kZS50eXBlLFxuICAgIC4uLihub2RlLmlzUGF1c2FibGUgPT09IHRydWUgJiYgeyBpc1BhdXNhYmxlOiB0cnVlIH0pLFxuICAgIHNwZWM6IG5vZGUsXG4gICAgc3ViZmxvd1BhdGgsXG4gICAgc291cmNlOiAnd2Fsa2VyJyxcbiAgfTtcblxuICAvLyBBIEZBTi1PVVQgKHNlbGVjdG9yL2ZvcmspIOKAlCBldmVyeSBicmFuY2ggcnVucywgdGhlbiB0aGUgbm9kZSdzIGBuZXh0YFxuICAvLyBydW5zICh0aGUgam9pbikuIFRoaXMgaXMgZW5naW5lIHNlbWFudGljcywgc28gd2UgYWx3YXlzIHJlbmRlciB0aGUgdHJ1ZVxuICAvLyB0b3BvbG9neTogZWFjaCBicmFuY2gg4oaSIHRoYXQgam9pbiwgYW5kIHRoZSBub2RlJ3Mgb3duIGRpcmVjdCDihpIgbmV4dFxuICAvLyBcInNraXBcIiBlZGdlIHN1cHByZXNzZWQgKGZsb3cgZ29lcyBmb3JrIOKGkiBicmFuY2hlcyDihpIgam9pbiwgbmV2ZXIgZm9yayDihpJcbiAgLy8gam9pbiBkaXJlY3RseSkuIERlY2lkZXJzIChPTkUgYnJhbmNoIGNob3NlbiwgYnJhbmNoZXMgZ2VudWluZWx5IGRpdmVyZ2UpXG4gIC8vIGFyZSBOT1QgZmFuLW91dHMgYW5kIGFyZSBsZWZ0IGFsb25lLiBgbmV4dGAgbXVzdCBiZSBhIHJlYWwgc3RhZ2UgKG5vdCBhXG4gIC8vIGxvb3AgYmFjay1lZGdlKS5cbiAgY29uc3QgaXNGYW5PdXQgPSBub2RlLnR5cGUgPT09ICdmb3JrJyB8fCBub2RlLmhhc1NlbGVjdG9yID09PSB0cnVlO1xuICBjb25zdCBmYW5PdXRKb2luSWQgPSBpc0Zhbk91dCAmJiBub2RlLm5leHQgJiYgbm9kZS5uZXh0LmlzTG9vcFJlZmVyZW5jZSAhPT0gdHJ1ZSA/IG5vZGUubmV4dC5pZCA6IHVuZGVmaW5lZDtcblxuICAvLyBDaGlsZHJlbiAoZGVjaWRlci9zZWxlY3Rvci9mb3JrIGJyYW5jaGVzKS5cbiAgaWYgKG5vZGUuY2hpbGRyZW4gJiYgbm9kZS5jaGlsZHJlbi5sZW5ndGggPiAwKSB7XG4gICAgY29uc3QgZWRnZUtpbmQ6ICdmb3JrLWJyYW5jaCcgfCAnZGVjaXNpb24tYnJhbmNoJyA9IG5vZGUudHlwZSA9PT0gJ2ZvcmsnID8gJ2ZvcmstYnJhbmNoJyA6ICdkZWNpc2lvbi1icmFuY2gnO1xuICAgIGZvciAoY29uc3QgY2hpbGQgb2Ygbm9kZS5jaGlsZHJlbikge1xuICAgICAgeWllbGQge1xuICAgICAgICBraW5kOiAnZWRnZScsXG4gICAgICAgIGZyb206IG5vZGUuaWQsXG4gICAgICAgIHRvOiBjaGlsZC5pZCxcbiAgICAgICAgZWRnZUtpbmQsXG4gICAgICAgIC4uLihlZGdlS2luZCA9PT0gJ2RlY2lzaW9uLWJyYW5jaCcgJiYgY2hpbGQuaWQgIT09IHVuZGVmaW5lZCAmJiB7IGxhYmVsOiBjaGlsZC5pZCB9KSxcbiAgICAgICAgc3ViZmxvd1BhdGgsXG4gICAgICAgIHNvdXJjZTogJ3dhbGtlcicsXG4gICAgICB9O1xuICAgICAgLy8gQ29udmVyZ2VuY2UgZWRnZTogdGhpcyBicmFuY2ggbWVyZ2VzIGludG8gdGhlIGZhbi1vdXQncyBqb2luIHN0YWdlLlxuICAgICAgaWYgKGZhbk91dEpvaW5JZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHlpZWxkIHtcbiAgICAgICAgICBraW5kOiAnZWRnZScsXG4gICAgICAgICAgZnJvbTogY2hpbGQuaWQsXG4gICAgICAgICAgdG86IGZhbk91dEpvaW5JZCxcbiAgICAgICAgICBlZGdlS2luZDogJ25leHQnLFxuICAgICAgICAgIHN1YmZsb3dQYXRoLFxuICAgICAgICAgIHNvdXJjZTogJ3dhbGtlcicsXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICB5aWVsZCogd2Fsa05vZGUoY2hpbGQsIHN1YmZsb3dQYXRoLCByZWN1cnNlLCB2aXNpdGVkKTtcbiAgICB9XG4gIH1cblxuICAvLyBMaW5lYXIgbmV4dC5cbiAgaWYgKG5vZGUubmV4dCkge1xuICAgIGlmIChub2RlLm5leHQuaXNMb29wUmVmZXJlbmNlICYmIG5vZGUubG9vcFRhcmdldCkge1xuICAgICAgeWllbGQge1xuICAgICAgICBraW5kOiAnbG9vcCcsXG4gICAgICAgIGZyb206IG5vZGUuaWQsXG4gICAgICAgIHRvOiBub2RlLmxvb3BUYXJnZXQsXG4gICAgICAgIHN1YmZsb3dQYXRoLFxuICAgICAgICBzb3VyY2U6ICd3YWxrZXInLFxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gU3VwcHJlc3MgdGhlIGRpcmVjdCBub2RlIOKGkiBuZXh0IGVkZ2Ugd2hlbiB0aGUgYnJhbmNoZXMgYWxyZWFkeSBjYXJyeVxuICAgICAgLy8gdGhlIGNvbnZlcmdlbmNlIHRvIGl0IChmYW5PdXRKb2luSWQpOyBzdGlsbCB3YWxrIG5leHQgc28gaXQncyBlbWl0dGVkLlxuICAgICAgaWYgKGZhbk91dEpvaW5JZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHlpZWxkIHtcbiAgICAgICAgICBraW5kOiAnZWRnZScsXG4gICAgICAgICAgZnJvbTogbm9kZS5pZCxcbiAgICAgICAgICB0bzogbm9kZS5uZXh0LmlkLFxuICAgICAgICAgIGVkZ2VLaW5kOiAnbmV4dCcsXG4gICAgICAgICAgc3ViZmxvd1BhdGgsXG4gICAgICAgICAgc291cmNlOiAnd2Fsa2VyJyxcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIHlpZWxkKiB3YWxrTm9kZShub2RlLm5leHQsIHN1YmZsb3dQYXRoLCByZWN1cnNlLCB2aXNpdGVkKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
|
169
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2Fsa1N1YmZsb3dTcGVjLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9lbmdpbmUvd2Fsa1N1YmZsb3dTcGVjLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBNEJHO0FBRUgsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQXNEckM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBb0JHO0FBQ0gsTUFBTSxTQUFTLENBQUMsQ0FBQyxlQUFlLENBQzlCLElBQWlDLEVBQ2pDLFdBQW1CLEVBQ25CLFVBQXlCLEVBQUU7SUFFM0IsTUFBTSxPQUFPLEdBQUcsT0FBTyxDQUFDLE9BQU8sS0FBSyxLQUFLLENBQUM7SUFFMUMsbUVBQW1FO0lBQ25FLE1BQU07UUFDSixJQUFJLEVBQUUsZUFBZTtRQUNyQixPQUFPLEVBQUUsSUFBSSxDQUFDLEVBQUU7UUFDaEIsV0FBVztRQUNYLE1BQU0sRUFBRSxRQUFRO0tBQ2pCLENBQUM7SUFFRixLQUFLLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLFdBQVcsRUFBRSxPQUFPLEVBQUUsSUFBSSxHQUFHLEVBQVUsQ0FBQyxDQUFDO0FBQ2pFLENBQUM7QUFFRCxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQ2hCLElBQWlDLEVBQ2pDLFdBQW1CLEVBQ25CLE9BQWdCLEVBQ2hCLE9BQW9CO0lBRXBCLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1FBQUUsT0FBTztJQUNqQyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUVyQixvRUFBb0U7SUFDcEUsZ0VBQWdFO0lBQ2hFLGtFQUFrRTtJQUNsRSxrREFBa0Q7SUFDbEQsSUFBSSxJQUFJLENBQUMsZUFBZTtRQUFFLE9BQU87SUFFakMsK0RBQStEO0lBQy9ELElBQUksSUFBSSxDQUFDLGFBQWEsSUFB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QUFXO29CQUNYLE1BQU0sRUFBRSxRQUFRO2lCQUNqQixDQUFDO1lBQ0osQ0FBQztZQUNELEtBQUssQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsV0FBVyxFQUFFLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztRQUN4RCxDQUFDO0lBQ0gsQ0FBQztJQUVELGVBQWU7SUFDZixJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNkLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ2pELE1BQU07Z0JBQ0osSUFBSSxFQUFFLE1BQU07Z0JBQ1osSUFBSSxFQUFFLElBQUksQ0FBQyxFQUFFO2dCQUNiLEVBQUUsRUFBRSxJQUFJLENBQUMsVUFBVTtnQkFDbkIsV0FBVztnQkFDWCxNQUFNLEVBQUUsUUFBUTthQUNqQixDQUFDO1FBQ0osQ0FBQzthQUFNLENBQUM7WUFDTix1RUFBdUU7WUFDdkUseUVBQXlFO1lBQ3pFLElBQUksWUFBWSxLQUFLLFNBQVMsRUFBRSxDQUFDO2dCQUMvQixNQUFNO29CQUNKLElBQUksRUFBRSxNQUFNO29CQUNaLElBQUksRUFBRSxJQUFJLENBQUMsRUFBRTtvQkFDYixFQUFFLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFO29CQUNoQixRQUFRLEVBQUUsTUFBTTtvQkFDaEIsV0FBVztvQkFDWCxNQUFNLEVBQUUsUUFBUTtpQkFDakIsQ0FBQztZQUNKLENBQUM7WUFDRCxLQUFLLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxXQUFXLEVBQUUsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQzVELENBQUM7SUFDSCxDQUFDO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogd2Fsa1N1YmZsb3dTcGVjIOKAlCB5aWVsZCB0aGUgc3RydWN0dXJhbCBzaGFwZSBvZiBhIHN1YmZsb3cgc3BlYyBhcyBhXG4gKiBmbGF0IG9yZGVyZWQgc3RyZWFtIG9mIGl0ZW1zLCB3aXRoIGBzdWJmbG93UGF0aGAgYWxyZWFkeSBjb21wb3NlZFxuICogZm9yIG5lc3RlZCBzdWJmbG93cy5cbiAqXG4gKiBUaGlzIGlzIHRoZSBwdWJsaWMgY29udHJhY3QgZm9yIHRyYXZlcnNpbmcgdGhlIHN0cnVjdHVyZSBkZWxpdmVyZWRcbiAqIHZpYSBgU3RydWN0dXJlU3ViZmxvd01vdW50ZWRFdmVudC5zdWJmbG93U3BlY2AuIEl0ZW0gc2hhcGVzIG1pcnJvclxuICogdGhlIGNvcnJlc3BvbmRpbmcgU3RydWN0dXJlIGV2ZW50IHBheWxvYWRzIHNvIGNvbnN1bWVycyBjYW4gcm91dGVcbiAqIHdhbGtlciBpdGVtcyB0aHJvdWdoIHRoZSBzYW1lIGhhbmRsZXJzIHRoZXkgdXNlIGZvciBsaXZlIGV2ZW50cy5cbiAqXG4gKiBXYWxrZXIgY29udHJhY3QgKExPQ0tFRCk6XG4gKiAgIDEuIEFVVE8tUkVDVVJTRSBieSBkZWZhdWx0IGludG8gbmVzdGVkIHN1YmZsb3dzLCB3aXRoIGNvbXBvc2VkXG4gKiAgICAgIHBhdGhzIChgcGFyZW50L2NoaWxkLy4uLmApLiBQYXNzIGB7IHJlY3Vyc2U6IGZhbHNlIH1gIHRvIHdhbGtcbiAqICAgICAgb25seSBvbmUgbGV2ZWwuXG4gKiAgIDIuIEVOVFJZLVNUQUdFIE1BUktFUiBGSVJTVDogZm9yIGVhY2ggc3ViZmxvdyAodG9wLWxldmVsIGFuZFxuICogICAgICBuZXN0ZWQpLCB5aWVsZHMgYSBgeyBraW5kOiAnc3ViZmxvdy1zdGFydCcsIC4uLiB9YCBpdGVtIEJFRk9SRVxuICogICAgICBhbnkgc3RhZ2UvZWRnZSBpdGVtcyBmcm9tIHRoYXQgc3ViZmxvdy4gTGV0cyBjb25zdW1lcnMgZHJhdyB0aGVcbiAqICAgICAgYm91bmRhcnkgZWRnZSBmcm9tIHRoZSBtb3VudCBub2RlIHRvIHRoZSBlbnRyeSBzdGFnZS5cbiAqICAgMy4gQ09NUE9TRUQgUEFUSFM6IG5lc3RlZCBzdWJmbG93cyBnZXQgYHBhcmVudFBhdGggKyAnLycgKyBsb2NhbElkYC5cbiAqICAgICAgVG9wLWxldmVsIG1vdW50IHBhdGhzIGFyZSBsb2NhbC1vbmx5IChgJ2F1dGgnYCwgTk9UIGAnX19yb290X18vYXV0aCdgKS5cbiAqICAgNC4gU0hBUEUgTUlSUk9SSU5HOiBzdGFnZS9lZGdlL2xvb3AgaXRlbXMgaGF2ZSB0aGUgc2FtZSBwYXlsb2FkXG4gKiAgICAgIHNoYXBlIGFzIFN0cnVjdHVyZSBldmVudHMsIHdpdGggYHN1YmZsb3dQYXRoYCBhZGRlZC5cbiAqICAgNS4gU09VUkNFIERJU0NSSU1JTkFUT1I6IGV2ZXJ5IHdhbGtlciBpdGVtIGNhcnJpZXMgYHNvdXJjZTogJ3dhbGtlcidgXG4gKiAgICAgIChTdHJ1Y3R1cmUgZXZlbnRzIGRvIE5PVCkuIExldHMgY29uc3VtZXJzIGRpc3Rpbmd1aXNoIGV2ZW50IHZzXG4gKiAgICAgIHdhbGtlciBpbiBsb2dzL2RlYnVnZ2VycyB3aGlsZSBzdGlsbCBzaGFyaW5nIGhhbmRsZXIgY29kZSBwYXRocy5cbiAqICAgNi4gU1RBR0UtSUQgUFJFRklYSU5HOiBzdGFnZSBJRHMgaW4gbmVzdGVkIHN1YmZsb3dzIGFyZSBhbHJlYWR5XG4gKiAgICAgIHByZWZpeGVkIGJ5IHRoZSBzcGVjIChlLmcuIGAnYXV0aC92ZXJpZnkvY2hlY2snYCkuIFdhbGtlclxuICogICAgICBwcmVzZXJ2ZXMgdGhpczsgYHN1YmZsb3dQYXRoYCBmaWVsZCBpcyByZWR1bmRhbnQtYnV0LWV4cGxpY2l0LlxuICovXG5cbmltcG9ydCB7IGpvaW5QYXRoIH0gZnJvbSAnZm9vdHRyYWNlJztcblxuaW1wb3J0IHR5cGUgeyBTZXJpYWxpemVkUGlwZWxpbmVTdHJ1Y3R1cmUgfSBmcm9tICcuLi9idWlsZGVyL3R5cGVzLmpzJztcblxuZXhwb3J0IGludGVyZmFjZSBXYWxrZXJPcHRpb25zIHtcbiAgLyoqIEF1dG8tcmVjdXJzZSBpbnRvIG5lc3RlZCBzdWJmbG93cyAoZGVmYXVsdDogdHJ1ZSkuIFdoZW4gZmFsc2UsXG4gICAqICBuZXN0ZWQgc3ViZmxvdyBpdGVtcyBhcmUgeWllbGRlZCBidXQgdGhlaXIgaW50ZXJuYWxzIGFyZSBub3RcbiAgICogIHRyYXZlcnNlZC4gKi9cbiAgcmVjdXJzZT86IGJvb2xlYW47XG59XG5cbmV4cG9ydCB0eXBlIFdhbGtlckl0ZW0gPVxuICB8IHtcbiAgICAgIGtpbmQ6ICdzdWJmbG93LXN0YXJ0JztcbiAgICAgIHN0YWdlSWQ6IHN0cmluZztcbiAgICAgIHN1YmZsb3dQYXRoOiBzdHJpbmc7XG4gICAgICBzb3VyY2U6ICd3YWxrZXInO1xuICAgIH1cbiAgfCB7XG4gICAgICBraW5kOiAnc3RhZ2UnO1xuICAgICAgc3RhZ2VJZDogc3RyaW5nO1xuICAgICAgbmFtZTogc3RyaW5nO1xuICAgICAgdHlwZTogTm9uTnVsbGFibGU8U2VyaWFsaXplZFBpcGVsaW5lU3RydWN0dXJlWyd0eXBlJ10+O1xuICAgICAgaXNQYXVzYWJsZT86IGJvb2xlYW47XG4gICAgICBzcGVjOiBTZXJpYWxpemVkUGlwZWxpbmVTdHJ1Y3R1cmU7XG4gICAgICBzdWJmbG93UGF0aDogc3RyaW5nO1xuICAgICAgc291cmNlOiAnd2Fsa2VyJztcbiAgICB9XG4gIHwge1xuICAgICAga2luZDogJ2VkZ2UnO1xuICAgICAgZnJvbTogc3RyaW5nO1xuICAgICAgdG86IHN0cmluZztcbiAgICAgIGVkZ2VLaW5kOiAnbmV4dCcgfCAnZm9yay1icmFuY2gnIHwgJ2RlY2lzaW9uLWJyYW5jaCc7XG4gICAgICBsYWJlbD86IHN0cmluZztcbiAgICAgIHN1YmZsb3dQYXRoOiBzdHJpbmc7XG4gICAgICBzb3VyY2U6ICd3YWxrZXInO1xuICAgIH1cbiAgfCB7XG4gICAgICBraW5kOiAnbG9vcCc7XG4gICAgICBmcm9tOiBzdHJpbmc7XG4gICAgICB0bzogc3RyaW5nO1xuICAgICAgc3ViZmxvd1BhdGg6IHN0cmluZztcbiAgICAgIHNvdXJjZTogJ3dhbGtlcic7XG4gICAgfVxuICB8IHtcbiAgICAgIGtpbmQ6ICdzdWJmbG93JztcbiAgICAgIG1vdW50U3RhZ2VJZDogc3RyaW5nO1xuICAgICAgc3ViZmxvd0lkOiBzdHJpbmc7XG4gICAgICBzdWJmbG93TmFtZTogc3RyaW5nO1xuICAgICAgc3ViZmxvd1NwZWM6IFNlcmlhbGl6ZWRQaXBlbGluZVN0cnVjdHVyZTtcbiAgICAgIHN1YmZsb3dQYXRoOiBzdHJpbmc7XG4gICAgICBzb3VyY2U6ICd3YWxrZXInO1xuICAgIH07XG5cbi8qKlxuICogV2FsayBhIHN1YmZsb3cgc3BlYywgeWllbGRpbmcgaXRzIHN0cnVjdHVyZSBhcyBmbGF0IG9yZGVyZWQgaXRlbXMuXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHRzXG4gKiBpbXBvcnQgeyB3YWxrU3ViZmxvd1NwZWMgfSBmcm9tICdmb290cHJpbnRqcy90cmFjZSc7XG4gKlxuICogb25TdWJmbG93TW91bnRlZChldmVudCkge1xuICogICBpZiAoIWV2ZW50LnN1YmZsb3dTcGVjKSByZXR1cm47IC8vIGxhenkgbW91bnQg4oCUIG5vIHNwZWMgeWV0XG4gKiAgIGZvciAoY29uc3QgaXRlbSBvZiB3YWxrU3ViZmxvd1NwZWMoZXZlbnQuc3ViZmxvd1NwZWMsIGV2ZW50LnN1YmZsb3dQYXRoKSkge1xuICogICAgIHN3aXRjaCAoaXRlbS5raW5kKSB7XG4gKiAgICAgICBjYXNlICdzdWJmbG93LXN0YXJ0JzogYnJlYWs7ICAgICAgICAvLyBlbnRyeSBib3VuZGFyeVxuICogICAgICAgY2FzZSAnc3RhZ2UnOiAgICAgICAgIGJyZWFrOyAgICAgICAgLy8gaW5uZXIgc3RhZ2VcbiAqICAgICAgIGNhc2UgJ2VkZ2UnOiAgICAgICAgICBicmVhazsgICAgICAgIC8vIGlubmVyIGVkZ2VcbiAqICAgICAgIGNhc2UgJ2xvb3AnOiAgICAgICAgICBicmVhazsgICAgICAgIC8vIGlubmVyIGxvb3AgYmFjay1lZGdlXG4gKiAgICAgICBjYXNlICdzdWJmbG93JzogICAgICAgYnJlYWs7ICAgICAgICAvLyBuZXN0ZWQgbW91bnQgbWFya2VyXG4gKiAgICAgfVxuICogICB9XG4gKiB9XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uKiB3YWxrU3ViZmxvd1NwZWMoXG4gIHNwZWM6IFNlcmlhbGl6ZWRQaXBlbGluZVN0cnVjdHVyZSxcbiAgc3ViZmxvd1BhdGg6IHN0cmluZyxcbiAgb3B0aW9uczogV2Fsa2VyT3B0aW9ucyA9IHt9LFxuKTogR2VuZXJhdG9yPFdhbGtlckl0ZW0sIHZvaWQsIHZvaWQ+IHtcbiAgY29uc3QgcmVjdXJzZSA9IG9wdGlvbnMucmVjdXJzZSAhPT0gZmFsc2U7XG5cbiAgLy8gRW50cnkgbWFya2VyIGZpcnN0IOKAlCBjb25zdW1lciBkcmF3cyB0aGUgYm91bmRhcnkgZWRnZSBmcm9tIHRoaXMuXG4gIHlpZWxkIHtcbiAgICBraW5kOiAnc3ViZmxvdy1zdGFydCcsXG4gICAgc3RhZ2VJZDogc3BlYy5pZCxcbiAgICBzdWJmbG93UGF0aCxcbiAgICBzb3VyY2U6ICd3YWxrZXInLFxuICB9O1xuXG4gIHlpZWxkKiB3YWxrTm9kZShzcGVjLCBzdWJmbG93UGF0aCwgcmVjdXJzZSwgbmV3IFNldDxzdHJpbmc+KCkpO1xufVxuXG5mdW5jdGlvbiogd2Fsa05vZGUoXG4gIG5vZGU6IFNlcmlhbGl6ZWRQaXBlbGluZVN0cnVjdHVyZSxcbiAgc3ViZmxvd1BhdGg6IHN0cmluZyxcbiAgcmVjdXJzZTogYm9vbGVhbixcbiAgdmlzaXRlZDogU2V0PHN0cmluZz4sXG4pOiBHZW5lcmF0b3I8V2Fsa2VySXRlbSwgdm9pZCwgdm9pZD4ge1xuICBpZiAodmlzaXRlZC5oYXMobm9kZS5pZCkpIHJldHVybjtcbiAgdmlzaXRlZC5hZGQobm9kZS5pZCk7XG5cbiAgLy8gTG9vcCByZWZlcmVuY2Ug4oCUIHlpZWxkIGFzIGEgbG9vcCBlZGdlIGZyb20gcHJldmlvdXMtaW4tY29udGV4dCB0b1xuICAvLyB0aGUgdGFyZ2V0OyB0aGUgY2FsbGVyIChjYWxsZXIgb2Ygd2Fsa05vZGUgZm9yIHRoZSBwYXJlbnQpIGlzXG4gIC8vIHJlc3BvbnNpYmxlIGZvciBlbWl0dGluZyB0aGUgbG9vcCBlZGdlIHdpdGggdGhlIGNvcnJlY3QgYGZyb21gLlxuICAvLyBXZSBuZXZlciByZS15aWVsZCBhIHN0YWdlIGZvciBhIGxvb3AgcmVmZXJlbmNlLlxuICBpZiAobm9kZS5pc0xvb3BSZWZlcmVuY2UpIHJldHVybjtcblxuICAvLyBOZXN0ZWQgc3ViZmxvdyBtb3VudCDigJQgeWllbGQgdGhlIG1hcmtlciwgb3B0aW9uYWxseSByZWN1cnNlLlxuICBpZiAobm9kZS5pc1N1YmZsb3dSb290ICYmIG5vZGUuc3ViZmxvd0lkICE9PSB1bmRlZmluZWQpIHtcbiAgICBjb25zdCBuZXN0ZWRQYXRoID0gam9pblBhdGgoc3ViZmxvd1BhdGgsIG5vZGUuc3ViZmxvd0lkKTtcbiAgICBjb25zdCBuZXN0ZWRTcGVjID0gbm9kZS5zdWJmbG93U3RydWN0dXJlO1xuICAgIGlmIChuZXN0ZWRTcGVjKSB7XG4gICAgICB5aWVsZCB7XG4gICAgICAgIGtpbmQ6ICdzdWJmbG93JyxcbiAgICAgICAgbW91bnRTdGFnZUlkOiBub2RlLmlkLFxuICAgICAgICBzdWJmbG93SWQ6IG5vZGUuc3ViZmxvd0lkLFxuICAgICAgICBzdWJmbG93TmFtZTogbm9kZS5zdWJmbG93TmFtZSA/PyBub2RlLnN1YmZsb3dJZCxcbiAgICAgICAgc3ViZmxvd1NwZWM6IG5lc3RlZFNwZWMsXG4gICAgICAgIHN1YmZsb3dQYXRoOiBuZXN0ZWRQYXRoLFxuICAgICAgICBzb3VyY2U6ICd3YWxrZXInLFxuICAgICAgfTtcbiAgICAgIGlmIChyZWN1cnNlKSB7XG4gICAgICAgIHlpZWxkKiB3YWxrU3ViZmxvd1NwZWMobmVzdGVkU3BlYywgbmVzdGVkUGF0aCwgeyByZWN1cnNlIH0pO1xuICAgICAgfVxuICAgICAgLy8gRmFsbCB0aHJvdWdoIHRvIG5leHQvY2hpbGRyZW4g4oCUIHRoZSBtb3VudCBub2RlIHN0aWxsIGhhcyBhXG4gICAgICAvLyBtb3VudC1zaWRlIHN0YWdlIHJlcHJlc2VudGF0aW9uIHRoYXQgbWF5IGhhdmUgb3V0Z29pbmcgZWRnZXMuXG4gICAgfVxuICB9XG5cbiAgLy8gWWllbGQgdGhlIHN0YWdlIGl0c2VsZi5cbiAgeWllbGQge1xuICAgIGtpbmQ6ICdzdGFnZScsXG4gICAgc3RhZ2VJZDogbm9kZS5pZCxcbiAgICBuYW1lOiBub2RlLm5hbWUsXG4gICAgdHlwZTogbm9kZS50eXBlLFxuICAgIC4uLihub2RlLmlzUGF1c2FibGUgPT09IHRydWUgJiYgeyBpc1BhdXNhYmxlOiB0cnVlIH0pLFxuICAgIHNwZWM6IG5vZGUsXG4gICAgc3ViZmxvd1BhdGgsXG4gICAgc291cmNlOiAnd2Fsa2VyJyxcbiAgfTtcblxuICAvLyBBIEZBTi1PVVQgKHNlbGVjdG9yL2ZvcmspIOKAlCBldmVyeSBicmFuY2ggcnVucywgdGhlbiB0aGUgbm9kZSdzIGBuZXh0YFxuICAvLyBydW5zICh0aGUgam9pbikuIFRoaXMgaXMgZW5naW5lIHNlbWFudGljcywgc28gd2UgYWx3YXlzIHJlbmRlciB0aGUgdHJ1ZVxuICAvLyB0b3BvbG9neTogZWFjaCBicmFuY2gg4oaSIHRoYXQgam9pbiwgYW5kIHRoZSBub2RlJ3Mgb3duIGRpcmVjdCDihpIgbmV4dFxuICAvLyBcInNraXBcIiBlZGdlIHN1cHByZXNzZWQgKGZsb3cgZ29lcyBmb3JrIOKGkiBicmFuY2hlcyDihpIgam9pbiwgbmV2ZXIgZm9yayDihpJcbiAgLy8gam9pbiBkaXJlY3RseSkuIERlY2lkZXJzIChPTkUgYnJhbmNoIGNob3NlbiwgYnJhbmNoZXMgZ2VudWluZWx5IGRpdmVyZ2UpXG4gIC8vIGFyZSBOT1QgZmFuLW91dHMgYW5kIGFyZSBsZWZ0IGFsb25lLiBgbmV4dGAgbXVzdCBiZSBhIHJlYWwgc3RhZ2UgKG5vdCBhXG4gIC8vIGxvb3AgYmFjay1lZGdlKS5cbiAgY29uc3QgaXNGYW5PdXQgPSBub2RlLnR5cGUgPT09ICdmb3JrJyB8fCBub2RlLmhhc1NlbGVjdG9yID09PSB0cnVlO1xuICBjb25zdCBmYW5PdXRKb2luSWQgPSBpc0Zhbk91dCAmJiBub2RlLm5leHQgJiYgbm9kZS5uZXh0LmlzTG9vcFJlZmVyZW5jZSAhPT0gdHJ1ZSA/IG5vZGUubmV4dC5pZCA6IHVuZGVmaW5lZDtcblxuICAvLyBDaGlsZHJlbiAoZGVjaWRlci9zZWxlY3Rvci9mb3JrIGJyYW5jaGVzKS5cbiAgaWYgKG5vZGUuY2hpbGRyZW4gJiYgbm9kZS5jaGlsZHJlbi5sZW5ndGggPiAwKSB7XG4gICAgY29uc3QgZWRnZUtpbmQ6ICdmb3JrLWJyYW5jaCcgfCAnZGVjaXNpb24tYnJhbmNoJyA9IG5vZGUudHlwZSA9PT0gJ2ZvcmsnID8gJ2ZvcmstYnJhbmNoJyA6ICdkZWNpc2lvbi1icmFuY2gnO1xuICAgIGZvciAoY29uc3QgY2hpbGQgb2Ygbm9kZS5jaGlsZHJlbikge1xuICAgICAgeWllbGQge1xuICAgICAgICBraW5kOiAnZWRnZScsXG4gICAgICAgIGZyb206IG5vZGUuaWQsXG4gICAgICAgIHRvOiBjaGlsZC5pZCxcbiAgICAgICAgZWRnZUtpbmQsXG4gICAgICAgIC4uLihlZGdlS2luZCA9PT0gJ2RlY2lzaW9uLWJyYW5jaCcgJiYgY2hpbGQuaWQgIT09IHVuZGVmaW5lZCAmJiB7IGxhYmVsOiBjaGlsZC5pZCB9KSxcbiAgICAgICAgc3ViZmxvd1BhdGgsXG4gICAgICAgIHNvdXJjZTogJ3dhbGtlcicsXG4gICAgICB9O1xuICAgICAgLy8gQ29udmVyZ2VuY2UgZWRnZTogdGhpcyBicmFuY2ggbWVyZ2VzIGludG8gdGhlIGZhbi1vdXQncyBqb2luIHN0YWdlLlxuICAgICAgaWYgKGZhbk91dEpvaW5JZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHlpZWxkIHtcbiAgICAgICAgICBraW5kOiAnZWRnZScsXG4gICAgICAgICAgZnJvbTogY2hpbGQuaWQsXG4gICAgICAgICAgdG86IGZhbk91dEpvaW5JZCxcbiAgICAgICAgICBlZGdlS2luZDogJ25leHQnLFxuICAgICAgICAgIHN1YmZsb3dQYXRoLFxuICAgICAgICAgIHNvdXJjZTogJ3dhbGtlcicsXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICB5aWVsZCogd2Fsa05vZGUoY2hpbGQsIHN1YmZsb3dQYXRoLCByZWN1cnNlLCB2aXNpdGVkKTtcbiAgICB9XG4gIH1cblxuICAvLyBMaW5lYXIgbmV4dC5cbiAgaWYgKG5vZGUubmV4dCkge1xuICAgIGlmIChub2RlLm5leHQuaXNMb29wUmVmZXJlbmNlICYmIG5vZGUubG9vcFRhcmdldCkge1xuICAgICAgeWllbGQge1xuICAgICAgICBraW5kOiAnbG9vcCcsXG4gICAgICAgIGZyb206IG5vZGUuaWQsXG4gICAgICAgIHRvOiBub2RlLmxvb3BUYXJnZXQsXG4gICAgICAgIHN1YmZsb3dQYXRoLFxuICAgICAgICBzb3VyY2U6ICd3YWxrZXInLFxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gU3VwcHJlc3MgdGhlIGRpcmVjdCBub2RlIOKGkiBuZXh0IGVkZ2Ugd2hlbiB0aGUgYnJhbmNoZXMgYWxyZWFkeSBjYXJyeVxuICAgICAgLy8gdGhlIGNvbnZlcmdlbmNlIHRvIGl0IChmYW5PdXRKb2luSWQpOyBzdGlsbCB3YWxrIG5leHQgc28gaXQncyBlbWl0dGVkLlxuICAgICAgaWYgKGZhbk91dEpvaW5JZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHlpZWxkIHtcbiAgICAgICAgICBraW5kOiAnZWRnZScsXG4gICAgICAgICAgZnJvbTogbm9kZS5pZCxcbiAgICAgICAgICB0bzogbm9kZS5uZXh0LmlkLFxuICAgICAgICAgIGVkZ2VLaW5kOiAnbmV4dCcsXG4gICAgICAgICAgc3ViZmxvd1BhdGgsXG4gICAgICAgICAgc291cmNlOiAnd2Fsa2VyJyxcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIHlpZWxkKiB3YWxrTm9kZShub2RlLm5leHQsIHN1YmZsb3dQYXRoLCByZWN1cnNlLCB2aXNpdGVkKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
|
@@ -10,8 +10,8 @@
|
|
|
10
10
|
* Asked at the builder's id doors and at the run-time dynamic-StageNode door ONLY — never by the
|
|
11
11
|
* prefixer (which writes `/` on purpose) and never by a store (which holds runtimeStageIds).
|
|
12
12
|
*/
|
|
13
|
+
import { EXECUTION_DELIMITER, PATH_DELIMITER } from 'foottrace';
|
|
13
14
|
import { branchSegmentReservationMessage, hasBranchSegmentMarker } from './branchSegment.js';
|
|
14
|
-
import { EXECUTION_DELIMITER, PATH_DELIMITER } from './runtimeStageId.js';
|
|
15
15
|
/**
|
|
16
16
|
* The builder's ONE refusal for user-authored ids (RFC 3986 §2.2 — the
|
|
17
17
|
* grammar's delimiters are reserved, so a user id can never fake a subflow
|
|
@@ -42,4 +42,4 @@ export function refuseReservedId(what, id, position) {
|
|
|
42
42
|
}
|
|
43
43
|
return undefined;
|
|
44
44
|
}
|
|
45
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
45
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzZXJ2ZWRJZHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL2lkcy9yZXNlcnZlZElkcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7R0FXRztBQUVILE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxjQUFjLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFFaEUsT0FBTyxFQUFFLCtCQUErQixFQUFFLHNCQUFzQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFXN0Y7Ozs7Ozs7Ozs7OztHQVlHO0FBQ0gsTUFBTSxVQUFVLGdCQUFnQixDQUFDLElBQVksRUFBRSxFQUFVLEVBQUUsUUFBb0I7SUFDN0Usd0ZBQXdGO0lBQ3hGLElBQUksT0FBTyxFQUFFLEtBQUssUUFBUTtRQUFFLE9BQU8sU0FBUyxDQUFDO0lBQzdDLElBQUksUUFBUSxLQUFLLFNBQVMsSUFBSSxzQkFBc0IsQ0FBQyxFQUFFLENBQUM7UUFBRSxPQUFPLCtCQUErQixDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQztJQUMzRyxLQUFLLE1BQU0sU0FBUyxJQUFJLENBQUMsY0FBYyxFQUFFLG1CQUFtQixDQUFDLEVBQUUsQ0FBQztRQUM5RCxJQUFJLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUM7WUFBRSxTQUFTO1FBQ3RDLE9BQU8sQ0FDTCxHQUFHLElBQUksS0FBSyxFQUFFLHNDQUFzQyxTQUFTLEtBQUs7WUFDbEUsZ0JBQWdCLGNBQWMsVUFBVSxtQkFBbUIsZ0RBQWdEO1lBQzNHLGdCQUFnQixjQUFjLFdBQVcsbUJBQW1CLGtEQUFrRDtZQUM5Ryx1R0FBdUc7WUFDdkcsd0NBQXdDLENBQ3pDLENBQUM7SUFDSixDQUFDO0lBQ0QsT0FBTyxTQUFTLENBQUM7QUFDbkIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogcmVzZXJ2ZWRJZHMg4oCUIHRoZSBPTkUgcmVmdXNhbCB0aGUgZW5naW5lJ3MgaWQgZG9vcnMgYXNrICg5LjM3LjAsIFI1OyBpdHMgb3duIGZpbGUgc2luY2UgQzYpLlxuICpcbiAqIEEgdXNlci1hdXRob3JlZCBpZCBtYXkgbm90IGNhcnJ5IHRoZSBncmFtbWFyJ3MgZGVsaW1pdGVycyAoYCNgLCBgL2ApLCBhbmQgYSBwYXRoIHNlZ21lbnQgbWF5IG5vdFxuICogY2FycnkgdGhlIGdlbmVyYXRlZC1zZWdtZW50IG1hcmtlciAoYH5gKS4gVGhpcyBpcyB0aGUgZW5naW5lJ3MgcnVsZSBhYm91dCB3aGljaCBpZHMgaXQgYWRtaXRzLFxuICogbm90IHBhcnQgb2YgdGhlIGdyYW1tYXI6IHRoZSBncmFtbWFyIChgcnVudGltZVN0YWdlSWQudHNgLCB0aGUgcmVjb3JkJ3MpIGJ1aWxkcywgcGFyc2VzIGFuZFxuICogcmVhZHMgaWRzIGFuZCBpbXBvcnRzIG5vdGhpbmc7IHRoaXMgZmlsZSByZWFkcyBpdHMgZGVsaW1pdGVycyBhbmQgdGhlIGB+YCBncmFtbWFyXG4gKiAoYGJyYW5jaFNlZ21lbnQudHNgKSwgc28gdGhlIHJlY29yZCBubyBsb25nZXIgaW1wb3J0cyB0aGUgZW5naW5lJ3Mgc2VnbWVudCBydWxlLlxuICpcbiAqIEFza2VkIGF0IHRoZSBidWlsZGVyJ3MgaWQgZG9vcnMgYW5kIGF0IHRoZSBydW4tdGltZSBkeW5hbWljLVN0YWdlTm9kZSBkb29yIE9OTFkg4oCUIG5ldmVyIGJ5IHRoZVxuICogcHJlZml4ZXIgKHdoaWNoIHdyaXRlcyBgL2Agb24gcHVycG9zZSkgYW5kIG5ldmVyIGJ5IGEgc3RvcmUgKHdoaWNoIGhvbGRzIHJ1bnRpbWVTdGFnZUlkcykuXG4gKi9cblxuaW1wb3J0IHsgRVhFQ1VUSU9OX0RFTElNSVRFUiwgUEFUSF9ERUxJTUlURVIgfSBmcm9tICdmb290dHJhY2UnO1xuXG5pbXBvcnQgeyBicmFuY2hTZWdtZW50UmVzZXJ2YXRpb25NZXNzYWdlLCBoYXNCcmFuY2hTZWdtZW50TWFya2VyIH0gZnJvbSAnLi9icmFuY2hTZWdtZW50LmpzJztcblxuLyoqXG4gKiBXaGVyZSBhIHVzZXItYXV0aG9yZWQgaWQgc2l0cyBpbiB0aGUgZ3JhbW1hciDigJQgd2hhdCB0aGUgYnVpbGRlciBhZG1pdHMgaXQgYXMuXG4gKlxuICogLSBgJ3N0YWdlJ2AgICDigJQgYSBzdGFnZSBpZCAoYHN0YWdlSWRgIHBvc2l0aW9uKTogYCNgIGFuZCBgL2AgYXJlIHJlZnVzZWQuXG4gKiAtIGAnc2VnbWVudCdgIOKAlCBhIHN1YmZsb3cgaWQgb3IgYSBgcGFyYWxsZWxGb3JFYWNoYCBpZCAoYSBQQVRIIFNFR01FTlQsIG9yXG4gKiAgIHRoZSBwYXJlbnQgb2YgYSBnZW5lcmF0ZWQgb25lKTogYH5gIGlzIHJlZnVzZWQgdG9vIChzZWUgYGJyYW5jaFNlZ21lbnQudHNgKS5cbiAqL1xuZXhwb3J0IHR5cGUgSWRQb3NpdGlvbiA9ICdzdGFnZScgfCAnc2VnbWVudCc7XG5cbi8qKlxuICogVGhlIGJ1aWxkZXIncyBPTkUgcmVmdXNhbCBmb3IgdXNlci1hdXRob3JlZCBpZHMgKFJGQyAzOTg2IMKnMi4yIOKAlCB0aGVcbiAqIGdyYW1tYXIncyBkZWxpbWl0ZXJzIGFyZSByZXNlcnZlZCwgc28gYSB1c2VyIGlkIGNhbiBuZXZlciBmYWtlIGEgc3ViZmxvd1xuICogcGF0aCBvciBhbiBleGVjdXRpb24gc3VmZml4KS4gUmV0dXJucyB0aGUgcmVmdXNhbCBzZW50ZW5jZSwgb3IgYHVuZGVmaW5lZGBcbiAqIHdoZW4gdGhlIGlkIGlzIGFkbWlzc2libGU7IHRoZSBidWlsZGVyIHR1cm5zIGEgc2VudGVuY2UgaW50byBpdHMgb3duIGVycm9yLlxuICpcbiAqIFRoZSBgfmAgc2VudGVuY2UgaXMgYGJyYW5jaFNlZ21lbnRSZXNlcnZhdGlvbk1lc3NhZ2VgJ3MsIGJ5dGUtZm9yLWJ5dGUsIHNvIGFcbiAqIHByZS05LjM3LjAgcmVmdXNhbCByZWFkcyB0aGUgc2FtZS5cbiAqXG4gKiBAcGFyYW0gd2hhdCAgICAgSG93IHRoZSBlcnJvciBuYW1lcyB0aGUgaWQgKGBcInN1YmZsb3cgaWRcImAsIGBcImFkZEZ1bmN0aW9uIGlkXCJgKS5cbiAqIEBwYXJhbSBpZCAgICAgICBUaGUgaWQgYXMgdGhlIHVzZXIgd3JvdGUgaXQuXG4gKiBAcGFyYW0gcG9zaXRpb24gV2hlcmUgdGhlIGlkIHNpdHMgaW4gdGhlIGdyYW1tYXIuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZWZ1c2VSZXNlcnZlZElkKHdoYXQ6IHN0cmluZywgaWQ6IHN0cmluZywgcG9zaXRpb246IElkUG9zaXRpb24pOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAvLyBBIG1pc3NpbmcgLyBub24tc3RyaW5nIGlkIGlzIG5vdCB0aGlzIHJ1bGUncyBidXNpbmVzcyDigJQgdGhlIGRvb3IncyBvd24gY2hlY2tzIG93biBpdC5cbiAgaWYgKHR5cGVvZiBpZCAhPT0gJ3N0cmluZycpIHJldHVybiB1bmRlZmluZWQ7XG4gIGlmIChwb3NpdGlvbiA9PT0gJ3NlZ21lbnQnICYmIGhhc0JyYW5jaFNlZ21lbnRNYXJrZXIoaWQpKSByZXR1cm4gYnJhbmNoU2VnbWVudFJlc2VydmF0aW9uTWVzc2FnZSh3aGF0LCBpZCk7XG4gIGZvciAoY29uc3QgZGVsaW1pdGVyIG9mIFtQQVRIX0RFTElNSVRFUiwgRVhFQ1VUSU9OX0RFTElNSVRFUl0pIHtcbiAgICBpZiAoIWlkLmluY2x1ZGVzKGRlbGltaXRlcikpIGNvbnRpbnVlO1xuICAgIHJldHVybiAoXG4gICAgICBgJHt3aGF0fSAnJHtpZH0nIGNvbnRhaW5zIHRoZSByZXNlcnZlZCBjaGFyYWN0ZXIgJyR7ZGVsaW1pdGVyfScuIGAgK1xuICAgICAgYEZyb20gOS4zNy4wICcke1BBVEhfREVMSU1JVEVSfScgYW5kICcke0VYRUNVVElPTl9ERUxJTUlURVJ9JyBhcmUgcmVzZXJ2ZWQgZm9yIHRoZSBydW50aW1lU3RhZ2VJZCBncmFtbWFyIGAgK1xuICAgICAgYChbc3ViZmxvd1BhdGgke1BBVEhfREVMSU1JVEVSfV1zdGFnZUlkJHtFWEVDVVRJT05fREVMSU1JVEVSfWV4ZWN1dGlvbkluZGV4KSDigJQgYWxsb3dpbmcgb25lIGhlcmUgd291bGQgbGV0IGEgYCArXG4gICAgICAnaGFuZC1hdXRob3JlZCBpZCByZWFkIGFzIGEgc3ViZmxvdyBwYXRoIG9yIGFuIGV4ZWN1dGlvbiBzdWZmaXggYW5kIHNpbGVudGx5IG1pcy1hdHRyaWJ1dGUgaXRzIHRyYWNlLiAnICtcbiAgICAgICdSZW5hbWUgdGhlIGlkIChhIGRhc2ggcmVhZHMgdGhlIHNhbWUpLidcbiAgICApO1xuICB9XG4gIHJldHVybiB1bmRlZmluZWQ7XG59XG4iXX0=
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
* Like a compiler's diagnostic collector — gathers warnings, errors,
|
|
8
8
|
* and timing info without affecting the compilation output.
|
|
9
9
|
*/
|
|
10
|
-
import { setNestedValue, updateNestedValue } from '
|
|
10
|
+
import { setNestedValue, updateNestedValue } from 'foottrace/paths';
|
|
11
11
|
const BAG_FIELDS = {
|
|
12
12
|
logs: 'logContext',
|
|
13
13
|
errors: 'errorContext',
|
|
@@ -83,4 +83,4 @@ export class DiagnosticCollector {
|
|
|
83
83
|
}
|
|
84
84
|
}
|
|
85
85
|
}
|
|
86
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
86
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGlhZ25vc3RpY0NvbGxlY3Rvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvbWVtb3J5L0RpYWdub3N0aWNDb2xsZWN0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7O0dBUUc7QUFFSCxPQUFPLEVBQUUsY0FBYyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFRcEUsTUFBTSxVQUFVLEdBQUc7SUFDakIsSUFBSSxFQUFFLFlBQVk7SUFDbEIsTUFBTSxFQUFFLGNBQWM7SUFDdEIsT0FBTyxFQUFFLGVBQWU7SUFDeEIsS0FBSyxFQUFFLGFBQWE7Q0FDWixDQUFDO0FBRVgsTUFBTSxPQUFPLG1CQUFtQjtJQVFEO0lBUHRCLFVBQVUsR0FBMkIsRUFBRSxDQUFDO0lBQ3hDLFlBQVksR0FBMkIsRUFBRSxDQUFDO0lBQzFDLGFBQWEsR0FBMkIsRUFBRSxDQUFDO0lBQzNDLFdBQVcsR0FBMkIsRUFBRSxDQUFDO0lBQ3pDLFlBQVksR0FBa0IsRUFBRSxDQUFDO0lBRXhDLHNFQUFzRTtJQUN0RSxZQUE2QixRQUEwQztRQUExQyxhQUFRLEdBQVIsUUFBUSxDQUFrQztJQUFHLENBQUM7SUFFM0Usc0dBQXNHO0lBQzlGLE1BQU0sQ0FBQyxPQUEwQixFQUFFLElBQWMsRUFBRSxHQUFXLEVBQUUsS0FBYztRQUNwRixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQztRQUMvQixPQUFPLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxPQUFPLEVBQUUsR0FBRyxJQUFJLEVBQUUsR0FBRyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztJQUMzRyxDQUFDO0lBRU8sS0FBSyxDQUFDLE9BQTBCLEVBQUUsR0FBVyxFQUFFLEtBQWMsRUFB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QVM7WUFDWCxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLGNBQWMsRUFBRSxXQUFXLENBQUMsRUFBRSxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDaEYsSUFBSSxXQUFXLEtBQUssV0FBVyxDQUFDLFdBQVcsSUFBSSxTQUFTLEtBQUssV0FBVyxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ25GLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3RDLENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsRUFBRSxHQUFHLFdBQVcsRUFBRSxXQUFXLEVBQUUsR0FBRyxDQUFDLFNBQVMsS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxTQUFTLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUM3RyxDQUFDO0lBQ0gsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBEaWFnbm9zdGljQ29sbGVjdG9yIOKAlCBQZXItc3RhZ2UgbWV0YWRhdGEgY29sbGVjdG9yXG4gKlxuICogQ29sbGVjdHMgbm9uLWV4ZWN1dGlvbiBtZXRhZGF0YSBkdXJpbmcgYSBzdGFnZSdzIHJ1bjpcbiAqIC0gbG9ncywgZXJyb3JzLCBtZXRyaWNzLCBldmFscywgZmxvd01lc3NhZ2VzXG4gKlxuICogTGlrZSBhIGNvbXBpbGVyJ3MgZGlhZ25vc3RpYyBjb2xsZWN0b3Ig4oCUIGdhdGhlcnMgd2FybmluZ3MsIGVycm9ycyxcbiAqIGFuZCB0aW1pbmcgaW5mbyB3aXRob3V0IGFmZmVjdGluZyB0aGUgY29tcGlsYXRpb24gb3V0cHV0LlxuICovXG5cbmltcG9ydCB7IHNldE5lc3RlZFZhbHVlLCB1cGRhdGVOZXN0ZWRWYWx1ZSB9IGZyb20gJ2Zvb3R0cmFjZS9wYXRocyc7XG5cbmltcG9ydCB0eXBlIHsgRmxvd01lc3NhZ2UgfSBmcm9tICcuL2ZyYW1lVHlwZXMuanMnO1xuaW1wb3J0IHR5cGUgeyBSZWRhY3Rpb25SdWxlIH0gZnJvbSAnLi9yZWRhY3Rpb24uanMnO1xuXG4vKiogQGludGVybmFsIERpYWdub3N0aWMgbmFtZXNwYWNlcywgc2VwYXJhdGUgZnJvbSBzdGF0ZSBwYXRocy4gKi9cbmV4cG9ydCB0eXBlIERpYWdub3N0aWNDaGFubmVsID0gJ2xvZ3MnIHwgJ2Vycm9ycycgfCAnbWV0cmljcycgfCAnZXZhbHMnO1xuXG5jb25zdCBCQUdfRklFTERTID0ge1xuICBsb2dzOiAnbG9nQ29udGV4dCcsXG4gIGVycm9yczogJ2Vycm9yQ29udGV4dCcsXG4gIG1ldHJpY3M6ICdtZXRyaWNDb250ZXh0JyxcbiAgZXZhbHM6ICdldmFsQ29udGV4dCcsXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgY2xhc3MgRGlhZ25vc3RpY0NvbGxlY3RvciB7XG4gIHB1YmxpYyBsb2dDb250ZXh0OiB7IFtrZXk6IHN0cmluZ106IGFueSB9ID0ge307XG4gIHB1YmxpYyBlcnJvckNvbnRleHQ6IHsgW2tleTogc3RyaW5nXTogYW55IH0gPSB7fTtcbiAgcHVibGljIG1ldHJpY0NvbnRleHQ6IHsgW2tleTogc3RyaW5nXTogYW55IH0gPSB7fTtcbiAgcHVibGljIGV2YWxDb250ZXh0OiB7IFtrZXk6IHN0cmluZ106IGFueSB9ID0ge307XG4gIHB1YmxpYyBmbG93TWVzc2FnZXM6IEZsb3dNZXNzYWdlW10gPSBbXTtcblxuICAvKiogUmVhZCB0aGUgY3VycmVudCBydW4gcG9saWN5LCBpbmNsdWRpbmcgcG9saWN5IHN3YXBzIGFuZCByZXN1bWUuICovXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgcmVhZFJ1bGU/OiAoKSA9PiBSZWRhY3Rpb25SdWxlIHwgdW5kZWZpbmVkKSB7fVxuXG4gIC8qKiBBIG5hbWVkIGVudHJ5OiB0aGUgcnVuJ3MgcnVsZSBtYXBzIGl0cyBuYW1lIHRvIGEgc3RhdGUga2V5LCB0aGVuIGFkZHMgdGhlIGRpYWdub3N0aWMgc2VsZWN0b3JzLiAqL1xuICBwcml2YXRlIHJldGFpbihjaGFubmVsOiBEaWFnbm9zdGljQ2hhbm5lbCwgcGF0aDogc3RyaW5nW10sIGtleTogc3RyaW5nLCB2YWx1ZTogdW5rbm93bik6IHVua25vd24ge1xuICAgIGNvbnN0IHJ1bGUgPSB0aGlzLnJlYWRSdWxlPy4oKTtcbiAgICByZXR1cm4gcnVsZSAmJiAhcnVsZS5pc0RpYWdub3N0aWNJbmVydCgpID8gcnVsZS5yZXRhaW5EaWFnbm9zdGljKFtjaGFubmVsLCAuLi5wYXRoLCBrZXldLCB2YWx1ZSkgOiB2YWx1ZTtcbiAgfVxuXG4gIHByaXZhdGUgd3JpdGUoY2hhbm5lbDogRGlhZ25vc3RpY0NoYW5uZWwsIGtleTogc3RyaW5nLCB2YWx1ZTogdW5rbm93biwgcGF0aDogc3RyaW5nW10sIHJlcGxhY2U6IGJvb2xlYW4pOiB1bmtub3duIHtcbiAgICBjb25zdCBrZXB0ID0gdGhpcy5yZXRhaW4oY2hhbm5lbCwgcGF0aCwga2V5LCB2YWx1ZSk7XG4gICAgY29uc3Qgd3JpdGUgPSByZXBsYWNlID8gc2V0TmVzdGVkVmFsdWUgOiB1cGRhdGVOZXN0ZWRWYWx1ZTtcbiAgICB3cml0ZSh0aGlzW0JBR19GSUVMRFNbY2hhbm5lbF1dLCBbXSwgcGF0aCwga2V5LCBrZXB0KTtcbiAgICByZXR1cm4ga2VwdDtcbiAgfVxuXG4gIC8qKiBAaW50ZXJuYWwgQWRkIG9uY2UsIHJldHVybmluZyB0aGUgcmV0YWluZWQgaW5jb21pbmcgdmFsdWUgZm9yIGVtaXQuXG4gICAqIExlZ2FjeSB3cml0ZXJzIHN0YXkgdm9pZDogdGhlaXIgcmVzdWx0IG1heSBiZSByZXR1cm5lZCBieSBhIHN0YWdlLiAqL1xuICBhZGQoY2hhbm5lbDogRGlhZ25vc3RpY0NoYW5uZWwsIGtleTogc3RyaW5nLCB2YWx1ZTogdW5rbm93biwgcGF0aDogc3RyaW5nW10gPSBbXSk6IHVua25vd24ge1xuICAgIHJldHVybiB0aGlzLndyaXRlKGNoYW5uZWwsIGtleSwgdmFsdWUsIHBhdGgsIGZhbHNlKTtcbiAgfVxuXG4gIGFkZExvZyhrZXk6IHN0cmluZywgdmFsdWU6IGFueSwgcGF0aDogc3RyaW5nW10gPSBbXSkge1xuICAgIHRoaXMuYWRkKCdsb2dzJywga2V5LCB2YWx1ZSwgcGF0aCk7XG4gIH1cblxuICBzZXRMb2coa2V5OiBzdHJpbmcsIHZhbHVlOiBhbnksIHBhdGg6IHN0cmluZ1tdID0gW10pIHtcbiAgICB0aGlzLndyaXRlKCdsb2dzJywga2V5LCB2YWx1ZSwgcGF0aCwgdHJ1ZSk7XG4gIH1cblxuICBhZGRFcnJvcihrZXk6IHN0cmluZywgdmFsdWU6IGFueSwgcGF0aDogc3RyaW5nW10gPSBbXSkge1xuICAgIHRoaXMuYWRkKCdlcnJvcnMnLCBrZXksIHZhbHVlLCBwYXRoKTtcbiAgfVxuXG4gIGFkZE1ldHJpYyhrZXk6IHN0cmluZywgdmFsdWU6IGFueSwgcGF0aDogc3RyaW5nW10gPSBbXSkge1xuICAgIHRoaXMuYWRkKCdtZXRyaWNzJywga2V5LCB2YWx1ZSwgcGF0aCk7XG4gIH1cblxuICBzZXRNZXRyaWMoa2V5OiBzdHJpbmcsIHZhbHVlOiBhbnksIHBhdGg6IHN0cmluZ1tdID0gW10pIHtcbiAgICB0aGlzLndyaXRlKCdtZXRyaWNzJywga2V5LCB2YWx1ZSwgcGF0aCwgdHJ1ZSk7XG4gIH1cblxuICBhZGRFdmFsKGtleTogc3RyaW5nLCB2YWx1ZTogYW55LCBwYXRoOiBzdHJpbmdbXSA9IFtdKSB7XG4gICAgdGhpcy5hZGQoJ2V2YWxzJywga2V5LCB2YWx1ZSwgcGF0aCk7XG4gIH1cblxuICBzZXRFdmFsKGtleTogc3RyaW5nLCB2YWx1ZTogYW55LCBwYXRoOiBzdHJpbmdbXSA9IFtdKSB7XG4gICAgdGhpcy53cml0ZSgnZXZhbHMnLCBrZXksIHZhbHVlLCBwYXRoLCB0cnVlKTtcbiAgfVxuXG4gIGFkZEZsb3dNZXNzYWdlKGZsb3dNZXNzYWdlOiBGbG93TWVzc2FnZSkge1xuICAgIGNvbnN0IHJ1bGUgPSB0aGlzLnJlYWRSdWxlPy4oKTtcbiAgICBpZiAoIXJ1bGUgfHwgcnVsZS5pc0Zsb3dUZXh0SW5lcnQoKSkge1xuICAgICAgdGhpcy5mbG93TWVzc2FnZXMucHVzaChmbG93TWVzc2FnZSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIC8vIE9ubHkgcGF5bG9hZCB0ZXh0IGlzIHNlbGVjdGFibGUg4oCUIGFuZCBpdCBoYXMgbm8gbmFtZSBvZiBpdHMgb3duLCBzbyBvbmx5XG4gICAgLy8gdGhlIGRpYWdub3N0aWMgc2VsZWN0b3JzIHJlYWNoIGl0LiBLZWVwIHRoZSBldmlkZW5jZSBvZiB3aGF0IGhhcHBlbmVkXG4gICAgLy8gKHR5cGUsIHRhcmdldHMsIHRpbWluZywgY291bnRzKSBldmVuIHdoZW4gaXRzIGV4cGxhbmF0aW9uIGlzIG1hc2tlZC5cbiAgICBjb25zdCBkZXNjcmlwdGlvbiA9IHJ1bGUucmV0YWluRmxvd1RleHQoWydmbG93TWVzc2FnZXMnLCAnZGVzY3JpcHRpb24nXSwgZmxvd01lc3NhZ2UuZGVzY3JpcHRpb24pO1xuICAgIGNvbnN0IHJhdGlvbmFsZSA9XG4gICAgICBmbG93TWVzc2FnZS5yYXRpb25hbGUgPT09IHVuZGVmaW5lZFxuICAgICAgICA/IHVuZGVmaW5lZFxuICAgICAgICA6IHJ1bGUucmV0YWluRmxvd1RleHQoWydmbG93TWVzc2FnZXMnLCAncmF0aW9uYWxlJ10sIGZsb3dNZXNzYWdlLnJhdGlvbmFsZSk7XG4gICAgaWYgKGRlc2NyaXB0aW9uID09PSBmbG93TWVzc2FnZS5kZXNjcmlwdGlvbiAmJiByYXRpb25hbGUgPT09IGZsb3dNZXNzYWdlLnJhdGlvbmFsZSkge1xuICAgICAgdGhpcy5mbG93TWVzc2FnZXMucHVzaChmbG93TWVzc2FnZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZmxvd01lc3NhZ2VzLnB1c2goeyAuLi5mbG93TWVzc2FnZSwgZGVzY3JpcHRpb24sIC4uLihyYXRpb25hbGUgPT09IHVuZGVmaW5lZCA/IHt9IDogeyByYXRpb25hbGUgfSkgfSk7XG4gICAgfVxuICB9XG59XG4iXX0=
|
|
@@ -11,15 +11,13 @@
|
|
|
11
11
|
* frame writes (`runAddress.ts`), the dev-mode warnings, the commit observer
|
|
12
12
|
* - DiagnosticCollector for logs, errors, metrics
|
|
13
13
|
*/
|
|
14
|
+
import type { CommitPhase, EmitSourcePosition, UntrackedSource } from 'foottrace';
|
|
15
|
+
import type { EventLog, SharedMemory } from 'foottrace/write';
|
|
14
16
|
import { type DiagnosticChannel, DiagnosticCollector } from './DiagnosticCollector.js';
|
|
15
|
-
import type { EventLog } from './EventLog.js';
|
|
16
|
-
import type { EmitSourcePosition } from './eventPosition.js';
|
|
17
17
|
import type { FlowControlType, StageSnapshot } from './frameTypes.js';
|
|
18
18
|
import type { RedactionVerdict } from './redaction.js';
|
|
19
19
|
import { RedactionRule } from './redaction.js';
|
|
20
20
|
import type { RunPolicy } from './runPolicy.js';
|
|
21
|
-
import type { SharedMemory } from './SharedMemory.js';
|
|
22
|
-
import type { CommitPhase, UntrackedSource } from './types.js';
|
|
23
21
|
export declare class StageContext {
|
|
24
22
|
/**
|
|
25
23
|
* The record half of this frame (`RecordFrame.ts`, L3, C3): the heap and,
|